From eb99e515b3b058781fc57a2f7db130b6bc73281e Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Mon, 22 Feb 2016 15:31:13 -0500 Subject: More documentation --- keyboard/planck/keymaps/cbbrowne/README.md | 20 ++++++++++++++++---- keyboard/planck/keymaps/cbbrowne/keymap.c | 10 +++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/keyboard/planck/keymaps/cbbrowne/README.md b/keyboard/planck/keymaps/cbbrowne/README.md index 323e9a8596..e190c8b41e 100644 --- a/keyboard/planck/keymaps/cbbrowne/README.md +++ b/keyboard/planck/keymaps/cbbrowne/README.md @@ -10,7 +10,19 @@ doing sundry experimentation: * To figure things out about the toolset * I'm an Emacs guy, so will be needing a fair bit of tuning * It made sense to mess around some with keyboard maps. - - I added Workman alongside Dvorak and Colemak - - Boy, oh boy, these don't help - - I have done 30 years of learning of Emacs key mappings, and these alternative keyboards massively mess me up - - I added a keypad, originally based on keymaps/numpad.c, but mighty substantially revised, as that one seems to be rotated 90 degrees from usual conventions for number pads \ No newline at end of file + - I tried added Workman alongside Dvorak and Colemak + - Boy, oh boy, these don't help!!! + - I have done 30 years of learning of Emacs key mappings, and + these alternative keyboards massively mess me up + - I added a keypad, originally based on keymaps/numpad.c, but + mighty substantially revised, as that one seems to be rotated 90 + degrees from usual conventions for number pads + * The keypad layer also includes some sample "hacks" of cool things, + all using actions attached in using the function action_get_macro() + - Key [1][2] aka "q" types out my name, cbbrowne, as a fun example + of a key generating a bunch of keystrokes. The keystroke is + sufficiently inconvenient that it isn't terribly practical for me + to use it, but hey, it shows how others might use this facility + in a more useful context. + - Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random + - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index 250d412ced..f46ca85de9 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -99,10 +99,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TRNS, DF(_KP), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_KP] = { /* Key Pad */ - {KC_ESC, M(M_USERNAME), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_ENTER, KC_KP_PLUS, KC_KP_PLUS, KC_KP_ENTER, KC_BSPC}, - {KC_LCTL, M(M_RANDDIGIT), KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_MINUS, KC_7, KC_8, KC_9, KC_ENT}, - {KC_LSFT, M(M_RANDLETTER), KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_PLUS, KC_4, KC_5, KC_6, KC_DOT}, - {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QW), KC_1, KC_2, KC_3, KC_0} + {KC_ESC, M(M_USERNAME), KC_F9, KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, + {KC_LCTL, M(M_RANDDIGIT), KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_KP_MINUS, KC_4, KC_5, KC_6, KC_PIPE}, + {KC_LSFT, M(M_RANDLETTER), KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_KP_PLUS, KC_1, KC_2, KC_3, KC_ENTER}, + {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QW), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} } }; @@ -110,7 +110,7 @@ const uint16_t PROGMEM fn_actions[] = { }; /* This bit of logic seeds a wee linear congruential random number generator */ - +/* lots of prime numbers everywhere... */ static uint16_t random_value = 157; #define randadd 53 #define randmul 181 -- cgit v1.2.1 From f044edbed9b542de573a321628ddd6a3afc348b0 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Sun, 31 Jan 2016 15:30:48 +0100 Subject: Initial bepo layout based on tm2030 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No more SFT_T: - moved ] (bépo W) below Tab - moved - (bépo =) in place of ] (top right) - removed SFT_T from ' (bépo M) - moved \ (bépo Ç) in place of = (bépo %) - moved = (bépo %) in place of - (bépo =) --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 242 ++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/bepo/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c new file mode 100644 index 0000000000..1fe23a9323 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -0,0 +1,242 @@ +/* TypeMatrix-2030-like keymap */ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +#include "led.h" + +#define BASE 0 // default layer +#define DVRK 1 // Dvorak layer +#define NUMR 8 // numeric layer +#define FNLR 9 // fn layer + +#define MDBL0 1 +#define MFNLR 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Del | | Del | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T |Backsp| |Backsp| Y | U | I | O | P | [ | + * |--------+------+------+------+------+------|ace | |ace |------+------+------+------+------+--------| + * | ] | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * |--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |LCtrl | fn | LGui | Play |App/Alt| | RAlt | = | Home | \ |End/Ctl| + * `-----------------------------------' `-----------------------------------' + * ,--------------. ,-------------. + * |Esc/Alt| num | | Left |Right | + * ,------+-------+------| |------+------+------. + * | | | PgUp | | Up | | | + * |Space |LShift |------| |------|RShift|Space | + * | | | PgDn | | Down | | | + * `---------------------' `--------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, + KC_RBRC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, + KC_LCTL, M(MFNLR), KC_LGUI,KC_MPLY,ALT_T(KC_APP), + + ALT_T(KC_ESC), TG(NUMR), + KC_PGUP, + KC_SPC, KC_LSFT, KC_PGDN, + + // right hand + KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_RALT, KC_EQL, KC_HOME, KC_BSLS, CTL_T(KC_END), + + KC_LEFT, KC_RGHT, + KC_UP, + KC_DOWN, KC_RSFT, KC_SPC + ), +/* Dvorak layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Del | | Del | 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | ' | , | . | P | Y |Backsp| |Backsp| F | G | C | R | L | / | + * |--------+------+------+------+------+------|ace | |ace |------+------+------+------+------+--------| + * | LShift | A | O | E | U | I |------| |------| D | H | T | N | S | -/Shift| + * |--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| + * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | \/Shift| + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |LCtrl | fn | LGui | Play |App/Alt| | RAlt | [ | Home | ] |End/Ctl| + * `-----------------------------------' `-----------------------------------' + * ,--------------. ,-------------. + * |Esc/Alt| num | | Left |Right | + * ,------+-------+------| |------+------+------. + * | | | PgUp | | Up | | | + * |Space |LShift |------| |------|RShift|Space | + * | | | PgDn | | Down | | | + * `---------------------' `--------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[DVRK] = KEYMAP( // layer 0 : default + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_BSPC, + KC_LSFT, KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_ENT, + KC_LCTL, M(MFNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), + + ALT_T(KC_ESC), TG(NUMR), + KC_PGUP, + KC_SPC, KC_LSFT, KC_PGDN, + + // right hand + KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_BSPC, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_D, KC_H, KC_T, KC_N, KC_S, SFT_T(KC_MINS), + KC_ENT, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_BSLS), + KC_RALT, KC_LBRC, KC_HOME, KC_RBRC, CTL_T(KC_END), + + KC_LEFT, KC_RGHT, + KC_UP, + KC_DOWN, KC_RSFT, KC_SPC + ), +/* Numeric Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | | | Tab | / | * | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | F6 | F7 | F8 | F9 | F10 | | | | | Home | 7 | 8 | 9 | + | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | F11 | F12 | | | |------| |------| Up | End | 4 | 5 | 6 | + | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | Left | Down | Right| 1 | 2 | 3 |KpEnter | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | 0 | 00 | . |Etr/Ctl| + * `----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | | | |n.lock|c.lock| + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[NUMR] = KEYMAP( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_F11, KC_F12, 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, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_TRNS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_UP, KC_END, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_TRNS, KC_P0, M(MDBL0),KC_PDOT, CTL_T(KC_PENT), + + KC_NLCK, KC_CAPS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* fn layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | |Insert| |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk| + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | |VolUp | | | | | | | | Pause | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | Calc | Mail |Browsr|------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | cut | copy |paste | Mute |VolDn | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | Next | | | + * | Mute | |------| |------| | | + * | | | | | Prev | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[FNLR] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, + KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_MUTE, KC_TRNS, KC_TRNS, + // right hand + KC_INS, KC_EJCT, KC_PWR, KC_SLEP, KC_WAKE, KC_PSCR, KC_SLCK, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, + 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_MPRV, + KC_MNXT, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case MDBL0: + if (record->event.pressed) { + return MACRO( I(25), T(P0), T(P0), END ); + } + break; + case MFNLR: + layer_invert(NUMR); + layer_invert(FNLR); + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { + return NULL; +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + // led 1: numeric layer + if (layer_state & (1 << NUMR)) { + ergodox_right_led_1_on(); + } + // led 2: Dvorak layer + if (default_layer_state == 1 << DVRK) { + ergodox_right_led_2_on(); + } + // led 3: caps lock + if (host_keyboard_leds() & (1< Date: Sun, 7 Feb 2016 19:29:49 +0100 Subject: =?UTF-8?q?Use=20B=C3=89PO=20sp=C3=A9cific=20key=20aliases=20with?= =?UTF-8?q?=20BP=5F=20prefix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit keymap_bepo.h: define BP_* keycodes for all possible characters bepo/keymap.c: use those keycodes in the bépo keymap --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 90 +++++++------------------------ 1 file changed, 20 insertions(+), 70 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 1fe23a9323..835db147af 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -3,9 +3,9 @@ #include "debug.h" #include "action_layer.h" #include "led.h" +#include "keymap_extras/keymap_bepo.h" #define BASE 0 // default layer -#define DVRK 1 // Dvorak layer #define NUMR 8 // numeric layer #define FNLR 9 // fn layer @@ -16,15 +16,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Del | | Del | 6 | 7 | 8 | 9 | 0 | - | + * | $ | " | « | » | ( | ) | Del | | Del | @ | + | - | / | * | = | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | Q | W | E | R | T |Backsp| |Backsp| Y | U | I | O | P | [ | + * | Tab | B | É | P | O | È |Backsp| |Backsp| ^ | V | D | L | J | Z | * |--------+------+------+------+------+------|ace | |ace |------+------+------+------+------+--------| - * | ] | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * | W | A | U | I | E | , |------| |------| C | T | S | R | N | M | * |--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * | LShift | À | Y | X | . | K | | | | ' | Q | G | H | F | RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | fn | LGui | Play |App/Alt| | RAlt | = | Home | \ |End/Ctl| + * |LCtrl | fn | LGui | Play |App/Alt| |Alt Gr| % | Home | Ç |End/Ctl| * `-----------------------------------' `-----------------------------------' * ,--------------. ,-------------. * |Esc/Alt| num | | Left |Right | @@ -38,72 +38,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, - KC_RBRC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, - KC_LCTL, M(MFNLR), KC_LGUI,KC_MPLY,ALT_T(KC_APP), + BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, + BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMM, + KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, + KC_LCTL, M(MFNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), ALT_T(KC_ESC), TG(NUMR), KC_PGUP, KC_SPC, KC_LSFT, KC_PGDN, // right hand - KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_RALT, KC_EQL, KC_HOME, KC_BSLS, CTL_T(KC_END), - - KC_LEFT, KC_RGHT, - KC_UP, - KC_DOWN, KC_RSFT, KC_SPC - ), -/* Dvorak layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Del | | Del | 6 | 7 | 8 | 9 | 0 | = | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | ' | , | . | P | Y |Backsp| |Backsp| F | G | C | R | L | / | - * |--------+------+------+------+------+------|ace | |ace |------+------+------+------+------+--------| - * | LShift | A | O | E | U | I |------| |------| D | H | T | N | S | -/Shift| - * |--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| - * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | \/Shift| - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | fn | LGui | Play |App/Alt| | RAlt | [ | Home | ] |End/Ctl| - * `-----------------------------------' `-----------------------------------' - * ,--------------. ,-------------. - * |Esc/Alt| num | | Left |Right | - * ,------+-------+------| |------+------+------. - * | | | PgUp | | Up | | | - * |Space |LShift |------| |------|RShift|Space | - * | | | PgDn | | Down | | | - * `---------------------' `--------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[DVRK] = KEYMAP( // layer 0 : default - // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_BSPC, - KC_LSFT, KC_A, KC_O, KC_E, KC_U, KC_I, - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_ENT, - KC_LCTL, M(MFNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), - - ALT_T(KC_ESC), TG(NUMR), - KC_PGUP, - KC_SPC, KC_LSFT, KC_PGDN, - - // right hand - KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, - KC_BSPC, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, - KC_D, KC_H, KC_T, KC_N, KC_S, SFT_T(KC_MINS), - KC_ENT, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_BSLS), - KC_RALT, KC_LBRC, KC_HOME, KC_RBRC, CTL_T(KC_END), - - KC_LEFT, KC_RGHT, - KC_UP, - KC_DOWN, KC_RSFT, KC_SPC + KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, BP_EQL, + KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, + BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, + KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, + BP_ALGR, BP_PERC, KC_HOME, BP_CCED, CTL_T(KC_END), + + KC_LEFT, KC_RGHT, + KC_UP, + KC_DOWN, KC_RSFT, KC_SPC ), /* Numeric Layer * @@ -230,10 +184,6 @@ void * matrix_scan_user(void) { if (layer_state & (1 << NUMR)) { ergodox_right_led_1_on(); } - // led 2: Dvorak layer - if (default_layer_state == 1 << DVRK) { - ergodox_right_led_2_on(); - } // led 3: caps lock if (host_keyboard_leds() & (1< Date: Sun, 14 Feb 2016 15:18:04 +0100 Subject: Swapped w and = to keep the w on the right hand (better for English) --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 835db147af..2a4cce075e 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -16,11 +16,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | $ | " | « | » | ( | ) | Del | | Del | @ | + | - | / | * | = | + * | $ | " | « | » | ( | ) | Del | | Del | @ | + | - | / | * | W | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Tab | B | É | P | O | È |Backsp| |Backsp| ^ | V | D | L | J | Z | * |--------+------+------+------+------+------|ace | |ace |------+------+------+------+------+--------| - * | W | A | U | I | E | , |------| |------| C | T | S | R | N | M | + * | = | A | U | I | E | , |------| |------| C | T | S | R | N | M | * |--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| * | LShift | À | Y | X | . | K | | | | ' | Q | G | H | F | RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, - BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMM, + BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, KC_LCTL, M(MFNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_SPC, KC_LSFT, KC_PGDN, // right hand - KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, BP_EQL, + KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, BP_W, KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, -- cgit v1.2.1 From bf78ca1ef2983f87e9acb5f115326290f9626931 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Wed, 17 Feb 2016 21:07:38 +0100 Subject: Use enums to define layers and macros --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 56 +++++++++++++++++-------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 2a4cce075e..855379e3cf 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -5,12 +5,16 @@ #include "led.h" #include "keymap_extras/keymap_bepo.h" -#define BASE 0 // default layer -#define NUMR 8 // numeric layer -#define FNLR 9 // fn layer +enum layers { + LR_BASE, // default layer + LR_NUMR, // numeric layer + LR_FN, // fn layer +}; -#define MDBL0 1 -#define MFNLR 2 +enum macros { + M_DBL0, + M_FNLR, +}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Basic layer @@ -36,15 +40,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. // Otherwise, it needs KC_* -[BASE] = KEYMAP( // layer 0 : default +[LR_BASE] = KEYMAP( // layer 0 : default // left hand BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, - KC_LCTL, M(MFNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), + KC_LCTL, M(M_FNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), - ALT_T(KC_ESC), TG(NUMR), + ALT_T(KC_ESC), TG(LR_NUMR), KC_PGUP, KC_SPC, KC_LSFT, KC_PGDN, @@ -81,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' */ // SYMBOLS -[NUMR] = KEYMAP( +[LR_NUMR] = KEYMAP( // left hand KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, @@ -91,13 +95,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS, // right hand - KC_TRNS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS, - KC_TRNS, KC_TRNS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_UP, KC_END, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_TRNS, KC_P0, M(MDBL0),KC_PDOT, CTL_T(KC_PENT), + KC_TRNS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_TRNS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_UP, KC_END, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_TRNS, KC_P0, M(M_DBL0),KC_PDOT, CTL_T(KC_PENT), KC_NLCK, KC_CAPS, KC_TRNS, @@ -125,12 +129,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' */ // MEDIA AND MOUSE -[FNLR] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, - KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +[LR_FN] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, + KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -155,14 +159,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { - case MDBL0: + case M_DBL0: if (record->event.pressed) { return MACRO( I(25), T(P0), T(P0), END ); } break; - case MFNLR: - layer_invert(NUMR); - layer_invert(FNLR); + case M_FNLR: + layer_invert(LR_NUMR); + layer_invert(LR_FN); break; } return MACRO_NONE; @@ -181,7 +185,7 @@ void * matrix_scan_user(void) { ergodox_right_led_2_off(); ergodox_right_led_3_off(); // led 1: numeric layer - if (layer_state & (1 << NUMR)) { + if (layer_state & (1 << LR_NUMR)) { ergodox_right_led_1_on(); } // led 3: caps lock -- cgit v1.2.1 From b8ddbd21810951f64a081e4c3096bbc6aedc9aeb Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Fri, 26 Feb 2016 00:54:19 +0100 Subject: Added RESET key on fn-= --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 855379e3cf..1cebf8c9e8 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | | | |VolUp | | | | | | | | Pause | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | Calc | Mail |Browsr|------| |------| | | | | | | + * | RESET | | | Calc | Mail |Browsr|------| |------| | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | cut | copy |paste | Mute |VolDn | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LR_FN] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, + RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -- cgit v1.2.1 From a7cef2ca0a2322448d02008337013936b1d550ec Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Wed, 17 Feb 2016 21:45:38 +0100 Subject: =?UTF-8?q?Initial=20B=C3=89PO=20over=20CSA=20with=20Shift=20layer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Initial implementation of the BÉPO layout for use with the Canadian Multilingual Standard layout (a.k.a. CSA / ACNOR layout) on the OS-side. - support all bépo characters from the default and shifted layers --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 159 ++++++++++++++++++++- .../keymap_extras/keymap_canadian_multilingual.h | 105 ++++++++++++++ 2 files changed, 262 insertions(+), 2 deletions(-) create mode 100644 quantum/keymap_extras/keymap_canadian_multilingual.h diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 1cebf8c9e8..ce887997e7 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -4,14 +4,39 @@ #include "action_layer.h" #include "led.h" #include "keymap_extras/keymap_bepo.h" +#include "keymap_extras/keymap_canadian_multilingual.h" enum layers { LR_BASE, // default layer + LR_CSA, // BÉPO over Canadian Multilingual (CSA) + LR_CSA_SFT, // shifted BÉPO over CSA + LR_CSA_AGR, // altgr-ed BÉPO over CSA + LR_CSA_AGR_SFT, // altgr-shifted BÉPO over CSA LR_NUMR, // numeric layer LR_FN, // fn layer }; +#define IS_CA_MULT_ENABLED() (default_layer_state & (1 << LR_CSA)) + enum macros { + M_TGCM, // toggle CA-mult + M_CMSFT, // toggle shift on CA-mult + // macros for characters that need to be un-shifted in LR_CA_MULT_SHIFT + M_1, + M_2, + M_3, + M_4, + M_5, + M_6, + M_7, + M_8, + M_9, + M_0, + M_DEGR, + M_SCLN, + M_GRV, + M_NBSP, + // other layer macros M_DBL0, M_FNLR, }; @@ -63,6 +88,76 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_UP, KC_DOWN, KC_RSFT, KC_SPC ), +/** + * Same as default but for use with Canadian Multilingual on OS side + */ +[LR_CSA] = KEYMAP( + // left hand + KC_DLR, CM_DQOT, CM_LGIL, CM_RGIL, KC_LPRN, KC_RPRN, KC_DELT, + KC_TAB, KC_B, CM_ECUT, KC_P, KC_O, CM_EGRV, KC_BSPC, + KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, + M(M_CMSFT), CM_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_ENT, + KC_LCTL, M(M_FNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), + + ALT_T(KC_ESC), TG(LR_NUMR), + KC_PGUP, + KC_SPC, KC_LSFT, KC_PGDN, + + // right hand + KC_DELT, KC_AT, KC_PLUS, KC_MINS, CM_SLSH, KC_ASTR, KC_W, + KC_BSPC, CM_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, + KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, + KC_ENT, CM_APOS, KC_Q, KC_G, KC_H, KC_F, M(M_CMSFT), + CM_ALGR, KC_PERC, KC_HOME, CM_CCED, CTL_T(KC_END), + + KC_LEFT, KC_RGHT, + KC_UP, + KC_DOWN, KC_RSFT, KC_SPC + ), +/* Shifted BÉPO over Canadian Multilingual + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | # | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | ! | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | ° | | | | | ; |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | : | | | | | ? | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | ` | | | | + * `----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[LR_CSA_SFT] = KEYMAP( + // left hand + KC_HASH, M(M_1), M(M_2), M(M_3), M(M_4), M(M_5), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + M(M_DEGR),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(M_SCLN), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_COLN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + M(M_NBSP), KC_TRNS, KC_TRNS, + + // right hand + KC_TRNS, M(M_6), M(M_7), M(M_8), M(M_9), M(M_0), KC_TRNS, + KC_TRNS, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, CM_QEST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(M_GRV), KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, M(M_NBSP) + ), /* Numeric Layer * * ,--------------------------------------------------. ,--------------------------------------------------. @@ -110,7 +205,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* fn layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | |Insert| |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk| + * |~CA-mult| | | | | |Insert| |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk| * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | | | |VolUp | | | | | | | | Pause | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -130,7 +225,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND MOUSE [LR_FN] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + M(M_TGCM), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, @@ -155,10 +250,66 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM fn_actions[] = { }; +void hold_shift(void) { + register_code(KC_LSHIFT); +} + +void release_shift(void) { + unregister_code(KC_LSHIFT); +} + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { + case M_TGCM: + if (record->event.pressed) { + default_layer_xor(1 << LR_CSA); + } + break; + case M_CMSFT: + if (record->event.pressed) { + layer_on(LR_CSA_SFT); + hold_shift(); + } else { + release_shift(); + layer_off(LR_CSA_SFT); + } + break; + case M_1 ... M_0: + case M_DEGR: + case M_SCLN: + case M_GRV: + case M_NBSP: + // macros of the shift layer that require to release shift + if (record->event.pressed) { + release_shift(); + switch (id) { + case M_1 ... M_0: + register_code(KC_1 + (id - M_1)); + break; + case M_DEGR: + return MACRO(DOWN(CM_ALTGR), D(SCLN), END); + case M_SCLN: + return MACRO(D(SCLN), END); + case M_GRV: + return MACRO(DOWN(CM_ALTGR), TYPE(CM_DCRC), UP(CM_ALTGR), T(SPACE), END); + case M_NBSP: + return MACRO(DOWN(CM_ALTGR), T(SPACE), UP(CM_ALTGR), END); + } + } else { + hold_shift(); + switch (id) { + case M_1 ... M_0: + unregister_code(KC_1 + (id - M_1)); + break; + case M_DEGR: + return MACRO(UP(CM_ALTGR), D(LSFT), U(SCLN), END); + case M_SCLN: + return MACRO(D(LSFT), U(SCLN), END); + } + } + break; case M_DBL0: if (record->event.pressed) { return MACRO( I(25), T(P0), T(P0), END ); @@ -188,6 +339,10 @@ void * matrix_scan_user(void) { if (layer_state & (1 << LR_NUMR)) { ergodox_right_led_1_on(); } + // led 2: BÉPO over Canadian Multilingual + if (IS_CA_MULT_ENABLED()) { + ergodox_right_led_2_on(); + } // led 3: caps lock if (host_keyboard_leds() & (1< +#define CM_GRTR CM_GREATER + +// Space bar +#define CM_NON_BREAKING_SPACE ALTGR(KC_SPACE) +#define CM_NBSP CM_NON_BREAKING_SPACE + +#endif -- cgit v1.2.1 From 7840e69bfaee1d67de273c235b532d6f20c905a9 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Thu, 18 Feb 2016 00:47:23 +0100 Subject: =?UTF-8?q?B=C3=89PO=20over=20CSA:=20AltGr=20layer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - implemented the most useful characters: - all French characters + € - common programmer characters - other keys implemented as KC_NO to avoid mistyping a character from a lower layer - AltGr+Shift not supported (yet) --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 54 +++++++++++++++++++++- .../keymap_extras/keymap_canadian_multilingual.h | 11 +++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index ce887997e7..64fac7f9ba 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -36,6 +36,8 @@ enum macros { M_SCLN, M_GRV, M_NBSP, + // macros for characters that don't have a simple key combination in LR_CA_MULT_ALTGR + M_CRC, // other layer macros M_DBL0, M_FNLR, @@ -108,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_BSPC, CM_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, KC_ENT, CM_APOS, KC_Q, KC_G, KC_H, KC_F, M(M_CMSFT), - CM_ALGR, KC_PERC, KC_HOME, CM_CCED, CTL_T(KC_END), + MO(LR_CSA_AGR), KC_PERC, KC_HOME, CM_CCED, CTL_T(KC_END), KC_LEFT, KC_RGHT, KC_UP, @@ -158,6 +160,51 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, M(M_NBSP) ), +/* AltGr-ed BÉPO over Canadian Multilingual + * "////" indicates that the key is disabled (unsupported bépo character) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ////// | //// | < | > | [ | ] | | | | ^ | //// | //// | //// | //// | ////// | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | |dead '| & | œ |dead `| | | | //// | //// | //// | //// | //// | ////// | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | ////// | æ | ù |dead "| € | //// |------| |------| //// | //// | //// | //// | //// | ////// | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | \ | { | } | //// | ~ | | | | //// | //// | //// | //// | //// | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | //// | | //// | | + * `----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | _ | |------| |------| | _ | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[LR_CSA_AGR] = KEYMAP( + // left hand + KC_NO, KC_NO, CM_LESS, CM_GRTR, CM_LBRC, CM_RBRC, KC_TRNS, + KC_TRNS, CM_PIPE, CM_DACT, KC_AMPR, CM_OE, CM_DGRV, KC_TRNS, + KC_NO, CM_AE, CM_UGRV, CM_DTRM, CM_EURO, KC_NO, + KC_TRNS, CM_BSLS, CM_LCBR, CM_RCBR, KC_NO, CM_TILD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_UNDS, KC_TRNS, KC_TRNS, + + // right hand + KC_TRNS, M(M_CRC), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_UNDS + ), /* Numeric Layer * * ,--------------------------------------------------. ,--------------------------------------------------. @@ -310,6 +357,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } } break; + case M_CRC: + if (record->event.pressed) { + return MACRO(TYPE(CM_DCRC), T(SPACE), END); + } + break; case M_DBL0: if (record->event.pressed) { return MACRO( I(25), T(P0), T(P0), END ); diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h index ae60ffe37e..e30419b5be 100644 --- a/quantum/keymap_extras/keymap_canadian_multilingual.h +++ b/quantum/keymap_extras/keymap_canadian_multilingual.h @@ -102,4 +102,15 @@ #define CM_NON_BREAKING_SPACE ALTGR(KC_SPACE) #define CM_NBSP CM_NON_BREAKING_SPACE +// GR2A-ed characters (non-exhaustive list) +// second row +#define CM_OE_LIGATURE GR2A(KC_E) // œ +#define CM_OE CM_OE_LIGATURE + +// third row +#define CM_AE_LIGATURE GR2A(KC_A) // æ +#define CM_AE CM_AE_LIGATURE +#define CM_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent +#define CM_DACT CM_DEAD_ACUTE + #endif -- cgit v1.2.1 From fbf1333d87aa4487692f068881ab1ce46fa79be5 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Fri, 26 Feb 2016 00:53:30 +0100 Subject: =?UTF-8?q?B=C3=89PO=20over=20CSA:=20unicode=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - implement easy way to define and send unicode characters on Windows - define 3 characters not available in CSA: - en dash: – - em dash: — - ellipsis: … --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 59 ++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 64fac7f9ba..b08b47217c 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -19,6 +19,13 @@ enum layers { #define IS_CA_MULT_ENABLED() (default_layer_state & (1 << LR_CSA)) enum macros { + // Characters that do not exist in CSA and must be implemented based on unicode support + // Note: these are intentionally declared first to be used as indexes in spec_chars below + UC_NDSH, // – + UC_MDSH, // — + UC_ELPS, // … + END_UC, // indicates the last unicode character macro + // other macros M_TGCM, // toggle CA-mult M_CMSFT, // toggle shift on CA-mult // macros for characters that need to be un-shifted in LR_CA_MULT_SHIFT @@ -43,6 +50,15 @@ enum macros { M_FNLR, }; +const uint16_t unicode_chars[] = { + [UC_NDSH] = L'–', + [UC_MDSH] = L'—', + [UC_ELPS] = L'…', +}; + +/* shortcut for unicod character macros */ +#define MUC(name) M(UC_##name) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Basic layer * @@ -164,13 +180,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * "////" indicates that the key is disabled (unsupported bépo character) * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ////// | //// | < | > | [ | ] | | | | ^ | //// | //// | //// | //// | ////// | + * | – | — | < | > | [ | ] | | | | ^ | //// | //// | //// | //// | ////// | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | |dead '| & | œ |dead `| | | | //// | //// | //// | //// | //// | ////// | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | ////// | æ | ù |dead "| € | //// |------| |------| //// | //// | //// | //// | //// | ////// | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | \ | { | } | //// | ~ | | | | //// | //// | //// | //// | //// | | + * | | \ | { | } | … | ~ | | | | //// | //// | //// | //// | //// | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | //// | | //// | | * `----------------------------------' `-----------------------------------' @@ -184,10 +200,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [LR_CSA_AGR] = KEYMAP( // left hand - KC_NO, KC_NO, CM_LESS, CM_GRTR, CM_LBRC, CM_RBRC, KC_TRNS, + MUC(NDSH),MUC(MDSH),CM_LESS, CM_GRTR, CM_LBRC, CM_RBRC, KC_TRNS, KC_TRNS, CM_PIPE, CM_DACT, KC_AMPR, CM_OE, CM_DGRV, KC_TRNS, KC_NO, CM_AE, CM_UGRV, CM_DTRM, CM_EURO, KC_NO, - KC_TRNS, CM_BSLS, CM_LCBR, CM_RCBR, KC_NO, CM_TILD, KC_TRNS, + KC_TRNS, CM_BSLS, CM_LCBR, CM_RCBR, MUC(ELPS),CM_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -305,10 +321,43 @@ void release_shift(void) { unregister_code(KC_LSHIFT); } +uint16_t hextokeycode(int hex) { + if (hex == 0x0) { + return KC_P0; + } else if (hex < 0xA) { + return KC_P1 + (hex - 0x1); + } else { + return KC_A + (hex - 0xA); + } +} + +void send_unicode(uint16_t unicode) +{ + // For more info on how this works per OS, see here: https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input + // Implemented for Windows: + // Pressing ALT followed by + followed by the unicode code point in hex. + // Requires registry key HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad set to String 1 + register_code(KC_LALT); + register_code(KC_PPLS); + unregister_code(KC_PPLS); + + for (int i = 12; i >= 0; i -= 4) { + register_code(hextokeycode((unicode >> i) & 0xF)); + unregister_code(hextokeycode((unicode >> i) & 0xF)); + } + + unregister_code(KC_LALT); +} + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { + case 0 ... END_UC: + if (record->event.pressed) { + send_unicode(unicode_chars[id]); + } + break; case M_TGCM: if (record->event.pressed) { default_layer_xor(1 << LR_CSA); @@ -364,7 +413,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case M_DBL0: if (record->event.pressed) { - return MACRO( I(25), T(P0), T(P0), END ); + return MACRO( I(25), T(P0), T(P0), END ); } break; case M_FNLR: -- cgit v1.2.1 From 911222892ecb1c01551e0abdfbe98ed1dbf82139 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Fri, 26 Feb 2016 00:55:39 +0100 Subject: =?UTF-8?q?B=C3=89PO=20over=20CSA:=20GR2A=20characters=20in=20AltG?= =?UTF-8?q?r=20layer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - define aliases for all GR2A characters (unshifted) - use the available characters in the BÉPO over CSA AltGr layer --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 22 +++--- .../keymap_extras/keymap_canadian_multilingual.h | 81 ++++++++++++++++++++-- 2 files changed, 88 insertions(+), 15 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index b08b47217c..a3b8d9c49f 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -180,15 +180,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * "////" indicates that the key is disabled (unsupported bépo character) * * ,--------------------------------------------------. ,--------------------------------------------------. - * | – | — | < | > | [ | ] | | | | ^ | //// | //// | //// | //// | ////// | + * | – | — | < | > | [ | ] | | | | ^ | ± | //// | //// | //// | ////// | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | |dead '| & | œ |dead `| | | | //// | //// | //// | //// | //// | ////// | + * | | | |dead '| & | œ |dead `| | | | //// | //// | ð | //// | ij | ////// | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | ////// | æ | ù |dead "| € | //// |------| |------| //// | //// | //// | //// | //// | ////// | + * | ////// | æ | ù |dead "| € | ̛’ |------| |------| //// | þ | ß | //// |dead ~| ////// | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | \ | { | } | … | ~ | | | | //// | //// | //// | //// | //// | | + * | | \ | { | } | … | ~ | | | | //// | //// | μ | //// | //// | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | //// | | //// | | + * | | | | | | | | //// | |dead ¸| | * `----------------------------------' `-----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -202,7 +202,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand MUC(NDSH),MUC(MDSH),CM_LESS, CM_GRTR, CM_LBRC, CM_RBRC, KC_TRNS, KC_TRNS, CM_PIPE, CM_DACT, KC_AMPR, CM_OE, CM_DGRV, KC_TRNS, - KC_NO, CM_AE, CM_UGRV, CM_DTRM, CM_EURO, KC_NO, + KC_NO, CM_AE, CM_UGRV, CM_DTRM, CM_EURO, CM_RQOT, KC_TRNS, CM_BSLS, CM_LCBR, CM_RCBR, MUC(ELPS),CM_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -211,11 +211,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_UNDS, KC_TRNS, KC_TRNS, // right hand - KC_TRNS, M(M_CRC), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, + KC_TRNS, M(M_CRC), CM_PSMS, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_NO, CM_ETH, KC_NO, CM_IJ, KC_NO, + KC_NO, CM_THRN, CM_SRPS, KC_NO, CM_DTLD, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, CM_MU, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_TRNS, CM_DCED, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h index e30419b5be..9b13b1e4e6 100644 --- a/quantum/keymap_extras/keymap_canadian_multilingual.h +++ b/quantum/keymap_extras/keymap_canadian_multilingual.h @@ -103,14 +103,87 @@ #define CM_NBSP CM_NON_BREAKING_SPACE // GR2A-ed characters (non-exhaustive list) -// second row -#define CM_OE_LIGATURE GR2A(KC_E) // œ -#define CM_OE CM_OE_LIGATURE +// First row +#define CM_SUPERSCRIPT_ONE GR2A(KC_1) // ¹ +#define CM_SUP1 CM_SUPERSCRIPT_ONE +#define CM_SUPERSCRIPT_TWO GR2A(KC_2) // ² +#define CM_SUP2 CM_SUPERSCRIPT_TWO +#define CM_SUPERSCRIPT_THREE GR2A(KC_3) // ³ +#define CM_SUP3 CM_SUPERSCRIPT_THREE +#define CM_ONE_QUARTER GR2A(KC_4) // ¼ +#define CM_1QRT CM_ONE_QUARTER +#define CM_ONE_HALF GR2A(KC_5) // ½ +#define CM_1HLF CM_ONE_HALF +#define CM_THREE_QUARTERS GR2A(KC_6) // ¾ +#define CM_3QRT CM_THREE_QUARTERS +// nothing on 7-0 and - +#define CM_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸ +#define CM_DCED CM_DEAD_CEDILLA + +// Second row +#define CM_OMEGA GR2A(KC_Q) // ω +#define CM_OMEG CM_OMEGA +#define CM_L_STROKE GR2A(KC_W) // ł +#define CM_LSTK CM_L_STROKE +#define CM_OE_LIGATURE GR2A(KC_E) // œ +#define CM_OE CM_OE_LIGATURE +#define CM_PARAGRAPH GR2A(KC_R) // ¶ +#define CM_PARG CM_PARAGRAPH +#define CM_T_STROKE GR2A(KC_T) // ŧ +#define CM_LEFT_ARROW GR2A(KC_Y) // ← +#define CM_LARW CM_LEFT_ARROW +#define CM_DOWN_ARROW GR2A(KC_U) // ↓ +#define CM_DARW CM_DOWN_ARROW +#define CM_RIGHT_ARROW GR2A(KC_I) // → +#define CM_RARW CM_RIGHT_ARROW +#define CM_O_STROKE GR2A(KC_O) // ø +#define CM_OSTK CM_O_STROKE +#define CM_THORN GR2A(KC_P) // þ +#define CM_THRN CM_THORN +// nothing on ^ +#define CM_DEAD_TILDE GR2A(CM_C_CEDILLA) // dead ~ +#define CM_DTLD CM_DEAD_TILDE -// third row +// Third row #define CM_AE_LIGATURE GR2A(KC_A) // æ #define CM_AE CM_AE_LIGATURE +#define CM_SHARP_S GR2A(KC_S) // ß +#define CM_SRPS CM_SHARP_S +#define CM_ETH GR2A(KC_D) // ð +// nothing on F +#define CM_ENG GR2A(KC_G) // ŋ +#define CM_H_SRTOKE GR2A(KC_H) // ħ +#define CM_HSTK CM_H_SRTOKE +#define CM_IJ_LIGATURE GR2A(KC_J) // ij +#define CM_IJ CM_IJ_LIGATURE +#define CM_KRA GR2A(KC_K) // ĸ +#define CM_L_FLOWN_DOT GR2A(KC_L) // ŀ +#define CM_LFLD CM_L_FLOWN_DOT #define CM_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent #define CM_DACT CM_DEAD_ACUTE +// nothing on È & À + +// Fourth row +#define CM_CENT GR2A(KC_C) // ¢ +#define CM_LEFT_DOUBLE_QUOTE GR2A(KC_V) // “ +#define CM_LDQT CM_LEFT_DOUBLE_QUOTE +#define CM_RIGHT_DOUBLE_QUOTE GR2A(KC_B) // ” +#define CM_RDQT CM_RIGHT_DOUBLE_QUOTE +#define CM_N_APOSTROPHE GR2A(KC_N) // ʼn (deprecated unicode codepoint) +#define CM_NAPO CM_N_APOSTROPHE +#define CM_MU GR2A(KC_M) // μ +// ─ TODO box drawing character? +#define CM_HYPHENATION_POINT GR2A(CM_DOT) // ‧ TODO not an interpunct ? + +// GR2A-shifted characters (non-exhaustive list) +// First row +#define CM_PLUS_MINUS LSFT(GR2A(KC_9)) // ± +#define CM_PSMS CM_PLUS_MINUS + +// Fourth row +#define CM_LEFT_QUOTE LSFT(GR2A(KC_V)) // ‘ +#define CM_LQOT CM_LEFT_QUOTE +#define CM_RIGHT_QUOTE LSFT(GR2A(KC_B)) // ’ +#define CM_RQOT CM_RIGHT_QUOTE #endif -- cgit v1.2.1 From 3a91ddb0745ae0f52007984793ea1b48abb2098c Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Tue, 1 Mar 2016 22:59:38 +0100 Subject: Use CSA_ as prefix for Canadian Multilingual key aliases CM is already used for Colemak. --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 60 ++--- .../keymap_extras/keymap_canadian_multilingual.h | 244 +++++++++++---------- 2 files changed, 153 insertions(+), 151 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index a3b8d9c49f..6cee216a43 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -111,22 +111,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [LR_CSA] = KEYMAP( // left hand - KC_DLR, CM_DQOT, CM_LGIL, CM_RGIL, KC_LPRN, KC_RPRN, KC_DELT, - KC_TAB, KC_B, CM_ECUT, KC_P, KC_O, CM_EGRV, KC_BSPC, - KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, - M(M_CMSFT), CM_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_ENT, - KC_LCTL, M(M_FNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), + KC_DLR, CSA_DQOT, CSA_LGIL, CSA_RGIL, KC_LPRN, KC_RPRN, KC_DELT, + KC_TAB, KC_B, CSA_ECUT, KC_P, KC_O, CSA_EGRV, KC_BSPC, + KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, + M(M_CMSFT), CSA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_ENT, + KC_LCTL, M(M_FNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), ALT_T(KC_ESC), TG(LR_NUMR), KC_PGUP, KC_SPC, KC_LSFT, KC_PGDN, // right hand - KC_DELT, KC_AT, KC_PLUS, KC_MINS, CM_SLSH, KC_ASTR, KC_W, - KC_BSPC, CM_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, - KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, - KC_ENT, CM_APOS, KC_Q, KC_G, KC_H, KC_F, M(M_CMSFT), - MO(LR_CSA_AGR), KC_PERC, KC_HOME, CM_CCED, CTL_T(KC_END), + KC_DELT, KC_AT, KC_PLUS, KC_MINS, CSA_SLSH, KC_ASTR, KC_W, + KC_BSPC, CSA_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, + KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, + KC_ENT, CSA_APOS, KC_Q, KC_G, KC_H, KC_F, M(M_CMSFT), + MO(LR_CSA_AGR), KC_PERC, KC_HOME, CSA_CCED, CTL_T(KC_END), KC_LEFT, KC_RGHT, KC_UP, @@ -166,11 +166,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { M(M_NBSP), KC_TRNS, KC_TRNS, // right hand - KC_TRNS, M(M_6), M(M_7), M(M_8), M(M_9), M(M_0), KC_TRNS, - KC_TRNS, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, CM_QEST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, M(M_GRV), KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(M_6), M(M_7), M(M_8), M(M_9), M(M_0), KC_TRNS, + KC_TRNS, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, CSA_QEST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(M_GRV), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -200,22 +200,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [LR_CSA_AGR] = KEYMAP( // left hand - MUC(NDSH),MUC(MDSH),CM_LESS, CM_GRTR, CM_LBRC, CM_RBRC, KC_TRNS, - KC_TRNS, CM_PIPE, CM_DACT, KC_AMPR, CM_OE, CM_DGRV, KC_TRNS, - KC_NO, CM_AE, CM_UGRV, CM_DTRM, CM_EURO, CM_RQOT, - KC_TRNS, CM_BSLS, CM_LCBR, CM_RCBR, MUC(ELPS),CM_TILD, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + MUC(NDSH), MUC(MDSH), CSA_LESS, CSA_GRTR, CSA_LBRC, CSA_RBRC, KC_TRNS, + KC_TRNS, CSA_PIPE, CSA_DACT, KC_AMPR, CSA_OE, CSA_DGRV, KC_TRNS, + KC_NO, CSA_AE, CSA_UGRV, CSA_DTRM, CSA_EURO, CSA_RQOT, + KC_TRNS, CSA_BSLS, CSA_LCBR, CSA_RCBR, MUC(ELPS), CSA_TILD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_TRNS, KC_TRNS, // right hand - KC_TRNS, M(M_CRC), CM_PSMS, KC_NO, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_NO, CM_ETH, KC_NO, CM_IJ, KC_NO, - KC_NO, CM_THRN, CM_SRPS, KC_NO, CM_DTLD, KC_TRNS, - KC_TRNS, KC_NO, KC_NO, CM_MU, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_TRNS, CM_DCED, KC_TRNS, + KC_TRNS, M(M_CRC), CSA_PSMS, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_NO, CSA_ETH, KC_NO, CSA_IJ, KC_NO, + KC_NO, CSA_THRN, CSA_SRPS, KC_NO, CSA_DTLD, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, CSA_MU, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_TRNS, CSA_DCED, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -385,13 +385,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) register_code(KC_1 + (id - M_1)); break; case M_DEGR: - return MACRO(DOWN(CM_ALTGR), D(SCLN), END); + return MACRO(DOWN(CSA_ALTGR), D(SCLN), END); case M_SCLN: return MACRO(D(SCLN), END); case M_GRV: - return MACRO(DOWN(CM_ALTGR), TYPE(CM_DCRC), UP(CM_ALTGR), T(SPACE), END); + return MACRO(DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END); case M_NBSP: - return MACRO(DOWN(CM_ALTGR), T(SPACE), UP(CM_ALTGR), END); + return MACRO(DOWN(CSA_ALTGR), T(SPACE), UP(CSA_ALTGR), END); } } else { hold_shift(); @@ -400,7 +400,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) unregister_code(KC_1 + (id - M_1)); break; case M_DEGR: - return MACRO(UP(CM_ALTGR), D(LSFT), U(SCLN), END); + return MACRO(UP(CSA_ALTGR), D(LSFT), U(SCLN), END); case M_SCLN: return MACRO(D(LSFT), U(SCLN), END); } @@ -408,7 +408,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case M_CRC: if (record->event.pressed) { - return MACRO(TYPE(CM_DCRC), T(SPACE), END); + return MACRO(TYPE(CSA_DCRC), T(SPACE), END); } break; case M_DBL0: diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h index 9b13b1e4e6..b1d7b4e779 100644 --- a/quantum/keymap_extras/keymap_canadian_multilingual.h +++ b/quantum/keymap_extras/keymap_canadian_multilingual.h @@ -11,8 +11,8 @@ #define ALGR(kc) ALTGR(kc) #endif -#define CM_ALTGR KC_RALT -#define CM_ALGR CM_ALTGR +#define CSA_ALTGR KC_RALT +#define CSA_ALGR CSA_ALTGR #ifndef GR2A #define GR2A(kc) RCTL(kc) @@ -20,170 +20,172 @@ // Normal characters // First row -#define CM_SLASH KC_GRV // / -#define CM_SLSH CM_SLASH +#define CSA_SLASH KC_GRV // / +#define CSA_SLSH CSA_SLASH // Second row -#define CM_DEAD_CIRCUMFLEX KC_LBRACKET // dead ^ -#define CM_DCRC CM_DEAD_CIRCUMFLEX -#define CM_C_CEDILLA KC_RBRACKET // Ç -#define CM_CCED CM_C_CEDILLA +#define CSA_DEAD_CIRCUMFLEX KC_LBRACKET // dead ^ +#define CSA_DCRC CSA_DEAD_CIRCUMFLEX +#define CSA_C_CEDILLA KC_RBRACKET // Ç +#define CSA_CCED CSA_C_CEDILLA // Third row -#define CM_E_GRAVE KC_QUOT // è -#define CM_EGRV CM_E_GRAVE -#define CM_A_GRAVE KC_BSLASH // à -#define CM_AGRV CM_A_GRAVE +#define CSA_E_GRAVE KC_QUOT // è +#define CSA_EGRV CSA_E_GRAVE +#define CSA_A_GRAVE KC_BSLASH // à +#define CSA_AGRV CSA_A_GRAVE // Fourth row -#define CM_U_GRAVE KC_NONUS_BSLASH // ù -#define CM_UGRV CM_U_GRAVE -#define CM_E_ACUTE KC_SLSH // é -#define CM_ECUT CM_E_ACUTE +#define CSA_U_GRAVE KC_NONUS_BSLASH // ù +#define CSA_UGRV CSA_U_GRAVE +#define CSA_E_ACUTE KC_SLSH // é +#define CSA_ECUT CSA_E_ACUTE // Shifted characters // First row -#define CM_BACKSLASH LSFT(CM_SLASH) /* \ */ -#define CM_BSLS CM_BACKSLASH -#define CM_QUESTION LSFT(KC_6) // ? -#define CM_QEST CM_QUESTION +#define CSA_BACKSLASH LSFT(CSA_SLASH) /* \ */ +#define CSA_BSLS CSA_BACKSLASH +#define CSA_QUESTION LSFT(KC_6) // ? +#define CSA_QEST CSA_QUESTION // Second row -#define CM_DEAD_TREMA LSFT(CM_DEAD_CIRCUMFLEX) // dead trema/umlaut/diaresis for ä ë ï ö ü -#define CM_DTRM CM_DEAD_TREMA +#define CSA_DEAD_TREMA LSFT(CSA_DEAD_CIRCUMFLEX) // dead trema/umlaut/diaresis for ä ë ï ö ü +#define CSA_DTRM CSA_DEAD_TREMA // Third row // all same as US-QWERTY, or capitalised character of the non-shifted key // Fourth row -#define CM_APOSTROPHE LSFT(KC_COMMA) // ' -#define CM_APOS CM_APOSTROPHE -#define CM_DOUBLE_QUOTE LSFT(KC_DOT) // " -#define CM_DQOT CM_DOUBLE_QUOTE +#define CSA_APOSTROPHE LSFT(KC_COMMA) // ' +#define CSA_APOS CSA_APOSTROPHE +#define CSA_DOUBLE_QUOTE LSFT(KC_DOT) // " +#define CSA_DQOT CSA_DOUBLE_QUOTE // Alt Gr-ed characters // First row -#define CM_PIPE ALTGR(CM_SLASH) // | -#define CM_CURRENCY ALTGR(KC_4) // ¤ -#define CM_CURR CM_CURRENCY -#define CM_LEFT_CURLY_BRACE ALTGR(KC_7) // { -#define CM_LCBR CM_LEFT_CURLY_BRACE -#define CM_RIGHT_CURLY_BRACE ALTGR(KC_8) // } -#define CM_RCBR CM_RIGHT_CURLY_BRACE -#define CM_LBRACKET ALTGR(KC_9) // [ -#define CM_LBRC CM_LBRACKET -#define CM_RBRACKET ALTGR(KC_0) // ] -#define CM_RBRC CM_RBRACKET -#define CM_NEGATION ALTGR(KC_EQUAL) // ¬ -#define CM_NEGT CM_NEGATION +#define CSA_PIPE ALTGR(CSA_SLASH) // | +#define CSA_CURRENCY ALTGR(KC_4) // ¤ +#define CSA_CURR CSA_CURRENCY +#define CSA_LEFT_CURLY_BRACE ALTGR(KC_7) // { +#define CSA_LCBR CSA_LEFT_CURLY_BRACE +#define CSA_RIGHT_CURLY_BRACE ALTGR(KC_8) // } +#define CSA_RCBR CSA_RIGHT_CURLY_BRACE +#define CSA_LBRACKET ALTGR(KC_9) // [ +#define CSA_LBRC CSA_LBRACKET +#define CSA_RBRACKET ALTGR(KC_0) // ] +#define CSA_RBRC CSA_RBRACKET +#define CSA_NEGATION ALTGR(KC_EQUAL) // ¬ +#define CSA_NEGT CSA_NEGATION // Second row // euro symbol not available on Linux? (X.org) -#define CM_EURO ALTGR(KC_E) // € -#define CM_DEAD_GRAVE ALTGR(CM_DEAD_CIRCUMFLEX) -#define CM_DGRV CM_DEAD_GRAVE // dead ` -#define CM_TILDE ALTGR(CM_C_CEDILLA) // ~ -#define CM_TILD CM_TILDE +#define CSA_EURO ALTGR(KC_E) // € +#define CSA_DEAD_GRAVE ALTGR(CSA_DEAD_CIRCUMFLEX) +#define CSA_DGRV CSA_DEAD_GRAVE // dead ` +#define CSA_TILDE ALTGR(CSA_C_CEDILLA) // ~ +#define CSA_TILD CSA_TILDE // Third row -#define CM_DEGREE ALTGR(KC_SCOLON) // ° -#define CM_DEGR CM_DEGREE +#define CSA_DEGREE ALTGR(KC_SCOLON) // ° +#define CSA_DEGR CSA_DEGREE // Fourth row -#define CM_LEFT_GUILLEMET ALTGR(KC_Z) // « -#define CM_LGIL CM_LEFT_GUILLEMET -#define CM_RIGHT_GUILLEMET ALTGR(KC_X) // » -#define CM_RGIL CM_RIGHT_GUILLEMET -#define CM_LESS ALTGR(KC_COMMA) // < -#define CM_GREATER ALTGR(KC_DOT) // > -#define CM_GRTR CM_GREATER +#define CSA_LEFT_GUILLEMET ALTGR(KC_Z) // « +#define CSA_LGIL CSA_LEFT_GUILLEMET +#define CSA_RIGHT_GUILLEMET ALTGR(KC_X) // » +#define CSA_RGIL CSA_RIGHT_GUILLEMET +#define CSA_LESS ALTGR(KC_COMMA) // < +#define CSA_GREATER ALTGR(KC_DOT) // > +#define CSA_GRTR CSA_GREATER // Space bar -#define CM_NON_BREAKING_SPACE ALTGR(KC_SPACE) -#define CM_NBSP CM_NON_BREAKING_SPACE +#define CSA_NON_BREAKING_SPACE ALTGR(KC_SPACE) +#define CSA_NBSP CSA_NON_BREAKING_SPACE // GR2A-ed characters (non-exhaustive list) // First row -#define CM_SUPERSCRIPT_ONE GR2A(KC_1) // ¹ -#define CM_SUP1 CM_SUPERSCRIPT_ONE -#define CM_SUPERSCRIPT_TWO GR2A(KC_2) // ² -#define CM_SUP2 CM_SUPERSCRIPT_TWO -#define CM_SUPERSCRIPT_THREE GR2A(KC_3) // ³ -#define CM_SUP3 CM_SUPERSCRIPT_THREE -#define CM_ONE_QUARTER GR2A(KC_4) // ¼ -#define CM_1QRT CM_ONE_QUARTER -#define CM_ONE_HALF GR2A(KC_5) // ½ -#define CM_1HLF CM_ONE_HALF -#define CM_THREE_QUARTERS GR2A(KC_6) // ¾ -#define CM_3QRT CM_THREE_QUARTERS +#define CSA_SUPERSCRIPT_ONE GR2A(KC_1) // ¹ +#define CSA_SUP1 CSA_SUPERSCRIPT_ONE +#define CSA_SUPERSCRIPT_TWO GR2A(KC_2) // ² +#define CSA_SUP2 CSA_SUPERSCRIPT_TWO +#define CSA_SUPERSCRIPT_THREE GR2A(KC_3) // ³ +#define CSA_SUP3 CSA_SUPERSCRIPT_THREE +#define CSA_ONE_QUARTER GR2A(KC_4) // ¼ +#define CSA_1QRT CSA_ONE_QUARTER +#define CSA_ONE_HALF GR2A(KC_5) // ½ +#define CSA_1HLF CSA_ONE_HALF +#define CSA_THREE_QUARTERS GR2A(KC_6) // ¾ +#define CSA_3QRT CSA_THREE_QUARTERS // nothing on 7-0 and - -#define CM_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸ -#define CM_DCED CM_DEAD_CEDILLA +#define CSA_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸ +#define CSA_DCED CSA_DEAD_CEDILLA // Second row -#define CM_OMEGA GR2A(KC_Q) // ω -#define CM_OMEG CM_OMEGA -#define CM_L_STROKE GR2A(KC_W) // ł -#define CM_LSTK CM_L_STROKE -#define CM_OE_LIGATURE GR2A(KC_E) // œ -#define CM_OE CM_OE_LIGATURE -#define CM_PARAGRAPH GR2A(KC_R) // ¶ -#define CM_PARG CM_PARAGRAPH -#define CM_T_STROKE GR2A(KC_T) // ŧ -#define CM_LEFT_ARROW GR2A(KC_Y) // ← -#define CM_LARW CM_LEFT_ARROW -#define CM_DOWN_ARROW GR2A(KC_U) // ↓ -#define CM_DARW CM_DOWN_ARROW -#define CM_RIGHT_ARROW GR2A(KC_I) // → -#define CM_RARW CM_RIGHT_ARROW -#define CM_O_STROKE GR2A(KC_O) // ø -#define CM_OSTK CM_O_STROKE -#define CM_THORN GR2A(KC_P) // þ -#define CM_THRN CM_THORN +#define CSA_OMEGA GR2A(KC_Q) // ω +#define CSA_OMEG CSA_OMEGA +#define CSA_L_STROKE GR2A(KC_W) // ł +#define CSA_LSTK CSA_L_STROKE +#define CSA_OE_LIGATURE GR2A(KC_E) // œ +#define CSA_OE CSA_OE_LIGATURE +#define CSA_PARAGRAPH GR2A(KC_R) // ¶ +#define CSA_PARG CSA_PARAGRAPH +#define CSA_T_STROKE GR2A(KC_T) // ŧ +#define CSA_LEFT_ARROW GR2A(KC_Y) // ← +#define CSA_LARW CSA_LEFT_ARROW +#define CSA_DOWN_ARROW GR2A(KC_U) // ↓ +#define CSA_DARW CSA_DOWN_ARROW +#define CSA_RIGHT_ARROW GR2A(KC_I) // → +#define CSA_RARW CSA_RIGHT_ARROW +#define CSA_O_STROKE GR2A(KC_O) // ø +#define CSA_OSTK CSA_O_STROKE +#define CSA_THORN GR2A(KC_P) // þ +#define CSA_THRN CSA_THORN // nothing on ^ -#define CM_DEAD_TILDE GR2A(CM_C_CEDILLA) // dead ~ -#define CM_DTLD CM_DEAD_TILDE +#define CSA_DEAD_TILDE GR2A(CSA_C_CEDILLA) // dead ~ +#define CSA_DTLD CSA_DEAD_TILDE // Third row -#define CM_AE_LIGATURE GR2A(KC_A) // æ -#define CM_AE CM_AE_LIGATURE -#define CM_SHARP_S GR2A(KC_S) // ß -#define CM_SRPS CM_SHARP_S -#define CM_ETH GR2A(KC_D) // ð +#define CSA_AE_LIGATURE GR2A(KC_A) // æ +#define CSA_AE CSA_AE_LIGATURE +#define CSA_SHARP_S GR2A(KC_S) // ß +#define CSA_SRPS CSA_SHARP_S +#define CSA_ETH GR2A(KC_D) // ð // nothing on F -#define CM_ENG GR2A(KC_G) // ŋ -#define CM_H_SRTOKE GR2A(KC_H) // ħ -#define CM_HSTK CM_H_SRTOKE -#define CM_IJ_LIGATURE GR2A(KC_J) // ij -#define CM_IJ CM_IJ_LIGATURE -#define CM_KRA GR2A(KC_K) // ĸ -#define CM_L_FLOWN_DOT GR2A(KC_L) // ŀ -#define CM_LFLD CM_L_FLOWN_DOT -#define CM_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent -#define CM_DACT CM_DEAD_ACUTE +#define CSA_ENG GR2A(KC_G) // ŋ +#define CSA_H_SRTOKE GR2A(KC_H) // ħ +#define CSA_HSTK CSA_H_SRTOKE +#define CSA_IJ_LIGATURE GR2A(KC_J) // ij +#define CSA_IJ CSA_IJ_LIGATURE +#define CSA_KRA GR2A(KC_K) // ĸ +#define CSA_L_FLOWN_DOT GR2A(KC_L) // ŀ +#define CSA_LFLD CSA_L_FLOWN_DOT +#define CSA_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent +#define CSA_DACT CSA_DEAD_ACUTE // nothing on È & À // Fourth row -#define CM_CENT GR2A(KC_C) // ¢ -#define CM_LEFT_DOUBLE_QUOTE GR2A(KC_V) // “ -#define CM_LDQT CM_LEFT_DOUBLE_QUOTE -#define CM_RIGHT_DOUBLE_QUOTE GR2A(KC_B) // ” -#define CM_RDQT CM_RIGHT_DOUBLE_QUOTE -#define CM_N_APOSTROPHE GR2A(KC_N) // ʼn (deprecated unicode codepoint) -#define CM_NAPO CM_N_APOSTROPHE -#define CM_MU GR2A(KC_M) // μ -// ─ TODO box drawing character? -#define CM_HYPHENATION_POINT GR2A(CM_DOT) // ‧ TODO not an interpunct ? +#define CSA_CENT GR2A(KC_C) // ¢ +#define CSA_LEFT_DOUBLE_QUOTE GR2A(KC_V) // “ +#define CSA_LDQT CSA_LEFT_DOUBLE_QUOTE +#define CSA_RIGHT_DOUBLE_QUOTE GR2A(KC_B) // ” +#define CSA_RDQT CSA_RIGHT_DOUBLE_QUOTE +#define CSA_N_APOSTROPHE GR2A(KC_N) // ʼn (deprecated unicode codepoint) +#define CSA_NAPO CSA_N_APOSTROPHE +#define CSA_MU GR2A(KC_M) // μ +#define CSA_HORIZONTAL_BAR GR2A(KC_COMMA) // ― +#define CSA_HZBR CSA_HORIZONTAL_BAR +#define CSA_DEAD_DOT_ABOVE GR2A(KC_DOT) // dead ˙ +#define CSA_DOTA CSA_DEAD_DOT_ABOVE // GR2A-shifted characters (non-exhaustive list) // First row -#define CM_PLUS_MINUS LSFT(GR2A(KC_9)) // ± -#define CM_PSMS CM_PLUS_MINUS +#define CSA_PLUS_MINUS LSFT(GR2A(KC_9)) // ± +#define CSA_PSMS CSA_PLUS_MINUS // Fourth row -#define CM_LEFT_QUOTE LSFT(GR2A(KC_V)) // ‘ -#define CM_LQOT CM_LEFT_QUOTE -#define CM_RIGHT_QUOTE LSFT(GR2A(KC_B)) // ’ -#define CM_RQOT CM_RIGHT_QUOTE +#define CSA_LEFT_QUOTE LSFT(GR2A(KC_V)) // ‘ +#define CSA_LQOT CSA_LEFT_QUOTE +#define CSA_RIGHT_QUOTE LSFT(GR2A(KC_B)) // ’ +#define CSA_RQOT CSA_RIGHT_QUOTE #endif -- cgit v1.2.1 From b2a4434abbfe63902be668c34995587193f778dd Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Tue, 8 Mar 2016 23:27:18 +0100 Subject: =?UTF-8?q?B=C3=89PO=20over=20CSA:=20Fixed=20key=20repeat=20for=20?= =?UTF-8?q?M=5FNBSP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 6cee216a43..db6c9583eb 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -2,6 +2,7 @@ #include "ergodox_ez.h" #include "debug.h" #include "action_layer.h" +#include "action_util.h" #include "led.h" #include "keymap_extras/keymap_bepo.h" #include "keymap_extras/keymap_canadian_multilingual.h" @@ -391,7 +392,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case M_GRV: return MACRO(DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END); case M_NBSP: - return MACRO(DOWN(CSA_ALTGR), T(SPACE), UP(CSA_ALTGR), END); + // use weak mod such that pressing another key will not be affected + add_weak_mods(MOD_BIT(CSA_ALTGR)); + return MACRO(D(SPACE), END); } } else { hold_shift(); @@ -403,6 +406,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO(UP(CSA_ALTGR), D(LSFT), U(SCLN), END); case M_SCLN: return MACRO(D(LSFT), U(SCLN), END); + case M_NBSP: + del_weak_mods(MOD_BIT(CSA_ALTGR)); + return MACRO(U(SPACE), END); } } break; -- cgit v1.2.1 From aa5eb49edd993e2abe3adf814e030fcdda4a3596 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Wed, 2 Mar 2016 00:22:41 +0100 Subject: =?UTF-8?q?B=C3=89PO=20over=20CSA:=20GR2A-shifted=20characters=20i?= =?UTF-8?q?n=20AltGr=20layer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - define aliases for all GR2A-shifted characters - use the available characters in BÉPO over CSA AltGr layer --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 18 ++--- .../keymap_extras/keymap_canadian_multilingual.h | 86 +++++++++++++++++++--- 2 files changed, 84 insertions(+), 20 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index db6c9583eb..e339792bf3 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -181,13 +181,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * "////" indicates that the key is disabled (unsupported bépo character) * * ,--------------------------------------------------. ,--------------------------------------------------. - * | – | — | < | > | [ | ] | | | | ^ | ± | //// | //// | //// | ////// | + * | – | — | < | > | [ | ] | | | | ^ | ± | //// | ÷ | × | dead ˘ | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | |dead '| & | œ |dead `| | | | //// | //// | ð | //// | ij | ////// | + * | | | |dead '| & | œ |dead `| | | | ¡ |dead ˇ| ð | //// | ij | ////// | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | ////// | æ | ù |dead "| € | ̛’ |------| |------| //// | þ | ß | //// |dead ~| ////// | + * | ////// | æ | ù |dead "| € | ̛’ |------| |------| © | þ | ß | ® |dead ~| dead ¯ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | \ | { | } | … | ~ | | | | //// | //// | μ | //// | //// | | + * | | \ | { | } | … | ~ | | | | ¿ |dead °| μ | //// |dead ˛| | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | //// | |dead ¸| | * `----------------------------------' `-----------------------------------' @@ -212,11 +212,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_UNDS, KC_TRNS, KC_TRNS, // right hand - KC_TRNS, M(M_CRC), CSA_PSMS, KC_NO, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_NO, CSA_ETH, KC_NO, CSA_IJ, KC_NO, - KC_NO, CSA_THRN, CSA_SRPS, KC_NO, CSA_DTLD, KC_TRNS, - KC_TRNS, KC_NO, KC_NO, CSA_MU, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_TRNS, CSA_DCED, KC_TRNS, + KC_TRNS, M(M_CRC), CSA_PSMS, KC_NO, CSA_DVSN, CSA_TIMS, CSA_DBRV, + KC_TRNS, CSA_IXLM, CSA_DCAR, CSA_ETH, KC_NO, CSA_IJ, KC_NO, + CSA_CPRT, CSA_THRN, CSA_SRPS, CSA_RTM, CSA_DTLD, CSA_DMCR, + KC_TRNS, CSA_IQST, CSA_DRNG, CSA_MU, KC_NO, CSA_DOGO, KC_TRNS, + KC_TRNS, KC_NO, KC_TRNS, CSA_DCED, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h index b1d7b4e779..c720088e8c 100644 --- a/quantum/keymap_extras/keymap_canadian_multilingual.h +++ b/quantum/keymap_extras/keymap_canadian_multilingual.h @@ -82,8 +82,8 @@ #define CSA_EURO ALTGR(KC_E) // € #define CSA_DEAD_GRAVE ALTGR(CSA_DEAD_CIRCUMFLEX) #define CSA_DGRV CSA_DEAD_GRAVE // dead ` -#define CSA_TILDE ALTGR(CSA_C_CEDILLA) // ~ -#define CSA_TILD CSA_TILDE +#define CSA_DEAD_TILDE ALTGR(CSA_C_CEDILLA) // ~ +#define CSA_DTLD CSA_DEAD_TILDE // Third row #define CSA_DEGREE ALTGR(KC_SCOLON) // ° @@ -102,7 +102,7 @@ #define CSA_NON_BREAKING_SPACE ALTGR(KC_SPACE) #define CSA_NBSP CSA_NON_BREAKING_SPACE -// GR2A-ed characters (non-exhaustive list) +// GR2A-ed characters // First row #define CSA_SUPERSCRIPT_ONE GR2A(KC_1) // ¹ #define CSA_SUP1 CSA_SUPERSCRIPT_ONE @@ -141,8 +141,8 @@ #define CSA_THORN GR2A(KC_P) // þ #define CSA_THRN CSA_THORN // nothing on ^ -#define CSA_DEAD_TILDE GR2A(CSA_C_CEDILLA) // dead ~ -#define CSA_DTLD CSA_DEAD_TILDE +#define CSA_TILDE GR2A(CSA_C_CEDILLA) // dead ~ +#define CSA_TILD CSA_TILDE // Third row #define CSA_AE_LIGATURE GR2A(KC_A) // æ @@ -175,17 +175,81 @@ #define CSA_HORIZONTAL_BAR GR2A(KC_COMMA) // ― #define CSA_HZBR CSA_HORIZONTAL_BAR #define CSA_DEAD_DOT_ABOVE GR2A(KC_DOT) // dead ˙ -#define CSA_DOTA CSA_DEAD_DOT_ABOVE +#define CSA_DDTA CSA_DEAD_DOT_ABOVE -// GR2A-shifted characters (non-exhaustive list) +// GR2A-shifted characters (different from capitalised GR2A-ed characters) // First row -#define CSA_PLUS_MINUS LSFT(GR2A(KC_9)) // ± -#define CSA_PSMS CSA_PLUS_MINUS +#define CSA_SOFT_HYPHEN GR2A(LSFT(CSA_SLASH)) // soft-hyphen, appears as a hyphen in wrapped word +#define CSA_SHYP CSA_SOFT_HYPHEN +#define CSA_INVERTED_EXCLAIM GR2A(KC_EXCLAIM) // ¡ +#define CSA_IXLM CSA_INVERTED_EXCLAIM +// nothing on 2 +#define CSA_POUND GR2A(LSFT(KC_3)) // £ +#define CSA_GBP CSA_POUND_SIGN +// already on ALTGR(KC_E) +#define CSA_EURO_BIS GR2A(LSFT(KC_4)) // € +#define CSA_EURB CSA_EURO_BIS +#define CSA_THREE_EIGHTHS GR2A(LSFT(KC_5)) // ⅜ +#define CSA_3ON8 CSA_THREE_EIGHTHS +#define CSA_FIVE_EIGHTHS GR2A(LSFT(KC_6)) // ⅝ +#define CSA_5ON8 CSA_FIVE_EIGHTHS +#define CSA_SEVEN_EIGHTHS GR2A(LSFT(KC_7)) // ⅞ +#define CSA_7ON8 CSA_SEVEN_EIGHTHS +#define CSA_TRADEMARK GR2A(LSFT(KC_8)) // ™ +#define CSA_TM CSA_TRADEMARK +#define CSA_PLUS_MINUS GR2A(LSFT(KC_9)) // ± +#define CSA_PSMS CSA_PLUS_MINUS +// nothing on 0 +#define CSA_INVERTED_QUESTION GR2A(LSFT(KC_MINUS)) // ¿ +#define CSA_IQST CSA_INVERTED_QUESTION +#define CSA_DEAD_OGONEK GR2A(LSFT(KC_EQUAL)) // dead ˛ +#define CSA_DOGO CSA_DEAD_OGONEK + +// Second row +#define CSA_REGISTERED_TRADEMARK GR2A(LSFT(KC_R)) // ® +#define CSA_RTM CSA_REGISTERED_TRADEMARK +#define CSA_YEN GR2A(LSFT(KC_Y)) // ¥ +#define CSA_YUAN CSA_YEN +#define CSA_UP_ARROW LSFT(CSA_DOWN_ARROW) // ↑ +#define CSA_DOTLESS_I GR2A(LSFT(KC_I)) // ı +#define CSA_DLSI CSA_DOTLESS_I +#define CSA_DEAD_RING GR2A(LSFT(CSA_DCRC)) // dead ° +#define CSA_DRNG CSA_DEAD_RING +#define CSA_DEAD_MACRON GR2A(LSFT(CSA_C_CEDILLA)) // dead ¯ +#define CSA_DMCR CSA_DEAD_MACRON + +// Third row +#define CSA_SECTION GR2A(LSFT(KC_S)) // § +#define CSA_SECT CSA_SECTION +#define CSA_ORDINAL_INDICATOR_A GR2A(LSFT(KC_F)) // ª +#define CSA_ORDA CSA_ORDINAL_INDICATOR_A +#define CSA_DEAD_DOUBLE_ACUTE LSFT(CSA_DEAD_ACUTE) // ˝ +#define CSA_DDCT CSA_DEAD_DOUBLE_ACUTE +#define CSA_DEAD_CARON GR2A(LSFT(CSA_E_GRAVE)) // dead ˇ +#define CSA_DCAR CSA_DEAD_CARON +#define CSA_DEAD_BREVE GR2A(LSFT(CSA_A_GRAVE)) // dead ˘ +#define CSA_DBRV CSA_DEAD_BREVE // Fourth row -#define CSA_LEFT_QUOTE LSFT(GR2A(KC_V)) // ‘ +#define CSA_BROKEN_PIPE GR2A(LSFT(CSA_U_GRAVE)) // ¦ +#define CSA_BPIP CSA_BROKEN_PIPE +#define CSA_COPYRIGHT GR2A(LSFT(KC_C)) // © +#define CSA_CPRT CSA_COPYRIGHT +#define CSA_LEFT_QUOTE GR2A(LSFT(KC_V)) // ‘ #define CSA_LQOT CSA_LEFT_QUOTE -#define CSA_RIGHT_QUOTE LSFT(GR2A(KC_B)) // ’ +#define CSA_RIGHT_QUOTE GR2A(LSFT(KC_B)) // ’ #define CSA_RQOT CSA_RIGHT_QUOTE +#define CSA_EIGHTH_NOTE GR2A(LSFT(KC_N)) // ♪ +#define CSA_8NOT CSA_EIGHTH_NOTE +#define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M)) // º +#define CSA_ORDO CSA_ORDINAL_INDICATOR_O +#define CSA_TIMES GR2A(LSFT(KC_COMMA)) // × +#define CSA_TIMS CSA_TIMES +#define CSA_OBELUS GR2A(LSFT(KC_DOT)) // ÷ +#define CSA_OBEL CSA_OBELUS +// more conventional name of the symbol +#define CSA_DIVISION_SIGN CSA_OBELUS +#define CSA_DVSN CSA_DIVISION_SIGN +// TODO GR2A(LSFT(CSA_E_ACUTE)) #endif -- cgit v1.2.1 From 6c672dfdc6f3a9e7df79462d79c34e5750a72edf Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Tue, 8 Mar 2016 22:06:27 +0100 Subject: =?UTF-8?q?B=C3=89PO=20over=20CSA:=20Altgr-shifted=20layer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - all characters available directly in CSA - more explicit names for macros that switch accross CSA layers - use macros to implement the shifts next to the spaces --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 110 ++++++++++++++++++++++++------ 1 file changed, 88 insertions(+), 22 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index e339792bf3..2b76fea221 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -27,8 +27,10 @@ enum macros { UC_ELPS, // … END_UC, // indicates the last unicode character macro // other macros - M_TGCM, // toggle CA-mult - M_CMSFT, // toggle shift on CA-mult + M_TGCSA, // toggle BÉPO over CSA + M_CSA_SFT, // toggle shift on CSA + M_CSA_AGR_SFT, // toggle shift on LR_CSA_AGR (goes to LR_CSA_AGR_SFT) + M_CSA_SFT_AGR, // toggle AltGr on LR_CSA_SFT (goes to LR_CSA_AGR_SFT) // macros for characters that need to be un-shifted in LR_CA_MULT_SHIFT M_1, M_2, @@ -51,14 +53,16 @@ enum macros { M_FNLR, }; +#define CSA(name) M(M_CSA_##name) // calls a CSA macro + const uint16_t unicode_chars[] = { [UC_NDSH] = L'–', [UC_MDSH] = L'—', [UC_ELPS] = L'…', }; -/* shortcut for unicod character macros */ -#define MUC(name) M(UC_##name) +/* shortcut for unicode character macros */ +#define MUC(name) M(UC_##name) // calls a unicode macro const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Basic layer @@ -115,23 +119,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_DLR, CSA_DQOT, CSA_LGIL, CSA_RGIL, KC_LPRN, KC_RPRN, KC_DELT, KC_TAB, KC_B, CSA_ECUT, KC_P, KC_O, CSA_EGRV, KC_BSPC, KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, - M(M_CMSFT), CSA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_ENT, + CSA(SFT), CSA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_ENT, KC_LCTL, M(M_FNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), ALT_T(KC_ESC), TG(LR_NUMR), KC_PGUP, - KC_SPC, KC_LSFT, KC_PGDN, + KC_SPC, CSA(SFT), KC_PGDN, // right hand KC_DELT, KC_AT, KC_PLUS, KC_MINS, CSA_SLSH, KC_ASTR, KC_W, KC_BSPC, CSA_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, - KC_ENT, CSA_APOS, KC_Q, KC_G, KC_H, KC_F, M(M_CMSFT), + KC_ENT, CSA_APOS, KC_Q, KC_G, KC_H, KC_F, CSA(SFT), MO(LR_CSA_AGR), KC_PERC, KC_HOME, CSA_CCED, CTL_T(KC_END), KC_LEFT, KC_RGHT, KC_UP, - KC_DOWN, KC_RSFT, KC_SPC + KC_DOWN, CSA(SFT), KC_SPC ), /* Shifted BÉPO over Canadian Multilingual * @@ -171,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CSA_QEST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, M(M_GRV), KC_TRNS, KC_TRNS, KC_TRNS, + CSA(SFT_AGR), M(M_GRV), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -201,26 +205,71 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [LR_CSA_AGR] = KEYMAP( // left hand - MUC(NDSH), MUC(MDSH), CSA_LESS, CSA_GRTR, CSA_LBRC, CSA_RBRC, KC_TRNS, - KC_TRNS, CSA_PIPE, CSA_DACT, KC_AMPR, CSA_OE, CSA_DGRV, KC_TRNS, - KC_NO, CSA_AE, CSA_UGRV, CSA_DTRM, CSA_EURO, CSA_RQOT, - KC_TRNS, CSA_BSLS, CSA_LCBR, CSA_RCBR, MUC(ELPS), CSA_TILD, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + MUC(NDSH), MUC(MDSH), CSA_LESS, CSA_GRTR, CSA_LBRC, CSA_RBRC, KC_TRNS, + KC_TRNS, CSA_PIPE, CSA_DACT, KC_AMPR, CSA_OE, CSA_DGRV, KC_TRNS, + KC_NO, CSA_AE, CSA_UGRV, CSA_DTRM, CSA_EURO, CSA_RQOT, + CSA(AGR_SFT), CSA_BSLS, CSA_LCBR, CSA_RCBR, MUC(ELPS), CSA_TILD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_UNDS, KC_TRNS, KC_TRNS, + KC_UNDS, CSA(AGR_SFT), KC_TRNS, // right hand KC_TRNS, M(M_CRC), CSA_PSMS, KC_NO, CSA_DVSN, CSA_TIMS, CSA_DBRV, KC_TRNS, CSA_IXLM, CSA_DCAR, CSA_ETH, KC_NO, CSA_IJ, KC_NO, CSA_CPRT, CSA_THRN, CSA_SRPS, CSA_RTM, CSA_DTLD, CSA_DMCR, - KC_TRNS, CSA_IQST, CSA_DRNG, CSA_MU, KC_NO, CSA_DOGO, KC_TRNS, + KC_TRNS, CSA_IQST, CSA_DRNG, CSA_MU, KC_NO, CSA_DOGO, CSA(AGR_SFT), KC_TRNS, KC_NO, KC_TRNS, CSA_DCED, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_UNDS + KC_TRNS, CSA(AGR_SFT), KC_UNDS + ), +/* AltGr-shifted BÉPO over Canadian Multilingual + * "////" indicates that the key is disabled (unsupported bépo character or unused in bépo) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ¶ | //// | “ | ” | //// | //// | | | | //// | ¬ | ¼ | ½ | ¾ | ////// | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ¦ | ˝ | § | Œ | ` | | | | //// | //// | Ð | //// | IJ | ////// | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | ////// | Æ | Ù |dead-˙| //// | //// |------| |------| //// | Þ | ẞ | ™ | //// | º | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | //// | ‘ | ’ | //// | //// | | | | //// | //// | //// | //// | ª | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[LR_CSA_AGR_SFT] = KEYMAP( + // left hand + CSA_PARG, KC_NO, CSA_LDQT, CSA_RDQT, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, CSA_BPIP, CSA_DDCT, CSA_SECT, S(CSA_OE), M(M_GRV), KC_TRNS, + KC_NO, S(CSA_AE), S(CSA_UGRV), CSA_DDTA, KC_NO, KC_NO, + CSA(AGR_SFT), KC_NO, CSA_LQOT, CSA_RQOT, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, CSA(AGR_SFT), KC_TRNS, + + // right hand + KC_TRNS, KC_NO, CSA_NEGT, CSA_1QRT, CSA_1HLF, CSA_3QRT, KC_NO, + KC_TRNS, KC_NO, KC_NO, S(CSA_ETH), KC_NO, S(CSA_IJ), KC_NO, + KC_NO, S(CSA_THRN), S(CSA_SRPS), CSA_TM, KC_NO, CSA_ORDO, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, CSA_ORDA, CSA(AGR_SFT), + CSA(SFT_AGR), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, CSA(AGR_SFT), KC_TRNS ), /* Numeric Layer * @@ -289,7 +338,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND MOUSE [LR_FN] = KEYMAP( - M(M_TGCM), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + M(M_TGCSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, @@ -359,20 +408,37 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) send_unicode(unicode_chars[id]); } break; - case M_TGCM: + case M_TGCSA: if (record->event.pressed) { default_layer_xor(1 << LR_CSA); } break; - case M_CMSFT: + case M_CSA_SFT: + // BÉPO over CSA: toggle shift layer + layer_invert(LR_CSA_SFT); if (record->event.pressed) { - layer_on(LR_CSA_SFT); hold_shift(); } else { release_shift(); - layer_off(LR_CSA_SFT); } break; + case M_CSA_SFT_AGR: + // BÉPO over CSA: from shift layer, momentary altgr+shift layer + layer_invert(LR_CSA_AGR); + layer_invert(LR_CSA_AGR_SFT); + if (record->event.pressed) { + // shift not needed for LR_CSA_AGR_SFT + release_shift(); + } else { + // back to shift layer + hold_shift(); + } + break; + case M_CSA_AGR_SFT: + // BÉPO over CSA: from altgr layer, momentary altgr+shift layer + layer_invert(LR_CSA_SFT); + layer_invert(LR_CSA_AGR_SFT); + break; case M_1 ... M_0: case M_DEGR: case M_SCLN: -- cgit v1.2.1 From 89b647fe2b345fd26940508784482d37148ddc45 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Sun, 13 Mar 2016 19:02:43 +0100 Subject: Replace Play by temporary num layer with left Alt - move play on fn+left thumb - move prev/next besides play --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 51 +++++++++++++++++++------------ 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 2b76fea221..a37ce7f316 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -49,8 +49,9 @@ enum macros { // macros for characters that don't have a simple key combination in LR_CA_MULT_ALTGR M_CRC, // other layer macros - M_DBL0, - M_FNLR, + M_DBL0, // double 0 + M_FNLR, // fn layer + M_NMAL, // num+alt }; #define CSA(name) M(M_CSA_##name) // calls a CSA macro @@ -76,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| * | LShift | À | Y | X | . | K | | | | ' | Q | G | H | F | RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | fn | LGui | Play |App/Alt| |Alt Gr| % | Home | Ç |End/Ctl| + * |LCtrl | fn | LGui |numAlt|App/Alt| |Alt Gr| % | Home | Ç |End/Ctl| * `-----------------------------------' `-----------------------------------' * ,--------------. ,-------------. * |Esc/Alt| num | | Left |Right | @@ -90,11 +91,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [LR_BASE] = KEYMAP( // layer 0 : default // left hand - BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, - KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, - BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, - KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, - KC_LCTL, M(M_FNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), + BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, + BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, + KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, + KC_LCTL, M(M_FNLR), KC_LGUI, M(M_NMAL), ALT_T(KC_APP), ALT_T(KC_ESC), TG(LR_NUMR), KC_PGUP, @@ -120,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_B, CSA_ECUT, KC_P, KC_O, CSA_EGRV, KC_BSPC, KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, CSA(SFT), CSA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_ENT, - KC_LCTL, M(M_FNLR), KC_LGUI, KC_MPLY, ALT_T(KC_APP), + KC_LCTL, M(M_FNLR), KC_LGUI, M(M_NMAL), ALT_T(KC_APP), ALT_T(KC_ESC), TG(LR_NUMR), KC_PGUP, @@ -304,6 +305,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, + // right hand KC_TRNS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_TRNS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS, @@ -331,22 +333,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-------------. ,-------------. * | | | | | | * ,------|------|------| |------+------+------. - * | | | | | Next | | | - * | Mute | |------| |------| | | - * | | | | | Prev | | | + * | | | Next | | | | | + * | Mute | play |------| |------| | | + * | | | Prev | | | | | * `--------------------' `--------------------' */ // MEDIA AND MOUSE [LR_FN] = KEYMAP( M(M_TGCSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, - RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, - KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, + KC_TRNS, KC_TRNS, S(KC_DELT), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, - KC_MUTE, KC_TRNS, KC_TRNS, + KC_MPRV, + KC_MUTE, KC_MPLY, KC_MNXT, + // right hand KC_INS, KC_EJCT, KC_PWR, KC_SLEP, KC_WAKE, KC_PSCR, KC_SLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, @@ -355,8 +358,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_MPRV, - KC_MNXT, KC_TRNS, KC_TRNS + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS ), }; @@ -492,6 +495,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) layer_invert(LR_NUMR); layer_invert(LR_FN); break; + case M_NMAL: + layer_invert(LR_NUMR); + if (record->event.pressed) { + register_code(KC_LALT); + } else { + unregister_code(KC_LALT); + } + break; } return MACRO_NONE; }; -- cgit v1.2.1 From 4e25342b417b64e0830886407f3842b68198f8d1 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Sun, 13 Mar 2016 19:17:37 +0100 Subject: =?UTF-8?q?Use=20TG()=20to=20switch=20to=20B=C3=89PO=20over=20CSA,?= =?UTF-8?q?=20and=20use=20KC=5FTRNS=20in=20LR=5FCSA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Simplifies future changes to modifier and special keys + removed M_TGCSA macro --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 42 +++++++++++++------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index a37ce7f316..bdb7354409 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -17,7 +17,7 @@ enum layers { LR_FN, // fn layer }; -#define IS_CA_MULT_ENABLED() (default_layer_state & (1 << LR_CSA)) +#define IS_CA_MULT_ENABLED() (layer_state & (1 << LR_CSA)) enum macros { // Characters that do not exist in CSA and must be implemented based on unicode support @@ -27,7 +27,6 @@ enum macros { UC_ELPS, // … END_UC, // indicates the last unicode character macro // other macros - M_TGCSA, // toggle BÉPO over CSA M_CSA_SFT, // toggle shift on CSA M_CSA_AGR_SFT, // toggle shift on LR_CSA_AGR (goes to LR_CSA_AGR_SFT) M_CSA_SFT_AGR, // toggle AltGr on LR_CSA_SFT (goes to LR_CSA_AGR_SFT) @@ -117,26 +116,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [LR_CSA] = KEYMAP( // left hand - KC_DLR, CSA_DQOT, CSA_LGIL, CSA_RGIL, KC_LPRN, KC_RPRN, KC_DELT, - KC_TAB, KC_B, CSA_ECUT, KC_P, KC_O, CSA_EGRV, KC_BSPC, - KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, - CSA(SFT), CSA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_ENT, - KC_LCTL, M(M_FNLR), KC_LGUI, M(M_NMAL), ALT_T(KC_APP), + KC_DLR, CSA_DQOT, CSA_LGIL, CSA_RGIL, KC_LPRN, KC_RPRN, KC_TRNS, + KC_TRNS, KC_B, CSA_ECUT, KC_P, KC_O, CSA_EGRV, KC_TRNS, + KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, + CSA(SFT), CSA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - ALT_T(KC_ESC), TG(LR_NUMR), - KC_PGUP, - KC_SPC, CSA(SFT), KC_PGDN, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_DELT, KC_AT, KC_PLUS, KC_MINS, CSA_SLSH, KC_ASTR, KC_W, - KC_BSPC, CSA_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, - KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, - KC_ENT, CSA_APOS, KC_Q, KC_G, KC_H, KC_F, CSA(SFT), - MO(LR_CSA_AGR), KC_PERC, KC_HOME, CSA_CCED, CTL_T(KC_END), + KC_TRNS, KC_AT, KC_PLUS, KC_MINS, CSA_SLSH, KC_ASTR, KC_W, + KC_TRNS, CSA_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, + KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, + KC_TRNS, CSA_APOS, KC_Q, KC_G, KC_H, KC_F, CSA(SFT), + MO(LR_CSA_AGR), KC_PERC, KC_TRNS, CSA_CCED, KC_TRNS, - KC_LEFT, KC_RGHT, - KC_UP, - KC_DOWN, CSA(SFT), KC_SPC + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, CSA(SFT), KC_TRNS ), /* Shifted BÉPO over Canadian Multilingual * @@ -340,7 +339,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND MOUSE [LR_FN] = KEYMAP( - M(M_TGCSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + TG(LR_CSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, KC_TRNS, KC_TRNS, S(KC_DELT), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD, @@ -411,11 +410,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) send_unicode(unicode_chars[id]); } break; - case M_TGCSA: - if (record->event.pressed) { - default_layer_xor(1 << LR_CSA); - } - break; case M_CSA_SFT: // BÉPO over CSA: toggle shift layer layer_invert(LR_CSA_SFT); -- cgit v1.2.1 From 4289ff793938bbfa2d85c0022bc765bba3eb1347 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Sun, 13 Mar 2016 19:38:58 +0100 Subject: Removed remaining ALT_T and CTL_T keys Having "true" modifiers is more reliable and practical. - moved APP in place of HOME - moved HOME in place of LSFT on left thumb - moved END in place of RSFT on right thumb (Ctrl+End with single hand!) - removed ALT_T from KC_ESC --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 32 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index bdb7354409..cd7d24ee83 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -76,13 +76,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| * | LShift | À | Y | X | . | K | | | | ' | Q | G | H | F | RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | fn | LGui |numAlt|App/Alt| |Alt Gr| % | Home | Ç |End/Ctl| - * `-----------------------------------' `-----------------------------------' + * |LCtrl | fn | LGui |numAlt| LAlt | |Alt Gr| % | App | Ç | RCtrl| + * `----------------------------------' `----------------------------------' * ,--------------. ,-------------. - * |Esc/Alt| num | | Left |Right | + * | Esc | num | | Left |Right | * ,------+-------+------| |------+------+------. * | | | PgUp | | Up | | | - * |Space |LShift |------| |------|RShift|Space | + * |Space | Home |------| |------| End |Space | * | | | PgDn | | Down | | | * `---------------------' `--------------------' */ @@ -90,26 +90,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [LR_BASE] = KEYMAP( // layer 0 : default // left hand - BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, - KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, - BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, - KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, - KC_LCTL, M(M_FNLR), KC_LGUI, M(M_NMAL), ALT_T(KC_APP), + BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, + BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, + KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, + KC_LCTL, M(M_FNLR), KC_LGUI, M(M_NMAL), KC_LALT, - ALT_T(KC_ESC), TG(LR_NUMR), - KC_PGUP, - KC_SPC, KC_LSFT, KC_PGDN, + KC_ESC, TG(LR_NUMR), + KC_PGUP, + KC_SPC, KC_HOME, KC_PGDN, // right hand KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, BP_W, KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, - BP_ALGR, BP_PERC, KC_HOME, BP_CCED, CTL_T(KC_END), + BP_ALGR, BP_PERC, KC_APP, BP_CCED, KC_RCTL, KC_LEFT, KC_RGHT, KC_UP, - KC_DOWN, KC_RSFT, KC_SPC + KC_DOWN, KC_END, KC_SPC ), /** * Same as default but for use with Canadian Multilingual on OS side @@ -131,11 +131,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, CSA_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, KC_TRNS, CSA_APOS, KC_Q, KC_G, KC_H, KC_F, CSA(SFT), - MO(LR_CSA_AGR), KC_PERC, KC_TRNS, CSA_CCED, KC_TRNS, + MO(LR_CSA_AGR), KC_PERC, KC_TRNS, CSA_CCED, KC_LCTL, // RCTL has a special behaviour in CSA so use LCTL KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, CSA(SFT), KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS ), /* Shifted BÉPO over Canadian Multilingual * -- cgit v1.2.1 From 5bc69c5b0a25d12aa8d96c58b01304453d5ccbd6 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Wed, 6 Apr 2016 00:09:03 +0200 Subject: Fixed compilation issues --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index cd7d24ee83..339faf5772 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -502,12 +502,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) }; // Runs just one time when the keyboard initializes. -void * matrix_init_user(void) { - return NULL; +void matrix_init_user(void) { }; // Runs constantly in the background, in a loop. -void * matrix_scan_user(void) { +void matrix_scan_user(void) { ergodox_board_led_off(); ergodox_right_led_1_off(); @@ -525,5 +524,4 @@ void * matrix_scan_user(void) { if (host_keyboard_leds() & (1< Date: Wed, 6 Apr 2016 00:13:18 +0200 Subject: Add delay to CSA macros using dead keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With the BÉPO over CSA on Windows, the dead keys stop working after a while, like in http://superuser.com/questions/776558/suddenly-dead-keys-dont-work I suspect this is triggered by too fast typing from macros. --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 339faf5772..7fac3597f6 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -453,7 +453,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case M_SCLN: return MACRO(D(SCLN), END); case M_GRV: - return MACRO(DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END); + return MACRO(I(75), DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END); case M_NBSP: // use weak mod such that pressing another key will not be affected add_weak_mods(MOD_BIT(CSA_ALTGR)); @@ -477,7 +477,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case M_CRC: if (record->event.pressed) { - return MACRO(TYPE(CSA_DCRC), T(SPACE), END); + return MACRO(I(75), TYPE(CSA_DCRC), T(SPACE), END); } break; case M_DBL0: -- cgit v1.2.1 From db35212422f228cd9ddf68b61f47380fe1842e83 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Wed, 6 Apr 2016 00:13:18 +0200 Subject: Removed D(LSFT) is CSA macros Were causing stuck LSFT weak mods. --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 7fac3597f6..8d77619856 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -466,9 +466,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) unregister_code(KC_1 + (id - M_1)); break; case M_DEGR: - return MACRO(UP(CSA_ALTGR), D(LSFT), U(SCLN), END); + return MACRO(UP(CSA_ALTGR), U(SCLN), END); case M_SCLN: - return MACRO(D(LSFT), U(SCLN), END); + return MACRO(U(SCLN), END); case M_NBSP: del_weak_mods(MOD_BIT(CSA_ALTGR)); return MACRO(U(SPACE), END); -- cgit v1.2.1 From 8d6bbf2757d7dc085b0765feda8d67b48c6c8f8b Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Wed, 6 Apr 2016 00:19:12 +0200 Subject: Fix issue #221: LGUI(KC_LSFT) does not work - on mod keys, register LGUI, LSFT etc. as normal mods instead of weak mods: - they won't be cleared by layer switching - LSFT(KC_LGUI) will now have the same behavior as LGUI(KC_LSFT) --- tmk_core/common/action.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 2ccc0e0b94..9010896343 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -88,14 +88,24 @@ void process_action(keyrecord_t *record) action.key.mods<<4; if (event.pressed) { if (mods) { - add_weak_mods(mods); + if (IS_MOD(action.key.code)) { + // e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless. + // this also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT) + add_mods(mods); + } else { + add_weak_mods(mods); + } send_keyboard_report(); } register_code(action.key.code); } else { unregister_code(action.key.code); if (mods) { - del_weak_mods(mods); + if (IS_MOD(action.key.code)) { + del_mods(mods); + } else { + del_weak_mods(mods); + } send_keyboard_report(); } } -- cgit v1.2.1 From c2a3df31239249b2fb65e2552376daac0e49ae61 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 27 Apr 2016 12:52:47 -0400 Subject: Saving crontab for user on host --- cbbrowne.cbbrowne | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 cbbrowne.cbbrowne diff --git a/cbbrowne.cbbrowne b/cbbrowne.cbbrowne new file mode 100644 index 0000000000..622e4eedf8 --- /dev/null +++ b/cbbrowne.cbbrowne @@ -0,0 +1,25 @@ +* * * * * /home/cbbrowne/bin/cookie > /dev/null 2> /dev/null +2 2-5 * * * /home/cbbrowne/GitConfig/Scripts/cfcleanup > /dev/null 2> /dev/null +#2,22,42 * * * * /usr/bin/offlineimap -u Noninteractive.Quiet > /dev/null 2> /dev/null +# Edit this file to introduce tasks to be run by cron. +# +# Each task to run has to be defined through a single line +# indicating with different fields when the task will be run +# and what command to run for the task +# +# To define the time you can provide concrete values for +# minute (m), hour (h), day of month (dom), month (mon), +# and day of week (dow) or use '*' in these fields (for 'any').# +# Notice that tasks will be started based on the cron's system +# daemon's notion of time and timezones. +# +# Output of the crontab jobs (including errors) is sent through +# email to the user the crontab file belongs to (unless redirected). +# +# For example, you can run a backup of all your user accounts +# at 5 a.m every week with: +# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ +# +# For more information see the manual pages of crontab(5) and cron(8) +# +# m h dom mon dow command -- cgit v1.2.1 From 3fe26d47a62117c985843361d279bc73e3c86c40 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Mon, 13 Jun 2016 16:27:33 -0400 Subject: Restructuring in keeping with recent changes to conventions --- keyboard/planck/keymaps/README.md | 3 +- keyboard/planck/keymaps/cbbrowne/.gitignore | 1 + keyboard/planck/keymaps/cbbrowne/README.md | 28 - keyboard/planck/keymaps/cbbrowne/compiled.hex | 1463 ------------------------ keyboard/planck/keymaps/cbbrowne/config_user.h | 6 + keyboard/planck/keymaps/cbbrowne/keymap.c | 22 +- keyboard/planck/keymaps/cbbrowne/readme.md | 63 + 7 files changed, 81 insertions(+), 1505 deletions(-) create mode 100644 keyboard/planck/keymaps/cbbrowne/.gitignore delete mode 100644 keyboard/planck/keymaps/cbbrowne/README.md delete mode 100644 keyboard/planck/keymaps/cbbrowne/compiled.hex create mode 100644 keyboard/planck/keymaps/cbbrowne/config_user.h create mode 100644 keyboard/planck/keymaps/cbbrowne/readme.md diff --git a/keyboard/planck/keymaps/README.md b/keyboard/planck/keymaps/README.md index 9152353017..c1711aed80 100644 --- a/keyboard/planck/keymaps/README.md +++ b/keyboard/planck/keymaps/README.md @@ -19,4 +19,5 @@ When adding your keymap to this list, keep it organised alphabetically (select l # List of Planck keymaps -* **default** default Planck layout \ No newline at end of file +* **default** default Planck layout +* **cbbrowne** cbbrowne's Planck layout \ No newline at end of file diff --git a/keyboard/planck/keymaps/cbbrowne/.gitignore b/keyboard/planck/keymaps/cbbrowne/.gitignore new file mode 100644 index 0000000000..0cf0c6cc56 --- /dev/null +++ b/keyboard/planck/keymaps/cbbrowne/.gitignore @@ -0,0 +1 @@ +compiled.hex diff --git a/keyboard/planck/keymaps/cbbrowne/README.md b/keyboard/planck/keymaps/cbbrowne/README.md deleted file mode 100644 index e190c8b41e..0000000000 --- a/keyboard/planck/keymaps/cbbrowne/README.md +++ /dev/null @@ -1,28 +0,0 @@ -cbbrowne custom keyboard -============================== - -Due to cbbrowne@acm.org -Christopher Browne - -This was originally based on the default keyboard map, but I have been -doing sundry experimentation: - - * To figure things out about the toolset - * I'm an Emacs guy, so will be needing a fair bit of tuning - * It made sense to mess around some with keyboard maps. - - I tried added Workman alongside Dvorak and Colemak - - Boy, oh boy, these don't help!!! - - I have done 30 years of learning of Emacs key mappings, and - these alternative keyboards massively mess me up - - I added a keypad, originally based on keymaps/numpad.c, but - mighty substantially revised, as that one seems to be rotated 90 - degrees from usual conventions for number pads - * The keypad layer also includes some sample "hacks" of cool things, - all using actions attached in using the function action_get_macro() - - Key [1][2] aka "q" types out my name, cbbrowne, as a fun example - of a key generating a bunch of keystrokes. The keystroke is - sufficiently inconvenient that it isn't terribly practical for me - to use it, but hey, it shows how others might use this facility - in a more useful context. - - Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random - - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random diff --git a/keyboard/planck/keymaps/cbbrowne/compiled.hex b/keyboard/planck/keymaps/cbbrowne/compiled.hex deleted file mode 100644 index f5a208372a..0000000000 --- a/keyboard/planck/keymaps/cbbrowne/compiled.hex +++ /dev/null @@ -1,1463 +0,0 @@ -:100000000C94A2020C94E6020C94E6020C94E60214 -:100010000C94E6020C94E6020C94E6020C94E602C0 -:100020000C94E6020C94E6020C94E7140C94B915B7 -:100030000C941B230C94E6020C94E6020C94E6024A -:100040000C94E6020C9448030C94E6020C94E6022D -:100050000C94E6020C9483230C94E6020C94E602C2 -:100060000C94E6020C94E6020C94E6020C94E60270 -:100070000C94E6020C94E6020C94E6020C94E60260 -:100080000C945C0B0C94E6020C94E6020C94E602D1 -:100090000C94E6020C94E6020C94E6020C94E60240 -:1000A0000C94E6020C94E6020C94E602261648161E -:1000B0003617481636178D16B01636170517181747 -:1000C000021A021A311A311A701A901AE61BE61B2C -:1000D0009B1AE61B4B1B4B1BB21BBB1BE61BE01BFF -:1000E000581B581B581B581B581B581B581B581B78 -:1000F000581B581B581B581B581B581B581B581B68 -:10010000681B761B7D1B841B8E1B07634236B79BC7 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C00002010000000000000000000075010106AF -:1001D00002060105020501050205011502150112BD -:1001E0000212011A021A0111021101080208290063 -:1001F00014001A000800150017001C0018000C005D -:10020000120013002A00E000040016000700090095 -:100210000A000B000D000E000F0033002800E10063 -:100220001D001B000600190005001100100036001B -:100230003700380034002B000030E200E3000152A8 -:100240002C002C0002525000510052004F00350289 -:100250001E021F0220022102220223022402250282 -:10026000260227022A0001003A003B003C003D0024 -:100270003E003F002D022E022F023002310201000B -:100280004000410042004300440045000053035336 -:10029000035300500100010003530100010001005D -:1002A000010001000100AB00AA00A900AE0035006A -:1002B0001E001F0020002100220023002400250032 -:1002C000260027002A0001003A003B003C003D00C8 -:1002D0003E003F002D002E002F00300031000100B5 -:1002E00040004100420043004400450000530353D6 -:1002F0000353005001000100010001000100010052 -:10030000010001000100AB00AA00A900AE00290015 -:1003100001301A000800150017001C005800570093 -:10032000570058002A00E0000230160007000900BC -:100330000A000B0056002400250026002800E100DA -:1003400003301B00060019000500110057002100B2 -:1003500022002300370083500030E200E300000059 -:100360002C002C0000531E001F0020002700280333 -:10037000540068006500200050006C0061006E00B1 -:1003800063006B0020004B006500790062006F0085 -:1003900061007200640000002C034F0072007400C2 -:1003A00068006F006C0069006E00650061007200FB -:1003B00020004B006500790062006F006100720050 -:1003C0006400730000000403090409026D000401C5 -:1003D00000A0FA0904000001030101000921110134 -:1003E0000001223F000705810308000A09040100FB -:1003F0000103010200092111010001224D0007053E -:10040000820308000A090402000103000000092118 -:10041000110100012236000705830308000A0904C0 -:10042000030001030000000921110100012239002D -:10043000070584031000011201100100000008EDFF -:10044000FE606001000102000105010906A101052D -:100450000719E029E71500250195087501810205B6 -:1004600008190129059505750191029501750391FA -:100470000105071900297715002501957875018177 -:1004800002C005010980A101850216010026B700FE -:100490001A01002AB700751095018100C0050C09EA -:1004A00001A1018503160100269C021A01002A9C65 -:1004B00002751095018100C005010902A101090121 -:1004C000A1000509190129051500250195057501EA -:1004D00081029501750381010501093009311581FA -:1004E000257F95027508810609381581257F9501BC -:1004F00075088106050C0A38021581257F9501755E -:10050000088106C0C005010906A101050719E029F7 -:10051000E71500250195087501810295017508818F -:1005200001050819012905950575019102950175C7 -:100530000391010507190029FF150025FF95067590 -:10054000088100C011241FBECFEFDAE0DEBFCDBFAF -:1005500004B603FE24C08091200390912103A09152 -:100560002203B09123038730904BA740B04BB9F4DE -:100570001092200310922103109222031092230361 -:1005800014BE84B7877F84BF88E10FB6F894809348 -:100590006000109260000FBEE0E0F8E3099511E002 -:1005A000A0E0B1E0E0E9FAE502C005900D92A23CBE -:1005B000B107D9F713E0A2ECB1E001C01D92A0325F -:1005C000B107E1F70E942D120C94462D0C94000007 -:1005D0000895089581E0089508950C94E9020C941B -:1005E000EA020C94EC020E94102923E030E0281B60 -:1005F0003109220F2093C6010895282F2F9880914A -:100600008000211108C0877F8093800010928D00A8 -:1006100010928C001BC0886080938000233019F4F6 -:100620008FEF9FEF0FC083E090E0821B9109880F4E -:10063000991F2FEF3FEFA90102C0569547958A9564 -:10064000E2F7CA0190938D0080938C000C94F30222 -:100650000E94F30284E08093C5011092C2010895C4 -:10066000279A2F988FEF9FEF9093870080938600B3 -:100670008AE08093800089E1809381000E9479283C -:100680000C9428030E9430036E9A769A0C94E80228 -:100690001F920F920FB60F9211242F933F938F93B7 -:1006A0009F93EF93FF93E091C301F091C401CF01B9 -:1006B00001969093C4018093C3010090C50102C0CC -:1006C000F695E7950A94E2F7EF738091C2018230C4 -:1006D00019F4E03251F404C0813039F4EF3329F4D5 -:1006E00080916F008D7F80936F00F0E0E457FE4FA4 -:1006F000E49121E031E0E29FC001E39F900D1124DD -:100700000090C60102C0969587950A94E2F79093EF -:100710008D0080938C00FF91EF919F918F913F917D -:100720002F910F900FBE0F901F901895CF9320918F -:10073000840030918500FC01613089F028F062303E -:1007400091F06330B9F133C08281882331F085EEB6 -:100750000E94A6180E94D0282AC085EE26C0828159 -:10076000811146C024C0409100015091010165EB08 -:10077000649FC001659F900D112487589A4D67EAC8 -:1007800070E00E94E22C909301018093000142816D -:10079000442369F082276AE070E00E94E22CCEE1F7 -:1007A000C80F8C2F0E94A6188C2F0E946E1980E013 -:1007B00090E020C0409100015091010165EB649FE1 -:1007C000C001659F900D112487589A4D67EA70E02B -:1007D0000E94E22C90930101809300014281442306 -:1007E00031F382276AE170E00E94E22CC4E0D8CFA6 -:1007F0008CEC91E0CF91089581E008950C94FC0376 -:1008000008950C94420380911702882309F448C08C -:100810008091D3019091D401009779F40E944D23E7 -:100820009093D4018093D3018091D50190E00097FB -:1008300071F48091D60190E00AC00E945923209162 -:100840000201309103012817390740F329C00197AD -:10085000880F991F880F991FFC01E952FE4F608194 -:100860007181828193810E94C20AE091D50184E066 -:10087000E89FF0011124E952FE4F6081718182816D -:1008800093814FE050E00E947A0E8091D50190E074 -:1008900001966091D60170E00E94F62C8093D501FC -:1008A0000C94ED02109219020C948F0A0895089589 -:1008B00081E0809319020C945704089508958F9253 -:1008C0009F92AF92BF92EF92FF920F931F93CF939D -:1008D000DF93CDB7DEB7A3970FB6F894DEBF0FBE98 -:1008E000CDBF7C01FC0100811181C8010E944A2119 -:1008F000B8010E9461068C01B7010E94FE038823A3 -:1009000009F4CCC10032F0E51F0741F4F701828100 -:10091000882309F458C00E94DE0EC0C10132F0E500 -:100920001F0741F4F7018281882309F44CC00E941B -:10093000E70EB4C10232F0E51F0751F4F7018281DE -:10094000882309F440C00E94DA0E8111F0CFE3CF72 -:100950000332F0E51F0739F4F7018281882399F10A -:100960000E9458049BC10432F0E51F0739F4F701D7 -:100970008281882341F10E94520490C10532F0E542 -:100980001F0749F4F70182818823E9F08091190259 -:100990008111F1CFE5CF0632F0E51F0739F4F701F9 -:1009A0008281882381F00E94EE0E0AC00732F0E5B2 -:1009B0001F0749F4F7018281882329F00E94F90E6C -:1009C0000E945E046BC180911902811105C0F7017C -:1009D00082818111CFC018C1003E110579F4F70161 -:1009E0008281882309F44DC00E948F0A81E08093A0 -:1009F0001802109217021092D60150C1023E110542 -:100A000059F4F70182818823E1F10E948F0A109244 -:100A100018021092170242C1033E110591F4F7012A -:100A20008281882371F10E948F0A1092180281E05E -:100A3000809317021092D5011092D4011092D30125 -:100A40002DC10235110559F4F7018281882309F47B -:100A500025C180910201909103010A970DC00135D3 -:100A6000110579F4F7018281882309F417C1809177 -:100A70000201909103010A96909303018093020171 -:100A80000DC14091060183E2E1E2F1E0DE01119641 -:100A900001900D928A95E1F7F701808121E030E025 -:100AA0002C0F3D1F280F311DC901209104013091E9 -:100AB0000501FC01E20FF31F6081772767FD709548 -:100AC000640F711D882777FD8095982F0E94182A42 -:100AD00020E030E040E451E40E947D294B015C01BC -:100AE000F701218184E090E0821B9109BC018827F5 -:100AF00077FD8095982F0E94182A9B01AC01C501B3 -:100B0000B4010E9415299B01AC0160E070E080E017 -:100B100090E40E948B2B20E030E04CED50E40E94EA -:100B2000282B4B015C01F70182818823D1F04FE033 -:100B300050E0C501B4010E947A0E8091180288230A -:100B4000A1F08091D60124E0829FF0011124E952A6 -:100B5000FE4F80829182A282B3828F5F8093D60102 -:100B600004C0C501B4010E94C20A0F3F110508F07C -:100B70002ECF94C08091D20181111FC0043130E585 -:100B8000130709F051C00E94000481E08093D20154 -:100B90000E944D239093D1018093D0011092C901FE -:100BA0001092CB011092CA011092CD011092CC018B -:100BB0001092CF011092CE0171C08091D00190911E -:100BC000D1010E945923883C910570F48091C9019C -:100BD000E82FF0E0EE0FFF1FE653FE4F1183008376 -:100BE0008F5F8093C9015AC0043880E5180721F04F -:100BF0000538104501F13AC0F7018281882341F0A0 -:100C00001092C70182E01EC0043830E5130759F581 -:100C10008091C701811106C086E20E94A61886E273 -:100C20000E946E1982E01CC00438F0E51F0741F3F2 -:100C300005381045D9F4F7018281882331F01092EC -:100C4000C80180E20E94BD1929C08091C8018111AC -:100C500006C087E20E94A61887E20E946E1980E211 -:100C60000E94C4191BC00538104529F381E0809308 -:100C7000C7018093C801C701A3960FB6F894DEBFE1 -:100C80000FBECDBFDF91CF911F910F91FF90EF90DD -:100C9000BF90AF909F908F900C94EF0280E0A3964E -:100CA0000FB6F894DEBF0FBECDBFDF91CF911F917D -:100CB0000F91FF90EF90BF90AF909F908F9008950D -:100CC00008959CE0799FF001112490E3899FE00D45 -:100CD000F11D1124E60FF11DEE0FFF1FE251FE4F33 -:100CE000859194910895880F991FFC01E259FF4F57 -:100CF000859194910895880F991FFC01E251FE4F50 -:100D00008591949108950F931F93CF93DF93EC01F6 -:100D1000811521E39207A0F5C11580E3D80708F0FB -:100D2000D7C0C83ED105D8F4C03ED10508F007C2EF -:100D3000C83AD10578F4C53AD10508F06AC0C13087 -:100D4000D10509F463C008F4F7C1C430D10508F037 -:100D5000F6C1F2C1CB3BD10508F466C0EDC1C115A7 -:100D600090E2D90708F0AFC0C11521E0D20708F022 -:100D7000E6C1C03FD10508F4DFC18E0110651FC276 -:100D8000C03880E5D80700F5C03790E5D90708F0EE -:100D9000A3C0C11520E5D20709F4ACC050F4CE01C0 -:100DA000905480319F4008F0C7C1DF708E01106AF7 -:100DB00006C2C13080E5D80709F4AEC0C43190E561 -:100DC000D90708F4AFC0B8C1C33820E5D20709F489 -:100DD0008EC050F4C13890E5D90709F482C008F0FC -:100DE00083C000E011EDEBC1C03181E5D80708F404 -:100DF000A3C1C11597E5D90708F436C1CE019057B4 -:100E00008115904108F098C1DF7093C101E010E0B6 -:100E1000D6C1C53AD10509F494C1C63AD10509F045 -:100E200093C102E810E4CBC1C83AD10509F48FC1DF -:100E3000C93AD10509F48EC1CA3AD10509F48DC168 -:100E4000CB3AD10509F48CC1CC3AD10509F48BC158 -:100E5000CD3AD10509F48AC1C03BD10509F489C155 -:100E6000CE3AD10509F488C1CF3AD10509F487C13A -:100E7000C13BD10509F486C1C23BD10509F485C146 -:100E8000C33BD10509F484C1C43BD10509F483C136 -:100E9000C53BD10509F482C1C63BD10509F481C126 -:100EA000C73BD10509F480C1C83BD10509F47FC116 -:100EB000C93BD10509F47EC1CA3BD10509F47DC106 -:100EC00000E014E47CC1CE019F700E947B0678C1D3 -:100ED000DD278E01106C73C1CF70DD278E01146D7C -:100EE0006EC100E010ED6BC100E012ED68C100E0E2 -:100EF00013ED65C10E94511C0E948F0A0E94560486 -:100F00008FEF94E32CE0815090402040E1F700C047 -:100F100000000E94A82353C18091F4028160809355 -:100F2000F4024DC10E940924811102C00E94E523F0 -:100F30000E941C2490E090931F0380931E03C230F4 -:100F400080E5D80721F480911E03816086C0C430FB -:100F500090E5D90721F480911E0382607EC0C630DF -:100F600020E5D20721F480911E03846076C0C8304A -:100F700080E5D80719F480911E0327C0CA3090E598 -:100F8000D90721F480911E03806167C0CC3020E531 -:100F9000D20721F480911E0380625FC0CE3080E5CD -:100FA000D80721F480911E03806457C0C03190E5BA -:100FB000D90721F480911E0380684FC0C23120E51B -:100FC000D20729F480911E038460886046C0C33034 -:100FD00080E5D80721F480911E038E7F3EC0C53086 -:100FE00090E5D90721F480911E038D7F36C0C7306C -:100FF00020E5D20721F480911E038B7F2EC0C930DB -:1010000080E5D80719F480911E0326C0CB3090E507 -:10101000D90721F480911E038F7E1FC0CD3020E5BB -:10102000D20721F480911E038F7D17C0CF3080E559 -:10103000D80721F480911E038F7B0FC0C13190E54A -:10104000D90721F480911E038F7707C0C331D045A3 -:1010500031F480911E038B7F877F80931E038091E4 -:101060001E030E942024ABC08D2F99278F709927D3 -:1010700081309105D9F49E012370332702C0880F77 -:10108000991F2A95E2F79C688E0144E0000F111F1A -:101090004A95E1F700271370802B912B53E0CC0F7A -:1010A000DD1F5A95E1F7C076DD272FC0823091050C -:1010B00031F4DC2FCC278E01016F106A80C08330A1 -:1010C000910569F4CE018370992701E010E002C018 -:1010D000000F111F8A95E2F7C8019C680FC0843089 -:1010E0009105B9F4CE018370992701E010E002C0A8 -:1010F000000F111F8A95E2F7C8019A6823E0CC0F10 -:10110000DD1F2A95E1F7C07ED7708C010C2B1D2BBB -:1011100056C08530910531F4DC2FCC278E01046F49 -:10112000106A4DC0069709F04AC0CF71DD27DC2F49 -:10113000CC278E01106243C000E010E040C08E0159 -:101140003EC001E810E43BC003E810E438C002EE02 -:1011500014E435C009EE14E432C00AEE14E42FC0E2 -:1011600005EB14E42CC006EB14E429C007EB14E4EF -:1011700026C00CEC14E423C00DEC14E420C003E8FA -:1011800015E41DC00AE815E41AC002E915E417C009 -:1011900004E915E414C001E216E411C003E216E408 -:1011A0000EC004E216E40BC005E216E408C006E235 -:1011B00016E405C007E216E402C00AE216E4C8011C -:1011C000DF91CF911F910F9108959CE0799FF001DD -:1011D000112490E3899FE00DF11D1124E60FF11D0C -:1011E000EE0FFF1FE251FE4F85919491803E9105D5 -:1011F000E0F4803C910558F58133910509F46FC006 -:1012000048F48932910509F463C08A32910509F4E2 -:101210006DC072C089339105E9F082389105D1F033 -:101220008533910509F44DC067C0833E910581F176 -:1012300038F4803E9105B9F0823E9105D9F05CC04A -:10124000863E910561F1873E9105A1F155C00E944E -:101250007306089520911E0320FD02C021FF4CC09B -:1012600080EE90E049C080911E0380FFF9CF89E3B2 -:1012700090E042C080911E0382FF0EC080911E0349 -:1012800084FF03C080E090E037C083EE90E034C07C -:1012900080911E0382FFF2CF82EE90E02DC08091FC -:1012A0001E0383FF0BC080911E0384FDEBCF87EEEE -:1012B00090E022C080911E0383FFF5CF86EE90E080 -:1012C0001BC080911E0385FF07C089E290E014C017 -:1012D00080911E0385FFF9CF85E390E00DC08091DA -:1012E0001E0386FF07C08AE290E006C080911E03BD -:1012F00086FFF9CF81E390E00E94830608950C9465 -:10130000F102E82FF0E0E05BFE4F8081E82FEF7004 -:10131000F0E082958F7021E030E0A90102C0440F17 -:10132000551F8A95E2F740A308950F931F93CF931B -:10133000DF9385B7806885BF85B7806885BFC3E0C8 -:10134000D0E001E010E0FE01E05BFE4F8081E82F7D -:10135000EF70F0E021A182958F70A80102C0440FC8 -:10136000551F8A95E2F7CA01822B81A38C2F0E9418 -:101370008109219740F78BE090E061E070E0FC018B -:10138000EC5BFE4F2081E22FEF70F0E042A122954E -:101390002F70DB0102C0AA0FBB1F2A95E2F79D0147 -:1013A000242B22A3019758F7DF91CF911F910F9122 -:1013B0000C940104EF92FF920F931F93CF93DF934E -:1013C00002E212E0C3E0EE24E394F12CD5E08C2F8E -:1013D0000E9481098BE090E040E050E0FC01EC5B72 -:1013E000FE4F6081E62FEF70F0E020A130E06295C3 -:1013F0006F7002C0359527956A95E2F720FD09C008 -:101400009701082E02C0220F331F0A94E2F7422BE5 -:10141000532B019718F7F801929182918F0184174D -:10142000950721F051834083D09307018C2F0E94B0 -:101430008109C15060F68091070187FD2CC0815061 -:10144000809307018F3F39F08FE99FE00197F1F713 -:1014500000C0000020C08091200290912102909352 -:1014600029028093280280911E0290911F0290937E -:1014700027028093260280911C0290911D02909376 -:1014800025028093240280911A0290911B0290936E -:101490002302809322020E94030481E0DF91CF9116 -:1014A0001F910F91FF90EF900895E82FF0E0EE0F5D -:1014B000FF1FEE5DFD4F80819181089508950F9388 -:1014C0001F93CF930AE212E0C0E0F801929182915B -:1014D0008F010E94C522C80FF2E002321F07A9F750 -:1014E0008C2FCF911F910F9108950E940924811193 -:1014F00002C00E94E5230E942E24809309033E9A95 -:10150000809171008D7F8093710082E080939000C4 -:101510008AE18093910081E080932C02089580916C -:101520002C02811102C00E94750A10927C02109256 -:101530007B02809171008D7F80937100809190007B -:101540008F738093900010923E0210923D02109291 -:101550007502109276021092770210927802109221 -:10156000740210927302E3E5F2E0A3E4B2E0119298 -:101570001192119211921D921D9282E0E337F807A9 -:10158000B1F70895CF92DF92EF92FF920F931F93DE -:10159000CF93DF9320913D02222309F484C06B0195 -:1015A0007C0180912C02811102C00E94750A03E720 -:1015B00012E0C7E0D0E0A7019601F8019291829174 -:1015C000729162918F010E947929811131C0FE01CF -:1015D000EE0FFF1FEE0FFF1FED5AFD4F108211821D -:1015E00012821382DE01AA0FBB1FAD5BBD4F1196A5 -:1015F0001C921E92C730D105E9F021964481558195 -:10160000668177814083518362837383148215825C -:101610001682178212968D919C91139711969C9326 -:101620008E9313961C921E92129734961296E2CFC6 -:10163000219708F680917B0290917C02019797FD9B -:1016400005C090937C0280937B0204C010927C02C0 -:1016500010927B0280917B0290917C022091790212 -:1016600030917A022817390724F010927A021092EA -:101670007902892BC1F4809171008D7F8093710074 -:10168000809190008F738093900010927502109259 -:1016900076021092770210927802109274021092E1 -:1016A000730210923D02DF91CF911F910F91FF9035 -:1016B000EF90DF90CF9008951F920F920FB60F9288 -:1016C00011244F925F926F927F928F929F92AF926E -:1016D000BF92CF92DF92EF92FF922F933F934F935F -:1016E0005F936F937F938F939F93AF93BF93CF93AA -:1016F000DF93EF93FF9380913D02882309F49BC110 -:10170000C0917B02D0917C021C161D060CF093C187 -:1017100040902D0250902E0260902F027090300267 -:1017200020E030E0A901C301B2010E94242B181669 -:101730000CF065C0C130D10509F452C08091790226 -:1017400090917A02BE010E94F62C7C0190937A025D -:101750008093790280903F0290904002A0904102D5 -:10176000B090420220E030E040E85FE3C501B40100 -:101770000E94152960933F027093400280934102BA -:1017800090934202F701EE0FFF1FEE0FFF1FED5A7D -:10179000FD4FA301920160817181828193810E943A -:1017A0007D2920E030E040E05EE30E94282B9B0191 -:1017B000AC01C501B4010E94242B18168CF4C7019A -:1017C0000196BE010E94F62C90937A0280937902D2 -:1017D00010923F0210924002109241021092420277 -:1017E000E0917902F0917A02EE0FFF1FEE0FFF1FDA -:1017F000ED5AFD4F6081718182819381D0C0C0908C -:101800007502D0907602E0907702F090780220E0A6 -:1018100030E0A901C701B6010E94792921978823E8 -:1018200009F4A2C0FE01EE0FFF1FEE0FFF1FED5ADD -:10183000FD4F80809180A280B380A5019401C701F3 -:10184000B6010E94792987FF31C0A501940160E0AB -:1018500070E08CED93EC0E947D2920E030E040E4C4 -:1018600051E40E947D2920E030E040E05FE30E94E7 -:10187000282B9B01AC0160E070E080E090E40E94C6 -:101880008B2B9B01AC01C501B4010E94282B9B014D -:10189000AC01C701B6010E94792987FF07C0A701E3 -:1018A000960160E070E08CED93E439C0A5019401ED -:1018B000C701B6010E94242B18160CF055C0A501D3 -:1018C000940160E070E08CED93E40E947D2920E0BB -:1018D00030E040E451E40E947D2920E030E040E027 -:1018E0005FE30E94282B9B01AC0160E070E080E088 -:1018F00090E40E948B2B9B01AC01C501B4010E94B6 -:10190000282B9B01AC01C701B6010E94242B18169D -:101910005CF5A701960160E070E08CED93EC0E940D -:101920007D2920E030E040E451E40E947D2920E060 -:1019300030E040E05FE30E94282B9B01AC0160E0B7 -:1019400070E080E090E40E948B2B9B01AC01C7010A -:10195000B6010E94282B60937502709376028093E3 -:1019600077029093780213C0FE01EE0FFF1FEE0F77 -:10197000FF1FED5AFD4F80819181A281B381809339 -:10198000750290937602A0937702B09378026091EB -:101990007502709176028091770290917802209181 -:1019A0002A0230912B022F3F4FEF340731F02F5F87 -:1019B0003F4F30932B0220932A020E94040F6B01A9 -:1019C0007C0120E034E244EF51E40E94792987FF52 -:1019D00008C086EFC82E88E2D82E84EFE82E81E476 -:1019E000F82E20E030E040E051E4C701B6010E944B -:1019F000282B9B01AC0160E074E284E79BE40E9429 -:101A00007D296B017C010E94EA2970939700609305 -:101A10009600209108013091090140910A015091EE -:101A20000B01C701B6010E94282B0E94EA2970937E -:101A300099006093980080913E02882309F433C195 -:101A4000C0903902D0903A02E0903B02F0903C0204 -:101A500020E030E0A901C701B6010E94242B18162E -:101A6000D4F580912A0290912B028F3F2FEF92079D -:101A700029F0019690932B0280932A02C701B601A8 -:101A80000E94040F20E030E040E051E40E94282B47 -:101A90009B01AC0160E074E284E79BE40E947D2935 -:101AA0006B017C010E94EA29709397006093960075 -:101AB000209108013091090140910A0150910B01D8 -:101AC000C701B6010E94282B0E94EA297093990051 -:101AD0006093980008C010929700109296001092A0 -:101AE00099001092980060913302709134026F5FF8 -:101AF0007F4F7093340260933302209196003091AF -:101B0000970080E090E0232BF1F0C0919600D091F7 -:101B100097000E94162A6B017C01BE0180E090E0D4 -:101B20000E94162A9B01AC01609135027091360229 -:101B300080913702909138020E947D2920E03FEF8A -:101B40004FE757E410C00E94162A6B017C0120E089 -:101B500030EE4FEF54E4609135027091360280917F -:101B60003702909138020E94282B9B01AC01C701DB -:101B7000B6010E94242B87FD96C0809131028F5FB1 -:101B80008093310290E02091050330910603821783 -:101B90009307A0F080911003882319F0109231026E -:101BA0000DC0809171008D7F8093710080919000B5 -:101BB0008F738093900010923E027DC0809132021C -:101BC000C0913102811128C0C0900A03D0900B034C -:101BD000E0900C03F0900D0320E030E0A901C70174 -:101BE000B6010E94242B1816BCF481E080933202C7 -:101BF0001092390210923A0210923B0210923C026B -:101C0000C0923502D0923602E0923702F09238024A -:101C1000C150C093310243C01092320210922B0285 -:101C200010922A02E0910703F091080348E0C49F54 -:101C3000E00DF11D112480819181A281B3818093F7 -:101C4000390290933A02A0933B02B0933C0220E009 -:101C500030E040E85EE364817581868197810E946F -:101C6000282B6B017C0180910C01682F70E080E0D3 -:101C700090E00E94162A20E030E048EC52E40E94F6 -:101C80007D299B01AC01C701B6010E94282B6093FE -:101C90003502709336028093370290933802109287 -:101CA0003402109233028091090380FD04C0109227 -:101CB0003E0210923D02FF91EF91DF91CF91BF91D3 -:101CC000AF919F918F917F916F915F914F913F91D4 -:101CD0002F91FF90EF90DF90CF90BF90AF909F90AB -:101CE0008F907F906F905F904F900F900FBE0F90EE -:101CF0001F901895CF92DF92EF92FF92CF93DF93D0 -:101D00006B017C01EA0180912C02811102C00E94CA -:101D1000750A8091090380FF46C080917B029091F3 -:101D20007C0208970CF03FC0809171008D7F8093FA -:101D3000710080913E0281110E948F0A81E08093A0 -:101D40003D0210922B0210922A0220E030E0A901FD -:101D5000C701B6010E94242B1816DCF480917B0287 -:101D600090917C02FC01EE0FFF1FEE0FFF1FED5A5A -:101D7000FD4FC082D182E282F382FC01EE0FFF1F91 -:101D8000ED5BFD4FD183C083019690937C028093DD -:101D90007B0280917100826080937100809190003D -:101DA000806880939000DF91CF91FF90EF90DF905B -:101DB000CF9008958091090381700895809109035F -:101DC0008160809309030E9432240C945D04809109 -:101DD00009038E7F809309030C94322480917D0245 -:101DE00090E0019666E070E00E94F62C80937D0200 -:101DF000089580917D0290E0019766E070E00E9476 -:101E0000F62C80937D0208958F929F92AF92BF929D -:101E1000CF92DF92EF92FF920F931F93CF93DF93B6 -:101E20006B017C01C0912A02D0912B02BE0180E09F -:101E300090E00E94162A4B015C01A701960160E028 -:101E400070E08CE594E40E947D299B01AC01C50102 -:101E5000B4010E94282B0E94EA2920917D022330A0 -:101E600009F473C028F4222351F02130E9F02CC189 -:101E7000243009F4A0C0253009F4E0C025C180E079 -:101E800090E0A0E0BFE38093080190930901A09344 -:101E90000A01B0930B0110922D0210922E021092A3 -:101EA0002F021092300210C110922D0210922E02B9 -:101EB00010922F02109230026431710540F46A30A2 -:101EC000710560F520E030E040E85EE32BC0693C3E -:101ED000710508F0AAC080E090E00E94162A20E078 -:101EE00030E040EA51E40E94142920E030E044E36D -:101EF00053E40E947D299B01AC010E94282B20E025 -:101F000030E040E05EE30E94282B9B01AC0160E0E2 -:101F100070E080E09EE30E94142944C020E030E09D -:101F200040E05FE3C701B6010E94282B6B017C01F2 -:101F300080E090E0A0E0BEE3809308019093090167 -:101F4000A0930A01B0930B01BFC010922D02109212 -:101F50002E0210922F02109230024AE0469F90010A -:101F6000479F300D1124C90168EB7BE00E94E22CF1 -:101F7000BC016C5D754077FF03C071956195710977 -:101F8000882777FD8095982F0E94182A2EE333EC3E -:101F90004EE259E30E94282B20E030E040EC5EE363 -:101FA0000E941529609308017093090180930A012A -:101FB00090930B0189C010922D0210922E02109264 -:101FC0002F0210923002CE0183709927892BE1F005 -:101FD000BE016170772780E090E00E94162A20E021 -:101FE00030E040E05EE30E94282B20E030E040E457 -:101FF0005FE30E94152960930801709309018093A3 -:102000000A0190930B010CC080E090E0A0E0BFE3D8 -:102010008093080190930901A0930A01B0930B01EA -:10202000C770DD27CD2B09F04FC010920801109228 -:10203000090110920A0110920B0146C010922D0264 -:1020400010922E0210922F021092300200E010E047 -:1020500020E03FE3009308011093090120930A0157 -:1020600030930B016739710578F180E090E00E94B0 -:10207000162A20E030E047E153E40E94142920E0D2 -:1020800030E04AE754E40E947D2920E030E048E453 -:1020900052E40E94282B20E030E040EA51E40E9404 -:1020A0005A2A0E94E529660F771F660F771FFB01EA -:1020B000EC5AFE4F2081318142815381C701B60124 -:1020C0000E94282B6B017C01C701B601DF91CF91E3 -:1020D0001F910F91FF90EF90DF90CF90BF90AF9046 -:1020E0009F908F90089580918E020895CF93DF93F3 -:1020F00000D01F92CDB7DEB79C01809115038430CC -:1021000019F593E099833B832A839093E9008FEF3D -:102110009091E800815095FD06C095ED9A95F1F7F4 -:1021200000008111F5CF8091E80085FF0DC040E0EF -:1021300050E063E070E0CE0101960E94D7128091DA -:10214000E8008E778093E8000F900F900F90DF915A -:10215000CF910895CF93DF9300D01F92CDB7DEB714 -:1021600020911503243021F522E029839B838A8363 -:1021700083E08093E9008FEF9091E800815095FD16 -:1021800006C095ED9A95F1F700008111F5CF809189 -:10219000E80085FF0DC040E050E063E070E0CE0154 -:1021A00001960E94D7128091E8008E778093E80014 -:1021B0000F900F900F90DF91CF910895209115030C -:1021C0002430F1F422E02093E9002FEF3091E80071 -:1021D000215035FD06C035ED3A95F1F7000021118B -:1021E000F5CF2091E80025FF0BC040E050E065E00E -:1021F00070E00E94D7128091E8008E778093E8000B -:102200000895CF93DF93EC0190911503943009F07A -:1022100046C0809117018823D9F080911801882346 -:10222000B9F09093E9008FEF9091E800815095FD0F -:1022300006C095E19A95F1F700008111F5CF8091E4 -:10224000E80085FF2CC040E050E060E170E017C07E -:1022500081E08093E9008FEF9091E800815095FD37 -:1022600006C095ED9A95F1F700008111F5CF8091A8 -:10227000E80085FF14C040E050E068E070E0CE0167 -:102280000E94D7128091E8008E778093E80080E169 -:10229000FE01AEE7B2E001900D928A95E1F7DF9181 -:1022A000CF91089580911403811109C00E946C148C -:1022B0000E94C9148091E20084608093E200089536 -:1022C000109214030895089508950C94102342E089 -:1022D00061EC81E00E94E61342E061EC82E00E9442 -:1022E000E61342E061EC83E00E94E61342E161EC18 -:1022F00084E00C94E61380911703833009F455C0F1 -:1023000030F4813071F0823009F48EC008958A3043 -:1023100009F47AC08B3009F460C0893009F09CC0A0 -:1023200020C080911603813A09F096C08091E800A0 -:10233000877F8093E80080911A0390911B03892B7B -:1023400021F460E18EE792E003C060E080E090E07D -:1023500070E00E9422138091E8008B778093E80060 -:10236000089580911603813209F076C080911A0396 -:1023700090911B03009719F0039709F06DC08091AD -:10238000E800877F8093E8008091E80082FD05C027 -:10239000809115038111F8CF5FC08091F100809387 -:1023A0008E028091E8008B7753C080911603813AAA -:1023B00009F052C080911A0390911B03892B09F0F8 -:1023C0004BC08091E800877F8093E8008091E8000F -:1023D00080FFFCCF8091170136C0809116038132B7 -:1023E000D9F580911A0390911B03892BA9F580914F -:1023F000E800877F8093E8000E941B1480911803F7 -:10240000809317010C94511C80911603813221F5A1 -:102410008091E800877F8093E8000E941B148091E0 -:10242000190380938F02089580911603813AA1F4D5 -:102430008091E800877F8093E8008091E80080FF2A -:10244000FCCF80918F028093F1008091E8008E771D -:102450008093E8000C941B14089584B7877F84BF91 -:1024600088E10FB6F89480936000109260000FBE70 -:1024700090E080E80FB6F89480936100909361003B -:102480000FBE0E94BE170E946C140E94C914809156 -:10249000E20084608093E20078940E944F170E94CB -:1024A000C0178DE091E00E946A1780911503853076 -:1024B00069F40E94D122809113038823B1F30E9412 -:1024C000FF22882391F30E94C112EFCF0E94C81708 -:1024D000ECCF292F332723303105C9F064F42130A4 -:1024E000310581F02230310509F043C08DE690E0DE -:1024F0002AEC33E042C021323105F1F022323105BD -:1025000041F137C082E190E027E334E036C09927FB -:102510008130910541F08230910541F0892B49F5D8 -:10252000E6ECF3E005C0E8E9F3E002C0EEE6F3E034 -:10253000849190E09F0121C06430D8F4E62FF0E050 -:10254000EE0FFF1FE055FE4F2081318189E090E0C2 -:1025500014C0643070F470E0FB01EE0FFF1FE8550B -:10256000FE4F20813181FB01EC55FE4F808190E0D0 -:1025700004C080E090E020E030E0FA013183208365 -:10258000089580E189BD82E189BD09B400FEFDCFD7 -:102590008091D8008F7D8093D8008091E000826088 -:1025A0008093E0008091E00081FDFCCF0895CF9200 -:1025B000DF92EF92FF920F931F93CF93DF93EC0183 -:1025C0008B016A010E943A14811133C0C114D104F5 -:1025D00039F0F60180819181081B190BC80FD91FB2 -:1025E000E12CF12C0115110519F18091E80085FD10 -:1025F00016C08091E8008E778093E800C114D10462 -:1026000049F0F60180819181E80EF91EF182E082A5 -:1026100085E00FC00E943A14882321F30AC08991F3 -:102620008093F10001501109FFEFEF1AFF0ADACF92 -:1026300080E0DF91CF911F910F91FF90EF90DF909D -:10264000CF90089520911C0330911D032617370762 -:1026500048F06115710539F42091E8002E77209338 -:10266000E80001C0B90140E061157105A9F12091B0 -:102670001503222309F443C0253009F442C02091F8 -:10268000E80023FD40C02091E80022FD32C02091E7 -:10269000E80020FFE9CF4091F3002091F20030E004 -:1026A000342BFC01CF016115710559F0283031053B -:1026B00040F481918093F100615071092F5F3F4F89 -:1026C000F1CF41E02830310509F040E02091E800E9 -:1026D0002E772093E800C8CF4111C9CF0AC080915E -:1026E0001503882361F0853061F08091E80083FD57 -:1026F0000AC08091E80082FFF2CF80E0089582E076 -:10270000089583E0089581E0089520911C0330919D -:102710001D032617370748F06115710539F420911C -:10272000E8002E772093E80001C0B901FC0120E009 -:102730006115710591F180911503882309F440C05A -:10274000853009F43FC08091E80083FD3DC0809151 -:10275000E80082FD2FC08091E80080FFE9CF209142 -:10276000F3008091F20090E0922B6115710559F011 -:102770008830910540F424912093F1003196615006 -:1027800071090196F2CF21E0089709F020E08091CD -:10279000E8008E778093E800CBCF2111CCCF0AC020 -:1027A00080911503882361F0853061F08091E80005 -:1027B00083FD0AC08091E80082FFF2CF80E0089597 -:1027C00082E0089583E0089581E00895982F97307E -:1027D00058F59093E900981739F07091EC0020912A -:1027E000ED005091F00003C0242F762F50E021FF20 -:1027F00019C03091EB003E7F3093EB003091ED003B -:102800003D7F3093ED003091EB0031603093EB0071 -:102810007093EC002093ED005093F0002091EE00B7 -:1028200027FF07C09F5FD3CF8F708093E90081E0BF -:10283000089580E008958091160387FF11C080916C -:10284000E80082FD05C0809115038111F8CF11C009 -:102850008091E8008B770BC080911503882349F0A5 -:102860008091E80080FFF8CF8091E8008E77809318 -:10287000E80008952091E4003091E50095E640914C -:10288000EC00842F817040FF22C08091E80080FD21 -:102890001CC080911503882391F0853091F08091C0 -:1028A000EB0085FD10C04091E4005091E500421717 -:1028B000530729F39A01915011F784E0089582E0BB -:1028C000089583E0089581E0089580E0089540919F -:1028D000E80042FFDECF08950E94DA140E94E2145D -:1028E000E0EEF0E0808181608083E8EDF0E08081BF -:1028F0008F77808319BCA7EDB0E08C918E7F8C938D -:1029000080818F7E80831092140308950F931F930C -:10291000CF93DF930E94DA140E94E214C8EDD0E056 -:1029200088818F77888388818068888388818F7D7C -:10293000888319BC1092150310921103109213038F -:102940001092120300EE10E0F80180818B7F8083EB -:1029500088818160888342E060E080E00E94E61325 -:10296000E1EEF0E080818E7F8083E2EEF0E0808116 -:1029700081608083808188608083F80180818E7F80 -:102980008083888180618883DF91CF911F910F912F -:102990000895E8EDF0E080818F7E8083E7EDF0E040 -:1029A00080818160808384E082BF81E08093140312 -:1029B0000C948614E8EDF0E080818E7F8083109285 -:1029C000E20008951092DA001092E10008951F923B -:1029D0000F920FB60F9211242F933F934F935F9353 -:1029E0006F937F938F939F93AF93BF93EF93FF93D7 -:1029F0008091E10082FF0BC08091E20082FF07C05E -:102A00008091E1008B7F8093E1000E944E178091BE -:102A1000DA0080FF1FC08091D80080FF1BC080912A -:102A2000DA008E7F8093DA008091D90080FF0DC09C -:102A300080E189BD82E189BD09B400FEFDCF81E05E -:102A4000809315030E94521105C019BC1092150302 -:102A50000E9460118091E10080FF19C08091E20026 -:102A600080FF15C08091E2008E7F8093E20080910C -:102A7000E20080618093E2008091D80080628093C0 -:102A8000D80019BC85E0809315030E9464118091E1 -:102A9000E10084FF30C08091E20084FF2CC080E11F -:102AA00089BD82E189BD09B400FEFDCF8091D800C7 -:102AB0008F7D8093D8008091E1008F7E8093E1002C -:102AC0008091E2008F7E8093E2008091E20081603D -:102AD0008093E20080911103882311F084E007C005 -:102AE0008091E30087FD02C081E001C083E0809314 -:102AF00015030E9465118091E10083FF29C0809138 -:102B0000E20083FF25C08091E100877F8093E10090 -:102B100082E080931503109211038091E1008E7F73 -:102B20008093E1008091E2008E7F8093E2008091AB -:102B3000E20080618093E20042E060E080E00E9479 -:102B4000E6138091F00088608093F0000E9463118A -:102B5000FF91EF91BF91AF919F918F917F916F9175 -:102B60005F914F913F912F910F900FBE0F901F904B -:102B700018951F920F920FB60F9211242F933F9327 -:102B80004F935F936F937F938F939F93AF93BF9375 -:102B9000CF93DF93EF93FF93C091E900CF708091C3 -:102BA000EC00D82FD17080FDD0E81092E900809120 -:102BB000F000877F8093F00078940E94FD151092BA -:102BC000E9008091F00088608093F000CD2BCF70F9 -:102BD000C093E900FF91EF91DF91CF91BF91AF9149 -:102BE0009F918F917F916F915F914F913F912F9125 -:102BF0000F900FBE0F901F9018951F93CF93DF93E8 -:102C0000CDB7DEB7AA970FB6F894DEBF0FBECDBF23 -:102C1000E6E1F3E088E08E0F9091F10091938E133E -:102C2000FBCF0E947B118091E80083FF1FC1809140 -:102C3000160390911703492F50E04A30510508F0D0 -:102C400015C1FA01EA5AFF4F0C940A2D803881F021 -:102C5000823809F00BC180911A038F708093E900CC -:102C60008091EB0085FB882780F91092E90006C06F -:102C70008091120390911303911182609091E8006A -:102C8000977F9093E8008093F1001092F100C8C004 -:102C9000282F2D7F09F0EAC0882319F0823061F0D7 -:102CA000E5C080911803813009F0E0C0933009F04D -:102CB00080E0809313032BC080911803811127C0FB -:102CC00080911A038F7009F4D1C08093E90020919C -:102CD000EB0020FF1CC0933021F48091EB00806258 -:102CE00014C09091EB0090619093EB0021E030E0F4 -:102CF000A90102C0440F551F8A95E2F74093EA00EC -:102D00001092EA008091EB0088608093EB001092B3 -:102D1000E9008091E800877F86C08111A7C01091EB -:102D200018031F778091E3008078812B8093E30064 -:102D30008091E800877F8093E8000E941B148091B7 -:102D4000E80080FFFCCF8091E30080688093E3007F -:102D5000111102C082E001C083E08093150386C098 -:102D60008058823008F082C0809118039091190336 -:102D70008C3D53E0950779F583E08A838AE2898365 -:102D80004FB7F894DE01139620E03EE051E2E32FC6 -:102D9000F0E050935700E49120FF03C0E295EF70FC -:102DA0003F5FEF708E2F90E0EA3010F0C79601C0C1 -:102DB000C0968D939D932F5F243149F74FBF80912B -:102DC000E800877F8093E8006AE270E0CE01019618 -:102DD0000E94221314C0AE014F5F5F4F60911A032F -:102DE0000E946912BC01009709F440C09091E8006C -:102DF000977F9093E80089819A810E948513809142 -:102E0000E8008B778093E80031C0803879F58091B5 -:102E1000E800877F8093E800809111038093F100A0 -:102E20008091E8008E778093E8000E941B141EC0FA -:102E300081111CC0909118039230C0F48091E80079 -:102E4000877F8093E800909311030E941B14809168 -:102E50001103811106C08091E30087FD02C081E06B -:102E600001C084E0809315030E9467118091E800FF -:102E700083FF0AC08091E800877F8093E8008091FB -:102E8000EB0080628093EB00AA960FB6F894DEBF49 -:102E90000FBECDBFDF91CF911F9108950895CF93BD -:102EA000809115038823A1F0C091E900CF70909123 -:102EB000EC00892F817090FD80E8C82B1092E9000A -:102EC0008091E80083FD0E94FD15CF70C093E9005A -:102ED000CF91089590939502809394020895E09184 -:102EE0009402F0919502309721F00190F081E02D4D -:102EF000099480E00895E0919402F0919502309752 -:102F000021F00280F381E02D09940895E09194026C -:102F1000F0919502309721F00480F581E02D09941D -:102F2000089520919202309193028217930771F0D5 -:102F30009093930280939202E0919402F091950213 -:102F4000309721F00680F781E02D099408952091B3 -:102F50009002309191028217930771F09093910241 -:102F600080939002E0919402F0919502309721F0C5 -:102F70000084F185E02D0994089508950C94BD17FF -:102F80000E9444230E9495090E94CA230C94792828 -:102F90005F926F927F928F929F92AF92BF92CF92E9 -:102FA000DF92EF92FF920F931F93CF93DF9300D0A6 -:102FB00000D01F92CDB7DEB70E94DA099FE9C92E73 -:102FC00092E0D92E03E010E0AA24A394B12C502E55 -:102FD000802F0E94550A4C01F601729062906F0199 -:102FE0006826792661147104A1F40150110978F75B -:102FF0008FEF89838A831B820E944D238160782F03 -:103000009D838C8349815A816B818D810E947818C0 -:1030100038C08091F40281FD0E945E0A2BE030E00E -:103020007501022E02C0EE0CFF1C0A94E2F7C701E4 -:1030300086219721892B09F129835A828E209F208E -:1030400091E0892809F490E09B830E944D238160E0 -:10305000782F9D838C8349815A816B818D810E9459 -:103060007818000F111FF801E956FD4F80819181FA -:10307000E826F926F182E08204C02150310980F669 -:10308000B4CF0E94B125109196020E946F171817B5 -:10309000D1F00E946F17809396020F900F900F90BF -:1030A0000F900F90DF91CF911F910F91FF90EF90B4 -:1030B000DF90CF90BF90AF909F908F907F906F9058 -:1030C0005F900C947F090F900F900F900F900F90CE -:1030D000DF91CF911F910F91FF90EF90DF90CF90F4 -:1030E000BF90AF909F908F907F906F905F9008956A -:1030F000CF93DF93CDB7DEB72B970FB6F894DEBF33 -:103100000FBECDBF4F83588769877A878B87DE01D3 -:10311000119686E0FD0111928A95E9F785E0FE019E -:10312000379601900D928A95E1F749815A816B811A -:103130007C818D819E810E94EF1E2B960FB6F894A4 -:10314000DEBF0FBECDBFDF91CF910895CF9388230F -:1031500009F4C2C0C82F823859F40E946F1781FD4C -:10316000BBC089E30E94C9210E94962289E30CC05A -:10317000833879F40E946F1780FDAEC083E50E940A -:10318000C9210E94962283E50E940B22CF910C94C4 -:103190009622843859F40E946F1782FD9DC087E4FF -:1031A0000E94C9210E94962287E4EECF8CEF8C0FFB -:1031B000813A48F48C2F0E94E12781118DC08C2F19 -:1031C0000E94C921E3CF80E28C0F883048F4C77099 -:1031D00081E001C0880FCA95EAF70E944F22D6CF3E -:1031E0008BE58C0F833078F4C53A29F0C63A31F07C -:1031F00083E890E005C081E890E002C082E890E0BA -:10320000CF910C94911788E58C0F833108F064C03E -:10321000C83A39F1C93A41F1CA3A49F1CB3A51F1C8 -:10322000CC3A59F1CD3A61F1C03B69F1CE3A71F136 -:10323000CF3A79F1C13B81F1C23B89F1C33B91F1B6 -:10324000C43B99F1C53BA1F1C63BA9F1C73BB1F124 -:10325000C83BB9F1C93BC1F1CA3BC9F180E090E07C -:1032600038C082EE90E035C089EE90E032C08AEE40 -:1032700090E02FC085EB90E02CC086EB90E029C059 -:1032800087EB90E026C08CEC90E023C08DEC90E0C2 -:1032900020C083E891E01DC08AE891E01AC082E96D -:1032A00091E017C084E991E014C081E292E011C07E -:1032B00083E292E00EC084E292E00BC085E292E0ED -:1032C00008C086E292E005C087E292E002C08AE28E -:1032D00092E0CF910C94A717CF910895882309F419 -:1032E0004BC0823859F40E946F1781FF45C089E3B3 -:1032F0000E94C9210E94962289E30CC0833871F490 -:103300000E946F1780FF38C083E50E94C9210E9488 -:10331000962283E50E940B220C949622843859F45D -:103320000E946F1782FF28C087E40E94C9210E9473 -:10333000962287E4EFCF9CEF980F913A58F390E2F2 -:10334000980F983050F4877091E001C0990F8A95DA -:10335000EAF7892F0E945522DFCF9BE5980F933023 -:1033600020F480E090E00C949117885A833120F487 -:1033700080E090E00C94A7170895882321F00E9424 -:103380004F220C9496220895882321F00E94552202 -:103390000C94962208957F928F929F92AF92BF9243 -:1033A000CF92DF92EF92FF920F931F93CF93DF9311 -:1033B0001F92CDB7DEB77C01C62E772EFC010581AA -:1033C00002950F70128111110E946C220E94C2217D -:1033D000882379F0112369F080E28C0D883048F061 -:1033E00082E00E94AB210E94C22191E0D82ED92612 -:1033F00001C0D12CE72DE295EF70F0E0E05AFF4FCD -:103400000C940A2D872D807F072D0F70882311F0D3 -:103410000295007F112389F0002309F499C180E20D -:103420008C0D883020F4802F0E944F2203C0802F03 -:103430000E945F220E9496228BC18C2D0E946E19E1 -:10344000002309F4C3C180E28C0D883020F4802F62 -:103450000E94552203C0802F0E9465220E9496225E -:10346000B5C1872D807F972D9F70803211F4892FF1 -:1034700003C0892F8295807FCC2021F0F1E0CF1608 -:10348000A1F01DC0112339F0002319F1013009F515 -:103490000E947F229BC1002319F0013009F496C1DC -:1034A00089830E948222898110C1112321F0063074 -:1034B00008F08CC10EC0053008F088C106C1112388 -:1034C00059F0002331F0F701958190FF41C19F70C1 -:1034D00095830E94BD197AC1002309F4F6C03EC14C -:1034E000872D86958695837090E0009719F0019757 -:1034F00061F06CC1112321F08C2D972D937002C0C7 -:1035000080E090E00E94911761C1112321F08C2D81 -:10351000972D937002C080E090E00E94A71756C1DB -:103520008C2D112319F00E94B92402C00E9421257C -:103530000E94A6254BC1872D837009F052C011113E -:1035400045C18C2D829586958770880F880F9C2D9C -:103550009F70892E912CA12CB12C082E04C0880CB0 -:10356000991CAA1CBB1C0A94D2F7C4FE14C00FE01D -:1035700010E020E030E0B901A80104C0440F551F5D -:10358000661F771F8A95D2F7CB01BA0160957095B7 -:103590008095909503C060E070E0CB01272D2695C3 -:1035A0002695237030E02230310569F02330310553 -:1035B00089F0682979298A299B292130310571F000 -:1035C0000E94372003C1682979298A299B290E94F2 -:1035D0005320FCC00E943720C501B4010E941B206B -:1035E000F5C0112319F0872D817001C086958823BD -:1035F00009F4ECC08C2D829586958770880F880F12 -:103600009C2D9F70892E912CA12CB12C082E04C0CA -:10361000880C991CAA1CBB1C0A94D2F7C4FE14C0C7 -:103620000FE010E020E030E0B901A80104C0440F31 -:10363000551F661F771F8A95D2F7CB01BA01609597 -:1036400070958095909503C060E070E0CB01272DC8 -:10365000269526952370422F50E04230510569F09F -:103660004330510589F0682979298A299B294130FD -:10367000510571F00E941121A9C0682979298A2970 -:103680009B290E942D21A2C00E941121C501B401D5 -:103690000E94F5209BC08C2D90E0FC01E05EF109BA -:1036A000E531F10508F050C0E059FF4F0C940A2DA8 -:1036B0000C2D0F70872D8F71112321F00E948E2009 -:1036C000802F07CF0E94AF20802F0E94C4197EC098 -:1036D000112341F0053008F079C0872D8F710E94C9 -:1036E000D42074C0063008F071C0F7CF112339F030 -:1036F000872D8F710E948E2069C01123C9F3872DF9 -:103700008F710E94AF2062C0112329F0872D8F7125 -:103710000E9479205BC00E946F2058C0112351F095 -:10372000172D1F71812F0E948E2063E0812F0E9430 -:10373000A2214CC081E00E94AB21023008F446C0B7 -:1037400082E00E94AB2142C0112331F0002381F2BC -:103750008C2D0E94A6183AC0002389F28C2D0E945D -:103760006E1934C0472D4F706C2DC7010E9496030F -:103770000E94931F2BC0111129C0472D4F7050E09C -:1037800042305105B9F04CF44115510581F04130FA -:103790005105E1F40E94A12819C04330510569F098 -:1037A0004430510599F48C2D0E94F3280FC00E94DB -:1037B0008A280CC00E94BD2809C00E94D02806C0DB -:1037C000472D4F706C2DC7010E946006DD20F9F077 -:1037D0000E949E2180FD1BC0F70112820E94982149 -:1037E0000E948E20C7010E94161C0E9498210F90F3 -:1037F000DF91CF911F910F91FF90EF90DF90CF90CD -:10380000BF90AF909F908F907F900C94AF200F90BF -:10381000DF91CF911F910F91FF90EF90DF90CF90AC -:10382000BF90AF909F908F907F9008950F931F93BC -:10383000CF93DF93EC01888199812B813C81232BED -:10384000B9F09F3F11F48F3F99F0CE010E945F04C1 -:10385000882371F0688179818A810E9494218C018A -:103860000E9449210E941020B801CE010E94CB196C -:10387000DF91CF911F910F9108950E946C220E94B9 -:103880007C220E9441220E9496220E9457260E947A -:10389000A62580E090E00E94911780E090E00C94D3 -:1038A000A7170E945C220C943D1C0E948921292F9D -:1038B00022952F7030E02C3031054CF42A30310540 -:1038C0006CF42250310922303105A8F407C02C30A5 -:1038D000310569F02F30310551F00DC0803F69F09E -:1038E00018F4803E40F409C0843F29F406C093FBDD -:1038F000882780F9089580E0089581E00895CF93A6 -:10390000DF9300D000D01F92CDB7DEB70F900F909D -:103910000F900F900F90DF91CF910895CF93DF9389 -:1039200000D000D000D0CDB7DEB726960FB6F89401 -:10393000DEBF0FBECDBFDF91CF9108951F93CF9310 -:10394000DF93C0919F0216E08091A002C81799F002 -:10395000D0E01C9FF0011D9FF00D1124EF55FD4F8D -:103960004081518162817381848195810E948E1C86 -:103970002196C770E9CFDF91CF911F9108954091B3 -:10398000D1025091D2026091D3027091D402809101 -:10399000D5029091D6020C948E1C8091D60282950D -:1039A0008F7009F054C08091D302882309F44FC06E -:1039B00080919F02A091A0026091D1027091D202E9 -:1039C0004091D4025091D502B6E08A1709F43FC065 -:1039D00090E041155105C1F17F3F11F46F3FA1F116 -:1039E000B89FF001B99FF00D1124EF55FD4F2181D3 -:1039F00072132AC02081621327C02281211124C0A2 -:103A0000238134812417350710F421503109241BF8 -:103A1000350B283C3105C0F42091D6022F7020616F -:103A20002093D60226E0289FF001299FF00D112453 -:103A3000EA55FD4F80818F708061808381ED92E037 -:103A40000E94161C0C949E1C01968770BECF089590 -:103A5000CF92DF92EF92FF920F931F93CF93DF935A -:103A6000CDB7DEB762970FB6F894DEBF0FBECDBFFD -:103A70008C0185E0F801DE011D9601900D928A957A -:103A8000E1F7D8014C9111965C91119712966C91C7 -:103A900012971396CD90DC9014973091D1027091CB -:103AA000D2028091D4029091D502009709F46BC1A3 -:103AB0007F3F19F43F3F09F466C1E090D302EE2046 -:103AC00009F4C0C02091D602C816D90628F0F60124 -:103AD000E81BF90BCF0104C0809590958C0D9D1DBE -:103AE000FF24F394883C910578F0F12C207F09F0B5 -:103AF000C6C07C2DD98AC88A89890E947F1C81ED25 -:103B000092E00E94161CB1C0822F807F09F046C04F -:103B1000751314C0341312C0611110C02F702061CE -:103B20002093D6020E94BF1C81ED92E00E94161CD9 -:103B30008091D602D80115968C932EC0CD2819F10C -:103B40005F3F11F44F3FF9F0F62E61111CC08091D8 -:103B50009F022091A00236E0821709F45AC090E03B -:103B6000389FF001399FF00D1124EF55FD4F718101 -:103B7000571306C07081471303C07281711103C0CF -:103B800001968770E9CFF62E662309F418C180915B -:103B9000D60281608093D602F12C11C1751308C042 -:103BA000341306C0611104C08091D602D801C3C08D -:103BB0004D875E878D859E856A8B0E94551C6A891C -:103BC0008823E1F16623D1F12091D602822F8295DC -:103BD0008F7090E0029774F08091D1029091D202A0 -:103BE00098878F831986DB86CA862C87CE01079635 -:103BF0000E94161C86E0F801A1EDB2E001900D9242 -:103C00008A95E1F70E94CD1C0E94BF1CFF24F3940B -:103C1000D6C04D875E878D859E850E948921292F7C -:103C200022952F7030E0223031050CF0BCC09F701F -:103C300009F0B6C0805E883008F4C1C0C8010E9497 -:103C4000161CE4CFC816D90608F453C0F601E81BC9 -:103C5000F90BCF01883C910508F450C0F12C7C2D64 -:103C6000D98AC88A89890E947F1CE1EDF2E086E04A -:103C7000DF011D928A95E9F70E94BF1CA0C0751351 -:103C800014C0341312C0611110C08091D602F80123 -:103C90008583C8010E94161C86E0E1EDF2E0DF0199 -:103CA0001D928A95E9F7FE2C8AC04D875E878D8527 -:103CB0009E856A8B0E94551C6A89882309F4BECFB1 -:103CC000662309F4BBCF2091D602822F82958F7094 -:103CD00090E002970CF48ECF8091D1029091D202A5 -:103CE0009A8389831B82DD82CC822E83CE0101964A -:103CF0007FCF809590958C0D9D1DACCFF62E6623C1 -:103D000009F49CCF75132EC034132CC02091D60219 -:103D100020FD1FC0822F82958F70D9F0D801159693 -:103D20002C9315978F3049F08F5F982F9295907F45 -:103D3000822F8F70892B15968C93C8010E94161CB8 -:103D400086E0F801A1EDB2E001900D928A95E1F7CD -:103D500093CF86E0F801A1EDB2E001900D928A9533 -:103D6000E1F72DC04D875E878D859E850E94551C8D -:103D7000811140CF8091D60281608093D602C80124 -:103D80000E94161C1CC0662309F458CF4D875E871D -:103D90008D859E850E94551C882309F44FCF2ACF1C -:103DA000811148CF0CC0243031050CF047CF9F70F3 -:103DB00009F440CFF8019581907F09F03BCF8F2D1A -:103DC00062960FB6F894DEBF0FBECDBFDF91CF91E4 -:103DD0001F910F91FF90EF90DF90CF9008951F9368 -:103DE000CF93DF93CDB7DEB72C970FB6F894DEBF35 -:103DF0000FBECDBF4F83588769877A878B879C8793 -:103E0000CE0107960E94281D882369F08F8198852E -:103E10002A853B85232BF1F19F3F09F063C08F3F3B -:103E200009F060C037C086E0FE013796DE011196CA -:103E300001900D928A95E1F76F817885EA85FB857F -:103E4000309741F17F3F11F46F3F21F12091A002A3 -:103E500030E0C90101968770992740919F0250E098 -:103E60008417950709F447C069837A83FD83EC833F -:103E700096E0929FD001939FB00D1124AF55BD4F96 -:103E8000FE01319601900D929A95E1F78093A00280 -:103E90000E949E1C16E080919F029091A0028917BB -:103EA000C1F1189FC00111248F559D4F0E94281DFC -:103EB000882379F1E0919F021E9FF0011124EF55B4 -:103EC000FD4F4081518162817381848195810E947F -:103ED0008E1C80919F0290E00196877099278093B5 -:103EE0009F02D9CF4F81588569857A858B859C85BE -:103EF0000E948E1CCFCF0E94511C1092A0021092E3 -:103F00009F02E1EDF2E086E0DF011D928A95E9F77C -:103F1000C1CF2C960FB6F894DEBF0FBECDBFDF9198 -:103F2000CF911F910895EF92FF920F931F93CF931C -:103F3000DF938C01009709F46CC0F12CEE24E3941C -:103F4000E8012196F8018491843740F4843008F028 -:103F500051C0813081F0823019F15BC0853709F49E -:103F600044C0A8F19CE7980F903708F052C08F77B3 -:103F70000E946E1941C00E5F1F4FFE01C49180E286 -:103F80008C0F883048F4C7708E2D01C0880FCA95F9 -:103F9000EAF70E946F2214C08C2F0E94A6182DC031 -:103FA0000E5F1F4FFE01C49180E28C0F883058F4E1 -:103FB000C7708E2D01C0880FCA95EAF70E9475223E -:103FC0000E9496221AC08C2F0E946E1916C00E5F96 -:103FD0001F4FFE01C491CC2381F08FE99FE0019730 -:103FE000F1F700C00000C150F6CF0E5F1F4FFE0179 -:103FF000F49003C00E94A6188E018F2D882309F427 -:104000009FCFEFE9FFE03197F1F700C0000081504A -:10401000F5CFDF91CF911F910F91FF90EF90089511 -:1040200008956093DB027093DC028093DD0290932D -:10403000DE020C943D1C0F931F930091DB02109144 -:10404000DC022091DD023091DE02DC01CB01802B0D -:10405000912BA22BB32B8093DB029093DC02A093D5 -:10406000DD02B093DE021F910F910C943D1C0F9363 -:104070001F930091DB021091DC022091DD02309150 -:10408000DE02DC01CB0180239123A223B3238093A2 -:10409000DB029093DC02A093DD02B093DE021F915D -:1040A0000F910C943D1C0F931F930091DB02109114 -:1040B000DC022091DD023091DE02DC01CB018027A1 -:1040C0009127A227B3278093DB029093DC02A09371 -:1040D000DD02B093DE021F910F910C943D1C1092F3 -:1040E000D7021092D8021092D9021092DA020C94E0 -:1040F0003D1C41E050E060E070E004C0440F551FFB -:10410000661F771F8A95D2F74093D7025093D80243 -:104110006093D9027093DA020C943D1C41E050E0A8 -:1041200060E070E004C0440F551F661F771F8A953A -:10413000D2F78091D7029091D802A091D902B09184 -:10414000DA02482B592B6A2B7B2B4093D7025093D2 -:10415000D8026093D9027093DA020C943D1C41E0BE -:1041600050E060E070E004C0440F551F661F771FE9 -:104170008A95D2F740955095609570958091D702B9 -:104180009091D802A091D902B091DA024823592324 -:104190006A237B234093D7025093D8026093D902BD -:1041A0007093DA020C943D1C41E050E060E070E056 -:1041B00004C0440F551F661F771F8A95D2F7809160 -:1041C000D7029091D802A091D902B091DA02482783 -:1041D00059276A277B274093D7025093D8026093D0 -:1041E000D9027093DA020C943D1C0F931F93009137 -:1041F000D7021091D8022091D9023091DA02DC0165 -:10420000CB01802B912BA22BB32B8093D7029093C1 -:10421000D802A093D902B093DA021F910F910C94A7 -:104220003D1C0F931F930091D7021091D80220914B -:10423000D9023091DA02DC01CB0180239123A22341 -:10424000B3238093D7029093D802A093D902B0935E -:10425000DA021F910F910C943D1C0F931F93009154 -:10426000D7021091D8022091D9023091DA02DC01F4 -:10427000CB0180279127A227B3278093D702909361 -:10428000D802A093D902B093DA021F910F910C9437 -:104290003D1C0895CF92DF92EF92FF920F931F93F0 -:1042A000CF93DF938C01C090DB02D090DC02E090D2 -:1042B000DD02F090DE028091D7029091D802A091A9 -:1042C000D902B091DA02C82AD92AEA2AFB2ACFE118 -:1042D000D0E0D701C6010C2E04C0B695A7959795DE -:1042E00087950A94D2F780FF06C0B8018C2F0E94F0 -:1042F000E508019721F4219760F780E001C08C2F39 -:10430000DF91CF911F910F91FF90EF90DF90CF90B1 -:104310000895CF93DF93EC010E944A21BE010E94D1 -:10432000E508DF91CF910895CB010E94892108957E -:104330008091DF0285958595859508958091DF02AE -:104340008770089598E0899F90011124262B20936F -:10435000DF020C948E202091DF02809582238093CF -:10436000DF02982F977069F430E0482F552747FDFA -:1043700050952417350729F08595859585950C94DA -:10438000AF2008959091DF02977081E009F480E0FA -:10439000089590911701992321F09091180191119E -:1043A00009C02091190130911A01F90132969FEF4D -:1043B00040E01FC0982F9695969596959F3050F5A2 -:1043C000E0911901F0911A01E90FF11D877021E0C8 -:1043D00030E0A90102C0440F551F8A95E2F7CA01D7 -:1043E0009181892B818308959F3F39F04F5F4E3033 -:1043F00041F051915813F8CF0DC05111F7CF942FC0 -:10440000F5CF9F3F39F0F901E90FF11D97FDFA95BE -:1044100082830895089590911701992321F0909136 -:104420001801911109C02091190130911A01F90167 -:104430003296205F3F4F1FC0982F96959695969580 -:104440009F30F0F4E0911901F0911A01E90FF11D8C -:10445000877021E030E0A90102C0440F551F8A9502 -:10446000E2F7CA018095918189238183089531966D -:10447000E217F30729F090819813F9CF1082F7CF54 -:10448000089581E090E0E0911901F0911A01E80FA0 -:10449000F91F1082019680319105A9F70895909136 -:1044A000F302892B8093F302089580959091F30293 -:1044B00089238093F30208951092F3020895909156 -:1044C000F202892B8093F202089580959091F20276 -:1044D00089238093F20208951092F2020895909138 -:1044E000F102892B8093F102089580959091F10259 -:1044F00089238093F10208951092F1020895809328 -:10450000E00208951092E0020895809119019091BF -:104510001A01FC0131969C01205F3F4F80E0919190 -:1045200091118F5FE217F307D1F70895E091190118 -:10453000F0911A018091F3028083E0911901F091CA -:104540001A0190818091F202892B8083E0911901F8 -:10455000F0911A0190818091F102892B80838091E2 -:10456000E002882361F0E0911901F0911A01908135 -:10457000892B80830E94852281111092E002809114 -:10458000190190911A010C947B1720E0009739F0E3 -:10459000AC0141505109842395232F5FF7CF822F1F -:1045A000089580911503843039F11092F50220E4CA -:1045B00088E190E00FB6F894A895809360000FBE54 -:1045C0002093600080E00E94FD0280E00E947F094D -:1045D00083B7817F846083BF83B7816083BF789412 -:1045E000889583B78E7F83BF88E10FB6F894809358 -:1045F0006000109260000FBE08950895089580E055 -:104600000E94FD020E94FD220E94DA090E94FE2201 -:104610000E945F0A91E0811101C090E0892F089506 -:104620000E94511C80E00E94FD020E9479280E9495 -:104630006F170C947F091F920F920FB60F921124DF -:104640008F939F93AF93BF938091F502811113C015 -:104650008091F6029091F702A091F802B091F902D0 -:104660004196A11DB11D8093F6029093F702A0938D -:10467000F802B093F902BF91AF919F918F910F9083 -:104680000FBE0F901F90189582E084BD93E095BDFA -:104690009AEF97BD80936E0008952FB7F89480919C -:1046A000F6029091F702A091F802B091F9022FBFA3 -:1046B0000895CF92DF92EF92FF920F931F932FB73F -:1046C000F8944091F6025091F7026091F8027091CF -:1046D000F9022FBF6A017B01EE24FF248C0120E048 -:1046E00030E0C016D106E206F30610F4415051093D -:1046F0009A01281B390BC9011F910F91FF90EF9070 -:10470000DF90CF9008951F920F920FB60F92112451 -:104710008F939F93AF93BF938091F6029091F7028E -:10472000A091F802B091F9020196A11DB11D8093EC -:10473000F6029093F702A093F802B093F902BF91AA -:10474000AF919F918F910F900FBE0F901F90189572 -:104750000E946C14F8942FEF87EA91E62150804074 -:104760009040E1F700C0000087E090EBDC0180930F -:10477000200390932103A0932203B09323039CE092 -:1047800088E10FB6F894A895809360000FBE9093CF -:104790006000FFCF0E940924811102C00E94E5231E -:1047A0000E9414248093F4020E941C2480931E0310 -:1047B00087FB882780F9809318010E941824682FAE -:1047C00070E080E090E00C9411206DEE7EEF80E0D0 -:1047D00090E00E94302D60E082E090E00E941E2D6B -:1047E00060E083E090E00E941E2D60E084E090E0B5 -:1047F0000E941E2D60E085E090E00E941E2D60E08A -:1048000086E090E00E941E2D6FEF87E090E00C9410 -:104810001E2D80E090E00E94182D21E08D3E9E4FDD -:1048200009F020E0822F089582E090E00C94102D92 -:1048300083E090E00C94102D84E090E00C94102D17 -:10484000682F84E090E00C941E2D86E090E00C949C -:10485000102D682F86E090E00C941E2D87E090E0EC -:104860000C94102D682F87E090E00C941E2D809101 -:10487000FC0280FF0BC060911E0185E0689FB001C3 -:10488000112475956795759567952BC081FF09C0B3 -:1048900060911E0185E0689FB001112475956795B0 -:1048A00020C082FF07C060911E0185E0689FB001B3 -:1048B000112417C09091FD029923D1F060911D0140 -:1048C000961788F720911E0185E0289F90011124FA -:1048D000929FA001939F500D112470E0CA010E9485 -:1048E000F62C6038710540F46115710539F002C08D -:1048F00065E070E0862F08958FE7089581E00895C0 -:104900008091FC0280FF08C060911C0170E07595E9 -:1049100067957595679521C081FF06C060911C0160 -:1049200070E07595679519C082FF04C060911C0105 -:1049300070E010C09091FD029923C1F060911B01BD -:104940009617A0F780911C01899FC001112470E087 -:104950000E94F62C6038710528F46115710521F06C -:10496000862F08958FE7089581E0089561E070E053 -:10497000F4CF803F21F40E943724819504C0813F09 -:1049800029F40E943724809300030895823F21F484 -:104990000E943724819504C0833F29F40E94372464 -:1049A0008093FF020895893F19F40E94802405C076 -:1049B0008A3F31F40E9480248195809301030895F9 -:1049C0008B3F21F40E948024819504C08C3F29F400 -:1049D0000E948024809302030895843F21F48091F3 -:1049E000FE02816017C0853F21F48091FE02826043 -:1049F00011C0863F21F48091FE0284600BC0873F86 -:104A000021F48091FE02886005C0883F31F48091D6 -:104A1000FE0280618093FE0208958D3F21F4809113 -:104A2000FC0281600BC08E3F21F48091FC02826009 -:104A300005C08F3F29F48091FC0284608093FC02C2 -:104A40000895803F39F48091000387FF6CC0109275 -:104A5000000369C0813F29F4809100031816BCF35C -:104A600062C09091FF02823F29F497FF5CC01092D0 -:104A7000FF0259C0833F19F41916CCF354C0893F83 -:104A800041F48091010318160CF04DC010920103FF -:104A90004AC08A3F29F48091010387FF44C0F6CFC2 -:104AA0008B3F39F48091020387FF3DC010920203CF -:104AB0003AC08C3F29F4809102031816BCF333C02E -:104AC000843F21F48091FE028E7F17C0853F21F440 -:104AD0008091FE028D7F11C0863F21F48091FE02FD -:104AE0008B7F0BC0873F21F48091FE02877F05C03A -:104AF000883F31F48091FE028F7E8093FE0213C0C6 -:104B00008D3F21F48091FC028E7F0BC08E3F21F4FB -:104B10008091FC028D7F05C08F3F29F48091FC02BB -:104B20008B7F8093FC028091FF0281110EC08091E7 -:104B3000000381110AC080910103811106C0809198 -:104B40000203811102C01092FD0208958EEF92E0DF -:104B50000E9486170E944D239093FB028093FA02D5 -:104B600008951F93CF93DF938091FA029091FB02F7 -:104B70000E945923AC019091FD02992321F02091CC -:104B80001F0130E006C0209120018AE0289F90019B -:104B900011244217530708F486C08091FF02C09188 -:104BA0000003D091010310910203811107C0C111CC -:104BB00076C0D11174C0111172C075C09F3F19F039 -:104BC0009F5F9093FD02181624F40E94372480936F -:104BD000FF028091FF0287FF05C00E943724819564 -:104BE0008093FF021C1624F40E9437248093000354 -:104BF0008091000387FF05C00E9437248195809330 -:104C000000036091FF02662339F1C0910003CC23B9 -:104C100019F1772767FD7095872F972F0E94182A23 -:104C200023E333E343E35FE30E94282B0E94E5295B -:104C30006093FF026C2F772767FD7095872F972F62 -:104C40000E94182A23E333E343E35FE30E94282B07 -:104C50000E94E529609300031D1624F40E9480241D -:104C6000809301038091010387FF05C00E94802487 -:104C7000819580930103111624F40E94802480936F -:104C800002038091020387FF05C00E948024819562 -:104C900080930203DF91CF911F910C94A6259F3F33 -:104CA00009F08ECF96CFDF91CF911F910895EEEF4F -:104CB000F2E085E0DF011D928A95E9F71092FD028E -:104CC0001092FC020895833081F128F4813059F06C -:104CD0008230D1F00895853009F449C0B8F18630AA -:104CE00009F456C0089580912001262F30E0280F46 -:104CF000311D2F3F310524F4680F60932001089582 -:104D00008FEF80932001089580911F01262F30E0BE -:104D1000280F311D2F3F310524F4680F60931F01C8 -:104D200008958FEF80931F01089580911E01262F13 -:104D300030E0280F311D2F3F310524F4680F6093B8 -:104D40001E0108958FEF80931E01089580911D012B -:104D5000262F30E0280F311D2F3F310524F4680F36 -:104D600060931D0108958FEF80931D010895809138 -:104D70001C01262F30E0280F311D2F3F310524F470 -:104D8000680F60931C0108958FEF80931C010895B4 -:104D900080911B01262F30E0280F311D2F3F310558 -:104DA00024F4680F60931B0108958FEF80931B011B -:104DB0000895833011F128F4813049F0823091F068 -:104DC0000895853081F120F18630C1F108958091F8 -:104DD0002001681720F4861B80932001089510920B -:104DE0002001089580911F01681720F4861B80938D -:104DF0001F01089510921F01089580911E016817E8 -:104E000020F4861B80931E01089510921E010895C0 -:104E100080911D01681720F4861B80931D01089561 -:104E200010921D01089580911C01681720F4861BC3 -:104E300080931C01089510921C01089580911B011C -:104E4000681720F4861B80931B01089510921B01A4 -:104E500008950F931F93873208F048C08E3108F0F1 -:104E60008DC0803109F477C008F5873009F461C03E -:104E700068F4863009F09DC08091F402817F8E7FB6 -:104E80008093F40281E08093040394C08B3009F492 -:104E900089C08E3009F08DC08091F40282FB2227F8 -:104EA00020F991E0922790FB82F95EC0863109F4E7 -:104EB00079C060F4813109F07CC00E94511C90914E -:104EC000180181E08927809318016CC0893109F4A9 -:104ED00069C08B3109F06DC08091F40281FB2227FB -:104EE00020F991E0922790FB81F93EC0883309F4C4 -:104EF00059C050F4893209F457C0853309F454C0BD -:104F0000873209F451C055C0833409F44DC028F4E8 -:104F10008A3308F44EC0895332C0883409F049C03E -:104F20000E94511C0E948F0A0E9456040E94A823CE -:104F300039C09091F402892F8095817080FB90F99F -:104F400029F0966098609093F40234C0997F977F1F -:104F50009093F40227C08091F40283FB222720F96A -:104F600091E0922790FB83F98093F4029923D1F08A -:104F70008091F40281608093F40214C08D5141E06D -:104F800050E060E070E08A019B0104C0000F111F37 -:104F9000221F331F8A95D2F7C901B8010E94112040 -:104FA0000E94511C81E006C061E070E080E090E06A -:104FB000F5CF80E01F910F91089580E0089580E083 -:104FC0000895CF93C82F80910403813069F018F0C1 -:104FD0008230C9F184C0E0911901F0911A018081F9 -:104FE000823209F07EC007C0E0911901F0911A01E8 -:104FF0008081823261F48C2F0E94DD27811104C0F0 -:105000008C2F0E9429271DC081E090E01AC08C2FB0 -:105010000E94DF27811114C0C43179F048F4CB30ED -:1050200079F0C03109F061C082E08093040308C0C8 -:10503000C93219F0C83321F058C01092040355C08A -:1050400081E0817054C0C93291F120F5C43179F109 -:10505000B0F4C73009F047C08EE18093200182E3AD -:1050600080931F018AE080931E0184E180931D01DB -:1050700088E080931C0188E280931B0134C0CE51EC -:10508000C63088F5EC2FF0E0E854FE4F8081809325 -:10509000030329C0CE34E9F020F4CB3421F56AE0D3 -:1050A00013C0C13579F0C235F1F461E00DC08091D3 -:1050B0000303882319F01092030315C081E0809345 -:1050C000040315C061E006C0809103030E946326BB -:1050D0000AC06AE0809103030E94D92604C010929E -:1050E000040380E004C081E002C080E0AACFCF9139 -:1050F00008950E940924811102C00E94E5230E94A4 -:10510000252480931F0380FF02C0869501C080E0A4 -:105110000C94FD0280911F03982F9695292F30E063 -:10512000233031054CF49F5F990F8170892B81608A -:1051300080931F030E94292480911F0386950C945D -:10514000FD0280911F03982F969591F09158990F29 -:105150008170892B80931F038E7F91E009F490E08A -:1051600080911F0390FB80F980931F030E942924E4 -:1051700080911F0386950C94FD0280911F03982F48 -:10518000909590FB80F980931F030E9429248091C1 -:105190001F0380FF02C0869501C080E00C94FD02D1 -:1051A00090911F03892F86958F5F8F779170843040 -:1051B00028F4880F892B80931F0302C090931F034C -:1051C00080911F038E7F91E009F490E080911F038E -:1051D00090FB80F980931F030E94292480911F0374 -:1051E00086950C94FD0220911F03922F9695892796 -:1051F000982F990F822F8170892B80931F038E7FA8 -:1052000091E009F490E080911F0390FB80F9809376 -:105210001F030E94292480911F0386950C94FD0290 -:1052200080911F03869508955058BB27AA270ED05A -:10523000D1C1C2D130F0C7D120F031F49F3F11F479 -:105240001EF4B7C10EF4E095E7FB9FC1E92FD3D15F -:1052500080F3BA17620773078407950718F071F493 -:105260009EF5EBC10EF4E0950B2EBA2FA02D0B018D -:10527000B90190010C01CA01A0011124FF27591B9B -:1052800099F0593F50F4503E68F11A16F040A22FA1 -:10529000232F342F4427585FF3CF46953795279512 -:1052A000A795F0405395C9F77EF41F16BA0B620B11 -:1052B000730B840BBAF09150A1F0FF0FBB1F661F58 -:1052C000771F881FC2F70EC0BA0F621F731F841F9B -:1052D00048F4879577956795B795F7959E3F08F0C1 -:1052E000B3CF9395880F08F09927EE0F9795879580 -:1052F000089527D108F481E008950CD06BC163D1E3 -:1053000040F05AD130F021F45F3F19F03EC1511105 -:1053100095C14FC170D198F39923C9F35523B1F3C7 -:10532000951B550BBB27AA2762177307840738F014 -:105330009F5F5F4F220F331F441FAA1FA9F333D073 -:105340000E2E3AF0E0E830D091505040E695001C27 -:10535000CAF729D0FE2F27D0660F771F881FBB1FE3 -:10536000261737074807AB07B0E809F0BB0B802DBD -:10537000BF01FF2793585F4F2AF09E3F510568F009 -:1053800004C15CC15F3FECF3983EDCF386957795F2 -:105390006795B795F7959F5FC9F7880F911D96950B -:1053A000879597F90895E1E0660F771F881FBB1F67 -:1053B000621773078407BA0720F0621B730B840B14 -:1053C000BA0BEE1F88F7E095089504D06894B111E8 -:1053D00035C1089518D188F09F5790F0B92F9927BB -:1053E000B751A0F0D1F0660F771F881F991F1AF0F0 -:1053F000BA95C9F712C0B13081F01FD1B1E008955C -:105400001CC1672F782F8827B85F39F0B93FCCF3DC -:10541000869577956795B395D9F73EF490958095E5 -:10542000709561957F4F8F4F9F4F0895E89409C005 -:1054300097FB3EF490958095709561957F4F8F4FC7 -:105440009F4F9923A9F0F92F96E9BB279395F695DD -:10545000879577956795B795F111F8CFFAF4BB0F5B -:1054600011F460FF1BC06F5F7F4F8F4F9F4F16C0BF -:10547000882311F096E911C0772321F09EE8872F49 -:10548000762F05C0662371F096E8862F70E060E005 -:105490002AF09A95660F771F881FDAF7880F96957E -:1054A000879597F9089588D018F011F08CD038F4CA -:1054B00080C0C4C0E92F9FD0B0F35523C9F3E7FBE8 -:1054C0006217730784079507A8F199F3E92FFF275F -:1054D00088232AF03197660F771F881FDAF7952FF8 -:1054E0005527442332F091505040220F331F441F60 -:1054F000D2F7BB27E91BF50B621B730B840BB109B9 -:10550000C1F222F4620F731F841FB11D31972AF07C -:10551000660F771F881FBB1FEFCF915050405AF086 -:1055200041F0882332F0660F771F881F915050405A -:10553000C1F7939530C08695779567959F5FD9F7AA -:10554000F8CF990F0008550FAA0BE0E8FEEF1616EA -:105550001706E807F907C0F012161306E407F50767 -:1055600098F0621B730B840B950B39F40A2661F0DB -:10557000232B242B252B21F408950A2609F4A1407E -:10558000A6958FEF811D811D089597F99F6780E88B -:1055900070E060E008959F3F31F0915020F48795CE -:1055A00077956795B795880F911D9695879597F98B -:1055B00008959FEF80EC089500240A9416161706AC -:1055C00018060906089500240A94121613061406F4 -:1055D00005060895092E0394000C11F4882352F057 -:1055E000BB0F40F4BF2B11F460FF04C06F5F7F4F0F -:1055F0008F4F9F4F089557FD9058440F551F59F0F6 -:105600005F3F71F04795880F97FB991F61F09F3FAF -:1056100079F087950895121613061406551FF2CFD8 -:105620004695F1DF08C0161617061806991FF1CF28 -:1056300086957105610508940895E894BB2766274F -:105640007727CB0197F908957CDF08F48FEF089551 -:105650000BD0C0CFB1DF28F0B6DF18F0952309F0EA -:1056600094CFA7CF1124EACFC6DFA0F3959FD1F343 -:10567000950F50E0551F629FF001729FBB27F00D00 -:10568000B11D639FAA27F00DB11DAA1F649F662755 -:10569000B00DA11D661F829F2227B00DA11D621FA4 -:1056A000739FB00DA11D621F839FA00D611D221F5E -:1056B000749F3327A00D611D231F849F600D211D42 -:1056C000822F762F6A2F11249F5750408AF0E1F0E5 -:1056D00088234AF0EE0FFF1FBB1F661F771F881F2E -:1056E00091505040A9F79E3F510570F04ECFA6CF84 -:1056F0005F3FECF3983EDCF3869577956795B79519 -:10570000F795E7959F5FC1F7FE2B880F911D969542 -:10571000879597F90895FA01EE0FFF1F309621053E -:10572000310599F16115710561F48038BFE39B077C -:1057300049F168949038810561F08038BFEF9B078C -:1057400041F0992342F5FF3FE1053105210511F1B3 -:10575000E8940894E795D901AA2329F4AB2FBE2F2A -:10576000F85FD0F310C0FF5F70F4A695E0F7F7394B -:1057700050F019F0FF3A38F49F779F930CD00F90B8 -:1057800007FC905808953EF014CF60E070E080E888 -:105790009FE308954FE79F775F934F933F932F9336 -:1057A0009ED02F913F914F915F9152DF05C019F428 -:1057B0000EF0EBCE42CFFDCE26DFC8F39638C0F711 -:1057C00007F80F92E8942BE33AEA48EB5FE74EDFE5 -:1057D0000F920F920F924DB75EB70F92C0D0EAE0D2 -:1057E000F1E016D04F915F91EF91FF91E595EE1F9B -:1057F000FF1F49F0FE57E0684427EE0F441FFA955B -:10580000E1F74195550B32D00F9007FE26C0089561 -:10581000DF93CF931F930F93FF92EF92DF927B0161 -:105820008C01689405C0DA2EEF011EDFFE01E894BA -:10583000A5912591359145915591AEF3EF0106DD86 -:10584000FE019701A801DA9479F7DF90EF90FF90BD -:105850000F911F91CF91DF9108959B01AC0160E002 -:1058600070E080E89FE349CD90CE95CECCDEE8F3A2 -:105870009923D9F3940F511DBBF39150504094F0EC -:1058800059F0882332F0660F771F881F91505040DF -:10589000C1F79E3F510544F7880F911D9695879556 -:1058A00097F908955F3FACF0983E9CF0BB27869532 -:1058B00077956795B79508F4B1609395C1F7BB0FDD -:1058C00058F711F460FFE8CF6F5F7F4F8F4F9F4F06 -:1058D000E3CFB4CE0EF05FCE6CCE689456CE93DE9E -:1058E000C8F39923D1F3C6F3DF93CF931F930F939C -:1058F000FF92C92FDD2788232AF02197660F771F93 -:10590000881FDAF720E030E040E85FEB9FE388395A -:1059100020F0803E30F021968F7787DCE2E3F1E0E3 -:1059200003C083DCEFE5F1E073DF8B01BE01EC0126 -:10593000FB2E6F5771097595771F880B990B78DDD2 -:1059400028E132E741E35FE38FDEAF2D9801AE013E -:10595000FF900F911F91CF91DF9178DC3BCEFA0140 -:10596000DC01AA0FBB1F9B01AC01BF5728F4222703 -:105970003327442750781FC0B75188F4AB2F002439 -:10598000469537952795011CA395D2F3002069F021 -:10599000220F331F441FB395DAF30DD045CC61308D -:1059A0007105A0E88A07B94630F49B01AC0166276F -:1059B000772788279078309621F02083318342839F -:1059C00053830895AA1BBB1B51E107C0AA1FBB1F2D -:1059D000A617B70710F0A61BB70B881F991F5A957B -:1059E000A9F780959095BC01CD01089597FB072EEE -:1059F00016F4009407D077FD09D00E94E22C07FC32 -:105A000005D03EF4909581959F4F089570956195CE -:105A10007F4F0895EE0FFF1F0590F491E02D09943C -:105A2000F999FECF92BD81BDF89A992780B5089566 -:105A3000A8E1B0E042E050E00C94382D262FF9990F -:105A4000FECF92BD81BDF89A019700B4021639F0DD -:105A50001FBA20BD0FB6F894FA9AF99A0FBE0895AE -:105A60000196272F0E941F2D0C941E2DDC01CB01C7 -:105A7000FC01F999FECF06C0F2BDE1BDF89A31965E -:105A800000B40D9241505040B8F70895F894FFCFFC -:105A90009D00640007000CFF0000003F64731001CC -:105AA00011DE10AA1076100101E1022808140A3252 -:105AB0001E0002040507090B0C0E10111315171810 -:105AC0001A1C1D1F2123242628292B2D2F30323468 -:105AD0003537393B1F0F03764F5F6F7F4969437935 -:105AE000095953633149803F5D8B803FF8BF803F48 -:105AF000CAE1803F73ED803FCAE1803FF8BF803F3D -:105B00005D8B803F3149803F0000803FF16D7F3FDA -:105B100075EA7E3F4C827E3F833F7E3F84287E3FF6 -:105B2000833F7E3F4C827E3F75EA7E3FF16D7F3F33 -:105B30000000803F3F4D36390505B8048204490412 -:105B4000DC03F5030E04270401020304050607081D -:025B500009004A -:00000001FF diff --git a/keyboard/planck/keymaps/cbbrowne/config_user.h b/keyboard/planck/keymaps/cbbrowne/config_user.h new file mode 100644 index 0000000000..5e7c2622d5 --- /dev/null +++ b/keyboard/planck/keymaps/cbbrowne/config_user.h @@ -0,0 +1,6 @@ +/* cbbrowne user configuration */ + +#define randadd 53 +#define randmul 181 +#define randmod 167 + diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index f46ca85de9..942efe4a29 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -2,6 +2,7 @@ #ifdef BACKLIGHT_ENABLE #include "backlight.h" #endif +#include "config_user.h" /* Each layer is given a name to aid in readability, which is then used in the keymap matrix below. The underscores do not denote @@ -19,26 +20,25 @@ /* Things I did not like about the default mapping - - I find control too hard to get to. I think I'll want it on a - left finger. Gonna need to lose something to do that... - - Almost certainly, KC_LCTL should be on [2][1] - - having dash on [lower-j] is a bit nonintuitive, but may be OK + - I found control too hard to get to. I use it more than Tab, so + switched it there. + - Having dash on [lower-j] is a bit nonintuitive, but may be OK - I'll bet I should switch ESC/TAB - I'm suspicious that I want to shift M(0) from [4][1] to [4][2], and shift ESC off the first column so KC_LCTL and KC_LALT can be on the first column. - - I think I wanna swap ' and ENTER + - I needed to swap ' and ENTER - All of the above are done :-) - - I'm keeping Colemak and Dvorak around for reference, and added - Workman just for fun. They're useless to me, though. + - Dropped out support for Dvorak and friends. They aren't + improvements to me */ /* Some interesting things implemented - - There is a macro that writes out "cbbrowne" just because I could + - There is a macro that writes out "cbbrowne" to show that I could - There is a (somewhat cruddy) linear congruential random number generator. - I would like to be seeding it with clock info to make it look @@ -50,16 +50,15 @@ of the random number generator - in both, note the use of register_code()/unregister_code() to indicate the desired key + - I do indeed want a sweet number pad! */ /* Other things to do... - Need to think about what zsh and readline actions I use lots - - Wanna figure out macros, so I can put in a "cbbrowne" macro - Ought to ensure that Control-Alt-Delete is convenient enough - How about Alt-F1 thru Alt-F8? - What's the keystroke to get from X to console these days? - - I do indeed want a sweet number pad! - A layer for doing console switching would not be a bad idea */ @@ -112,9 +111,6 @@ const uint16_t PROGMEM fn_actions[] = { /* This bit of logic seeds a wee linear congruential random number generator */ /* lots of prime numbers everywhere... */ static uint16_t random_value = 157; -#define randadd 53 -#define randmul 181 -#define randmod 167 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboard/planck/keymaps/cbbrowne/readme.md b/keyboard/planck/keymaps/cbbrowne/readme.md new file mode 100644 index 0000000000..edb33f483d --- /dev/null +++ b/keyboard/planck/keymaps/cbbrowne/readme.md @@ -0,0 +1,63 @@ +cbbrowne custom keyboard +============================== + +Due to cbbrowne@acm.org +Christopher Browne + +This was originally based on the default keyboard map, but I have been +doing sundry experimentation: + +1. Experiments +---------------------------------------- + + * To figure things out about the toolset + * I'm an Emacs guy, so will be needing a fair bit of tuning + * It made sense to mess around some with keyboard maps. + - I tried added Workman alongside Dvorak and Colemak + - Boy, oh boy, these don't help!!! + - I have done 30 years of learning of Emacs key mappings, and + these alternative keyboards massively mess me up + - I added a keypad, originally based on keymaps/numpad.c, but + mighty substantially revised, as that one seems to be rotated 90 + degrees from usual conventions for number pads + * The keypad layer also includes some sample "hacks" of cool things, + all using actions attached in using the function action_get_macro() + - Key [1][2] aka "q" types out my name, cbbrowne, as a fun example + of a key generating a bunch of keystrokes. The keystroke is + sufficiently inconvenient that it isn't terribly practical for me + to use it, but hey, it shows how others might use this facility + in a more useful context. + - Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random + - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random + +2. Some code structure ideas +--------------------------------------------------- + + Each layer is given a name to aid in readability, which is then + used in the keymap matrix below. The underscores do not denote + 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 could also skip them entirely and just use numbers, though that + means needing to manage the numbers. + + It is preferable to keep the symbols short so that a line worth of + key mappings fits compactly onto a line of code. It might be an + interesting idea to express the maps rotated 90%, so that you + only need to fit 4 symbols onto each line, rather than 12. + + I used enums to manage layer IDs and macro IDs so that I don't need + to care (beyond "start at 0", and arguably that's not needed) about + their values. + +3. Things I did not like about the default mapping +--------------------------------------------------------- + + * I found control too hard to get to. I use it more than Tab, so + switched it there. + * Having dash on [lower-j] is a bit nonintuitive, but may be OK + * I switched ESC/TAB/M(0) around + * I'm suspicious that I want to shift M(0) from [4][1] to [4][2], + and shift ESC off the first column so KC_LCTL and KC_LALT can + be on the first column. + * I needed to swap ' and ENTER -- cgit v1.2.1 From 2fe06e4ef53f380eee6e91ece44f6a385ec32c2c Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Mon, 13 Jun 2016 17:22:45 -0400 Subject: Simplify submitting my fave cbbrowne keystroke by using SEND_STRING() --- keyboard/planck/keymaps/cbbrowne/config_user.h | 1 + keyboard/planck/keymaps/cbbrowne/keymap.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboard/planck/keymaps/cbbrowne/config_user.h b/keyboard/planck/keymaps/cbbrowne/config_user.h index 5e7c2622d5..de46ec6aaa 100644 --- a/keyboard/planck/keymaps/cbbrowne/config_user.h +++ b/keyboard/planck/keymaps/cbbrowne/config_user.h @@ -4,3 +4,4 @@ #define randmul 181 #define randmod 167 + diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index 942efe4a29..041f4e608e 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -3,6 +3,7 @@ #include "backlight.h" #endif #include "config_user.h" +#include "quantum.h" /* Each layer is given a name to aid in readability, which is then used in the keymap matrix below. The underscores do not denote @@ -131,7 +132,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case M_USERNAME: if (record->event.pressed) { - return MACRO( I(1), T(C), T(B), T(B), T(R), T(O), T(W), T(N), T(E)); + SEND_STRING("cbbrowne"); + return MACRO_NONE ; } else { return MACRO_NONE ; } -- cgit v1.2.1 From de2f95bc6f14893bc6fb293bd8eaa76f6f619c2e Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Mon, 13 Jun 2016 17:33:26 -0400 Subject: Local change, not apropos to have in this repo --- cbbrowne.cbbrowne | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 cbbrowne.cbbrowne diff --git a/cbbrowne.cbbrowne b/cbbrowne.cbbrowne deleted file mode 100644 index 622e4eedf8..0000000000 --- a/cbbrowne.cbbrowne +++ /dev/null @@ -1,25 +0,0 @@ -* * * * * /home/cbbrowne/bin/cookie > /dev/null 2> /dev/null -2 2-5 * * * /home/cbbrowne/GitConfig/Scripts/cfcleanup > /dev/null 2> /dev/null -#2,22,42 * * * * /usr/bin/offlineimap -u Noninteractive.Quiet > /dev/null 2> /dev/null -# Edit this file to introduce tasks to be run by cron. -# -# Each task to run has to be defined through a single line -# indicating with different fields when the task will be run -# and what command to run for the task -# -# To define the time you can provide concrete values for -# minute (m), hour (h), day of month (dom), month (mon), -# and day of week (dow) or use '*' in these fields (for 'any').# -# Notice that tasks will be started based on the cron's system -# daemon's notion of time and timezones. -# -# Output of the crontab jobs (including errors) is sent through -# email to the user the crontab file belongs to (unless redirected). -# -# For example, you can run a backup of all your user accounts -# at 5 a.m every week with: -# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ -# -# For more information see the manual pages of crontab(5) and cron(8) -# -# m h dom mon dow command -- cgit v1.2.1 From c5a034f98462b46ca9d694022c9f3f6a550d25ee Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Mon, 13 Jun 2016 17:59:26 -0400 Subject: Simplify logic; no need to return so much --- keyboard/planck/keymaps/cbbrowne/keymap.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index 041f4e608e..482cf63e11 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -133,9 +133,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case M_USERNAME: if (record->event.pressed) { SEND_STRING("cbbrowne"); - return MACRO_NONE ; - } else { - return MACRO_NONE ; } break; case M_RANDDIGIT: -- cgit v1.2.1 From 211ebe8734065ebdabe49fe18367fad020a7cd8d Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 11:19:51 -0400 Subject: Add in a version key --- keyboard/planck/keymaps/cbbrowne/keymap.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index 482cf63e11..70b15406b7 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -74,7 +74,8 @@ enum macro_id { M_LED = 0, M_USERNAME, M_RANDDIGIT, - M_RANDLETTER + M_RANDLETTER, + M_VERSION }; /* Note that Planck has dimensions 4 rows x 12 columns */ @@ -99,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TRNS, DF(_KP), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_KP] = { /* Key Pad */ - {KC_ESC, M(M_USERNAME), KC_F9, KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, + {KC_ESC, M(M_USERNAME), M(M_VERSION), KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, {KC_LCTL, M(M_RANDDIGIT), KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_KP_MINUS, KC_4, KC_5, KC_6, KC_PIPE}, {KC_LSFT, M(M_RANDLETTER), KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_KP_PLUS, KC_1, KC_2, KC_3, KC_ENTER}, {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QW), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} @@ -135,6 +136,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) SEND_STRING("cbbrowne"); } break; + case M_VERSION: + if (record->event.pressed) { + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP "@" QMK_VERSION); + } + break; case M_RANDDIGIT: /* Generate, based on random number generator, a keystroke for a numeric digit chosen at random */ -- cgit v1.2.1 From 4e1bc2d298defff58316cac9de00f0495b02c742 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 11:25:08 -0400 Subject: Add docs --- keyboard/planck/keymaps/cbbrowne/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboard/planck/keymaps/cbbrowne/readme.md b/keyboard/planck/keymaps/cbbrowne/readme.md index edb33f483d..c676dd2c1c 100644 --- a/keyboard/planck/keymaps/cbbrowne/readme.md +++ b/keyboard/planck/keymaps/cbbrowne/readme.md @@ -28,7 +28,8 @@ doing sundry experimentation: to use it, but hey, it shows how others might use this facility in a more useful context. - Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random - - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random + - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random + - Key [1][3] aka "e" spits out the keymap version number 2. Some code structure ideas --------------------------------------------------- -- cgit v1.2.1 From bb0e0c7eba5fd37df5b66cd77fc8b0a382ef48b1 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 11:36:27 -0400 Subject: Split build date into a separate DEFINE --- Makefile | 6 +++--- keyboard/planck/keymaps/cbbrowne/keymap.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index e93528600d..2c35e0f108 100644 --- a/Makefile +++ b/Makefile @@ -114,7 +114,7 @@ include $(TMK_PATH)/protocol/lufa.mk include $(TMK_PATH)/common.mk include $(TMK_PATH)/rules.mk -GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d") - +GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null) +BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" -OPT_DEFS += -DQMK_VERSION=\"$(GIT_VERSION)\" +OPT_DEFS += -DQMK_VERSION=\"$(GIT_VERSION)\" -DQMK_BUILDDATE=\"$(BUILD_DATE)\" diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index 70b15406b7..7fe391ec5d 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -138,7 +138,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case M_VERSION: if (record->event.pressed) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP "@" QMK_VERSION); + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP "@" QMK_VERSION "@" QMK_BUILDDATE); } break; case M_RANDDIGIT: -- cgit v1.2.1 From 90d057635545109d110f38b94d852ecd29321fe1 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 18:29:27 -0400 Subject: Ensure there is a value even if not working within a git repo --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2c35e0f108..47fc785a6e 100644 --- a/Makefile +++ b/Makefile @@ -114,7 +114,7 @@ include $(TMK_PATH)/protocol/lufa.mk include $(TMK_PATH)/common.mk include $(TMK_PATH)/rules.mk -GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null) +GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" OPT_DEFS += -DQMK_VERSION=\"$(GIT_VERSION)\" -DQMK_BUILDDATE=\"$(BUILD_DATE)\" -- cgit v1.2.1 From 6e0270b52feab831dbbf4d2269ab039d8cb29fc2 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 18:34:47 -0400 Subject: Should not include the compiled code in the repo --- keyboard/planck/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboard/planck/.gitignore b/keyboard/planck/.gitignore index 6e92f57d46..fc71164f75 100644 --- a/keyboard/planck/.gitignore +++ b/keyboard/planck/.gitignore @@ -1 +1,2 @@ tags +compiled.hex -- cgit v1.2.1 From 6d485b0ecdf9de7792a6bbfeb17b08ebb57a1c53 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 18:35:38 -0400 Subject: compiled.hex files should not be included in the repo; they represent generated compiled code --- keyboard/planck/keymaps/alexey/compiled.hex | 1444 ----------------- .../planck/keymaps/angerthosenear/compiled.hex | 1449 ----------------- keyboard/planck/keymaps/austin/compiled.hex | 1449 ----------------- keyboard/planck/keymaps/bone2planck/compiled.hex | 1450 ----------------- keyboard/planck/keymaps/brandon/compiled.hex | 1456 ----------------- keyboard/planck/keymaps/charlie/compiled.hex | 1445 ----------------- keyboard/planck/keymaps/daniel/compiled.hex | 1448 ----------------- keyboard/planck/keymaps/david/compiled.hex | 1449 ----------------- keyboard/planck/keymaps/default/compiled.hex | 1611 ------------------- keyboard/planck/keymaps/dzobert/compiled.hex | 1449 ----------------- keyboard/planck/keymaps/experimental/compiled.hex | 1645 -------------------- keyboard/planck/keymaps/gabriel/compiled.hex | 1450 ----------------- keyboard/planck/keymaps/jacob/compiled.hex | 1444 ----------------- keyboard/planck/keymaps/joe/compiled.hex | 1479 ------------------ keyboard/planck/keymaps/kyle/compiled.hex | 1449 ----------------- keyboard/planck/keymaps/leo/compiled.hex | 1454 ----------------- keyboard/planck/keymaps/lucas/compiled.hex | 1471 ----------------- keyboard/planck/keymaps/lukas/compiled.hex | 1446 ----------------- keyboard/planck/keymaps/max/compiled.hex | 1449 ----------------- keyboard/planck/keymaps/mollat/compiled.hex | 1495 ------------------ keyboard/planck/keymaps/nico/compiled.hex | 1456 ----------------- keyboard/planck/keymaps/pete/compiled.hex | 1143 -------------- keyboard/planck/keymaps/pvc/compiled.hex | 1635 ------------------- keyboard/planck/keymaps/tak3over/compiled.hex | 1456 ----------------- keyboard/planck/keymaps/unicode/compiled.hex | 1185 -------------- keyboard/planck/keymaps/yang/compiled.hex | 1318 ---------------- 26 files changed, 37625 deletions(-) delete mode 100644 keyboard/planck/keymaps/alexey/compiled.hex delete mode 100644 keyboard/planck/keymaps/angerthosenear/compiled.hex delete mode 100644 keyboard/planck/keymaps/austin/compiled.hex delete mode 100644 keyboard/planck/keymaps/bone2planck/compiled.hex delete mode 100644 keyboard/planck/keymaps/brandon/compiled.hex delete mode 100644 keyboard/planck/keymaps/charlie/compiled.hex delete mode 100644 keyboard/planck/keymaps/daniel/compiled.hex delete mode 100644 keyboard/planck/keymaps/david/compiled.hex delete mode 100644 keyboard/planck/keymaps/default/compiled.hex delete mode 100644 keyboard/planck/keymaps/dzobert/compiled.hex delete mode 100644 keyboard/planck/keymaps/experimental/compiled.hex delete mode 100644 keyboard/planck/keymaps/gabriel/compiled.hex delete mode 100644 keyboard/planck/keymaps/jacob/compiled.hex delete mode 100644 keyboard/planck/keymaps/joe/compiled.hex delete mode 100644 keyboard/planck/keymaps/kyle/compiled.hex delete mode 100644 keyboard/planck/keymaps/leo/compiled.hex delete mode 100644 keyboard/planck/keymaps/lucas/compiled.hex delete mode 100644 keyboard/planck/keymaps/lukas/compiled.hex delete mode 100644 keyboard/planck/keymaps/max/compiled.hex delete mode 100644 keyboard/planck/keymaps/mollat/compiled.hex delete mode 100644 keyboard/planck/keymaps/nico/compiled.hex delete mode 100644 keyboard/planck/keymaps/pete/compiled.hex delete mode 100644 keyboard/planck/keymaps/pvc/compiled.hex delete mode 100644 keyboard/planck/keymaps/tak3over/compiled.hex delete mode 100644 keyboard/planck/keymaps/unicode/compiled.hex delete mode 100644 keyboard/planck/keymaps/yang/compiled.hex diff --git a/keyboard/planck/keymaps/alexey/compiled.hex b/keyboard/planck/keymaps/alexey/compiled.hex deleted file mode 100644 index deddcea06a..0000000000 --- a/keyboard/planck/keymaps/alexey/compiled.hex +++ /dev/null @@ -1,1444 +0,0 @@ -:100000000C9461020C94A5020C94A5020C94A50218 -:100010000C94A5020C94A5020C94A5020C94A502C4 -:100020000C94A5020C94A5020C9452140C94241563 -:100030000C9486220C94A5020C94A5020C94A502A3 -:100040000C94A5020C9407030C94A5020C94A50231 -:100050000C94A5020C94EE220C94A5020C94A5021B -:100060000C94A5020C94A5020C94A5020C94A50274 -:100070000C94A5020C94A5020C94A5020C94A50264 -:100080000C94C70A0C94A5020C94A5020C94A5022A -:100090000C94A5020C94A5020C94A5020C94A50244 -:1000A0000C94A5020C94A5020C94A5029115B3150D -:1000B000A116B315A116F8151B16A11670168316F6 -:1000C0006D196D199C199C19DB19FB19511B511BDA -:1000D000061A511BB61AB61A1D1B261B511B4B1BA9 -:1000E000C31AC31AC31AC31AC31AC31AC31AC31A28 -:1000F000C31AC31AC31AC31AC31AC31AC31AC31A18 -:10010000D31AE11AE81AEF1AF91A07634236B79BB5 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000002B001400ED -:1001D0001A000800150017001C0018000C0012007F -:1001E00013002A00290004001600070009000A0075 -:1001F0000B000D000E000F003300015201001D0026 -:100200001B00060019000500110010003600370021 -:10021000380001000030E300E200E000E1002C00C3 -:100220002C0002522D00340028000100010049007A -:100230004A0052004D004B000100400041004200C6 -:100240004300010001004C00500051004F004E00DF -:1002500001003D003E003F0044000100010001009C -:10026000010001000100010001003A003B003C00D8 -:100270004500010001000100010001000100010032 -:100280000100AA00A900AB00AE00010001001E029F -:100290001F022F02300231024B00240025002600ED -:1002A000250201000100200221022602270235005A -:1002B0004E002100220023002E0201000100220234 -:1002C00023022F003000350224021E001F002000F0 -:1002D000310001000100010049000100010001009E -:1002E00001000100010027002E0001002803540036 -:1002F00068006500200050006C0061006E00630023 -:100300006B0020004B006500790062006F00610007 -:100310007200640000002C034F007200740068003B -:100320006F006C0069006E006500610072002000C3 -:100330004B006500790062006F006100720064008C -:10034000730000000403090409026D00040100A009 -:10035000FA09040000010301010009211101000153 -:10036000223F000705810308000A09040100010378 -:10037000010200092111010001224D00070582033D -:1003800008000A090402000103000000092111010C -:1003900000012236000705830308000A0904030050 -:1003A00001030000000921110100012239000705A5 -:1003B00084031000011201100100000008EDFE602E -:1003C0006001000102000105010906A101050719EC -:1003D000E029E71500250195087501810205081936 -:1003E0000129059505750191029501750391010596 -:1003F000071900297715002501957875018102C03C -:1004000005010980A101850216010026B7001A0125 -:10041000002AB700751095018100C0050C0901A1E3 -:10042000018503160100269C021A01002A9C027510 -:100430001095018100C005010902A1010901A10077 -:100440000509190129051500250195057501810288 -:100450009501750381010501093009311581257F59 -:1004600095027508810609381581257F9501750863 -:100470008106050C0A38021581257F9501750881D2 -:1004800006C0C005010906A101050719E029E71505 -:100490000025019508750181029501750881010506 -:1004A00008190129059505750191029501750391BA -:1004B000010507190029FF150025FF95067508811C -:1004C00000C011241FBECFEFDAE0DEBFCDBF04B6FF -:1004D00003FE24C080911E0390911F03A09120036E -:1004E000B09121038730904BA740B04BB9F41092E4 -:1004F0001E0310921F03109220031092210314BEBA -:1005000084B7877F84BF88E10FB6F894809360003A -:10051000109260000FBEE0E0F8E3099511E0A0E062 -:10052000B1E0E6E6F9E502C005900D92A03CB10706 -:10053000D9F713E0A0ECB1E001C01D92AE31B107D4 -:10054000E1F70E9498110C94B12C0C9400000895CE -:10055000089581E0089508950C94A8020C94A902CE -:100560000C94AB020E947B2823E030E0281B310969 -:10057000220F2093C4010895282F2F988091800086 -:10058000211108C0877F8093800010928D00109207 -:100590008C001BC0886080938000233019F48FEF9B -:1005A0009FEF0FC083E090E0821B9109880F991F95 -:1005B0002FEF3FEFA90102C0569547958A95E2F7C4 -:1005C000CA0190938D0080938C000C94B2020E941B -:1005D000B20284E08093C3011092C0010895279A6B -:1005E0002F988FEF9FEF90938700809386008AE08B -:1005F0008093800089E1809381000E94E4270C941D -:10060000E7020E94EF026E9A769A0C94A7021F925C -:100610000F920FB60F9211242F933F938F939F93B6 -:10062000EF93FF93E091C101F091C201CF010196D8 -:100630009093C2018093C1010090C30102C0F6955E -:10064000E7950A94E2F7EF738091C001823019F4C4 -:10065000E03251F404C0813039F4EF3329F4809151 -:100660006F008D7F80936F00F0E0E457FE4FE491C0 -:1006700021E031E0E29FC001E39F900D1124009042 -:10068000C40102C0969587950A94E2F790938D0075 -:1006900080938C00FF91EF919F918F913F912F91CB -:1006A0000F900FBE0F901F90189561110DC0FC01A7 -:1006B0008281882331F085EE0E9411180E943B2828 -:1006C00003C085EE0E94D91880E090E0089581E093 -:1006D00008950C94670308950C940103809115020A -:1006E000882309F448C08091D1019091D2010097EC -:1006F00079F40E94B8229093D2018093D101809125 -:10070000D30190E0009771F48091D40190E00AC089 -:100710000E94C4222091000130910101281739075D -:1007200040F329C00197880F991F880F991FFC017A -:10073000EB52FE4F60817181828193810E942D0A6C -:10074000E091D30184E0E89FF0011124EB52FE4FC9 -:1007500060817181828193814FE050E00E94E50DBC -:100760008091D30190E001966091D40170E00E94E5 -:10077000612C8093D3010C94AC02109217020C945C -:10078000FA090895089581E0809317020C94C2033A -:10079000089508958F929F92AF92BF92EF92FF9229 -:1007A0000F931F93CF93DF93CDB7DEB7A3970FB609 -:1007B000F894DEBF0FBECDBF7C01FC01008111812A -:1007C000C8010E94B520B8010E94CC058C01B70178 -:1007D0000E946903882309F4CCC10032F0E51F07A9 -:1007E00041F4F7018281882309F458C00E94490E20 -:1007F000C0C10132F0E51F0741F4F701828188236F -:1008000009F44CC00E94520EB4C10232F0E51F0739 -:1008100051F4F7018281882309F440C00E94450EFB -:100820008111F0CFE3CF0332F0E51F0739F4F70170 -:100830008281882399F10E94C3039BC10432F0E5B1 -:100840001F0739F4F7018281882341F10E94BD031B -:1008500090C10532F0E51F0749F4F7018281882332 -:10086000E9F0809117028111F1CFE5CF0632F0E572 -:100870001F0739F4F7018281882381F00E94590E05 -:100880000AC00732F0E51F0749F4F7018281882387 -:1008900029F00E94640E0E94C9036BC18091170267 -:1008A000811105C0F70182818111CFC018C1003EBE -:1008B000110579F4F7018281882309F44DC00E9463 -:1008C000FA0981E080931602109215021092D40169 -:1008D00050C1023E110559F4F70182818823E1F1EC -:1008E0000E94FA09109216021092150242C1033EAC -:1008F000110591F4F7018281882371F10E94FA09B0 -:100900001092160281E0809315021092D30110928A -:10091000D2011092D1012DC10235110559F4F70110 -:100920008281882309F425C1809100019091010101 -:100930000A970DC00135110579F4F70182818823EA -:1009400009F417C180910001909101010A969093DA -:100950000101809300010DC14091040183E2EFE1A8 -:10096000F1E0DE01119601900D928A95E1F7F70111 -:10097000808121E030E02C0F3D1F280F311DC9017F -:100980002091020130910301FC01E20FF31F60810D -:10099000772767FD7095640F711D882777FD809517 -:1009A000982F0E94832920E030E040E451E40E9427 -:1009B000E8284B015C01F701218184E090E0821B73 -:1009C0009109BC01882777FD8095982F0E94832983 -:1009D0009B01AC01C501B4010E9480289B01AC01C0 -:1009E00060E070E080E090E40E94F62A20E030E0D1 -:1009F0004CED50E40E94932A4B015C01F701828187 -:100A00008823D1F04FE050E0C501B4010E94E50D0C -:100A1000809116028823A1F08091D40124E0829F66 -:100A2000F0011124EB52FE4F80829182A282B382A8 -:100A30008F5F8093D40104C0C501B4010E942D0AC8 -:100A40000F3F110508F02ECF94C08091D001811185 -:100A50001FC0043130E5130709F051C00E946B0339 -:100A600081E08093D0010E94B8229093CF018093BF -:100A7000CE011092C7011092C9011092C8011092C4 -:100A8000CB011092CA011092CD011092CC0171C01D -:100A90008091CE019091CF010E94C422883C9105A3 -:100AA00070F48091C701E82FF0E0EE0FFF1FE853CC -:100AB000FE4F118300838F5F8093C7015AC00438B3 -:100AC00080E5180721F00538104501F13AC0F7011B -:100AD0008281882341F01092C50182E01EC0043853 -:100AE00030E5130759F58091C501811106C086E2F2 -:100AF0000E94111886E20E94D91882E01CC00438B6 -:100B0000F0E51F0741F305381045D9F4F70182815C -:100B1000882331F01092C60180E20E94281929C072 -:100B20008091C601811106C087E20E94111887E2F8 -:100B30000E94D91880E20E942F191BC00538104569 -:100B400029F381E08093C5018093C601C701A39674 -:100B50000FB6F894DEBF0FBECDBFDF91CF911F91CE -:100B60000F91FF90EF90BF90AF909F908F900C945B -:100B7000AE0280E0A3960FB6F894DEBF0FBECDBFE5 -:100B8000DF91CF911F910F91FF90EF90BF90AF90A9 -:100B90009F908F90089508959CE0799FF001112413 -:100BA00090E3899FE00DF11D1124E60FF11DEE0F7A -:100BB000FF1FE453FE4F859194910895880F991F6C -:100BC000FC01E45BFF4F859194910895880F991F74 -:100BD000FC01E453FE4F8591949108950F931F9368 -:100BE000CF93DF93EC01811521E39207A0F5C115A6 -:100BF00080E3D80708F0D7C0C83ED105D8F4C03E7E -:100C0000D10508F007C2C83AD10578F4C53AD10534 -:100C100008F06AC0C130D10509F463C008F4F7C117 -:100C2000C430D10508F0F6C1F2C1CB3BD10508F4C0 -:100C300066C0EDC1C11590E2D90708F0AFC0C1157B -:100C400021E0D20708F0E6C1C03FD10508F4DFC1BA -:100C50008E0110651FC2C03880E5D80700F5C03787 -:100C600090E5D90708F0A3C0C11520E5D20709F423 -:100C7000ACC050F4CE01905480319F4008F0C7C101 -:100C8000DF708E01106A06C2C13080E5D80709F412 -:100C9000AEC0C43190E5D90708F4AFC0B8C1C338BD -:100CA00020E5D20709F48EC050F4C13890E5D90789 -:100CB00009F482C008F083C000E011EDEBC1C0313F -:100CC00081E5D80708F4A3C1C11597E5D90708F451 -:100CD00036C1CE0190578115904108F098C1DF7060 -:100CE00093C101E010E0D6C1C53AD10509F494C121 -:100CF000C63AD10509F093C102E810E4CBC1C83A65 -:100D0000D10509F48FC1C93AD10509F48EC1CA3A97 -:100D1000D10509F48DC1CB3AD10509F48CC1CC3A87 -:100D2000D10509F48BC1CD3AD10509F48AC1C03B84 -:100D3000D10509F489C1CE3AD10509F488C1CF3A69 -:100D4000D10509F487C1C13BD10509F486C1C23B75 -:100D5000D10509F485C1C33BD10509F484C1C43B65 -:100D6000D10509F483C1C53BD10509F482C1C63B55 -:100D7000D10509F481C1C73BD10509F480C1C83B45 -:100D8000D10509F47FC1C93BD10509F47EC1CA3B35 -:100D9000D10509F47DC100E014E47CC1CE019F704F -:100DA0000E94E60578C1DD278E01106C73C1CF70FB -:100DB000DD278E01146D6EC100E010ED6BC100E007 -:100DC00012ED68C100E013ED65C10E94BC1B0E94DA -:100DD000FA090E94C1038FEF94E32CE08150904008 -:100DE0002040E1F700C000000E94132353C180910E -:100DF000F20281608093F2024DC10E94742381113E -:100E000002C00E9450230E94872390E090931D030C -:100E100080931C03C23080E5D80721F480911C0325 -:100E2000816086C0C43090E5D90721F480911C030D -:100E300082607EC0C63020E5D20721F480911C0379 -:100E4000846076C0C83080E5D80719F480911C030F -:100E500027C0CA3090E5D90721F480911C03806136 -:100E600067C0CC3020E5D20721F480911C0380625A -:100E70005FC0CE3080E5D80721F480911C038064E8 -:100E800057C0C03190E5D90721F480911C038068D8 -:100E90004FC0C23120E5D20729F480911C03846041 -:100EA000886046C0C33080E5D80721F480911C03D8 -:100EB0008E7F3EC0C53090E5D90721F480911C0398 -:100EC0008D7F36C0C73020E5D20721F480911C0306 -:100ED0008B7F2EC0C93080E5D80719F480911C03A0 -:100EE00026C0CB3090E5D90721F480911C038F7E7A -:100EF0001FC0CD3020E5D20721F480911C038F7DE7 -:100F000017C0CF3080E5D80721F480911C038F7B78 -:100F10000FC0C13190E5D90721F480911C038F7770 -:100F200007C0C331D04531F480911C038B7F877F8C -:100F300080931C0380911C030E948B23ABC08D2FD8 -:100F400099278F70992781309105D9F49E012370DC -:100F5000332702C0880F991F2A95E2F79C688E01FB -:100F600044E0000F111F4A95E1F700271370802B12 -:100F7000912B53E0CC0FDD1F5A95E1F7C076DD27AA -:100F80002FC08230910531F4DC2FCC278E01016F08 -:100F9000106A80C08330910569F4CE01837099276F -:100FA00001E010E002C0000F111F8A95E2F7C801AE -:100FB0009C680FC084309105B9F4CE0183709927E5 -:100FC00001E010E002C0000F111F8A95E2F7C8018E -:100FD0009A6823E0CC0FDD1F2A95E1F7C07ED77019 -:100FE0008C010C2B1D2B56C08530910531F4DC2F64 -:100FF000CC278E01046F106A4DC0069709F04AC0D5 -:10100000CF71DD27DC2FCC278E01106243C000E0BA -:1010100010E040C08E013EC001E810E43BC003E890 -:1010200010E438C002EE14E435C009EE14E432C016 -:101030000AEE14E42FC005EB14E42CC006EB14E414 -:1010400029C007EB14E426C00CEC14E423C00DEC1B -:1010500014E420C003E815E41DC00AE815E41AC032 -:1010600002E915E417C004E915E414C001E216E42E -:1010700011C003E216E40EC004E216E40BC005E260 -:1010800016E408C006E216E405C007E216E402C052 -:101090000AE216E4C801DF91CF911F910F910895E4 -:1010A0009CE0799FF001112490E3899FE00DF11DF0 -:1010B0001124E60FF11DEE0FFF1FE453FE4F859143 -:1010C0009491803E9105E0F4803C910558F5813380 -:1010D000910509F46FC048F48932910509F463C0A1 -:1010E0008A32910509F46DC072C089339105E9F027 -:1010F00082389105D1F08533910509F44DC067C060 -:10110000833E910581F138F4803E9105B9F0823E2D -:101110009105D9F05CC0863E910561F1873E91054D -:10112000A1F155C00E94DE05089520911C0320FD09 -:1011300002C021FF4CC080EE90E049C080911C03AA -:1011400080FFF9CF89E390E042C080911C0382FFC9 -:101150000EC080911C0384FF03C080E090E037C084 -:1011600083EE90E034C080911C0382FFF2CF82EEC8 -:1011700090E02DC080911C0383FF0BC080911C0365 -:1011800084FDEBCF87EE90E022C080911C0383FFAB -:10119000F5CF86EE90E01BC080911C0385FF07C051 -:1011A00089E290E014C080911C0385FFF9CF85E3AC -:1011B00090E00DC080911C0386FF07C08AE290E09A -:1011C00006C080911C0386FFF9CF81E390E00E9466 -:1011D000EE0508950C94B002E82FF0E0E25BFE4FBC -:1011E0008081E82FEF70F0E082958F7021E030E091 -:1011F000A90102C0440F551F8A95E2F740A3089544 -:101200000F931F93CF93DF9385B7806885BF85B712 -:10121000806885BFC3E0D0E001E010E0FE01E25B42 -:10122000FE4F8081E82FEF70F0E021A182958F7052 -:10123000A80102C0440F551F8A95E2F7CA01822B0C -:1012400081A38C2F0E94EC08219740F78BE090E05F -:1012500061E070E0FC01EE5BFE4F2081E22FEF7059 -:10126000F0E042A122952F70DB0102C0AA0FBB1F44 -:101270002A95E2F79D01242B22A3019758F7DF91CD -:10128000CF911F910F910C946C03EF92FF920F93EB -:101290001F93CF93DF9300E212E0C3E0EE24E394C8 -:1012A000F12CD5E08C2F0E94EC088BE090E040E020 -:1012B00050E0FC01EE5BFE4F6081E62FEF70F0E046 -:1012C00020A130E062956F7002C0359527956A9530 -:1012D000E2F720FD09C09701082E02C0220F331F3C -:1012E0000A94E2F7422B532B019718F7F8019291D9 -:1012F00082918F018417950721F051834083D09309 -:1013000005018C2F0E94EC08C15060F68091050108 -:1013100087FD2CC08150809305018F3F39F08FE904 -:101320009FE00197F1F700C0000020C080911E02ED -:1013300090911F02909327028093260280911C02B5 -:1013400090911D02909325028093240280911A02AD -:1013500090911B02909323028093220280911802A5 -:101360009091190290932102809320020E946E03B3 -:1013700081E0DF91CF911F910F91FF90EF90089541 -:10138000E82FF0E0EE0FFF1FE05EFD4F80819181BE -:10139000089508950F931F93CF9308E212E0C0E0E1 -:1013A000F801929182918F010E943022C80FF2E0E1 -:1013B00000321F07A9F78C2FCF911F910F9108952D -:1013C0000E947423811102C00E9450230E9499231D -:1013D000809307033E9A809171008D7F8093710006 -:1013E00082E0809390008AE18093910081E0809375 -:1013F0002A02089580912A02811102C00E94E00908 -:1014000010927A0210927902809171008D7F809300 -:101410007100809190008F738093900010923C0235 -:1014200010923B0210927302109274021092750295 -:10143000109276021092720210927102E1E5F2E0CF -:10144000A1E4B2E011921192119211921D921D929B -:1014500082E0E137F807B1F70895CF92DF92EF927B -:10146000FF920F931F93CF93DF9320913B02222390 -:1014700009F484C06B017C0180912A02811102C0B1 -:101480000E94E00901E712E0C7E0D0E0A701960161 -:10149000F80192918291729162918F010E94E428E9 -:1014A000811131C0FE01EE0FFF1FEE0FFF1FEF5A3B -:1014B000FD4F1082118212821382DE01AA0FBB1F20 -:1014C000AF5BBD4F11961C921E92C730D105E9F05B -:1014D000219644815581668177814083518362835F -:1014E0007383148215821682178212968D919C91B5 -:1014F000139711969C938E9313961C921E9212979B -:1015000034961296E2CF219708F680917902909155 -:101510007A02019797FD05C090937A028093790231 -:1015200004C010927A02109279028091790290910F -:101530007A0220917702309178022817390724F037 -:101540001092780210927702892BC1F48091710079 -:101550008D7F80937100809190008F7380939000B5 -:101560001092730210927402109275021092760219 -:10157000109272021092710210923B02DF91CF9191 -:101580001F910F91FF90EF90DF90CF9008951F92E1 -:101590000F920FB60F9211244F925F926F927F922B -:1015A0008F929F92AF92BF92CF92DF92EF92FF9273 -:1015B0002F933F934F935F936F937F938F939F935B -:1015C000AF93BF93CF93DF93EF93FF9380913B0251 -:1015D000882309F49BC1C0917902D0917A021C162C -:1015E0001D060CF093C140902B0250902C0260908D -:1015F0002D0270902E0220E030E0A901C301B2015B -:101600000E948F2A18160CF065C0C130D10509F46C -:1016100052C08091770290917802BE010E94612CA5 -:101620007C01909378028093770280903D029090A5 -:101630003E02A0903F02B090400220E030E040E83F -:101640005FE3C501B4010E94802860933D0270935E -:101650003E0280933F0290934002F701EE0FFF1F7E -:10166000EE0FFF1FEF5AFD4FA301920160817181C0 -:10167000828193810E94E82820E030E040E05EE330 -:101680000E94932A9B01AC01C501B4010E948F2ADC -:1016900018168CF4C7010196BE010E94612C90932C -:1016A00078028093770210923D0210923E021092CF -:1016B0003F0210924002E0917702F0917802EE0F23 -:1016C000FF1FEE0FFF1FEF5AFD4F60817181828176 -:1016D0009381D0C0C0907302D0907402E0907502E4 -:1016E000F090760220E030E0A901C701B6010E9427 -:1016F000E4282197882309F4A2C0FE01EE0FFF1F02 -:10170000EE0FFF1FEF5AFD4F80809180A280B380C3 -:10171000A5019401C701B6010E94E42887FF31C0EA -:10172000A501940160E070E08CED93EC0E94E82844 -:1017300020E030E040E451E40E94E82820E030E07E -:1017400040E05FE30E94932A9B01AC0160E070E0FF -:1017500080E090E40E94F62A9B01AC01C501B4012F -:101760000E94932A9B01AC01C701B6010E94E428A4 -:1017700087FF07C0A701960160E070E08CED93E45D -:1017800039C0A5019401C701B6010E948F2A18161D -:101790000CF055C0A501940160E070E08CED93E47D -:1017A0000E94E82820E030E040E451E40E94E8286C -:1017B00020E030E040E05FE30E94932A9B01AC010F -:1017C00060E070E080E090E40E94F62A9B01AC01AA -:1017D000C501B4010E94932A9B01AC01C701B60167 -:1017E0000E948F2A18165CF5A701960160E070E050 -:1017F0008CED93EC0E94E82820E030E040E451E4D6 -:101800000E94E82820E030E040E05FE30E94932A55 -:101810009B01AC0160E070E080E090E40E94F62A59 -:101820009B01AC01C701B6010E94932A6093730229 -:1018300070937402809375029093760213C0FE0138 -:10184000EE0FFF1FEE0FFF1FEF5AFD4F80819181BA -:10185000A281B3818093730290937402A093750266 -:10186000B093760260917302709174028091750258 -:101870009091760220912802309129022F3F4FEF5C -:10188000340731F02F5F3F4F309329022093280215 -:101890000E946F0E6B017C0120E034E244EF51E4C2 -:1018A0000E94E42887FF08C086EFC82E88E2D82E61 -:1018B00084EFE82E81E4F82E20E030E040E051E4AF -:1018C000C701B6010E94932A9B01AC0160E074E25B -:1018D00084E79BE40E94E8286B017C010E94552963 -:1018E0007093970060939600209106013091070154 -:1018F0004091080150910901C701B6010E94932A45 -:101900000E945529709399006093980080913C0241 -:10191000882309F433C1C0903702D0903802E09098 -:101920003902F0903A0220E030E0A901C701B60187 -:101930000E948F2A1816D4F58091280290912902CE -:101940008F3F2FEF920729F0019690932902809301 -:101950002802C701B6010E946F0E20E030E040E08F -:1019600051E40E94932A9B01AC0160E074E284E799 -:101970009BE40E94E8286B017C010E94552970932A -:1019800097006093960020910601309107014091E5 -:10199000080150910901C701B6010E94932A0E94D3 -:1019A0005529709399006093980008C01092970091 -:1019B0001092960010929900109298006091310256 -:1019C000709132026F5F7F4F7093320260933102E9 -:1019D000209196003091970080E090E0232BF1F069 -:1019E000C0919600D09197000E9481296B017C01E3 -:1019F000BE0180E090E00E9481299B01AC016091D2 -:101A000033027091340280913502909136020E9427 -:101A1000E82820E03FEF4FE757E410C00E948129FB -:101A20006B017C0120E030EE4FEF54E46091330213 -:101A30007091340280913502909136020E94932A6F -:101A40009B01AC01C701B6010E948F2A87FD96C099 -:101A500080912F028F5F80932F0290E020910303EB -:101A60003091040382179307A0F080910E0388231E -:101A700019F010922F020DC0809171008D7F80931C -:101A80007100809190008F738093900010923C02BF -:101A90007DC080913002C0912F02811128C0C0907A -:101AA0000803D0900903E0900A03F0900B0320E0B4 -:101AB00030E0A901C701B6010E948F2A1816BCF4B4 -:101AC00081E0809330021092370210923802109217 -:101AD000390210923A02C0923302D0923402E0925C -:101AE0003502F0923602C150C0932F0243C01092CB -:101AF00030021092290210922802E0910503F09121 -:101B0000060348E0C49FE00DF11D112480819181FE -:101B1000A281B3818093370290933802A093390257 -:101B2000B0933A0220E030E040E85EE364817581E2 -:101B3000868197810E94932A6B017C0180910A0122 -:101B4000682F70E080E090E00E94812920E030E082 -:101B500048EC52E40E94E8289B01AC01C701B601A1 -:101B60000E94932A6093330270933402809335026B -:101B70009093360210923202109231028091070344 -:101B800080FD04C010923C0210923B02FF91EF9145 -:101B9000DF91CF91BF91AF919F918F917F916F9185 -:101BA0005F914F913F912F91FF90EF90DF90CF90F9 -:101BB000BF90AF909F908F907F906F905F904F906D -:101BC0000F900FBE0F901F901895CF92DF92EF925B -:101BD000FF92CF93DF936B017C01EA0180912A028F -:101BE000811102C00E94E0098091070380FF46C076 -:101BF0008091790290917A0208970CF03FC0809111 -:101C000071008D7F8093710080913C0281110E9450 -:101C1000FA0981E080933B02109229021092280277 -:101C200020E030E0A901C701B6010E948F2A1816F2 -:101C3000DCF48091790290917A02FC01EE0FFF1F93 -:101C4000EE0FFF1FEF5AFD4FC082D182E282F38276 -:101C5000FC01EE0FFF1FEF5BFD4FD183C0830196A8 -:101C600090937A02809379028091710082608093D0 -:101C7000710080919000806880939000DF91CF91F7 -:101C8000FF90EF90DF90CF900895809107038170CF -:101C90000895809107038160809307030E949D232C -:101CA0000C94C803809107038E7F809307030C94E4 -:101CB0009D2380917B0290E0019666E070E00E9497 -:101CC000612C80937B02089580917B0290E00197C4 -:101CD00066E070E00E94612C80937B0208958F92F1 -:101CE0009F92AF92BF92CF92DF92EF92FF920F93AB -:101CF0001F93CF93DF936B017C01C0912802D09199 -:101D00002902BE0180E090E00E9481294B015C0124 -:101D1000A701960160E070E08CE594E40E94E82859 -:101D20009B01AC01C501B4010E94932A0E94552970 -:101D300020917B02233009F473C028F4222351F050 -:101D40002130E9F02CC1243009F4A0C0253009F479 -:101D5000E0C025C180E090E0A0E0BFE380930601F1 -:101D600090930701A0930801B093090110922B02F0 -:101D700010922C0210922D0210922E0210C110927D -:101D80002B0210922C0210922D0210922E0264311E -:101D9000710540F46A30710560F520E030E040E8FC -:101DA0005EE32BC0693C710508F0AAC080E090E0BA -:101DB0000E94812920E030E040EA51E40E947F281F -:101DC00020E030E044E353E40E94E8289B01AC01AA -:101DD0000E94932A20E030E040E05EE30E94932AD4 -:101DE0009B01AC0160E070E080E09EE30E947F28F0 -:101DF00044C020E030E040E05FE3C701B6010E944C -:101E0000932A6B017C0180E090E0A0E0BEE3809328 -:101E1000060190930701A0930801B0930901BFC088 -:101E200010922B0210922C0210922D0210922E0270 -:101E30004AE0469F9001479F300D1124C90168EB8D -:101E40007BE00E944D2CBC016C5D754077FF03C0A8 -:101E5000719561957109882777FD8095982F0E946B -:101E600083292EE333EC4EE259E30E94932A20E0CB -:101E700030E040EC5EE30E9480286093060170939E -:101E80000701809308019093090189C010922B02E9 -:101E900010922C0210922D0210922E02CE0183700D -:101EA0009927892BE1F0BE016170772780E090E0EF -:101EB0000E94812920E030E040E05EE30E94932A06 -:101EC00020E030E040E45FE30E9480286093060158 -:101ED0007093070180930801909309010CC080E082 -:101EE00090E0A0E0BFE38093060190930701A093E8 -:101EF0000801B0930901C770DD27CD2B09F04FC051 -:101F00001092060110920701109208011092090127 -:101F100046C010922B0210922C0210922D021092A9 -:101F20002E0200E010E020E03FE300930601109352 -:101F3000070120930801309309016739710578F191 -:101F400080E090E00E94812920E030E047E153E406 -:101F50000E947F2820E030E04AE754E40E94E8280D -:101F600020E030E048E452E40E94932A20E030E090 -:101F700040EA51E40E94C5290E945029660F771F4C -:101F8000660F771FFB01EE5AFE4F2081318142819F -:101F90005381C701B6010E94932A6B017C01C701DE -:101FA000B601DF91CF911F910F91FF90EF90DF90DD -:101FB000CF90BF90AF909F908F90089580918C02AA -:101FC0000895CF93DF9300D01F92CDB7DEB79C0169 -:101FD00080911303843019F593E099833B832A831E -:101FE0009093E9008FEF9091E800815095FD06C035 -:101FF00095ED9A95F1F700008111F5CF8091E800F9 -:1020000085FF0DC040E050E063E070E0CE01019636 -:102010000E9442128091E8008E778093E8000F9032 -:102020000F900F90DF91CF910895CF93DF9300D061 -:102030001F92CDB7DEB720911303243021F522E0A3 -:1020400029839B838A8383E08093E9008FEF9091BB -:10205000E800815095FD06C095ED9A95F1F70000D6 -:102060008111F5CF8091E80085FF0DC040E050E080 -:1020700063E070E0CE0101960E9442128091E80078 -:102080008E778093E8000F900F900F90DF91CF91A3 -:102090000895209113032430F1F422E02093E90005 -:1020A0002FEF3091E800215035FD06C035ED3A950F -:1020B000F1F700002111F5CF2091E80025FF0BC0BA -:1020C00040E050E065E070E00E9442128091E8003C -:1020D0008E778093E8000895CF93DF93EC01909181 -:1020E0001303943009F046C0809115018823D9F07C -:1020F000809116018823B9F09093E9008FEF9091B9 -:10210000E800815095FD06C095E19A95F1F7000031 -:102110008111F5CF8091E80085FF2CC040E050E0B0 -:1021200060E170E017C081E08093E9008FEF90914B -:10213000E800815095FD06C095ED9A95F1F70000F5 -:102140008111F5CF8091E80085FF14C040E050E098 -:1021500068E070E0CE010E9442128091E8008E7724 -:102160008093E80080E1FE01ACE7B2E001900D92BF -:102170008A95E1F7DF91CF91089580911203811143 -:1021800009C00E94D7130E9434148091E200846039 -:102190008093E2000895109212030895089508951F -:1021A0000C947B2242E061EC81E00E94511342E0FA -:1021B00061EC82E00E94511342E061EC83E00E94F6 -:1021C000511342E161EC84E00C94511380911503AA -:1021D000833009F455C030F4813071F0823009F455 -:1021E0008EC008958A3009F47AC08B3009F460C03B -:1021F000893009F09CC020C080911403813A09F015 -:1022000096C08091E800877F8093E8008091180352 -:1022100090911903892B21F460E18CE792E003C0CF -:1022200060E080E090E070E00E948D128091E80014 -:102230008B778093E800089580911403813209F030 -:1022400076C08091180390911903009719F00397B5 -:1022500009F06DC08091E800877F8093E80080914D -:10226000E80082FD05C0809113038111F8CF5FC0A3 -:102270008091F10080938C028091E8008B7753C0AD -:1022800080911403813A09F052C080911803909113 -:102290001903892B09F04BC08091E800877F809358 -:1022A000E8008091E80080FFFCCF8091150136C0E6 -:1022B000809114038132D9F580911803909119030C -:1022C000892BA9F58091E800877F8093E8000E9420 -:1022D000861380911603809315010C94BC1B80918A -:1022E0001403813221F58091E800877F8093E80014 -:1022F0000E9486138091170380938D020895809128 -:102300001403813AA1F48091E800877F8093E8006C -:102310008091E80080FFFCCF80918D028093F100D6 -:102320008091E8008E778093E8000C9486130895DE -:1023300084B7877F84BF88E10FB6F89480936000EC -:10234000109260000FBE90E080E80FB6F894809382 -:102350006100909361000FBE0E9429170E94D7135D -:102360000E9434148091E20084608093E2007894AB -:102370000E94BA160E942B178BE091E00E94D5169E -:1023800080911303853069F40E943C2280911103EF -:102390008823B1F30E946A22882391F30E942C12B1 -:1023A000EFCF0E943317ECCF292F3327233031058D -:1023B000C9F064F42130310581F02230310509F093 -:1023C00043C08DE690E028E433E042C0213231057D -:1023D000F1F02232310541F137C082E190E025EB86 -:1023E00033E036C099278130910541F08230910564 -:1023F00041F0892B49F5E4E4F3E005C0E6E1F3E0C0 -:1024000002C0ECEEF2E0849190E09F0121C06430C4 -:10241000D8F4E62FF0E0EE0FFF1FE255FE4F2081CB -:10242000318189E090E014C0643070F470E0FB0109 -:10243000EE0FFF1FEA55FE4F20813181FB01EE5563 -:10244000FE4F808190E004C080E090E020E030E02A -:10245000FA0131832083089580E189BD82E189BD3D -:1024600009B400FEFDCF8091D8008F7D8093D80005 -:102470008091E00082608093E0008091E00081FD27 -:10248000FCCF0895CF92DF92EF92FF920F931F93AC -:10249000CF93DF93EC018B016A010E94A513811198 -:1024A00033C0C114D10439F0F60180819181081B39 -:1024B000190BC80FD91FE12CF12C0115110519F1C9 -:1024C0008091E80085FD16C08091E8008E778093AA -:1024D000E800C114D10449F0F60180819181E80E31 -:1024E000F91EF182E08285E00FC00E94A5138823C7 -:1024F00021F30AC089918093F10001501109FFEF87 -:10250000EF1AFF0ADACF80E0DF91CF911F910F9190 -:10251000FF90EF90DF90CF90089520911A033091B3 -:102520001B032617370748F06115710539F4209110 -:10253000E8002E772093E80001C0B90140E0611562 -:102540007105A9F120911303222309F443C025301A -:1025500009F442C02091E80023FD40C02091E8002A -:1025600022FD32C02091E80020FFE9CF4091F30026 -:102570002091F20030E0342BFC01CF016115710590 -:1025800059F02830310540F481918093F100615079 -:1025900071092F5F3F4FF1CF41E02830310509F03D -:1025A00040E02091E8002E772093E800C8CF411149 -:1025B000C9CF0AC080911303882361F0853061F090 -:1025C0008091E80083FD0AC08091E80082FFF2CF8D -:1025D00080E0089582E0089583E0089581E0089501 -:1025E00020911A0330911B032617370748F0611515 -:1025F000710539F42091E8002E772093E80001C09E -:10260000B901FC0120E06115710591F1809113037E -:10261000882309F440C0853009F43FC08091E80068 -:1026200083FD3DC08091E80082FD2FC08091E800CD -:1026300080FFE9CF2091F3008091F20090E0922B8F -:102640006115710559F08830910540F4249120936B -:10265000F1003196615071090196F2CF21E008979F -:1026600009F020E08091E8008E778093E800CBCFDE -:102670002111CCCF0AC080911303882361F08530EB -:1026800061F08091E80083FD0AC08091E80082FF3C -:10269000F2CF80E0089582E0089583E0089581E01C -:1026A0000895982F973058F59093E900981739F0CE -:1026B0007091EC002091ED005091F00003C0242FA8 -:1026C000762F50E021FF19C03091EB003E7F309310 -:1026D000EB003091ED003D7F3093ED003091EB0049 -:1026E00031603093EB007093EC002093ED00509339 -:1026F000F0002091EE0027FF07C09F5FD3CF8F70BF -:102700008093E90081E0089580E0089580911403AA -:1027100087FF11C08091E80082FD05C080911303FE -:102720008111F8CF11C08091E8008B770BC08091A8 -:102730001303882349F08091E80080FFF8CF80914F -:10274000E8008E778093E80008952091E4003091AE -:10275000E50095E64091EC00842F817040FF22C097 -:102760008091E80080FD1CC080911303882391F0C4 -:10277000853091F08091EB0085FD10C04091E40020 -:102780005091E5004217530729F39A01915011F730 -:1027900084E0089582E0089583E0089581E008953B -:1027A00080E008954091E80042FFDECF08950E9446 -:1027B00045140E944D14E0EEF0E08081816080833A -:1027C000E8EDF0E080818F77808319BCA7EDB0E061 -:1027D0008C918E7F8C9380818F7E808310921203E8 -:1027E00008950F931F93CF93DF930E9445140E9487 -:1027F0004D14C8EDD0E088818F7788838881806808 -:10280000888388818F7D888319BC1092130310926E -:102810000F03109211031092100300EE10E0F80164 -:1028200080818B7F808388818160888342E060E043 -:1028300080E00E945113E1EEF0E080818E7F808382 -:10284000E2EEF0E080818160808380818860808317 -:10285000F80180818E7F8083888180618883DF9109 -:10286000CF911F910F910895E8EDF0E080818F7E68 -:102870008083E7EDF0E080818160808384E082BF27 -:1028800081E0809312030C94F113E8EDF0E0808175 -:102890008E7F80831092E20008951092DA001092E9 -:1028A000E10008951F920F920FB60F9211242F93FB -:1028B0003F934F935F936F937F938F939F93AF93C8 -:1028C000BF93EF93FF938091E10082FF0BC0809153 -:1028D000E20082FF07C08091E1008B7F8093E100DE -:1028E0000E94B9168091DA0080FF1FC08091D80045 -:1028F00080FF1BC08091DA008E7F8093DA00809188 -:10290000D90080FF0DC080E189BD82E189BD09B495 -:1029100000FEFDCF81E0809313030E94BD1005C02F -:1029200019BC109213030E94CB108091E10080FF2C -:1029300019C08091E20080FF15C08091E2008E7F77 -:102940008093E2008091E20080618093E2008091B8 -:10295000D80080628093D80019BC85E0809313036F -:102960000E94CF108091E10084FF30C08091E2008E -:1029700084FF2CC080E189BD82E189BD09B400FEDD -:10298000FDCF8091D8008F7D8093D8008091E100A9 -:102990008F7E8093E1008091E2008F7E8093E20041 -:1029A0008091E20081608093E20080910F03882390 -:1029B00011F084E007C08091E30087FD02C081E050 -:1029C00001C083E0809313030E94D0108091E10046 -:1029D00083FF29C08091E20083FF25C08091E10040 -:1029E000877F8093E10082E08093130310920F03AE -:1029F0008091E1008E7F8093E1008091E2008E7FE4 -:102A00008093E2008091E20080618093E20042E0E6 -:102A100060E080E00E9451138091F0008860809314 -:102A2000F0000E94CE10FF91EF91BF91AF919F9166 -:102A30008F917F916F915F914F913F912F910F9067 -:102A40000FBE0F901F9018951F920F920FB60F9206 -:102A500011242F933F934F935F936F937F938F93A3 -:102A60009F93AF93BF93CF93DF93EF93FF93C09167 -:102A7000E900CF708091EC00D82FD17080FDD0E8B4 -:102A80001092E9008091F000877F8093F0007894A5 -:102A90000E9468151092E9008091F0008860809390 -:102AA000F000CD2BCF70C093E900FF91EF91DF9143 -:102AB000CF91BF91AF919F918F917F916F915F91D6 -:102AC0004F913F912F910F900FBE0F901F9018952F -:102AD0001F93CF93DF93CDB7DEB7AA970FB6F894C5 -:102AE000DEBF0FBECDBFE4E1F3E088E08E0F909132 -:102AF000F10091938E13FBCF0E94E6108091E800C5 -:102B000083FF1FC18091140390911503492F50E05A -:102B10004A30510508F015C1FA01EA5AFF4F0C94EA -:102B2000752C803881F0823809F00BC18091180330 -:102B30008F708093E9008091EB0085FB882780F9F6 -:102B40001092E90006C08091100390911103911139 -:102B500082609091E800977F9093E8008093F10065 -:102B60001092F100C8C0282F2D7F09F0EAC08823F9 -:102B700019F0823061F0E5C080911603813009F0D0 -:102B8000E0C0933009F080E0809311032BC0809166 -:102B90001603811127C0809118038F7009F4D1C0EA -:102BA0008093E9002091EB0020FF1CC0933021F4BA -:102BB0008091EB00806214C09091EB009061909343 -:102BC000EB0021E030E0A90102C0440F551F8A95B7 -:102BD000E2F74093EA001092EA008091EB008860EF -:102BE0008093EB001092E9008091E800877F86C017 -:102BF0008111A7C0109116031F778091E3008078A0 -:102C0000812B8093E3008091E800877F8093E80028 -:102C10000E9486138091E80080FFFCCF8091E30042 -:102C200080688093E300111102C082E001C083E05C -:102C30008093130386C08058823008F082C0809150 -:102C40001603909117038C3D53E0950779F583E0C7 -:102C50008A838AE289834FB7F894DE01139620E0D5 -:102C60003EE051E2E32FF0E050935700E49120FF63 -:102C700003C0E295EF703F5FEF708E2F90E0EA3077 -:102C800010F0C79601C0C0968D939D932F5F24319D -:102C900049F74FBF8091E800877F8093E8006AE2A0 -:102CA00070E0CE0101960E948D1214C0AE014F5FFC -:102CB0005F4F609118030E94D411BC01009709F482 -:102CC00040C09091E800977F9093E80089819A81B5 -:102CD0000E94F0128091E8008B778093E80031C069 -:102CE000803879F58091E800877F8093E8008091B3 -:102CF0000F038093F1008091E8008E778093E800C5 -:102D00000E9486131EC081111CC090911603923040 -:102D1000C0F48091E800877F8093E80090930F03D0 -:102D20000E94861380910F03811106C08091E300F9 -:102D300087FD02C081E001C084E0809313030E94FC -:102D4000D2108091E80083FF0AC08091E800877F5D -:102D50008093E8008091EB0080628093EB00AA965C -:102D60000FB6F894DEBF0FBECDBFDF91CF911F919C -:102D700008950895CF93809113038823A1F0C09103 -:102D8000E900CF709091EC00892F817090FD80E870 -:102D9000C82B1092E9008091E80083FD0E9468151D -:102DA000CF70C093E900CF910895909393028093E0 -:102DB00092020895E0919202F0919302309721F0EF -:102DC0000190F081E02D099480E00895E091920255 -:102DD000F0919302309721F00280F381E02D099465 -:102DE0000895E0919202F0919302309721F00480CF -:102DF000F581E02D0994089520919002309191027F -:102E00008217930771F09093910280939002E09162 -:102E10009202F0919302309721F00680F781E02D25 -:102E20000994089520918E0230918F0282179307A2 -:102E300071F090938F0280938E02E0919202F09154 -:102E40009302309721F00084F185E02D09940895D4 -:102E500008950C9428170E94AF220E9400090E9436 -:102E600035230C94E4275F926F927F928F929F920A -:102E7000AF92BF92CF92DF92EF92FF920F931F9388 -:102E8000CF93DF9300D000D01F92CDB7DEB70E9462 -:102E900045099DE9C92E92E0D92E03E010E0AA244D -:102EA000A394B12C502E802F0E94C0094C01F60132 -:102EB000729062906F016826792661147104A1F402 -:102EC0000150110978F78FEF89838A831B820E9452 -:102ED000B8228160782F9D838C8349815A816B81D0 -:102EE0008D810E94E31738C08091F20281FD0E941B -:102EF000C9092BE030E07501022E02C0EE0CFF1C68 -:102F00000A94E2F7C70186219721892B09F12983C9 -:102F10005A828E209F2091E0892809F490E09B83BB -:102F20000E94B8228160782F9D838C8349815A81C9 -:102F30006B818D810E94E317000F111FF801EB5682 -:102F4000FD4F80819181E826F926F182E08204C05C -:102F50002150310980F6B4CF0E941C2510919402B3 -:102F60000E94DA161817D1F00E94DA1680939402A4 -:102F70000F900F900F900F900F90DF91CF911F91B6 -:102F80000F91FF90EF90DF90CF90BF90AF909F9008 -:102F90008F907F906F905F900C94EA080F900F9045 -:102FA0000F900F900F90DF91CF911F910F91FF9095 -:102FB000EF90DF90CF90BF90AF909F908F907F90D9 -:102FC0006F905F900895CF93DF93CDB7DEB72B97C7 -:102FD0000FB6F894DEBF0FBECDBF4F835887698709 -:102FE0007A878B87DE01119686E0FD0111928A9522 -:102FF000E9F785E0FE01379601900D928A95E1F799 -:1030000049815A816B817C818D819E810E945A1EEB -:103010002B960FB6F894DEBF0FBECDBFDF91CF91D8 -:103020000895CF93882309F4C2C0C82F823859F479 -:103030000E94DA1681FDBBC089E30E9434210E9400 -:10304000012289E30CC0833879F40E94DA1680FDEE -:10305000AEC083E50E9434210E94012283E50E94D4 -:103060007621CF910C940122843859F40E94DA160B -:1030700082FD9DC087E40E9434210E94012287E4E2 -:10308000EECF8CEF8C0F813A48F48C2F0E944C27A6 -:1030900081118DC08C2F0E943421E3CF80E28C0FF0 -:1030A000883048F4C77081E001C0880FCA95EAF7FC -:1030B0000E94BA21D6CF8BE58C0F833078F4C53AC5 -:1030C00029F0C63A31F083E890E005C081E890E04D -:1030D00002C082E890E0CF910C94FC1688E58C0F3A -:1030E000833108F064C0C83A39F1C93A41F1CA3AAB -:1030F00049F1CB3A51F1CC3A59F1CD3A61F1C03BAB -:1031000069F1CE3A71F1CF3A79F1C13B81F1C23B1D -:1031100089F1C33B91F1C43B99F1C53BA1F1C63B99 -:10312000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BF9 -:10313000C9F180E090E038C082EE90E035C089EEC1 -:1031400090E032C08AEE90E02FC085EB90E02CC07A -:1031500086EB90E029C087EB90E026C08CEC90E0F5 -:1031600023C08DEC90E020C083E891E01DC08AE888 -:1031700091E01AC082E991E017C084E991E014C09F -:1031800081E292E011C083E292E00EC084E292E01C -:103190000BC085E292E008C086E292E005C087E2BB -:1031A00092E002C08AE292E0CF910C941217CF9184 -:1031B0000895882309F44BC0823859F40E94DA1626 -:1031C00081FF45C089E30E9434210E94012289E3E6 -:1031D0000CC0833871F40E94DA1680FF38C083E592 -:1031E0000E9434210E94012283E50E9476210C94E2 -:1031F0000122843859F40E94DA1682FF28C087E43D -:103200000E9434210E94012287E4EFCF9CEF980FA7 -:10321000913A58F390E2980F983050F4877091E00B -:1032200001C0990F8A95EAF7892F0E94C021DFCF4C -:103230009BE5980F933020F480E090E00C94FC160E -:10324000885A833120F480E090E00C94121708959E -:10325000882321F00E94BA210C940122089588232A -:1032600021F00E94C0210C94012208957F928F9238 -:103270009F92AF92BF92CF92DF92EF92FF920F9305 -:103280001F93CF93DF931F92CDB7DEB77C01C62E7D -:10329000772EFC01058102950F70128111110E9499 -:1032A000D7210E942D21882379F0112369F080E233 -:1032B0008C0D883048F082E00E9416210E942D215A -:1032C00091E0D82ED92601C0D12CE72DE295EF70E0 -:1032D000F0E0E05AFF4F0C94752C872D807F072D6E -:1032E0000F70882311F00295007F112389F00023CD -:1032F00009F499C180E28C0D883020F4802F0E945F -:10330000BA2103C0802F0E94CA210E9401228BC1D2 -:103310008C2D0E94D918002309F4C3C180E28C0DC2 -:10332000883020F4802F0E94C02103C0802F0E948B -:10333000D0210E940122B5C1872D807F972D9F70DB -:10334000803211F4892F03C0892F8295807FCC2091 -:1033500021F0F1E0CF16A1F01DC0112339F00023B8 -:1033600019F1013009F50E94EA219BC1002319F0EF -:10337000013009F496C189830E94ED21898110C131 -:10338000112321F0063008F08CC10EC0053008F082 -:1033900088C106C1112359F0002331F0F70195814E -:1033A00090FF41C19F7095830E9428197AC1002324 -:1033B00009F4F6C03EC1872D86958695837090E00E -:1033C000009719F0019761F06CC1112321F08C2D49 -:1033D000972D937002C080E090E00E94FC1661C1BE -:1033E000112321F08C2D972D937002C080E090E086 -:1033F0000E94121756C18C2D112319F00E9424240B -:1034000002C00E948C240E9411254BC1872D83701D -:1034100009F052C0111145C18C2D82958695877097 -:10342000880F880F9C2D9F70892E912CA12CB12C78 -:10343000082E04C0880C991CAA1CBB1C0A94D2F745 -:10344000C4FE14C00FE010E020E030E0B901A80194 -:1034500004C0440F551F661F771F8A95D2F7CB0112 -:10346000BA01609570958095909503C060E070E01A -:10347000CB01272D26952695237030E0223031058B -:1034800069F02330310589F0682979298A299B2937 -:103490002130310571F00E94A21F03C168297929EA -:1034A0008A299B290E94BE1FFCC00E94A21FC50141 -:1034B000B4010E94861FF5C0112319F0872D817079 -:1034C00001C08695882309F4ECC08C2D82958695E1 -:1034D0008770880F880F9C2D9F70892E912CA12CAE -:1034E000B12C082E04C0880C991CAA1CBB1C0A9481 -:1034F000D2F7C4FE14C00FE010E020E030E0B901C4 -:10350000A80104C0440F551F661F771F8A95D2F784 -:10351000CB01BA01609570958095909503C060E0ED -:1035200070E0CB01272D269526952370422F50E081 -:103530004230510569F04330510589F068297929F5 -:103540008A299B294130510571F00E947C20A9C035 -:10355000682979298A299B290E949820A2C00E9463 -:103560007C20C501B4010E9460209BC08C2D90E09E -:10357000FC01E05EF109E531F10508F050C0E059C9 -:10358000FF4F0C94752C0C2D0F70872D8F7111230C -:1035900021F00E94F91F802F07CF0E941A20802F50 -:1035A0000E942F197EC0112341F0053008F079C028 -:1035B000872D8F710E943F2074C0063008F071C0C3 -:1035C000F7CF112339F0872D8F710E94F91F69C041 -:1035D0001123C9F3872D8F710E941A2062C0112315 -:1035E00029F0872D8F710E94E41F5BC00E94DA1FB3 -:1035F00058C0112351F0172D1F71812F0E94F91F00 -:1036000063E0812F0E940D214CC081E00E941621B1 -:10361000023008F446C082E00E94162142C0112305 -:1036200031F0002381F28C2D0E9411183AC0002342 -:1036300089F28C2D0E94D91834C0472D4F706C2D03 -:10364000C7010E9455030E94FE1E2BC0111129C004 -:10365000472D4F7050E042305105B9F04CF4411500 -:10366000510581F041305105E1F40E940C2819C048 -:103670004330510569F04430510599F48C2D0E9476 -:103680005E280FC00E94F5270CC00E94282809C0A0 -:103690000E943B2806C0472D4F706C2DC7010E9429 -:1036A000CB05DD20F9F00E94092180FD1BC0F70148 -:1036B00012820E9403210E94F91FC7010E94811BF0 -:1036C0000E9403210F90DF91CF911F910F91FF90E6 -:1036D000EF90DF90CF90BF90AF909F908F907F90B2 -:1036E0000C941A200F90DF91CF911F910F91FF90B2 -:1036F000EF90DF90CF90BF90AF909F908F907F9092 -:1037000008950F931F93CF93DF93EC0188819981E4 -:103710002B813C81232BB9F09F3F11F48F3F99F00F -:10372000CE010E94CA03882371F0688179818A8161 -:103730000E94FF208C010E94B4200E947B1FB801D0 -:10374000CE010E943619DF91CF911F910F910895FC -:103750000E94D7210E94E7210E94AC210E940122F1 -:103760000E94C2250E94112580E090E00E94FC1674 -:1037700080E090E00C9412170E94C7210C94A81BC3 -:103780000E94F420292F22952F7030E02C30310533 -:103790004CF42A3031056CF42250310922303105C5 -:1037A000A8F407C02C30310569F02F30310551F0F5 -:1037B0000DC0803F69F018F4803E40F409C0843F9A -:1037C00029F406C093FB882780F9089580E00895C6 -:1037D00081E00895CF93DF9300D000D01F92CDB742 -:1037E000DEB70F900F900F900F900F90DF91CF9159 -:1037F0000895CF93DF9300D000D000D0CDB7DEB7CF -:1038000026960FB6F894DEBF0FBECDBFDF91CF91E5 -:1038100008951F93CF93DF93C0919D0216E080918E -:103820009E02C81799F0D0E01C9FF0011D9FF00D7B -:103830001124E156FD4F4081518162817381848161 -:1038400095810E94F91B2196C770E9CFDF91CF9136 -:103850001F9108954091CF025091D0026091D10202 -:103860007091D2028091D3029091D4020C94F91BF2 -:103870008091D40282958F7009F054C08091D1025A -:10388000882309F44FC080919D02A0919E0260910F -:10389000CF027091D0024091D2025091D302B6E093 -:1038A0008A1709F43FC090E041155105C1F17F3FEF -:1038B00011F46F3FA1F1B89FF001B99FF00D1124F1 -:1038C000E156FD4F218172132AC02081621327C067 -:1038D0002281211124C0238134812417350710F45B -:1038E00021503109241B350B283C3105C0F42091AF -:1038F000D4022F7020612093D40226E0289FF0018B -:10390000299FF00D1124EC55FD4F80818F7080614F -:1039100080838FEC92E00E94811B0C94091C01961D -:103920008770BECF0895CF92DF92EF92FF920F93F0 -:103930001F93CF93DF93CDB7DEB762970FB6F8949E -:10394000DEBF0FBECDBF8C0185E0F801DE011D9604 -:1039500001900D928A95E1F7D8014C9111965C91F6 -:10396000119712966C9112971396CD90DC90149744 -:103970003091CF027091D0028091D2029091D30207 -:10398000009709F46BC17F3F19F43F3F09F466C10A -:10399000E090D102EE2009F4C0C02091D402C816F4 -:1039A000D90628F0F601E81BF90BCF0104C0809579 -:1039B00090958C0D9D1DFF24F394883C910578F023 -:1039C000F12C207F09F0C6C07C2DD98AC88A89894C -:1039D0000E94EA1B8FEC92E00E94811BB1C0822FF3 -:1039E000807F09F046C0751314C0341312C06111F2 -:1039F00010C02F7020612093D4020E942A1C8FECEB -:103A000092E00E94811B8091D402D80115968C937C -:103A10002EC0CD2819F15F3F11F44F3FF9F0F62E7B -:103A200061111CC080919D0220919E0236E0821798 -:103A300009F45AC090E0389FF001399FF00D11242D -:103A4000E156FD4F7181571306C07081471303C0C3 -:103A50007281711103C001968770E9CFF62E66233B -:103A600009F418C18091D40281608093D402F12CB2 -:103A700011C1751308C0341306C0611104C08091D0 -:103A8000D402D801C3C04D875E878D859E856A8B21 -:103A90000E94C01B6A898823E1F16623D1F120913D -:103AA000D402822F82958F7090E0029774F08091FB -:103AB000CF029091D00298878F831986DB86CA86C1 -:103AC0002C87CE0107960E94811B86E0F801AFEC9F -:103AD000B2E001900D928A95E1F70E94381C0E9495 -:103AE0002A1CFF24F394D6C04D875E878D859E8562 -:103AF0000E94F420292F22952F7030E022303105CA -:103B00000CF0BCC09F7009F0B6C0805E883008F42D -:103B1000C1C0C8010E94811BE4CFC816D90608F4B1 -:103B200053C0F601E81BF90BCF01883C910508F45E -:103B300050C0F12C7C2DD98AC88A89890E94EA1B41 -:103B4000EFECF2E086E0DF011D928A95E9F70E9432 -:103B50002A1CA0C0751314C0341312C0611110C008 -:103B60008091D402F8018583C8010E94811B86E000 -:103B7000EFECF2E0DF011D928A95E9F7FE2C8AC096 -:103B80004D875E878D859E856A8B0E94C01B6A89E2 -:103B9000882309F4BECF662309F4BBCF2091D40259 -:103BA000822F82958F7090E002970CF48ECF8091D7 -:103BB000CF029091D0029A8389831B82DD82CC82CE -:103BC0002E83CE0101967FCF809590958C0D9D1D03 -:103BD000ACCFF62E662309F49CCF75132EC0341398 -:103BE0002CC02091D40220FD1FC0822F82958F709F -:103BF000D9F0D80115962C9315978F3049F08F5F27 -:103C0000982F9295907F822F8F70892B15968C9389 -:103C1000C8010E94811B86E0F801AFECB2E0019080 -:103C20000D928A95E1F793CF86E0F801AFECB2E010 -:103C300001900D928A95E1F72DC04D875E878D85A5 -:103C40009E850E94C01B811140CF8091D40281606B -:103C50008093D402C8010E94811B1CC0662309F412 -:103C600058CF4D875E878D859E850E94C01B882317 -:103C700009F44FCF2ACF811148CF0CC02430310531 -:103C80000CF047CF9F7009F440CFF8019581907FE9 -:103C900009F03BCF8F2D62960FB6F894DEBF0FBEB2 -:103CA000CDBFDF91CF911F910F91FF90EF90DF90EB -:103CB000CF9008951F93CF93DF93CDB7DEB72C97A6 -:103CC0000FB6F894DEBF0FBECDBF4F83588769870C -:103CD0007A878B879C87CE0107960E94931C882346 -:103CE00069F08F8198852A853B85232BF1F19F3FD1 -:103CF00009F063C08F3F09F060C037C086E0FE0165 -:103D00003796DE01119601900D928A95E1F76F8149 -:103D10007885EA85FB85309741F17F3F11F46F3F4D -:103D200021F120919E0230E0C90101968770992708 -:103D300040919D0250E08417950709F447C06983BC -:103D40007A83FD83EC8396E0929FD001939FB00D20 -:103D50001124A156BD4FFE01319601900D929A9506 -:103D6000E1F780939E020E94091C16E080919D025B -:103D700090919E028917C1F1189FC00111248156AC -:103D80009D4F0E94931C882379F1E0919D021E9F14 -:103D9000F0011124E156FD4F408151816281738110 -:103DA000848195810E94F91B80919D0290E001968B -:103DB0008770992780939D02D9CF4F815885698557 -:103DC0007A858B859C850E94F91BCFCF0E94BC1BF6 -:103DD00010929E0210929D02EFECF2E086E0DF016D -:103DE0001D928A95E9F7C1CF2C960FB6F894DEBFE5 -:103DF0000FBECDBFDF91CF911F910895EF92FF923B -:103E00000F931F93CF93DF938C01009709F46CC03D -:103E1000F12CEE24E394E8012196F8018491843793 -:103E200040F4843008F051C0813081F0823019F1C3 -:103E30005BC0853709F444C0A8F19CE7980F903720 -:103E400008F052C08F770E94D91841C00E5F1F4FF3 -:103E5000FE01C49180E28C0F883048F4C7708E2D2B -:103E600001C0880FCA95EAF70E94DA2114C08C2F8E -:103E70000E9411182DC00E5F1F4FFE01C49180E2F9 -:103E80008C0F883058F4C7708E2D01C0880FCA95EA -:103E9000EAF70E94E0210E9401221AC08C2F0E94A2 -:103EA000D91816C00E5F1F4FFE01C491CC2381F0BC -:103EB0008FE99FE00197F1F700C00000C150F6CFF5 -:103EC0000E5F1F4FFE01F49003C00E9411188E0177 -:103ED0008F2D882309F49FCFEFE9FFE03197F1F7A9 -:103EE00000C000008150F5CFDF91CF911F910F915D -:103EF000FF90EF90089508956093D9027093DA02CD -:103F00008093DB029093DC020C94A81B0F931F9309 -:103F10000091D9021091DA022091DB023091DC028B -:103F2000DC01CB01802B912BA22BB32B8093D902E8 -:103F30009093DA02A093DB02B093DC021F910F9101 -:103F40000C94A81B0F931F930091D9021091DA02D1 -:103F50002091DB023091DC02DC01CB018023912334 -:103F6000A223B3238093D9029093DA02A093DB02B9 -:103F7000B093DC021F910F910C94A81B0F931F9319 -:103F80000091D9021091DA022091DB023091DC021B -:103F9000DC01CB0180279127A227B3278093D90288 -:103FA0009093DA02A093DB02B093DC021F910F9191 -:103FB0000C94A81B1092D5021092D6021092D70230 -:103FC0001092D8020C94A81B41E050E060E070E031 -:103FD00004C0440F551F661F771F8A95D2F7409380 -:103FE000D5025093D6026093D7027093D8020C94F6 -:103FF000A81B41E050E060E070E004C0440F551F92 -:10400000661F771F8A95D2F78091D5029091D602CC -:10401000A091D702B091D802482B592B6A2B7B2B49 -:104020004093D5025093D6026093D7027093D80282 -:104030000C94A81B41E050E060E070E004C0440F25 -:10404000551F661F771F8A95D2F74095509560954A -:1040500070958091D5029091D602A091D702B0912F -:10406000D802482359236A237B234093D5025093D7 -:10407000D6026093D7027093D8020C94A81B41E03B -:1040800050E060E070E004C0440F551F661F771FCA -:104090008A95D2F78091D5029091D602A091D7024D -:1040A000B091D802482759276A277B274093D50229 -:1040B0005093D6026093D7027093D8020C94A81B39 -:1040C0000F931F930091D5021091D6022091D70231 -:1040D0003091D802DC01CB01802B912BA22BB32B8A -:1040E0008093D5029093D602A093D702B093D802C2 -:1040F0001F910F910C94A81B0F931F930091D50251 -:104100001091D6022091D7023091D802DC01CB0168 -:1041100080239123A223B3238093D5029093D602C8 -:10412000A093D702B093D8021F910F910C94A81BB3 -:104130000F931F930091D5021091D6022091D702C0 -:104140003091D802DC01CB0180279127A227B32729 -:104150008093D5029093D602A093D702B093D80251 -:104160001F910F910C94A81B0895CF92DF92EF92AC -:10417000FF920F931F93CF93DF938C01C090D902CE -:10418000D090DA02E090DB02F090DC028091D50260 -:104190009091D602A091D702B091D802C82AD92A0C -:1041A000EA2AFB2ACFE1D0E0D701C6010C2E04C0D9 -:1041B000B695A795979587950A94D2F780FF06C084 -:1041C000B8018C2F0E945008019721F4219760F7C5 -:1041D00080E001C08C2FDF91CF911F910F91FF9054 -:1041E000EF90DF90CF900895CF93DF93EC010E9482 -:1041F000B520BE010E945008DF91CF910895CB01F8 -:104200000E94F42008958091DD028595859585951D -:1042100008958091DD028770089598E0899F90014C -:104220001124262B2093DD020C94F91F2091DD022E -:10423000809582238093DD02982F977069F430E097 -:10424000482F552747FD50952417350729F08595A8 -:10425000859585950C941A2008959091DD029770AC -:1042600081E009F480E0089590911501992321F0EF -:1042700090911601911109C02091170130911801F8 -:10428000F90132969FEF40E01FC0982F96959695C2 -:1042900096959F3050F5E0911701F0911801E90FC4 -:1042A000F11D877021E030E0A90102C0440F551FC5 -:1042B0008A95E2F7CA019181892B818308959F3FF6 -:1042C00039F04F5F4E3041F051915813F8CF0DC087 -:1042D0005111F7CF942FF5CF9F3F39F0F901E90F36 -:1042E000F11D97FDFA958283089508959091150127 -:1042F000992321F090911601911109C02091170185 -:1043000030911801F9013296205F3F4F1FC0982F5E -:104310009695969596959F30F0F4E0911701F0915F -:104320001801E90FF11D877021E030E0A90102C0FA -:10433000440F551F8A95E2F7CA0180959181892320 -:10434000818308953196E217F30729F0908198133D -:10435000F9CF1082F7CF089581E090E0E091170146 -:10436000F0911801E80FF91F108201968031910534 -:10437000A9F708959091F102892B8093F102089595 -:1043800080959091F10289238093F1020895109213 -:10439000F10208959091F002892B8093F002089524 -:1043A00080959091F00289238093F00208951092F5 -:1043B000F00208959091EF02892B8093EF02089507 -:1043C00080959091EF0289238093EF0208951092D7 -:1043D000EF0208958093DE0208951092DE020895A0 -:1043E0008091170190911801FC0131969C01205F8A -:1043F0003F4F80E0919191118F5FE217F307D1F762 -:104400000895E0911701F09118018091F1028083E5 -:10441000E0911701F091180190818091F002892BB1 -:104420008083E0911701F091180190818091EF0253 -:10443000892B80838091DE02882361F0E09117014F -:10444000F09118019081892B80830E94F0218111C5 -:104450001092DE0280911701909118010C94E616DB -:1044600020E0009739F0AC01415051098423952395 -:104470002F5FF7CF822F089580911303843039F195 -:104480001092F30220E488E190E00FB6F894A8952A -:10449000809360000FBE2093600080E00E94BC0209 -:1044A00080E00E94EA0883B7817F846083BF83B77E -:1044B000816083BF7894889583B78E7F83BF88E1BE -:1044C0000FB6F89480936000109260000FBE0895BC -:1044D0000895089580E00E94BC020E9468220E9414 -:1044E00045090E9469220E94CA0991E0811101C018 -:1044F00090E0892F08950E94BC1B80E00E94BC02BE -:104500000E94E4270E94DA160C94EA081F920F9288 -:104510000FB60F9211248F939F93AF93BF93809107 -:10452000F302811113C08091F4029091F502A091E1 -:10453000F602B091F7024196A11DB11D8093F402DD -:104540009093F502A093F602B093F702BF91AF915A -:104550009F918F910F900FBE0F901F90189582E042 -:1045600084BD93E095BD9AEF97BD80936E0008954A -:104570002FB7F8948091F4029091F502A091F60281 -:10458000B091F7022FBF0895CF92DF92EF92FF9282 -:104590000F931F932FB7F8944091F4025091F502B6 -:1045A0006091F6027091F7022FBF6A017B01EE2441 -:1045B000FF248C0120E030E0C016D106E206F306AD -:1045C00010F4415051099A01281B390BC9011F9160 -:1045D0000F91FF90EF90DF90CF9008951F920F9270 -:1045E0000FB60F9211248F939F93AF93BF93809137 -:1045F000F4029091F502A091F602B091F7020196B3 -:10460000A11DB11D8093F4029093F502A093F602D0 -:10461000B093F702BF91AF919F918F910F900FBE12 -:104620000F901F9018950E94D713F8942FEF87EAE8 -:1046300091E6215080409040E1F700C0000087E003 -:1046400090EBDC0180931E0390931F03A093200343 -:10465000B09321039CE088E10FB6F894A89580936D -:1046600060000FBE90936000FFCF0E947423811101 -:1046700002C00E9450230E947F238093F2020E9476 -:10468000872380931C0387FB882780F9809316017A -:104690000E948323682F70E080E090E00C947C1FE0 -:1046A0006DEE7EEF80E090E00E949B2C60E082E067 -:1046B00090E00E94892C60E083E090E00E94892CC9 -:1046C00060E084E090E00E94892C60E085E090E06A -:1046D0000E94892C60E086E090E00E94892C6FEFB8 -:1046E00087E090E00C94892C80E090E00E94832C7D -:1046F00021E08D3E9E4F09F020E0822F089582E058 -:1047000090E00C947B2C83E090E00C947B2C84E074 -:1047100090E00C947B2C682F84E090E00C94892C22 -:1047200086E090E00C947B2C682F86E090E00C945F -:10473000892C87E090E00C947B2C682F87E090E038 -:104740000C94892C8091FA0280FF0BC060911C01AF -:1047500085E0689FB00111247595679575956795FB -:104760002BC081FF09C060911C0185E0689FB001EA -:1047700011247595679520C082FF07C060911C01C8 -:1047800085E0689FB001112417C09091FB02992326 -:10479000D1F060911B01961788F720911C0185E0EC -:1047A000289F90011124929FA001939F500D1124E6 -:1047B00070E0CA010E94612C6038710540F46115F7 -:1047C000710539F002C065E070E0862F08958FE72B -:1047D000089581E008958091FA0280FF08C06091F9 -:1047E0001A0170E0759567957595679521C081FFF1 -:1047F00006C060911A0170E07595679519C082FF37 -:1048000004C060911A0170E010C09091FB029923DE -:10481000C1F0609119019617A0F780911A01899F44 -:10482000C001112470E00E94612C6038710528F4E9 -:104830006115710521F0862F08958FE7089581E0B5 -:10484000089561E070E0F4CF803F21F40E94A2233C -:10485000819504C0813F29F40E94A2238093FE0227 -:104860000895823F21F40E94A223819504C0833FD2 -:1048700029F40E94A2238093FD020895893F19F430 -:104880000E94EB2305C08A3F31F40E94EB238195FF -:104890008093FF0208958B3F21F40E94EB238195C2 -:1048A00004C08C3F29F40E94EB23809300030895F9 -:1048B000843F21F48091FC02816017C0853F21F480 -:1048C0008091FC02826011C0863F21F48091FC023D -:1048D00084600BC0873F21F48091FC02886005C092 -:1048E000883F31F48091FC0280618093FC0208953E -:1048F0008D3F21F48091FA0281600BC08E3F21F43C -:104900008091FA02826005C08F3F29F48091FA02FB -:1049100084608093FA020895803F39F48091FE020A -:1049200087FF6CC01092FE0269C0813F29F480911C -:10493000FE021816BCF362C09091FD02823F29F47A -:1049400097FF5CC01092FD0259C0833F19F41916FD -:10495000CCF354C0893F41F48091FF0218160CF04B -:104960004DC01092FF024AC08A3F29F48091FF0295 -:1049700087FF44C0F6CF8B3F39F48091000387FF57 -:104980003DC0109200033AC08C3F29F4809100038F -:104990001816BCF333C0843F21F48091FC028E7F53 -:1049A00017C0853F21F48091FC028D7F11C0863FA6 -:1049B00021F48091FC028B7F0BC0873F21F4809112 -:1049C000FC02877F05C0883F31F48091FC028F7E16 -:1049D0008093FC0213C08D3F21F48091FA028E7FF8 -:1049E0000BC08E3F21F48091FA028D7F05C08F3F6E -:1049F00029F48091FA028B7F8093FA028091FD0264 -:104A000081110EC08091FE0281110AC08091FF02C7 -:104A1000811106C080910003811102C01092FB0237 -:104A200008958CEF92E00E94F1160E94B8229093B4 -:104A3000F9028093F80208951F93CF93DF9380913A -:104A4000F8029091F9020E94C422AC019091FB02FD -:104A5000992321F020911D0130E006C020911E0114 -:104A60008AE0289F900111244217530708F486C05A -:104A70008091FD02C091FE02D091FF0210910003CF -:104A8000811107C0C11176C0D11174C0111172C05B -:104A900075C09F3F19F09F5F9093FB02181624F496 -:104AA0000E94A2238093FD028091FD0287FF05C032 -:104AB0000E94A22381958093FD021C1624F40E947B -:104AC000A2238093FE028091FE0287FF05C00E9410 -:104AD000A22381958093FE026091FD02662339F145 -:104AE000C091FE02CC2319F1772767FD7095872FBF -:104AF000972F0E94832923E333E343E35FE30E947C -:104B0000932A0E9450296093FD026C2F772767FD3E -:104B10007095872F972F0E94832923E333E343E384 -:104B20005FE30E94932A0E9450296093FE021D16A3 -:104B300024F40E94EB238093FF028091FF0287FF01 -:104B400005C00E94EB2381958093FF02111624F487 -:104B50000E94EB23809300038091000387FF05C030 -:104B60000E94EB23819580930003DF91CF911F91E9 -:104B70000C9411259F3F09F08ECF96CFDF91CF91F6 -:104B80001F910895ECEFF2E085E0DF011D928A9518 -:104B9000E9F71092FB021092FA020895833081F136 -:104BA00028F4813059F08230D1F00895853009F42D -:104BB00049C0B8F1863009F456C0089580911E01AD -:104BC000262F30E0280F311D2F3F310524F4680FC8 -:104BD00060931E0108958FEF80931E0108958091C8 -:104BE0001D01262F30E0280F311D2F3F310524F401 -:104BF000680F60931D0108958FEF80931D01089544 -:104C000080911C01262F30E0280F311D2F3F3105E8 -:104C100024F4680F60931C0108958FEF80931C01AA -:104C2000089580911B01262F30E0280F311D2F3F62 -:104C3000310524F4680F60931B0108958FEF809372 -:104C40001B01089580911A01262F30E0280F311D95 -:104C50002F3F310524F4680F60931A0108958FEFF8 -:104C600080931A01089580911901262F30E0280FB2 -:104C7000311D2F3F310524F4680F60931901089509 -:104C80008FEF809319010895833011F128F481305A -:104C900049F0823091F00895853081F120F186301D -:104CA000C1F1089580911E01681720F4861B80933E -:104CB0001E01089510921E01089580911D0168172C -:104CC00020F4861B80931D01089510921D01089504 -:104CD00080911C01681720F4861B80931C010895A5 -:104CE00010921C01089580911B01681720F4861B07 -:104CF00080931B01089510921B01089580911A0161 -:104D0000681720F4861B80931A01089510921A01E7 -:104D1000089580911901681720F4861B809319016A -:104D200008951092190108950F931F93873208F088 -:104D300048C08E3108F08DC0803109F477C008F585 -:104D4000873009F461C068F4863009F09DC0809115 -:104D5000F202817F8E7F8093F20281E080930203D2 -:104D600094C08B3009F489C08E3009F08DC08091D9 -:104D7000F20282FB222720F991E0922790FB82F930 -:104D80005EC0863109F479C060F4813109F07CC0DD -:104D90000E94BC1B9091160181E089278093160127 -:104DA0006CC0893109F469C08B3109F06DC0809104 -:104DB000F20281FB222720F991E0922790FB81F9F2 -:104DC0003EC0883309F459C050F4893209F457C001 -:104DD000853309F454C0873209F451C055C0833477 -:104DE00009F44DC028F48A3308F44EC0895332C008 -:104DF000883409F049C00E94BC1B0E94FA090E9435 -:104E0000C1030E94132339C09091F202892F80952B -:104E1000817080FB90F929F0966098609093F2027F -:104E200034C0997F977F9093F20227C08091F2025D -:104E300083FB222720F991E0922790FB83F980934E -:104E4000F2029923D1F08091F20281608093F20204 -:104E500014C08D5141E050E060E070E08A019B0198 -:104E600004C0000F111F221F331F8A95D2F7C901FA -:104E7000B8010E947C1F0E94BC1B81E006C061E05B -:104E800070E080E090E0F5CF80E01F910F910895F1 -:104E900080E0089580E00895CF93C82F80910203A9 -:104EA000813069F018F08230C9F184C0E0911701B7 -:104EB000F09118018081823209F07EC007C0E09134 -:104EC0001701F09118018081823261F48C2F0E94C9 -:104ED0004827811104C08C2F0E9494261DC081E0B8 -:104EE00090E01AC08C2F0E944A27811114C0C4314F -:104EF00079F048F4CB3079F0C03109F061C082E03C -:104F00008093020308C0C93219F0C83321F058C099 -:104F10001092020355C081E0817054C0C93291F1F2 -:104F200020F5C43179F1B0F4C73009F047C08EE103 -:104F300080931E0182E380931D018AE080931C010F -:104F400084E180931B0188E080931A0188E28093BA -:104F5000190134C0CE51C63088F5EC2FF0E0EA5488 -:104F6000FE4F80818093010329C0CE34E9F020F404 -:104F7000CB3421F56AE013C0C13579F0C235F1F4C4 -:104F800061E00DC080910103882319F010920103A4 -:104F900015C081E08093020315C061E006C08091D6 -:104FA00001030E94CE250AC06AE0809101030E949D -:104FB000442604C01092020380E004C081E002C0D5 -:104FC00080E0AACFCF9108950E947423811102C07E -:104FD0000E9450230E94902380931D0380FF02C0F3 -:104FE000869501C080E00C94BC0280911D03982F2F -:104FF0009695292F30E0233031054CF49F5F990FAF -:105000008170892B816080931D030E94942380917D -:105010001D0386950C94BC0280911D03982F9695D4 -:1050200091F09158990F8170892B80931D038E7F89 -:1050300091E009F490E080911D0390FB80F980934A -:105040001D030E94942380911D0386950C94BC023D -:1050500080911D03982F909590FB80F980931D03FC -:105060000E94942380911D0380FF02C0869501C099 -:1050700080E00C94BC0290911D03892F86958F5F70 -:105080008F779170843028F4880F892B80931D03CB -:1050900002C090931D0380911D038E7F91E009F45F -:1050A00090E080911D0390FB80F980931D030E9486 -:1050B000942380911D0386950C94BC0220911D03BE -:1050C000922F96958927982F990F822F8170892B7F -:1050D00080931D038E7F91E009F490E080911D0381 -:1050E00090FB80F980931D030E94942380911D03FF -:1050F00086950C94BC0280911D03869508955058A6 -:10510000BB27AA270ED0D1C1C2D130F0C7D120F021 -:1051100031F49F3F11F41EF4B7C10EF4E095E7FBA4 -:105120009FC1E92FD3D180F3BA17620773078407B1 -:10513000950718F071F49EF5EBC10EF4E0950B2E77 -:10514000BA2FA02D0B01B90190010C01CA01A001D9 -:105150001124FF27591B99F0593F50F4503E68F134 -:105160001A16F040A22F232F342F4427585FF3CF75 -:10517000469537952795A795F0405395C9F77EF446 -:105180001F16BA0B620B730B840BBAF09150A1F08F -:10519000FF0FBB1F661F771F881FC2F70EC0BA0F15 -:1051A000621F731F841F48F4879577956795B7959D -:1051B000F7959E3F08F0B3CF9395880F08F0992795 -:1051C000EE0F97958795089527D108F481E008950B -:1051D0000CD06BC163D140F05AD130F021F45F3F65 -:1051E00019F03EC1511195C14FC170D198F3992367 -:1051F000C9F35523B1F3951B550BBB27AA2762179B -:105200007307840738F09F5F5F4F220F331F441FDF -:10521000AA1FA9F333D00E2E3AF0E0E830D0915017 -:105220005040E695001CCAF729D0FE2F27D0660F04 -:10523000771F881FBB1F261737074807AB07B0E843 -:1052400009F0BB0B802DBF01FF2793585F4F2AF059 -:105250009E3F510568F004C15CC15F3FECF3983E8E -:10526000DCF3869577956795B795F7959F5FC9F7B6 -:10527000880F911D9695879597F90895E1E0660F3F -:10528000771F881FBB1F621773078407BA0720F0B8 -:10529000621B730B840BBA0BEE1F88F7E095089521 -:1052A00004D06894B11135C1089518D188F09F5782 -:1052B00090F0B92F9927B751A0F0D1F0660F771F62 -:1052C000881F991F1AF0BA95C9F712C0B13081F042 -:1052D0001FD1B1E008951CC1672F782F8827B85FD0 -:1052E00039F0B93FCCF3869577956795B395D9F7A3 -:1052F0003EF490958095709561957F4F8F4F9F4FAD -:105300000895E89409C097FB3EF4909580957095B8 -:1053100061957F4F8F4F9F4F9923A9F0F92F96E901 -:10532000BB279395F695879577956795B795F11176 -:10533000F8CFFAF4BB0F11F460FF1BC06F5F7F4F13 -:105340008F4F9F4F16C0882311F096E911C0772325 -:1053500021F09EE8872F762F05C0662371F096E82E -:10536000862F70E060E02AF09A95660F771F881FFD -:10537000DAF7880F9695879597F9089588D018F0F1 -:1053800011F08CD038F480C0C4C0E92F9FD0B0F3A6 -:105390005523C9F3E7FB6217730784079507A8F144 -:1053A00099F3E92FFF2788232AF03197660F771F9B -:1053B000881FDAF7952F5527442332F0915050403B -:1053C000220F331F441FD2F7BB27E91BF50B621BCB -:1053D000730B840BB109C1F222F4620F731F841F97 -:1053E000B11D31972AF0660F771F881FBB1FEFCFC3 -:1053F000915050405AF041F0882332F0660F771FE9 -:10540000881F91505040C1F7939530C0869577958D -:1054100067959F5FD9F7F8CF990F0008550FAA0B32 -:10542000E0E8FEEF16161706E807F907C0F01216B7 -:105430001306E407F50798F0621B730B840B950BBA -:1054400039F40A2661F0232B242B252B21F408950F -:105450000A2609F4A140A6958FEF811D811D0895AC -:1054600097F99F6780E870E060E008959F3F31F012 -:10547000915020F4879577956795B795880F911D82 -:105480009695879597F908959FEF80EC08950024ED -:105490000A941616170618060906089500240A9499 -:1054A00012161306140605060895092E0394000C1F -:1054B00011F4882352F0BB0F40F4BF2B11F460FFAE -:1054C00004C06F5F7F4F8F4F9F4F089557FD9058D7 -:1054D000440F551F59F05F3F71F04795880F97FBB8 -:1054E000991F61F09F3F79F0879508951216130672 -:1054F0001406551FF2CF4695F1DF08C016161706A1 -:105500001806991FF1CF86957105610508940895D5 -:10551000E894BB2766277727CB0197F908957CDFAE -:1055200008F48FEF08950BD0C0CFB1DF28F0B6DFBD -:1055300018F0952309F094CFA7CF1124EACFC6DF46 -:10554000A0F3959FD1F3950F50E0551F629FF00196 -:10555000729FBB27F00DB11D639FAA27F00DB11DEF -:10556000AA1F649F6627B00DA11D661F829F222778 -:10557000B00DA11D621F739FB00DA11D621F839FFF -:10558000A00D611D221F749F3327A00D611D231FD5 -:10559000849F600D211D822F762F6A2F11249F5723 -:1055A00050408AF0E1F088234AF0EE0FFF1FBB1F46 -:1055B000661F771F881F91505040A9F79E3F5105E5 -:1055C00070F04ECFA6CF5F3FECF3983EDCF38695AC -:1055D00077956795B795F795E7959F5FC1F7FE2B90 -:1055E000880F911D9695879597F90895FA01EE0F0A -:1055F000FF1F30962105310599F16115710561F4A0 -:105600008038BFE39B0749F168949038810561F0C9 -:105610008038BFEF9B0741F0992342F5FF3FE1053A -:105620003105210511F1E8940894E795D901AA23E1 -:1056300029F4AB2FBE2FF85FD0F310C0FF5F70F4DA -:10564000A695E0F7F73950F019F0FF3A38F49F7754 -:105650009F930CD00F9007FC905808953EF014CF04 -:1056600060E070E080E89FE308954FE79F775F93E5 -:105670004F933F932F939ED02F913F914F915F91E6 -:1056800052DF05C019F40EF0EBCE42CFFDCE26DF7F -:10569000C8F39638C0F707F80F92E8942BE33AEA7C -:1056A00048EB5FE74EDF0F920F920F924DB75EB758 -:1056B0000F92C0D0EAE0F1E016D04F915F91EF91E8 -:1056C000FF91E595EE1FFF1F49F0FE57E068442764 -:1056D000EE0F441FFA95E1F74195550B32D00F902C -:1056E00007FE26C00895DF93CF931F930F93FF9279 -:1056F000EF92DF927B018C01689405C0DA2EEF01F6 -:105700001EDFFE01E894A5912591359145915591B3 -:10571000AEF3EF0106DDFE019701A801DA9479F7F7 -:10572000DF90EF90FF900F911F91CF91DF9108953F -:105730009B01AC0160E070E080E89FE349CD90CE32 -:1057400095CECCDEE8F39923D9F3940F511DBBF32A -:105750009150504094F059F0882332F0660F771F33 -:10576000881F91505040C1F79E3F510544F7880F64 -:10577000911D9695879597F908955F3FACF0983EF7 -:105780009CF0BB27869577956795B79508F4B1602F -:105790009395C1F7BB0F58F711F460FFE8CF6F5F27 -:1057A0007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCEC6 -:1057B000689456CE93DEC8F39923D1F3C6F3DF93F2 -:1057C000CF931F930F93FF92C92FDD2788232AF0D1 -:1057D0002197660F771F881FDAF720E030E040E856 -:1057E0005FEB9FE3883920F0803E30F021968F7781 -:1057F00087DCE2E3F1E003C083DCEFE5F1E073DF97 -:105800008B01BE01EC01FB2E6F5771097595771F57 -:10581000880B990B78DD28E132E741E35FE38FDE07 -:10582000AF2D9801AE01FF900F911F91CF91DF91A5 -:1058300078DC3BCEFA01DC01AA0FBB1F9B01AC0157 -:10584000BF5728F422273327442750781FC0B75169 -:1058500088F4AB2F0024469537952795011CA39516 -:10586000D2F3002069F0220F331F441FB395DAF3FF -:105870000DD045CC61307105A0E88A07B94630F4F7 -:105880009B01AC016627772788279078309621F016 -:1058900020833183428353830895AA1BBB1B51E1AC -:1058A00007C0AA1FBB1FA617B70710F0A61BB70B90 -:1058B000881F991F5A95A9F780959095BC01CD0135 -:1058C000089597FB072E16F4009407D077FD09D0B2 -:1058D0000E944D2C07FC05D03EF4909581959F4F7A -:1058E0000895709561957F4F0895EE0FFF1F059005 -:1058F000F491E02D0994F999FECF92BD81BDF89AFB -:10590000992780B50895A8E1B0E042E050E00C94FA -:10591000A32C262FF999FECF92BD81BDF89A01974D -:1059200000B4021639F01FBA20BD0FB6F894FA9AE7 -:10593000F99A0FBE08950196272F0E948A2C0C9485 -:10594000892CDC01CB01FC01F999FECF06C0F2BD28 -:10595000E1BDF89A319600B40D9241505040B8F72D -:065960000895F894FFCF4A -:10596600640007000CFF0000003F64DE0F6C104966 -:10597600101510E10F0101DF022808140A321E007B -:1059860002040507090B0C0E1011131517181A1C23 -:105996001D1F2123242628292B2D2F30323435375D -:1059A600393B1F0F03764F5F6F7F4969437909596A -:1059B60053633149803F5D8B803FF8BF803FCAE12A -:1059C600803F73ED803FCAE1803FF8BF803F5D8B2B -:1059D600803F3149803F0000803FF16D7F3F75EA8F -:1059E6007E3F4C827E3F833F7E3F84287E3F833FBF -:1059F6007E3F4C827E3F75EA7E3FF16D7F3F000021 -:105A0600803F3F4D3639830436040004C7035A03EA -:105A160073038C03A50301020304050607080900A6 -:00000001FF diff --git a/keyboard/planck/keymaps/angerthosenear/compiled.hex b/keyboard/planck/keymaps/angerthosenear/compiled.hex deleted file mode 100644 index b584d6a935..0000000000 --- a/keyboard/planck/keymaps/angerthosenear/compiled.hex +++ /dev/null @@ -1,1449 +0,0 @@ -:100000000C9496020C94DA020C94DA020C94DA0244 -:100010000C94DA020C94DA020C94DA020C94DA02F0 -:100020000C94DA020C94DA020C9478140C944A15AD -:100030000C94AC220C94DA020C94DA020C94DA02DE -:100040000C94DA020C943C030C94DA020C94DA025D -:100050000C94DA020C9414230C94DA020C94DA0255 -:100060000C94DA020C94DA020C94DA020C94DA02A0 -:100070000C94DA020C94DA020C94DA020C94DA0290 -:100080000C94ED0A0C94DA020C94DA020C94DA0265 -:100090000C94DA020C94DA020C94DA020C94DA0270 -:1000A0000C94DA020C94DA020C94DA02B715D91522 -:1000B000C716D915C7161E164116C7169616A916C5 -:1000C00093199319C219C219011A211A771B771BA8 -:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 -:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 -:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 -:10010000F91A071B0E1B151B1F1B07634236B79BF3 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A299 -:1001D000F1A3018C028C290014001A0008001500FC -:1001E00017001C0018000C00120013002A002B003E -:1001F00004001600070009000A000B000D000E00A5 -:100200000F0033002800E1001D001B00060019004C -:100210000500110010003600370038003400E000FF -:10022000E300E200835002202C002C00012050004B -:10023000510052004F0001000100010001000100C7 -:1002400001005F00600061005400560001000100E1 -:10025000010001000100010001005C005D005E0082 -:1002600055005700010001000100010001000100DC -:10027000010059005A005B006300580001000100B2 -:1002800001000100010002202C0062000120010099 -:1002900001000100010035001E001F0020002100A8 -:1002A0002200230024002500260027000100010071 -:1002B0000320042048120100010001002D002E003F -:1002C0002F00300031000100440045006800690043 -:1002D0006A006B006C006D006E006F000100010091 -:1002E00001000100010001000100AC000120AB0091 -:1002F000AA00A900AE0035021E021F022002210240 -:100300002202230224022502260227024C000100B9 -:100310000320042048120100010001002D022E02DA -:100320002F023002310201003A003B003C003D0048 -:100330003E003F0040004100420043000100010038 -:1003400001000100010002200100010001004A003B -:100350004E004B004D00280354006800650020004B -:1003600050006C0061006E0063006B0020004B00C9 -:100370006500790062006F00610072006400000097 -:100380002C034F007200740068006F006C0069005D -:100390006E0065006100720020004B00650079006E -:1003A00062006F00610072006400730000000403CB -:1003B000090409026D00040100A0FA09040000010B -:1003C00003010100092111010001223F00070581FD -:1003D0000308000A090401000103010200092111B8 -:1003E000010001224D000705820308000A090402EA -:1003F000000103000000092111010001223600075D -:1004000005830308000A0904030001030000000932 -:100410002111010001223900070584031000011297 -:1004200001100100000008EDFE6060010001020003 -:100430000105010906A101050719E029E7150025B5 -:1004400001950875018102050819012905950575B1 -:10045000019102950175039101050719002977158E -:10046000002501957875018102C005010980A1016F -:10047000850216010026B7001A01002AB700751080 -:1004800095018100C0050C0901A101850316010039 -:10049000269C021A01002A9C02751095018100C059 -:1004A00005010902A1010901A10005091901290598 -:1004B00015002501950575018102950175038101DE -:1004C0000501093009311581257F950275088106DE -:1004D00009381581257F950175088106050C0A38B4 -:1004E000021581257F950175088106C0C0050109A7 -:1004F00006A101050719E029E715002501950875F2 -:1005000001810295017508810105081901290595E8 -:1005100005750191029501750391010507190029DF -:10052000FF150025FF950675088100C011241FBE28 -:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A -:100540001E0390911F03A0912003B09121038730D7 -:10055000904BA740B04BB9F410921E0310921F03AA -:10056000109220031092210314BE84B7877F84BFAA -:1005700088E10FB6F89480936000109260000FBE7F -:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 -:1005900002C005900D92A03CB107D9F713E0A0EC82 -:1005A000B1E001C01D92AE31B107E1F70E94BE116A -:1005B0000C94D72C0C9400000895089581E00895C0 -:1005C00008950C94DD020C94DE020C94E0020E946B -:1005D000A12823E030E0281B3109220F2093C40119 -:1005E0000895282F2F9880918000211108C0877FBF -:1005F0008093800010928D0010928C001BC0886048 -:1006000080938000233019F48FEF9FEF0FC083E0B9 -:1006100090E0821B9109880F991F2FEF3FEFA901EE -:1006200002C0569547958A95E2F7CA0190938D00CE -:1006300080938C000C94E7020E94E70284E0809390 -:10064000C3011092C0010895279A2F988FEF9FEF52 -:1006500090938700809386008AE08093800089E1F0 -:10066000809381000E940A280C941C030E9424039A -:100670006E9A769A0C94DC021F920F920FB60F922C -:1006800011242F933F938F939F93EF93FF93E091C8 -:10069000C101F091C201CF0101969093C2018093F4 -:1006A000C1010090C30102C0F695E7950A94E2F7F4 -:1006B000EF738091C001823019F4E03251F404C02C -:1006C000813039F4EF3329F480916F008D7F80936E -:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B -:1006E000C001E39F900D11240090C40102C09695B3 -:1006F00087950A94E2F790938D0080938C00FF9188 -:10070000EF919F918F913F912F910F900FBE0F907E -:100710001F90189581E008950C948A0308950C9415 -:10072000360380911502882309F448C08091D101D5 -:100730009091D201009779F40E94DE229093D20129 -:100740008093D1018091D30190E0009771F4809162 -:10075000D40190E00AC00E94EA2220910001309169 -:1007600001012817390740F329C00197880F991F05 -:10077000880F991FFC01EB52FE4F608171818281CD -:1007800093810E94530AE091D30184E0E89FF00135 -:100790001124EB52FE4F60817181828193814FE081 -:1007A00050E00E940B0E8091D30190E00196609181 -:1007B000D40170E00E94872C8093D3010C94E10255 -:1007C000109217020C94200A0895089581E08093F6 -:1007D00017020C94E503089508958F929F92AF92AB -:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA -:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 -:10080000FC0100811181C8010E94DB20B8010E9417 -:10081000F2058C01B7010E948C03882309F4CCC136 -:100820000032F0E51F0741F4F7018281882309F4C3 -:1008300058C00E946F0EC0C10132F0E51F0741F49D -:10084000F7018281882309F44CC00E94780EB4C15C -:100850000232F0E51F0751F4F7018281882309F481 -:1008600040C00E946B0E8111F0CFE3CF0332F0E560 -:100870001F0739F4F7018281882399F10E94E6036A -:100880009BC10432F0E51F0739F4F7018281882308 -:1008900041F10E94E00390C10532F0E51F0749F4E1 -:1008A000F70182818823E9F0809117028111F1CF4D -:1008B000E5CF0632F0E51F0739F4F701828188237E -:1008C00081F00E947F0E0AC00732F0E51F0749F44D -:1008D000F7018281882329F00E948A0E0E94EC038E -:1008E0006BC180911702811105C0F70182818111CE -:1008F000CFC018C1003E110579F4F7018281882329 -:1009000009F44DC00E94200A81E0809316021092E3 -:1009100015021092D40150C1023E110559F4F7019D -:1009200082818823E1F10E94200A1092160210921F -:10093000150242C1033E110591F4F701828188231B -:1009400071F10E94200A1092160281E08093150234 -:100950001092D3011092D2011092D1012DC1023513 -:10096000110559F4F7018281882309F425C180918A -:100970000001909101010A970DC00135110579F42C -:10098000F7018281882309F417C1809100019091B9 -:1009900001010A9690930101809300010DC14091DD -:1009A000040183E2EFE1F1E0DE01119601900D9286 -:1009B0008A95E1F7F701808121E030E02C0F3D1F9F -:1009C000280F311DC9012091020130910301FC0162 -:1009D000E20FF31F6081772767FD7095640F711D2B -:1009E000882777FD8095982F0E94A92920E030E084 -:1009F00040E451E40E940E294B015C01F701218182 -:100A000084E090E0821B9109BC01882777FD8095E6 -:100A1000982F0E94A9299B01AC01C501B4010E9435 -:100A2000A6289B01AC0160E070E080E090E40E94A9 -:100A30001C2B20E030E04CED50E40E94B92A4B0121 -:100A40005C01F70182818823D1F04FE050E0C501BD -:100A5000B4010E940B0E809116028823A1F08091B0 -:100A6000D40124E0829FF0011124EB52FE4F8082DA -:100A70009182A282B3828F5F8093D40104C0C501AA -:100A8000B4010E94530A0F3F110508F02ECF94C005 -:100A90008091D00181111FC0043130E5130709F0A6 -:100AA00051C00E948E0381E08093D0010E94DE221B -:100AB0009093CF018093CE011092C7011092C9018B -:100AC0001092C8011092CB011092CA011092CD0170 -:100AD0001092CC0171C08091CE019091CF010E9403 -:100AE000EA22883C910570F48091C701E82FF0E07C -:100AF000EE0FFF1FE853FE4F118300838F5F80933B -:100B0000C7015AC0043880E5180721F005381045A0 -:100B100001F13AC0F7018281882341F01092C501AA -:100B200082E01EC0043830E5130759F58091C501F5 -:100B3000811106C086E20E94371886E20E94FF18E3 -:100B400082E01CC00438F0E51F0741F3053810456A -:100B5000D9F4F7018281882331F01092C60180E236 -:100B60000E944E1929C08091C601811106C087E2FA -:100B70000E94371887E20E94FF1880E20E945519F0 -:100B80001BC00538104529F381E08093C50180938F -:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 -:100BA000DF91CF911F910F91FF90EF90BF90AF9089 -:100BB0009F908F900C94E30280E0A3960FB6F89478 -:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 -:100BD000EF90BF90AF909F908F90089580E090E04D -:100BE000089508959CE0799FF001112490E3899F76 -:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B -:100C0000FE4F859194910895880F991FFC01E45B34 -:100C1000FF4F859194910895880F991FFC01E4532B -:100C2000FE4F8591949108950F931F93CF93DF9377 -:100C3000EC01811521E39207A0F5C11580E3D807E7 -:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 -:100C500007C2C83AD10578F4C53AD10508F06AC090 -:100C6000C130D10509F463C008F4F7C1C430D1051F -:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 -:100C8000C11590E2D90708F0AFC0C11521E0D20725 -:100C900008F0E6C1C03FD10508F4DFC18E01106540 -:100CA0001FC2C03880E5D80700F5C03790E5D907E6 -:100CB00008F0A3C0C11520E5D20709F4ACC050F478 -:100CC000CE01905480319F4008F0C7C1DF708E0183 -:100CD000106A06C2C13080E5D80709F4AEC0C4313D -:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 -:100CF00009F48EC050F4C13890E5D90709F482C0D8 -:100D000008F083C000E011EDEBC1C03181E5D807E8 -:100D100008F4A3C1C11597E5D90708F436C1CE017F -:100D200090578115904108F098C1DF7093C101E0A0 -:100D300010E0D6C1C53AD10509F494C1C63AD1052F -:100D400009F093C102E810E4CBC1C83AD10509F417 -:100D50008FC1C93AD10509F48EC1CA3AD10509F447 -:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 -:100D70008BC1CD3AD10509F48AC1C03BD10509F434 -:100D800089C1CE3AD10509F488C1CF3AD10509F419 -:100D900087C1C13BD10509F486C1C23BD10509F425 -:100DA00085C1C33BD10509F484C1C43BD10509F415 -:100DB00083C1C53BD10509F482C1C63BD10509F405 -:100DC00081C1C73BD10509F480C1C83BD10509F4F5 -:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 -:100DE0007DC100E014E47CC1CE019F700E940C061E -:100DF00078C1DD278E01106C73C1CF70DD278E01A5 -:100E0000146D6EC100E010ED6BC100E012ED68C121 -:100E100000E013ED65C10E94E21B0E94200A0E94BF -:100E2000E4038FEF94E32CE0815090402040E1F701 -:100E300000C000000E94392353C18091F2028160FA -:100E40008093F2024DC10E949A23811102C00E9438 -:100E500076230E94AD2390E090931D0380931C03A2 -:100E6000C23080E5D80721F480911C03816086C0E0 -:100E7000C43090E5D90721F480911C0382607EC0C4 -:100E8000C63020E5D20721F480911C03846076C02F -:100E9000C83080E5D80719F480911C0327C0CA30F8 -:100EA00090E5D90721F480911C03806167C0CC30A4 -:100EB00020E5D20721F480911C0380625FC0CE3010 -:100EC00080E5D80721F480911C03806457C0C031AD -:100ED00090E5D90721F480911C0380684FC0C2318E -:100EE00020E5D20729F480911C038460886046C005 -:100EF000C33080E5D80721F480911C038E7F3EC06B -:100F0000C53090E5D90721F480911C038D7F36C050 -:100F1000C73020E5D20721F480911C038B7F2EC0BF -:100F2000C93080E5D80719F480911C0326C0CB3066 -:100F300090E5D90721F480911C038F7E1FC0CD302E -:100F400020E5D20721F480911C038F7D17C0CF309C -:100F500080E5D80721F480911C038F7B0FC0C1313D -:100F600090E5D90721F480911C038F7707C0C33126 -:100F7000D04531F480911C038B7F877F80931C03C5 -:100F800080911C030E94B123ABC08D2F99278F70D5 -:100F9000992781309105D9F49E012370332702C02F -:100FA000880F991F2A95E2F79C688E0144E0000F94 -:100FB000111F4A95E1F700271370802B912B53E006 -:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 -:100FD000910531F4DC2FCC278E01016F106A80C09F -:100FE0008330910569F4CE018370992701E010E008 -:100FF00002C0000F111F8A95E2F7C8019C680FC05C -:1010000084309105B9F4CE018370992701E010E096 -:1010100002C0000F111F8A95E2F7C8019A6823E009 -:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 -:101030001D2B56C08530910531F4DC2FCC278E0155 -:10104000046F106A4DC0069709F04AC0CF71DD27C2 -:10105000DC2FCC278E01106243C000E010E040C0BE -:101060008E013EC001E810E43BC003E810E438C044 -:1010700002EE14E435C009EE14E432C00AEE14E4C2 -:101080002FC005EB14E42CC006EB14E429C007EBD9 -:1010900014E426C00CEC14E423C00DEC14E420C0CE -:1010A00003E815E41DC00AE815E41AC002E915E4D6 -:1010B00017C004E915E414C001E216E411C003E20C -:1010C00016E40EC004E216E40BC005E216E408C004 -:1010D00006E216E405C007E216E402C00AE216E4DE -:1010E000C801DF91CF911F910F9108959CE0799FE6 -:1010F000F001112490E3899FE00DF11D1124E60F0A -:10110000F11DEE0FFF1FEA52FE4F85919491803E34 -:101110009105E0F4803C910558F58133910509F47F -:101120006FC048F48932910509F463C08A32910591 -:1011300009F46DC072C089339105E9F082389105D8 -:10114000D1F08533910509F44DC067C0833E910508 -:1011500081F138F4803E9105B9F0823E9105D9F0D5 -:101160005CC0863E910561F1873E9105A1F155C0B5 -:101170000E940406089520911C0320FD02C021FF57 -:101180004CC080EE90E049C080911C0380FFF9CFF5 -:1011900089E390E042C080911C0382FF0EC08091E1 -:1011A0001C0384FF03C080E090E037C083EE90E032 -:1011B00034C080911C0382FFF2CF82EE90E02DC0FC -:1011C00080911C0383FF0BC080911C0384FDEBCF37 -:1011D00087EE90E022C080911C0383FFF5CF86EE5E -:1011E00090E01BC080911C0385FF07C089E290E05E -:1011F00014C080911C0385FFF9CF85E390E00DC0FA -:1012000080911C0386FF07C08AE290E006C08091AF -:101210001C0386FFF9CF81E390E00E941406089535 -:101220000C94E502E82FF0E0E25BFE4F8081E82FAE -:10123000EF70F0E082958F7021E030E0A90102C0EC -:10124000440F551F8A95E2F740A308950F931F930B -:10125000CF93DF9385B7806885BF85B7806885BFEA -:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 -:10127000E82FEF70F0E021A182958F70A80102C0E5 -:10128000440F551F8A95E2F7CA01822B81A38C2F48 -:101290000E941209219740F78BE090E061E070E036 -:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 -:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F -:1012C0009D01242B22A3019758F7DF91CF911F9105 -:1012D0000F910C948F03EF92FF920F931F93CF9374 -:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA -:1012F0008C2F0E9412098BE090E040E050E0FC014E -:10130000EE5BFE4F6081E62FEF70F0E020A130E051 -:1013100062956F7002C0359527956A95E2F720FDBA -:1013200009C09701082E02C0220F331F0A94E2F76A -:10133000422B532B019718F7F801929182918F015C -:101340008417950721F051834083D09305018C2F9A -:101350000E941209C15060F68091050187FD2CC0E2 -:101360008150809305018F3F39F08FE99FE001970D -:10137000F1F700C0000020C080911E0290911F0272 -:10138000909327028093260280911C0290911D0267 -:10139000909325028093240280911A0290911B025F -:1013A0009093230280932202809118029091190257 -:1013B00090932102809320020E94910381E0DF91AB -:1013C000CF911F910F91FF90EF900895E82FF0E0DB -:1013D000EE0FFF1FE05EFD4F80819181089508951B -:1013E0000F931F93CF9308E212E0C0E0F8019291AF -:1013F00082918F010E945622C80FF2E000321F072F -:10140000A9F78C2FCF911F910F9108950E949A23D5 -:10141000811102C00E9476230E94BF23809307039C -:101420003E9A809171008D7F8093710082E080935D -:1014300090008AE18093910081E080932A020895D0 -:1014400080912A02811102C00E94060A10927A023B -:1014500010927902809171008D7F8093710080914C -:1014600090008F738093900010923C0210923B0288 -:10147000109273021092740210927502109276020A -:101480001092720210927102E1E5F2E0A1E4B2E082 -:1014900011921192119211921D921D9282E0E137E8 -:1014A000F807B1F70895CF92DF92EF92FF920F9372 -:1014B0001F93CF93DF9320913B02222309F484C032 -:1014C0006B017C0180912A02811102C00E94060AF0 -:1014D00001E712E0C7E0D0E0A7019601F801929180 -:1014E0008291729162918F010E940A29811131C00B -:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 -:10150000118212821382DE01AA0FBB1FAF5BBD4F97 -:1015100011961C921E92C730D105E9F021964481A4 -:1015200055816681778140835183628373831482FE -:1015300015821682178212968D919C91139711969F -:101540009C938E9313961C921E9212973496129629 -:10155000E2CF219708F68091790290917A02019763 -:1015600097FD05C090937A028093790204C010928F -:101570007A02109279028091790290917A022091F8 -:101580007702309178022817390724F010927802F8 -:1015900010927702892BC1F4809171008D7F809326 -:1015A0007100809190008F7380939000109273026D -:1015B00010927402109275021092760210927202CA -:1015C0001092710210923B02DF91CF911F910F9107 -:1015D000FF90EF90DF90CF9008951F920F920FB67B -:1015E0000F9211244F925F926F927F928F929F92EF -:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 -:101600004F935F936F937F938F939F93AF93BF930A -:10161000CF93DF93EF93FF9380913B02882309F4EC -:101620009BC1C0917902D0917A021C161D060CF064 -:1016300093C140902B0250902C0260902D0270902C -:101640002E0220E030E0A901C301B2010E94B52AB8 -:1016500018160CF065C0C130D10509F452C0809154 -:10166000770290917802BE010E94872C7C019093B2 -:1016700078028093770280903D0290903E02A09085 -:101680003F02B090400220E030E040E85FE3C50157 -:10169000B4010E94A62860933D0270933E0280939D -:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 -:1016B000EF5AFD4FA3019201608171818281938174 -:1016C0000E940E2920E030E040E05EE30E94B92A4B -:1016D0009B01AC01C501B4010E94B52A18168CF417 -:1016E000C7010196BE010E94872C909378028093D7 -:1016F000770210923D0210923E0210923F02109229 -:101700004002E0917702F0917802EE0FFF1FEE0F9A -:10171000FF1FEF5AFD4F6081718182819381D0C09C -:10172000C0907302D0907402E0907502F09076023F -:1017300020E030E0A901C701B6010E940A292197E3 -:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A -:10175000EF5AFD4F80809180A280B380A501940153 -:10176000C701B6010E940A2987FF31C0A501940173 -:1017700060E070E08CED93EC0E940E2920E030E0F8 -:1017800040E451E40E940E2920E030E040E05FE3B5 -:101790000E94B92A9B01AC0160E070E080E090E417 -:1017A0000E941C2B9B01AC01C501B4010E94B92A07 -:1017B0009B01AC01C701B6010E940A2987FF07C03F -:1017C000A701960160E070E08CED93E439C0A501BB -:1017D0009401C701B6010E94B52A18160CF055C035 -:1017E000A501940160E070E08CED93E40E940E2965 -:1017F00020E030E040E451E40E940E2920E030E097 -:1018000040E05FE30E94B92A9B01AC0160E070E018 -:1018100080E090E40E941C2B9B01AC01C501B40147 -:101820000E94B92A9B01AC01C701B6010E94B52AEA -:1018300018165CF5A701960160E070E08CED93EC62 -:101840000E940E2920E030E040E451E40E940E297D -:1018500020E030E040E05FE30E94B92A9B01AC0148 -:1018600060E070E080E090E40E941C2B9B01AC01E2 -:10187000C701B6010E94B92A609373027093740283 -:10188000809375029093760213C0FE01EE0FFF1F46 -:10189000EE0FFF1FEF5AFD4F80819181A281B3812E -:1018A0008093730290937402A0937502B0937602B2 -:1018B000609173027091740280917502909176022A -:1018C00020912802309129022F3F4FEF340731F049 -:1018D0002F5F3F4F30932902209328020E94950EDC -:1018E0006B017C0120E034E244EF51E40E940A29BC -:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 -:1019000081E4F82E20E030E040E051E4C701B60168 -:101910000E94B92A9B01AC0160E074E284E79BE479 -:101920000E940E296B017C010E947B297093970015 -:1019300060939600209106013091070140910801C3 -:1019400050910901C701B6010E94B92A0E947B2962 -:10195000709399006093980080913C02882309F469 -:1019600033C1C0903702D0903802E0903902F09035 -:101970003A0220E030E0A901C701B6010E94B52A71 -:101980001816D4F580912802909129028F3F2FEFED -:10199000920729F001969093290280932802C701AB -:1019A000B6010E94950E20E030E040E051E40E9434 -:1019B000B92A9B01AC0160E074E284E79BE40E94D9 -:1019C0000E296B017C010E947B2970939700609324 -:1019D0009600209106013091070140910801509135 -:1019E0000901C701B6010E94B92A0E947B297093A0 -:1019F00099006093980008C010929700109296008A -:101A00001092990010929800609131027091320208 -:101A10006F5F7F4F70933202609331022091960086 -:101A20003091970080E090E0232BF1F0C091960078 -:101A3000D09197000E94A7296B017C01BE0180E034 -:101A400090E00E94A7299B01AC0160913302709144 -:101A5000340280913502909136020E940E2920E0D6 -:101A60003FEF4FE757E410C00E94A7296B017C01AC -:101A700020E030EE4FEF54E4609133027091340275 -:101A800080913502909136020E94B92A9B01AC01E7 -:101A9000C701B6010E94B52A87FD96C080912F022A -:101AA0008F5F80932F0290E0209103033091040315 -:101AB00082179307A0F080910E03882319F01092EB -:101AC0002F020DC0809171008D7F809371008091F5 -:101AD00090008F738093900010923C027DC08091A3 -:101AE0003002C0912F02811128C0C0900803D0900D -:101AF0000903E0900A03F0900B0320E030E0A90115 -:101B0000C701B6010E94B52A1816BCF481E0809383 -:101B1000300210923702109238021092390210925D -:101B20003A02C0923302D0923402E0923502F0922F -:101B30003602C150C0932F0243C01092300210925F -:101B4000290210922802E0910503F091060348E073 -:101B5000C49FE00DF11D112480819181A281B38188 -:101B60008093370290933802A0933902B0933A02DF -:101B700020E030E040E85EE36481758186819781F2 -:101B80000E94B92A6B017C0180910A01682F70E0E4 -:101B900080E090E00E94A72920E030E048EC52E489 -:101BA0000E940E299B01AC01C701B6010E94B92A0F -:101BB000609333027093340280933502909336021F -:101BC00010923202109231028091070380FD04C00E -:101BD00010923C0210923B02FF91EF91DF91CF9166 -:101BE000BF91AF919F918F917F916F915F914F9135 -:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB -:101C00009F908F907F906F905F904F900F900FBE3E -:101C10000F901F901895CF92DF92EF92FF92CF9383 -:101C2000DF936B017C01EA0180912A02811102C0DD -:101C30000E94060A8091070380FF46C080917902C6 -:101C400090917A0208970CF03FC0809171008D7FCF -:101C50008093710080913C0281110E94200A81E0F2 -:101C600080933B02109229021092280220E030E07B -:101C7000A901C701B6010E94B52A1816DCF48091AB -:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 -:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 -:101CA000FF1FEF5BFD4FD183C083019690937A02B3 -:101CB000809379028091710082608093710080919D -:101CC0009000806880939000DF91CF91FF90EF901B -:101CD000DF90CF90089580910703817008958091DF -:101CE00007038160809307030E94C3230C94EB03D6 -:101CF000809107038E7F809307030C94C323809108 -:101D00007B0290E0019666E070E00E94872C809351 -:101D10007B02089580917B0290E0019766E070E07D -:101D20000E94872C80937B0208958F929F92AF929E -:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 -:101D4000DF936B017C01C0912802D0912902BE0172 -:101D500080E090E00E94A7294B015C01A701960159 -:101D600060E070E08CE594E40E940E299B01AC01D8 -:101D7000C501B4010E94B92A0E947B2920917B02EF -:101D8000233009F473C028F4222351F02130E9F004 -:101D90002CC1243009F4A0C0253009F4E0C025C1CD -:101DA00080E090E0A0E0BFE38093060190930701FC -:101DB000A0930801B093090110922B0210922C02FB -:101DC00010922D0210922E0210C110922B0210922E -:101DD0002C0210922D0210922E026431710540F4F3 -:101DE0006A30710560F520E030E040E85EE32BC02A -:101DF000693C710508F0AAC080E090E00E94A72924 -:101E000020E030E040EA51E40E94A52820E030E0E4 -:101E100044E353E40E940E299B01AC010E94B92ABD -:101E200020E030E040E05EE30E94B92A9B01AC0173 -:101E300060E070E080E09EE30E94A52844C020E0BE -:101E400030E040E05FE3C701B6010E94B92A6B01B0 -:101E50007C0180E090E0A0E0BEE3809306019093D7 -:101E60000701A0930801B0930901BFC010922B0293 -:101E700010922C0210922D0210922E024AE0469FE0 -:101E80009001479F300D1124C90168EB7BE00E944F -:101E9000732CBC016C5D754077FF03C07195619533 -:101EA0007109882777FD8095982F0E94A9292EE334 -:101EB00033EC4EE259E30E94B92A20E030E040ECD6 -:101EC0005EE30E94A6286093060170930701809349 -:101ED00008019093090189C010922B0210922C02E4 -:101EE00010922D0210922E02CE0183709927892B19 -:101EF000E1F0BE016170772780E090E00E94A729A1 -:101F000020E030E040E05EE30E94B92A20E030E0CB -:101F100040E45FE30E94A6286093060170930701E6 -:101F200080930801909309010CC080E090E0A0E04C -:101F3000BFE38093060190930701A0930801B0933B -:101F40000901C770DD27CD2B09F04FC010920601A3 -:101F500010920701109208011092090146C01092D8 -:101F60002B0210922C0210922D0210922E0200E0F1 -:101F700010E020E03FE30093060110930701209357 -:101F80000801309309016739710578F180E090E02C -:101F90000E94A72920E030E047E153E40E94A528F1 -:101FA00020E030E04AE754E40E940E2920E030E0CF -:101FB00048E452E40E94B92A20E030E040EA51E4CB -:101FC0000E94EB290E947629660F771F660F771F04 -:101FD000FB01EE5AFE4F2081318142815381C701BE -:101FE000B6010E94B92A6B017C01C701B601DF91DD -:101FF000CF911F910F91FF90EF90DF90CF90BF9006 -:10200000AF909F908F90089580918C020895CF9308 -:10201000DF9300D01F92CDB7DEB79C0180911303F0 -:10202000843019F593E099833B832A839093E900E8 -:102030008FEF9091E800815095FD06C095ED9A953F -:10204000F1F700008111F5CF8091E80085FF0DC008 -:1020500040E050E063E070E0CE0101960E9468121B -:102060008091E8008E778093E8000F900F900F909A -:10207000DF91CF910895CF93DF9300D01F92CDB71A -:10208000DEB720911303243021F522E029839B83BE -:102090008A8383E08093E9008FEF9091E80081507C -:1020A00095FD06C095ED9A95F1F700008111F5CFE9 -:1020B0008091E80085FF0DC040E050E063E070E0F3 -:1020C000CE0101960E9468128091E8008E7780937D -:1020D000E8000F900F900F90DF91CF91089520911D -:1020E00013032430F1F422E02093E9002FEF309124 -:1020F000E800215035FD06C035ED3A95F1F70000B6 -:102100002111F5CF2091E80025FF0BC040E050E001 -:1021100065E070E00E9468128091E8008E778093FD -:10212000E8000895CF93DF93EC019091130394306E -:1021300009F046C0809115018823D9F080911601DD -:102140008823B9F09093E9008FEF9091E8008150D7 -:1021500095FD06C095E19A95F1F700008111F5CF44 -:102160008091E80085FF2CC040E050E060E170E025 -:1021700017C081E08093E9008FEF9091E8008150D3 -:1021800095FD06C095ED9A95F1F700008111F5CF08 -:102190008091E80085FF14C040E050E068E070E006 -:1021A000CE010E9468128091E8008E778093E8004B -:1021B00080E1FE01ACE7B2E001900D928A95E1F773 -:1021C000DF91CF91089580911203811109C00E947F -:1021D000FD130E945A148091E20084608093E20013 -:1021E0000895109212030895089508950C94A12261 -:1021F00042E061EC81E00E94771342E061EC82E012 -:102200000E94771342E061EC83E00E94771342E181 -:1022100061EC84E00C94771380911503833009F40A -:1022200055C030F4813071F0823009F48EC00895C9 -:102230008A3009F47AC08B3009F460C0893009F023 -:102240009CC020C080911403813A09F096C080910F -:10225000E800877F8093E80080911803909119032C -:10226000892B21F460E18CE792E003C060E080E01C -:1022700090E070E00E94B3128091E8008B77809329 -:10228000E800089580911403813209F076C08091AE -:10229000180390911903009719F0039709F06DC086 -:1022A0008091E800877F8093E8008091E80082FDBC -:1022B00005C0809113038111F8CF5FC08091F100B8 -:1022C00080938C028091E8008B7753C08091140337 -:1022D000813A09F052C08091180390911903892B1B -:1022E00009F04BC08091E800877F8093E8008091DF -:1022F000E80080FFFCCF8091150136C08091140367 -:102300008132D9F58091180390911903892BA9F591 -:102310008091E800877F8093E8000E94AC13809151 -:102320001603809315010C94E21B809114038132F3 -:1023300021F58091E800877F8093E8000E94AC132C -:102340008091170380938D02089580911403813A40 -:10235000A1F48091E800877F8093E8008091E800F5 -:1023600080FFFCCF80918D028093F1008091E80086 -:102370008E778093E8000C94AC13089584B7877F20 -:1023800084BF88E10FB6F8948093600010926000DB -:102390000FBE90E080E80FB6F894809361009093B0 -:1023A00061000FBE0E944F170E94FD130E945A1435 -:1023B0008091E20084608093E20078940E94E016AD -:1023C0000E9451178BE091E00E94FB16809113034D -:1023D000853069F40E946222809111038823B1F351 -:1023E0000E949022882391F30E945212EFCF0E9404 -:1023F0005917ECCF292F332723303105C9F064F466 -:102400002130310581F02230310509F043C08DE6DD -:1024100090E022EB33E042C021323105F1F022326C -:10242000310541F137C082E190E02FE134E036C060 -:1024300099278130910541F08230910541F0892B37 -:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 -:10245000F3E0849190E09F0121C06430D8F4E62F2E -:10246000F0E0EE0FFF1FE255FE4F2081318189E041 -:1024700090E014C0643070F470E0FB01EE0FFF1FB9 -:10248000EA55FE4F20813181FB01EE55FE4F8081E0 -:1024900090E004C080E090E020E030E0FA01318379 -:1024A0002083089580E189BD82E189BD09B400FEE1 -:1024B000FDCF8091D8008F7D8093D8008091E0007F -:1024C00082608093E0008091E00081FDFCCF089560 -:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 -:1024E000EC018B016A010E94CB13811133C0C1142E -:1024F000D10439F0F60180819181081B190BC80FB6 -:10250000D91FE12CF12C0115110519F18091E8007A -:1025100085FD16C08091E8008E778093E800C11495 -:10252000D10449F0F60180819181E80EF91EF18213 -:10253000E08285E00FC00E94CB13882321F30AC0FC -:1025400089918093F10001501109FFEFEF1AFF0A02 -:10255000DACF80E0DF91CF911F910F91FF90EF9044 -:10256000DF90CF90089520911A0330911B03261716 -:10257000370748F06115710539F42091E8002E778E -:102580002093E80001C0B90140E061157105A9F18F -:1025900020911303222309F443C0253009F442C0DB -:1025A0002091E80023FD40C02091E80022FD32C0C8 -:1025B0002091E80020FFE9CF4091F3002091F20044 -:1025C00030E0342BFC01CF016115710559F0283042 -:1025D000310540F481918093F100615071092F5FC2 -:1025E0003F4FF1CF41E02830310509F040E0209124 -:1025F000E8002E772093E800C8CF4111C9CF0AC068 -:1026000080911303882361F0853061F08091E800A8 -:1026100083FD0AC08091E80082FFF2CF80E0089538 -:1026200082E0089583E0089581E0089520911A03DF -:1026300030911B032617370748F06115710539F4EF -:102640002091E8002E772093E80001C0B901FC0139 -:1026500020E06115710591F180911303882309F43D -:1026600040C0853009F43FC08091E80083FD3DC043 -:102670008091E80082FD2FC08091E80080FFE9CFC3 -:102680002091F3008091F20090E0922B611571058A -:1026900059F08830910540F424912093F10031964F -:1026A000615071090196F2CF21E0089709F020E00E -:1026B0008091E8008E778093E800CBCF2111CCCFBA -:1026C0000AC080911303882361F0853061F0809106 -:1026D000E80083FD0AC08091E80082FFF2CF80E02D -:1026E000089582E0089583E0089581E00895982F89 -:1026F000973058F59093E900981739F07091EC00F5 -:102700002091ED005091F00003C0242F762F50E06F -:1027100021FF19C03091EB003E7F3093EB003091E8 -:10272000ED003D7F3093ED003091EB003160309350 -:10273000EB007093EC002093ED005093F00020919B -:10274000EE0027FF07C09F5FD3CF8F708093E90013 -:1027500081E0089580E008958091140387FF11C0FF -:102760008091E80082FD05C0809113038111F8CFAC -:1027700011C08091E8008B770BC0809113038823F0 -:1027800049F08091E80080FFF8CF8091E8008E77D3 -:102790008093E80008952091E4003091E50095E6EB -:1027A0004091EC00842F817040FF22C08091E800AE -:1027B00080FD1CC080911303882391F0853091F037 -:1027C0008091EB0085FD10C04091E4005091E50040 -:1027D0004217530729F39A01915011F784E00895A5 -:1027E00082E0089583E0089581E0089580E00895EF -:1027F0004091E80042FFDECF08950E946B140E94D2 -:102800007314E0EEF0E0808181608083E8EDF0E019 -:1028100080818F77808319BCA7EDB0E08C918E7F8B -:102820008C9380818F7E80831092120308950F9382 -:102830001F93CF93DF930E946B140E947314C8ED13 -:10284000D0E088818F7788838881806888838881B9 -:102850008F7D888319BC1092130310920F0310927E -:1028600011031092100300EE10E0F80180818B7FBD -:10287000808388818160888342E060E080E00E94FC -:102880007713E1EEF0E080818E7F8083E2EEF0E06E -:10289000808181608083808188608083F80180816D -:1028A0008E7F8083888180618883DF91CF911F91A3 -:1028B0000F910895E8EDF0E080818F7E8083E7ED51 -:1028C000F0E080818160808384E082BF81E080933A -:1028D00012030C941714E8EDF0E080818E7F808362 -:1028E0001092E20008951092DA001092E10008952B -:1028F0001F920F920FB60F9211242F933F934F9375 -:102900005F936F937F938F939F93AF93BF93EF9357 -:10291000FF938091E10082FF0BC08091E20082FF73 -:1029200007C08091E1008B7F8093E1000E94DF1659 -:102930008091DA0080FF1FC08091D80080FF1BC00B -:102940008091DA008E7F8093DA008091D90080FF39 -:102950000DC080E189BD82E189BD09B400FEFDCFD3 -:1029600081E0809313030E94E31005C019BC10920C -:1029700013030E94F1108091E10080FF19C0809143 -:10298000E20080FF15C08091E2008E7F8093E2001C -:102990008091E20080618093E2008091D8008062A3 -:1029A0008093D80019BC85E0809313030E94F51032 -:1029B0008091E10084FF30C08091E20084FF2CC050 -:1029C00080E189BD82E189BD09B400FEFDCF80911F -:1029D000D8008F7D8093D8008091E1008F7E809316 -:1029E000E1008091E2008F7E8093E2008091E2001E -:1029F00081608093E20080910F03882311F084E0CE -:102A000007C08091E30087FD02C081E001C083E040 -:102A1000809313030E94F6108091E10083FF29C088 -:102A20008091E20083FF25C08091E100877F809341 -:102A3000E10082E08093130310920F038091E10084 -:102A40008E7F8093E1008091E2008E7F8093E20090 -:102A50008091E20080618093E20042E060E080E0EB -:102A60000E9477138091F00088608093F0000E94AC -:102A7000F410FF91EF91BF91AF919F918F917F9152 -:102A80006F915F914F913F912F910F900FBE0F90DB -:102A90001F9018951F920F920FB60F9211242F932B -:102AA0003F934F935F936F937F938F939F93AF93D6 -:102AB000BF93CF93DF93EF93FF93C091E900CF7063 -:102AC0008091EC00D82FD17080FDD0E81092E90001 -:102AD0008091F000877F8093F00078940E948E159B -:102AE0001092E9008091F00088608093F000CD2B77 -:102AF000CF70C093E900FF91EF91DF91CF91BF912B -:102B0000AF919F918F917F916F915F914F913F9185 -:102B10002F910F900FBE0F901F9018951F93CF937A -:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E -:102B3000CDBFE4E1F3E088E08E0F9091F100919336 -:102B40008E13FBCF0E940C118091E80083FF1FC100 -:102B50008091140390911503492F50E04A3051059C -:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB -:102B700081F0823809F00BC1809118038F70809327 -:102B8000E9008091EB0085FB882780F91092E9002D -:102B900006C0809110039091110391118260909171 -:102BA000E800977F9093E8008093F1001092F10085 -:102BB000C8C0282F2D7F09F0EAC0882319F0823081 -:102BC00061F0E5C080911603813009F0E0C09330D8 -:102BD00009F080E0809311032BC0809116038111CE -:102BE00027C0809118038F7009F4D1C08093E90049 -:102BF0002091EB0020FF1CC0933021F48091EB006A -:102C0000806214C09091EB0090619093EB0021E002 -:102C100030E0A90102C0440F551F8A95E2F74093A6 -:102C2000EA001092EA008091EB0088608093EB004C -:102C30001092E9008091E800877F86C08111A7C0CB -:102C4000109116031F778091E3008078812B809389 -:102C5000E3008091E800877F8093E8000E94AC1336 -:102C60008091E80080FFFCCF8091E3008068809332 -:102C7000E300111102C082E001C083E080931303DE -:102C800086C08058823008F082C0809116039091EF -:102C900017038C3D53E0950779F583E08A838AE238 -:102CA00089834FB7F894DE01139620E03EE051E2AD -:102CB000E32FF0E050935700E49120FF03C0E2952A -:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 -:102CD00001C0C0968D939D932F5F243149F74FBF5C -:102CE0008091E800877F8093E8006AE270E0CE017F -:102CF00001960E94B31214C0AE014F5F5F4F609106 -:102D000018030E94FA11BC01009709F440C0909189 -:102D1000E800977F9093E80089819A810E941613BA -:102D20008091E8008B778093E80031C0803879F596 -:102D30008091E800877F8093E80080910F03809363 -:102D4000F1008091E8008E778093E8000E94AC1338 -:102D50001EC081111CC0909116039230C0F4809166 -:102D6000E800877F8093E80090930F030E94AC13E4 -:102D700080910F03811106C08091E30087FD02C09E -:102D800081E001C084E0809313030E94F8108091D9 -:102D9000E80083FF0AC08091E800877F8093E80005 -:102DA0008091EB0080628093EB00AA960FB6F894B6 -:102DB000DEBF0FBECDBFDF91CF911F910895089563 -:102DC000CF93809113038823A1F0C091E900CF70C5 -:102DD0009091EC00892F817090FD80E8C82B1092B3 -:102DE000E9008091E80083FD0E948E15CF70C093AA -:102DF000E900CF91089590939302809392020895F1 -:102E0000E0919202F0919302309721F00190F081CD -:102E1000E02D099480E00895E0919202F0919302F0 -:102E2000309721F00280F381E02D09940895E0911C -:102E30009202F0919302309721F00480F581E02D09 -:102E4000099408952091900230919102821793077E -:102E500071F09093910280939002E0919202F09130 -:102E60009302309721F00680F781E02D09940895B0 -:102E700020918E0230918F028217930771F0909308 -:102E80008F0280938E02E0919202F091930230972C -:102E900021F00084F185E02D0994089508950C94A3 -:102EA0004E170E94D5220E9426090E945B230C9493 -:102EB0000A285F926F927F928F929F92AF92BF92F9 -:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 -:102ED00000D000D01F92CDB7DEB70E946B099DE9EC -:102EE000C92E92E0D92E03E010E0AA24A394B12CBD -:102EF000502E802F0E94E6094C01F60172906290DC -:102F00006F016826792661147104A1F4015011093A -:102F100078F78FEF89838A831B820E94DE2281608B -:102F2000782F9D838C8349815A816B818D810E948A -:102F3000091838C08091F20281FD0E94EF092BE050 -:102F400030E07501022E02C0EE0CFF1C0A94E2F77D -:102F5000C70186219721892B09F129835A828E2066 -:102F60009F2091E0892809F490E09B830E94DE2253 -:102F70008160782F9D838C8349815A816B818D81FB -:102F80000E940918000F111FF801EB56FD4F8081B8 -:102F90009181E826F926F182E08204C021503109AE -:102FA00080F6B4CF0E944225109194020E9400172F -:102FB0001817D1F00E940017809394020F900F9081 -:102FC0000F900F900F90DF91CF911F910F91FF9075 -:102FD000EF90DF90CF90BF90AF909F908F907F90B9 -:102FE0006F905F900C9410090F900F900F900F90BE -:102FF0000F90DF91CF911F910F91FF90EF90DF9095 -:10300000CF90BF90AF909F908F907F906F905F9088 -:103010000895CF93DF93CDB7DEB72B970FB6F89413 -:10302000DEBF0FBECDBF4F83588769877A878B87F6 -:10303000DE01119686E0FD0111928A95E9F785E09F -:10304000FE01379601900D928A95E1F749815A81E8 -:103050006B817C818D819E810E94801E2B960FB694 -:10306000F894DEBF0FBECDBFDF91CF910895CF930F -:10307000882309F4C2C0C82F823859F40E9400176F -:1030800081FDBBC089E30E945A210E94272289E367 -:103090000CC0833879F40E94001780FDAEC083E530 -:1030A0000E945A210E94272283E50E949C21CF91F1 -:1030B0000C942722843859F40E94001782FD9DC089 -:1030C00087E40E945A210E94272287E4EECF8CEFEA -:1030D0008C0F813A48F48C2F0E94722781118DC089 -:1030E0008C2F0E945A21E3CF80E28C0F883048F465 -:1030F000C77081E001C0880FCA95EAF70E94E021FD -:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 -:1031100031F083E890E005C081E890E002C082E8E9 -:1031200090E0CF910C94221788E58C0F833108F042 -:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 -:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 -:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 -:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 -:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B -:1031800090E038C082EE90E035C089EE90E032C029 -:103190008AEE90E02FC085EB90E02CC086EB90E0AB -:1031A00029C087EB90E026C08CEC90E023C08DEC2A -:1031B00090E020C083E891E01DC08AE891E01AC049 -:1031C00082E991E017C084E991E014C081E292E0C5 -:1031D00011C083E292E00EC084E292E00BC085E26F -:1031E00092E008C086E292E005C087E292E002C069 -:1031F0008AE292E0CF910C943817CF9108958823FA -:1032000009F44BC0823859F40E94001781FF45C071 -:1032100089E30E945A210E94272289E30CC0833847 -:1032200071F40E94001780FF38C083E50E945A2184 -:103230000E94272283E50E949C210C942722843837 -:1032400059F40E94001782FF28C087E40E945A2187 -:103250000E94272287E4EFCF9CEF980F913A58F312 -:1032600090E2980F983050F4877091E001C0990F68 -:103270008A95EAF7892F0E94E621DFCF9BE5980F18 -:10328000933020F480E090E00C942217885A833128 -:1032900020F480E090E00C9438170895882321F002 -:1032A0000E94E0210C9427220895882321F00E9497 -:1032B000E6210C94272208957F928F929F92AF92DD -:1032C000BF92CF92DF92EF92FF920F931F93CF9313 -:1032D000DF931F92CDB7DEB77C01C62E772EFC019F -:1032E000058102950F70128111110E94FD210E942B -:1032F0005321882379F0112369F080E28C0D883006 -:1033000048F082E00E943C210E94532191E0D82E97 -:10331000D92601C0D12CE72DE295EF70F0E0E05AFC -:10332000FF4F0C949B2C872D807F072D0F708823D7 -:1033300011F00295007F112389F0002309F499C14F -:1033400080E28C0D883020F4802F0E94E02103C0A1 -:10335000802F0E94F0210E9427228BC18C2D0E9479 -:10336000FF18002309F4C3C180E28C0D883020F4DB -:10337000802F0E94E62103C0802F0E94F6210E9428 -:103380002722B5C1872D807F972D9F70803211F441 -:10339000892F03C0892F8295807FCC2021F0F1E016 -:1033A000CF16A1F01DC0112339F0002319F101300F -:1033B00009F50E9410229BC1002319F0013009F485 -:1033C00096C189830E941322898110C1112321F0A3 -:1033D000063008F08CC10EC0053008F088C106C167 -:1033E000112359F0002331F0F701958190FF41C17D -:1033F0009F7095830E944E197AC1002309F4F6C08C -:103400003EC1872D86958695837090E0009719F0D0 -:10341000019761F06CC1112321F08C2D972D9370D1 -:1034200002C080E090E00E94221761C1112321F0C8 -:103430008C2D972D937002C080E090E00E94381789 -:1034400056C18C2D112319F00E944A2402C00E94FB -:10345000B2240E9437254BC1872D837009F052C0DA -:10346000111145C18C2D829586958770880F880F24 -:103470009C2D9F70892E912CA12CB12C082E04C05C -:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 -:103490000FE010E020E030E0B901A80104C0440FC3 -:1034A000551F661F771F8A95D2F7CB01BA01609529 -:1034B00070958095909503C060E070E0CB01272D5A -:1034C00026952695237030E02230310569F02330AF -:1034D000310589F0682979298A299B29213031050C -:1034E00071F00E94C81F03C1682979298A299B2984 -:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 -:10350000AC1FF5C0112319F0872D817001C086957D -:10351000882309F4ECC08C2D829586958770880FDE -:10352000880F9C2D9F70892E912CA12CB12C082ED8 -:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 -:1035400014C00FE010E020E030E0B901A80104C091 -:10355000440F551F661F771F8A95D2F7CB01BA011A -:10356000609570958095909503C060E070E0CB0108 -:10357000272D269526952370422F50E04230510585 -:1035800069F04330510589F0682979298A299B29F6 -:103590004130510571F00E94A220A9C06829792903 -:1035A0008A299B290E94BE20A2C00E94A220C50198 -:1035B000B4010E9486209BC08C2D90E0FC01E05E4F -:1035C000F109E531F10508F050C0E059FF4F0C94C6 -:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 -:1035E0001F20802F07CF0E944020802F0E94551956 -:1035F0007EC0112341F0053008F079C0872D8F710E -:103600000E94652074C0063008F071C0F7CF112306 -:1036100039F0872D8F710E941F2069C01123C9F3D3 -:10362000872D8F710E94402062C0112329F0872DC1 -:103630008F710E940A205BC00E94002058C0112395 -:1036400051F0172D1F71812F0E941F2063E0812FE1 -:103650000E9433214CC081E00E943C21023008F4DA -:1036600046C082E00E943C2142C0112331F0002379 -:1036700081F28C2D0E9437183AC0002389F28C2DDC -:103680000E94FF1834C0472D4F706C2DC7010E9457 -:10369000EE050E94241F2BC0111129C0472D4F7029 -:1036A00050E042305105B9F04CF44115510581F01C -:1036B00041305105E1F40E94322819C043305105D0 -:1036C00069F04430510599F48C2D0E9484280FC074 -:1036D0000E941B280CC00E944E2809C00E9461282D -:1036E00006C0472D4F706C2DC7010E94F105DD20EB -:1036F000F9F00E942F2180FD1BC0F70112820E9469 -:1037000029210E941F20C7010E94A71B0E94292176 -:103710000F90DF91CF911F910F91FF90EF90DF906D -:10372000CF90BF90AF909F908F907F900C9440204F -:103730000F90DF91CF911F910F91FF90EF90DF904D -:10374000CF90BF90AF909F908F907F9008950F93F0 -:103750001F93CF93DF93EC01888199812B813C816A -:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 -:10377000ED03882371F0688179818A810E94252177 -:103780008C010E94DA200E94A11FB801CE010E9484 -:103790005C19DF91CF911F910F9108950E94FD2137 -:1037A0000E940D220E94D2210E9427220E94E82519 -:1037B0000E94372580E090E00E94221780E090E090 -:1037C0000C9438170E94ED210C94CE1B0E941A21F4 -:1037D000292F22952F7030E02C3031054CF42A30FF -:1037E00031056CF42250310922303105A8F407C0AC -:1037F0002C30310569F02F30310551F00DC0803F7C -:1038000069F018F4803E40F409C0843F29F406C0F2 -:1038100093FB882780F9089580E0089581E008955A -:10382000CF93DF9300D000D01F92CDB7DEB70F90BB -:103830000F900F900F900F90DF91CF910895CF933D -:10384000DF9300D000D000D0CDB7DEB726960FB6FC -:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 -:10386000CF93DF93C0919D0216E080919E02C8170E -:1038700099F0D0E01C9FF0011D9FF00D1124E1563E -:10388000FD4F4081518162817381848195810E94C5 -:103890001F1C2196C770E9CFDF91CF911F9108952A -:1038A0004091CF025091D0026091D1027091D2022A -:1038B0008091D3029091D4020C941F1C8091D40269 -:1038C00082958F7009F054C08091D102882309F449 -:1038D0004FC080919D02A0919E026091CF02709195 -:1038E000D0024091D2025091D302B6E08A1709F477 -:1038F0003FC090E041155105C1F17F3F11F46F3F8A -:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 -:10391000218172132AC02081621327C022812111C4 -:1039200024C0238134812417350710F42150310934 -:10393000241B350B283C3105C0F42091D4022F7094 -:1039400020612093D40226E0289FF001299FF00DEA -:103950001124EC55FD4F80818F70806180838FEC46 -:1039600092E00E94A71B0C942F1C01968770BECF7B -:103970000895CF92DF92EF92FF920F931F93CF9310 -:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 -:10399000CDBF8C0185E0F801DE011D9601900D92EE -:1039A0008A95E1F7D8014C9111965C911197129686 -:1039B0006C9112971396CD90DC9014973091CF02B2 -:1039C0007091D0028091D2029091D302009709F4B5 -:1039D0006BC17F3F19F43F3F09F466C1E090D1020B -:1039E000EE2009F4C0C02091D402C816D90628F0F0 -:1039F000F601E81BF90BCF0104C0809590958C0D62 -:103A00009D1DFF24F394883C910578F0F12C207FD4 -:103A100009F0C6C07C2DD98AC88A89890E94101CE9 -:103A20008FEC92E00E94A71BB1C0822F807F09F02B -:103A300046C0751314C0341312C0611110C02F702A -:103A400020612093D4020E94501C8FEC92E00E94CF -:103A5000A71B8091D402D80115968C932EC0CD2837 -:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 -:103A700080919D0220919E0236E0821709F45AC07F -:103A800090E0389FF001399FF00D1124E156FD4F71 -:103A90007181571306C07081471303C07281711181 -:103AA00003C001968770E9CFF62E662309F418C18A -:103AB0008091D40281608093D402F12C11C17513DE -:103AC00008C0341306C0611104C08091D402D8012B -:103AD000C3C04D875E878D859E856A8B0E94E61BDD -:103AE0006A898823E1F16623D1F12091D402822FE3 -:103AF00082958F7090E0029774F08091CF02909140 -:103B0000D00298878F831986DB86CA862C87CE01E0 -:103B100007960E94A71B86E0F801AFECB2E0019087 -:103B20000D928A95E1F70E945E1C0E94501CFF24B2 -:103B3000F394D6C04D875E878D859E850E941A219D -:103B4000292F22952F7030E0223031050CF0BCC0B7 -:103B50009F7009F0B6C0805E883008F4C1C0C8010B -:103B60000E94A71BE4CFC816D90608F453C0F6017B -:103B7000E81BF90BCF01883C910508F450C0F12CEB -:103B80007C2DD98AC88A89890E94101CEFECF2E04A -:103B900086E0DF011D928A95E9F70E94501CA0C0C3 -:103BA000751314C0341312C0611110C08091D40277 -:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 -:103BC000DF011D928A95E9F7FE2C8AC04D875E873A -:103BD0008D859E856A8B0E94E61B6A89882309F47D -:103BE000BECF662309F4BBCF2091D402822F8295E9 -:103BF0008F7090E002970CF48ECF8091CF0290915D -:103C0000D0029A8389831B82DD82CC822E83CE01EF -:103C100001967FCF809590958C0D9D1DACCFF62E93 -:103C2000662309F49CCF75132EC034132CC0209149 -:103C3000D40220FD1FC0822F82958F70D9F0D80149 -:103C400015962C9315978F3049F08F5F982F92958A -:103C5000907F822F8F70892B15968C93C8010E94BC -:103C6000A71B86E0F801AFECB2E001900D928A95B7 -:103C7000E1F793CF86E0F801AFECB2E001900D924E -:103C80008A95E1F72DC04D875E878D859E850E94C0 -:103C9000E61B811140CF8091D40281608093D402D1 -:103CA000C8010E94A71B1CC0662309F458CF4D878A -:103CB0005E878D859E850E94E61B882309F44FCF81 -:103CC0002ACF811148CF0CC0243031050CF047CFEA -:103CD0009F7009F440CFF8019581907F09F03BCFA8 -:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 -:103CF000CF911F910F91FF90EF90DF90CF9008959B -:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 -:103D1000DEBF0FBECDBF4F83588769877A878B87F9 -:103D20009C87CE0107960E94B91C882369F08F8179 -:103D300098852A853B85232BF1F19F3F09F063C0CD -:103D40008F3F09F060C037C086E0FE013796DE0184 -:103D5000119601900D928A95E1F76F817885EA8539 -:103D6000FB85309741F17F3F11F46F3F21F12091A6 -:103D70009E0230E0C90101968770992740919D020B -:103D800050E08417950709F447C069837A83FD835F -:103D9000EC8396E0929FD001939FB00D1124A15621 -:103DA000BD4FFE01319601900D929A95E1F78093F7 -:103DB0009E020E942F1C16E080919D0290919E020F -:103DC0008917C1F1189FC001112481569D4F0E948F -:103DD000B91C882379F1E0919D021E9FF001112406 -:103DE000E156FD4F408151816281738184819581CB -:103DF0000E941F1C80919D0290E001968770992778 -:103E000080939D02D9CF4F81588569857A858B85AE -:103E10009C850E941F1CCFCF0E94E21B10929E0225 -:103E200010929D02EFECF2E086E0DF011D928A9590 -:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 -:103E4000DF91CF911F910895EF92FF920F931F93EF -:103E5000CF93DF938C01009709F46CC0F12CEE2412 -:103E6000E394E8012196F8018491843740F484308A -:103E700008F051C0813081F0823019F15BC0853784 -:103E800009F444C0A8F19CE7980F903708F052C09D -:103E90008F770E94FF1841C00E5F1F4FFE01C49133 -:103EA00080E28C0F883048F4C7708E2D01C0880FD7 -:103EB000CA95EAF70E94002214C08C2F0E9437187E -:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 -:103ED00058F4C7708E2D01C0880FCA95EAF70E946A -:103EE00006220E9427221AC08C2F0E94FF1816C09B -:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C -:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 -:103F1000FE01F49003C00E9437188E018F2D882374 -:103F200009F49FCFEFE9FFE03197F1F700C00000FF -:103F30008150F5CFDF91CF911F910F91FF90EF90BE -:103F4000089508956093D9027093DA028093DB029A -:103F50009093DC020C94CE1B0F931F930091D90217 -:103F60001091DA022091DB023091DC02DC01CB01FE -:103F7000802B912BA22BB32B8093D9029093DA0242 -:103F8000A093DB02B093DC021F910F910C94CE1B27 -:103F90000F931F930091D9021091DA022091DB0256 -:103FA0003091DC02DC01CB0180239123A223B323D7 -:103FB0008093D9029093DA02A093DB02B093DC02E3 -:103FC0001F910F910C94CE1B0F931F930091D90258 -:103FD0001091DA022091DB023091DC02DC01CB018E -:103FE00080279127A227B3278093D9029093DA02E2 -:103FF000A093DB02B093DC021F910F910C94CE1BB7 -:104000001092D5021092D6021092D7021092D802C6 -:104010000C94CE1B41E050E060E070E004C0440F1F -:10402000551F661F771F8A95D2F74093D50250938C -:10403000D6026093D7027093D8020C94CE1B41E055 -:1040400050E060E070E004C0440F551F661F771F0A -:104050008A95D2F78091D5029091D602A091D7028D -:10406000B091D802482B592B6A2B7B2B4093D50259 -:104070005093D6026093D7027093D8020C94CE1B53 -:1040800041E050E060E070E004C0440F551F661F3F -:10409000771F8A95D2F740955095609570958091DD -:1040A000D5029091D602A091D702B091D8024823B0 -:1040B00059236A237B234093D5025093D602609301 -:1040C000D7027093D8020C94CE1B41E050E060E020 -:1040D00070E004C0440F551F661F771F8A95D2F702 -:1040E0008091D5029091D602A091D702B091D802CA -:1040F000482759276A277B274093D5025093D60239 -:104100006093D7027093D8020C94CE1B0F931F9329 -:104110000091D5021091D6022091D7023091D80299 -:10412000DC01CB01802B912BA22BB32B8093D502EA -:104130009093D602A093D702B093D8021F910F910B -:104140000C94CE1B0F931F930091D5021091D602B1 -:104150002091D7023091D802DC01CB01802391233A -:10416000A223B3238093D5029093D602A093D702C3 -:10417000B093D8021F910F910C94CE1B0F931F93F5 -:104180000091D5021091D6022091D7023091D80229 -:10419000DC01CB0180279127A227B3278093D5028A -:1041A0009093D602A093D702B093D8021F910F919B -:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 -:1041C0001F93CF93DF938C01C090D902D090DA0275 -:1041D000E090DB02F090DC028091D5029091D60253 -:1041E000A091D702B091D802C82AD92AEA2AFB2A7C -:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B -:10420000979587950A94D2F780FF06C0B8018C2F46 -:104210000E947608019721F4219760F780E001C0A1 -:104220008C2FDF91CF911F910F91FF90EF90DF9036 -:10423000CF900895CF93DF93EC010E94DB20BE0165 -:104240000E947608DF91CF910895CB010E941A2138 -:1042500008958091DD0285958595859508958091D5 -:10426000DD028770089598E0899F90011124262B24 -:104270002093DD020C941F202091DD028095822383 -:104280008093DD02982F977069F430E0482F55270E -:1042900047FD50952417350729F085958595859517 -:1042A0000C94402008959091DD02977081E009F40C -:1042B00080E0089590911501992321F090911601C5 -:1042C000911109C02091170130911801F90132961E -:1042D0009FEF40E01FC0982F9695969596959F303A -:1042E00050F5E0911701F0911801E90FF11D877069 -:1042F00021E030E0A90102C0440F551F8A95E2F782 -:10430000CA019181892B818308959F3F39F04F5FC6 -:104310004E3041F051915813F8CF0DC05111F7CFE5 -:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B -:10433000FA9582830895089590911501992321F0AB -:1043400090911601911109C0209117013091180127 -:10435000F9013296205F3F4F1FC0982F9695969592 -:1043600096959F30F0F4E0911701F0911801E90F54 -:10437000F11D877021E030E0A90102C0440F551FF4 -:104380008A95E2F7CA0180959181892381830895F6 -:104390003196E217F30729F090819813F9CF108234 -:1043A000F7CF089581E090E0E0911701F0911801B6 -:1043B000E80FF91F1082019680319105A9F7089541 -:1043C0009091F102892B8093F1020895809590914C -:1043D000F10289238093F10208951092F102089569 -:1043E0009091F002892B8093F0020895809590912E -:1043F000F00289238093F00208951092F00208954C -:104400009091EF02892B8093EF020895809590910F -:10441000EF0289238093EF0208951092EF0208952E -:104420008093DE0208951092DE02089580911701B4 -:1044300090911801FC0131969C01205F3F4F80E074 -:10444000919191118F5FE217F307D1F70895E091F1 -:104450001701F09118018091F1028083E09117011A -:10446000F091180190818091F002892B8083E09176 -:104470001701F091180190818091EF02892B8083C0 -:104480008091DE02882361F0E0911701F09118011C -:104490009081892B80830E94162281111092DE0266 -:1044A00080911701909118010C940C1720E000974F -:1044B00039F0AC0141505109842395232F5FF7CF88 -:1044C000822F089580911303843039F11092F30202 -:1044D00020E488E190E00FB6F894A89580936000FE -:1044E0000FBE2093600080E00E94F10280E00E94F5 -:1044F000100983B7817F846083BF83B7816083BFE6 -:104500007894889583B78E7F83BF88E10FB6F8943F -:1045100080936000109260000FBE08950895089582 -:1045200080E00E94F1020E948E220E946B090E948C -:104530008F220E94F00991E0811101C090E0892F43 -:1045400008950E94E21B80E00E94F1020E940A2866 -:104550000E9400170C9410091F920F920FB60F9231 -:1045600011248F939F93AF93BF938091F302811196 -:1045700013C08091F4029091F502A091F602B091DF -:10458000F7024196A11DB11D8093F4029093F502AC -:10459000A093F602B093F702BF91AF919F918F91D4 -:1045A0000F900FBE0F901F90189582E084BD93E08E -:1045B00095BD9AEF97BD80936E0008952FB7F8943C -:1045C0008091F4029091F502A091F602B091F70269 -:1045D0002FBF0895CF92DF92EF92FF920F931F9318 -:1045E0002FB7F8944091F4025091F5026091F602D1 -:1045F0007091F7022FBF6A017B01EE24FF248C012A -:1046000020E030E0C016D106E206F30610F4415077 -:1046100051099A01281B390BC9011F910F91FF9075 -:10462000EF90DF90CF9008951F920F920FB60F92E8 -:1046300011248F939F93AF93BF938091F402909135 -:10464000F502A091F602B091F7020196A11DB11DED -:104650008093F4029093F502A093F602B093F702D0 -:10466000BF91AF919F918F910F900FBE0F901F90B0 -:1046700018950E94FD13F8942FEF87EA91E62150D8 -:1046800080409040E1F700C0000087E090EBDC0143 -:1046900080931E0390931F03A0932003B0932103E4 -:1046A0009CE088E10FB6F894A895809360000FBE57 -:1046B00090936000FFCF0E949A23811102C00E9454 -:1046C00076230E94A5238093F2020E94AD2380935B -:1046D0001C0387FB882780F9809316010E94A92379 -:1046E000682F70E080E090E00C94A21F6DEE7EEFEA -:1046F00080E090E00E94C12C60E082E090E00E94A7 -:10470000AF2C60E083E090E00E94AF2C60E084E09A -:1047100090E00E94AF2C60E085E090E00E94AF2C1A -:1047200060E086E090E00E94AF2C6FEF87E090E0C1 -:104730000C94AF2C80E090E00E94A92C21E08D3EEB -:104740009E4F09F020E0822F089582E090E00C94C3 -:10475000A12C83E090E00C94A12C84E090E00C94D8 -:10476000A12C682F84E090E00C94AF2C86E090E0C0 -:104770000C94A12C682F86E090E00C94AF2C87E07D -:1047800090E00C94A12C682F87E090E00C94AF2C63 -:104790008091FA0280FF0BC060911C0185E0689F48 -:1047A000B001112475956795759567952BC081FFAC -:1047B00009C060911C0185E0689FB00111247595C6 -:1047C000679520C082FF07C060911C0185E0689F4B -:1047D000B001112417C09091FB029923D1F0609190 -:1047E0001B01961788F720911C0185E0289F9001F6 -:1047F0001124929FA001939F500D112470E0CA01D3 -:104800000E94872C6038710540F46115710539F0FC -:1048100002C065E070E0862F08958FE7089581E07B -:1048200008958091FA0280FF08C060911A0170E03B -:10483000759567957595679521C081FF06C0609154 -:104840001A0170E07595679519C082FF04C06091E8 -:104850001A0170E010C09091FB029923C1F06091A1 -:1048600019019617A0F780911A01899FC0011124A0 -:1048700070E00E94872C6038710528F4611571057D -:1048800021F0862F08958FE7089581E0089561E073 -:1048900070E0F4CF803F21F40E94C823819504C0CA -:1048A000813F29F40E94C8238093FE020895823F2D -:1048B00021F40E94C823819504C0833F29F40E94FB -:1048C000C8238093FD020895893F19F40E941124A2 -:1048D00005C08A3F31F40E94112481958093FF0224 -:1048E00008958B3F21F40E941124819504C08C3FD0 -:1048F00029F40E941124809300030895843F21F439 -:104900008091FC02816017C0853F21F48091FC02F8 -:10491000826011C0863F21F48091FC0284600BC04C -:10492000873F21F48091FC02886005C0883F31F404 -:104930008091FC0280618093FC0208958D3F21F4F8 -:104940008091FA0281600BC08E3F21F48091FA02BF -:10495000826005C08F3F29F48091FA0284608093C1 -:10496000FA020895803F39F48091FE0287FF6CC0FF -:104970001092FE0269C0813F29F48091FE02181650 -:10498000BCF362C09091FD02823F29F497FF5CC0A6 -:104990001092FD0259C0833F19F41916CCF354C08C -:1049A000893F41F48091FF0218160CF04DC010921F -:1049B000FF024AC08A3F29F48091FF0287FF44C06A -:1049C000F6CF8B3F39F48091000387FF3DC01092F2 -:1049D00000033AC08C3F29F4809100031816BCF301 -:1049E00033C0843F21F48091FC028E7F17C0853F45 -:1049F00021F48091FC028D7F11C0863F21F48091CB -:104A0000FC028B7F0BC0873F21F48091FC02877FE3 -:104A100005C0883F31F48091FC028F7E8093FC02B8 -:104A200013C08D3F21F48091FA028E7F0BC08E3F20 -:104A300021F48091FA028D7F05C08F3F29F4809187 -:104A4000FA028B7F8093FA028091FD0281110EC0E1 -:104A50008091FE0281110AC08091FF02811106C07F -:104A600080910003811102C01092FB0208958CEF27 -:104A700092E00E9417170E94DE229093F902809321 -:104A8000F80208951F93CF93DF938091F8029091DD -:104A9000F9020E94EA22AC019091FB02992321F0D5 -:104AA00020911D0130E006C020911E018AE0289F60 -:104AB000900111244217530708F486C08091FD022B -:104AC000C091FE02D091FF0210910003811107C036 -:104AD000C11176C0D11174C0111172C075C09F3F51 -:104AE00019F09F5F9093FB02181624F40E94C823CC -:104AF0008093FD028091FD0287FF05C00E94C823BC -:104B000081958093FD021C1624F40E94C823809393 -:104B1000FE028091FE0287FF05C00E94C823819596 -:104B20008093FE026091FD02662339F1C091FE027E -:104B3000CC2319F1772767FD7095872F972F0E9457 -:104B4000A92923E333E343E35FE30E94B92A0E94E8 -:104B500076296093FD026C2F772767FD7095872F6C -:104B6000972F0E94A92923E333E343E35FE30E94E5 -:104B7000B92A0E9476296093FE021D1624F40E9431 -:104B800011248093FF028091FF0287FF05C00E94DD -:104B9000112481958093FF02111624F40E941124A0 -:104BA000809300038091000387FF05C00E941124B9 -:104BB000819580930003DF91CF911F910C9437254D -:104BC0009F3F09F08ECF96CFDF91CF911F9108952F -:104BD000ECEFF2E085E0DF011D928A95E9F7109293 -:104BE000FB021092FA020895833081F128F481309B -:104BF00059F08230D1F00895853009F449C0B8F1F8 -:104C0000863009F456C0089580911E01262F30E0A9 -:104C1000280F311D2F3F310524F4680F60931E01CA -:104C200008958FEF80931E01089580911D01262F16 -:104C300030E0280F311D2F3F310524F4680F6093B9 -:104C40001D0108958FEF80931D01089580911C012F -:104C5000262F30E0280F311D2F3F310524F4680F37 -:104C600060931C0108958FEF80931C01089580913B -:104C70001B01262F30E0280F311D2F3F310524F472 -:104C8000680F60931B0108958FEF80931B010895B7 -:104C900080911A01262F30E0280F311D2F3F31055A -:104CA00024F4680F60931A0108958FEF80931A011E -:104CB000089580911901262F30E0280F311D2F3FD4 -:104CC000310524F4680F6093190108958FEF8093E4 -:104CD00019010895833011F128F4813049F08230B0 -:104CE00091F00895853081F120F18630C1F1089569 -:104CF00080911E01681720F4861B80931E01089581 -:104D000010921E01089580911D01681720F4861BE2 -:104D100080931D01089510921D01089580911C013A -:104D2000681720F4861B80931C01089510921C01C3 -:104D3000089580911B01681720F4861B80931B0146 -:104D4000089510921B01089580911A01681720F4AC -:104D5000861B80931A01089510921A01089580917C -:104D60001901681720F4861B809319010895109289 -:104D7000190108950F931F93873208F048C08E31B0 -:104D800008F08DC0803109F477C008F5873009F448 -:104D900061C068F4863009F09DC08091F202817F85 -:104DA0008E7F8093F20281E08093020394C08B3067 -:104DB00009F489C08E3009F08DC08091F20282FB27 -:104DC000222720F991E0922790FB82F95EC086317C -:104DD00009F479C060F4813109F07CC00E94E21BC3 -:104DE0009091160181E08927809316016CC089316A -:104DF00009F469C08B3109F06DC08091F20281FB2A -:104E0000222720F991E0922790FB81F93EC0883358 -:104E100009F459C050F4893209F457C0853309F4B4 -:104E200054C0873209F451C055C0833409F44DC0D1 -:104E300028F48A3308F44EC0895332C0883409F00C -:104E400049C00E94E21B0E94200A0E94E4030E94C3 -:104E5000392339C09091F202892F8095817080FBAF -:104E600090F929F0966098609093F20234C0997F8F -:104E7000977F9093F20227C08091F20283FB222752 -:104E800020F991E0922790FB83F98093F202992315 -:104E9000D1F08091F20281608093F20214C08D51B2 -:104EA00041E050E060E070E08A019B0104C0000F27 -:104EB000111F221F331F8A95D2F7C901B8010E9422 -:104EC000A21F0E94E21B81E006C061E070E080E06A -:104ED00090E0F5CF80E01F910F91089580E0089554 -:104EE00080E00895CF93C82F80910203813069F04C -:104EF00018F08230C9F184C0E0911701F0911801D7 -:104F00008081823209F07EC007C0E0911701F091E4 -:104F100018018081823261F48C2F0E946E278111EA -:104F200004C08C2F0E94BA261DC081E090E01AC0F8 -:104F30008C2F0E947027811114C0C43179F048F47D -:104F4000CB3079F0C03109F061C082E08093020378 -:104F500008C0C93219F0C83321F058C010920203BA -:104F600055C081E0817054C0C93291F120F5C4313F -:104F700079F1B0F4C73009F047C08EE180931E018B -:104F800082E380931D018AE080931C0184E1809379 -:104F90001B0188E080931A0188E28093190134C0D4 -:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 -:104FB0008093010329C0CE34E9F020F4CB3421F5ED -:104FC0006AE013C0C13579F0C235F1F461E00DC07B -:104FD00080910103882319F01092010315C081E02C -:104FE0008093020315C061E006C0809101030E9416 -:104FF000F4250AC06AE0809101030E946A2604C079 -:105000001092020380E004C081E002C080E0AACFD9 -:10501000CF9108950E949A23811102C00E947623A5 -:105020000E94B62380931D0380FF02C0869501C0B5 -:1050300080E00C94F10280911D03982F9695292F02 -:1050400030E0233031054CF49F5F990F8170892B3C -:10505000816080931D030E94BA2380911D03869571 -:105060000C94F10280911D03982F969591F0915820 -:10507000990F8170892B80931D038E7F91E009F435 -:1050800090E080911D0390FB80F980931D030E94A6 -:10509000BA2380911D0386950C94F10280911D0323 -:1050A000982F909590FB80F980931D030E94BA235E -:1050B00080911D0380FF02C0869501C080E00C94A2 -:1050C000F10290911D03892F86958F5F8F779170E4 -:1050D000843028F4880F892B80931D0302C090939D -:1050E0001D0380911D038E7F91E009F490E0809173 -:1050F0001D0390FB80F980931D030E94BA238091C9 -:105100001D0386950C94F10220911D03922F969514 -:105110008927982F990F822F8170892B80931D03E7 -:105120008E7F91E009F490E080911D0390FB80F95F -:1051300080931D030E94BA2380911D0386950C94D1 -:10514000F10280911D03869508955058BB27AA2728 -:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 -:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF -:10517000D3D180F3BA17620773078407950718F035 -:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 -:105190000B01B90190010C01CA01A0011124FF27E4 -:1051A000591B99F0593F50F4503E68F11A16F040DF -:1051B000A22F232F342F4427585FF3CF46953795DE -:1051C0002795A795F0405395C9F77EF41F16BA0BA3 -:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 -:1051E000661F771F881FC2F70EC0BA0F621F731F9A -:1051F000841F48F4879577956795B795F7959E3FF7 -:1052000008F0B3CF9395880F08F09927EE0F979584 -:105210008795089527D108F481E008950CD06BC1DB -:1052200063D140F05AD130F021F45F3F19F03EC114 -:10523000511195C14FC170D198F39923C9F35523EA -:10524000B1F3951B550BBB27AA2762177307840779 -:1052500038F09F5F5F4F220F331F441FAA1FA9F32F -:1052600033D00E2E3AF0E0E830D091505040E69521 -:10527000001CCAF729D0FE2F27D0660F771F881F82 -:10528000BB1F261737074807AB07B0E809F0BB0B71 -:10529000802DBF01FF2793585F4F2AF09E3F510595 -:1052A00068F004C15CC15F3FECF3983EDCF3869587 -:1052B00077956795B795F7959F5FC9F7880F911D0B -:1052C0009695879597F90895E1E0660F771F881FF7 -:1052D000BB1F621773078407BA0720F0621B730BAA -:1052E000840BBA0BEE1F88F7E095089504D06894FC -:1052F000B11135C1089518D188F09F5790F0B92F9A -:105300009927B751A0F0D1F0660F771F881F991F1A -:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF -:1053200008951CC1672F782F8827B85F39F0B93FDF -:10533000CCF3869577956795B395D9F73EF490951C -:105340008095709561957F4F8F4F9F4F0895E8949A -:1053500009C097FB3EF490958095709561957F4FBD -:105360008F4F9F4F9923A9F0F92F96E9BB2793956B -:10537000F695879577956795B795F111F8CFFAF47B -:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC -:1053900016C0882311F096E911C0772321F09EE80A -:1053A000872F762F05C0662371F096E8862F70E070 -:1053B00060E02AF09A95660F771F881FDAF7880F4A -:1053C0009695879597F9089588D018F011F08CD0AC -:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F -:1053E000E7FB6217730784079507A8F199F3E92F84 -:1053F000FF2788232AF03197660F771F881FDAF777 -:10540000952F5527442332F091505040220F331FDF -:10541000441FD2F7BB27E91BF50B621B730B840BF0 -:10542000B109C1F222F4620F731F841FB11D3197BD -:105430002AF0660F771F881FBB1FEFCF9150504097 -:105440005AF041F0882332F0660F771F881F915081 -:105450005040C1F7939530C08695779567959F5FCB -:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 -:1054700016161706E807F907C0F012161306E40718 -:10548000F50798F0621B730B840B950B39F40A2611 -:1054900061F0232B242B252B21F408950A2609F4EF -:1054A000A140A6958FEF811D811D089597F99F67F3 -:1054B00080E870E060E008959F3F31F0915020F463 -:1054C000879577956795B795880F911D96958795E0 -:1054D00097F908959FEF80EC089500240A9416161A -:1054E000170618060906089500240A9412161306D2 -:1054F000140605060895092E0394000C11F4882360 -:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B -:105510007F4F8F4F9F4F089557FD9058440F551F51 -:1055200059F05F3F71F04795880F97FB991F61F025 -:105530009F3F79F087950895121613061406551F9C -:10554000F2CF4695F1DF08C0161617061806991F08 -:10555000F1CF86957105610508940895E894BB27FD -:1055600066277727CB0197F908957CDF08F48FEF42 -:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 -:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF -:10559000D1F3950F50E0551F629FF001729FBB271A -:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 -:1055B0006627B00DA11D661F829F2227B00DA11D79 -:1055C000621F739FB00DA11D621F839FA00D611DFF -:1055D000221F749F3327A00D611D231F849F600D20 -:1055E000211D822F762F6A2F11249F5750408AF059 -:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 -:10560000881F91505040A9F79E3F510570F04ECF32 -:10561000A6CF5F3FECF3983EDCF3869577956795D0 -:10562000B795F795E7959F5FC1F7FE2B880F911D02 -:105630009695879597F90895FA01EE0FFF1F30961A -:105640002105310599F16115710561F48038BFE3D9 -:105650009B0749F168949038810561F08038BFEF6D -:105660009B0741F0992342F5FF3FE10531052105F4 -:1056700011F1E8940894E795D901AA2329F4AB2FF6 -:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F -:10569000F73950F019F0FF3A38F49F779F930CD008 -:1056A0000F9007FC905808953EF014CF60E070E032 -:1056B00080E89FE308954FE79F775F934F933F9371 -:1056C0002F939ED02F913F914F915F9152DF05C054 -:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C -:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C -:1056F0004EDF0F920F920F924DB75EB70F92C0D050 -:10570000EAE0F1E016D04F915F91EF91FF91E595BE -:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD -:10572000FA95E1F74195550B32D00F9007FE26C050 -:105730000895DF93CF931F930F93FF92EF92DF9221 -:105740007B018C01689405C0DA2EEF011EDFFE019B -:10575000E894A5912591359145915591AEF3EF01CE -:1057600006DDFE019701A801DA9479F7DF90EF904A -:10577000FF900F911F91CF91DF9108959B01AC0194 -:1057800060E070E080E89FE349CD90CE95CECCDE1E -:10579000E8F39923D9F3940F511DBBF39150504076 -:1057A00094F059F0882332F0660F771F881F9150CC -:1057B0005040C1F79E3F510544F7880F911D9695C3 -:1057C000879597F908955F3FACF0983E9CF0BB2712 -:1057D000869577956795B79508F4B1609395C1F76D -:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B -:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 -:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD -:105810000F93FF92C92FDD2788232AF02197660F67 -:10582000771F881FDAF720E030E040E85FEB9FE366 -:10583000883920F0803E30F021968F7787DCE2E3D4 -:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 -:10585000EC01FB2E6F5771097595771F880B990B1B -:1058600078DD28E132E741E35FE38FDEAF2D980179 -:10587000AE01FF900F911F91CF91DF9178DC3BCE6D -:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 -:1058900022273327442750781FC0B75188F4AB2FF5 -:1058A0000024469537952795011CA395D2F3002037 -:1058B00069F0220F331F441FB395DAF30DD045CCA6 -:1058C00061307105A0E88A07B94630F49B01AC014C -:1058D0006627772788279078309621F020833183B8 -:1058E000428353830895AA1BBB1B51E107C0AA1F23 -:1058F000BB1FA617B70710F0A61BB70B881F991F71 -:105900005A95A9F780959095BC01CD01089597FB14 -:10591000072E16F4009407D077FD09D00E94732C4F -:1059200007FC05D03EF4909581959F4F08957095A2 -:1059300061957F4F0895EE0FFF1F0590F491E02DC4 -:105940000994F999FECF92BD81BDF89A992780B547 -:105950000895A8E1B0E042E050E00C94C92C262F55 -:10596000F999FECF92BD81BDF89A019700B4021655 -:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 -:1059800008950196272F0E94B02C0C94AF2CDC01B7 -:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A -:1059A000319600B40D9241505040B8F70895F894E4 -:0259B000FFCF27 -:1059B200640007000CFF0000003F64041092106FA7 -:1059C200103B1007100101DF022808140A321E00E2 -:1059D20002040507090B0C0E1011131517181A1CD7 -:1059E2001D1F2123242628292B2D2F303234353711 -:1059F200393B1F0F03764F5F6F7F4969437909591E -:105A020053633149803F5D8B803FF8BF803FCAE1DD -:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE -:105A2200803F3149803F0000803FF16D7F3F75EA42 -:105A32007E3F4C827E3F833F7E3F84287E3F833F72 -:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 -:105A5200803F3F4D3639ED04A0046A043104C4038B -:105A6200DD03F6030F04010203040506070809001B -:00000001FF diff --git a/keyboard/planck/keymaps/austin/compiled.hex b/keyboard/planck/keymaps/austin/compiled.hex deleted file mode 100644 index fcd925dae0..0000000000 --- a/keyboard/planck/keymaps/austin/compiled.hex +++ /dev/null @@ -1,1449 +0,0 @@ -:100000000C9496020C94DA020C94DA020C94DA0244 -:100010000C94DA020C94DA020C94DA020C94DA02F0 -:100020000C94DA020C94DA020C9478140C944A15AD -:100030000C94AC220C94DA020C94DA020C94DA02DE -:100040000C94DA020C943C030C94DA020C94DA025D -:100050000C94DA020C9414230C94DA020C94DA0255 -:100060000C94DA020C94DA020C94DA020C94DA02A0 -:100070000C94DA020C94DA020C94DA020C94DA0290 -:100080000C94ED0A0C94DA020C94DA020C94DA0265 -:100090000C94DA020C94DA020C94DA020C94DA0270 -:1000A0000C94DA020C94DA020C94DA02B715D91522 -:1000B000C716D915C7161E164116C7169616A916C5 -:1000C00093199319C219C219011A211A771B771BA8 -:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 -:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 -:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 -:10010000F91A071B0E1B151B1F1B07634236B79BF3 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A299 -:1001D000F1A3018C028C2B0014001A0008001500FA -:1001E00017001C0018000C00120013002A00290040 -:1001F00004001600070009000A000B000D000E00A5 -:100200000F0033003400E1001D001B000600190040 -:100210000500110010003600370038002800835018 -:10022000E300E200E00002202C002C00012050003E -:10023000510052004F002B0014001A000900130057 -:100240000A000D000F0018001C0033002A002900CE -:10025000040015001600170007000B00110008002D -:100260000C0012003400E1001D001B000600190004 -:1002700005000E0010003600370038002800C300CB -:10028000E300E200E00002202C002C0001205000DE -:10029000510052004F0035001E001F0020002100B9 -:1002A0002200230024002500260027002A00010048 -:1002B0000320042048120100010001002D002E003F -:1002C0002F00300031000100440045006800690043 -:1002D0006A006B006C006D006E006F000100010091 -:1002E0000100010001000100010001000120AB003C -:1002F000AA00A900AE0035021E021F022002210240 -:100300002202230224022502260227022A000100DB -:100310000320042048120100010001002D022E02DA -:100320002F023002310201003A003B003C003D0048 -:100330003E003F0040004100420043000100010038 -:100340000100010001000220010001000100AB00DA -:10035000AA00A900AE002803540068006500200030 -:1003600050006C0061006E0063006B0020004B00C9 -:100370006500790062006F00610072006400000097 -:100380002C034F007200740068006F006C0069005D -:100390006E0065006100720020004B00650079006E -:1003A00062006F00610072006400730000000403CB -:1003B000090409026D00040100A0FA09040000010B -:1003C00003010100092111010001223F00070581FD -:1003D0000308000A090401000103010200092111B8 -:1003E000010001224D000705820308000A090402EA -:1003F000000103000000092111010001223600075D -:1004000005830308000A0904030001030000000932 -:100410002111010001223900070584031000011297 -:1004200001100100000008EDFE6060010001020003 -:100430000105010906A101050719E029E7150025B5 -:1004400001950875018102050819012905950575B1 -:10045000019102950175039101050719002977158E -:10046000002501957875018102C005010980A1016F -:10047000850216010026B7001A01002AB700751080 -:1004800095018100C0050C0901A101850316010039 -:10049000269C021A01002A9C02751095018100C059 -:1004A00005010902A1010901A10005091901290598 -:1004B00015002501950575018102950175038101DE -:1004C0000501093009311581257F950275088106DE -:1004D00009381581257F950175088106050C0A38B4 -:1004E000021581257F950175088106C0C0050109A7 -:1004F00006A101050719E029E715002501950875F2 -:1005000001810295017508810105081901290595E8 -:1005100005750191029501750391010507190029DF -:10052000FF150025FF950675088100C011241FBE28 -:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A -:100540001E0390911F03A0912003B09121038730D7 -:10055000904BA740B04BB9F410921E0310921F03AA -:10056000109220031092210314BE84B7877F84BFAA -:1005700088E10FB6F89480936000109260000FBE7F -:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 -:1005900002C005900D92A03CB107D9F713E0A0EC82 -:1005A000B1E001C01D92AE31B107E1F70E94BE116A -:1005B0000C94D72C0C9400000895089581E00895C0 -:1005C00008950C94DD020C94DE020C94E0020E946B -:1005D000A12823E030E0281B3109220F2093C40119 -:1005E0000895282F2F9880918000211108C0877FBF -:1005F0008093800010928D0010928C001BC0886048 -:1006000080938000233019F48FEF9FEF0FC083E0B9 -:1006100090E0821B9109880F991F2FEF3FEFA901EE -:1006200002C0569547958A95E2F7CA0190938D00CE -:1006300080938C000C94E7020E94E70284E0809390 -:10064000C3011092C0010895279A2F988FEF9FEF52 -:1006500090938700809386008AE08093800089E1F0 -:10066000809381000E940A280C941C030E9424039A -:100670006E9A769A0C94DC021F920F920FB60F922C -:1006800011242F933F938F939F93EF93FF93E091C8 -:10069000C101F091C201CF0101969093C2018093F4 -:1006A000C1010090C30102C0F695E7950A94E2F7F4 -:1006B000EF738091C001823019F4E03251F404C02C -:1006C000813039F4EF3329F480916F008D7F80936E -:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B -:1006E000C001E39F900D11240090C40102C09695B3 -:1006F00087950A94E2F790938D0080938C00FF9188 -:10070000EF919F918F913F912F910F900FBE0F907E -:100710001F90189581E008950C948A0308950C9415 -:10072000360380911502882309F448C08091D101D5 -:100730009091D201009779F40E94DE229093D20129 -:100740008093D1018091D30190E0009771F4809162 -:10075000D40190E00AC00E94EA2220910001309169 -:1007600001012817390740F329C00197880F991F05 -:10077000880F991FFC01EB52FE4F608171818281CD -:1007800093810E94530AE091D30184E0E89FF00135 -:100790001124EB52FE4F60817181828193814FE081 -:1007A00050E00E940B0E8091D30190E00196609181 -:1007B000D40170E00E94872C8093D3010C94E10255 -:1007C000109217020C94200A0895089581E08093F6 -:1007D00017020C94E503089508958F929F92AF92AB -:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA -:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 -:10080000FC0100811181C8010E94DB20B8010E9417 -:10081000F2058C01B7010E948C03882309F4CCC136 -:100820000032F0E51F0741F4F7018281882309F4C3 -:1008300058C00E946F0EC0C10132F0E51F0741F49D -:10084000F7018281882309F44CC00E94780EB4C15C -:100850000232F0E51F0751F4F7018281882309F481 -:1008600040C00E946B0E8111F0CFE3CF0332F0E560 -:100870001F0739F4F7018281882399F10E94E6036A -:100880009BC10432F0E51F0739F4F7018281882308 -:1008900041F10E94E00390C10532F0E51F0749F4E1 -:1008A000F70182818823E9F0809117028111F1CF4D -:1008B000E5CF0632F0E51F0739F4F701828188237E -:1008C00081F00E947F0E0AC00732F0E51F0749F44D -:1008D000F7018281882329F00E948A0E0E94EC038E -:1008E0006BC180911702811105C0F70182818111CE -:1008F000CFC018C1003E110579F4F7018281882329 -:1009000009F44DC00E94200A81E0809316021092E3 -:1009100015021092D40150C1023E110559F4F7019D -:1009200082818823E1F10E94200A1092160210921F -:10093000150242C1033E110591F4F701828188231B -:1009400071F10E94200A1092160281E08093150234 -:100950001092D3011092D2011092D1012DC1023513 -:10096000110559F4F7018281882309F425C180918A -:100970000001909101010A970DC00135110579F42C -:10098000F7018281882309F417C1809100019091B9 -:1009900001010A9690930101809300010DC14091DD -:1009A000040183E2EFE1F1E0DE01119601900D9286 -:1009B0008A95E1F7F701808121E030E02C0F3D1F9F -:1009C000280F311DC9012091020130910301FC0162 -:1009D000E20FF31F6081772767FD7095640F711D2B -:1009E000882777FD8095982F0E94A92920E030E084 -:1009F00040E451E40E940E294B015C01F701218182 -:100A000084E090E0821B9109BC01882777FD8095E6 -:100A1000982F0E94A9299B01AC01C501B4010E9435 -:100A2000A6289B01AC0160E070E080E090E40E94A9 -:100A30001C2B20E030E04CED50E40E94B92A4B0121 -:100A40005C01F70182818823D1F04FE050E0C501BD -:100A5000B4010E940B0E809116028823A1F08091B0 -:100A6000D40124E0829FF0011124EB52FE4F8082DA -:100A70009182A282B3828F5F8093D40104C0C501AA -:100A8000B4010E94530A0F3F110508F02ECF94C005 -:100A90008091D00181111FC0043130E5130709F0A6 -:100AA00051C00E948E0381E08093D0010E94DE221B -:100AB0009093CF018093CE011092C7011092C9018B -:100AC0001092C8011092CB011092CA011092CD0170 -:100AD0001092CC0171C08091CE019091CF010E9403 -:100AE000EA22883C910570F48091C701E82FF0E07C -:100AF000EE0FFF1FE853FE4F118300838F5F80933B -:100B0000C7015AC0043880E5180721F005381045A0 -:100B100001F13AC0F7018281882341F01092C501AA -:100B200082E01EC0043830E5130759F58091C501F5 -:100B3000811106C086E20E94371886E20E94FF18E3 -:100B400082E01CC00438F0E51F0741F3053810456A -:100B5000D9F4F7018281882331F01092C60180E236 -:100B60000E944E1929C08091C601811106C087E2FA -:100B70000E94371887E20E94FF1880E20E945519F0 -:100B80001BC00538104529F381E08093C50180938F -:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 -:100BA000DF91CF911F910F91FF90EF90BF90AF9089 -:100BB0009F908F900C94E30280E0A3960FB6F89478 -:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 -:100BD000EF90BF90AF909F908F90089580E090E04D -:100BE000089508959CE0799FF001112490E3899F76 -:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B -:100C0000FE4F859194910895880F991FFC01E45B34 -:100C1000FF4F859194910895880F991FFC01E4532B -:100C2000FE4F8591949108950F931F93CF93DF9377 -:100C3000EC01811521E39207A0F5C11580E3D807E7 -:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 -:100C500007C2C83AD10578F4C53AD10508F06AC090 -:100C6000C130D10509F463C008F4F7C1C430D1051F -:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 -:100C8000C11590E2D90708F0AFC0C11521E0D20725 -:100C900008F0E6C1C03FD10508F4DFC18E01106540 -:100CA0001FC2C03880E5D80700F5C03790E5D907E6 -:100CB00008F0A3C0C11520E5D20709F4ACC050F478 -:100CC000CE01905480319F4008F0C7C1DF708E0183 -:100CD000106A06C2C13080E5D80709F4AEC0C4313D -:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 -:100CF00009F48EC050F4C13890E5D90709F482C0D8 -:100D000008F083C000E011EDEBC1C03181E5D807E8 -:100D100008F4A3C1C11597E5D90708F436C1CE017F -:100D200090578115904108F098C1DF7093C101E0A0 -:100D300010E0D6C1C53AD10509F494C1C63AD1052F -:100D400009F093C102E810E4CBC1C83AD10509F417 -:100D50008FC1C93AD10509F48EC1CA3AD10509F447 -:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 -:100D70008BC1CD3AD10509F48AC1C03BD10509F434 -:100D800089C1CE3AD10509F488C1CF3AD10509F419 -:100D900087C1C13BD10509F486C1C23BD10509F425 -:100DA00085C1C33BD10509F484C1C43BD10509F415 -:100DB00083C1C53BD10509F482C1C63BD10509F405 -:100DC00081C1C73BD10509F480C1C83BD10509F4F5 -:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 -:100DE0007DC100E014E47CC1CE019F700E940C061E -:100DF00078C1DD278E01106C73C1CF70DD278E01A5 -:100E0000146D6EC100E010ED6BC100E012ED68C121 -:100E100000E013ED65C10E94E21B0E94200A0E94BF -:100E2000E4038FEF94E32CE0815090402040E1F701 -:100E300000C000000E94392353C18091F2028160FA -:100E40008093F2024DC10E949A23811102C00E9438 -:100E500076230E94AD2390E090931D0380931C03A2 -:100E6000C23080E5D80721F480911C03816086C0E0 -:100E7000C43090E5D90721F480911C0382607EC0C4 -:100E8000C63020E5D20721F480911C03846076C02F -:100E9000C83080E5D80719F480911C0327C0CA30F8 -:100EA00090E5D90721F480911C03806167C0CC30A4 -:100EB00020E5D20721F480911C0380625FC0CE3010 -:100EC00080E5D80721F480911C03806457C0C031AD -:100ED00090E5D90721F480911C0380684FC0C2318E -:100EE00020E5D20729F480911C038460886046C005 -:100EF000C33080E5D80721F480911C038E7F3EC06B -:100F0000C53090E5D90721F480911C038D7F36C050 -:100F1000C73020E5D20721F480911C038B7F2EC0BF -:100F2000C93080E5D80719F480911C0326C0CB3066 -:100F300090E5D90721F480911C038F7E1FC0CD302E -:100F400020E5D20721F480911C038F7D17C0CF309C -:100F500080E5D80721F480911C038F7B0FC0C1313D -:100F600090E5D90721F480911C038F7707C0C33126 -:100F7000D04531F480911C038B7F877F80931C03C5 -:100F800080911C030E94B123ABC08D2F99278F70D5 -:100F9000992781309105D9F49E012370332702C02F -:100FA000880F991F2A95E2F79C688E0144E0000F94 -:100FB000111F4A95E1F700271370802B912B53E006 -:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 -:100FD000910531F4DC2FCC278E01016F106A80C09F -:100FE0008330910569F4CE018370992701E010E008 -:100FF00002C0000F111F8A95E2F7C8019C680FC05C -:1010000084309105B9F4CE018370992701E010E096 -:1010100002C0000F111F8A95E2F7C8019A6823E009 -:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 -:101030001D2B56C08530910531F4DC2FCC278E0155 -:10104000046F106A4DC0069709F04AC0CF71DD27C2 -:10105000DC2FCC278E01106243C000E010E040C0BE -:101060008E013EC001E810E43BC003E810E438C044 -:1010700002EE14E435C009EE14E432C00AEE14E4C2 -:101080002FC005EB14E42CC006EB14E429C007EBD9 -:1010900014E426C00CEC14E423C00DEC14E420C0CE -:1010A00003E815E41DC00AE815E41AC002E915E4D6 -:1010B00017C004E915E414C001E216E411C003E20C -:1010C00016E40EC004E216E40BC005E216E408C004 -:1010D00006E216E405C007E216E402C00AE216E4DE -:1010E000C801DF91CF911F910F9108959CE0799FE6 -:1010F000F001112490E3899FE00DF11D1124E60F0A -:10110000F11DEE0FFF1FEA52FE4F85919491803E34 -:101110009105E0F4803C910558F58133910509F47F -:101120006FC048F48932910509F463C08A32910591 -:1011300009F46DC072C089339105E9F082389105D8 -:10114000D1F08533910509F44DC067C0833E910508 -:1011500081F138F4803E9105B9F0823E9105D9F0D5 -:101160005CC0863E910561F1873E9105A1F155C0B5 -:101170000E940406089520911C0320FD02C021FF57 -:101180004CC080EE90E049C080911C0380FFF9CFF5 -:1011900089E390E042C080911C0382FF0EC08091E1 -:1011A0001C0384FF03C080E090E037C083EE90E032 -:1011B00034C080911C0382FFF2CF82EE90E02DC0FC -:1011C00080911C0383FF0BC080911C0384FDEBCF37 -:1011D00087EE90E022C080911C0383FFF5CF86EE5E -:1011E00090E01BC080911C0385FF07C089E290E05E -:1011F00014C080911C0385FFF9CF85E390E00DC0FA -:1012000080911C0386FF07C08AE290E006C08091AF -:101210001C0386FFF9CF81E390E00E941406089535 -:101220000C94E502E82FF0E0E25BFE4F8081E82FAE -:10123000EF70F0E082958F7021E030E0A90102C0EC -:10124000440F551F8A95E2F740A308950F931F930B -:10125000CF93DF9385B7806885BF85B7806885BFEA -:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 -:10127000E82FEF70F0E021A182958F70A80102C0E5 -:10128000440F551F8A95E2F7CA01822B81A38C2F48 -:101290000E941209219740F78BE090E061E070E036 -:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 -:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F -:1012C0009D01242B22A3019758F7DF91CF911F9105 -:1012D0000F910C948F03EF92FF920F931F93CF9374 -:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA -:1012F0008C2F0E9412098BE090E040E050E0FC014E -:10130000EE5BFE4F6081E62FEF70F0E020A130E051 -:1013100062956F7002C0359527956A95E2F720FDBA -:1013200009C09701082E02C0220F331F0A94E2F76A -:10133000422B532B019718F7F801929182918F015C -:101340008417950721F051834083D09305018C2F9A -:101350000E941209C15060F68091050187FD2CC0E2 -:101360008150809305018F3F39F08FE99FE001970D -:10137000F1F700C0000020C080911E0290911F0272 -:10138000909327028093260280911C0290911D0267 -:10139000909325028093240280911A0290911B025F -:1013A0009093230280932202809118029091190257 -:1013B00090932102809320020E94910381E0DF91AB -:1013C000CF911F910F91FF90EF900895E82FF0E0DB -:1013D000EE0FFF1FE05EFD4F80819181089508951B -:1013E0000F931F93CF9308E212E0C0E0F8019291AF -:1013F00082918F010E945622C80FF2E000321F072F -:10140000A9F78C2FCF911F910F9108950E949A23D5 -:10141000811102C00E9476230E94BF23809307039C -:101420003E9A809171008D7F8093710082E080935D -:1014300090008AE18093910081E080932A020895D0 -:1014400080912A02811102C00E94060A10927A023B -:1014500010927902809171008D7F8093710080914C -:1014600090008F738093900010923C0210923B0288 -:10147000109273021092740210927502109276020A -:101480001092720210927102E1E5F2E0A1E4B2E082 -:1014900011921192119211921D921D9282E0E137E8 -:1014A000F807B1F70895CF92DF92EF92FF920F9372 -:1014B0001F93CF93DF9320913B02222309F484C032 -:1014C0006B017C0180912A02811102C00E94060AF0 -:1014D00001E712E0C7E0D0E0A7019601F801929180 -:1014E0008291729162918F010E940A29811131C00B -:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 -:10150000118212821382DE01AA0FBB1FAF5BBD4F97 -:1015100011961C921E92C730D105E9F021964481A4 -:1015200055816681778140835183628373831482FE -:1015300015821682178212968D919C91139711969F -:101540009C938E9313961C921E9212973496129629 -:10155000E2CF219708F68091790290917A02019763 -:1015600097FD05C090937A028093790204C010928F -:101570007A02109279028091790290917A022091F8 -:101580007702309178022817390724F010927802F8 -:1015900010927702892BC1F4809171008D7F809326 -:1015A0007100809190008F7380939000109273026D -:1015B00010927402109275021092760210927202CA -:1015C0001092710210923B02DF91CF911F910F9107 -:1015D000FF90EF90DF90CF9008951F920F920FB67B -:1015E0000F9211244F925F926F927F928F929F92EF -:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 -:101600004F935F936F937F938F939F93AF93BF930A -:10161000CF93DF93EF93FF9380913B02882309F4EC -:101620009BC1C0917902D0917A021C161D060CF064 -:1016300093C140902B0250902C0260902D0270902C -:101640002E0220E030E0A901C301B2010E94B52AB8 -:1016500018160CF065C0C130D10509F452C0809154 -:10166000770290917802BE010E94872C7C019093B2 -:1016700078028093770280903D0290903E02A09085 -:101680003F02B090400220E030E040E85FE3C50157 -:10169000B4010E94A62860933D0270933E0280939D -:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 -:1016B000EF5AFD4FA3019201608171818281938174 -:1016C0000E940E2920E030E040E05EE30E94B92A4B -:1016D0009B01AC01C501B4010E94B52A18168CF417 -:1016E000C7010196BE010E94872C909378028093D7 -:1016F000770210923D0210923E0210923F02109229 -:101700004002E0917702F0917802EE0FFF1FEE0F9A -:10171000FF1FEF5AFD4F6081718182819381D0C09C -:10172000C0907302D0907402E0907502F09076023F -:1017300020E030E0A901C701B6010E940A292197E3 -:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A -:10175000EF5AFD4F80809180A280B380A501940153 -:10176000C701B6010E940A2987FF31C0A501940173 -:1017700060E070E08CED93EC0E940E2920E030E0F8 -:1017800040E451E40E940E2920E030E040E05FE3B5 -:101790000E94B92A9B01AC0160E070E080E090E417 -:1017A0000E941C2B9B01AC01C501B4010E94B92A07 -:1017B0009B01AC01C701B6010E940A2987FF07C03F -:1017C000A701960160E070E08CED93E439C0A501BB -:1017D0009401C701B6010E94B52A18160CF055C035 -:1017E000A501940160E070E08CED93E40E940E2965 -:1017F00020E030E040E451E40E940E2920E030E097 -:1018000040E05FE30E94B92A9B01AC0160E070E018 -:1018100080E090E40E941C2B9B01AC01C501B40147 -:101820000E94B92A9B01AC01C701B6010E94B52AEA -:1018300018165CF5A701960160E070E08CED93EC62 -:101840000E940E2920E030E040E451E40E940E297D -:1018500020E030E040E05FE30E94B92A9B01AC0148 -:1018600060E070E080E090E40E941C2B9B01AC01E2 -:10187000C701B6010E94B92A609373027093740283 -:10188000809375029093760213C0FE01EE0FFF1F46 -:10189000EE0FFF1FEF5AFD4F80819181A281B3812E -:1018A0008093730290937402A0937502B0937602B2 -:1018B000609173027091740280917502909176022A -:1018C00020912802309129022F3F4FEF340731F049 -:1018D0002F5F3F4F30932902209328020E94950EDC -:1018E0006B017C0120E034E244EF51E40E940A29BC -:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 -:1019000081E4F82E20E030E040E051E4C701B60168 -:101910000E94B92A9B01AC0160E074E284E79BE479 -:101920000E940E296B017C010E947B297093970015 -:1019300060939600209106013091070140910801C3 -:1019400050910901C701B6010E94B92A0E947B2962 -:10195000709399006093980080913C02882309F469 -:1019600033C1C0903702D0903802E0903902F09035 -:101970003A0220E030E0A901C701B6010E94B52A71 -:101980001816D4F580912802909129028F3F2FEFED -:10199000920729F001969093290280932802C701AB -:1019A000B6010E94950E20E030E040E051E40E9434 -:1019B000B92A9B01AC0160E074E284E79BE40E94D9 -:1019C0000E296B017C010E947B2970939700609324 -:1019D0009600209106013091070140910801509135 -:1019E0000901C701B6010E94B92A0E947B297093A0 -:1019F00099006093980008C010929700109296008A -:101A00001092990010929800609131027091320208 -:101A10006F5F7F4F70933202609331022091960086 -:101A20003091970080E090E0232BF1F0C091960078 -:101A3000D09197000E94A7296B017C01BE0180E034 -:101A400090E00E94A7299B01AC0160913302709144 -:101A5000340280913502909136020E940E2920E0D6 -:101A60003FEF4FE757E410C00E94A7296B017C01AC -:101A700020E030EE4FEF54E4609133027091340275 -:101A800080913502909136020E94B92A9B01AC01E7 -:101A9000C701B6010E94B52A87FD96C080912F022A -:101AA0008F5F80932F0290E0209103033091040315 -:101AB00082179307A0F080910E03882319F01092EB -:101AC0002F020DC0809171008D7F809371008091F5 -:101AD00090008F738093900010923C027DC08091A3 -:101AE0003002C0912F02811128C0C0900803D0900D -:101AF0000903E0900A03F0900B0320E030E0A90115 -:101B0000C701B6010E94B52A1816BCF481E0809383 -:101B1000300210923702109238021092390210925D -:101B20003A02C0923302D0923402E0923502F0922F -:101B30003602C150C0932F0243C01092300210925F -:101B4000290210922802E0910503F091060348E073 -:101B5000C49FE00DF11D112480819181A281B38188 -:101B60008093370290933802A0933902B0933A02DF -:101B700020E030E040E85EE36481758186819781F2 -:101B80000E94B92A6B017C0180910A01682F70E0E4 -:101B900080E090E00E94A72920E030E048EC52E489 -:101BA0000E940E299B01AC01C701B6010E94B92A0F -:101BB000609333027093340280933502909336021F -:101BC00010923202109231028091070380FD04C00E -:101BD00010923C0210923B02FF91EF91DF91CF9166 -:101BE000BF91AF919F918F917F916F915F914F9135 -:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB -:101C00009F908F907F906F905F904F900F900FBE3E -:101C10000F901F901895CF92DF92EF92FF92CF9383 -:101C2000DF936B017C01EA0180912A02811102C0DD -:101C30000E94060A8091070380FF46C080917902C6 -:101C400090917A0208970CF03FC0809171008D7FCF -:101C50008093710080913C0281110E94200A81E0F2 -:101C600080933B02109229021092280220E030E07B -:101C7000A901C701B6010E94B52A1816DCF48091AB -:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 -:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 -:101CA000FF1FEF5BFD4FD183C083019690937A02B3 -:101CB000809379028091710082608093710080919D -:101CC0009000806880939000DF91CF91FF90EF901B -:101CD000DF90CF90089580910703817008958091DF -:101CE00007038160809307030E94C3230C94EB03D6 -:101CF000809107038E7F809307030C94C323809108 -:101D00007B0290E0019666E070E00E94872C809351 -:101D10007B02089580917B0290E0019766E070E07D -:101D20000E94872C80937B0208958F929F92AF929E -:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 -:101D4000DF936B017C01C0912802D0912902BE0172 -:101D500080E090E00E94A7294B015C01A701960159 -:101D600060E070E08CE594E40E940E299B01AC01D8 -:101D7000C501B4010E94B92A0E947B2920917B02EF -:101D8000233009F473C028F4222351F02130E9F004 -:101D90002CC1243009F4A0C0253009F4E0C025C1CD -:101DA00080E090E0A0E0BFE38093060190930701FC -:101DB000A0930801B093090110922B0210922C02FB -:101DC00010922D0210922E0210C110922B0210922E -:101DD0002C0210922D0210922E026431710540F4F3 -:101DE0006A30710560F520E030E040E85EE32BC02A -:101DF000693C710508F0AAC080E090E00E94A72924 -:101E000020E030E040EA51E40E94A52820E030E0E4 -:101E100044E353E40E940E299B01AC010E94B92ABD -:101E200020E030E040E05EE30E94B92A9B01AC0173 -:101E300060E070E080E09EE30E94A52844C020E0BE -:101E400030E040E05FE3C701B6010E94B92A6B01B0 -:101E50007C0180E090E0A0E0BEE3809306019093D7 -:101E60000701A0930801B0930901BFC010922B0293 -:101E700010922C0210922D0210922E024AE0469FE0 -:101E80009001479F300D1124C90168EB7BE00E944F -:101E9000732CBC016C5D754077FF03C07195619533 -:101EA0007109882777FD8095982F0E94A9292EE334 -:101EB00033EC4EE259E30E94B92A20E030E040ECD6 -:101EC0005EE30E94A6286093060170930701809349 -:101ED00008019093090189C010922B0210922C02E4 -:101EE00010922D0210922E02CE0183709927892B19 -:101EF000E1F0BE016170772780E090E00E94A729A1 -:101F000020E030E040E05EE30E94B92A20E030E0CB -:101F100040E45FE30E94A6286093060170930701E6 -:101F200080930801909309010CC080E090E0A0E04C -:101F3000BFE38093060190930701A0930801B0933B -:101F40000901C770DD27CD2B09F04FC010920601A3 -:101F500010920701109208011092090146C01092D8 -:101F60002B0210922C0210922D0210922E0200E0F1 -:101F700010E020E03FE30093060110930701209357 -:101F80000801309309016739710578F180E090E02C -:101F90000E94A72920E030E047E153E40E94A528F1 -:101FA00020E030E04AE754E40E940E2920E030E0CF -:101FB00048E452E40E94B92A20E030E040EA51E4CB -:101FC0000E94EB290E947629660F771F660F771F04 -:101FD000FB01EE5AFE4F2081318142815381C701BE -:101FE000B6010E94B92A6B017C01C701B601DF91DD -:101FF000CF911F910F91FF90EF90DF90CF90BF9006 -:10200000AF909F908F90089580918C020895CF9308 -:10201000DF9300D01F92CDB7DEB79C0180911303F0 -:10202000843019F593E099833B832A839093E900E8 -:102030008FEF9091E800815095FD06C095ED9A953F -:10204000F1F700008111F5CF8091E80085FF0DC008 -:1020500040E050E063E070E0CE0101960E9468121B -:102060008091E8008E778093E8000F900F900F909A -:10207000DF91CF910895CF93DF9300D01F92CDB71A -:10208000DEB720911303243021F522E029839B83BE -:102090008A8383E08093E9008FEF9091E80081507C -:1020A00095FD06C095ED9A95F1F700008111F5CFE9 -:1020B0008091E80085FF0DC040E050E063E070E0F3 -:1020C000CE0101960E9468128091E8008E7780937D -:1020D000E8000F900F900F90DF91CF91089520911D -:1020E00013032430F1F422E02093E9002FEF309124 -:1020F000E800215035FD06C035ED3A95F1F70000B6 -:102100002111F5CF2091E80025FF0BC040E050E001 -:1021100065E070E00E9468128091E8008E778093FD -:10212000E8000895CF93DF93EC019091130394306E -:1021300009F046C0809115018823D9F080911601DD -:102140008823B9F09093E9008FEF9091E8008150D7 -:1021500095FD06C095E19A95F1F700008111F5CF44 -:102160008091E80085FF2CC040E050E060E170E025 -:1021700017C081E08093E9008FEF9091E8008150D3 -:1021800095FD06C095ED9A95F1F700008111F5CF08 -:102190008091E80085FF14C040E050E068E070E006 -:1021A000CE010E9468128091E8008E778093E8004B -:1021B00080E1FE01ACE7B2E001900D928A95E1F773 -:1021C000DF91CF91089580911203811109C00E947F -:1021D000FD130E945A148091E20084608093E20013 -:1021E0000895109212030895089508950C94A12261 -:1021F00042E061EC81E00E94771342E061EC82E012 -:102200000E94771342E061EC83E00E94771342E181 -:1022100061EC84E00C94771380911503833009F40A -:1022200055C030F4813071F0823009F48EC00895C9 -:102230008A3009F47AC08B3009F460C0893009F023 -:102240009CC020C080911403813A09F096C080910F -:10225000E800877F8093E80080911803909119032C -:10226000892B21F460E18CE792E003C060E080E01C -:1022700090E070E00E94B3128091E8008B77809329 -:10228000E800089580911403813209F076C08091AE -:10229000180390911903009719F0039709F06DC086 -:1022A0008091E800877F8093E8008091E80082FDBC -:1022B00005C0809113038111F8CF5FC08091F100B8 -:1022C00080938C028091E8008B7753C08091140337 -:1022D000813A09F052C08091180390911903892B1B -:1022E00009F04BC08091E800877F8093E8008091DF -:1022F000E80080FFFCCF8091150136C08091140367 -:102300008132D9F58091180390911903892BA9F591 -:102310008091E800877F8093E8000E94AC13809151 -:102320001603809315010C94E21B809114038132F3 -:1023300021F58091E800877F8093E8000E94AC132C -:102340008091170380938D02089580911403813A40 -:10235000A1F48091E800877F8093E8008091E800F5 -:1023600080FFFCCF80918D028093F1008091E80086 -:102370008E778093E8000C94AC13089584B7877F20 -:1023800084BF88E10FB6F8948093600010926000DB -:102390000FBE90E080E80FB6F894809361009093B0 -:1023A00061000FBE0E944F170E94FD130E945A1435 -:1023B0008091E20084608093E20078940E94E016AD -:1023C0000E9451178BE091E00E94FB16809113034D -:1023D000853069F40E946222809111038823B1F351 -:1023E0000E949022882391F30E945212EFCF0E9404 -:1023F0005917ECCF292F332723303105C9F064F466 -:102400002130310581F02230310509F043C08DE6DD -:1024100090E022EB33E042C021323105F1F022326C -:10242000310541F137C082E190E02FE134E036C060 -:1024300099278130910541F08230910541F0892B37 -:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 -:10245000F3E0849190E09F0121C06430D8F4E62F2E -:10246000F0E0EE0FFF1FE255FE4F2081318189E041 -:1024700090E014C0643070F470E0FB01EE0FFF1FB9 -:10248000EA55FE4F20813181FB01EE55FE4F8081E0 -:1024900090E004C080E090E020E030E0FA01318379 -:1024A0002083089580E189BD82E189BD09B400FEE1 -:1024B000FDCF8091D8008F7D8093D8008091E0007F -:1024C00082608093E0008091E00081FDFCCF089560 -:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 -:1024E000EC018B016A010E94CB13811133C0C1142E -:1024F000D10439F0F60180819181081B190BC80FB6 -:10250000D91FE12CF12C0115110519F18091E8007A -:1025100085FD16C08091E8008E778093E800C11495 -:10252000D10449F0F60180819181E80EF91EF18213 -:10253000E08285E00FC00E94CB13882321F30AC0FC -:1025400089918093F10001501109FFEFEF1AFF0A02 -:10255000DACF80E0DF91CF911F910F91FF90EF9044 -:10256000DF90CF90089520911A0330911B03261716 -:10257000370748F06115710539F42091E8002E778E -:102580002093E80001C0B90140E061157105A9F18F -:1025900020911303222309F443C0253009F442C0DB -:1025A0002091E80023FD40C02091E80022FD32C0C8 -:1025B0002091E80020FFE9CF4091F3002091F20044 -:1025C00030E0342BFC01CF016115710559F0283042 -:1025D000310540F481918093F100615071092F5FC2 -:1025E0003F4FF1CF41E02830310509F040E0209124 -:1025F000E8002E772093E800C8CF4111C9CF0AC068 -:1026000080911303882361F0853061F08091E800A8 -:1026100083FD0AC08091E80082FFF2CF80E0089538 -:1026200082E0089583E0089581E0089520911A03DF -:1026300030911B032617370748F06115710539F4EF -:102640002091E8002E772093E80001C0B901FC0139 -:1026500020E06115710591F180911303882309F43D -:1026600040C0853009F43FC08091E80083FD3DC043 -:102670008091E80082FD2FC08091E80080FFE9CFC3 -:102680002091F3008091F20090E0922B611571058A -:1026900059F08830910540F424912093F10031964F -:1026A000615071090196F2CF21E0089709F020E00E -:1026B0008091E8008E778093E800CBCF2111CCCFBA -:1026C0000AC080911303882361F0853061F0809106 -:1026D000E80083FD0AC08091E80082FFF2CF80E02D -:1026E000089582E0089583E0089581E00895982F89 -:1026F000973058F59093E900981739F07091EC00F5 -:102700002091ED005091F00003C0242F762F50E06F -:1027100021FF19C03091EB003E7F3093EB003091E8 -:10272000ED003D7F3093ED003091EB003160309350 -:10273000EB007093EC002093ED005093F00020919B -:10274000EE0027FF07C09F5FD3CF8F708093E90013 -:1027500081E0089580E008958091140387FF11C0FF -:102760008091E80082FD05C0809113038111F8CFAC -:1027700011C08091E8008B770BC0809113038823F0 -:1027800049F08091E80080FFF8CF8091E8008E77D3 -:102790008093E80008952091E4003091E50095E6EB -:1027A0004091EC00842F817040FF22C08091E800AE -:1027B00080FD1CC080911303882391F0853091F037 -:1027C0008091EB0085FD10C04091E4005091E50040 -:1027D0004217530729F39A01915011F784E00895A5 -:1027E00082E0089583E0089581E0089580E00895EF -:1027F0004091E80042FFDECF08950E946B140E94D2 -:102800007314E0EEF0E0808181608083E8EDF0E019 -:1028100080818F77808319BCA7EDB0E08C918E7F8B -:102820008C9380818F7E80831092120308950F9382 -:102830001F93CF93DF930E946B140E947314C8ED13 -:10284000D0E088818F7788838881806888838881B9 -:102850008F7D888319BC1092130310920F0310927E -:1028600011031092100300EE10E0F80180818B7FBD -:10287000808388818160888342E060E080E00E94FC -:102880007713E1EEF0E080818E7F8083E2EEF0E06E -:10289000808181608083808188608083F80180816D -:1028A0008E7F8083888180618883DF91CF911F91A3 -:1028B0000F910895E8EDF0E080818F7E8083E7ED51 -:1028C000F0E080818160808384E082BF81E080933A -:1028D00012030C941714E8EDF0E080818E7F808362 -:1028E0001092E20008951092DA001092E10008952B -:1028F0001F920F920FB60F9211242F933F934F9375 -:102900005F936F937F938F939F93AF93BF93EF9357 -:10291000FF938091E10082FF0BC08091E20082FF73 -:1029200007C08091E1008B7F8093E1000E94DF1659 -:102930008091DA0080FF1FC08091D80080FF1BC00B -:102940008091DA008E7F8093DA008091D90080FF39 -:102950000DC080E189BD82E189BD09B400FEFDCFD3 -:1029600081E0809313030E94E31005C019BC10920C -:1029700013030E94F1108091E10080FF19C0809143 -:10298000E20080FF15C08091E2008E7F8093E2001C -:102990008091E20080618093E2008091D8008062A3 -:1029A0008093D80019BC85E0809313030E94F51032 -:1029B0008091E10084FF30C08091E20084FF2CC050 -:1029C00080E189BD82E189BD09B400FEFDCF80911F -:1029D000D8008F7D8093D8008091E1008F7E809316 -:1029E000E1008091E2008F7E8093E2008091E2001E -:1029F00081608093E20080910F03882311F084E0CE -:102A000007C08091E30087FD02C081E001C083E040 -:102A1000809313030E94F6108091E10083FF29C088 -:102A20008091E20083FF25C08091E100877F809341 -:102A3000E10082E08093130310920F038091E10084 -:102A40008E7F8093E1008091E2008E7F8093E20090 -:102A50008091E20080618093E20042E060E080E0EB -:102A60000E9477138091F00088608093F0000E94AC -:102A7000F410FF91EF91BF91AF919F918F917F9152 -:102A80006F915F914F913F912F910F900FBE0F90DB -:102A90001F9018951F920F920FB60F9211242F932B -:102AA0003F934F935F936F937F938F939F93AF93D6 -:102AB000BF93CF93DF93EF93FF93C091E900CF7063 -:102AC0008091EC00D82FD17080FDD0E81092E90001 -:102AD0008091F000877F8093F00078940E948E159B -:102AE0001092E9008091F00088608093F000CD2B77 -:102AF000CF70C093E900FF91EF91DF91CF91BF912B -:102B0000AF919F918F917F916F915F914F913F9185 -:102B10002F910F900FBE0F901F9018951F93CF937A -:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E -:102B3000CDBFE4E1F3E088E08E0F9091F100919336 -:102B40008E13FBCF0E940C118091E80083FF1FC100 -:102B50008091140390911503492F50E04A3051059C -:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB -:102B700081F0823809F00BC1809118038F70809327 -:102B8000E9008091EB0085FB882780F91092E9002D -:102B900006C0809110039091110391118260909171 -:102BA000E800977F9093E8008093F1001092F10085 -:102BB000C8C0282F2D7F09F0EAC0882319F0823081 -:102BC00061F0E5C080911603813009F0E0C09330D8 -:102BD00009F080E0809311032BC0809116038111CE -:102BE00027C0809118038F7009F4D1C08093E90049 -:102BF0002091EB0020FF1CC0933021F48091EB006A -:102C0000806214C09091EB0090619093EB0021E002 -:102C100030E0A90102C0440F551F8A95E2F74093A6 -:102C2000EA001092EA008091EB0088608093EB004C -:102C30001092E9008091E800877F86C08111A7C0CB -:102C4000109116031F778091E3008078812B809389 -:102C5000E3008091E800877F8093E8000E94AC1336 -:102C60008091E80080FFFCCF8091E3008068809332 -:102C7000E300111102C082E001C083E080931303DE -:102C800086C08058823008F082C0809116039091EF -:102C900017038C3D53E0950779F583E08A838AE238 -:102CA00089834FB7F894DE01139620E03EE051E2AD -:102CB000E32FF0E050935700E49120FF03C0E2952A -:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 -:102CD00001C0C0968D939D932F5F243149F74FBF5C -:102CE0008091E800877F8093E8006AE270E0CE017F -:102CF00001960E94B31214C0AE014F5F5F4F609106 -:102D000018030E94FA11BC01009709F440C0909189 -:102D1000E800977F9093E80089819A810E941613BA -:102D20008091E8008B778093E80031C0803879F596 -:102D30008091E800877F8093E80080910F03809363 -:102D4000F1008091E8008E778093E8000E94AC1338 -:102D50001EC081111CC0909116039230C0F4809166 -:102D6000E800877F8093E80090930F030E94AC13E4 -:102D700080910F03811106C08091E30087FD02C09E -:102D800081E001C084E0809313030E94F8108091D9 -:102D9000E80083FF0AC08091E800877F8093E80005 -:102DA0008091EB0080628093EB00AA960FB6F894B6 -:102DB000DEBF0FBECDBFDF91CF911F910895089563 -:102DC000CF93809113038823A1F0C091E900CF70C5 -:102DD0009091EC00892F817090FD80E8C82B1092B3 -:102DE000E9008091E80083FD0E948E15CF70C093AA -:102DF000E900CF91089590939302809392020895F1 -:102E0000E0919202F0919302309721F00190F081CD -:102E1000E02D099480E00895E0919202F0919302F0 -:102E2000309721F00280F381E02D09940895E0911C -:102E30009202F0919302309721F00480F581E02D09 -:102E4000099408952091900230919102821793077E -:102E500071F09093910280939002E0919202F09130 -:102E60009302309721F00680F781E02D09940895B0 -:102E700020918E0230918F028217930771F0909308 -:102E80008F0280938E02E0919202F091930230972C -:102E900021F00084F185E02D0994089508950C94A3 -:102EA0004E170E94D5220E9426090E945B230C9493 -:102EB0000A285F926F927F928F929F92AF92BF92F9 -:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 -:102ED00000D000D01F92CDB7DEB70E946B099DE9EC -:102EE000C92E92E0D92E03E010E0AA24A394B12CBD -:102EF000502E802F0E94E6094C01F60172906290DC -:102F00006F016826792661147104A1F4015011093A -:102F100078F78FEF89838A831B820E94DE2281608B -:102F2000782F9D838C8349815A816B818D810E948A -:102F3000091838C08091F20281FD0E94EF092BE050 -:102F400030E07501022E02C0EE0CFF1C0A94E2F77D -:102F5000C70186219721892B09F129835A828E2066 -:102F60009F2091E0892809F490E09B830E94DE2253 -:102F70008160782F9D838C8349815A816B818D81FB -:102F80000E940918000F111FF801EB56FD4F8081B8 -:102F90009181E826F926F182E08204C021503109AE -:102FA00080F6B4CF0E944225109194020E9400172F -:102FB0001817D1F00E940017809394020F900F9081 -:102FC0000F900F900F90DF91CF911F910F91FF9075 -:102FD000EF90DF90CF90BF90AF909F908F907F90B9 -:102FE0006F905F900C9410090F900F900F900F90BE -:102FF0000F90DF91CF911F910F91FF90EF90DF9095 -:10300000CF90BF90AF909F908F907F906F905F9088 -:103010000895CF93DF93CDB7DEB72B970FB6F89413 -:10302000DEBF0FBECDBF4F83588769877A878B87F6 -:10303000DE01119686E0FD0111928A95E9F785E09F -:10304000FE01379601900D928A95E1F749815A81E8 -:103050006B817C818D819E810E94801E2B960FB694 -:10306000F894DEBF0FBECDBFDF91CF910895CF930F -:10307000882309F4C2C0C82F823859F40E9400176F -:1030800081FDBBC089E30E945A210E94272289E367 -:103090000CC0833879F40E94001780FDAEC083E530 -:1030A0000E945A210E94272283E50E949C21CF91F1 -:1030B0000C942722843859F40E94001782FD9DC089 -:1030C00087E40E945A210E94272287E4EECF8CEFEA -:1030D0008C0F813A48F48C2F0E94722781118DC089 -:1030E0008C2F0E945A21E3CF80E28C0F883048F465 -:1030F000C77081E001C0880FCA95EAF70E94E021FD -:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 -:1031100031F083E890E005C081E890E002C082E8E9 -:1031200090E0CF910C94221788E58C0F833108F042 -:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 -:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 -:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 -:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 -:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B -:1031800090E038C082EE90E035C089EE90E032C029 -:103190008AEE90E02FC085EB90E02CC086EB90E0AB -:1031A00029C087EB90E026C08CEC90E023C08DEC2A -:1031B00090E020C083E891E01DC08AE891E01AC049 -:1031C00082E991E017C084E991E014C081E292E0C5 -:1031D00011C083E292E00EC084E292E00BC085E26F -:1031E00092E008C086E292E005C087E292E002C069 -:1031F0008AE292E0CF910C943817CF9108958823FA -:1032000009F44BC0823859F40E94001781FF45C071 -:1032100089E30E945A210E94272289E30CC0833847 -:1032200071F40E94001780FF38C083E50E945A2184 -:103230000E94272283E50E949C210C942722843837 -:1032400059F40E94001782FF28C087E40E945A2187 -:103250000E94272287E4EFCF9CEF980F913A58F312 -:1032600090E2980F983050F4877091E001C0990F68 -:103270008A95EAF7892F0E94E621DFCF9BE5980F18 -:10328000933020F480E090E00C942217885A833128 -:1032900020F480E090E00C9438170895882321F002 -:1032A0000E94E0210C9427220895882321F00E9497 -:1032B000E6210C94272208957F928F929F92AF92DD -:1032C000BF92CF92DF92EF92FF920F931F93CF9313 -:1032D000DF931F92CDB7DEB77C01C62E772EFC019F -:1032E000058102950F70128111110E94FD210E942B -:1032F0005321882379F0112369F080E28C0D883006 -:1033000048F082E00E943C210E94532191E0D82E97 -:10331000D92601C0D12CE72DE295EF70F0E0E05AFC -:10332000FF4F0C949B2C872D807F072D0F708823D7 -:1033300011F00295007F112389F0002309F499C14F -:1033400080E28C0D883020F4802F0E94E02103C0A1 -:10335000802F0E94F0210E9427228BC18C2D0E9479 -:10336000FF18002309F4C3C180E28C0D883020F4DB -:10337000802F0E94E62103C0802F0E94F6210E9428 -:103380002722B5C1872D807F972D9F70803211F441 -:10339000892F03C0892F8295807FCC2021F0F1E016 -:1033A000CF16A1F01DC0112339F0002319F101300F -:1033B00009F50E9410229BC1002319F0013009F485 -:1033C00096C189830E941322898110C1112321F0A3 -:1033D000063008F08CC10EC0053008F088C106C167 -:1033E000112359F0002331F0F701958190FF41C17D -:1033F0009F7095830E944E197AC1002309F4F6C08C -:103400003EC1872D86958695837090E0009719F0D0 -:10341000019761F06CC1112321F08C2D972D9370D1 -:1034200002C080E090E00E94221761C1112321F0C8 -:103430008C2D972D937002C080E090E00E94381789 -:1034400056C18C2D112319F00E944A2402C00E94FB -:10345000B2240E9437254BC1872D837009F052C0DA -:10346000111145C18C2D829586958770880F880F24 -:103470009C2D9F70892E912CA12CB12C082E04C05C -:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 -:103490000FE010E020E030E0B901A80104C0440FC3 -:1034A000551F661F771F8A95D2F7CB01BA01609529 -:1034B00070958095909503C060E070E0CB01272D5A -:1034C00026952695237030E02230310569F02330AF -:1034D000310589F0682979298A299B29213031050C -:1034E00071F00E94C81F03C1682979298A299B2984 -:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 -:10350000AC1FF5C0112319F0872D817001C086957D -:10351000882309F4ECC08C2D829586958770880FDE -:10352000880F9C2D9F70892E912CA12CB12C082ED8 -:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 -:1035400014C00FE010E020E030E0B901A80104C091 -:10355000440F551F661F771F8A95D2F7CB01BA011A -:10356000609570958095909503C060E070E0CB0108 -:10357000272D269526952370422F50E04230510585 -:1035800069F04330510589F0682979298A299B29F6 -:103590004130510571F00E94A220A9C06829792903 -:1035A0008A299B290E94BE20A2C00E94A220C50198 -:1035B000B4010E9486209BC08C2D90E0FC01E05E4F -:1035C000F109E531F10508F050C0E059FF4F0C94C6 -:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 -:1035E0001F20802F07CF0E944020802F0E94551956 -:1035F0007EC0112341F0053008F079C0872D8F710E -:103600000E94652074C0063008F071C0F7CF112306 -:1036100039F0872D8F710E941F2069C01123C9F3D3 -:10362000872D8F710E94402062C0112329F0872DC1 -:103630008F710E940A205BC00E94002058C0112395 -:1036400051F0172D1F71812F0E941F2063E0812FE1 -:103650000E9433214CC081E00E943C21023008F4DA -:1036600046C082E00E943C2142C0112331F0002379 -:1036700081F28C2D0E9437183AC0002389F28C2DDC -:103680000E94FF1834C0472D4F706C2DC7010E9457 -:10369000EE050E94241F2BC0111129C0472D4F7029 -:1036A00050E042305105B9F04CF44115510581F01C -:1036B00041305105E1F40E94322819C043305105D0 -:1036C00069F04430510599F48C2D0E9484280FC074 -:1036D0000E941B280CC00E944E2809C00E9461282D -:1036E00006C0472D4F706C2DC7010E94F105DD20EB -:1036F000F9F00E942F2180FD1BC0F70112820E9469 -:1037000029210E941F20C7010E94A71B0E94292176 -:103710000F90DF91CF911F910F91FF90EF90DF906D -:10372000CF90BF90AF909F908F907F900C9440204F -:103730000F90DF91CF911F910F91FF90EF90DF904D -:10374000CF90BF90AF909F908F907F9008950F93F0 -:103750001F93CF93DF93EC01888199812B813C816A -:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 -:10377000ED03882371F0688179818A810E94252177 -:103780008C010E94DA200E94A11FB801CE010E9484 -:103790005C19DF91CF911F910F9108950E94FD2137 -:1037A0000E940D220E94D2210E9427220E94E82519 -:1037B0000E94372580E090E00E94221780E090E090 -:1037C0000C9438170E94ED210C94CE1B0E941A21F4 -:1037D000292F22952F7030E02C3031054CF42A30FF -:1037E00031056CF42250310922303105A8F407C0AC -:1037F0002C30310569F02F30310551F00DC0803F7C -:1038000069F018F4803E40F409C0843F29F406C0F2 -:1038100093FB882780F9089580E0089581E008955A -:10382000CF93DF9300D000D01F92CDB7DEB70F90BB -:103830000F900F900F900F90DF91CF910895CF933D -:10384000DF9300D000D000D0CDB7DEB726960FB6FC -:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 -:10386000CF93DF93C0919D0216E080919E02C8170E -:1038700099F0D0E01C9FF0011D9FF00D1124E1563E -:10388000FD4F4081518162817381848195810E94C5 -:103890001F1C2196C770E9CFDF91CF911F9108952A -:1038A0004091CF025091D0026091D1027091D2022A -:1038B0008091D3029091D4020C941F1C8091D40269 -:1038C00082958F7009F054C08091D102882309F449 -:1038D0004FC080919D02A0919E026091CF02709195 -:1038E000D0024091D2025091D302B6E08A1709F477 -:1038F0003FC090E041155105C1F17F3F11F46F3F8A -:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 -:10391000218172132AC02081621327C022812111C4 -:1039200024C0238134812417350710F42150310934 -:10393000241B350B283C3105C0F42091D4022F7094 -:1039400020612093D40226E0289FF001299FF00DEA -:103950001124EC55FD4F80818F70806180838FEC46 -:1039600092E00E94A71B0C942F1C01968770BECF7B -:103970000895CF92DF92EF92FF920F931F93CF9310 -:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 -:10399000CDBF8C0185E0F801DE011D9601900D92EE -:1039A0008A95E1F7D8014C9111965C911197129686 -:1039B0006C9112971396CD90DC9014973091CF02B2 -:1039C0007091D0028091D2029091D302009709F4B5 -:1039D0006BC17F3F19F43F3F09F466C1E090D1020B -:1039E000EE2009F4C0C02091D402C816D90628F0F0 -:1039F000F601E81BF90BCF0104C0809590958C0D62 -:103A00009D1DFF24F394883C910578F0F12C207FD4 -:103A100009F0C6C07C2DD98AC88A89890E94101CE9 -:103A20008FEC92E00E94A71BB1C0822F807F09F02B -:103A300046C0751314C0341312C0611110C02F702A -:103A400020612093D4020E94501C8FEC92E00E94CF -:103A5000A71B8091D402D80115968C932EC0CD2837 -:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 -:103A700080919D0220919E0236E0821709F45AC07F -:103A800090E0389FF001399FF00D1124E156FD4F71 -:103A90007181571306C07081471303C07281711181 -:103AA00003C001968770E9CFF62E662309F418C18A -:103AB0008091D40281608093D402F12C11C17513DE -:103AC00008C0341306C0611104C08091D402D8012B -:103AD000C3C04D875E878D859E856A8B0E94E61BDD -:103AE0006A898823E1F16623D1F12091D402822FE3 -:103AF00082958F7090E0029774F08091CF02909140 -:103B0000D00298878F831986DB86CA862C87CE01E0 -:103B100007960E94A71B86E0F801AFECB2E0019087 -:103B20000D928A95E1F70E945E1C0E94501CFF24B2 -:103B3000F394D6C04D875E878D859E850E941A219D -:103B4000292F22952F7030E0223031050CF0BCC0B7 -:103B50009F7009F0B6C0805E883008F4C1C0C8010B -:103B60000E94A71BE4CFC816D90608F453C0F6017B -:103B7000E81BF90BCF01883C910508F450C0F12CEB -:103B80007C2DD98AC88A89890E94101CEFECF2E04A -:103B900086E0DF011D928A95E9F70E94501CA0C0C3 -:103BA000751314C0341312C0611110C08091D40277 -:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 -:103BC000DF011D928A95E9F7FE2C8AC04D875E873A -:103BD0008D859E856A8B0E94E61B6A89882309F47D -:103BE000BECF662309F4BBCF2091D402822F8295E9 -:103BF0008F7090E002970CF48ECF8091CF0290915D -:103C0000D0029A8389831B82DD82CC822E83CE01EF -:103C100001967FCF809590958C0D9D1DACCFF62E93 -:103C2000662309F49CCF75132EC034132CC0209149 -:103C3000D40220FD1FC0822F82958F70D9F0D80149 -:103C400015962C9315978F3049F08F5F982F92958A -:103C5000907F822F8F70892B15968C93C8010E94BC -:103C6000A71B86E0F801AFECB2E001900D928A95B7 -:103C7000E1F793CF86E0F801AFECB2E001900D924E -:103C80008A95E1F72DC04D875E878D859E850E94C0 -:103C9000E61B811140CF8091D40281608093D402D1 -:103CA000C8010E94A71B1CC0662309F458CF4D878A -:103CB0005E878D859E850E94E61B882309F44FCF81 -:103CC0002ACF811148CF0CC0243031050CF047CFEA -:103CD0009F7009F440CFF8019581907F09F03BCFA8 -:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 -:103CF000CF911F910F91FF90EF90DF90CF9008959B -:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 -:103D1000DEBF0FBECDBF4F83588769877A878B87F9 -:103D20009C87CE0107960E94B91C882369F08F8179 -:103D300098852A853B85232BF1F19F3F09F063C0CD -:103D40008F3F09F060C037C086E0FE013796DE0184 -:103D5000119601900D928A95E1F76F817885EA8539 -:103D6000FB85309741F17F3F11F46F3F21F12091A6 -:103D70009E0230E0C90101968770992740919D020B -:103D800050E08417950709F447C069837A83FD835F -:103D9000EC8396E0929FD001939FB00D1124A15621 -:103DA000BD4FFE01319601900D929A95E1F78093F7 -:103DB0009E020E942F1C16E080919D0290919E020F -:103DC0008917C1F1189FC001112481569D4F0E948F -:103DD000B91C882379F1E0919D021E9FF001112406 -:103DE000E156FD4F408151816281738184819581CB -:103DF0000E941F1C80919D0290E001968770992778 -:103E000080939D02D9CF4F81588569857A858B85AE -:103E10009C850E941F1CCFCF0E94E21B10929E0225 -:103E200010929D02EFECF2E086E0DF011D928A9590 -:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 -:103E4000DF91CF911F910895EF92FF920F931F93EF -:103E5000CF93DF938C01009709F46CC0F12CEE2412 -:103E6000E394E8012196F8018491843740F484308A -:103E700008F051C0813081F0823019F15BC0853784 -:103E800009F444C0A8F19CE7980F903708F052C09D -:103E90008F770E94FF1841C00E5F1F4FFE01C49133 -:103EA00080E28C0F883048F4C7708E2D01C0880FD7 -:103EB000CA95EAF70E94002214C08C2F0E9437187E -:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 -:103ED00058F4C7708E2D01C0880FCA95EAF70E946A -:103EE00006220E9427221AC08C2F0E94FF1816C09B -:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C -:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 -:103F1000FE01F49003C00E9437188E018F2D882374 -:103F200009F49FCFEFE9FFE03197F1F700C00000FF -:103F30008150F5CFDF91CF911F910F91FF90EF90BE -:103F4000089508956093D9027093DA028093DB029A -:103F50009093DC020C94CE1B0F931F930091D90217 -:103F60001091DA022091DB023091DC02DC01CB01FE -:103F7000802B912BA22BB32B8093D9029093DA0242 -:103F8000A093DB02B093DC021F910F910C94CE1B27 -:103F90000F931F930091D9021091DA022091DB0256 -:103FA0003091DC02DC01CB0180239123A223B323D7 -:103FB0008093D9029093DA02A093DB02B093DC02E3 -:103FC0001F910F910C94CE1B0F931F930091D90258 -:103FD0001091DA022091DB023091DC02DC01CB018E -:103FE00080279127A227B3278093D9029093DA02E2 -:103FF000A093DB02B093DC021F910F910C94CE1BB7 -:104000001092D5021092D6021092D7021092D802C6 -:104010000C94CE1B41E050E060E070E004C0440F1F -:10402000551F661F771F8A95D2F74093D50250938C -:10403000D6026093D7027093D8020C94CE1B41E055 -:1040400050E060E070E004C0440F551F661F771F0A -:104050008A95D2F78091D5029091D602A091D7028D -:10406000B091D802482B592B6A2B7B2B4093D50259 -:104070005093D6026093D7027093D8020C94CE1B53 -:1040800041E050E060E070E004C0440F551F661F3F -:10409000771F8A95D2F740955095609570958091DD -:1040A000D5029091D602A091D702B091D8024823B0 -:1040B00059236A237B234093D5025093D602609301 -:1040C000D7027093D8020C94CE1B41E050E060E020 -:1040D00070E004C0440F551F661F771F8A95D2F702 -:1040E0008091D5029091D602A091D702B091D802CA -:1040F000482759276A277B274093D5025093D60239 -:104100006093D7027093D8020C94CE1B0F931F9329 -:104110000091D5021091D6022091D7023091D80299 -:10412000DC01CB01802B912BA22BB32B8093D502EA -:104130009093D602A093D702B093D8021F910F910B -:104140000C94CE1B0F931F930091D5021091D602B1 -:104150002091D7023091D802DC01CB01802391233A -:10416000A223B3238093D5029093D602A093D702C3 -:10417000B093D8021F910F910C94CE1B0F931F93F5 -:104180000091D5021091D6022091D7023091D80229 -:10419000DC01CB0180279127A227B3278093D5028A -:1041A0009093D602A093D702B093D8021F910F919B -:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 -:1041C0001F93CF93DF938C01C090D902D090DA0275 -:1041D000E090DB02F090DC028091D5029091D60253 -:1041E000A091D702B091D802C82AD92AEA2AFB2A7C -:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B -:10420000979587950A94D2F780FF06C0B8018C2F46 -:104210000E947608019721F4219760F780E001C0A1 -:104220008C2FDF91CF911F910F91FF90EF90DF9036 -:10423000CF900895CF93DF93EC010E94DB20BE0165 -:104240000E947608DF91CF910895CB010E941A2138 -:1042500008958091DD0285958595859508958091D5 -:10426000DD028770089598E0899F90011124262B24 -:104270002093DD020C941F202091DD028095822383 -:104280008093DD02982F977069F430E0482F55270E -:1042900047FD50952417350729F085958595859517 -:1042A0000C94402008959091DD02977081E009F40C -:1042B00080E0089590911501992321F090911601C5 -:1042C000911109C02091170130911801F90132961E -:1042D0009FEF40E01FC0982F9695969596959F303A -:1042E00050F5E0911701F0911801E90FF11D877069 -:1042F00021E030E0A90102C0440F551F8A95E2F782 -:10430000CA019181892B818308959F3F39F04F5FC6 -:104310004E3041F051915813F8CF0DC05111F7CFE5 -:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B -:10433000FA9582830895089590911501992321F0AB -:1043400090911601911109C0209117013091180127 -:10435000F9013296205F3F4F1FC0982F9695969592 -:1043600096959F30F0F4E0911701F0911801E90F54 -:10437000F11D877021E030E0A90102C0440F551FF4 -:104380008A95E2F7CA0180959181892381830895F6 -:104390003196E217F30729F090819813F9CF108234 -:1043A000F7CF089581E090E0E0911701F0911801B6 -:1043B000E80FF91F1082019680319105A9F7089541 -:1043C0009091F102892B8093F1020895809590914C -:1043D000F10289238093F10208951092F102089569 -:1043E0009091F002892B8093F0020895809590912E -:1043F000F00289238093F00208951092F00208954C -:104400009091EF02892B8093EF020895809590910F -:10441000EF0289238093EF0208951092EF0208952E -:104420008093DE0208951092DE02089580911701B4 -:1044300090911801FC0131969C01205F3F4F80E074 -:10444000919191118F5FE217F307D1F70895E091F1 -:104450001701F09118018091F1028083E09117011A -:10446000F091180190818091F002892B8083E09176 -:104470001701F091180190818091EF02892B8083C0 -:104480008091DE02882361F0E0911701F09118011C -:104490009081892B80830E94162281111092DE0266 -:1044A00080911701909118010C940C1720E000974F -:1044B00039F0AC0141505109842395232F5FF7CF88 -:1044C000822F089580911303843039F11092F30202 -:1044D00020E488E190E00FB6F894A89580936000FE -:1044E0000FBE2093600080E00E94F10280E00E94F5 -:1044F000100983B7817F846083BF83B7816083BFE6 -:104500007894889583B78E7F83BF88E10FB6F8943F -:1045100080936000109260000FBE08950895089582 -:1045200080E00E94F1020E948E220E946B090E948C -:104530008F220E94F00991E0811101C090E0892F43 -:1045400008950E94E21B80E00E94F1020E940A2866 -:104550000E9400170C9410091F920F920FB60F9231 -:1045600011248F939F93AF93BF938091F302811196 -:1045700013C08091F4029091F502A091F602B091DF -:10458000F7024196A11DB11D8093F4029093F502AC -:10459000A093F602B093F702BF91AF919F918F91D4 -:1045A0000F900FBE0F901F90189582E084BD93E08E -:1045B00095BD9AEF97BD80936E0008952FB7F8943C -:1045C0008091F4029091F502A091F602B091F70269 -:1045D0002FBF0895CF92DF92EF92FF920F931F9318 -:1045E0002FB7F8944091F4025091F5026091F602D1 -:1045F0007091F7022FBF6A017B01EE24FF248C012A -:1046000020E030E0C016D106E206F30610F4415077 -:1046100051099A01281B390BC9011F910F91FF9075 -:10462000EF90DF90CF9008951F920F920FB60F92E8 -:1046300011248F939F93AF93BF938091F402909135 -:10464000F502A091F602B091F7020196A11DB11DED -:104650008093F4029093F502A093F602B093F702D0 -:10466000BF91AF919F918F910F900FBE0F901F90B0 -:1046700018950E94FD13F8942FEF87EA91E62150D8 -:1046800080409040E1F700C0000087E090EBDC0143 -:1046900080931E0390931F03A0932003B0932103E4 -:1046A0009CE088E10FB6F894A895809360000FBE57 -:1046B00090936000FFCF0E949A23811102C00E9454 -:1046C00076230E94A5238093F2020E94AD2380935B -:1046D0001C0387FB882780F9809316010E94A92379 -:1046E000682F70E080E090E00C94A21F6DEE7EEFEA -:1046F00080E090E00E94C12C60E082E090E00E94A7 -:10470000AF2C60E083E090E00E94AF2C60E084E09A -:1047100090E00E94AF2C60E085E090E00E94AF2C1A -:1047200060E086E090E00E94AF2C6FEF87E090E0C1 -:104730000C94AF2C80E090E00E94A92C21E08D3EEB -:104740009E4F09F020E0822F089582E090E00C94C3 -:10475000A12C83E090E00C94A12C84E090E00C94D8 -:10476000A12C682F84E090E00C94AF2C86E090E0C0 -:104770000C94A12C682F86E090E00C94AF2C87E07D -:1047800090E00C94A12C682F87E090E00C94AF2C63 -:104790008091FA0280FF0BC060911C0185E0689F48 -:1047A000B001112475956795759567952BC081FFAC -:1047B00009C060911C0185E0689FB00111247595C6 -:1047C000679520C082FF07C060911C0185E0689F4B -:1047D000B001112417C09091FB029923D1F0609190 -:1047E0001B01961788F720911C0185E0289F9001F6 -:1047F0001124929FA001939F500D112470E0CA01D3 -:104800000E94872C6038710540F46115710539F0FC -:1048100002C065E070E0862F08958FE7089581E07B -:1048200008958091FA0280FF08C060911A0170E03B -:10483000759567957595679521C081FF06C0609154 -:104840001A0170E07595679519C082FF04C06091E8 -:104850001A0170E010C09091FB029923C1F06091A1 -:1048600019019617A0F780911A01899FC0011124A0 -:1048700070E00E94872C6038710528F4611571057D -:1048800021F0862F08958FE7089581E0089561E073 -:1048900070E0F4CF803F21F40E94C823819504C0CA -:1048A000813F29F40E94C8238093FE020895823F2D -:1048B00021F40E94C823819504C0833F29F40E94FB -:1048C000C8238093FD020895893F19F40E941124A2 -:1048D00005C08A3F31F40E94112481958093FF0224 -:1048E00008958B3F21F40E941124819504C08C3FD0 -:1048F00029F40E941124809300030895843F21F439 -:104900008091FC02816017C0853F21F48091FC02F8 -:10491000826011C0863F21F48091FC0284600BC04C -:10492000873F21F48091FC02886005C0883F31F404 -:104930008091FC0280618093FC0208958D3F21F4F8 -:104940008091FA0281600BC08E3F21F48091FA02BF -:10495000826005C08F3F29F48091FA0284608093C1 -:10496000FA020895803F39F48091FE0287FF6CC0FF -:104970001092FE0269C0813F29F48091FE02181650 -:10498000BCF362C09091FD02823F29F497FF5CC0A6 -:104990001092FD0259C0833F19F41916CCF354C08C -:1049A000893F41F48091FF0218160CF04DC010921F -:1049B000FF024AC08A3F29F48091FF0287FF44C06A -:1049C000F6CF8B3F39F48091000387FF3DC01092F2 -:1049D00000033AC08C3F29F4809100031816BCF301 -:1049E00033C0843F21F48091FC028E7F17C0853F45 -:1049F00021F48091FC028D7F11C0863F21F48091CB -:104A0000FC028B7F0BC0873F21F48091FC02877FE3 -:104A100005C0883F31F48091FC028F7E8093FC02B8 -:104A200013C08D3F21F48091FA028E7F0BC08E3F20 -:104A300021F48091FA028D7F05C08F3F29F4809187 -:104A4000FA028B7F8093FA028091FD0281110EC0E1 -:104A50008091FE0281110AC08091FF02811106C07F -:104A600080910003811102C01092FB0208958CEF27 -:104A700092E00E9417170E94DE229093F902809321 -:104A8000F80208951F93CF93DF938091F8029091DD -:104A9000F9020E94EA22AC019091FB02992321F0D5 -:104AA00020911D0130E006C020911E018AE0289F60 -:104AB000900111244217530708F486C08091FD022B -:104AC000C091FE02D091FF0210910003811107C036 -:104AD000C11176C0D11174C0111172C075C09F3F51 -:104AE00019F09F5F9093FB02181624F40E94C823CC -:104AF0008093FD028091FD0287FF05C00E94C823BC -:104B000081958093FD021C1624F40E94C823809393 -:104B1000FE028091FE0287FF05C00E94C823819596 -:104B20008093FE026091FD02662339F1C091FE027E -:104B3000CC2319F1772767FD7095872F972F0E9457 -:104B4000A92923E333E343E35FE30E94B92A0E94E8 -:104B500076296093FD026C2F772767FD7095872F6C -:104B6000972F0E94A92923E333E343E35FE30E94E5 -:104B7000B92A0E9476296093FE021D1624F40E9431 -:104B800011248093FF028091FF0287FF05C00E94DD -:104B9000112481958093FF02111624F40E941124A0 -:104BA000809300038091000387FF05C00E941124B9 -:104BB000819580930003DF91CF911F910C9437254D -:104BC0009F3F09F08ECF96CFDF91CF911F9108952F -:104BD000ECEFF2E085E0DF011D928A95E9F7109293 -:104BE000FB021092FA020895833081F128F481309B -:104BF00059F08230D1F00895853009F449C0B8F1F8 -:104C0000863009F456C0089580911E01262F30E0A9 -:104C1000280F311D2F3F310524F4680F60931E01CA -:104C200008958FEF80931E01089580911D01262F16 -:104C300030E0280F311D2F3F310524F4680F6093B9 -:104C40001D0108958FEF80931D01089580911C012F -:104C5000262F30E0280F311D2F3F310524F4680F37 -:104C600060931C0108958FEF80931C01089580913B -:104C70001B01262F30E0280F311D2F3F310524F472 -:104C8000680F60931B0108958FEF80931B010895B7 -:104C900080911A01262F30E0280F311D2F3F31055A -:104CA00024F4680F60931A0108958FEF80931A011E -:104CB000089580911901262F30E0280F311D2F3FD4 -:104CC000310524F4680F6093190108958FEF8093E4 -:104CD00019010895833011F128F4813049F08230B0 -:104CE00091F00895853081F120F18630C1F1089569 -:104CF00080911E01681720F4861B80931E01089581 -:104D000010921E01089580911D01681720F4861BE2 -:104D100080931D01089510921D01089580911C013A -:104D2000681720F4861B80931C01089510921C01C3 -:104D3000089580911B01681720F4861B80931B0146 -:104D4000089510921B01089580911A01681720F4AC -:104D5000861B80931A01089510921A01089580917C -:104D60001901681720F4861B809319010895109289 -:104D7000190108950F931F93873208F048C08E31B0 -:104D800008F08DC0803109F477C008F5873009F448 -:104D900061C068F4863009F09DC08091F202817F85 -:104DA0008E7F8093F20281E08093020394C08B3067 -:104DB00009F489C08E3009F08DC08091F20282FB27 -:104DC000222720F991E0922790FB82F95EC086317C -:104DD00009F479C060F4813109F07CC00E94E21BC3 -:104DE0009091160181E08927809316016CC089316A -:104DF00009F469C08B3109F06DC08091F20281FB2A -:104E0000222720F991E0922790FB81F93EC0883358 -:104E100009F459C050F4893209F457C0853309F4B4 -:104E200054C0873209F451C055C0833409F44DC0D1 -:104E300028F48A3308F44EC0895332C0883409F00C -:104E400049C00E94E21B0E94200A0E94E4030E94C3 -:104E5000392339C09091F202892F8095817080FBAF -:104E600090F929F0966098609093F20234C0997F8F -:104E7000977F9093F20227C08091F20283FB222752 -:104E800020F991E0922790FB83F98093F202992315 -:104E9000D1F08091F20281608093F20214C08D51B2 -:104EA00041E050E060E070E08A019B0104C0000F27 -:104EB000111F221F331F8A95D2F7C901B8010E9422 -:104EC000A21F0E94E21B81E006C061E070E080E06A -:104ED00090E0F5CF80E01F910F91089580E0089554 -:104EE00080E00895CF93C82F80910203813069F04C -:104EF00018F08230C9F184C0E0911701F0911801D7 -:104F00008081823209F07EC007C0E0911701F091E4 -:104F100018018081823261F48C2F0E946E278111EA -:104F200004C08C2F0E94BA261DC081E090E01AC0F8 -:104F30008C2F0E947027811114C0C43179F048F47D -:104F4000CB3079F0C03109F061C082E08093020378 -:104F500008C0C93219F0C83321F058C010920203BA -:104F600055C081E0817054C0C93291F120F5C4313F -:104F700079F1B0F4C73009F047C08EE180931E018B -:104F800082E380931D018AE080931C0184E1809379 -:104F90001B0188E080931A0188E28093190134C0D4 -:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 -:104FB0008093010329C0CE34E9F020F4CB3421F5ED -:104FC0006AE013C0C13579F0C235F1F461E00DC07B -:104FD00080910103882319F01092010315C081E02C -:104FE0008093020315C061E006C0809101030E9416 -:104FF000F4250AC06AE0809101030E946A2604C079 -:105000001092020380E004C081E002C080E0AACFD9 -:10501000CF9108950E949A23811102C00E947623A5 -:105020000E94B62380931D0380FF02C0869501C0B5 -:1050300080E00C94F10280911D03982F9695292F02 -:1050400030E0233031054CF49F5F990F8170892B3C -:10505000816080931D030E94BA2380911D03869571 -:105060000C94F10280911D03982F969591F0915820 -:10507000990F8170892B80931D038E7F91E009F435 -:1050800090E080911D0390FB80F980931D030E94A6 -:10509000BA2380911D0386950C94F10280911D0323 -:1050A000982F909590FB80F980931D030E94BA235E -:1050B00080911D0380FF02C0869501C080E00C94A2 -:1050C000F10290911D03892F86958F5F8F779170E4 -:1050D000843028F4880F892B80931D0302C090939D -:1050E0001D0380911D038E7F91E009F490E0809173 -:1050F0001D0390FB80F980931D030E94BA238091C9 -:105100001D0386950C94F10220911D03922F969514 -:105110008927982F990F822F8170892B80931D03E7 -:105120008E7F91E009F490E080911D0390FB80F95F -:1051300080931D030E94BA2380911D0386950C94D1 -:10514000F10280911D03869508955058BB27AA2728 -:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 -:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF -:10517000D3D180F3BA17620773078407950718F035 -:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 -:105190000B01B90190010C01CA01A0011124FF27E4 -:1051A000591B99F0593F50F4503E68F11A16F040DF -:1051B000A22F232F342F4427585FF3CF46953795DE -:1051C0002795A795F0405395C9F77EF41F16BA0BA3 -:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 -:1051E000661F771F881FC2F70EC0BA0F621F731F9A -:1051F000841F48F4879577956795B795F7959E3FF7 -:1052000008F0B3CF9395880F08F09927EE0F979584 -:105210008795089527D108F481E008950CD06BC1DB -:1052200063D140F05AD130F021F45F3F19F03EC114 -:10523000511195C14FC170D198F39923C9F35523EA -:10524000B1F3951B550BBB27AA2762177307840779 -:1052500038F09F5F5F4F220F331F441FAA1FA9F32F -:1052600033D00E2E3AF0E0E830D091505040E69521 -:10527000001CCAF729D0FE2F27D0660F771F881F82 -:10528000BB1F261737074807AB07B0E809F0BB0B71 -:10529000802DBF01FF2793585F4F2AF09E3F510595 -:1052A00068F004C15CC15F3FECF3983EDCF3869587 -:1052B00077956795B795F7959F5FC9F7880F911D0B -:1052C0009695879597F90895E1E0660F771F881FF7 -:1052D000BB1F621773078407BA0720F0621B730BAA -:1052E000840BBA0BEE1F88F7E095089504D06894FC -:1052F000B11135C1089518D188F09F5790F0B92F9A -:105300009927B751A0F0D1F0660F771F881F991F1A -:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF -:1053200008951CC1672F782F8827B85F39F0B93FDF -:10533000CCF3869577956795B395D9F73EF490951C -:105340008095709561957F4F8F4F9F4F0895E8949A -:1053500009C097FB3EF490958095709561957F4FBD -:105360008F4F9F4F9923A9F0F92F96E9BB2793956B -:10537000F695879577956795B795F111F8CFFAF47B -:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC -:1053900016C0882311F096E911C0772321F09EE80A -:1053A000872F762F05C0662371F096E8862F70E070 -:1053B00060E02AF09A95660F771F881FDAF7880F4A -:1053C0009695879597F9089588D018F011F08CD0AC -:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F -:1053E000E7FB6217730784079507A8F199F3E92F84 -:1053F000FF2788232AF03197660F771F881FDAF777 -:10540000952F5527442332F091505040220F331FDF -:10541000441FD2F7BB27E91BF50B621B730B840BF0 -:10542000B109C1F222F4620F731F841FB11D3197BD -:105430002AF0660F771F881FBB1FEFCF9150504097 -:105440005AF041F0882332F0660F771F881F915081 -:105450005040C1F7939530C08695779567959F5FCB -:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 -:1054700016161706E807F907C0F012161306E40718 -:10548000F50798F0621B730B840B950B39F40A2611 -:1054900061F0232B242B252B21F408950A2609F4EF -:1054A000A140A6958FEF811D811D089597F99F67F3 -:1054B00080E870E060E008959F3F31F0915020F463 -:1054C000879577956795B795880F911D96958795E0 -:1054D00097F908959FEF80EC089500240A9416161A -:1054E000170618060906089500240A9412161306D2 -:1054F000140605060895092E0394000C11F4882360 -:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B -:105510007F4F8F4F9F4F089557FD9058440F551F51 -:1055200059F05F3F71F04795880F97FB991F61F025 -:105530009F3F79F087950895121613061406551F9C -:10554000F2CF4695F1DF08C0161617061806991F08 -:10555000F1CF86957105610508940895E894BB27FD -:1055600066277727CB0197F908957CDF08F48FEF42 -:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 -:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF -:10559000D1F3950F50E0551F629FF001729FBB271A -:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 -:1055B0006627B00DA11D661F829F2227B00DA11D79 -:1055C000621F739FB00DA11D621F839FA00D611DFF -:1055D000221F749F3327A00D611D231F849F600D20 -:1055E000211D822F762F6A2F11249F5750408AF059 -:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 -:10560000881F91505040A9F79E3F510570F04ECF32 -:10561000A6CF5F3FECF3983EDCF3869577956795D0 -:10562000B795F795E7959F5FC1F7FE2B880F911D02 -:105630009695879597F90895FA01EE0FFF1F30961A -:105640002105310599F16115710561F48038BFE3D9 -:105650009B0749F168949038810561F08038BFEF6D -:105660009B0741F0992342F5FF3FE10531052105F4 -:1056700011F1E8940894E795D901AA2329F4AB2FF6 -:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F -:10569000F73950F019F0FF3A38F49F779F930CD008 -:1056A0000F9007FC905808953EF014CF60E070E032 -:1056B00080E89FE308954FE79F775F934F933F9371 -:1056C0002F939ED02F913F914F915F9152DF05C054 -:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C -:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C -:1056F0004EDF0F920F920F924DB75EB70F92C0D050 -:10570000EAE0F1E016D04F915F91EF91FF91E595BE -:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD -:10572000FA95E1F74195550B32D00F9007FE26C050 -:105730000895DF93CF931F930F93FF92EF92DF9221 -:105740007B018C01689405C0DA2EEF011EDFFE019B -:10575000E894A5912591359145915591AEF3EF01CE -:1057600006DDFE019701A801DA9479F7DF90EF904A -:10577000FF900F911F91CF91DF9108959B01AC0194 -:1057800060E070E080E89FE349CD90CE95CECCDE1E -:10579000E8F39923D9F3940F511DBBF39150504076 -:1057A00094F059F0882332F0660F771F881F9150CC -:1057B0005040C1F79E3F510544F7880F911D9695C3 -:1057C000879597F908955F3FACF0983E9CF0BB2712 -:1057D000869577956795B79508F4B1609395C1F76D -:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B -:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 -:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD -:105810000F93FF92C92FDD2788232AF02197660F67 -:10582000771F881FDAF720E030E040E85FEB9FE366 -:10583000883920F0803E30F021968F7787DCE2E3D4 -:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 -:10585000EC01FB2E6F5771097595771F880B990B1B -:1058600078DD28E132E741E35FE38FDEAF2D980179 -:10587000AE01FF900F911F91CF91DF9178DC3BCE6D -:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 -:1058900022273327442750781FC0B75188F4AB2FF5 -:1058A0000024469537952795011CA395D2F3002037 -:1058B00069F0220F331F441FB395DAF30DD045CCA6 -:1058C00061307105A0E88A07B94630F49B01AC014C -:1058D0006627772788279078309621F020833183B8 -:1058E000428353830895AA1BBB1B51E107C0AA1F23 -:1058F000BB1FA617B70710F0A61BB70B881F991F71 -:105900005A95A9F780959095BC01CD01089597FB14 -:10591000072E16F4009407D077FD09D00E94732C4F -:1059200007FC05D03EF4909581959F4F08957095A2 -:1059300061957F4F0895EE0FFF1F0590F491E02DC4 -:105940000994F999FECF92BD81BDF89A992780B547 -:105950000895A8E1B0E042E050E00C94C92C262F55 -:10596000F999FECF92BD81BDF89A019700B4021655 -:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 -:1059800008950196272F0E94B02C0C94AF2CDC01B7 -:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A -:1059A000319600B40D9241505040B8F70895F894E4 -:0259B000FFCF27 -:1059B200640007000CFF0000003F64041092106FA7 -:1059C200103B1007100101DF022808140A321E00E2 -:1059D20002040507090B0C0E1011131517181A1CD7 -:1059E2001D1F2123242628292B2D2F303234353711 -:1059F200393B1F0F03764F5F6F7F4969437909591E -:105A020053633149803F5D8B803FF8BF803FCAE1DD -:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE -:105A2200803F3149803F0000803FF16D7F3F75EA42 -:105A32007E3F4C827E3F833F7E3F84287E3F833F72 -:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 -:105A5200803F3F4D3639ED04A0046A043104C4038B -:105A6200DD03F6030F04010203040506070809001B -:00000001FF diff --git a/keyboard/planck/keymaps/bone2planck/compiled.hex b/keyboard/planck/keymaps/bone2planck/compiled.hex deleted file mode 100644 index 0d5287b3ee..0000000000 --- a/keyboard/planck/keymaps/bone2planck/compiled.hex +++ /dev/null @@ -1,1450 +0,0 @@ -:100000000C9491020C94D5020C94D5020C94D50258 -:100010000C94D5020C94D5020C94D5020C94D50204 -:100020000C94D5020C94D5020C9482140C945415A3 -:100030000C94B6220C94D5020C94D5020C94D502E3 -:100040000C94D5020C9437030C94D5020C94D50271 -:100050000C94D5020C941E230C94D5020C94D5025A -:100060000C94D5020C94D5020C94D5020C94D502B4 -:100070000C94D5020C94D5020C94D5020C94D502A4 -:100080000C94F70A0C94D5020C94D5020C94D5026A -:100090000C94D5020C94D5020C94D5020C94D50284 -:1000A0000C94D5020C94D5020C94D502C115E3151D -:1000B000D116E315D11628164B16D116A016B31675 -:1000C0009D199D19CC19CC190B1A2B1A811B811B58 -:1000D000361A811BE61AE61A4D1B561B811B7B1B29 -:1000E000F31AF31AF31AF31AF31AF31AF31AF31AA8 -:1000F000F31AF31AF31AF31AF31AF31AF31AF31A98 -:10010000031B111B181B1F1B291B07634236B79BC0 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C00002010000000000000000000014000D000B -:1001D0000700180004001B0013000B000F001000A4 -:1001E0001A002D000152060017000C000800120032 -:1001F00005001100150016000A0001521600090042 -:1002000019002F00340033001D001C003600370099 -:100210000E001600E000E300E200035202522C0040 -:100220002C000252035229002B002800350214141E -:1002300038022514261435001E02640064022702C9 -:100240002302000001002D1424022414271430027C -:100250002D0225022602380037020100000031007D -:100260002102641430140814300022021F023102EB -:100270003602000001000100010001000100010040 -:1002800001000100010001000100010000004B001D -:100290002A0052004C004E000000240025002600D9 -:1002A0000000000000004A00500051004F004D00C7 -:1002B0003700210022002300360000001600000055 -:1002C0002B0049002800000027001E001F0020000E -:1002D00036021600010001000100010001000100CA -:1002E0000100010001000100010001000000000008 -:1002F0004600470048000000000040004100420066 -:100300004500000000000000A800AA00A9000000AD -:1003100020143D003E003F004400000001000000AA -:10032000AC00AE00AB0000001F143A003B003C00E4 -:100330004300010001000100010001000000010074 -:100340000100000001000100010001002803540029 -:1003500068006500200050006C0061006E006300C2 -:100360006B0020004B006500790062006F006100A7 -:100370007200640000002C034F00720074006800DB -:100380006F006C0069006E00650061007200200063 -:100390004B006500790062006F006100720064002C -:1003A000730000000403090409026D00040100A0A9 -:1003B000FA090400000103010100092111010001F3 -:1003C000223F000705810308000A09040100010318 -:1003D000010200092111010001224D0007058203DD -:1003E00008000A09040200010300000009211101AC -:1003F00000012236000705830308000A09040300F0 -:100400000103000000092111010001223900070544 -:1004100084031000011201100100000008EDFE60CD -:100420006001000102000105010906A1010507198B -:10043000E029E715002501950875018102050819D5 -:100440000129059505750191029501750391010535 -:10045000071900297715002501957875018102C0DB -:1004600005010980A101850216010026B7001A01C5 -:10047000002AB700751095018100C0050C0901A183 -:10048000018503160100269C021A01002A9C0275B0 -:100490001095018100C005010902A1010901A10017 -:1004A0000509190129051500250195057501810228 -:1004B0009501750381010501093009311581257FF9 -:1004C00095027508810609381581257F9501750803 -:1004D0008106050C0A38021581257F950175088172 -:1004E00006C0C005010906A101050719E029E715A5 -:1004F00000250195087501810295017508810105A6 -:100500000819012905950575019102950175039159 -:10051000010507190029FF150025FF9506750881BB -:1005200000C011241FBECFEFDAE0DEBFCDBF04B69E -:1005300003FE24C080911E0390911F03A09120030D -:10054000B09121038730904BA740B04BB9F4109283 -:100550001E0310921F03109220031092210314BE59 -:1005600084B7877F84BF88E10FB6F89480936000DA -:10057000109260000FBEE0E0F8E3099511E0A0E002 -:10058000B1E0E6ECF9E502C005900D92A03CB107A0 -:10059000D9F713E0A0ECB1E001C01D92AE31B10774 -:1005A000E1F70E94C8110C94E12C0C94000008950E -:1005B000089581E0089508950C94D8020C94D9020E -:1005C0000C94DB020E94AB2823E030E0281B3109A9 -:1005D000220F2093C4010895282F2F988091800026 -:1005E000211108C0877F8093800010928D001092A7 -:1005F0008C001BC0886080938000233019F48FEF3B -:100600009FEF0FC083E090E0821B9109880F991F34 -:100610002FEF3FEFA90102C0569547958A95E2F763 -:10062000CA0190938D0080938C000C94E2020E948A -:10063000E20284E08093C3011092C0010895279ADA -:100640002F988FEF9FEF90938700809386008AE02A -:100650008093800089E1809381000E9414280C948B -:1006600017030E941F036E9A769A0C94D7021F926A -:100670000F920FB60F9211242F933F938F939F9356 -:10068000EF93FF93E091C101F091C201CF01019678 -:100690009093C2018093C1010090C30102C0F695FE -:1006A000E7950A94E2F7EF738091C001823019F464 -:1006B000E03251F404C0813039F4EF3329F48091F1 -:1006C0006F008D7F80936F00F0E0E457FE4FE49160 -:1006D00021E031E0E29FC001E39F900D11240090E2 -:1006E000C40102C0969587950A94E2F790938D0015 -:1006F00080938C00FF91EF919F918F913F912F916B -:100700000F900FBE0F901F90189561110DC0FC0146 -:100710008281882331F085EE0E9441180E946B2867 -:1007200003C085EE0E94091980E090E0089581E001 -:1007300008950C94970308950C9431038091150249 -:10074000882309F448C08091D1019091D20100978B -:1007500079F40E94E8229093D2018093D101809194 -:10076000D30190E0009771F48091D40190E00AC029 -:100770000E94F422209100013091010128173907CD -:1007800040F329C00197880F991F880F991FFC011A -:10079000EB52FE4F60817181828193810E945D0ADC -:1007A000E091D30184E0E89FF0011124EB52FE4F69 -:1007B00060817181828193814FE050E00E94150E2B -:1007C0008091D30190E001966091D40170E00E9485 -:1007D000912C8093D3010C94DC02109217020C949C -:1007E0002A0A0895089581E0809317020C94F20379 -:1007F000089508958F929F92AF92BF92EF92FF92C9 -:100800000F931F93CF93DF93CDB7DEB7A3970FB6A8 -:10081000F894DEBF0FBECDBF7C01FC0100811181C9 -:10082000C8010E94E520B8010E94FC058C01B701B7 -:100830000E949903882309F4CCC10032F0E51F0718 -:1008400041F4F7018281882309F458C00E94790E8F -:10085000C0C10132F0E51F0741F4F701828188230E -:1008600009F44CC00E94820EB4C10232F0E51F07A9 -:1008700051F4F7018281882309F440C00E94750E6B -:100880008111F0CFE3CF0332F0E51F0739F4F70110 -:100890008281882399F10E94F3039BC10432F0E521 -:1008A0001F0739F4F7018281882341F10E94ED038B -:1008B00090C10532F0E51F0749F4F70182818823D2 -:1008C000E9F0809117028111F1CFE5CF0632F0E512 -:1008D0001F0739F4F7018281882381F00E94890E75 -:1008E0000AC00732F0E51F0749F4F7018281882327 -:1008F00029F00E94940E0E94F9036BC180911702A7 -:10090000811105C0F70182818111CFC018C1003E5D -:10091000110579F4F7018281882309F44DC00E9402 -:100920002A0A81E080931602109215021092D401D7 -:1009300050C1023E110559F4F70182818823E1F18B -:100940000E942A0A109216021092150242C1033E1A -:10095000110591F4F7018281882371F10E942A0A1E -:100960001092160281E0809315021092D30110922A -:10097000D2011092D1012DC10235110559F4F701B0 -:100980008281882309F425C18091000190910101A1 -:100990000A970DC00135110579F4F701828188238A -:1009A00009F417C180910001909101010A9690937A -:1009B0000101809300010DC14091040183E2EFE148 -:1009C000F1E0DE01119601900D928A95E1F7F701B1 -:1009D000808121E030E02C0F3D1F280F311DC9011F -:1009E0002091020130910301FC01E20FF31F6081AD -:1009F000772767FD7095640F711D882777FD8095B7 -:100A0000982F0E94B32920E030E040E451E40E9496 -:100A100018294B015C01F701218184E090E0821BE1 -:100A20009109BC01882777FD8095982F0E94B329F2 -:100A30009B01AC01C501B4010E94B0289B01AC012F -:100A400060E070E080E090E40E94262B20E030E03F -:100A50004CED50E40E94C32A4B015C01F7018281F6 -:100A60008823D1F04FE050E0C501B4010E94150E7B -:100A7000809116028823A1F08091D40124E0829F06 -:100A8000F0011124EB52FE4F80829182A282B38248 -:100A90008F5F8093D40104C0C501B4010E945D0A38 -:100AA0000F3F110508F02ECF94C08091D001811125 -:100AB0001FC0043130E5130709F051C00E949B03A9 -:100AC00081E08093D0010E94E8229093CF0180932F -:100AD000CE011092C7011092C9011092C801109264 -:100AE000CB011092CA011092CD011092CC0171C0BD -:100AF0008091CE019091CF010E94F422883C910513 -:100B000070F48091C701E82FF0E0EE0FFF1FE8536B -:100B1000FE4F118300838F5F8093C7015AC0043852 -:100B200080E5180721F00538104501F13AC0F701BA -:100B30008281882341F01092C50182E01EC00438F2 -:100B400030E5130759F58091C501811106C086E291 -:100B50000E94411886E20E94091982E01CC00438F4 -:100B6000F0E51F0741F305381045D9F4F7018281FC -:100B7000882331F01092C60180E20E94581929C0E2 -:100B80008091C601811106C087E20E94411887E268 -:100B90000E94091980E20E945F191BC005381045A8 -:100BA00029F381E08093C5018093C601C701A39614 -:100BB0000FB6F894DEBF0FBECDBFDF91CF911F916E -:100BC0000F91FF90EF90BF90AF909F908F900C94FB -:100BD000DE0280E0A3960FB6F894DEBF0FBECDBF55 -:100BE000DF91CF911F910F91FF90EF90BF90AF9049 -:100BF0009F908F90089508959CE0799FF0011124B3 -:100C000090E3899FE00DF11D1124E60FF11DEE0F19 -:100C1000FF1FE453FE4F859194910895880F991F0B -:100C2000FC01E45BFF4F859194910895880F991F13 -:100C3000FC01E453FE4F8591949108950F931F9307 -:100C4000CF93DF93EC01811521E39207A0F5C11545 -:100C500080E3D80708F0D7C0C83ED105D8F4C03E1D -:100C6000D10508F007C2C83AD10578F4C53AD105D4 -:100C700008F06AC0C130D10509F463C008F4F7C1B7 -:100C8000C430D10508F0F6C1F2C1CB3BD10508F460 -:100C900066C0EDC1C11590E2D90708F0AFC0C1151B -:100CA00021E0D20708F0E6C1C03FD10508F4DFC15A -:100CB0008E0110651FC2C03880E5D80700F5C03727 -:100CC00090E5D90708F0A3C0C11520E5D20709F4C3 -:100CD000ACC050F4CE01905480319F4008F0C7C1A1 -:100CE000DF708E01106A06C2C13080E5D80709F4B2 -:100CF000AEC0C43190E5D90708F4AFC0B8C1C3385D -:100D000020E5D20709F48EC050F4C13890E5D90728 -:100D100009F482C008F083C000E011EDEBC1C031DE -:100D200081E5D80708F4A3C1C11597E5D90708F4F0 -:100D300036C1CE0190578115904108F098C1DF70FF -:100D400093C101E010E0D6C1C53AD10509F494C1C0 -:100D5000C63AD10509F093C102E810E4CBC1C83A04 -:100D6000D10509F48FC1C93AD10509F48EC1CA3A37 -:100D7000D10509F48DC1CB3AD10509F48CC1CC3A27 -:100D8000D10509F48BC1CD3AD10509F48AC1C03B24 -:100D9000D10509F489C1CE3AD10509F488C1CF3A09 -:100DA000D10509F487C1C13BD10509F486C1C23B15 -:100DB000D10509F485C1C33BD10509F484C1C43B05 -:100DC000D10509F483C1C53BD10509F482C1C63BF5 -:100DD000D10509F481C1C73BD10509F480C1C83BE5 -:100DE000D10509F47FC1C93BD10509F47EC1CA3BD5 -:100DF000D10509F47DC100E014E47CC1CE019F70EF -:100E00000E94160678C1DD278E01106C73C1CF7069 -:100E1000DD278E01146D6EC100E010ED6BC100E0A6 -:100E200012ED68C100E013ED65C10E94EC1B0E9449 -:100E30002A0A0E94F1038FEF94E32CE08150904046 -:100E40002040E1F700C000000E94432353C180917D -:100E5000F20281608093F2024DC10E94A4238111AD -:100E600002C00E9480230E94B72390E090931D034C -:100E700080931C03C23080E5D80721F480911C03C5 -:100E8000816086C0C43090E5D90721F480911C03AD -:100E900082607EC0C63020E5D20721F480911C0319 -:100EA000846076C0C83080E5D80719F480911C03AF -:100EB00027C0CA3090E5D90721F480911C038061D6 -:100EC00067C0CC3020E5D20721F480911C038062FA -:100ED0005FC0CE3080E5D80721F480911C03806488 -:100EE00057C0C03190E5D90721F480911C03806878 -:100EF0004FC0C23120E5D20729F480911C038460E1 -:100F0000886046C0C33080E5D80721F480911C0377 -:100F10008E7F3EC0C53090E5D90721F480911C0337 -:100F20008D7F36C0C73020E5D20721F480911C03A5 -:100F30008B7F2EC0C93080E5D80719F480911C033F -:100F400026C0CB3090E5D90721F480911C038F7E19 -:100F50001FC0CD3020E5D20721F480911C038F7D86 -:100F600017C0CF3080E5D80721F480911C038F7B18 -:100F70000FC0C13190E5D90721F480911C038F7710 -:100F800007C0C331D04531F480911C038B7F877F2C -:100F900080931C0380911C030E94BB23ABC08D2F48 -:100FA00099278F70992781309105D9F49E0123707C -:100FB000332702C0880F991F2A95E2F79C688E019B -:100FC00044E0000F111F4A95E1F700271370802BB2 -:100FD000912B53E0CC0FDD1F5A95E1F7C076DD274A -:100FE0002FC08230910531F4DC2FCC278E01016FA8 -:100FF000106A80C08330910569F4CE01837099270F -:1010000001E010E002C0000F111F8A95E2F7C8014D -:101010009C680FC084309105B9F4CE018370992784 -:1010200001E010E002C0000F111F8A95E2F7C8012D -:101030009A6823E0CC0FDD1F2A95E1F7C07ED770B8 -:101040008C010C2B1D2B56C08530910531F4DC2F03 -:10105000CC278E01046F106A4DC0069709F04AC074 -:10106000CF71DD27DC2FCC278E01106243C000E05A -:1010700010E040C08E013EC001E810E43BC003E830 -:1010800010E438C002EE14E435C009EE14E432C0B6 -:101090000AEE14E42FC005EB14E42CC006EB14E4B4 -:1010A00029C007EB14E426C00CEC14E423C00DECBB -:1010B00014E420C003E815E41DC00AE815E41AC0D2 -:1010C00002E915E417C004E915E414C001E216E4CE -:1010D00011C003E216E40EC004E216E40BC005E200 -:1010E00016E408C006E216E405C007E216E402C0F2 -:1010F0000AE216E4C801DF91CF911F910F91089584 -:101100009CE0799FF001112490E3899FE00DF11D8F -:101110001124E60FF11DEE0FFF1FE453FE4F8591E2 -:101120009491803E9105E0F4803C910558F581331F -:10113000910509F46FC048F48932910509F463C040 -:101140008A32910509F46DC072C089339105E9F0C6 -:1011500082389105D1F08533910509F44DC067C0FF -:10116000833E910581F138F4803E9105B9F0823ECD -:101170009105D9F05CC0863E910561F1873E9105ED -:10118000A1F155C00E940E06089520911C0320FD78 -:1011900002C021FF4CC080EE90E049C080911C034A -:1011A00080FFF9CF89E390E042C080911C0382FF69 -:1011B0000EC080911C0384FF03C080E090E037C024 -:1011C00083EE90E034C080911C0382FFF2CF82EE68 -:1011D00090E02DC080911C0383FF0BC080911C0305 -:1011E00084FDEBCF87EE90E022C080911C0383FF4B -:1011F000F5CF86EE90E01BC080911C0385FF07C0F1 -:1012000089E290E014C080911C0385FFF9CF85E34B -:1012100090E00DC080911C0386FF07C08AE290E039 -:1012200006C080911C0386FFF9CF81E390E00E9405 -:101230001E0608950C94E002E82FF0E0E25BFE4FFA -:101240008081E82FEF70F0E082958F7021E030E030 -:10125000A90102C0440F551F8A95E2F740A30895E3 -:101260000F931F93CF93DF9385B7806885BF85B7B2 -:10127000806885BFC3E0D0E001E010E0FE01E25BE2 -:10128000FE4F8081E82FEF70F0E021A182958F70F2 -:10129000A80102C0440F551F8A95E2F7CA01822BAC -:1012A00081A38C2F0E941C09219740F78BE090E0CE -:1012B00061E070E0FC01EE5BFE4F2081E22FEF70F9 -:1012C000F0E042A122952F70DB0102C0AA0FBB1FE4 -:1012D0002A95E2F79D01242B22A3019758F7DF916D -:1012E000CF911F910F910C949C03EF92FF920F935B -:1012F0001F93CF93DF9300E212E0C3E0EE24E39468 -:10130000F12CD5E08C2F0E941C098BE090E040E08E -:1013100050E0FC01EE5BFE4F6081E62FEF70F0E0E5 -:1013200020A130E062956F7002C0359527956A95CF -:10133000E2F720FD09C09701082E02C0220F331FDB -:101340000A94E2F7422B532B019718F7F801929178 -:1013500082918F018417950721F051834083D093A8 -:1013600005018C2F0E941C09C15060F68091050177 -:1013700087FD2CC08150809305018F3F39F08FE9A4 -:101380009FE00197F1F700C0000020C080911E028D -:1013900090911F02909327028093260280911C0255 -:1013A00090911D02909325028093240280911A024D -:1013B00090911B0290932302809322028091180245 -:1013C0009091190290932102809320020E949E0323 -:1013D00081E0DF91CF911F910F91FF90EF900895E1 -:1013E000E82FF0E0EE0FFF1FE05EFD4F808191815E -:1013F000089508950F931F93CF9308E212E0C0E081 -:10140000F801929182918F010E946022C80FF2E050 -:1014100000321F07A9F78C2FCF911F910F910895CC -:101420000E94A423811102C00E9480230E94C9232C -:10143000809307033E9A809171008D7F80937100A5 -:1014400082E0809390008AE18093910081E0809314 -:101450002A02089580912A02811102C00E94100A76 -:1014600010927A0210927902809171008D7F8093A0 -:101470007100809190008F738093900010923C02D5 -:1014800010923B0210927302109274021092750235 -:10149000109276021092720210927102E1E5F2E06F -:1014A000A1E4B2E011921192119211921D921D923B -:1014B00082E0E137F807B1F70895CF92DF92EF921B -:1014C000FF920F931F93CF93DF9320913B02222330 -:1014D00009F484C06B017C0180912A02811102C051 -:1014E0000E94100A01E712E0C7E0D0E0A7019601D0 -:1014F000F80192918291729162918F010E94142958 -:10150000811131C0FE01EE0FFF1FEE0FFF1FEF5ADA -:10151000FD4F1082118212821382DE01AA0FBB1FBF -:10152000AF5BBD4F11961C921E92C730D105E9F0FA -:1015300021964481558166817781408351836283FE -:101540007383148215821682178212968D919C9154 -:10155000139711969C938E9313961C921E9212973A -:1015600034961296E2CF219708F6809179029091F5 -:101570007A02019797FD05C090937A0280937902D1 -:1015800004C010927A0210927902809179029091AF -:101590007A0220917702309178022817390724F0D7 -:1015A0001092780210927702892BC1F48091710019 -:1015B0008D7F80937100809190008F738093900055 -:1015C00010927302109274021092750210927602B9 -:1015D000109272021092710210923B02DF91CF9131 -:1015E0001F910F91FF90EF90DF90CF9008951F9281 -:1015F0000F920FB60F9211244F925F926F927F92CB -:101600008F929F92AF92BF92CF92DF92EF92FF9212 -:101610002F933F934F935F936F937F938F939F93FA -:10162000AF93BF93CF93DF93EF93FF9380913B02F0 -:10163000882309F49BC1C0917902D0917A021C16CB -:101640001D060CF093C140902B0250902C0260902C -:101650002D0270902E0220E030E0A901C301B201FA -:101660000E94BF2A18160CF065C0C130D10509F4DC -:1016700052C08091770290917802BE010E94912C15 -:101680007C01909378028093770280903D02909045 -:101690003E02A0903F02B090400220E030E040E8DF -:1016A0005FE3C501B4010E94B02860933D027093CE -:1016B0003E0280933F0290934002F701EE0FFF1F1E -:1016C000EE0FFF1FEF5AFD4FA30192016081718160 -:1016D000828193810E94182920E030E040E05EE39F -:1016E0000E94C32A9B01AC01C501B4010E94BF2A1C -:1016F00018168CF4C7010196BE010E94912C90939C -:1017000078028093770210923D0210923E0210926E -:101710003F0210924002E0917702F0917802EE0FC2 -:10172000FF1FEE0FFF1FEF5AFD4F60817181828115 -:101730009381D0C0C0907302D0907402E090750283 -:10174000F090760220E030E0A901C701B6010E94C6 -:1017500014292197882309F4A2C0FE01EE0FFF1F70 -:10176000EE0FFF1FEF5AFD4F80809180A280B38063 -:10177000A5019401C701B6010E94142987FF31C059 -:10178000A501940160E070E08CED93EC0E941829B3 -:1017900020E030E040E451E40E94182920E030E0ED -:1017A00040E05FE30E94C32A9B01AC0160E070E06F -:1017B00080E090E40E94262B9B01AC01C501B4019E -:1017C0000E94C32A9B01AC01C701B6010E941429E3 -:1017D00087FF07C0A701960160E070E08CED93E4FD -:1017E00039C0A5019401C701B6010E94BF2A18168D -:1017F0000CF055C0A501940160E070E08CED93E41D -:101800000E94182920E030E040E451E40E941829A9 -:1018100020E030E040E05FE30E94C32A9B01AC017E -:1018200060E070E080E090E40E94262B9B01AC0118 -:10183000C501B4010E94C32A9B01AC01C701B601D6 -:101840000E94BF2A18165CF5A701960160E070E0BF -:101850008CED93EC0E94182920E030E040E451E444 -:101860000E94182920E030E040E05FE30E94C32A94 -:101870009B01AC0160E070E080E090E40E94262BC8 -:101880009B01AC01C701B6010E94C32A6093730299 -:1018900070937402809375029093760213C0FE01D8 -:1018A000EE0FFF1FEE0FFF1FEF5AFD4F808191815A -:1018B000A281B3818093730290937402A093750206 -:1018C000B0937602609173027091740280917502F8 -:1018D0009091760220912802309129022F3F4FEFFC -:1018E000340731F02F5F3F4F3093290220932802B5 -:1018F0000E949F0E6B017C0120E034E244EF51E432 -:101900000E94142987FF08C086EFC82E88E2D82ECF -:1019100084EFE82E81E4F82E20E030E040E051E44E -:10192000C701B6010E94C32A9B01AC0160E074E2CA -:1019300084E79BE40E9418296B017C010E948529A1 -:1019400070939700609396002091060130910701F3 -:101950004091080150910901C701B6010E94C32AB4 -:101960000E948529709399006093980080913C02B1 -:10197000882309F433C1C0903702D0903802E09038 -:101980003902F0903A0220E030E0A901C701B60127 -:101990000E94BF2A1816D4F580912802909129023E -:1019A0008F3F2FEF920729F00196909329028093A1 -:1019B0002802C701B6010E949F0E20E030E040E0FF -:1019C00051E40E94C32A9B01AC0160E074E284E709 -:1019D0009BE40E9418296B017C010E948529709369 -:1019E0009700609396002091060130910701409185 -:1019F000080150910901C701B6010E94C32A0E9443 -:101A00008529709399006093980008C01092970000 -:101A100010929600109299001092980060913102F5 -:101A2000709132026F5F7F4F709332026093310288 -:101A3000209196003091970080E090E0232BF1F008 -:101A4000C0919600D09197000E94B1296B017C0152 -:101A5000BE0180E090E00E94B1299B01AC01609141 -:101A600033027091340280913502909136020E94C7 -:101A7000182920E03FEF4FE757E410C00E94B1293A -:101A80006B017C0120E030EE4FEF54E460913302B3 -:101A90007091340280913502909136020E94C32ADF -:101AA0009B01AC01C701B6010E94BF2A87FD96C009 -:101AB00080912F028F5F80932F0290E0209103038B -:101AC0003091040382179307A0F080910E038823BE -:101AD00019F010922F020DC0809171008D7F8093BC -:101AE0007100809190008F738093900010923C025F -:101AF0007DC080913002C0912F02811128C0C0901A -:101B00000803D0900903E0900A03F0900B0320E053 -:101B100030E0A901C701B6010E94BF2A1816BCF423 -:101B200081E08093300210923702109238021092B6 -:101B3000390210923A02C0923302D0923402E092FB -:101B40003502F0923602C150C0932F0243C010926A -:101B500030021092290210922802E0910503F091C0 -:101B6000060348E0C49FE00DF11D1124808191819E -:101B7000A281B3818093370290933802A0933902F7 -:101B8000B0933A0220E030E040E85EE36481758182 -:101B9000868197810E94C32A6B017C0180910A0192 -:101BA000682F70E080E090E00E94B12920E030E0F2 -:101BB00048EC52E40E9418299B01AC01C701B60110 -:101BC0000E94C32A609333027093340280933502DB -:101BD00090933602109232021092310280910703E4 -:101BE00080FD04C010923C0210923B02FF91EF91E5 -:101BF000DF91CF91BF91AF919F918F917F916F9125 -:101C00005F914F913F912F91FF90EF90DF90CF9098 -:101C1000BF90AF909F908F907F906F905F904F900C -:101C20000F900FBE0F901F901895CF92DF92EF92FA -:101C3000FF92CF93DF936B017C01EA0180912A022E -:101C4000811102C00E94100A8091070380FF46C0E4 -:101C50008091790290917A0208970CF03FC08091B0 -:101C600071008D7F8093710080913C0281110E94F0 -:101C70002A0A81E080933B021092290210922802E6 -:101C800020E030E0A901C701B6010E94BF2A181662 -:101C9000DCF48091790290917A02FC01EE0FFF1F33 -:101CA000EE0FFF1FEF5AFD4FC082D182E282F38216 -:101CB000FC01EE0FFF1FEF5BFD4FD183C083019648 -:101CC00090937A0280937902809171008260809370 -:101CD000710080919000806880939000DF91CF9197 -:101CE000FF90EF90DF90CF9008958091070381706F -:101CF0000895809107038160809307030E94CD239C -:101D00000C94F803809107038E7F809307030C9453 -:101D1000CD2380917B0290E0019666E070E00E9406 -:101D2000912C80937B02089580917B0290E0019733 -:101D300066E070E00E94912C80937B0208958F9260 -:101D40009F92AF92BF92CF92DF92EF92FF920F934A -:101D50001F93CF93DF936B017C01C0912802D09138 -:101D60002902BE0180E090E00E94B1294B015C0194 -:101D7000A701960160E070E08CE594E40E941829C8 -:101D80009B01AC01C501B4010E94C32A0E948529B0 -:101D900020917B02233009F473C028F4222351F0F0 -:101DA0002130E9F02CC1243009F4A0C0253009F419 -:101DB000E0C025C180E090E0A0E0BFE38093060191 -:101DC00090930701A0930801B093090110922B0290 -:101DD00010922C0210922D0210922E0210C110921D -:101DE0002B0210922C0210922D0210922E026431BE -:101DF000710540F46A30710560F520E030E040E89C -:101E00005EE32BC0693C710508F0AAC080E090E059 -:101E10000E94B12920E030E040EA51E40E94AF285E -:101E200020E030E044E353E40E9418299B01AC0118 -:101E30000E94C32A20E030E040E05EE30E94C32A13 -:101E40009B01AC0160E070E080E09EE30E94AF285F -:101E500044C020E030E040E05FE3C701B6010E94EB -:101E6000C32A6B017C0180E090E0A0E0BEE3809398 -:101E7000060190930701A0930801B0930901BFC028 -:101E800010922B0210922C0210922D0210922E0210 -:101E90004AE0469F9001479F300D1124C90168EB2D -:101EA0007BE00E947D2CBC016C5D754077FF03C018 -:101EB000719561957109882777FD8095982F0E940B -:101EC000B3292EE333EC4EE259E30E94C32A20E00B -:101ED00030E040EC5EE30E94B0286093060170930E -:101EE0000701809308019093090189C010922B0289 -:101EF00010922C0210922D0210922E02CE018370AD -:101F00009927892BE1F0BE016170772780E090E08E -:101F10000E94B12920E030E040E05EE30E94C32A45 -:101F200020E030E040E45FE30E94B02860930601C7 -:101F30007093070180930801909309010CC080E021 -:101F400090E0A0E0BFE38093060190930701A09387 -:101F50000801B0930901C770DD27CD2B09F04FC0F0 -:101F600010920601109207011092080110920901C7 -:101F700046C010922B0210922C0210922D02109249 -:101F80002E0200E010E020E03FE3009306011093F2 -:101F9000070120930801309309016739710578F131 -:101FA00080E090E00E94B12920E030E047E153E476 -:101FB0000E94AF2820E030E04AE754E40E9418294C -:101FC00020E030E048E452E40E94C32A20E030E000 -:101FD00040EA51E40E94F5290E948029660F771F8C -:101FE000660F771FFB01EE5AFE4F2081318142813F -:101FF0005381C701B6010E94C32A6B017C01C7014E -:10200000B601DF91CF911F910F91FF90EF90DF907C -:10201000CF90BF90AF909F908F90089580918C0249 -:102020000895CF93DF9300D01F92CDB7DEB79C0108 -:1020300080911303843019F593E099833B832A83BD -:102040009093E9008FEF9091E800815095FD06C0D4 -:1020500095ED9A95F1F700008111F5CF8091E80098 -:1020600085FF0DC040E050E063E070E0CE010196D6 -:102070000E9472128091E8008E778093E8000F90A2 -:102080000F900F90DF91CF910895CF93DF9300D001 -:102090001F92CDB7DEB720911303243021F522E043 -:1020A00029839B838A8383E08093E9008FEF90915B -:1020B000E800815095FD06C095ED9A95F1F7000076 -:1020C0008111F5CF8091E80085FF0DC040E050E020 -:1020D00063E070E0CE0101960E9472128091E800E8 -:1020E0008E778093E8000F900F900F90DF91CF9143 -:1020F0000895209113032430F1F422E02093E900A5 -:102100002FEF3091E800215035FD06C035ED3A95AE -:10211000F1F700002111F5CF2091E80025FF0BC059 -:1021200040E050E065E070E00E9472128091E800AB -:102130008E778093E8000895CF93DF93EC01909120 -:102140001303943009F046C0809115018823D9F01B -:10215000809116018823B9F09093E9008FEF909158 -:10216000E800815095FD06C095E19A95F1F70000D1 -:102170008111F5CF8091E80085FF2CC040E050E050 -:1021800060E170E017C081E08093E9008FEF9091EB -:10219000E800815095FD06C095ED9A95F1F7000095 -:1021A0008111F5CF8091E80085FF14C040E050E038 -:1021B00068E070E0CE010E9472128091E8008E7794 -:1021C0008093E80080E1FE01ACE7B2E001900D925F -:1021D0008A95E1F7DF91CF910895809112038111E3 -:1021E00009C00E9407140E9464148091E200846078 -:1021F0008093E200089510921203089508950895BF -:102200000C94AB2242E061EC81E00E94811342E039 -:1022100061EC82E00E94811342E061EC83E00E9465 -:10222000811342E161EC84E00C94811380911503E9 -:10223000833009F455C030F4813071F0823009F4F4 -:102240008EC008958A3009F47AC08B3009F460C0DA -:10225000893009F09CC020C080911403813A09F0B4 -:1022600096C08091E800877F8093E80080911803F2 -:1022700090911903892B21F460E18CE792E003C06F -:1022800060E080E090E070E00E94BD128091E80084 -:102290008B778093E800089580911403813209F0D0 -:1022A00076C08091180390911903009719F0039755 -:1022B00009F06DC08091E800877F8093E8008091ED -:1022C000E80082FD05C0809113038111F8CF5FC043 -:1022D0008091F10080938C028091E8008B7753C04D -:1022E00080911403813A09F052C0809118039091B3 -:1022F0001903892B09F04BC08091E800877F8093F8 -:10230000E8008091E80080FFFCCF8091150136C085 -:10231000809114038132D9F58091180390911903AB -:10232000892BA9F58091E800877F8093E8000E94BF -:10233000B61380911603809315010C94EC1B8091C9 -:102340001403813221F58091E800877F8093E800B3 -:102350000E94B6138091170380938D020895809197 -:102360001403813AA1F48091E800877F8093E8000C -:102370008091E80080FFFCCF80918D028093F10076 -:102380008091E8008E778093E8000C94B61308954E -:1023900084B7877F84BF88E10FB6F894809360008C -:1023A000109260000FBE90E080E80FB6F894809322 -:1023B0006100909361000FBE0E9459170E9407149C -:1023C0000E9464148091E20084608093E20078941B -:1023D0000E94EA160E945B178BE091E00E940517AD -:1023E00080911303853069F40E946C22809111035F -:1023F0008823B1F30E949A22882391F30E945C12F1 -:10240000EFCF0E946317ECCF292F332723303105FC -:10241000C9F064F42130310581F02230310509F032 -:1024200043C08DE690E028EA33E042C02132310516 -:10243000F1F02232310541F137C082E190E025E12F -:1024400034E036C099278130910541F08230910502 -:1024500041F0892B49F5E4EAF3E005C0E6E7F3E053 -:1024600002C0ECE4F3E0849190E09F0121C064306D -:10247000D8F4E62FF0E0EE0FFF1FE255FE4F20816B -:10248000318189E090E014C0643070F470E0FB01A9 -:10249000EE0FFF1FEA55FE4F20813181FB01EE5503 -:1024A000FE4F808190E004C080E090E020E030E0CA -:1024B000FA0131832083089580E189BD82E189BDDD -:1024C00009B400FEFDCF8091D8008F7D8093D800A5 -:1024D0008091E00082608093E0008091E00081FDC7 -:1024E000FCCF0895CF92DF92EF92FF920F931F934C -:1024F000CF93DF93EC018B016A010E94D513811108 -:1025000033C0C114D10439F0F60180819181081BD8 -:10251000190BC80FD91FE12CF12C0115110519F168 -:102520008091E80085FD16C08091E8008E77809349 -:10253000E800C114D10449F0F60180819181E80ED0 -:10254000F91EF182E08285E00FC00E94D513882336 -:1025500021F30AC089918093F10001501109FFEF26 -:10256000EF1AFF0ADACF80E0DF91CF911F910F9130 -:10257000FF90EF90DF90CF90089520911A03309153 -:102580001B032617370748F06115710539F42091B0 -:10259000E8002E772093E80001C0B90140E0611502 -:1025A0007105A9F120911303222309F443C02530BA -:1025B00009F442C02091E80023FD40C02091E800CA -:1025C00022FD32C02091E80020FFE9CF4091F300C6 -:1025D0002091F20030E0342BFC01CF016115710530 -:1025E00059F02830310540F481918093F100615019 -:1025F00071092F5F3F4FF1CF41E02830310509F0DD -:1026000040E02091E8002E772093E800C8CF4111E8 -:10261000C9CF0AC080911303882361F0853061F02F -:102620008091E80083FD0AC08091E80082FFF2CF2C -:1026300080E0089582E0089583E0089581E00895A0 -:1026400020911A0330911B032617370748F06115B4 -:10265000710539F42091E8002E772093E80001C03D -:10266000B901FC0120E06115710591F1809113031E -:10267000882309F440C0853009F43FC08091E80008 -:1026800083FD3DC08091E80082FD2FC08091E8006D -:1026900080FFE9CF2091F3008091F20090E0922B2F -:1026A0006115710559F08830910540F4249120930B -:1026B000F1003196615071090196F2CF21E008973F -:1026C00009F020E08091E8008E778093E800CBCF7E -:1026D0002111CCCF0AC080911303882361F085308B -:1026E00061F08091E80083FD0AC08091E80082FFDC -:1026F000F2CF80E0089582E0089583E0089581E0BC -:102700000895982F973058F59093E900981739F06D -:102710007091EC002091ED005091F00003C0242F47 -:10272000762F50E021FF19C03091EB003E7F3093AF -:10273000EB003091ED003D7F3093ED003091EB00E8 -:1027400031603093EB007093EC002093ED005093D8 -:10275000F0002091EE0027FF07C09F5FD3CF8F705E -:102760008093E90081E0089580E00895809114034A -:1027700087FF11C08091E80082FD05C0809113039E -:102780008111F8CF11C08091E8008B770BC0809148 -:102790001303882349F08091E80080FFF8CF8091EF -:1027A000E8008E778093E80008952091E40030914E -:1027B000E50095E64091EC00842F817040FF22C037 -:1027C0008091E80080FD1CC080911303882391F064 -:1027D000853091F08091EB0085FD10C04091E400C0 -:1027E0005091E5004217530729F39A01915011F7D0 -:1027F00084E0089582E0089583E0089581E00895DB -:1028000080E008954091E80042FFDECF08950E94E5 -:1028100075140E947D14E0EEF0E080818160808379 -:10282000E8EDF0E080818F77808319BCA7EDB0E000 -:102830008C918E7F8C9380818F7E80831092120387 -:1028400008950F931F93CF93DF930E9475140E94F6 -:102850007D14C8EDD0E088818F7788838881806877 -:10286000888388818F7D888319BC1092130310920E -:102870000F03109211031092100300EE10E0F80104 -:1028800080818B7F808388818160888342E060E0E3 -:1028900080E00E948113E1EEF0E080818E7F8083F2 -:1028A000E2EEF0E0808181608083808188608083B7 -:1028B000F80180818E7F8083888180618883DF91A9 -:1028C000CF911F910F910895E8EDF0E080818F7E08 -:1028D0008083E7EDF0E080818160808384E082BFC7 -:1028E00081E0809312030C942114E8EDF0E08081E4 -:1028F0008E7F80831092E20008951092DA00109289 -:10290000E10008951F920F920FB60F9211242F939A -:102910003F934F935F936F937F938F939F93AF9367 -:10292000BF93EF93FF938091E10082FF0BC08091F2 -:10293000E20082FF07C08091E1008B7F8093E1007D -:102940000E94E9168091DA0080FF1FC08091D800B4 -:1029500080FF1BC08091DA008E7F8093DA00809127 -:10296000D90080FF0DC080E189BD82E189BD09B435 -:1029700000FEFDCF81E0809313030E94ED1005C09F -:1029800019BC109213030E94FB108091E10080FF9C -:1029900019C08091E20080FF15C08091E2008E7F17 -:1029A0008093E2008091E20080618093E200809158 -:1029B000D80080628093D80019BC85E0809313030F -:1029C0000E94FF108091E10084FF30C08091E200FE -:1029D00084FF2CC080E189BD82E189BD09B400FE7D -:1029E000FDCF8091D8008F7D8093D8008091E10049 -:1029F0008F7E8093E1008091E2008F7E8093E200E1 -:102A00008091E20081608093E20080910F0388232F -:102A100011F084E007C08091E30087FD02C081E0EF -:102A200001C083E0809313030E9400118091E100B4 -:102A300083FF29C08091E20083FF25C08091E100DF -:102A4000877F8093E10082E08093130310920F034D -:102A50008091E1008E7F8093E1008091E2008E7F83 -:102A60008093E2008091E20080618093E20042E086 -:102A700060E080E00E9481138091F0008860809384 -:102A8000F0000E94FE10FF91EF91BF91AF919F91D6 -:102A90008F917F916F915F914F913F912F910F9007 -:102AA0000FBE0F901F9018951F920F920FB60F92A6 -:102AB00011242F933F934F935F936F937F938F9343 -:102AC0009F93AF93BF93CF93DF93EF93FF93C09107 -:102AD000E900CF708091EC00D82FD17080FDD0E854 -:102AE0001092E9008091F000877F8093F000789445 -:102AF0000E9498151092E9008091F0008860809300 -:102B0000F000CD2BCF70C093E900FF91EF91DF91E2 -:102B1000CF91BF91AF919F918F917F916F915F9175 -:102B20004F913F912F910F900FBE0F901F901895CE -:102B30001F93CF93DF93CDB7DEB7AA970FB6F89464 -:102B4000DEBF0FBECDBFE4E1F3E088E08E0F9091D1 -:102B5000F10091938E13FBCF0E9416118091E80033 -:102B600083FF1FC18091140390911503492F50E0FA -:102B70004A30510508F015C1FA01EA5AFF4F0C948A -:102B8000A52C803881F0823809F00BC180911803A0 -:102B90008F708093E9008091EB0085FB882780F996 -:102BA0001092E90006C080911003909111039111D9 -:102BB00082609091E800977F9093E8008093F10005 -:102BC0001092F100C8C0282F2D7F09F0EAC0882399 -:102BD00019F0823061F0E5C080911603813009F070 -:102BE000E0C0933009F080E0809311032BC0809106 -:102BF0001603811127C0809118038F7009F4D1C08A -:102C00008093E9002091EB0020FF1CC0933021F459 -:102C10008091EB00806214C09091EB0090619093E2 -:102C2000EB0021E030E0A90102C0440F551F8A9556 -:102C3000E2F74093EA001092EA008091EB0088608E -:102C40008093EB001092E9008091E800877F86C0B6 -:102C50008111A7C0109116031F778091E30080783F -:102C6000812B8093E3008091E800877F8093E800C8 -:102C70000E94B6138091E80080FFFCCF8091E300B2 -:102C800080688093E300111102C082E001C083E0FC -:102C90008093130386C08058823008F082C08091F0 -:102CA0001603909117038C3D53E0950779F583E067 -:102CB0008A838AE289834FB7F894DE01139620E075 -:102CC0003EE051E2E32FF0E050935700E49120FF03 -:102CD00003C0E295EF703F5FEF708E2F90E0EA3017 -:102CE00010F0C79601C0C0968D939D932F5F24313D -:102CF00049F74FBF8091E800877F8093E8006AE240 -:102D000070E0CE0101960E94BD1214C0AE014F5F6B -:102D10005F4F609118030E940412BC01009709F4F0 -:102D200040C09091E800977F9093E80089819A8154 -:102D30000E9420138091E8008B778093E80031C0D7 -:102D4000803879F58091E800877F8093E800809152 -:102D50000F038093F1008091E8008E778093E80064 -:102D60000E94B6131EC081111CC0909116039230B0 -:102D7000C0F48091E800877F8093E80090930F0370 -:102D80000E94B61380910F03811106C08091E30069 -:102D900087FD02C081E001C084E0809313030E949C -:102DA00002118091E80083FF0AC08091E800877FCC -:102DB0008093E8008091EB0080628093EB00AA96FC -:102DC0000FB6F894DEBF0FBECDBFDF91CF911F913C -:102DD00008950895CF93809113038823A1F0C091A3 -:102DE000E900CF709091EC00892F817090FD80E810 -:102DF000C82B1092E9008091E80083FD0E9498158D -:102E0000CF70C093E900CF9108959093930280937F -:102E100092020895E0919202F0919302309721F08E -:102E20000190F081E02D099480E00895E0919202F4 -:102E3000F0919302309721F00280F381E02D099404 -:102E40000895E0919202F0919302309721F004806E -:102E5000F581E02D0994089520919002309191021E -:102E60008217930771F09093910280939002E09102 -:102E70009202F0919302309721F00680F781E02DC5 -:102E80000994089520918E0230918F028217930742 -:102E900071F090938F0280938E02E0919202F091F4 -:102EA0009302309721F00084F185E02D0994089574 -:102EB00008950C9458170E94DF220E9430090E9446 -:102EC00065230C9414285F926F927F928F929F9249 -:102ED000AF92BF92CF92DF92EF92FF920F931F9328 -:102EE000CF93DF9300D000D01F92CDB7DEB70E9402 -:102EF00075099DE9C92E92E0D92E03E010E0AA24BD -:102F0000A394B12C502E802F0E94F0094C01F601A1 -:102F1000729062906F016826792661147104A1F4A1 -:102F20000150110978F78FEF89838A831B820E94F1 -:102F3000E8228160782F9D838C8349815A816B813F -:102F40008D810E94131838C08091F20281FD0E9489 -:102F5000F9092BE030E07501022E02C0EE0CFF1CD7 -:102F60000A94E2F7C70186219721892B09F1298369 -:102F70005A828E209F2091E0892809F490E09B835B -:102F80000E94E8228160782F9D838C8349815A8139 -:102F90006B818D810E941318000F111FF801EB56F1 -:102FA000FD4F80819181E826F926F182E08204C0FC -:102FB0002150310980F6B4CF0E944C251091940223 -:102FC0000E940A171817D1F00E940A1780939402E2 -:102FD0000F900F900F900F900F90DF91CF911F9156 -:102FE0000F91FF90EF90DF90CF90BF90AF909F90A8 -:102FF0008F907F906F905F900C941A090F900F90B4 -:103000000F900F900F90DF91CF911F910F91FF9034 -:10301000EF90DF90CF90BF90AF909F908F907F9078 -:103020006F905F900895CF93DF93CDB7DEB72B9766 -:103030000FB6F894DEBF0FBECDBF4F8358876987A8 -:103040007A878B87DE01119686E0FD0111928A95C1 -:10305000E9F785E0FE01379601900D928A95E1F738 -:1030600049815A816B817C818D819E810E948A1E5B -:103070002B960FB6F894DEBF0FBECDBFDF91CF9178 -:103080000895CF93882309F4C2C0C82F823859F419 -:103090000E940A1781FDBBC089E30E9464210E943F -:1030A000312289E30CC0833879F40E940A1780FD2D -:1030B000AEC083E50E9464210E94312283E50E9414 -:1030C000A621CF910C943122843859F40E940A171A -:1030D00082FD9DC087E40E9464210E94312287E422 -:1030E000EECF8CEF8C0F813A48F48C2F0E947C2716 -:1030F00081118DC08C2F0E946421E3CF80E28C0F60 -:10310000883048F4C77081E001C0880FCA95EAF79B -:103110000E94EA21D6CF8BE58C0F833078F4C53A34 -:1031200029F0C63A31F083E890E005C081E890E0EC -:1031300002C082E890E0CF910C942C1788E58C0FA8 -:10314000833108F064C0C83A39F1C93A41F1CA3A4A -:1031500049F1CB3A51F1CC3A59F1CD3A61F1C03B4A -:1031600069F1CE3A71F1CF3A79F1C13B81F1C23BBD -:1031700089F1C33B91F1C43B99F1C53BA1F1C63B39 -:10318000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B99 -:10319000C9F180E090E038C082EE90E035C089EE61 -:1031A00090E032C08AEE90E02FC085EB90E02CC01A -:1031B00086EB90E029C087EB90E026C08CEC90E095 -:1031C00023C08DEC90E020C083E891E01DC08AE828 -:1031D00091E01AC082E991E017C084E991E014C03F -:1031E00081E292E011C083E292E00EC084E292E0BC -:1031F0000BC085E292E008C086E292E005C087E25B -:1032000092E002C08AE292E0CF910C944217CF91F3 -:103210000895882309F44BC0823859F40E940A1794 -:1032200081FF45C089E30E9464210E94312289E325 -:103230000CC0833871F40E940A1780FF38C083E500 -:103240000E9464210E94312283E50E94A6210C94F1 -:103250003122843859F40E940A1782FF28C087E47B -:103260000E9464210E94312287E4EFCF9CEF980FE7 -:10327000913A58F390E2980F983050F4877091E0AB -:1032800001C0990F8A95EAF7892F0E94F021DFCFBC -:103290009BE5980F933020F480E090E00C942C177D -:1032A000885A833120F480E090E00C94421708950E -:1032B000882321F00E94EA210C943122089588236A -:1032C00021F00E94F0210C94312208957F928F9278 -:1032D0009F92AF92BF92CF92DF92EF92FF920F93A5 -:1032E0001F93CF93DF931F92CDB7DEB77C01C62E1D -:1032F000772EFC01058102950F70128111110E9439 -:1033000007220E945D21882379F0112369F080E271 -:103310008C0D883048F082E00E9446210E945D2199 -:1033200091E0D82ED92601C0D12CE72DE295EF707F -:10333000F0E0E05AFF4F0C94A52C872D807F072DDD -:103340000F70882311F00295007F112389F000236C -:1033500009F499C180E28C0D883020F4802F0E94FE -:10336000EA2103C0802F0E94FA210E9431228BC1E2 -:103370008C2D0E940919002309F4C3C180E28C0D31 -:10338000883020F4802F0E94F02103C0802F0E94FB -:1033900000220E943122B5C1872D807F972D9F701A -:1033A000803211F4892F03C0892F8295807FCC2031 -:1033B00021F0F1E0CF16A1F01DC0112339F0002358 -:1033C00019F1013009F50E941A229BC1002319F05E -:1033D000013009F496C189830E941D22898110C1A0 -:1033E000112321F0063008F08CC10EC0053008F022 -:1033F00088C106C1112359F0002331F0F7019581EE -:1034000090FF41C19F7095830E9458197AC1002393 -:1034100009F4F6C03EC1872D86958695837090E0AD -:10342000009719F0019761F06CC1112321F08C2DE8 -:10343000972D937002C080E090E00E942C1761C12C -:10344000112321F08C2D972D937002C080E090E025 -:103450000E94421756C18C2D112319F00E9454244A -:1034600002C00E94BC240E9441254BC1872D83705D -:1034700009F052C0111145C18C2D82958695877037 -:10348000880F880F9C2D9F70892E912CA12CB12C18 -:10349000082E04C0880C991CAA1CBB1C0A94D2F7E5 -:1034A000C4FE14C00FE010E020E030E0B901A80134 -:1034B00004C0440F551F661F771F8A95D2F7CB01B2 -:1034C000BA01609570958095909503C060E070E0BA -:1034D000CB01272D26952695237030E0223031052B -:1034E00069F02330310589F0682979298A299B29D7 -:1034F0002130310571F00E94D21F03C1682979295A -:103500008A299B290E94EE1FFCC00E94D21FC50180 -:10351000B4010E94B61FF5C0112319F0872D8170E8 -:1035200001C08695882309F4ECC08C2D8295869580 -:103530008770880F880F9C2D9F70892E912CA12C4D -:10354000B12C082E04C0880C991CAA1CBB1C0A9420 -:10355000D2F7C4FE14C00FE010E020E030E0B90163 -:10356000A80104C0440F551F661F771F8A95D2F724 -:10357000CB01BA01609570958095909503C060E08D -:1035800070E0CB01272D269526952370422F50E021 -:103590004230510569F04330510589F06829792995 -:1035A0008A299B294130510571F00E94AC20A9C0A5 -:1035B000682979298A299B290E94C820A2C00E94D3 -:1035C000AC20C501B4010E9490209BC08C2D90E0DE -:1035D000FC01E05EF109E531F10508F050C0E05969 -:1035E000FF4F0C94A52C0C2D0F70872D8F7111237C -:1035F00021F00E942920802F07CF0E944A20802F8F -:103600000E945F197EC0112341F0053008F079C097 -:10361000872D8F710E946F2074C0063008F071C032 -:10362000F7CF112339F0872D8F710E94292069C0AF -:103630001123C9F3872D8F710E944A2062C0112384 -:1036400029F0872D8F710E9414205BC00E940A20F0 -:1036500058C0112351F0172D1F71812F0E9429206E -:1036600063E0812F0E943D214CC081E00E944621F1 -:10367000023008F446C082E00E94462142C0112375 -:1036800031F0002381F28C2D0E9441183AC00023B2 -:1036900089F28C2D0E94091934C0472D4F706C2D72 -:1036A000C7010E9485030E942E1F2BC0111129C043 -:1036B000472D4F7050E042305105B9F04CF44115A0 -:1036C000510581F041305105E1F40E943C2819C0B8 -:1036D0004330510569F04430510599F48C2D0E9416 -:1036E0008E280FC00E9425280CC00E94582809C0AF -:1036F0000E946B2806C0472D4F706C2DC7010E9499 -:10370000FB05DD20F9F00E94392180FD1BC0F70187 -:1037100012820E9433210E942920C7010E94B11BFE -:103720000E9433210F90DF91CF911F910F91FF9055 -:10373000EF90DF90CF90BF90AF909F908F907F9051 -:103740000C944A200F90DF91CF911F910F91FF9021 -:10375000EF90DF90CF90BF90AF909F908F907F9031 -:1037600008950F931F93CF93DF93EC018881998184 -:103770002B813C81232BB9F09F3F11F48F3F99F0AF -:10378000CE010E94FA03882371F0688179818A81D1 -:103790000E942F218C010E94E4200E94AB1FB801DF -:1037A000CE010E946619DF91CF911F910F9108956C -:1037B0000E9407220E9417220E94DC210E943122CF -:1037C0000E94F2250E94412580E090E00E942C1783 -:1037D00080E090E00C9442170E94F7210C94D81BD3 -:1037E0000E942421292F22952F7030E02C303105A2 -:1037F0004CF42A3031056CF4225031092230310565 -:10380000A8F407C02C30310569F02F30310551F094 -:103810000DC0803F69F018F4803E40F409C0843F39 -:1038200029F406C093FB882780F9089580E0089565 -:1038300081E00895CF93DF9300D000D01F92CDB7E1 -:10384000DEB70F900F900F900F900F90DF91CF91F8 -:103850000895CF93DF9300D000D000D0CDB7DEB76E -:1038600026960FB6F894DEBF0FBECDBFDF91CF9185 -:1038700008951F93CF93DF93C0919D0216E080912E -:103880009E02C81799F0D0E01C9FF0011D9FF00D1B -:103890001124E156FD4F4081518162817381848101 -:1038A00095810E94291C2196C770E9CFDF91CF91A5 -:1038B0001F9108954091CF025091D0026091D102A2 -:1038C0007091D2028091D3029091D4020C94291C61 -:1038D0008091D40282958F7009F054C08091D102FA -:1038E000882309F44FC080919D02A0919E026091AF -:1038F000CF027091D0024091D2025091D302B6E033 -:103900008A1709F43FC090E041155105C1F17F3F8E -:1039100011F46F3FA1F1B89FF001B99FF00D112490 -:10392000E156FD4F218172132AC02081621327C006 -:103930002281211124C0238134812417350710F4FA -:1039400021503109241B350B283C3105C0F420914E -:10395000D4022F7020612093D40226E0289FF0012A -:10396000299FF00D1124EC55FD4F80818F708061EF -:1039700080838FEC92E00E94B11B0C94391C01965D -:103980008770BECF0895CF92DF92EF92FF920F9390 -:103990001F93CF93DF93CDB7DEB762970FB6F8943E -:1039A000DEBF0FBECDBF8C0185E0F801DE011D96A4 -:1039B00001900D928A95E1F7D8014C9111965C9196 -:1039C000119712966C9112971396CD90DC901497E4 -:1039D0003091CF027091D0028091D2029091D302A7 -:1039E000009709F46BC17F3F19F43F3F09F466C1AA -:1039F000E090D102EE2009F4C0C02091D402C81694 -:103A0000D90628F0F601E81BF90BCF0104C0809518 -:103A100090958C0D9D1DFF24F394883C910578F0C2 -:103A2000F12C207F09F0C6C07C2DD98AC88A8989EB -:103A30000E941A1C8FEC92E00E94B11BB1C0822F31 -:103A4000807F09F046C0751314C0341312C0611191 -:103A500010C02F7020612093D4020E945A1C8FEC5A -:103A600092E00E94B11B8091D402D80115968C93EC -:103A70002EC0CD2819F15F3F11F44F3FF9F0F62E1B -:103A800061111CC080919D0220919E0236E0821738 -:103A900009F45AC090E0389FF001399FF00D1124CD -:103AA000E156FD4F7181571306C07081471303C063 -:103AB0007281711103C001968770E9CFF62E6623DB -:103AC00009F418C18091D40281608093D402F12C52 -:103AD00011C1751308C0341306C0611104C0809170 -:103AE000D402D801C3C04D875E878D859E856A8BC1 -:103AF0000E94F01B6A898823E1F16623D1F12091AD -:103B0000D402822F82958F7090E0029774F080919A -:103B1000CF029091D00298878F831986DB86CA8660 -:103B20002C87CE0107960E94B11B86E0F801AFEC0E -:103B3000B2E001900D928A95E1F70E94681C0E9404 -:103B40005A1CFF24F394D6C04D875E878D859E85D1 -:103B50000E942421292F22952F7030E02230310538 -:103B60000CF0BCC09F7009F0B6C0805E883008F4CD -:103B7000C1C0C8010E94B11BE4CFC816D90608F421 -:103B800053C0F601E81BF90BCF01883C910508F4FE -:103B900050C0F12C7C2DD98AC88A89890E941A1CB0 -:103BA000EFECF2E086E0DF011D928A95E9F70E94D2 -:103BB0005A1CA0C0751314C0341312C0611110C078 -:103BC0008091D402F8018583C8010E94B11B86E070 -:103BD000EFECF2E0DF011D928A95E9F7FE2C8AC036 -:103BE0004D875E878D859E856A8B0E94F01B6A8952 -:103BF000882309F4BECF662309F4BBCF2091D402F9 -:103C0000822F82958F7090E002970CF48ECF809176 -:103C1000CF029091D0029A8389831B82DD82CC826D -:103C20002E83CE0101967FCF809590958C0D9D1DA2 -:103C3000ACCFF62E662309F49CCF75132EC0341337 -:103C40002CC02091D40220FD1FC0822F82958F703E -:103C5000D9F0D80115962C9315978F3049F08F5FC6 -:103C6000982F9295907F822F8F70892B15968C9329 -:103C7000C8010E94B11B86E0F801AFECB2E00190F0 -:103C80000D928A95E1F793CF86E0F801AFECB2E0B0 -:103C900001900D928A95E1F72DC04D875E878D8545 -:103CA0009E850E94F01B811140CF8091D4028160DB -:103CB0008093D402C8010E94B11B1CC0662309F482 -:103CC00058CF4D875E878D859E850E94F01B882387 -:103CD00009F44FCF2ACF811148CF0CC024303105D1 -:103CE0000CF047CF9F7009F440CFF8019581907F89 -:103CF00009F03BCF8F2D62960FB6F894DEBF0FBE52 -:103D0000CDBFDF91CF911F910F91FF90EF90DF908A -:103D1000CF9008951F93CF93DF93CDB7DEB72C9745 -:103D20000FB6F894DEBF0FBECDBF4F8358876987AB -:103D30007A878B879C87CE0107960E94C31C8823B5 -:103D400069F08F8198852A853B85232BF1F19F3F70 -:103D500009F063C08F3F09F060C037C086E0FE0104 -:103D60003796DE01119601900D928A95E1F76F81E9 -:103D70007885EA85FB85309741F17F3F11F46F3FED -:103D800021F120919E0230E0C901019687709927A8 -:103D900040919D0250E08417950709F447C069835C -:103DA0007A83FD83EC8396E0929FD001939FB00DC0 -:103DB0001124A156BD4FFE01319601900D929A95A6 -:103DC000E1F780939E020E94391C16E080919D02CB -:103DD00090919E028917C1F1189FC001112481564C -:103DE0009D4F0E94C31C882379F1E0919D021E9F84 -:103DF000F0011124E156FD4F4081518162817381B0 -:103E0000848195810E94291C80919D0290E00196F9 -:103E10008770992780939D02D9CF4F8158856985F6 -:103E20007A858B859C850E94291CCFCF0E94EC1B34 -:103E300010929E0210929D02EFECF2E086E0DF010C -:103E40001D928A95E9F7C1CF2C960FB6F894DEBF84 -:103E50000FBECDBFDF91CF911F910895EF92FF92DA -:103E60000F931F93CF93DF938C01009709F46CC0DD -:103E7000F12CEE24E394E8012196F8018491843733 -:103E800040F4843008F051C0813081F0823019F163 -:103E90005BC0853709F444C0A8F19CE7980F9037C0 -:103EA00008F052C08F770E94091941C00E5F1F4F62 -:103EB000FE01C49180E28C0F883048F4C7708E2DCB -:103EC00001C0880FCA95EAF70E940A2214C08C2FFD -:103ED0000E9441182DC00E5F1F4FFE01C49180E269 -:103EE0008C0F883058F4C7708E2D01C0880FCA958A -:103EF000EAF70E9410220E9431221AC08C2F0E94E1 -:103F0000091916C00E5F1F4FFE01C491CC2381F02A -:103F10008FE99FE00197F1F700C00000C150F6CF94 -:103F20000E5F1F4FFE01F49003C00E9441188E01E6 -:103F30008F2D882309F49FCFEFE9FFE03197F1F748 -:103F400000C000008150F5CFDF91CF911F910F91FC -:103F5000FF90EF90089508956093D9027093DA026C -:103F60008093DB029093DC020C94D81B0F931F9379 -:103F70000091D9021091DA022091DB023091DC022B -:103F8000DC01CB01802B912BA22BB32B8093D90288 -:103F90009093DA02A093DB02B093DC021F910F91A1 -:103FA0000C94D81B0F931F930091D9021091DA0241 -:103FB0002091DB023091DC02DC01CB0180239123D4 -:103FC000A223B3238093D9029093DA02A093DB0259 -:103FD000B093DC021F910F910C94D81B0F931F9389 -:103FE0000091D9021091DA022091DB023091DC02BB -:103FF000DC01CB0180279127A227B3278093D90228 -:104000009093DA02A093DB02B093DC021F910F9130 -:104010000C94D81B1092D5021092D6021092D7029F -:104020001092D8020C94D81B41E050E060E070E0A0 -:1040300004C0440F551F661F771F8A95D2F740931F -:10404000D5025093D6026093D7027093D8020C9495 -:10405000D81B41E050E060E070E004C0440F551F01 -:10406000661F771F8A95D2F78091D5029091D6026C -:10407000A091D702B091D802482B592B6A2B7B2BE9 -:104080004093D5025093D6026093D7027093D80222 -:104090000C94D81B41E050E060E070E004C0440F95 -:1040A000551F661F771F8A95D2F7409550956095EA -:1040B00070958091D5029091D602A091D702B091CF -:1040C000D802482359236A237B234093D502509377 -:1040D000D6026093D7027093D8020C94D81B41E0AB -:1040E00050E060E070E004C0440F551F661F771F6A -:1040F0008A95D2F78091D5029091D602A091D702ED -:10410000B091D802482759276A277B274093D502C8 -:104110005093D6026093D7027093D8020C94D81BA8 -:104120000F931F930091D5021091D6022091D702D0 -:104130003091D802DC01CB01802B912BA22BB32B29 -:104140008093D5029093D602A093D702B093D80261 -:104150001F910F910C94D81B0F931F930091D502C0 -:104160001091D6022091D7023091D802DC01CB0108 -:1041700080239123A223B3238093D5029093D60268 -:10418000A093D702B093D8021F910F910C94D81B23 -:104190000F931F930091D5021091D6022091D70260 -:1041A0003091D802DC01CB0180279127A227B327C9 -:1041B0008093D5029093D602A093D702B093D802F1 -:1041C0001F910F910C94D81B0895CF92DF92EF921C -:1041D000FF920F931F93CF93DF938C01C090D9026E -:1041E000D090DA02E090DB02F090DC028091D50200 -:1041F0009091D602A091D702B091D802C82AD92AAC -:10420000EA2AFB2ACFE1D0E0D701C6010C2E04C078 -:10421000B695A795979587950A94D2F780FF06C023 -:10422000B8018C2F0E948008019721F4219760F734 -:1042300080E001C08C2FDF91CF911F910F91FF90F3 -:10424000EF90DF90CF900895CF93DF93EC010E9421 -:10425000E520BE010E948008DF91CF910895CB0137 -:104260000E94242108958091DD028595859585958C -:1042700008958091DD028770089598E0899F9001EC -:104280001124262B2093DD020C9429202091DD029D -:10429000809582238093DD02982F977069F430E037 -:1042A000482F552747FD50952417350729F0859548 -:1042B000859585950C944A2008959091DD0297701C -:1042C00081E009F480E0089590911501992321F08F -:1042D00090911601911109C0209117013091180198 -:1042E000F90132969FEF40E01FC0982F9695969562 -:1042F00096959F3050F5E0911701F0911801E90F64 -:10430000F11D877021E030E0A90102C0440F551F64 -:104310008A95E2F7CA019181892B818308959F3F95 -:1043200039F04F5F4E3041F051915813F8CF0DC026 -:104330005111F7CF942FF5CF9F3F39F0F901E90FD5 -:10434000F11D97FDFA9582830895089590911501C6 -:10435000992321F090911601911109C02091170124 -:1043600030911801F9013296205F3F4F1FC0982FFE -:104370009695969596959F30F0F4E0911701F091FF -:104380001801E90FF11D877021E030E0A90102C09A -:10439000440F551F8A95E2F7CA01809591818923C0 -:1043A000818308953196E217F30729F090819813DD -:1043B000F9CF1082F7CF089581E090E0E0911701E6 -:1043C000F0911801E80FF91F1082019680319105D4 -:1043D000A9F708959091F102892B8093F102089535 -:1043E00080959091F10289238093F10208951092B3 -:1043F000F10208959091F002892B8093F0020895C4 -:1044000080959091F00289238093F0020895109294 -:10441000F00208959091EF02892B8093EF020895A6 -:1044200080959091EF0289238093EF020895109276 -:10443000EF0208958093DE0208951092DE0208953F -:104440008091170190911801FC0131969C01205F29 -:104450003F4F80E0919191118F5FE217F307D1F701 -:104460000895E0911701F09118018091F102808385 -:10447000E0911701F091180190818091F002892B51 -:104480008083E0911701F091180190818091EF02F3 -:10449000892B80838091DE02882361F0E0911701EF -:1044A000F09118019081892B80830E942022811134 -:1044B0001092DE0280911701909118010C9416174A -:1044C00020E0009739F0AC01415051098423952335 -:1044D0002F5FF7CF822F089580911303843039F135 -:1044E0001092F30220E488E190E00FB6F894A895CA -:1044F000809360000FBE2093600080E00E94EC0279 -:1045000080E00E941A0983B7817F846083BF83B7EC -:10451000816083BF7894889583B78E7F83BF88E15D -:104520000FB6F89480936000109260000FBE08955B -:104530000895089580E00E94EC020E9498220E9453 -:1045400075090E9499220E94FA0991E0811101C027 -:1045500090E0892F08950E94EC1B80E00E94EC02FD -:104560000E9414280E940A170C941A091F920F9295 -:104570000FB60F9211248F939F93AF93BF938091A7 -:10458000F302811113C08091F4029091F502A09181 -:10459000F602B091F7024196A11DB11D8093F4027D -:1045A0009093F502A093F602B093F702BF91AF91FA -:1045B0009F918F910F900FBE0F901F90189582E0E2 -:1045C00084BD93E095BD9AEF97BD80936E000895EA -:1045D0002FB7F8948091F4029091F502A091F60221 -:1045E000B091F7022FBF0895CF92DF92EF92FF9222 -:1045F0000F931F932FB7F8944091F4025091F50256 -:104600006091F6027091F7022FBF6A017B01EE24E0 -:10461000FF248C0120E030E0C016D106E206F3064C -:1046200010F4415051099A01281B390BC9011F91FF -:104630000F91FF90EF90DF90CF9008951F920F920F -:104640000FB60F9211248F939F93AF93BF938091D6 -:10465000F4029091F502A091F602B091F702019652 -:10466000A11DB11D8093F4029093F502A093F60270 -:10467000B093F702BF91AF919F918F910F900FBEB2 -:104680000F901F9018950E940714F8942FEF87EA57 -:1046900091E6215080409040E1F700C0000087E0A3 -:1046A00090EBDC0180931E0390931F03A0932003E3 -:1046B000B09321039CE088E10FB6F894A89580930D -:1046C00060000FBE90936000FFCF0E94A423811171 -:1046D00002C00E9480230E94AF238093F2020E94B6 -:1046E000B72380931C0387FB882780F980931601EA -:1046F0000E94B323682F70E080E090E00C94AC1F20 -:104700006DEE7EEF80E090E00E94CB2C60E082E0D6 -:1047100090E00E94B92C60E083E090E00E94B92C08 -:1047200060E084E090E00E94B92C60E085E090E0D9 -:104730000E94B92C60E086E090E00E94B92C6FEFF7 -:1047400087E090E00C94B92C80E090E00E94B32CBC -:1047500021E08D3E9E4F09F020E0822F089582E0F7 -:1047600090E00C94AB2C83E090E00C94AB2C84E0B4 -:1047700090E00C94AB2C682F84E090E00C94B92C62 -:1047800086E090E00C94AB2C682F86E090E00C94CF -:10479000B92C87E090E00C94AB2C682F87E090E078 -:1047A0000C94B92C8091FA0280FF0BC060911C011F -:1047B00085E0689FB001112475956795759567959B -:1047C0002BC081FF09C060911C0185E0689FB0018A -:1047D00011247595679520C082FF07C060911C0168 -:1047E00085E0689FB001112417C09091FB029923C6 -:1047F000D1F060911B01961788F720911C0185E08C -:10480000289F90011124929FA001939F500D112485 -:1048100070E0CA010E94912C6038710540F4611566 -:10482000710539F002C065E070E0862F08958FE7CA -:10483000089581E008958091FA0280FF08C0609198 -:104840001A0170E0759567957595679521C081FF90 -:1048500006C060911A0170E07595679519C082FFD6 -:1048600004C060911A0170E010C09091FB0299237E -:10487000C1F0609119019617A0F780911A01899FE4 -:10488000C001112470E00E94912C6038710528F459 -:104890006115710521F0862F08958FE7089581E055 -:1048A000089561E070E0F4CF803F21F40E94D223AC -:1048B000819504C0813F29F40E94D2238093FE0297 -:1048C0000895823F21F40E94D223819504C0833F42 -:1048D00029F40E94D2238093FD020895893F19F4A0 -:1048E0000E941B2405C08A3F31F40E941B2481953D -:1048F0008093FF0208958B3F21F40E941B24819531 -:1049000004C08C3F29F40E941B2480930003089567 -:10491000843F21F48091FC02816017C0853F21F41F -:104920008091FC02826011C0863F21F48091FC02DC -:1049300084600BC0873F21F48091FC02886005C031 -:10494000883F31F48091FC0280618093FC020895DD -:104950008D3F21F48091FA0281600BC08E3F21F4DB -:104960008091FA02826005C08F3F29F48091FA029B -:1049700084608093FA020895803F39F48091FE02AA -:1049800087FF6CC01092FE0269C0813F29F48091BC -:10499000FE021816BCF362C09091FD02823F29F41A -:1049A00097FF5CC01092FD0259C0833F19F419169D -:1049B000CCF354C0893F41F48091FF0218160CF0EB -:1049C0004DC01092FF024AC08A3F29F48091FF0235 -:1049D00087FF44C0F6CF8B3F39F48091000387FFF7 -:1049E0003DC0109200033AC08C3F29F4809100032F -:1049F0001816BCF333C0843F21F48091FC028E7FF3 -:104A000017C0853F21F48091FC028D7F11C0863F45 -:104A100021F48091FC028B7F0BC0873F21F48091B1 -:104A2000FC02877F05C0883F31F48091FC028F7EB5 -:104A30008093FC0213C08D3F21F48091FA028E7F97 -:104A40000BC08E3F21F48091FA028D7F05C08F3F0D -:104A500029F48091FA028B7F8093FA028091FD0203 -:104A600081110EC08091FE0281110AC08091FF0267 -:104A7000811106C080910003811102C01092FB02D7 -:104A800008958CEF92E00E9421170E94E8229093F3 -:104A9000F9028093F80208951F93CF93DF938091DA -:104AA000F8029091F9020E94F422AC019091FB026D -:104AB000992321F020911D0130E006C020911E01B4 -:104AC0008AE0289F900111244217530708F486C0FA -:104AD0008091FD02C091FE02D091FF02109100036F -:104AE000811107C0C11176C0D11174C0111172C0FB -:104AF00075C09F3F19F09F5F9093FB02181624F436 -:104B00000E94D2238093FD028091FD0287FF05C0A1 -:104B10000E94D22381958093FD021C1624F40E94EA -:104B2000D2238093FE028091FE0287FF05C00E947F -:104B3000D22381958093FE026091FD02662339F1B4 -:104B4000C091FE02CC2319F1772767FD7095872F5E -:104B5000972F0E94B32923E333E343E35FE30E94EB -:104B6000C32A0E9480296093FD026C2F772767FD7E -:104B70007095872F972F0E94B32923E333E343E3F4 -:104B80005FE30E94C32A0E9480296093FE021D16E3 -:104B900024F40E941B248093FF028091FF0287FF70 -:104BA00005C00E941B2481958093FF02111624F4F6 -:104BB0000E941B24809300038091000387FF05C09F -:104BC0000E941B24819580930003DF91CF911F9158 -:104BD0000C9441259F3F09F08ECF96CFDF91CF9166 -:104BE0001F910895ECEFF2E085E0DF011D928A95B8 -:104BF000E9F71092FB021092FA020895833081F1D6 -:104C000028F4813059F08230D1F00895853009F4CC -:104C100049C0B8F1863009F456C0089580911E014C -:104C2000262F30E0280F311D2F3F310524F4680F67 -:104C300060931E0108958FEF80931E010895809167 -:104C40001D01262F30E0280F311D2F3F310524F4A0 -:104C5000680F60931D0108958FEF80931D010895E3 -:104C600080911C01262F30E0280F311D2F3F310588 -:104C700024F4680F60931C0108958FEF80931C014A -:104C8000089580911B01262F30E0280F311D2F3F02 -:104C9000310524F4680F60931B0108958FEF809312 -:104CA0001B01089580911A01262F30E0280F311D35 -:104CB0002F3F310524F4680F60931A0108958FEF98 -:104CC00080931A01089580911901262F30E0280F52 -:104CD000311D2F3F310524F4680F609319010895A9 -:104CE0008FEF809319010895833011F128F48130FA -:104CF00049F0823091F00895853081F120F18630BD -:104D0000C1F1089580911E01681720F4861B8093DD -:104D10001E01089510921E01089580911D016817CB -:104D200020F4861B80931D01089510921D010895A3 -:104D300080911C01681720F4861B80931C01089544 -:104D400010921C01089580911B01681720F4861BA6 -:104D500080931B01089510921B01089580911A0100 -:104D6000681720F4861B80931A01089510921A0187 -:104D7000089580911901681720F4861B809319010A -:104D800008951092190108950F931F93873208F028 -:104D900048C08E3108F08DC0803109F477C008F525 -:104DA000873009F461C068F4863009F09DC08091B5 -:104DB000F202817F8E7F8093F20281E08093020372 -:104DC00094C08B3009F489C08E3009F08DC0809179 -:104DD000F20282FB222720F991E0922790FB82F9D0 -:104DE0005EC0863109F479C060F4813109F07CC07D -:104DF0000E94EC1B9091160181E089278093160197 -:104E00006CC0893109F469C08B3109F06DC08091A3 -:104E1000F20281FB222720F991E0922790FB81F991 -:104E20003EC0883309F459C050F4893209F457C0A0 -:104E3000853309F454C0873209F451C055C0833416 -:104E400009F44DC028F48A3308F44EC0895332C0A7 -:104E5000883409F049C00E94EC1B0E942A0A0E9473 -:104E6000F1030E94432339C09091F202892F80956B -:104E7000817080FB90F929F0966098609093F2021F -:104E800034C0997F977F9093F20227C08091F202FD -:104E900083FB222720F991E0922790FB83F98093EE -:104EA000F2029923D1F08091F20281608093F202A4 -:104EB00014C08D5141E050E060E070E08A019B0138 -:104EC00004C0000F111F221F331F8A95D2F7C9019A -:104ED000B8010E94AC1F0E94EC1B81E006C061E09B -:104EE00070E080E090E0F5CF80E01F910F91089591 -:104EF00080E0089580E00895CF93C82F8091020349 -:104F0000813069F018F08230C9F184C0E091170156 -:104F1000F09118018081823209F07EC007C0E091D3 -:104F20001701F09118018081823261F48C2F0E9468 -:104F30007827811104C08C2F0E94C4261DC081E0F7 -:104F400090E01AC08C2F0E947A27811114C0C431BE -:104F500079F048F4CB3079F0C03109F061C082E0DB -:104F60008093020308C0C93219F0C83321F058C039 -:104F70001092020355C081E0817054C0C93291F192 -:104F800020F5C43179F1B0F4C73009F047C08EE1A3 -:104F900080931E0182E380931D018AE080931C01AF -:104FA00084E180931B0188E080931A0188E280935A -:104FB000190134C0CE51C63088F5EC2FF0E0EA5428 -:104FC000FE4F80818093010329C0CE34E9F020F4A4 -:104FD000CB3421F56AE013C0C13579F0C235F1F464 -:104FE00061E00DC080910103882319F01092010344 -:104FF00015C081E08093020315C061E006C0809176 -:1050000001030E94FE250AC06AE0809101030E940C -:10501000742604C01092020380E004C081E002C044 -:1050200080E0AACFCF9108950E94A423811102C0ED -:105030000E9480230E94C02380931D0380FF02C032 -:10504000869501C080E00C94EC0280911D03982F9E -:105050009695292F30E0233031054CF49F5F990F4E -:105060008170892B816080931D030E94C4238091ED -:105070001D0386950C94EC0280911D03982F969544 -:1050800091F09158990F8170892B80931D038E7F29 -:1050900091E009F490E080911D0390FB80F98093EA -:1050A0001D030E94C42380911D0386950C94EC027D -:1050B00080911D03982F909590FB80F980931D039C -:1050C0000E94C42380911D0380FF02C0869501C009 -:1050D00080E00C94EC0290911D03892F86958F5FE0 -:1050E0008F779170843028F4880F892B80931D036B -:1050F00002C090931D0380911D038E7F91E009F4FF -:1051000090E080911D0390FB80F980931D030E9425 -:10511000C42380911D0386950C94EC0220911D03FD -:10512000922F96958927982F990F822F8170892B1E -:1051300080931D038E7F91E009F490E080911D0320 -:1051400090FB80F980931D030E94C42380911D036E -:1051500086950C94EC0280911D0386950895505815 -:10516000BB27AA270ED0D1C1C2D130F0C7D120F0C1 -:1051700031F49F3F11F41EF4B7C10EF4E095E7FB44 -:105180009FC1E92FD3D180F3BA1762077307840751 -:10519000950718F071F49EF5EBC10EF4E0950B2E17 -:1051A000BA2FA02D0B01B90190010C01CA01A00179 -:1051B0001124FF27591B99F0593F50F4503E68F1D4 -:1051C0001A16F040A22F232F342F4427585FF3CF15 -:1051D000469537952795A795F0405395C9F77EF4E6 -:1051E0001F16BA0B620B730B840BBAF09150A1F02F -:1051F000FF0FBB1F661F771F881FC2F70EC0BA0FB5 -:10520000621F731F841F48F4879577956795B7953C -:10521000F7959E3F08F0B3CF9395880F08F0992734 -:10522000EE0F97958795089527D108F481E00895AA -:105230000CD06BC163D140F05AD130F021F45F3F04 -:1052400019F03EC1511195C14FC170D198F3992306 -:10525000C9F35523B1F3951B550BBB27AA2762173A -:105260007307840738F09F5F5F4F220F331F441F7F -:10527000AA1FA9F333D00E2E3AF0E0E830D09150B7 -:105280005040E695001CCAF729D0FE2F27D0660FA4 -:10529000771F881FBB1F261737074807AB07B0E8E3 -:1052A00009F0BB0B802DBF01FF2793585F4F2AF0F9 -:1052B0009E3F510568F004C15CC15F3FECF3983E2E -:1052C000DCF3869577956795B795F7959F5FC9F756 -:1052D000880F911D9695879597F90895E1E0660FDF -:1052E000771F881FBB1F621773078407BA0720F058 -:1052F000621B730B840BBA0BEE1F88F7E0950895C1 -:1053000004D06894B11135C1089518D188F09F5721 -:1053100090F0B92F9927B751A0F0D1F0660F771F01 -:10532000881F991F1AF0BA95C9F712C0B13081F0E1 -:105330001FD1B1E008951CC1672F782F8827B85F6F -:1053400039F0B93FCCF3869577956795B395D9F742 -:105350003EF490958095709561957F4F8F4F9F4F4C -:105360000895E89409C097FB3EF490958095709558 -:1053700061957F4F8F4F9F4F9923A9F0F92F96E9A1 -:10538000BB279395F695879577956795B795F11116 -:10539000F8CFFAF4BB0F11F460FF1BC06F5F7F4FB3 -:1053A0008F4F9F4F16C0882311F096E911C07723C5 -:1053B00021F09EE8872F762F05C0662371F096E8CE -:1053C000862F70E060E02AF09A95660F771F881F9D -:1053D000DAF7880F9695879597F9089588D018F091 -:1053E00011F08CD038F480C0C4C0E92F9FD0B0F346 -:1053F0005523C9F3E7FB6217730784079507A8F1E4 -:1054000099F3E92FFF2788232AF03197660F771F3A -:10541000881FDAF7952F5527442332F091505040DA -:10542000220F331F441FD2F7BB27E91BF50B621B6A -:10543000730B840BB109C1F222F4620F731F841F36 -:10544000B11D31972AF0660F771F881FBB1FEFCF62 -:10545000915050405AF041F0882332F0660F771F88 -:10546000881F91505040C1F7939530C0869577952D -:1054700067959F5FD9F7F8CF990F0008550FAA0BD2 -:10548000E0E8FEEF16161706E807F907C0F0121657 -:105490001306E407F50798F0621B730B840B950B5A -:1054A00039F40A2661F0232B242B252B21F40895AF -:1054B0000A2609F4A140A6958FEF811D811D08954C -:1054C00097F99F6780E870E060E008959F3F31F0B2 -:1054D000915020F4879577956795B795880F911D22 -:1054E0009695879597F908959FEF80EC089500248D -:1054F0000A941616170618060906089500240A9439 -:1055000012161306140605060895092E0394000CBE -:1055100011F4882352F0BB0F40F4BF2B11F460FF4D -:1055200004C06F5F7F4F8F4F9F4F089557FD905876 -:10553000440F551F59F05F3F71F04795880F97FB57 -:10554000991F61F09F3F79F0879508951216130611 -:105550001406551FF2CF4695F1DF08C01616170640 -:105560001806991FF1CF8695710561050894089575 -:10557000E894BB2766277727CB0197F908957CDF4E -:1055800008F48FEF08950BD0C0CFB1DF28F0B6DF5D -:1055900018F0952309F094CFA7CF1124EACFC6DFE6 -:1055A000A0F3959FD1F3950F50E0551F629FF00136 -:1055B000729FBB27F00DB11D639FAA27F00DB11D8F -:1055C000AA1F649F6627B00DA11D661F829F222718 -:1055D000B00DA11D621F739FB00DA11D621F839F9F -:1055E000A00D611D221F749F3327A00D611D231F75 -:1055F000849F600D211D822F762F6A2F11249F57C3 -:1056000050408AF0E1F088234AF0EE0FFF1FBB1FE5 -:10561000661F771F881F91505040A9F79E3F510584 -:1056200070F04ECFA6CF5F3FECF3983EDCF386954B -:1056300077956795B795F795E7959F5FC1F7FE2B2F -:10564000880F911D9695879597F90895FA01EE0FA9 -:10565000FF1F30962105310599F16115710561F43F -:105660008038BFE39B0749F168949038810561F069 -:105670008038BFEF9B0741F0992342F5FF3FE105DA -:105680003105210511F1E8940894E795D901AA2381 -:1056900029F4AB2FBE2FF85FD0F310C0FF5F70F47A -:1056A000A695E0F7F73950F019F0FF3A38F49F77F4 -:1056B0009F930CD00F9007FC905808953EF014CFA4 -:1056C00060E070E080E89FE308954FE79F775F9385 -:1056D0004F933F932F939ED02F913F914F915F9186 -:1056E00052DF05C019F40EF0EBCE42CFFDCE26DF1F -:1056F000C8F39638C0F707F80F92E8942BE33AEA1C -:1057000048EB5FE74EDF0F920F920F924DB75EB7F7 -:105710000F92C0D0EAE0F1E016D04F915F91EF9187 -:10572000FF91E595EE1FFF1F49F0FE57E068442703 -:10573000EE0F441FFA95E1F74195550B32D00F90CB -:1057400007FE26C00895DF93CF931F930F93FF9218 -:10575000EF92DF927B018C01689405C0DA2EEF0195 -:105760001EDFFE01E894A591259135914591559153 -:10577000AEF3EF0106DDFE019701A801DA9479F797 -:10578000DF90EF90FF900F911F91CF91DF910895DF -:105790009B01AC0160E070E080E89FE349CD90CED2 -:1057A00095CECCDEE8F39923D9F3940F511DBBF3CA -:1057B0009150504094F059F0882332F0660F771FD3 -:1057C000881F91505040C1F79E3F510544F7880F04 -:1057D000911D9695879597F908955F3FACF0983E97 -:1057E0009CF0BB27869577956795B79508F4B160CF -:1057F0009395C1F7BB0F58F711F460FFE8CF6F5FC7 -:105800007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE65 -:10581000689456CE93DEC8F39923D1F3C6F3DF9391 -:10582000CF931F930F93FF92C92FDD2788232AF070 -:105830002197660F771F881FDAF720E030E040E8F5 -:105840005FEB9FE3883920F0803E30F021968F7720 -:1058500087DCE2E3F1E003C083DCEFE5F1E073DF36 -:105860008B01BE01EC01FB2E6F5771097595771FF7 -:10587000880B990B78DD28E132E741E35FE38FDEA7 -:10588000AF2D9801AE01FF900F911F91CF91DF9145 -:1058900078DC3BCEFA01DC01AA0FBB1F9B01AC01F7 -:1058A000BF5728F422273327442750781FC0B75109 -:1058B00088F4AB2F0024469537952795011CA395B6 -:1058C000D2F3002069F0220F331F441FB395DAF39F -:1058D0000DD045CC61307105A0E88A07B94630F497 -:1058E0009B01AC016627772788279078309621F0B6 -:1058F00020833183428353830895AA1BBB1B51E14C -:1059000007C0AA1FBB1FA617B70710F0A61BB70B2F -:10591000881F991F5A95A9F780959095BC01CD01D4 -:10592000089597FB072E16F4009407D077FD09D051 -:105930000E947D2C07FC05D03EF4909581959F4FE9 -:105940000895709561957F4F0895EE0FFF1F0590A4 -:10595000F491E02D0994F999FECF92BD81BDF89A9A -:10596000992780B50895A8E1B0E042E050E00C949A -:10597000D32C262FF999FECF92BD81BDF89A0197BD -:1059800000B4021639F01FBA20BD0FB6F894FA9A87 -:10599000F99A0FBE08950196272F0E94BA2C0C94F5 -:1059A000B92CDC01CB01FC01F999FECF06C0F2BD98 -:1059B000E1BDF89A319600B40D9241505040B8F7CD -:0659C0000895F894FFCFEA -:1059C600640007000CFF0000003F640E109C107975 -:1059D60010451011100101DF022808140A321E00BA -:1059E60002040507090B0C0E1011131517181A1CC3 -:1059F6001D1F2123242628292B2D2F3032343537FD -:105A0600393B1F0F03764F5F6F7F49694379095909 -:105A160053633149803F5D8B803FF8BF803FCAE1C9 -:105A2600803F73ED803FCAE1803FF8BF803F5D8BCA -:105A3600803F3149803F0000803FF16D7F3F75EA2E -:105A46007E3F4C827E3F833F7E3F84287E3F833F5E -:105A56007E3F4C827E3F75EA7E3FF16D7F3F0000C0 -:105A6600803F3F4D3639E304960460042704BA03A9 -:105A7600D303EC0305040102030405060708090025 -:00000001FF diff --git a/keyboard/planck/keymaps/brandon/compiled.hex b/keyboard/planck/keymaps/brandon/compiled.hex deleted file mode 100644 index 2b6bb328df..0000000000 --- a/keyboard/planck/keymaps/brandon/compiled.hex +++ /dev/null @@ -1,1456 +0,0 @@ -:100000000C94C1020C9405030C9405030C94050395 -:100010000C9405030C9405030C9405030C94050340 -:100020000C9405030C9405030C94B2140C948415E1 -:100030000C94E6220C9405030C9405030C94050320 -:100040000C9405030C9467030C9405030C940503AE -:100050000C9405030C944E230C9405030C94050397 -:100060000C9405030C9405030C9405030C940503F0 -:100070000C9405030C9405030C9405030C940503E0 -:100080000C94270B0C9405030C9405030C940503A6 -:100090000C9405030C9405030C9405030C940503C0 -:1000A0000C9405030C9405030C940503F115131629 -:1000B00001171316011758167B160117D016E316F1 -:1000C000CD19CD19FC19FC193B1A5B1AB11BB11BD8 -:1000D000661AB11B161B161B7D1B861BB11BAB1BA7 -:1000E000231B231B231B231B231B231B231B231B20 -:1000F000231B231B231B231B231B231B231B231B10 -:10010000331B411B481B4F1B591B07634236B79BD0 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C00002010000000000000000000029001400EF -:1001D0001A000800150017001C0018000C0012007F -:1001E00013002A002B0004001600070009000A0073 -:1001F0000B000D000E000F0033003400E1001D0065 -:100200001B00060019000500110010003600370021 -:1002100038002872E000E200E300025403522C0090 -:100220002C0004525000510052004F0029001400CD -:100230001A00090013000A000D000F0018001C002E -:1002400033002A002B0004001500160017000700D9 -:100250000B00110008000C0012003400E1001D002A -:100260001B000600190005000E00100036003700C4 -:1002700038002872E000E200E300025403522C0030 -:100280002C0004525000510052004F000100420067 -:100290004300440045004B002202380024002500A2 -:1002A00026002A0001003E003F00400041004E00B1 -:1002B0004A002502210022002300310201003A00F9 -:1002C0003B003C003D004C004D0027001E001F007D -:1002D00020000100010001000100010001000100F7 -:1002E000010001005000510052004F0035021E0273 -:1002F0001F022002210222022302240225022602DA -:1003000027022A0001003A003B003C003D003E006D -:100310003F002D022E022F02300231020100400068 -:1003200041004200430044004500005301530030A7 -:100330000050010001000100010001000100010066 -:1003400001000100AB00AA00A900AE0035001E00AC -:100350001F00200021002200230024002500260089 -:1003600027002A0001003A003B003C003D003E000F -:100370003F002D002E002F00300031000100400012 -:100380004100420043004400450000530153003047 -:100390000050010001000100010001000100010006 -:1003A00001000100AB00AA00A900AE002803540020 -:1003B00068006500200050006C0061006E00630062 -:1003C0006B0020004B006500790062006F00610047 -:1003D0007200640000002C034F007200740068007B -:1003E0006F006C0069006E00650061007200200003 -:1003F0004B006500790062006F00610072006400CC -:10040000730000000403090409026D00040100A048 -:10041000FA09040000010301010009211101000192 -:10042000223F000705810308000A090401000103B7 -:10043000010200092111010001224D00070582037C -:1004400008000A090402000103000000092111014B -:1004500000012236000705830308000A090403008F -:1004600001030000000921110100012239000705E4 -:1004700084031000011201100100000008EDFE606D -:100480006001000102000105010906A1010507192B -:10049000E029E71500250195087501810205081975 -:1004A00001290595057501910295017503910105D5 -:1004B000071900297715002501957875018102C07B -:1004C00005010980A101850216010026B7001A0165 -:1004D000002AB700751095018100C0050C0901A123 -:1004E000018503160100269C021A01002A9C027550 -:1004F0001095018100C005010902A1010901A100B7 -:1005000005091901290515002501950575018102C7 -:100510009501750381010501093009311581257F98 -:1005200095027508810609381581257F95017508A2 -:100530008106050C0A38021581257F950175088111 -:1005400006C0C005010906A101050719E029E71544 -:100550000025019508750181029501750881010545 -:1005600008190129059505750191029501750391F9 -:10057000010507190029FF150025FF95067508815B -:1005800000C011241FBECFEFDAE0DEBFCDBF04B63E -:1005900003FE24C080911E0390911F03A0912003AD -:1005A000B09121038730904BA740B04BB9F4109223 -:1005B0001E0310921F03109220031092210314BEF9 -:1005C00084B7877F84BF88E10FB6F894809360007A -:1005D000109260000FBEE0E0F8E3099511E0A0E0A2 -:1005E000B1E0E6E2FAE502C005900D92A03CB10749 -:1005F000D9F713E0A0ECB1E001C01D92AE31B10714 -:10060000E1F70E94F8110C94112D0C94000008954C -:10061000089581E0089508950C9408030C9409034B -:100620000C940B030E94DB2823E030E0281B3109E7 -:10063000220F2093C4010895282F2F9880918000C5 -:10064000211108C0877F8093800010928D00109246 -:100650008C001BC0886080938000233019F48FEFDA -:100660009FEF0FC083E090E0821B9109880F991FD4 -:100670002FEF3FEFA90102C0569547958A95E2F703 -:10068000CA0190938D0080938C000C9412030E94F9 -:10069000120384E08093C3011092C0010895279A49 -:1006A0002F988FEF9FEF90938700809386008AE0CA -:1006B0008093800089E1809381000E9444280C94FB -:1006C00047030E944F036E9A769A0C9407031F9279 -:1006D0000F920FB60F9211242F933F938F939F93F6 -:1006E000EF93FF93E091C101F091C201CF01019618 -:1006F0009093C2018093C1010090C30102C0F6959E -:10070000E7950A94E2F7EF738091C001823019F403 -:10071000E03251F404C0813039F4EF3329F4809190 -:100720006F008D7F80936F00F0E0E457FE4FE491FF -:1007300021E031E0E29FC001E39F900D1124009081 -:10074000C40102C0969587950A94E2F790938D00B4 -:1007500080938C00FF91EF919F918F913F912F910A -:100760000F900FBE0F901F90189561110DC0FC01E6 -:100770008281882331F085EE0E9471180E949B28A7 -:1007800003C085EE0E94391980E090E0089581E071 -:1007900008950C94C70308950C9461038091150289 -:1007A000882309F448C08091D1019091D20100972B -:1007B00079F40E9418239093D2018093D101809103 -:1007C000D30190E0009771F48091D40190E00AC0C9 -:1007D0000E9424232091000130910101281739073C -:1007E00040F329C00197880F991F880F991FFC01BA -:1007F000EB52FE4F60817181828193810E948D0A4C -:10080000E091D30184E0E89FF0011124EB52FE4F08 -:1008100060817181828193814FE050E00E94450E9A -:100820008091D30190E001966091D40170E00E9424 -:10083000C12C8093D3010C940C03109217020C94DA -:100840005A0A0895089581E0809317020C942204B7 -:10085000089508958F929F92AF92BF92EF92FF9268 -:100860000F931F93CF93DF93CDB7DEB7A3970FB648 -:10087000F894DEBF0FBECDBF7C01FC010081118169 -:10088000C8010E941521B8010E942C068C01B701F5 -:100890000E94C903882309F4CCC10032F0E51F0788 -:1008A00041F4F7018281882309F458C00E94A90EFF -:1008B000C0C10132F0E51F0741F4F70182818823AE -:1008C00009F44CC00E94B20EB4C10232F0E51F0719 -:1008D00051F4F7018281882309F440C00E94A50EDB -:1008E0008111F0CFE3CF0332F0E51F0739F4F701B0 -:1008F0008281882399F10E9423049BC10432F0E590 -:100900001F0739F4F7018281882341F10E941D04F9 -:1009100090C10532F0E51F0749F4F7018281882371 -:10092000E9F0809117028111F1CFE5CF0632F0E5B1 -:100930001F0739F4F7018281882381F00E94B90EE4 -:100940000AC00732F0E51F0749F4F70182818823C6 -:1009500029F00E94C40E0E9429046BC180911702E5 -:10096000811105C0F70182818111CFC018C1003EFD -:10097000110579F4F7018281882309F44DC00E94A2 -:100980005A0A81E080931602109215021092D40147 -:1009900050C1023E110559F4F70182818823E1F12B -:1009A0000E945A0A109216021092150242C1033E8A -:1009B000110591F4F7018281882371F10E945A0A8E -:1009C0001092160281E0809315021092D3011092CA -:1009D000D2011092D1012DC10235110559F4F70150 -:1009E0008281882309F425C1809100019091010141 -:1009F0000A970DC00135110579F4F701828188232A -:100A000009F417C180910001909101010A96909319 -:100A10000101809300010DC14091040183E2EFE1E7 -:100A2000F1E0DE01119601900D928A95E1F7F70150 -:100A3000808121E030E02C0F3D1F280F311DC901BE -:100A40002091020130910301FC01E20FF31F60814C -:100A5000772767FD7095640F711D882777FD809556 -:100A6000982F0E94E32920E030E040E451E40E9406 -:100A700048294B015C01F701218184E090E0821B51 -:100A80009109BC01882777FD8095982F0E94E32962 -:100A90009B01AC01C501B4010E94E0289B01AC019F -:100AA00060E070E080E090E40E94562B20E030E0AF -:100AB0004CED50E40E94F32A4B015C01F701828166 -:100AC0008823D1F04FE050E0C501B4010E94450EEB -:100AD000809116028823A1F08091D40124E0829FA6 -:100AE000F0011124EB52FE4F80829182A282B382E8 -:100AF0008F5F8093D40104C0C501B4010E948D0AA8 -:100B00000F3F110508F02ECF94C08091D0018111C4 -:100B10001FC0043130E5130709F051C00E94CB0318 -:100B200081E08093D0010E9418239093CF0180939D -:100B3000CE011092C7011092C9011092C801109203 -:100B4000CB011092CA011092CD011092CC0171C05C -:100B50008091CE019091CF010E942423883C910581 -:100B600070F48091C701E82FF0E0EE0FFF1FE8530B -:100B7000FE4F118300838F5F8093C7015AC00438F2 -:100B800080E5180721F00538104501F13AC0F7015A -:100B90008281882341F01092C50182E01EC0043892 -:100BA00030E5130759F58091C501811106C086E231 -:100BB0000E94711886E20E94391982E01CC0043834 -:100BC000F0E51F0741F305381045D9F4F70182819C -:100BD000882331F01092C60180E20E94881929C052 -:100BE0008091C601811106C087E20E94711887E2D8 -:100BF0000E94391980E20E948F191BC005381045E8 -:100C000029F381E08093C5018093C601C701A396B3 -:100C10000FB6F894DEBF0FBECDBFDF91CF911F910D -:100C20000F91FF90EF90BF90AF909F908F900C949A -:100C30000E0380E0A3960FB6F894DEBF0FBECDBFC3 -:100C4000DF91CF911F910F91FF90EF90BF90AF90E8 -:100C50009F908F90089508959CE0799FF001112452 -:100C600090E3899FE00DF11D1124E60FF11DEE0FB9 -:100C7000FF1FE453FE4F859194910895880F991FAB -:100C8000FC01E45BFF4F859194910895880F991FB3 -:100C9000FC01E453FE4F8591949108950F931F93A7 -:100CA000CF93DF93EC01811521E39207A0F5C115E5 -:100CB00080E3D80708F0D7C0C83ED105D8F4C03EBD -:100CC000D10508F007C2C83AD10578F4C53AD10574 -:100CD00008F06AC0C130D10509F463C008F4F7C157 -:100CE000C430D10508F0F6C1F2C1CB3BD10508F400 -:100CF00066C0EDC1C11590E2D90708F0AFC0C115BB -:100D000021E0D20708F0E6C1C03FD10508F4DFC1F9 -:100D10008E0110651FC2C03880E5D80700F5C037C6 -:100D200090E5D90708F0A3C0C11520E5D20709F462 -:100D3000ACC050F4CE01905480319F4008F0C7C140 -:100D4000DF708E01106A06C2C13080E5D80709F451 -:100D5000AEC0C43190E5D90708F4AFC0B8C1C338FC -:100D600020E5D20709F48EC050F4C13890E5D907C8 -:100D700009F482C008F083C000E011EDEBC1C0317E -:100D800081E5D80708F4A3C1C11597E5D90708F490 -:100D900036C1CE0190578115904108F098C1DF709F -:100DA00093C101E010E0D6C1C53AD10509F494C160 -:100DB000C63AD10509F093C102E810E4CBC1C83AA4 -:100DC000D10509F48FC1C93AD10509F48EC1CA3AD7 -:100DD000D10509F48DC1CB3AD10509F48CC1CC3AC7 -:100DE000D10509F48BC1CD3AD10509F48AC1C03BC4 -:100DF000D10509F489C1CE3AD10509F488C1CF3AA9 -:100E0000D10509F487C1C13BD10509F486C1C23BB4 -:100E1000D10509F485C1C33BD10509F484C1C43BA4 -:100E2000D10509F483C1C53BD10509F482C1C63B94 -:100E3000D10509F481C1C73BD10509F480C1C83B84 -:100E4000D10509F47FC1C93BD10509F47EC1CA3B74 -:100E5000D10509F47DC100E014E47CC1CE019F708E -:100E60000E94460678C1DD278E01106C73C1CF70D9 -:100E7000DD278E01146D6EC100E010ED6BC100E046 -:100E800012ED68C100E013ED65C10E941C1C0E94B8 -:100E90005A0A0E9421048FEF94E32CE08150904085 -:100EA0002040E1F700C000000E94732353C18091ED -:100EB000F20281608093F2024DC10E94D42381111D -:100EC00002C00E94B0230E94E72390E090931D038C -:100ED00080931C03C23080E5D80721F480911C0365 -:100EE000816086C0C43090E5D90721F480911C034D -:100EF00082607EC0C63020E5D20721F480911C03B9 -:100F0000846076C0C83080E5D80719F480911C034E -:100F100027C0CA3090E5D90721F480911C03806175 -:100F200067C0CC3020E5D20721F480911C03806299 -:100F30005FC0CE3080E5D80721F480911C03806427 -:100F400057C0C03190E5D90721F480911C03806817 -:100F50004FC0C23120E5D20729F480911C03846080 -:100F6000886046C0C33080E5D80721F480911C0317 -:100F70008E7F3EC0C53090E5D90721F480911C03D7 -:100F80008D7F36C0C73020E5D20721F480911C0345 -:100F90008B7F2EC0C93080E5D80719F480911C03DF -:100FA00026C0CB3090E5D90721F480911C038F7EB9 -:100FB0001FC0CD3020E5D20721F480911C038F7D26 -:100FC00017C0CF3080E5D80721F480911C038F7BB8 -:100FD0000FC0C13190E5D90721F480911C038F77B0 -:100FE00007C0C331D04531F480911C038B7F877FCC -:100FF00080931C0380911C030E94EB23ABC08D2FB8 -:1010000099278F70992781309105D9F49E0123701B -:10101000332702C0880F991F2A95E2F79C688E013A -:1010200044E0000F111F4A95E1F700271370802B51 -:10103000912B53E0CC0FDD1F5A95E1F7C076DD27E9 -:101040002FC08230910531F4DC2FCC278E01016F47 -:10105000106A80C08330910569F4CE0183709927AE -:1010600001E010E002C0000F111F8A95E2F7C801ED -:101070009C680FC084309105B9F4CE018370992724 -:1010800001E010E002C0000F111F8A95E2F7C801CD -:101090009A6823E0CC0FDD1F2A95E1F7C07ED77058 -:1010A0008C010C2B1D2B56C08530910531F4DC2FA3 -:1010B000CC278E01046F106A4DC0069709F04AC014 -:1010C000CF71DD27DC2FCC278E01106243C000E0FA -:1010D00010E040C08E013EC001E810E43BC003E8D0 -:1010E00010E438C002EE14E435C009EE14E432C056 -:1010F0000AEE14E42FC005EB14E42CC006EB14E454 -:1011000029C007EB14E426C00CEC14E423C00DEC5A -:1011100014E420C003E815E41DC00AE815E41AC071 -:1011200002E915E417C004E915E414C001E216E46D -:1011300011C003E216E40EC004E216E40BC005E29F -:1011400016E408C006E216E405C007E216E402C091 -:101150000AE216E4C801DF91CF911F910F91089523 -:101160009CE0799FF001112490E3899FE00DF11D2F -:101170001124E60FF11DEE0FFF1FE453FE4F859182 -:101180009491803E9105E0F4803C910558F58133BF -:10119000910509F46FC048F48932910509F463C0E0 -:1011A0008A32910509F46DC072C089339105E9F066 -:1011B00082389105D1F08533910509F44DC067C09F -:1011C000833E910581F138F4803E9105B9F0823E6D -:1011D0009105D9F05CC0863E910561F1873E91058D -:1011E000A1F155C00E943E06089520911C0320FDE8 -:1011F00002C021FF4CC080EE90E049C080911C03EA -:1012000080FFF9CF89E390E042C080911C0382FF08 -:101210000EC080911C0384FF03C080E090E037C0C3 -:1012200083EE90E034C080911C0382FFF2CF82EE07 -:1012300090E02DC080911C0383FF0BC080911C03A4 -:1012400084FDEBCF87EE90E022C080911C0383FFEA -:10125000F5CF86EE90E01BC080911C0385FF07C090 -:1012600089E290E014C080911C0385FFF9CF85E3EB -:1012700090E00DC080911C0386FF07C08AE290E0D9 -:1012800006C080911C0386FFF9CF81E390E00E94A5 -:101290004E0608950C941003E82FF0E0E25BFE4F39 -:1012A0008081E82FEF70F0E082958F7021E030E0D0 -:1012B000A90102C0440F551F8A95E2F740A3089583 -:1012C0000F931F93CF93DF9385B7806885BF85B752 -:1012D000806885BFC3E0D0E001E010E0FE01E25B82 -:1012E000FE4F8081E82FEF70F0E021A182958F7092 -:1012F000A80102C0440F551F8A95E2F7CA01822B4C -:1013000081A38C2F0E944C09219740F78BE090E03D -:1013100061E070E0FC01EE5BFE4F2081E22FEF7098 -:10132000F0E042A122952F70DB0102C0AA0FBB1F83 -:101330002A95E2F79D01242B22A3019758F7DF910C -:10134000CF911F910F910C94CC03EF92FF920F93CA -:101350001F93CF93DF9300E212E0C3E0EE24E39407 -:10136000F12CD5E08C2F0E944C098BE090E040E0FE -:1013700050E0FC01EE5BFE4F6081E62FEF70F0E085 -:1013800020A130E062956F7002C0359527956A956F -:10139000E2F720FD09C09701082E02C0220F331F7B -:1013A0000A94E2F7422B532B019718F7F801929118 -:1013B00082918F018417950721F051834083D09348 -:1013C00005018C2F0E944C09C15060F680910501E7 -:1013D00087FD2CC08150809305018F3F39F08FE944 -:1013E0009FE00197F1F700C0000020C080911E022D -:1013F00090911F02909327028093260280911C02F5 -:1014000090911D02909325028093240280911A02EC -:1014100090911B02909323028093220280911802E4 -:101420009091190290932102809320020E94CE0392 -:1014300081E0DF91CF911F910F91FF90EF90089580 -:10144000E82FF0E0EE0FFF1FE05EFD4F80819181FD -:10145000089508950F931F93CF9308E212E0C0E020 -:10146000F801929182918F010E949022C80FF2E0C0 -:1014700000321F07A9F78C2FCF911F910F9108956C -:101480000E94D423811102C00E94B0230E94F9233C -:10149000809307033E9A809171008D7F8093710045 -:1014A00082E0809390008AE18093910081E08093B4 -:1014B0002A02089580912A02811102C00E94400AE6 -:1014C00010927A0210927902809171008D7F809340 -:1014D0007100809190008F738093900010923C0275 -:1014E00010923B02109273021092740210927502D5 -:1014F000109276021092720210927102E1E5F2E00F -:10150000A1E4B2E011921192119211921D921D92DA -:1015100082E0E137F807B1F70895CF92DF92EF92BA -:10152000FF920F931F93CF93DF9320913B022223CF -:1015300009F484C06B017C0180912A02811102C0F0 -:101540000E94400A01E712E0C7E0D0E0A70196013F -:10155000F80192918291729162918F010E944429C7 -:10156000811131C0FE01EE0FFF1FEE0FFF1FEF5A7A -:10157000FD4F1082118212821382DE01AA0FBB1F5F -:10158000AF5BBD4F11961C921E92C730D105E9F09A -:10159000219644815581668177814083518362839E -:1015A0007383148215821682178212968D919C91F4 -:1015B000139711969C938E9313961C921E921297DA -:1015C00034961296E2CF219708F680917902909195 -:1015D0007A02019797FD05C090937A028093790271 -:1015E00004C010927A02109279028091790290914F -:1015F0007A0220917702309178022817390724F077 -:101600001092780210927702892BC1F480917100B8 -:101610008D7F80937100809190008F7380939000F4 -:101620001092730210927402109275021092760258 -:10163000109272021092710210923B02DF91CF91D0 -:101640001F910F91FF90EF90DF90CF9008951F9220 -:101650000F920FB60F9211244F925F926F927F926A -:101660008F929F92AF92BF92CF92DF92EF92FF92B2 -:101670002F933F934F935F936F937F938F939F939A -:10168000AF93BF93CF93DF93EF93FF9380913B0290 -:10169000882309F49BC1C0917902D0917A021C166B -:1016A0001D060CF093C140902B0250902C026090CC -:1016B0002D0270902E0220E030E0A901C301B2019A -:1016C0000E94EF2A18160CF065C0C130D10509F44C -:1016D00052C08091770290917802BE010E94C12C85 -:1016E0007C01909378028093770280903D029090E5 -:1016F0003E02A0903F02B090400220E030E040E87F -:101700005FE3C501B4010E94E02860933D0270933D -:101710003E0280933F0290934002F701EE0FFF1FBD -:10172000EE0FFF1FEF5AFD4FA301920160817181FF -:10173000828193810E94482920E030E040E05EE30E -:101740000E94F32A9B01AC01C501B4010E94EF2A5B -:1017500018168CF4C7010196BE010E94C12C90930B -:1017600078028093770210923D0210923E0210920E -:101770003F0210924002E0917702F0917802EE0F62 -:10178000FF1FEE0FFF1FEF5AFD4F608171818281B5 -:101790009381D0C0C0907302D0907402E090750223 -:1017A000F090760220E030E0A901C701B6010E9466 -:1017B00044292197882309F4A2C0FE01EE0FFF1FE0 -:1017C000EE0FFF1FEF5AFD4F80809180A280B38003 -:1017D000A5019401C701B6010E94442987FF31C0C9 -:1017E000A501940160E070E08CED93EC0E94482923 -:1017F00020E030E040E451E40E94482920E030E05D -:1018000040E05FE30E94F32A9B01AC0160E070E0DE -:1018100080E090E40E94562B9B01AC01C501B4010D -:101820000E94F32A9B01AC01C701B6010E94442922 -:1018300087FF07C0A701960160E070E08CED93E49C -:1018400039C0A5019401C701B6010E94EF2A1816FC -:101850000CF055C0A501940160E070E08CED93E4BC -:101860000E94482920E030E040E451E40E944829E9 -:1018700020E030E040E05FE30E94F32A9B01AC01EE -:1018800060E070E080E090E40E94562B9B01AC0188 -:10189000C501B4010E94F32A9B01AC01C701B60146 -:1018A0000E94EF2A18165CF5A701960160E070E02F -:1018B0008CED93EC0E94482920E030E040E451E4B4 -:1018C0000E94482920E030E040E05FE30E94F32AD4 -:1018D0009B01AC0160E070E080E090E40E94562B38 -:1018E0009B01AC01C701B6010E94F32A6093730209 -:1018F00070937402809375029093760213C0FE0178 -:10190000EE0FFF1FEE0FFF1FEF5AFD4F80819181F9 -:10191000A281B3818093730290937402A0937502A5 -:10192000B093760260917302709174028091750297 -:101930009091760220912802309129022F3F4FEF9B -:10194000340731F02F5F3F4F309329022093280254 -:101950000E94CF0E6B017C0120E034E244EF51E4A1 -:101960000E94442987FF08C086EFC82E88E2D82E3F -:1019700084EFE82E81E4F82E20E030E040E051E4EE -:10198000C701B6010E94F32A9B01AC0160E074E23A -:1019900084E79BE40E9448296B017C010E94B529E1 -:1019A0007093970060939600209106013091070193 -:1019B0004091080150910901C701B6010E94F32A24 -:1019C0000E94B529709399006093980080913C0221 -:1019D000882309F433C1C0903702D0903802E090D8 -:1019E0003902F0903A0220E030E0A901C701B601C7 -:1019F0000E94EF2A1816D4F58091280290912902AE -:101A00008F3F2FEF920729F0019690932902809340 -:101A10002802C701B6010E94CF0E20E030E040E06E -:101A200051E40E94F32A9B01AC0160E074E284E778 -:101A30009BE40E9448296B017C010E94B5297093A8 -:101A40009700609396002091060130910701409124 -:101A5000080150910901C701B6010E94F32A0E94B2 -:101A6000B529709399006093980008C01092970070 -:101A70001092960010929900109298006091310295 -:101A8000709132026F5F7F4F709332026093310228 -:101A9000209196003091970080E090E0232BF1F0A8 -:101AA000C0919600D09197000E94E1296B017C01C2 -:101AB000BE0180E090E00E94E1299B01AC016091B1 -:101AC00033027091340280913502909136020E9467 -:101AD000482920E03FEF4FE757E410C00E94E1297A -:101AE0006B017C0120E030EE4FEF54E46091330253 -:101AF0007091340280913502909136020E94F32A4F -:101B00009B01AC01C701B6010E94EF2A87FD96C078 -:101B100080912F028F5F80932F0290E0209103032A -:101B20003091040382179307A0F080910E0388235D -:101B300019F010922F020DC0809171008D7F80935B -:101B40007100809190008F738093900010923C02FE -:101B50007DC080913002C0912F02811128C0C090B9 -:101B60000803D0900903E0900A03F0900B0320E0F3 -:101B700030E0A901C701B6010E94EF2A1816BCF493 -:101B800081E0809330021092370210923802109256 -:101B9000390210923A02C0923302D0923402E0929B -:101BA0003502F0923602C150C0932F0243C010920A -:101BB00030021092290210922802E0910503F09160 -:101BC000060348E0C49FE00DF11D1124808191813E -:101BD000A281B3818093370290933802A093390297 -:101BE000B0933A0220E030E040E85EE36481758122 -:101BF000868197810E94F32A6B017C0180910A0102 -:101C0000682F70E080E090E00E94E12920E030E061 -:101C100048EC52E40E9448299B01AC01C701B6017F -:101C20000E94F32A6093330270933402809335024A -:101C30009093360210923202109231028091070383 -:101C400080FD04C010923C0210923B02FF91EF9184 -:101C5000DF91CF91BF91AF919F918F917F916F91C4 -:101C60005F914F913F912F91FF90EF90DF90CF9038 -:101C7000BF90AF909F908F907F906F905F904F90AC -:101C80000F900FBE0F901F901895CF92DF92EF929A -:101C9000FF92CF93DF936B017C01EA0180912A02CE -:101CA000811102C00E94400A8091070380FF46C054 -:101CB0008091790290917A0208970CF03FC0809150 -:101CC00071008D7F8093710080913C0281110E9490 -:101CD0005A0A81E080933B02109229021092280256 -:101CE00020E030E0A901C701B6010E94EF2A1816D2 -:101CF000DCF48091790290917A02FC01EE0FFF1FD3 -:101D0000EE0FFF1FEF5AFD4FC082D182E282F382B5 -:101D1000FC01EE0FFF1FEF5BFD4FD183C0830196E7 -:101D200090937A028093790280917100826080930F -:101D3000710080919000806880939000DF91CF9136 -:101D4000FF90EF90DF90CF9008958091070381700E -:101D50000895809107038160809307030E94FD230B -:101D60000C942804809107038E7F809307030C94C2 -:101D7000FD2380917B0290E0019666E070E00E9476 -:101D8000C12C80937B02089580917B0290E00197A3 -:101D900066E070E00E94C12C80937B0208958F92D0 -:101DA0009F92AF92BF92CF92DF92EF92FF920F93EA -:101DB0001F93CF93DF936B017C01C0912802D091D8 -:101DC0002902BE0180E090E00E94E1294B015C0104 -:101DD000A701960160E070E08CE594E40E94482938 -:101DE0009B01AC01C501B4010E94F32A0E94B529F0 -:101DF00020917B02233009F473C028F4222351F090 -:101E00002130E9F02CC1243009F4A0C0253009F4B8 -:101E1000E0C025C180E090E0A0E0BFE38093060130 -:101E200090930701A0930801B093090110922B022F -:101E300010922C0210922D0210922E0210C11092BC -:101E40002B0210922C0210922D0210922E0264315D -:101E5000710540F46A30710560F520E030E040E83B -:101E60005EE32BC0693C710508F0AAC080E090E0F9 -:101E70000E94E12920E030E040EA51E40E94DF289E -:101E800020E030E044E353E40E9448299B01AC0188 -:101E90000E94F32A20E030E040E05EE30E94F32A53 -:101EA0009B01AC0160E070E080E09EE30E94DF28CF -:101EB00044C020E030E040E05FE3C701B6010E948B -:101EC000F32A6B017C0180E090E0A0E0BEE3809308 -:101ED000060190930701A0930801B0930901BFC0C8 -:101EE00010922B0210922C0210922D0210922E02B0 -:101EF0004AE0469F9001479F300D1124C90168EBCD -:101F00007BE00E94AD2CBC016C5D754077FF03C087 -:101F1000719561957109882777FD8095982F0E94AA -:101F2000E3292EE333EC4EE259E30E94F32A20E04A -:101F300030E040EC5EE30E94E0286093060170937D -:101F40000701809308019093090189C010922B0228 -:101F500010922C0210922D0210922E02CE0183704C -:101F60009927892BE1F0BE016170772780E090E02E -:101F70000E94E12920E030E040E05EE30E94F32A85 -:101F800020E030E040E45FE30E94E0286093060137 -:101F90007093070180930801909309010CC080E0C1 -:101FA00090E0A0E0BFE38093060190930701A09327 -:101FB0000801B0930901C770DD27CD2B09F04FC090 -:101FC0001092060110920701109208011092090167 -:101FD00046C010922B0210922C0210922D021092E9 -:101FE0002E0200E010E020E03FE300930601109392 -:101FF000070120930801309309016739710578F1D1 -:1020000080E090E00E94E12920E030E047E153E4E5 -:102010000E94DF2820E030E04AE754E40E9448298B -:1020200020E030E048E452E40E94F32A20E030E06F -:1020300040EA51E40E94252A0E94B029660F771FCA -:10204000660F771FFB01EE5AFE4F208131814281DE -:102050005381C701B6010E94F32A6B017C01C701BD -:10206000B601DF91CF911F910F91FF90EF90DF901C -:10207000CF90BF90AF909F908F90089580918C02E9 -:102080000895CF93DF9300D01F92CDB7DEB79C01A8 -:1020900080911303843019F593E099833B832A835D -:1020A0009093E9008FEF9091E800815095FD06C074 -:1020B00095ED9A95F1F700008111F5CF8091E80038 -:1020C00085FF0DC040E050E063E070E0CE01019676 -:1020D0000E94A2128091E8008E778093E8000F9012 -:1020E0000F900F90DF91CF910895CF93DF9300D0A1 -:1020F0001F92CDB7DEB720911303243021F522E0E3 -:1021000029839B838A8383E08093E9008FEF9091FA -:10211000E800815095FD06C095ED9A95F1F7000015 -:102120008111F5CF8091E80085FF0DC040E050E0BF -:1021300063E070E0CE0101960E94A2128091E80057 -:102140008E778093E8000F900F900F90DF91CF91E2 -:102150000895209113032430F1F422E02093E90044 -:102160002FEF3091E800215035FD06C035ED3A954E -:10217000F1F700002111F5CF2091E80025FF0BC0F9 -:1021800040E050E065E070E00E94A2128091E8001B -:102190008E778093E8000895CF93DF93EC019091C0 -:1021A0001303943009F046C0809115018823D9F0BB -:1021B000809116018823B9F09093E9008FEF9091F8 -:1021C000E800815095FD06C095E19A95F1F7000071 -:1021D0008111F5CF8091E80085FF2CC040E050E0F0 -:1021E00060E170E017C081E08093E9008FEF90918B -:1021F000E800815095FD06C095ED9A95F1F7000035 -:102200008111F5CF8091E80085FF14C040E050E0D7 -:1022100068E070E0CE010E94A2128091E8008E7703 -:102220008093E80080E1FE01ACE7B2E001900D92FE -:102230008A95E1F7DF91CF91089580911203811182 -:1022400009C00E9437140E9494148091E2008460B7 -:102250008093E2000895109212030895089508955E -:102260000C94DB2242E061EC81E00E94B11342E079 -:1022700061EC82E00E94B11342E061EC83E00E94D5 -:10228000B11342E161EC84E00C94B1138091150329 -:10229000833009F455C030F4813071F0823009F494 -:1022A0008EC008958A3009F47AC08B3009F460C07A -:1022B000893009F09CC020C080911403813A09F054 -:1022C00096C08091E800877F8093E8008091180392 -:1022D00090911903892B21F460E18CE792E003C00F -:1022E00060E080E090E070E00E94ED128091E800F4 -:1022F0008B778093E800089580911403813209F070 -:1023000076C08091180390911903009719F00397F4 -:1023100009F06DC08091E800877F8093E80080918C -:10232000E80082FD05C0809113038111F8CF5FC0E2 -:102330008091F10080938C028091E8008B7753C0EC -:1023400080911403813A09F052C080911803909152 -:102350001903892B09F04BC08091E800877F809397 -:10236000E8008091E80080FFFCCF8091150136C025 -:10237000809114038132D9F580911803909119034B -:10238000892BA9F58091E800877F8093E8000E945F -:10239000E61380911603809315010C941C1C809108 -:1023A0001403813221F58091E800877F8093E80053 -:1023B0000E94E6138091170380938D020895809107 -:1023C0001403813AA1F48091E800877F8093E800AC -:1023D0008091E80080FFFCCF80918D028093F10016 -:1023E0008091E8008E778093E8000C94E6130895BE -:1023F00084B7877F84BF88E10FB6F894809360002C -:10240000109260000FBE90E080E80FB6F8948093C1 -:102410006100909361000FBE0E9489170E943714DB -:102420000E9494148091E20084608093E20078948A -:102430000E941A170E948B178BE091E00E943517BB -:1024400080911303853069F40E949C2280911103CE -:102450008823B1F30E94CA22882391F30E948C1230 -:10246000EFCF0E949317ECCF292F3327233031056C -:10247000C9F064F42130310581F02230310509F0D2 -:1024800043C08DE690E028E034E042C021323105BF -:10249000F1F02232310541F137C082E190E025E7C9 -:1024A00034E036C099278130910541F082309105A2 -:1024B00041F0892B49F5E4E0F4E005C0E6EDF3E0F6 -:1024C00002C0ECEAF3E0849190E09F0121C0643007 -:1024D000D8F4E62FF0E0EE0FFF1FE255FE4F20810B -:1024E000318189E090E014C0643070F470E0FB0149 -:1024F000EE0FFF1FEA55FE4F20813181FB01EE55A3 -:10250000FE4F808190E004C080E090E020E030E069 -:10251000FA0131832083089580E189BD82E189BD7C -:1025200009B400FEFDCF8091D8008F7D8093D80044 -:102530008091E00082608093E0008091E00081FD66 -:10254000FCCF0895CF92DF92EF92FF920F931F93EB -:10255000CF93DF93EC018B016A010E940514811176 -:1025600033C0C114D10439F0F60180819181081B78 -:10257000190BC80FD91FE12CF12C0115110519F108 -:102580008091E80085FD16C08091E8008E778093E9 -:10259000E800C114D10449F0F60180819181E80E70 -:1025A000F91EF182E08285E00FC00E9405148823A5 -:1025B00021F30AC089918093F10001501109FFEFC6 -:1025C000EF1AFF0ADACF80E0DF91CF911F910F91D0 -:1025D000FF90EF90DF90CF90089520911A033091F3 -:1025E0001B032617370748F06115710539F4209150 -:1025F000E8002E772093E80001C0B90140E06115A2 -:102600007105A9F120911303222309F443C0253059 -:1026100009F442C02091E80023FD40C02091E80069 -:1026200022FD32C02091E80020FFE9CF4091F30065 -:102630002091F20030E0342BFC01CF0161157105CF -:1026400059F02830310540F481918093F1006150B8 -:1026500071092F5F3F4FF1CF41E02830310509F07C -:1026600040E02091E8002E772093E800C8CF411188 -:10267000C9CF0AC080911303882361F0853061F0CF -:102680008091E80083FD0AC08091E80082FFF2CFCC -:1026900080E0089582E0089583E0089581E0089540 -:1026A00020911A0330911B032617370748F0611554 -:1026B000710539F42091E8002E772093E80001C0DD -:1026C000B901FC0120E06115710591F180911303BE -:1026D000882309F440C0853009F43FC08091E800A8 -:1026E00083FD3DC08091E80082FD2FC08091E8000D -:1026F00080FFE9CF2091F3008091F20090E0922BCF -:102700006115710559F08830910540F424912093AA -:10271000F1003196615071090196F2CF21E00897DE -:1027200009F020E08091E8008E778093E800CBCF1D -:102730002111CCCF0AC080911303882361F085302A -:1027400061F08091E80083FD0AC08091E80082FF7B -:10275000F2CF80E0089582E0089583E0089581E05B -:102760000895982F973058F59093E900981739F00D -:102770007091EC002091ED005091F00003C0242FE7 -:10278000762F50E021FF19C03091EB003E7F30934F -:10279000EB003091ED003D7F3093ED003091EB0088 -:1027A00031603093EB007093EC002093ED00509378 -:1027B000F0002091EE0027FF07C09F5FD3CF8F70FE -:1027C0008093E90081E0089580E0089580911403EA -:1027D00087FF11C08091E80082FD05C0809113033E -:1027E0008111F8CF11C08091E8008B770BC08091E8 -:1027F0001303882349F08091E80080FFF8CF80918F -:10280000E8008E778093E80008952091E4003091ED -:10281000E50095E64091EC00842F817040FF22C0D6 -:102820008091E80080FD1CC080911303882391F003 -:10283000853091F08091EB0085FD10C04091E4005F -:102840005091E5004217530729F39A01915011F76F -:1028500084E0089582E0089583E0089581E008957A -:1028600080E008954091E80042FFDECF08950E9485 -:10287000A5140E94AD14E0EEF0E0808181608083B9 -:10288000E8EDF0E080818F77808319BCA7EDB0E0A0 -:102890008C918E7F8C9380818F7E80831092120327 -:1028A00008950F931F93CF93DF930E94A5140E9466 -:1028B000AD14C8EDD0E088818F77888388818068E7 -:1028C000888388818F7D888319BC109213031092AE -:1028D0000F03109211031092100300EE10E0F801A4 -:1028E00080818B7F808388818160888342E060E083 -:1028F00080E00E94B113E1EEF0E080818E7F808362 -:10290000E2EEF0E080818160808380818860808356 -:10291000F80180818E7F8083888180618883DF9148 -:10292000CF911F910F910895E8EDF0E080818F7EA7 -:102930008083E7EDF0E080818160808384E082BF66 -:1029400081E0809312030C945114E8EDF0E0808153 -:102950008E7F80831092E20008951092DA00109228 -:10296000E10008951F920F920FB60F9211242F933A -:102970003F934F935F936F937F938F939F93AF9307 -:10298000BF93EF93FF938091E10082FF0BC0809192 -:10299000E20082FF07C08091E1008B7F8093E1001D -:1029A0000E9419178091DA0080FF1FC08091D80023 -:1029B00080FF1BC08091DA008E7F8093DA008091C7 -:1029C000D90080FF0DC080E189BD82E189BD09B4D5 -:1029D00000FEFDCF81E0809313030E941D1105C00E -:1029E00019BC109213030E942B118091E10080FF0B -:1029F00019C08091E20080FF15C08091E2008E7FB7 -:102A00008093E2008091E20080618093E2008091F7 -:102A1000D80080628093D80019BC85E080931303AE -:102A20000E942F118091E10084FF30C08091E2006C -:102A300084FF2CC080E189BD82E189BD09B400FE1C -:102A4000FDCF8091D8008F7D8093D8008091E100E8 -:102A50008F7E8093E1008091E2008F7E8093E20080 -:102A60008091E20081608093E20080910F038823CF -:102A700011F084E007C08091E30087FD02C081E08F -:102A800001C083E0809313030E9430118091E10024 -:102A900083FF29C08091E20083FF25C08091E1007F -:102AA000877F8093E10082E08093130310920F03ED -:102AB0008091E1008E7F8093E1008091E2008E7F23 -:102AC0008093E2008091E20080618093E20042E026 -:102AD00060E080E00E94B1138091F00088608093F4 -:102AE000F0000E942E11FF91EF91BF91AF919F9145 -:102AF0008F917F916F915F914F913F912F910F90A7 -:102B00000FBE0F901F9018951F920F920FB60F9245 -:102B100011242F933F934F935F936F937F938F93E2 -:102B20009F93AF93BF93CF93DF93EF93FF93C091A6 -:102B3000E900CF708091EC00D82FD17080FDD0E8F3 -:102B40001092E9008091F000877F8093F0007894E4 -:102B50000E94C8151092E9008091F000886080936F -:102B6000F000CD2BCF70C093E900FF91EF91DF9182 -:102B7000CF91BF91AF919F918F917F916F915F9115 -:102B80004F913F912F910F900FBE0F901F9018956E -:102B90001F93CF93DF93CDB7DEB7AA970FB6F89404 -:102BA000DEBF0FBECDBFE4E1F3E088E08E0F909171 -:102BB000F10091938E13FBCF0E9446118091E800A3 -:102BC00083FF1FC18091140390911503492F50E09A -:102BD0004A30510508F015C1FA01EA5AFF4F0C942A -:102BE000D52C803881F0823809F00BC18091180310 -:102BF0008F708093E9008091EB0085FB882780F936 -:102C00001092E90006C08091100390911103911178 -:102C100082609091E800977F9093E8008093F100A4 -:102C20001092F100C8C0282F2D7F09F0EAC0882338 -:102C300019F0823061F0E5C080911603813009F00F -:102C4000E0C0933009F080E0809311032BC08091A5 -:102C50001603811127C0809118038F7009F4D1C029 -:102C60008093E9002091EB0020FF1CC0933021F4F9 -:102C70008091EB00806214C09091EB009061909382 -:102C8000EB0021E030E0A90102C0440F551F8A95F6 -:102C9000E2F74093EA001092EA008091EB0088602E -:102CA0008093EB001092E9008091E800877F86C056 -:102CB0008111A7C0109116031F778091E3008078DF -:102CC000812B8093E3008091E800877F8093E80068 -:102CD0000E94E6138091E80080FFFCCF8091E30022 -:102CE00080688093E300111102C082E001C083E09C -:102CF0008093130386C08058823008F082C0809190 -:102D00001603909117038C3D53E0950779F583E006 -:102D10008A838AE289834FB7F894DE01139620E014 -:102D20003EE051E2E32FF0E050935700E49120FFA2 -:102D300003C0E295EF703F5FEF708E2F90E0EA30B6 -:102D400010F0C79601C0C0968D939D932F5F2431DC -:102D500049F74FBF8091E800877F8093E8006AE2DF -:102D600070E0CE0101960E94ED1214C0AE014F5FDB -:102D70005F4F609118030E943412BC01009709F460 -:102D800040C09091E800977F9093E80089819A81F4 -:102D90000E9450138091E8008B778093E80031C047 -:102DA000803879F58091E800877F8093E8008091F2 -:102DB0000F038093F1008091E8008E778093E80004 -:102DC0000E94E6131EC081111CC090911603923020 -:102DD000C0F48091E800877F8093E80090930F0310 -:102DE0000E94E61380910F03811106C08091E300D9 -:102DF00087FD02C081E001C084E0809313030E943C -:102E000032118091E80083FF0AC08091E800877F3B -:102E10008093E8008091EB0080628093EB00AA969B -:102E20000FB6F894DEBF0FBECDBFDF91CF911F91DB -:102E300008950895CF93809113038823A1F0C09142 -:102E4000E900CF709091EC00892F817090FD80E8AF -:102E5000C82B1092E9008091E80083FD0E94C815FC -:102E6000CF70C093E900CF9108959093930280931F -:102E700092020895E0919202F0919302309721F02E -:102E80000190F081E02D099480E00895E091920294 -:102E9000F0919302309721F00280F381E02D0994A4 -:102EA0000895E0919202F0919302309721F004800E -:102EB000F581E02D099408952091900230919102BE -:102EC0008217930771F09093910280939002E091A2 -:102ED0009202F0919302309721F00680F781E02D65 -:102EE0000994089520918E0230918F0282179307E2 -:102EF00071F090938F0280938E02E0919202F09194 -:102F00009302309721F00084F185E02D0994089513 -:102F100008950C9488170E940F230E9460090E9454 -:102F200095230C9444285F926F927F928F929F9288 -:102F3000AF92BF92CF92DF92EF92FF920F931F93C7 -:102F4000CF93DF9300D000D01F92CDB7DEB70E94A1 -:102F5000A5099DE9C92E92E0D92E03E010E0AA242C -:102F6000A394B12C502E802F0E94200A4C01F60110 -:102F7000729062906F016826792661147104A1F441 -:102F80000150110978F78FEF89838A831B820E9491 -:102F900018238160782F9D838C8349815A816B81AE -:102FA0008D810E94431838C08091F20281FD0E94F9 -:102FB000290A2BE030E07501022E02C0EE0CFF1C46 -:102FC0000A94E2F7C70186219721892B09F1298309 -:102FD0005A828E209F2091E0892809F490E09B83FB -:102FE0000E9418238160782F9D838C8349815A81A8 -:102FF0006B818D810E944318000F111FF801EB5661 -:10300000FD4F80819181E826F926F182E08204C09B -:103010002150310980F6B4CF0E947C251091940292 -:103020000E943A171817D1F00E943A178093940221 -:103030000F900F900F900F900F90DF91CF911F91F5 -:103040000F91FF90EF90DF90CF90BF90AF909F9047 -:103050008F907F906F905F900C944A090F900F9023 -:103060000F900F900F90DF91CF911F910F91FF90D4 -:10307000EF90DF90CF90BF90AF909F908F907F9018 -:103080006F905F900895CF93DF93CDB7DEB72B9706 -:103090000FB6F894DEBF0FBECDBF4F835887698748 -:1030A0007A878B87DE01119686E0FD0111928A9561 -:1030B000E9F785E0FE01379601900D928A95E1F7D8 -:1030C00049815A816B817C818D819E810E94BA1ECB -:1030D0002B960FB6F894DEBF0FBECDBFDF91CF9118 -:1030E0000895CF93882309F4C2C0C82F823859F4B9 -:1030F0000E943A1781FDBBC089E30E9494210E947F -:10310000612289E30CC0833879F40E943A1780FD6C -:10311000AEC083E50E9494210E94612283E50E9453 -:10312000D621CF910C946122843859F40E943A1729 -:1031300082FD9DC087E40E9494210E94612287E461 -:10314000EECF8CEF8C0F813A48F48C2F0E94AC2785 -:1031500081118DC08C2F0E949421E3CF80E28C0FCF -:10316000883048F4C77081E001C0880FCA95EAF73B -:103170000E941A22D6CF8BE58C0F833078F4C53AA3 -:1031800029F0C63A31F083E890E005C081E890E08C -:1031900002C082E890E0CF910C945C1788E58C0F18 -:1031A000833108F064C0C83A39F1C93A41F1CA3AEA -:1031B00049F1CB3A51F1CC3A59F1CD3A61F1C03BEA -:1031C00069F1CE3A71F1CF3A79F1C13B81F1C23B5D -:1031D00089F1C33B91F1C43B99F1C53BA1F1C63BD9 -:1031E000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B39 -:1031F000C9F180E090E038C082EE90E035C089EE01 -:1032000090E032C08AEE90E02FC085EB90E02CC0B9 -:1032100086EB90E029C087EB90E026C08CEC90E034 -:1032200023C08DEC90E020C083E891E01DC08AE8C7 -:1032300091E01AC082E991E017C084E991E014C0DE -:1032400081E292E011C083E292E00EC084E292E05B -:103250000BC085E292E008C086E292E005C087E2FA -:1032600092E002C08AE292E0CF910C947217CF9163 -:103270000895882309F44BC0823859F40E943A1704 -:1032800081FF45C089E30E9494210E94612289E365 -:103290000CC0833871F40E943A1780FF38C083E570 -:1032A0000E9494210E94612283E50E94D6210C9401 -:1032B0006122843859F40E943A1782FF28C087E4BB -:1032C0000E9494210E94612287E4EFCF9CEF980F27 -:1032D000913A58F390E2980F983050F4877091E04B -:1032E00001C0990F8A95EAF7892F0E942022DFCF2B -:1032F0009BE5980F933020F480E090E00C945C17ED -:10330000885A833120F480E090E00C94721708957D -:10331000882321F00E941A220C94612208958823A8 -:1033200021F00E9420220C94612208957F928F92B6 -:103330009F92AF92BF92CF92DF92EF92FF920F9344 -:103340001F93CF93DF931F92CDB7DEB77C01C62EBC -:10335000772EFC01058102950F70128111110E94D8 -:1033600037220E948D21882379F0112369F080E2B1 -:103370008C0D883048F082E00E9476210E948D21D9 -:1033800091E0D82ED92601C0D12CE72DE295EF701F -:10339000F0E0E05AFF4F0C94D52C872D807F072D4D -:1033A0000F70882311F00295007F112389F000230C -:1033B00009F499C180E28C0D883020F4802F0E949E -:1033C0001A2203C0802F0E942A220E9461228BC1F0 -:1033D0008C2D0E943919002309F4C3C180E28C0DA1 -:1033E000883020F4802F0E94202203C0802F0E946A -:1033F00030220E946122B5C1872D807F972D9F705A -:10340000803211F4892F03C0892F8295807FCC20D0 -:1034100021F0F1E0CF16A1F01DC0112339F00023F7 -:1034200019F1013009F50E944A229BC1002319F0CD -:10343000013009F496C189830E944D22898110C10F -:10344000112321F0063008F08CC10EC0053008F0C1 -:1034500088C106C1112359F0002331F0F70195818D -:1034600090FF41C19F7095830E9488197AC1002303 -:1034700009F4F6C03EC1872D86958695837090E04D -:10348000009719F0019761F06CC1112321F08C2D88 -:10349000972D937002C080E090E00E945C1761C19C -:1034A000112321F08C2D972D937002C080E090E0C5 -:1034B0000E94721756C18C2D112319F00E9484248A -:1034C00002C00E94EC240E9471254BC1872D83709D -:1034D00009F052C0111145C18C2D829586958770D7 -:1034E000880F880F9C2D9F70892E912CA12CB12CB8 -:1034F000082E04C0880C991CAA1CBB1C0A94D2F785 -:10350000C4FE14C00FE010E020E030E0B901A801D3 -:1035100004C0440F551F661F771F8A95D2F7CB0151 -:10352000BA01609570958095909503C060E070E059 -:10353000CB01272D26952695237030E022303105CA -:1035400069F02330310589F0682979298A299B2976 -:103550002130310571F00E94022003C168297929C8 -:103560008A299B290E941E20FCC00E940220C501BE -:10357000B4010E94E61FF5C0112319F0872D817058 -:1035800001C08695882309F4ECC08C2D8295869520 -:103590008770880F880F9C2D9F70892E912CA12CED -:1035A000B12C082E04C0880C991CAA1CBB1C0A94C0 -:1035B000D2F7C4FE14C00FE010E020E030E0B90103 -:1035C000A80104C0440F551F661F771F8A95D2F7C4 -:1035D000CB01BA01609570958095909503C060E02D -:1035E00070E0CB01272D269526952370422F50E0C1 -:1035F0004230510569F04330510589F06829792935 -:103600008A299B294130510571F00E94DC20A9C014 -:10361000682979298A299B290E94F820A2C00E9442 -:10362000DC20C501B4010E94C0209BC08C2D90E01D -:10363000FC01E05EF109E531F10508F050C0E05908 -:10364000FF4F0C94D52C0C2D0F70872D8F711123EB -:1036500021F00E945920802F07CF0E947A20802FCE -:103660000E948F197EC0112341F0053008F079C007 -:10367000872D8F710E949F2074C0063008F071C0A2 -:10368000F7CF112339F0872D8F710E94592069C01F -:103690001123C9F3872D8F710E947A2062C01123F4 -:1036A00029F0872D8F710E9444205BC00E943A2030 -:1036B00058C0112351F0172D1F71812F0E945920DE -:1036C00063E0812F0E946D214CC081E00E94762131 -:1036D000023008F446C082E00E94762142C01123E5 -:1036E00031F0002381F28C2D0E9471183AC0002322 -:1036F00089F28C2D0E94391934C0472D4F706C2DE2 -:10370000C7010E94B5030E945E1F2BC0111129C082 -:10371000472D4F7050E042305105B9F04CF441153F -:10372000510581F041305105E1F40E946C2819C027 -:103730004330510569F04430510599F48C2D0E94B5 -:10374000BE280FC00E9455280CC00E94882809C0BE -:103750000E949B2806C0472D4F706C2DC7010E9408 -:103760002B06DD20F9F00E94692180FD1BC0F701C6 -:1037700012820E9463210E945920C7010E94E11B0E -:103780000E9463210F90DF91CF911F910F91FF90C5 -:10379000EF90DF90CF90BF90AF909F908F907F90F1 -:1037A0000C947A200F90DF91CF911F910F91FF9091 -:1037B000EF90DF90CF90BF90AF909F908F907F90D1 -:1037C00008950F931F93CF93DF93EC018881998124 -:1037D0002B813C81232BB9F09F3F11F48F3F99F04F -:1037E000CE010E942A04882371F0688179818A8140 -:1037F0000E945F218C010E9414210E94DB1FB801EE -:10380000CE010E949619DF91CF911F910F910895DB -:103810000E9437220E9447220E940C220E946122AD -:103820000E9422260E94712580E090E00E945C1791 -:1038300080E090E00C9472170E9427220C94081CE0 -:103840000E945421292F22952F7030E02C30310511 -:103850004CF42A3031056CF4225031092230310504 -:10386000A8F407C02C30310569F02F30310551F034 -:103870000DC0803F69F018F4803E40F409C0843FD9 -:1038800029F406C093FB882780F9089580E0089505 -:1038900081E00895CF93DF9300D000D01F92CDB781 -:1038A000DEB70F900F900F900F900F90DF91CF9198 -:1038B0000895CF93DF9300D000D000D0CDB7DEB70E -:1038C00026960FB6F894DEBF0FBECDBFDF91CF9125 -:1038D00008951F93CF93DF93C0919D0216E08091CE -:1038E0009E02C81799F0D0E01C9FF0011D9FF00DBB -:1038F0001124E156FD4F40815181628173818481A1 -:1039000095810E94591C2196C770E9CFDF91CF9114 -:103910001F9108954091CF025091D0026091D10241 -:103920007091D2028091D3029091D4020C94591CD0 -:103930008091D40282958F7009F054C08091D10299 -:10394000882309F44FC080919D02A0919E0260914E -:10395000CF027091D0024091D2025091D302B6E0D2 -:103960008A1709F43FC090E041155105C1F17F3F2E -:1039700011F46F3FA1F1B89FF001B99FF00D112430 -:10398000E156FD4F218172132AC02081621327C0A6 -:103990002281211124C0238134812417350710F49A -:1039A00021503109241B350B283C3105C0F42091EE -:1039B000D4022F7020612093D40226E0289FF001CA -:1039C000299FF00D1124EC55FD4F80818F7080618F -:1039D00080838FEC92E00E94E11B0C94691C01969D -:1039E0008770BECF0895CF92DF92EF92FF920F9330 -:1039F0001F93CF93DF93CDB7DEB762970FB6F894DE -:103A0000DEBF0FBECDBF8C0185E0F801DE011D9643 -:103A100001900D928A95E1F7D8014C9111965C9135 -:103A2000119712966C9112971396CD90DC90149783 -:103A30003091CF027091D0028091D2029091D30246 -:103A4000009709F46BC17F3F19F43F3F09F466C149 -:103A5000E090D102EE2009F4C0C02091D402C81633 -:103A6000D90628F0F601E81BF90BCF0104C08095B8 -:103A700090958C0D9D1DFF24F394883C910578F062 -:103A8000F12C207F09F0C6C07C2DD98AC88A89898B -:103A90000E944A1C8FEC92E00E94E11BB1C0822F71 -:103AA000807F09F046C0751314C0341312C0611131 -:103AB00010C02F7020612093D4020E948A1C8FECCA -:103AC00092E00E94E11B8091D402D80115968C935C -:103AD0002EC0CD2819F15F3F11F44F3FF9F0F62EBB -:103AE00061111CC080919D0220919E0236E08217D8 -:103AF00009F45AC090E0389FF001399FF00D11246D -:103B0000E156FD4F7181571306C07081471303C002 -:103B10007281711103C001968770E9CFF62E66237A -:103B200009F418C18091D40281608093D402F12CF1 -:103B300011C1751308C0341306C0611104C080910F -:103B4000D402D801C3C04D875E878D859E856A8B60 -:103B50000E94201C6A898823E1F16623D1F120911B -:103B6000D402822F82958F7090E0029774F080913A -:103B7000CF029091D00298878F831986DB86CA8600 -:103B80002C87CE0107960E94E11B86E0F801AFEC7E -:103B9000B2E001900D928A95E1F70E94981C0E9474 -:103BA0008A1CFF24F394D6C04D875E878D859E8541 -:103BB0000E945421292F22952F7030E022303105A8 -:103BC0000CF0BCC09F7009F0B6C0805E883008F46D -:103BD000C1C0C8010E94E11BE4CFC816D90608F491 -:103BE00053C0F601E81BF90BCF01883C910508F49E -:103BF00050C0F12C7C2DD98AC88A89890E944A1C20 -:103C0000EFECF2E086E0DF011D928A95E9F70E9471 -:103C10008A1CA0C0751314C0341312C0611110C0E7 -:103C20008091D402F8018583C8010E94E11B86E0DF -:103C3000EFECF2E0DF011D928A95E9F7FE2C8AC0D5 -:103C40004D875E878D859E856A8B0E94201C6A89C0 -:103C5000882309F4BECF662309F4BBCF2091D40298 -:103C6000822F82958F7090E002970CF48ECF809116 -:103C7000CF029091D0029A8389831B82DD82CC820D -:103C80002E83CE0101967FCF809590958C0D9D1D42 -:103C9000ACCFF62E662309F49CCF75132EC03413D7 -:103CA0002CC02091D40220FD1FC0822F82958F70DE -:103CB000D9F0D80115962C9315978F3049F08F5F66 -:103CC000982F9295907F822F8F70892B15968C93C9 -:103CD000C8010E94E11B86E0F801AFECB2E0019060 -:103CE0000D928A95E1F793CF86E0F801AFECB2E050 -:103CF00001900D928A95E1F72DC04D875E878D85E5 -:103D00009E850E94201C811140CF8091D402816049 -:103D10008093D402C8010E94E11B1CC0662309F4F1 -:103D200058CF4D875E878D859E850E94201C8823F5 -:103D300009F44FCF2ACF811148CF0CC02430310570 -:103D40000CF047CF9F7009F440CFF8019581907F28 -:103D500009F03BCF8F2D62960FB6F894DEBF0FBEF1 -:103D6000CDBFDF91CF911F910F91FF90EF90DF902A -:103D7000CF9008951F93CF93DF93CDB7DEB72C97E5 -:103D80000FB6F894DEBF0FBECDBF4F83588769874B -:103D90007A878B879C87CE0107960E94F31C882325 -:103DA00069F08F8198852A853B85232BF1F19F3F10 -:103DB00009F063C08F3F09F060C037C086E0FE01A4 -:103DC0003796DE01119601900D928A95E1F76F8189 -:103DD0007885EA85FB85309741F17F3F11F46F3F8D -:103DE00021F120919E0230E0C90101968770992748 -:103DF00040919D0250E08417950709F447C06983FC -:103E00007A83FD83EC8396E0929FD001939FB00D5F -:103E10001124A156BD4FFE01319601900D929A9545 -:103E2000E1F780939E020E94691C16E080919D023A -:103E300090919E028917C1F1189FC00111248156EB -:103E40009D4F0E94F31C882379F1E0919D021E9FF3 -:103E5000F0011124E156FD4F40815181628173814F -:103E6000848195810E94591C80919D0290E0019669 -:103E70008770992780939D02D9CF4F815885698596 -:103E80007A858B859C850E94591CCFCF0E941C1C73 -:103E900010929E0210929D02EFECF2E086E0DF01AC -:103EA0001D928A95E9F7C1CF2C960FB6F894DEBF24 -:103EB0000FBECDBFDF91CF911F910895EF92FF927A -:103EC0000F931F93CF93DF938C01009709F46CC07D -:103ED000F12CEE24E394E8012196F80184918437D3 -:103EE00040F4843008F051C0813081F0823019F103 -:103EF0005BC0853709F444C0A8F19CE7980F903760 -:103F000008F052C08F770E94391941C00E5F1F4FD1 -:103F1000FE01C49180E28C0F883048F4C7708E2D6A -:103F200001C0880FCA95EAF70E943A2214C08C2F6C -:103F30000E9471182DC00E5F1F4FFE01C49180E2D8 -:103F40008C0F883058F4C7708E2D01C0880FCA9529 -:103F5000EAF70E9440220E9461221AC08C2F0E9420 -:103F6000391916C00E5F1F4FFE01C491CC2381F09A -:103F70008FE99FE00197F1F700C00000C150F6CF34 -:103F80000E5F1F4FFE01F49003C00E9471188E0156 -:103F90008F2D882309F49FCFEFE9FFE03197F1F7E8 -:103FA00000C000008150F5CFDF91CF911F910F919C -:103FB000FF90EF90089508956093D9027093DA020C -:103FC0008093DB029093DC020C94081C0F931F93E8 -:103FD0000091D9021091DA022091DB023091DC02CB -:103FE000DC01CB01802B912BA22BB32B8093D90228 -:103FF0009093DA02A093DB02B093DC021F910F9141 -:104000000C94081C0F931F930091D9021091DA02AF -:104010002091DB023091DC02DC01CB018023912373 -:10402000A223B3238093D9029093DA02A093DB02F8 -:10403000B093DC021F910F910C94081C0F931F93F7 -:104040000091D9021091DA022091DB023091DC025A -:10405000DC01CB0180279127A227B3278093D902C7 -:104060009093DA02A093DB02B093DC021F910F91D0 -:104070000C94081C1092D5021092D6021092D7020E -:104080001092D8020C94081C41E050E060E070E00F -:1040900004C0440F551F661F771F8A95D2F74093BF -:1040A000D5025093D6026093D7027093D8020C9435 -:1040B000081C41E050E060E070E004C0440F551F70 -:1040C000661F771F8A95D2F78091D5029091D6020C -:1040D000A091D702B091D802482B592B6A2B7B2B89 -:1040E0004093D5025093D6026093D7027093D802C2 -:1040F0000C94081C41E050E060E070E004C0440F04 -:10410000551F661F771F8A95D2F740955095609589 -:1041100070958091D5029091D602A091D702B0916E -:10412000D802482359236A237B234093D502509316 -:10413000D6026093D7027093D8020C94081C41E019 -:1041400050E060E070E004C0440F551F661F771F09 -:104150008A95D2F78091D5029091D602A091D7028C -:10416000B091D802482759276A277B274093D50268 -:104170005093D6026093D7027093D8020C94081C17 -:104180000F931F930091D5021091D6022091D70270 -:104190003091D802DC01CB01802B912BA22BB32BC9 -:1041A0008093D5029093D602A093D702B093D80201 -:1041B0001F910F910C94081C0F931F930091D5022F -:1041C0001091D6022091D7023091D802DC01CB01A8 -:1041D00080239123A223B3238093D5029093D60208 -:1041E000A093D702B093D8021F910F910C94081C92 -:1041F0000F931F930091D5021091D6022091D70200 -:104200003091D802DC01CB0180279127A227B32768 -:104210008093D5029093D602A093D702B093D80290 -:104220001F910F910C94081C0895CF92DF92EF928A -:10423000FF920F931F93CF93DF938C01C090D9020D -:10424000D090DA02E090DB02F090DC028091D5029F -:104250009091D602A091D702B091D802C82AD92A4B -:10426000EA2AFB2ACFE1D0E0D701C6010C2E04C018 -:10427000B695A795979587950A94D2F780FF06C0C3 -:10428000B8018C2F0E94B008019721F4219760F7A4 -:1042900080E001C08C2FDF91CF911F910F91FF9093 -:1042A000EF90DF90CF900895CF93DF93EC010E94C1 -:1042B0001521BE010E94B008DF91CF910895CB0176 -:1042C0000E94542108958091DD02859585958595FC -:1042D00008958091DD028770089598E0899F90018C -:1042E0001124262B2093DD020C9459202091DD020D -:1042F000809582238093DD02982F977069F430E0D7 -:10430000482F552747FD50952417350729F08595E7 -:10431000859585950C947A2008959091DD0297708B -:1043200081E009F480E0089590911501992321F02E -:1043300090911601911109C0209117013091180137 -:10434000F90132969FEF40E01FC0982F9695969501 -:1043500096959F3050F5E0911701F0911801E90F03 -:10436000F11D877021E030E0A90102C0440F551F04 -:104370008A95E2F7CA019181892B818308959F3F35 -:1043800039F04F5F4E3041F051915813F8CF0DC0C6 -:104390005111F7CF942FF5CF9F3F39F0F901E90F75 -:1043A000F11D97FDFA958283089508959091150166 -:1043B000992321F090911601911109C020911701C4 -:1043C00030911801F9013296205F3F4F1FC0982F9E -:1043D0009695969596959F30F0F4E0911701F0919F -:1043E0001801E90FF11D877021E030E0A90102C03A -:1043F000440F551F8A95E2F7CA0180959181892360 -:10440000818308953196E217F30729F0908198137C -:10441000F9CF1082F7CF089581E090E0E091170185 -:10442000F0911801E80FF91F108201968031910573 -:10443000A9F708959091F102892B8093F1020895D4 -:1044400080959091F10289238093F1020895109252 -:10445000F10208959091F002892B8093F002089563 -:1044600080959091F00289238093F0020895109234 -:10447000F00208959091EF02892B8093EF02089546 -:1044800080959091EF0289238093EF020895109216 -:10449000EF0208958093DE0208951092DE020895DF -:1044A0008091170190911801FC0131969C01205FC9 -:1044B0003F4F80E0919191118F5FE217F307D1F7A1 -:1044C0000895E0911701F09118018091F102808325 -:1044D000E0911701F091180190818091F002892BF1 -:1044E0008083E0911701F091180190818091EF0293 -:1044F000892B80838091DE02882361F0E09117018F -:10450000F09118019081892B80830E9450228111A3 -:104510001092DE0280911701909118010C944617B9 -:1045200020E0009739F0AC014150510984239523D4 -:104530002F5FF7CF822F089580911303843039F1D4 -:104540001092F30220E488E190E00FB6F894A89569 -:10455000809360000FBE2093600080E00E941C03E7 -:1045600080E00E944A0983B7817F846083BF83B75C -:10457000816083BF7894889583B78E7F83BF88E1FD -:104580000FB6F89480936000109260000FBE0895FB -:104590000895089580E00E941C030E94C8220E9492 -:1045A000A5090E94C9220E942A0A91E0811101C036 -:1045B00090E0892F08950E941C1C80E00E941C033B -:1045C0000E9444280E943A170C944A091F920F92A5 -:1045D0000FB60F9211248F939F93AF93BF93809147 -:1045E000F302811113C08091F4029091F502A09121 -:1045F000F602B091F7024196A11DB11D8093F4021D -:104600009093F502A093F602B093F702BF91AF9199 -:104610009F918F910F900FBE0F901F90189582E081 -:1046200084BD93E095BD9AEF97BD80936E00089589 -:104630002FB7F8948091F4029091F502A091F602C0 -:10464000B091F7022FBF0895CF92DF92EF92FF92C1 -:104650000F931F932FB7F8944091F4025091F502F5 -:104660006091F6027091F7022FBF6A017B01EE2480 -:10467000FF248C0120E030E0C016D106E206F306EC -:1046800010F4415051099A01281B390BC9011F919F -:104690000F91FF90EF90DF90CF9008951F920F92AF -:1046A0000FB60F9211248F939F93AF93BF93809176 -:1046B000F4029091F502A091F602B091F7020196F2 -:1046C000A11DB11D8093F4029093F502A093F60210 -:1046D000B093F702BF91AF919F918F910F900FBE52 -:1046E0000F901F9018950E943714F8942FEF87EAC7 -:1046F00091E6215080409040E1F700C0000087E043 -:1047000090EBDC0180931E0390931F03A093200382 -:10471000B09321039CE088E10FB6F894A8958093AC -:1047200060000FBE90936000FFCF0E94D4238111E0 -:1047300002C00E94B0230E94DF238093F2020E94F5 -:10474000E72380931C0387FB882780F98093160159 -:104750000E94E323682F70E080E090E00C94DC1F5F -:104760006DEE7EEF80E090E00E94FB2C60E082E046 -:1047700090E00E94E92C60E083E090E00E94E92C48 -:1047800060E084E090E00E94E92C60E085E090E049 -:104790000E94E92C60E086E090E00E94E92C6FEF37 -:1047A00087E090E00C94E92C80E090E00E94E32CFC -:1047B00021E08D3E9E4F09F020E0822F089582E097 -:1047C00090E00C94DB2C83E090E00C94DB2C84E0F4 -:1047D00090E00C94DB2C682F84E090E00C94E92CA2 -:1047E00086E090E00C94DB2C682F86E090E00C943F -:1047F000E92C87E090E00C94DB2C682F87E090E0B8 -:104800000C94E92C8091FA0280FF0BC060911C018E -:1048100085E0689FB001112475956795759567953A -:104820002BC081FF09C060911C0185E0689FB00129 -:1048300011247595679520C082FF07C060911C0107 -:1048400085E0689FB001112417C09091FB02992365 -:10485000D1F060911B01961788F720911C0185E02B -:10486000289F90011124929FA001939F500D112425 -:1048700070E0CA010E94C12C6038710540F46115D6 -:10488000710539F002C065E070E0862F08958FE76A -:10489000089581E008958091FA0280FF08C0609138 -:1048A0001A0170E0759567957595679521C081FF30 -:1048B00006C060911A0170E07595679519C082FF76 -:1048C00004C060911A0170E010C09091FB0299231E -:1048D000C1F0609119019617A0F780911A01899F84 -:1048E000C001112470E00E94C12C6038710528F4C9 -:1048F0006115710521F0862F08958FE7089581E0F5 -:10490000089561E070E0F4CF803F21F40E9402241A -:10491000819504C0813F29F40E9402248093FE0205 -:104920000895823F21F40E940224819504C0833FB0 -:1049300029F40E9402248093FD020895893F19F40E -:104940000E944B2405C08A3F31F40E944B2481957C -:104950008093FF0208958B3F21F40E944B248195A0 -:1049600004C08C3F29F40E944B24809300030895D7 -:10497000843F21F48091FC02816017C0853F21F4BF -:104980008091FC02826011C0863F21F48091FC027C -:1049900084600BC0873F21F48091FC02886005C0D1 -:1049A000883F31F48091FC0280618093FC0208957D -:1049B0008D3F21F48091FA0281600BC08E3F21F47B -:1049C0008091FA02826005C08F3F29F48091FA023B -:1049D00084608093FA020895803F39F48091FE024A -:1049E00087FF6CC01092FE0269C0813F29F480915C -:1049F000FE021816BCF362C09091FD02823F29F4BA -:104A000097FF5CC01092FD0259C0833F19F419163C -:104A1000CCF354C0893F41F48091FF0218160CF08A -:104A20004DC01092FF024AC08A3F29F48091FF02D4 -:104A300087FF44C0F6CF8B3F39F48091000387FF96 -:104A40003DC0109200033AC08C3F29F480910003CE -:104A50001816BCF333C0843F21F48091FC028E7F92 -:104A600017C0853F21F48091FC028D7F11C0863FE5 -:104A700021F48091FC028B7F0BC0873F21F4809151 -:104A8000FC02877F05C0883F31F48091FC028F7E55 -:104A90008093FC0213C08D3F21F48091FA028E7F37 -:104AA0000BC08E3F21F48091FA028D7F05C08F3FAD -:104AB00029F48091FA028B7F8093FA028091FD02A3 -:104AC00081110EC08091FE0281110AC08091FF0207 -:104AD000811106C080910003811102C01092FB0277 -:104AE00008958CEF92E00E9451170E941823909332 -:104AF000F9028093F80208951F93CF93DF9380917A -:104B0000F8029091F9020E942423AC019091FB02DB -:104B1000992321F020911D0130E006C020911E0153 -:104B20008AE0289F900111244217530708F486C099 -:104B30008091FD02C091FE02D091FF02109100030E -:104B4000811107C0C11176C0D11174C0111172C09A -:104B500075C09F3F19F09F5F9093FB02181624F4D5 -:104B60000E9402248093FD028091FD0287FF05C010 -:104B70000E94022481958093FD021C1624F40E9459 -:104B800002248093FE028091FE0287FF05C00E94EE -:104B9000022481958093FE026091FD02662339F123 -:104BA000C091FE02CC2319F1772767FD7095872FFE -:104BB000972F0E94E32923E333E343E35FE30E945B -:104BC000F32A0E94B0296093FD026C2F772767FDBE -:104BD0007095872F972F0E94E32923E333E343E364 -:104BE0005FE30E94F32A0E94B0296093FE021D1623 -:104BF00024F40E944B248093FF028091FF0287FFE0 -:104C000005C00E944B2481958093FF02111624F465 -:104C10000E944B24809300038091000387FF05C00E -:104C20000E944B24819580930003DF91CF911F91C7 -:104C30000C9471259F3F09F08ECF96CFDF91CF91D5 -:104C40001F910895ECEFF2E085E0DF011D928A9557 -:104C5000E9F71092FB021092FA020895833081F175 -:104C600028F4813059F08230D1F00895853009F46C -:104C700049C0B8F1863009F456C0089580911E01EC -:104C8000262F30E0280F311D2F3F310524F4680F07 -:104C900060931E0108958FEF80931E010895809107 -:104CA0001D01262F30E0280F311D2F3F310524F440 -:104CB000680F60931D0108958FEF80931D01089583 -:104CC00080911C01262F30E0280F311D2F3F310528 -:104CD00024F4680F60931C0108958FEF80931C01EA -:104CE000089580911B01262F30E0280F311D2F3FA2 -:104CF000310524F4680F60931B0108958FEF8093B2 -:104D00001B01089580911A01262F30E0280F311DD4 -:104D10002F3F310524F4680F60931A0108958FEF37 -:104D200080931A01089580911901262F30E0280FF1 -:104D3000311D2F3F310524F4680F60931901089548 -:104D40008FEF809319010895833011F128F4813099 -:104D500049F0823091F00895853081F120F186305C -:104D6000C1F1089580911E01681720F4861B80937D -:104D70001E01089510921E01089580911D0168176B -:104D800020F4861B80931D01089510921D01089543 -:104D900080911C01681720F4861B80931C010895E4 -:104DA00010921C01089580911B01681720F4861B46 -:104DB00080931B01089510921B01089580911A01A0 -:104DC000681720F4861B80931A01089510921A0127 -:104DD000089580911901681720F4861B80931901AA -:104DE00008951092190108950F931F93873208F0C8 -:104DF00048C08E3108F08DC0803109F477C008F5C5 -:104E0000873009F461C068F4863009F09DC0809154 -:104E1000F202817F8E7F8093F20281E08093020311 -:104E200094C08B3009F489C08E3009F08DC0809118 -:104E3000F20282FB222720F991E0922790FB82F96F -:104E40005EC0863109F479C060F4813109F07CC01C -:104E50000E941C1C9091160181E089278093160105 -:104E60006CC0893109F469C08B3109F06DC0809143 -:104E7000F20281FB222720F991E0922790FB81F931 -:104E80003EC0883309F459C050F4893209F457C040 -:104E9000853309F454C0873209F451C055C08334B6 -:104EA00009F44DC028F48A3308F44EC0895332C047 -:104EB000883409F049C00E941C1C0E945A0A0E94B2 -:104EC00021040E94732339C09091F202892F8095AA -:104ED000817080FB90F929F0966098609093F202BF -:104EE00034C0997F977F9093F20227C08091F2029D -:104EF00083FB222720F991E0922790FB83F980938E -:104F0000F2029923D1F08091F20281608093F20243 -:104F100014C08D5141E050E060E070E08A019B01D7 -:104F200004C0000F111F221F331F8A95D2F7C90139 -:104F3000B8010E94DC1F0E941C1C81E006C061E0D9 -:104F400070E080E090E0F5CF80E01F910F91089530 -:104F500080E0089580E00895CF93C82F80910203E8 -:104F6000813069F018F08230C9F184C0E0911701F6 -:104F7000F09118018081823209F07EC007C0E09173 -:104F80001701F09118018081823261F48C2F0E9408 -:104F9000A827811104C08C2F0E94F4261DC081E037 -:104FA00090E01AC08C2F0E94AA27811114C0C4312E -:104FB00079F048F4CB3079F0C03109F061C082E07B -:104FC0008093020308C0C93219F0C83321F058C0D9 -:104FD0001092020355C081E0817054C0C93291F132 -:104FE00020F5C43179F1B0F4C73009F047C08EE143 -:104FF00080931E0182E380931D018AE080931C014F -:1050000084E180931B0188E080931A0188E28093F9 -:10501000190134C0CE51C63088F5EC2FF0E0EA54C7 -:10502000FE4F80818093010329C0CE34E9F020F443 -:10503000CB3421F56AE013C0C13579F0C235F1F403 -:1050400061E00DC080910103882319F010920103E3 -:1050500015C081E08093020315C061E006C0809115 -:1050600001030E942E260AC06AE0809101030E947B -:10507000A42604C01092020380E004C081E002C0B4 -:1050800080E0AACFCF9108950E94D423811102C05D -:105090000E94B0230E94F02380931D0380FF02C072 -:1050A000869501C080E00C941C0380911D03982F0D -:1050B0009695292F30E0233031054CF49F5F990FEE -:1050C0008170892B816080931D030E94F42380915D -:1050D0001D0386950C941C0380911D03982F9695B3 -:1050E00091F09158990F8170892B80931D038E7FC9 -:1050F00091E009F490E080911D0390FB80F980938A -:105100001D030E94F42380911D0386950C941C03BB -:1051100080911D03982F909590FB80F980931D033B -:105120000E94F42380911D0380FF02C0869501C078 -:1051300080E00C941C0390911D03892F86958F5F4E -:105140008F779170843028F4880F892B80931D030A -:1051500002C090931D0380911D038E7F91E009F49E -:1051600090E080911D0390FB80F980931D030E94C5 -:10517000F42380911D0386950C941C0320911D033C -:10518000922F96958927982F990F822F8170892BBE -:1051900080931D038E7F91E009F490E080911D03C0 -:1051A00090FB80F980931D030E94F42380911D03DE -:1051B00086950C941C0380911D0386950895505884 -:1051C000BB27AA270ED0D1C1C2D130F0C7D120F061 -:1051D00031F49F3F11F41EF4B7C10EF4E095E7FBE4 -:1051E0009FC1E92FD3D180F3BA17620773078407F1 -:1051F000950718F071F49EF5EBC10EF4E0950B2EB7 -:10520000BA2FA02D0B01B90190010C01CA01A00118 -:105210001124FF27591B99F0593F50F4503E68F173 -:105220001A16F040A22F232F342F4427585FF3CFB4 -:10523000469537952795A795F0405395C9F77EF485 -:105240001F16BA0B620B730B840BBAF09150A1F0CE -:10525000FF0FBB1F661F771F881FC2F70EC0BA0F54 -:10526000621F731F841F48F4879577956795B795DC -:10527000F7959E3F08F0B3CF9395880F08F09927D4 -:10528000EE0F97958795089527D108F481E008954A -:105290000CD06BC163D140F05AD130F021F45F3FA4 -:1052A00019F03EC1511195C14FC170D198F39923A6 -:1052B000C9F35523B1F3951B550BBB27AA276217DA -:1052C0007307840738F09F5F5F4F220F331F441F1F -:1052D000AA1FA9F333D00E2E3AF0E0E830D0915057 -:1052E0005040E695001CCAF729D0FE2F27D0660F44 -:1052F000771F881FBB1F261737074807AB07B0E883 -:1053000009F0BB0B802DBF01FF2793585F4F2AF098 -:105310009E3F510568F004C15CC15F3FECF3983ECD -:10532000DCF3869577956795B795F7959F5FC9F7F5 -:10533000880F911D9695879597F90895E1E0660F7E -:10534000771F881FBB1F621773078407BA0720F0F7 -:10535000621B730B840BBA0BEE1F88F7E095089560 -:1053600004D06894B11135C1089518D188F09F57C1 -:1053700090F0B92F9927B751A0F0D1F0660F771FA1 -:10538000881F991F1AF0BA95C9F712C0B13081F081 -:105390001FD1B1E008951CC1672F782F8827B85F0F -:1053A00039F0B93FCCF3869577956795B395D9F7E2 -:1053B0003EF490958095709561957F4F8F4F9F4FEC -:1053C0000895E89409C097FB3EF4909580957095F8 -:1053D00061957F4F8F4F9F4F9923A9F0F92F96E941 -:1053E000BB279395F695879577956795B795F111B6 -:1053F000F8CFFAF4BB0F11F460FF1BC06F5F7F4F53 -:105400008F4F9F4F16C0882311F096E911C0772364 -:1054100021F09EE8872F762F05C0662371F096E86D -:10542000862F70E060E02AF09A95660F771F881F3C -:10543000DAF7880F9695879597F9089588D018F030 -:1054400011F08CD038F480C0C4C0E92F9FD0B0F3E5 -:105450005523C9F3E7FB6217730784079507A8F183 -:1054600099F3E92FFF2788232AF03197660F771FDA -:10547000881FDAF7952F5527442332F0915050407A -:10548000220F331F441FD2F7BB27E91BF50B621B0A -:10549000730B840BB109C1F222F4620F731F841FD6 -:1054A000B11D31972AF0660F771F881FBB1FEFCF02 -:1054B000915050405AF041F0882332F0660F771F28 -:1054C000881F91505040C1F7939530C086957795CD -:1054D00067959F5FD9F7F8CF990F0008550FAA0B72 -:1054E000E0E8FEEF16161706E807F907C0F01216F7 -:1054F0001306E407F50798F0621B730B840B950BFA -:1055000039F40A2661F0232B242B252B21F408954E -:105510000A2609F4A140A6958FEF811D811D0895EB -:1055200097F99F6780E870E060E008959F3F31F051 -:10553000915020F4879577956795B795880F911DC1 -:105540009695879597F908959FEF80EC089500242C -:105550000A941616170618060906089500240A94D8 -:1055600012161306140605060895092E0394000C5E -:1055700011F4882352F0BB0F40F4BF2B11F460FFED -:1055800004C06F5F7F4F8F4F9F4F089557FD905816 -:10559000440F551F59F05F3F71F04795880F97FBF7 -:1055A000991F61F09F3F79F08795089512161306B1 -:1055B0001406551FF2CF4695F1DF08C016161706E0 -:1055C0001806991FF1CF8695710561050894089515 -:1055D000E894BB2766277727CB0197F908957CDFEE -:1055E00008F48FEF08950BD0C0CFB1DF28F0B6DFFD -:1055F00018F0952309F094CFA7CF1124EACFC6DF86 -:10560000A0F3959FD1F3950F50E0551F629FF001D5 -:10561000729FBB27F00DB11D639FAA27F00DB11D2E -:10562000AA1F649F6627B00DA11D661F829F2227B7 -:10563000B00DA11D621F739FB00DA11D621F839F3E -:10564000A00D611D221F749F3327A00D611D231F14 -:10565000849F600D211D822F762F6A2F11249F5762 -:1056600050408AF0E1F088234AF0EE0FFF1FBB1F85 -:10567000661F771F881F91505040A9F79E3F510524 -:1056800070F04ECFA6CF5F3FECF3983EDCF38695EB -:1056900077956795B795F795E7959F5FC1F7FE2BCF -:1056A000880F911D9695879597F90895FA01EE0F49 -:1056B000FF1F30962105310599F16115710561F4DF -:1056C0008038BFE39B0749F168949038810561F009 -:1056D0008038BFEF9B0741F0992342F5FF3FE1057A -:1056E0003105210511F1E8940894E795D901AA2321 -:1056F00029F4AB2FBE2FF85FD0F310C0FF5F70F41A -:10570000A695E0F7F73950F019F0FF3A38F49F7793 -:105710009F930CD00F9007FC905808953EF014CF43 -:1057200060E070E080E89FE308954FE79F775F9324 -:105730004F933F932F939ED02F913F914F915F9125 -:1057400052DF05C019F40EF0EBCE42CFFDCE26DFBE -:10575000C8F39638C0F707F80F92E8942BE33AEABB -:1057600048EB5FE74EDF0F920F920F924DB75EB797 -:105770000F92C0D0EAE0F1E016D04F915F91EF9127 -:10578000FF91E595EE1FFF1F49F0FE57E0684427A3 -:10579000EE0F441FFA95E1F74195550B32D00F906B -:1057A00007FE26C00895DF93CF931F930F93FF92B8 -:1057B000EF92DF927B018C01689405C0DA2EEF0135 -:1057C0001EDFFE01E894A5912591359145915591F3 -:1057D000AEF3EF0106DDFE019701A801DA9479F737 -:1057E000DF90EF90FF900F911F91CF91DF9108957F -:1057F0009B01AC0160E070E080E89FE349CD90CE72 -:1058000095CECCDEE8F39923D9F3940F511DBBF369 -:105810009150504094F059F0882332F0660F771F72 -:10582000881F91505040C1F79E3F510544F7880FA3 -:10583000911D9695879597F908955F3FACF0983E36 -:105840009CF0BB27869577956795B79508F4B1606E -:105850009395C1F7BB0F58F711F460FFE8CF6F5F66 -:105860007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE05 -:10587000689456CE93DEC8F39923D1F3C6F3DF9331 -:10588000CF931F930F93FF92C92FDD2788232AF010 -:105890002197660F771F881FDAF720E030E040E895 -:1058A0005FEB9FE3883920F0803E30F021968F77C0 -:1058B00087DCE2E3F1E003C083DCEFE5F1E073DFD6 -:1058C0008B01BE01EC01FB2E6F5771097595771F97 -:1058D000880B990B78DD28E132E741E35FE38FDE47 -:1058E000AF2D9801AE01FF900F911F91CF91DF91E5 -:1058F00078DC3BCEFA01DC01AA0FBB1F9B01AC0197 -:10590000BF5728F422273327442750781FC0B751A8 -:1059100088F4AB2F0024469537952795011CA39555 -:10592000D2F3002069F0220F331F441FB395DAF33E -:105930000DD045CC61307105A0E88A07B94630F436 -:105940009B01AC016627772788279078309621F055 -:1059500020833183428353830895AA1BBB1B51E1EB -:1059600007C0AA1FBB1FA617B70710F0A61BB70BCF -:10597000881F991F5A95A9F780959095BC01CD0174 -:10598000089597FB072E16F4009407D077FD09D0F1 -:105990000E94AD2C07FC05D03EF4909581959F4F59 -:1059A0000895709561957F4F0895EE0FFF1F059044 -:1059B000F491E02D0994F999FECF92BD81BDF89A3A -:1059C000992780B50895A8E1B0E042E050E00C943A -:1059D000032D262FF999FECF92BD81BDF89A01972C -:1059E00000B4021639F01FBA20BD0FB6F894FA9A27 -:1059F000F99A0FBE08950196272F0E94EA2C0C9465 -:105A0000E92CDC01CB01FC01F999FECF06C0F2BD07 -:105A1000E1BDF89A319600B40D9241505040B8F76C -:065A20000895F894FFCF89 -:105A2600640007000CFF0000003F643E10CC10A984 -:105A360010751041100101DF022808140A321E00F9 -:105A460002040507090B0C0E1011131517181A1C62 -:105A56001D1F2123242628292B2D2F30323435379C -:105A6600393B1F0F03764F5F6F7F496943790959A9 -:105A760053633149803F5D8B803FF8BF803FCAE169 -:105A8600803F73ED803FCAE1803FF8BF803F5D8B6A -:105A9600803F3149803F0000803FF16D7F3F75EACE -:105AA6007E3F4C827E3F833F7E3F84287E3F833FFE -:105AB6007E3F4C827E3F75EA7E3FF16D7F3F000060 -:105AC600803F3F4D36394305F604C00487041A0467 -:105AD60033044C04650401020304050607080900A3 -:00000001FF diff --git a/keyboard/planck/keymaps/charlie/compiled.hex b/keyboard/planck/keymaps/charlie/compiled.hex deleted file mode 100644 index 335b49d898..0000000000 --- a/keyboard/planck/keymaps/charlie/compiled.hex +++ /dev/null @@ -1,1445 +0,0 @@ -:100000000C947D020C94C1020C94C1020C94C102A8 -:100010000C94C1020C94C1020C94C1020C94C10254 -:100020000C94C1020C94C1020C945F140C94311511 -:100030000C9493220C94C1020C94C1020C94C10242 -:100040000C94C1020C9423030C94C1020C94C102C1 -:100050000C94C1020C94FB220C94C1020C94C102BA -:100060000C94C1020C94C1020C94C1020C94C10204 -:100070000C94C1020C94C1020C94C1020C94C102F4 -:100080000C94D40A0C94C1020C94C1020C94C102C9 -:100090000C94C1020C94C1020C94C1020C94C102D4 -:1000A0000C94C1020C94C1020C94C1029E15C0159F -:1000B000AE16C015AE1605162816AE167D1690168D -:1000C0007A197A19A919A919E819081A5E1B5E1B71 -:1000D000131A5E1BC31AC31A2A1B331B5E1B581B41 -:1000E000D01AD01AD01AD01AD01AD01AD01AD01AC0 -:1000F000D01AD01AD01AD01AD01AD01AD01AD01AB0 -:10010000E01AEE1AF51AFC1A061B07634236B79B73 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000018C9F -:1001D000028CF1A242070C0310022A041B074507F8 -:1001E0002D010B0116013E033B013B0327010B03CD -:1001F0001603400741071B032D022A032E021D018F -:100200001C011501290014001A0008001500170030 -:100210001C0018000C001200130002202A00040029 -:100220001600070009000A000B000D000E000F0069 -:10023000330034002B001D001B00060019000500D0 -:100240001100100036003700380028004C00E00094 -:100250000000E100E2002C000000500051005200BC -:100260004F0000004C0027001E001F00200021004E -:1002700022002300240025002600012012000A008D -:100280001600180017001B207000430044004000B7 -:10029000410042002B000420052006203A000720E0 -:1002A0006D006E0072006F0071000920360037008B -:1002B00015000B2003202C000C203B0008203C00E4 -:1002C00069000000290019201A2000000000000029 -:1002D000000000000000000000000000000000001E -:1002E00000000000000000000000000000001320DB -:1002F00014201520060000001620052000001720FD -:1003000000000000000000000D2000000E200F2063 -:100310001020112003202C00122000000000730088 -:100320000000000028035400680065002000500011 -:100330006C0061006E0063006B0020004B006500E4 -:10034000790062006F0061007200640000002C03FD -:100350004F007200740068006F006C0069006E004E -:1003600065006100720020004B00650079006200AA -:100370006F00610072006400730000000403090450 -:1003800009026D00040100A0FA0904000001030144 -:100390000100092111010001223F00070581030826 -:1003A000000A0904010001030102000921110100F2 -:1003B00001224D000705820308000A09040200011A -:1003C0000300000009211101000122360007058306 -:1003D0000308000A090403000103000000092111B9 -:1003E00001000122390007058403100001120110E9 -:1003F0000100000008EDFE6060010001020001053F -:10040000010906A101050719E029E7150025019555 -:1004100008750181020508190129059505750191E5 -:10042000029501750391010507190029771500252B -:1004300001957875018102C005010980A10185023D -:1004400016010026B7001A01002AB70075109501A1 -:100450008100C0050C0901A1018503160100269C3D -:10046000021A01002A9C02751095018100C0050145 -:100470000902A1010901A1000509190129051500B9 -:10048000250195057501810295017503810105011D -:10049000093009311581257F9502750881060938D3 -:1004A0001581257F950175088106050C0A3802150E -:1004B00081257F950175088106C0C005010906A147 -:1004C00001050719E029E715002501950875018147 -:1004D0000295017508810105081901290595057521 -:1004E0000191029501750391010507190029FF1576 -:1004F0000025FF950675088100C011241FBECFEFAF -:10050000DAE0DEBFCDBF04B603FE24C080911E0337 -:1005100090911F03A0912003B09121038730904B4D -:10052000A740B04BB9F410921E0310921F03109213 -:1005300020031092210314BE84B7877F84BF88E113 -:100540000FB6F89480936000109260000FBEE0E058 -:10055000F8E3099511E0A0E0B1E0E0E8F9E502C0B8 -:1005600005900D92A03CB107D9F713E0A0ECB1E0E3 -:1005700001C01D92AE31B107E1F70E94A5110C94A4 -:10058000BE2C0C9400000895089581E0089508950C -:100590000C94C4020C94C5020C94C7020E948828D3 -:1005A00023E030E0281B3109220F2093C401089575 -:1005B000282F2F9880918000211108C0877F809379 -:1005C000800010928D0010928C001BC08860809378 -:1005D0008000233019F48FEF9FEF0FC083E090E08D -:1005E000821B9109880F991F2FEF3FEFA90102C0CD -:1005F000569547958A95E2F7CA0190938D008093AE -:100600008C000C94CE020E94CE0284E08093C30141 -:100610001092C0010895279A2F988FEF9FEF909323 -:100620008700809386008AE08093800089E1809330 -:1006300081000E94F1270C9403030E940B036E9A21 -:10064000769A0C94C3021F920F920FB60F92112448 -:100650002F933F938F939F93EF93FF93E091C1016B -:10066000F091C201CF0101969093C2018093C10124 -:100670000090C30102C0F695E7950A94E2F7EF7384 -:100680008091C001823019F4E03251F404C081300D -:1006900039F4EF3329F480916F008D7F80936F00E0 -:1006A000F0E0E457FE4FE49121E031E0E29FC00129 -:1006B000E39F900D11240090C40102C09695879588 -:1006C0000A94E2F790938D0080938C00FF91EF9154 -:1006D0009F918F913F912F910F900FBE0F901F9080 -:1006E000189581E008950C94710308950C941D03EE -:1006F00080911502882309F448C08091D10190911E -:10070000D201009779F40E94C5229093D201809380 -:10071000D1018091D30190E0009771F48091D401D0 -:1007200090E00AC00E94D122209100013091010185 -:100730002817390740F329C00197880F991F880FA0 -:10074000991FFC01EB52FE4F608171818281938180 -:100750000E943A0AE091D30184E0E89FF00111245D -:10076000EB52FE4F60817181828193814FE050E0B6 -:100770000E94F20D8091D30190E001966091D40126 -:1007800070E00E946E2C8093D3010C94C8021092EA -:1007900017020C94070A0895089581E080931702C8 -:1007A0000C94CC03089508958F929F92AF92BF92BC -:1007B000EF92FF920F931F93CF93DF93CDB7DEB7E6 -:1007C000A3970FB6F894DEBF0FBECDBF7C01FC012E -:1007D00000811181C8010E94C220B8010E94D90580 -:1007E0008C01B7010E947303882309F4CCC1003245 -:1007F000F0E51F0741F4F7018281882309F458C00E -:100800000E94560EC0C10132F0E51F0741F4F70106 -:100810008281882309F44CC00E945F0EB4C1023269 -:10082000F0E51F0751F4F7018281882309F440C0E5 -:100830000E94520E8111F0CFE3CF0332F0E51F0783 -:1008400039F4F7018281882399F10E94CD039BC17D -:100850000432F0E51F0739F4F7018281882341F162 -:100860000E94C70390C10532F0E51F0749F4F70164 -:1008700082818823E9F0809117028111F1CFE5CFC1 -:100880000632F0E51F0739F4F7018281882381F0F1 -:100890000E94660E0AC00732F0E51F0749F4F7010F -:1008A0008281882329F00E94710E0E94D3036BC1BC -:1008B00080911702811105C0F70182818111CFC09B -:1008C00018C1003E110579F4F7018281882309F4EB -:1008D0004DC00E94070A81E0809316021092150213 -:1008E0001092D40150C1023E110559F4F7018281E2 -:1008F0008823E1F10E94070A109216021092150255 -:1009000042C1033E110591F4F7018281882371F100 -:100910000E94070A1092160281E08093150210923D -:10092000D3011092D2011092D1012DC102351105CF -:1009300059F4F7018281882309F425C180910001CF -:10094000909101010A970DC00135110579F4F70165 -:100950008281882309F417C18091000190910101DF -:100960000A9690930101809300010DC1409104010A -:1009700083E2EFE1F1E0DE01119601900D928A959C -:10098000E1F7F701808121E030E02C0F3D1F280FB7 -:10099000311DC9012091020130910301FC01E20FD8 -:1009A000F31F6081772767FD7095640F711D88279D -:1009B00077FD8095982F0E94902920E030E040E458 -:1009C00051E40E94F5284B015C01F701218184E08C -:1009D00090E0821B9109BC01882777FD8095982FB4 -:1009E0000E9490299B01AC01C501B4010E948D2891 -:1009F0009B01AC0160E070E080E090E40E94032B7A -:100A000020E030E04CED50E40E94A02A4B015C0154 -:100A1000F70182818823D1F04FE050E0C501B40195 -:100A20000E94F20D809116028823A1F08091D401DA -:100A300024E0829FF0011124EB52FE4F80829182CC -:100A4000A282B3828F5F8093D40104C0C501B40138 -:100A50000E943A0A0F3F110508F02ECF94C08091F2 -:100A6000D00181111FC0043130E5130709F051C0D6 -:100A70000E94750381E08093D0010E94C52290936B -:100A8000CF018093CE011092C7011092C90110923C -:100A9000C8011092CB011092CA011092CD011092A0 -:100AA000CC0171C08091CE019091CF010E94D122E2 -:100AB000883C910570F48091C701E82FF0E0EE0FBB -:100AC000FF1FE853FE4F118300838F5F8093C701A0 -:100AD0005AC0043880E5180721F00538104501F1A7 -:100AE0003AC0F7018281882341F01092C50182E06B -:100AF0001EC0043830E5130759F58091C5018111F6 -:100B000006C086E20E941E1886E20E94E61882E075 -:100B10001CC00438F0E51F0741F305381045D9F42F -:100B2000F7018281882331F01092C60180E20E9491 -:100B3000351929C08091C601811106C087E20E9443 -:100B40001E1887E20E94E61880E20E943C191BC032 -:100B50000538104529F381E08093C5018093C601D3 -:100B6000C701A3960FB6F894DEBF0FBECDBFDF91CD -:100B7000CF911F910F91FF90EF90BF90AF909F90FA -:100B80008F900C94CA0280E0A3960FB6F894DEBF53 -:100B90000FBECDBFDF91CF911F910F91FF90EF90CE -:100BA000BF90AF909F908F90089580E090E008955F -:100BB00008959CE0799FF001112490E3899FE00D56 -:100BC000F11D1124E60FF11DEE0FFF1FEC5FFD4F2D -:100BD000859194910895880F991FFC01E45BFF4F64 -:100BE000859194910895880F991FFC01E453FE4F5D -:100BF0008591949108950F931F93CF93DF93EC0108 -:100C0000811521E39207A0F5C11580E3D80708F00C -:100C1000D7C0C83ED105D8F4C03ED10508F007C200 -:100C2000C83AD10578F4C53AD10508F06AC0C13098 -:100C3000D10509F463C008F4F7C1C430D10508F048 -:100C4000F6C1F2C1CB3BD10508F466C0EDC1C115B8 -:100C500090E2D90708F0AFC0C11521E0D20708F033 -:100C6000E6C1C03FD10508F4DFC18E0110651FC287 -:100C7000C03880E5D80700F5C03790E5D90708F0FF -:100C8000A3C0C11520E5D20709F4ACC050F4CE01D1 -:100C9000905480319F4008F0C7C1DF708E01106A08 -:100CA00006C2C13080E5D80709F4AEC0C43190E572 -:100CB000D90708F4AFC0B8C1C33820E5D20709F49A -:100CC0008EC050F4C13890E5D90709F482C008F00D -:100CD00083C000E011EDEBC1C03181E5D80708F415 -:100CE000A3C1C11597E5D90708F436C1CE019057C5 -:100CF0008115904108F098C1DF7093C101E010E0C8 -:100D0000D6C1C53AD10509F494C1C63AD10509F056 -:100D100093C102E810E4CBC1C83AD10509F48FC1F0 -:100D2000C93AD10509F48EC1CA3AD10509F48DC179 -:100D3000CB3AD10509F48CC1CC3AD10509F48BC169 -:100D4000CD3AD10509F48AC1C03BD10509F489C166 -:100D5000CE3AD10509F488C1CF3AD10509F487C14B -:100D6000C13BD10509F486C1C23BD10509F485C157 -:100D7000C33BD10509F484C1C43BD10509F483C147 -:100D8000C53BD10509F482C1C63BD10509F481C137 -:100D9000C73BD10509F480C1C83BD10509F47FC127 -:100DA000C93BD10509F47EC1CA3BD10509F47DC117 -:100DB00000E014E47CC1CE019F700E94F30578C16D -:100DC000DD278E01106C73C1CF70DD278E01146D8D -:100DD0006EC100E010ED6BC100E012ED68C100E0F3 -:100DE00013ED65C10E94C91B0E94070A0E94CB0334 -:100DF0008FEF94E32CE0815090402040E1F700C059 -:100E000000000E94202353C18091F20281608093F0 -:100E1000F2024DC10E948123811102C00E945D2314 -:100E20000E94942390E090931D0380931C03C23092 -:100E300080E5D80721F480911C03816086C0C4300E -:100E400090E5D90721F480911C0382607EC0C630F2 -:100E500020E5D20721F480911C03846076C0C8305D -:100E600080E5D80719F480911C0327C0CA3090E5AB -:100E7000D90721F480911C03806167C0CC3020E544 -:100E8000D20721F480911C0380625FC0CE3080E5E0 -:100E9000D80721F480911C03806457C0C03190E5CD -:100EA000D90721F480911C0380684FC0C23120E52E -:100EB000D20729F480911C038460886046C0C33047 -:100EC00080E5D80721F480911C038E7F3EC0C53099 -:100ED00090E5D90721F480911C038D7F36C0C7307F -:100EE00020E5D20721F480911C038B7F2EC0C930EE -:100EF00080E5D80719F480911C0326C0CB3090E51B -:100F0000D90721F480911C038F7E1FC0CD3020E5CE -:100F1000D20721F480911C038F7D17C0CF3080E56C -:100F2000D80721F480911C038F7B0FC0C13190E55D -:100F3000D90721F480911C038F7707C0C331D045B6 -:100F400031F480911C038B7F877F80931C038091F9 -:100F50001C030E949823ABC08D2F99278F7099276F -:100F600081309105D9F49E012370332702C0880F88 -:100F7000991F2A95E2F79C688E0144E0000F111F2B -:100F80004A95E1F700271370802B912B53E0CC0F8B -:100F9000DD1F5A95E1F7C076DD272FC0823091051D -:100FA00031F4DC2FCC278E01016F106A80C08330B2 -:100FB000910569F4CE018370992701E010E002C029 -:100FC000000F111F8A95E2F7C8019C680FC084309A -:100FD0009105B9F4CE018370992701E010E002C0B9 -:100FE000000F111F8A95E2F7C8019A6823E0CC0F21 -:100FF000DD1F2A95E1F7C07ED7708C010C2B1D2BCD -:1010000056C08530910531F4DC2FCC278E01046F5A -:10101000106A4DC0069709F04AC0CF71DD27DC2F5A -:10102000CC278E01106243C000E010E040C08E016A -:101030003EC001E810E43BC003E810E438C002EE13 -:1010400014E435C009EE14E432C00AEE14E42FC0F3 -:1010500005EB14E42CC006EB14E429C007EB14E400 -:1010600026C00CEC14E423C00DEC14E420C003E80B -:1010700015E41DC00AE815E41AC002E915E417C01A -:1010800004E915E414C001E216E411C003E216E419 -:101090000EC004E216E40BC005E216E408C006E246 -:1010A00016E405C007E216E402C00AE216E4C8012D -:1010B000DF91CF911F910F9108959CE0799FF001EE -:1010C000112490E3899FE00DF11D1124E60FF11D1D -:1010D000EE0FFF1FEC5FFD4F85919491803E9105CF -:1010E000E0F4803C910558F58133910509F46FC017 -:1010F00048F48932910509F463C08A32910509F4F4 -:101100006DC072C089339105E9F082389105D1F044 -:101110008533910509F44DC067C0833E910581F187 -:1011200038F4803E9105B9F0823E9105D9F05CC05B -:10113000863E910561F1873E9105A1F155C00E945F -:10114000EB05089520911C0320FD02C021FF4CC037 -:1011500080EE90E049C080911C0380FFF9CF89E3C5 -:1011600090E042C080911C0382FF0EC080911C035E -:1011700084FF03C080E090E037C083EE90E034C08D -:1011800080911C0382FFF2CF82EE90E02DC080910F -:101190001C0383FF0BC080911C0384FDEBCF87EE03 -:1011A00090E022C080911C0383FFF5CF86EE90E093 -:1011B0001BC080911C0385FF07C089E290E014C02A -:1011C00080911C0385FFF9CF85E390E00DC08091ED -:1011D0001C0386FF07C08AE290E006C080911C03D2 -:1011E00086FFF9CF81E390E00E94FB0508950C94FF -:1011F000CC02E82FF0E0E25BFE4F8081E82FEF7039 -:10120000F0E082958F7021E030E0A90102C0440F28 -:10121000551F8A95E2F740A308950F931F93CF932C -:10122000DF9385B7806885BF85B7806885BFC3E0D9 -:10123000D0E001E010E0FE01E25BFE4F8081E82F8C -:10124000EF70F0E021A182958F70A80102C0440FD9 -:10125000551F8A95E2F7CA01822B81A38C2F0E9429 -:10126000F908219740F78BE090E061E070E0FC0125 -:10127000EE5BFE4F2081E22FEF70F0E042A122955D -:101280002F70DB0102C0AA0FBB1F2A95E2F79D0158 -:10129000242B22A3019758F7DF91CF911F910F9133 -:1012A0000C947603EF92FF920F931F93CF93DF93EB -:1012B00000E212E0C3E0EE24E394F12CD5E08C2FA1 -:1012C0000E94F9088BE090E040E050E0FC01EE5B0A -:1012D000FE4F6081E62FEF70F0E020A130E06295D4 -:1012E0006F7002C0359527956A95E2F720FD09C019 -:1012F0009701082E02C0220F331F0A94E2F7422BF7 -:10130000532B019718F7F801929182918F0184175E -:10131000950721F051834083D09305018C2F0E94C3 -:10132000F908C15060F68091050187FD2CC08150FD -:10133000809305018F3F39F08FE99FE00197F1F726 -:1013400000C0000020C080911E0290911F02909367 -:1013500027028093260280911C0290911D02909397 -:1013600025028093240280911A0290911B0290938F -:101370002302809322028091180290911902909387 -:101380002102809320020E94780381E0DF91CF91B7 -:101390001F910F91FF90EF900895E82FF0E0EE0F6E -:1013A000FF1FE05EFD4F80819181089508950F93A6 -:1013B0001F93CF9308E212E0C0E0F801929182916E -:1013C0008F010E943D22C80FF2E000321F07A9F7EB -:1013D0008C2FCF911F910F9108950E94812381112D -:1013E00002C00E945D230E94A623809307033E9AB9 -:1013F000809171008D7F8093710082E080939000D6 -:101400008AE18093910081E080932A02089580917F -:101410002A02811102C00E94ED0910927A021092F4 -:101420007902809171008D7F80937100809190008E -:101430008F738093900010923C0210923B021092A6 -:10144000730210927402109275021092760210923A -:10145000720210927102E1E5F2E0A1E4B2E01192B1 -:101460001192119211921D921D9282E0E137F807BC -:10147000B1F70895CF92DF92EF92FF920F931F93EF -:10148000CF93DF9320913B02222309F484C06B01A8 -:101490007C0180912A02811102C00E94ED0901E7BE -:1014A00012E0C7E0D0E0A7019601F8019291829185 -:1014B000729162918F010E94F128811131C0FE0169 -:1014C000EE0FFF1FEE0FFF1FEF5AFD4F108211822C -:1014D00012821382DE01AA0FBB1FAF5BBD4F1196B4 -:1014E0001C921E92C730D105E9F0219644815581A6 -:1014F000668177814083518362837383148215826E -:101500001682178212968D919C91139711969C9337 -:101510008E9313961C921E92129734961296E2CFD7 -:10152000219708F68091790290917A02019797FDB0 -:1015300005C090937A028093790204C010927A02D7 -:10154000109279028091790290917A02209177022B -:10155000309178022817390724F0109278021092FF -:101560007702892BC1F4809171008D7F8093710087 -:10157000809190008F73809390001092730210926C -:1015800074021092750210927602109272021092FA -:10159000710210923B02DF91CF911F910F91FF904A -:1015A000EF90DF90CF9008951F920F920FB60F9299 -:1015B00011244F925F926F927F928F929F92AF927F -:1015C000BF92CF92DF92EF92FF922F933F934F9370 -:1015D0005F936F937F938F939F93AF93BF93CF93BB -:1015E000DF93EF93FF9380913B02882309F49BC123 -:1015F000C0917902D0917A021C161D060CF093C19D -:1016000040902B0250902C0260902D0270902E0280 -:1016100020E030E0A901C301B2010E949C2A181603 -:101620000CF065C0C130D10509F452C08091770239 -:1016300090917802BE010E946E2C7C0190937802FA -:101640008093770280903D0290903E02A0903F02EE -:10165000B090400220E030E040E85FE3C501B40113 -:101660000E948D2860933D0270933E0280933F025A -:1016700090934002F701EE0FFF1FEE0FFF1FEF5A8E -:10168000FD4FA301920160817181828193810E944B -:10169000F52820E030E040E05EE30E94A02A9B01B4 -:1016A000AC01C501B4010E949C2A18168CF4C70134 -:1016B0000196BE010E946E2C90937802809377026F -:1016C00010923D0210923E0210923F021092400290 -:1016D000E0917702F0917802EE0FFF1FEE0FFF1FEF -:1016E000EF5AFD4F6081718182819381D0C0C0909B -:1016F0007302D0907402E0907502F090760220E0C0 -:1017000030E0A901C701B6010E94F1282197882382 -:1017100009F4A2C0FE01EE0FFF1FEE0FFF1FEF5AEC -:10172000FD4F80809180A280B380A5019401C70104 -:10173000B6010E94F12887FF31C0A501940160E045 -:1017400070E08CED93EC0E94F52820E030E040E45E -:1017500051E40E94F52820E030E040E05FE30E9481 -:10176000A02A9B01AC0160E070E080E090E40E9460 -:10177000032B9B01AC01C501B4010E94A02A9B016F -:10178000AC01C701B6010E94F12887FF07C0A7017D -:10179000960160E070E08CED93E439C0A5019401FE -:1017A000C701B6010E949C2A18160CF055C0A5016D -:1017B000940160E070E08CED93E40E94F52820E055 -:1017C00030E040E451E40E94F52820E030E040E0C1 -:1017D0005FE30E94A02A9B01AC0160E070E080E022 -:1017E00090E40E94032B9B01AC01C501B4010E944F -:1017F000A02A9B01AC01C701B6010E949C2A1816C1 -:101800005CF5A701960160E070E08CED93EC0E941E -:10181000F52820E030E040E451E40E94F52820E083 -:1018200030E040E05FE30E94A02A9B01AC0160E051 -:1018300070E080E090E40E94032B9B01AC01C701A3 -:10184000B6010E94A02A6093730270937402809381 -:1018500075029093760213C0FE01EE0FFF1FEE0F8C -:10186000FF1FEF5AFD4F80819181A281B381809348 -:10187000730290937402A0937502B0937602609104 -:10188000730270917402809175029091760220919A -:101890002802309129022F3F4FEF340731F02F5F9C -:1018A0003F4F30932902209328020E947C0E6B0147 -:1018B0007C0120E034E244EF51E40E94F12887FFEC -:1018C00008C086EFC82E88E2D82E84EFE82E81E487 -:1018D000F82E20E030E040E051E4C701B6010E945C -:1018E000A02A9B01AC0160E074E284E79BE40E94C3 -:1018F000F5286B017C010E94622970939700609328 -:101900009600209106013091070140910801509105 -:101910000901C701B6010E94A02A0E9462297093A2 -:1019200099006093980080913C02882309F433C1A8 -:10193000C0903702D0903802E0903902F0903A021D -:1019400020E030E0A901C701B6010E949C2A1816C8 -:10195000D4F580912802909129028F3F2FEF9207B2 -:1019600029F001969093290280932802C701B601BD -:101970000E947C0E20E030E040E051E40E94A02A6A -:101980009B01AC0160E074E284E79BE40E94F528CF -:101990006B017C010E94622970939700609396000E -:1019A00020910601309107014091080150910901F1 -:1019B000C701B6010E94A02A0E9462297093990073 -:1019C0006093980008C010929700109296001092B1 -:1019D00099001092980060913102709132026F5F0D -:1019E0007F4F7093320260933102209196003091C4 -:1019F000970080E090E0232BF1F0C0919600D09109 -:101A000097000E948E296B017C01BE0180E090E06E -:101A10000E948E299B01AC016091330270913402C7 -:101A200080913502909136020E94F52820E03FEF28 -:101A30004FE757E410C00E948E296B017C0120E023 -:101A400030EE4FEF54E46091330270913402809194 -:101A50003502909136020E94A02A9B01AC01C70179 -:101A6000B6010E949C2A87FD96C080912F028F5F4D -:101A700080932F0290E0209103033091040382179A -:101A80009307A0F080910E03882319F010922F0283 -:101A90000DC0809171008D7F8093710080919000C6 -:101AA0008F738093900010923C027DC08091300231 -:101AB000C0912F02811128C0C0900803D090090363 -:101AC000E0900A03F0900B0320E030E0A901C70189 -:101AD000B6010E949C2A1816BCF481E08093300263 -:101AE00010923702109238021092390210923A0284 -:101AF000C0923302D0923402E0923502F092360264 -:101B0000C150C0932F0243C010923002109229029C -:101B100010922802E0910503F091060348E0C49F6B -:101B2000E00DF11D112480819181A281B381809308 -:101B3000370290933802A0933902B0933A0220E022 -:101B400030E040E85EE364817581868197810E9480 -:101B5000A02A6B017C0180910A01682F70E080E06F -:101B600090E00E948E2920E030E048EC52E40E9490 -:101B7000F5289B01AC01C701B6010E94A02A609321 -:101B800033027093340280933502909336021092A0 -:101B90003202109231028091070380FD04C010923E -:101BA0003C0210923B02FF91EF91DF91CF91BF91E8 -:101BB000AF919F918F917F916F915F914F913F91E5 -:101BC0002F91FF90EF90DF90CF90BF90AF909F90BC -:101BD0008F907F906F905F904F900F900FBE0F90FF -:101BE0001F901895CF92DF92EF92FF92CF93DF93E1 -:101BF0006B017C01EA0180912A02811102C00E94DE -:101C0000ED098091070380FF46C080917902909191 -:101C10007A0208970CF03FC0809171008D7F80930D -:101C2000710080913C0281110E94070A81E080933B -:101C30003B02109229021092280220E030E0A90114 -:101C4000C701B6010E949C2A1816DCF48091790223 -:101C500090917A02FC01EE0FFF1FEE0FFF1FEF5A6B -:101C6000FD4FC082D182E282F382FC01EE0FFF1FA2 -:101C7000EF5BFD4FD183C083019690937A028093EE -:101C80007902809171008260809371008091900050 -:101C9000806880939000DF91CF91FF90EF90DF906C -:101CA000CF90089580910703817008958091070374 -:101CB0008160809307030E94AA230C94D203809131 -:101CC00007038E7F809307030C94AA2380917B02E5 -:101CD00090E0019666E070E00E946E2C80937B029B -:101CE000089580917B0290E0019766E070E00E9489 -:101CF0006E2C80937B0208958F929F92AF92BF9239 -:101D0000CF92DF92EF92FF920F931F93CF93DF93C7 -:101D10006B017C01C0912802D0912902BE0180E0B4 -:101D200090E00E948E294B015C01A701960160E0C2 -:101D300070E08CE594E40E94F5289B01AC01C5019C -:101D4000B4010E94A02A0E94622920917B022330C4 -:101D500009F473C028F4222351F02130E9F02CC19A -:101D6000243009F4A0C0253009F4E0C025C180E08A -:101D700090E0A0E0BFE38093060190930701A09359 -:101D80000801B093090110922B0210922C021092BC -:101D90002D0210922E0210C110922B0210922C02D2 -:101DA00010922D0210922E026431710540F46A30B7 -:101DB000710560F520E030E040E85EE32BC0693C4F -:101DC000710508F0AAC080E090E00E948E2920E012 -:101DD00030E040EA51E40E948C2820E030E044E307 -:101DE00053E40E94F5289B01AC010E94A02A20E048 -:101DF00030E040E05EE30E94A02A9B01AC0160E07D -:101E000070E080E09EE30E948C2844C020E030E037 -:101E100040E05FE3C701B6010E94A02A6B017C018C -:101E200080E090E0A0E0BEE380930601909307017C -:101E3000A0930801B0930901BFC010922B02109229 -:101E40002C0210922D0210922E024AE0469F900121 -:101E5000479F300D1124C90168EB7BE00E945A2C8A -:101E6000BC016C5D754077FF03C071956195710988 -:101E7000882777FD8095982F0E9490292EE333ECD8 -:101E80004EE259E30E94A02A20E030E040EC5EE3FD -:101E90000E948D28609306017093070180930801CA -:101EA0009093090189C010922B0210922C0210927B -:101EB0002D0210922E02CE0183709927892BE1F01A -:101EC000BE016170772780E090E00E948E2920E0BB -:101ED00030E040E05EE30E94A02A20E030E040E4F1 -:101EE0005FE30E948D286093060170930701809341 -:101EF0000801909309010CC080E090E0A0E0BFE3EE -:101F00008093060190930701A0930801B093090103 -:101F1000C770DD27CD2B09F04FC01092060110923B -:101F20000701109208011092090146C010922B027D -:101F300010922C0210922D0210922E0200E010E05E -:101F400020E03FE30093060110930701209308016E -:101F5000309309016739710578F180E090E00E94C3 -:101F60008E2920E030E047E153E40E948C2820E0F5 -:101F700030E04AE754E40E94F52820E030E048E4ED -:101F800052E40E94A02A20E030E040EA51E40E949E -:101F9000D2290E945D29660F771F660F771FFB010C -:101FA000EE5AFE4F2081318142815381C701B60133 -:101FB0000E94A02A6B017C01C701B601DF91CF917D -:101FC0001F910F91FF90EF90DF90CF90BF90AF9057 -:101FD0009F908F90089580918C020895CF93DF9306 -:101FE00000D01F92CDB7DEB79C01809113038430DF -:101FF00019F593E099833B832A839093E9008FEF4F -:102000009091E800815095FD06C095ED9A95F1F705 -:1020100000008111F5CF8091E80085FF0DC040E000 -:1020200050E063E070E0CE0101960E944F12809173 -:10203000E8008E778093E8000F900F900F90DF916B -:10204000CF910895CF93DF9300D01F92CDB7DEB725 -:1020500020911303243021F522E029839B838A8376 -:1020600083E08093E9008FEF9091E800815095FD27 -:1020700006C095ED9A95F1F700008111F5CF80919A -:10208000E80085FF0DC040E050E063E070E0CE0165 -:1020900001960E944F128091E8008E778093E800AD -:1020A0000F900F900F90DF91CF910895209113031F -:1020B0002430F1F422E02093E9002FEF3091E80082 -:1020C000215035FD06C035ED3A95F1F7000021119C -:1020D000F5CF2091E80025FF0BC040E050E065E01F -:1020E00070E00E944F128091E8008E778093E800A4 -:1020F0000895CF93DF93EC0190911303943009F08E -:1021000046C0809115018823D9F08091160188235B -:10211000B9F09093E9008FEF9091E800815095FD20 -:1021200006C095E19A95F1F700008111F5CF8091F5 -:10213000E80085FF2CC040E050E060E170E017C08F -:1021400081E08093E9008FEF9091E800815095FD48 -:1021500006C095ED9A95F1F700008111F5CF8091B9 -:10216000E80085FF14C040E050E068E070E0CE0178 -:102170000E944F128091E8008E778093E80080E102 -:10218000FE01ACE7B2E001900D928A95E1F7DF9194 -:10219000CF91089580911203811109C00E94E41328 -:1021A0000E9441148091E20084608093E2000895CF -:1021B000109212030895089508950C94882242E025 -:1021C00061EC81E00E945E1342E061EC82E00E94DB -:1021D0005E1342E061EC83E00E945E1342E161EC39 -:1021E00084E00C945E1380911503833009F455C08C -:1021F00030F4813071F0823009F48EC008958A3055 -:1022000009F47AC08B3009F460C0893009F09CC0B1 -:1022100020C080911403813A09F096C08091E800B3 -:10222000877F8093E8008091180390911903892B90 -:1022300021F460E18CE792E003C060E080E090E090 -:1022400070E00E949A128091E8008B778093E800FA -:10225000089580911403813209F076C080911803AB -:1022600090911903009719F0039709F06DC08091C0 -:10227000E800877F8093E8008091E80082FD05C038 -:10228000809113038111F8CF5FC08091F10080939A -:102290008C028091E8008B7753C080911403813ABF -:1022A00009F052C08091180390911903892B09F00D -:1022B0004BC08091E800877F8093E8008091E80020 -:1022C00080FFFCCF8091150136C0809114038132CC -:1022D000D9F58091180390911903892BA9F5809164 -:1022E000E800877F8093E8000E9493138091160393 -:1022F000809315010C94C91B80911403813221F540 -:102300008091E800877F8093E8000E94931380917A -:10231000170380938D02089580911403813AA1F4EC -:102320008091E800877F8093E8008091E80080FF3B -:10233000FCCF80918D028093F1008091E8008E7730 -:102340008093E8000C949313089584B7877F84BF2B -:1023500088E10FB6F89480936000109260000FBE81 -:1023600090E080E80FB6F89480936100909361004C -:102370000FBE0E9436170E94E4130E944114809100 -:10238000E20084608093E20078940E94C7160E9465 -:1023900038178BE091E00E94E2168091130385309C -:1023A00069F40E944922809111038823B1F30E94AD -:1023B0007722882391F30E943912EFCF0E944017B1 -:1023C000ECCF292F332723303105C9F064F42130B5 -:1023D000310581F02230310509F043C08DE690E0EF -:1023E00020E833E042C021323105F1F022323105DC -:1023F00041F137C082E190E02DEE33E036C09927FD -:102400008130910541F08230910541F0892B49F5E9 -:10241000ECE7F3E005C0EEE4F3E002C0E4E2F3E051 -:10242000849190E09F0121C06430D8F4E62FF0E061 -:10243000EE0FFF1FE255FE4F2081318189E090E0D1 -:1024400014C0643070F470E0FB01EE0FFF1FEA551A -:10245000FE4F20813181FB01EE55FE4F808190E0DF -:1024600004C080E090E020E030E0FA013183208376 -:10247000089580E189BD82E189BD09B400FEFDCFE8 -:102480008091D8008F7D8093D8008091E000826099 -:102490008093E0008091E00081FDFCCF0895CF9211 -:1024A000DF92EF92FF920F931F93CF93DF93EC0194 -:1024B0008B016A010E94B213811133C0C114D1048F -:1024C00039F0F60180819181081B190BC80FD91FC3 -:1024D000E12CF12C0115110519F18091E80085FD21 -:1024E00016C08091E8008E778093E800C114D10473 -:1024F00049F0F60180819181E80EF91EF182E082B7 -:1025000085E00FC00E94B213882321F30AC089918D -:102510008093F10001501109FFEFEF1AFF0ADACFA3 -:1025200080E0DF91CF911F910F91FF90EF90DF90AE -:10253000CF90089520911A0330911B032617370777 -:1025400048F06115710539F42091E8002E77209349 -:10255000E80001C0B90140E061157105A9F12091C1 -:102560001303222309F443C0253009F442C020910B -:10257000E80023FD40C02091E80022FD32C02091F8 -:10258000E80020FFE9CF4091F3002091F20030E015 -:10259000342BFC01CF016115710559F0283031054C -:1025A00040F481918093F100615071092F5F3F4F9A -:1025B000F1CF41E02830310509F040E02091E800FA -:1025C0002E772093E800C8CF4111C9CF0AC080916F -:1025D0001303882361F0853061F08091E80083FD6A -:1025E0000AC08091E80082FFF2CF80E0089582E087 -:1025F000089583E0089581E0089520911A033091B1 -:102600001B032617370748F06115710539F420912F -:10261000E8002E772093E80001C0B901FC0120E01A -:102620006115710591F180911303882309F440C06D -:10263000853009F43FC08091E80083FD3DC0809162 -:10264000E80082FD2FC08091E80080FFE9CF209153 -:10265000F3008091F20090E0922B6115710559F022 -:102660008830910540F424912093F1003196615017 -:1026700071090196F2CF21E0089709F020E08091DE -:10268000E8008E778093E800CBCF2111CCCF0AC031 -:1026900080911303882361F0853061F08091E80018 -:1026A00083FD0AC08091E80082FFF2CF80E00895A8 -:1026B00082E0089583E0089581E00895982F97308F -:1026C00058F59093E900981739F07091EC0020913B -:1026D000ED005091F00003C0242F762F50E021FF31 -:1026E00019C03091EB003E7F3093EB003091ED004C -:1026F0003D7F3093ED003091EB0031603093EB0083 -:102700007093EC002093ED005093F0002091EE00C8 -:1027100027FF07C09F5FD3CF8F708093E90081E0D0 -:10272000089580E008958091140387FF11C080917F -:10273000E80082FD05C0809113038111F8CF11C01C -:102740008091E8008B770BC080911303882349F0B8 -:102750008091E80080FFF8CF8091E8008E77809329 -:10276000E80008952091E4003091E50095E640915D -:10277000EC00842F817040FF22C08091E80080FD32 -:102780001CC080911303882391F0853091F08091D3 -:10279000EB0085FD10C04091E4005091E500421728 -:1027A000530729F39A01915011F784E0089582E0CC -:1027B000089583E0089581E0089580E008954091B0 -:1027C000E80042FFDECF08950E9452140E945A147E -:1027D000E0EEF0E0808181608083E8EDF0E08081D0 -:1027E0008F77808319BCA7EDB0E08C918E7F8C939E -:1027F00080818F7E80831092120308950F931F9320 -:10280000CF93DF930E9452140E945A14C8EDD0E077 -:1028100088818F77888388818068888388818F7D8D -:10282000888319BC1092130310920F0310921103A6 -:102830001092100300EE10E0F80180818B7F8083FE -:1028400088818160888342E060E080E00E945E13BE -:10285000E1EEF0E080818E7F8083E2EEF0E0808127 -:1028600081608083808188608083F80180818E7F91 -:102870008083888180618883DF91CF911F910F9140 -:102880000895E8EDF0E080818F7E8083E7EDF0E051 -:1028900080818160808384E082BF81E08093120325 -:1028A0000C94FE13E8EDF0E080818E7F808310921F -:1028B000E20008951092DA001092E10008951F924C -:1028C0000F920FB60F9211242F933F934F935F9364 -:1028D0006F937F938F939F93AF93BF93EF93FF93E8 -:1028E0008091E10082FF0BC08091E20082FF07C06F -:1028F0008091E1008B7F8093E1000E94C616809159 -:10290000DA0080FF1FC08091D80080FF1BC080913B -:10291000DA008E7F8093DA008091D90080FF0DC0AD -:1029200080E189BD82E189BD09B400FEFDCF81E06F -:10293000809313030E94CA1005C019BC10921303A0 -:102940000E94D8108091E10080FF19C08091E200C0 -:1029500080FF15C08091E2008E7F8093E20080911D -:10296000E20080618093E2008091D80080628093D1 -:10297000D80019BC85E0809313030E94DC1080917D -:10298000E10084FF30C08091E20084FF2CC080E130 -:1029900089BD82E189BD09B400FEFDCF8091D800D8 -:1029A0008F7D8093D8008091E1008F7E8093E1003D -:1029B0008091E2008F7E8093E2008091E20081604E -:1029C0008093E20080910F03882311F084E007C018 -:1029D0008091E30087FD02C081E001C083E0809325 -:1029E00013030E94DD108091E10083FF29C08091D4 -:1029F000E20083FF25C08091E100877F8093E100A2 -:102A000082E08093130310920F038091E1008E7F88 -:102A10008093E1008091E2008E7F8093E2008091BC -:102A2000E20080618093E20042E060E080E00E948A -:102A30005E138091F00088608093F0000E94DB10AC -:102A4000FF91EF91BF91AF919F918F917F916F9186 -:102A50005F914F913F912F910F900FBE0F901F905C -:102A600018951F920F920FB60F9211242F933F9338 -:102A70004F935F936F937F938F939F93AF93BF9386 -:102A8000CF93DF93EF93FF93C091E900CF708091D4 -:102A9000EC00D82FD17080FDD0E81092E900809131 -:102AA000F000877F8093F00078940E947515109253 -:102AB000E9008091F00088608093F000CD2BCF700A -:102AC000C093E900FF91EF91DF91CF91BF91AF915A -:102AD0009F918F917F916F915F914F913F912F9136 -:102AE0000F900FBE0F901F9018951F93CF93DF93F9 -:102AF000CDB7DEB7AA970FB6F894DEBF0FBECDBF35 -:102B0000E4E1F3E088E08E0F9091F10091938E1351 -:102B1000FBCF0E94F3108091E80083FF1FC18091DA -:102B2000140390911503492F50E04A30510508F0E5 -:102B300015C1FA01EA5AFF4F0C94822C803881F0BB -:102B4000823809F00BC1809118038F708093E900DF -:102B50008091EB0085FB882780F91092E90006C080 -:102B60008091100390911103911182609091E8007F -:102B7000977F9093E8008093F1001092F100C8C015 -:102B8000282F2D7F09F0EAC0882319F0823061F0E8 -:102B9000E5C080911603813009F0E0C0933009F060 -:102BA00080E0809311032BC080911603811127C010 -:102BB000809118038F7009F4D1C08093E9002091AF -:102BC000EB0020FF1CC0933021F48091EB00806269 -:102BD00014C09091EB0090619093EB0021E030E005 -:102BE000A90102C0440F551F8A95E2F74093EA00FD -:102BF0001092EA008091EB0088608093EB001092C5 -:102C0000E9008091E800877F86C08111A7C01091FC -:102C100016031F778091E3008078812B8093E30077 -:102C20008091E800877F8093E8000E949313809151 -:102C3000E80080FFFCCF8091E30080688093E30090 -:102C4000111102C082E001C083E08093130386C0AB -:102C50008058823008F082C080911603909117034B -:102C60008C3D53E0950779F583E08A838AE2898376 -:102C70004FB7F894DE01139620E03EE051E2E32FD7 -:102C8000F0E050935700E49120FF03C0E295EF700D -:102C90003F5FEF708E2F90E0EA3010F0C79601C0D2 -:102CA000C0968D939D932F5F243149F74FBF80913C -:102CB000E800877F8093E8006AE270E0CE01019629 -:102CC0000E949A1214C0AE014F5F5F4F60911803CB -:102CD0000E94E111BC01009709F440C09091E80006 -:102CE000977F9093E80089819A810E94FD128091DC -:102CF000E8008B778093E80031C0803879F58091C7 -:102D0000E800877F8093E80080910F038093F100B3 -:102D10008091E8008E778093E8000E9493131EC094 -:102D200081111CC0909116039230C0F48091E8008C -:102D3000877F8093E80090930F030E949313809104 -:102D40000F03811106C08091E30087FD02C081E07E -:102D500001C084E0809313030E94DF108091E8009B -:102D600083FF0AC08091E800877F8093E80080910C -:102D7000EB0080628093EB00AA960FB6F894DEBF5A -:102D80000FBECDBFDF91CF911F9108950895CF93CE -:102D9000809113038823A1F0C091E900CF70909136 -:102DA000EC00892F817090FD80E8C82B1092E9001B -:102DB0008091E80083FD0E947515CF70C093E900F3 -:102DC000CF91089590939302809392020895E09199 -:102DD0009202F0919302309721F00190F081E02D62 -:102DE000099480E00895E0919202F0919302309767 -:102DF00021F00280F381E02D09940895E091920280 -:102E0000F0919302309721F00480F581E02D099430 -:102E1000089520919002309191028217930771F0EA -:102E20009093910280939002E0919202F09193022C -:102E3000309721F00680F781E02D099408952091C4 -:102E40008E0230918F028217930771F090938F0258 -:102E500080938E02E0919202F0919302309721F0DC -:102E60000084F185E02D0994089508950C94351798 -:102E70000E94BC220E940D090E9442230C94F1275B -:102E80005F926F927F928F929F92AF92BF92CF92FA -:102E9000DF92EF92FF920F931F93CF93DF9300D0B7 -:102EA00000D01F92CDB7DEB70E9452099DE9C92E0E -:102EB00092E0D92E03E010E0AA24A394B12C502E66 -:102EC000802F0E94CD094C01F601729062906F0133 -:102ED0006826792661147104A1F40150110978F76C -:102EE0008FEF89838A831B820E94C5228160782F9D -:102EF0009D838C8349815A816B818D810E94F0175B -:102F000038C08091F20281FD0E94D6092BE030E0AA -:102F10007501022E02C0EE0CFF1C0A94E2F7C701F5 -:102F200086219721892B09F129835A828E209F209F -:102F300091E0892809F490E09B830E94C52281607A -:102F4000782F9D838C8349815A816B818D810E946A -:102F5000F017000F111FF801EB56FD4F8081918192 -:102F6000E826F926F182E08204C02150310980F67A -:102F7000B4CF0E942925109194020E94E7161817D9 -:102F8000D1F00E94E716809394020F900F900F905B -:102F90000F900F90DF91CF911F910F91FF90EF90C5 -:102FA000DF90CF90BF90AF909F908F907F906F9069 -:102FB0005F900C94F7080F900F900F900F900F9068 -:102FC000DF91CF911F910F91FF90EF90DF90CF9005 -:102FD000BF90AF909F908F907F906F905F9008957B -:102FE000CF93DF93CDB7DEB72B970FB6F894DEBF44 -:102FF0000FBECDBF4F83588769877A878B87DE01E5 -:10300000119686E0FD0111928A95E9F785E0FE01AF -:10301000379601900D928A95E1F749815A816B812B -:103020007C818D819E810E94671E2B960FB6F8943D -:10303000DEBF0FBECDBFDF91CF910895CF93882320 -:1030400009F4C2C0C82F823859F40E94E71681FDE6 -:10305000BBC089E30E9441210E940E2289E30CC07B -:10306000833879F40E94E71680FDAEC083E50E94A4 -:1030700041210E940E2283E50E948321CF910C946E -:103080000E22843859F40E94E71682FD9DC087E421 -:103090000E9441210E940E2287E4EECF8CEF8C0F1C -:1030A000813A48F48C2F0E94592781118DC08C2FB2 -:1030B0000E944121E3CF80E28C0F883048F4C77032 -:1030C00081E001C0880FCA95EAF70E94C721D6CFD8 -:1030D0008BE58C0F833078F4C53A29F0C63A31F08D -:1030E00083E890E005C081E890E002C082E890E0CB -:1030F000CF910C94091788E58C0F833108F064C0D8 -:10310000C83A39F1C93A41F1CA3A49F1CB3A51F1D9 -:10311000CC3A59F1CD3A61F1C03B69F1CE3A71F147 -:10312000CF3A79F1C13B81F1C23B89F1C33B91F1C7 -:10313000C43B99F1C53BA1F1C63BA9F1C73BB1F135 -:10314000C83BB9F1C93BC1F1CA3BC9F180E090E08D -:1031500038C082EE90E035C089EE90E032C08AEE51 -:1031600090E02FC085EB90E02CC086EB90E029C06A -:1031700087EB90E026C08CEC90E023C08DEC90E0D3 -:1031800020C083E891E01DC08AE891E01AC082E97E -:1031900091E017C084E991E014C081E292E011C08F -:1031A00083E292E00EC084E292E00BC085E292E0FE -:1031B00008C086E292E005C087E292E002C08AE29F -:1031C00092E0CF910C941F17CF910895882309F4B2 -:1031D0004BC0823859F40E94E71681FF45C089E34D -:1031E0000E9441210E940E2289E30CC0833871F4B1 -:1031F0000E94E71680FF38C083E50E9441210E94AB -:103200000E2283E50E9483210C940E22843859F407 -:103210000E94E71682FF28C087E40E9441210E9495 -:103220000E2287E4EFCF9CEF980F913A58F390E28B -:10323000980F983050F4877091E001C0990F8A95EB -:10324000EAF7892F0E94CD21DFCF9BE5980F9330BD -:1032500020F480E090E00C940917885A833120F420 -:1032600080E090E00C941F170895882321F00E94BD -:10327000C7210C940E220895882321F00E94CD21AD -:103280000C940E2208957F928F929F92AF92BF92DC -:10329000CF92DF92EF92FF920F931F93CF93DF9322 -:1032A0001F92CDB7DEB77C01C62E772EFC010581BB -:1032B00002950F70128111110E94E4210E943A219F -:1032C000882379F0112369F080E28C0D883048F072 -:1032D00082E00E9423210E943A2191E0D82ED92633 -:1032E00001C0D12CE72DE295EF70F0E0E05AFF4FDE -:1032F0000C94822C872D807F072D0F70882311F06E -:103300000295007F112389F0002309F499C180E21E -:103310008C0D883020F4802F0E94C72103C0802F9D -:103320000E94D7210E940E228BC18C2D0E94E6188C -:10333000002309F4C3C180E28C0D883020F4802F73 -:103340000E94CD2103C0802F0E94DD210E940E2209 -:10335000B5C1872D807F972D9F70803211F4892F02 -:1033600003C0892F8295807FCC2021F0F1E0CF1619 -:10337000A1F01DC0112339F0002319F1013009F526 -:103380000E94F7219BC1002319F0013009F496C176 -:1033900089830E94FA21898110C1112321F006300E -:1033A00008F08CC10EC0053008F088C106C1112399 -:1033B00059F0002331F0F701958190FF41C19F70D2 -:1033C00095830E9435197AC1002309F4F6C03EC1E5 -:1033D000872D86958695837090E0009719F0019768 -:1033E00061F06CC1112321F08C2D972D937002C0D8 -:1033F00080E090E00E94091761C1112321F08C2D1B -:10340000972D937002C080E090E00E941F1756C174 -:103410008C2D112319F00E94312402C00E9499249E -:103420000E941E254BC1872D837009F052C01111D7 -:1034300045C18C2D829586958770880F880F9C2DAD -:103440009F70892E912CA12CB12C082E04C0880CC1 -:10345000991CAA1CBB1C0A94D2F7C4FE14C00FE02E -:1034600010E020E030E0B901A80104C0440F551F6E -:10347000661F771F8A95D2F7CB01BA0160957095C8 -:103480008095909503C060E070E0CB01272D2695D4 -:103490002695237030E02230310569F02330310564 -:1034A00089F0682979298A299B292130310571F011 -:1034B0000E94AF1F03C1682979298A299B290E948C -:1034C000CB1FFCC00E94AF1FC501B4010E94931F17 -:1034D000F5C0112319F0872D817001C086958823CE -:1034E00009F4ECC08C2D829586958770880F880F23 -:1034F0009C2D9F70892E912CA12CB12C082E04C0DC -:10350000880C991CAA1CBB1C0A94D2F7C4FE14C0D8 -:103510000FE010E020E030E0B901A80104C0440F42 -:10352000551F661F771F8A95D2F7CB01BA016095A8 -:1035300070958095909503C060E070E0CB01272DD9 -:10354000269526952370422F50E04230510569F0B0 -:103550004330510589F0682979298A299B2941300E -:10356000510571F00E948920A9C0682979298A290A -:103570009B290E94A520A2C00E948920C501B401F8 -:103580000E946D209BC08C2D90E0FC01E05EF10953 -:10359000E531F10508F050C0E059FF4F0C94822C42 -:1035A0000C2D0F70872D8F71112321F00E940620A2 -:1035B000802F07CF0E942720802F0E943C197EC0B9 -:1035C000112341F0053008F079C0872D8F710E94DA -:1035D0004C2074C0063008F071C0F7CF112339F0C9 -:1035E000872D8F710E94062069C01123C9F3872D92 -:1035F0008F710E94272062C0112329F0872D8F71BF -:103600000E94F11F5BC00E94E71F58C0112351F0B8 -:10361000172D1F71812F0E94062063E0812F0E94C9 -:103620001A214CC081E00E942321023008F446C0D8 -:1036300082E00E94232142C0112331F0002381F255 -:103640008C2D0E941E183AC0002389F28C2D0E94F6 -:10365000E61834C0472D4F706C2DC7010E94D50568 -:103660000E940B1F2BC0111129C0472D4F7050E035 -:1036700042305105B9F04CF44115510581F041300B -:103680005105E1F40E94192819C04330510569F031 -:103690004430510599F48C2D0E946B280FC00E9474 -:1036A00002280CC00E94352809C00E94482806C084 -:1036B000472D4F706C2DC7010E94D805DD20F9F011 -:1036C0000E94162180FD1BC0F70112820E9410216A -:1036D0000E940620C7010E948E1B0E9410210F909D -:1036E000DF91CF911F910F91FF90EF90DF90CF90DE -:1036F000BF90AF909F908F907F900C9427200F9059 -:10370000DF91CF911F910F91FF90EF90DF90CF90BD -:10371000BF90AF909F908F907F9008950F931F93CD -:10372000CF93DF93EC01888199812B813C81232BFE -:10373000B9F09F3F11F48F3F99F0CE010E94D4035E -:10374000882371F0688179818A810E940C218C0123 -:103750000E94C1200E94881FB801CE010E94431917 -:10376000DF91CF911F910F9108950E94E4210E9453 -:10377000F4210E94B9210E940E220E94CF250E94AE -:103780001E2580E090E00E94091780E090E00C94F4 -:103790001F170E94D4210C94B51B0E940121292FD0 -:1037A00022952F7030E02C3031054CF42A30310551 -:1037B0006CF42250310922303105A8F407C02C30B6 -:1037C000310569F02F30310551F00DC0803F69F0AF -:1037D00018F4803E40F409C0843F29F406C093FBEE -:1037E000882780F9089580E0089581E00895CF93B7 -:1037F000DF9300D000D01F92CDB7DEB70F900F90AF -:103800000F900F900F90DF91CF910895CF93DF939A -:1038100000D000D000D0CDB7DEB726960FB6F89412 -:10382000DEBF0FBECDBFDF91CF9108951F93CF9321 -:10383000DF93C0919D0216E080919E02C81799F017 -:10384000D0E01C9FF0011D9FF00D1124E156FD4FAB -:103850004081518162817381848195810E94061C1F -:103860002196C770E9CFDF91CF911F9108954091C4 -:10387000CF025091D0026091D1027091D20280911A -:10388000D3029091D4020C94061C8091D4028295AC -:103890008F7009F054C08091D102882309F44FC081 -:1038A00080919D02A0919E026091CF027091D00202 -:1038B0004091D2025091D302B6E08A1709F43FC07A -:1038C00090E041155105C1F17F3F11F46F3FA1F127 -:1038D000B89FF001B99FF00D1124E156FD4F2181F1 -:1038E00072132AC02081621327C02281211124C0B3 -:1038F000238134812417350710F421503109241B0A -:10390000350B283C3105C0F42091D4022F70206182 -:103910002093D40226E0289FF001299FF00D112466 -:10392000EC55FD4F80818F70806180838FEC92E039 -:103930000E948E1B0C94161C01968770BECF0895B2 -:10394000CF92DF92EF92FF920F931F93CF93DF936B -:10395000CDB7DEB762970FB6F894DEBF0FBECDBF0E -:103960008C0185E0F801DE011D9601900D928A958B -:10397000E1F7D8014C9111965C91119712966C91D8 -:1039800012971396CD90DC9014973091CF027091DE -:10399000D0028091D2029091D302009709F46BC1BA -:1039A0007F3F19F43F3F09F466C1E090D102EE2059 -:1039B00009F4C0C02091D402C816D90628F0F60137 -:1039C000E81BF90BCF0104C0809590958C0D9D1DCF -:1039D000FF24F394883C910578F0F12C207F09F0C6 -:1039E000C6C07C2DD98AC88A89890E94F71B8FECB2 -:1039F00092E00E948E1BB1C0822F807F09F046C0EA -:103A0000751314C0341312C0611110C02F702061DF -:103A10002093D4020E94371C8FEC92E00E948E1BF0 -:103A20008091D402D80115968C932EC0CD2819F11F -:103A30005F3F11F44F3FF9F0F62E61111CC08091E9 -:103A40009D0220919E0236E0821709F45AC090E050 -:103A5000389FF001399FF00D1124E156FD4F71811F -:103A6000571306C07081471303C07281711103C0E0 -:103A700001968770E9CFF62E662309F418C180916C -:103A8000D40281608093D402F12C11C1751308C057 -:103A9000341306C0611104C08091D402D801C3C0A0 -:103AA0004D875E878D859E856A8B0E94CD1B6A89B6 -:103AB0008823E1F16623D1F12091D402822F8295EF -:103AC0008F7090E0029774F08091CF029091D002B5 -:103AD00098878F831986DB86CA862C87CE01079646 -:103AE0000E948E1B86E0F801AFECB2E001900D92CF -:103AF0008A95E1F70E94451C0E94371CFF24F3942D -:103B0000D6C04D875E878D859E850E940121292F15 -:103B100022952F7030E0223031050CF0BCC09F7030 -:103B200009F0B6C0805E883008F4C1C0C8010E94A8 -:103B30008E1BE4CFC816D90608F453C0F601E81B63 -:103B4000F90BCF01883C910508F450C0F12C7C2D75 -:103B5000D98AC88A89890E94F71BEFECF2E086E0D7 -:103B6000DF011D928A95E9F70E94371CA0C07513EA -:103B700014C0341312C0611110C08091D402F80136 -:103B80008583C8010E948E1B86E0EFECF2E0DF0126 -:103B90001D928A95E9F7FE2C8AC04D875E878D8538 -:103BA0009E856A8B0E94CD1B6A89882309F4BECF4B -:103BB000662309F4BBCF2091D402822F82958F70A7 -:103BC00090E002970CF48ECF8091CF029091D002BA -:103BD0009A8389831B82DD82CC822E83CE0101965B -:103BE0007FCF809590958C0D9D1DACCFF62E6623D2 -:103BF00009F49CCF75132EC034132CC02091D4022D -:103C000020FD1FC0822F82958F70D9F0D8011596A4 -:103C10002C9315978F3049F08F5F982F9295907F56 -:103C2000822F8F70892B15968C93C8010E948E1B52 -:103C300086E0F801AFECB2E001900D928A95E1F7D1 -:103C400093CF86E0F801AFECB2E001900D928A9537 -:103C5000E1F72DC04D875E878D859E850E94CD1B27 -:103C6000811140CF8091D40281608093D402C80139 -:103C70000E948E1B1CC0662309F458CF4D875E87B7 -:103C80008D859E850E94CD1B882309F44FCF2ACFB6 -:103C9000811148CF0CC0243031050CF047CF9F7004 -:103CA00009F440CFF8019581907F09F03BCF8F2D2B -:103CB00062960FB6F894DEBF0FBECDBFDF91CF91F5 -:103CC0001F910F91FF90EF90DF90CF9008951F9379 -:103CD000CF93DF93CDB7DEB72C970FB6F894DEBF46 -:103CE0000FBECDBF4F83588769877A878B879C87A4 -:103CF000CE0107960E94A01C882369F08F819885C9 -:103D00002A853B85232BF1F19F3F09F063C08F3F4C -:103D100009F060C037C086E0FE013796DE011196DB -:103D200001900D928A95E1F76F817885EA85FB8590 -:103D3000309741F17F3F11F46F3F21F120919E02B6 -:103D400030E0C90101968770992740919D0250E0AB -:103D50008417950709F447C069837A83FD83EC8350 -:103D600096E0929FD001939FB00D1124A156BD4FB4 -:103D7000FE01319601900D929A95E1F780939E0293 -:103D80000E94161C16E080919D0290919E02891758 -:103D9000C1F1189FC001112481569D4F0E94A01CA3 -:103DA000882379F1E0919D021E9FF0011124E156D4 -:103DB000FD4F4081518162817381848195810E9490 -:103DC000061C80919D0290E0019687709927809350 -:103DD0009D02D9CF4F81588569857A858B859C85D1 -:103DE0000E94061CCFCF0E94C91B10929E02109207 -:103DF0009D02EFECF2E086E0DF011D928A95E9F783 -:103E0000C1CF2C960FB6F894DEBF0FBECDBFDF91A9 -:103E1000CF911F910895EF92FF920F931F93CF932D -:103E2000DF938C01009709F46CC0F12CEE24E3942D -:103E3000E8012196F8018491843740F4843008F039 -:103E400051C0813081F0823019F15BC0853709F4AF -:103E500044C0A8F19CE7980F903708F052C08F77C4 -:103E60000E94E61841C00E5F1F4FFE01C49180E220 -:103E70008C0F883048F4C7708E2D01C0880FCA950A -:103E8000EAF70E94E72114C08C2F0E941E182DC053 -:103E90000E5F1F4FFE01C49180E28C0F883058F4F2 -:103EA000C7708E2D01C0880FCA95EAF70E94ED21D8 -:103EB0000E940E221AC08C2F0E94E61816C00E5FB8 -:103EC0001F4FFE01C491CC2381F08FE99FE0019741 -:103ED000F1F700C00000C150F6CF0E5F1F4FFE018A -:103EE000F49003C00E941E188E018F2D882309F4C0 -:103EF0009FCFEFE9FFE03197F1F700C0000081505C -:103F0000F5CFDF91CF911F910F91FF90EF90089522 -:103F100008956093D9027093DA028093DB02909344 -:103F2000DC020C94B51B0F931F930091D9021091E2 -:103F3000DA022091DB023091DC02DC01CB01802B24 -:103F4000912BA22BB32B8093D9029093DA02A093EA -:103F5000DB02B093DC021F910F910C94B51B0F9301 -:103F60001F930091D9021091DA022091DB02309167 -:103F7000DC02DC01CB0180239123A223B3238093B5 -:103F8000D9029093DA02A093DB02B093DC021F9176 -:103F90000F910C94B51B0F931F930091D9021091B0 -:103FA000DA022091DB023091DC02DC01CB018027B8 -:103FB0009127A227B3278093D9029093DA02A09386 -:103FC000DB02B093DC021F910F910C94B51B109291 -:103FD000D5021092D6021092D7021092D8020C94F9 -:103FE000B51B41E050E060E070E004C0440F551F95 -:103FF000661F771F8A95D2F74093D5025093D60259 -:104000006093D7027093D8020C94B51B41E050E046 -:1040100060E070E004C0440F551F661F771F8A954B -:10402000D2F78091D5029091D602A091D702B0919B -:10403000D802482B592B6A2B7B2B4093D5025093E7 -:10404000D6026093D7027093D8020C94B51B41E05E -:1040500050E060E070E004C0440F551F661F771FFA -:104060008A95D2F740955095609570958091D502CC -:104070009091D602A091D702B091D802482359233B -:104080006A237B234093D5025093D6026093D702D4 -:104090007093D8020C94B51B41E050E060E070E0F2 -:1040A00004C0440F551F661F771F8A95D2F7809171 -:1040B000D5029091D602A091D702B091D80248279C -:1040C00059276A277B274093D5025093D6026093E5 -:1040D000D7027093D8020C94B51B0F931F930091D5 -:1040E000D5021091D6022091D7023091D802DC017E -:1040F000CB01802B912BA22BB32B8093D5029093D5 -:10410000D602A093D702B093D8021F910F910C94BE -:10411000B51B0F931F930091D5021091D6022091E9 -:10412000D7023091D802DC01CB0180239123A22356 -:10413000B3238093D5029093D602A093D702B09375 -:10414000D8021F910F910C94B51B0F931F930091F0 -:10415000D5021091D6022091D7023091D802DC010D -:10416000CB0180279127A227B3278093D502909374 -:10417000D602A093D702B093D8021F910F910C944E -:10418000B51B0895CF92DF92EF92FF920F931F938A -:10419000CF93DF938C01C090D902D090DA02E090E7 -:1041A000DB02F090DC028091D5029091D602A091C2 -:1041B000D702B091D802C82AD92AEA2AFB2ACFE12D -:1041C000D0E0D701C6010C2E04C0B695A7959795EF -:1041D00087950A94D2F780FF06C0B8018C2F0E9401 -:1041E0005D08019721F4219760F780E001C08C2FD2 -:1041F000DF91CF911F910F91FF90EF90DF90CF90C3 -:104200000895CF93DF93EC010E94C220BE010E946B -:104210005D08DF91CF910895CB010E94012108959F -:104220008091DD0285958595859508958091DD02C3 -:104230008770089598E0899F90011124262B209380 -:10424000DD020C9406202091DD028095822380936C -:10425000DD02982F977069F430E0482F552747FD0D -:1042600050952417350729F08595859585950C94EB -:10427000272008959091DD02977081E009F480E095 -:10428000089590911501992321F0909116019111B3 -:1042900009C02091170130911801F90132969FEF62 -:1042A00040E01FC0982F9695969596959F3050F5B3 -:1042B000E0911701F0911801E90FF11D877021E0DD -:1042C00030E0A90102C0440F551F8A95E2F7CA01E8 -:1042D0009181892B818308959F3F39F04F5F4E3044 -:1042E00041F051915813F8CF0DC05111F7CF942FD1 -:1042F000F5CF9F3F39F0F901E90FF11D97FDFA95D0 -:1043000082830895089590911501992321F0909149 -:104310001601911109C02091170130911801F9017E -:104320003296205F3F4F1FC0982F96959695969591 -:104330009F30F0F4E0911701F0911801E90FF11DA1 -:10434000877021E030E0A90102C0440F551F8A9513 -:10435000E2F7CA018095918189238183089531967E -:10436000E217F30729F090819813F9CF1082F7CF65 -:10437000089581E090E0E0911701F0911801E80FB5 -:10438000F91F1082019680319105A9F70895909147 -:10439000F102892B8093F102089580959091F102AA -:1043A00089238093F10208951092F102089590916B -:1043B000F002892B8093F002089580959091F0028D -:1043C00089238093F00208951092F002089590914D -:1043D000EF02892B8093EF02089580959091EF0270 -:1043E00089238093EF0208951092EF02089580933D -:1043F000DE0208951092DE020895809117019091D7 -:104400001801FC0131969C01205F3F4F80E09191A3 -:1044100091118F5FE217F307D1F70895E09117012B -:10442000F09118018091F1028083E0911701F091E1 -:10443000180190818091F002892B8083E09117010F -:10444000F091180190818091EF02892B80838091F7 -:10445000DE02882361F0E0911701F091180190814C -:10446000892B80830E94FD2181111092DE028091B0 -:104470001701909118010C94F31620E0009739F081 -:10448000AC0141505109842395232F5FF7CF822F30 -:10449000089580911303843039F11092F30220E4DF -:1044A00088E190E00FB6F894A895809360000FBE65 -:1044B0002093600080E00E94D80280E00E94F7080C -:1044C00083B7817F846083BF83B7816083BF789423 -:1044D000889583B78E7F83BF88E10FB6F894809369 -:1044E0006000109260000FBE08950895089580E066 -:1044F0000E94D8020E9475220E9452090E947622D0 -:104500000E94D70991E0811101C090E0892F0895A0 -:104510000E94C91B80E00E94D8020E94F1270E94DD -:10452000E7160C94F7081F920F920FB60F92112402 -:104530008F939F93AF93BF938091F302811113C028 -:104540008091F4029091F502A091F602B091F702E9 -:104550004196A11DB11D8093F4029093F502A093A2 -:10456000F602B093F702BF91AF919F918F910F9098 -:104570000FBE0F901F90189582E084BD93E095BD0B -:104580009AEF97BD80936E0008952FB7F8948091AD -:10459000F4029091F502A091F602B091F7022FBFBC -:1045A0000895CF92DF92EF92FF920F931F932FB750 -:1045B000F8944091F4025091F5026091F6027091E6 -:1045C000F7022FBF6A017B01EE24FF248C0120E05B -:1045D00030E0C016D106E206F30610F4415051094E -:1045E0009A01281B390BC9011F910F91FF90EF9081 -:1045F000DF90CF9008951F920F920FB60F92112463 -:104600008F939F93AF93BF938091F4029091F502A3 -:10461000A091F602B091F7020196A11DB11D809301 -:10462000F4029093F502A093F602B093F702BF91C3 -:10463000AF919F918F910F900FBE0F901F90189583 -:104640000E94E413F8942FEF87EA91E6215080400E -:104650009040E1F700C0000087E090EBDC01809320 -:104660001E0390931F03A0932003B09321039CE0AB -:1046700088E10FB6F894A895809360000FBE9093E0 -:104680006000FFCF0E948123811102C00E945D2340 -:104690000E948C238093F2020E94942380931C0337 -:1046A00087FB882780F9809316010E949023682F4A -:1046B00070E080E090E00C94891F6DEE7EEF80E06A -:1046C00090E00E94A82C60E082E090E00E94962C8E -:1046D00060E083E090E00E94962C60E084E090E04F -:1046E0000E94962C60E085E090E00E94962C60E0AD -:1046F00086E090E00E94962C6FEF87E090E00C94AB -:10470000962C80E090E00E94902C21E08D3E9E4F00 -:1047100009F020E0822F089582E090E00C94882C2C -:1047200083E090E00C94882C84E090E00C94882C3A -:10473000682F84E090E00C94962C86E090E00C9436 -:10474000882C682F86E090E00C94962C87E090E00F -:104750000C94882C682F87E090E00C94962C809124 -:10476000FA0280FF0BC060911C0185E0689FB001D8 -:10477000112475956795759567952BC081FF09C0C4 -:1047800060911C0185E0689FB001112475956795C3 -:1047900020C082FF07C060911C0185E0689FB001C6 -:1047A000112417C09091FB029923D1F060911B0155 -:1047B000961788F720911C0185E0289F900111240D -:1047C000929FA001939F500D112470E0CA010E9496 -:1047D0006E2C6038710540F46115710539F002C026 -:1047E00065E070E0862F08958FE7089581E00895D1 -:1047F0008091FA0280FF08C060911A0170E07595FF -:1048000067957595679521C081FF06C060911A0173 -:1048100070E07595679519C082FF04C060911A0118 -:1048200070E010C09091FB029923C1F060911901D2 -:104830009617A0F780911A01899FC001112470E09A -:104840000E946E2C6038710528F46115710521F005 -:10485000862F08958FE7089581E0089561E070E064 -:10486000F4CF803F21F40E94AF23819504C0813FA3 -:1048700029F40E94AF238093FE020895823F21F421 -:104880000E94AF23819504C0833F29F40E94AF2387 -:104890008093FD020895893F19F40E94F82305C012 -:1048A0008A3F31F40E94F82381958093FF02089596 -:1048B0008B3F21F40E94F823819504C08C3F29F49A -:1048C0000E94F823809300030895843F21F480918F -:1048D000FC02816017C0853F21F48091FC02826058 -:1048E00011C0863F21F48091FC0284600BC0873F99 -:1048F00021F48091FC02886005C0883F31F48091EA -:10490000FC0280618093FC0208958D3F21F4809128 -:10491000FA0281600BC08E3F21F48091FA0282601E -:1049200005C08F3F29F48091FA0284608093FA02D7 -:104930000895803F39F48091FE0287FF6CC0109289 -:10494000FE0269C0813F29F48091FE021816BCF373 -:1049500062C09091FD02823F29F497FF5CC01092E3 -:10496000FD0259C0833F19F41916CCF354C0893F96 -:1049700041F48091FF0218160CF04DC01092FF0216 -:104980004AC08A3F29F48091FF0287FF44C0F6CFD6 -:104990008B3F39F48091000387FF3DC010920003E4 -:1049A0003AC08C3F29F4809100031816BCF333C041 -:1049B000843F21F48091FC028E7F17C0853F21F453 -:1049C0008091FC028D7F11C0863F21F48091FC0212 -:1049D0008B7F0BC0873F21F48091FC02877F05C04D -:1049E000883F31F48091FC028F7E8093FC0213C0DB -:1049F0008D3F21F48091FA028E7F0BC08E3F21F40F -:104A00008091FA028D7F05C08F3F29F48091FA02D0 -:104A10008B7F8093FA028091FD0281110EC08091FC -:104A2000FE0281110AC08091FF02811106C08091AF -:104A30000003811102C01092FB0208958CEF92E0F6 -:104A40000E94FE160E94C5229093F9028093F802FC -:104A500008951F93CF93DF938091F8029091F9020C -:104A60000E94D122AC019091FB02992321F0209168 -:104A70001D0130E006C020911E018AE0289F9001B0 -:104A800011244217530708F486C08091FD02C0919B -:104A9000FE02D091FF0210910003811107C0C111E5 -:104AA00076C0D11174C0111172C075C09F3F19F04A -:104AB0009F5F9093FB02181624F40E94AF2380930B -:104AC000FD028091FD0287FF05C00E94AF23819502 -:104AD0008093FD021C1624F40E94AF238093FE02F3 -:104AE0008091FE0287FF05C00E94AF2381958093CD -:104AF000FE026091FD02662339F1C091FE02CC23D3 -:104B000019F1772767FD7095872F972F0E949029BD -:104B100023E333E343E35FE30E94A02A0E945D297D -:104B20006093FD026C2F772767FD7095872F972F75 -:104B30000E94902923E333E343E35FE30E94A02A2A -:104B40000E945D296093FE021D1624F40E94F82342 -:104B50008093FF028091FF0287FF05C00E94F82327 -:104B600081958093FF02111624F40E94F82380930C -:104B700000038091000387FF05C00E94F823819500 -:104B800080930003DF91CF911F910C941E259F3FCE -:104B900009F08ECF96CFDF91CF911F910895ECEF62 -:104BA000F2E085E0DF011D928A95E9F71092FB02A1 -:104BB0001092FA020895833081F128F4813059F07F -:104BC0008230D1F00895853009F449C0B8F18630BB -:104BD00009F456C0089580911E01262F30E0280F59 -:104BE000311D2F3F310524F4680F60931E01089595 -:104BF0008FEF80931E01089580911D01262F30E0D4 -:104C0000280F311D2F3F310524F4680F60931D01DB -:104C100008958FEF80931D01089580911C01262F28 -:104C200030E0280F311D2F3F310524F4680F6093C9 -:104C30001C0108958FEF80931C01089580911B0142 -:104C4000262F30E0280F311D2F3F310524F4680F47 -:104C500060931B0108958FEF80931B01089580914D -:104C60001A01262F30E0280F311D2F3F310524F483 -:104C7000680F60931A0108958FEF80931A010895C9 -:104C800080911901262F30E0280F311D2F3F31056B -:104C900024F4680F6093190108958FEF8093190130 -:104CA0000895833011F128F4813049F0823091F079 -:104CB0000895853081F120F18630C1F10895809109 -:104CC0001E01681720F4861B80931E010895109220 -:104CD0001E01089580911D01681720F4861B8093A2 -:104CE0001D01089510921D01089580911C016817FF -:104CF00020F4861B80931C01089510921C010895D6 -:104D000080911B01681720F4861B80931B01089576 -:104D100010921B01089580911A01681720F4861BD8 -:104D200080931A01089510921A0108958091190133 -:104D3000681720F4861B80931901089510921901B9 -:104D400008950F931F93873208F048C08E3108F002 -:104D50008DC0803109F477C008F5873009F461C04F -:104D600068F4863009F09DC08091F202817F8E7FC9 -:104D70008093F20281E08093020394C08B3009F4A7 -:104D800089C08E3009F08DC08091F20282FB22270B -:104D900020F991E0922790FB82F95EC0863109F4F8 -:104DA00079C060F4813109F07CC00E94C91B9091E8 -:104DB000160181E08927809316016CC0893109F4BE -:104DC00069C08B3109F06DC08091F20281FB22270E -:104DD00020F991E0922790FB81F93EC0883309F4D5 -:104DE00059C050F4893209F457C0853309F454C0CE -:104DF000873209F451C055C0833409F44DC028F4FA -:104E00008A3308F44EC0895332C0883409F049C04F -:104E10000E94C91B0E94070A0E94CB030E94202304 -:104E200039C09091F202892F8095817080FB90F9B2 -:104E300029F0966098609093F20234C0997F977F32 -:104E40009093F20227C08091F20283FB222720F97F -:104E500091E0922790FB83F98093F2029923D1F09D -:104E60008091F20281608093F20214C08D5141E082 -:104E700050E060E070E08A019B0104C0000F111F48 -:104E8000221F331F8A95D2F7C901B8010E94891FDA -:104E90000E94C91B81E006C061E070E080E090E004 -:104EA000F5CF80E01F910F91089580E0089580E094 -:104EB0000895CF93C82F80910203813069F018F0D4 -:104EC0008230C9F184C0E0911701F091180180810E -:104ED000823209F07EC007C0E0911701F0911801FD -:104EE0008081823261F48C2F0E945527811104C089 -:104EF0008C2F0E94A1261DC081E090E01AC08C2F4B -:104F00000E945727811114C0C43179F048F4CB3086 -:104F100079F0C03109F061C082E08093020308C0DB -:104F2000C93219F0C83321F058C01092020355C09D -:104F300081E0817054C0C93291F120F5C43179F11A -:104F4000B0F4C73009F047C08EE180931E0182E3C0 -:104F500080931D018AE080931C0184E180931B01F2 -:104F600088E080931A0188E28093190134C0CE5101 -:104F7000C63088F5EC2FF0E0EA54FE4F8081809334 -:104F8000010329C0CE34E9F020F4CB3421F56AE0E6 -:104F900013C0C13579F0C235F1F461E00DC08091E4 -:104FA0000103882319F01092010315C081E080935A -:104FB000020315C061E006C0809101030E94DB2559 -:104FC0000AC06AE0809101030E94512604C0109239 -:104FD000020380E004C081E002C080E0AACFCF914C -:104FE00008950E948123811102C00E945D230E94C6 -:104FF0009D2380931D0380FF02C0869501C080E041 -:105000000C94D80280911D03982F9695292F30E09B -:10501000233031054CF49F5F990F8170892B81609B -:1050200080931D030E94A12380911D0386950C94FB -:10503000D80280911D03982F969591F09158990F61 -:105040008170892B80931D038E7F91E009F490E09D -:1050500080911D0390FB80F980931D030E94A12382 -:1050600080911D0386950C94D80280911D03982F82 -:10507000909590FB80F980931D030E94A12380915D -:105080001D0380FF02C0869501C080E00C94D80209 -:1050900090911D03892F86958F5F8F779170843053 -:1050A00028F4880F892B80931D0302C090931D0361 -:1050B00080911D038E7F91E009F490E080911D03A3 -:1050C00090FB80F980931D030E94A12380911D0312 -:1050D00086950C94D80220911D03922F96958927CE -:1050E000982F990F822F8170892B80931D038E7FBB -:1050F00091E009F490E080911D0390FB80F980938A -:105100001D030E94A12380911D0386950C94D80253 -:1051100080911D03869508955058BB27AA270ED06D -:10512000D1C1C2D130F0C7D120F031F49F3F11F48A -:105130001EF4B7C10EF4E095E7FB9FC1E92FD3D170 -:1051400080F3BA17620773078407950718F071F4A4 -:105150009EF5EBC10EF4E0950B2EBA2FA02D0B019E -:10516000B90190010C01CA01A0011124FF27591BAC -:1051700099F0593F50F4503E68F11A16F040A22FB2 -:10518000232F342F4427585FF3CF46953795279523 -:10519000A795F0405395C9F77EF41F16BA0B620B22 -:1051A000730B840BBAF09150A1F0FF0FBB1F661F69 -:1051B000771F881FC2F70EC0BA0F621F731F841FAC -:1051C00048F4879577956795B795F7959E3F08F0D2 -:1051D000B3CF9395880F08F09927EE0F9795879591 -:1051E000089527D108F481E008950CD06BC163D1F4 -:1051F00040F05AD130F021F45F3F19F03EC1511117 -:1052000095C14FC170D198F39923C9F35523B1F3D8 -:10521000951B550BBB27AA2762177307840738F025 -:105220009F5F5F4F220F331F441FAA1FA9F333D084 -:105230000E2E3AF0E0E830D091505040E695001C38 -:10524000CAF729D0FE2F27D0660F771F881FBB1FF4 -:10525000261737074807AB07B0E809F0BB0B802DCE -:10526000BF01FF2793585F4F2AF09E3F510568F01A -:1052700004C15CC15F3FECF3983EDCF38695779503 -:105280006795B795F7959F5FC9F7880F911D96951C -:10529000879597F90895E1E0660F771F881FBB1F78 -:1052A000621773078407BA0720F0621B730B840B25 -:1052B000BA0BEE1F88F7E095089504D06894B111F9 -:1052C00035C1089518D188F09F5790F0B92F9927CC -:1052D000B751A0F0D1F0660F771F881F991F1AF001 -:1052E000BA95C9F712C0B13081F01FD1B1E008956D -:1052F0001CC1672F782F8827B85F39F0B93FCCF3EE -:10530000869577956795B395D9F73EF490958095F6 -:10531000709561957F4F8F4F9F4F0895E89409C016 -:1053200097FB3EF490958095709561957F4F8F4FD8 -:105330009F4F9923A9F0F92F96E9BB279395F695EE -:10534000879577956795B795F111F8CFFAF4BB0F6C -:1053500011F460FF1BC06F5F7F4F8F4F9F4F16C0D0 -:10536000882311F096E911C0772321F09EE8872F5A -:10537000762F05C0662371F096E8862F70E060E016 -:105380002AF09A95660F771F881FDAF7880F96958F -:10539000879597F9089588D018F011F08CD038F4DB -:1053A00080C0C4C0E92F9FD0B0F35523C9F3E7FBF9 -:1053B0006217730784079507A8F199F3E92FFF2770 -:1053C00088232AF03197660F771F881FDAF7952F09 -:1053D0005527442332F091505040220F331F441F71 -:1053E000D2F7BB27E91BF50B621B730B840BB109CA -:1053F000C1F222F4620F731F841FB11D31972AF08E -:10540000660F771F881FBB1FEFCF915050405AF097 -:1054100041F0882332F0660F771F881F915050406B -:10542000C1F7939530C08695779567959F5FD9F7BB -:10543000F8CF990F0008550FAA0BE0E8FEEF1616FB -:105440001706E807F907C0F012161306E407F50778 -:1054500098F0621B730B840B950B39F40A2661F0EC -:10546000232B242B252B21F408950A2609F4A1408F -:10547000A6958FEF811D811D089597F99F6780E89C -:1054800070E060E008959F3F31F0915020F48795DF -:1054900077956795B795880F911D9695879597F99C -:1054A00008959FEF80EC089500240A9416161706BD -:1054B00018060906089500240A9412161306140605 -:1054C00005060895092E0394000C11F4882352F068 -:1054D000BB0F40F4BF2B11F460FF04C06F5F7F4F20 -:1054E0008F4F9F4F089557FD9058440F551F59F007 -:1054F0005F3F71F04795880F97FB991F61F09F3FC1 -:1055000079F087950895121613061406551FF2CFE9 -:105510004695F1DF08C0161617061806991FF1CF39 -:1055200086957105610508940895E894BB27662760 -:105530007727CB0197F908957CDF08F48FEF089562 -:105540000BD0C0CFB1DF28F0B6DF18F0952309F0FB -:1055500094CFA7CF1124EACFC6DFA0F3959FD1F354 -:10556000950F50E0551F629FF001729FBB27F00D11 -:10557000B11D639FAA27F00DB11DAA1F649F662766 -:10558000B00DA11D661F829F2227B00DA11D621FB5 -:10559000739FB00DA11D621F839FA00D611D221F6F -:1055A000749F3327A00D611D231F849F600D211D53 -:1055B000822F762F6A2F11249F5750408AF0E1F0F6 -:1055C00088234AF0EE0FFF1FBB1F661F771F881F3F -:1055D00091505040A9F79E3F510570F04ECFA6CF95 -:1055E0005F3FECF3983EDCF3869577956795B7952A -:1055F000F795E7959F5FC1F7FE2B880F911D969554 -:10560000879597F90895FA01EE0FFF1F309621054F -:10561000310599F16115710561F48038BFE39B078D -:1056200049F168949038810561F08038BFEF9B079D -:1056300041F0992342F5FF3FE1053105210511F1C4 -:10564000E8940894E795D901AA2329F4AB2FBE2F3B -:10565000F85FD0F310C0FF5F70F4A695E0F7F7395C -:1056600050F019F0FF3A38F49F779F930CD00F90C9 -:1056700007FC905808953EF014CF60E070E080E899 -:105680009FE308954FE79F775F934F933F932F9347 -:105690009ED02F913F914F915F9152DF05C019F439 -:1056A0000EF0EBCE42CFFDCE26DFC8F39638C0F722 -:1056B00007F80F92E8942BE33AEA48EB5FE74EDFF6 -:1056C0000F920F920F924DB75EB70F92C0D0EAE0E3 -:1056D000F1E016D04F915F91EF91FF91E595EE1FAC -:1056E000FF1F49F0FE57E0684427EE0F441FFA956C -:1056F000E1F74195550B32D00F9007FE26C0089573 -:10570000DF93CF931F930F93FF92EF92DF927B0172 -:105710008C01689405C0DA2EEF011EDFFE01E894CB -:10572000A5912591359145915591AEF3EF0106DD97 -:10573000FE019701A801DA9479F7DF90EF90FF90CE -:105740000F911F91CF91DF9108959B01AC0160E013 -:1057500070E080E89FE349CD90CE95CECCDEE8F3B3 -:105760009923D9F3940F511DBBF39150504094F0FD -:1057700059F0882332F0660F771F881F91505040F0 -:10578000C1F79E3F510544F7880F911D9695879567 -:1057900097F908955F3FACF0983E9CF0BB27869543 -:1057A00077956795B79508F4B1609395C1F7BB0FEE -:1057B00058F711F460FFE8CF6F5F7F4F8F4F9F4F17 -:1057C000E3CFB4CE0EF05FCE6CCE689456CE93DEAF -:1057D000C8F39923D1F3C6F3DF93CF931F930F93AD -:1057E000FF92C92FDD2788232AF02197660F771FA4 -:1057F000881FDAF720E030E040E85FEB9FE388396C -:1058000020F0803E30F021968F7787DCE2E3F1E0F4 -:1058100003C083DCEFE5F1E073DF8B01BE01EC0137 -:10582000FB2E6F5771097595771F880B990B78DDE3 -:1058300028E132E741E35FE38FDEAF2D9801AE014F -:10584000FF900F911F91CF91DF9178DC3BCEFA0151 -:10585000DC01AA0FBB1F9B01AC01BF5728F4222714 -:105860003327442750781FC0B75188F4AB2F00244A -:10587000469537952795011CA395D2F3002069F032 -:10588000220F331F441FB395DAF30DD045CC61309E -:105890007105A0E88A07B94630F49B01AC01662780 -:1058A000772788279078309621F0208331834283B0 -:1058B00053830895AA1BBB1B51E107C0AA1FBB1F3E -:1058C000A617B70710F0A61BB70B881F991F5A958C -:1058D000A9F780959095BC01CD01089597FB072EFF -:1058E00016F4009407D077FD09D00E945A2C07FCCB -:1058F00005D03EF4909581959F4F089570956195E0 -:105900007F4F0895EE0FFF1F0590F491E02D09944D -:10591000F999FECF92BD81BDF89A992780B5089577 -:10592000A8E1B0E042E050E00C94B02C262FF999A9 -:10593000FECF92BD81BDF89A019700B4021639F0EE -:105940001FBA20BD0FB6F894FA9AF99A0FBE0895BF -:105950000196272F0E94972C0C94962CDC01CB01EA -:10596000FC01F999FECF06C0F2BDE1BDF89A31966F -:1059700000B40D9241505040B8F70895F894FFCF0D -:10598000640007000CFF0000003F64EB0F79105625 -:10599000102210EE0F0101DF022808140A321E0047 -:1059A00002040507090B0C0E1011131517181A1C09 -:1059B0001D1F2123242628292B2D2F303234353743 -:1059C000393B1F0F03764F5F6F7F49694379095950 -:1059D00053633149803F5D8B803FF8BF803FCAE110 -:1059E000803F73ED803FCAE1803FF8BF803F5D8B11 -:1059F000803F3149803F0000803FF16D7F3F75EA75 -:105A00007E3F4C827E3F833F7E3F84287E3F833FA4 -:105A10007E3F4C827E3F75EA7E3FF16D7F3F000006 -:105A2000803F3F4D3639BB046E043804FF039203B8 -:105A3000AB03C403DD0301020304050607080900E4 -:00000001FF diff --git a/keyboard/planck/keymaps/daniel/compiled.hex b/keyboard/planck/keymaps/daniel/compiled.hex deleted file mode 100644 index d7e56a3e22..0000000000 --- a/keyboard/planck/keymaps/daniel/compiled.hex +++ /dev/null @@ -1,1448 +0,0 @@ -:100000000C9495020C94D9020C94D9020C94D90248 -:100010000C94D9020C94D9020C94D9020C94D902F4 -:100020000C94D9020C94D9020C9477140C944915B1 -:100030000C94AB220C94D9020C94D9020C94D902E2 -:100040000C94D9020C943B030C94D9020C94D90261 -:100050000C94D9020C9413230C94D9020C94D90259 -:100060000C94D9020C94D9020C94D9020C94D902A4 -:100070000C94D9020C94D9020C94D9020C94D90294 -:100080000C94EC0A0C94D9020C94D9020C94D90269 -:100090000C94D9020C94D9020C94D9020C94D90274 -:1000A0000C94D9020C94D9020C94D902B615D81527 -:1000B000C616D815C6161D164016C6169516A816CD -:1000C00092199219C119C119001A201A761B761BB0 -:1000D0002B1A761BDB1ADB1A421B4B1B761B701B81 -:1000E000E81AE81AE81AE81AE81AE81AE81AE81A00 -:1000F000E81AE81AE81AE81AE81AE81AE81AE81AF0 -:10010000F81A061B0D1B141B1E1B07634236B79BF8 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A19A -:1001D000F1A2F1A3290014001A000800150017006D -:1001E0001C0018000C00120013002A002B00040051 -:1001F0001600070009000A000B000D000E000F009A -:1002000033003400E1001D001B000600190005004A -:1002100011001000360037003800E5000320E00030 -:10022000E200E30002202C002C00012050005100CD -:1002300052004F0035001E021F022002210222023E -:10024000230224022502260227022E0001000100BB -:100250000100010001000100010001000100010096 -:100260002F00300001000100010001000100010029 -:10027000010001002D002D023100010001000100EC -:10028000010001000100010001000120AB00AA00F3 -:10029000A900AE0035021E001F0020002100220030 -:1002A000230024002500260027002E023A003B00F0 -:1002B0003C003D003E003F00400041004200430042 -:1002C0004400450039003A003B003C003D003E0040 -:1002D0003F004000410042004300280001000100AF -:1002E000010001000220010001000100AB00AA0092 -:1002F000A900AE00290014001A000800150017001C -:100300001C0018000C00120013004C002B0004000D -:100310001600070009000A000B000D000E000F0078 -:1003200033003400E1001D001B0006001900050029 -:1003300011001000360037003800E5000100E00031 -:10034000E200E30002202C002C00012050005100AC -:1003500052004F0028035400680065002000500040 -:100360006C0061006E0063006B0020004B006500B4 -:10037000790062006F0061007200640000002C03CD -:100380004F007200740068006F006C0069006E001E -:1003900065006100720020004B006500790062007A -:1003A0006F00610072006400730000000403090420 -:1003B00009026D00040100A0FA0904000001030114 -:1003C0000100092111010001223F000705810308F6 -:1003D000000A0904010001030102000921110100C2 -:1003E00001224D000705820308000A0904020001EA -:1003F00003000000092111010001223600070583D6 -:100400000308000A09040300010300000009211188 -:1004100001000122390007058403100001120110B8 -:100420000100000008EDFE6060010001020001050E -:10043000010906A101050719E029E7150025019525 -:1004400008750181020508190129059505750191B5 -:1004500002950175039101050719002977150025FB -:1004600001957875018102C005010980A10185020D -:1004700016010026B7001A01002AB7007510950171 -:100480008100C0050C0901A1018503160100269C0D -:10049000021A01002A9C02751095018100C0050115 -:1004A0000902A1010901A100050919012905150089 -:1004B00025019505750181029501750381010501ED -:1004C000093009311581257F9502750881060938A3 -:1004D0001581257F950175088106050C0A380215DE -:1004E00081257F950175088106C0C005010906A117 -:1004F00001050719E029E715002501950875018117 -:1005000002950175088101050819012905950575F0 -:100510000191029501750391010507190029FF1545 -:100520000025FF950675088100C011241FBECFEF7E -:10053000DAE0DEBFCDBF04B603FE24C080911E0307 -:1005400090911F03A0912003B09121038730904B1D -:10055000A740B04BB9F410921E0310921F031092E3 -:1005600020031092210314BE84B7877F84BF88E1E3 -:100570000FB6F89480936000109260000FBEE0E028 -:10058000F8E3099511E0A0E0B1E0E0EBF9E502C085 -:1005900005900D92A03CB107D9F713E0A0ECB1E0B3 -:1005A00001C01D92AE31B107E1F70E94BD110C945C -:1005B000D62C0C9400000895089581E008950895C4 -:1005C0000C94DC020C94DD020C94DF020E94A02843 -:1005D00023E030E0281B3109220F2093C401089545 -:1005E000282F2F9880918000211108C0877F809349 -:1005F000800010928D0010928C001BC08860809348 -:100600008000233019F48FEF9FEF0FC083E090E05C -:10061000821B9109880F991F2FEF3FEFA90102C09C -:10062000569547958A95E2F7CA0190938D0080937D -:100630008C000C94E6020E94E60284E08093C301E1 -:100640001092C0010895279A2F988FEF9FEF9093F3 -:100650008700809386008AE08093800089E1809300 -:1006600081000E9409280C941B030E9423036E9AA8 -:10067000769A0C94DB021F920F920FB60F92112400 -:100680002F933F938F939F93EF93FF93E091C1013B -:10069000F091C201CF0101969093C2018093C101F4 -:1006A0000090C30102C0F695E7950A94E2F7EF7354 -:1006B0008091C001823019F4E03251F404C08130DD -:1006C00039F4EF3329F480916F008D7F80936F00B0 -:1006D000F0E0E457FE4FE49121E031E0E29FC001F9 -:1006E000E39F900D11240090C40102C09695879558 -:1006F0000A94E2F790938D0080938C00FF91EF9124 -:100700009F918F913F912F910F900FBE0F901F904F -:10071000189581E008950C94890308950C9435038D -:1007200080911502882309F448C08091D1019091ED -:10073000D201009779F40E94DD229093D201809338 -:10074000D1018091D30190E0009771F48091D401A0 -:1007500090E00AC00E94E92220910001309101013D -:100760002817390740F329C00197880F991F880F70 -:10077000991FFC01EB52FE4F608171818281938150 -:100780000E94520AE091D30184E0E89FF001112415 -:10079000EB52FE4F60817181828193814FE050E086 -:1007A0000E940A0E8091D30190E001966091D401DD -:1007B00070E00E94862C8093D3010C94E00210928A -:1007C00017020C941F0A0895089581E08093170280 -:1007D0000C94E403089508958F929F92AF92BF9274 -:1007E000EF92FF920F931F93CF93DF93CDB7DEB7B6 -:1007F000A3970FB6F894DEBF0FBECDBF7C01FC01FE -:1008000000811181C8010E94DA20B8010E94F1051F -:100810008C01B7010E948B03882309F4CCC10032FC -:10082000F0E51F0741F4F7018281882309F458C0DD -:100830000E946E0EC0C10132F0E51F0741F4F701BE -:100840008281882309F44CC00E94770EB4C1023221 -:10085000F0E51F0751F4F7018281882309F440C0B5 -:100860000E946A0E8111F0CFE3CF0332F0E51F073B -:1008700039F4F7018281882399F10E94E5039BC135 -:100880000432F0E51F0739F4F7018281882341F132 -:100890000E94DF0390C10532F0E51F0749F4F7011C -:1008A00082818823E9F0809117028111F1CFE5CF91 -:1008B0000632F0E51F0739F4F7018281882381F0C1 -:1008C0000E947E0E0AC00732F0E51F0749F4F701C7 -:1008D0008281882329F00E94890E0E94EB036BC15C -:1008E00080911702811105C0F70182818111CFC06B -:1008F00018C1003E110579F4F7018281882309F4BB -:100900004DC00E941F0A81E08093160210921502CA -:100910001092D40150C1023E110559F4F7018281B1 -:100920008823E1F10E941F0A10921602109215020C -:1009300042C1033E110591F4F7018281882371F1D0 -:100940000E941F0A1092160281E0809315021092F5 -:10095000D3011092D2011092D1012DC1023511059F -:1009600059F4F7018281882309F425C1809100019F -:10097000909101010A970DC00135110579F4F70135 -:100980008281882309F417C18091000190910101AF -:100990000A9690930101809300010DC140910401DA -:1009A00083E2EFE1F1E0DE01119601900D928A956C -:1009B000E1F7F701808121E030E02C0F3D1F280F87 -:1009C000311DC9012091020130910301FC01E20FA8 -:1009D000F31F6081772767FD7095640F711D88276D -:1009E00077FD8095982F0E94A82920E030E040E410 -:1009F00051E40E940D294B015C01F701218184E043 -:100A000090E0821B9109BC01882777FD8095982F83 -:100A10000E94A8299B01AC01C501B4010E94A52830 -:100A20009B01AC0160E070E080E090E40E941B2B31 -:100A300020E030E04CED50E40E94B82A4B015C010C -:100A4000F70182818823D1F04FE050E0C501B40165 -:100A50000E940A0E809116028823A1F08091D40191 -:100A600024E0829FF0011124EB52FE4F808291829C -:100A7000A282B3828F5F8093D40104C0C501B40108 -:100A80000E94520A0F3F110508F02ECF94C08091AA -:100A9000D00181111FC0043130E5130709F051C0A6 -:100AA0000E948D0381E08093D0010E94DD2290930B -:100AB000CF018093CE011092C7011092C90110920C -:100AC000C8011092CB011092CA011092CD01109270 -:100AD000CC0171C08091CE019091CF010E94E9229A -:100AE000883C910570F48091C701E82FF0E0EE0F8B -:100AF000FF1FE853FE4F118300838F5F8093C70170 -:100B00005AC0043880E5180721F00538104501F176 -:100B10003AC0F7018281882341F01092C50182E03A -:100B20001EC0043830E5130759F58091C5018111C5 -:100B300006C086E20E94361886E20E94FE1882E015 -:100B40001CC00438F0E51F0741F305381045D9F4FF -:100B5000F7018281882331F01092C60180E20E9461 -:100B60004D1929C08091C601811106C087E20E94FB -:100B7000361887E20E94FE1880E20E9454191BC0BA -:100B80000538104529F381E08093C5018093C601A3 -:100B9000C701A3960FB6F894DEBF0FBECDBFDF919D -:100BA000CF911F910F91FF90EF90BF90AF909F90CA -:100BB0008F900C94E20280E0A3960FB6F894DEBF0B -:100BC0000FBECDBFDF91CF911F910F91FF90EF909E -:100BD000BF90AF909F908F90089580E090E008952F -:100BE00008959CE0799FF001112490E3899FE00D26 -:100BF000F11D1124E60FF11DEE0FFF1FEC52FE4F09 -:100C0000859194910895880F991FFC01E45BFF4F33 -:100C1000859194910895880F991FFC01E453FE4F2C -:100C20008591949108950F931F93CF93DF93EC01D7 -:100C3000811521E39207A0F5C11580E3D80708F0DC -:100C4000D7C0C83ED105D8F4C03ED10508F007C2D0 -:100C5000C83AD10578F4C53AD10508F06AC0C13068 -:100C6000D10509F463C008F4F7C1C430D10508F018 -:100C7000F6C1F2C1CB3BD10508F466C0EDC1C11588 -:100C800090E2D90708F0AFC0C11521E0D20708F003 -:100C9000E6C1C03FD10508F4DFC18E0110651FC257 -:100CA000C03880E5D80700F5C03790E5D90708F0CF -:100CB000A3C0C11520E5D20709F4ACC050F4CE01A1 -:100CC000905480319F4008F0C7C1DF708E01106AD8 -:100CD00006C2C13080E5D80709F4AEC0C43190E542 -:100CE000D90708F4AFC0B8C1C33820E5D20709F46A -:100CF0008EC050F4C13890E5D90709F482C008F0DD -:100D000083C000E011EDEBC1C03181E5D80708F4E4 -:100D1000A3C1C11597E5D90708F436C1CE01905794 -:100D20008115904108F098C1DF7093C101E010E097 -:100D3000D6C1C53AD10509F494C1C63AD10509F026 -:100D400093C102E810E4CBC1C83AD10509F48FC1C0 -:100D5000C93AD10509F48EC1CA3AD10509F48DC149 -:100D6000CB3AD10509F48CC1CC3AD10509F48BC139 -:100D7000CD3AD10509F48AC1C03BD10509F489C136 -:100D8000CE3AD10509F488C1CF3AD10509F487C11B -:100D9000C13BD10509F486C1C23BD10509F485C127 -:100DA000C33BD10509F484C1C43BD10509F483C117 -:100DB000C53BD10509F482C1C63BD10509F481C107 -:100DC000C73BD10509F480C1C83BD10509F47FC1F7 -:100DD000C93BD10509F47EC1CA3BD10509F47DC1E7 -:100DE00000E014E47CC1CE019F700E940B0678C124 -:100DF000DD278E01106C73C1CF70DD278E01146D5D -:100E00006EC100E010ED6BC100E012ED68C100E0C2 -:100E100013ED65C10E94E11B0E941F0A0E94E303BB -:100E20008FEF94E32CE0815090402040E1F700C028 -:100E300000000E94382353C18091F20281608093A8 -:100E4000F2024DC10E949923811102C00E947523B4 -:100E50000E94AC2390E090931D0380931C03C2304A -:100E600080E5D80721F480911C03816086C0C430DE -:100E700090E5D90721F480911C0382607EC0C630C2 -:100E800020E5D20721F480911C03846076C0C8302D -:100E900080E5D80719F480911C0327C0CA3090E57B -:100EA000D90721F480911C03806167C0CC3020E514 -:100EB000D20721F480911C0380625FC0CE3080E5B0 -:100EC000D80721F480911C03806457C0C03190E59D -:100ED000D90721F480911C0380684FC0C23120E5FE -:100EE000D20729F480911C038460886046C0C33017 -:100EF00080E5D80721F480911C038E7F3EC0C53069 -:100F000090E5D90721F480911C038D7F36C0C7304E -:100F100020E5D20721F480911C038B7F2EC0C930BD -:100F200080E5D80719F480911C0326C0CB3090E5EA -:100F3000D90721F480911C038F7E1FC0CD3020E59E -:100F4000D20721F480911C038F7D17C0CF3080E53C -:100F5000D80721F480911C038F7B0FC0C13190E52D -:100F6000D90721F480911C038F7707C0C331D04586 -:100F700031F480911C038B7F877F80931C038091C9 -:100F80001C030E94B023ABC08D2F99278F70992727 -:100F900081309105D9F49E012370332702C0880F58 -:100FA000991F2A95E2F79C688E0144E0000F111FFB -:100FB0004A95E1F700271370802B912B53E0CC0F5B -:100FC000DD1F5A95E1F7C076DD272FC082309105ED -:100FD00031F4DC2FCC278E01016F106A80C0833082 -:100FE000910569F4CE018370992701E010E002C0F9 -:100FF000000F111F8A95E2F7C8019C680FC084306A -:101000009105B9F4CE018370992701E010E002C088 -:10101000000F111F8A95E2F7C8019A6823E0CC0FF0 -:10102000DD1F2A95E1F7C07ED7708C010C2B1D2B9C -:1010300056C08530910531F4DC2FCC278E01046F2A -:10104000106A4DC0069709F04AC0CF71DD27DC2F2A -:10105000CC278E01106243C000E010E040C08E013A -:101060003EC001E810E43BC003E810E438C002EEE3 -:1010700014E435C009EE14E432C00AEE14E42FC0C3 -:1010800005EB14E42CC006EB14E429C007EB14E4D0 -:1010900026C00CEC14E423C00DEC14E420C003E8DB -:1010A00015E41DC00AE815E41AC002E915E417C0EA -:1010B00004E915E414C001E216E411C003E216E4E9 -:1010C0000EC004E216E40BC005E216E408C006E216 -:1010D00016E405C007E216E402C00AE216E4C801FD -:1010E000DF91CF911F910F9108959CE0799FF001BE -:1010F000112490E3899FE00DF11D1124E60FF11DED -:10110000EE0FFF1FEC52FE4F85919491803E9105AA -:10111000E0F4803C910558F58133910509F46FC0E6 -:1011200048F48932910509F463C08A32910509F4C3 -:101130006DC072C089339105E9F082389105D1F014 -:101140008533910509F44DC067C0833E910581F157 -:1011500038F4803E9105B9F0823E9105D9F05CC02B -:10116000863E910561F1873E9105A1F155C00E942F -:101170000306089520911C0320FD02C021FF4CC0EE -:1011800080EE90E049C080911C0380FFF9CF89E395 -:1011900090E042C080911C0382FF0EC080911C032E -:1011A00084FF03C080E090E037C083EE90E034C05D -:1011B00080911C0382FFF2CF82EE90E02DC08091DF -:1011C0001C0383FF0BC080911C0384FDEBCF87EED3 -:1011D00090E022C080911C0383FFF5CF86EE90E063 -:1011E0001BC080911C0385FF07C089E290E014C0FA -:1011F00080911C0385FFF9CF85E390E00DC08091BD -:101200001C0386FF07C08AE290E006C080911C03A1 -:1012100086FFF9CF81E390E00E94130608950C94B5 -:10122000E402E82FF0E0E25BFE4F8081E82FEF70F0 -:10123000F0E082958F7021E030E0A90102C0440FF8 -:10124000551F8A95E2F740A308950F931F93CF93FC -:10125000DF9385B7806885BF85B7806885BFC3E0A9 -:10126000D0E001E010E0FE01E25BFE4F8081E82F5C -:10127000EF70F0E021A182958F70A80102C0440FA9 -:10128000551F8A95E2F7CA01822B81A38C2F0E94F9 -:101290001109219740F78BE090E061E070E0FC01DC -:1012A000EE5BFE4F2081E22FEF70F0E042A122952D -:1012B0002F70DB0102C0AA0FBB1F2A95E2F79D0128 -:1012C000242B22A3019758F7DF91CF911F910F9103 -:1012D0000C948E03EF92FF920F931F93CF93DF93A3 -:1012E00000E212E0C3E0EE24E394F12CD5E08C2F71 -:1012F0000E9411098BE090E040E050E0FC01EE5BC1 -:10130000FE4F6081E62FEF70F0E020A130E06295A3 -:101310006F7002C0359527956A95E2F720FD09C0E8 -:101320009701082E02C0220F331F0A94E2F7422BC6 -:10133000532B019718F7F801929182918F0184172E -:10134000950721F051834083D09305018C2F0E9493 -:101350001109C15060F68091050187FD2CC08150B4 -:10136000809305018F3F39F08FE99FE00197F1F7F6 -:1013700000C0000020C080911E0290911F02909337 -:1013800027028093260280911C0290911D02909367 -:1013900025028093240280911A0290911B0290935F -:1013A0002302809322028091180290911902909357 -:1013B0002102809320020E94900381E0DF91CF916F -:1013C0001F910F91FF90EF900895E82FF0E0EE0F3E -:1013D000FF1FE05EFD4F80819181089508950F9376 -:1013E0001F93CF9308E212E0C0E0F801929182913E -:1013F0008F010E945522C80FF2E000321F07A9F7A3 -:101400008C2FCF911F910F9108950E9499238111E4 -:1014100002C00E9475230E94BE23809307033E9A58 -:10142000809171008D7F8093710082E080939000A5 -:101430008AE18093910081E080932A02089580914F -:101440002A02811102C00E94050A10927A021092AB -:101450007902809171008D7F80937100809190005E -:101460008F738093900010923C0210923B02109276 -:10147000730210927402109275021092760210920A -:10148000720210927102E1E5F2E0A1E4B2E0119281 -:101490001192119211921D921D9282E0E137F8078C -:1014A000B1F70895CF92DF92EF92FF920F931F93BF -:1014B000CF93DF9320913B02222309F484C06B0178 -:1014C0007C0180912A02811102C00E94050A01E775 -:1014D00012E0C7E0D0E0A7019601F8019291829155 -:1014E000729162918F010E940929811131C0FE0120 -:1014F000EE0FFF1FEE0FFF1FEF5AFD4F10821182FC -:1015000012821382DE01AA0FBB1FAF5BBD4F119683 -:101510001C921E92C730D105E9F021964481558175 -:10152000668177814083518362837383148215823D -:101530001682178212968D919C91139711969C9307 -:101540008E9313961C921E92129734961296E2CFA7 -:10155000219708F68091790290917A02019797FD80 -:1015600005C090937A028093790204C010927A02A7 -:10157000109279028091790290917A0220917702FB -:10158000309178022817390724F0109278021092CF -:101590007702892BC1F4809171008D7F8093710057 -:1015A000809190008F73809390001092730210923C -:1015B00074021092750210927602109272021092CA -:1015C000710210923B02DF91CF911F910F91FF901A -:1015D000EF90DF90CF9008951F920F920FB60F9269 -:1015E00011244F925F926F927F928F929F92AF924F -:1015F000BF92CF92DF92EF92FF922F933F934F9340 -:101600005F936F937F938F939F93AF93BF93CF938A -:10161000DF93EF93FF9380913B02882309F49BC1F2 -:10162000C0917902D0917A021C161D060CF093C16C -:1016300040902B0250902C0260902D0270902E0250 -:1016400020E030E0A901C301B2010E94B42A1816BB -:101650000CF065C0C130D10509F452C08091770209 -:1016600090917802BE010E94862C7C0190937802B2 -:101670008093770280903D0290903E02A0903F02BE -:10168000B090400220E030E040E85FE3C501B401E3 -:101690000E94A52860933D0270933E0280933F0212 -:1016A00090934002F701EE0FFF1FEE0FFF1FEF5A5E -:1016B000FD4FA301920160817181828193810E941B -:1016C0000D2920E030E040E05EE30E94B82A9B0153 -:1016D000AC01C501B4010E94B42A18168CF4C701EC -:1016E0000196BE010E94862C909378028093770227 -:1016F00010923D0210923E0210923F021092400260 -:10170000E0917702F0917802EE0FFF1FEE0FFF1FBE -:10171000EF5AFD4F6081718182819381D0C0C0906A -:101720007302D0907402E0907502F090760220E08F -:1017300030E0A901C701B6010E9409292197882339 -:1017400009F4A2C0FE01EE0FFF1FEE0FFF1FEF5ABC -:10175000FD4F80809180A280B380A5019401C701D4 -:10176000B6010E94092987FF31C0A501940160E0FC -:1017700070E08CED93EC0E940D2920E030E040E415 -:1017800051E40E940D2920E030E040E05FE30E9438 -:10179000B82A9B01AC0160E070E080E090E40E9418 -:1017A0001B2B9B01AC01C501B4010E94B82A9B010F -:1017B000AC01C701B6010E94092987FF07C0A70134 -:1017C000960160E070E08CED93E439C0A5019401CE -:1017D000C701B6010E94B42A18160CF055C0A50125 -:1017E000940160E070E08CED93E40E940D2920E00C -:1017F00030E040E451E40E940D2920E030E040E078 -:101800005FE30E94B82A9B01AC0160E070E080E0D9 -:1018100090E40E941B2B9B01AC01C501B4010E9406 -:10182000B82A9B01AC01C701B6010E94B42A181660 -:101830005CF5A701960160E070E08CED93EC0E94EE -:101840000D2920E030E040E451E40E940D2920E021 -:1018500030E040E05FE30E94B82A9B01AC0160E009 -:1018600070E080E090E40E941B2B9B01AC01C7015B -:10187000B6010E94B82A6093730270937402809339 -:1018800075029093760213C0FE01EE0FFF1FEE0F5C -:10189000FF1FEF5AFD4F80819181A281B381809318 -:1018A000730290937402A0937502B09376026091D4 -:1018B000730270917402809175029091760220916A -:1018C0002802309129022F3F4FEF340731F02F5F6C -:1018D0003F4F30932902209328020E94940E6B01FF -:1018E0007C0120E034E244EF51E40E94092987FFA3 -:1018F00008C086EFC82E88E2D82E84EFE82E81E457 -:10190000F82E20E030E040E051E4C701B6010E942B -:10191000B82A9B01AC0160E074E284E79BE40E947A -:101920000D296B017C010E947A29709397006093C6 -:1019300096002091060130910701409108015091D5 -:101940000901C701B6010E94B82A0E947A29709342 -:1019500099006093980080913C02882309F433C178 -:10196000C0903702D0903802E0903902F0903A02ED -:1019700020E030E0A901C701B6010E94B42A181680 -:10198000D4F580912802909129028F3F2FEF920782 -:1019900029F001969093290280932802C701B6018D -:1019A0000E94940E20E030E040E051E40E94B82A0A -:1019B0009B01AC0160E074E284E79BE40E940D2986 -:1019C0006B017C010E947A297093970060939600C6 -:1019D00020910601309107014091080150910901C1 -:1019E000C701B6010E94B82A0E947A297093990013 -:1019F0006093980008C01092970010929600109281 -:101A000099001092980060913102709132026F5FDC -:101A10007F4F709332026093310220919600309193 -:101A2000970080E090E0232BF1F0C0919600D091D8 -:101A300097000E94A6296B017C01BE0180E090E026 -:101A40000E94A6299B01AC0160913302709134027F -:101A500080913502909136020E940D2920E03FEFDF -:101A60004FE757E410C00E94A6296B017C0120E0DB -:101A700030EE4FEF54E46091330270913402809164 -:101A80003502909136020E94B82A9B01AC01C70131 -:101A9000B6010E94B42A87FD96C080912F028F5F05 -:101AA00080932F0290E0209103033091040382176A -:101AB0009307A0F080910E03882319F010922F0253 -:101AC0000DC0809171008D7F809371008091900096 -:101AD0008F738093900010923C027DC08091300201 -:101AE000C0912F02811128C0C0900803D090090333 -:101AF000E0900A03F0900B0320E030E0A901C70159 -:101B0000B6010E94B42A1816BCF481E0809330021A -:101B100010923702109238021092390210923A0253 -:101B2000C0923302D0923402E0923502F092360233 -:101B3000C150C0932F0243C010923002109229026C -:101B400010922802E0910503F091060348E0C49F3B -:101B5000E00DF11D112480819181A281B3818093D8 -:101B6000370290933802A0933902B0933A0220E0F2 -:101B700030E040E85EE364817581868197810E9450 -:101B8000B82A6B017C0180910A01682F70E080E027 -:101B900090E00E94A62920E030E048EC52E40E9448 -:101BA0000D299B01AC01C701B6010E94B82A6093C0 -:101BB0003302709334028093350290933602109270 -:101BC0003202109231028091070380FD04C010920E -:101BD0003C0210923B02FF91EF91DF91CF91BF91B8 -:101BE000AF919F918F917F916F915F914F913F91B5 -:101BF0002F91FF90EF90DF90CF90BF90AF909F908C -:101C00008F907F906F905F904F900F900FBE0F90CE -:101C10001F901895CF92DF92EF92FF92CF93DF93B0 -:101C20006B017C01EA0180912A02811102C00E94AD -:101C3000050A8091070380FF46C080917902909148 -:101C40007A0208970CF03FC0809171008D7F8093DD -:101C5000710080913C0281110E941F0A81E08093F3 -:101C60003B02109229021092280220E030E0A901E4 -:101C7000C701B6010E94B42A1816DCF480917902DB -:101C800090917A02FC01EE0FFF1FEE0FFF1FEF5A3B -:101C9000FD4FC082D182E282F382FC01EE0FFF1F72 -:101CA000EF5BFD4FD183C083019690937A028093BE -:101CB0007902809171008260809371008091900020 -:101CC000806880939000DF91CF91FF90EF90DF903C -:101CD000CF90089580910703817008958091070344 -:101CE0008160809307030E94C2230C94EA038091D1 -:101CF00007038E7F809307030C94C22380917B029D -:101D000090E0019666E070E00E94862C80937B0252 -:101D1000089580917B0290E0019766E070E00E9458 -:101D2000862C80937B0208958F929F92AF92BF92F0 -:101D3000CF92DF92EF92FF920F931F93CF93DF9397 -:101D40006B017C01C0912802D0912902BE0180E084 -:101D500090E00E94A6294B015C01A701960160E07A -:101D600070E08CE594E40E940D299B01AC01C50153 -:101D7000B4010E94B82A0E947A2920917B02233064 -:101D800009F473C028F4222351F02130E9F02CC16A -:101D9000243009F4A0C0253009F4E0C025C180E05A -:101DA00090E0A0E0BFE38093060190930701A09329 -:101DB0000801B093090110922B0210922C0210928C -:101DC0002D0210922E0210C110922B0210922C02A2 -:101DD00010922D0210922E026431710540F46A3087 -:101DE000710560F520E030E040E85EE32BC0693C1F -:101DF000710508F0AAC080E090E00E94A62920E0CA -:101E000030E040EA51E40E94A42820E030E044E3BE -:101E100053E40E940D299B01AC010E94B82A20E0E6 -:101E200030E040E05EE30E94B82A9B01AC0160E034 -:101E300070E080E09EE30E94A42844C020E030E0EF -:101E400040E05FE3C701B6010E94B82A6B017C0144 -:101E500080E090E0A0E0BEE380930601909307014C -:101E6000A0930801B0930901BFC010922B021092F9 -:101E70002C0210922D0210922E024AE0469F9001F1 -:101E8000479F300D1124C90168EB7BE00E94722C42 -:101E9000BC016C5D754077FF03C071956195710958 -:101EA000882777FD8095982F0E94A8292EE333EC90 -:101EB0004EE259E30E94B82A20E030E040EC5EE3B5 -:101EC0000E94A52860930601709307018093080182 -:101ED0009093090189C010922B0210922C0210924B -:101EE0002D0210922E02CE0183709927892BE1F0EA -:101EF000BE016170772780E090E00E94A62920E073 -:101F000030E040E05EE30E94B82A20E030E040E4A8 -:101F10005FE30E94A52860930601709307018093F8 -:101F20000801909309010CC080E090E0A0E0BFE3BD -:101F30008093060190930701A0930801B0930901D3 -:101F4000C770DD27CD2B09F04FC01092060110920B -:101F50000701109208011092090146C010922B024D -:101F600010922C0210922D0210922E0200E010E02E -:101F700020E03FE30093060110930701209308013E -:101F8000309309016739710578F180E090E00E9493 -:101F9000A62920E030E047E153E40E94A42820E095 -:101FA00030E04AE754E40E940D2920E030E048E4A4 -:101FB00052E40E94B82A20E030E040EA51E40E9456 -:101FC000EA290E947529660F771F660F771FFB01AC -:101FD000EE5AFE4F2081318142815381C701B60103 -:101FE0000E94B82A6B017C01C701B601DF91CF9135 -:101FF0001F910F91FF90EF90DF90CF90BF90AF9027 -:102000009F908F90089580918C020895CF93DF93D5 -:1020100000D01F92CDB7DEB79C01809113038430AE -:1020200019F593E099833B832A839093E9008FEF1E -:102030009091E800815095FD06C095ED9A95F1F7D5 -:1020400000008111F5CF8091E80085FF0DC040E0D0 -:1020500050E063E070E0CE0101960E94671280912B -:10206000E8008E778093E8000F900F900F90DF913B -:10207000CF910895CF93DF9300D01F92CDB7DEB7F5 -:1020800020911303243021F522E029839B838A8346 -:1020900083E08093E9008FEF9091E800815095FDF7 -:1020A00006C095ED9A95F1F700008111F5CF80916A -:1020B000E80085FF0DC040E050E063E070E0CE0135 -:1020C00001960E9467128091E8008E778093E80065 -:1020D0000F900F900F90DF91CF91089520911303EF -:1020E0002430F1F422E02093E9002FEF3091E80052 -:1020F000215035FD06C035ED3A95F1F7000021116C -:10210000F5CF2091E80025FF0BC040E050E065E0EE -:1021100070E00E9467128091E8008E778093E8005B -:102120000895CF93DF93EC0190911303943009F05D -:1021300046C0809115018823D9F08091160188232B -:10214000B9F09093E9008FEF9091E800815095FDF0 -:1021500006C095E19A95F1F700008111F5CF8091C5 -:10216000E80085FF2CC040E050E060E170E017C05F -:1021700081E08093E9008FEF9091E800815095FD18 -:1021800006C095ED9A95F1F700008111F5CF809189 -:10219000E80085FF14C040E050E068E070E0CE0148 -:1021A0000E9467128091E8008E778093E80080E1BA -:1021B000FE01ACE7B2E001900D928A95E1F7DF9164 -:1021C000CF91089580911203811109C00E94FC13E0 -:1021D0000E9459148091E20084608093E200089587 -:1021E000109212030895089508950C94A02242E0DD -:1021F00061EC81E00E94761342E061EC82E00E9493 -:10220000761342E061EC83E00E94761342E161ECD8 -:1022100084E00C94761380911503833009F455C043 -:1022200030F4813071F0823009F48EC008958A3024 -:1022300009F47AC08B3009F460C0893009F09CC081 -:1022400020C080911403813A09F096C08091E80083 -:10225000877F8093E8008091180390911903892B60 -:1022600021F460E18CE792E003C060E080E090E060 -:1022700070E00E94B2128091E8008B778093E800B2 -:10228000089580911403813209F076C0809118037B -:1022900090911903009719F0039709F06DC0809190 -:1022A000E800877F8093E8008091E80082FD05C008 -:1022B000809113038111F8CF5FC08091F10080936A -:1022C0008C028091E8008B7753C080911403813A8F -:1022D00009F052C08091180390911903892B09F0DD -:1022E0004BC08091E800877F8093E8008091E800F0 -:1022F00080FFFCCF8091150136C08091140381329C -:10230000D9F58091180390911903892BA9F5809133 -:10231000E800877F8093E8000E94AB13809116034A -:10232000809315010C94E11B80911403813221F5F7 -:102330008091E800877F8093E8000E94AB13809132 -:10234000170380938D02089580911403813AA1F4BC -:102350008091E800877F8093E8008091E80080FF0B -:10236000FCCF80918D028093F1008091E8008E7700 -:102370008093E8000C94AB13089584B7877F84BFE3 -:1023800088E10FB6F89480936000109260000FBE51 -:1023900090E080E80FB6F89480936100909361001C -:1023A0000FBE0E944E170E94FC130E945914809188 -:1023B000E20084608093E20078940E94DF160E941D -:1023C00050178BE091E00E94FA168091130385303C -:1023D00069F40E946122809111038823B1F30E9465 -:1023E0008F22882391F30E945112EFCF0E94581739 -:1023F000ECCF292F332723303105C9F064F4213085 -:10240000310581F02230310509F043C08DE690E0BE -:1024100020EB33E042C021323105F1F022323105A8 -:1024200041F137C082E190E02DE134E036C09927D8 -:102430008130910541F08230910541F0892B49F5B9 -:10244000ECEAF3E005C0EEE7F3E002C0E4E5F3E018 -:10245000849190E09F0121C06430D8F4E62FF0E031 -:10246000EE0FFF1FE255FE4F2081318189E090E0A1 -:1024700014C0643070F470E0FB01EE0FFF1FEA55EA -:10248000FE4F20813181FB01EE55FE4F808190E0AF -:1024900004C080E090E020E030E0FA013183208346 -:1024A000089580E189BD82E189BD09B400FEFDCFB8 -:1024B0008091D8008F7D8093D8008091E000826069 -:1024C0008093E0008091E00081FDFCCF0895CF92E1 -:1024D000DF92EF92FF920F931F93CF93DF93EC0164 -:1024E0008B016A010E94CA13811133C0C114D10447 -:1024F00039F0F60180819181081B190BC80FD91F93 -:10250000E12CF12C0115110519F18091E80085FDF0 -:1025100016C08091E8008E778093E800C114D10442 -:1025200049F0F60180819181E80EF91EF182E08286 -:1025300085E00FC00E94CA13882321F30AC0899145 -:102540008093F10001501109FFEFEF1AFF0ADACF73 -:1025500080E0DF91CF911F910F91FF90EF90DF907E -:10256000CF90089520911A0330911B032617370747 -:1025700048F06115710539F42091E8002E77209319 -:10258000E80001C0B90140E061157105A9F1209191 -:102590001303222309F443C0253009F442C02091DB -:1025A000E80023FD40C02091E80022FD32C02091C8 -:1025B000E80020FFE9CF4091F3002091F20030E0E5 -:1025C000342BFC01CF016115710559F0283031051C -:1025D00040F481918093F100615071092F5F3F4F6A -:1025E000F1CF41E02830310509F040E02091E800CA -:1025F0002E772093E800C8CF4111C9CF0AC080913F -:102600001303882361F0853061F08091E80083FD39 -:102610000AC08091E80082FFF2CF80E0089582E056 -:10262000089583E0089581E0089520911A03309180 -:102630001B032617370748F06115710539F42091FF -:10264000E8002E772093E80001C0B901FC0120E0EA -:102650006115710591F180911303882309F440C03D -:10266000853009F43FC08091E80083FD3DC0809132 -:10267000E80082FD2FC08091E80080FFE9CF209123 -:10268000F3008091F20090E0922B6115710559F0F2 -:102690008830910540F424912093F10031966150E7 -:1026A00071090196F2CF21E0089709F020E08091AE -:1026B000E8008E778093E800CBCF2111CCCF0AC001 -:1026C00080911303882361F0853061F08091E800E8 -:1026D00083FD0AC08091E80082FFF2CF80E0089578 -:1026E00082E0089583E0089581E00895982F97305F -:1026F00058F59093E900981739F07091EC0020910B -:10270000ED005091F00003C0242F762F50E021FF00 -:1027100019C03091EB003E7F3093EB003091ED001B -:102720003D7F3093ED003091EB0031603093EB0052 -:102730007093EC002093ED005093F0002091EE0098 -:1027400027FF07C09F5FD3CF8F708093E90081E0A0 -:10275000089580E008958091140387FF11C080914F -:10276000E80082FD05C0809113038111F8CF11C0EC -:102770008091E8008B770BC080911303882349F088 -:102780008091E80080FFF8CF8091E8008E778093F9 -:10279000E80008952091E4003091E50095E640912D -:1027A000EC00842F817040FF22C08091E80080FD02 -:1027B0001CC080911303882391F0853091F08091A3 -:1027C000EB0085FD10C04091E4005091E5004217F8 -:1027D000530729F39A01915011F784E0089582E09C -:1027E000089583E0089581E0089580E00895409180 -:1027F000E80042FFDECF08950E946A140E9472141E -:10280000E0EEF0E0808181608083E8EDF0E080819F -:102810008F77808319BCA7EDB0E08C918E7F8C936D -:1028200080818F7E80831092120308950F931F93EF -:10283000CF93DF930E946A140E947214C8EDD0E017 -:1028400088818F77888388818068888388818F7D5D -:10285000888319BC1092130310920F031092110376 -:102860001092100300EE10E0F80180818B7F8083CE -:1028700088818160888342E060E080E00E94761376 -:10288000E1EEF0E080818E7F8083E2EEF0E08081F7 -:1028900081608083808188608083F80180818E7F61 -:1028A0008083888180618883DF91CF911F910F9110 -:1028B0000895E8EDF0E080818F7E8083E7EDF0E021 -:1028C00080818160808384E082BF81E080931203F5 -:1028D0000C941614E8EDF0E080818E7F80831092D6 -:1028E000E20008951092DA001092E10008951F921C -:1028F0000F920FB60F9211242F933F934F935F9334 -:102900006F937F938F939F93AF93BF93EF93FF93B7 -:102910008091E10082FF0BC08091E20082FF07C03E -:102920008091E1008B7F8093E1000E94DE16809110 -:10293000DA0080FF1FC08091D80080FF1BC080910B -:10294000DA008E7F8093DA008091D90080FF0DC07D -:1029500080E189BD82E189BD09B400FEFDCF81E03F -:10296000809313030E94E21005C019BC1092130358 -:102970000E94F0108091E10080FF19C08091E20078 -:1029800080FF15C08091E2008E7F8093E2008091ED -:10299000E20080618093E2008091D80080628093A1 -:1029A000D80019BC85E0809313030E94F410809135 -:1029B000E10084FF30C08091E20084FF2CC080E100 -:1029C00089BD82E189BD09B400FEFDCF8091D800A8 -:1029D0008F7D8093D8008091E1008F7E8093E1000D -:1029E0008091E2008F7E8093E2008091E20081601E -:1029F0008093E20080910F03882311F084E007C0E8 -:102A00008091E30087FD02C081E001C083E08093F4 -:102A100013030E94F5108091E10083FF29C080918B -:102A2000E20083FF25C08091E100877F8093E10071 -:102A300082E08093130310920F038091E1008E7F58 -:102A40008093E1008091E2008E7F8093E20080918C -:102A5000E20080618093E20042E060E080E00E945A -:102A600076138091F00088608093F0000E94F3104C -:102A7000FF91EF91BF91AF919F918F917F916F9156 -:102A80005F914F913F912F910F900FBE0F901F902C -:102A900018951F920F920FB60F9211242F933F9308 -:102AA0004F935F936F937F938F939F93AF93BF9356 -:102AB000CF93DF93EF93FF93C091E900CF708091A4 -:102AC000EC00D82FD17080FDD0E81092E900809101 -:102AD000F000877F8093F00078940E948D1510920B -:102AE000E9008091F00088608093F000CD2BCF70DA -:102AF000C093E900FF91EF91DF91CF91BF91AF912A -:102B00009F918F917F916F915F914F913F912F9105 -:102B10000F900FBE0F901F9018951F93CF93DF93C8 -:102B2000CDB7DEB7AA970FB6F894DEBF0FBECDBF04 -:102B3000E4E1F3E088E08E0F9091F10091938E1321 -:102B4000FBCF0E940B118091E80083FF1FC1809191 -:102B5000140390911503492F50E04A30510508F0B5 -:102B600015C1FA01EA5AFF4F0C949A2C803881F073 -:102B7000823809F00BC1809118038F708093E900AF -:102B80008091EB0085FB882780F91092E90006C050 -:102B90008091100390911103911182609091E8004F -:102BA000977F9093E8008093F1001092F100C8C0E5 -:102BB000282F2D7F09F0EAC0882319F0823061F0B8 -:102BC000E5C080911603813009F0E0C0933009F030 -:102BD00080E0809311032BC080911603811127C0E0 -:102BE000809118038F7009F4D1C08093E90020917F -:102BF000EB0020FF1CC0933021F48091EB00806239 -:102C000014C09091EB0090619093EB0021E030E0D4 -:102C1000A90102C0440F551F8A95E2F74093EA00CC -:102C20001092EA008091EB0088608093EB00109294 -:102C3000E9008091E800877F86C08111A7C01091CC -:102C400016031F778091E3008078812B8093E30047 -:102C50008091E800877F8093E8000E94AB13809109 -:102C6000E80080FFFCCF8091E30080688093E30060 -:102C7000111102C082E001C083E08093130386C07B -:102C80008058823008F082C080911603909117031B -:102C90008C3D53E0950779F583E08A838AE2898346 -:102CA0004FB7F894DE01139620E03EE051E2E32FA7 -:102CB000F0E050935700E49120FF03C0E295EF70DD -:102CC0003F5FEF708E2F90E0EA3010F0C79601C0A2 -:102CD000C0968D939D932F5F243149F74FBF80910C -:102CE000E800877F8093E8006AE270E0CE010196F9 -:102CF0000E94B21214C0AE014F5F5F4F6091180383 -:102D00000E94F911BC01009709F440C09091E800BD -:102D1000977F9093E80089819A810E941513809192 -:102D2000E8008B778093E80031C0803879F5809196 -:102D3000E800877F8093E80080910F038093F10083 -:102D40008091E8008E778093E8000E94AB131EC04C -:102D500081111CC0909116039230C0F48091E8005C -:102D6000877F8093E80090930F030E94AB138091BC -:102D70000F03811106C08091E30087FD02C081E04E -:102D800001C084E0809313030E94F7108091E80053 -:102D900083FF0AC08091E800877F8093E8008091DC -:102DA000EB0080628093EB00AA960FB6F894DEBF2A -:102DB0000FBECDBFDF91CF911F9108950895CF939E -:102DC000809113038823A1F0C091E900CF70909106 -:102DD000EC00892F817090FD80E8C82B1092E900EB -:102DE0008091E80083FD0E948D15CF70C093E900AB -:102DF000CF91089590939302809392020895E09169 -:102E00009202F0919302309721F00190F081E02D31 -:102E1000099480E00895E0919202F0919302309736 -:102E200021F00280F381E02D09940895E09192024F -:102E3000F0919302309721F00480F581E02D099400 -:102E4000089520919002309191028217930771F0BA -:102E50009093910280939002E0919202F0919302FC -:102E6000309721F00680F781E02D09940895209194 -:102E70008E0230918F028217930771F090938F0228 -:102E800080938E02E0919202F0919302309721F0AC -:102E90000084F185E02D0994089508950C944D1750 -:102EA0000E94D4220E9425090E945A230C940928CA -:102EB0005F926F927F928F929F92AF92BF92CF92CA -:102EC000DF92EF92FF920F931F93CF93DF9300D087 -:102ED00000D01F92CDB7DEB70E946A099DE9C92EC6 -:102EE00092E0D92E03E010E0AA24A394B12C502E36 -:102EF000802F0E94E5094C01F601729062906F01EB -:102F00006826792661147104A1F40150110978F73B -:102F10008FEF89838A831B820E94DD228160782F54 -:102F20009D838C8349815A816B818D810E94081811 -:102F300038C08091F20281FD0E94EE092BE030E062 -:102F40007501022E02C0EE0CFF1C0A94E2F7C701C5 -:102F500086219721892B09F129835A828E209F206F -:102F600091E0892809F490E09B830E94DD22816032 -:102F7000782F9D838C8349815A816B818D810E943A -:102F80000818000F111FF801EB56FD4F8081918149 -:102F9000E826F926F182E08204C02150310980F64A -:102FA000B4CF0E944125109194020E94FF16181779 -:102FB000D1F00E94FF16809394020F900F900F9013 -:102FC0000F900F90DF91CF911F910F91FF90EF9095 -:102FD000DF90CF90BF90AF909F908F907F906F9039 -:102FE0005F900C940F090F900F900F900F900F901F -:102FF000DF91CF911F910F91FF90EF90DF90CF90D5 -:10300000BF90AF909F908F907F906F905F9008954A -:10301000CF93DF93CDB7DEB72B970FB6F894DEBF13 -:103020000FBECDBF4F83588769877A878B87DE01B4 -:10303000119686E0FD0111928A95E9F785E0FE017F -:10304000379601900D928A95E1F749815A816B81FB -:103050007C818D819E810E947F1E2B960FB6F894F5 -:10306000DEBF0FBECDBFDF91CF910895CF938823F0 -:1030700009F4C2C0C82F823859F40E94FF1681FD9E -:10308000BBC089E30E9459210E94262289E30CC01B -:10309000833879F40E94FF1680FDAEC083E50E945C -:1030A00059210E94262283E50E949B21CF910C94F6 -:1030B0002622843859F40E94FF1682FD9DC087E4C1 -:1030C0000E9459210E94262287E4EECF8CEF8C0FBC -:1030D000813A48F48C2F0E94712781118DC08C2F6A -:1030E0000E945921E3CF80E28C0F883048F4C770EA -:1030F00081E001C0880FCA95EAF70E94DF21D6CF90 -:103100008BE58C0F833078F4C53A29F0C63A31F05C -:1031100083E890E005C081E890E002C082E890E09A -:10312000CF910C94211788E58C0F833108F064C08F -:10313000C83A39F1C93A41F1CA3A49F1CB3A51F1A9 -:10314000CC3A59F1CD3A61F1C03B69F1CE3A71F117 -:10315000CF3A79F1C13B81F1C23B89F1C33B91F197 -:10316000C43B99F1C53BA1F1C63BA9F1C73BB1F105 -:10317000C83BB9F1C93BC1F1CA3BC9F180E090E05D -:1031800038C082EE90E035C089EE90E032C08AEE21 -:1031900090E02FC085EB90E02CC086EB90E029C03A -:1031A00087EB90E026C08CEC90E023C08DEC90E0A3 -:1031B00020C083E891E01DC08AE891E01AC082E94E -:1031C00091E017C084E991E014C081E292E011C05F -:1031D00083E292E00EC084E292E00BC085E292E0CE -:1031E00008C086E292E005C087E292E002C08AE26F -:1031F00092E0CF910C943717CF910895882309F46A -:103200004BC0823859F40E94FF1681FF45C089E304 -:103210000E9459210E94262289E30CC0833871F450 -:103220000E94FF1680FF38C083E50E9459210E944A -:10323000262283E50E949B210C942622843859F48F -:103240000E94FF1682FF28C087E40E9459210E9435 -:10325000262287E4EFCF9CEF980F913A58F390E243 -:10326000980F983050F4877091E001C0990F8A95BB -:10327000EAF7892F0E94E521DFCF9BE5980F933075 -:1032800020F480E090E00C942117885A833120F4D8 -:1032900080E090E00C9437170895882321F00E9475 -:1032A000DF210C9426220895882321F00E94E52135 -:1032B0000C94262208957F928F929F92AF92BF9294 -:1032C000CF92DF92EF92FF920F931F93CF93DF93F2 -:1032D0001F92CDB7DEB77C01C62E772EFC0105818B -:1032E00002950F70128111110E94FC210E9452213F -:1032F000882379F0112369F080E28C0D883048F042 -:1033000082E00E943B210E94522191E0D82ED926D2 -:1033100001C0D12CE72DE295EF70F0E0E05AFF4FAD -:103320000C949A2C872D807F072D0F70882311F025 -:103330000295007F112389F0002309F499C180E2EE -:103340008C0D883020F4802F0E94DF2103C0802F55 -:103350000E94EF210E9426228BC18C2D0E94FE1814 -:10336000002309F4C3C180E28C0D883020F4802F43 -:103370000E94E52103C0802F0E94F5210E94262291 -:10338000B5C1872D807F972D9F70803211F4892FD2 -:1033900003C0892F8295807FCC2021F0F1E0CF16E9 -:1033A000A1F01DC0112339F0002319F1013009F5F6 -:1033B0000E940F229BC1002319F0013009F496C12D -:1033C00089830E941222898110C1112321F00630C5 -:1033D00008F08CC10EC0053008F088C106C1112369 -:1033E00059F0002331F0F701958190FF41C19F70A2 -:1033F00095830E944D197AC1002309F4F6C03EC19D -:10340000872D86958695837090E0009719F0019737 -:1034100061F06CC1112321F08C2D972D937002C0A7 -:1034200080E090E00E94211761C1112321F08C2DD2 -:10343000972D937002C080E090E00E94371756C12C -:103440008C2D112319F00E94492402C00E94B1243E -:103450000E9436254BC1872D837009F052C011118F -:1034600045C18C2D829586958770880F880F9C2D7D -:103470009F70892E912CA12CB12C082E04C0880C91 -:10348000991CAA1CBB1C0A94D2F7C4FE14C00FE0FE -:1034900010E020E030E0B901A80104C0440F551F3E -:1034A000661F771F8A95D2F7CB01BA016095709598 -:1034B0008095909503C060E070E0CB01272D2695A4 -:1034C0002695237030E02230310569F02330310534 -:1034D00089F0682979298A299B292130310571F0E1 -:1034E0000E94C71F03C1682979298A299B290E9444 -:1034F000E31FFCC00E94C71FC501B4010E94AB1F9F -:10350000F5C0112319F0872D817001C0869588239D -:1035100009F4ECC08C2D829586958770880F880FF2 -:103520009C2D9F70892E912CA12CB12C082E04C0AB -:10353000880C991CAA1CBB1C0A94D2F7C4FE14C0A8 -:103540000FE010E020E030E0B901A80104C0440F12 -:10355000551F661F771F8A95D2F7CB01BA01609578 -:1035600070958095909503C060E070E0CB01272DA9 -:10357000269526952370422F50E04230510569F080 -:103580004330510589F0682979298A299B294130DE -:10359000510571F00E94A120A9C0682979298A29C2 -:1035A0009B290E94BD20A2C00E94A120C501B40198 -:1035B0000E9485209BC08C2D90E0FC01E05EF1090B -:1035C000E531F10508F050C0E059FF4F0C949A2CFA -:1035D0000C2D0F70872D8F71112321F00E941E205A -:1035E000802F07CF0E943F20802F0E9454197EC059 -:1035F000112341F0053008F079C0872D8F710E94AA -:10360000642074C0063008F071C0F7CF112339F080 -:10361000872D8F710E941E2069C01123C9F3872D49 -:103620008F710E943F2062C0112329F0872D8F7176 -:103630000E9409205BC00E94FF1F58C0112351F057 -:10364000172D1F71812F0E941E2063E0812F0E9481 -:1036500032214CC081E00E943B21023008F446C078 -:1036600082E00E943B2142C0112331F0002381F20D -:103670008C2D0E9436183AC0002389F28C2D0E94AE -:10368000FE1834C0472D4F706C2DC7010E94ED0508 -:103690000E94231F2BC0111129C0472D4F7050E0ED -:1036A00042305105B9F04CF44115510581F04130DB -:1036B0005105E1F40E94312819C04330510569F0E9 -:1036C0004430510599F48C2D0E9483280FC00E942C -:1036D0001A280CC00E944D2809C00E94602806C00C -:1036E000472D4F706C2DC7010E94F005DD20F9F0C9 -:1036F0000E942E2180FD1BC0F70112820E9428210A -:103700000E941E20C7010E94A61B0E9428210F9024 -:10371000DF91CF911F910F91FF90EF90DF90CF90AD -:10372000BF90AF909F908F907F900C943F200F9010 -:10373000DF91CF911F910F91FF90EF90DF90CF908D -:10374000BF90AF909F908F907F9008950F931F939D -:10375000CF93DF93EC01888199812B813C81232BCE -:10376000B9F09F3F11F48F3F99F0CE010E94EC0316 -:10377000882371F0688179818A810E9424218C01DB -:103780000E94D9200E94A01FB801CE010E945B199F -:10379000DF91CF911F910F9108950E94FC210E940B -:1037A0000C220E94D1210E9426220E94E7250E941D -:1037B000362580E090E00E94211780E090E00C9494 -:1037C00037170E94EC210C94CD1B0E941921292F40 -:1037D00022952F7030E02C3031054CF42A30310521 -:1037E0006CF42250310922303105A8F407C02C3086 -:1037F000310569F02F30310551F00DC0803F69F07F -:1038000018F4803E40F409C0843F29F406C093FBBD -:10381000882780F9089580E0089581E00895CF9386 -:10382000DF9300D000D01F92CDB7DEB70F900F907E -:103830000F900F900F90DF91CF910895CF93DF936A -:1038400000D000D000D0CDB7DEB726960FB6F894E2 -:10385000DEBF0FBECDBFDF91CF9108951F93CF93F1 -:10386000DF93C0919D0216E080919E02C81799F0E7 -:10387000D0E01C9FF0011D9FF00D1124E156FD4F7B -:103880004081518162817381848195810E941E1CD7 -:103890002196C770E9CFDF91CF911F910895409194 -:1038A000CF025091D0026091D1027091D2028091EA -:1038B000D3029091D4020C941E1C8091D402829564 -:1038C0008F7009F054C08091D102882309F44FC051 -:1038D00080919D02A0919E026091CF027091D002D2 -:1038E0004091D2025091D302B6E08A1709F43FC04A -:1038F00090E041155105C1F17F3F11F46F3FA1F1F7 -:10390000B89FF001B99FF00D1124E156FD4F2181C0 -:1039100072132AC02081621327C02281211124C082 -:10392000238134812417350710F421503109241BD9 -:10393000350B283C3105C0F42091D4022F70206152 -:103940002093D40226E0289FF001299FF00D112436 -:10395000EC55FD4F80818F70806180838FEC92E009 -:103960000E94A61B0C942E1C01968770BECF089552 -:10397000CF92DF92EF92FF920F931F93CF93DF933B -:10398000CDB7DEB762970FB6F894DEBF0FBECDBFDE -:103990008C0185E0F801DE011D9601900D928A955B -:1039A000E1F7D8014C9111965C91119712966C91A8 -:1039B00012971396CD90DC9014973091CF027091AE -:1039C000D0028091D2029091D302009709F46BC18A -:1039D0007F3F19F43F3F09F466C1E090D102EE2029 -:1039E00009F4C0C02091D402C816D90628F0F60107 -:1039F000E81BF90BCF0104C0809590958C0D9D1D9F -:103A0000FF24F394883C910578F0F12C207F09F095 -:103A1000C6C07C2DD98AC88A89890E940F1C8FEC68 -:103A200092E00E94A61BB1C0822F807F09F046C0A1 -:103A3000751314C0341312C0611110C02F702061AF -:103A40002093D4020E944F1C8FEC92E00E94A61B90 -:103A50008091D402D80115968C932EC0CD2819F1EF -:103A60005F3F11F44F3FF9F0F62E61111CC08091B9 -:103A70009D0220919E0236E0821709F45AC090E020 -:103A8000389FF001399FF00D1124E156FD4F7181EF -:103A9000571306C07081471303C07281711103C0B0 -:103AA00001968770E9CFF62E662309F418C180913C -:103AB000D40281608093D402F12C11C1751308C027 -:103AC000341306C0611104C08091D402D801C3C070 -:103AD0004D875E878D859E856A8B0E94E51B6A896E -:103AE0008823E1F16623D1F12091D402822F8295BF -:103AF0008F7090E0029774F08091CF029091D00285 -:103B000098878F831986DB86CA862C87CE01079615 -:103B10000E94A61B86E0F801AFECB2E001900D9286 -:103B20008A95E1F70E945D1C0E944F1CFF24F394CC -:103B3000D6C04D875E878D859E850E941921292FCD -:103B400022952F7030E0223031050CF0BCC09F7000 -:103B500009F0B6C0805E883008F4C1C0C8010E9478 -:103B6000A61BE4CFC816D90608F453C0F601E81B1B -:103B7000F90BCF01883C910508F450C0F12C7C2D45 -:103B8000D98AC88A89890E940F1CEFECF2E086E08E -:103B9000DF011D928A95E9F70E944F1CA0C07513A2 -:103BA00014C0341312C0611110C08091D402F80106 -:103BB0008583C8010E94A61B86E0EFECF2E0DF01DE -:103BC0001D928A95E9F7FE2C8AC04D875E878D8508 -:103BD0009E856A8B0E94E51B6A89882309F4BECF03 -:103BE000662309F4BBCF2091D402822F82958F7077 -:103BF00090E002970CF48ECF8091CF029091D0028A -:103C00009A8389831B82DD82CC822E83CE0101962A -:103C10007FCF809590958C0D9D1DACCFF62E6623A1 -:103C200009F49CCF75132EC034132CC02091D402FC -:103C300020FD1FC0822F82958F70D9F0D801159674 -:103C40002C9315978F3049F08F5F982F9295907F26 -:103C5000822F8F70892B15968C93C8010E94A61B0A -:103C600086E0F801AFECB2E001900D928A95E1F7A1 -:103C700093CF86E0F801AFECB2E001900D928A9507 -:103C8000E1F72DC04D875E878D859E850E94E51BDF -:103C9000811140CF8091D40281608093D402C80109 -:103CA0000E94A61B1CC0662309F458CF4D875E876F -:103CB0008D859E850E94E51B882309F44FCF2ACF6E -:103CC000811148CF0CC0243031050CF047CF9F70D4 -:103CD00009F440CFF8019581907F09F03BCF8F2DFB -:103CE00062960FB6F894DEBF0FBECDBFDF91CF91C5 -:103CF0001F910F91FF90EF90DF90CF9008951F9349 -:103D0000CF93DF93CDB7DEB72C970FB6F894DEBF15 -:103D10000FBECDBF4F83588769877A878B879C8773 -:103D2000CE0107960E94B81C882369F08F81988580 -:103D30002A853B85232BF1F19F3F09F063C08F3F1C -:103D400009F060C037C086E0FE013796DE011196AB -:103D500001900D928A95E1F76F817885EA85FB8560 -:103D6000309741F17F3F11F46F3F21F120919E0286 -:103D700030E0C90101968770992740919D0250E07B -:103D80008417950709F447C069837A83FD83EC8320 -:103D900096E0929FD001939FB00D1124A156BD4F84 -:103DA000FE01319601900D929A95E1F780939E0263 -:103DB0000E942E1C16E080919D0290919E02891710 -:103DC000C1F1189FC001112481569D4F0E94B81C5B -:103DD000882379F1E0919D021E9FF0011124E156A4 -:103DE000FD4F4081518162817381848195810E9460 -:103DF0001E1C80919D0290E0019687709927809308 -:103E00009D02D9CF4F81588569857A858B859C85A0 -:103E10000E941E1CCFCF0E94E11B10929E021092A6 -:103E20009D02EFECF2E086E0DF011D928A95E9F752 -:103E3000C1CF2C960FB6F894DEBF0FBECDBFDF9179 -:103E4000CF911F910895EF92FF920F931F93CF93FD -:103E5000DF938C01009709F46CC0F12CEE24E394FD -:103E6000E8012196F8018491843740F4843008F009 -:103E700051C0813081F0823019F15BC0853709F47F -:103E800044C0A8F19CE7980F903708F052C08F7794 -:103E90000E94FE1841C00E5F1F4FFE01C49180E2D8 -:103EA0008C0F883048F4C7708E2D01C0880FCA95DA -:103EB000EAF70E94FF2114C08C2F0E9436182DC0F3 -:103EC0000E5F1F4FFE01C49180E28C0F883058F4C2 -:103ED000C7708E2D01C0880FCA95EAF70E9405228F -:103EE0000E9426221AC08C2F0E94FE1816C00E5F58 -:103EF0001F4FFE01C491CC2381F08FE99FE0019711 -:103F0000F1F700C00000C150F6CF0E5F1F4FFE0159 -:103F1000F49003C00E9436188E018F2D882309F477 -:103F20009FCFEFE9FFE03197F1F700C0000081502B -:103F3000F5CFDF91CF911F910F91FF90EF900895F2 -:103F400008956093D9027093DA028093DB02909314 -:103F5000DC020C94CD1B0F931F930091D90210919A -:103F6000DA022091DB023091DC02DC01CB01802BF4 -:103F7000912BA22BB32B8093D9029093DA02A093BA -:103F8000DB02B093DC021F910F910C94CD1B0F93B9 -:103F90001F930091D9021091DA022091DB02309137 -:103FA000DC02DC01CB0180239123A223B323809385 -:103FB000D9029093DA02A093DB02B093DC021F9146 -:103FC0000F910C94CD1B0F931F930091D902109168 -:103FD000DA022091DB023091DC02DC01CB01802788 -:103FE0009127A227B3278093D9029093DA02A09356 -:103FF000DB02B093DC021F910F910C94CD1B109249 -:10400000D5021092D6021092D7021092D8020C94C8 -:10401000CD1B41E050E060E070E004C0440F551F4C -:10402000661F771F8A95D2F74093D5025093D60228 -:104030006093D7027093D8020C94CD1B41E050E0FE -:1040400060E070E004C0440F551F661F771F8A951B -:10405000D2F78091D5029091D602A091D702B0916B -:10406000D802482B592B6A2B7B2B4093D5025093B7 -:10407000D6026093D7027093D8020C94CD1B41E016 -:1040800050E060E070E004C0440F551F661F771FCA -:104090008A95D2F740955095609570958091D5029C -:1040A0009091D602A091D702B091D802482359230B -:1040B0006A237B234093D5025093D6026093D702A4 -:1040C0007093D8020C94CD1B41E050E060E070E0AA -:1040D00004C0440F551F661F771F8A95D2F7809141 -:1040E000D5029091D602A091D702B091D80248276C -:1040F00059276A277B274093D5025093D6026093B5 -:10410000D7027093D8020C94CD1B0F931F9300918C -:10411000D5021091D6022091D7023091D802DC014D -:10412000CB01802B912BA22BB32B8093D5029093A4 -:10413000D602A093D702B093D8021F910F910C948E -:10414000CD1B0F931F930091D5021091D6022091A1 -:10415000D7023091D802DC01CB0180239123A22326 -:10416000B3238093D5029093D602A093D702B09345 -:10417000D8021F910F910C94CD1B0F931F930091A8 -:10418000D5021091D6022091D7023091D802DC01DD -:10419000CB0180279127A227B3278093D502909344 -:1041A000D602A093D702B093D8021F910F910C941E -:1041B000CD1B0895CF92DF92EF92FF920F931F9342 -:1041C000CF93DF938C01C090D902D090DA02E090B7 -:1041D000DB02F090DC028091D5029091D602A09192 -:1041E000D702B091D802C82AD92AEA2AFB2ACFE1FD -:1041F000D0E0D701C6010C2E04C0B695A7959795BF -:1042000087950A94D2F780FF06C0B8018C2F0E94D0 -:104210007508019721F4219760F780E001C08C2F89 -:10422000DF91CF911F910F91FF90EF90DF90CF9092 -:104230000895CF93DF93EC010E94DA20BE010E9423 -:104240007508DF91CF910895CB010E94192108953F -:104250008091DD0285958595859508958091DD0293 -:104260008770089598E0899F90011124262B209350 -:10427000DD020C941E202091DD0280958223809324 -:10428000DD02982F977069F430E0482F552747FDDD -:1042900050952417350729F08595859585950C94BB -:1042A0003F2008959091DD02977081E009F480E04D -:1042B000089590911501992321F090911601911183 -:1042C00009C02091170130911801F90132969FEF32 -:1042D00040E01FC0982F9695969596959F3050F583 -:1042E000E0911701F0911801E90FF11D877021E0AD -:1042F00030E0A90102C0440F551F8A95E2F7CA01B8 -:104300009181892B818308959F3F39F04F5F4E3013 -:1043100041F051915813F8CF0DC05111F7CF942FA0 -:10432000F5CF9F3F39F0F901E90FF11D97FDFA959F -:1043300082830895089590911501992321F0909119 -:104340001601911109C02091170130911801F9014E -:104350003296205F3F4F1FC0982F96959695969561 -:104360009F30F0F4E0911701F0911801E90FF11D71 -:10437000877021E030E0A90102C0440F551F8A95E3 -:10438000E2F7CA018095918189238183089531964E -:10439000E217F30729F090819813F9CF1082F7CF35 -:1043A000089581E090E0E0911701F0911801E80F85 -:1043B000F91F1082019680319105A9F70895909117 -:1043C000F102892B8093F102089580959091F1027A -:1043D00089238093F10208951092F102089590913B -:1043E000F002892B8093F002089580959091F0025D -:1043F00089238093F00208951092F002089590911D -:10440000EF02892B8093EF02089580959091EF023F -:1044100089238093EF0208951092EF02089580930C -:10442000DE0208951092DE020895809117019091A6 -:104430001801FC0131969C01205F3F4F80E0919173 -:1044400091118F5FE217F307D1F70895E0911701FB -:10445000F09118018091F1028083E0911701F091B1 -:10446000180190818091F002892B8083E0911701DF -:10447000F091180190818091EF02892B80838091C7 -:10448000DE02882361F0E0911701F091180190811C -:10449000892B80830E94152281111092DE02809167 -:1044A0001701909118010C940B1720E0009739F038 -:1044B000AC0141505109842395232F5FF7CF822F00 -:1044C000089580911303843039F11092F30220E4AF -:1044D00088E190E00FB6F894A895809360000FBE35 -:1044E0002093600080E00E94F00280E00E940F09AB -:1044F00083B7817F846083BF83B7816083BF7894F3 -:10450000889583B78E7F83BF88E10FB6F894809338 -:104510006000109260000FBE08950895089580E035 -:104520000E94F0020E948D220E946A090E948E223F -:104530000E94EF0991E0811101C090E0892F089558 -:104540000E94E11B80E00E94F0020E9409280E9464 -:10455000FF160C940F091F920F920FB60F921124A1 -:104560008F939F93AF93BF938091F302811113C0F8 -:104570008091F4029091F502A091F602B091F702B9 -:104580004196A11DB11D8093F4029093F502A09372 -:10459000F602B093F702BF91AF919F918F910F9068 -:1045A0000FBE0F901F90189582E084BD93E095BDDB -:1045B0009AEF97BD80936E0008952FB7F89480917D -:1045C000F4029091F502A091F602B091F7022FBF8C -:1045D0000895CF92DF92EF92FF920F931F932FB720 -:1045E000F8944091F4025091F5026091F6027091B6 -:1045F000F7022FBF6A017B01EE24FF248C0120E02B -:1046000030E0C016D106E206F30610F4415051091D -:104610009A01281B390BC9011F910F91FF90EF9050 -:10462000DF90CF9008951F920F920FB60F92112432 -:104630008F939F93AF93BF938091F4029091F50273 -:10464000A091F602B091F7020196A11DB11D8093D1 -:10465000F4029093F502A093F602B093F702BF9193 -:10466000AF919F918F910F900FBE0F901F90189553 -:104670000E94FC13F8942FEF87EA91E621508040C6 -:104680009040E1F700C0000087E090EBDC018093F0 -:104690001E0390931F03A0932003B09321039CE07B -:1046A00088E10FB6F894A895809360000FBE9093B0 -:1046B0006000FFCF0E949923811102C00E947523E0 -:1046C0000E94A4238093F2020E94AC2380931C03D7 -:1046D00087FB882780F9809316010E94A823682F02 -:1046E00070E080E090E00C94A11F6DEE7EEF80E022 -:1046F00090E00E94C02C60E082E090E00E94AE2C2E -:1047000060E083E090E00E94AE2C60E084E090E006 -:104710000E94AE2C60E085E090E00E94AE2C60E04C -:1047200086E090E00E94AE2C6FEF87E090E00C9462 -:10473000AE2C80E090E00E94A82C21E08D3E9E4FA0 -:1047400009F020E0822F089582E090E00C94A02CE4 -:1047500083E090E00C94A02C84E090E00C94A02CDA -:10476000682F84E090E00C94AE2C86E090E00C94EE -:10477000A02C682F86E090E00C94AE2C87E090E0AF -:104780000C94A02C682F87E090E00C94AE2C8091C4 -:10479000FA0280FF0BC060911C0185E0689FB001A8 -:1047A000112475956795759567952BC081FF09C094 -:1047B00060911C0185E0689FB00111247595679593 -:1047C00020C082FF07C060911C0185E0689FB00196 -:1047D000112417C09091FB029923D1F060911B0125 -:1047E000961788F720911C0185E0289F90011124DD -:1047F000929FA001939F500D112470E0CA010E9466 -:10480000862C6038710540F46115710539F002C0DD -:1048100065E070E0862F08958FE7089581E00895A0 -:104820008091FA0280FF08C060911A0170E07595CE -:1048300067957595679521C081FF06C060911A0143 -:1048400070E07595679519C082FF04C060911A01E8 -:1048500070E010C09091FB029923C1F060911901A2 -:104860009617A0F780911A01899FC001112470E06A -:104870000E94862C6038710528F46115710521F0BD -:10488000862F08958FE7089581E0089561E070E034 -:10489000F4CF803F21F40E94C723819504C0813F5B -:1048A00029F40E94C7238093FE020895823F21F4D9 -:1048B0000E94C723819504C0833F29F40E94C72327 -:1048C0008093FD020895893F19F40E94102405C0C9 -:1048D0008A3F31F40E94102481958093FF0208954D -:1048E0008B3F21F40E941024819504C08C3F29F451 -:1048F0000E941024809300030895843F21F4809146 -:10490000FC02816017C0853F21F48091FC02826027 -:1049100011C0863F21F48091FC0284600BC0873F68 -:1049200021F48091FC02886005C0883F31F48091B9 -:10493000FC0280618093FC0208958D3F21F48091F8 -:10494000FA0281600BC08E3F21F48091FA028260EE -:1049500005C08F3F29F48091FA0284608093FA02A7 -:104960000895803F39F48091FE0287FF6CC0109259 -:10497000FE0269C0813F29F48091FE021816BCF343 -:1049800062C09091FD02823F29F497FF5CC01092B3 -:10499000FD0259C0833F19F41916CCF354C0893F66 -:1049A00041F48091FF0218160CF04DC01092FF02E6 -:1049B0004AC08A3F29F48091FF0287FF44C0F6CFA6 -:1049C0008B3F39F48091000387FF3DC010920003B4 -:1049D0003AC08C3F29F4809100031816BCF333C011 -:1049E000843F21F48091FC028E7F17C0853F21F423 -:1049F0008091FC028D7F11C0863F21F48091FC02E2 -:104A00008B7F0BC0873F21F48091FC02877F05C01C -:104A1000883F31F48091FC028F7E8093FC0213C0AA -:104A20008D3F21F48091FA028E7F0BC08E3F21F4DE -:104A30008091FA028D7F05C08F3F29F48091FA02A0 -:104A40008B7F8093FA028091FD0281110EC08091CC -:104A5000FE0281110AC08091FF02811106C080917F -:104A60000003811102C01092FB0208958CEF92E0C6 -:104A70000E9416170E94DD229093F9028093F8029B -:104A800008951F93CF93DF938091F8029091F902DC -:104A90000E94E922AC019091FB02992321F0209120 -:104AA0001D0130E006C020911E018AE0289F900180 -:104AB00011244217530708F486C08091FD02C0916B -:104AC000FE02D091FF0210910003811107C0C111B5 -:104AD00076C0D11174C0111172C075C09F3F19F01A -:104AE0009F5F9093FB02181624F40E94C7238093C3 -:104AF000FD028091FD0287FF05C00E94C7238195BA -:104B00008093FD021C1624F40E94C7238093FE02AA -:104B10008091FE0287FF05C00E94C7238195809384 -:104B2000FE026091FD02662339F1C091FE02CC23A2 -:104B300019F1772767FD7095872F972F0E94A82975 -:104B400023E333E343E35FE30E94B82A0E9475291D -:104B50006093FD026C2F772767FD7095872F972F45 -:104B60000E94A82923E333E343E35FE30E94B82ACA -:104B70000E9475296093FE021D1624F40E941024E1 -:104B80008093FF028091FF0287FF05C00E941024DE -:104B900081958093FF02111624F40E9410248093C3 -:104BA00000038091000387FF05C00E9410248195B7 -:104BB00080930003DF91CF911F910C9436259F3F86 -:104BC00009F08ECF96CFDF91CF911F910895ECEF32 -:104BD000F2E085E0DF011D928A95E9F71092FB0271 -:104BE0001092FA020895833081F128F4813059F04F -:104BF0008230D1F00895853009F449C0B8F186308B -:104C000009F456C0089580911E01262F30E0280F28 -:104C1000311D2F3F310524F4680F60931E01089564 -:104C20008FEF80931E01089580911D01262F30E0A3 -:104C3000280F311D2F3F310524F4680F60931D01AB -:104C400008958FEF80931D01089580911C01262FF8 -:104C500030E0280F311D2F3F310524F4680F609399 -:104C60001C0108958FEF80931C01089580911B0112 -:104C7000262F30E0280F311D2F3F310524F4680F17 -:104C800060931B0108958FEF80931B01089580911D -:104C90001A01262F30E0280F311D2F3F310524F453 -:104CA000680F60931A0108958FEF80931A01089599 -:104CB00080911901262F30E0280F311D2F3F31053B -:104CC00024F4680F6093190108958FEF8093190100 -:104CD0000895833011F128F4813049F0823091F049 -:104CE0000895853081F120F18630C1F108958091D9 -:104CF0001E01681720F4861B80931E0108951092F0 -:104D00001E01089580911D01681720F4861B809371 -:104D10001D01089510921D01089580911C016817CE -:104D200020F4861B80931C01089510921C010895A5 -:104D300080911B01681720F4861B80931B01089546 -:104D400010921B01089580911A01681720F4861BA8 -:104D500080931A01089510921A0108958091190103 -:104D6000681720F4861B8093190108951092190189 -:104D700008950F931F93873208F048C08E3108F0D2 -:104D80008DC0803109F477C008F5873009F461C01F -:104D900068F4863009F09DC08091F202817F8E7F99 -:104DA0008093F20281E08093020394C08B3009F477 -:104DB00089C08E3009F08DC08091F20282FB2227DB -:104DC00020F991E0922790FB82F95EC0863109F4C8 -:104DD00079C060F4813109F07CC00E94E11B9091A0 -:104DE000160181E08927809316016CC0893109F48E -:104DF00069C08B3109F06DC08091F20281FB2227DE -:104E000020F991E0922790FB81F93EC0883309F4A4 -:104E100059C050F4893209F457C0853309F454C09D -:104E2000873209F451C055C0833409F44DC028F4C9 -:104E30008A3308F44EC0895332C0883409F049C01F -:104E40000E94E11B0E941F0A0E94E3030E94382374 -:104E500039C09091F202892F8095817080FB90F982 -:104E600029F0966098609093F20234C0997F977F02 -:104E70009093F20227C08091F20283FB222720F94F -:104E800091E0922790FB83F98093F2029923D1F06D -:104E90008091F20281608093F20214C08D5141E052 -:104EA00050E060E070E08A019B0104C0000F111F18 -:104EB000221F331F8A95D2F7C901B8010E94A11F92 -:104EC0000E94E11B81E006C061E070E080E090E0BC -:104ED000F5CF80E01F910F91089580E0089580E064 -:104EE0000895CF93C82F80910203813069F018F0A4 -:104EF0008230C9F184C0E0911701F09118018081DE -:104F0000823209F07EC007C0E0911701F0911801CC -:104F10008081823261F48C2F0E946D27811104C040 -:104F20008C2F0E94B9261DC081E090E01AC08C2F02 -:104F30000E946F27811114C0C43179F048F4CB303E -:104F400079F0C03109F061C082E08093020308C0AB -:104F5000C93219F0C83321F058C01092020355C06D -:104F600081E0817054C0C93291F120F5C43179F1EA -:104F7000B0F4C73009F047C08EE180931E0182E390 -:104F800080931D018AE080931C0184E180931B01C2 -:104F900088E080931A0188E28093190134C0CE51D1 -:104FA000C63088F5EC2FF0E0EA54FE4F8081809304 -:104FB000010329C0CE34E9F020F4CB3421F56AE0B6 -:104FC00013C0C13579F0C235F1F461E00DC08091B4 -:104FD0000103882319F01092010315C081E080932A -:104FE000020315C061E006C0809101030E94F32511 -:104FF0000AC06AE0809101030E94692604C01092F1 -:10500000020380E004C081E002C080E0AACFCF911B -:1050100008950E949923811102C00E9475230E9465 -:10502000B52380931D0380FF02C0869501C080E0F8 -:105030000C94F00280911D03982F9695292F30E053 -:10504000233031054CF49F5F990F8170892B81606B -:1050500080931D030E94B92380911D0386950C94B3 -:10506000F00280911D03982F969591F09158990F19 -:105070008170892B80931D038E7F91E009F490E06D -:1050800080911D0390FB80F980931D030E94B9233A -:1050900080911D0386950C94F00280911D03982F3A -:1050A000909590FB80F980931D030E94B923809115 -:1050B0001D0380FF02C0869501C080E00C94F002C1 -:1050C00090911D03892F86958F5F8F779170843023 -:1050D00028F4880F892B80931D0302C090931D0331 -:1050E00080911D038E7F91E009F490E080911D0373 -:1050F00090FB80F980931D030E94B92380911D03CA -:1051000086950C94F00220911D03922F9695892785 -:10511000982F990F822F8170892B80931D038E7F8A -:1051200091E009F490E080911D0390FB80F9809359 -:105130001D030E94B92380911D0386950C94F002F3 -:1051400080911D03869508955058BB27AA270ED03D -:10515000D1C1C2D130F0C7D120F031F49F3F11F45A -:105160001EF4B7C10EF4E095E7FB9FC1E92FD3D140 -:1051700080F3BA17620773078407950718F071F474 -:105180009EF5EBC10EF4E0950B2EBA2FA02D0B016E -:10519000B90190010C01CA01A0011124FF27591B7C -:1051A00099F0593F50F4503E68F11A16F040A22F82 -:1051B000232F342F4427585FF3CF469537952795F3 -:1051C000A795F0405395C9F77EF41F16BA0B620BF2 -:1051D000730B840BBAF09150A1F0FF0FBB1F661F39 -:1051E000771F881FC2F70EC0BA0F621F731F841F7C -:1051F00048F4879577956795B795F7959E3F08F0A2 -:10520000B3CF9395880F08F09927EE0F9795879560 -:10521000089527D108F481E008950CD06BC163D1C3 -:1052200040F05AD130F021F45F3F19F03EC15111E6 -:1052300095C14FC170D198F39923C9F35523B1F3A8 -:10524000951B550BBB27AA2762177307840738F0F5 -:105250009F5F5F4F220F331F441FAA1FA9F333D054 -:105260000E2E3AF0E0E830D091505040E695001C08 -:10527000CAF729D0FE2F27D0660F771F881FBB1FC4 -:10528000261737074807AB07B0E809F0BB0B802D9E -:10529000BF01FF2793585F4F2AF09E3F510568F0EA -:1052A00004C15CC15F3FECF3983EDCF386957795D3 -:1052B0006795B795F7959F5FC9F7880F911D9695EC -:1052C000879597F90895E1E0660F771F881FBB1F48 -:1052D000621773078407BA0720F0621B730B840BF5 -:1052E000BA0BEE1F88F7E095089504D06894B111C9 -:1052F00035C1089518D188F09F5790F0B92F99279C -:10530000B751A0F0D1F0660F771F881F991F1AF0D0 -:10531000BA95C9F712C0B13081F01FD1B1E008953C -:105320001CC1672F782F8827B85F39F0B93FCCF3BD -:10533000869577956795B395D9F73EF490958095C6 -:10534000709561957F4F8F4F9F4F0895E89409C0E6 -:1053500097FB3EF490958095709561957F4F8F4FA8 -:105360009F4F9923A9F0F92F96E9BB279395F695BE -:10537000879577956795B795F111F8CFFAF4BB0F3C -:1053800011F460FF1BC06F5F7F4F8F4F9F4F16C0A0 -:10539000882311F096E911C0772321F09EE8872F2A -:1053A000762F05C0662371F096E8862F70E060E0E6 -:1053B0002AF09A95660F771F881FDAF7880F96955F -:1053C000879597F9089588D018F011F08CD038F4AB -:1053D00080C0C4C0E92F9FD0B0F35523C9F3E7FBC9 -:1053E0006217730784079507A8F199F3E92FFF2740 -:1053F00088232AF03197660F771F881FDAF7952FD9 -:105400005527442332F091505040220F331F441F40 -:10541000D2F7BB27E91BF50B621B730B840BB10999 -:10542000C1F222F4620F731F841FB11D31972AF05D -:10543000660F771F881FBB1FEFCF915050405AF067 -:1054400041F0882332F0660F771F881F915050403B -:10545000C1F7939530C08695779567959F5FD9F78B -:10546000F8CF990F0008550FAA0BE0E8FEEF1616CB -:105470001706E807F907C0F012161306E407F50748 -:1054800098F0621B730B840B950B39F40A2661F0BC -:10549000232B242B252B21F408950A2609F4A1405F -:1054A000A6958FEF811D811D089597F99F6780E86C -:1054B00070E060E008959F3F31F0915020F48795AF -:1054C00077956795B795880F911D9695879597F96C -:1054D00008959FEF80EC089500240A94161617068D -:1054E00018060906089500240A94121613061406D5 -:1054F00005060895092E0394000C11F4882352F038 -:10550000BB0F40F4BF2B11F460FF04C06F5F7F4FEF -:105510008F4F9F4F089557FD9058440F551F59F0D6 -:105520005F3F71F04795880F97FB991F61F09F3F90 -:1055300079F087950895121613061406551FF2CFB9 -:105540004695F1DF08C0161617061806991FF1CF09 -:1055500086957105610508940895E894BB27662730 -:105560007727CB0197F908957CDF08F48FEF089532 -:105570000BD0C0CFB1DF28F0B6DF18F0952309F0CB -:1055800094CFA7CF1124EACFC6DFA0F3959FD1F324 -:10559000950F50E0551F629FF001729FBB27F00DE1 -:1055A000B11D639FAA27F00DB11DAA1F649F662736 -:1055B000B00DA11D661F829F2227B00DA11D621F85 -:1055C000739FB00DA11D621F839FA00D611D221F3F -:1055D000749F3327A00D611D231F849F600D211D23 -:1055E000822F762F6A2F11249F5750408AF0E1F0C6 -:1055F00088234AF0EE0FFF1FBB1F661F771F881F0F -:1056000091505040A9F79E3F510570F04ECFA6CF64 -:105610005F3FECF3983EDCF3869577956795B795F9 -:10562000F795E7959F5FC1F7FE2B880F911D969523 -:10563000879597F90895FA01EE0FFF1F309621051F -:10564000310599F16115710561F48038BFE39B075D -:1056500049F168949038810561F08038BFEF9B076D -:1056600041F0992342F5FF3FE1053105210511F194 -:10567000E8940894E795D901AA2329F4AB2FBE2F0B -:10568000F85FD0F310C0FF5F70F4A695E0F7F7392C -:1056900050F019F0FF3A38F49F779F930CD00F9099 -:1056A00007FC905808953EF014CF60E070E080E869 -:1056B0009FE308954FE79F775F934F933F932F9317 -:1056C0009ED02F913F914F915F9152DF05C019F409 -:1056D0000EF0EBCE42CFFDCE26DFC8F39638C0F7F2 -:1056E00007F80F92E8942BE33AEA48EB5FE74EDFC6 -:1056F0000F920F920F924DB75EB70F92C0D0EAE0B3 -:10570000F1E016D04F915F91EF91FF91E595EE1F7B -:10571000FF1F49F0FE57E0684427EE0F441FFA953B -:10572000E1F74195550B32D00F9007FE26C0089542 -:10573000DF93CF931F930F93FF92EF92DF927B0142 -:105740008C01689405C0DA2EEF011EDFFE01E8949B -:10575000A5912591359145915591AEF3EF0106DD67 -:10576000FE019701A801DA9479F7DF90EF90FF909E -:105770000F911F91CF91DF9108959B01AC0160E0E3 -:1057800070E080E89FE349CD90CE95CECCDEE8F383 -:105790009923D9F3940F511DBBF39150504094F0CD -:1057A00059F0882332F0660F771F881F91505040C0 -:1057B000C1F79E3F510544F7880F911D9695879537 -:1057C00097F908955F3FACF0983E9CF0BB27869513 -:1057D00077956795B79508F4B1609395C1F7BB0FBE -:1057E00058F711F460FFE8CF6F5F7F4F8F4F9F4FE7 -:1057F000E3CFB4CE0EF05FCE6CCE689456CE93DE7F -:10580000C8F39923D1F3C6F3DF93CF931F930F937C -:10581000FF92C92FDD2788232AF02197660F771F73 -:10582000881FDAF720E030E040E85FEB9FE388393B -:1058300020F0803E30F021968F7787DCE2E3F1E0C4 -:1058400003C083DCEFE5F1E073DF8B01BE01EC0107 -:10585000FB2E6F5771097595771F880B990B78DDB3 -:1058600028E132E741E35FE38FDEAF2D9801AE011F -:10587000FF900F911F91CF91DF9178DC3BCEFA0121 -:10588000DC01AA0FBB1F9B01AC01BF5728F42227E4 -:105890003327442750781FC0B75188F4AB2F00241A -:1058A000469537952795011CA395D2F3002069F002 -:1058B000220F331F441FB395DAF30DD045CC61306E -:1058C0007105A0E88A07B94630F49B01AC01662750 -:1058D000772788279078309621F020833183428380 -:1058E00053830895AA1BBB1B51E107C0AA1FBB1F0E -:1058F000A617B70710F0A61BB70B881F991F5A955C -:10590000A9F780959095BC01CD01089597FB072ECE -:1059100016F4009407D077FD09D00E94722C07FC82 -:1059200005D03EF4909581959F4F089570956195AF -:105930007F4F0895EE0FFF1F0590F491E02D09941D -:10594000F999FECF92BD81BDF89A992780B5089547 -:10595000A8E1B0E042E050E00C94C82C262FF99961 -:10596000FECF92BD81BDF89A019700B4021639F0BE -:105970001FBA20BD0FB6F894FA9AF99A0FBE08958F -:105980000196272F0E94AF2C0C94AE2CDC01CB018A -:10599000FC01F999FECF06C0F2BDE1BDF89A31963F -:1059A00000B40D9241505040B8F70895F894FFCFDD -:1059B000640007000CFF0000003F64031091106EAC -:1059C000103A1006100101DF022808140A321E00E6 -:1059D00002040507090B0C0E1011131517181A1CD9 -:1059E0001D1F2123242628292B2D2F303234353713 -:1059F000393B1F0F03764F5F6F7F49694379095920 -:105A000053633149803F5D8B803FF8BF803FCAE1DF -:105A1000803F73ED803FCAE1803FF8BF803F5D8BE0 -:105A2000803F3149803F0000803FF16D7F3F75EA44 -:105A30007E3F4C827E3F833F7E3F84287E3F833F74 -:105A40007E3F4C827E3F75EA7E3FF16D7F3F0000D6 -:105A5000803F3F4D3639EB049E0468042F04C20397 -:105A6000DB03F4030D040102030405060708090023 -:00000001FF diff --git a/keyboard/planck/keymaps/david/compiled.hex b/keyboard/planck/keymaps/david/compiled.hex deleted file mode 100644 index c78779128e..0000000000 --- a/keyboard/planck/keymaps/david/compiled.hex +++ /dev/null @@ -1,1449 +0,0 @@ -:100000000C9496020C94DA020C94DA020C94DA0244 -:100010000C94DA020C94DA020C94DA020C94DA02F0 -:100020000C94DA020C94DA020C9478140C944A15AD -:100030000C94AC220C94DA020C94DA020C94DA02DE -:100040000C94DA020C943C030C94DA020C94DA025D -:100050000C94DA020C9414230C94DA020C94DA0255 -:100060000C94DA020C94DA020C94DA020C94DA02A0 -:100070000C94DA020C94DA020C94DA020C94DA0290 -:100080000C94ED0A0C94DA020C94DA020C94DA0265 -:100090000C94DA020C94DA020C94DA020C94DA0270 -:1000A0000C94DA020C94DA020C94DA02B715D91522 -:1000B000C716D915C7161E164116C7169616A916C5 -:1000C00093199319C219C219011A211A771B771BA8 -:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 -:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 -:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 -:10010000F91A071B0E1B151B1F1B07634236B79BF3 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A299 -:1001D000F1A3018C028C14001A000800150017000E -:1001E0002A001C0018000C00120013002A00040052 -:1001F0001600070009000A0028000B000D000E0081 -:100200000F00330034001D001B000600190005001C -:1002100029001100100036003700380028000A308D -:10022000E000E200E30002202C002C00012050003E -:10023000510052004F002B0014001A000900130057 -:100240000A000D000F0018001C0033002A002900CE -:10025000040015001600170007000B00110008002D -:100260000C0012003400E1001D001B000600190004 -:1002700005000E0010003600370038002800C300CB -:10028000E000E200E30002202C002C0001205000DE -:10029000510052004F0035001E001F0020002100B9 -:1002A0002200230024002500260027002A00010048 -:1002B0000320042000500030013002302D002E00B9 -:1002C0002F003000310001004400450000300130B3 -:1002D00002300330043005300630073001000100E1 -:1002E0000100010001000100010001000120AB003C -:1002F000AA00A900AE0035021E021F022002210240 -:100300002202230224022502260227022A000100DB -:100310000320042000500030013002302D022E0254 -:100320002F023002310201003A003B003C003D0048 -:100330003E003F0040004100420043000100010038 -:100340000100010001000220010001000100AB00DA -:10035000AA00A900AE002803540068006500200030 -:1003600050006C0061006E0063006B0020004B00C9 -:100370006500790062006F00610072006400000097 -:100380002C034F007200740068006F006C0069005D -:100390006E0065006100720020004B00650079006E -:1003A00062006F00610072006400730000000403CB -:1003B000090409026D00040100A0FA09040000010B -:1003C00003010100092111010001223F00070581FD -:1003D0000308000A090401000103010200092111B8 -:1003E000010001224D000705820308000A090402EA -:1003F000000103000000092111010001223600075D -:1004000005830308000A0904030001030000000932 -:100410002111010001223900070584031000011297 -:1004200001100100000008EDFE6060010001020003 -:100430000105010906A101050719E029E7150025B5 -:1004400001950875018102050819012905950575B1 -:10045000019102950175039101050719002977158E -:10046000002501957875018102C005010980A1016F -:10047000850216010026B7001A01002AB700751080 -:1004800095018100C0050C0901A101850316010039 -:10049000269C021A01002A9C02751095018100C059 -:1004A00005010902A1010901A10005091901290598 -:1004B00015002501950575018102950175038101DE -:1004C0000501093009311581257F950275088106DE -:1004D00009381581257F950175088106050C0A38B4 -:1004E000021581257F950175088106C0C0050109A7 -:1004F00006A101050719E029E715002501950875F2 -:1005000001810295017508810105081901290595E8 -:1005100005750191029501750391010507190029DF -:10052000FF150025FF950675088100C011241FBE28 -:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A -:100540001E0390911F03A0912003B09121038730D7 -:10055000904BA740B04BB9F410921E0310921F03AA -:10056000109220031092210314BE84B7877F84BFAA -:1005700088E10FB6F89480936000109260000FBE7F -:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 -:1005900002C005900D92A03CB107D9F713E0A0EC82 -:1005A000B1E001C01D92AE31B107E1F70E94BE116A -:1005B0000C94D72C0C9400000895089581E00895C0 -:1005C00008950C94DD020C94DE020C94E0020E946B -:1005D000A12823E030E0281B3109220F2093C40119 -:1005E0000895282F2F9880918000211108C0877FBF -:1005F0008093800010928D0010928C001BC0886048 -:1006000080938000233019F48FEF9FEF0FC083E0B9 -:1006100090E0821B9109880F991F2FEF3FEFA901EE -:1006200002C0569547958A95E2F7CA0190938D00CE -:1006300080938C000C94E7020E94E70284E0809390 -:10064000C3011092C0010895279A2F988FEF9FEF52 -:1006500090938700809386008AE08093800089E1F0 -:10066000809381000E940A280C941C030E9424039A -:100670006E9A769A0C94DC021F920F920FB60F922C -:1006800011242F933F938F939F93EF93FF93E091C8 -:10069000C101F091C201CF0101969093C2018093F4 -:1006A000C1010090C30102C0F695E7950A94E2F7F4 -:1006B000EF738091C001823019F4E03251F404C02C -:1006C000813039F4EF3329F480916F008D7F80936E -:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B -:1006E000C001E39F900D11240090C40102C09695B3 -:1006F00087950A94E2F790938D0080938C00FF9188 -:10070000EF919F918F913F912F910F900FBE0F907E -:100710001F90189581E008950C948A0308950C9415 -:10072000360380911502882309F448C08091D101D5 -:100730009091D201009779F40E94DE229093D20129 -:100740008093D1018091D30190E0009771F4809162 -:10075000D40190E00AC00E94EA2220910001309169 -:1007600001012817390740F329C00197880F991F05 -:10077000880F991FFC01EB52FE4F608171818281CD -:1007800093810E94530AE091D30184E0E89FF00135 -:100790001124EB52FE4F60817181828193814FE081 -:1007A00050E00E940B0E8091D30190E00196609181 -:1007B000D40170E00E94872C8093D3010C94E10255 -:1007C000109217020C94200A0895089581E08093F6 -:1007D00017020C94E503089508958F929F92AF92AB -:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA -:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 -:10080000FC0100811181C8010E94DB20B8010E9417 -:10081000F2058C01B7010E948C03882309F4CCC136 -:100820000032F0E51F0741F4F7018281882309F4C3 -:1008300058C00E946F0EC0C10132F0E51F0741F49D -:10084000F7018281882309F44CC00E94780EB4C15C -:100850000232F0E51F0751F4F7018281882309F481 -:1008600040C00E946B0E8111F0CFE3CF0332F0E560 -:100870001F0739F4F7018281882399F10E94E6036A -:100880009BC10432F0E51F0739F4F7018281882308 -:1008900041F10E94E00390C10532F0E51F0749F4E1 -:1008A000F70182818823E9F0809117028111F1CF4D -:1008B000E5CF0632F0E51F0739F4F701828188237E -:1008C00081F00E947F0E0AC00732F0E51F0749F44D -:1008D000F7018281882329F00E948A0E0E94EC038E -:1008E0006BC180911702811105C0F70182818111CE -:1008F000CFC018C1003E110579F4F7018281882329 -:1009000009F44DC00E94200A81E0809316021092E3 -:1009100015021092D40150C1023E110559F4F7019D -:1009200082818823E1F10E94200A1092160210921F -:10093000150242C1033E110591F4F701828188231B -:1009400071F10E94200A1092160281E08093150234 -:100950001092D3011092D2011092D1012DC1023513 -:10096000110559F4F7018281882309F425C180918A -:100970000001909101010A970DC00135110579F42C -:10098000F7018281882309F417C1809100019091B9 -:1009900001010A9690930101809300010DC14091DD -:1009A000040183E2EFE1F1E0DE01119601900D9286 -:1009B0008A95E1F7F701808121E030E02C0F3D1F9F -:1009C000280F311DC9012091020130910301FC0162 -:1009D000E20FF31F6081772767FD7095640F711D2B -:1009E000882777FD8095982F0E94A92920E030E084 -:1009F00040E451E40E940E294B015C01F701218182 -:100A000084E090E0821B9109BC01882777FD8095E6 -:100A1000982F0E94A9299B01AC01C501B4010E9435 -:100A2000A6289B01AC0160E070E080E090E40E94A9 -:100A30001C2B20E030E04CED50E40E94B92A4B0121 -:100A40005C01F70182818823D1F04FE050E0C501BD -:100A5000B4010E940B0E809116028823A1F08091B0 -:100A6000D40124E0829FF0011124EB52FE4F8082DA -:100A70009182A282B3828F5F8093D40104C0C501AA -:100A8000B4010E94530A0F3F110508F02ECF94C005 -:100A90008091D00181111FC0043130E5130709F0A6 -:100AA00051C00E948E0381E08093D0010E94DE221B -:100AB0009093CF018093CE011092C7011092C9018B -:100AC0001092C8011092CB011092CA011092CD0170 -:100AD0001092CC0171C08091CE019091CF010E9403 -:100AE000EA22883C910570F48091C701E82FF0E07C -:100AF000EE0FFF1FE853FE4F118300838F5F80933B -:100B0000C7015AC0043880E5180721F005381045A0 -:100B100001F13AC0F7018281882341F01092C501AA -:100B200082E01EC0043830E5130759F58091C501F5 -:100B3000811106C086E20E94371886E20E94FF18E3 -:100B400082E01CC00438F0E51F0741F3053810456A -:100B5000D9F4F7018281882331F01092C60180E236 -:100B60000E944E1929C08091C601811106C087E2FA -:100B70000E94371887E20E94FF1880E20E945519F0 -:100B80001BC00538104529F381E08093C50180938F -:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 -:100BA000DF91CF911F910F91FF90EF90BF90AF9089 -:100BB0009F908F900C94E30280E0A3960FB6F89478 -:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 -:100BD000EF90BF90AF909F908F90089580E090E04D -:100BE000089508959CE0799FF001112490E3899F76 -:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B -:100C0000FE4F859194910895880F991FFC01E45B34 -:100C1000FF4F859194910895880F991FFC01E4532B -:100C2000FE4F8591949108950F931F93CF93DF9377 -:100C3000EC01811521E39207A0F5C11580E3D807E7 -:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 -:100C500007C2C83AD10578F4C53AD10508F06AC090 -:100C6000C130D10509F463C008F4F7C1C430D1051F -:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 -:100C8000C11590E2D90708F0AFC0C11521E0D20725 -:100C900008F0E6C1C03FD10508F4DFC18E01106540 -:100CA0001FC2C03880E5D80700F5C03790E5D907E6 -:100CB00008F0A3C0C11520E5D20709F4ACC050F478 -:100CC000CE01905480319F4008F0C7C1DF708E0183 -:100CD000106A06C2C13080E5D80709F4AEC0C4313D -:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 -:100CF00009F48EC050F4C13890E5D90709F482C0D8 -:100D000008F083C000E011EDEBC1C03181E5D807E8 -:100D100008F4A3C1C11597E5D90708F436C1CE017F -:100D200090578115904108F098C1DF7093C101E0A0 -:100D300010E0D6C1C53AD10509F494C1C63AD1052F -:100D400009F093C102E810E4CBC1C83AD10509F417 -:100D50008FC1C93AD10509F48EC1CA3AD10509F447 -:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 -:100D70008BC1CD3AD10509F48AC1C03BD10509F434 -:100D800089C1CE3AD10509F488C1CF3AD10509F419 -:100D900087C1C13BD10509F486C1C23BD10509F425 -:100DA00085C1C33BD10509F484C1C43BD10509F415 -:100DB00083C1C53BD10509F482C1C63BD10509F405 -:100DC00081C1C73BD10509F480C1C83BD10509F4F5 -:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 -:100DE0007DC100E014E47CC1CE019F700E940C061E -:100DF00078C1DD278E01106C73C1CF70DD278E01A5 -:100E0000146D6EC100E010ED6BC100E012ED68C121 -:100E100000E013ED65C10E94E21B0E94200A0E94BF -:100E2000E4038FEF94E32CE0815090402040E1F701 -:100E300000C000000E94392353C18091F2028160FA -:100E40008093F2024DC10E949A23811102C00E9438 -:100E500076230E94AD2390E090931D0380931C03A2 -:100E6000C23080E5D80721F480911C03816086C0E0 -:100E7000C43090E5D90721F480911C0382607EC0C4 -:100E8000C63020E5D20721F480911C03846076C02F -:100E9000C83080E5D80719F480911C0327C0CA30F8 -:100EA00090E5D90721F480911C03806167C0CC30A4 -:100EB00020E5D20721F480911C0380625FC0CE3010 -:100EC00080E5D80721F480911C03806457C0C031AD -:100ED00090E5D90721F480911C0380684FC0C2318E -:100EE00020E5D20729F480911C038460886046C005 -:100EF000C33080E5D80721F480911C038E7F3EC06B -:100F0000C53090E5D90721F480911C038D7F36C050 -:100F1000C73020E5D20721F480911C038B7F2EC0BF -:100F2000C93080E5D80719F480911C0326C0CB3066 -:100F300090E5D90721F480911C038F7E1FC0CD302E -:100F400020E5D20721F480911C038F7D17C0CF309C -:100F500080E5D80721F480911C038F7B0FC0C1313D -:100F600090E5D90721F480911C038F7707C0C33126 -:100F7000D04531F480911C038B7F877F80931C03C5 -:100F800080911C030E94B123ABC08D2F99278F70D5 -:100F9000992781309105D9F49E012370332702C02F -:100FA000880F991F2A95E2F79C688E0144E0000F94 -:100FB000111F4A95E1F700271370802B912B53E006 -:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 -:100FD000910531F4DC2FCC278E01016F106A80C09F -:100FE0008330910569F4CE018370992701E010E008 -:100FF00002C0000F111F8A95E2F7C8019C680FC05C -:1010000084309105B9F4CE018370992701E010E096 -:1010100002C0000F111F8A95E2F7C8019A6823E009 -:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 -:101030001D2B56C08530910531F4DC2FCC278E0155 -:10104000046F106A4DC0069709F04AC0CF71DD27C2 -:10105000DC2FCC278E01106243C000E010E040C0BE -:101060008E013EC001E810E43BC003E810E438C044 -:1010700002EE14E435C009EE14E432C00AEE14E4C2 -:101080002FC005EB14E42CC006EB14E429C007EBD9 -:1010900014E426C00CEC14E423C00DEC14E420C0CE -:1010A00003E815E41DC00AE815E41AC002E915E4D6 -:1010B00017C004E915E414C001E216E411C003E20C -:1010C00016E40EC004E216E40BC005E216E408C004 -:1010D00006E216E405C007E216E402C00AE216E4DE -:1010E000C801DF91CF911F910F9108959CE0799FE6 -:1010F000F001112490E3899FE00DF11D1124E60F0A -:10110000F11DEE0FFF1FEA52FE4F85919491803E34 -:101110009105E0F4803C910558F58133910509F47F -:101120006FC048F48932910509F463C08A32910591 -:1011300009F46DC072C089339105E9F082389105D8 -:10114000D1F08533910509F44DC067C0833E910508 -:1011500081F138F4803E9105B9F0823E9105D9F0D5 -:101160005CC0863E910561F1873E9105A1F155C0B5 -:101170000E940406089520911C0320FD02C021FF57 -:101180004CC080EE90E049C080911C0380FFF9CFF5 -:1011900089E390E042C080911C0382FF0EC08091E1 -:1011A0001C0384FF03C080E090E037C083EE90E032 -:1011B00034C080911C0382FFF2CF82EE90E02DC0FC -:1011C00080911C0383FF0BC080911C0384FDEBCF37 -:1011D00087EE90E022C080911C0383FFF5CF86EE5E -:1011E00090E01BC080911C0385FF07C089E290E05E -:1011F00014C080911C0385FFF9CF85E390E00DC0FA -:1012000080911C0386FF07C08AE290E006C08091AF -:101210001C0386FFF9CF81E390E00E941406089535 -:101220000C94E502E82FF0E0E25BFE4F8081E82FAE -:10123000EF70F0E082958F7021E030E0A90102C0EC -:10124000440F551F8A95E2F740A308950F931F930B -:10125000CF93DF9385B7806885BF85B7806885BFEA -:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 -:10127000E82FEF70F0E021A182958F70A80102C0E5 -:10128000440F551F8A95E2F7CA01822B81A38C2F48 -:101290000E941209219740F78BE090E061E070E036 -:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 -:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F -:1012C0009D01242B22A3019758F7DF91CF911F9105 -:1012D0000F910C948F03EF92FF920F931F93CF9374 -:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA -:1012F0008C2F0E9412098BE090E040E050E0FC014E -:10130000EE5BFE4F6081E62FEF70F0E020A130E051 -:1013100062956F7002C0359527956A95E2F720FDBA -:1013200009C09701082E02C0220F331F0A94E2F76A -:10133000422B532B019718F7F801929182918F015C -:101340008417950721F051834083D09305018C2F9A -:101350000E941209C15060F68091050187FD2CC0E2 -:101360008150809305018F3F39F08FE99FE001970D -:10137000F1F700C0000020C080911E0290911F0272 -:10138000909327028093260280911C0290911D0267 -:10139000909325028093240280911A0290911B025F -:1013A0009093230280932202809118029091190257 -:1013B00090932102809320020E94910381E0DF91AB -:1013C000CF911F910F91FF90EF900895E82FF0E0DB -:1013D000EE0FFF1FE05EFD4F80819181089508951B -:1013E0000F931F93CF9308E212E0C0E0F8019291AF -:1013F00082918F010E945622C80FF2E000321F072F -:10140000A9F78C2FCF911F910F9108950E949A23D5 -:10141000811102C00E9476230E94BF23809307039C -:101420003E9A809171008D7F8093710082E080935D -:1014300090008AE18093910081E080932A020895D0 -:1014400080912A02811102C00E94060A10927A023B -:1014500010927902809171008D7F8093710080914C -:1014600090008F738093900010923C0210923B0288 -:10147000109273021092740210927502109276020A -:101480001092720210927102E1E5F2E0A1E4B2E082 -:1014900011921192119211921D921D9282E0E137E8 -:1014A000F807B1F70895CF92DF92EF92FF920F9372 -:1014B0001F93CF93DF9320913B02222309F484C032 -:1014C0006B017C0180912A02811102C00E94060AF0 -:1014D00001E712E0C7E0D0E0A7019601F801929180 -:1014E0008291729162918F010E940A29811131C00B -:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 -:10150000118212821382DE01AA0FBB1FAF5BBD4F97 -:1015100011961C921E92C730D105E9F021964481A4 -:1015200055816681778140835183628373831482FE -:1015300015821682178212968D919C91139711969F -:101540009C938E9313961C921E9212973496129629 -:10155000E2CF219708F68091790290917A02019763 -:1015600097FD05C090937A028093790204C010928F -:101570007A02109279028091790290917A022091F8 -:101580007702309178022817390724F010927802F8 -:1015900010927702892BC1F4809171008D7F809326 -:1015A0007100809190008F7380939000109273026D -:1015B00010927402109275021092760210927202CA -:1015C0001092710210923B02DF91CF911F910F9107 -:1015D000FF90EF90DF90CF9008951F920F920FB67B -:1015E0000F9211244F925F926F927F928F929F92EF -:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 -:101600004F935F936F937F938F939F93AF93BF930A -:10161000CF93DF93EF93FF9380913B02882309F4EC -:101620009BC1C0917902D0917A021C161D060CF064 -:1016300093C140902B0250902C0260902D0270902C -:101640002E0220E030E0A901C301B2010E94B52AB8 -:1016500018160CF065C0C130D10509F452C0809154 -:10166000770290917802BE010E94872C7C019093B2 -:1016700078028093770280903D0290903E02A09085 -:101680003F02B090400220E030E040E85FE3C50157 -:10169000B4010E94A62860933D0270933E0280939D -:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 -:1016B000EF5AFD4FA3019201608171818281938174 -:1016C0000E940E2920E030E040E05EE30E94B92A4B -:1016D0009B01AC01C501B4010E94B52A18168CF417 -:1016E000C7010196BE010E94872C909378028093D7 -:1016F000770210923D0210923E0210923F02109229 -:101700004002E0917702F0917802EE0FFF1FEE0F9A -:10171000FF1FEF5AFD4F6081718182819381D0C09C -:10172000C0907302D0907402E0907502F09076023F -:1017300020E030E0A901C701B6010E940A292197E3 -:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A -:10175000EF5AFD4F80809180A280B380A501940153 -:10176000C701B6010E940A2987FF31C0A501940173 -:1017700060E070E08CED93EC0E940E2920E030E0F8 -:1017800040E451E40E940E2920E030E040E05FE3B5 -:101790000E94B92A9B01AC0160E070E080E090E417 -:1017A0000E941C2B9B01AC01C501B4010E94B92A07 -:1017B0009B01AC01C701B6010E940A2987FF07C03F -:1017C000A701960160E070E08CED93E439C0A501BB -:1017D0009401C701B6010E94B52A18160CF055C035 -:1017E000A501940160E070E08CED93E40E940E2965 -:1017F00020E030E040E451E40E940E2920E030E097 -:1018000040E05FE30E94B92A9B01AC0160E070E018 -:1018100080E090E40E941C2B9B01AC01C501B40147 -:101820000E94B92A9B01AC01C701B6010E94B52AEA -:1018300018165CF5A701960160E070E08CED93EC62 -:101840000E940E2920E030E040E451E40E940E297D -:1018500020E030E040E05FE30E94B92A9B01AC0148 -:1018600060E070E080E090E40E941C2B9B01AC01E2 -:10187000C701B6010E94B92A609373027093740283 -:10188000809375029093760213C0FE01EE0FFF1F46 -:10189000EE0FFF1FEF5AFD4F80819181A281B3812E -:1018A0008093730290937402A0937502B0937602B2 -:1018B000609173027091740280917502909176022A -:1018C00020912802309129022F3F4FEF340731F049 -:1018D0002F5F3F4F30932902209328020E94950EDC -:1018E0006B017C0120E034E244EF51E40E940A29BC -:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 -:1019000081E4F82E20E030E040E051E4C701B60168 -:101910000E94B92A9B01AC0160E074E284E79BE479 -:101920000E940E296B017C010E947B297093970015 -:1019300060939600209106013091070140910801C3 -:1019400050910901C701B6010E94B92A0E947B2962 -:10195000709399006093980080913C02882309F469 -:1019600033C1C0903702D0903802E0903902F09035 -:101970003A0220E030E0A901C701B6010E94B52A71 -:101980001816D4F580912802909129028F3F2FEFED -:10199000920729F001969093290280932802C701AB -:1019A000B6010E94950E20E030E040E051E40E9434 -:1019B000B92A9B01AC0160E074E284E79BE40E94D9 -:1019C0000E296B017C010E947B2970939700609324 -:1019D0009600209106013091070140910801509135 -:1019E0000901C701B6010E94B92A0E947B297093A0 -:1019F00099006093980008C010929700109296008A -:101A00001092990010929800609131027091320208 -:101A10006F5F7F4F70933202609331022091960086 -:101A20003091970080E090E0232BF1F0C091960078 -:101A3000D09197000E94A7296B017C01BE0180E034 -:101A400090E00E94A7299B01AC0160913302709144 -:101A5000340280913502909136020E940E2920E0D6 -:101A60003FEF4FE757E410C00E94A7296B017C01AC -:101A700020E030EE4FEF54E4609133027091340275 -:101A800080913502909136020E94B92A9B01AC01E7 -:101A9000C701B6010E94B52A87FD96C080912F022A -:101AA0008F5F80932F0290E0209103033091040315 -:101AB00082179307A0F080910E03882319F01092EB -:101AC0002F020DC0809171008D7F809371008091F5 -:101AD00090008F738093900010923C027DC08091A3 -:101AE0003002C0912F02811128C0C0900803D0900D -:101AF0000903E0900A03F0900B0320E030E0A90115 -:101B0000C701B6010E94B52A1816BCF481E0809383 -:101B1000300210923702109238021092390210925D -:101B20003A02C0923302D0923402E0923502F0922F -:101B30003602C150C0932F0243C01092300210925F -:101B4000290210922802E0910503F091060348E073 -:101B5000C49FE00DF11D112480819181A281B38188 -:101B60008093370290933802A0933902B0933A02DF -:101B700020E030E040E85EE36481758186819781F2 -:101B80000E94B92A6B017C0180910A01682F70E0E4 -:101B900080E090E00E94A72920E030E048EC52E489 -:101BA0000E940E299B01AC01C701B6010E94B92A0F -:101BB000609333027093340280933502909336021F -:101BC00010923202109231028091070380FD04C00E -:101BD00010923C0210923B02FF91EF91DF91CF9166 -:101BE000BF91AF919F918F917F916F915F914F9135 -:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB -:101C00009F908F907F906F905F904F900F900FBE3E -:101C10000F901F901895CF92DF92EF92FF92CF9383 -:101C2000DF936B017C01EA0180912A02811102C0DD -:101C30000E94060A8091070380FF46C080917902C6 -:101C400090917A0208970CF03FC0809171008D7FCF -:101C50008093710080913C0281110E94200A81E0F2 -:101C600080933B02109229021092280220E030E07B -:101C7000A901C701B6010E94B52A1816DCF48091AB -:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 -:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 -:101CA000FF1FEF5BFD4FD183C083019690937A02B3 -:101CB000809379028091710082608093710080919D -:101CC0009000806880939000DF91CF91FF90EF901B -:101CD000DF90CF90089580910703817008958091DF -:101CE00007038160809307030E94C3230C94EB03D6 -:101CF000809107038E7F809307030C94C323809108 -:101D00007B0290E0019666E070E00E94872C809351 -:101D10007B02089580917B0290E0019766E070E07D -:101D20000E94872C80937B0208958F929F92AF929E -:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 -:101D4000DF936B017C01C0912802D0912902BE0172 -:101D500080E090E00E94A7294B015C01A701960159 -:101D600060E070E08CE594E40E940E299B01AC01D8 -:101D7000C501B4010E94B92A0E947B2920917B02EF -:101D8000233009F473C028F4222351F02130E9F004 -:101D90002CC1243009F4A0C0253009F4E0C025C1CD -:101DA00080E090E0A0E0BFE38093060190930701FC -:101DB000A0930801B093090110922B0210922C02FB -:101DC00010922D0210922E0210C110922B0210922E -:101DD0002C0210922D0210922E026431710540F4F3 -:101DE0006A30710560F520E030E040E85EE32BC02A -:101DF000693C710508F0AAC080E090E00E94A72924 -:101E000020E030E040EA51E40E94A52820E030E0E4 -:101E100044E353E40E940E299B01AC010E94B92ABD -:101E200020E030E040E05EE30E94B92A9B01AC0173 -:101E300060E070E080E09EE30E94A52844C020E0BE -:101E400030E040E05FE3C701B6010E94B92A6B01B0 -:101E50007C0180E090E0A0E0BEE3809306019093D7 -:101E60000701A0930801B0930901BFC010922B0293 -:101E700010922C0210922D0210922E024AE0469FE0 -:101E80009001479F300D1124C90168EB7BE00E944F -:101E9000732CBC016C5D754077FF03C07195619533 -:101EA0007109882777FD8095982F0E94A9292EE334 -:101EB00033EC4EE259E30E94B92A20E030E040ECD6 -:101EC0005EE30E94A6286093060170930701809349 -:101ED00008019093090189C010922B0210922C02E4 -:101EE00010922D0210922E02CE0183709927892B19 -:101EF000E1F0BE016170772780E090E00E94A729A1 -:101F000020E030E040E05EE30E94B92A20E030E0CB -:101F100040E45FE30E94A6286093060170930701E6 -:101F200080930801909309010CC080E090E0A0E04C -:101F3000BFE38093060190930701A0930801B0933B -:101F40000901C770DD27CD2B09F04FC010920601A3 -:101F500010920701109208011092090146C01092D8 -:101F60002B0210922C0210922D0210922E0200E0F1 -:101F700010E020E03FE30093060110930701209357 -:101F80000801309309016739710578F180E090E02C -:101F90000E94A72920E030E047E153E40E94A528F1 -:101FA00020E030E04AE754E40E940E2920E030E0CF -:101FB00048E452E40E94B92A20E030E040EA51E4CB -:101FC0000E94EB290E947629660F771F660F771F04 -:101FD000FB01EE5AFE4F2081318142815381C701BE -:101FE000B6010E94B92A6B017C01C701B601DF91DD -:101FF000CF911F910F91FF90EF90DF90CF90BF9006 -:10200000AF909F908F90089580918C020895CF9308 -:10201000DF9300D01F92CDB7DEB79C0180911303F0 -:10202000843019F593E099833B832A839093E900E8 -:102030008FEF9091E800815095FD06C095ED9A953F -:10204000F1F700008111F5CF8091E80085FF0DC008 -:1020500040E050E063E070E0CE0101960E9468121B -:102060008091E8008E778093E8000F900F900F909A -:10207000DF91CF910895CF93DF9300D01F92CDB71A -:10208000DEB720911303243021F522E029839B83BE -:102090008A8383E08093E9008FEF9091E80081507C -:1020A00095FD06C095ED9A95F1F700008111F5CFE9 -:1020B0008091E80085FF0DC040E050E063E070E0F3 -:1020C000CE0101960E9468128091E8008E7780937D -:1020D000E8000F900F900F90DF91CF91089520911D -:1020E00013032430F1F422E02093E9002FEF309124 -:1020F000E800215035FD06C035ED3A95F1F70000B6 -:102100002111F5CF2091E80025FF0BC040E050E001 -:1021100065E070E00E9468128091E8008E778093FD -:10212000E8000895CF93DF93EC019091130394306E -:1021300009F046C0809115018823D9F080911601DD -:102140008823B9F09093E9008FEF9091E8008150D7 -:1021500095FD06C095E19A95F1F700008111F5CF44 -:102160008091E80085FF2CC040E050E060E170E025 -:1021700017C081E08093E9008FEF9091E8008150D3 -:1021800095FD06C095ED9A95F1F700008111F5CF08 -:102190008091E80085FF14C040E050E068E070E006 -:1021A000CE010E9468128091E8008E778093E8004B -:1021B00080E1FE01ACE7B2E001900D928A95E1F773 -:1021C000DF91CF91089580911203811109C00E947F -:1021D000FD130E945A148091E20084608093E20013 -:1021E0000895109212030895089508950C94A12261 -:1021F00042E061EC81E00E94771342E061EC82E012 -:102200000E94771342E061EC83E00E94771342E181 -:1022100061EC84E00C94771380911503833009F40A -:1022200055C030F4813071F0823009F48EC00895C9 -:102230008A3009F47AC08B3009F460C0893009F023 -:102240009CC020C080911403813A09F096C080910F -:10225000E800877F8093E80080911803909119032C -:10226000892B21F460E18CE792E003C060E080E01C -:1022700090E070E00E94B3128091E8008B77809329 -:10228000E800089580911403813209F076C08091AE -:10229000180390911903009719F0039709F06DC086 -:1022A0008091E800877F8093E8008091E80082FDBC -:1022B00005C0809113038111F8CF5FC08091F100B8 -:1022C00080938C028091E8008B7753C08091140337 -:1022D000813A09F052C08091180390911903892B1B -:1022E00009F04BC08091E800877F8093E8008091DF -:1022F000E80080FFFCCF8091150136C08091140367 -:102300008132D9F58091180390911903892BA9F591 -:102310008091E800877F8093E8000E94AC13809151 -:102320001603809315010C94E21B809114038132F3 -:1023300021F58091E800877F8093E8000E94AC132C -:102340008091170380938D02089580911403813A40 -:10235000A1F48091E800877F8093E8008091E800F5 -:1023600080FFFCCF80918D028093F1008091E80086 -:102370008E778093E8000C94AC13089584B7877F20 -:1023800084BF88E10FB6F8948093600010926000DB -:102390000FBE90E080E80FB6F894809361009093B0 -:1023A00061000FBE0E944F170E94FD130E945A1435 -:1023B0008091E20084608093E20078940E94E016AD -:1023C0000E9451178BE091E00E94FB16809113034D -:1023D000853069F40E946222809111038823B1F351 -:1023E0000E949022882391F30E945212EFCF0E9404 -:1023F0005917ECCF292F332723303105C9F064F466 -:102400002130310581F02230310509F043C08DE6DD -:1024100090E022EB33E042C021323105F1F022326C -:10242000310541F137C082E190E02FE134E036C060 -:1024300099278130910541F08230910541F0892B37 -:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 -:10245000F3E0849190E09F0121C06430D8F4E62F2E -:10246000F0E0EE0FFF1FE255FE4F2081318189E041 -:1024700090E014C0643070F470E0FB01EE0FFF1FB9 -:10248000EA55FE4F20813181FB01EE55FE4F8081E0 -:1024900090E004C080E090E020E030E0FA01318379 -:1024A0002083089580E189BD82E189BD09B400FEE1 -:1024B000FDCF8091D8008F7D8093D8008091E0007F -:1024C00082608093E0008091E00081FDFCCF089560 -:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 -:1024E000EC018B016A010E94CB13811133C0C1142E -:1024F000D10439F0F60180819181081B190BC80FB6 -:10250000D91FE12CF12C0115110519F18091E8007A -:1025100085FD16C08091E8008E778093E800C11495 -:10252000D10449F0F60180819181E80EF91EF18213 -:10253000E08285E00FC00E94CB13882321F30AC0FC -:1025400089918093F10001501109FFEFEF1AFF0A02 -:10255000DACF80E0DF91CF911F910F91FF90EF9044 -:10256000DF90CF90089520911A0330911B03261716 -:10257000370748F06115710539F42091E8002E778E -:102580002093E80001C0B90140E061157105A9F18F -:1025900020911303222309F443C0253009F442C0DB -:1025A0002091E80023FD40C02091E80022FD32C0C8 -:1025B0002091E80020FFE9CF4091F3002091F20044 -:1025C00030E0342BFC01CF016115710559F0283042 -:1025D000310540F481918093F100615071092F5FC2 -:1025E0003F4FF1CF41E02830310509F040E0209124 -:1025F000E8002E772093E800C8CF4111C9CF0AC068 -:1026000080911303882361F0853061F08091E800A8 -:1026100083FD0AC08091E80082FFF2CF80E0089538 -:1026200082E0089583E0089581E0089520911A03DF -:1026300030911B032617370748F06115710539F4EF -:102640002091E8002E772093E80001C0B901FC0139 -:1026500020E06115710591F180911303882309F43D -:1026600040C0853009F43FC08091E80083FD3DC043 -:102670008091E80082FD2FC08091E80080FFE9CFC3 -:102680002091F3008091F20090E0922B611571058A -:1026900059F08830910540F424912093F10031964F -:1026A000615071090196F2CF21E0089709F020E00E -:1026B0008091E8008E778093E800CBCF2111CCCFBA -:1026C0000AC080911303882361F0853061F0809106 -:1026D000E80083FD0AC08091E80082FFF2CF80E02D -:1026E000089582E0089583E0089581E00895982F89 -:1026F000973058F59093E900981739F07091EC00F5 -:102700002091ED005091F00003C0242F762F50E06F -:1027100021FF19C03091EB003E7F3093EB003091E8 -:10272000ED003D7F3093ED003091EB003160309350 -:10273000EB007093EC002093ED005093F00020919B -:10274000EE0027FF07C09F5FD3CF8F708093E90013 -:1027500081E0089580E008958091140387FF11C0FF -:102760008091E80082FD05C0809113038111F8CFAC -:1027700011C08091E8008B770BC0809113038823F0 -:1027800049F08091E80080FFF8CF8091E8008E77D3 -:102790008093E80008952091E4003091E50095E6EB -:1027A0004091EC00842F817040FF22C08091E800AE -:1027B00080FD1CC080911303882391F0853091F037 -:1027C0008091EB0085FD10C04091E4005091E50040 -:1027D0004217530729F39A01915011F784E00895A5 -:1027E00082E0089583E0089581E0089580E00895EF -:1027F0004091E80042FFDECF08950E946B140E94D2 -:102800007314E0EEF0E0808181608083E8EDF0E019 -:1028100080818F77808319BCA7EDB0E08C918E7F8B -:102820008C9380818F7E80831092120308950F9382 -:102830001F93CF93DF930E946B140E947314C8ED13 -:10284000D0E088818F7788838881806888838881B9 -:102850008F7D888319BC1092130310920F0310927E -:1028600011031092100300EE10E0F80180818B7FBD -:10287000808388818160888342E060E080E00E94FC -:102880007713E1EEF0E080818E7F8083E2EEF0E06E -:10289000808181608083808188608083F80180816D -:1028A0008E7F8083888180618883DF91CF911F91A3 -:1028B0000F910895E8EDF0E080818F7E8083E7ED51 -:1028C000F0E080818160808384E082BF81E080933A -:1028D00012030C941714E8EDF0E080818E7F808362 -:1028E0001092E20008951092DA001092E10008952B -:1028F0001F920F920FB60F9211242F933F934F9375 -:102900005F936F937F938F939F93AF93BF93EF9357 -:10291000FF938091E10082FF0BC08091E20082FF73 -:1029200007C08091E1008B7F8093E1000E94DF1659 -:102930008091DA0080FF1FC08091D80080FF1BC00B -:102940008091DA008E7F8093DA008091D90080FF39 -:102950000DC080E189BD82E189BD09B400FEFDCFD3 -:1029600081E0809313030E94E31005C019BC10920C -:1029700013030E94F1108091E10080FF19C0809143 -:10298000E20080FF15C08091E2008E7F8093E2001C -:102990008091E20080618093E2008091D8008062A3 -:1029A0008093D80019BC85E0809313030E94F51032 -:1029B0008091E10084FF30C08091E20084FF2CC050 -:1029C00080E189BD82E189BD09B400FEFDCF80911F -:1029D000D8008F7D8093D8008091E1008F7E809316 -:1029E000E1008091E2008F7E8093E2008091E2001E -:1029F00081608093E20080910F03882311F084E0CE -:102A000007C08091E30087FD02C081E001C083E040 -:102A1000809313030E94F6108091E10083FF29C088 -:102A20008091E20083FF25C08091E100877F809341 -:102A3000E10082E08093130310920F038091E10084 -:102A40008E7F8093E1008091E2008E7F8093E20090 -:102A50008091E20080618093E20042E060E080E0EB -:102A60000E9477138091F00088608093F0000E94AC -:102A7000F410FF91EF91BF91AF919F918F917F9152 -:102A80006F915F914F913F912F910F900FBE0F90DB -:102A90001F9018951F920F920FB60F9211242F932B -:102AA0003F934F935F936F937F938F939F93AF93D6 -:102AB000BF93CF93DF93EF93FF93C091E900CF7063 -:102AC0008091EC00D82FD17080FDD0E81092E90001 -:102AD0008091F000877F8093F00078940E948E159B -:102AE0001092E9008091F00088608093F000CD2B77 -:102AF000CF70C093E900FF91EF91DF91CF91BF912B -:102B0000AF919F918F917F916F915F914F913F9185 -:102B10002F910F900FBE0F901F9018951F93CF937A -:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E -:102B3000CDBFE4E1F3E088E08E0F9091F100919336 -:102B40008E13FBCF0E940C118091E80083FF1FC100 -:102B50008091140390911503492F50E04A3051059C -:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB -:102B700081F0823809F00BC1809118038F70809327 -:102B8000E9008091EB0085FB882780F91092E9002D -:102B900006C0809110039091110391118260909171 -:102BA000E800977F9093E8008093F1001092F10085 -:102BB000C8C0282F2D7F09F0EAC0882319F0823081 -:102BC00061F0E5C080911603813009F0E0C09330D8 -:102BD00009F080E0809311032BC0809116038111CE -:102BE00027C0809118038F7009F4D1C08093E90049 -:102BF0002091EB0020FF1CC0933021F48091EB006A -:102C0000806214C09091EB0090619093EB0021E002 -:102C100030E0A90102C0440F551F8A95E2F74093A6 -:102C2000EA001092EA008091EB0088608093EB004C -:102C30001092E9008091E800877F86C08111A7C0CB -:102C4000109116031F778091E3008078812B809389 -:102C5000E3008091E800877F8093E8000E94AC1336 -:102C60008091E80080FFFCCF8091E3008068809332 -:102C7000E300111102C082E001C083E080931303DE -:102C800086C08058823008F082C0809116039091EF -:102C900017038C3D53E0950779F583E08A838AE238 -:102CA00089834FB7F894DE01139620E03EE051E2AD -:102CB000E32FF0E050935700E49120FF03C0E2952A -:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 -:102CD00001C0C0968D939D932F5F243149F74FBF5C -:102CE0008091E800877F8093E8006AE270E0CE017F -:102CF00001960E94B31214C0AE014F5F5F4F609106 -:102D000018030E94FA11BC01009709F440C0909189 -:102D1000E800977F9093E80089819A810E941613BA -:102D20008091E8008B778093E80031C0803879F596 -:102D30008091E800877F8093E80080910F03809363 -:102D4000F1008091E8008E778093E8000E94AC1338 -:102D50001EC081111CC0909116039230C0F4809166 -:102D6000E800877F8093E80090930F030E94AC13E4 -:102D700080910F03811106C08091E30087FD02C09E -:102D800081E001C084E0809313030E94F8108091D9 -:102D9000E80083FF0AC08091E800877F8093E80005 -:102DA0008091EB0080628093EB00AA960FB6F894B6 -:102DB000DEBF0FBECDBFDF91CF911F910895089563 -:102DC000CF93809113038823A1F0C091E900CF70C5 -:102DD0009091EC00892F817090FD80E8C82B1092B3 -:102DE000E9008091E80083FD0E948E15CF70C093AA -:102DF000E900CF91089590939302809392020895F1 -:102E0000E0919202F0919302309721F00190F081CD -:102E1000E02D099480E00895E0919202F0919302F0 -:102E2000309721F00280F381E02D09940895E0911C -:102E30009202F0919302309721F00480F581E02D09 -:102E4000099408952091900230919102821793077E -:102E500071F09093910280939002E0919202F09130 -:102E60009302309721F00680F781E02D09940895B0 -:102E700020918E0230918F028217930771F0909308 -:102E80008F0280938E02E0919202F091930230972C -:102E900021F00084F185E02D0994089508950C94A3 -:102EA0004E170E94D5220E9426090E945B230C9493 -:102EB0000A285F926F927F928F929F92AF92BF92F9 -:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 -:102ED00000D000D01F92CDB7DEB70E946B099DE9EC -:102EE000C92E92E0D92E03E010E0AA24A394B12CBD -:102EF000502E802F0E94E6094C01F60172906290DC -:102F00006F016826792661147104A1F4015011093A -:102F100078F78FEF89838A831B820E94DE2281608B -:102F2000782F9D838C8349815A816B818D810E948A -:102F3000091838C08091F20281FD0E94EF092BE050 -:102F400030E07501022E02C0EE0CFF1C0A94E2F77D -:102F5000C70186219721892B09F129835A828E2066 -:102F60009F2091E0892809F490E09B830E94DE2253 -:102F70008160782F9D838C8349815A816B818D81FB -:102F80000E940918000F111FF801EB56FD4F8081B8 -:102F90009181E826F926F182E08204C021503109AE -:102FA00080F6B4CF0E944225109194020E9400172F -:102FB0001817D1F00E940017809394020F900F9081 -:102FC0000F900F900F90DF91CF911F910F91FF9075 -:102FD000EF90DF90CF90BF90AF909F908F907F90B9 -:102FE0006F905F900C9410090F900F900F900F90BE -:102FF0000F90DF91CF911F910F91FF90EF90DF9095 -:10300000CF90BF90AF909F908F907F906F905F9088 -:103010000895CF93DF93CDB7DEB72B970FB6F89413 -:10302000DEBF0FBECDBF4F83588769877A878B87F6 -:10303000DE01119686E0FD0111928A95E9F785E09F -:10304000FE01379601900D928A95E1F749815A81E8 -:103050006B817C818D819E810E94801E2B960FB694 -:10306000F894DEBF0FBECDBFDF91CF910895CF930F -:10307000882309F4C2C0C82F823859F40E9400176F -:1030800081FDBBC089E30E945A210E94272289E367 -:103090000CC0833879F40E94001780FDAEC083E530 -:1030A0000E945A210E94272283E50E949C21CF91F1 -:1030B0000C942722843859F40E94001782FD9DC089 -:1030C00087E40E945A210E94272287E4EECF8CEFEA -:1030D0008C0F813A48F48C2F0E94722781118DC089 -:1030E0008C2F0E945A21E3CF80E28C0F883048F465 -:1030F000C77081E001C0880FCA95EAF70E94E021FD -:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 -:1031100031F083E890E005C081E890E002C082E8E9 -:1031200090E0CF910C94221788E58C0F833108F042 -:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 -:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 -:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 -:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 -:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B -:1031800090E038C082EE90E035C089EE90E032C029 -:103190008AEE90E02FC085EB90E02CC086EB90E0AB -:1031A00029C087EB90E026C08CEC90E023C08DEC2A -:1031B00090E020C083E891E01DC08AE891E01AC049 -:1031C00082E991E017C084E991E014C081E292E0C5 -:1031D00011C083E292E00EC084E292E00BC085E26F -:1031E00092E008C086E292E005C087E292E002C069 -:1031F0008AE292E0CF910C943817CF9108958823FA -:1032000009F44BC0823859F40E94001781FF45C071 -:1032100089E30E945A210E94272289E30CC0833847 -:1032200071F40E94001780FF38C083E50E945A2184 -:103230000E94272283E50E949C210C942722843837 -:1032400059F40E94001782FF28C087E40E945A2187 -:103250000E94272287E4EFCF9CEF980F913A58F312 -:1032600090E2980F983050F4877091E001C0990F68 -:103270008A95EAF7892F0E94E621DFCF9BE5980F18 -:10328000933020F480E090E00C942217885A833128 -:1032900020F480E090E00C9438170895882321F002 -:1032A0000E94E0210C9427220895882321F00E9497 -:1032B000E6210C94272208957F928F929F92AF92DD -:1032C000BF92CF92DF92EF92FF920F931F93CF9313 -:1032D000DF931F92CDB7DEB77C01C62E772EFC019F -:1032E000058102950F70128111110E94FD210E942B -:1032F0005321882379F0112369F080E28C0D883006 -:1033000048F082E00E943C210E94532191E0D82E97 -:10331000D92601C0D12CE72DE295EF70F0E0E05AFC -:10332000FF4F0C949B2C872D807F072D0F708823D7 -:1033300011F00295007F112389F0002309F499C14F -:1033400080E28C0D883020F4802F0E94E02103C0A1 -:10335000802F0E94F0210E9427228BC18C2D0E9479 -:10336000FF18002309F4C3C180E28C0D883020F4DB -:10337000802F0E94E62103C0802F0E94F6210E9428 -:103380002722B5C1872D807F972D9F70803211F441 -:10339000892F03C0892F8295807FCC2021F0F1E016 -:1033A000CF16A1F01DC0112339F0002319F101300F -:1033B00009F50E9410229BC1002319F0013009F485 -:1033C00096C189830E941322898110C1112321F0A3 -:1033D000063008F08CC10EC0053008F088C106C167 -:1033E000112359F0002331F0F701958190FF41C17D -:1033F0009F7095830E944E197AC1002309F4F6C08C -:103400003EC1872D86958695837090E0009719F0D0 -:10341000019761F06CC1112321F08C2D972D9370D1 -:1034200002C080E090E00E94221761C1112321F0C8 -:103430008C2D972D937002C080E090E00E94381789 -:1034400056C18C2D112319F00E944A2402C00E94FB -:10345000B2240E9437254BC1872D837009F052C0DA -:10346000111145C18C2D829586958770880F880F24 -:103470009C2D9F70892E912CA12CB12C082E04C05C -:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 -:103490000FE010E020E030E0B901A80104C0440FC3 -:1034A000551F661F771F8A95D2F7CB01BA01609529 -:1034B00070958095909503C060E070E0CB01272D5A -:1034C00026952695237030E02230310569F02330AF -:1034D000310589F0682979298A299B29213031050C -:1034E00071F00E94C81F03C1682979298A299B2984 -:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 -:10350000AC1FF5C0112319F0872D817001C086957D -:10351000882309F4ECC08C2D829586958770880FDE -:10352000880F9C2D9F70892E912CA12CB12C082ED8 -:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 -:1035400014C00FE010E020E030E0B901A80104C091 -:10355000440F551F661F771F8A95D2F7CB01BA011A -:10356000609570958095909503C060E070E0CB0108 -:10357000272D269526952370422F50E04230510585 -:1035800069F04330510589F0682979298A299B29F6 -:103590004130510571F00E94A220A9C06829792903 -:1035A0008A299B290E94BE20A2C00E94A220C50198 -:1035B000B4010E9486209BC08C2D90E0FC01E05E4F -:1035C000F109E531F10508F050C0E059FF4F0C94C6 -:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 -:1035E0001F20802F07CF0E944020802F0E94551956 -:1035F0007EC0112341F0053008F079C0872D8F710E -:103600000E94652074C0063008F071C0F7CF112306 -:1036100039F0872D8F710E941F2069C01123C9F3D3 -:10362000872D8F710E94402062C0112329F0872DC1 -:103630008F710E940A205BC00E94002058C0112395 -:1036400051F0172D1F71812F0E941F2063E0812FE1 -:103650000E9433214CC081E00E943C21023008F4DA -:1036600046C082E00E943C2142C0112331F0002379 -:1036700081F28C2D0E9437183AC0002389F28C2DDC -:103680000E94FF1834C0472D4F706C2DC7010E9457 -:10369000EE050E94241F2BC0111129C0472D4F7029 -:1036A00050E042305105B9F04CF44115510581F01C -:1036B00041305105E1F40E94322819C043305105D0 -:1036C00069F04430510599F48C2D0E9484280FC074 -:1036D0000E941B280CC00E944E2809C00E9461282D -:1036E00006C0472D4F706C2DC7010E94F105DD20EB -:1036F000F9F00E942F2180FD1BC0F70112820E9469 -:1037000029210E941F20C7010E94A71B0E94292176 -:103710000F90DF91CF911F910F91FF90EF90DF906D -:10372000CF90BF90AF909F908F907F900C9440204F -:103730000F90DF91CF911F910F91FF90EF90DF904D -:10374000CF90BF90AF909F908F907F9008950F93F0 -:103750001F93CF93DF93EC01888199812B813C816A -:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 -:10377000ED03882371F0688179818A810E94252177 -:103780008C010E94DA200E94A11FB801CE010E9484 -:103790005C19DF91CF911F910F9108950E94FD2137 -:1037A0000E940D220E94D2210E9427220E94E82519 -:1037B0000E94372580E090E00E94221780E090E090 -:1037C0000C9438170E94ED210C94CE1B0E941A21F4 -:1037D000292F22952F7030E02C3031054CF42A30FF -:1037E00031056CF42250310922303105A8F407C0AC -:1037F0002C30310569F02F30310551F00DC0803F7C -:1038000069F018F4803E40F409C0843F29F406C0F2 -:1038100093FB882780F9089580E0089581E008955A -:10382000CF93DF9300D000D01F92CDB7DEB70F90BB -:103830000F900F900F900F90DF91CF910895CF933D -:10384000DF9300D000D000D0CDB7DEB726960FB6FC -:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 -:10386000CF93DF93C0919D0216E080919E02C8170E -:1038700099F0D0E01C9FF0011D9FF00D1124E1563E -:10388000FD4F4081518162817381848195810E94C5 -:103890001F1C2196C770E9CFDF91CF911F9108952A -:1038A0004091CF025091D0026091D1027091D2022A -:1038B0008091D3029091D4020C941F1C8091D40269 -:1038C00082958F7009F054C08091D102882309F449 -:1038D0004FC080919D02A0919E026091CF02709195 -:1038E000D0024091D2025091D302B6E08A1709F477 -:1038F0003FC090E041155105C1F17F3F11F46F3F8A -:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 -:10391000218172132AC02081621327C022812111C4 -:1039200024C0238134812417350710F42150310934 -:10393000241B350B283C3105C0F42091D4022F7094 -:1039400020612093D40226E0289FF001299FF00DEA -:103950001124EC55FD4F80818F70806180838FEC46 -:1039600092E00E94A71B0C942F1C01968770BECF7B -:103970000895CF92DF92EF92FF920F931F93CF9310 -:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 -:10399000CDBF8C0185E0F801DE011D9601900D92EE -:1039A0008A95E1F7D8014C9111965C911197129686 -:1039B0006C9112971396CD90DC9014973091CF02B2 -:1039C0007091D0028091D2029091D302009709F4B5 -:1039D0006BC17F3F19F43F3F09F466C1E090D1020B -:1039E000EE2009F4C0C02091D402C816D90628F0F0 -:1039F000F601E81BF90BCF0104C0809590958C0D62 -:103A00009D1DFF24F394883C910578F0F12C207FD4 -:103A100009F0C6C07C2DD98AC88A89890E94101CE9 -:103A20008FEC92E00E94A71BB1C0822F807F09F02B -:103A300046C0751314C0341312C0611110C02F702A -:103A400020612093D4020E94501C8FEC92E00E94CF -:103A5000A71B8091D402D80115968C932EC0CD2837 -:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 -:103A700080919D0220919E0236E0821709F45AC07F -:103A800090E0389FF001399FF00D1124E156FD4F71 -:103A90007181571306C07081471303C07281711181 -:103AA00003C001968770E9CFF62E662309F418C18A -:103AB0008091D40281608093D402F12C11C17513DE -:103AC00008C0341306C0611104C08091D402D8012B -:103AD000C3C04D875E878D859E856A8B0E94E61BDD -:103AE0006A898823E1F16623D1F12091D402822FE3 -:103AF00082958F7090E0029774F08091CF02909140 -:103B0000D00298878F831986DB86CA862C87CE01E0 -:103B100007960E94A71B86E0F801AFECB2E0019087 -:103B20000D928A95E1F70E945E1C0E94501CFF24B2 -:103B3000F394D6C04D875E878D859E850E941A219D -:103B4000292F22952F7030E0223031050CF0BCC0B7 -:103B50009F7009F0B6C0805E883008F4C1C0C8010B -:103B60000E94A71BE4CFC816D90608F453C0F6017B -:103B7000E81BF90BCF01883C910508F450C0F12CEB -:103B80007C2DD98AC88A89890E94101CEFECF2E04A -:103B900086E0DF011D928A95E9F70E94501CA0C0C3 -:103BA000751314C0341312C0611110C08091D40277 -:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 -:103BC000DF011D928A95E9F7FE2C8AC04D875E873A -:103BD0008D859E856A8B0E94E61B6A89882309F47D -:103BE000BECF662309F4BBCF2091D402822F8295E9 -:103BF0008F7090E002970CF48ECF8091CF0290915D -:103C0000D0029A8389831B82DD82CC822E83CE01EF -:103C100001967FCF809590958C0D9D1DACCFF62E93 -:103C2000662309F49CCF75132EC034132CC0209149 -:103C3000D40220FD1FC0822F82958F70D9F0D80149 -:103C400015962C9315978F3049F08F5F982F92958A -:103C5000907F822F8F70892B15968C93C8010E94BC -:103C6000A71B86E0F801AFECB2E001900D928A95B7 -:103C7000E1F793CF86E0F801AFECB2E001900D924E -:103C80008A95E1F72DC04D875E878D859E850E94C0 -:103C9000E61B811140CF8091D40281608093D402D1 -:103CA000C8010E94A71B1CC0662309F458CF4D878A -:103CB0005E878D859E850E94E61B882309F44FCF81 -:103CC0002ACF811148CF0CC0243031050CF047CFEA -:103CD0009F7009F440CFF8019581907F09F03BCFA8 -:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 -:103CF000CF911F910F91FF90EF90DF90CF9008959B -:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 -:103D1000DEBF0FBECDBF4F83588769877A878B87F9 -:103D20009C87CE0107960E94B91C882369F08F8179 -:103D300098852A853B85232BF1F19F3F09F063C0CD -:103D40008F3F09F060C037C086E0FE013796DE0184 -:103D5000119601900D928A95E1F76F817885EA8539 -:103D6000FB85309741F17F3F11F46F3F21F12091A6 -:103D70009E0230E0C90101968770992740919D020B -:103D800050E08417950709F447C069837A83FD835F -:103D9000EC8396E0929FD001939FB00D1124A15621 -:103DA000BD4FFE01319601900D929A95E1F78093F7 -:103DB0009E020E942F1C16E080919D0290919E020F -:103DC0008917C1F1189FC001112481569D4F0E948F -:103DD000B91C882379F1E0919D021E9FF001112406 -:103DE000E156FD4F408151816281738184819581CB -:103DF0000E941F1C80919D0290E001968770992778 -:103E000080939D02D9CF4F81588569857A858B85AE -:103E10009C850E941F1CCFCF0E94E21B10929E0225 -:103E200010929D02EFECF2E086E0DF011D928A9590 -:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 -:103E4000DF91CF911F910895EF92FF920F931F93EF -:103E5000CF93DF938C01009709F46CC0F12CEE2412 -:103E6000E394E8012196F8018491843740F484308A -:103E700008F051C0813081F0823019F15BC0853784 -:103E800009F444C0A8F19CE7980F903708F052C09D -:103E90008F770E94FF1841C00E5F1F4FFE01C49133 -:103EA00080E28C0F883048F4C7708E2D01C0880FD7 -:103EB000CA95EAF70E94002214C08C2F0E9437187E -:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 -:103ED00058F4C7708E2D01C0880FCA95EAF70E946A -:103EE00006220E9427221AC08C2F0E94FF1816C09B -:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C -:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 -:103F1000FE01F49003C00E9437188E018F2D882374 -:103F200009F49FCFEFE9FFE03197F1F700C00000FF -:103F30008150F5CFDF91CF911F910F91FF90EF90BE -:103F4000089508956093D9027093DA028093DB029A -:103F50009093DC020C94CE1B0F931F930091D90217 -:103F60001091DA022091DB023091DC02DC01CB01FE -:103F7000802B912BA22BB32B8093D9029093DA0242 -:103F8000A093DB02B093DC021F910F910C94CE1B27 -:103F90000F931F930091D9021091DA022091DB0256 -:103FA0003091DC02DC01CB0180239123A223B323D7 -:103FB0008093D9029093DA02A093DB02B093DC02E3 -:103FC0001F910F910C94CE1B0F931F930091D90258 -:103FD0001091DA022091DB023091DC02DC01CB018E -:103FE00080279127A227B3278093D9029093DA02E2 -:103FF000A093DB02B093DC021F910F910C94CE1BB7 -:104000001092D5021092D6021092D7021092D802C6 -:104010000C94CE1B41E050E060E070E004C0440F1F -:10402000551F661F771F8A95D2F74093D50250938C -:10403000D6026093D7027093D8020C94CE1B41E055 -:1040400050E060E070E004C0440F551F661F771F0A -:104050008A95D2F78091D5029091D602A091D7028D -:10406000B091D802482B592B6A2B7B2B4093D50259 -:104070005093D6026093D7027093D8020C94CE1B53 -:1040800041E050E060E070E004C0440F551F661F3F -:10409000771F8A95D2F740955095609570958091DD -:1040A000D5029091D602A091D702B091D8024823B0 -:1040B00059236A237B234093D5025093D602609301 -:1040C000D7027093D8020C94CE1B41E050E060E020 -:1040D00070E004C0440F551F661F771F8A95D2F702 -:1040E0008091D5029091D602A091D702B091D802CA -:1040F000482759276A277B274093D5025093D60239 -:104100006093D7027093D8020C94CE1B0F931F9329 -:104110000091D5021091D6022091D7023091D80299 -:10412000DC01CB01802B912BA22BB32B8093D502EA -:104130009093D602A093D702B093D8021F910F910B -:104140000C94CE1B0F931F930091D5021091D602B1 -:104150002091D7023091D802DC01CB01802391233A -:10416000A223B3238093D5029093D602A093D702C3 -:10417000B093D8021F910F910C94CE1B0F931F93F5 -:104180000091D5021091D6022091D7023091D80229 -:10419000DC01CB0180279127A227B3278093D5028A -:1041A0009093D602A093D702B093D8021F910F919B -:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 -:1041C0001F93CF93DF938C01C090D902D090DA0275 -:1041D000E090DB02F090DC028091D5029091D60253 -:1041E000A091D702B091D802C82AD92AEA2AFB2A7C -:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B -:10420000979587950A94D2F780FF06C0B8018C2F46 -:104210000E947608019721F4219760F780E001C0A1 -:104220008C2FDF91CF911F910F91FF90EF90DF9036 -:10423000CF900895CF93DF93EC010E94DB20BE0165 -:104240000E947608DF91CF910895CB010E941A2138 -:1042500008958091DD0285958595859508958091D5 -:10426000DD028770089598E0899F90011124262B24 -:104270002093DD020C941F202091DD028095822383 -:104280008093DD02982F977069F430E0482F55270E -:1042900047FD50952417350729F085958595859517 -:1042A0000C94402008959091DD02977081E009F40C -:1042B00080E0089590911501992321F090911601C5 -:1042C000911109C02091170130911801F90132961E -:1042D0009FEF40E01FC0982F9695969596959F303A -:1042E00050F5E0911701F0911801E90FF11D877069 -:1042F00021E030E0A90102C0440F551F8A95E2F782 -:10430000CA019181892B818308959F3F39F04F5FC6 -:104310004E3041F051915813F8CF0DC05111F7CFE5 -:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B -:10433000FA9582830895089590911501992321F0AB -:1043400090911601911109C0209117013091180127 -:10435000F9013296205F3F4F1FC0982F9695969592 -:1043600096959F30F0F4E0911701F0911801E90F54 -:10437000F11D877021E030E0A90102C0440F551FF4 -:104380008A95E2F7CA0180959181892381830895F6 -:104390003196E217F30729F090819813F9CF108234 -:1043A000F7CF089581E090E0E0911701F0911801B6 -:1043B000E80FF91F1082019680319105A9F7089541 -:1043C0009091F102892B8093F1020895809590914C -:1043D000F10289238093F10208951092F102089569 -:1043E0009091F002892B8093F0020895809590912E -:1043F000F00289238093F00208951092F00208954C -:104400009091EF02892B8093EF020895809590910F -:10441000EF0289238093EF0208951092EF0208952E -:104420008093DE0208951092DE02089580911701B4 -:1044300090911801FC0131969C01205F3F4F80E074 -:10444000919191118F5FE217F307D1F70895E091F1 -:104450001701F09118018091F1028083E09117011A -:10446000F091180190818091F002892B8083E09176 -:104470001701F091180190818091EF02892B8083C0 -:104480008091DE02882361F0E0911701F09118011C -:104490009081892B80830E94162281111092DE0266 -:1044A00080911701909118010C940C1720E000974F -:1044B00039F0AC0141505109842395232F5FF7CF88 -:1044C000822F089580911303843039F11092F30202 -:1044D00020E488E190E00FB6F894A89580936000FE -:1044E0000FBE2093600080E00E94F10280E00E94F5 -:1044F000100983B7817F846083BF83B7816083BFE6 -:104500007894889583B78E7F83BF88E10FB6F8943F -:1045100080936000109260000FBE08950895089582 -:1045200080E00E94F1020E948E220E946B090E948C -:104530008F220E94F00991E0811101C090E0892F43 -:1045400008950E94E21B80E00E94F1020E940A2866 -:104550000E9400170C9410091F920F920FB60F9231 -:1045600011248F939F93AF93BF938091F302811196 -:1045700013C08091F4029091F502A091F602B091DF -:10458000F7024196A11DB11D8093F4029093F502AC -:10459000A093F602B093F702BF91AF919F918F91D4 -:1045A0000F900FBE0F901F90189582E084BD93E08E -:1045B00095BD9AEF97BD80936E0008952FB7F8943C -:1045C0008091F4029091F502A091F602B091F70269 -:1045D0002FBF0895CF92DF92EF92FF920F931F9318 -:1045E0002FB7F8944091F4025091F5026091F602D1 -:1045F0007091F7022FBF6A017B01EE24FF248C012A -:1046000020E030E0C016D106E206F30610F4415077 -:1046100051099A01281B390BC9011F910F91FF9075 -:10462000EF90DF90CF9008951F920F920FB60F92E8 -:1046300011248F939F93AF93BF938091F402909135 -:10464000F502A091F602B091F7020196A11DB11DED -:104650008093F4029093F502A093F602B093F702D0 -:10466000BF91AF919F918F910F900FBE0F901F90B0 -:1046700018950E94FD13F8942FEF87EA91E62150D8 -:1046800080409040E1F700C0000087E090EBDC0143 -:1046900080931E0390931F03A0932003B0932103E4 -:1046A0009CE088E10FB6F894A895809360000FBE57 -:1046B00090936000FFCF0E949A23811102C00E9454 -:1046C00076230E94A5238093F2020E94AD2380935B -:1046D0001C0387FB882780F9809316010E94A92379 -:1046E000682F70E080E090E00C94A21F6DEE7EEFEA -:1046F00080E090E00E94C12C60E082E090E00E94A7 -:10470000AF2C60E083E090E00E94AF2C60E084E09A -:1047100090E00E94AF2C60E085E090E00E94AF2C1A -:1047200060E086E090E00E94AF2C6FEF87E090E0C1 -:104730000C94AF2C80E090E00E94A92C21E08D3EEB -:104740009E4F09F020E0822F089582E090E00C94C3 -:10475000A12C83E090E00C94A12C84E090E00C94D8 -:10476000A12C682F84E090E00C94AF2C86E090E0C0 -:104770000C94A12C682F86E090E00C94AF2C87E07D -:1047800090E00C94A12C682F87E090E00C94AF2C63 -:104790008091FA0280FF0BC060911C0185E0689F48 -:1047A000B001112475956795759567952BC081FFAC -:1047B00009C060911C0185E0689FB00111247595C6 -:1047C000679520C082FF07C060911C0185E0689F4B -:1047D000B001112417C09091FB029923D1F0609190 -:1047E0001B01961788F720911C0185E0289F9001F6 -:1047F0001124929FA001939F500D112470E0CA01D3 -:104800000E94872C6038710540F46115710539F0FC -:1048100002C065E070E0862F08958FE7089581E07B -:1048200008958091FA0280FF08C060911A0170E03B -:10483000759567957595679521C081FF06C0609154 -:104840001A0170E07595679519C082FF04C06091E8 -:104850001A0170E010C09091FB029923C1F06091A1 -:1048600019019617A0F780911A01899FC0011124A0 -:1048700070E00E94872C6038710528F4611571057D -:1048800021F0862F08958FE7089581E0089561E073 -:1048900070E0F4CF803F21F40E94C823819504C0CA -:1048A000813F29F40E94C8238093FE020895823F2D -:1048B00021F40E94C823819504C0833F29F40E94FB -:1048C000C8238093FD020895893F19F40E941124A2 -:1048D00005C08A3F31F40E94112481958093FF0224 -:1048E00008958B3F21F40E941124819504C08C3FD0 -:1048F00029F40E941124809300030895843F21F439 -:104900008091FC02816017C0853F21F48091FC02F8 -:10491000826011C0863F21F48091FC0284600BC04C -:10492000873F21F48091FC02886005C0883F31F404 -:104930008091FC0280618093FC0208958D3F21F4F8 -:104940008091FA0281600BC08E3F21F48091FA02BF -:10495000826005C08F3F29F48091FA0284608093C1 -:10496000FA020895803F39F48091FE0287FF6CC0FF -:104970001092FE0269C0813F29F48091FE02181650 -:10498000BCF362C09091FD02823F29F497FF5CC0A6 -:104990001092FD0259C0833F19F41916CCF354C08C -:1049A000893F41F48091FF0218160CF04DC010921F -:1049B000FF024AC08A3F29F48091FF0287FF44C06A -:1049C000F6CF8B3F39F48091000387FF3DC01092F2 -:1049D00000033AC08C3F29F4809100031816BCF301 -:1049E00033C0843F21F48091FC028E7F17C0853F45 -:1049F00021F48091FC028D7F11C0863F21F48091CB -:104A0000FC028B7F0BC0873F21F48091FC02877FE3 -:104A100005C0883F31F48091FC028F7E8093FC02B8 -:104A200013C08D3F21F48091FA028E7F0BC08E3F20 -:104A300021F48091FA028D7F05C08F3F29F4809187 -:104A4000FA028B7F8093FA028091FD0281110EC0E1 -:104A50008091FE0281110AC08091FF02811106C07F -:104A600080910003811102C01092FB0208958CEF27 -:104A700092E00E9417170E94DE229093F902809321 -:104A8000F80208951F93CF93DF938091F8029091DD -:104A9000F9020E94EA22AC019091FB02992321F0D5 -:104AA00020911D0130E006C020911E018AE0289F60 -:104AB000900111244217530708F486C08091FD022B -:104AC000C091FE02D091FF0210910003811107C036 -:104AD000C11176C0D11174C0111172C075C09F3F51 -:104AE00019F09F5F9093FB02181624F40E94C823CC -:104AF0008093FD028091FD0287FF05C00E94C823BC -:104B000081958093FD021C1624F40E94C823809393 -:104B1000FE028091FE0287FF05C00E94C823819596 -:104B20008093FE026091FD02662339F1C091FE027E -:104B3000CC2319F1772767FD7095872F972F0E9457 -:104B4000A92923E333E343E35FE30E94B92A0E94E8 -:104B500076296093FD026C2F772767FD7095872F6C -:104B6000972F0E94A92923E333E343E35FE30E94E5 -:104B7000B92A0E9476296093FE021D1624F40E9431 -:104B800011248093FF028091FF0287FF05C00E94DD -:104B9000112481958093FF02111624F40E941124A0 -:104BA000809300038091000387FF05C00E941124B9 -:104BB000819580930003DF91CF911F910C9437254D -:104BC0009F3F09F08ECF96CFDF91CF911F9108952F -:104BD000ECEFF2E085E0DF011D928A95E9F7109293 -:104BE000FB021092FA020895833081F128F481309B -:104BF00059F08230D1F00895853009F449C0B8F1F8 -:104C0000863009F456C0089580911E01262F30E0A9 -:104C1000280F311D2F3F310524F4680F60931E01CA -:104C200008958FEF80931E01089580911D01262F16 -:104C300030E0280F311D2F3F310524F4680F6093B9 -:104C40001D0108958FEF80931D01089580911C012F -:104C5000262F30E0280F311D2F3F310524F4680F37 -:104C600060931C0108958FEF80931C01089580913B -:104C70001B01262F30E0280F311D2F3F310524F472 -:104C8000680F60931B0108958FEF80931B010895B7 -:104C900080911A01262F30E0280F311D2F3F31055A -:104CA00024F4680F60931A0108958FEF80931A011E -:104CB000089580911901262F30E0280F311D2F3FD4 -:104CC000310524F4680F6093190108958FEF8093E4 -:104CD00019010895833011F128F4813049F08230B0 -:104CE00091F00895853081F120F18630C1F1089569 -:104CF00080911E01681720F4861B80931E01089581 -:104D000010921E01089580911D01681720F4861BE2 -:104D100080931D01089510921D01089580911C013A -:104D2000681720F4861B80931C01089510921C01C3 -:104D3000089580911B01681720F4861B80931B0146 -:104D4000089510921B01089580911A01681720F4AC -:104D5000861B80931A01089510921A01089580917C -:104D60001901681720F4861B809319010895109289 -:104D7000190108950F931F93873208F048C08E31B0 -:104D800008F08DC0803109F477C008F5873009F448 -:104D900061C068F4863009F09DC08091F202817F85 -:104DA0008E7F8093F20281E08093020394C08B3067 -:104DB00009F489C08E3009F08DC08091F20282FB27 -:104DC000222720F991E0922790FB82F95EC086317C -:104DD00009F479C060F4813109F07CC00E94E21BC3 -:104DE0009091160181E08927809316016CC089316A -:104DF00009F469C08B3109F06DC08091F20281FB2A -:104E0000222720F991E0922790FB81F93EC0883358 -:104E100009F459C050F4893209F457C0853309F4B4 -:104E200054C0873209F451C055C0833409F44DC0D1 -:104E300028F48A3308F44EC0895332C0883409F00C -:104E400049C00E94E21B0E94200A0E94E4030E94C3 -:104E5000392339C09091F202892F8095817080FBAF -:104E600090F929F0966098609093F20234C0997F8F -:104E7000977F9093F20227C08091F20283FB222752 -:104E800020F991E0922790FB83F98093F202992315 -:104E9000D1F08091F20281608093F20214C08D51B2 -:104EA00041E050E060E070E08A019B0104C0000F27 -:104EB000111F221F331F8A95D2F7C901B8010E9422 -:104EC000A21F0E94E21B81E006C061E070E080E06A -:104ED00090E0F5CF80E01F910F91089580E0089554 -:104EE00080E00895CF93C82F80910203813069F04C -:104EF00018F08230C9F184C0E0911701F0911801D7 -:104F00008081823209F07EC007C0E0911701F091E4 -:104F100018018081823261F48C2F0E946E278111EA -:104F200004C08C2F0E94BA261DC081E090E01AC0F8 -:104F30008C2F0E947027811114C0C43179F048F47D -:104F4000CB3079F0C03109F061C082E08093020378 -:104F500008C0C93219F0C83321F058C010920203BA -:104F600055C081E0817054C0C93291F120F5C4313F -:104F700079F1B0F4C73009F047C08EE180931E018B -:104F800082E380931D018AE080931C0184E1809379 -:104F90001B0188E080931A0188E28093190134C0D4 -:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 -:104FB0008093010329C0CE34E9F020F4CB3421F5ED -:104FC0006AE013C0C13579F0C235F1F461E00DC07B -:104FD00080910103882319F01092010315C081E02C -:104FE0008093020315C061E006C0809101030E9416 -:104FF000F4250AC06AE0809101030E946A2604C079 -:105000001092020380E004C081E002C080E0AACFD9 -:10501000CF9108950E949A23811102C00E947623A5 -:105020000E94B62380931D0380FF02C0869501C0B5 -:1050300080E00C94F10280911D03982F9695292F02 -:1050400030E0233031054CF49F5F990F8170892B3C -:10505000816080931D030E94BA2380911D03869571 -:105060000C94F10280911D03982F969591F0915820 -:10507000990F8170892B80931D038E7F91E009F435 -:1050800090E080911D0390FB80F980931D030E94A6 -:10509000BA2380911D0386950C94F10280911D0323 -:1050A000982F909590FB80F980931D030E94BA235E -:1050B00080911D0380FF02C0869501C080E00C94A2 -:1050C000F10290911D03892F86958F5F8F779170E4 -:1050D000843028F4880F892B80931D0302C090939D -:1050E0001D0380911D038E7F91E009F490E0809173 -:1050F0001D0390FB80F980931D030E94BA238091C9 -:105100001D0386950C94F10220911D03922F969514 -:105110008927982F990F822F8170892B80931D03E7 -:105120008E7F91E009F490E080911D0390FB80F95F -:1051300080931D030E94BA2380911D0386950C94D1 -:10514000F10280911D03869508955058BB27AA2728 -:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 -:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF -:10517000D3D180F3BA17620773078407950718F035 -:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 -:105190000B01B90190010C01CA01A0011124FF27E4 -:1051A000591B99F0593F50F4503E68F11A16F040DF -:1051B000A22F232F342F4427585FF3CF46953795DE -:1051C0002795A795F0405395C9F77EF41F16BA0BA3 -:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 -:1051E000661F771F881FC2F70EC0BA0F621F731F9A -:1051F000841F48F4879577956795B795F7959E3FF7 -:1052000008F0B3CF9395880F08F09927EE0F979584 -:105210008795089527D108F481E008950CD06BC1DB -:1052200063D140F05AD130F021F45F3F19F03EC114 -:10523000511195C14FC170D198F39923C9F35523EA -:10524000B1F3951B550BBB27AA2762177307840779 -:1052500038F09F5F5F4F220F331F441FAA1FA9F32F -:1052600033D00E2E3AF0E0E830D091505040E69521 -:10527000001CCAF729D0FE2F27D0660F771F881F82 -:10528000BB1F261737074807AB07B0E809F0BB0B71 -:10529000802DBF01FF2793585F4F2AF09E3F510595 -:1052A00068F004C15CC15F3FECF3983EDCF3869587 -:1052B00077956795B795F7959F5FC9F7880F911D0B -:1052C0009695879597F90895E1E0660F771F881FF7 -:1052D000BB1F621773078407BA0720F0621B730BAA -:1052E000840BBA0BEE1F88F7E095089504D06894FC -:1052F000B11135C1089518D188F09F5790F0B92F9A -:105300009927B751A0F0D1F0660F771F881F991F1A -:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF -:1053200008951CC1672F782F8827B85F39F0B93FDF -:10533000CCF3869577956795B395D9F73EF490951C -:105340008095709561957F4F8F4F9F4F0895E8949A -:1053500009C097FB3EF490958095709561957F4FBD -:105360008F4F9F4F9923A9F0F92F96E9BB2793956B -:10537000F695879577956795B795F111F8CFFAF47B -:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC -:1053900016C0882311F096E911C0772321F09EE80A -:1053A000872F762F05C0662371F096E8862F70E070 -:1053B00060E02AF09A95660F771F881FDAF7880F4A -:1053C0009695879597F9089588D018F011F08CD0AC -:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F -:1053E000E7FB6217730784079507A8F199F3E92F84 -:1053F000FF2788232AF03197660F771F881FDAF777 -:10540000952F5527442332F091505040220F331FDF -:10541000441FD2F7BB27E91BF50B621B730B840BF0 -:10542000B109C1F222F4620F731F841FB11D3197BD -:105430002AF0660F771F881FBB1FEFCF9150504097 -:105440005AF041F0882332F0660F771F881F915081 -:105450005040C1F7939530C08695779567959F5FCB -:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 -:1054700016161706E807F907C0F012161306E40718 -:10548000F50798F0621B730B840B950B39F40A2611 -:1054900061F0232B242B252B21F408950A2609F4EF -:1054A000A140A6958FEF811D811D089597F99F67F3 -:1054B00080E870E060E008959F3F31F0915020F463 -:1054C000879577956795B795880F911D96958795E0 -:1054D00097F908959FEF80EC089500240A9416161A -:1054E000170618060906089500240A9412161306D2 -:1054F000140605060895092E0394000C11F4882360 -:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B -:105510007F4F8F4F9F4F089557FD9058440F551F51 -:1055200059F05F3F71F04795880F97FB991F61F025 -:105530009F3F79F087950895121613061406551F9C -:10554000F2CF4695F1DF08C0161617061806991F08 -:10555000F1CF86957105610508940895E894BB27FD -:1055600066277727CB0197F908957CDF08F48FEF42 -:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 -:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF -:10559000D1F3950F50E0551F629FF001729FBB271A -:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 -:1055B0006627B00DA11D661F829F2227B00DA11D79 -:1055C000621F739FB00DA11D621F839FA00D611DFF -:1055D000221F749F3327A00D611D231F849F600D20 -:1055E000211D822F762F6A2F11249F5750408AF059 -:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 -:10560000881F91505040A9F79E3F510570F04ECF32 -:10561000A6CF5F3FECF3983EDCF3869577956795D0 -:10562000B795F795E7959F5FC1F7FE2B880F911D02 -:105630009695879597F90895FA01EE0FFF1F30961A -:105640002105310599F16115710561F48038BFE3D9 -:105650009B0749F168949038810561F08038BFEF6D -:105660009B0741F0992342F5FF3FE10531052105F4 -:1056700011F1E8940894E795D901AA2329F4AB2FF6 -:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F -:10569000F73950F019F0FF3A38F49F779F930CD008 -:1056A0000F9007FC905808953EF014CF60E070E032 -:1056B00080E89FE308954FE79F775F934F933F9371 -:1056C0002F939ED02F913F914F915F9152DF05C054 -:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C -:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C -:1056F0004EDF0F920F920F924DB75EB70F92C0D050 -:10570000EAE0F1E016D04F915F91EF91FF91E595BE -:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD -:10572000FA95E1F74195550B32D00F9007FE26C050 -:105730000895DF93CF931F930F93FF92EF92DF9221 -:105740007B018C01689405C0DA2EEF011EDFFE019B -:10575000E894A5912591359145915591AEF3EF01CE -:1057600006DDFE019701A801DA9479F7DF90EF904A -:10577000FF900F911F91CF91DF9108959B01AC0194 -:1057800060E070E080E89FE349CD90CE95CECCDE1E -:10579000E8F39923D9F3940F511DBBF39150504076 -:1057A00094F059F0882332F0660F771F881F9150CC -:1057B0005040C1F79E3F510544F7880F911D9695C3 -:1057C000879597F908955F3FACF0983E9CF0BB2712 -:1057D000869577956795B79508F4B1609395C1F76D -:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B -:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 -:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD -:105810000F93FF92C92FDD2788232AF02197660F67 -:10582000771F881FDAF720E030E040E85FEB9FE366 -:10583000883920F0803E30F021968F7787DCE2E3D4 -:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 -:10585000EC01FB2E6F5771097595771F880B990B1B -:1058600078DD28E132E741E35FE38FDEAF2D980179 -:10587000AE01FF900F911F91CF91DF9178DC3BCE6D -:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 -:1058900022273327442750781FC0B75188F4AB2FF5 -:1058A0000024469537952795011CA395D2F3002037 -:1058B00069F0220F331F441FB395DAF30DD045CCA6 -:1058C00061307105A0E88A07B94630F49B01AC014C -:1058D0006627772788279078309621F020833183B8 -:1058E000428353830895AA1BBB1B51E107C0AA1F23 -:1058F000BB1FA617B70710F0A61BB70B881F991F71 -:105900005A95A9F780959095BC01CD01089597FB14 -:10591000072E16F4009407D077FD09D00E94732C4F -:1059200007FC05D03EF4909581959F4F08957095A2 -:1059300061957F4F0895EE0FFF1F0590F491E02DC4 -:105940000994F999FECF92BD81BDF89A992780B547 -:105950000895A8E1B0E042E050E00C94C92C262F55 -:10596000F999FECF92BD81BDF89A019700B4021655 -:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 -:1059800008950196272F0E94B02C0C94AF2CDC01B7 -:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A -:1059A000319600B40D9241505040B8F70895F894E4 -:0259B000FFCF27 -:1059B200640007000CFF0000003F64041092106FA7 -:1059C200103B1007100101DF022808140A321E00E2 -:1059D20002040507090B0C0E1011131517181A1CD7 -:1059E2001D1F2123242628292B2D2F303234353711 -:1059F200393B1F0F03764F5F6F7F4969437909591E -:105A020053633149803F5D8B803FF8BF803FCAE1DD -:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE -:105A2200803F3149803F0000803FF16D7F3F75EA42 -:105A32007E3F4C827E3F833F7E3F84287E3F833F72 -:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 -:105A5200803F3F4D3639ED04A0046A043104C4038B -:105A6200DD03F6030F04010203040506070809001B -:00000001FF diff --git a/keyboard/planck/keymaps/default/compiled.hex b/keyboard/planck/keymaps/default/compiled.hex deleted file mode 100644 index a4d69eaa9f..0000000000 --- a/keyboard/planck/keymaps/default/compiled.hex +++ /dev/null @@ -1,1611 +0,0 @@ -:100000000C941D050C9461050C9461050C9461051C -:100010000C9461050C9461050C9461050C946105C8 -:100020000C9461050C9461050C94D2180C94A419DD -:100030000C9406270C9461050C9461050C946105E1 -:100040000C9461050C94C2050C9461050C94610537 -:100050000C9461050C946E270C9461050C94610559 -:100060000C9461050C9461050C9461050C94610578 -:100070000C9461050C9461050C9461050C94610568 -:100080000C94B80E0C9461050C9461050C946105F8 -:100090000C9461050C9461050C9461050C94610548 -:1000A0000C9461050C9461050C9461052A063C06CC -:1000B0005006620671067B06CF06CF06CF06CF0636 -:1000C000CF06CF068906B906CB06111A331A211BB3 -:1000D000331A211B781A9B1A211BF01A031BED1DE2 -:1000E000ED1D1C1E1C1E5B1E7B1ED11FD11F861EFC -:1000F000D11F361F361F9D1FA61FD11FCB1F431FA9 -:10010000431F431F431F431F431F431F431F431FDF -:10011000431F431F431F431F431F431F431F531FBF -:10012000611F681F6F1F791F07634236B79BD8A7EF -:100130001A39685618AEBAAB558C1D3CB7CC57630C -:10014000BD6DEDFD753EF6177231BF000000803FBA -:1001500008000000BE922449123EABAAAA2ABECDD6 -:10016000CCCC4C3E00000080BEABAAAAAA3E000048 -:100170000000BF000000803F000000000008417840 -:10018000D3BB4387D1133D190E3CC3BD4282AD2B77 -:100190003E68EC8276BED98FE1A93E4C80EFFFBE6F -:1001A00001C4FF7F3F0000000000000000000000CD -:1001B0000000000000010204060A0F17202C3A4A32 -:1001C0005D71879DB3C7DAE9F5FCFFFCF5E9DAC795 -:1001D000B39D87715D4A3A2C20170F0A060402016D -:1001E00000000000000000000000010801150109E6 -:1001F00001190112010F0208021502090219021267 -:10020000020F002B0014001A000800150017001C34 -:100210000018000C00120013002A00290004001628 -:1002200000070009000A000B000D000E000F00334C -:10023000003400E1001D001B00060019000500113C -:1002400000100036003700380028000530E000E2DA -:1002500000E30003302C002C000430500051005209 -:10026000004F002B0014001A00090013000A000DB3 -:10027000000F0018001C0033002A0029000400159C -:10028000001600170007000B00110008000C0012F8 -:10029000003400E1001D001B000600190005000EDF -:1002A00000100036003700380028000530E000E27A -:1002B00000E30003302C002C0004305000510052A9 -:1002C000004F002B0034003600370013001C0009DB -:1002D000000A00060015000F002A00290004001281 -:1002E00000080018000C0007000B00170011001692 -:1002F000003800E100330014000D000E001B000563 -:100300000010001A0019001D0028000530E000E26E -:1003100000E30003302C002C000430500051005248 -:10032000004F0035021E021F02200221022202237A -:100330000224022502260227022A004C003A003B32 -:10034000003C003D003E003F002D022E022F0230F7 -:1003500002310201004000410042004300440045D8 -:1003600000320264020100010001000100010001ED -:100370000001000100010001000100AB00AA00A97A -:1003800000AE0035001E001F0020002100220023C7 -:100390000024002500260027002A004C003A003BDC -:1003A000003C003D003E003F002D002E002F00309D -:1003B000003100010040004100420043004400457C -:1003C0000032006400010001000100010001000191 -:1003D0000001000100010001000100AB00AA00A91A -:1003E00000AE001E001E001E001E001E001E001E8D -:1003F000001E001E001E001E001E00000014001A39 -:10040000000800150017001C0018000C0012001353 -:10041000002F000E3004001600070009000A000B30 -:10042000000D000E000F00330034000D30000000FE -:10043000000600190000000000110010000000007C -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:100800000000000100005001000100010001000192 -:100810000001000100010001004C00010001000185 -:100820000020502150135012500030013002300C83 -:100830003001000100275026502350245028502911 -:100840005001000100010001000100010001000150 -:100850000001000100010001000100010001000190 -:100860000001002803540068006500200050006C5F -:100870000061006E0063006B0020004B0065007992 -:100880000062006F0061007200640000002C034FE2 -:10089000007200740068006F006C0069006E0065F3 -:1008A000006100720020004B006500790062006F5B -:1008B0000061007200640073000000040309040971 -:1008C000026D00040100A0FA090400000103010107 -:1008D00000092111010001224000070581030800E1 -:1008E0000A090401000103010200092111010001AC -:1008F000224D000705820308000A090402000103D3 -:1009000000000009211101000122360007058303C0 -:1009100008000A0904030001030000000921110175 -:1009200000012239000705840310000112011001A3 -:1009300000000008EDFE60600100010200010501F9 -:100940000906A101050719E029E715002501950809 -:1009500075018102050819012905950575019102A6 -:1009600095017503910105071900297715002501E7 -:10097000957875018102C005010980A101850216E3 -:10098000010026B7001A01002AB7007510950181F1 -:1009900000C0050C0901A1018503160100269C0277 -:1009A0001A01002A9C02751095018100C0050109F9 -:1009B00002A1010901A10005091901290515002558 -:1009C00001950575018102950175038101050109F4 -:1009D0003009311581257F95027508810609381582 -:1009E00081257F950175088106050C0A380215815D -:1009F000257F950175088106C0C005010906A10182 -:100A0000050719E029E71500250195087501810200 -:100A100095017508810105081901290595057501DC -:100A200091029501750391010507190029FF150031 -:100A300026FF00950675088100C011241FBECFEF68 -:100A4000DAE0DEBFCDBF04B603FE24C080918E0481 -:100A500090918F04A0919004B09191048730904BB5 -:100A6000A740B04BB9F410928E0410928F041092EC -:100A700090041092910414BE84B7877F84BF88E1EC -:100A80000FB6F89480936000109260000FBEE0E013 -:100A9000F8E3099513E0A0E0B1E0E0E7F2E602C078 -:100AA00005900D92A033B107D9F714E0A0E3B3E0AD -:100AB00001C01D92AE38B107E1F70E941C160C94DC -:100AC00036310C940000089581E0089508950C9447 -:100AD00063050C9464050C9466050E94002D23E0C8 -:100AE00030E0281B3109220F209334030895282F6A -:100AF0002F9880918000211108C0877F809380000B -:100B000010928D0010928C001BC088608093800032 -:100B1000233019F48FEF9FEF0FC083E090E0821B2A -:100B20009109880F991F2FEF3FEFA90102C0569539 -:100B300047958A95E2F7CA0190938D0080938C00C7 -:100B40000C946D050E946D0584E080933303109230 -:100B500030030895279A2F988FEF9FEF9093870087 -:100B6000809386008AE08093800089E180938100F1 -:100B70000E94692C0C94A2050E94AA056E9A769A8E -:100B80000C94EF061F920F920FB60F9211242F9321 -:100B90003F938F939F93EF93FF93E0913103F091F5 -:100BA0003203CF010196909332038093310300907A -:100BB000330302C0F695E7950A94E2F7EF7380914C -:100BC0003003823019F4E03251F404C0813039F43A -:100BD000EF3329F480916F008D7F80936F00F0E0F8 -:100BE000E655FE4FE49121E031E0E29FC001E39F32 -:100BF000900D11240090340302C0969587950A94B5 -:100C0000E2F790938D0080938C00FF91EF919F917C -:100C10008F913F912F910F900FBE0F901F901895BD -:100C2000CF93DF93EC010E940728BE0180E090E0A3 -:100C3000DF91CF910C94FC230F931F93462F50E02C -:100C40004F30510508F0ABC0DC01FA01EA5AFF4F02 -:100C50000C94FA3012968C91882309F4A0C000E01D -:100C600010E0980140E064E070E088E292E00E94C9 -:100C7000361281E090E011C012968C91882309F41D -:100C80008EC000E010E0980140E066E070E088EB84 -:100C900091E00E94361282E090E00E9410067FC030 -:100CA00012968C91882309F47AC000E010E0980134 -:100CB00040E068E070E088EE91E00E94361284E047 -:100CC00090E0EBCF12968C91882311F083E00EC058 -:100CD00083E00E949A2440E164E083E00E949B0C40 -:100CE0005EC012968C91882321F084E00E947924C2 -:100CF000F2CF84E0EECF12968C91882331F085EE0E -:100D00000E94911C0E94C02C4AC085EE0E94591D71 -:100D100046C012968C91882309F441C00E94EB0DC5 -:100D200000E010E0980140E066E070E088E891E0C3 -:100D30000E94361284E00E949A2483E00E949A2442 -:100D400080E10E949A2485E00E9479240E94F42781 -:100D5000811102C00E94D0270E940C2890E090933D -:100D60008D0480938C04806880938C040E941028EA -:100D700016C012968C91882391F000E010E0980143 -:100D800040E066E070E088E591E00E94361285E080 -:100D90000E949A2404C012968C91811103C080E0B5 -:100DA00090E002C08AEE91E01F910F9108950F9399 -:100DB0001F932FEF89EF90E0215080409040E1F7A2 -:100DC00000C0000000E010E0980140E065E070E045 -:100DD00088E492E00E9436121F910F9108950C94BE -:100DE000D7060F931F9300E010E0980140E063E006 -:100DF00070E080E091E00E9436122FEF82E597E0EC -:100E0000215080409040E1F700C000001F910F91F9 -:100E10000C94EB0D0F931F9300E010E0980140E05D -:100E200068E070E088E191E00E9436121F910F9116 -:100E300008950C940A0781E008950C941B07089507 -:100E40000C94BC0580918503882309F448C08091E7 -:100E5000410390914203009779F40E9438279093C0 -:100E60004203809341038091430390E0009771F423 -:100E70008091440390E00AC00E94442720917002B0 -:100E8000309171022817390740F329C00197880F64 -:100E9000991F880F991FFC01EB5BFC4F60817181EA -:100EA000828193810E941E0EE091430384E0E89FBB -:100EB000F0011124EB5BFC4F608171818281938191 -:100EC0004FE050E00E94D6118091430390E00196DC -:100ED0006091440370E00E94E630809343030C94D9 -:100EE0006705109287030C94EB0D81E080938703D4 -:100EF0000C94190708958F929F92AF92BF92EF9230 -:100F0000FF920F931F93CF93DF93CDB7DEB7A397D5 -:100F10000FB6F894DEBF0FBECDBF7C01FC0100818F -:100F20001181C8010E943525B8010E947D098C01FC -:100F3000B7010E941D07882309F4CCC10032F0E5F7 -:100F40001F0741F4F7018281882309F458C00E94E9 -:100F5000CD12C0C10132F0E51F0741F4F7018281D3 -:100F6000882309F44CC00E94D612B4C10232F0E5C5 -:100F70001F0751F4F7018281882309F440C00E94C1 -:100F8000C9128111F0CFE3CF0332F0E51F0739F426 -:100F9000F7018281882399F10E9475079BC1043271 -:100FA000F0E51F0739F4F7018281882341F10E949F -:100FB000710790C10532F0E51F0749F4F7018281FE -:100FC0008823E9F0809187038111F1CFE5CF0632C4 -:100FD000F0E51F0739F4F7018281882381F00E9430 -:100FE000DD120AC00732F0E51F0749F4F7018281DC -:100FF000882329F00E94E8120E940A076BC18091A1 -:101000008703811105C0F70182818111CFC018C10A -:10101000003E110579F4F7018281882309F44DC05F -:101020000E94EB0D81E0809386031092850310925D -:10103000440350C1023E110559F4F701828188230F -:10104000E1F10E94EB0D109286031092850342C1DC -:10105000033E110591F4F7018281882371F10E940A -:10106000EB0D1092860381E0809385031092430379 -:1010700010924203109241032DC10235110559F41B -:10108000F7018281882309F425C180917002909133 -:1010900071020A970DC00135110579F4F7018281BB -:1010A000882309F417C180917002909171020A9609 -:1010B00090937102809370020DC14091740283E29B -:1010C000EFE8F2E0DE01119601900D928A95E1F7CA -:1010D000F701808121E030E02C0F3D1F280F311DEA -:1010E000C9012091720230917302FC01E20FF31FDB -:1010F0006081772767FD7095640F711D882777FDE4 -:101100008095982F0E94082E20E030E040E451E4C2 -:101110000E946D2D4B015C01F701218184E090E07C -:10112000821B9109BC01882777FD8095982F0E942A -:10113000082E9B01AC01C501B4010E94052D9B0145 -:10114000AC0160E070E080E090E40E947B2F20E042 -:1011500030E04CED50E40E94182F4B015C01F70188 -:1011600082818823D1F04FE050E0C501B4010E9494 -:10117000D611809186038823A1F08091440324E056 -:10118000829FF0011124EB5BFC4F80829182A2824E -:10119000B3828F5F8093440304C0C501B4010E94F1 -:1011A0001E0E0F3F110508F02ECF94C08091400312 -:1011B00081111FC0043130E5130709F051C00E94AE -:1011C0001F0781E0809340030E94382790933F03DC -:1011D00080933E0310923703109239031092380324 -:1011E00010923B0310923A0310923D0310923C037D -:1011F00071C080913E0390913F030E944427883C38 -:10120000910570F480913703E82FF0E0EE0FFF1F97 -:10121000E85CFC4F118300838F5F809337035AC0D3 -:10122000043880E5180721F00538104501F13AC06F -:10123000F7018281882341F01092350382E01EC0BD -:10124000043830E5130759F580913503811106C044 -:1012500086E20E94911C86E20E94591D82E01CC019 -:101260000438F0E51F0741F305381045D9F4F701BC -:101270008281882331F01092360380E20E94A81DFB -:1012800029C080913603811106C087E20E94911C1B -:1012900087E20E94591D80E20E94AF1D1BC00538E5 -:1012A000104529F381E08093350380933603C7010D -:1012B000A3960FB6F894DEBF0FBECDBFDF91CF91DE -:1012C0001F910F91FF90EF90BF90AF909F908F90E4 -:1012D0000C94690580E0A3960FB6F894DEBF0FBEAC -:1012E000CDBFDF91CF911F910F91FF90EF90BF90F5 -:1012F000AF909F908F90089508959CE0799FF001A2 -:10130000112490E3899FE00DF11D1124E60FF11DDA -:10131000EE0FFF1FED5FFD4F859194910895880FAB -:10132000991FFC01ED57FF4F859194910895880F07 -:10133000991FFC01ED5FFD4F8591949108950F93E6 -:101340001F93CF93DF93EC01811521E39207A0F562 -:10135000C11580E3D80708F0D7C0C83ED105D8F43E -:10136000C03ED10508F007C2C83AD10578F4C53AA5 -:10137000D10508F06AC0C130D10509F463C008F492 -:10138000F7C1C430D10508F0F6C1F2C1CB3BD1059D -:1013900008F466C0EDC1C11590E2D90708F0AFC0EE -:1013A000C11521E0D20708F0E6C1C03FD10508F41D -:1013B000DFC18E0110651FC2C03880E5D80700F577 -:1013C000C03790E5D90708F0A3C0C11520E5D207C2 -:1013D00009F4ACC050F4CE01905480319F4008F025 -:1013E000C7C1DF708E01106A06C2C13080E5D80720 -:1013F00009F4AEC0C43190E5D90708F4AFC0B8C154 -:10140000C33820E5D20709F48EC050F4C13890E506 -:10141000D90709F482C008F083C000E011EDEBC1E8 -:10142000C03181E5D80708F4A3C1C11597E5D907F4 -:1014300008F436C1CE0190578115904108F098C14B -:10144000DF7093C101E010E0D6C1C53AD10509F4BF -:1014500094C1C63AD10509F093C102E810E4CBC1AA -:10146000C83AD10509F48FC1C93AD10509F48EC132 -:10147000CA3AD10509F48DC1CB3AD10509F48CC122 -:10148000CC3AD10509F48BC1CD3AD10509F48AC112 -:10149000C03BD10509F489C1CE3AD10509F488C110 -:1014A000CF3AD10509F487C1C13BD10509F486C102 -:1014B000C23BD10509F485C1C33BD10509F484C100 -:1014C000C43BD10509F483C1C53BD10509F482C1F0 -:1014D000C63BD10509F481C1C73BD10509F480C1E0 -:1014E000C83BD10509F47FC1C93BD10509F47EC1D0 -:1014F000CA3BD10509F47DC100E014E47CC1CE01F2 -:101500009F700E94970978C1DD278E01106C73C10E -:10151000CF70DD278E01146D6EC100E010ED6BC140 -:1015200000E012ED68C100E013ED65C10E943C20AF -:101530000E94EB0D0E94F1068FEF94E32CE08150A6 -:1015400090402040E1F700C000000E94932753C163 -:10155000809162048160809362044DC10E94F427EF -:10156000811102C00E94D0270E940C2890E0909325 -:101570008D0480938C04C23080E5D80721F48091DB -:101580008C04816086C0C43090E5D90721F4809135 -:101590008C0482607EC0C63020E5D20721F48091A1 -:1015A0008C04846076C0C83080E5D80719F4809137 -:1015B0008C0427C0CA3090E5D90721F480918C04AF -:1015C000806167C0CC3020E5D20721F480918C0483 -:1015D00080625FC0CE3080E5D80721F480918C0412 -:1015E000806457C0C03190E5D90721F480918C0404 -:1015F00080684FC0C23120E5D20729F480918C0465 -:101600008460886046C0C33080E5D80721F48091AB -:101610008C048E7F3EC0C53090E5D90721F48091BF -:101620008C048D7F36C0C73020E5D20721F480912D -:101630008C048B7F2EC0C93080E5D80719F48091C7 -:101640008C0426C0CB3090E5D90721F480918C041E -:101650008F7E1FC0CD3020E5D20721F480918C040D -:101660008F7D17C0CF3080E5D80721F480918C049E -:101670008F7B0FC0C13190E5D90721F480918C0494 -:101680008F7707C0C331D04531F480918C048B7FB4 -:10169000877F80938C0480918C040E941028ABC0BB -:1016A0008D2F99278F70992781309105D9F49E014C -:1016B0002370332702C0880F991F2A95E2F79C6890 -:1016C0008E0144E0000F111F4A95E1F700271370C7 -:1016D000802B912B53E0CC0FDD1F5A95E1F7C0769C -:1016E000DD272FC08230910531F4DC2FCC278E010D -:1016F000016F106A80C08330910569F4CE01837058 -:10170000992701E010E002C0000F111F8A95E2F74F -:10171000C8019C680FC084309105B9F4CE01837074 -:10172000992701E010E002C0000F111F8A95E2F72F -:10173000C8019A6823E0CC0FDD1F2A95E1F7C07E2F -:10174000D7708C010C2B1D2B56C08530910531F4C0 -:10175000DC2FCC278E01046F106A4DC0069709F06C -:101760004AC0CF71DD27DC2FCC278E01106243C029 -:1017700000E010E040C08E013EC001E810E43BC034 -:1017800003E810E438C002EE14E435C009EE14E4B6 -:1017900032C00AEE14E42FC005EB14E42CC006EBB3 -:1017A00014E429C007EB14E426C00CEC14E423C0B5 -:1017B0000DEC14E420C003E815E41DC00AE815E4AC -:1017C0001AC002E915E417C004E915E414C001E2E7 -:1017D00016E411C003E216E40EC004E216E40BC0E6 -:1017E00005E216E408C006E216E405C007E216E4C6 -:1017F00002C00AE216E4C801DF91CF911F910F9158 -:1018000008959CE0799FF001112490E3899FE00DF9 -:10181000F11D1124E60FF11DEE0FFF1FED5FFD4FCF -:1018200085919491803E9105E0F4803C910558F5B6 -:101830008133910509F46FC048F48932910509F4A8 -:1018400063C08A32910509F46DC072C08933910575 -:10185000E9F082389105D1F08533910509F44DC046 -:1018600067C0833E910581F138F4803E9105B9F05F -:10187000823E9105D9F05CC0863E910561F1873EBC -:101880009105A1F155C00E948F09089520918C0403 -:1018900020FD02C021FF4CC080EE90E049C0809145 -:1018A0008C0480FFF9CF89E390E042C080918C04E2 -:1018B00082FF0EC080918C0484FF03C080E090E022 -:1018C00037C083EE90E034C080918C0482FFF2CF69 -:1018D00082EE90E02DC080918C0483FF0BC080913C -:1018E0008C0484FDEBCF87EE90E022C080918C04C5 -:1018F00083FFF5CF86EE90E01BC080918C0485FFBE -:1019000007C089E290E014C080918C0485FFF9CF74 -:1019100085E390E00DC080918C0486FF07C08AE2C9 -:1019200090E006C080918C0486FFF9CF81E390E0BF -:101930000E949F090895CF92DF92EF92FF920F933A -:101940001F9301E010E020E030E06801790104C05D -:10195000CC0CDD1CEE1CFF1C8A95D2F704C0000FD6 -:10196000111F221F331F6A95D2F70C291D292E291A -:101970003F29C0904504D0904604E0904704F09081 -:101980004804C022D122E222F322842FC016D106BD -:10199000E206F30641F41F910F91FF90EF90DF9064 -:1019A000CF900C9479241F910F91FF90EF90DF90CE -:1019B000CF900C949A240C946B05E82FF0E0E2543D -:1019C000FD4F8081E82FEF70F0E082958F7021E06D -:1019D00030E0A90102C0440F551F8A95E2F740A3E9 -:1019E00008950F931F93CF93DF9385B7806885BFCA -:1019F00085B7806885BFC3E0D0E001E010E0FE015C -:101A0000E254FD4F8081E82FEF70F0E021A1829534 -:101A10008F70A80102C0440F551F8A95E2F7CA01D2 -:101A2000822B81A38C2F0E94DD0C219740F78BE045 -:101A300090E061E070E0FC01EE54FD4F2081E22F68 -:101A4000EF70F0E042A122952F70DB0102C0AA0FD7 -:101A5000BB1F2A95E2F79D01242B22A3019758F77B -:101A6000DF91CF911F910F910C942007EF92FF927D -:101A70000F931F93CF93DF9300E913E0C3E0EE24AD -:101A8000E394F12CD5E08C2F0E94DD0C8BE090E0EC -:101A900040E050E0FC01EE54FD4F6081E62FEF7016 -:101AA000F0E020A130E062956F7002C03595279577 -:101AB0006A95E2F720FD09C09701082E02C0220FA7 -:101AC000331F0A94E2F7422B532B019718F7F801C2 -:101AD000929182918F018417950721F05183408361 -:101AE000D09375028C2F0E94DD0CC15060F680915E -:101AF000750287FD2CC08150809375028F3F39F0AD -:101B00008FE99FE00197F1F700C0000020C08091AD -:101B10008E0390918F039093970380939603809107 -:101B20008C0390918D0390939503809394038091FF -:101B30008A0390918B0390939303809392038091F7 -:101B400088039091890390939103809390030E945E -:101B5000220781E0DF91CF911F910F91FF90EF90CD -:101B60000895E82FF0E0EE0FFF1FE057FC4F808153 -:101B70009181089508950F931F93CF9308E913E07F -:101B8000C0E0F801929182918F010E94B026C80FA7 -:101B9000F3E000391F07A9F78C2FCF911F910F9108 -:101BA00008950E94F427811102C00E94D0270E944C -:101BB0001E28809377043E9A809171008D7F8093D8 -:101BC000710082E0809390008AE18093910081E02F -:101BD00080939A03089580919A03811102C00E9414 -:101BE000D10D1092EA031092E903809171008D7F6C -:101BF00080937100809190008F7380939000109279 -:101C0000AC031092AB031092E3031092E403109222 -:101C1000E5031092E6031092E2031092E103E1EC77 -:101C2000F3E0A1EBB3E011921192119211921D9287 -:101C30001D9283E0E13EF807B1F70895CF92DF925D -:101C4000EF92FF920F931F93CF93DF932091AB03FB -:101C5000222309F484C06B017C0180919A038111D5 -:101C600002C00E94D10D01EE13E0C7E0D0E0A70151 -:101C70009601F80192918291729162918F010E9476 -:101C8000692D811131C0FE01EE0FFF1FEE0FFF1F06 -:101C9000EF53FC4F1082118212821382DE01AA0FD1 -:101CA000BB1FAF54BC4F11961C921E92C730D1057A -:101CB000E9F0219644815581668177814083518383 -:101CC00062837383148215821682178212968D9115 -:101CD0009C91139711969C938E9313961C921E922F -:101CE000129734961296E2CF219708F68091E90375 -:101CF0009091EA03019797FD05C09093EA038093C2 -:101D0000E90304C01092EA031092E9038091E90309 -:101D10009091EA032091E7033091E80328173907EF -:101D200024F01092E8031092E703892BC1F480910C -:101D300071008D7F80937100809190008F738093EC -:101D400090001092E3031092E4031092E5031092C6 -:101D5000E6031092E2031092E1031092AB03DF91CD -:101D6000CF911F910F91FF90EF90DF90CF9008954A -:101D70001F920F920FB60F9211244F925F926F92A3 -:101D80007F928F929F92AF92BF92CF92DF92EF920B -:101D9000FF922F933F934F935F936F937F938F9314 -:101DA0009F93AF93BF93CF93DF93EF93FF93809174 -:101DB000AB03882309F49BC1C091E903D091EA03E6 -:101DC0001C161D060CF093C140909B0350909C0381 -:101DD00060909D0370909E0320E030E0A901C30154 -:101DE000B2010E94142F18160CF065C0C130D10545 -:101DF00009F452C08091E7039091E803BE010E946C -:101E0000E6307C019093E8038093E7038090AD0374 -:101E10009090AE03A090AF03B090B00320E030E00C -:101E200040E85FE3C501B4010E94052D6093AD0356 -:101E30007093AE038093AF039093B003F701EE0F5E -:101E4000FF1FEE0FFF1FEF53FC4FA30192016081B4 -:101E50007181828193810E946D2D20E030E040E00D -:101E60005EE30E94182F9B01AC01C501B4010E94E2 -:101E7000142F18168CF4C7010196BE010E94E6309B -:101E80009093E8038093E7031092AD031092AE03A2 -:101E90001092AF031092B003E091E703F091E803D2 -:101EA000EE0FFF1FEE0FFF1FEF53FC4F608171819C -:101EB00082819381D0C0C090E303D090E403E0908E -:101EC000E503F090E60320E030E0A901C701B60188 -:101ED0000E94692D2197882309F4A2C0FE01EE0F0C -:101EE000FF1FEE0FFF1FEF53FC4F80809180A280F9 -:101EF000B380A5019401C701B6010E94692D87FF37 -:101F000031C0A501940160E070E08CED93EC0E947B -:101F10006D2D20E030E040E451E40E946D2D20E082 -:101F200030E040E05FE30E94182F9B01AC0160E0CD -:101F300070E080E090E40E947B2F9B01AC01C50122 -:101F4000B4010E94182F9B01AC01C701B6010E9489 -:101F5000692D87FF07C0A701960160E070E08CED56 -:101F600093E439C0A5019401C701B6010E94142F62 -:101F700018160CF055C0A501940160E070E08CEDDE -:101F800093E40E946D2D20E030E040E451E40E9493 -:101F90006D2D20E030E040E05FE30E94182F9B01B0 -:101FA000AC0160E070E080E090E40E947B2F9B0138 -:101FB000AC01C501B4010E94182F9B01AC01C701FF -:101FC000B6010E94142F18165CF5A701960160E077 -:101FD00070E08CED93EC0E946D2D20E030E040E449 -:101FE00051E40E946D2D20E030E040E05FE30E946C -:101FF000182F9B01AC0160E070E080E090E40E944B -:102000007B2F9B01AC01C701B6010E94182F609382 -:10201000E3037093E4038093E5039093E60313C016 -:10202000FE01EE0FFF1FEE0FFF1FEF53FC4F8081ED -:102030009181A281B3818093E3039093E403A09301 -:10204000E503B093E6036091E3037091E4038091AC -:10205000E5039091E60320919803309199032F3F77 -:102060004FEF340731F02F5F3F4F309399032093A8 -:1020700098030E94F3126B017C0120E034E244EFEC -:1020800051E40E94692D87FF08C086EFC82E88E2C0 -:10209000D82E84EFE82E81E4F82E20E030E040E0F6 -:1020A00051E4C701B6010E94182F9B01AC0160E00A -:1020B00074E284E79BE40E946D2D6B017C010E9419 -:1020C000DA2D7093970060939600209176023091FC -:1020D00077024091780250917902C701B6010E94BF -:1020E000182F0E94DA2D70939900609398008091C8 -:1020F000AC03882309F433C1C090A703D090A80390 -:10210000E090A903F090AA0320E030E0A901C70104 -:10211000B6010E94142F1816D4F58091980390915F -:1021200099038F3F2FEF920729F00196909399031F -:1021300080939803C701B6010E94F31220E030E0BB -:1021400040E051E40E94182F9B01AC0160E074E272 -:1021500084E79BE40E946D2D6B017C010E94DA2DC7 -:1021600070939700609396002091760230917702E9 -:102170004091780250917902C701B6010E94182F50 -:102180000E94DA2D709399006093980008C0109215 -:10219000970010929600109299001092980060910A -:1021A000A1037091A2036F5F7F4F7093A2036093AE -:1021B000A103209196003091970080E090E0232BBE -:1021C000F1F0C0919600D09197000E94062E6B010D -:1021D0007C01BE0180E090E00E94062E9B01AC01D4 -:1021E0006091A3037091A4038091A5039091A6032D -:1021F0000E946D2D20E03FEF4FE757E410C00E9492 -:10220000062E6B017C0120E030EE4FEF54E460912C -:10221000A3037091A4038091A5039091A6030E944B -:10222000182F9B01AC01C701B6010E94142F87FD36 -:1022300096C080919F038F5F80939F0390E02091D1 -:1022400073043091740482179307A0F080917E0488 -:10225000882319F010929F030DC0809171008D7F2B -:1022600080937100809190008F7380939000109202 -:10227000AC037DC08091A003C0919F03811128C051 -:10228000C0907804D0907904E0907A04F0907B04B8 -:1022900020E030E0A901C701B6010E94142F1816F2 -:1022A000BCF481E08093A0031092A7031092A803CE -:1022B0001092A9031092AA03C092A303D092A40380 -:1022C000E092A503F092A603C150C0939F0343C0C0 -:1022D0001092A0031092990310929803E091750454 -:1022E000F091760448E0C49FE00DF11D1124808137 -:1022F0009181A281B3818093A7039093A803A093B7 -:10230000A903B093AA0320E030E040E85EE36481D3 -:102310007581868197810E94182F6B017C018091C5 -:102320007A02682F70E080E090E00E94062E20E0A4 -:1023300030E048EC52E40E946D2D9B01AC01C701D6 -:10234000B6010E94182F6093A3037093A403809397 -:10235000A5039093A6031092A2031092A10380916B -:10236000770480FD04C01092AC031092AB03FF9180 -:10237000EF91DF91CF91BF91AF919F918F917F911D -:102380006F915F914F913F912F91FF90EF90DF9070 -:10239000CF90BF90AF909F908F907F906F905F9005 -:1023A0004F900F900FBE0F901F901895CF92DF9215 -:1023B000EF92FF92CF93DF936B017C01EA01809152 -:1023C0009A03811102C00E94D10D8091770480FF91 -:1023D00046C08091E9039091EA0308970CF03FC052 -:1023E000809171008D7F809371008091AC03811189 -:1023F0000E94EB0D81E08093AB0310929903109241 -:10240000980320E030E0A901C701B6010E94142F13 -:102410001816DCF48091E9039091EA03FC01EE0FB9 -:10242000FF1FEE0FFF1FEF53FC4FC082D182E282ED -:10243000F382FC01EE0FFF1FEF54FC4FD183C083EA -:1024400001969093EA038093E90380917100826082 -:102450008093710080919000806880939000DF915C -:10246000CF91FF90EF90DF90CF9008958F929F9241 -:10247000AF92BF92CF92DF92EF92FF920F931F9392 -:10248000CF93DF93EC017B01D42E48015901809159 -:102490009A03811102C00E94D10D8091770480FFC0 -:1024A0006BC0809171008D7F809371008091AB0330 -:1024B00081110E94EB0D81E08093AC03D0937604F0 -:1024C000C0937504F0927404E0927304D0927E0479 -:1024D0008092780490927904A0927A04B0927B045E -:1024E0001092AD031092AE031092AF031092B0039E -:1024F00010929F0388819981AA81BB818093A70351 -:102500009093A803A093A903B093AA0320E030E01E -:1025100040E85EE36C817D818E819F810E94182F4F -:102520006B017C0180917A02682F70E080E090E07E -:102530000E94062E20E030E048EC52E40E946D2D0F -:102540009B01AC01C701B6010E94182F6093A30341 -:102550007093A4038093A5039093A6031092A20303 -:102560001092A1038091710082608093710080912C -:102570009000806880939000DF91CF911F910F9120 -:10258000FF90EF90DF90CF90BF90AF909F908F9093 -:102590000895809177048170089580917704816017 -:1025A000809377040E9422280C947A078091770404 -:1025B0008E7F809377040C9422288091EB0390E027 -:1025C000019666E070E00E94E6308093EB03089588 -:1025D0008091EB0390E0019766E070E00E94E630A6 -:1025E0008093EB0308958F929F92AF92BF92CF9208 -:1025F000DF92EF92FF920F931F93CF93DF936B01C4 -:102600007C01C0919803D0919903BE0180E090E0D5 -:102610000E94062E4B015C01A701960160E070E06C -:102620008CE594E40E946D2D9B01AC01C501B401C1 -:102630000E94182F0E94DA2D2091EB03233009F419 -:1026400073C028F4222351F02130E9F02CC124304A -:1026500009F4A0C0253009F4E0C025C180E090E075 -:10266000A0E0BFE38093760290937702A093780274 -:10267000B093790210929B0310929C0310929D03D9 -:1026800010929E0310C110929B0310929C03109213 -:102690009D0310929E036431710540F46A30710508 -:1026A00060F520E030E040E85EE32BC0693C710556 -:1026B00008F0AAC080E090E00E94062E20E030E002 -:1026C00040EA51E40E94042D20E030E044E353E46A -:1026D0000E946D2D9B01AC010E94182F20E030E07C -:1026E00040E05EE30E94182F9B01AC0160E070E0C7 -:1026F00080E09EE30E94042D44C020E030E040E0F2 -:102700005FE3C701B6010E94182F6B017C0180E0D6 -:1027100090E0A0E0BEE38093760290937702A093CE -:102720007802B0937902BFC010929B0310929C0371 -:1027300010929D0310929E034AE0469F9001479F8E -:10274000300D1124C90168EB7BE00E94D230BC013E -:102750006C5D754077FF03C071956195710988279D -:1027600077FD8095982F0E94082E2EE333EC4EE2E1 -:1027700059E30E94182F20E030E040EC5EE30E9415 -:10278000052D609376027093770280937802909380 -:10279000790289C010929B0310929C0310929D03B2 -:1027A00010929E03CE0183709927892BE1F0BE0120 -:1027B0006170772780E090E00E94062E20E030E0F4 -:1027C00040E05EE30E94182F20E030E040E45FE349 -:1027D0000E94052D609376027093770280937802B1 -:1027E000909379020CC080E090E0A0E0BFE380937A -:1027F000760290937702A0937802B0937902C77023 -:10280000DD27CD2B09F04FC010927602109277028F -:10281000109278021092790246C010929B03109297 -:102820009C0310929D0310929E0300E010E020E0B4 -:102830003FE300937602109377022093780230935F -:1028400079026739710578F180E090E00E94062EE8 -:1028500020E030E047E153E40E94042D20E030E026 -:102860004AE754E40E946D2D20E030E048E452E451 -:102870000E94182F20E030E040EA51E40E944A2EE6 -:102880000E94D52D660F771F660F771FFB01EE5351 -:10289000FD4F2081318142815381C701B6010E94E1 -:1028A000182F6B017C01C701B601DF91CF911F91F9 -:1028B0000F91FF90EF90DF90CF90BF90AF909F90DF -:1028C0008F9008958091FC030895CF93DF9300D0FB -:1028D0001F92CDB7DEB79C0180918304843019F537 -:1028E00093E099833B832A839093E9008FEF909143 -:1028F000E800815095FD06C095ED9A95F1F700002E -:102900008111F5CF8091E80085FF0DC040E050E0D7 -:1029100063E070E0CE0101960E94C2168091E8004B -:102920008E778093E8000F900F900F90DF91CF91FA -:102930000895CF93DF9300D01F92CDB7DEB72091DB -:102940008304243021F522E029839B838A8383E05A -:102950008093E9008FEF9091E800815095FD06C0CB -:1029600095ED9A95F1F700008111F5CF8091E8007F -:1029700085FF0DC040E050E063E070E0CE010196BD -:102980000E94C2168091E8008E778093E8000F9035 -:102990000F900F90DF91CF91089520918304243000 -:1029A000F1F422E02093E9002FEF3091E80021506C -:1029B00035FD06C035ED3A95F1F700002111F5CF50 -:1029C0002091E80025FF0BC040E050E065E070E09A -:1029D0000E94C2168091E8008E778093E8000895E7 -:1029E000CF93DF93EC0190918304943009F046C0BB -:1029F000809185028823D9F0809186028823B9F0DE -:102A00009093E9008FEF9091E800815095FD06C00A -:102A100095E19A95F1F700008111F5CF8091E800DA -:102A200085FF2CC040E050E060E170E017C081E01D -:102A30008093E9008FEF9091E800815095FD06C0EA -:102A400095ED9A95F1F700008111F5CF8091E8009E -:102A500085FF14C040E050E068E070E0CE010E94C5 -:102A6000C2168091E8008E778093E80080E1FE0135 -:102A7000ACEEB3E001900D928A95E1F7DF91CF9132 -:102A8000089580918204811109C00E9457180E9404 -:102A9000B4188091E20084608093E200089510925F -:102AA00082040895089508950C94FB2642E061EC99 -:102AB00081E00E94D11742E061EC82E00E94D117D0 -:102AC00042E061EC83E00E94D11742E161EC84E0D6 -:102AD0000C94D11780918504833009F455C030F4EB -:102AE000813071F0823009F48EC008958A3009F483 -:102AF0007AC08B3009F460C0893009F09CC020C0D6 -:102B000080918404813A09F096C08091E800877F23 -:102B10008093E8008091880490918904892B21F4A6 -:102B200060E18CEE93E003C060E080E090E070E054 -:102B30000E940D178091E8008B778093E80008953C -:102B400080918404813209F076C08091880490914C -:102B50008904009719F0039709F06DC08091E8008F -:102B6000877F8093E8008091E80082FD05C0809116 -:102B700083048111F8CF5FC08091F1008093FC0342 -:102B80008091E8008B7753C080918404813A09F0EA -:102B900052C08091880490918904892B09F04BC020 -:102BA0008091E800877F8093E8008091E80080FFB3 -:102BB000FCCF8091850236C0809184048132D9F5A2 -:102BC0008091880490918904892BA9F58091E8006F -:102BD000877F8093E8000E94061880918604809386 -:102BE00085020C943C2080918404813221F58091EF -:102BF000E800877F8093E8000E9406188091870490 -:102C00008093FD03089580918404813AA1F480911A -:102C1000E800877F8093E8008091E80080FFFCCF88 -:102C20008091FD038093F1008091E8008E7780937E -:102C3000E8000C940618089584B7877F84BF88E164 -:102C40000FB6F89480936000109260000FBE80E889 -:102C500080936100109261000E94A91B0E94571886 -:102C60000E94B4188091E20084608093E20078941E -:102C70000E943A1B0E94AB1B8BE792E00E94551BFF -:102C800080918304853069F40E94BC268091810480 -:102C90008823B1F30E94EA26882391F30E94AC16A0 -:102CA000EFCF0E94B31BECCF292F33272330310500 -:102CB000C9F064F42130310581F02230310509F08A -:102CC00043C08DE690E02FEB38E042C02132310561 -:102CD000F1F02232310541F137C082E190E02CE27F -:102CE00039E036C099278130910541F08230910555 -:102CF00041F0892B49F5EBEBF8E005C0EDE8F8E091 -:102D000002C0E3E6F8E0849190E09F0121C06430C6 -:102D1000D8F4E62FF0E0EE0FFF1FE25EFC4F2081BB -:102D2000318189E090E014C0643070F470E0FB0100 -:102D3000EE0FFF1FEA5EFC4F20813181FB01EE5E4A -:102D4000FC4F808190E004C080E090E020E030E023 -:102D5000FA0131832083089580E189BD82E189BD34 -:102D600009B400FEFDCF8091D8008F7D8093D800FC -:102D70008091E00082608093E0008091E00081FD1E -:102D8000FCCF0895CF92DF92EF92FF920F931F93A3 -:102D9000CF93DF93EC018B016A010E94251881110A -:102DA00033C0C114D10439F0F60180819181081B30 -:102DB000190BC80FD91FE12CF12C0115110519F1C0 -:102DC0008091E80085FD16C08091E8008E778093A1 -:102DD000E800C114D10449F0F60180819181E80E28 -:102DE000F91EF182E08285E00FC00E942518882339 -:102DF00021F30AC089918093F10001501109FFEF7E -:102E0000EF1AFF0ADACF80E0DF91CF911F910F9187 -:102E1000FF90EF90DF90CF90089520918A04309139 -:102E20008B042617370748F06115710539F4209196 -:102E3000E8002E772093E80001C0B90140E0611559 -:102E40007105A9F120918304222309F443C02530A0 -:102E500009F442C02091E80023FD40C02091E80021 -:102E600022FD32C02091E80020FFE9CF4091F3001D -:102E70002091F20030E0342BFC01CF016115710587 -:102E800059F02830310540F481918093F100615070 -:102E900071092F5F3F4FF1CF41E02830310509F034 -:102EA00040E02091E8002E772093E800C8CF411140 -:102EB000C9CF0AC080918304882361F0853061F016 -:102EC0008091E80083FD0AC08091E80082FFF2CF84 -:102ED00080E0089582E0089583E0089581E00895F8 -:102EE00020918A0430918B042617370748F061152A -:102EF000710539F42091E8002E772093E80001C095 -:102F0000B901FC0120E06115710591F18091830404 -:102F1000882309F440C0853009F43FC08091E8005F -:102F200083FD3DC08091E80082FD2FC08091E800C4 -:102F300080FFE9CF2091F3008091F20090E0922B86 -:102F40006115710559F08830910540F42491209362 -:102F5000F1003196615071090196F2CF21E0089796 -:102F600009F020E08091E8008E778093E800CBCFD5 -:102F70002111CCCF0AC080918304882361F0853071 -:102F800061F08091E80083FD0AC08091E80082FF33 -:102F9000F2CF80E0089582E0089583E0089581E013 -:102FA0000895982F973058F59093E900981739F0C5 -:102FB0007091EC002091ED005091F00003C0242F9F -:102FC000762F50E021FF19C03091EB003E7F309307 -:102FD000EB003091ED003D7F3093ED003091EB0040 -:102FE00031603093EB007093EC002093ED00509330 -:102FF000F0002091EE0027FF07C09F5FD3CF8F70B6 -:103000008093E90081E0089580E008958091840430 -:1030100087FF11C08091E80082FD05C08091830484 -:103020008111F8CF11C08091E8008B770BC080919F -:103030008304882349F08091E80080FFF8CF8091D5 -:10304000E8008E778093E80008952091E4003091A5 -:10305000E50095E64091EC00842F817040FF22C08E -:103060008091E80080FD1CC080918304882391F04A -:10307000853091F08091EB0085FD10C04091E40017 -:103080005091E5004217530729F39A01915011F727 -:1030900084E0089582E0089583E0089581E0089532 -:1030A00080E008954091E80042FFDECF08950E943D -:1030B000C5180E94CD18E0EEF0E080818160808329 -:1030C000E8EDF0E080818F77808319BCA7EDB0E058 -:1030D0008C918E7F8C9380818F7E8083109282046E -:1030E00008950F931F93CF93DF930E94C5180E94FA -:1030F000CD18C8EDD0E088818F778883888180687B -:10310000888388818F7D888319BC109283041092F4 -:103110007F04109281041092800400EE10E0F80108 -:1031200080818B7F808388818160888342E060E03A -:1031300080E00E94D117E1EEF0E080818E7F8083F5 -:10314000E2EEF0E08081816080838081886080830E -:10315000F80180818E7F8083888180618883DF9100 -:10316000CF911F910F910895E8EDF0E080818F7E5F -:103170008083E7EDF0E080818160808384E082BF1E -:1031800081E0809382040C947118E8EDF0E0808176 -:103190008E7F80831092E20008951092DA001092E0 -:1031A000E10008951F920F920FB60F9211242F93F2 -:1031B0003F934F935F936F937F938F939F93AF93BF -:1031C000BF93EF93FF938091E10082FF0BC080914A -:1031D000E20082FF07C08091E1008B7F8093E100D5 -:1031E0000E94391B8091DA0080FF1FC08091D800B7 -:1031F00080FF1BC08091DA008E7F8093DA0080917F -:10320000D90080FF0DC080E189BD82E189BD09B48C -:1032100000FEFDCF81E0809383040E94411505C02C -:1032200019BC109283040E944F158091E10080FF29 -:1032300019C08091E20080FF15C08091E2008E7F6E -:103240008093E2008091E20080618093E2008091AF -:10325000D80080628093D80019BC85E080938304F5 -:103260000E9453158091E10084FF30C08091E200FC -:1032700084FF2CC080E189BD82E189BD09B400FED4 -:10328000FDCF8091D8008F7D8093D8008091E100A0 -:103290008F7E8093E1008091E2008F7E8093E20038 -:1032A0008091E20081608093E20080917F04882316 -:1032B00011F084E007C08091E30087FD02C081E047 -:1032C00001C083E0809383040E9454158091E10043 -:1032D00083FF29C08091E20083FF25C08091E10037 -:1032E000877F8093E10082E08093830410927F04C3 -:1032F0008091E1008E7F8093E1008091E2008E7FDB -:103300008093E2008091E20080618093E20042E0DD -:1033100060E080E00E94D1178091F0008860809387 -:10332000F0000E945215FF91EF91BF91AF919F91D4 -:103330008F917F916F915F914F913F912F910F905E -:103340000FBE0F901F9018951F920F920FB60F92FD -:1033500011242F933F934F935F936F937F938F939A -:103360009F93AF93BF93CF93DF93EF93FF93C0915E -:10337000E900CF708091EC00D82FD17080FDD0E8AB -:103380001092E9008091F000877F8093F00078949C -:103390000E94E8191092E9008091F0008860809303 -:1033A000F000CD2BCF70C093E900FF91EF91DF913A -:1033B000CF91BF91AF919F918F917F916F915F91CD -:1033C0004F913F912F910F900FBE0F901F90189526 -:1033D0001F93CF93DF93CDB7DEB7AA970FB6F894BC -:1033E000DEBF0FBECDBFE4E8F4E088E08E0F909121 -:1033F000F10091938E13FBCF0E946A158091E80033 -:1034000083FF1FC18091840490918504492F50E06F -:103410004A30510508F015C1FA01EB59FF4F0C94E1 -:10342000FA30803881F0823809F00BC1809188042D -:103430008F708093E9008091EB0085FB882780F9ED -:103440001092E90006C0809180049091810491114E -:1034500082609091E800977F9093E8008093F1005C -:103460001092F100C8C0282F2D7F09F0EAC08823F0 -:1034700019F0823061F0E5C080918604813009F056 -:10348000E0C0933009F080E0809381042BC08091EC -:103490008604811127C0809188048F7009F4D1C0FF -:1034A0008093E9002091EB0020FF1CC0933021F4B1 -:1034B0008091EB00806214C09091EB00906190933A -:1034C000EB0021E030E0A90102C0440F551F8A95AE -:1034D000E2F74093EA001092EA008091EB008860E6 -:1034E0008093EB001092E9008091E800877F86C00E -:1034F0008111A7C0109186041F778091E300807826 -:10350000812B8093E3008091E800877F8093E8001F -:103510000E9406188091E80080FFFCCF8091E300B4 -:1035200080688093E300111102C082E001C083E053 -:103530008093830486C08058823008F082C08091D6 -:103540008604909187048C3D53E0950779F583E0DC -:103550008A838AE289834FB7F894DE01139620E0CC -:103560003EE051E2E32FF0E050935700E49120FF5A -:1035700003C0E295EF703F5FEF708E2F90E0EA306E -:1035800010F0C79601C0C0968D939D932F5F243194 -:1035900049F74FBF8091E800877F8093E8006AE297 -:1035A00070E0CE0101960E940D1714C0AE014F5F6E -:1035B0005F4F609188040E945416BC01009709F483 -:1035C00040C09091E800977F9093E80089819A81AC -:1035D0000E9470178091E8008B778093E80031C0DB -:1035E000803879F58091E800877F8093E8008091AA -:1035F0007F048093F1008091E8008E778093E8004B -:103600000E9406181EC081111CC090918604923041 -:10361000C0F48091E800877F8093E80090937F0456 -:103620000E94061880917F04811106C08091E300FA -:1036300087FD02C081E001C084E0809383040E9482 -:1036400056158091E80083FF0AC08091E800877FCB -:103650008093E8008091EB0080628093EB00AA9653 -:103660000FB6F894DEBF0FBECDBFDF91CF911F9193 -:1036700008950895CF93809183048823A1F0C09189 -:10368000E900CF709091EC00892F817090FD80E867 -:10369000C82B1092E9008091E80083FD0E94E81990 -:1036A000CF70C093E900CF91089590930304809365 -:1036B00002040895E0910204F0910304309721F090 -:1036C0000190F081E02D099480E00895E0910204DA -:1036D000F0910304309721F00280F381E02D0994EA -:1036E0000895E0910204F0910304309721F00480E2 -:1036F000F581E02D09940895209100043091010492 -:103700008217930771F09093010480930004E09175 -:103710000204F0910304309721F00680F781E02D38 -:10372000099408952091FE033091FF0382179307B7 -:1037300071F09093FF038093FE03E0910204F091F7 -:103740000304309721F00084F185E02D0994089559 -:1037500008950C94A81B0E942F270E94F10C0E9430 -:10376000B5270C94692C5F926F927F928F929F92F3 -:10377000AF92BF92CF92DF92EF92FF920F931F937F -:10378000CF93DF9300D000D01F92CDB7DEB70E9459 -:10379000360D9DE0C92E94E0D92E03E010E0AA2456 -:1037A000A394B12C502E802F0E94B10D4C01F60134 -:1037B000729062906F016826792661147104A1F4F9 -:1037C0000150110978F78FEF89838A831B820E9449 -:1037D00038278160782F9D838C8349815A816B8142 -:1037E0008D810E94631C38C08091620481FD0E941B -:1037F000BA0D2BE030E07501022E02C0EE0CFF1C6A -:103800000A94E2F7C70186219721892B09F12983C0 -:103810005A828E209F2091E0892809F490E09B83B2 -:103820000E9438278160782F9D838C8349815A813B -:103830006B818D810E94631C000F111FF801EB5FEB -:10384000FB4F80819181E826F926F182E08204C055 -:103850002150310980F6B4CF0E94A12910910404AF -:103860000E945A1B1817D1F00E945A1B809304041F -:103870000F900F900F900F900F90DF91CF911F91AD -:103880000F91FF90EF90DF90CF90BF90AF909F90FF -:103890008F907F906F905F900C94DB0C0F900F9047 -:1038A0000F900F900F90DF91CF911F910F91FF908C -:1038B000EF90DF90CF90BF90AF909F908F907F90D0 -:1038C0006F905F900895CF93DF93CDB7DEB72B97BE -:1038D0000FB6F894DEBF0FBECDBF4F835887698700 -:1038E0007A878B87DE01119686E0FD0111928A9519 -:1038F000E9F785E0FE01379601900D928A95E1F790 -:1039000049815A816B817C818D819E810E94DA225E -:103910002B960FB6F894DEBF0FBECDBFDF91CF91CF -:103920000895CF93882309F4C2C0C82F823859F470 -:103930000E945A1B81FDBBC089E30E94B4250E94EE -:10394000812689E30CC0833879F40E945A1B80FDDC -:10395000AEC083E50E94B4250E94812683E50E94C3 -:10396000F625CF910C948126843859F40E945A1B75 -:1039700082FD9DC087E40E94B4250E94812687E4D1 -:10398000EECF8CEF8C0F813A48F48C2F0E94D12B14 -:1039900081118DC08C2F0E94B425E3CF80E28C0F63 -:1039A000883048F4C77081E001C0880FCA95EAF7F3 -:1039B0000E943A26D6CF8BE58C0F833078F4C53A37 -:1039C00029F0C63A31F083E890E005C081E890E044 -:1039D00002C082E890E0CF910C947C1B88E58C0FAC -:1039E000833108F064C0C83A39F1C93A41F1CA3AA2 -:1039F00049F1CB3A51F1CC3A59F1CD3A61F1C03BA2 -:103A000069F1CE3A71F1CF3A79F1C13B81F1C23B14 -:103A100089F1C33B91F1C43B99F1C53BA1F1C63B90 -:103A2000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BF0 -:103A3000C9F180E090E038C082EE90E035C089EEB8 -:103A400090E032C08AEE90E02FC085EB90E02CC071 -:103A500086EB90E029C087EB90E026C08CEC90E0EC -:103A600023C08DEC90E020C083E891E01DC08AE87F -:103A700091E01AC082E991E017C084E991E014C096 -:103A800081E292E011C083E292E00EC084E292E013 -:103A90000BC085E292E008C086E292E005C087E2B2 -:103AA00092E002C08AE292E0CF910C94921BCF91F7 -:103AB0000895882309F44BC0823859F40E945A1B98 -:103AC00081FF45C089E30E94B4250E94812689E3D5 -:103AD0000CC0833871F40E945A1B80FF38C083E504 -:103AE0000E94B4250E94812683E50E94F6250C944D -:103AF0008126843859F40E945A1B82FF28C087E42B -:103B00000E94B4250E94812687E4EFCF9CEF980F96 -:103B1000913A58F390E2980F983050F4877091E002 -:103B200001C0990F8A95EAF7892F0E944026DFCFBE -:103B30009BE5980F933020F480E090E00C947C1B80 -:103B4000885A833120F480E090E00C94921B089511 -:103B5000882321F00E943A260C9481260895882318 -:103B600021F00E9440260C94812608957F928F9226 -:103B70009F92AF92BF92CF92DF92EF92FF920F93FC -:103B80001F93CF93DF931F92CDB7DEB77C01C62E74 -:103B9000772EFC01058102950F70128111110E9490 -:103BA00057260E94AD25882379F0112369F080E221 -:103BB0008C0D883048F082E00E9496250E94AD2549 -:103BC00091E0D82ED92601C0D12CE72DE295EF70D7 -:103BD000F0E0E159FF4F0C94FA30872D807F072DDC -:103BE0000F70882311F00295007F112389F00023C4 -:103BF00009F499C180E28C0D883020F4802F0E9456 -:103C00003A2603C0802F0E944A260E9481268BC13B -:103C10008C2D0E94591D002309F4C3C180E28C0D34 -:103C2000883020F4802F0E94402603C0802F0E94FD -:103C300050260E948126B5C1872D807F972D9F70C9 -:103C4000803211F4892F03C0892F8295807FCC2088 -:103C500021F0F1E0CF16A1F01DC0112339F00023AF -:103C600019F1013009F50E946A269BC1002319F061 -:103C7000013009F496C189830E946D26898110C1A3 -:103C8000112321F0063008F08CC10EC0053008F079 -:103C900088C106C1112359F0002331F0F701958145 -:103CA00090FF41C19F7095830E94A81D7AC1002397 -:103CB00009F4F6C03EC1872D86958695837090E005 -:103CC000009719F0019761F06CC1112321F08C2D40 -:103CD000972D937002C080E090E00E947C1B61C130 -:103CE000112321F08C2D972D937002C080E090E07D -:103CF0000E94921B56C18C2D112319F00E94A928F5 -:103D000002C00E9411290E9496294BC1872D837001 -:103D100009F052C0111145C18C2D8295869587708E -:103D2000880F880F9C2D9F70892E912CA12CB12C6F -:103D3000082E04C0880C991CAA1CBB1C0A94D2F73C -:103D4000C4FE14C00FE010E020E030E0B901A8018B -:103D500004C0440F551F661F771F8A95D2F7CB0109 -:103D6000BA01609570958095909503C060E070E011 -:103D7000CB01272D26952695237030E02230310582 -:103D800069F02330310589F0682979298A299B292E -:103D90002130310571F00E94222403C1682979295C -:103DA0008A299B290E943E24FCC00E942224C5012E -:103DB000B4010E940624F5C0112319F0872D8170EB -:103DC00001C08695882309F4ECC08C2D82958695D8 -:103DD0008770880F880F9C2D9F70892E912CA12CA5 -:103DE000B12C082E04C0880C991CAA1CBB1C0A9478 -:103DF000D2F7C4FE14C00FE010E020E030E0B901BB -:103E0000A80104C0440F551F661F771F8A95D2F77B -:103E1000CB01BA01609570958095909503C060E0E4 -:103E200070E0CB01272D269526952370422F50E078 -:103E30004230510569F04330510589F068297929EC -:103E40008A299B294130510571F00E94FC24A9C0A8 -:103E5000682979298A299B290E941825A2C00E94D5 -:103E6000FC24C501B4010E94E0249BC08C2D90E08D -:103E7000FC01E05EF109E531F10508F050C0E158C0 -:103E8000FF4F0C94FA300C2D0F70872D8F7111237A -:103E900021F00E947924802F07CF0E949A24802F3E -:103EA0000E94AF1D7EC0112341F0053008F079C09B -:103EB000872D8F710E94BF2474C0063008F071C036 -:103EC000F7CF112339F0872D8F710E94792469C0B3 -:103ED0001123C9F3872D8F710E949A2462C0112388 -:103EE00029F0872D8F710E9464245BC00E945A24A0 -:103EF00058C0112351F0172D1F71812F0E94792472 -:103F000063E0812F0E948D254CC081E00E949625A0 -:103F1000023008F446C082E00E94962542C0112378 -:103F200031F0002381F28C2D0E94911C3AC00023B5 -:103F300089F28C2D0E94591D34C0472D4F706C2D75 -:103F4000C7010E941C060E947E232BC0111129C0AC -:103F5000472D4F7050E042305105B9F04CF44115F7 -:103F6000510581F041305105E1F40E94912C19C0B6 -:103F70004330510569F04430510599F48C2D0E946D -:103F8000E32C0FC00E947A2C0CC00E94AD2C09C0FB -:103F90000E94C02C06C0472D4F706C2DC7010E9497 -:103FA0007C09DD20F9F00E94892580FD1BC0F70106 -:103FB00012820E9483250E947924C7010E94012059 -:103FC0000E9483250F90DF91CF911F910F91FF9059 -:103FD000EF90DF90CF90BF90AF909F908F907F90A9 -:103FE0000C949A240F90DF91CF911F910F91FF9025 -:103FF000EF90DF90CF90BF90AF909F908F907F9089 -:1040000008950F931F93CF93DF93EC0188819981DB -:104010002B813C81232BB9F09F3F11F48F3F99F006 -:10402000CE010E947B07882371F0688179818A81A3 -:104030000E947F258C010E9434250E94FB23B80139 -:10404000CE010E94B61DDF91CF911F910F9108956F -:104050000E9457260E9467260E942C260E948126D5 -:104060000E94472A0E94962980E090E00E947C1BD3 -:1040700080E090E00C94921B0E9447260C9428202C -:104080000E947425292F22952F7030E02C303105A5 -:104090004CF42A3031056CF42250310922303105BC -:1040A000A8F407C02C30310569F02F30310551F0EC -:1040B0000DC0803F69F018F4803E40F409C0843F91 -:1040C00029F406C093FB882780F9089580E00895BD -:1040D00081E00895CF93DF9300D000D01F92CDB739 -:1040E000DEB70F900F900F900F900F90DF91CF9150 -:1040F0000895CF93DF9300D000D000D0CDB7DEB7C6 -:1041000026960FB6F894DEBF0FBECDBFDF91CF91DC -:1041100008951F93CF93DF93C0910D0416E0809113 -:104120000E04C81799F0D0E01C9FF0011D9FF00D00 -:104130001124E15FFB4F4081518162817381848151 -:1041400095810E9479202196C770E9CFDF91CF91A8 -:104150001F91089540913F045091400460914104A3 -:104160007091420480914304909144040C9479200E -:104170008091440482958F7009F054C0809141046D -:10418000882309F44FC080910D04A0910E04609122 -:104190003F04709140044091420450914304B6E0C2 -:1041A0008A1709F43FC090E041155105C1F17F3FE6 -:1041B00011F46F3FA1F1B89FF001B99FF00D1124E8 -:1041C000E15FFB4F218172132AC02081621327C057 -:1041D0002281211124C0238134812417350710F452 -:1041E00021503109241B350B283C3105C0F42091A6 -:1041F00044042F7020612093440426E0289FF0019E -:10420000299FF00D1124EC5EFB4F80818F7080613F -:1042100080838FE394E00E9401200C948920019612 -:104220008770BECF0895CF92DF92EF92FF920F93E7 -:104230001F93CF93DF93CDB7DEB762970FB6F89495 -:10424000DEBF0FBECDBF8C0185E0F801DE011D96FB -:1042500001900D928A95E1F7D8014C9111965C91ED -:10426000119712966C9112971396CD90DC9014973B -:1042700030913F0470914004809142049091430436 -:10428000009709F46BC17F3F19F43F3F09F466C101 -:10429000E0904104EE2009F4C0C020914404C81607 -:1042A000D90628F0F601E81BF90BCF0104C0809570 -:1042B00090958C0D9D1DFF24F394883C910578F01A -:1042C000F12C207F09F0C6C07C2DD98AC88A898943 -:1042D0000E946A208FE394E00E940120B1C0822FE7 -:1042E000807F09F046C0751314C0341312C06111E9 -:1042F00010C02F702061209344040E94AA208FE3F5 -:1043000094E00E94012080914404D80115968C937A -:104310002EC0CD2819F15F3F11F44F3FF9F0F62E72 -:1043200061111CC080910D0420910E0436E08217AB -:1043300009F45AC090E0389FF001399FF00D112424 -:10434000E15FFB4F7181571306C07081471303C0B3 -:104350007281711103C001968770E9CFF62E662332 -:1043600009F418C180914404816080934404F12CC5 -:1043700011C1751308C0341306C0611104C08091C7 -:104380004404D801C3C04D875E878D859E856A8BA6 -:104390000E9440206A898823E1F16623D1F12091AF -:1043A0004404822F82958F7090E0029774F0809180 -:1043B0003F049091400498878F831986DB86CA86D4 -:1043C0002C87CE0107960E94012086E0F801AFE31A -:1043D000B4E001900D928A95E1F70E94B8200E9406 -:1043E000AA20FF24F394D6C04D875E878D859E85D5 -:1043F0000E947425292F22952F7030E0223031053C -:104400000CF0BCC09F7009F0B6C0805E883008F424 -:10441000C1C0C8010E940120E4CFC816D90608F423 -:1044200053C0F601E81BF90BCF01883C910508F455 -:1044300050C0F12C7C2DD98AC88A89890E946A20B3 -:10444000EFE3F4E086E0DF011D928A95E9F70E9430 -:10445000AA20A0C0751314C0341312C0611110C07B -:1044600080914404F8018583C8010E94012086E000 -:10447000EFE3F4E0DF011D928A95E9F7FE2C8AC094 -:104480004D875E878D859E856A8B0E9440206A8954 -:10449000882309F4BECF662309F4BBCF20914404DE -:1044A000822F82958F7090E002970CF48ECF8091CE -:1044B0003F04909140049A8389831B82DD82CC82E1 -:1044C0002E83CE0101967FCF809590958C0D9D1DFA -:1044D000ACCFF62E662309F49CCF75132EC034138F -:1044E0002CC02091440420FD1FC0822F82958F7024 -:1044F000D9F0D80115962C9315978F3049F08F5F1E -:10450000982F9295907F822F8F70892B15968C9380 -:10451000C8010E94012086E0F801AFE3B4E00190F9 -:104520000D928A95E1F793CF86E0F801AFE3B4E00E -:1045300001900D928A95E1F72DC04D875E878D859C -:104540009E850E944020811140CF8091440481606B -:1045500080934404C8010E9401201CC0662309F412 -:1045600058CF4D875E878D859E850E944020882389 -:1045700009F44FCF2ACF811148CF0CC02430310528 -:104580000CF047CF9F7009F440CFF8019581907FE0 -:1045900009F03BCF8F2D62960FB6F894DEBF0FBEA9 -:1045A000CDBFDF91CF911F910F91FF90EF90DF90E2 -:1045B000CF9008951F93CF93DF93CDB7DEB72C979D -:1045C0000FB6F894DEBF0FBECDBF4F835887698703 -:1045D0007A878B879C87CE0107960E9413218823B8 -:1045E00069F08F8198852A853B85232BF1F19F3FC8 -:1045F00009F063C08F3F09F060C037C086E0FE015C -:104600003796DE01119601900D928A95E1F76F8140 -:104610007885EA85FB85309741F17F3F11F46F3F44 -:1046200021F120910E0430E0C9010196877099278D -:1046300040910D0450E08417950709F447C0698341 -:104640007A83FD83EC8396E0929FD001939FB00D17 -:104650001124A15FBB4FFE01319601900D929A95F6 -:10466000E1F780930E040E94892016E080910D04EA -:1046700090910E048917C1F1189FC0011124815F28 -:104680009B4F0E941321882379F1E0910D041E9F16 -:10469000F0011124E15FFB4F408151816281738100 -:1046A000848195810E94792080910D0490E001968B -:1046B0008770992780930D04D9CF4F8158856985DC -:1046C0007A858B859C850E947920CFCF0E943C20E3 -:1046D00010920E0410920D04EFE3F4E086E0DF0187 -:1046E0001D928A95E9F7C1CF2C960FB6F894DEBFDC -:1046F0000FBECDBFDF91CF911F910895EF92FF9232 -:104700000F931F93CF93DF938C01009709F46CC034 -:10471000F12CEE24E394E8012196F801849184378A -:1047200040F4843008F051C0813081F0823019F1BA -:104730005BC0853709F444C0A8F19CE7980F903717 -:1047400008F052C08F770E94591D41C00E5F1F4F65 -:10475000FE01C49180E28C0F883048F4C7708E2D22 -:1047600001C0880FCA95EAF70E945A2614C08C2F00 -:104770000E94911C2DC00E5F1F4FFE01C49180E26C -:104780008C0F883058F4C7708E2D01C0880FCA95E1 -:10479000EAF70E9460260E9481261AC08C2F0E9490 -:1047A000591D16C00E5F1F4FFE01C491CC2381F02E -:1047B0008FE99FE00197F1F700C00000C150F6CFEC -:1047C0000E5F1F4FFE01F49003C00E94911C8E01EA -:1047D0008F2D882309F49FCFEFE9FFE03197F1F7A0 -:1047E00000C000008150F5CFDF91CF911F910F9154 -:1047F000FF90EF90089508956093490470934A04E0 -:1048000080934B0490934C040C9428200F931F9397 -:104810000091490410914A0420914B0430914C04BA -:10482000DC01CB01802B912BA22BB32B809349046D -:1048300090934A04A0934B04B0934C041F910F91A2 -:104840000C9428200F931F930091490410914A045F -:1048500020914B0430914C04DC01CB018023912347 -:10486000A223B3238093490490934A04A0934B045A -:10487000B0934C041F910F910C9428200F931F9319 -:104880000091490410914A0420914B0430914C044A -:10489000DC01CB0180279127A227B327809349040D -:1048A00090934A04A0934B04B0934C041F910F9132 -:1048B0000C9428201092450410924604109247044C -:1048C000109248040C94282041E050E060E070E031 -:1048D00004C0440F551F661F771F8A95D2F7409377 -:1048E00045045093460460934704709348040C9425 -:1048F000282041E050E060E070E004C0440F551F04 -:10490000661F771F8A95D2F78091450490914604DF -:10491000A0914704B0914804482B592B6A2B7B2B5C -:1049200040934504509346046093470470934804B1 -:104930000C94282041E050E060E070E004C0440F97 -:10494000551F661F771F8A95D2F740955095609541 -:1049500070958091450490914604A0914704B091D0 -:104960004804482359236A237B23409345045093EA -:10497000460460934704709348040C94282041E057 -:1049800050E060E070E004C0440F551F661F771FC1 -:104990008A95D2F78091450490914604A0914704EE -:1049A000B0914804482759276A277B27409345043C -:1049B0005093460460934704709348040C94282055 -:1049C0000F931F93009145041091460420914704D2 -:1049D00030914804DC01CB01802B912BA22BB32B0F -:1049E0008093450490934604A0934704B0934804F1 -:1049F0001F910F910C9428200F931F930091450451 -:104A0000109146042091470430914804DC01CB0109 -:104A100080239123A223B3238093450490934604DB -:104A2000A0934704B09348041F910F910C94282041 -:104A30000F931F9300914504109146042091470461 -:104A400030914804DC01CB0180279127A227B327AE -:104A50008093450490934604A0934704B093480480 -:104A60001F910F910C9428200895CF92DF92EF921E -:104A7000FF920F931F93CF93DF938C01C090490453 -:104A8000D0904A04E0904B04F0904C04809145048F -:104A900090914604A0914704B0914804C82AD92AAD -:104AA000EA2AFB2ACFE1D0E0D701C6010C2E04C0D0 -:104AB000B695A795979587950A94D2F780FF06C07B -:104AC000B8018C2F0E94010C019721F4219760F707 -:104AD00080E001C08C2FDF91CF911F910F91FF904B -:104AE000EF90DF90CF900895CF93DF93EC010E9479 -:104AF0003525BE010E94010CDF91CF910895CB01B5 -:104B00000E947425089580914D048595859585951D -:104B1000089580914D048770089598E0899F9001D1 -:104B20001124262B20934D040C94792420914D04BC -:104B30008095822380934D04982F977069F430E01C -:104B4000482F552747FD50952417350729F085959F -:104B5000859585950C949A24089590914D049770AD -:104B600081E009F480E0089590918502992321F075 -:104B700090918602911109C020918702309188029C -:104B8000F90132969FEF40E01FC0982F96959695B9 -:104B900096959F3050F5E0918702F0918802E90FD9 -:104BA000F11D877021E030E0A90102C0440F551FBC -:104BB0008A95E2F7CA019181892B818308959F3FED -:104BC00039F04F5F4E3041F051915813F8CF0DC07E -:104BD0005111F7CF942FF5CF9F3F39F0F901E90F2D -:104BE000F11D97FDFA9582830895089590918502AD -:104BF000992321F090918602911109C0209187029A -:104C000030918802F9013296205F3F4F1FC0982FE4 -:104C10009695969596959F30F0F4E0918702F091E5 -:104C20008802E90FF11D877021E030E0A90102C080 -:104C3000440F551F8A95E2F7CA0180959181892317 -:104C4000818308953196E217F30729F09081981334 -:104C5000F9CF1082F7CF089581E090E0E0918702CC -:104C6000F0918802E80FF91F1082019680319105BA -:104C7000A9F7089590916104892B809361040895A8 -:104C80008095909161048923809361040895109226 -:104C90006104089590916004892B809360040895C5 -:104CA0008095909160048923809360040895109208 -:104CB0006004089590915F04892B80935F040895A8 -:104CC000809590915F04892380935F0408951092EA -:104CD0005F04089580934E04089510924E04089541 -:104CE0008091870290918802FC0131969C01205F9F -:104CF0003F4F80E0919191118F5FE217F307D1F759 -:104D00000895E0918702F091880280916104808388 -:104D1000E0918702F0918802908180916004892B54 -:104D20008083E0918702F0918802908180915F04F6 -:104D3000892B808380914E04882361F0E091870263 -:104D4000F09188029081892B80830E9470268111C6 -:104D500010924E0480918702909188020C94661BF9 -:104D600020E0009739F0AC0141505109842395238C -:104D70002F5FF7CF822F089580918304843039F11B -:104D80001092630420E488E190E00FB6F894A895AF -:104D9000809360000FBE2093600080E00E94770542 -:104DA00080E00E94DB0C83B7817F846083BF83B780 -:104DB000816083BF7894889583B78E7F83BF88E1B5 -:104DC0000FB6F89480936000109260000FBE0895B3 -:104DD0000895089580E00E9477050E94E8260E94C9 -:104DE000360D0E94E9260E94BB0D91E0811101C0A1 -:104DF00090E0892F08950E943C2080E00E94770572 -:104E00000E94692C0E945A1B0C94DB0C1F920F927B -:104E10000FB60F9211248F939F93AF93BF938091FE -:104E20006304811113C08091640490916504A09182 -:104E30006604B09167044196A11DB11D809364047E -:104E400090936504A0936604B0936704BF91AF91FB -:104E50009F918F910F900FBE0F901F90189582E039 -:104E600084BD93E095BD9AEF97BD80936E00089541 -:104E70002FB7F8948091640490916504A091660422 -:104E8000B09167042FBF0895CF92DF92EF92FF9207 -:104E90000F931F932FB7F8944091640450916504C9 -:104EA00060916604709167042FBF6A017B01EE2454 -:104EB000FF248C0120E030E0C016D106E206F306A4 -:104EC00010F4415051099A01281B390BC9011F9157 -:104ED0000F91FF90EF90DF90CF9008951F920F9267 -:104EE0000FB60F9211248F939F93AF93BF9380912E -:104EF000640490916504A0916604B09167040196E2 -:104F0000A11DB11D8093640490936504A093660471 -:104F1000B0936704BF91AF919F918F910F900FBE97 -:104F20000F901F9018950E945718F8942FEF87EA5A -:104F300091E6215080409040E1F700C0000087E0FA -:104F400090EBDC0180938E0490938F04A0939004E7 -:104F5000B09391049CE088E10FB6F894A8958093F3 -:104F600060000FBE90936000FFCF0E94F427811174 -:104F700002C00E94D0270E94FF27809362040E94F3 -:104F80000C2880938C0487FB882780F98093860205 -:104F90000E940328682F70E080E090E00C94FC23CE -:104FA0006DEE7EEF80E090E00E94203160E082E0D4 -:104FB00090E00E940E3160E083E090E00E940E31AC -:104FC00060E084E090E00E940E3160E085E090E0D7 -:104FD0000E940E3160E086E090E00E940E316FEF9B -:104FE00087E090E00C940E3180E090E00E94083160 -:104FF00021E08D3E9E4F09F020E0822F089582E04F -:1050000090E00C94003183E090E00C940031682F24 -:1050100083E090E00C940E3184E090E00C94003139 -:10502000682F84E090E00C940E3186E090E00C94C0 -:105030000031682F86E090E00C940E3187E090E01C -:105040000C940031682F87E090E00C940E31809131 -:105050006A0480FF0BC060918C0285E0689FB001FC -:10506000112475956795759567952BC081FF09C0CB -:1050700060918C0285E0689FB00111247595679559 -:1050800020C082FF07C060918C0285E0689FB0015C -:10509000112417C090916B049923D1F060918B0279 -:1050A000961788F720918C0285E0289F90011124A3 -:1050B000929FA001939F500D112470E0CA010E949D -:1050C000E6306038710540F46115710539F002C0B1 -:1050D00065E070E0862F08958FE7089581E00895D8 -:1050E00080916A0480FF08C060918A0270E0759523 -:1050F00067957595679521C081FF06C060918A020A -:1051000070E07595679519C082FF04C060918A02AE -:1051100070E010C090916B049923C1F060918902F6 -:105120009617A0F780918A02899FC001112470E030 -:105130000E94E6306038710528F46115710521F090 -:10514000862F08958FE7089581E0089561E070E06B -:10515000F4CF803F21F40E942728819504C0813F2D -:1051600029F40E94272880936E040895823F21F439 -:105170000E942728819504C0833F29F40E94272894 -:1051800080936D040895893F19F40E94702805C02A -:105190008A3F31F40E947028819580936F040895AE -:1051A0008B3F21F40E947028819504C08C3F29F424 -:1051B0000E947028809370040895843F21F48091A8 -:1051C0006C04816017C0853F21F480916C0482607B -:1051D00011C0863F21F480916C0484600BC0873F2E -:1051E00021F480916C04886005C0883F31F480917F -:1051F0006C04806180936C0408958D3F21F480914C -:105200006A0481600BC08E3F21F480916A04826041 -:1052100005C08F3F29F480916A04846080936A04FA -:105220000895803F39F480916E0487FF6CC010921E -:105230006E0469C0813F29F480916E041816BCF396 -:1052400062C090916D04823F29F497FF5CC0109278 -:105250006D0459C0833F19F41916CCF354C0893F2B -:1052600041F480916F0418160CF04DC010926F0439 -:105270004AC08A3F29F480916F0487FF44C0F6CF6B -:105280008B3F39F48091700487FF3DC01092700409 -:105290003AC08C3F29F4809170041816BCF333C0D7 -:1052A000843F21F480916C048E7F17C0853F21F4E8 -:1052B00080916C048D7F11C0863F21F480916C0435 -:1052C0008B7F0BC0873F21F480916C04877F05C0E2 -:1052D000883F31F480916C048F7E80936C0413C0FE -:1052E0008D3F21F480916A048E7F0BC08E3F21F4A4 -:1052F00080916A048D7F05C08F3F29F480916A04F4 -:105300008B7F80936A0480916D0481110EC080911F -:105310006E0481110AC080916F04811106C08091D2 -:105320007004811102C010926B0408958CE694E021 -:105330000E94711B0E94382790936904809368042F -:1053400008951F93CF93DF9380916804909169042F -:105350000E944427AC0190916B04992321F0209185 -:105360008D0230E006C020918E028AE0289F9001D5 -:1053700011244217530708F486C080916D04C09130 -:105380006E04D0916F0410917004811107C0C11197 -:1053900076C0D11174C0111172C075C09F3F19F051 -:1053A0009F5F90936B04181624F40E942728809323 -:1053B0006D0480916D0487FF05C00E9427288195A8 -:1053C00080936D041C1624F40E94272880936E0499 -:1053D00080916E0487FF05C00E94272881958093E5 -:1053E0006E0460916D04662339F1C0916E04CC2384 -:1053F00019F1772767FD7095872F972F0E94082E48 -:1054000023E333E343E35FE30E94182F0E94D52D8B -:1054100060936D046C2F772767FD7095872F972F0A -:105420000E94082E23E333E343E35FE30E94182F37 -:105430000E94D52D60936E041D1624F40E947028DE -:1054400080936F0480916F0487FF05C00E947028CD -:10545000819580936F04111624F40E947028809324 -:1054600070048091700487FF05C00E9470288195A8 -:1054700080937004DF91CF911F910C9496299F3FE8 -:1054800009F08ECF96CFDF91CF911F910895ECE672 -:10549000F4E085E0DF011D928A95E9F710926B0434 -:1054A00010926A040895833081F128F4813059F014 -:1054B0008230D1F00895853009F449C0B8F18630C2 -:1054C00009F456C0089580918E02262F30E0280FEF -:1054D000311D2F3F310524F4680F60938E0208952B -:1054E0008FEF80938E02089580918D02262F30E0F9 -:1054F000280F311D2F3F310524F4680F60938D0272 -:1055000008958FEF80938D02089580918C02262F4D -:1055100030E0280F311D2F3F310524F4680F6093D0 -:105520008C0208958FEF80938C02089580918B02F6 -:10553000262F30E0280F311D2F3F310524F4680F4E -:1055400060938B0208958FEF80938B020895809172 -:105550008A02262F30E0280F311D2F3F310524F419 -:10556000680F60938A0208958FEF80938A020895EE -:1055700080918902262F30E0280F311D2F3F310501 -:1055800024F4680F6093890208958FEF8093890255 -:105590000895833011F128F4813049F0823091F080 -:1055A0000895853081F120F18630C1F10895809110 -:1055B0008E02681720F4861B80938E020895109245 -:1055C0008E02089580918D02681720F4861B8093C7 -:1055D0008D02089510928D02089580918C026817B3 -:1055E00020F4861B80938C02089510928C020895FB -:1055F00080918B02681720F4861B80938B0208959C -:1056000010928B02089580918A02681720F4861BFD -:1056100080938A02089510928A02089580918902E7 -:10562000681720F4861B80938902089510928902DE -:1056300008950F931F93873208F048C08E3108F009 -:105640008DC0803109F477C008F5873009F461C056 -:1056500068F4863009F09DC080916204817F8E7F5E -:105660008093620481E08093720494C08B3009F4CB -:1056700089C08E3009F08DC08091620482FB2227A0 -:1056800020F991E0922790FB82F95EC0863109F4FF -:1056900079C060F4813109F07CC00E943C20909177 -:1056A000860281E08927809386026CC0893109F4E3 -:1056B00069C08B3109F06DC08091620481FB2227A3 -:1056C00020F991E0922790FB81F93EC0883309F4DC -:1056D00059C050F4893209F457C0853309F454C0D5 -:1056E000873209F451C055C0833409F44DC028F401 -:1056F0008A3308F44EC0895332C0883409F049C057 -:105700000E943C200E94EB0D0E94F1060E9493270C -:1057100039C090916204892F8095817080FB90F947 -:1057200029F0966098609093620434C0997F977FC7 -:105730009093620427C08091620483FB222720F9A2 -:1057400091E0922790FB83F9809362049923D1F032 -:105750008091620481608093620414C08D5141E0A5 -:1057600050E060E070E08A019B0104C0000F111F4F -:10577000221F331F8A95D2F7C901B8010E94FC236A -:105780000E943C2081E006C061E070E080E090E093 -:10579000F5CF80E01F910F91089580E0089580E09B -:1057A0000895CF93C82F80917204813069F018F06A -:1057B0008230C9F184C0E0918702F0918802808133 -:1057C000823209F07EC007C0E0918702F091880222 -:1057D0008081823261F48C2F0E94CD2B811104C014 -:1057E0008C2F0E94192B1DC081E090E01AC08C2FD5 -:1057F0000E94CF2B811114C0C43179F048F4CB3012 -:1058000079F0C03109F061C082E08093720408C071 -:10581000C93219F0C83321F058C01092720455C033 -:1058200081E0817054C0C93291F120F5C43179F121 -:10583000B0F4C73009F047C08EE180938E0282E356 -:1058400080938D028AE080938C0284E180938B02A6 -:1058500088E080938A0288E28093890234C0CE5126 -:10586000C63088F5EC2FF0E0EA5DFC4F8081809334 -:10587000710429C0CE34E9F020F4CB3421F56AE07C -:1058800013C0C13579F0C235F1F461E00DC08091EB -:105890007104882319F01092710415C081E080937F -:1058A000720415C061E006C0809171040E94532A01 -:1058B0000AC06AE0809171040E94C92A04C0109253 -:1058C000720480E004C081E002C080E0AACFCF91E2 -:1058D00008950E94F427811102C00E94D0270E94DF -:1058E000152880938D0480FF02C0869501C080E05A -:1058F0000C94770580918D04982F9695292F30E090 -:10590000233031054CF49F5F990F8170892B8160A2 -:1059100080938D040E94192880918D0486950C94A3 -:10592000770580918D04982F969591F09158990F55 -:105930008170892B80938D048E7F91E009F490E033 -:1059400080918D0490FB80F980938D040E9419282A -:1059500080918D0486950C94770580918D04982F05 -:10596000909590FB80F980938D040E941928809176 -:105970008D0480FF02C0869501C080E00C947705FD -:1059800090918D04892F86958F5F8F7791708430E9 -:1059900028F4880F892B80938D0402C090938D0486 -:1059A00080918D048E7F91E009F490E080918D04C8 -:1059B00090FB80F980938D040E94192880918D04BA -:1059C00086950C94770520918D04922F96958927C2 -:1059D000982F990F822F8170892B80938D048E7F51 -:1059E00091E009F490E080918D0490FB80F9809320 -:1059F0008D040E94192880918D0486950C9477055A -:105A000080918D04869508955058BB27AA270ED003 -:105A1000D1C1C2D130F0C7D120F031F49F3F11F491 -:105A20001EF4B7C10EF4E095E7FB9FC1E92FD3D177 -:105A300080F3BA17620773078407950718F071F4AB -:105A40009EF5EBC10EF4E0950B2EBA2FA02D0B01A5 -:105A5000B90190010C01CA01A0011124FF27591BB3 -:105A600099F0593F50F4503E68F11A16F040A22FB9 -:105A7000232F342F4427585FF3CF4695379527952A -:105A8000A795F0405395C9F77EF41F16BA0B620B29 -:105A9000730B840BBAF09150A1F0FF0FBB1F661F70 -:105AA000771F881FC2F70EC0BA0F621F731F841FB3 -:105AB00048F4879577956795B795F7959E3F08F0D9 -:105AC000B3CF9395880F08F09927EE0F9795879598 -:105AD000089527D108F481E008950CD06BC163D1FB -:105AE00040F05AD130F021F45F3F19F03EC151111E -:105AF00095C14FC170D198F39923C9F35523B1F3E0 -:105B0000951B550BBB27AA2762177307840738F02C -:105B10009F5F5F4F220F331F441FAA1FA9F333D08B -:105B20000E2E3AF0E0E830D091505040E695001C3F -:105B3000CAF729D0FE2F27D0660F771F881FBB1FFB -:105B4000261737074807AB07B0E809F0BB0B802DD5 -:105B5000BF01FF2793585F4F2AF09E3F510568F021 -:105B600004C15CC15F3FECF3983EDCF3869577950A -:105B70006795B795F7959F5FC9F7880F911D969523 -:105B8000879597F90895E1E0660F771F881FBB1F7F -:105B9000621773078407BA0720F0621B730B840B2C -:105BA000BA0BEE1F88F7E095089504D06894B11100 -:105BB00035C1089518D188F09F5790F0B92F9927D3 -:105BC000B751A0F0D1F0660F771F881F991F1AF008 -:105BD000BA95C9F712C0B13081F01FD1B1E0089574 -:105BE0001CC1672F782F8827B85F39F0B93FCCF3F5 -:105BF000869577956795B395D9F73EF490958095FE -:105C0000709561957F4F8F4F9F4F0895E89409C01D -:105C100097FB3EF490958095709561957F4F8F4FDF -:105C20009F4F9923A9F0F92F96E9BB279395F695F5 -:105C3000879577956795B795F111F8CFFAF4BB0F73 -:105C400011F460FF1BC06F5F7F4F8F4F9F4F16C0D7 -:105C5000882311F096E911C0772321F09EE8872F61 -:105C6000762F05C0662371F096E8862F70E060E01D -:105C70002AF09A95660F771F881FDAF7880F969596 -:105C8000879597F9089588D018F011F08CD038F4E2 -:105C900080C0C4C0E92F9FD0B0F35523C9F3E7FB00 -:105CA0006217730784079507A8F199F3E92FFF2777 -:105CB00088232AF03197660F771F881FDAF7952F10 -:105CC0005527442332F091505040220F331F441F78 -:105CD000D2F7BB27E91BF50B621B730B840BB109D1 -:105CE000C1F222F4620F731F841FB11D31972AF095 -:105CF000660F771F881FBB1FEFCF915050405AF09F -:105D000041F0882332F0660F771F881F9150504072 -:105D1000C1F7939530C08695779567959F5FD9F7C2 -:105D2000F8CF990F0008550FAA0BE0E8FEEF161602 -:105D30001706E807F907C0F012161306E407F5077F -:105D400098F0621B730B840B950B39F40A2661F0F3 -:105D5000232B242B252B21F408950A2609F4A14096 -:105D6000A6958FEF811D811D089597F99F6780E8A3 -:105D700070E060E008959F3F31F0915020F48795E6 -:105D800077956795B795880F911D9695879597F9A3 -:105D900008959FEF80EC089500240A9416161706C4 -:105DA00018060906089500240A941216130614060C -:105DB00005060895092E0394000C11F4882352F06F -:105DC000BB0F40F4BF2B11F460FF04C06F5F7F4F27 -:105DD0008F4F9F4F089557FD9058440F551F59F00E -:105DE0005F3F71F04795880F97FB991F61F09F3FC8 -:105DF00079F087950895121613061406551FF2CFF1 -:105E00004695F1DF08C0161617061806991FF1CF40 -:105E100086957105610508940895E894BB27662767 -:105E20007727CB0197F908957CDF08F48FEF089569 -:105E30000BD0C0CFB1DF28F0B6DF18F0952309F002 -:105E400094CFA7CF1124EACFC6DFA0F3959FD1F35B -:105E5000950F50E0551F629FF001729FBB27F00D18 -:105E6000B11D639FAA27F00DB11DAA1F649F66276D -:105E7000B00DA11D661F829F2227B00DA11D621FBC -:105E8000739FB00DA11D621F839FA00D611D221F76 -:105E9000749F3327A00D611D231F849F600D211D5A -:105EA000822F762F6A2F11249F5750408AF0E1F0FD -:105EB00088234AF0EE0FFF1FBB1F661F771F881F46 -:105EC00091505040A9F79E3F510570F04ECFA6CF9C -:105ED0005F3FECF3983EDCF3869577956795B79531 -:105EE000F795E7959F5FC1F7FE2B880F911D96955B -:105EF000879597F90895FA01EE0FFF1F3096210557 -:105F0000310599F16115710561F48038BFE39B0794 -:105F100049F168949038810561F08038BFEF9B07A4 -:105F200041F0992342F5FF3FE1053105210511F1CB -:105F3000E8940894E795D901AA2329F4AB2FBE2F42 -:105F4000F85FD0F310C0FF5F70F4A695E0F7F73963 -:105F500050F019F0FF3A38F49F779F930CD00F90D0 -:105F600007FC905808953EF014CF60E070E080E8A0 -:105F70009FE308954FE79F775F934F933F932F934E -:105F80009ED02F913F914F915F9152DF05C019F440 -:105F90000EF0EBCE42CFFDCE26DFC8F39638C0F729 -:105FA00007F80F92E8942BE33AEA48EB5FE74EDFFD -:105FB0000F920F920F924DB75EB70F92C0D0E8E2EA -:105FC000F1E016D04F915F91EF91FF91E595EE1FB3 -:105FD000FF1F49F0FE57E0684427EE0F441FFA9573 -:105FE000E1F74195550B32D00F9007FE26C008957A -:105FF000DF93CF931F930F93FF92EF92DF927B017A -:106000008C01689405C0DA2EEF011EDFFE01E894D2 -:10601000A5912591359145915591AEF3EF0106DD9E -:10602000FE019701A801DA9479F7DF90EF90FF90D5 -:106030000F911F91CF91DF9108959B01AC0160E01A -:1060400070E080E89FE349CD90CE95CECCDEE8F3BA -:106050009923D9F3940F511DBBF39150504094F004 -:1060600059F0882332F0660F771F881F91505040F7 -:10607000C1F79E3F510544F7880F911D969587956E -:1060800097F908955F3FACF0983E9CF0BB2786954A -:1060900077956795B79508F4B1609395C1F7BB0FF5 -:1060A00058F711F460FFE8CF6F5F7F4F8F4F9F4F1E -:1060B000E3CFB4CE0EF05FCE6CCE689456CE93DEB6 -:1060C000C8F39923D1F3C6F3DF93CF931F930F93B4 -:1060D000FF92C92FDD2788232AF02197660F771FAB -:1060E000881FDAF720E030E040E85FEB9FE3883973 -:1060F00020F0803E30F021968F7787DCE0E5F1E0FC -:1061000003C083DCEDE7F1E073DF8B01BE01EC013E -:10611000FB2E6F5771097595771F880B990B78DDEA -:1061200028E132E741E35FE38FDEAF2D9801AE0156 -:10613000FF900F911F91CF91DF9178DC3BCEFA0158 -:10614000DC01AA0FBB1F9B01AC01BF5728F422271B -:106150003327442750781FC0B75188F4AB2F002451 -:10616000469537952795011CA395D2F3002069F039 -:10617000220F331F441FB395DAF30DD045CC6130A5 -:106180007105A0E88A07B94630F49B01AC01662787 -:10619000772788279078309621F0208331834283B7 -:1061A00053830895AA1BBB1B51E107C0AA1FBB1F45 -:1061B000A617B70710F0A61BB70B881F991F5A9593 -:1061C000A9F780959095BC01CD01089597FB072E06 -:1061D00016F4009407D077FD09D00E94D23007FC56 -:1061E00005D03EF4909581959F4F089570956195E7 -:1061F0007F4F0895EE0FFF1F0590F491E02D099455 -:10620000F999FECF92BD81BDF89A992780B508957E -:10621000A8E1B0E042E050E00C942831262FF99933 -:10622000FECF92BD81BDF89A019700B4021639F0F5 -:106230001FBA20BD0FB6F894FA9AF99A0FBE0895C6 -:106240000196272F0E940F310C940E31DC01CB01F7 -:10625000FC01F999FECF06C0F2BDE1BDF89A319676 -:1062600000B40D9241505040B8F70895F894FFCF14 -:1062700052D02445000000410000DC4400000041F1 -:1062800052D0A4440000404100005C4400000041A2 -:1062900048F17644000000415C978A4400000041C8 -:1062A0001FD592440000004152D0A4440000004198 -:1062B0005CFFB844000000410AA7CF440000004141 -:1062C0000000DC44000000410AA7CF440000004168 -:1062D0000000DC440000004100000000000080409D -:1062E00000005C45000040410000000000008040CC -:1062F00052D02445000040410AA7CF44000000418D -:106300000000DC440000004100000000000080406C -:1063100052D02445000040410000000000008040B1 -:1063200000005C45000040410AA7CF440000004146 -:106330000000DC440000004100000000000080403C -:1063400052D0244500004041000000000000804081 -:106350000AA74F45000040410AA7CF440000004172 -:106360000000DC440000004100000000000080400C -:1063700052D0244500000041000000000000804091 -:106380005CFF384500000041000000000000804034 -:1063900052D02445000000410AA7CF44000000412C -:1063A0000000DC44000000410000000000008040CC -:1063B00052D024450000804152D024450000404185 -:1063C0005C970A450000004152D0A44400000041FF -:1063D0000000DC44000000415C970A450000A04139 -:1063E000640007000CFF0000003F646214F014CD4D -:1063F000149914651401014F042808140A321E0070 -:1064000002040507090B0C0E1011131517181A1C9E -:106410001D1F2123242628292B2D2F3032343537D8 -:10642000393B1F0F03764F5F6F7F496943790959E5 -:1064300053633149803F5D8B803FF8BF803FCAE1A5 -:10644000803F73ED803FCAE1803FF8BF803F5D8BA6 -:10645000803F3149803F0000803FF16D7F3F75EA0A -:106460007E3F4C827E3F833F7E3F84287E3F833F3A -:106470007E3F4C827E3F75EA7E3FF16D7F3F00009C -:10648000803F404D3639FA09AD0977093E09D108F8 -:10649000EA0803091C0901020304050607080900AC -:00000001FF diff --git a/keyboard/planck/keymaps/dzobert/compiled.hex b/keyboard/planck/keymaps/dzobert/compiled.hex deleted file mode 100644 index cb3972bc01..0000000000 --- a/keyboard/planck/keymaps/dzobert/compiled.hex +++ /dev/null @@ -1,1449 +0,0 @@ -:100000000C9496020C94DA020C94DA020C94DA0244 -:100010000C94DA020C94DA020C94DA020C94DA02F0 -:100020000C94DA020C94DA020C9478140C944A15AD -:100030000C94AC220C94DA020C94DA020C94DA02DE -:100040000C94DA020C943C030C94DA020C94DA025D -:100050000C94DA020C9414230C94DA020C94DA0255 -:100060000C94DA020C94DA020C94DA020C94DA02A0 -:100070000C94DA020C94DA020C94DA020C94DA0290 -:100080000C94ED0A0C94DA020C94DA020C94DA0265 -:100090000C94DA020C94DA020C94DA020C94DA0270 -:1000A0000C94DA020C94DA020C94DA02B715D91522 -:1000B000C716D915C7161E164116C7169616A916C5 -:1000C00093199319C219C219011A211A771B771BA8 -:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 -:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 -:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 -:10010000F91A071B0E1B151B1F1B07634236B79BF3 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A299 -:1001D000F1A3018C028C290014001A0008001500FC -:1001E00017001C0018000C00120013002B00E00088 -:1001F00004001600070009000A000B000D000E00A5 -:100200000F0033002A00E2001D001B000600190049 -:100210000500110010003600370038002800C40027 -:10022000E500E300E10002202C002C00012050003A -:10023000510052004F002B0014001A000900130057 -:100240000A000D000F0018001C0033002B002900CD -:10025000040015001600170007000B00110008002D -:100260000C0012002A00E2001D001B00060019000D -:1002700005000E0010003600370038002800C300CB -:10028000E500E300E10002202C002C0001205000DA -:10029000510052004F003A003B003C003D003E0040 -:1002A0003F0040004100420043004400450001007F -:1002B0001E001F0020002100220023002400250032 -:1002C00026004C000000010035002D002E003400F7 -:1002D00034022F0230022F003000310001000100F3 -:1002E00001000100010001000100010001204A009D -:1002F0004B004E004D00660046004700480053008A -:1003000074007600650024002500260054000100DA -:10031000AA00A900A80039009B007A0079002100FA -:10032000220023005500010049007B007C007D0075 -:100330003100260027001E001F002000560001008B -:10034000010001000100022001000100010027005E -:10035000630058005700280354006800650020001F -:1003600050006C0061006E0063006B0020004B00C9 -:100370006500790062006F00610072006400000097 -:100380002C034F007200740068006F006C0069005D -:100390006E0065006100720020004B00650079006E -:1003A00062006F00610072006400730000000403CB -:1003B000090409026D00040100A0FA09040000010B -:1003C00003010100092111010001223F00070581FD -:1003D0000308000A090401000103010200092111B8 -:1003E000010001224D000705820308000A090402EA -:1003F000000103000000092111010001223600075D -:1004000005830308000A0904030001030000000932 -:100410002111010001223900070584031000011297 -:1004200001100100000008EDFE6060010001020003 -:100430000105010906A101050719E029E7150025B5 -:1004400001950875018102050819012905950575B1 -:10045000019102950175039101050719002977158E -:10046000002501957875018102C005010980A1016F -:10047000850216010026B7001A01002AB700751080 -:1004800095018100C0050C0901A101850316010039 -:10049000269C021A01002A9C02751095018100C059 -:1004A00005010902A1010901A10005091901290598 -:1004B00015002501950575018102950175038101DE -:1004C0000501093009311581257F950275088106DE -:1004D00009381581257F950175088106050C0A38B4 -:1004E000021581257F950175088106C0C0050109A7 -:1004F00006A101050719E029E715002501950875F2 -:1005000001810295017508810105081901290595E8 -:1005100005750191029501750391010507190029DF -:10052000FF150025FF950675088100C011241FBE28 -:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A -:100540001E0390911F03A0912003B09121038730D7 -:10055000904BA740B04BB9F410921E0310921F03AA -:10056000109220031092210314BE84B7877F84BFAA -:1005700088E10FB6F89480936000109260000FBE7F -:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 -:1005900002C005900D92A03CB107D9F713E0A0EC82 -:1005A000B1E001C01D92AE31B107E1F70E94BE116A -:1005B0000C94D72C0C9400000895089581E00895C0 -:1005C00008950C94DD020C94DE020C94E0020E946B -:1005D000A12823E030E0281B3109220F2093C40119 -:1005E0000895282F2F9880918000211108C0877FBF -:1005F0008093800010928D0010928C001BC0886048 -:1006000080938000233019F48FEF9FEF0FC083E0B9 -:1006100090E0821B9109880F991F2FEF3FEFA901EE -:1006200002C0569547958A95E2F7CA0190938D00CE -:1006300080938C000C94E7020E94E70284E0809390 -:10064000C3011092C0010895279A2F988FEF9FEF52 -:1006500090938700809386008AE08093800089E1F0 -:10066000809381000E940A280C941C030E9424039A -:100670006E9A769A0C94DC021F920F920FB60F922C -:1006800011242F933F938F939F93EF93FF93E091C8 -:10069000C101F091C201CF0101969093C2018093F4 -:1006A000C1010090C30102C0F695E7950A94E2F7F4 -:1006B000EF738091C001823019F4E03251F404C02C -:1006C000813039F4EF3329F480916F008D7F80936E -:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B -:1006E000C001E39F900D11240090C40102C09695B3 -:1006F00087950A94E2F790938D0080938C00FF9188 -:10070000EF919F918F913F912F910F900FBE0F907E -:100710001F90189581E008950C948A0308950C9415 -:10072000360380911502882309F448C08091D101D5 -:100730009091D201009779F40E94DE229093D20129 -:100740008093D1018091D30190E0009771F4809162 -:10075000D40190E00AC00E94EA2220910001309169 -:1007600001012817390740F329C00197880F991F05 -:10077000880F991FFC01EB52FE4F608171818281CD -:1007800093810E94530AE091D30184E0E89FF00135 -:100790001124EB52FE4F60817181828193814FE081 -:1007A00050E00E940B0E8091D30190E00196609181 -:1007B000D40170E00E94872C8093D3010C94E10255 -:1007C000109217020C94200A0895089581E08093F6 -:1007D00017020C94E503089508958F929F92AF92AB -:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA -:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 -:10080000FC0100811181C8010E94DB20B8010E9417 -:10081000F2058C01B7010E948C03882309F4CCC136 -:100820000032F0E51F0741F4F7018281882309F4C3 -:1008300058C00E946F0EC0C10132F0E51F0741F49D -:10084000F7018281882309F44CC00E94780EB4C15C -:100850000232F0E51F0751F4F7018281882309F481 -:1008600040C00E946B0E8111F0CFE3CF0332F0E560 -:100870001F0739F4F7018281882399F10E94E6036A -:100880009BC10432F0E51F0739F4F7018281882308 -:1008900041F10E94E00390C10532F0E51F0749F4E1 -:1008A000F70182818823E9F0809117028111F1CF4D -:1008B000E5CF0632F0E51F0739F4F701828188237E -:1008C00081F00E947F0E0AC00732F0E51F0749F44D -:1008D000F7018281882329F00E948A0E0E94EC038E -:1008E0006BC180911702811105C0F70182818111CE -:1008F000CFC018C1003E110579F4F7018281882329 -:1009000009F44DC00E94200A81E0809316021092E3 -:1009100015021092D40150C1023E110559F4F7019D -:1009200082818823E1F10E94200A1092160210921F -:10093000150242C1033E110591F4F701828188231B -:1009400071F10E94200A1092160281E08093150234 -:100950001092D3011092D2011092D1012DC1023513 -:10096000110559F4F7018281882309F425C180918A -:100970000001909101010A970DC00135110579F42C -:10098000F7018281882309F417C1809100019091B9 -:1009900001010A9690930101809300010DC14091DD -:1009A000040183E2EFE1F1E0DE01119601900D9286 -:1009B0008A95E1F7F701808121E030E02C0F3D1F9F -:1009C000280F311DC9012091020130910301FC0162 -:1009D000E20FF31F6081772767FD7095640F711D2B -:1009E000882777FD8095982F0E94A92920E030E084 -:1009F00040E451E40E940E294B015C01F701218182 -:100A000084E090E0821B9109BC01882777FD8095E6 -:100A1000982F0E94A9299B01AC01C501B4010E9435 -:100A2000A6289B01AC0160E070E080E090E40E94A9 -:100A30001C2B20E030E04CED50E40E94B92A4B0121 -:100A40005C01F70182818823D1F04FE050E0C501BD -:100A5000B4010E940B0E809116028823A1F08091B0 -:100A6000D40124E0829FF0011124EB52FE4F8082DA -:100A70009182A282B3828F5F8093D40104C0C501AA -:100A8000B4010E94530A0F3F110508F02ECF94C005 -:100A90008091D00181111FC0043130E5130709F0A6 -:100AA00051C00E948E0381E08093D0010E94DE221B -:100AB0009093CF018093CE011092C7011092C9018B -:100AC0001092C8011092CB011092CA011092CD0170 -:100AD0001092CC0171C08091CE019091CF010E9403 -:100AE000EA22883C910570F48091C701E82FF0E07C -:100AF000EE0FFF1FE853FE4F118300838F5F80933B -:100B0000C7015AC0043880E5180721F005381045A0 -:100B100001F13AC0F7018281882341F01092C501AA -:100B200082E01EC0043830E5130759F58091C501F5 -:100B3000811106C086E20E94371886E20E94FF18E3 -:100B400082E01CC00438F0E51F0741F3053810456A -:100B5000D9F4F7018281882331F01092C60180E236 -:100B60000E944E1929C08091C601811106C087E2FA -:100B70000E94371887E20E94FF1880E20E945519F0 -:100B80001BC00538104529F381E08093C50180938F -:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 -:100BA000DF91CF911F910F91FF90EF90BF90AF9089 -:100BB0009F908F900C94E30280E0A3960FB6F89478 -:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 -:100BD000EF90BF90AF909F908F90089580E090E04D -:100BE000089508959CE0799FF001112490E3899F76 -:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B -:100C0000FE4F859194910895880F991FFC01E45B34 -:100C1000FF4F859194910895880F991FFC01E4532B -:100C2000FE4F8591949108950F931F93CF93DF9377 -:100C3000EC01811521E39207A0F5C11580E3D807E7 -:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 -:100C500007C2C83AD10578F4C53AD10508F06AC090 -:100C6000C130D10509F463C008F4F7C1C430D1051F -:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 -:100C8000C11590E2D90708F0AFC0C11521E0D20725 -:100C900008F0E6C1C03FD10508F4DFC18E01106540 -:100CA0001FC2C03880E5D80700F5C03790E5D907E6 -:100CB00008F0A3C0C11520E5D20709F4ACC050F478 -:100CC000CE01905480319F4008F0C7C1DF708E0183 -:100CD000106A06C2C13080E5D80709F4AEC0C4313D -:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 -:100CF00009F48EC050F4C13890E5D90709F482C0D8 -:100D000008F083C000E011EDEBC1C03181E5D807E8 -:100D100008F4A3C1C11597E5D90708F436C1CE017F -:100D200090578115904108F098C1DF7093C101E0A0 -:100D300010E0D6C1C53AD10509F494C1C63AD1052F -:100D400009F093C102E810E4CBC1C83AD10509F417 -:100D50008FC1C93AD10509F48EC1CA3AD10509F447 -:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 -:100D70008BC1CD3AD10509F48AC1C03BD10509F434 -:100D800089C1CE3AD10509F488C1CF3AD10509F419 -:100D900087C1C13BD10509F486C1C23BD10509F425 -:100DA00085C1C33BD10509F484C1C43BD10509F415 -:100DB00083C1C53BD10509F482C1C63BD10509F405 -:100DC00081C1C73BD10509F480C1C83BD10509F4F5 -:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 -:100DE0007DC100E014E47CC1CE019F700E940C061E -:100DF00078C1DD278E01106C73C1CF70DD278E01A5 -:100E0000146D6EC100E010ED6BC100E012ED68C121 -:100E100000E013ED65C10E94E21B0E94200A0E94BF -:100E2000E4038FEF94E32CE0815090402040E1F701 -:100E300000C000000E94392353C18091F2028160FA -:100E40008093F2024DC10E949A23811102C00E9438 -:100E500076230E94AD2390E090931D0380931C03A2 -:100E6000C23080E5D80721F480911C03816086C0E0 -:100E7000C43090E5D90721F480911C0382607EC0C4 -:100E8000C63020E5D20721F480911C03846076C02F -:100E9000C83080E5D80719F480911C0327C0CA30F8 -:100EA00090E5D90721F480911C03806167C0CC30A4 -:100EB00020E5D20721F480911C0380625FC0CE3010 -:100EC00080E5D80721F480911C03806457C0C031AD -:100ED00090E5D90721F480911C0380684FC0C2318E -:100EE00020E5D20729F480911C038460886046C005 -:100EF000C33080E5D80721F480911C038E7F3EC06B -:100F0000C53090E5D90721F480911C038D7F36C050 -:100F1000C73020E5D20721F480911C038B7F2EC0BF -:100F2000C93080E5D80719F480911C0326C0CB3066 -:100F300090E5D90721F480911C038F7E1FC0CD302E -:100F400020E5D20721F480911C038F7D17C0CF309C -:100F500080E5D80721F480911C038F7B0FC0C1313D -:100F600090E5D90721F480911C038F7707C0C33126 -:100F7000D04531F480911C038B7F877F80931C03C5 -:100F800080911C030E94B123ABC08D2F99278F70D5 -:100F9000992781309105D9F49E012370332702C02F -:100FA000880F991F2A95E2F79C688E0144E0000F94 -:100FB000111F4A95E1F700271370802B912B53E006 -:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 -:100FD000910531F4DC2FCC278E01016F106A80C09F -:100FE0008330910569F4CE018370992701E010E008 -:100FF00002C0000F111F8A95E2F7C8019C680FC05C -:1010000084309105B9F4CE018370992701E010E096 -:1010100002C0000F111F8A95E2F7C8019A6823E009 -:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 -:101030001D2B56C08530910531F4DC2FCC278E0155 -:10104000046F106A4DC0069709F04AC0CF71DD27C2 -:10105000DC2FCC278E01106243C000E010E040C0BE -:101060008E013EC001E810E43BC003E810E438C044 -:1010700002EE14E435C009EE14E432C00AEE14E4C2 -:101080002FC005EB14E42CC006EB14E429C007EBD9 -:1010900014E426C00CEC14E423C00DEC14E420C0CE -:1010A00003E815E41DC00AE815E41AC002E915E4D6 -:1010B00017C004E915E414C001E216E411C003E20C -:1010C00016E40EC004E216E40BC005E216E408C004 -:1010D00006E216E405C007E216E402C00AE216E4DE -:1010E000C801DF91CF911F910F9108959CE0799FE6 -:1010F000F001112490E3899FE00DF11D1124E60F0A -:10110000F11DEE0FFF1FEA52FE4F85919491803E34 -:101110009105E0F4803C910558F58133910509F47F -:101120006FC048F48932910509F463C08A32910591 -:1011300009F46DC072C089339105E9F082389105D8 -:10114000D1F08533910509F44DC067C0833E910508 -:1011500081F138F4803E9105B9F0823E9105D9F0D5 -:101160005CC0863E910561F1873E9105A1F155C0B5 -:101170000E940406089520911C0320FD02C021FF57 -:101180004CC080EE90E049C080911C0380FFF9CFF5 -:1011900089E390E042C080911C0382FF0EC08091E1 -:1011A0001C0384FF03C080E090E037C083EE90E032 -:1011B00034C080911C0382FFF2CF82EE90E02DC0FC -:1011C00080911C0383FF0BC080911C0384FDEBCF37 -:1011D00087EE90E022C080911C0383FFF5CF86EE5E -:1011E00090E01BC080911C0385FF07C089E290E05E -:1011F00014C080911C0385FFF9CF85E390E00DC0FA -:1012000080911C0386FF07C08AE290E006C08091AF -:101210001C0386FFF9CF81E390E00E941406089535 -:101220000C94E502E82FF0E0E25BFE4F8081E82FAE -:10123000EF70F0E082958F7021E030E0A90102C0EC -:10124000440F551F8A95E2F740A308950F931F930B -:10125000CF93DF9385B7806885BF85B7806885BFEA -:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 -:10127000E82FEF70F0E021A182958F70A80102C0E5 -:10128000440F551F8A95E2F7CA01822B81A38C2F48 -:101290000E941209219740F78BE090E061E070E036 -:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 -:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F -:1012C0009D01242B22A3019758F7DF91CF911F9105 -:1012D0000F910C948F03EF92FF920F931F93CF9374 -:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA -:1012F0008C2F0E9412098BE090E040E050E0FC014E -:10130000EE5BFE4F6081E62FEF70F0E020A130E051 -:1013100062956F7002C0359527956A95E2F720FDBA -:1013200009C09701082E02C0220F331F0A94E2F76A -:10133000422B532B019718F7F801929182918F015C -:101340008417950721F051834083D09305018C2F9A -:101350000E941209C15060F68091050187FD2CC0E2 -:101360008150809305018F3F39F08FE99FE001970D -:10137000F1F700C0000020C080911E0290911F0272 -:10138000909327028093260280911C0290911D0267 -:10139000909325028093240280911A0290911B025F -:1013A0009093230280932202809118029091190257 -:1013B00090932102809320020E94910381E0DF91AB -:1013C000CF911F910F91FF90EF900895E82FF0E0DB -:1013D000EE0FFF1FE05EFD4F80819181089508951B -:1013E0000F931F93CF9308E212E0C0E0F8019291AF -:1013F00082918F010E945622C80FF2E000321F072F -:10140000A9F78C2FCF911F910F9108950E949A23D5 -:10141000811102C00E9476230E94BF23809307039C -:101420003E9A809171008D7F8093710082E080935D -:1014300090008AE18093910081E080932A020895D0 -:1014400080912A02811102C00E94060A10927A023B -:1014500010927902809171008D7F8093710080914C -:1014600090008F738093900010923C0210923B0288 -:10147000109273021092740210927502109276020A -:101480001092720210927102E1E5F2E0A1E4B2E082 -:1014900011921192119211921D921D9282E0E137E8 -:1014A000F807B1F70895CF92DF92EF92FF920F9372 -:1014B0001F93CF93DF9320913B02222309F484C032 -:1014C0006B017C0180912A02811102C00E94060AF0 -:1014D00001E712E0C7E0D0E0A7019601F801929180 -:1014E0008291729162918F010E940A29811131C00B -:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 -:10150000118212821382DE01AA0FBB1FAF5BBD4F97 -:1015100011961C921E92C730D105E9F021964481A4 -:1015200055816681778140835183628373831482FE -:1015300015821682178212968D919C91139711969F -:101540009C938E9313961C921E9212973496129629 -:10155000E2CF219708F68091790290917A02019763 -:1015600097FD05C090937A028093790204C010928F -:101570007A02109279028091790290917A022091F8 -:101580007702309178022817390724F010927802F8 -:1015900010927702892BC1F4809171008D7F809326 -:1015A0007100809190008F7380939000109273026D -:1015B00010927402109275021092760210927202CA -:1015C0001092710210923B02DF91CF911F910F9107 -:1015D000FF90EF90DF90CF9008951F920F920FB67B -:1015E0000F9211244F925F926F927F928F929F92EF -:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 -:101600004F935F936F937F938F939F93AF93BF930A -:10161000CF93DF93EF93FF9380913B02882309F4EC -:101620009BC1C0917902D0917A021C161D060CF064 -:1016300093C140902B0250902C0260902D0270902C -:101640002E0220E030E0A901C301B2010E94B52AB8 -:1016500018160CF065C0C130D10509F452C0809154 -:10166000770290917802BE010E94872C7C019093B2 -:1016700078028093770280903D0290903E02A09085 -:101680003F02B090400220E030E040E85FE3C50157 -:10169000B4010E94A62860933D0270933E0280939D -:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 -:1016B000EF5AFD4FA3019201608171818281938174 -:1016C0000E940E2920E030E040E05EE30E94B92A4B -:1016D0009B01AC01C501B4010E94B52A18168CF417 -:1016E000C7010196BE010E94872C909378028093D7 -:1016F000770210923D0210923E0210923F02109229 -:101700004002E0917702F0917802EE0FFF1FEE0F9A -:10171000FF1FEF5AFD4F6081718182819381D0C09C -:10172000C0907302D0907402E0907502F09076023F -:1017300020E030E0A901C701B6010E940A292197E3 -:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A -:10175000EF5AFD4F80809180A280B380A501940153 -:10176000C701B6010E940A2987FF31C0A501940173 -:1017700060E070E08CED93EC0E940E2920E030E0F8 -:1017800040E451E40E940E2920E030E040E05FE3B5 -:101790000E94B92A9B01AC0160E070E080E090E417 -:1017A0000E941C2B9B01AC01C501B4010E94B92A07 -:1017B0009B01AC01C701B6010E940A2987FF07C03F -:1017C000A701960160E070E08CED93E439C0A501BB -:1017D0009401C701B6010E94B52A18160CF055C035 -:1017E000A501940160E070E08CED93E40E940E2965 -:1017F00020E030E040E451E40E940E2920E030E097 -:1018000040E05FE30E94B92A9B01AC0160E070E018 -:1018100080E090E40E941C2B9B01AC01C501B40147 -:101820000E94B92A9B01AC01C701B6010E94B52AEA -:1018300018165CF5A701960160E070E08CED93EC62 -:101840000E940E2920E030E040E451E40E940E297D -:1018500020E030E040E05FE30E94B92A9B01AC0148 -:1018600060E070E080E090E40E941C2B9B01AC01E2 -:10187000C701B6010E94B92A609373027093740283 -:10188000809375029093760213C0FE01EE0FFF1F46 -:10189000EE0FFF1FEF5AFD4F80819181A281B3812E -:1018A0008093730290937402A0937502B0937602B2 -:1018B000609173027091740280917502909176022A -:1018C00020912802309129022F3F4FEF340731F049 -:1018D0002F5F3F4F30932902209328020E94950EDC -:1018E0006B017C0120E034E244EF51E40E940A29BC -:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 -:1019000081E4F82E20E030E040E051E4C701B60168 -:101910000E94B92A9B01AC0160E074E284E79BE479 -:101920000E940E296B017C010E947B297093970015 -:1019300060939600209106013091070140910801C3 -:1019400050910901C701B6010E94B92A0E947B2962 -:10195000709399006093980080913C02882309F469 -:1019600033C1C0903702D0903802E0903902F09035 -:101970003A0220E030E0A901C701B6010E94B52A71 -:101980001816D4F580912802909129028F3F2FEFED -:10199000920729F001969093290280932802C701AB -:1019A000B6010E94950E20E030E040E051E40E9434 -:1019B000B92A9B01AC0160E074E284E79BE40E94D9 -:1019C0000E296B017C010E947B2970939700609324 -:1019D0009600209106013091070140910801509135 -:1019E0000901C701B6010E94B92A0E947B297093A0 -:1019F00099006093980008C010929700109296008A -:101A00001092990010929800609131027091320208 -:101A10006F5F7F4F70933202609331022091960086 -:101A20003091970080E090E0232BF1F0C091960078 -:101A3000D09197000E94A7296B017C01BE0180E034 -:101A400090E00E94A7299B01AC0160913302709144 -:101A5000340280913502909136020E940E2920E0D6 -:101A60003FEF4FE757E410C00E94A7296B017C01AC -:101A700020E030EE4FEF54E4609133027091340275 -:101A800080913502909136020E94B92A9B01AC01E7 -:101A9000C701B6010E94B52A87FD96C080912F022A -:101AA0008F5F80932F0290E0209103033091040315 -:101AB00082179307A0F080910E03882319F01092EB -:101AC0002F020DC0809171008D7F809371008091F5 -:101AD00090008F738093900010923C027DC08091A3 -:101AE0003002C0912F02811128C0C0900803D0900D -:101AF0000903E0900A03F0900B0320E030E0A90115 -:101B0000C701B6010E94B52A1816BCF481E0809383 -:101B1000300210923702109238021092390210925D -:101B20003A02C0923302D0923402E0923502F0922F -:101B30003602C150C0932F0243C01092300210925F -:101B4000290210922802E0910503F091060348E073 -:101B5000C49FE00DF11D112480819181A281B38188 -:101B60008093370290933802A0933902B0933A02DF -:101B700020E030E040E85EE36481758186819781F2 -:101B80000E94B92A6B017C0180910A01682F70E0E4 -:101B900080E090E00E94A72920E030E048EC52E489 -:101BA0000E940E299B01AC01C701B6010E94B92A0F -:101BB000609333027093340280933502909336021F -:101BC00010923202109231028091070380FD04C00E -:101BD00010923C0210923B02FF91EF91DF91CF9166 -:101BE000BF91AF919F918F917F916F915F914F9135 -:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB -:101C00009F908F907F906F905F904F900F900FBE3E -:101C10000F901F901895CF92DF92EF92FF92CF9383 -:101C2000DF936B017C01EA0180912A02811102C0DD -:101C30000E94060A8091070380FF46C080917902C6 -:101C400090917A0208970CF03FC0809171008D7FCF -:101C50008093710080913C0281110E94200A81E0F2 -:101C600080933B02109229021092280220E030E07B -:101C7000A901C701B6010E94B52A1816DCF48091AB -:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 -:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 -:101CA000FF1FEF5BFD4FD183C083019690937A02B3 -:101CB000809379028091710082608093710080919D -:101CC0009000806880939000DF91CF91FF90EF901B -:101CD000DF90CF90089580910703817008958091DF -:101CE00007038160809307030E94C3230C94EB03D6 -:101CF000809107038E7F809307030C94C323809108 -:101D00007B0290E0019666E070E00E94872C809351 -:101D10007B02089580917B0290E0019766E070E07D -:101D20000E94872C80937B0208958F929F92AF929E -:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 -:101D4000DF936B017C01C0912802D0912902BE0172 -:101D500080E090E00E94A7294B015C01A701960159 -:101D600060E070E08CE594E40E940E299B01AC01D8 -:101D7000C501B4010E94B92A0E947B2920917B02EF -:101D8000233009F473C028F4222351F02130E9F004 -:101D90002CC1243009F4A0C0253009F4E0C025C1CD -:101DA00080E090E0A0E0BFE38093060190930701FC -:101DB000A0930801B093090110922B0210922C02FB -:101DC00010922D0210922E0210C110922B0210922E -:101DD0002C0210922D0210922E026431710540F4F3 -:101DE0006A30710560F520E030E040E85EE32BC02A -:101DF000693C710508F0AAC080E090E00E94A72924 -:101E000020E030E040EA51E40E94A52820E030E0E4 -:101E100044E353E40E940E299B01AC010E94B92ABD -:101E200020E030E040E05EE30E94B92A9B01AC0173 -:101E300060E070E080E09EE30E94A52844C020E0BE -:101E400030E040E05FE3C701B6010E94B92A6B01B0 -:101E50007C0180E090E0A0E0BEE3809306019093D7 -:101E60000701A0930801B0930901BFC010922B0293 -:101E700010922C0210922D0210922E024AE0469FE0 -:101E80009001479F300D1124C90168EB7BE00E944F -:101E9000732CBC016C5D754077FF03C07195619533 -:101EA0007109882777FD8095982F0E94A9292EE334 -:101EB00033EC4EE259E30E94B92A20E030E040ECD6 -:101EC0005EE30E94A6286093060170930701809349 -:101ED00008019093090189C010922B0210922C02E4 -:101EE00010922D0210922E02CE0183709927892B19 -:101EF000E1F0BE016170772780E090E00E94A729A1 -:101F000020E030E040E05EE30E94B92A20E030E0CB -:101F100040E45FE30E94A6286093060170930701E6 -:101F200080930801909309010CC080E090E0A0E04C -:101F3000BFE38093060190930701A0930801B0933B -:101F40000901C770DD27CD2B09F04FC010920601A3 -:101F500010920701109208011092090146C01092D8 -:101F60002B0210922C0210922D0210922E0200E0F1 -:101F700010E020E03FE30093060110930701209357 -:101F80000801309309016739710578F180E090E02C -:101F90000E94A72920E030E047E153E40E94A528F1 -:101FA00020E030E04AE754E40E940E2920E030E0CF -:101FB00048E452E40E94B92A20E030E040EA51E4CB -:101FC0000E94EB290E947629660F771F660F771F04 -:101FD000FB01EE5AFE4F2081318142815381C701BE -:101FE000B6010E94B92A6B017C01C701B601DF91DD -:101FF000CF911F910F91FF90EF90DF90CF90BF9006 -:10200000AF909F908F90089580918C020895CF9308 -:10201000DF9300D01F92CDB7DEB79C0180911303F0 -:10202000843019F593E099833B832A839093E900E8 -:102030008FEF9091E800815095FD06C095ED9A953F -:10204000F1F700008111F5CF8091E80085FF0DC008 -:1020500040E050E063E070E0CE0101960E9468121B -:102060008091E8008E778093E8000F900F900F909A -:10207000DF91CF910895CF93DF9300D01F92CDB71A -:10208000DEB720911303243021F522E029839B83BE -:102090008A8383E08093E9008FEF9091E80081507C -:1020A00095FD06C095ED9A95F1F700008111F5CFE9 -:1020B0008091E80085FF0DC040E050E063E070E0F3 -:1020C000CE0101960E9468128091E8008E7780937D -:1020D000E8000F900F900F90DF91CF91089520911D -:1020E00013032430F1F422E02093E9002FEF309124 -:1020F000E800215035FD06C035ED3A95F1F70000B6 -:102100002111F5CF2091E80025FF0BC040E050E001 -:1021100065E070E00E9468128091E8008E778093FD -:10212000E8000895CF93DF93EC019091130394306E -:1021300009F046C0809115018823D9F080911601DD -:102140008823B9F09093E9008FEF9091E8008150D7 -:1021500095FD06C095E19A95F1F700008111F5CF44 -:102160008091E80085FF2CC040E050E060E170E025 -:1021700017C081E08093E9008FEF9091E8008150D3 -:1021800095FD06C095ED9A95F1F700008111F5CF08 -:102190008091E80085FF14C040E050E068E070E006 -:1021A000CE010E9468128091E8008E778093E8004B -:1021B00080E1FE01ACE7B2E001900D928A95E1F773 -:1021C000DF91CF91089580911203811109C00E947F -:1021D000FD130E945A148091E20084608093E20013 -:1021E0000895109212030895089508950C94A12261 -:1021F00042E061EC81E00E94771342E061EC82E012 -:102200000E94771342E061EC83E00E94771342E181 -:1022100061EC84E00C94771380911503833009F40A -:1022200055C030F4813071F0823009F48EC00895C9 -:102230008A3009F47AC08B3009F460C0893009F023 -:102240009CC020C080911403813A09F096C080910F -:10225000E800877F8093E80080911803909119032C -:10226000892B21F460E18CE792E003C060E080E01C -:1022700090E070E00E94B3128091E8008B77809329 -:10228000E800089580911403813209F076C08091AE -:10229000180390911903009719F0039709F06DC086 -:1022A0008091E800877F8093E8008091E80082FDBC -:1022B00005C0809113038111F8CF5FC08091F100B8 -:1022C00080938C028091E8008B7753C08091140337 -:1022D000813A09F052C08091180390911903892B1B -:1022E00009F04BC08091E800877F8093E8008091DF -:1022F000E80080FFFCCF8091150136C08091140367 -:102300008132D9F58091180390911903892BA9F591 -:102310008091E800877F8093E8000E94AC13809151 -:102320001603809315010C94E21B809114038132F3 -:1023300021F58091E800877F8093E8000E94AC132C -:102340008091170380938D02089580911403813A40 -:10235000A1F48091E800877F8093E8008091E800F5 -:1023600080FFFCCF80918D028093F1008091E80086 -:102370008E778093E8000C94AC13089584B7877F20 -:1023800084BF88E10FB6F8948093600010926000DB -:102390000FBE90E080E80FB6F894809361009093B0 -:1023A00061000FBE0E944F170E94FD130E945A1435 -:1023B0008091E20084608093E20078940E94E016AD -:1023C0000E9451178BE091E00E94FB16809113034D -:1023D000853069F40E946222809111038823B1F351 -:1023E0000E949022882391F30E945212EFCF0E9404 -:1023F0005917ECCF292F332723303105C9F064F466 -:102400002130310581F02230310509F043C08DE6DD -:1024100090E022EB33E042C021323105F1F022326C -:10242000310541F137C082E190E02FE134E036C060 -:1024300099278130910541F08230910541F0892B37 -:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 -:10245000F3E0849190E09F0121C06430D8F4E62F2E -:10246000F0E0EE0FFF1FE255FE4F2081318189E041 -:1024700090E014C0643070F470E0FB01EE0FFF1FB9 -:10248000EA55FE4F20813181FB01EE55FE4F8081E0 -:1024900090E004C080E090E020E030E0FA01318379 -:1024A0002083089580E189BD82E189BD09B400FEE1 -:1024B000FDCF8091D8008F7D8093D8008091E0007F -:1024C00082608093E0008091E00081FDFCCF089560 -:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 -:1024E000EC018B016A010E94CB13811133C0C1142E -:1024F000D10439F0F60180819181081B190BC80FB6 -:10250000D91FE12CF12C0115110519F18091E8007A -:1025100085FD16C08091E8008E778093E800C11495 -:10252000D10449F0F60180819181E80EF91EF18213 -:10253000E08285E00FC00E94CB13882321F30AC0FC -:1025400089918093F10001501109FFEFEF1AFF0A02 -:10255000DACF80E0DF91CF911F910F91FF90EF9044 -:10256000DF90CF90089520911A0330911B03261716 -:10257000370748F06115710539F42091E8002E778E -:102580002093E80001C0B90140E061157105A9F18F -:1025900020911303222309F443C0253009F442C0DB -:1025A0002091E80023FD40C02091E80022FD32C0C8 -:1025B0002091E80020FFE9CF4091F3002091F20044 -:1025C00030E0342BFC01CF016115710559F0283042 -:1025D000310540F481918093F100615071092F5FC2 -:1025E0003F4FF1CF41E02830310509F040E0209124 -:1025F000E8002E772093E800C8CF4111C9CF0AC068 -:1026000080911303882361F0853061F08091E800A8 -:1026100083FD0AC08091E80082FFF2CF80E0089538 -:1026200082E0089583E0089581E0089520911A03DF -:1026300030911B032617370748F06115710539F4EF -:102640002091E8002E772093E80001C0B901FC0139 -:1026500020E06115710591F180911303882309F43D -:1026600040C0853009F43FC08091E80083FD3DC043 -:102670008091E80082FD2FC08091E80080FFE9CFC3 -:102680002091F3008091F20090E0922B611571058A -:1026900059F08830910540F424912093F10031964F -:1026A000615071090196F2CF21E0089709F020E00E -:1026B0008091E8008E778093E800CBCF2111CCCFBA -:1026C0000AC080911303882361F0853061F0809106 -:1026D000E80083FD0AC08091E80082FFF2CF80E02D -:1026E000089582E0089583E0089581E00895982F89 -:1026F000973058F59093E900981739F07091EC00F5 -:102700002091ED005091F00003C0242F762F50E06F -:1027100021FF19C03091EB003E7F3093EB003091E8 -:10272000ED003D7F3093ED003091EB003160309350 -:10273000EB007093EC002093ED005093F00020919B -:10274000EE0027FF07C09F5FD3CF8F708093E90013 -:1027500081E0089580E008958091140387FF11C0FF -:102760008091E80082FD05C0809113038111F8CFAC -:1027700011C08091E8008B770BC0809113038823F0 -:1027800049F08091E80080FFF8CF8091E8008E77D3 -:102790008093E80008952091E4003091E50095E6EB -:1027A0004091EC00842F817040FF22C08091E800AE -:1027B00080FD1CC080911303882391F0853091F037 -:1027C0008091EB0085FD10C04091E4005091E50040 -:1027D0004217530729F39A01915011F784E00895A5 -:1027E00082E0089583E0089581E0089580E00895EF -:1027F0004091E80042FFDECF08950E946B140E94D2 -:102800007314E0EEF0E0808181608083E8EDF0E019 -:1028100080818F77808319BCA7EDB0E08C918E7F8B -:102820008C9380818F7E80831092120308950F9382 -:102830001F93CF93DF930E946B140E947314C8ED13 -:10284000D0E088818F7788838881806888838881B9 -:102850008F7D888319BC1092130310920F0310927E -:1028600011031092100300EE10E0F80180818B7FBD -:10287000808388818160888342E060E080E00E94FC -:102880007713E1EEF0E080818E7F8083E2EEF0E06E -:10289000808181608083808188608083F80180816D -:1028A0008E7F8083888180618883DF91CF911F91A3 -:1028B0000F910895E8EDF0E080818F7E8083E7ED51 -:1028C000F0E080818160808384E082BF81E080933A -:1028D00012030C941714E8EDF0E080818E7F808362 -:1028E0001092E20008951092DA001092E10008952B -:1028F0001F920F920FB60F9211242F933F934F9375 -:102900005F936F937F938F939F93AF93BF93EF9357 -:10291000FF938091E10082FF0BC08091E20082FF73 -:1029200007C08091E1008B7F8093E1000E94DF1659 -:102930008091DA0080FF1FC08091D80080FF1BC00B -:102940008091DA008E7F8093DA008091D90080FF39 -:102950000DC080E189BD82E189BD09B400FEFDCFD3 -:1029600081E0809313030E94E31005C019BC10920C -:1029700013030E94F1108091E10080FF19C0809143 -:10298000E20080FF15C08091E2008E7F8093E2001C -:102990008091E20080618093E2008091D8008062A3 -:1029A0008093D80019BC85E0809313030E94F51032 -:1029B0008091E10084FF30C08091E20084FF2CC050 -:1029C00080E189BD82E189BD09B400FEFDCF80911F -:1029D000D8008F7D8093D8008091E1008F7E809316 -:1029E000E1008091E2008F7E8093E2008091E2001E -:1029F00081608093E20080910F03882311F084E0CE -:102A000007C08091E30087FD02C081E001C083E040 -:102A1000809313030E94F6108091E10083FF29C088 -:102A20008091E20083FF25C08091E100877F809341 -:102A3000E10082E08093130310920F038091E10084 -:102A40008E7F8093E1008091E2008E7F8093E20090 -:102A50008091E20080618093E20042E060E080E0EB -:102A60000E9477138091F00088608093F0000E94AC -:102A7000F410FF91EF91BF91AF919F918F917F9152 -:102A80006F915F914F913F912F910F900FBE0F90DB -:102A90001F9018951F920F920FB60F9211242F932B -:102AA0003F934F935F936F937F938F939F93AF93D6 -:102AB000BF93CF93DF93EF93FF93C091E900CF7063 -:102AC0008091EC00D82FD17080FDD0E81092E90001 -:102AD0008091F000877F8093F00078940E948E159B -:102AE0001092E9008091F00088608093F000CD2B77 -:102AF000CF70C093E900FF91EF91DF91CF91BF912B -:102B0000AF919F918F917F916F915F914F913F9185 -:102B10002F910F900FBE0F901F9018951F93CF937A -:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E -:102B3000CDBFE4E1F3E088E08E0F9091F100919336 -:102B40008E13FBCF0E940C118091E80083FF1FC100 -:102B50008091140390911503492F50E04A3051059C -:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB -:102B700081F0823809F00BC1809118038F70809327 -:102B8000E9008091EB0085FB882780F91092E9002D -:102B900006C0809110039091110391118260909171 -:102BA000E800977F9093E8008093F1001092F10085 -:102BB000C8C0282F2D7F09F0EAC0882319F0823081 -:102BC00061F0E5C080911603813009F0E0C09330D8 -:102BD00009F080E0809311032BC0809116038111CE -:102BE00027C0809118038F7009F4D1C08093E90049 -:102BF0002091EB0020FF1CC0933021F48091EB006A -:102C0000806214C09091EB0090619093EB0021E002 -:102C100030E0A90102C0440F551F8A95E2F74093A6 -:102C2000EA001092EA008091EB0088608093EB004C -:102C30001092E9008091E800877F86C08111A7C0CB -:102C4000109116031F778091E3008078812B809389 -:102C5000E3008091E800877F8093E8000E94AC1336 -:102C60008091E80080FFFCCF8091E3008068809332 -:102C7000E300111102C082E001C083E080931303DE -:102C800086C08058823008F082C0809116039091EF -:102C900017038C3D53E0950779F583E08A838AE238 -:102CA00089834FB7F894DE01139620E03EE051E2AD -:102CB000E32FF0E050935700E49120FF03C0E2952A -:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 -:102CD00001C0C0968D939D932F5F243149F74FBF5C -:102CE0008091E800877F8093E8006AE270E0CE017F -:102CF00001960E94B31214C0AE014F5F5F4F609106 -:102D000018030E94FA11BC01009709F440C0909189 -:102D1000E800977F9093E80089819A810E941613BA -:102D20008091E8008B778093E80031C0803879F596 -:102D30008091E800877F8093E80080910F03809363 -:102D4000F1008091E8008E778093E8000E94AC1338 -:102D50001EC081111CC0909116039230C0F4809166 -:102D6000E800877F8093E80090930F030E94AC13E4 -:102D700080910F03811106C08091E30087FD02C09E -:102D800081E001C084E0809313030E94F8108091D9 -:102D9000E80083FF0AC08091E800877F8093E80005 -:102DA0008091EB0080628093EB00AA960FB6F894B6 -:102DB000DEBF0FBECDBFDF91CF911F910895089563 -:102DC000CF93809113038823A1F0C091E900CF70C5 -:102DD0009091EC00892F817090FD80E8C82B1092B3 -:102DE000E9008091E80083FD0E948E15CF70C093AA -:102DF000E900CF91089590939302809392020895F1 -:102E0000E0919202F0919302309721F00190F081CD -:102E1000E02D099480E00895E0919202F0919302F0 -:102E2000309721F00280F381E02D09940895E0911C -:102E30009202F0919302309721F00480F581E02D09 -:102E4000099408952091900230919102821793077E -:102E500071F09093910280939002E0919202F09130 -:102E60009302309721F00680F781E02D09940895B0 -:102E700020918E0230918F028217930771F0909308 -:102E80008F0280938E02E0919202F091930230972C -:102E900021F00084F185E02D0994089508950C94A3 -:102EA0004E170E94D5220E9426090E945B230C9493 -:102EB0000A285F926F927F928F929F92AF92BF92F9 -:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 -:102ED00000D000D01F92CDB7DEB70E946B099DE9EC -:102EE000C92E92E0D92E03E010E0AA24A394B12CBD -:102EF000502E802F0E94E6094C01F60172906290DC -:102F00006F016826792661147104A1F4015011093A -:102F100078F78FEF89838A831B820E94DE2281608B -:102F2000782F9D838C8349815A816B818D810E948A -:102F3000091838C08091F20281FD0E94EF092BE050 -:102F400030E07501022E02C0EE0CFF1C0A94E2F77D -:102F5000C70186219721892B09F129835A828E2066 -:102F60009F2091E0892809F490E09B830E94DE2253 -:102F70008160782F9D838C8349815A816B818D81FB -:102F80000E940918000F111FF801EB56FD4F8081B8 -:102F90009181E826F926F182E08204C021503109AE -:102FA00080F6B4CF0E944225109194020E9400172F -:102FB0001817D1F00E940017809394020F900F9081 -:102FC0000F900F900F90DF91CF911F910F91FF9075 -:102FD000EF90DF90CF90BF90AF909F908F907F90B9 -:102FE0006F905F900C9410090F900F900F900F90BE -:102FF0000F90DF91CF911F910F91FF90EF90DF9095 -:10300000CF90BF90AF909F908F907F906F905F9088 -:103010000895CF93DF93CDB7DEB72B970FB6F89413 -:10302000DEBF0FBECDBF4F83588769877A878B87F6 -:10303000DE01119686E0FD0111928A95E9F785E09F -:10304000FE01379601900D928A95E1F749815A81E8 -:103050006B817C818D819E810E94801E2B960FB694 -:10306000F894DEBF0FBECDBFDF91CF910895CF930F -:10307000882309F4C2C0C82F823859F40E9400176F -:1030800081FDBBC089E30E945A210E94272289E367 -:103090000CC0833879F40E94001780FDAEC083E530 -:1030A0000E945A210E94272283E50E949C21CF91F1 -:1030B0000C942722843859F40E94001782FD9DC089 -:1030C00087E40E945A210E94272287E4EECF8CEFEA -:1030D0008C0F813A48F48C2F0E94722781118DC089 -:1030E0008C2F0E945A21E3CF80E28C0F883048F465 -:1030F000C77081E001C0880FCA95EAF70E94E021FD -:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 -:1031100031F083E890E005C081E890E002C082E8E9 -:1031200090E0CF910C94221788E58C0F833108F042 -:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 -:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 -:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 -:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 -:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B -:1031800090E038C082EE90E035C089EE90E032C029 -:103190008AEE90E02FC085EB90E02CC086EB90E0AB -:1031A00029C087EB90E026C08CEC90E023C08DEC2A -:1031B00090E020C083E891E01DC08AE891E01AC049 -:1031C00082E991E017C084E991E014C081E292E0C5 -:1031D00011C083E292E00EC084E292E00BC085E26F -:1031E00092E008C086E292E005C087E292E002C069 -:1031F0008AE292E0CF910C943817CF9108958823FA -:1032000009F44BC0823859F40E94001781FF45C071 -:1032100089E30E945A210E94272289E30CC0833847 -:1032200071F40E94001780FF38C083E50E945A2184 -:103230000E94272283E50E949C210C942722843837 -:1032400059F40E94001782FF28C087E40E945A2187 -:103250000E94272287E4EFCF9CEF980F913A58F312 -:1032600090E2980F983050F4877091E001C0990F68 -:103270008A95EAF7892F0E94E621DFCF9BE5980F18 -:10328000933020F480E090E00C942217885A833128 -:1032900020F480E090E00C9438170895882321F002 -:1032A0000E94E0210C9427220895882321F00E9497 -:1032B000E6210C94272208957F928F929F92AF92DD -:1032C000BF92CF92DF92EF92FF920F931F93CF9313 -:1032D000DF931F92CDB7DEB77C01C62E772EFC019F -:1032E000058102950F70128111110E94FD210E942B -:1032F0005321882379F0112369F080E28C0D883006 -:1033000048F082E00E943C210E94532191E0D82E97 -:10331000D92601C0D12CE72DE295EF70F0E0E05AFC -:10332000FF4F0C949B2C872D807F072D0F708823D7 -:1033300011F00295007F112389F0002309F499C14F -:1033400080E28C0D883020F4802F0E94E02103C0A1 -:10335000802F0E94F0210E9427228BC18C2D0E9479 -:10336000FF18002309F4C3C180E28C0D883020F4DB -:10337000802F0E94E62103C0802F0E94F6210E9428 -:103380002722B5C1872D807F972D9F70803211F441 -:10339000892F03C0892F8295807FCC2021F0F1E016 -:1033A000CF16A1F01DC0112339F0002319F101300F -:1033B00009F50E9410229BC1002319F0013009F485 -:1033C00096C189830E941322898110C1112321F0A3 -:1033D000063008F08CC10EC0053008F088C106C167 -:1033E000112359F0002331F0F701958190FF41C17D -:1033F0009F7095830E944E197AC1002309F4F6C08C -:103400003EC1872D86958695837090E0009719F0D0 -:10341000019761F06CC1112321F08C2D972D9370D1 -:1034200002C080E090E00E94221761C1112321F0C8 -:103430008C2D972D937002C080E090E00E94381789 -:1034400056C18C2D112319F00E944A2402C00E94FB -:10345000B2240E9437254BC1872D837009F052C0DA -:10346000111145C18C2D829586958770880F880F24 -:103470009C2D9F70892E912CA12CB12C082E04C05C -:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 -:103490000FE010E020E030E0B901A80104C0440FC3 -:1034A000551F661F771F8A95D2F7CB01BA01609529 -:1034B00070958095909503C060E070E0CB01272D5A -:1034C00026952695237030E02230310569F02330AF -:1034D000310589F0682979298A299B29213031050C -:1034E00071F00E94C81F03C1682979298A299B2984 -:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 -:10350000AC1FF5C0112319F0872D817001C086957D -:10351000882309F4ECC08C2D829586958770880FDE -:10352000880F9C2D9F70892E912CA12CB12C082ED8 -:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 -:1035400014C00FE010E020E030E0B901A80104C091 -:10355000440F551F661F771F8A95D2F7CB01BA011A -:10356000609570958095909503C060E070E0CB0108 -:10357000272D269526952370422F50E04230510585 -:1035800069F04330510589F0682979298A299B29F6 -:103590004130510571F00E94A220A9C06829792903 -:1035A0008A299B290E94BE20A2C00E94A220C50198 -:1035B000B4010E9486209BC08C2D90E0FC01E05E4F -:1035C000F109E531F10508F050C0E059FF4F0C94C6 -:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 -:1035E0001F20802F07CF0E944020802F0E94551956 -:1035F0007EC0112341F0053008F079C0872D8F710E -:103600000E94652074C0063008F071C0F7CF112306 -:1036100039F0872D8F710E941F2069C01123C9F3D3 -:10362000872D8F710E94402062C0112329F0872DC1 -:103630008F710E940A205BC00E94002058C0112395 -:1036400051F0172D1F71812F0E941F2063E0812FE1 -:103650000E9433214CC081E00E943C21023008F4DA -:1036600046C082E00E943C2142C0112331F0002379 -:1036700081F28C2D0E9437183AC0002389F28C2DDC -:103680000E94FF1834C0472D4F706C2DC7010E9457 -:10369000EE050E94241F2BC0111129C0472D4F7029 -:1036A00050E042305105B9F04CF44115510581F01C -:1036B00041305105E1F40E94322819C043305105D0 -:1036C00069F04430510599F48C2D0E9484280FC074 -:1036D0000E941B280CC00E944E2809C00E9461282D -:1036E00006C0472D4F706C2DC7010E94F105DD20EB -:1036F000F9F00E942F2180FD1BC0F70112820E9469 -:1037000029210E941F20C7010E94A71B0E94292176 -:103710000F90DF91CF911F910F91FF90EF90DF906D -:10372000CF90BF90AF909F908F907F900C9440204F -:103730000F90DF91CF911F910F91FF90EF90DF904D -:10374000CF90BF90AF909F908F907F9008950F93F0 -:103750001F93CF93DF93EC01888199812B813C816A -:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 -:10377000ED03882371F0688179818A810E94252177 -:103780008C010E94DA200E94A11FB801CE010E9484 -:103790005C19DF91CF911F910F9108950E94FD2137 -:1037A0000E940D220E94D2210E9427220E94E82519 -:1037B0000E94372580E090E00E94221780E090E090 -:1037C0000C9438170E94ED210C94CE1B0E941A21F4 -:1037D000292F22952F7030E02C3031054CF42A30FF -:1037E00031056CF42250310922303105A8F407C0AC -:1037F0002C30310569F02F30310551F00DC0803F7C -:1038000069F018F4803E40F409C0843F29F406C0F2 -:1038100093FB882780F9089580E0089581E008955A -:10382000CF93DF9300D000D01F92CDB7DEB70F90BB -:103830000F900F900F900F90DF91CF910895CF933D -:10384000DF9300D000D000D0CDB7DEB726960FB6FC -:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 -:10386000CF93DF93C0919D0216E080919E02C8170E -:1038700099F0D0E01C9FF0011D9FF00D1124E1563E -:10388000FD4F4081518162817381848195810E94C5 -:103890001F1C2196C770E9CFDF91CF911F9108952A -:1038A0004091CF025091D0026091D1027091D2022A -:1038B0008091D3029091D4020C941F1C8091D40269 -:1038C00082958F7009F054C08091D102882309F449 -:1038D0004FC080919D02A0919E026091CF02709195 -:1038E000D0024091D2025091D302B6E08A1709F477 -:1038F0003FC090E041155105C1F17F3F11F46F3F8A -:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 -:10391000218172132AC02081621327C022812111C4 -:1039200024C0238134812417350710F42150310934 -:10393000241B350B283C3105C0F42091D4022F7094 -:1039400020612093D40226E0289FF001299FF00DEA -:103950001124EC55FD4F80818F70806180838FEC46 -:1039600092E00E94A71B0C942F1C01968770BECF7B -:103970000895CF92DF92EF92FF920F931F93CF9310 -:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 -:10399000CDBF8C0185E0F801DE011D9601900D92EE -:1039A0008A95E1F7D8014C9111965C911197129686 -:1039B0006C9112971396CD90DC9014973091CF02B2 -:1039C0007091D0028091D2029091D302009709F4B5 -:1039D0006BC17F3F19F43F3F09F466C1E090D1020B -:1039E000EE2009F4C0C02091D402C816D90628F0F0 -:1039F000F601E81BF90BCF0104C0809590958C0D62 -:103A00009D1DFF24F394883C910578F0F12C207FD4 -:103A100009F0C6C07C2DD98AC88A89890E94101CE9 -:103A20008FEC92E00E94A71BB1C0822F807F09F02B -:103A300046C0751314C0341312C0611110C02F702A -:103A400020612093D4020E94501C8FEC92E00E94CF -:103A5000A71B8091D402D80115968C932EC0CD2837 -:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 -:103A700080919D0220919E0236E0821709F45AC07F -:103A800090E0389FF001399FF00D1124E156FD4F71 -:103A90007181571306C07081471303C07281711181 -:103AA00003C001968770E9CFF62E662309F418C18A -:103AB0008091D40281608093D402F12C11C17513DE -:103AC00008C0341306C0611104C08091D402D8012B -:103AD000C3C04D875E878D859E856A8B0E94E61BDD -:103AE0006A898823E1F16623D1F12091D402822FE3 -:103AF00082958F7090E0029774F08091CF02909140 -:103B0000D00298878F831986DB86CA862C87CE01E0 -:103B100007960E94A71B86E0F801AFECB2E0019087 -:103B20000D928A95E1F70E945E1C0E94501CFF24B2 -:103B3000F394D6C04D875E878D859E850E941A219D -:103B4000292F22952F7030E0223031050CF0BCC0B7 -:103B50009F7009F0B6C0805E883008F4C1C0C8010B -:103B60000E94A71BE4CFC816D90608F453C0F6017B -:103B7000E81BF90BCF01883C910508F450C0F12CEB -:103B80007C2DD98AC88A89890E94101CEFECF2E04A -:103B900086E0DF011D928A95E9F70E94501CA0C0C3 -:103BA000751314C0341312C0611110C08091D40277 -:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 -:103BC000DF011D928A95E9F7FE2C8AC04D875E873A -:103BD0008D859E856A8B0E94E61B6A89882309F47D -:103BE000BECF662309F4BBCF2091D402822F8295E9 -:103BF0008F7090E002970CF48ECF8091CF0290915D -:103C0000D0029A8389831B82DD82CC822E83CE01EF -:103C100001967FCF809590958C0D9D1DACCFF62E93 -:103C2000662309F49CCF75132EC034132CC0209149 -:103C3000D40220FD1FC0822F82958F70D9F0D80149 -:103C400015962C9315978F3049F08F5F982F92958A -:103C5000907F822F8F70892B15968C93C8010E94BC -:103C6000A71B86E0F801AFECB2E001900D928A95B7 -:103C7000E1F793CF86E0F801AFECB2E001900D924E -:103C80008A95E1F72DC04D875E878D859E850E94C0 -:103C9000E61B811140CF8091D40281608093D402D1 -:103CA000C8010E94A71B1CC0662309F458CF4D878A -:103CB0005E878D859E850E94E61B882309F44FCF81 -:103CC0002ACF811148CF0CC0243031050CF047CFEA -:103CD0009F7009F440CFF8019581907F09F03BCFA8 -:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 -:103CF000CF911F910F91FF90EF90DF90CF9008959B -:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 -:103D1000DEBF0FBECDBF4F83588769877A878B87F9 -:103D20009C87CE0107960E94B91C882369F08F8179 -:103D300098852A853B85232BF1F19F3F09F063C0CD -:103D40008F3F09F060C037C086E0FE013796DE0184 -:103D5000119601900D928A95E1F76F817885EA8539 -:103D6000FB85309741F17F3F11F46F3F21F12091A6 -:103D70009E0230E0C90101968770992740919D020B -:103D800050E08417950709F447C069837A83FD835F -:103D9000EC8396E0929FD001939FB00D1124A15621 -:103DA000BD4FFE01319601900D929A95E1F78093F7 -:103DB0009E020E942F1C16E080919D0290919E020F -:103DC0008917C1F1189FC001112481569D4F0E948F -:103DD000B91C882379F1E0919D021E9FF001112406 -:103DE000E156FD4F408151816281738184819581CB -:103DF0000E941F1C80919D0290E001968770992778 -:103E000080939D02D9CF4F81588569857A858B85AE -:103E10009C850E941F1CCFCF0E94E21B10929E0225 -:103E200010929D02EFECF2E086E0DF011D928A9590 -:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 -:103E4000DF91CF911F910895EF92FF920F931F93EF -:103E5000CF93DF938C01009709F46CC0F12CEE2412 -:103E6000E394E8012196F8018491843740F484308A -:103E700008F051C0813081F0823019F15BC0853784 -:103E800009F444C0A8F19CE7980F903708F052C09D -:103E90008F770E94FF1841C00E5F1F4FFE01C49133 -:103EA00080E28C0F883048F4C7708E2D01C0880FD7 -:103EB000CA95EAF70E94002214C08C2F0E9437187E -:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 -:103ED00058F4C7708E2D01C0880FCA95EAF70E946A -:103EE00006220E9427221AC08C2F0E94FF1816C09B -:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C -:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 -:103F1000FE01F49003C00E9437188E018F2D882374 -:103F200009F49FCFEFE9FFE03197F1F700C00000FF -:103F30008150F5CFDF91CF911F910F91FF90EF90BE -:103F4000089508956093D9027093DA028093DB029A -:103F50009093DC020C94CE1B0F931F930091D90217 -:103F60001091DA022091DB023091DC02DC01CB01FE -:103F7000802B912BA22BB32B8093D9029093DA0242 -:103F8000A093DB02B093DC021F910F910C94CE1B27 -:103F90000F931F930091D9021091DA022091DB0256 -:103FA0003091DC02DC01CB0180239123A223B323D7 -:103FB0008093D9029093DA02A093DB02B093DC02E3 -:103FC0001F910F910C94CE1B0F931F930091D90258 -:103FD0001091DA022091DB023091DC02DC01CB018E -:103FE00080279127A227B3278093D9029093DA02E2 -:103FF000A093DB02B093DC021F910F910C94CE1BB7 -:104000001092D5021092D6021092D7021092D802C6 -:104010000C94CE1B41E050E060E070E004C0440F1F -:10402000551F661F771F8A95D2F74093D50250938C -:10403000D6026093D7027093D8020C94CE1B41E055 -:1040400050E060E070E004C0440F551F661F771F0A -:104050008A95D2F78091D5029091D602A091D7028D -:10406000B091D802482B592B6A2B7B2B4093D50259 -:104070005093D6026093D7027093D8020C94CE1B53 -:1040800041E050E060E070E004C0440F551F661F3F -:10409000771F8A95D2F740955095609570958091DD -:1040A000D5029091D602A091D702B091D8024823B0 -:1040B00059236A237B234093D5025093D602609301 -:1040C000D7027093D8020C94CE1B41E050E060E020 -:1040D00070E004C0440F551F661F771F8A95D2F702 -:1040E0008091D5029091D602A091D702B091D802CA -:1040F000482759276A277B274093D5025093D60239 -:104100006093D7027093D8020C94CE1B0F931F9329 -:104110000091D5021091D6022091D7023091D80299 -:10412000DC01CB01802B912BA22BB32B8093D502EA -:104130009093D602A093D702B093D8021F910F910B -:104140000C94CE1B0F931F930091D5021091D602B1 -:104150002091D7023091D802DC01CB01802391233A -:10416000A223B3238093D5029093D602A093D702C3 -:10417000B093D8021F910F910C94CE1B0F931F93F5 -:104180000091D5021091D6022091D7023091D80229 -:10419000DC01CB0180279127A227B3278093D5028A -:1041A0009093D602A093D702B093D8021F910F919B -:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 -:1041C0001F93CF93DF938C01C090D902D090DA0275 -:1041D000E090DB02F090DC028091D5029091D60253 -:1041E000A091D702B091D802C82AD92AEA2AFB2A7C -:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B -:10420000979587950A94D2F780FF06C0B8018C2F46 -:104210000E947608019721F4219760F780E001C0A1 -:104220008C2FDF91CF911F910F91FF90EF90DF9036 -:10423000CF900895CF93DF93EC010E94DB20BE0165 -:104240000E947608DF91CF910895CB010E941A2138 -:1042500008958091DD0285958595859508958091D5 -:10426000DD028770089598E0899F90011124262B24 -:104270002093DD020C941F202091DD028095822383 -:104280008093DD02982F977069F430E0482F55270E -:1042900047FD50952417350729F085958595859517 -:1042A0000C94402008959091DD02977081E009F40C -:1042B00080E0089590911501992321F090911601C5 -:1042C000911109C02091170130911801F90132961E -:1042D0009FEF40E01FC0982F9695969596959F303A -:1042E00050F5E0911701F0911801E90FF11D877069 -:1042F00021E030E0A90102C0440F551F8A95E2F782 -:10430000CA019181892B818308959F3F39F04F5FC6 -:104310004E3041F051915813F8CF0DC05111F7CFE5 -:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B -:10433000FA9582830895089590911501992321F0AB -:1043400090911601911109C0209117013091180127 -:10435000F9013296205F3F4F1FC0982F9695969592 -:1043600096959F30F0F4E0911701F0911801E90F54 -:10437000F11D877021E030E0A90102C0440F551FF4 -:104380008A95E2F7CA0180959181892381830895F6 -:104390003196E217F30729F090819813F9CF108234 -:1043A000F7CF089581E090E0E0911701F0911801B6 -:1043B000E80FF91F1082019680319105A9F7089541 -:1043C0009091F102892B8093F1020895809590914C -:1043D000F10289238093F10208951092F102089569 -:1043E0009091F002892B8093F0020895809590912E -:1043F000F00289238093F00208951092F00208954C -:104400009091EF02892B8093EF020895809590910F -:10441000EF0289238093EF0208951092EF0208952E -:104420008093DE0208951092DE02089580911701B4 -:1044300090911801FC0131969C01205F3F4F80E074 -:10444000919191118F5FE217F307D1F70895E091F1 -:104450001701F09118018091F1028083E09117011A -:10446000F091180190818091F002892B8083E09176 -:104470001701F091180190818091EF02892B8083C0 -:104480008091DE02882361F0E0911701F09118011C -:104490009081892B80830E94162281111092DE0266 -:1044A00080911701909118010C940C1720E000974F -:1044B00039F0AC0141505109842395232F5FF7CF88 -:1044C000822F089580911303843039F11092F30202 -:1044D00020E488E190E00FB6F894A89580936000FE -:1044E0000FBE2093600080E00E94F10280E00E94F5 -:1044F000100983B7817F846083BF83B7816083BFE6 -:104500007894889583B78E7F83BF88E10FB6F8943F -:1045100080936000109260000FBE08950895089582 -:1045200080E00E94F1020E948E220E946B090E948C -:104530008F220E94F00991E0811101C090E0892F43 -:1045400008950E94E21B80E00E94F1020E940A2866 -:104550000E9400170C9410091F920F920FB60F9231 -:1045600011248F939F93AF93BF938091F302811196 -:1045700013C08091F4029091F502A091F602B091DF -:10458000F7024196A11DB11D8093F4029093F502AC -:10459000A093F602B093F702BF91AF919F918F91D4 -:1045A0000F900FBE0F901F90189582E084BD93E08E -:1045B00095BD9AEF97BD80936E0008952FB7F8943C -:1045C0008091F4029091F502A091F602B091F70269 -:1045D0002FBF0895CF92DF92EF92FF920F931F9318 -:1045E0002FB7F8944091F4025091F5026091F602D1 -:1045F0007091F7022FBF6A017B01EE24FF248C012A -:1046000020E030E0C016D106E206F30610F4415077 -:1046100051099A01281B390BC9011F910F91FF9075 -:10462000EF90DF90CF9008951F920F920FB60F92E8 -:1046300011248F939F93AF93BF938091F402909135 -:10464000F502A091F602B091F7020196A11DB11DED -:104650008093F4029093F502A093F602B093F702D0 -:10466000BF91AF919F918F910F900FBE0F901F90B0 -:1046700018950E94FD13F8942FEF87EA91E62150D8 -:1046800080409040E1F700C0000087E090EBDC0143 -:1046900080931E0390931F03A0932003B0932103E4 -:1046A0009CE088E10FB6F894A895809360000FBE57 -:1046B00090936000FFCF0E949A23811102C00E9454 -:1046C00076230E94A5238093F2020E94AD2380935B -:1046D0001C0387FB882780F9809316010E94A92379 -:1046E000682F70E080E090E00C94A21F6DEE7EEFEA -:1046F00080E090E00E94C12C60E082E090E00E94A7 -:10470000AF2C60E083E090E00E94AF2C60E084E09A -:1047100090E00E94AF2C60E085E090E00E94AF2C1A -:1047200060E086E090E00E94AF2C6FEF87E090E0C1 -:104730000C94AF2C80E090E00E94A92C21E08D3EEB -:104740009E4F09F020E0822F089582E090E00C94C3 -:10475000A12C83E090E00C94A12C84E090E00C94D8 -:10476000A12C682F84E090E00C94AF2C86E090E0C0 -:104770000C94A12C682F86E090E00C94AF2C87E07D -:1047800090E00C94A12C682F87E090E00C94AF2C63 -:104790008091FA0280FF0BC060911C0185E0689F48 -:1047A000B001112475956795759567952BC081FFAC -:1047B00009C060911C0185E0689FB00111247595C6 -:1047C000679520C082FF07C060911C0185E0689F4B -:1047D000B001112417C09091FB029923D1F0609190 -:1047E0001B01961788F720911C0185E0289F9001F6 -:1047F0001124929FA001939F500D112470E0CA01D3 -:104800000E94872C6038710540F46115710539F0FC -:1048100002C065E070E0862F08958FE7089581E07B -:1048200008958091FA0280FF08C060911A0170E03B -:10483000759567957595679521C081FF06C0609154 -:104840001A0170E07595679519C082FF04C06091E8 -:104850001A0170E010C09091FB029923C1F06091A1 -:1048600019019617A0F780911A01899FC0011124A0 -:1048700070E00E94872C6038710528F4611571057D -:1048800021F0862F08958FE7089581E0089561E073 -:1048900070E0F4CF803F21F40E94C823819504C0CA -:1048A000813F29F40E94C8238093FE020895823F2D -:1048B00021F40E94C823819504C0833F29F40E94FB -:1048C000C8238093FD020895893F19F40E941124A2 -:1048D00005C08A3F31F40E94112481958093FF0224 -:1048E00008958B3F21F40E941124819504C08C3FD0 -:1048F00029F40E941124809300030895843F21F439 -:104900008091FC02816017C0853F21F48091FC02F8 -:10491000826011C0863F21F48091FC0284600BC04C -:10492000873F21F48091FC02886005C0883F31F404 -:104930008091FC0280618093FC0208958D3F21F4F8 -:104940008091FA0281600BC08E3F21F48091FA02BF -:10495000826005C08F3F29F48091FA0284608093C1 -:10496000FA020895803F39F48091FE0287FF6CC0FF -:104970001092FE0269C0813F29F48091FE02181650 -:10498000BCF362C09091FD02823F29F497FF5CC0A6 -:104990001092FD0259C0833F19F41916CCF354C08C -:1049A000893F41F48091FF0218160CF04DC010921F -:1049B000FF024AC08A3F29F48091FF0287FF44C06A -:1049C000F6CF8B3F39F48091000387FF3DC01092F2 -:1049D00000033AC08C3F29F4809100031816BCF301 -:1049E00033C0843F21F48091FC028E7F17C0853F45 -:1049F00021F48091FC028D7F11C0863F21F48091CB -:104A0000FC028B7F0BC0873F21F48091FC02877FE3 -:104A100005C0883F31F48091FC028F7E8093FC02B8 -:104A200013C08D3F21F48091FA028E7F0BC08E3F20 -:104A300021F48091FA028D7F05C08F3F29F4809187 -:104A4000FA028B7F8093FA028091FD0281110EC0E1 -:104A50008091FE0281110AC08091FF02811106C07F -:104A600080910003811102C01092FB0208958CEF27 -:104A700092E00E9417170E94DE229093F902809321 -:104A8000F80208951F93CF93DF938091F8029091DD -:104A9000F9020E94EA22AC019091FB02992321F0D5 -:104AA00020911D0130E006C020911E018AE0289F60 -:104AB000900111244217530708F486C08091FD022B -:104AC000C091FE02D091FF0210910003811107C036 -:104AD000C11176C0D11174C0111172C075C09F3F51 -:104AE00019F09F5F9093FB02181624F40E94C823CC -:104AF0008093FD028091FD0287FF05C00E94C823BC -:104B000081958093FD021C1624F40E94C823809393 -:104B1000FE028091FE0287FF05C00E94C823819596 -:104B20008093FE026091FD02662339F1C091FE027E -:104B3000CC2319F1772767FD7095872F972F0E9457 -:104B4000A92923E333E343E35FE30E94B92A0E94E8 -:104B500076296093FD026C2F772767FD7095872F6C -:104B6000972F0E94A92923E333E343E35FE30E94E5 -:104B7000B92A0E9476296093FE021D1624F40E9431 -:104B800011248093FF028091FF0287FF05C00E94DD -:104B9000112481958093FF02111624F40E941124A0 -:104BA000809300038091000387FF05C00E941124B9 -:104BB000819580930003DF91CF911F910C9437254D -:104BC0009F3F09F08ECF96CFDF91CF911F9108952F -:104BD000ECEFF2E085E0DF011D928A95E9F7109293 -:104BE000FB021092FA020895833081F128F481309B -:104BF00059F08230D1F00895853009F449C0B8F1F8 -:104C0000863009F456C0089580911E01262F30E0A9 -:104C1000280F311D2F3F310524F4680F60931E01CA -:104C200008958FEF80931E01089580911D01262F16 -:104C300030E0280F311D2F3F310524F4680F6093B9 -:104C40001D0108958FEF80931D01089580911C012F -:104C5000262F30E0280F311D2F3F310524F4680F37 -:104C600060931C0108958FEF80931C01089580913B -:104C70001B01262F30E0280F311D2F3F310524F472 -:104C8000680F60931B0108958FEF80931B010895B7 -:104C900080911A01262F30E0280F311D2F3F31055A -:104CA00024F4680F60931A0108958FEF80931A011E -:104CB000089580911901262F30E0280F311D2F3FD4 -:104CC000310524F4680F6093190108958FEF8093E4 -:104CD00019010895833011F128F4813049F08230B0 -:104CE00091F00895853081F120F18630C1F1089569 -:104CF00080911E01681720F4861B80931E01089581 -:104D000010921E01089580911D01681720F4861BE2 -:104D100080931D01089510921D01089580911C013A -:104D2000681720F4861B80931C01089510921C01C3 -:104D3000089580911B01681720F4861B80931B0146 -:104D4000089510921B01089580911A01681720F4AC -:104D5000861B80931A01089510921A01089580917C -:104D60001901681720F4861B809319010895109289 -:104D7000190108950F931F93873208F048C08E31B0 -:104D800008F08DC0803109F477C008F5873009F448 -:104D900061C068F4863009F09DC08091F202817F85 -:104DA0008E7F8093F20281E08093020394C08B3067 -:104DB00009F489C08E3009F08DC08091F20282FB27 -:104DC000222720F991E0922790FB82F95EC086317C -:104DD00009F479C060F4813109F07CC00E94E21BC3 -:104DE0009091160181E08927809316016CC089316A -:104DF00009F469C08B3109F06DC08091F20281FB2A -:104E0000222720F991E0922790FB81F93EC0883358 -:104E100009F459C050F4893209F457C0853309F4B4 -:104E200054C0873209F451C055C0833409F44DC0D1 -:104E300028F48A3308F44EC0895332C0883409F00C -:104E400049C00E94E21B0E94200A0E94E4030E94C3 -:104E5000392339C09091F202892F8095817080FBAF -:104E600090F929F0966098609093F20234C0997F8F -:104E7000977F9093F20227C08091F20283FB222752 -:104E800020F991E0922790FB83F98093F202992315 -:104E9000D1F08091F20281608093F20214C08D51B2 -:104EA00041E050E060E070E08A019B0104C0000F27 -:104EB000111F221F331F8A95D2F7C901B8010E9422 -:104EC000A21F0E94E21B81E006C061E070E080E06A -:104ED00090E0F5CF80E01F910F91089580E0089554 -:104EE00080E00895CF93C82F80910203813069F04C -:104EF00018F08230C9F184C0E0911701F0911801D7 -:104F00008081823209F07EC007C0E0911701F091E4 -:104F100018018081823261F48C2F0E946E278111EA -:104F200004C08C2F0E94BA261DC081E090E01AC0F8 -:104F30008C2F0E947027811114C0C43179F048F47D -:104F4000CB3079F0C03109F061C082E08093020378 -:104F500008C0C93219F0C83321F058C010920203BA -:104F600055C081E0817054C0C93291F120F5C4313F -:104F700079F1B0F4C73009F047C08EE180931E018B -:104F800082E380931D018AE080931C0184E1809379 -:104F90001B0188E080931A0188E28093190134C0D4 -:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 -:104FB0008093010329C0CE34E9F020F4CB3421F5ED -:104FC0006AE013C0C13579F0C235F1F461E00DC07B -:104FD00080910103882319F01092010315C081E02C -:104FE0008093020315C061E006C0809101030E9416 -:104FF000F4250AC06AE0809101030E946A2604C079 -:105000001092020380E004C081E002C080E0AACFD9 -:10501000CF9108950E949A23811102C00E947623A5 -:105020000E94B62380931D0380FF02C0869501C0B5 -:1050300080E00C94F10280911D03982F9695292F02 -:1050400030E0233031054CF49F5F990F8170892B3C -:10505000816080931D030E94BA2380911D03869571 -:105060000C94F10280911D03982F969591F0915820 -:10507000990F8170892B80931D038E7F91E009F435 -:1050800090E080911D0390FB80F980931D030E94A6 -:10509000BA2380911D0386950C94F10280911D0323 -:1050A000982F909590FB80F980931D030E94BA235E -:1050B00080911D0380FF02C0869501C080E00C94A2 -:1050C000F10290911D03892F86958F5F8F779170E4 -:1050D000843028F4880F892B80931D0302C090939D -:1050E0001D0380911D038E7F91E009F490E0809173 -:1050F0001D0390FB80F980931D030E94BA238091C9 -:105100001D0386950C94F10220911D03922F969514 -:105110008927982F990F822F8170892B80931D03E7 -:105120008E7F91E009F490E080911D0390FB80F95F -:1051300080931D030E94BA2380911D0386950C94D1 -:10514000F10280911D03869508955058BB27AA2728 -:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 -:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF -:10517000D3D180F3BA17620773078407950718F035 -:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 -:105190000B01B90190010C01CA01A0011124FF27E4 -:1051A000591B99F0593F50F4503E68F11A16F040DF -:1051B000A22F232F342F4427585FF3CF46953795DE -:1051C0002795A795F0405395C9F77EF41F16BA0BA3 -:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 -:1051E000661F771F881FC2F70EC0BA0F621F731F9A -:1051F000841F48F4879577956795B795F7959E3FF7 -:1052000008F0B3CF9395880F08F09927EE0F979584 -:105210008795089527D108F481E008950CD06BC1DB -:1052200063D140F05AD130F021F45F3F19F03EC114 -:10523000511195C14FC170D198F39923C9F35523EA -:10524000B1F3951B550BBB27AA2762177307840779 -:1052500038F09F5F5F4F220F331F441FAA1FA9F32F -:1052600033D00E2E3AF0E0E830D091505040E69521 -:10527000001CCAF729D0FE2F27D0660F771F881F82 -:10528000BB1F261737074807AB07B0E809F0BB0B71 -:10529000802DBF01FF2793585F4F2AF09E3F510595 -:1052A00068F004C15CC15F3FECF3983EDCF3869587 -:1052B00077956795B795F7959F5FC9F7880F911D0B -:1052C0009695879597F90895E1E0660F771F881FF7 -:1052D000BB1F621773078407BA0720F0621B730BAA -:1052E000840BBA0BEE1F88F7E095089504D06894FC -:1052F000B11135C1089518D188F09F5790F0B92F9A -:105300009927B751A0F0D1F0660F771F881F991F1A -:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF -:1053200008951CC1672F782F8827B85F39F0B93FDF -:10533000CCF3869577956795B395D9F73EF490951C -:105340008095709561957F4F8F4F9F4F0895E8949A -:1053500009C097FB3EF490958095709561957F4FBD -:105360008F4F9F4F9923A9F0F92F96E9BB2793956B -:10537000F695879577956795B795F111F8CFFAF47B -:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC -:1053900016C0882311F096E911C0772321F09EE80A -:1053A000872F762F05C0662371F096E8862F70E070 -:1053B00060E02AF09A95660F771F881FDAF7880F4A -:1053C0009695879597F9089588D018F011F08CD0AC -:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F -:1053E000E7FB6217730784079507A8F199F3E92F84 -:1053F000FF2788232AF03197660F771F881FDAF777 -:10540000952F5527442332F091505040220F331FDF -:10541000441FD2F7BB27E91BF50B621B730B840BF0 -:10542000B109C1F222F4620F731F841FB11D3197BD -:105430002AF0660F771F881FBB1FEFCF9150504097 -:105440005AF041F0882332F0660F771F881F915081 -:105450005040C1F7939530C08695779567959F5FCB -:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 -:1054700016161706E807F907C0F012161306E40718 -:10548000F50798F0621B730B840B950B39F40A2611 -:1054900061F0232B242B252B21F408950A2609F4EF -:1054A000A140A6958FEF811D811D089597F99F67F3 -:1054B00080E870E060E008959F3F31F0915020F463 -:1054C000879577956795B795880F911D96958795E0 -:1054D00097F908959FEF80EC089500240A9416161A -:1054E000170618060906089500240A9412161306D2 -:1054F000140605060895092E0394000C11F4882360 -:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B -:105510007F4F8F4F9F4F089557FD9058440F551F51 -:1055200059F05F3F71F04795880F97FB991F61F025 -:105530009F3F79F087950895121613061406551F9C -:10554000F2CF4695F1DF08C0161617061806991F08 -:10555000F1CF86957105610508940895E894BB27FD -:1055600066277727CB0197F908957CDF08F48FEF42 -:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 -:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF -:10559000D1F3950F50E0551F629FF001729FBB271A -:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 -:1055B0006627B00DA11D661F829F2227B00DA11D79 -:1055C000621F739FB00DA11D621F839FA00D611DFF -:1055D000221F749F3327A00D611D231F849F600D20 -:1055E000211D822F762F6A2F11249F5750408AF059 -:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 -:10560000881F91505040A9F79E3F510570F04ECF32 -:10561000A6CF5F3FECF3983EDCF3869577956795D0 -:10562000B795F795E7959F5FC1F7FE2B880F911D02 -:105630009695879597F90895FA01EE0FFF1F30961A -:105640002105310599F16115710561F48038BFE3D9 -:105650009B0749F168949038810561F08038BFEF6D -:105660009B0741F0992342F5FF3FE10531052105F4 -:1056700011F1E8940894E795D901AA2329F4AB2FF6 -:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F -:10569000F73950F019F0FF3A38F49F779F930CD008 -:1056A0000F9007FC905808953EF014CF60E070E032 -:1056B00080E89FE308954FE79F775F934F933F9371 -:1056C0002F939ED02F913F914F915F9152DF05C054 -:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C -:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C -:1056F0004EDF0F920F920F924DB75EB70F92C0D050 -:10570000EAE0F1E016D04F915F91EF91FF91E595BE -:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD -:10572000FA95E1F74195550B32D00F9007FE26C050 -:105730000895DF93CF931F930F93FF92EF92DF9221 -:105740007B018C01689405C0DA2EEF011EDFFE019B -:10575000E894A5912591359145915591AEF3EF01CE -:1057600006DDFE019701A801DA9479F7DF90EF904A -:10577000FF900F911F91CF91DF9108959B01AC0194 -:1057800060E070E080E89FE349CD90CE95CECCDE1E -:10579000E8F39923D9F3940F511DBBF39150504076 -:1057A00094F059F0882332F0660F771F881F9150CC -:1057B0005040C1F79E3F510544F7880F911D9695C3 -:1057C000879597F908955F3FACF0983E9CF0BB2712 -:1057D000869577956795B79508F4B1609395C1F76D -:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B -:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 -:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD -:105810000F93FF92C92FDD2788232AF02197660F67 -:10582000771F881FDAF720E030E040E85FEB9FE366 -:10583000883920F0803E30F021968F7787DCE2E3D4 -:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 -:10585000EC01FB2E6F5771097595771F880B990B1B -:1058600078DD28E132E741E35FE38FDEAF2D980179 -:10587000AE01FF900F911F91CF91DF9178DC3BCE6D -:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 -:1058900022273327442750781FC0B75188F4AB2FF5 -:1058A0000024469537952795011CA395D2F3002037 -:1058B00069F0220F331F441FB395DAF30DD045CCA6 -:1058C00061307105A0E88A07B94630F49B01AC014C -:1058D0006627772788279078309621F020833183B8 -:1058E000428353830895AA1BBB1B51E107C0AA1F23 -:1058F000BB1FA617B70710F0A61BB70B881F991F71 -:105900005A95A9F780959095BC01CD01089597FB14 -:10591000072E16F4009407D077FD09D00E94732C4F -:1059200007FC05D03EF4909581959F4F08957095A2 -:1059300061957F4F0895EE0FFF1F0590F491E02DC4 -:105940000994F999FECF92BD81BDF89A992780B547 -:105950000895A8E1B0E042E050E00C94C92C262F55 -:10596000F999FECF92BD81BDF89A019700B4021655 -:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 -:1059800008950196272F0E94B02C0C94AF2CDC01B7 -:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A -:1059A000319600B40D9241505040B8F70895F894E4 -:0259B000FFCF27 -:1059B200640007000CFF0000003F64041092106FA7 -:1059C200103B1007100101DF022808140A321E00E2 -:1059D20002040507090B0C0E1011131517181A1CD7 -:1059E2001D1F2123242628292B2D2F303234353711 -:1059F200393B1F0F03764F5F6F7F4969437909591E -:105A020053633149803F5D8B803FF8BF803FCAE1DD -:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE -:105A2200803F3149803F0000803FF16D7F3F75EA42 -:105A32007E3F4C827E3F833F7E3F84287E3F833F72 -:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 -:105A5200803F3F4D3639ED04A0046A043104C4038B -:105A6200DD03F6030F04010203040506070809001B -:00000001FF diff --git a/keyboard/planck/keymaps/experimental/compiled.hex b/keyboard/planck/keymaps/experimental/compiled.hex deleted file mode 100644 index 76984a07cc..0000000000 --- a/keyboard/planck/keymaps/experimental/compiled.hex +++ /dev/null @@ -1,1645 +0,0 @@ -:100000000C948F050C94D3050C94D3050C94D30554 -:100010000C94D3050C94D3050C94D3050C94D30500 -:100020000C94D3050C94D3050C94F9190C94CB1AA9 -:100030000C942D280C94D3050C94D3050C94D30563 -:100040000C94D3050C9486060C94D3050C94D3051C -:100050000C94D3050C9495280C94D3050C94D305DB -:100060000C94D3050C94D3050C94D3050C94D305B0 -:100070000C94D3050C94D3050C94D3050C94D305A0 -:100080000C94DB0F0C94D3050C94D3050C94D3057E -:100090000C94D3050C94D3050C94D3050C94D30580 -:1000A0000C94D3050C94D3050C94D305EE060007ED -:1000B000140726072E074407920792079207920714 -:1000C0009207920752078107381B5A1B481C5A1B7C -:1000D000481C9F1BC21B481C171C2A1C141F141FE2 -:1000E000431F431F821FA21FF820F820AD1FF820D6 -:1000F0005D205D20C420CD20F820F2206A206A20F7 -:100100006A206A206A206A206A206A206A206A209F -:100110006A206A206A206A206A206A207A20882061 -:100120008F209620A02007634236B79BD8A71A39A4 -:10013000685618AEBAAB558C1D3CB7CC5763BD6D35 -:10014000EDFD753EF6177231BF000000803F0800DC -:100150000000BE922449123EABAAAA2ABECDCCCC46 -:100160004C3E00000080BEABAAAAAA3E00000000E0 -:10017000BF000000803F0000000000084178D3BBB2 -:100180004387D1133D190E3CC3BD4282AD2B3E685F -:10019000EC8276BED98FE1A93E4C80EFFFBE01C450 -:1001A000FF7F3F0000000000000000000000000092 -:1001B000000000010204060A0F17202C3A4A5D7164 -:1001C000879DB3C7DAE9F5FCFFFCF5E9DAC7B39D13 -:1001D00087715D4A3A2C20170F0A060402010000BD -:1001E00000000000000000002B0014001A000800AE -:1001F000150017001C0018000C00120013002A0044 -:10020000290004001600070009000A000B000D0079 -:100210000E000F0033003400E1001D001B0006003B -:1002200019000500110010003600370038002800C2 -:100230000530E000E200E30003302C002C00043025 -:100240005000510052004F002B0014001A0009000A -:1002500013000A000D000F0018001C0033002A00D4 -:100260002900040015001600170007000B001100FC -:1002700008000C0012003400E1001D001B00060005 -:10028000190005000E001000360037003800280065 -:100290001450E000E200E30003302C002C00043096 -:1002A0005000510052004F002B0034003600370040 -:1002B00013001C0009000A00060015000F002A00A8 -:1002C000290004001200080018000C0007000B00B1 -:1002D0001700110016003800E100330014000D0073 -:1002E0000E001B00050010001A0019001D00280058 -:1002F0000530E000E200E30003302C002C00043065 -:100300005000510052004F0035021E021F02200211 -:1003100021022202230224022502260227022A00A9 -:100320004C003A003B003C003D003E003F002D02E7 -:100330002E022F0230023102010040004100420033 -:100340004300440045003202640201000100010044 -:100350000100010001000100010001000100010095 -:10036000AB00AA00A900AE0035001E001F0020004F -:1003700021002200230024002500260027002A0057 -:100380004C003A003B003C003D003E003F002D0089 -:100390002E002F00300031000100400041004200DB -:1003A000430044004500320032000100010001001A -:1003B0000100010001000100010001000100010035 -:1003C000AB00AA00A900AE001E001E001E001E0009 -:1003D0001E001E001E001E001E001E001E001E002D -:1003E000000014001A000800150017001C00180077 -:1003F0000C00120013002F0000000400160007007C -:1004000009000A000B000D000E000F00330034003D -:100410000D3000000000060019000000000011006F -:1004200010000000000000000000000000000000BC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E00000000000000000000100005001000100B6 -:1007F00001000100010001000100010001004C00A6 -:10080000010001000100205021501350125000300F -:10081000013002300C3001000100275026502350D7 -:10082000245028502950010001000100010001005E -:1008300001000100010001000100010001000100B0 -:1008400001000100010001000000000000000000A4 -:100850002A2B28000000000000000000000000001B -:1008600000000029000000002C1E34202122243426 -:100870002627252E362D3738271E1F2021222324F8 -:1008800025263333362E37381F0405060708090A94 -:100890000B0C0D0E0F101112131415161718191A30 -:1008A0001B1C1D2F3130232D350405060708090AAE -:1008B0000B0C0D0E0F101112131415161718191A10 -:1008C0001B1C1D2F3130354C0000000000000000C3 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000101010101010002 -:1008F00001010101000000000000000000000000F4 -:1009000000000100010001010101010101010101DB -:1009100001010101010101010101010101010101C7 -:1009200001010100000001010000000000000000C2 -:1009300000000000000000000000000000000000B7 -:100940000000000101010100280354006800650057 -:10095000200050006C0061006E0063006B002000FE -:100960004B006500790062006F0061007200640056 -:1009700000002C034F007200740068006F006C00D0 -:1009800069006E0065006100720020004B00650088 -:10099000790062006F006100720064007300000063 -:1009A0000403090409026D00040100A0FA0904000F -:1009B000000103010100092111010001223F00078C -:1009C00005810308000A090401000103010200096E -:1009D0002111010001224D000705820308000A09C8 -:1009E0000402000103000000092111010001223668 -:1009F000000705830308000A09040300010300003F -:100A000000092111010001223900070584031000AB -:100A1000011201100100000008EDFE6060010001FC -:100A200002000105010906A101050719E029E715E2 -:100A30000025019508750181020508190129059510 -:100A400005750191029501750391010507190029AA -:100A50007715002501957875018102C0050109808F -:100A6000A101850216010026B7001A01002AB7006D -:100A7000751095018100C0050C0901A101850316BF -:100A80000100269C021A01002A9C02751095018122 -:100A900000C005010902A1010901A1000509190110 -:100AA000290515002501950575018102950175033C -:100AB00081010501093009311581257F95027508ED -:100AC000810609381581257F950175088106050C79 -:100AD0000A38021581257F950175088106C0C00579 -:100AE000010906A101050719E029E715002501956F -:100AF0000875018102950175088101050819012910 -:100B00000595057501910295017503910105071978 -:100B10000029FF150025FF950675088100C01124E6 -:100B20001FBECFEFDAE0DEBFCDBF04B603FE24C0A8 -:100B300080915E0490915F04A0916004B091610483 -:100B40008730904BA740B04BB9F410925E041092DE -:100B50005F04109260041092610414BE84B7877F12 -:100B600084BF88E10FB6F894809360001092600013 -:100B70000FBEE0E0F8E3099513E0A0E0B1E0EEEB92 -:100B8000F4E602C005900D92A030B107D9F714E049 -:100B9000A0E0B3E001C01D92AE35B107E1F70E94BD -:100BA0003F170C945D320C94000081E00895089585 -:100BB0000C94AF070C94D5050C94D7050E94272EF2 -:100BC000811105C010920203109201030DC081E251 -:100BD00090E00090030302C0880F991F0A94E2F787 -:100BE000909302038093010382E08093000380913D -:100BF0006F00826080936F00089590916F0081E094 -:100C0000911101C080E008950E94272E23E030E07A -:100C1000281B3109220F209304030895282F2F98B1 -:100C200080918000211108C0877F809380001092FE -:100C30008D0010928C001BC0886080938000233050 -:100C400019F48FEF9FEF0FC083E090E0821B9109B2 -:100C5000880F991F2FEF3FEFA90102C056954795C6 -:100C60008A95E2F7CA0190938D0080938C000C94D2 -:100C70000406CF93C82F0E94FD05409103038823EB -:100C800029F090916F009D7F90936F00C0930303B4 -:100C90008823D1F0209101033091020302C03695E0 -:100CA00027954A95E2F72F733327C90102C0880FB1 -:100CB000991FCA95E2F790930203809301038091F4 -:100CC0006F00826080936F00CF9108950E940406A8 -:100CD00084E080930303109200030895279A2F98CD -:100CE0008FEF9FEF90938700809386008AE0809338 -:100CF000800089E1809381000E94902D0C9466060B -:100D00000E946E066E9A769A0C9497071F920F9225 -:100D10000FB60F9211242F933F938F939F93EF93CE -:100D2000FF93E0910103F0910203CF0101969093AC -:100D30000203809301030090030302C0F695E79538 -:100D40000A94E2F7EF7380910003823019F4E032E5 -:100D500051F404C0813039F4EF3329F480916F00ED -:100D60008D7F80936F00F0E0E855FE4FE49121E025 -:100D700031E0E29FC001E39F900D11240090040335 -:100D800002C0969587950A94E2F790938D00809320 -:100D90008C00FF91EF919F918F913F912F910F9038 -:100DA0000FBE0F901F901895CF93DF93EC010E9418 -:100DB0002E29BE0180E090E0DF91CF910C94232595 -:100DC0000F931F93462F50E04E30510508F0AAC0F4 -:100DD000DC01FA01EA5AFF4F0C94213212968C91F1 -:100DE000882309F49FC000E010E0980140E064E02F -:100DF00070E080ED91E00E94591381E090E011C015 -:100E000012968C91882309F48DC000E010E09801BF -:100E100040E066E070E080E691E00E94591382E0D5 -:100E200090E00E94D4067EC012968C91882309F42B -:100E300079C000E010E0980140E068E070E080E9EF -:100E400091E00E94591384E090E0EBCF12968C91D0 -:100E5000882311F083E007C083E013C012968C91C1 -:100E6000882371F084E00E94A02582E00E94390668 -:100E70000E94DE0540E164E083E00E94BE0D52C0A6 -:100E800084E00E94C125F6CF12968C91882331F020 -:100E900085EE0E94B81D0E94E72D44C085EE0E9499 -:100EA000801E40C012968C918823E1F10E940E0FA3 -:100EB00000E010E0980140E066E070E080E391E03F -:100EC0000E94591384E00E94C12583E00E94C1253D -:100ED00080E10E94C12585E00E94A0250E941B2977 -:100EE000811102C00E94F7280E94332990E090935C -:100EF0005D0480935C04806880935C040E943729C1 -:100F000011C012968C91882369F000E010E09801DE -:100F100040E066E070E080E091E00E94591385E0D7 -:100F20000E94C12580E090E01F910F9108950F93DA -:100F30001F932FEF89EF90E0215080409040E1F720 -:100F400000C0000000E010E0980140E065E070E0C3 -:100F500080EF91E00E9459131F910F9108958091A5 -:100F60001003882309F45AC080910E0390910F0357 -:100F70000E946B288D3291400CF450C010921003E7 -:100F80000E9414088091080390910903099781F445 -:100F900080910A0390910B03892B51F480910C03EB -:100FA00090910D03892B21F48AE592E00E941508A7 -:100FB0008091080390910903049791F480910A03AA -:100FC00090910B03469761F480910C0390910D036F -:100FD000892B31F48BE00E94B81D8BE00E94801EAB -:100FE00080910803909109030497C1F480910A034A -:100FF00090910B03469791F480910C0390910D030F -:10100000079761F483EE0E94B81D86E10E94B81D27 -:1010100086E10E94801E83EE0C94801E089581E07C -:1010200008950C940F08089508950F931F93CF937C -:101030008C01F80124912223F9F030E0F901E85BFA -:10104000F74FC491F901E853F74F2491222359F047 -:1010500081EE0E94B81D8C2F0E94B81D8C2F0E941B -:10106000801E81EE04C08C2F0E94B81D8C2F0E9420 -:10107000801E0F5F1F4FDDCFCF911F910F910895FD -:101080000C94800680915503882309F448C0809110 -:10109000110390911203009779F40E945F289093B6 -:1010A0001203809311038091130390E0009771F471 -:1010B0008091140390E00AC00E946B2820911802CE -:1010C000309119022817390740F329C00197880F7A -:1010D000991F880F991FFC01EB5EFC4F60817181A5 -:1010E000828193810E94410FE091130384E0E89F85 -:1010F000F0011124EB5EFC4F60817181828193814C -:101100004FE050E00E94F9128091130390E00196A5 -:101110006091140370E00E940D32809313030C94CD -:10112000D805109257030C940E0F0895089581E08E -:10113000809357030C949608089508958F929F9278 -:10114000AF92BF92EF92FF920F931F93CF93DF93D3 -:10115000CDB7DEB7A3970FB6F894DEBF0FBECDBFF5 -:101160007C01FC0100811181C8010E945C26B8014C -:101170000E94A00A8C01B7010E941108882309F47B -:10118000CCC10032F0E51F0741F4F70182818823CA -:1011900009F458C00E94F013C0C10132F0E51F07E6 -:1011A00041F4F7018281882309F44CC00E94F913AD -:1011B000B4C10232F0E51F0751F4F70182818823A0 -:1011C00009F440C00E94EC138111F0CFE3CF033249 -:1011D000F0E51F0739F4F7018281882399F10E9415 -:1011E00097089BC10432F0E51F0739F4F7018281AB -:1011F000882341F10E94910890C10532F0E51F0754 -:1012000049F4F70182818823E9F080915703811125 -:10121000F1CFE5CF0632F0E51F0739F4F7018281FF -:10122000882381F00E9400140AC00732F0E51F07EE -:1012300049F4F7018281882329F00E940B140E944F -:101240009D086BC180915703811105C0F701828110 -:101250008111CFC018C1003E110579F4F7018281D8 -:10126000882309F44DC00E940E0F81E0809356033D -:10127000109255031092140350C1023E110559F407 -:10128000F70182818823E1F10E940E0F109256032C -:101290001092550342C1033E110591F4F70182817A -:1012A000882371F10E940E0F1092560381E0809303 -:1012B00055031092130310921203109211032DC1C3 -:1012C0000235110559F4F7018281882309F425C1FB -:1012D00080911802909119020A970DC001351105ED -:1012E00079F4F7018281882309F417C180911802EB -:1012F000909119020A9690931902809318020DC1D9 -:1013000040911C0283E2E7E3F2E0DE0111960190D6 -:101310000D928A95E1F7F701808121E030E02C0FF2 -:101320003D1F280F311DC90120911A0230911B0267 -:10133000FC01E20FF31F6081772767FD7095640F52 -:10134000711D882777FD8095982F0E942F2F20E010 -:1013500030E040E451E40E94942E4B015C01F7011F -:10136000218184E090E0821B9109BC01882777FDF0 -:101370008095982F0E942F2F9B01AC01C501B401CD -:101380000E942C2E9B01AC0160E070E080E090E4B4 -:101390000E94A23020E030E04CED50E40E943F304B -:1013A0004B015C01F70182818823D1F04FE050E0CE -:1013B000C501B4010E94F912809156038823A1F05F -:1013C0008091140324E0829FF0011124EB5EFC4F16 -:1013D00080829182A282B3828F5F8093140304C0C3 -:1013E000C501B4010E94410F0F3F110508F02ECF37 -:1013F00094C08091100381111FC0043130E51307A0 -:1014000009F051C00E94130881E0809310030E94EC -:101410005F2890930F0380930E031092070310929E -:1014200009031092080310920B0310920A03109202 -:101430000D0310920C0371C080910E0390910F0365 -:101440000E946B28883C910570F480910703E82F77 -:10145000F0E0EE0FFF1FE85FFC4F118300838F5F0A -:10146000809307035AC0043880E5180721F0053837 -:10147000104501F13AC0F7018281882341F01092B2 -:10148000050382E01EC0043830E5130759F580914A -:101490000503811106C086E20E94B81D86E20E9403 -:1014A000801E82E01CC00438F0E51F0741F30538B8 -:1014B0001045D9F4F7018281882331F01092060398 -:1014C00080E20E94CF1E29C080910603811106C0D0 -:1014D00087E20E94B81D87E20E94801E80E20E947F -:1014E000D61E1BC00538104529F381E08093050303 -:1014F00080930603C701A3960FB6F894DEBF0FBE14 -:10150000CDBFDF91CF911F910F91FF90EF90BF90D2 -:10151000AF909F908F900C94DA0580E0A3960FB661 -:10152000F894DEBF0FBECDBFDF91CF911F910F9119 -:10153000FF90EF90BF90AF909F908F900895089587 -:101540009CE0799FF001112490E3899FE00DF11D4B -:101550001124E60FF11DEE0FFF1FE851FE4F85919C -:1015600094910895880F991FFC01E859FF4F8591C8 -:1015700094910895880F991FFC01E851FE4F8591C1 -:10158000949108950F931F93CF93DF93EC018115EE -:1015900021E39207A0F5C11580E3D80708F0D7C072 -:1015A000C83ED105D8F4C03ED10508F007C2C83AFC -:1015B000D10578F4C53AD10508F06AC0C130D1052B -:1015C00009F463C008F4F7C1C430D10508F0F6C1CE -:1015D000F2C1CB3BD10508F466C0EDC1C11590E264 -:1015E000D90708F0AFC0C11521E0D20708F0E6C165 -:1015F000C03FD10508F4DFC18E0110651FC2C0389D -:1016000080E5D80700F5C03790E5D90708F0A3C0FA -:10161000C11520E5D20709F4ACC050F4CE019054B6 -:1016200080319F4008F0C7C1DF708E01106A06C28A -:10163000C13080E5D80709F4AEC0C43190E5D907C0 -:1016400008F4AFC0B8C1C33820E5D20709F48EC092 -:1016500050F4C13890E5D90709F482C008F083C07E -:1016600000E011EDEBC1C03181E5D80708F4A3C15A -:10167000C11597E5D90708F436C1CE0190578115F9 -:10168000904108F098C1DF7093C101E010E0D6C12D -:10169000C53AD10509F494C1C63AD10509F093C100 -:1016A00002E810E4CBC1C83AD10509F48FC1C93AA8 -:1016B000D10509F48EC1CA3AD10509F48DC1CB3ADE -:1016C000D10509F48CC1CC3AD10509F48BC1CD3ACE -:1016D000D10509F48AC1C03BD10509F489C1CE3ACC -:1016E000D10509F488C1CF3AD10509F487C1C13BBE -:1016F000D10509F486C1C23BD10509F485C1C33BBC -:10170000D10509F484C1C43BD10509F483C1C53BAB -:10171000D10509F482C1C63BD10509F481C1C73B9B -:10172000D10509F480C1C83BD10509F47FC1C93B8B -:10173000D10509F47EC1CA3BD10509F47DC100E0A1 -:1017400014E47CC1CE019F700E94BA0A78C1DD27E3 -:101750008E01106C73C1CF70DD278E01146D6EC1C8 -:1017600000E010ED6BC100E012ED68C100E013ED88 -:1017700065C10E9463210E940E0F0E9495088FEFA1 -:1017800094E32CE0815090402040E1F700C000003D -:101790000E94BA2853C18091320481608093320440 -:1017A0004DC10E941B29811102C00E94F7280E948E -:1017B000332990E090935D0480935C04C23080E50F -:1017C000D80721F480915C04816086C0C43090E524 -:1017D000D90721F480915C0482607EC0C63020E588 -:1017E000D20721F480915C04846076C0C83080E523 -:1017F000D80719F480915C0427C0CA3090E5D90756 -:1018000021F480915C04806167C0CC3020E5D20770 -:1018100021F480915C0480625FC0CE3080E5D807FF -:1018200021F480915C04806457C0C03190E5D907F1 -:1018300021F480915C0480684FC0C23120E5D2075A -:1018400029F480915C048460886046C0C33080E5E0 -:10185000D80721F480915C048E7F3EC0C53090E5AE -:10186000D90721F480915C048D7F36C0C73020E514 -:10187000D20721F480915C048B7F2EC0C93080E5B3 -:10188000D80719F480915C0426C0CB3090E5D907C5 -:1018900021F480915C048F7E1FC0CD3020E5D207FB -:1018A00021F480915C048F7D17C0CF3080E5D8078C -:1018B00021F480915C048F7B0FC0C13190E5D90782 -:1018C00021F480915C048F7707C0C331D04531F497 -:1018D00080915C048B7F877F80935C0480915C04A3 -:1018E0000E943729ABC08D2F99278F70992781309F -:1018F0009105D9F49E012370332702C0880F991FE8 -:101900002A95E2F79C688E0144E0000F111F4A956A -:10191000E1F700271370802B912B53E0CC0FDD1FD4 -:101920005A95E1F7C076DD272FC08230910531F45A -:10193000DC2FCC278E01016F106A80C083309105A7 -:1019400069F4CE018370992701E010E002C0000F16 -:10195000111F8A95E2F7C8019C680FC08430910579 -:10196000B9F4CE018370992701E010E002C0000FA6 -:10197000111F8A95E2F7C8019A6823E0CC0FDD1F9A -:101980002A95E1F7C07ED7708C010C2B1D2B56C019 -:101990008530910531F4DC2FCC278E01046F106A5D -:1019A0004DC0069709F04AC0CF71DD27DC2FCC2748 -:1019B0008E01106243C000E010E040C08E013EC0C6 -:1019C00001E810E43BC003E810E438C002EE14E480 -:1019D00035C009EE14E432C00AEE14E42FC005EB62 -:1019E00014E42CC006EB14E429C007EB14E426C071 -:1019F0000CEC14E423C00DEC14E420C003E815E45F -:101A00001DC00AE815E41AC002E915E417C004E98C -:101A100015E414C001E216E411C003E216E40EC09E -:101A200004E216E40BC005E216E408C006E216E480 -:101A300005C007E216E402C00AE216E4C801DF911D -:101A4000CF911F910F9108959CE0799FF00111248F -:101A500090E3899FE00DF11D1124E60FF11DEE0FBB -:101A6000FF1FE851FE4F85919491803E9105E0F46F -:101A7000803C910558F58133910509F46FC048F415 -:101A80008932910509F463C08A32910509F46DC069 -:101A900072C089339105E9F082389105D1F0853320 -:101AA000910509F44DC067C0833E910581F138F47A -:101AB000803E9105B9F0823E9105D9F05CC0863E2A -:101AC000910561F1873E9105A1F155C00E94B20ACE -:101AD000089520915C0420FD02C021FF4CC080EEDF -:101AE00090E049C080915C0480FFF9CF89E390E0E9 -:101AF00042C080915C0482FF0EC080915C0484FF30 -:101B000003C080E090E037C083EE90E034C0809165 -:101B10005C0482FFF2CF82EE90E02DC080915C04E5 -:101B200083FF0BC080915C0484FDEBCF87EE90E0D7 -:101B300022C080915C0483FFF5CF86EE90E01BC04D -:101B400080915C0485FF07C089E290E014C0809119 -:101B50005C0485FFF9CF85E390E00DC080915C04C3 -:101B600086FF07C08AE290E006C080915C0486FF91 -:101B7000F9CF81E390E00E94C20A0895CF92DF92EC -:101B8000EF92FF920F931F9301E010E020E030E00E -:101B90006801790104C0CC0CDD1CEE1CFF1C8A9589 -:101BA000D2F704C0000F111F221F331F6A95D2F70E -:101BB0000C291D292E293F29C0901504D090160408 -:101BC000E0901704F0901804C022D122E222F32200 -:101BD000842FC016D106E206F30641F41F910F913F -:101BE000FF90EF90DF90CF900C94A0251F910F9164 -:101BF000FF90EF90DF90CF900C94C1250C94DC0502 -:101C0000E82FF0E0E257FD4F8081E82FEF70F0E021 -:101C100082958F7021E030E0A90102C0440F551F6A -:101C20008A95E2F740A308950F931F93CF93DF9314 -:101C300085B7806885BF85B7806885BFC3E0D0E081 -:101C400001E010E0FE01E257FD4F8081E82FEF70C8 -:101C5000F0E021A182958F70A80102C0440F551FAA -:101C60008A95E2F7CA01822B81A38C2F0E94000E75 -:101C7000219740F78BE090E061E070E0FC01EE57C7 -:101C8000FD4F2081E22FEF70F0E042A122952F70EE -:101C9000DB0102C0AA0FBB1F2A95E2F79D01242B8E -:101CA00022A3019758F7DF91CF911F910F910C94C8 -:101CB0004008EF92FF920F931F93CF93DF9300E6BC -:101CC00013E0C3E0EE24E394F12CD5E08C2F0E94C6 -:101CD000000E8BE090E040E050E0FC01EE57FD4F3D -:101CE0006081E62FEF70F0E020A130E062956F7028 -:101CF00002C0359527956A95E2F720FD09C0970146 -:101D0000082E02C0220F331F0A94E2F7422B532BF6 -:101D1000019718F7F801929182918F018417950726 -:101D200021F051834083D0931D028C2F0E94000E1E -:101D3000C15060F680911D0287FD2CC081508093B8 -:101D40001D028F3F39F08FE99FE00197F1F700C046 -:101D5000000020C080915E0390915F039093670321 -:101D60008093660380915C0390915D03909365037B -:101D70008093640380915A0390915B039093630373 -:101D8000809362038091580390915903909361036B -:101D9000809360030E94420881E0DF91CF911F9100 -:101DA0000F91FF90EF900895E82FF0E0EE0FFF1FE6 -:101DB000E05AFC4F80819181089508950F931F93FD -:101DC000CF9308E613E0C0E0F801929182918F0171 -:101DD0000E94D727C80FF3E000361F07A9F78C2F02 -:101DE000CF911F910F9108950E941B29811102C06C -:101DF0000E94F7280E944529809347043E9A8091CB -:101E000071008D7F8093710082E0809390008AE161 -:101E10008093910081E080936A03089580916A0322 -:101E2000811102C00E94F40E1092BA031092B903FD -:101E3000809171008D7F80937100809190008F73ED -:101E40008093900010927C0310927B031092B30356 -:101E50001092B4031092B5031092B6031092B2031D -:101E60001092B103E1E9F3E0A1E8B3E0119211921D -:101E7000119211921D921D9283E0E13BF807B1F798 -:101E80000895CF92DF92EF92FF920F931F93CF931B -:101E9000DF9320917B03222309F484C06B017C0132 -:101EA00080916A03811102C00E94F40E01EB13E0DD -:101EB000C7E0D0E0A7019601F8019291829172915A -:101EC00062918F010E94902E811131C0FE01EE0FB0 -:101ED000FF1FEE0FFF1FEF56FC4F10821182128280 -:101EE0001382DE01AA0FBB1FAF57BC4F11961C9285 -:101EF0001E92C730D105E9F0219644815581668153 -:101F000077814083518362837383148215821682A2 -:101F1000178212968D919C91139711969C938E9394 -:101F200013961C921E92129734961296E2CF219726 -:101F300008F68091B9039091BA03019797FD05C007 -:101F40009093BA038093B90304C01092BA0310921D -:101F5000B9038091B9039091BA032091B7033091EE -:101F6000B8032817390724F01092B8031092B7036A -:101F7000892BC1F4809171008D7F809371008091D5 -:101F800090008F73809390001092B3031092B4036B -:101F90001092B5031092B6031092B2031092B103DF -:101FA00010927B03DF91CF911F910F91FF90EF90E3 -:101FB000DF90CF9008951F920F920FB60F921124C9 -:101FC0004F925F926F927F928F929F92AF92BF9249 -:101FD000CF92DF92EF92FF922F933F934F935F93B5 -:101FE0006F937F938F939F93AF93BF93CF93DF9321 -:101FF000EF93FF9380917B03882309F49BC1C091E9 -:10200000B903D091BA031C161D060CF093C1409081 -:102010006B0350906C0360906D0370906E0320E032 -:1020200030E0A901C301B2010E943B3018160CF048 -:1020300065C0C130D10509F452C08091B7039091B9 -:10204000B803BE010E940D327C019093B8038093C7 -:10205000B70380907D0390907E03A0907F03B090A3 -:10206000800320E030E040E85FE3C501B4010E9456 -:102070002C2E60937D0370937E0380937F03909357 -:102080008003F701EE0FFF1FEE0FFF1FEF56FC4F0F -:10209000A301920160817181828193810E94942EBB -:1020A00020E030E040E05EE30E943F309B01AC0165 -:1020B000C501B4010E943B3018168CF4C70101968B -:1020C000BE010E940D329093B8038093B703109223 -:1020D0007D0310927E0310927F0310928003E091A3 -:1020E000B703F091B803EE0FFF1FEE0FFF1FEF567F -:1020F000FC4F6081718182819381D0C0C090B30315 -:10210000D090B403E090B503F090B60320E030E047 -:10211000A901C701B6010E94902E2197882309F4D6 -:10212000A2C0FE01EE0FFF1FEE0FFF1FEF56FC4F88 -:1021300080809180A280B380A5019401C701B6017F -:102140000E94902E87FF31C0A501940160E070E0ED -:102150008CED93EC0E94942E20E030E040E451E4BA -:102160000E94942E20E030E040E05FE30E943F3088 -:102170009B01AC0160E070E080E090E40E94A2303E -:102180009B01AC01C501B4010E943F309B01AC0131 -:10219000C701B6010E94902E87FF07C0A7019601D4 -:1021A00060E070E08CED93E439C0A5019401C701B3 -:1021B000B6010E943B3018160CF055C0A5019401E1 -:1021C00060E070E08CED93E40E94942E20E030E01B -:1021D00040E451E40E94942E20E030E040E05FE3D0 -:1021E0000E943F309B01AC0160E070E080E090E431 -:1021F0000E94A2309B01AC01C501B4010E943F3096 -:102200009B01AC01C701B6010E943B3018165CF57A -:10221000A701960160E070E08CED93EC0E94942E93 -:1022200020E030E040E451E40E94942E20E030E0D1 -:1022300040E05FE30E943F309B01AC0160E070E052 -:1022400080E090E40E94A2309B01AC01C701B6017E -:102250000E943F306093B3037093B4038093B5033F -:102260009093B60313C0FE01EE0FFF1FEE0FFF1F8A -:10227000EF56FC4F80819181A281B3818093B3039B -:102280009093B403A093B503B093B6036091B303E6 -:102290007091B4038091B5039091B60320916803C7 -:1022A000309169032F3F4FEF340731F02F5F3F4FDD -:1022B00030936903209368030E9416146B017C011C -:1022C00020E034E244EF51E40E94902E87FF08C0E2 -:1022D00086EFC82E88E2D82E84EFE82E81E4F82E0F -:1022E00020E030E040E051E4C701B6010E943F30F9 -:1022F0009B01AC0160E074E284E79BE40E94942EB1 -:102300006B017C010E94012F7093970060939600EF -:1023100020911E0230911F02409120025091210213 -:10232000C701B6010E943F300E94012F70939900AF -:102330006093980080917C03882309F433C1C09096 -:102340007703D0907803E0907903F0907A0320E04F -:1023500030E0A901C701B6010E943B301816D4F540 -:1023600080916803909169038F3F2FEF920729F0C6 -:1023700001969093690380936803C701B6010E9498 -:10238000161420E030E040E051E40E943F309B0111 -:10239000AC0160E074E284E79BE40E94942E6B0140 -:1023A0007C010E94012F709397006093960020910A -:1023B0001E0230911F024091200250912102C7015C -:1023C000B6010E943F300E94012F709399006093E4 -:1023D000980008C0109297001092960010929900F1 -:1023E0001092980060917103709172036F5F7F4F3C -:1023F000709372036093710320919600309197005F -:1024000080E090E0232BF1F0C0919600D0919700EE -:102410000E942D2F6B017C01BE0180E090E00E94A4 -:102420002D2F9B01AC016091730370917403809117 -:102430007503909176030E94942E20E03FEF4FE7C2 -:1024400057E410C00E942D2F6B017C0120E030EE7C -:102450004FEF54E46091730370917403809175039E -:10246000909176030E943F309B01AC01C701B601F9 -:102470000E943B3087FD96C080916F038F5F8093F1 -:102480006F0390E020914304309144048217930736 -:10249000A0F080914E04882319F010926F030DC0B4 -:1024A000809171008D7F80937100809190008F7377 -:1024B0008093900010927C037DC080917003C09146 -:1024C0006F03811128C0C0904804D0904904E09067 -:1024D0004A04F0904B0420E030E0A901C701B601A6 -:1024E0000E943B301816BCF481E080937003109278 -:1024F0007703109278031092790310927A03C092B6 -:102500007303D0927403E0927503F0927603C15086 -:10251000C0936F0343C0109270031092690310922E -:102520006803E0914504F091460448E0C49FE00D43 -:10253000F11D112480819181A281B3818093770361 -:1025400090937803A0937903B0937A0320E030E06E -:1025500040E85EE364817581868197810E943F3007 -:102560006B017C0180912202682F70E080E090E096 -:102570000E942D2F20E030E048EC52E40E94942E7F -:102580009B01AC01C701B6010E943F306093730309 -:102590007093740380937503909376031092720383 -:1025A000109271038091470480FD04C010927C0357 -:1025B00010927B03FF91EF91DF91CF91BF91AF918B -:1025C0009F918F917F916F915F914F913F912F914B -:1025D000FF90EF90DF90CF90BF90AF909F908F9043 -:1025E0007F906F905F904F900F900FBE0F901F9055 -:1025F0001895CF92DF92EF92FF92CF93DF936B010A -:102600007C01EA0180916A03811102C00E94F40EEC -:102610008091470480FF46C08091B9039091BA032E -:1026200008970CF03FC0809171008D7F80937100FE -:1026300080917C0381110E940E0F81E080937B03C7 -:10264000109269031092680320E030E0A901C701ED -:10265000B6010E943B301816DCF48091B9039091CA -:10266000BA03FC01EE0FFF1FEE0FFF1FEF56FC4FEA -:10267000C082D182E282F382FC01EE0FFF1FEF578E -:10268000FC4FD183C08301969093BA038093B90322 -:1026900080917100826080937100809190008068C9 -:1026A00080939000DF91CF91FF90EF90DF90CF90DB -:1026B00008958F929F92AF92BF92CF92DF92EF9246 -:1026C000FF920F931F93CF93DF93EC017B01D42EE6 -:1026D0004801590180916A03811102C00E94F40EE1 -:1026E0008091470480FF6BC0809171008D7F809343 -:1026F000710080917B0381110E940E0F81E0809315 -:102700007C03D0934604C0934504F0924404E092C5 -:102710004304D0924E048092480490924904A092BF -:102720004A04B0924B0410927D0310927E031092E3 -:102730007F031092800310926F0388819981AA8190 -:10274000BB818093770390937803A0937903B09330 -:102750007A0320E030E040E85EE36C817D818E8189 -:102760009F810E943F306B017C0180912202682F83 -:1027700070E080E090E00E942D2F20E030E048ECF7 -:1027800052E40E94942E9B01AC01C701B6010E9445 -:102790003F30609373037093740380937503909339 -:1027A000760310927203109271038091710082601F -:1027B0008093710080919000806880939000DF91F9 -:1027C000CF911F910F91FF90EF90DF90CF90BF902E -:1027D000AF909F908F9008958091470481700895E5 -:1027E000809147048160809347040E9449290C949A -:1027F0009C08809147048E7F809347040C9449295C -:102800008091BB0390E0019666E070E00E940D327B -:102810008093BB0308958091BB0390E0019766E02D -:1028200070E00E940D328093BB0308958F929F92B7 -:10283000AF92BF92CF92DF92EF92FF920F931F93CE -:10284000CF93DF936B017C01C0916803D091690342 -:10285000BE0180E090E00E942D2F4B015C01A7019A -:10286000960160E070E08CE594E40E94942E9B0158 -:10287000AC01C501B4010E943F300E94012F20919C -:10288000BB03233009F473C028F4222351F0213014 -:10289000E9F02CC1243009F4A0C0253009F4E0C0CF -:1028A00025C180E090E0A0E0BFE380931E029093FA -:1028B0001F02A0932002B093210210926B0310928A -:1028C0006C0310926D0310926E0310C110926B0393 -:1028D00010926C0310926D0310926E0364317105B7 -:1028E00040F46A30710560F520E030E040E85EE3D6 -:1028F0002BC0693C710508F0AAC080E090E00E94FE -:102900002D2F20E030E040EA51E40E942B2E20E001 -:1029100030E044E353E40E94942E9B01AC010E94FA -:102920003F3020E030E040E05EE30E943F309B011A -:10293000AC0160E070E080E09EE30E942B2E44C07A -:1029400020E030E040E05FE3C701B6010E943F3085 -:102950006B017C0180E090E0A0E0BEE380931E026A -:1029600090931F02A0932002B0932102BFC0109247 -:102970006B0310926C0310926D0310926E034AE089 -:10298000469F9001479F300D1124C90168EB7BE001 -:102990000E94F931BC016C5D754077FF03C07195F1 -:1029A00061957109882777FD8095982F0E942F2FB8 -:1029B0002EE333EC4EE259E30E943F3020E030E05A -:1029C00040EC5EE30E942C2E60931E0270931F0267 -:1029D000809320029093210289C010926B03109281 -:1029E0006C0310926D0310926E03CE0183709927D1 -:1029F000892BE1F0BE016170772780E090E00E94B2 -:102A00002D2F20E030E040E05EE30E943F3020E0E8 -:102A100030E040E45FE30E942C2E60931E0270932E -:102A20001F0280932002909321020CC080E090E06E -:102A3000A0E0BFE380931E0290931F02A0932002A8 -:102A4000B0932102C770DD27CD2B09F04FC0109243 -:102A50001E0210921F02109220021092210246C004 -:102A600010926B0310926C0310926D0310926E0320 -:102A700000E010E020E03FE300931E0210931F02ED -:102A800020932002309321026739710578F180E0AC -:102A900090E00E942D2F20E030E047E153E40E94B7 -:102AA0002B2E20E030E04AE754E40E94942E20E0F0 -:102AB00030E048E452E40E943F3020E030E040EA59 -:102AC00051E40E94712F0E94FC2E660F771F660F43 -:102AD000771FFB01EE56FD4F2081318142815381EA -:102AE000C701B6010E943F306B017C01C701B601EE -:102AF000DF91CF911F910F91FF90EF90DF90CF90DA -:102B0000BF90AF909F908F9008958091CC030895CF -:102B1000CF93DF9300D01F92CDB7DEB79C01809199 -:102B20005304843019F593E099833B832A8390936F -:102B3000E9008FEF9091E800815095FD06C095ED7A -:102B40009A95F1F700008111F5CF8091E80085FF9B -:102B50000DC040E050E063E070E0CE0101960E94BD -:102B6000E9178091E8008E778093E8000F900F902E -:102B70000F90DF91CF910895CF93DF9300D01F92F4 -:102B8000CDB7DEB720915304243021F522E029830C -:102B90009B838A8383E08093E9008FEF9091E80024 -:102BA000815095FD06C095ED9A95F1F700008111D1 -:102BB000F5CF8091E80085FF0DC040E050E063E074 -:102BC00070E0CE0101960E94E9178091E8008E77AF -:102BD0008093E8000F900F900F90DF91CF910895B0 -:102BE000209153042430F1F422E02093E9002FEFE8 -:102BF0003091E800215035FD06C035ED3A95F1F7EA -:102C000000002111F5CF2091E80025FF0BC040E026 -:102C100050E065E070E00E94E9178091E8008E774F -:102C20008093E8000895CF93DF93EC0190915304D3 -:102C3000943009F046C080912D028823D9F080910C -:102C40002E028823B9F09093E9008FEF9091E8006D -:102C5000815095FD06C095E19A95F1F7000081112C -:102C6000F5CF8091E80085FF2CC040E050E060E1A6 -:102C700070E017C081E08093E9008FEF9091E80049 -:102C8000815095FD06C095ED9A95F1F700008111F0 -:102C9000F5CF8091E80085FF14C040E050E068E087 -:102CA00070E0CE010E94E9178091E8008E77809352 -:102CB000E80080E1FE01ACEBB3E001900D928A9553 -:102CC000E1F7DF91CF91089580915204811109C0FD -:102CD0000E947E190E94DB198091E200846080933B -:102CE000E2000895109252040895089508950C94F6 -:102CF000222842E061EC81E00E94F81842E061EC99 -:102D000082E00E94F81842E061EC83E00E94F8182B -:102D100042E161EC84E00C94F81880915504833012 -:102D200009F455C030F4813071F0823009F48EC05E -:102D300008958A3009F47AC08B3009F460C0893074 -:102D400009F09CC020C080915404813A09F096C0DB -:102D50008091E800877F8093E800809158049091EB -:102D60005904892B21F460E18CEB93E003C060E00F -:102D700080E090E070E00E9434188091E8008B774A -:102D80008093E800089580915404813209F076C060 -:102D90008091580490915904009719F0039709F015 -:102DA0006DC08091E800877F8093E8008091E80003 -:102DB00082FD05C0809153048111F8CF5FC08091DE -:102DC000F1008093CC038091E8008B7753C0809111 -:102DD0005404813A09F052C08091580490915904EA -:102DE000892B09F04BC08091E800877F8093E80031 -:102DF0008091E80080FFFCCF80912D0236C0809149 -:102E000054048132D9F58091580490915904892B4A -:102E1000A9F58091E800877F8093E8000E942D1932 -:102E20008091560480932D020C9463218091540468 -:102E3000813221F58091E800877F8093E8000E942D -:102E40002D19809157048093CD03089580915404E7 -:102E5000813AA1F48091E800877F8093E800809117 -:102E6000E80080FFFCCF8091CD038093F10080913A -:102E7000E8008E778093E8000C942D19089584B7AC -:102E8000877F84BF88E10FB6F8948093600010922A -:102E900060000FBE90E080E80FB6F8948093610068 -:102EA000909361000FBE0E94D01C0E947E190E9468 -:102EB000DB198091E20084608093E20078940E94A4 -:102EC000611C0E94D21C83E292E00E947C1C8091D3 -:102ED0005304853069F40E94E327809151048823CC -:102EE000B1F30E941128882391F30E94D317EFCFEA -:102EF0000E94DA1CECCF292F332723303105C9F08B -:102F000064F42130310581F02230310509F043C0ED -:102F10008DE690E024EA39E042C021323105F1F03B -:102F20002232310541F137C082E190E021E13AE0FF -:102F300036C099278130910541F08230910541F0EA -:102F4000892B49F5E0EAF9E005C0E2E7F9E002C0C3 -:102F5000E8E4F9E0849190E09F0121C06430D8F466 -:102F6000E62FF0E0EE0FFF1FE251FD4F208131818F -:102F700089E090E014C0643070F470E0FB01EE0F63 -:102F8000FF1FEA51FD4F20813181FB01EE51FD4FC2 -:102F9000808190E004C080E090E020E030E0FA0121 -:102FA00031832083089580E189BD82E189BD09B420 -:102FB00000FEFDCF8091D8008F7D8093D800809156 -:102FC000E00082608093E0008091E00081FDFCCF12 -:102FD0000895CF92DF92EF92FF920F931F93CF93BA -:102FE000DF93EC018B016A010E944C19811133C0FF -:102FF000C114D10439F0F60180819181081B190BAD -:10300000C80FD91FE12CF12C0115110519F1809180 -:10301000E80085FD16C08091E8008E778093E80077 -:10302000C114D10449F0F60180819181E80EF91EA6 -:10303000F182E08285E00FC00E944C19882321F3C1 -:103040000AC089918093F10001501109FFEFEF1A36 -:10305000FF0ADACF80E0DF91CF911F910F91FF90AF -:10306000EF90DF90CF90089520915A0430915B0447 -:103070002617370748F06115710539F42091E800EB -:103080002E772093E80001C0B90140E06115710579 -:10309000A9F120915304222309F443C0253009F4F7 -:1030A00042C02091E80023FD40C02091E80022FDAD -:1030B00032C02091E80020FFE9CF4091F300209139 -:1030C000F20030E0342BFC01CF016115710559F09D -:1030D0002830310540F481918093F10061507109ED -:1030E0002F5F3F4FF1CF41E02830310509F040E03C -:1030F0002091E8002E772093E800C8CF4111C9CF76 -:103100000AC080915304882361F0853061F080917A -:10311000E80083FD0AC08091E80082FFF2CF80E0E2 -:10312000089582E0089583E0089581E00895209154 -:103130005A0430915B042617370748F06115710572 -:1031400039F42091E8002E772093E80001C0B901FE -:10315000FC0120E06115710591F1809153048823F1 -:1031600009F440C0853009F43FC08091E80083FD38 -:103170003DC08091E80082FD2FC08091E80080FF73 -:10318000E9CF2091F3008091F20090E0922B61153D -:10319000710559F08830910540F424912093F10095 -:1031A0003196615071090196F2CF21E0089709F03C -:1031B00020E08091E8008E778093E800CBCF21114A -:1031C000CCCF0AC080915304882361F0853061F030 -:1031D0008091E80083FD0AC08091E80082FFF2CF71 -:1031E00080E0089582E0089583E0089581E00895E5 -:1031F000982F973058F59093E900981739F070910F -:10320000EC002091ED005091F00003C0242F762FA8 -:1032100050E021FF19C03091EB003E7F3093EB006E -:103220003091ED003D7F3093ED003091EB00316047 -:103230003093EB007093EC002093ED005093F0007E -:103240002091EE0027FF07C09F5FD3CF8F70809340 -:10325000E90081E0089580E008958091540487FF9B -:1032600011C08091E80082FD05C080915304811156 -:10327000F8CF11C08091E8008B770BC08091530488 -:10328000882349F08091E80080FFF8CF8091E80022 -:103290008E778093E80008952091E4003091E50056 -:1032A00095E64091EC00842F817040FF22C0809110 -:1032B000E80080FD1CC080915304882391F0853084 -:1032C00091F08091EB0085FD10C04091E400509199 -:1032D000E5004217530729F39A01915011F784E052 -:1032E000089582E0089583E0089581E0089580E0E4 -:1032F00008954091E80042FFDECF08950E94EC1946 -:103300000E94F419E0EEF0E0808181608083E8EDB6 -:10331000F0E080818F77808319BCA7EDB0E08C91BD -:103320008E7F8C9380818F7E8083109252040895CB -:103330000F931F93CF93DF930E94EC190E94F4190F -:10334000C8EDD0E088818F77888388818068888302 -:1033500088818F7D888319BC1092530410924F048A -:10336000109251041092500400EE10E0F801808198 -:103370008B7F808388818160888342E060E080E089 -:103380000E94F818E1EEF0E080818E7F8083E2EE0B -:10339000F0E0808181608083808188608083F80193 -:1033A00080818E7F8083888180618883DF91CF9147 -:1033B0001F910F910895E8EDF0E080818F7E80836A -:1033C000E7EDF0E080818160808384E082BF81E06E -:1033D000809352040C949819E8EDF0E080818E7F80 -:1033E00080831092E20008951092DA001092E100BA -:1033F00008951F920F920FB60F9211242F933F93AF -:103400004F935F936F937F938F939F93AF93BF93EC -:10341000EF93FF938091E10082FF0BC08091E20067 -:1034200082FF07C08091E1008B7F8093E1000E94C2 -:10343000601C8091DA0080FF1FC08091D80080FF5F -:103440001BC08091DA008E7F8093DA008091D900D2 -:1034500080FF0DC080E189BD82E189BD09B400FE15 -:10346000FDCF81E0809353040E94641605C019BC0F -:10347000109253040E9472168091E10080FF19C0DF -:103480008091E20080FF15C08091E2008E7F8093E2 -:10349000E2008091E20080618093E2008091D80098 -:1034A00080628093D80019BC85E0809353040E9409 -:1034B00076168091E10084FF30C08091E20084FFA5 -:1034C0002CC080E189BD82E189BD09B400FEFDCF39 -:1034D0008091D8008F7D8093D8008091E1008F7E0D -:1034E0008093E1008091E2008F7E8093E2008091E2 -:1034F000E20081608093E20080914F04882311F004 -:1035000084E007C08091E30087FD02C081E001C034 -:1035100083E0809353040E9477168091E10083FF3B -:1035200029C08091E20083FF25C08091E100877F60 -:103530008093E10082E08093530410924F048091C5 -:10354000E1008E7F8093E1008091E2008E7F809386 -:10355000E2008091E20080618093E20042E060E05E -:1035600080E00E94F8188091F00088608093F0005D -:103570000E947516FF91EF91BF91AF919F918F912E -:103580007F916F915F914F913F912F910F900FBE5F -:103590000F901F9018951F920F920FB60F92112443 -:1035A0002F933F934F935F936F937F938F939F934B -:1035B000AF93BF93CF93DF93EF93FF93C091E90055 -:1035C000CF708091EC00D82FD17080FDD0E81092A0 -:1035D000E9008091F000877F8093F00078940E944A -:1035E0000F1B1092E9008091F00088608093F0003A -:1035F000CD2BCF70C093E900FF91EF91DF91CF9178 -:10360000BF91AF919F918F917F916F915F914F91FA -:103610003F912F910F900FBE0F901F9018951F9301 -:10362000CF93DF93CDB7DEB7AA970FB6F894DEBF7E -:103630000FBECDBFE4E5F4E088E08E0F9091F1007D -:1036400091938E13FBCF0E948D168091E80083FF2B -:103650001FC18091540490915504492F50E04A3085 -:10366000510508F015C1FA01EC59FF4F0C942132B5 -:10367000803881F0823809F00BC1809158048F7036 -:103680008093E9008091EB0085FB882780F91092F8 -:10369000E90006C08091500490915104911182601C -:1036A0009091E800977F9093E8008093F10010924A -:1036B000F100C8C0282F2D7F09F0EAC0882319F037 -:1036C000823061F0E5C080915604813009F0E0C09D -:1036D000933009F080E0809351042BC08091560410 -:1036E000811127C0809158048F7009F4D1C0809354 -:1036F000E9002091EB0020FF1CC0933021F4809161 -:10370000EB00806214C09091EB0090619093EB000D -:1037100021E030E0A90102C0440F551F8A95E2F76D -:103720004093EA001092EA008091EB008860809359 -:10373000EB001092E9008091E800877F86C081113C -:10374000A7C0109156041F778091E3008078812BE9 -:103750008093E3008091E800877F8093E8000E94D7 -:103760002D198091E80080FFFCCF8091E3008068F4 -:103770008093E300111102C082E001C083E08093D6 -:10378000530486C08058823008F082C0809156046D -:10379000909157048C3D53E0950779F583E08A8337 -:1037A0008AE289834FB7F894DE01139620E03EE069 -:1037B00051E2E32FF0E050935700E49120FF03C063 -:1037C000E295EF703F5FEF708E2F90E0EA3010F0DF -:1037D000C79601C0C0968D939D932F5F243149F702 -:1037E0004FBF8091E800877F8093E8006AE270E035 -:1037F000CE0101960E94341814C0AE014F5F5F4F96 -:10380000609158040E947B17BC01009709F440C0E6 -:103810009091E800977F9093E80089819A810E94B7 -:1038200097188091E8008B778093E80031C080384A -:1038300079F58091E800877F8093E80080914F04BC -:103840008093F1008091E8008E778093E8000E94D9 -:103850002D191EC081111CC0909156049230C0F4E5 -:103860008091E800877F8093E80090934F040E9446 -:103870002D1980914F04811106C08091E30087FDCE -:1038800002C081E001C084E0809353040E94791655 -:103890008091E80083FF0AC08091E800877F8093D1 -:1038A000E8008091EB0080628093EB00AA960FB64F -:1038B000F894DEBF0FBECDBFDF91CF911F91089569 -:1038C0000895CF93809153048823A1F0C091E9001B -:1038D000CF709091EC00892F817090FD80E8C82B0B -:1038E0001092E9008091E80083FD0E940F1BCF70C9 -:1038F000C093E900CF9108959093D3038093D203AE -:103900000895E091D203F091D303309721F0019014 -:10391000F081E02D099480E00895E091D203F091C8 -:10392000D303309721F00280F381E02D09940895AC -:10393000E091D203F091D303309721F00480F58118 -:10394000E02D099408952091D0033091D10382177E -:10395000930771F09093D1038093D003E091D20349 -:10396000F091D303309721F00680F781E02D099480 -:1039700008952091CE033091CF038217930771F001 -:103980009093CF038093CE03E091D203F091D303C1 -:10399000309721F00084F185E02D09940895089571 -:1039A0000C94CF1C0E9456280E94140E0E94DC2802 -:1039B0000C94902D5F926F927F928F929F92AF9214 -:1039C000BF92CF92DF92EF92FF920F931F93CF930C -:1039D000DF9300D000D01F92CDB7DEB70E94590E02 -:1039E0009DEDC92E93E0D92E03E010E0AA24A39404 -:1039F000B12C502E802F0E94D40E4C01F6017290F3 -:103A000062906F016826792661147104A1F4015057 -:103A1000110978F78FEF89838A831B820E945F28C0 -:103A20008160782F9D838C8349815A816B818D8140 -:103A30000E948A1D38C08091320481FD0E94DD0EF3 -:103A40002BE030E07501022E02C0EE0CFF1C0A9440 -:103A5000E2F7C70186219721892B09F129835A8230 -:103A60008E209F2091E0892809F490E09B830E949A -:103A70005F288160782F9D838C8349815A816B8177 -:103A80008D810E948A1D000F111FF801EB52FC4F1F -:103A900080819181E826F926F182E08204C02150DC -:103AA000310980F6B4CF0E94C82A1091D4030E9435 -:103AB000811C1817D1F00E94811C8093D4030F90B1 -:103AC0000F900F900F900F90DF91CF911F910F915A -:103AD000FF90EF90DF90CF90BF90AF909F908F902E -:103AE0007F906F905F900C94FE0D0F900F900F9051 -:103AF0000F900F90DF91CF911F910F91FF90EF905A -:103B0000DF90CF90BF90AF909F908F907F906F90FD -:103B10005F900895CF93DF93CDB7DEB72B970FB6A5 -:103B2000F894DEBF0FBECDBF4F83588769877A8771 -:103B30008B87DE01119686E0FD0111928A95E9F7E7 -:103B400085E0FE01379601900D928A95E1F7498153 -:103B50005A816B817C818D819E810E9401242B96EC -:103B60000FB6F894DEBF0FBECDBFDF91CF910895A1 -:103B7000CF93882309F4C2C0C82F823859F40E9419 -:103B8000811C81FDBBC089E30E94DB260E94A8271F -:103B900089E30CC0833879F40E94811C80FDAEC09B -:103BA00083E50E94DB260E94A82783E50E941D274B -:103BB000CF910C94A827843859F40E94811C82FD6F -:103BC0009DC087E40E94DB260E94A82787E4EECFF1 -:103BD0008CEF8C0F813A48F48C2F0E94F82C8111C5 -:103BE0008DC08C2F0E94DB26E3CF80E28C0F8830C3 -:103BF00048F4C77081E001C0880FCA95EAF70E94B7 -:103C00006127D6CF8BE58C0F833078F4C53A29F045 -:103C1000C63A31F083E890E005C081E890E002C048 -:103C200082E890E0CF910C94A31C88E58C0F83313F -:103C300008F064C0C83A39F1C93A41F1CA3A49F1C9 -:103C4000CB3A51F1CC3A59F1CD3A61F1C03B69F12F -:103C5000CE3A71F1CF3A79F1C13B81F1C23B89F1A2 -:103C6000C33B91F1C43B99F1C53BA1F1C63BA9F11E -:103C7000C73BB1F1C83BB9F1C93BC1F1CA3BC9F17E -:103C800080E090E038C082EE90E035C089EE90E0B0 -:103C900032C08AEE90E02FC085EB90E02CC086EB1E -:103CA00090E029C087EB90E026C08CEC90E023C028 -:103CB0008DEC90E020C083E891E01DC08AE891E09F -:103CC0001AC082E991E017C084E991E014C081E252 -:103CD00092E011C083E292E00EC084E292E00BC059 -:103CE00085E292E008C086E292E005C087E292E0B9 -:103CF00002C08AE292E0CF910C94B91CCF91089552 -:103D0000882309F44BC0823859F40E94811C81FF3A -:103D100045C089E30E94DB260E94A82789E30CC0E6 -:103D2000833871F40E94811C80FF38C083E50E94B3 -:103D3000DB260E94A82783E50E941D270C94A82754 -:103D4000843859F40E94811C82FF28C087E40E94B5 -:103D5000DB260E94A82787E4EFCF9CEF980F913ACB -:103D600058F390E2980F983050F4877091E001C0BA -:103D7000990F8A95EAF7892F0E946727DFCF9BE585 -:103D8000980F933020F480E090E00C94A31C885AA4 -:103D9000833120F480E090E00C94B91C08958823CE -:103DA00021F00E9461270C94A8270895882321F010 -:103DB0000E9467270C94A82708957F928F929F9264 -:103DC000AF92BF92CF92DF92EF92FF920F931F9329 -:103DD000CF93DF931F92CDB7DEB77C01C62E772E2F -:103DE000FC01058102950F70128111110E947E273E -:103DF0000E94D426882379F0112369F080E28C0D8B -:103E0000883048F082E00E94BD260E94D42691E0CE -:103E1000D82ED92601C0D12CE72DE295EF70F0E025 -:103E2000E259FF4F0C942132872D807F072D0F70B0 -:103E3000882311F00295007F112389F0002309F4F3 -:103E400099C180E28C0D883020F4802F0E94612778 -:103E500003C0802F0E9471270E94A8278BC18C2D40 -:103E60000E94801E002309F4C3C180E28C0D8830BB -:103E700020F4802F0E94672703C0802F0E9477279D -:103E80000E94A827B5C1872D807F972D9F70803213 -:103E900011F4892F03C0892F8295807FCC2021F0D7 -:103EA000F1E0CF16A1F01DC0112339F0002319F164 -:103EB000013009F50E9491279BC1002319F00130C0 -:103EC00009F496C189830E949427898110C1112326 -:103ED00021F0063008F08CC10EC0053008F088C112 -:103EE00006C1112359F0002331F0F701958190FFAD -:103EF00041C19F7095830E94CF1E7AC1002309F4AF -:103F0000F6C03EC1872D86958695837090E0009718 -:103F100019F0019761F06CC1112321F08C2D972DC0 -:103F2000937002C080E090E00E94A31C61C1112345 -:103F300021F08C2D972D937002C080E090E00E94BC -:103F4000B91C56C18C2D112319F00E94D02902C032 -:103F50000E94382A0E94BD2A4BC1872D837009F028 -:103F600052C0111145C18C2D829586958770880F9E -:103F7000880F9C2D9F70892E912CA12CB12C082E7E -:103F800004C0880C991CAA1CBB1C0A94D2F7C4FE5E -:103F900014C00FE010E020E030E0B901A80104C037 -:103FA000440F551F661F771F8A95D2F7CB01BA01C0 -:103FB000609570958095909503C060E070E0CB01AE -:103FC000272D26952695237030E02230310569F0A3 -:103FD0002330310589F0682979298A299B292130E4 -:103FE000310571F00E94492503C1682979298A2980 -:103FF0009B290E946525FCC00E944925C501B4018A -:104000000E942D25F5C0112319F0872D817001C064 -:104010008695882309F4ECC08C2D8295869587704F -:10402000880F880F9C2D9F70892E912CA12CB12C6C -:10403000082E04C0880C991CAA1CBB1C0A94D2F739 -:10404000C4FE14C00FE010E020E030E0B901A80188 -:1040500004C0440F551F661F771F8A95D2F7CB0106 -:10406000BA01609570958095909503C060E070E00E -:10407000CB01272D269526952370422F50E0423004 -:10408000510569F04330510589F0682979298A2959 -:104090009B294130510571F00E942326A9C068294F -:1040A00079298A299B290E943F26A2C00E942326A3 -:1040B000C501B4010E9407269BC08C2D90E0FC0135 -:1040C000E05EF109E531F10508F050C0E258FF4F1C -:1040D0000C9421320C2D0F70872D8F71112321F03C -:1040E0000E94A025802F07CF0E94C125802F0E940B -:1040F000D61E7EC0112341F0053008F079C0872D0F -:104100008F710E94E62574C0063008F071C0F7CFA9 -:10411000112339F0872D8F710E94A02569C01123CA -:10412000C9F3872D8F710E94C12562C0112329F028 -:10413000872D8F710E948B255BC00E94812558C0FE -:10414000112351F0172D1F71812F0E94A02563E0CC -:10415000812F0E94B4264CC081E00E94BD2602300F -:1041600008F446C082E00E94BD2642C0112331F00F -:10417000002381F28C2D0E94B81D3AC0002389F2E1 -:104180008C2D0E94801E34C0472D4F706C2DC701AE -:104190000E94E0060E94A5242BC0111129C0472DC2 -:1041A0004F7050E042305105B9F04CF441155105C3 -:1041B00081F041305105E1F40E94B82D19C043301F -:1041C000510569F04430510599F48C2D0E940A2E56 -:1041D0000FC00E94A12D0CC00E94D42D09C00E94C6 -:1041E000E72D06C0472D4F706C2DC7010E949F0A16 -:1041F000DD20F9F00E94B02680FD1BC0F70112827D -:104200000E94AA260E94A025C7010E9428210E9480 -:10421000AA260F90DF91CF911F910F91FF90EF9001 -:10422000DF90CF90BF90AF909F908F907F900C9435 -:10423000C1250F90DF91CF911F910F91FF90EF90CB -:10424000DF90CF90BF90AF909F908F907F90089518 -:104250000F931F93CF93DF93EC01888199812B817A -:104260003C81232BB9F09F3F11F48F3F99F0CE0191 -:104270000E949E08882371F0688179818A810E945A -:10428000A6268C010E945B260E942225B801CE0141 -:104290000E94DD1EDF91CF911F910F9108950E9422 -:1042A0007E270E948E270E9453270E94A8270E94E3 -:1042B0006E2B0E94BD2A80E090E00E94A31C80E04B -:1042C00090E00C94B91C0E946E270C944F210E9420 -:1042D0009B26292F22952F7030E02C3031054CF48D -:1042E0002A3031056CF42250310922303105A8F40E -:1042F00007C02C30310569F02F30310551F00DC069 -:10430000803F69F018F4803E40F409C0843F29F4EE -:1043100006C093FB882780F9089580E0089581E026 -:104320000895CF93DF9300D000D01F92CDB7DEB7B2 -:104330000F900F900F900F900F90DF91CF910895F5 -:10434000CF93DF9300D000D000D0CDB7DEB7269654 -:104350000FB6F894DEBF0FBECDBFDF91CF910895A9 -:104360001F93CF93DF93C091DD0316E08091DE03AE -:10437000C81799F0D0E01C9FF0011D9FF00D11248B -:10438000E152FC4F4081518162817381848195812A -:104390000E94A0212196C770E9CFDF91CF911F9194 -:1043A000089540910F045091100460911104709190 -:1043B000120480911304909114040C94A021809114 -:1043C000140482958F7009F054C0809111048823E1 -:1043D00009F44FC08091DD03A091DE0360910F04CA -:1043E000709110044091120450911304B6E08A17A2 -:1043F00009F43FC090E041155105C1F17F3F11F430 -:104400006F3FA1F1B89FF001B99FF00D1124E15267 -:10441000FC4F218172132AC02081621327C02281A0 -:10442000211124C0238134812417350710F4215031 -:104430003109241B350B283C3105C0F420911404AC -:104440002F7020612093140426E0289FF001299FFB -:10445000F00D1124EC51FC4F80818F7080618083BE -:104460008FE094E00E9428210C94B021019687707F -:10447000BECF0895CF92DF92EF92FF920F931F93DA -:10448000CF93DF93CDB7DEB762970FB6F894DEBF58 -:104490000FBECDBF8C0185E0F801DE011D960190B5 -:1044A0000D928A95E1F7D8014C9111965C91119784 -:1044B00012966C9112971396CD90DC9014973091D0 -:1044C0000F047091100480911204909113040097CE -:1044D00009F46BC17F3F19F43F3F09F466C1E090D6 -:1044E0001104EE2009F4C0C020911404C816D906A6 -:1044F00028F0F601E81BF90BCF0104C080959095D8 -:104500008C0D9D1DFF24F394883C910578F0F12CCF -:10451000207F09F0C6C07C2DD98AC88A89890E946B -:1045200091218FE094E00E942821B1C0822F807FEA -:1045300009F046C0751314C0341312C0611110C0C5 -:104540002F702061209314040E94D1218FE094E009 -:104550000E94282180911404D80115968C932EC0B6 -:10456000CD2819F15F3F11F44F3FF9F0F62E61119C -:104570001CC08091DD032091DE0336E0821709F430 -:104580005AC090E0389FF001399FF00D1124E1529C -:10459000FC4F7181571306C07081471303C07281AD -:1045A000711103C001968770E9CFF62E662309F4D6 -:1045B00018C180911404816080931404F12C11C1FE -:1045C000751308C0341306C0611104C0809114042F -:1045D000D801C3C04D875E878D859E856A8B0E94FA -:1045E00067216A898823E1F16623D1F120911404BF -:1045F000822F82958F7090E0029774F080910F0463 -:104600009091100498878F831986DB86CA862C8741 -:10461000CE0107960E94282186E0F801AFE0B4E0C1 -:1046200001900D928A95E1F70E94DF210E94D1212D -:10463000FF24F394D6C04D875E878D859E850E94AA -:104640009B26292F22952F7030E0223031050CF067 -:10465000BCC09F7009F0B6C0805E883008F4C1C04D -:10466000C8010E942821E4CFC816D90608F453C017 -:10467000F601E81BF90BCF01883C910508F450C006 -:10468000F12C7C2DD98AC88A89890E949121EFE07A -:10469000F4E086E0DF011D928A95E9F70E94D121BE -:1046A000A0C0751314C0341312C0611110C08091E2 -:1046B0001404F8018583C8010E94282186E0EFE0F8 -:1046C000F4E0DF011D928A95E9F7FE2C8AC04D8740 -:1046D0005E878D859E856A8B0E9467216A89882303 -:1046E00009F4BECF662309F4BBCF20911404822FB6 -:1046F00082958F7090E002970CF48ECF80910F041A -:10470000909110049A8389831B82DD82CC822E8350 -:10471000CE0101967FCF809590958C0D9D1DACCFDD -:10472000F62E662309F49CCF75132EC034132CC0CB -:104730002091140420FD1FC0822F82958F70D9F024 -:10474000D80115962C9315978F3049F08F5F982FCD -:104750009295907F822F8F70892B15968C93C8012C -:104760000E94282186E0F801AFE0B4E001900D92AC -:104770008A95E1F793CF86E0F801AFE0B4E00190CD -:104780000D928A95E1F72DC04D875E878D859E85B8 -:104790000E946721811140CF809114048160809331 -:1047A0001404C8010E9428211CC0662309F458CFB4 -:1047B0004D875E878D859E850E946721882309F439 -:1047C0004FCF2ACF811148CF0CC0243031050CF0D7 -:1047D00047CF9F7009F440CFF8019581907F09F091 -:1047E0003BCF8F2D62960FB6F894DEBF0FBECDBFC4 -:1047F000DF91CF911F910F91FF90EF90DF90CF90BD -:1048000008951F93CF93DF93CDB7DEB72C970FB6E4 -:10481000F894DEBF0FBECDBF4F83588769877A8774 -:104820008B879C87CE0107960E943A22882369F0E5 -:104830008F8198852A853B85232BF1F19F3F09F0D5 -:1048400063C08F3F09F060C037C086E0FE01379635 -:10485000DE01119601900D928A95E1F76F817885BE -:10486000EA85FB85309741F17F3F11F46F3F21F1DD -:104870002091DE0330E0C9010196877099274091AD -:10488000DD0350E08417950709F447C069837A83F4 -:10489000FD83EC8396E0929FD001939FB00D11248D -:1048A000A152BC4FFE01319601900D929A95E1F70D -:1048B0008093DE030E94B02116E08091DD03909189 -:1048C000DE038917C1F1189FC001112481529C4F4A -:1048D0000E943A22882379F1E091DD031E9FF001C6 -:1048E0001124E152FC4F40815181628173818481A6 -:1048F00095810E94A0218091DD0390E00196877050 -:1049000099278093DD03D9CF4F81588569857A85B2 -:104910008B859C850E94A021CFCF0E94632110929D -:10492000DE031092DD03EFE0F4E086E0DF011D928C -:104930008A95E9F7C1CF2C960FB6F894DEBF0FBE6B -:10494000CDBFDF91CF911F910895EF92FF920F930A -:104950001F93CF93DF938C01009709F46CC0F12C67 -:10496000EE24E394E8012196F8018491843740F421 -:10497000843008F051C0813081F0823019F15BC081 -:10498000853709F444C0A8F19CE7980F903708F0E8 -:1049900052C08F770E94801E41C00E5F1F4FFE01E4 -:1049A000C49180E28C0F883048F4C7708E2D01C00E -:1049B000880FCA95EAF70E94812714C08C2F0E94A5 -:1049C000B81D2DC00E5F1F4FFE01C49180E28C0FF9 -:1049D000883058F4C7708E2D01C0880FCA95EAF749 -:1049E0000E9487270E94A8271AC08C2F0E94801E31 -:1049F00016C00E5F1F4FFE01C491CC2381F08FE9DA -:104A00009FE00197F1F700C00000C150F6CF0E5FA4 -:104A10001F4FFE01F49003C00E94B81D8E018F2D20 -:104A2000882309F49FCFEFE9FFE03197F1F700C049 -:104A300000008150F5CFDF91CF911F910F91FF9032 -:104A4000EF90089508956093190470931A04809369 -:104A50001B0490931C040C944F210F931F930091FF -:104A6000190410911A0420911B0430911C04DC01DC -:104A7000CB01802B912BA22BB32B80931904909305 -:104A80001A04A0931B04B0931C041F910F910C9463 -:104A90004F210F931F930091190410911A04209134 -:104AA0001B0430911C04DC01CB0180239123A22341 -:104AB000B3238093190490931A04A0931B04B0931A -:104AC0001C041F910F910C944F210F931F93009181 -:104AD000190410911A0420911B0430911C04DC016C -:104AE000CB0180279127A227B327809319049093A5 -:104AF0001A04A0931B04B0931C041F910F910C94F3 -:104B00004F2110921504109216041092170410925F -:104B100018040C944F2141E050E060E070E004C0C4 -:104B2000440F551F661F771F8A95D2F740931504CF -:104B30005093160460931704709318040C944F213B -:104B400041E050E060E070E004C0440F551F661F74 -:104B5000771F8A95D2F78091150490911604A09141 -:104B60001704B0911804482B592B6A2B7B2B4093C8 -:104B700015045093160460931704709318040C9452 -:104B80004F2141E050E060E070E004C0440F551F49 -:104B9000661F771F8A95D2F740955095609570955E -:104BA0008091150490911604A0911704B0911804F7 -:104BB000482359236A237B234093150450931604FA -:104BC00060931704709318040C944F2141E050E057 -:104BD00060E070E004C0440F551F661F771F8A9580 -:104BE000D2F78091150490911604A0911704B0910A -:104BF0001804482759276A277B27409315045093A8 -:104C0000160460931704709318040C944F210F93AB -:104C10001F930091150410911604209117043091F0 -:104C20001804DC01CB01802B912BA22BB32B80939A -:104C3000150490931604A0931704B09318041F91C1 -:104C40000F910C944F210F931F9300911504109115 -:104C500016042091170430911804DC01CB01802345 -:104C60009123A223B3238093150490931604A09359 -:104C70001704B09318041F910F910C944F210F93B8 -:104C80001F93009115041091160420911704309180 -:104C90001804DC01CB0180279127A227B32780933A -:104CA000150490931604A0931704B09318041F9151 -:104CB0000F910C944F210895CF92DF92EF92FF92C3 -:104CC0000F931F93CF93DF938C01C0901904D09062 -:104CD0001A04E0901B04F0901C048091150490913C -:104CE0001604A0911704B0911804C82AD92AEA2AF8 -:104CF000FB2ACFE1D0E0D701C6010C2E04C0B69547 -:104D0000A795979587950A94D2F780FF06C0B801BA -:104D10008C2F0E94240D019721F4219760F780E0E9 -:104D200001C08C2FDF91CF911F910F91FF90EF90D9 -:104D3000DF90CF900895CF93DF93EC010E945C2623 -:104D4000BE010E94240DDF91CF910895CB010E94F6 -:104D50009B26089580911D048595859585950895D8 -:104D600080911D048770089598E0899F9001112417 -:104D7000262B20931D040C94A02520911D048095C2 -:104D8000822380931D04982F977069F430E0482F98 -:104D9000552747FD50952417350729F085958595AA -:104DA00085950C94C125089590911D04977081E01C -:104DB00009F480E0089590912D02992321F09091BB -:104DC0002E02911109C020912F0230913002F90179 -:104DD00032969FEF40E01FC0982F96959695969536 -:104DE0009F3050F5E0912F02F0913002E90FF11D54 -:104DF000877021E030E0A90102C0440F551F8A9559 -:104E0000E2F7CA019181892B818308959F3F39F090 -:104E10004F5F4E3041F051915813F8CF0DC05111F2 -:104E2000F7CF942FF5CF9F3F39F0F901E90FF11D2E -:104E300097FDFA9582830895089590912D02992304 -:104E400021F090912E02911109C020912F023091F2 -:104E50003002F9013296205F3F4F1FC0982F969580 -:104E6000969596959F30F0F4E0912F02F0913002E4 -:104E7000E90FF11D877021E030E0A90102C0440F65 -:104E8000551F8A95E2F7CA01809591818923818314 -:104E900008953196E217F30729F090819813F9CF1E -:104EA0001082F7CF089581E090E0E0912F02F09119 -:104EB0003002E80FF91F1082019680319105A9F7A1 -:104EC000089590913104892B809331040895809541 -:104ED0009091310489238093310408951092310414 -:104EE000089590913004892B809330040895809523 -:104EF00090913004892380933004089510923004F7 -:104F0000089590912F04892B80932F040895809504 -:104F100090912F04892380932F04089510922F04D9 -:104F2000089580931E04089510921E0408958091A0 -:104F30002F0290913002FC0131969C01205F3F4F7F -:104F400080E0919191118F5FE217F307D1F70895F7 -:104F5000E0912F02F0913002809131048083E09142 -:104F60002F02F0913002908180913004892B808350 -:104F7000E0912F02F0913002908180912F04892BD3 -:104F8000808380911E04882361F0E0912F02F091CC -:104F900030029081892B80830E9497278111109283 -:104FA0001E0480912F02909130020C948D1C20E001 -:104FB000009739F0AC0141505109842395232F5FAC -:104FC000F7CF822F089580915304843039F11092E5 -:104FD000330420E488E190E00FB6F894A89580931C -:104FE00060000FBE2093600080E00E940E0680E00B -:104FF0000E94FE0D83B7817F846083BF83B7816089 -:1050000083BF7894889583B78E7F83BF88E10FB67E -:10501000F89480936000109260000FBE0895089588 -:10502000089580E00E940E060E940F280E94590EEB -:105030000E9410280E94DE0E91E0811101C090E0D4 -:10504000892F08950E94632180E00E940E060E942D -:10505000902D0E94811C0C94FE0D1F920F920FB692 -:105060000F9211248F939F93AF93BF93809133043A -:10507000811113C08091340490913504A0913604BD -:10508000B09137044196A11DB11D809334049093D3 -:105090003504A0933604B0933704BF91AF919F912C -:1050A0008F910F900FBE0F901F90189582E084BDD6 -:1050B00093E095BD9AEF97BD80936E0008952FB74A -:1050C000F8948091340490913504A0913604B09105 -:1050D00037042FBF0895CF92DF92EF92FF920F9384 -:1050E0001F932FB7F8944091340450913504609188 -:1050F0003604709137042FBF6A017B01EE24FF2430 -:105100008C0120E030E0C016D106E206F30610F470 -:10511000415051099A01281B390BC9011F910F9168 -:10512000FF90EF90DF90CF9008951F920F920FB6EF -:105130000F9211248F939F93AF93BF938091340468 -:1051400090913504A0913604B09137040196A11DC9 -:10515000B11D8093340490933504A0933604B0932A -:105160003704BF91AF919F918F910F900FBE0F9019 -:105170001F9018950E947E19F8942FEF87EA91E608 -:10518000215080409040E1F700C0000087E090EBA4 -:10519000DC0180935E0490935F04A0936004B0935D -:1051A00061049CE088E10FB6F894A89580936000B4 -:1051B0000FBE90936000FFCF0E941B29811102C097 -:1051C0000E94F7280E942629809332040E943329E6 -:1051D00080935C0487FB882780F980932E020E94CD -:1051E0002A29682F70E080E090E00C9423256DEE72 -:1051F0007EEF80E090E00E94473260E082E090E045 -:105200000E94353260E083E090E00E94353260E039 -:1052100084E090E00E94353260E085E090E00E94FA -:10522000353260E086E090E00E9435326FEF87E033 -:1052300090E00C94353280E090E00E942F3221E023 -:105240008D3E9E4F09F020E0822F089582E090E08D -:105250000C94273283E090E00C942732682F83E08F -:1052600090E00C94353284E090E00C942732682F63 -:1052700084E090E00C94353286E090E00C94273284 -:10528000682F86E090E00C94353287E090E00C9433 -:105290002732682F87E090E00C94353280913A04F1 -:1052A00080FF0BC06091340285E0689FB00111243B -:1052B00075956795759567952BC081FF09C06091BD -:1052C000340285E0689FB00111247595679520C070 -:1052D00082FF07C06091340285E0689FB00111240D -:1052E00017C090913B049923D1F060913302961737 -:1052F00088F72091340285E0289F90011124929F25 -:10530000A001939F500D112470E0CA010E940D323C -:105310006038710540F46115710539F002C065E02F -:1053200070E0862F08958FE7089581E008958091B9 -:105330003A0480FF08C06091320270E0759567956D -:105340007595679521C081FF06C06091320270E0BB -:105350007595679519C082FF04C06091320270E0B4 -:1053600010C090913B049923C1F0609131029617CF -:10537000A0F780913202899FC001112470E00E9441 -:105380000D326038710528F46115710521F0862F02 -:1053900008958FE7089581E0089561E070E0F4CF0B -:1053A000803F21F40E944E29819504C0813F29F459 -:1053B0000E944E2980933E040895823F21F40E946A -:1053C0004E29819504C0833F29F40E944E29809381 -:1053D0003D040895893F19F40E94972905C08A3F2A -:1053E00031F40E949729819580933F0408958B3F63 -:1053F00021F40E949729819504C08C3F29F40E94D2 -:105400009729809340040895843F21F480913C04BF -:10541000816017C0853F21F480913C04826011C0F7 -:10542000863F21F480913C0484600BC0873F21F4C7 -:1054300080913C04886005C0883F31F480913C0431 -:10544000806180933C0408958D3F21F480913A045B -:1054500081600BC08E3F21F480913A04826005C0C8 -:105460008F3F29F480913A04846080933A04089530 -:10547000803F39F480913E0487FF6CC010923E0457 -:1054800069C0813F29F480913E041816BCF362C0C4 -:1054900090913D04823F29F497FF5CC010923D0437 -:1054A00059C0833F19F41916CCF354C0893F41F415 -:1054B00080913F0418160CF04DC010923F044AC072 -:1054C0008A3F29F480913F0487FF44C0F6CF8B3F89 -:1054D00039F48091400487FF3DC0109240043AC0E7 -:1054E0008C3F29F4809140041816BCF333C0843FEC -:1054F00021F480913C048E7F17C0853F21F4809178 -:105500003C048D7F11C0863F21F480913C048B7F49 -:105510000BC0873F21F480913C04877F05C0883F02 -:1055200031F480913C048F7E80933C0413C08D3F06 -:1055300021F480913A048E7F0BC08E3F21F480913C -:105540003A048D7F05C08F3F29F480913A048B7F08 -:1055500080933A0480913D0481110EC080913E04F5 -:1055600081110AC080913F04811106C080914004DE -:10557000811102C010923B0408958CE394E00E94D4 -:10558000981C0E945F2890933904809338040895F2 -:105590001F93CF93DF9380913804909139040E9438 -:1055A0006B28AC0190913B04992321F020913502A6 -:1055B00030E006C0209136028AE0289F9001112435 -:1055C0004217530708F486C080913D04C0913E0401 -:1055D000D0913F0410914004811107C0C11176C0E1 -:1055E000D11174C0111172C075C09F3F19F09F5F37 -:1055F00090933B04181624F40E944E2980933D0496 -:1056000080913D0487FF05C00E944E2981958093BB -:105610003D041C1624F40E944E2980933E04809180 -:105620003E0487FF05C00E944E29819580933E0469 -:1056300060913D04662339F1C0913E04CC2319F1F9 -:10564000772767FD7095872F972F0E942F2F23E3D1 -:1056500033E343E35FE30E943F300E94FC2E6093FC -:105660003D046C2F772767FD7095872F972F0E9439 -:105670002F2F23E333E343E35FE30E943F300E9495 -:10568000FC2E60933E041D1624F40E9497298093FB -:105690003F0480913F0487FF05C00E9497298195B0 -:1056A00080933F04111624F40E94972980934004AC -:1056B0008091400487FF05C00E94972981958093BF -:1056C0004004DF91CF911F910C94BD2A9F3F09F0B8 -:1056D0008ECF96CFDF91CF911F910895ECE3F4E048 -:1056E00085E0DF011D928A95E9F710923B04109244 -:1056F0003A040895833081F128F4813059F08230E2 -:10570000D1F00895853009F449C0B8F1863009F424 -:1057100056C0089580913602262F30E0280F311DA3 -:105720002F3F310524F4680F6093360208958FEF00 -:1057300080933602089580913502262F30E0280F9D -:10574000311D2F3F310524F4680F60933502089511 -:105750008FEF80933502089580913402262F30E038 -:10576000280F311D2F3F310524F4680F6093340258 -:1057700008958FEF80933402089580913302262F8D -:1057800030E0280F311D2F3F310524F4680F60935E -:10579000330208958FEF809333020895809132028F -:1057A000262F30E0280F311D2F3F310524F4680FDC -:1057B0006093320208958FEF8093320208958091B2 -:1057C0003102262F30E0280F311D2F3F310524F400 -:1057D000680F6093310208958FEF8093310208952E -:1057E000833011F128F4813049F0823091F008952E -:1057F000853081F120F18630C1F108958091360223 -:10580000681720F4861B80933602089510923602A2 -:10581000089580913502681720F4861B8093350225 -:10582000089510923502089580913402681720F48B -:10583000861B80933402089510923402089580915B -:105840003302681720F4861B809333020895109268 -:105850003302089580913202681720F4861B8093EA -:105860003202089510923202089580913102681731 -:1058700020F4861B8093310208951092310208951E -:105880000F931F93873208F048C08E3108F08DC007 -:10589000803109F477C008F5873009F461C068F4F5 -:1058A000863009F09DC080913204817F8E7F809385 -:1058B000320481E08093420494C08B3009F489C0A3 -:1058C0008E3009F08DC08091320482FB222720F9AE -:1058D00091E0922790FB82F95EC0863109F479C08D -:1058E00060F4813109F07CC00E94632190912E0206 -:1058F00081E0892780932E026CC0893109F469C048 -:105900008B3109F06DC08091320481FB222720F990 -:1059100091E0922790FB81F93EC0883309F459C089 -:1059200050F4893209F457C0853309F454C08732E2 -:1059300009F451C055C0833409F44DC028F48A33AA -:1059400008F44EC0895332C0883409F049C00E941F -:1059500063210E940E0F0E9495080E94BA2839C048 -:1059600090913204892F8095817080FB90F929F005 -:10597000966098609093320434C0997F977F90939B -:10598000320427C08091320483FB222720F991E062 -:10599000922790FB83F9809332049923D1F0809170 -:1059A000320481608093320414C08D5141E050E094 -:1059B00060E070E08A019B0104C0000F111F221FEC -:1059C000331F8A95D2F7C901B8010E9423250E948E -:1059D000632181E006C061E070E080E090E0F5CFF7 -:1059E00080E01F910F91089580E0089580E0089570 -:1059F000CF93C82F80914204813069F018F0823033 -:105A0000C9F184C0E0912F02F0913002808182328E -:105A100009F07EC007C0E0912F02F0913002808132 -:105A2000823261F48C2F0E94F42C811104C08C2FDF -:105A30000E94402C1DC081E090E01AC08C2F0E9473 -:105A4000F62C811114C0C43179F048F4CB3079F0D0 -:105A5000C03109F061C082E08093420408C0C932BD -:105A600019F0C83321F058C01092420455C081E0AB -:105A7000817054C0C93291F120F5C43179F1B0F48C -:105A8000C73009F047C08EE18093360282E38093ED -:105A900035028AE08093340284E18093330288E007 -:105AA0008093320288E28093310234C0CE51C630F6 -:105AB00088F5EC2FF0E0EA50FD4F8081809341049F -:105AC00029C0CE34E9F020F4CB3421F56AE013C0CC -:105AD000C13579F0C235F1F461E00DC08091410427 -:105AE000882319F01092410415C081E0809342048C -:105AF00015C061E006C0809141040E947A2B0AC063 -:105B00006AE0809141040E94F02B04C0109242048C -:105B100080E004C081E002C080E0AACFCF91089568 -:105B20000E941B29811102C00E94F7280E943C2973 -:105B300080935D0480FF02C0869501C080E00C94D4 -:105B40000E0680915D04982F9695292F30E0233022 -:105B500031054CF49F5F990F8170892B8160809390 -:105B60005D040E94402980915D0486950C940E0688 -:105B700080915D04982F969591F09158990F8170BE -:105B8000892B80935D048E7F91E009F490E08091F1 -:105B90005D0490FB80F980935D040E944029809110 -:105BA0005D0486950C940E0680915D04982F909567 -:105BB00090FB80F980935D040E94402980915D04F0 -:105BC00080FF02C0869501C080E00C940E06909183 -:105BD0005D04892F86958F5F8F779170843028F4CC -:105BE000880F892B80935D0402C090935D0480919F -:105BF0005D048E7F91E009F490E080915D0490FB5C -:105C000080F980935D040E94402980915D0486950F -:105C10000C940E0620915D04922F96958927982F5B -:105C2000990F822F8170892B80935D048E7F91E084 -:105C300009F490E080915D0490FB80F980935D040D -:105C40000E94402980915D0486950C940E068091F7 -:105C50005D04869508955058BB27AA270ED0D1C160 -:105C6000C2D130F0C7D120F031F49F3F11F41EF4BF -:105C7000B7C10EF4E095E7FB9FC1E92FD3D180F3C4 -:105C8000BA17620773078407950718F071F49EF539 -:105C9000EBC10EF4E0950B2EBA2FA02D0B01B9012C -:105CA00090010C01CA01A0011124FF27591B99F092 -:105CB000593F50F4503E68F11A16F040A22F232F9E -:105CC000342F4427585FF3CF469537952795A795EE -:105CD000F0405395C9F77EF41F16BA0B620B730B95 -:105CE000840BBAF09150A1F0FF0FBB1F661F771F06 -:105CF000881FC2F70EC0BA0F621F731F841F48F4BB -:105D0000879577956795B795F7959E3F08F0B3CF40 -:105D10009395880F08F09927EE0F9795879508952A -:105D200027D108F481E008950CD06BC163D140F015 -:105D30005AD130F021F45F3F19F03EC1511195C1A5 -:105D40004FC170D198F39923C9F35523B1F3951B33 -:105D5000550BBB27AA2762177307840738F09F5F8C -:105D60005F4F220F331F441FAA1FA9F333D00E2EFB -:105D70003AF0E0E830D091505040E695001CCAF768 -:105D800029D0FE2F27D0660F771F881FBB1F26172D -:105D900037074807AB07B0E809F0BB0B802DBF0100 -:105DA000FF2793585F4F2AF09E3F510568F004C1CA -:105DB0005CC15F3FECF3983EDCF386957795679581 -:105DC000B795F7959F5FC9F7880F911D96958795B1 -:105DD00097F90895E1E0660F771F881FBB1F6217D0 -:105DE00073078407BA0720F0621B730B840BBA0B8E -:105DF000EE1F88F7E095089504D06894B11135C17D -:105E0000089518D188F09F5790F0B92F9927B7516E -:105E1000A0F0D1F0660F771F881F991F1AF0BA956E -:105E2000C9F712C0B13081F01FD1B1E008951CC193 -:105E3000672F782F8827B85F39F0B93FCCF3869564 -:105E400077956795B395D9F73EF4909580957095C1 -:105E500061957F4F8F4F9F4F0895E89409C097FB3E -:105E60003EF490958095709561957F4F8F4F9F4F31 -:105E70009923A9F0F92F96E9BB279395F695879575 -:105E800077956795B795F111F8CFFAF4BB0F11F438 -:105E900060FF1BC06F5F7F4F8F4F9F4F16C08823DF -:105EA00011F096E911C0772321F09EE8872F762F15 -:105EB00005C0662371F096E8862F70E060E02AF056 -:105EC0009A95660F771F881FDAF7880F9695879542 -:105ED00097F9089588D018F011F08CD038F480C06C -:105EE000C4C0E92F9FD0B0F35523C9F3E7FB621775 -:105EF000730784079507A8F199F3E92FFF278823F3 -:105F00002AF03197660F771F881FDAF7952F5527EC -:105F1000442332F091505040220F331F441FD2F7D8 -:105F2000BB27E91BF50B621B730B840BB109C1F294 -:105F300022F4620F731F841FB11D31972AF0660F80 -:105F4000771F881FBB1FEFCF915050405AF041F090 -:105F5000882332F0660F771F881F91505040C1F799 -:105F6000939530C08695779567959F5FD9F7F8CF61 -:105F7000990F0008550FAA0BE0E8FEEF161617065A -:105F8000E807F907C0F012161306E407F50798F0C2 -:105F9000621B730B840B950B39F40A2661F0232BDB -:105FA000242B252B21F408950A2609F4A140A69557 -:105FB0008FEF811D811D089597F99F6780E870E03C -:105FC00060E008959F3F31F0915020F487957795D8 -:105FD0006795B795880F911D9695879597F90895C0 -:105FE0009FEF80EC089500240A94161617061806F1 -:105FF0000906089500240A941216130614060506CD -:106000000895092E0394000C11F4882352F0BB0F5D -:1060100040F4BF2B11F460FF04C06F5F7F4F8F4FC0 -:106020009F4F089557FD9058440F551F59F05F3FFB -:1060300071F04795880F97FB991F61F09F3F79F0AA -:1060400087950895121613061406551FF2CF46952C -:10605000F1DF08C0161617061806991FF1CF8695AE -:106060007105610508940895E894BB276627772792 -:10607000CB0197F908957CDF08F48FEF08950BD0DA -:10608000C0CFB1DF28F0B6DF18F0952309F094CF28 -:10609000A7CF1124EACFC6DFA0F3959FD1F3950FC8 -:1060A00050E0551F629FF001729FBB27F00DB11D9C -:1060B000639FAA27F00DB11DAA1F649F6627B00D2C -:1060C000A11D661F829F2227B00DA11D621F739F15 -:1060D000B00DA11D621F839FA00D611D221F749F23 -:1060E0003327A00D611D231F849F600D211D822F6A -:1060F000762F6A2F11249F5750408AF0E1F08823B1 -:106100004AF0EE0FFF1FBB1F661F771F881F9150BD -:106110005040A9F79E3F510570F04ECFA6CF5F3F8C -:10612000ECF3983EDCF3869577956795B795F795F0 -:10613000E7959F5FC1F7FE2B880F911D9695879578 -:1061400097F90895FA01EE0FFF1F309621053105EA -:1061500099F16115710561F48038BFE39B0749F13E -:1061600068949038810561F08038BFEF9B0741F05B -:10617000992342F5FF3FE1053105210511F1E8942E -:106180000894E795D901AA2329F4AB2FBE2FF85F15 -:10619000D0F310C0FF5F70F4A695E0F7F73950F028 -:1061A00019F0FF3A38F49F779F930CD00F9007FCBB -:1061B000905808953EF014CF60E070E080E89FE3CF -:1061C00008954FE79F775F934F933F932F939ED010 -:1061D0002F913F914F915F9152DF05C019F40EF05E -:1061E000EBCE42CFFDCE26DFC8F39638C0F707F8D6 -:1061F0000F92E8942BE33AEA48EB5FE74EDF0F9209 -:106200000F920F924DB75EB70F92C0D0E6E2F1E069 -:1062100016D04F915F91EF91FF91E595EE1FFF1F13 -:1062200049F0FE57E0684427EE0F441FFA95E1F766 -:106230004195550B32D00F9007FE26C00895DF938D -:10624000CF931F930F93FF92EF92DF927B018C010C -:10625000689405C0DA2EEF011EDFFE01E894A591D7 -:106260002591359145915591AEF3EF0106DDFE0183 -:106270009701A801DA9479F7DF90EF90FF900F91E2 -:106280001F91CF91DF9108959B01AC0160E070E018 -:1062900080E89FE349CD90CE95CECCDEE8F39923FC -:1062A000D9F3940F511DBBF39150504094F059F025 -:1062B000882332F0660F771F881F91505040C1F736 -:1062C0009E3F510544F7880F911D9695879597F944 -:1062D00008955F3FACF0983E9CF0BB27869577957C -:1062E0006795B79508F4B1609395C1F7BB0F58F760 -:1062F00011F460FFE8CF6F5F7F4F8F4F9F4FE3CF69 -:10630000B4CE0EF05FCE6CCE689456CE93DEC8F35A -:106310009923D1F3C6F3DF93CF931F930F93FF928B -:10632000C92FDD2788232AF02197660F771F881F42 -:10633000DAF720E030E040E85FEB9FE3883920F0B7 -:10634000803E30F021968F7787DCEEE4F1E003C0E9 -:1063500083DCEBE7F1E073DF8B01BE01EC01FB2E88 -:106360006F5771097595771F880B990B78DD28E1B8 -:1063700032E741E35FE38FDEAF2D9801AE01FF907E -:106380000F911F91CF91DF9178DC3BCEFA01DC01B8 -:10639000AA0FBB1F9B01AC01BF5728F4222733274C -:1063A000442750781FC0B75188F4AB2F002446957E -:1063B00037952795011CA395D2F3002069F0220F91 -:1063C000331F441FB395DAF30DD045CC613071050E -:1063D000A0E88A07B94630F49B01AC01662777270D -:1063E00088279078309621F020833183428353832D -:1063F0000895AA1BBB1B51E107C0AA1FBB1FA6170C -:10640000B70710F0A61BB70B881F991F5A95A9F75D -:1064100080959095BC01CD01089597FB072E16F449 -:10642000009407D077FD09D00E94F93107FC05D010 -:106430003EF4909581959F4F0895709561957F4F9B -:106440000895EE0FFF1F0590F491E02D0994F9993E -:10645000FECF92BD81BDF89A992780B50895A8E135 -:10646000B0E042E050E00C944F32262FF999FECF75 -:1064700092BD81BDF89A019700B4021639F01FBA97 -:1064800020BD0FB6F894FA9AF99A0FBE08950196B6 -:10649000272F0E9436320C943532DC01CB01FC01EF -:1064A000F999FECF06C0F2BDE1BDF89A319600B46D -:0E64B0000D9241505040B8F70895F894FFCF78 -:1064BE000AA7CF44000000410000DC440000004168 -:1064CE00000000000000804000005C4500004041DC -:1064DE00000000000000804052D0244500004041E2 -:1064EE000AA7CF44000000410000DC440000004138 -:1064FE00000000000000804052D0244500004041C2 -:10650E00000000000000804000005C45000040419B -:10651E000AA7CF44000000410000DC440000004107 -:10652E00000000000000804052D024450000404191 -:10653E0000000000000080400AA74F4500004041C7 -:10654E000AA7CF44000000410000DC4400000041D7 -:10655E00000000000000804052D0244500000041A1 -:10656E0000000000000080405CFF38450000004144 -:10657E00000000000000804052D024450000004181 -:10658E000AA7CF44000000410000DC440000004197 -:10659E00000000000000804052D0244500008041E1 -:1065AE0053D024450000404160970A450000004149 -:1065BE0054D0A444000000410000DC44000000411F -:1065CE0060970A450000A041640007000CFF000020 -:1065DE00003F6485151316F015BC15881501011FB3 -:1065EE00042808140A321E0002040507090B0C0EBB -:1065FE001011131517181A1C1D1F212324262829C4 -:10660E002B2D2F3032343537393B6966207965733F -:10661E000A097065616E7574206275747465720A0C -:10662E00656C73650A097269636520736E61636BCD -:10663E0073001F0F03764F5F6F7F496943790959C6 -:10664E0053633149803F5D8B803FF8BF803FCAE185 -:10665E00803F73ED803FCAE1803FF8BF803F5D8B86 -:10666E00803F3149803F0000803FF16D7F3F75EAEA -:10667E007E3F4C827E3F833F7E3F84287E3F833F1A -:10668E007E3F4C827E3F75EA7E3FF16D7F3F00007C -:10669E00803F3F4D3639DF0A920A5C0A230AB6095B -:1066AE00CF09E809010A01020304050607080900DB -:00000001FF diff --git a/keyboard/planck/keymaps/gabriel/compiled.hex b/keyboard/planck/keymaps/gabriel/compiled.hex deleted file mode 100644 index 93d8502845..0000000000 --- a/keyboard/planck/keymaps/gabriel/compiled.hex +++ /dev/null @@ -1,1450 +0,0 @@ -:100000000C9491020C94D5020C94D5020C94D50258 -:100010000C94D5020C94D5020C94D5020C94D50204 -:100020000C94D5020C94D5020C9482140C945415A3 -:100030000C94B6220C94D5020C94D5020C94D502E3 -:100040000C94D5020C9437030C94D5020C94D50271 -:100050000C94D5020C941E230C94D5020C94D5025A -:100060000C94D5020C94D5020C94D5020C94D502B4 -:100070000C94D5020C94D5020C94D5020C94D502A4 -:100080000C94F70A0C94D5020C94D5020C94D5026A -:100090000C94D5020C94D5020C94D5020C94D50284 -:1000A0000C94D5020C94D5020C94D502C115E3151D -:1000B000D116E315D11628164B16D116A016B31675 -:1000C0009D199D19CC19CC190B1A2B1A811B811B58 -:1000D000361A811BE61AE61A4D1B561B811B7B1B29 -:1000E000F31AF31AF31AF31AF31AF31AF31AF31AA8 -:1000F000F31AF31AF31AF31AF31AF31AF31AF31A98 -:10010000031B111B181B1F1B291B07634236B79BC0 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C00002010000000000000000000029001400EF -:1001D0001A000800150017001C0018000C0012007F -:1001E00013002A002B0004001600070009000A0073 -:1001F0000B000D000E000F0033003400E1001D0065 -:100200001B00060019000500110010003600370021 -:10021000380028000352E000E200E30001522C0005 -:100220002C0002525000510052004F0035021E02B5 -:100230001F0220022102220223022402250226029A -:1002400027022A0001003A003B003C003D003E002E -:100250003F002D022E002F0230023100010040002D -:10026000410042004300440045000100010001003C -:100270000100010001000100010001000100010076 -:1002800001000100010001000100010035001E0015 -:100290001F0020002100220023002400250026004A -:1002A00027002A0001003A003B003C003D003E00D0 -:1002B0003F002D002E022F003000310201004000CF -:1002C00041004200430044004500010001000100DC -:1002D0000100010001000100010001000100010016 -:1002E0000100010001000100010001000100010006 -:1002F00001000100010001000100010001000100F6 -:1003000001004C000100010001000100010001009A -:1003100001000100010001000100010001000100D5 -:1003200001000100010001000100010001000100C5 -:1003300001000100010001000100010001000100B5 -:10034000010001004A004E004B004D0028035400FC -:1003500068006500200050006C0061006E006300C2 -:100360006B0020004B006500790062006F006100A7 -:100370007200640000002C034F00720074006800DB -:100380006F006C0069006E00650061007200200063 -:100390004B006500790062006F006100720064002C -:1003A000730000000403090409026D00040100A0A9 -:1003B000FA090400000103010100092111010001F3 -:1003C000223F000705810308000A09040100010318 -:1003D000010200092111010001224D0007058203DD -:1003E00008000A09040200010300000009211101AC -:1003F00000012236000705830308000A09040300F0 -:100400000103000000092111010001223900070544 -:1004100084031000011201100100000008EDFE60CD -:100420006001000102000105010906A1010507198B -:10043000E029E715002501950875018102050819D5 -:100440000129059505750191029501750391010535 -:10045000071900297715002501957875018102C0DB -:1004600005010980A101850216010026B7001A01C5 -:10047000002AB700751095018100C0050C0901A183 -:10048000018503160100269C021A01002A9C0275B0 -:100490001095018100C005010902A1010901A10017 -:1004A0000509190129051500250195057501810228 -:1004B0009501750381010501093009311581257FF9 -:1004C00095027508810609381581257F9501750803 -:1004D0008106050C0A38021581257F950175088172 -:1004E00006C0C005010906A101050719E029E715A5 -:1004F00000250195087501810295017508810105A6 -:100500000819012905950575019102950175039159 -:10051000010507190029FF150025FF9506750881BB -:1005200000C011241FBECFEFDAE0DEBFCDBF04B69E -:1005300003FE24C080911E0390911F03A09120030D -:10054000B09121038730904BA740B04BB9F4109283 -:100550001E0310921F03109220031092210314BE59 -:1005600084B7877F84BF88E10FB6F89480936000DA -:10057000109260000FBEE0E0F8E3099511E0A0E002 -:10058000B1E0E6ECF9E502C005900D92A03CB107A0 -:10059000D9F713E0A0ECB1E001C01D92AE31B10774 -:1005A000E1F70E94C8110C94E12C0C94000008950E -:1005B000089581E0089508950C94D8020C94D9020E -:1005C0000C94DB020E94AB2823E030E0281B3109A9 -:1005D000220F2093C4010895282F2F988091800026 -:1005E000211108C0877F8093800010928D001092A7 -:1005F0008C001BC0886080938000233019F48FEF3B -:100600009FEF0FC083E090E0821B9109880F991F34 -:100610002FEF3FEFA90102C0569547958A95E2F763 -:10062000CA0190938D0080938C000C94E2020E948A -:10063000E20284E08093C3011092C0010895279ADA -:100640002F988FEF9FEF90938700809386008AE02A -:100650008093800089E1809381000E9414280C948B -:1006600017030E941F036E9A769A0C94D7021F926A -:100670000F920FB60F9211242F933F938F939F9356 -:10068000EF93FF93E091C101F091C201CF01019678 -:100690009093C2018093C1010090C30102C0F695FE -:1006A000E7950A94E2F7EF738091C001823019F464 -:1006B000E03251F404C0813039F4EF3329F48091F1 -:1006C0006F008D7F80936F00F0E0E457FE4FE49160 -:1006D00021E031E0E29FC001E39F900D11240090E2 -:1006E000C40102C0969587950A94E2F790938D0015 -:1006F00080938C00FF91EF919F918F913F912F916B -:100700000F900FBE0F901F90189561110DC0FC0146 -:100710008281882331F085EE0E9441180E946B2867 -:1007200003C085EE0E94091980E090E0089581E001 -:1007300008950C94970308950C9431038091150249 -:10074000882309F448C08091D1019091D20100978B -:1007500079F40E94E8229093D2018093D101809194 -:10076000D30190E0009771F48091D40190E00AC029 -:100770000E94F422209100013091010128173907CD -:1007800040F329C00197880F991F880F991FFC011A -:10079000EB52FE4F60817181828193810E945D0ADC -:1007A000E091D30184E0E89FF0011124EB52FE4F69 -:1007B00060817181828193814FE050E00E94150E2B -:1007C0008091D30190E001966091D40170E00E9485 -:1007D000912C8093D3010C94DC02109217020C949C -:1007E0002A0A0895089581E0809317020C94F20379 -:1007F000089508958F929F92AF92BF92EF92FF92C9 -:100800000F931F93CF93DF93CDB7DEB7A3970FB6A8 -:10081000F894DEBF0FBECDBF7C01FC0100811181C9 -:10082000C8010E94E520B8010E94FC058C01B701B7 -:100830000E949903882309F4CCC10032F0E51F0718 -:1008400041F4F7018281882309F458C00E94790E8F -:10085000C0C10132F0E51F0741F4F701828188230E -:1008600009F44CC00E94820EB4C10232F0E51F07A9 -:1008700051F4F7018281882309F440C00E94750E6B -:100880008111F0CFE3CF0332F0E51F0739F4F70110 -:100890008281882399F10E94F3039BC10432F0E521 -:1008A0001F0739F4F7018281882341F10E94ED038B -:1008B00090C10532F0E51F0749F4F70182818823D2 -:1008C000E9F0809117028111F1CFE5CF0632F0E512 -:1008D0001F0739F4F7018281882381F00E94890E75 -:1008E0000AC00732F0E51F0749F4F7018281882327 -:1008F00029F00E94940E0E94F9036BC180911702A7 -:10090000811105C0F70182818111CFC018C1003E5D -:10091000110579F4F7018281882309F44DC00E9402 -:100920002A0A81E080931602109215021092D401D7 -:1009300050C1023E110559F4F70182818823E1F18B -:100940000E942A0A109216021092150242C1033E1A -:10095000110591F4F7018281882371F10E942A0A1E -:100960001092160281E0809315021092D30110922A -:10097000D2011092D1012DC10235110559F4F701B0 -:100980008281882309F425C18091000190910101A1 -:100990000A970DC00135110579F4F701828188238A -:1009A00009F417C180910001909101010A9690937A -:1009B0000101809300010DC14091040183E2EFE148 -:1009C000F1E0DE01119601900D928A95E1F7F701B1 -:1009D000808121E030E02C0F3D1F280F311DC9011F -:1009E0002091020130910301FC01E20FF31F6081AD -:1009F000772767FD7095640F711D882777FD8095B7 -:100A0000982F0E94B32920E030E040E451E40E9496 -:100A100018294B015C01F701218184E090E0821BE1 -:100A20009109BC01882777FD8095982F0E94B329F2 -:100A30009B01AC01C501B4010E94B0289B01AC012F -:100A400060E070E080E090E40E94262B20E030E03F -:100A50004CED50E40E94C32A4B015C01F7018281F6 -:100A60008823D1F04FE050E0C501B4010E94150E7B -:100A7000809116028823A1F08091D40124E0829F06 -:100A8000F0011124EB52FE4F80829182A282B38248 -:100A90008F5F8093D40104C0C501B4010E945D0A38 -:100AA0000F3F110508F02ECF94C08091D001811125 -:100AB0001FC0043130E5130709F051C00E949B03A9 -:100AC00081E08093D0010E94E8229093CF0180932F -:100AD000CE011092C7011092C9011092C801109264 -:100AE000CB011092CA011092CD011092CC0171C0BD -:100AF0008091CE019091CF010E94F422883C910513 -:100B000070F48091C701E82FF0E0EE0FFF1FE8536B -:100B1000FE4F118300838F5F8093C7015AC0043852 -:100B200080E5180721F00538104501F13AC0F701BA -:100B30008281882341F01092C50182E01EC00438F2 -:100B400030E5130759F58091C501811106C086E291 -:100B50000E94411886E20E94091982E01CC00438F4 -:100B6000F0E51F0741F305381045D9F4F7018281FC -:100B7000882331F01092C60180E20E94581929C0E2 -:100B80008091C601811106C087E20E94411887E268 -:100B90000E94091980E20E945F191BC005381045A8 -:100BA00029F381E08093C5018093C601C701A39614 -:100BB0000FB6F894DEBF0FBECDBFDF91CF911F916E -:100BC0000F91FF90EF90BF90AF909F908F900C94FB -:100BD000DE0280E0A3960FB6F894DEBF0FBECDBF55 -:100BE000DF91CF911F910F91FF90EF90BF90AF9049 -:100BF0009F908F90089508959CE0799FF0011124B3 -:100C000090E3899FE00DF11D1124E60FF11DEE0F19 -:100C1000FF1FE453FE4F859194910895880F991F0B -:100C2000FC01E45BFF4F859194910895880F991F13 -:100C3000FC01E453FE4F8591949108950F931F9307 -:100C4000CF93DF93EC01811521E39207A0F5C11545 -:100C500080E3D80708F0D7C0C83ED105D8F4C03E1D -:100C6000D10508F007C2C83AD10578F4C53AD105D4 -:100C700008F06AC0C130D10509F463C008F4F7C1B7 -:100C8000C430D10508F0F6C1F2C1CB3BD10508F460 -:100C900066C0EDC1C11590E2D90708F0AFC0C1151B -:100CA00021E0D20708F0E6C1C03FD10508F4DFC15A -:100CB0008E0110651FC2C03880E5D80700F5C03727 -:100CC00090E5D90708F0A3C0C11520E5D20709F4C3 -:100CD000ACC050F4CE01905480319F4008F0C7C1A1 -:100CE000DF708E01106A06C2C13080E5D80709F4B2 -:100CF000AEC0C43190E5D90708F4AFC0B8C1C3385D -:100D000020E5D20709F48EC050F4C13890E5D90728 -:100D100009F482C008F083C000E011EDEBC1C031DE -:100D200081E5D80708F4A3C1C11597E5D90708F4F0 -:100D300036C1CE0190578115904108F098C1DF70FF -:100D400093C101E010E0D6C1C53AD10509F494C1C0 -:100D5000C63AD10509F093C102E810E4CBC1C83A04 -:100D6000D10509F48FC1C93AD10509F48EC1CA3A37 -:100D7000D10509F48DC1CB3AD10509F48CC1CC3A27 -:100D8000D10509F48BC1CD3AD10509F48AC1C03B24 -:100D9000D10509F489C1CE3AD10509F488C1CF3A09 -:100DA000D10509F487C1C13BD10509F486C1C23B15 -:100DB000D10509F485C1C33BD10509F484C1C43B05 -:100DC000D10509F483C1C53BD10509F482C1C63BF5 -:100DD000D10509F481C1C73BD10509F480C1C83BE5 -:100DE000D10509F47FC1C93BD10509F47EC1CA3BD5 -:100DF000D10509F47DC100E014E47CC1CE019F70EF -:100E00000E94160678C1DD278E01106C73C1CF7069 -:100E1000DD278E01146D6EC100E010ED6BC100E0A6 -:100E200012ED68C100E013ED65C10E94EC1B0E9449 -:100E30002A0A0E94F1038FEF94E32CE08150904046 -:100E40002040E1F700C000000E94432353C180917D -:100E5000F20281608093F2024DC10E94A4238111AD -:100E600002C00E9480230E94B72390E090931D034C -:100E700080931C03C23080E5D80721F480911C03C5 -:100E8000816086C0C43090E5D90721F480911C03AD -:100E900082607EC0C63020E5D20721F480911C0319 -:100EA000846076C0C83080E5D80719F480911C03AF -:100EB00027C0CA3090E5D90721F480911C038061D6 -:100EC00067C0CC3020E5D20721F480911C038062FA -:100ED0005FC0CE3080E5D80721F480911C03806488 -:100EE00057C0C03190E5D90721F480911C03806878 -:100EF0004FC0C23120E5D20729F480911C038460E1 -:100F0000886046C0C33080E5D80721F480911C0377 -:100F10008E7F3EC0C53090E5D90721F480911C0337 -:100F20008D7F36C0C73020E5D20721F480911C03A5 -:100F30008B7F2EC0C93080E5D80719F480911C033F -:100F400026C0CB3090E5D90721F480911C038F7E19 -:100F50001FC0CD3020E5D20721F480911C038F7D86 -:100F600017C0CF3080E5D80721F480911C038F7B18 -:100F70000FC0C13190E5D90721F480911C038F7710 -:100F800007C0C331D04531F480911C038B7F877F2C -:100F900080931C0380911C030E94BB23ABC08D2F48 -:100FA00099278F70992781309105D9F49E0123707C -:100FB000332702C0880F991F2A95E2F79C688E019B -:100FC00044E0000F111F4A95E1F700271370802BB2 -:100FD000912B53E0CC0FDD1F5A95E1F7C076DD274A -:100FE0002FC08230910531F4DC2FCC278E01016FA8 -:100FF000106A80C08330910569F4CE01837099270F -:1010000001E010E002C0000F111F8A95E2F7C8014D -:101010009C680FC084309105B9F4CE018370992784 -:1010200001E010E002C0000F111F8A95E2F7C8012D -:101030009A6823E0CC0FDD1F2A95E1F7C07ED770B8 -:101040008C010C2B1D2B56C08530910531F4DC2F03 -:10105000CC278E01046F106A4DC0069709F04AC074 -:10106000CF71DD27DC2FCC278E01106243C000E05A -:1010700010E040C08E013EC001E810E43BC003E830 -:1010800010E438C002EE14E435C009EE14E432C0B6 -:101090000AEE14E42FC005EB14E42CC006EB14E4B4 -:1010A00029C007EB14E426C00CEC14E423C00DECBB -:1010B00014E420C003E815E41DC00AE815E41AC0D2 -:1010C00002E915E417C004E915E414C001E216E4CE -:1010D00011C003E216E40EC004E216E40BC005E200 -:1010E00016E408C006E216E405C007E216E402C0F2 -:1010F0000AE216E4C801DF91CF911F910F91089584 -:101100009CE0799FF001112490E3899FE00DF11D8F -:101110001124E60FF11DEE0FFF1FE453FE4F8591E2 -:101120009491803E9105E0F4803C910558F581331F -:10113000910509F46FC048F48932910509F463C040 -:101140008A32910509F46DC072C089339105E9F0C6 -:1011500082389105D1F08533910509F44DC067C0FF -:10116000833E910581F138F4803E9105B9F0823ECD -:101170009105D9F05CC0863E910561F1873E9105ED -:10118000A1F155C00E940E06089520911C0320FD78 -:1011900002C021FF4CC080EE90E049C080911C034A -:1011A00080FFF9CF89E390E042C080911C0382FF69 -:1011B0000EC080911C0384FF03C080E090E037C024 -:1011C00083EE90E034C080911C0382FFF2CF82EE68 -:1011D00090E02DC080911C0383FF0BC080911C0305 -:1011E00084FDEBCF87EE90E022C080911C0383FF4B -:1011F000F5CF86EE90E01BC080911C0385FF07C0F1 -:1012000089E290E014C080911C0385FFF9CF85E34B -:1012100090E00DC080911C0386FF07C08AE290E039 -:1012200006C080911C0386FFF9CF81E390E00E9405 -:101230001E0608950C94E002E82FF0E0E25BFE4FFA -:101240008081E82FEF70F0E082958F7021E030E030 -:10125000A90102C0440F551F8A95E2F740A30895E3 -:101260000F931F93CF93DF9385B7806885BF85B7B2 -:10127000806885BFC3E0D0E001E010E0FE01E25BE2 -:10128000FE4F8081E82FEF70F0E021A182958F70F2 -:10129000A80102C0440F551F8A95E2F7CA01822BAC -:1012A00081A38C2F0E941C09219740F78BE090E0CE -:1012B00061E070E0FC01EE5BFE4F2081E22FEF70F9 -:1012C000F0E042A122952F70DB0102C0AA0FBB1FE4 -:1012D0002A95E2F79D01242B22A3019758F7DF916D -:1012E000CF911F910F910C949C03EF92FF920F935B -:1012F0001F93CF93DF9300E212E0C3E0EE24E39468 -:10130000F12CD5E08C2F0E941C098BE090E040E08E -:1013100050E0FC01EE5BFE4F6081E62FEF70F0E0E5 -:1013200020A130E062956F7002C0359527956A95CF -:10133000E2F720FD09C09701082E02C0220F331FDB -:101340000A94E2F7422B532B019718F7F801929178 -:1013500082918F018417950721F051834083D093A8 -:1013600005018C2F0E941C09C15060F68091050177 -:1013700087FD2CC08150809305018F3F39F08FE9A4 -:101380009FE00197F1F700C0000020C080911E028D -:1013900090911F02909327028093260280911C0255 -:1013A00090911D02909325028093240280911A024D -:1013B00090911B0290932302809322028091180245 -:1013C0009091190290932102809320020E949E0323 -:1013D00081E0DF91CF911F910F91FF90EF900895E1 -:1013E000E82FF0E0EE0FFF1FE05EFD4F808191815E -:1013F000089508950F931F93CF9308E212E0C0E081 -:10140000F801929182918F010E946022C80FF2E050 -:1014100000321F07A9F78C2FCF911F910F910895CC -:101420000E94A423811102C00E9480230E94C9232C -:10143000809307033E9A809171008D7F80937100A5 -:1014400082E0809390008AE18093910081E0809314 -:101450002A02089580912A02811102C00E94100A76 -:1014600010927A0210927902809171008D7F8093A0 -:101470007100809190008F738093900010923C02D5 -:1014800010923B0210927302109274021092750235 -:10149000109276021092720210927102E1E5F2E06F -:1014A000A1E4B2E011921192119211921D921D923B -:1014B00082E0E137F807B1F70895CF92DF92EF921B -:1014C000FF920F931F93CF93DF9320913B02222330 -:1014D00009F484C06B017C0180912A02811102C051 -:1014E0000E94100A01E712E0C7E0D0E0A7019601D0 -:1014F000F80192918291729162918F010E94142958 -:10150000811131C0FE01EE0FFF1FEE0FFF1FEF5ADA -:10151000FD4F1082118212821382DE01AA0FBB1FBF -:10152000AF5BBD4F11961C921E92C730D105E9F0FA -:1015300021964481558166817781408351836283FE -:101540007383148215821682178212968D919C9154 -:10155000139711969C938E9313961C921E9212973A -:1015600034961296E2CF219708F6809179029091F5 -:101570007A02019797FD05C090937A0280937902D1 -:1015800004C010927A0210927902809179029091AF -:101590007A0220917702309178022817390724F0D7 -:1015A0001092780210927702892BC1F48091710019 -:1015B0008D7F80937100809190008F738093900055 -:1015C00010927302109274021092750210927602B9 -:1015D000109272021092710210923B02DF91CF9131 -:1015E0001F910F91FF90EF90DF90CF9008951F9281 -:1015F0000F920FB60F9211244F925F926F927F92CB -:101600008F929F92AF92BF92CF92DF92EF92FF9212 -:101610002F933F934F935F936F937F938F939F93FA -:10162000AF93BF93CF93DF93EF93FF9380913B02F0 -:10163000882309F49BC1C0917902D0917A021C16CB -:101640001D060CF093C140902B0250902C0260902C -:101650002D0270902E0220E030E0A901C301B201FA -:101660000E94BF2A18160CF065C0C130D10509F4DC -:1016700052C08091770290917802BE010E94912C15 -:101680007C01909378028093770280903D02909045 -:101690003E02A0903F02B090400220E030E040E8DF -:1016A0005FE3C501B4010E94B02860933D027093CE -:1016B0003E0280933F0290934002F701EE0FFF1F1E -:1016C000EE0FFF1FEF5AFD4FA30192016081718160 -:1016D000828193810E94182920E030E040E05EE39F -:1016E0000E94C32A9B01AC01C501B4010E94BF2A1C -:1016F00018168CF4C7010196BE010E94912C90939C -:1017000078028093770210923D0210923E0210926E -:101710003F0210924002E0917702F0917802EE0FC2 -:10172000FF1FEE0FFF1FEF5AFD4F60817181828115 -:101730009381D0C0C0907302D0907402E090750283 -:10174000F090760220E030E0A901C701B6010E94C6 -:1017500014292197882309F4A2C0FE01EE0FFF1F70 -:10176000EE0FFF1FEF5AFD4F80809180A280B38063 -:10177000A5019401C701B6010E94142987FF31C059 -:10178000A501940160E070E08CED93EC0E941829B3 -:1017900020E030E040E451E40E94182920E030E0ED -:1017A00040E05FE30E94C32A9B01AC0160E070E06F -:1017B00080E090E40E94262B9B01AC01C501B4019E -:1017C0000E94C32A9B01AC01C701B6010E941429E3 -:1017D00087FF07C0A701960160E070E08CED93E4FD -:1017E00039C0A5019401C701B6010E94BF2A18168D -:1017F0000CF055C0A501940160E070E08CED93E41D -:101800000E94182920E030E040E451E40E941829A9 -:1018100020E030E040E05FE30E94C32A9B01AC017E -:1018200060E070E080E090E40E94262B9B01AC0118 -:10183000C501B4010E94C32A9B01AC01C701B601D6 -:101840000E94BF2A18165CF5A701960160E070E0BF -:101850008CED93EC0E94182920E030E040E451E444 -:101860000E94182920E030E040E05FE30E94C32A94 -:101870009B01AC0160E070E080E090E40E94262BC8 -:101880009B01AC01C701B6010E94C32A6093730299 -:1018900070937402809375029093760213C0FE01D8 -:1018A000EE0FFF1FEE0FFF1FEF5AFD4F808191815A -:1018B000A281B3818093730290937402A093750206 -:1018C000B0937602609173027091740280917502F8 -:1018D0009091760220912802309129022F3F4FEFFC -:1018E000340731F02F5F3F4F3093290220932802B5 -:1018F0000E949F0E6B017C0120E034E244EF51E432 -:101900000E94142987FF08C086EFC82E88E2D82ECF -:1019100084EFE82E81E4F82E20E030E040E051E44E -:10192000C701B6010E94C32A9B01AC0160E074E2CA -:1019300084E79BE40E9418296B017C010E948529A1 -:1019400070939700609396002091060130910701F3 -:101950004091080150910901C701B6010E94C32AB4 -:101960000E948529709399006093980080913C02B1 -:10197000882309F433C1C0903702D0903802E09038 -:101980003902F0903A0220E030E0A901C701B60127 -:101990000E94BF2A1816D4F580912802909129023E -:1019A0008F3F2FEF920729F00196909329028093A1 -:1019B0002802C701B6010E949F0E20E030E040E0FF -:1019C00051E40E94C32A9B01AC0160E074E284E709 -:1019D0009BE40E9418296B017C010E948529709369 -:1019E0009700609396002091060130910701409185 -:1019F000080150910901C701B6010E94C32A0E9443 -:101A00008529709399006093980008C01092970000 -:101A100010929600109299001092980060913102F5 -:101A2000709132026F5F7F4F709332026093310288 -:101A3000209196003091970080E090E0232BF1F008 -:101A4000C0919600D09197000E94B1296B017C0152 -:101A5000BE0180E090E00E94B1299B01AC01609141 -:101A600033027091340280913502909136020E94C7 -:101A7000182920E03FEF4FE757E410C00E94B1293A -:101A80006B017C0120E030EE4FEF54E460913302B3 -:101A90007091340280913502909136020E94C32ADF -:101AA0009B01AC01C701B6010E94BF2A87FD96C009 -:101AB00080912F028F5F80932F0290E0209103038B -:101AC0003091040382179307A0F080910E038823BE -:101AD00019F010922F020DC0809171008D7F8093BC -:101AE0007100809190008F738093900010923C025F -:101AF0007DC080913002C0912F02811128C0C0901A -:101B00000803D0900903E0900A03F0900B0320E053 -:101B100030E0A901C701B6010E94BF2A1816BCF423 -:101B200081E08093300210923702109238021092B6 -:101B3000390210923A02C0923302D0923402E092FB -:101B40003502F0923602C150C0932F0243C010926A -:101B500030021092290210922802E0910503F091C0 -:101B6000060348E0C49FE00DF11D1124808191819E -:101B7000A281B3818093370290933802A0933902F7 -:101B8000B0933A0220E030E040E85EE36481758182 -:101B9000868197810E94C32A6B017C0180910A0192 -:101BA000682F70E080E090E00E94B12920E030E0F2 -:101BB00048EC52E40E9418299B01AC01C701B60110 -:101BC0000E94C32A609333027093340280933502DB -:101BD00090933602109232021092310280910703E4 -:101BE00080FD04C010923C0210923B02FF91EF91E5 -:101BF000DF91CF91BF91AF919F918F917F916F9125 -:101C00005F914F913F912F91FF90EF90DF90CF9098 -:101C1000BF90AF909F908F907F906F905F904F900C -:101C20000F900FBE0F901F901895CF92DF92EF92FA -:101C3000FF92CF93DF936B017C01EA0180912A022E -:101C4000811102C00E94100A8091070380FF46C0E4 -:101C50008091790290917A0208970CF03FC08091B0 -:101C600071008D7F8093710080913C0281110E94F0 -:101C70002A0A81E080933B021092290210922802E6 -:101C800020E030E0A901C701B6010E94BF2A181662 -:101C9000DCF48091790290917A02FC01EE0FFF1F33 -:101CA000EE0FFF1FEF5AFD4FC082D182E282F38216 -:101CB000FC01EE0FFF1FEF5BFD4FD183C083019648 -:101CC00090937A0280937902809171008260809370 -:101CD000710080919000806880939000DF91CF9197 -:101CE000FF90EF90DF90CF9008958091070381706F -:101CF0000895809107038160809307030E94CD239C -:101D00000C94F803809107038E7F809307030C9453 -:101D1000CD2380917B0290E0019666E070E00E9406 -:101D2000912C80937B02089580917B0290E0019733 -:101D300066E070E00E94912C80937B0208958F9260 -:101D40009F92AF92BF92CF92DF92EF92FF920F934A -:101D50001F93CF93DF936B017C01C0912802D09138 -:101D60002902BE0180E090E00E94B1294B015C0194 -:101D7000A701960160E070E08CE594E40E941829C8 -:101D80009B01AC01C501B4010E94C32A0E948529B0 -:101D900020917B02233009F473C028F4222351F0F0 -:101DA0002130E9F02CC1243009F4A0C0253009F419 -:101DB000E0C025C180E090E0A0E0BFE38093060191 -:101DC00090930701A0930801B093090110922B0290 -:101DD00010922C0210922D0210922E0210C110921D -:101DE0002B0210922C0210922D0210922E026431BE -:101DF000710540F46A30710560F520E030E040E89C -:101E00005EE32BC0693C710508F0AAC080E090E059 -:101E10000E94B12920E030E040EA51E40E94AF285E -:101E200020E030E044E353E40E9418299B01AC0118 -:101E30000E94C32A20E030E040E05EE30E94C32A13 -:101E40009B01AC0160E070E080E09EE30E94AF285F -:101E500044C020E030E040E05FE3C701B6010E94EB -:101E6000C32A6B017C0180E090E0A0E0BEE3809398 -:101E7000060190930701A0930801B0930901BFC028 -:101E800010922B0210922C0210922D0210922E0210 -:101E90004AE0469F9001479F300D1124C90168EB2D -:101EA0007BE00E947D2CBC016C5D754077FF03C018 -:101EB000719561957109882777FD8095982F0E940B -:101EC000B3292EE333EC4EE259E30E94C32A20E00B -:101ED00030E040EC5EE30E94B0286093060170930E -:101EE0000701809308019093090189C010922B0289 -:101EF00010922C0210922D0210922E02CE018370AD -:101F00009927892BE1F0BE016170772780E090E08E -:101F10000E94B12920E030E040E05EE30E94C32A45 -:101F200020E030E040E45FE30E94B02860930601C7 -:101F30007093070180930801909309010CC080E021 -:101F400090E0A0E0BFE38093060190930701A09387 -:101F50000801B0930901C770DD27CD2B09F04FC0F0 -:101F600010920601109207011092080110920901C7 -:101F700046C010922B0210922C0210922D02109249 -:101F80002E0200E010E020E03FE3009306011093F2 -:101F9000070120930801309309016739710578F131 -:101FA00080E090E00E94B12920E030E047E153E476 -:101FB0000E94AF2820E030E04AE754E40E9418294C -:101FC00020E030E048E452E40E94C32A20E030E000 -:101FD00040EA51E40E94F5290E948029660F771F8C -:101FE000660F771FFB01EE5AFE4F2081318142813F -:101FF0005381C701B6010E94C32A6B017C01C7014E -:10200000B601DF91CF911F910F91FF90EF90DF907C -:10201000CF90BF90AF909F908F90089580918C0249 -:102020000895CF93DF9300D01F92CDB7DEB79C0108 -:1020300080911303843019F593E099833B832A83BD -:102040009093E9008FEF9091E800815095FD06C0D4 -:1020500095ED9A95F1F700008111F5CF8091E80098 -:1020600085FF0DC040E050E063E070E0CE010196D6 -:102070000E9472128091E8008E778093E8000F90A2 -:102080000F900F90DF91CF910895CF93DF9300D001 -:102090001F92CDB7DEB720911303243021F522E043 -:1020A00029839B838A8383E08093E9008FEF90915B -:1020B000E800815095FD06C095ED9A95F1F7000076 -:1020C0008111F5CF8091E80085FF0DC040E050E020 -:1020D00063E070E0CE0101960E9472128091E800E8 -:1020E0008E778093E8000F900F900F90DF91CF9143 -:1020F0000895209113032430F1F422E02093E900A5 -:102100002FEF3091E800215035FD06C035ED3A95AE -:10211000F1F700002111F5CF2091E80025FF0BC059 -:1021200040E050E065E070E00E9472128091E800AB -:102130008E778093E8000895CF93DF93EC01909120 -:102140001303943009F046C0809115018823D9F01B -:10215000809116018823B9F09093E9008FEF909158 -:10216000E800815095FD06C095E19A95F1F70000D1 -:102170008111F5CF8091E80085FF2CC040E050E050 -:1021800060E170E017C081E08093E9008FEF9091EB -:10219000E800815095FD06C095ED9A95F1F7000095 -:1021A0008111F5CF8091E80085FF14C040E050E038 -:1021B00068E070E0CE010E9472128091E8008E7794 -:1021C0008093E80080E1FE01ACE7B2E001900D925F -:1021D0008A95E1F7DF91CF910895809112038111E3 -:1021E00009C00E9407140E9464148091E200846078 -:1021F0008093E200089510921203089508950895BF -:102200000C94AB2242E061EC81E00E94811342E039 -:1022100061EC82E00E94811342E061EC83E00E9465 -:10222000811342E161EC84E00C94811380911503E9 -:10223000833009F455C030F4813071F0823009F4F4 -:102240008EC008958A3009F47AC08B3009F460C0DA -:10225000893009F09CC020C080911403813A09F0B4 -:1022600096C08091E800877F8093E80080911803F2 -:1022700090911903892B21F460E18CE792E003C06F -:1022800060E080E090E070E00E94BD128091E80084 -:102290008B778093E800089580911403813209F0D0 -:1022A00076C08091180390911903009719F0039755 -:1022B00009F06DC08091E800877F8093E8008091ED -:1022C000E80082FD05C0809113038111F8CF5FC043 -:1022D0008091F10080938C028091E8008B7753C04D -:1022E00080911403813A09F052C0809118039091B3 -:1022F0001903892B09F04BC08091E800877F8093F8 -:10230000E8008091E80080FFFCCF8091150136C085 -:10231000809114038132D9F58091180390911903AB -:10232000892BA9F58091E800877F8093E8000E94BF -:10233000B61380911603809315010C94EC1B8091C9 -:102340001403813221F58091E800877F8093E800B3 -:102350000E94B6138091170380938D020895809197 -:102360001403813AA1F48091E800877F8093E8000C -:102370008091E80080FFFCCF80918D028093F10076 -:102380008091E8008E778093E8000C94B61308954E -:1023900084B7877F84BF88E10FB6F894809360008C -:1023A000109260000FBE90E080E80FB6F894809322 -:1023B0006100909361000FBE0E9459170E9407149C -:1023C0000E9464148091E20084608093E20078941B -:1023D0000E94EA160E945B178BE091E00E940517AD -:1023E00080911303853069F40E946C22809111035F -:1023F0008823B1F30E949A22882391F30E945C12F1 -:10240000EFCF0E946317ECCF292F332723303105FC -:10241000C9F064F42130310581F02230310509F032 -:1024200043C08DE690E028EA33E042C02132310516 -:10243000F1F02232310541F137C082E190E025E12F -:1024400034E036C099278130910541F08230910502 -:1024500041F0892B49F5E4EAF3E005C0E6E7F3E053 -:1024600002C0ECE4F3E0849190E09F0121C064306D -:10247000D8F4E62FF0E0EE0FFF1FE255FE4F20816B -:10248000318189E090E014C0643070F470E0FB01A9 -:10249000EE0FFF1FEA55FE4F20813181FB01EE5503 -:1024A000FE4F808190E004C080E090E020E030E0CA -:1024B000FA0131832083089580E189BD82E189BDDD -:1024C00009B400FEFDCF8091D8008F7D8093D800A5 -:1024D0008091E00082608093E0008091E00081FDC7 -:1024E000FCCF0895CF92DF92EF92FF920F931F934C -:1024F000CF93DF93EC018B016A010E94D513811108 -:1025000033C0C114D10439F0F60180819181081BD8 -:10251000190BC80FD91FE12CF12C0115110519F168 -:102520008091E80085FD16C08091E8008E77809349 -:10253000E800C114D10449F0F60180819181E80ED0 -:10254000F91EF182E08285E00FC00E94D513882336 -:1025500021F30AC089918093F10001501109FFEF26 -:10256000EF1AFF0ADACF80E0DF91CF911F910F9130 -:10257000FF90EF90DF90CF90089520911A03309153 -:102580001B032617370748F06115710539F42091B0 -:10259000E8002E772093E80001C0B90140E0611502 -:1025A0007105A9F120911303222309F443C02530BA -:1025B00009F442C02091E80023FD40C02091E800CA -:1025C00022FD32C02091E80020FFE9CF4091F300C6 -:1025D0002091F20030E0342BFC01CF016115710530 -:1025E00059F02830310540F481918093F100615019 -:1025F00071092F5F3F4FF1CF41E02830310509F0DD -:1026000040E02091E8002E772093E800C8CF4111E8 -:10261000C9CF0AC080911303882361F0853061F02F -:102620008091E80083FD0AC08091E80082FFF2CF2C -:1026300080E0089582E0089583E0089581E00895A0 -:1026400020911A0330911B032617370748F06115B4 -:10265000710539F42091E8002E772093E80001C03D -:10266000B901FC0120E06115710591F1809113031E -:10267000882309F440C0853009F43FC08091E80008 -:1026800083FD3DC08091E80082FD2FC08091E8006D -:1026900080FFE9CF2091F3008091F20090E0922B2F -:1026A0006115710559F08830910540F4249120930B -:1026B000F1003196615071090196F2CF21E008973F -:1026C00009F020E08091E8008E778093E800CBCF7E -:1026D0002111CCCF0AC080911303882361F085308B -:1026E00061F08091E80083FD0AC08091E80082FFDC -:1026F000F2CF80E0089582E0089583E0089581E0BC -:102700000895982F973058F59093E900981739F06D -:102710007091EC002091ED005091F00003C0242F47 -:10272000762F50E021FF19C03091EB003E7F3093AF -:10273000EB003091ED003D7F3093ED003091EB00E8 -:1027400031603093EB007093EC002093ED005093D8 -:10275000F0002091EE0027FF07C09F5FD3CF8F705E -:102760008093E90081E0089580E00895809114034A -:1027700087FF11C08091E80082FD05C0809113039E -:102780008111F8CF11C08091E8008B770BC0809148 -:102790001303882349F08091E80080FFF8CF8091EF -:1027A000E8008E778093E80008952091E40030914E -:1027B000E50095E64091EC00842F817040FF22C037 -:1027C0008091E80080FD1CC080911303882391F064 -:1027D000853091F08091EB0085FD10C04091E400C0 -:1027E0005091E5004217530729F39A01915011F7D0 -:1027F00084E0089582E0089583E0089581E00895DB -:1028000080E008954091E80042FFDECF08950E94E5 -:1028100075140E947D14E0EEF0E080818160808379 -:10282000E8EDF0E080818F77808319BCA7EDB0E000 -:102830008C918E7F8C9380818F7E80831092120387 -:1028400008950F931F93CF93DF930E9475140E94F6 -:102850007D14C8EDD0E088818F7788838881806877 -:10286000888388818F7D888319BC1092130310920E -:102870000F03109211031092100300EE10E0F80104 -:1028800080818B7F808388818160888342E060E0E3 -:1028900080E00E948113E1EEF0E080818E7F8083F2 -:1028A000E2EEF0E0808181608083808188608083B7 -:1028B000F80180818E7F8083888180618883DF91A9 -:1028C000CF911F910F910895E8EDF0E080818F7E08 -:1028D0008083E7EDF0E080818160808384E082BFC7 -:1028E00081E0809312030C942114E8EDF0E08081E4 -:1028F0008E7F80831092E20008951092DA00109289 -:10290000E10008951F920F920FB60F9211242F939A -:102910003F934F935F936F937F938F939F93AF9367 -:10292000BF93EF93FF938091E10082FF0BC08091F2 -:10293000E20082FF07C08091E1008B7F8093E1007D -:102940000E94E9168091DA0080FF1FC08091D800B4 -:1029500080FF1BC08091DA008E7F8093DA00809127 -:10296000D90080FF0DC080E189BD82E189BD09B435 -:1029700000FEFDCF81E0809313030E94ED1005C09F -:1029800019BC109213030E94FB108091E10080FF9C -:1029900019C08091E20080FF15C08091E2008E7F17 -:1029A0008093E2008091E20080618093E200809158 -:1029B000D80080628093D80019BC85E0809313030F -:1029C0000E94FF108091E10084FF30C08091E200FE -:1029D00084FF2CC080E189BD82E189BD09B400FE7D -:1029E000FDCF8091D8008F7D8093D8008091E10049 -:1029F0008F7E8093E1008091E2008F7E8093E200E1 -:102A00008091E20081608093E20080910F0388232F -:102A100011F084E007C08091E30087FD02C081E0EF -:102A200001C083E0809313030E9400118091E100B4 -:102A300083FF29C08091E20083FF25C08091E100DF -:102A4000877F8093E10082E08093130310920F034D -:102A50008091E1008E7F8093E1008091E2008E7F83 -:102A60008093E2008091E20080618093E20042E086 -:102A700060E080E00E9481138091F0008860809384 -:102A8000F0000E94FE10FF91EF91BF91AF919F91D6 -:102A90008F917F916F915F914F913F912F910F9007 -:102AA0000FBE0F901F9018951F920F920FB60F92A6 -:102AB00011242F933F934F935F936F937F938F9343 -:102AC0009F93AF93BF93CF93DF93EF93FF93C09107 -:102AD000E900CF708091EC00D82FD17080FDD0E854 -:102AE0001092E9008091F000877F8093F000789445 -:102AF0000E9498151092E9008091F0008860809300 -:102B0000F000CD2BCF70C093E900FF91EF91DF91E2 -:102B1000CF91BF91AF919F918F917F916F915F9175 -:102B20004F913F912F910F900FBE0F901F901895CE -:102B30001F93CF93DF93CDB7DEB7AA970FB6F89464 -:102B4000DEBF0FBECDBFE4E1F3E088E08E0F9091D1 -:102B5000F10091938E13FBCF0E9416118091E80033 -:102B600083FF1FC18091140390911503492F50E0FA -:102B70004A30510508F015C1FA01EA5AFF4F0C948A -:102B8000A52C803881F0823809F00BC180911803A0 -:102B90008F708093E9008091EB0085FB882780F996 -:102BA0001092E90006C080911003909111039111D9 -:102BB00082609091E800977F9093E8008093F10005 -:102BC0001092F100C8C0282F2D7F09F0EAC0882399 -:102BD00019F0823061F0E5C080911603813009F070 -:102BE000E0C0933009F080E0809311032BC0809106 -:102BF0001603811127C0809118038F7009F4D1C08A -:102C00008093E9002091EB0020FF1CC0933021F459 -:102C10008091EB00806214C09091EB0090619093E2 -:102C2000EB0021E030E0A90102C0440F551F8A9556 -:102C3000E2F74093EA001092EA008091EB0088608E -:102C40008093EB001092E9008091E800877F86C0B6 -:102C50008111A7C0109116031F778091E30080783F -:102C6000812B8093E3008091E800877F8093E800C8 -:102C70000E94B6138091E80080FFFCCF8091E300B2 -:102C800080688093E300111102C082E001C083E0FC -:102C90008093130386C08058823008F082C08091F0 -:102CA0001603909117038C3D53E0950779F583E067 -:102CB0008A838AE289834FB7F894DE01139620E075 -:102CC0003EE051E2E32FF0E050935700E49120FF03 -:102CD00003C0E295EF703F5FEF708E2F90E0EA3017 -:102CE00010F0C79601C0C0968D939D932F5F24313D -:102CF00049F74FBF8091E800877F8093E8006AE240 -:102D000070E0CE0101960E94BD1214C0AE014F5F6B -:102D10005F4F609118030E940412BC01009709F4F0 -:102D200040C09091E800977F9093E80089819A8154 -:102D30000E9420138091E8008B778093E80031C0D7 -:102D4000803879F58091E800877F8093E800809152 -:102D50000F038093F1008091E8008E778093E80064 -:102D60000E94B6131EC081111CC0909116039230B0 -:102D7000C0F48091E800877F8093E80090930F0370 -:102D80000E94B61380910F03811106C08091E30069 -:102D900087FD02C081E001C084E0809313030E949C -:102DA00002118091E80083FF0AC08091E800877FCC -:102DB0008093E8008091EB0080628093EB00AA96FC -:102DC0000FB6F894DEBF0FBECDBFDF91CF911F913C -:102DD00008950895CF93809113038823A1F0C091A3 -:102DE000E900CF709091EC00892F817090FD80E810 -:102DF000C82B1092E9008091E80083FD0E9498158D -:102E0000CF70C093E900CF9108959093930280937F -:102E100092020895E0919202F0919302309721F08E -:102E20000190F081E02D099480E00895E0919202F4 -:102E3000F0919302309721F00280F381E02D099404 -:102E40000895E0919202F0919302309721F004806E -:102E5000F581E02D0994089520919002309191021E -:102E60008217930771F09093910280939002E09102 -:102E70009202F0919302309721F00680F781E02DC5 -:102E80000994089520918E0230918F028217930742 -:102E900071F090938F0280938E02E0919202F091F4 -:102EA0009302309721F00084F185E02D0994089574 -:102EB00008950C9458170E94DF220E9430090E9446 -:102EC00065230C9414285F926F927F928F929F9249 -:102ED000AF92BF92CF92DF92EF92FF920F931F9328 -:102EE000CF93DF9300D000D01F92CDB7DEB70E9402 -:102EF00075099DE9C92E92E0D92E03E010E0AA24BD -:102F0000A394B12C502E802F0E94F0094C01F601A1 -:102F1000729062906F016826792661147104A1F4A1 -:102F20000150110978F78FEF89838A831B820E94F1 -:102F3000E8228160782F9D838C8349815A816B813F -:102F40008D810E94131838C08091F20281FD0E9489 -:102F5000F9092BE030E07501022E02C0EE0CFF1CD7 -:102F60000A94E2F7C70186219721892B09F1298369 -:102F70005A828E209F2091E0892809F490E09B835B -:102F80000E94E8228160782F9D838C8349815A8139 -:102F90006B818D810E941318000F111FF801EB56F1 -:102FA000FD4F80819181E826F926F182E08204C0FC -:102FB0002150310980F6B4CF0E944C251091940223 -:102FC0000E940A171817D1F00E940A1780939402E2 -:102FD0000F900F900F900F900F90DF91CF911F9156 -:102FE0000F91FF90EF90DF90CF90BF90AF909F90A8 -:102FF0008F907F906F905F900C941A090F900F90B4 -:103000000F900F900F90DF91CF911F910F91FF9034 -:10301000EF90DF90CF90BF90AF909F908F907F9078 -:103020006F905F900895CF93DF93CDB7DEB72B9766 -:103030000FB6F894DEBF0FBECDBF4F8358876987A8 -:103040007A878B87DE01119686E0FD0111928A95C1 -:10305000E9F785E0FE01379601900D928A95E1F738 -:1030600049815A816B817C818D819E810E948A1E5B -:103070002B960FB6F894DEBF0FBECDBFDF91CF9178 -:103080000895CF93882309F4C2C0C82F823859F419 -:103090000E940A1781FDBBC089E30E9464210E943F -:1030A000312289E30CC0833879F40E940A1780FD2D -:1030B000AEC083E50E9464210E94312283E50E9414 -:1030C000A621CF910C943122843859F40E940A171A -:1030D00082FD9DC087E40E9464210E94312287E422 -:1030E000EECF8CEF8C0F813A48F48C2F0E947C2716 -:1030F00081118DC08C2F0E946421E3CF80E28C0F60 -:10310000883048F4C77081E001C0880FCA95EAF79B -:103110000E94EA21D6CF8BE58C0F833078F4C53A34 -:1031200029F0C63A31F083E890E005C081E890E0EC -:1031300002C082E890E0CF910C942C1788E58C0FA8 -:10314000833108F064C0C83A39F1C93A41F1CA3A4A -:1031500049F1CB3A51F1CC3A59F1CD3A61F1C03B4A -:1031600069F1CE3A71F1CF3A79F1C13B81F1C23BBD -:1031700089F1C33B91F1C43B99F1C53BA1F1C63B39 -:10318000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B99 -:10319000C9F180E090E038C082EE90E035C089EE61 -:1031A00090E032C08AEE90E02FC085EB90E02CC01A -:1031B00086EB90E029C087EB90E026C08CEC90E095 -:1031C00023C08DEC90E020C083E891E01DC08AE828 -:1031D00091E01AC082E991E017C084E991E014C03F -:1031E00081E292E011C083E292E00EC084E292E0BC -:1031F0000BC085E292E008C086E292E005C087E25B -:1032000092E002C08AE292E0CF910C944217CF91F3 -:103210000895882309F44BC0823859F40E940A1794 -:1032200081FF45C089E30E9464210E94312289E325 -:103230000CC0833871F40E940A1780FF38C083E500 -:103240000E9464210E94312283E50E94A6210C94F1 -:103250003122843859F40E940A1782FF28C087E47B -:103260000E9464210E94312287E4EFCF9CEF980FE7 -:10327000913A58F390E2980F983050F4877091E0AB -:1032800001C0990F8A95EAF7892F0E94F021DFCFBC -:103290009BE5980F933020F480E090E00C942C177D -:1032A000885A833120F480E090E00C94421708950E -:1032B000882321F00E94EA210C943122089588236A -:1032C00021F00E94F0210C94312208957F928F9278 -:1032D0009F92AF92BF92CF92DF92EF92FF920F93A5 -:1032E0001F93CF93DF931F92CDB7DEB77C01C62E1D -:1032F000772EFC01058102950F70128111110E9439 -:1033000007220E945D21882379F0112369F080E271 -:103310008C0D883048F082E00E9446210E945D2199 -:1033200091E0D82ED92601C0D12CE72DE295EF707F -:10333000F0E0E05AFF4F0C94A52C872D807F072DDD -:103340000F70882311F00295007F112389F000236C -:1033500009F499C180E28C0D883020F4802F0E94FE -:10336000EA2103C0802F0E94FA210E9431228BC1E2 -:103370008C2D0E940919002309F4C3C180E28C0D31 -:10338000883020F4802F0E94F02103C0802F0E94FB -:1033900000220E943122B5C1872D807F972D9F701A -:1033A000803211F4892F03C0892F8295807FCC2031 -:1033B00021F0F1E0CF16A1F01DC0112339F0002358 -:1033C00019F1013009F50E941A229BC1002319F05E -:1033D000013009F496C189830E941D22898110C1A0 -:1033E000112321F0063008F08CC10EC0053008F022 -:1033F00088C106C1112359F0002331F0F7019581EE -:1034000090FF41C19F7095830E9458197AC1002393 -:1034100009F4F6C03EC1872D86958695837090E0AD -:10342000009719F0019761F06CC1112321F08C2DE8 -:10343000972D937002C080E090E00E942C1761C12C -:10344000112321F08C2D972D937002C080E090E025 -:103450000E94421756C18C2D112319F00E9454244A -:1034600002C00E94BC240E9441254BC1872D83705D -:1034700009F052C0111145C18C2D82958695877037 -:10348000880F880F9C2D9F70892E912CA12CB12C18 -:10349000082E04C0880C991CAA1CBB1C0A94D2F7E5 -:1034A000C4FE14C00FE010E020E030E0B901A80134 -:1034B00004C0440F551F661F771F8A95D2F7CB01B2 -:1034C000BA01609570958095909503C060E070E0BA -:1034D000CB01272D26952695237030E0223031052B -:1034E00069F02330310589F0682979298A299B29D7 -:1034F0002130310571F00E94D21F03C1682979295A -:103500008A299B290E94EE1FFCC00E94D21FC50180 -:10351000B4010E94B61FF5C0112319F0872D8170E8 -:1035200001C08695882309F4ECC08C2D8295869580 -:103530008770880F880F9C2D9F70892E912CA12C4D -:10354000B12C082E04C0880C991CAA1CBB1C0A9420 -:10355000D2F7C4FE14C00FE010E020E030E0B90163 -:10356000A80104C0440F551F661F771F8A95D2F724 -:10357000CB01BA01609570958095909503C060E08D -:1035800070E0CB01272D269526952370422F50E021 -:103590004230510569F04330510589F06829792995 -:1035A0008A299B294130510571F00E94AC20A9C0A5 -:1035B000682979298A299B290E94C820A2C00E94D3 -:1035C000AC20C501B4010E9490209BC08C2D90E0DE -:1035D000FC01E05EF109E531F10508F050C0E05969 -:1035E000FF4F0C94A52C0C2D0F70872D8F7111237C -:1035F00021F00E942920802F07CF0E944A20802F8F -:103600000E945F197EC0112341F0053008F079C097 -:10361000872D8F710E946F2074C0063008F071C032 -:10362000F7CF112339F0872D8F710E94292069C0AF -:103630001123C9F3872D8F710E944A2062C0112384 -:1036400029F0872D8F710E9414205BC00E940A20F0 -:1036500058C0112351F0172D1F71812F0E9429206E -:1036600063E0812F0E943D214CC081E00E944621F1 -:10367000023008F446C082E00E94462142C0112375 -:1036800031F0002381F28C2D0E9441183AC00023B2 -:1036900089F28C2D0E94091934C0472D4F706C2D72 -:1036A000C7010E9485030E942E1F2BC0111129C043 -:1036B000472D4F7050E042305105B9F04CF44115A0 -:1036C000510581F041305105E1F40E943C2819C0B8 -:1036D0004330510569F04430510599F48C2D0E9416 -:1036E0008E280FC00E9425280CC00E94582809C0AF -:1036F0000E946B2806C0472D4F706C2DC7010E9499 -:10370000FB05DD20F9F00E94392180FD1BC0F70187 -:1037100012820E9433210E942920C7010E94B11BFE -:103720000E9433210F90DF91CF911F910F91FF9055 -:10373000EF90DF90CF90BF90AF909F908F907F9051 -:103740000C944A200F90DF91CF911F910F91FF9021 -:10375000EF90DF90CF90BF90AF909F908F907F9031 -:1037600008950F931F93CF93DF93EC018881998184 -:103770002B813C81232BB9F09F3F11F48F3F99F0AF -:10378000CE010E94FA03882371F0688179818A81D1 -:103790000E942F218C010E94E4200E94AB1FB801DF -:1037A000CE010E946619DF91CF911F910F9108956C -:1037B0000E9407220E9417220E94DC210E943122CF -:1037C0000E94F2250E94412580E090E00E942C1783 -:1037D00080E090E00C9442170E94F7210C94D81BD3 -:1037E0000E942421292F22952F7030E02C303105A2 -:1037F0004CF42A3031056CF4225031092230310565 -:10380000A8F407C02C30310569F02F30310551F094 -:103810000DC0803F69F018F4803E40F409C0843F39 -:1038200029F406C093FB882780F9089580E0089565 -:1038300081E00895CF93DF9300D000D01F92CDB7E1 -:10384000DEB70F900F900F900F900F90DF91CF91F8 -:103850000895CF93DF9300D000D000D0CDB7DEB76E -:1038600026960FB6F894DEBF0FBECDBFDF91CF9185 -:1038700008951F93CF93DF93C0919D0216E080912E -:103880009E02C81799F0D0E01C9FF0011D9FF00D1B -:103890001124E156FD4F4081518162817381848101 -:1038A00095810E94291C2196C770E9CFDF91CF91A5 -:1038B0001F9108954091CF025091D0026091D102A2 -:1038C0007091D2028091D3029091D4020C94291C61 -:1038D0008091D40282958F7009F054C08091D102FA -:1038E000882309F44FC080919D02A0919E026091AF -:1038F000CF027091D0024091D2025091D302B6E033 -:103900008A1709F43FC090E041155105C1F17F3F8E -:1039100011F46F3FA1F1B89FF001B99FF00D112490 -:10392000E156FD4F218172132AC02081621327C006 -:103930002281211124C0238134812417350710F4FA -:1039400021503109241B350B283C3105C0F420914E -:10395000D4022F7020612093D40226E0289FF0012A -:10396000299FF00D1124EC55FD4F80818F708061EF -:1039700080838FEC92E00E94B11B0C94391C01965D -:103980008770BECF0895CF92DF92EF92FF920F9390 -:103990001F93CF93DF93CDB7DEB762970FB6F8943E -:1039A000DEBF0FBECDBF8C0185E0F801DE011D96A4 -:1039B00001900D928A95E1F7D8014C9111965C9196 -:1039C000119712966C9112971396CD90DC901497E4 -:1039D0003091CF027091D0028091D2029091D302A7 -:1039E000009709F46BC17F3F19F43F3F09F466C1AA -:1039F000E090D102EE2009F4C0C02091D402C81694 -:103A0000D90628F0F601E81BF90BCF0104C0809518 -:103A100090958C0D9D1DFF24F394883C910578F0C2 -:103A2000F12C207F09F0C6C07C2DD98AC88A8989EB -:103A30000E941A1C8FEC92E00E94B11BB1C0822F31 -:103A4000807F09F046C0751314C0341312C0611191 -:103A500010C02F7020612093D4020E945A1C8FEC5A -:103A600092E00E94B11B8091D402D80115968C93EC -:103A70002EC0CD2819F15F3F11F44F3FF9F0F62E1B -:103A800061111CC080919D0220919E0236E0821738 -:103A900009F45AC090E0389FF001399FF00D1124CD -:103AA000E156FD4F7181571306C07081471303C063 -:103AB0007281711103C001968770E9CFF62E6623DB -:103AC00009F418C18091D40281608093D402F12C52 -:103AD00011C1751308C0341306C0611104C0809170 -:103AE000D402D801C3C04D875E878D859E856A8BC1 -:103AF0000E94F01B6A898823E1F16623D1F12091AD -:103B0000D402822F82958F7090E0029774F080919A -:103B1000CF029091D00298878F831986DB86CA8660 -:103B20002C87CE0107960E94B11B86E0F801AFEC0E -:103B3000B2E001900D928A95E1F70E94681C0E9404 -:103B40005A1CFF24F394D6C04D875E878D859E85D1 -:103B50000E942421292F22952F7030E02230310538 -:103B60000CF0BCC09F7009F0B6C0805E883008F4CD -:103B7000C1C0C8010E94B11BE4CFC816D90608F421 -:103B800053C0F601E81BF90BCF01883C910508F4FE -:103B900050C0F12C7C2DD98AC88A89890E941A1CB0 -:103BA000EFECF2E086E0DF011D928A95E9F70E94D2 -:103BB0005A1CA0C0751314C0341312C0611110C078 -:103BC0008091D402F8018583C8010E94B11B86E070 -:103BD000EFECF2E0DF011D928A95E9F7FE2C8AC036 -:103BE0004D875E878D859E856A8B0E94F01B6A8952 -:103BF000882309F4BECF662309F4BBCF2091D402F9 -:103C0000822F82958F7090E002970CF48ECF809176 -:103C1000CF029091D0029A8389831B82DD82CC826D -:103C20002E83CE0101967FCF809590958C0D9D1DA2 -:103C3000ACCFF62E662309F49CCF75132EC0341337 -:103C40002CC02091D40220FD1FC0822F82958F703E -:103C5000D9F0D80115962C9315978F3049F08F5FC6 -:103C6000982F9295907F822F8F70892B15968C9329 -:103C7000C8010E94B11B86E0F801AFECB2E00190F0 -:103C80000D928A95E1F793CF86E0F801AFECB2E0B0 -:103C900001900D928A95E1F72DC04D875E878D8545 -:103CA0009E850E94F01B811140CF8091D4028160DB -:103CB0008093D402C8010E94B11B1CC0662309F482 -:103CC00058CF4D875E878D859E850E94F01B882387 -:103CD00009F44FCF2ACF811148CF0CC024303105D1 -:103CE0000CF047CF9F7009F440CFF8019581907F89 -:103CF00009F03BCF8F2D62960FB6F894DEBF0FBE52 -:103D0000CDBFDF91CF911F910F91FF90EF90DF908A -:103D1000CF9008951F93CF93DF93CDB7DEB72C9745 -:103D20000FB6F894DEBF0FBECDBF4F8358876987AB -:103D30007A878B879C87CE0107960E94C31C8823B5 -:103D400069F08F8198852A853B85232BF1F19F3F70 -:103D500009F063C08F3F09F060C037C086E0FE0104 -:103D60003796DE01119601900D928A95E1F76F81E9 -:103D70007885EA85FB85309741F17F3F11F46F3FED -:103D800021F120919E0230E0C901019687709927A8 -:103D900040919D0250E08417950709F447C069835C -:103DA0007A83FD83EC8396E0929FD001939FB00DC0 -:103DB0001124A156BD4FFE01319601900D929A95A6 -:103DC000E1F780939E020E94391C16E080919D02CB -:103DD00090919E028917C1F1189FC001112481564C -:103DE0009D4F0E94C31C882379F1E0919D021E9F84 -:103DF000F0011124E156FD4F4081518162817381B0 -:103E0000848195810E94291C80919D0290E00196F9 -:103E10008770992780939D02D9CF4F8158856985F6 -:103E20007A858B859C850E94291CCFCF0E94EC1B34 -:103E300010929E0210929D02EFECF2E086E0DF010C -:103E40001D928A95E9F7C1CF2C960FB6F894DEBF84 -:103E50000FBECDBFDF91CF911F910895EF92FF92DA -:103E60000F931F93CF93DF938C01009709F46CC0DD -:103E7000F12CEE24E394E8012196F8018491843733 -:103E800040F4843008F051C0813081F0823019F163 -:103E90005BC0853709F444C0A8F19CE7980F9037C0 -:103EA00008F052C08F770E94091941C00E5F1F4F62 -:103EB000FE01C49180E28C0F883048F4C7708E2DCB -:103EC00001C0880FCA95EAF70E940A2214C08C2FFD -:103ED0000E9441182DC00E5F1F4FFE01C49180E269 -:103EE0008C0F883058F4C7708E2D01C0880FCA958A -:103EF000EAF70E9410220E9431221AC08C2F0E94E1 -:103F0000091916C00E5F1F4FFE01C491CC2381F02A -:103F10008FE99FE00197F1F700C00000C150F6CF94 -:103F20000E5F1F4FFE01F49003C00E9441188E01E6 -:103F30008F2D882309F49FCFEFE9FFE03197F1F748 -:103F400000C000008150F5CFDF91CF911F910F91FC -:103F5000FF90EF90089508956093D9027093DA026C -:103F60008093DB029093DC020C94D81B0F931F9379 -:103F70000091D9021091DA022091DB023091DC022B -:103F8000DC01CB01802B912BA22BB32B8093D90288 -:103F90009093DA02A093DB02B093DC021F910F91A1 -:103FA0000C94D81B0F931F930091D9021091DA0241 -:103FB0002091DB023091DC02DC01CB0180239123D4 -:103FC000A223B3238093D9029093DA02A093DB0259 -:103FD000B093DC021F910F910C94D81B0F931F9389 -:103FE0000091D9021091DA022091DB023091DC02BB -:103FF000DC01CB0180279127A227B3278093D90228 -:104000009093DA02A093DB02B093DC021F910F9130 -:104010000C94D81B1092D5021092D6021092D7029F -:104020001092D8020C94D81B41E050E060E070E0A0 -:1040300004C0440F551F661F771F8A95D2F740931F -:10404000D5025093D6026093D7027093D8020C9495 -:10405000D81B41E050E060E070E004C0440F551F01 -:10406000661F771F8A95D2F78091D5029091D6026C -:10407000A091D702B091D802482B592B6A2B7B2BE9 -:104080004093D5025093D6026093D7027093D80222 -:104090000C94D81B41E050E060E070E004C0440F95 -:1040A000551F661F771F8A95D2F7409550956095EA -:1040B00070958091D5029091D602A091D702B091CF -:1040C000D802482359236A237B234093D502509377 -:1040D000D6026093D7027093D8020C94D81B41E0AB -:1040E00050E060E070E004C0440F551F661F771F6A -:1040F0008A95D2F78091D5029091D602A091D702ED -:10410000B091D802482759276A277B274093D502C8 -:104110005093D6026093D7027093D8020C94D81BA8 -:104120000F931F930091D5021091D6022091D702D0 -:104130003091D802DC01CB01802B912BA22BB32B29 -:104140008093D5029093D602A093D702B093D80261 -:104150001F910F910C94D81B0F931F930091D502C0 -:104160001091D6022091D7023091D802DC01CB0108 -:1041700080239123A223B3238093D5029093D60268 -:10418000A093D702B093D8021F910F910C94D81B23 -:104190000F931F930091D5021091D6022091D70260 -:1041A0003091D802DC01CB0180279127A227B327C9 -:1041B0008093D5029093D602A093D702B093D802F1 -:1041C0001F910F910C94D81B0895CF92DF92EF921C -:1041D000FF920F931F93CF93DF938C01C090D9026E -:1041E000D090DA02E090DB02F090DC028091D50200 -:1041F0009091D602A091D702B091D802C82AD92AAC -:10420000EA2AFB2ACFE1D0E0D701C6010C2E04C078 -:10421000B695A795979587950A94D2F780FF06C023 -:10422000B8018C2F0E948008019721F4219760F734 -:1042300080E001C08C2FDF91CF911F910F91FF90F3 -:10424000EF90DF90CF900895CF93DF93EC010E9421 -:10425000E520BE010E948008DF91CF910895CB0137 -:104260000E94242108958091DD028595859585958C -:1042700008958091DD028770089598E0899F9001EC -:104280001124262B2093DD020C9429202091DD029D -:10429000809582238093DD02982F977069F430E037 -:1042A000482F552747FD50952417350729F0859548 -:1042B000859585950C944A2008959091DD0297701C -:1042C00081E009F480E0089590911501992321F08F -:1042D00090911601911109C0209117013091180198 -:1042E000F90132969FEF40E01FC0982F9695969562 -:1042F00096959F3050F5E0911701F0911801E90F64 -:10430000F11D877021E030E0A90102C0440F551F64 -:104310008A95E2F7CA019181892B818308959F3F95 -:1043200039F04F5F4E3041F051915813F8CF0DC026 -:104330005111F7CF942FF5CF9F3F39F0F901E90FD5 -:10434000F11D97FDFA9582830895089590911501C6 -:10435000992321F090911601911109C02091170124 -:1043600030911801F9013296205F3F4F1FC0982FFE -:104370009695969596959F30F0F4E0911701F091FF -:104380001801E90FF11D877021E030E0A90102C09A -:10439000440F551F8A95E2F7CA01809591818923C0 -:1043A000818308953196E217F30729F090819813DD -:1043B000F9CF1082F7CF089581E090E0E0911701E6 -:1043C000F0911801E80FF91F1082019680319105D4 -:1043D000A9F708959091F102892B8093F102089535 -:1043E00080959091F10289238093F10208951092B3 -:1043F000F10208959091F002892B8093F0020895C4 -:1044000080959091F00289238093F0020895109294 -:10441000F00208959091EF02892B8093EF020895A6 -:1044200080959091EF0289238093EF020895109276 -:10443000EF0208958093DE0208951092DE0208953F -:104440008091170190911801FC0131969C01205F29 -:104450003F4F80E0919191118F5FE217F307D1F701 -:104460000895E0911701F09118018091F102808385 -:10447000E0911701F091180190818091F002892B51 -:104480008083E0911701F091180190818091EF02F3 -:10449000892B80838091DE02882361F0E0911701EF -:1044A000F09118019081892B80830E942022811134 -:1044B0001092DE0280911701909118010C9416174A -:1044C00020E0009739F0AC01415051098423952335 -:1044D0002F5FF7CF822F089580911303843039F135 -:1044E0001092F30220E488E190E00FB6F894A895CA -:1044F000809360000FBE2093600080E00E94EC0279 -:1045000080E00E941A0983B7817F846083BF83B7EC -:10451000816083BF7894889583B78E7F83BF88E15D -:104520000FB6F89480936000109260000FBE08955B -:104530000895089580E00E94EC020E9498220E9453 -:1045400075090E9499220E94FA0991E0811101C027 -:1045500090E0892F08950E94EC1B80E00E94EC02FD -:104560000E9414280E940A170C941A091F920F9295 -:104570000FB60F9211248F939F93AF93BF938091A7 -:10458000F302811113C08091F4029091F502A09181 -:10459000F602B091F7024196A11DB11D8093F4027D -:1045A0009093F502A093F602B093F702BF91AF91FA -:1045B0009F918F910F900FBE0F901F90189582E0E2 -:1045C00084BD93E095BD9AEF97BD80936E000895EA -:1045D0002FB7F8948091F4029091F502A091F60221 -:1045E000B091F7022FBF0895CF92DF92EF92FF9222 -:1045F0000F931F932FB7F8944091F4025091F50256 -:104600006091F6027091F7022FBF6A017B01EE24E0 -:10461000FF248C0120E030E0C016D106E206F3064C -:1046200010F4415051099A01281B390BC9011F91FF -:104630000F91FF90EF90DF90CF9008951F920F920F -:104640000FB60F9211248F939F93AF93BF938091D6 -:10465000F4029091F502A091F602B091F702019652 -:10466000A11DB11D8093F4029093F502A093F60270 -:10467000B093F702BF91AF919F918F910F900FBEB2 -:104680000F901F9018950E940714F8942FEF87EA57 -:1046900091E6215080409040E1F700C0000087E0A3 -:1046A00090EBDC0180931E0390931F03A0932003E3 -:1046B000B09321039CE088E10FB6F894A89580930D -:1046C00060000FBE90936000FFCF0E94A423811171 -:1046D00002C00E9480230E94AF238093F2020E94B6 -:1046E000B72380931C0387FB882780F980931601EA -:1046F0000E94B323682F70E080E090E00C94AC1F20 -:104700006DEE7EEF80E090E00E94CB2C60E082E0D6 -:1047100090E00E94B92C60E083E090E00E94B92C08 -:1047200060E084E090E00E94B92C60E085E090E0D9 -:104730000E94B92C60E086E090E00E94B92C6FEFF7 -:1047400087E090E00C94B92C80E090E00E94B32CBC -:1047500021E08D3E9E4F09F020E0822F089582E0F7 -:1047600090E00C94AB2C83E090E00C94AB2C84E0B4 -:1047700090E00C94AB2C682F84E090E00C94B92C62 -:1047800086E090E00C94AB2C682F86E090E00C94CF -:10479000B92C87E090E00C94AB2C682F87E090E078 -:1047A0000C94B92C8091FA0280FF0BC060911C011F -:1047B00085E0689FB001112475956795759567959B -:1047C0002BC081FF09C060911C0185E0689FB0018A -:1047D00011247595679520C082FF07C060911C0168 -:1047E00085E0689FB001112417C09091FB029923C6 -:1047F000D1F060911B01961788F720911C0185E08C -:10480000289F90011124929FA001939F500D112485 -:1048100070E0CA010E94912C6038710540F4611566 -:10482000710539F002C065E070E0862F08958FE7CA -:10483000089581E008958091FA0280FF08C0609198 -:104840001A0170E0759567957595679521C081FF90 -:1048500006C060911A0170E07595679519C082FFD6 -:1048600004C060911A0170E010C09091FB0299237E -:10487000C1F0609119019617A0F780911A01899FE4 -:10488000C001112470E00E94912C6038710528F459 -:104890006115710521F0862F08958FE7089581E055 -:1048A000089561E070E0F4CF803F21F40E94D223AC -:1048B000819504C0813F29F40E94D2238093FE0297 -:1048C0000895823F21F40E94D223819504C0833F42 -:1048D00029F40E94D2238093FD020895893F19F4A0 -:1048E0000E941B2405C08A3F31F40E941B2481953D -:1048F0008093FF0208958B3F21F40E941B24819531 -:1049000004C08C3F29F40E941B2480930003089567 -:10491000843F21F48091FC02816017C0853F21F41F -:104920008091FC02826011C0863F21F48091FC02DC -:1049300084600BC0873F21F48091FC02886005C031 -:10494000883F31F48091FC0280618093FC020895DD -:104950008D3F21F48091FA0281600BC08E3F21F4DB -:104960008091FA02826005C08F3F29F48091FA029B -:1049700084608093FA020895803F39F48091FE02AA -:1049800087FF6CC01092FE0269C0813F29F48091BC -:10499000FE021816BCF362C09091FD02823F29F41A -:1049A00097FF5CC01092FD0259C0833F19F419169D -:1049B000CCF354C0893F41F48091FF0218160CF0EB -:1049C0004DC01092FF024AC08A3F29F48091FF0235 -:1049D00087FF44C0F6CF8B3F39F48091000387FFF7 -:1049E0003DC0109200033AC08C3F29F4809100032F -:1049F0001816BCF333C0843F21F48091FC028E7FF3 -:104A000017C0853F21F48091FC028D7F11C0863F45 -:104A100021F48091FC028B7F0BC0873F21F48091B1 -:104A2000FC02877F05C0883F31F48091FC028F7EB5 -:104A30008093FC0213C08D3F21F48091FA028E7F97 -:104A40000BC08E3F21F48091FA028D7F05C08F3F0D -:104A500029F48091FA028B7F8093FA028091FD0203 -:104A600081110EC08091FE0281110AC08091FF0267 -:104A7000811106C080910003811102C01092FB02D7 -:104A800008958CEF92E00E9421170E94E8229093F3 -:104A9000F9028093F80208951F93CF93DF938091DA -:104AA000F8029091F9020E94F422AC019091FB026D -:104AB000992321F020911D0130E006C020911E01B4 -:104AC0008AE0289F900111244217530708F486C0FA -:104AD0008091FD02C091FE02D091FF02109100036F -:104AE000811107C0C11176C0D11174C0111172C0FB -:104AF00075C09F3F19F09F5F9093FB02181624F436 -:104B00000E94D2238093FD028091FD0287FF05C0A1 -:104B10000E94D22381958093FD021C1624F40E94EA -:104B2000D2238093FE028091FE0287FF05C00E947F -:104B3000D22381958093FE026091FD02662339F1B4 -:104B4000C091FE02CC2319F1772767FD7095872F5E -:104B5000972F0E94B32923E333E343E35FE30E94EB -:104B6000C32A0E9480296093FD026C2F772767FD7E -:104B70007095872F972F0E94B32923E333E343E3F4 -:104B80005FE30E94C32A0E9480296093FE021D16E3 -:104B900024F40E941B248093FF028091FF0287FF70 -:104BA00005C00E941B2481958093FF02111624F4F6 -:104BB0000E941B24809300038091000387FF05C09F -:104BC0000E941B24819580930003DF91CF911F9158 -:104BD0000C9441259F3F09F08ECF96CFDF91CF9166 -:104BE0001F910895ECEFF2E085E0DF011D928A95B8 -:104BF000E9F71092FB021092FA020895833081F1D6 -:104C000028F4813059F08230D1F00895853009F4CC -:104C100049C0B8F1863009F456C0089580911E014C -:104C2000262F30E0280F311D2F3F310524F4680F67 -:104C300060931E0108958FEF80931E010895809167 -:104C40001D01262F30E0280F311D2F3F310524F4A0 -:104C5000680F60931D0108958FEF80931D010895E3 -:104C600080911C01262F30E0280F311D2F3F310588 -:104C700024F4680F60931C0108958FEF80931C014A -:104C8000089580911B01262F30E0280F311D2F3F02 -:104C9000310524F4680F60931B0108958FEF809312 -:104CA0001B01089580911A01262F30E0280F311D35 -:104CB0002F3F310524F4680F60931A0108958FEF98 -:104CC00080931A01089580911901262F30E0280F52 -:104CD000311D2F3F310524F4680F609319010895A9 -:104CE0008FEF809319010895833011F128F48130FA -:104CF00049F0823091F00895853081F120F18630BD -:104D0000C1F1089580911E01681720F4861B8093DD -:104D10001E01089510921E01089580911D016817CB -:104D200020F4861B80931D01089510921D010895A3 -:104D300080911C01681720F4861B80931C01089544 -:104D400010921C01089580911B01681720F4861BA6 -:104D500080931B01089510921B01089580911A0100 -:104D6000681720F4861B80931A01089510921A0187 -:104D7000089580911901681720F4861B809319010A -:104D800008951092190108950F931F93873208F028 -:104D900048C08E3108F08DC0803109F477C008F525 -:104DA000873009F461C068F4863009F09DC08091B5 -:104DB000F202817F8E7F8093F20281E08093020372 -:104DC00094C08B3009F489C08E3009F08DC0809179 -:104DD000F20282FB222720F991E0922790FB82F9D0 -:104DE0005EC0863109F479C060F4813109F07CC07D -:104DF0000E94EC1B9091160181E089278093160197 -:104E00006CC0893109F469C08B3109F06DC08091A3 -:104E1000F20281FB222720F991E0922790FB81F991 -:104E20003EC0883309F459C050F4893209F457C0A0 -:104E3000853309F454C0873209F451C055C0833416 -:104E400009F44DC028F48A3308F44EC0895332C0A7 -:104E5000883409F049C00E94EC1B0E942A0A0E9473 -:104E6000F1030E94432339C09091F202892F80956B -:104E7000817080FB90F929F0966098609093F2021F -:104E800034C0997F977F9093F20227C08091F202FD -:104E900083FB222720F991E0922790FB83F98093EE -:104EA000F2029923D1F08091F20281608093F202A4 -:104EB00014C08D5141E050E060E070E08A019B0138 -:104EC00004C0000F111F221F331F8A95D2F7C9019A -:104ED000B8010E94AC1F0E94EC1B81E006C061E09B -:104EE00070E080E090E0F5CF80E01F910F91089591 -:104EF00080E0089580E00895CF93C82F8091020349 -:104F0000813069F018F08230C9F184C0E091170156 -:104F1000F09118018081823209F07EC007C0E091D3 -:104F20001701F09118018081823261F48C2F0E9468 -:104F30007827811104C08C2F0E94C4261DC081E0F7 -:104F400090E01AC08C2F0E947A27811114C0C431BE -:104F500079F048F4CB3079F0C03109F061C082E0DB -:104F60008093020308C0C93219F0C83321F058C039 -:104F70001092020355C081E0817054C0C93291F192 -:104F800020F5C43179F1B0F4C73009F047C08EE1A3 -:104F900080931E0182E380931D018AE080931C01AF -:104FA00084E180931B0188E080931A0188E280935A -:104FB000190134C0CE51C63088F5EC2FF0E0EA5428 -:104FC000FE4F80818093010329C0CE34E9F020F4A4 -:104FD000CB3421F56AE013C0C13579F0C235F1F464 -:104FE00061E00DC080910103882319F01092010344 -:104FF00015C081E08093020315C061E006C0809176 -:1050000001030E94FE250AC06AE0809101030E940C -:10501000742604C01092020380E004C081E002C044 -:1050200080E0AACFCF9108950E94A423811102C0ED -:105030000E9480230E94C02380931D0380FF02C032 -:10504000869501C080E00C94EC0280911D03982F9E -:105050009695292F30E0233031054CF49F5F990F4E -:105060008170892B816080931D030E94C4238091ED -:105070001D0386950C94EC0280911D03982F969544 -:1050800091F09158990F8170892B80931D038E7F29 -:1050900091E009F490E080911D0390FB80F98093EA -:1050A0001D030E94C42380911D0386950C94EC027D -:1050B00080911D03982F909590FB80F980931D039C -:1050C0000E94C42380911D0380FF02C0869501C009 -:1050D00080E00C94EC0290911D03892F86958F5FE0 -:1050E0008F779170843028F4880F892B80931D036B -:1050F00002C090931D0380911D038E7F91E009F4FF -:1051000090E080911D0390FB80F980931D030E9425 -:10511000C42380911D0386950C94EC0220911D03FD -:10512000922F96958927982F990F822F8170892B1E -:1051300080931D038E7F91E009F490E080911D0320 -:1051400090FB80F980931D030E94C42380911D036E -:1051500086950C94EC0280911D0386950895505815 -:10516000BB27AA270ED0D1C1C2D130F0C7D120F0C1 -:1051700031F49F3F11F41EF4B7C10EF4E095E7FB44 -:105180009FC1E92FD3D180F3BA1762077307840751 -:10519000950718F071F49EF5EBC10EF4E0950B2E17 -:1051A000BA2FA02D0B01B90190010C01CA01A00179 -:1051B0001124FF27591B99F0593F50F4503E68F1D4 -:1051C0001A16F040A22F232F342F4427585FF3CF15 -:1051D000469537952795A795F0405395C9F77EF4E6 -:1051E0001F16BA0B620B730B840BBAF09150A1F02F -:1051F000FF0FBB1F661F771F881FC2F70EC0BA0FB5 -:10520000621F731F841F48F4879577956795B7953C -:10521000F7959E3F08F0B3CF9395880F08F0992734 -:10522000EE0F97958795089527D108F481E00895AA -:105230000CD06BC163D140F05AD130F021F45F3F04 -:1052400019F03EC1511195C14FC170D198F3992306 -:10525000C9F35523B1F3951B550BBB27AA2762173A -:105260007307840738F09F5F5F4F220F331F441F7F -:10527000AA1FA9F333D00E2E3AF0E0E830D09150B7 -:105280005040E695001CCAF729D0FE2F27D0660FA4 -:10529000771F881FBB1F261737074807AB07B0E8E3 -:1052A00009F0BB0B802DBF01FF2793585F4F2AF0F9 -:1052B0009E3F510568F004C15CC15F3FECF3983E2E -:1052C000DCF3869577956795B795F7959F5FC9F756 -:1052D000880F911D9695879597F90895E1E0660FDF -:1052E000771F881FBB1F621773078407BA0720F058 -:1052F000621B730B840BBA0BEE1F88F7E0950895C1 -:1053000004D06894B11135C1089518D188F09F5721 -:1053100090F0B92F9927B751A0F0D1F0660F771F01 -:10532000881F991F1AF0BA95C9F712C0B13081F0E1 -:105330001FD1B1E008951CC1672F782F8827B85F6F -:1053400039F0B93FCCF3869577956795B395D9F742 -:105350003EF490958095709561957F4F8F4F9F4F4C -:105360000895E89409C097FB3EF490958095709558 -:1053700061957F4F8F4F9F4F9923A9F0F92F96E9A1 -:10538000BB279395F695879577956795B795F11116 -:10539000F8CFFAF4BB0F11F460FF1BC06F5F7F4FB3 -:1053A0008F4F9F4F16C0882311F096E911C07723C5 -:1053B00021F09EE8872F762F05C0662371F096E8CE -:1053C000862F70E060E02AF09A95660F771F881F9D -:1053D000DAF7880F9695879597F9089588D018F091 -:1053E00011F08CD038F480C0C4C0E92F9FD0B0F346 -:1053F0005523C9F3E7FB6217730784079507A8F1E4 -:1054000099F3E92FFF2788232AF03197660F771F3A -:10541000881FDAF7952F5527442332F091505040DA -:10542000220F331F441FD2F7BB27E91BF50B621B6A -:10543000730B840BB109C1F222F4620F731F841F36 -:10544000B11D31972AF0660F771F881FBB1FEFCF62 -:10545000915050405AF041F0882332F0660F771F88 -:10546000881F91505040C1F7939530C0869577952D -:1054700067959F5FD9F7F8CF990F0008550FAA0BD2 -:10548000E0E8FEEF16161706E807F907C0F0121657 -:105490001306E407F50798F0621B730B840B950B5A -:1054A00039F40A2661F0232B242B252B21F40895AF -:1054B0000A2609F4A140A6958FEF811D811D08954C -:1054C00097F99F6780E870E060E008959F3F31F0B2 -:1054D000915020F4879577956795B795880F911D22 -:1054E0009695879597F908959FEF80EC089500248D -:1054F0000A941616170618060906089500240A9439 -:1055000012161306140605060895092E0394000CBE -:1055100011F4882352F0BB0F40F4BF2B11F460FF4D -:1055200004C06F5F7F4F8F4F9F4F089557FD905876 -:10553000440F551F59F05F3F71F04795880F97FB57 -:10554000991F61F09F3F79F0879508951216130611 -:105550001406551FF2CF4695F1DF08C01616170640 -:105560001806991FF1CF8695710561050894089575 -:10557000E894BB2766277727CB0197F908957CDF4E -:1055800008F48FEF08950BD0C0CFB1DF28F0B6DF5D -:1055900018F0952309F094CFA7CF1124EACFC6DFE6 -:1055A000A0F3959FD1F3950F50E0551F629FF00136 -:1055B000729FBB27F00DB11D639FAA27F00DB11D8F -:1055C000AA1F649F6627B00DA11D661F829F222718 -:1055D000B00DA11D621F739FB00DA11D621F839F9F -:1055E000A00D611D221F749F3327A00D611D231F75 -:1055F000849F600D211D822F762F6A2F11249F57C3 -:1056000050408AF0E1F088234AF0EE0FFF1FBB1FE5 -:10561000661F771F881F91505040A9F79E3F510584 -:1056200070F04ECFA6CF5F3FECF3983EDCF386954B -:1056300077956795B795F795E7959F5FC1F7FE2B2F -:10564000880F911D9695879597F90895FA01EE0FA9 -:10565000FF1F30962105310599F16115710561F43F -:105660008038BFE39B0749F168949038810561F069 -:105670008038BFEF9B0741F0992342F5FF3FE105DA -:105680003105210511F1E8940894E795D901AA2381 -:1056900029F4AB2FBE2FF85FD0F310C0FF5F70F47A -:1056A000A695E0F7F73950F019F0FF3A38F49F77F4 -:1056B0009F930CD00F9007FC905808953EF014CFA4 -:1056C00060E070E080E89FE308954FE79F775F9385 -:1056D0004F933F932F939ED02F913F914F915F9186 -:1056E00052DF05C019F40EF0EBCE42CFFDCE26DF1F -:1056F000C8F39638C0F707F80F92E8942BE33AEA1C -:1057000048EB5FE74EDF0F920F920F924DB75EB7F7 -:105710000F92C0D0EAE0F1E016D04F915F91EF9187 -:10572000FF91E595EE1FFF1F49F0FE57E068442703 -:10573000EE0F441FFA95E1F74195550B32D00F90CB -:1057400007FE26C00895DF93CF931F930F93FF9218 -:10575000EF92DF927B018C01689405C0DA2EEF0195 -:105760001EDFFE01E894A591259135914591559153 -:10577000AEF3EF0106DDFE019701A801DA9479F797 -:10578000DF90EF90FF900F911F91CF91DF910895DF -:105790009B01AC0160E070E080E89FE349CD90CED2 -:1057A00095CECCDEE8F39923D9F3940F511DBBF3CA -:1057B0009150504094F059F0882332F0660F771FD3 -:1057C000881F91505040C1F79E3F510544F7880F04 -:1057D000911D9695879597F908955F3FACF0983E97 -:1057E0009CF0BB27869577956795B79508F4B160CF -:1057F0009395C1F7BB0F58F711F460FFE8CF6F5FC7 -:105800007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE65 -:10581000689456CE93DEC8F39923D1F3C6F3DF9391 -:10582000CF931F930F93FF92C92FDD2788232AF070 -:105830002197660F771F881FDAF720E030E040E8F5 -:105840005FEB9FE3883920F0803E30F021968F7720 -:1058500087DCE2E3F1E003C083DCEFE5F1E073DF36 -:105860008B01BE01EC01FB2E6F5771097595771FF7 -:10587000880B990B78DD28E132E741E35FE38FDEA7 -:10588000AF2D9801AE01FF900F911F91CF91DF9145 -:1058900078DC3BCEFA01DC01AA0FBB1F9B01AC01F7 -:1058A000BF5728F422273327442750781FC0B75109 -:1058B00088F4AB2F0024469537952795011CA395B6 -:1058C000D2F3002069F0220F331F441FB395DAF39F -:1058D0000DD045CC61307105A0E88A07B94630F497 -:1058E0009B01AC016627772788279078309621F0B6 -:1058F00020833183428353830895AA1BBB1B51E14C -:1059000007C0AA1FBB1FA617B70710F0A61BB70B2F -:10591000881F991F5A95A9F780959095BC01CD01D4 -:10592000089597FB072E16F4009407D077FD09D051 -:105930000E947D2C07FC05D03EF4909581959F4FE9 -:105940000895709561957F4F0895EE0FFF1F0590A4 -:10595000F491E02D0994F999FECF92BD81BDF89A9A -:10596000992780B50895A8E1B0E042E050E00C949A -:10597000D32C262FF999FECF92BD81BDF89A0197BD -:1059800000B4021639F01FBA20BD0FB6F894FA9A87 -:10599000F99A0FBE08950196272F0E94BA2C0C94F5 -:1059A000B92CDC01CB01FC01F999FECF06C0F2BD98 -:1059B000E1BDF89A319600B40D9241505040B8F7CD -:0659C0000895F894FFCFEA -:1059C600640007000CFF0000003F640E109C107975 -:1059D60010451011100101DF022808140A321E00BA -:1059E60002040507090B0C0E1011131517181A1CC3 -:1059F6001D1F2123242628292B2D2F3032343537FD -:105A0600393B1F0F03764F5F6F7F49694379095909 -:105A160053633149803F5D8B803FF8BF803FCAE1C9 -:105A2600803F73ED803FCAE1803FF8BF803F5D8BCA -:105A3600803F3149803F0000803FF16D7F3F75EA2E -:105A46007E3F4C827E3F833F7E3F84287E3F833F5E -:105A56007E3F4C827E3F75EA7E3FF16D7F3F0000C0 -:105A6600803F3F4D3639E304960460042704BA03A9 -:105A7600D303EC0305040102030405060708090025 -:00000001FF diff --git a/keyboard/planck/keymaps/jacob/compiled.hex b/keyboard/planck/keymaps/jacob/compiled.hex deleted file mode 100644 index b823d6da9e..0000000000 --- a/keyboard/planck/keymaps/jacob/compiled.hex +++ /dev/null @@ -1,1444 +0,0 @@ -:100000000C9461020C94A5020C94A5020C94A50218 -:100010000C94A5020C94A5020C94A5020C94A502C4 -:100020000C94A5020C94A5020C9452140C94241563 -:100030000C9486220C94A5020C94A5020C94A502A3 -:100040000C94A5020C9407030C94A5020C94A50231 -:100050000C94A5020C94EE220C94A5020C94A5021B -:100060000C94A5020C94A5020C94A5020C94A50274 -:100070000C94A5020C94A5020C94A5020C94A50264 -:100080000C94C70A0C94A5020C94A5020C94A5022A -:100090000C94A5020C94A5020C94A5020C94A50244 -:1000A0000C94A5020C94A5020C94A5029115B3150D -:1000B000A116B315A116F8151B16A11670168316F6 -:1000C0006D196D199C199C19DB19FB19511B511BDA -:1000D000061A511BB61AB61A1D1B261B511B4B1BA9 -:1000E000C31AC31AC31AC31AC31AC31AC31AC31A28 -:1000F000C31AC31AC31AC31AC31AC31AC31AC31A18 -:10010000D31AE11AE81AEF1AF91A07634236B79BB5 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000002B001400ED -:1001D0001A000800150017001C0018000C0012007F -:1001E00013002A00290004001600070009000A0075 -:1001F0000B000D000E000F0033003400E1001D0065 -:100200001B00060019000500110010003600370021 -:1002100038002872E000E300E200003001522C00B8 -:100220002C0002525000510052004F0035021E02B5 -:100230001F0220022102220223022402250226029A -:1002400027024C0001000100010001000100010033 -:1002500001002D022E022F023002310201000100A6 -:1002600001000100010001000100010001002F0058 -:100270003000010001000100010001000100010047 -:1002800001000100010001000100010035001E0015 -:100290001F0020002100220023002400250026004A -:1002A00027004C0001003A003B003C003D003E00AE -:1002B0003F002D002E002F003000310001004000D3 -:1002C00041004200430044004500010001000100DC -:1002D0000100010001000100010001000100010016 -:1002E0000100010001000100010001002803540089 -:1002F00068006500200050006C0061006E00630023 -:100300006B0020004B006500790062006F00610007 -:100310007200640000002C034F007200740068003B -:100320006F006C0069006E006500610072002000C3 -:100330004B006500790062006F006100720064008C -:10034000730000000403090409026D00040100A009 -:10035000FA09040000010301010009211101000153 -:10036000223F000705810308000A09040100010378 -:10037000010200092111010001224D00070582033D -:1003800008000A090402000103000000092111010C -:1003900000012236000705830308000A0904030050 -:1003A00001030000000921110100012239000705A5 -:1003B00084031000011201100100000008EDFE602E -:1003C0006001000102000105010906A101050719EC -:1003D000E029E71500250195087501810205081936 -:1003E0000129059505750191029501750391010596 -:1003F000071900297715002501957875018102C03C -:1004000005010980A101850216010026B7001A0125 -:10041000002AB700751095018100C0050C0901A1E3 -:10042000018503160100269C021A01002A9C027510 -:100430001095018100C005010902A1010901A10077 -:100440000509190129051500250195057501810288 -:100450009501750381010501093009311581257F59 -:1004600095027508810609381581257F9501750863 -:100470008106050C0A38021581257F9501750881D2 -:1004800006C0C005010906A101050719E029E71505 -:100490000025019508750181029501750881010506 -:1004A00008190129059505750191029501750391BA -:1004B000010507190029FF150025FF95067508811C -:1004C00000C011241FBECFEFDAE0DEBFCDBF04B6FF -:1004D00003FE24C080911E0390911F03A09120036E -:1004E000B09121038730904BA740B04BB9F41092E4 -:1004F0001E0310921F03109220031092210314BEBA -:1005000084B7877F84BF88E10FB6F894809360003A -:10051000109260000FBEE0E0F8E3099511E0A0E062 -:10052000B1E0E6E6F9E502C005900D92A03CB10706 -:10053000D9F713E0A0ECB1E001C01D92AE31B107D4 -:10054000E1F70E9498110C94B12C0C9400000895CE -:10055000089581E0089508950C94A8020C94A902CE -:100560000C94AB020E947B2823E030E0281B310969 -:10057000220F2093C4010895282F2F988091800086 -:10058000211108C0877F8093800010928D00109207 -:100590008C001BC0886080938000233019F48FEF9B -:1005A0009FEF0FC083E090E0821B9109880F991F95 -:1005B0002FEF3FEFA90102C0569547958A95E2F7C4 -:1005C000CA0190938D0080938C000C94B2020E941B -:1005D000B20284E08093C3011092C0010895279A6B -:1005E0002F988FEF9FEF90938700809386008AE08B -:1005F0008093800089E1809381000E94E4270C941D -:10060000E7020E94EF026E9A769A0C94A7021F925C -:100610000F920FB60F9211242F933F938F939F93B6 -:10062000EF93FF93E091C101F091C201CF010196D8 -:100630009093C2018093C1010090C30102C0F6955E -:10064000E7950A94E2F7EF738091C001823019F4C4 -:10065000E03251F404C0813039F4EF3329F4809151 -:100660006F008D7F80936F00F0E0E457FE4FE491C0 -:1006700021E031E0E29FC001E39F900D1124009042 -:10068000C40102C0969587950A94E2F790938D0075 -:1006900080938C00FF91EF919F918F913F912F91CB -:1006A0000F900FBE0F901F90189561110DC0FC01A7 -:1006B0008281882331F085EE0E9411180E943B2828 -:1006C00003C085EE0E94D91880E090E0089581E093 -:1006D00008950C94670308950C940103809115020A -:1006E000882309F448C08091D1019091D2010097EC -:1006F00079F40E94B8229093D2018093D101809125 -:10070000D30190E0009771F48091D40190E00AC089 -:100710000E94C4222091000130910101281739075D -:1007200040F329C00197880F991F880F991FFC017A -:10073000EB52FE4F60817181828193810E942D0A6C -:10074000E091D30184E0E89FF0011124EB52FE4FC9 -:1007500060817181828193814FE050E00E94E50DBC -:100760008091D30190E001966091D40170E00E94E5 -:10077000612C8093D3010C94AC02109217020C945C -:10078000FA090895089581E0809317020C94C2033A -:10079000089508958F929F92AF92BF92EF92FF9229 -:1007A0000F931F93CF93DF93CDB7DEB7A3970FB609 -:1007B000F894DEBF0FBECDBF7C01FC01008111812A -:1007C000C8010E94B520B8010E94CC058C01B70178 -:1007D0000E946903882309F4CCC10032F0E51F07A9 -:1007E00041F4F7018281882309F458C00E94490E20 -:1007F000C0C10132F0E51F0741F4F701828188236F -:1008000009F44CC00E94520EB4C10232F0E51F0739 -:1008100051F4F7018281882309F440C00E94450EFB -:100820008111F0CFE3CF0332F0E51F0739F4F70170 -:100830008281882399F10E94C3039BC10432F0E5B1 -:100840001F0739F4F7018281882341F10E94BD031B -:1008500090C10532F0E51F0749F4F7018281882332 -:10086000E9F0809117028111F1CFE5CF0632F0E572 -:100870001F0739F4F7018281882381F00E94590E05 -:100880000AC00732F0E51F0749F4F7018281882387 -:1008900029F00E94640E0E94C9036BC18091170267 -:1008A000811105C0F70182818111CFC018C1003EBE -:1008B000110579F4F7018281882309F44DC00E9463 -:1008C000FA0981E080931602109215021092D40169 -:1008D00050C1023E110559F4F70182818823E1F1EC -:1008E0000E94FA09109216021092150242C1033EAC -:1008F000110591F4F7018281882371F10E94FA09B0 -:100900001092160281E0809315021092D30110928A -:10091000D2011092D1012DC10235110559F4F70110 -:100920008281882309F425C1809100019091010101 -:100930000A970DC00135110579F4F70182818823EA -:1009400009F417C180910001909101010A969093DA -:100950000101809300010DC14091040183E2EFE1A8 -:10096000F1E0DE01119601900D928A95E1F7F70111 -:10097000808121E030E02C0F3D1F280F311DC9017F -:100980002091020130910301FC01E20FF31F60810D -:10099000772767FD7095640F711D882777FD809517 -:1009A000982F0E94832920E030E040E451E40E9427 -:1009B000E8284B015C01F701218184E090E0821B73 -:1009C0009109BC01882777FD8095982F0E94832983 -:1009D0009B01AC01C501B4010E9480289B01AC01C0 -:1009E00060E070E080E090E40E94F62A20E030E0D1 -:1009F0004CED50E40E94932A4B015C01F701828187 -:100A00008823D1F04FE050E0C501B4010E94E50D0C -:100A1000809116028823A1F08091D40124E0829F66 -:100A2000F0011124EB52FE4F80829182A282B382A8 -:100A30008F5F8093D40104C0C501B4010E942D0AC8 -:100A40000F3F110508F02ECF94C08091D001811185 -:100A50001FC0043130E5130709F051C00E946B0339 -:100A600081E08093D0010E94B8229093CF018093BF -:100A7000CE011092C7011092C9011092C8011092C4 -:100A8000CB011092CA011092CD011092CC0171C01D -:100A90008091CE019091CF010E94C422883C9105A3 -:100AA00070F48091C701E82FF0E0EE0FFF1FE853CC -:100AB000FE4F118300838F5F8093C7015AC00438B3 -:100AC00080E5180721F00538104501F13AC0F7011B -:100AD0008281882341F01092C50182E01EC0043853 -:100AE00030E5130759F58091C501811106C086E2F2 -:100AF0000E94111886E20E94D91882E01CC00438B6 -:100B0000F0E51F0741F305381045D9F4F70182815C -:100B1000882331F01092C60180E20E94281929C072 -:100B20008091C601811106C087E20E94111887E2F8 -:100B30000E94D91880E20E942F191BC00538104569 -:100B400029F381E08093C5018093C601C701A39674 -:100B50000FB6F894DEBF0FBECDBFDF91CF911F91CE -:100B60000F91FF90EF90BF90AF909F908F900C945B -:100B7000AE0280E0A3960FB6F894DEBF0FBECDBFE5 -:100B8000DF91CF911F910F91FF90EF90BF90AF90A9 -:100B90009F908F90089508959CE0799FF001112413 -:100BA00090E3899FE00DF11D1124E60FF11DEE0F7A -:100BB000FF1FE453FE4F859194910895880F991F6C -:100BC000FC01E45BFF4F859194910895880F991F74 -:100BD000FC01E453FE4F8591949108950F931F9368 -:100BE000CF93DF93EC01811521E39207A0F5C115A6 -:100BF00080E3D80708F0D7C0C83ED105D8F4C03E7E -:100C0000D10508F007C2C83AD10578F4C53AD10534 -:100C100008F06AC0C130D10509F463C008F4F7C117 -:100C2000C430D10508F0F6C1F2C1CB3BD10508F4C0 -:100C300066C0EDC1C11590E2D90708F0AFC0C1157B -:100C400021E0D20708F0E6C1C03FD10508F4DFC1BA -:100C50008E0110651FC2C03880E5D80700F5C03787 -:100C600090E5D90708F0A3C0C11520E5D20709F423 -:100C7000ACC050F4CE01905480319F4008F0C7C101 -:100C8000DF708E01106A06C2C13080E5D80709F412 -:100C9000AEC0C43190E5D90708F4AFC0B8C1C338BD -:100CA00020E5D20709F48EC050F4C13890E5D90789 -:100CB00009F482C008F083C000E011EDEBC1C0313F -:100CC00081E5D80708F4A3C1C11597E5D90708F451 -:100CD00036C1CE0190578115904108F098C1DF7060 -:100CE00093C101E010E0D6C1C53AD10509F494C121 -:100CF000C63AD10509F093C102E810E4CBC1C83A65 -:100D0000D10509F48FC1C93AD10509F48EC1CA3A97 -:100D1000D10509F48DC1CB3AD10509F48CC1CC3A87 -:100D2000D10509F48BC1CD3AD10509F48AC1C03B84 -:100D3000D10509F489C1CE3AD10509F488C1CF3A69 -:100D4000D10509F487C1C13BD10509F486C1C23B75 -:100D5000D10509F485C1C33BD10509F484C1C43B65 -:100D6000D10509F483C1C53BD10509F482C1C63B55 -:100D7000D10509F481C1C73BD10509F480C1C83B45 -:100D8000D10509F47FC1C93BD10509F47EC1CA3B35 -:100D9000D10509F47DC100E014E47CC1CE019F704F -:100DA0000E94E60578C1DD278E01106C73C1CF70FB -:100DB000DD278E01146D6EC100E010ED6BC100E007 -:100DC00012ED68C100E013ED65C10E94BC1B0E94DA -:100DD000FA090E94C1038FEF94E32CE08150904008 -:100DE0002040E1F700C000000E94132353C180910E -:100DF000F20281608093F2024DC10E94742381113E -:100E000002C00E9450230E94872390E090931D030C -:100E100080931C03C23080E5D80721F480911C0325 -:100E2000816086C0C43090E5D90721F480911C030D -:100E300082607EC0C63020E5D20721F480911C0379 -:100E4000846076C0C83080E5D80719F480911C030F -:100E500027C0CA3090E5D90721F480911C03806136 -:100E600067C0CC3020E5D20721F480911C0380625A -:100E70005FC0CE3080E5D80721F480911C038064E8 -:100E800057C0C03190E5D90721F480911C038068D8 -:100E90004FC0C23120E5D20729F480911C03846041 -:100EA000886046C0C33080E5D80721F480911C03D8 -:100EB0008E7F3EC0C53090E5D90721F480911C0398 -:100EC0008D7F36C0C73020E5D20721F480911C0306 -:100ED0008B7F2EC0C93080E5D80719F480911C03A0 -:100EE00026C0CB3090E5D90721F480911C038F7E7A -:100EF0001FC0CD3020E5D20721F480911C038F7DE7 -:100F000017C0CF3080E5D80721F480911C038F7B78 -:100F10000FC0C13190E5D90721F480911C038F7770 -:100F200007C0C331D04531F480911C038B7F877F8C -:100F300080931C0380911C030E948B23ABC08D2FD8 -:100F400099278F70992781309105D9F49E012370DC -:100F5000332702C0880F991F2A95E2F79C688E01FB -:100F600044E0000F111F4A95E1F700271370802B12 -:100F7000912B53E0CC0FDD1F5A95E1F7C076DD27AA -:100F80002FC08230910531F4DC2FCC278E01016F08 -:100F9000106A80C08330910569F4CE01837099276F -:100FA00001E010E002C0000F111F8A95E2F7C801AE -:100FB0009C680FC084309105B9F4CE0183709927E5 -:100FC00001E010E002C0000F111F8A95E2F7C8018E -:100FD0009A6823E0CC0FDD1F2A95E1F7C07ED77019 -:100FE0008C010C2B1D2B56C08530910531F4DC2F64 -:100FF000CC278E01046F106A4DC0069709F04AC0D5 -:10100000CF71DD27DC2FCC278E01106243C000E0BA -:1010100010E040C08E013EC001E810E43BC003E890 -:1010200010E438C002EE14E435C009EE14E432C016 -:101030000AEE14E42FC005EB14E42CC006EB14E414 -:1010400029C007EB14E426C00CEC14E423C00DEC1B -:1010500014E420C003E815E41DC00AE815E41AC032 -:1010600002E915E417C004E915E414C001E216E42E -:1010700011C003E216E40EC004E216E40BC005E260 -:1010800016E408C006E216E405C007E216E402C052 -:101090000AE216E4C801DF91CF911F910F910895E4 -:1010A0009CE0799FF001112490E3899FE00DF11DF0 -:1010B0001124E60FF11DEE0FFF1FE453FE4F859143 -:1010C0009491803E9105E0F4803C910558F5813380 -:1010D000910509F46FC048F48932910509F463C0A1 -:1010E0008A32910509F46DC072C089339105E9F027 -:1010F00082389105D1F08533910509F44DC067C060 -:10110000833E910581F138F4803E9105B9F0823E2D -:101110009105D9F05CC0863E910561F1873E91054D -:10112000A1F155C00E94DE05089520911C0320FD09 -:1011300002C021FF4CC080EE90E049C080911C03AA -:1011400080FFF9CF89E390E042C080911C0382FFC9 -:101150000EC080911C0384FF03C080E090E037C084 -:1011600083EE90E034C080911C0382FFF2CF82EEC8 -:1011700090E02DC080911C0383FF0BC080911C0365 -:1011800084FDEBCF87EE90E022C080911C0383FFAB -:10119000F5CF86EE90E01BC080911C0385FF07C051 -:1011A00089E290E014C080911C0385FFF9CF85E3AC -:1011B00090E00DC080911C0386FF07C08AE290E09A -:1011C00006C080911C0386FFF9CF81E390E00E9466 -:1011D000EE0508950C94B002E82FF0E0E25BFE4FBC -:1011E0008081E82FEF70F0E082958F7021E030E091 -:1011F000A90102C0440F551F8A95E2F740A3089544 -:101200000F931F93CF93DF9385B7806885BF85B712 -:10121000806885BFC3E0D0E001E010E0FE01E25B42 -:10122000FE4F8081E82FEF70F0E021A182958F7052 -:10123000A80102C0440F551F8A95E2F7CA01822B0C -:1012400081A38C2F0E94EC08219740F78BE090E05F -:1012500061E070E0FC01EE5BFE4F2081E22FEF7059 -:10126000F0E042A122952F70DB0102C0AA0FBB1F44 -:101270002A95E2F79D01242B22A3019758F7DF91CD -:10128000CF911F910F910C946C03EF92FF920F93EB -:101290001F93CF93DF9300E212E0C3E0EE24E394C8 -:1012A000F12CD5E08C2F0E94EC088BE090E040E020 -:1012B00050E0FC01EE5BFE4F6081E62FEF70F0E046 -:1012C00020A130E062956F7002C0359527956A9530 -:1012D000E2F720FD09C09701082E02C0220F331F3C -:1012E0000A94E2F7422B532B019718F7F8019291D9 -:1012F00082918F018417950721F051834083D09309 -:1013000005018C2F0E94EC08C15060F68091050108 -:1013100087FD2CC08150809305018F3F39F08FE904 -:101320009FE00197F1F700C0000020C080911E02ED -:1013300090911F02909327028093260280911C02B5 -:1013400090911D02909325028093240280911A02AD -:1013500090911B02909323028093220280911802A5 -:101360009091190290932102809320020E946E03B3 -:1013700081E0DF91CF911F910F91FF90EF90089541 -:10138000E82FF0E0EE0FFF1FE05EFD4F80819181BE -:10139000089508950F931F93CF9308E212E0C0E0E1 -:1013A000F801929182918F010E943022C80FF2E0E1 -:1013B00000321F07A9F78C2FCF911F910F9108952D -:1013C0000E947423811102C00E9450230E9499231D -:1013D000809307033E9A809171008D7F8093710006 -:1013E00082E0809390008AE18093910081E0809375 -:1013F0002A02089580912A02811102C00E94E00908 -:1014000010927A0210927902809171008D7F809300 -:101410007100809190008F738093900010923C0235 -:1014200010923B0210927302109274021092750295 -:10143000109276021092720210927102E1E5F2E0CF -:10144000A1E4B2E011921192119211921D921D929B -:1014500082E0E137F807B1F70895CF92DF92EF927B -:10146000FF920F931F93CF93DF9320913B02222390 -:1014700009F484C06B017C0180912A02811102C0B1 -:101480000E94E00901E712E0C7E0D0E0A701960161 -:10149000F80192918291729162918F010E94E428E9 -:1014A000811131C0FE01EE0FFF1FEE0FFF1FEF5A3B -:1014B000FD4F1082118212821382DE01AA0FBB1F20 -:1014C000AF5BBD4F11961C921E92C730D105E9F05B -:1014D000219644815581668177814083518362835F -:1014E0007383148215821682178212968D919C91B5 -:1014F000139711969C938E9313961C921E9212979B -:1015000034961296E2CF219708F680917902909155 -:101510007A02019797FD05C090937A028093790231 -:1015200004C010927A02109279028091790290910F -:101530007A0220917702309178022817390724F037 -:101540001092780210927702892BC1F48091710079 -:101550008D7F80937100809190008F7380939000B5 -:101560001092730210927402109275021092760219 -:10157000109272021092710210923B02DF91CF9191 -:101580001F910F91FF90EF90DF90CF9008951F92E1 -:101590000F920FB60F9211244F925F926F927F922B -:1015A0008F929F92AF92BF92CF92DF92EF92FF9273 -:1015B0002F933F934F935F936F937F938F939F935B -:1015C000AF93BF93CF93DF93EF93FF9380913B0251 -:1015D000882309F49BC1C0917902D0917A021C162C -:1015E0001D060CF093C140902B0250902C0260908D -:1015F0002D0270902E0220E030E0A901C301B2015B -:101600000E948F2A18160CF065C0C130D10509F46C -:1016100052C08091770290917802BE010E94612CA5 -:101620007C01909378028093770280903D029090A5 -:101630003E02A0903F02B090400220E030E040E83F -:101640005FE3C501B4010E94802860933D0270935E -:101650003E0280933F0290934002F701EE0FFF1F7E -:10166000EE0FFF1FEF5AFD4FA301920160817181C0 -:10167000828193810E94E82820E030E040E05EE330 -:101680000E94932A9B01AC01C501B4010E948F2ADC -:1016900018168CF4C7010196BE010E94612C90932C -:1016A00078028093770210923D0210923E021092CF -:1016B0003F0210924002E0917702F0917802EE0F23 -:1016C000FF1FEE0FFF1FEF5AFD4F60817181828176 -:1016D0009381D0C0C0907302D0907402E0907502E4 -:1016E000F090760220E030E0A901C701B6010E9427 -:1016F000E4282197882309F4A2C0FE01EE0FFF1F02 -:10170000EE0FFF1FEF5AFD4F80809180A280B380C3 -:10171000A5019401C701B6010E94E42887FF31C0EA -:10172000A501940160E070E08CED93EC0E94E82844 -:1017300020E030E040E451E40E94E82820E030E07E -:1017400040E05FE30E94932A9B01AC0160E070E0FF -:1017500080E090E40E94F62A9B01AC01C501B4012F -:101760000E94932A9B01AC01C701B6010E94E428A4 -:1017700087FF07C0A701960160E070E08CED93E45D -:1017800039C0A5019401C701B6010E948F2A18161D -:101790000CF055C0A501940160E070E08CED93E47D -:1017A0000E94E82820E030E040E451E40E94E8286C -:1017B00020E030E040E05FE30E94932A9B01AC010F -:1017C00060E070E080E090E40E94F62A9B01AC01AA -:1017D000C501B4010E94932A9B01AC01C701B60167 -:1017E0000E948F2A18165CF5A701960160E070E050 -:1017F0008CED93EC0E94E82820E030E040E451E4D6 -:101800000E94E82820E030E040E05FE30E94932A55 -:101810009B01AC0160E070E080E090E40E94F62A59 -:101820009B01AC01C701B6010E94932A6093730229 -:1018300070937402809375029093760213C0FE0138 -:10184000EE0FFF1FEE0FFF1FEF5AFD4F80819181BA -:10185000A281B3818093730290937402A093750266 -:10186000B093760260917302709174028091750258 -:101870009091760220912802309129022F3F4FEF5C -:10188000340731F02F5F3F4F309329022093280215 -:101890000E946F0E6B017C0120E034E244EF51E4C2 -:1018A0000E94E42887FF08C086EFC82E88E2D82E61 -:1018B00084EFE82E81E4F82E20E030E040E051E4AF -:1018C000C701B6010E94932A9B01AC0160E074E25B -:1018D00084E79BE40E94E8286B017C010E94552963 -:1018E0007093970060939600209106013091070154 -:1018F0004091080150910901C701B6010E94932A45 -:101900000E945529709399006093980080913C0241 -:10191000882309F433C1C0903702D0903802E09098 -:101920003902F0903A0220E030E0A901C701B60187 -:101930000E948F2A1816D4F58091280290912902CE -:101940008F3F2FEF920729F0019690932902809301 -:101950002802C701B6010E946F0E20E030E040E08F -:1019600051E40E94932A9B01AC0160E074E284E799 -:101970009BE40E94E8286B017C010E94552970932A -:1019800097006093960020910601309107014091E5 -:10199000080150910901C701B6010E94932A0E94D3 -:1019A0005529709399006093980008C01092970091 -:1019B0001092960010929900109298006091310256 -:1019C000709132026F5F7F4F7093320260933102E9 -:1019D000209196003091970080E090E0232BF1F069 -:1019E000C0919600D09197000E9481296B017C01E3 -:1019F000BE0180E090E00E9481299B01AC016091D2 -:101A000033027091340280913502909136020E9427 -:101A1000E82820E03FEF4FE757E410C00E948129FB -:101A20006B017C0120E030EE4FEF54E46091330213 -:101A30007091340280913502909136020E94932A6F -:101A40009B01AC01C701B6010E948F2A87FD96C099 -:101A500080912F028F5F80932F0290E020910303EB -:101A60003091040382179307A0F080910E0388231E -:101A700019F010922F020DC0809171008D7F80931C -:101A80007100809190008F738093900010923C02BF -:101A90007DC080913002C0912F02811128C0C0907A -:101AA0000803D0900903E0900A03F0900B0320E0B4 -:101AB00030E0A901C701B6010E948F2A1816BCF4B4 -:101AC00081E0809330021092370210923802109217 -:101AD000390210923A02C0923302D0923402E0925C -:101AE0003502F0923602C150C0932F0243C01092CB -:101AF00030021092290210922802E0910503F09121 -:101B0000060348E0C49FE00DF11D112480819181FE -:101B1000A281B3818093370290933802A093390257 -:101B2000B0933A0220E030E040E85EE364817581E2 -:101B3000868197810E94932A6B017C0180910A0122 -:101B4000682F70E080E090E00E94812920E030E082 -:101B500048EC52E40E94E8289B01AC01C701B601A1 -:101B60000E94932A6093330270933402809335026B -:101B70009093360210923202109231028091070344 -:101B800080FD04C010923C0210923B02FF91EF9145 -:101B9000DF91CF91BF91AF919F918F917F916F9185 -:101BA0005F914F913F912F91FF90EF90DF90CF90F9 -:101BB000BF90AF909F908F907F906F905F904F906D -:101BC0000F900FBE0F901F901895CF92DF92EF925B -:101BD000FF92CF93DF936B017C01EA0180912A028F -:101BE000811102C00E94E0098091070380FF46C076 -:101BF0008091790290917A0208970CF03FC0809111 -:101C000071008D7F8093710080913C0281110E9450 -:101C1000FA0981E080933B02109229021092280277 -:101C200020E030E0A901C701B6010E948F2A1816F2 -:101C3000DCF48091790290917A02FC01EE0FFF1F93 -:101C4000EE0FFF1FEF5AFD4FC082D182E282F38276 -:101C5000FC01EE0FFF1FEF5BFD4FD183C0830196A8 -:101C600090937A02809379028091710082608093D0 -:101C7000710080919000806880939000DF91CF91F7 -:101C8000FF90EF90DF90CF900895809107038170CF -:101C90000895809107038160809307030E949D232C -:101CA0000C94C803809107038E7F809307030C94E4 -:101CB0009D2380917B0290E0019666E070E00E9497 -:101CC000612C80937B02089580917B0290E00197C4 -:101CD00066E070E00E94612C80937B0208958F92F1 -:101CE0009F92AF92BF92CF92DF92EF92FF920F93AB -:101CF0001F93CF93DF936B017C01C0912802D09199 -:101D00002902BE0180E090E00E9481294B015C0124 -:101D1000A701960160E070E08CE594E40E94E82859 -:101D20009B01AC01C501B4010E94932A0E94552970 -:101D300020917B02233009F473C028F4222351F050 -:101D40002130E9F02CC1243009F4A0C0253009F479 -:101D5000E0C025C180E090E0A0E0BFE380930601F1 -:101D600090930701A0930801B093090110922B02F0 -:101D700010922C0210922D0210922E0210C110927D -:101D80002B0210922C0210922D0210922E0264311E -:101D9000710540F46A30710560F520E030E040E8FC -:101DA0005EE32BC0693C710508F0AAC080E090E0BA -:101DB0000E94812920E030E040EA51E40E947F281F -:101DC00020E030E044E353E40E94E8289B01AC01AA -:101DD0000E94932A20E030E040E05EE30E94932AD4 -:101DE0009B01AC0160E070E080E09EE30E947F28F0 -:101DF00044C020E030E040E05FE3C701B6010E944C -:101E0000932A6B017C0180E090E0A0E0BEE3809328 -:101E1000060190930701A0930801B0930901BFC088 -:101E200010922B0210922C0210922D0210922E0270 -:101E30004AE0469F9001479F300D1124C90168EB8D -:101E40007BE00E944D2CBC016C5D754077FF03C0A8 -:101E5000719561957109882777FD8095982F0E946B -:101E600083292EE333EC4EE259E30E94932A20E0CB -:101E700030E040EC5EE30E9480286093060170939E -:101E80000701809308019093090189C010922B02E9 -:101E900010922C0210922D0210922E02CE0183700D -:101EA0009927892BE1F0BE016170772780E090E0EF -:101EB0000E94812920E030E040E05EE30E94932A06 -:101EC00020E030E040E45FE30E9480286093060158 -:101ED0007093070180930801909309010CC080E082 -:101EE00090E0A0E0BFE38093060190930701A093E8 -:101EF0000801B0930901C770DD27CD2B09F04FC051 -:101F00001092060110920701109208011092090127 -:101F100046C010922B0210922C0210922D021092A9 -:101F20002E0200E010E020E03FE300930601109352 -:101F3000070120930801309309016739710578F191 -:101F400080E090E00E94812920E030E047E153E406 -:101F50000E947F2820E030E04AE754E40E94E8280D -:101F600020E030E048E452E40E94932A20E030E090 -:101F700040EA51E40E94C5290E945029660F771F4C -:101F8000660F771FFB01EE5AFE4F2081318142819F -:101F90005381C701B6010E94932A6B017C01C701DE -:101FA000B601DF91CF911F910F91FF90EF90DF90DD -:101FB000CF90BF90AF909F908F90089580918C02AA -:101FC0000895CF93DF9300D01F92CDB7DEB79C0169 -:101FD00080911303843019F593E099833B832A831E -:101FE0009093E9008FEF9091E800815095FD06C035 -:101FF00095ED9A95F1F700008111F5CF8091E800F9 -:1020000085FF0DC040E050E063E070E0CE01019636 -:102010000E9442128091E8008E778093E8000F9032 -:102020000F900F90DF91CF910895CF93DF9300D061 -:102030001F92CDB7DEB720911303243021F522E0A3 -:1020400029839B838A8383E08093E9008FEF9091BB -:10205000E800815095FD06C095ED9A95F1F70000D6 -:102060008111F5CF8091E80085FF0DC040E050E080 -:1020700063E070E0CE0101960E9442128091E80078 -:102080008E778093E8000F900F900F90DF91CF91A3 -:102090000895209113032430F1F422E02093E90005 -:1020A0002FEF3091E800215035FD06C035ED3A950F -:1020B000F1F700002111F5CF2091E80025FF0BC0BA -:1020C00040E050E065E070E00E9442128091E8003C -:1020D0008E778093E8000895CF93DF93EC01909181 -:1020E0001303943009F046C0809115018823D9F07C -:1020F000809116018823B9F09093E9008FEF9091B9 -:10210000E800815095FD06C095E19A95F1F7000031 -:102110008111F5CF8091E80085FF2CC040E050E0B0 -:1021200060E170E017C081E08093E9008FEF90914B -:10213000E800815095FD06C095ED9A95F1F70000F5 -:102140008111F5CF8091E80085FF14C040E050E098 -:1021500068E070E0CE010E9442128091E8008E7724 -:102160008093E80080E1FE01ACE7B2E001900D92BF -:102170008A95E1F7DF91CF91089580911203811143 -:1021800009C00E94D7130E9434148091E200846039 -:102190008093E2000895109212030895089508951F -:1021A0000C947B2242E061EC81E00E94511342E0FA -:1021B00061EC82E00E94511342E061EC83E00E94F6 -:1021C000511342E161EC84E00C94511380911503AA -:1021D000833009F455C030F4813071F0823009F455 -:1021E0008EC008958A3009F47AC08B3009F460C03B -:1021F000893009F09CC020C080911403813A09F015 -:1022000096C08091E800877F8093E8008091180352 -:1022100090911903892B21F460E18CE792E003C0CF -:1022200060E080E090E070E00E948D128091E80014 -:102230008B778093E800089580911403813209F030 -:1022400076C08091180390911903009719F00397B5 -:1022500009F06DC08091E800877F8093E80080914D -:10226000E80082FD05C0809113038111F8CF5FC0A3 -:102270008091F10080938C028091E8008B7753C0AD -:1022800080911403813A09F052C080911803909113 -:102290001903892B09F04BC08091E800877F809358 -:1022A000E8008091E80080FFFCCF8091150136C0E6 -:1022B000809114038132D9F580911803909119030C -:1022C000892BA9F58091E800877F8093E8000E9420 -:1022D000861380911603809315010C94BC1B80918A -:1022E0001403813221F58091E800877F8093E80014 -:1022F0000E9486138091170380938D020895809128 -:102300001403813AA1F48091E800877F8093E8006C -:102310008091E80080FFFCCF80918D028093F100D6 -:102320008091E8008E778093E8000C9486130895DE -:1023300084B7877F84BF88E10FB6F89480936000EC -:10234000109260000FBE90E080E80FB6F894809382 -:102350006100909361000FBE0E9429170E94D7135D -:102360000E9434148091E20084608093E2007894AB -:102370000E94BA160E942B178BE091E00E94D5169E -:1023800080911303853069F40E943C2280911103EF -:102390008823B1F30E946A22882391F30E942C12B1 -:1023A000EFCF0E943317ECCF292F3327233031058D -:1023B000C9F064F42130310581F02230310509F093 -:1023C00043C08DE690E028E433E042C0213231057D -:1023D000F1F02232310541F137C082E190E025EB86 -:1023E00033E036C099278130910541F08230910564 -:1023F00041F0892B49F5E4E4F3E005C0E6E1F3E0C0 -:1024000002C0ECEEF2E0849190E09F0121C06430C4 -:10241000D8F4E62FF0E0EE0FFF1FE255FE4F2081CB -:10242000318189E090E014C0643070F470E0FB0109 -:10243000EE0FFF1FEA55FE4F20813181FB01EE5563 -:10244000FE4F808190E004C080E090E020E030E02A -:10245000FA0131832083089580E189BD82E189BD3D -:1024600009B400FEFDCF8091D8008F7D8093D80005 -:102470008091E00082608093E0008091E00081FD27 -:10248000FCCF0895CF92DF92EF92FF920F931F93AC -:10249000CF93DF93EC018B016A010E94A513811198 -:1024A00033C0C114D10439F0F60180819181081B39 -:1024B000190BC80FD91FE12CF12C0115110519F1C9 -:1024C0008091E80085FD16C08091E8008E778093AA -:1024D000E800C114D10449F0F60180819181E80E31 -:1024E000F91EF182E08285E00FC00E94A5138823C7 -:1024F00021F30AC089918093F10001501109FFEF87 -:10250000EF1AFF0ADACF80E0DF91CF911F910F9190 -:10251000FF90EF90DF90CF90089520911A033091B3 -:102520001B032617370748F06115710539F4209110 -:10253000E8002E772093E80001C0B90140E0611562 -:102540007105A9F120911303222309F443C025301A -:1025500009F442C02091E80023FD40C02091E8002A -:1025600022FD32C02091E80020FFE9CF4091F30026 -:102570002091F20030E0342BFC01CF016115710590 -:1025800059F02830310540F481918093F100615079 -:1025900071092F5F3F4FF1CF41E02830310509F03D -:1025A00040E02091E8002E772093E800C8CF411149 -:1025B000C9CF0AC080911303882361F0853061F090 -:1025C0008091E80083FD0AC08091E80082FFF2CF8D -:1025D00080E0089582E0089583E0089581E0089501 -:1025E00020911A0330911B032617370748F0611515 -:1025F000710539F42091E8002E772093E80001C09E -:10260000B901FC0120E06115710591F1809113037E -:10261000882309F440C0853009F43FC08091E80068 -:1026200083FD3DC08091E80082FD2FC08091E800CD -:1026300080FFE9CF2091F3008091F20090E0922B8F -:102640006115710559F08830910540F4249120936B -:10265000F1003196615071090196F2CF21E008979F -:1026600009F020E08091E8008E778093E800CBCFDE -:102670002111CCCF0AC080911303882361F08530EB -:1026800061F08091E80083FD0AC08091E80082FF3C -:10269000F2CF80E0089582E0089583E0089581E01C -:1026A0000895982F973058F59093E900981739F0CE -:1026B0007091EC002091ED005091F00003C0242FA8 -:1026C000762F50E021FF19C03091EB003E7F309310 -:1026D000EB003091ED003D7F3093ED003091EB0049 -:1026E00031603093EB007093EC002093ED00509339 -:1026F000F0002091EE0027FF07C09F5FD3CF8F70BF -:102700008093E90081E0089580E0089580911403AA -:1027100087FF11C08091E80082FD05C080911303FE -:102720008111F8CF11C08091E8008B770BC08091A8 -:102730001303882349F08091E80080FFF8CF80914F -:10274000E8008E778093E80008952091E4003091AE -:10275000E50095E64091EC00842F817040FF22C097 -:102760008091E80080FD1CC080911303882391F0C4 -:10277000853091F08091EB0085FD10C04091E40020 -:102780005091E5004217530729F39A01915011F730 -:1027900084E0089582E0089583E0089581E008953B -:1027A00080E008954091E80042FFDECF08950E9446 -:1027B00045140E944D14E0EEF0E08081816080833A -:1027C000E8EDF0E080818F77808319BCA7EDB0E061 -:1027D0008C918E7F8C9380818F7E808310921203E8 -:1027E00008950F931F93CF93DF930E9445140E9487 -:1027F0004D14C8EDD0E088818F7788838881806808 -:10280000888388818F7D888319BC1092130310926E -:102810000F03109211031092100300EE10E0F80164 -:1028200080818B7F808388818160888342E060E043 -:1028300080E00E945113E1EEF0E080818E7F808382 -:10284000E2EEF0E080818160808380818860808317 -:10285000F80180818E7F8083888180618883DF9109 -:10286000CF911F910F910895E8EDF0E080818F7E68 -:102870008083E7EDF0E080818160808384E082BF27 -:1028800081E0809312030C94F113E8EDF0E0808175 -:102890008E7F80831092E20008951092DA001092E9 -:1028A000E10008951F920F920FB60F9211242F93FB -:1028B0003F934F935F936F937F938F939F93AF93C8 -:1028C000BF93EF93FF938091E10082FF0BC0809153 -:1028D000E20082FF07C08091E1008B7F8093E100DE -:1028E0000E94B9168091DA0080FF1FC08091D80045 -:1028F00080FF1BC08091DA008E7F8093DA00809188 -:10290000D90080FF0DC080E189BD82E189BD09B495 -:1029100000FEFDCF81E0809313030E94BD1005C02F -:1029200019BC109213030E94CB108091E10080FF2C -:1029300019C08091E20080FF15C08091E2008E7F77 -:102940008093E2008091E20080618093E2008091B8 -:10295000D80080628093D80019BC85E0809313036F -:102960000E94CF108091E10084FF30C08091E2008E -:1029700084FF2CC080E189BD82E189BD09B400FEDD -:10298000FDCF8091D8008F7D8093D8008091E100A9 -:102990008F7E8093E1008091E2008F7E8093E20041 -:1029A0008091E20081608093E20080910F03882390 -:1029B00011F084E007C08091E30087FD02C081E050 -:1029C00001C083E0809313030E94D0108091E10046 -:1029D00083FF29C08091E20083FF25C08091E10040 -:1029E000877F8093E10082E08093130310920F03AE -:1029F0008091E1008E7F8093E1008091E2008E7FE4 -:102A00008093E2008091E20080618093E20042E0E6 -:102A100060E080E00E9451138091F0008860809314 -:102A2000F0000E94CE10FF91EF91BF91AF919F9166 -:102A30008F917F916F915F914F913F912F910F9067 -:102A40000FBE0F901F9018951F920F920FB60F9206 -:102A500011242F933F934F935F936F937F938F93A3 -:102A60009F93AF93BF93CF93DF93EF93FF93C09167 -:102A7000E900CF708091EC00D82FD17080FDD0E8B4 -:102A80001092E9008091F000877F8093F0007894A5 -:102A90000E9468151092E9008091F0008860809390 -:102AA000F000CD2BCF70C093E900FF91EF91DF9143 -:102AB000CF91BF91AF919F918F917F916F915F91D6 -:102AC0004F913F912F910F900FBE0F901F9018952F -:102AD0001F93CF93DF93CDB7DEB7AA970FB6F894C5 -:102AE000DEBF0FBECDBFE4E1F3E088E08E0F909132 -:102AF000F10091938E13FBCF0E94E6108091E800C5 -:102B000083FF1FC18091140390911503492F50E05A -:102B10004A30510508F015C1FA01EA5AFF4F0C94EA -:102B2000752C803881F0823809F00BC18091180330 -:102B30008F708093E9008091EB0085FB882780F9F6 -:102B40001092E90006C08091100390911103911139 -:102B500082609091E800977F9093E8008093F10065 -:102B60001092F100C8C0282F2D7F09F0EAC08823F9 -:102B700019F0823061F0E5C080911603813009F0D0 -:102B8000E0C0933009F080E0809311032BC0809166 -:102B90001603811127C0809118038F7009F4D1C0EA -:102BA0008093E9002091EB0020FF1CC0933021F4BA -:102BB0008091EB00806214C09091EB009061909343 -:102BC000EB0021E030E0A90102C0440F551F8A95B7 -:102BD000E2F74093EA001092EA008091EB008860EF -:102BE0008093EB001092E9008091E800877F86C017 -:102BF0008111A7C0109116031F778091E3008078A0 -:102C0000812B8093E3008091E800877F8093E80028 -:102C10000E9486138091E80080FFFCCF8091E30042 -:102C200080688093E300111102C082E001C083E05C -:102C30008093130386C08058823008F082C0809150 -:102C40001603909117038C3D53E0950779F583E0C7 -:102C50008A838AE289834FB7F894DE01139620E0D5 -:102C60003EE051E2E32FF0E050935700E49120FF63 -:102C700003C0E295EF703F5FEF708E2F90E0EA3077 -:102C800010F0C79601C0C0968D939D932F5F24319D -:102C900049F74FBF8091E800877F8093E8006AE2A0 -:102CA00070E0CE0101960E948D1214C0AE014F5FFC -:102CB0005F4F609118030E94D411BC01009709F482 -:102CC00040C09091E800977F9093E80089819A81B5 -:102CD0000E94F0128091E8008B778093E80031C069 -:102CE000803879F58091E800877F8093E8008091B3 -:102CF0000F038093F1008091E8008E778093E800C5 -:102D00000E9486131EC081111CC090911603923040 -:102D1000C0F48091E800877F8093E80090930F03D0 -:102D20000E94861380910F03811106C08091E300F9 -:102D300087FD02C081E001C084E0809313030E94FC -:102D4000D2108091E80083FF0AC08091E800877F5D -:102D50008093E8008091EB0080628093EB00AA965C -:102D60000FB6F894DEBF0FBECDBFDF91CF911F919C -:102D700008950895CF93809113038823A1F0C09103 -:102D8000E900CF709091EC00892F817090FD80E870 -:102D9000C82B1092E9008091E80083FD0E9468151D -:102DA000CF70C093E900CF910895909393028093E0 -:102DB00092020895E0919202F0919302309721F0EF -:102DC0000190F081E02D099480E00895E091920255 -:102DD000F0919302309721F00280F381E02D099465 -:102DE0000895E0919202F0919302309721F00480CF -:102DF000F581E02D0994089520919002309191027F -:102E00008217930771F09093910280939002E09162 -:102E10009202F0919302309721F00680F781E02D25 -:102E20000994089520918E0230918F0282179307A2 -:102E300071F090938F0280938E02E0919202F09154 -:102E40009302309721F00084F185E02D09940895D4 -:102E500008950C9428170E94AF220E9400090E9436 -:102E600035230C94E4275F926F927F928F929F920A -:102E7000AF92BF92CF92DF92EF92FF920F931F9388 -:102E8000CF93DF9300D000D01F92CDB7DEB70E9462 -:102E900045099DE9C92E92E0D92E03E010E0AA244D -:102EA000A394B12C502E802F0E94C0094C01F60132 -:102EB000729062906F016826792661147104A1F402 -:102EC0000150110978F78FEF89838A831B820E9452 -:102ED000B8228160782F9D838C8349815A816B81D0 -:102EE0008D810E94E31738C08091F20281FD0E941B -:102EF000C9092BE030E07501022E02C0EE0CFF1C68 -:102F00000A94E2F7C70186219721892B09F12983C9 -:102F10005A828E209F2091E0892809F490E09B83BB -:102F20000E94B8228160782F9D838C8349815A81C9 -:102F30006B818D810E94E317000F111FF801EB5682 -:102F4000FD4F80819181E826F926F182E08204C05C -:102F50002150310980F6B4CF0E941C2510919402B3 -:102F60000E94DA161817D1F00E94DA1680939402A4 -:102F70000F900F900F900F900F90DF91CF911F91B6 -:102F80000F91FF90EF90DF90CF90BF90AF909F9008 -:102F90008F907F906F905F900C94EA080F900F9045 -:102FA0000F900F900F90DF91CF911F910F91FF9095 -:102FB000EF90DF90CF90BF90AF909F908F907F90D9 -:102FC0006F905F900895CF93DF93CDB7DEB72B97C7 -:102FD0000FB6F894DEBF0FBECDBF4F835887698709 -:102FE0007A878B87DE01119686E0FD0111928A9522 -:102FF000E9F785E0FE01379601900D928A95E1F799 -:1030000049815A816B817C818D819E810E945A1EEB -:103010002B960FB6F894DEBF0FBECDBFDF91CF91D8 -:103020000895CF93882309F4C2C0C82F823859F479 -:103030000E94DA1681FDBBC089E30E9434210E9400 -:10304000012289E30CC0833879F40E94DA1680FDEE -:10305000AEC083E50E9434210E94012283E50E94D4 -:103060007621CF910C940122843859F40E94DA160B -:1030700082FD9DC087E40E9434210E94012287E4E2 -:10308000EECF8CEF8C0F813A48F48C2F0E944C27A6 -:1030900081118DC08C2F0E943421E3CF80E28C0FF0 -:1030A000883048F4C77081E001C0880FCA95EAF7FC -:1030B0000E94BA21D6CF8BE58C0F833078F4C53AC5 -:1030C00029F0C63A31F083E890E005C081E890E04D -:1030D00002C082E890E0CF910C94FC1688E58C0F3A -:1030E000833108F064C0C83A39F1C93A41F1CA3AAB -:1030F00049F1CB3A51F1CC3A59F1CD3A61F1C03BAB -:1031000069F1CE3A71F1CF3A79F1C13B81F1C23B1D -:1031100089F1C33B91F1C43B99F1C53BA1F1C63B99 -:10312000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BF9 -:10313000C9F180E090E038C082EE90E035C089EEC1 -:1031400090E032C08AEE90E02FC085EB90E02CC07A -:1031500086EB90E029C087EB90E026C08CEC90E0F5 -:1031600023C08DEC90E020C083E891E01DC08AE888 -:1031700091E01AC082E991E017C084E991E014C09F -:1031800081E292E011C083E292E00EC084E292E01C -:103190000BC085E292E008C086E292E005C087E2BB -:1031A00092E002C08AE292E0CF910C941217CF9184 -:1031B0000895882309F44BC0823859F40E94DA1626 -:1031C00081FF45C089E30E9434210E94012289E3E6 -:1031D0000CC0833871F40E94DA1680FF38C083E592 -:1031E0000E9434210E94012283E50E9476210C94E2 -:1031F0000122843859F40E94DA1682FF28C087E43D -:103200000E9434210E94012287E4EFCF9CEF980FA7 -:10321000913A58F390E2980F983050F4877091E00B -:1032200001C0990F8A95EAF7892F0E94C021DFCF4C -:103230009BE5980F933020F480E090E00C94FC160E -:10324000885A833120F480E090E00C94121708959E -:10325000882321F00E94BA210C940122089588232A -:1032600021F00E94C0210C94012208957F928F9238 -:103270009F92AF92BF92CF92DF92EF92FF920F9305 -:103280001F93CF93DF931F92CDB7DEB77C01C62E7D -:10329000772EFC01058102950F70128111110E9499 -:1032A000D7210E942D21882379F0112369F080E233 -:1032B0008C0D883048F082E00E9416210E942D215A -:1032C00091E0D82ED92601C0D12CE72DE295EF70E0 -:1032D000F0E0E05AFF4F0C94752C872D807F072D6E -:1032E0000F70882311F00295007F112389F00023CD -:1032F00009F499C180E28C0D883020F4802F0E945F -:10330000BA2103C0802F0E94CA210E9401228BC1D2 -:103310008C2D0E94D918002309F4C3C180E28C0DC2 -:10332000883020F4802F0E94C02103C0802F0E948B -:10333000D0210E940122B5C1872D807F972D9F70DB -:10334000803211F4892F03C0892F8295807FCC2091 -:1033500021F0F1E0CF16A1F01DC0112339F00023B8 -:1033600019F1013009F50E94EA219BC1002319F0EF -:10337000013009F496C189830E94ED21898110C131 -:10338000112321F0063008F08CC10EC0053008F082 -:1033900088C106C1112359F0002331F0F70195814E -:1033A00090FF41C19F7095830E9428197AC1002324 -:1033B00009F4F6C03EC1872D86958695837090E00E -:1033C000009719F0019761F06CC1112321F08C2D49 -:1033D000972D937002C080E090E00E94FC1661C1BE -:1033E000112321F08C2D972D937002C080E090E086 -:1033F0000E94121756C18C2D112319F00E9424240B -:1034000002C00E948C240E9411254BC1872D83701D -:1034100009F052C0111145C18C2D82958695877097 -:10342000880F880F9C2D9F70892E912CA12CB12C78 -:10343000082E04C0880C991CAA1CBB1C0A94D2F745 -:10344000C4FE14C00FE010E020E030E0B901A80194 -:1034500004C0440F551F661F771F8A95D2F7CB0112 -:10346000BA01609570958095909503C060E070E01A -:10347000CB01272D26952695237030E0223031058B -:1034800069F02330310589F0682979298A299B2937 -:103490002130310571F00E94A21F03C168297929EA -:1034A0008A299B290E94BE1FFCC00E94A21FC50141 -:1034B000B4010E94861FF5C0112319F0872D817079 -:1034C00001C08695882309F4ECC08C2D82958695E1 -:1034D0008770880F880F9C2D9F70892E912CA12CAE -:1034E000B12C082E04C0880C991CAA1CBB1C0A9481 -:1034F000D2F7C4FE14C00FE010E020E030E0B901C4 -:10350000A80104C0440F551F661F771F8A95D2F784 -:10351000CB01BA01609570958095909503C060E0ED -:1035200070E0CB01272D269526952370422F50E081 -:103530004230510569F04330510589F068297929F5 -:103540008A299B294130510571F00E947C20A9C035 -:10355000682979298A299B290E949820A2C00E9463 -:103560007C20C501B4010E9460209BC08C2D90E09E -:10357000FC01E05EF109E531F10508F050C0E059C9 -:10358000FF4F0C94752C0C2D0F70872D8F7111230C -:1035900021F00E94F91F802F07CF0E941A20802F50 -:1035A0000E942F197EC0112341F0053008F079C028 -:1035B000872D8F710E943F2074C0063008F071C0C3 -:1035C000F7CF112339F0872D8F710E94F91F69C041 -:1035D0001123C9F3872D8F710E941A2062C0112315 -:1035E00029F0872D8F710E94E41F5BC00E94DA1FB3 -:1035F00058C0112351F0172D1F71812F0E94F91F00 -:1036000063E0812F0E940D214CC081E00E941621B1 -:10361000023008F446C082E00E94162142C0112305 -:1036200031F0002381F28C2D0E9411183AC0002342 -:1036300089F28C2D0E94D91834C0472D4F706C2D03 -:10364000C7010E9455030E94FE1E2BC0111129C004 -:10365000472D4F7050E042305105B9F04CF4411500 -:10366000510581F041305105E1F40E940C2819C048 -:103670004330510569F04430510599F48C2D0E9476 -:103680005E280FC00E94F5270CC00E94282809C0A0 -:103690000E943B2806C0472D4F706C2DC7010E9429 -:1036A000CB05DD20F9F00E94092180FD1BC0F70148 -:1036B00012820E9403210E94F91FC7010E94811BF0 -:1036C0000E9403210F90DF91CF911F910F91FF90E6 -:1036D000EF90DF90CF90BF90AF909F908F907F90B2 -:1036E0000C941A200F90DF91CF911F910F91FF90B2 -:1036F000EF90DF90CF90BF90AF909F908F907F9092 -:1037000008950F931F93CF93DF93EC0188819981E4 -:103710002B813C81232BB9F09F3F11F48F3F99F00F -:10372000CE010E94CA03882371F0688179818A8161 -:103730000E94FF208C010E94B4200E947B1FB801D0 -:10374000CE010E943619DF91CF911F910F910895FC -:103750000E94D7210E94E7210E94AC210E940122F1 -:103760000E94C2250E94112580E090E00E94FC1674 -:1037700080E090E00C9412170E94C7210C94A81BC3 -:103780000E94F420292F22952F7030E02C30310533 -:103790004CF42A3031056CF42250310922303105C5 -:1037A000A8F407C02C30310569F02F30310551F0F5 -:1037B0000DC0803F69F018F4803E40F409C0843F9A -:1037C00029F406C093FB882780F9089580E00895C6 -:1037D00081E00895CF93DF9300D000D01F92CDB742 -:1037E000DEB70F900F900F900F900F90DF91CF9159 -:1037F0000895CF93DF9300D000D000D0CDB7DEB7CF -:1038000026960FB6F894DEBF0FBECDBFDF91CF91E5 -:1038100008951F93CF93DF93C0919D0216E080918E -:103820009E02C81799F0D0E01C9FF0011D9FF00D7B -:103830001124E156FD4F4081518162817381848161 -:1038400095810E94F91B2196C770E9CFDF91CF9136 -:103850001F9108954091CF025091D0026091D10202 -:103860007091D2028091D3029091D4020C94F91BF2 -:103870008091D40282958F7009F054C08091D1025A -:10388000882309F44FC080919D02A0919E0260910F -:10389000CF027091D0024091D2025091D302B6E093 -:1038A0008A1709F43FC090E041155105C1F17F3FEF -:1038B00011F46F3FA1F1B89FF001B99FF00D1124F1 -:1038C000E156FD4F218172132AC02081621327C067 -:1038D0002281211124C0238134812417350710F45B -:1038E00021503109241B350B283C3105C0F42091AF -:1038F000D4022F7020612093D40226E0289FF0018B -:10390000299FF00D1124EC55FD4F80818F7080614F -:1039100080838FEC92E00E94811B0C94091C01961D -:103920008770BECF0895CF92DF92EF92FF920F93F0 -:103930001F93CF93DF93CDB7DEB762970FB6F8949E -:10394000DEBF0FBECDBF8C0185E0F801DE011D9604 -:1039500001900D928A95E1F7D8014C9111965C91F6 -:10396000119712966C9112971396CD90DC90149744 -:103970003091CF027091D0028091D2029091D30207 -:10398000009709F46BC17F3F19F43F3F09F466C10A -:10399000E090D102EE2009F4C0C02091D402C816F4 -:1039A000D90628F0F601E81BF90BCF0104C0809579 -:1039B00090958C0D9D1DFF24F394883C910578F023 -:1039C000F12C207F09F0C6C07C2DD98AC88A89894C -:1039D0000E94EA1B8FEC92E00E94811BB1C0822FF3 -:1039E000807F09F046C0751314C0341312C06111F2 -:1039F00010C02F7020612093D4020E942A1C8FECEB -:103A000092E00E94811B8091D402D80115968C937C -:103A10002EC0CD2819F15F3F11F44F3FF9F0F62E7B -:103A200061111CC080919D0220919E0236E0821798 -:103A300009F45AC090E0389FF001399FF00D11242D -:103A4000E156FD4F7181571306C07081471303C0C3 -:103A50007281711103C001968770E9CFF62E66233B -:103A600009F418C18091D40281608093D402F12CB2 -:103A700011C1751308C0341306C0611104C08091D0 -:103A8000D402D801C3C04D875E878D859E856A8B21 -:103A90000E94C01B6A898823E1F16623D1F120913D -:103AA000D402822F82958F7090E0029774F08091FB -:103AB000CF029091D00298878F831986DB86CA86C1 -:103AC0002C87CE0107960E94811B86E0F801AFEC9F -:103AD000B2E001900D928A95E1F70E94381C0E9495 -:103AE0002A1CFF24F394D6C04D875E878D859E8562 -:103AF0000E94F420292F22952F7030E022303105CA -:103B00000CF0BCC09F7009F0B6C0805E883008F42D -:103B1000C1C0C8010E94811BE4CFC816D90608F4B1 -:103B200053C0F601E81BF90BCF01883C910508F45E -:103B300050C0F12C7C2DD98AC88A89890E94EA1B41 -:103B4000EFECF2E086E0DF011D928A95E9F70E9432 -:103B50002A1CA0C0751314C0341312C0611110C008 -:103B60008091D402F8018583C8010E94811B86E000 -:103B7000EFECF2E0DF011D928A95E9F7FE2C8AC096 -:103B80004D875E878D859E856A8B0E94C01B6A89E2 -:103B9000882309F4BECF662309F4BBCF2091D40259 -:103BA000822F82958F7090E002970CF48ECF8091D7 -:103BB000CF029091D0029A8389831B82DD82CC82CE -:103BC0002E83CE0101967FCF809590958C0D9D1D03 -:103BD000ACCFF62E662309F49CCF75132EC0341398 -:103BE0002CC02091D40220FD1FC0822F82958F709F -:103BF000D9F0D80115962C9315978F3049F08F5F27 -:103C0000982F9295907F822F8F70892B15968C9389 -:103C1000C8010E94811B86E0F801AFECB2E0019080 -:103C20000D928A95E1F793CF86E0F801AFECB2E010 -:103C300001900D928A95E1F72DC04D875E878D85A5 -:103C40009E850E94C01B811140CF8091D40281606B -:103C50008093D402C8010E94811B1CC0662309F412 -:103C600058CF4D875E878D859E850E94C01B882317 -:103C700009F44FCF2ACF811148CF0CC02430310531 -:103C80000CF047CF9F7009F440CFF8019581907FE9 -:103C900009F03BCF8F2D62960FB6F894DEBF0FBEB2 -:103CA000CDBFDF91CF911F910F91FF90EF90DF90EB -:103CB000CF9008951F93CF93DF93CDB7DEB72C97A6 -:103CC0000FB6F894DEBF0FBECDBF4F83588769870C -:103CD0007A878B879C87CE0107960E94931C882346 -:103CE00069F08F8198852A853B85232BF1F19F3FD1 -:103CF00009F063C08F3F09F060C037C086E0FE0165 -:103D00003796DE01119601900D928A95E1F76F8149 -:103D10007885EA85FB85309741F17F3F11F46F3F4D -:103D200021F120919E0230E0C90101968770992708 -:103D300040919D0250E08417950709F447C06983BC -:103D40007A83FD83EC8396E0929FD001939FB00D20 -:103D50001124A156BD4FFE01319601900D929A9506 -:103D6000E1F780939E020E94091C16E080919D025B -:103D700090919E028917C1F1189FC00111248156AC -:103D80009D4F0E94931C882379F1E0919D021E9F14 -:103D9000F0011124E156FD4F408151816281738110 -:103DA000848195810E94F91B80919D0290E001968B -:103DB0008770992780939D02D9CF4F815885698557 -:103DC0007A858B859C850E94F91BCFCF0E94BC1BF6 -:103DD00010929E0210929D02EFECF2E086E0DF016D -:103DE0001D928A95E9F7C1CF2C960FB6F894DEBFE5 -:103DF0000FBECDBFDF91CF911F910895EF92FF923B -:103E00000F931F93CF93DF938C01009709F46CC03D -:103E1000F12CEE24E394E8012196F8018491843793 -:103E200040F4843008F051C0813081F0823019F1C3 -:103E30005BC0853709F444C0A8F19CE7980F903720 -:103E400008F052C08F770E94D91841C00E5F1F4FF3 -:103E5000FE01C49180E28C0F883048F4C7708E2D2B -:103E600001C0880FCA95EAF70E94DA2114C08C2F8E -:103E70000E9411182DC00E5F1F4FFE01C49180E2F9 -:103E80008C0F883058F4C7708E2D01C0880FCA95EA -:103E9000EAF70E94E0210E9401221AC08C2F0E94A2 -:103EA000D91816C00E5F1F4FFE01C491CC2381F0BC -:103EB0008FE99FE00197F1F700C00000C150F6CFF5 -:103EC0000E5F1F4FFE01F49003C00E9411188E0177 -:103ED0008F2D882309F49FCFEFE9FFE03197F1F7A9 -:103EE00000C000008150F5CFDF91CF911F910F915D -:103EF000FF90EF90089508956093D9027093DA02CD -:103F00008093DB029093DC020C94A81B0F931F9309 -:103F10000091D9021091DA022091DB023091DC028B -:103F2000DC01CB01802B912BA22BB32B8093D902E8 -:103F30009093DA02A093DB02B093DC021F910F9101 -:103F40000C94A81B0F931F930091D9021091DA02D1 -:103F50002091DB023091DC02DC01CB018023912334 -:103F6000A223B3238093D9029093DA02A093DB02B9 -:103F7000B093DC021F910F910C94A81B0F931F9319 -:103F80000091D9021091DA022091DB023091DC021B -:103F9000DC01CB0180279127A227B3278093D90288 -:103FA0009093DA02A093DB02B093DC021F910F9191 -:103FB0000C94A81B1092D5021092D6021092D70230 -:103FC0001092D8020C94A81B41E050E060E070E031 -:103FD00004C0440F551F661F771F8A95D2F7409380 -:103FE000D5025093D6026093D7027093D8020C94F6 -:103FF000A81B41E050E060E070E004C0440F551F92 -:10400000661F771F8A95D2F78091D5029091D602CC -:10401000A091D702B091D802482B592B6A2B7B2B49 -:104020004093D5025093D6026093D7027093D80282 -:104030000C94A81B41E050E060E070E004C0440F25 -:10404000551F661F771F8A95D2F74095509560954A -:1040500070958091D5029091D602A091D702B0912F -:10406000D802482359236A237B234093D5025093D7 -:10407000D6026093D7027093D8020C94A81B41E03B -:1040800050E060E070E004C0440F551F661F771FCA -:104090008A95D2F78091D5029091D602A091D7024D -:1040A000B091D802482759276A277B274093D50229 -:1040B0005093D6026093D7027093D8020C94A81B39 -:1040C0000F931F930091D5021091D6022091D70231 -:1040D0003091D802DC01CB01802B912BA22BB32B8A -:1040E0008093D5029093D602A093D702B093D802C2 -:1040F0001F910F910C94A81B0F931F930091D50251 -:104100001091D6022091D7023091D802DC01CB0168 -:1041100080239123A223B3238093D5029093D602C8 -:10412000A093D702B093D8021F910F910C94A81BB3 -:104130000F931F930091D5021091D6022091D702C0 -:104140003091D802DC01CB0180279127A227B32729 -:104150008093D5029093D602A093D702B093D80251 -:104160001F910F910C94A81B0895CF92DF92EF92AC -:10417000FF920F931F93CF93DF938C01C090D902CE -:10418000D090DA02E090DB02F090DC028091D50260 -:104190009091D602A091D702B091D802C82AD92A0C -:1041A000EA2AFB2ACFE1D0E0D701C6010C2E04C0D9 -:1041B000B695A795979587950A94D2F780FF06C084 -:1041C000B8018C2F0E945008019721F4219760F7C5 -:1041D00080E001C08C2FDF91CF911F910F91FF9054 -:1041E000EF90DF90CF900895CF93DF93EC010E9482 -:1041F000B520BE010E945008DF91CF910895CB01F8 -:104200000E94F42008958091DD028595859585951D -:1042100008958091DD028770089598E0899F90014C -:104220001124262B2093DD020C94F91F2091DD022E -:10423000809582238093DD02982F977069F430E097 -:10424000482F552747FD50952417350729F08595A8 -:10425000859585950C941A2008959091DD029770AC -:1042600081E009F480E0089590911501992321F0EF -:1042700090911601911109C02091170130911801F8 -:10428000F90132969FEF40E01FC0982F96959695C2 -:1042900096959F3050F5E0911701F0911801E90FC4 -:1042A000F11D877021E030E0A90102C0440F551FC5 -:1042B0008A95E2F7CA019181892B818308959F3FF6 -:1042C00039F04F5F4E3041F051915813F8CF0DC087 -:1042D0005111F7CF942FF5CF9F3F39F0F901E90F36 -:1042E000F11D97FDFA958283089508959091150127 -:1042F000992321F090911601911109C02091170185 -:1043000030911801F9013296205F3F4F1FC0982F5E -:104310009695969596959F30F0F4E0911701F0915F -:104320001801E90FF11D877021E030E0A90102C0FA -:10433000440F551F8A95E2F7CA0180959181892320 -:10434000818308953196E217F30729F0908198133D -:10435000F9CF1082F7CF089581E090E0E091170146 -:10436000F0911801E80FF91F108201968031910534 -:10437000A9F708959091F102892B8093F102089595 -:1043800080959091F10289238093F1020895109213 -:10439000F10208959091F002892B8093F002089524 -:1043A00080959091F00289238093F00208951092F5 -:1043B000F00208959091EF02892B8093EF02089507 -:1043C00080959091EF0289238093EF0208951092D7 -:1043D000EF0208958093DE0208951092DE020895A0 -:1043E0008091170190911801FC0131969C01205F8A -:1043F0003F4F80E0919191118F5FE217F307D1F762 -:104400000895E0911701F09118018091F1028083E5 -:10441000E0911701F091180190818091F002892BB1 -:104420008083E0911701F091180190818091EF0253 -:10443000892B80838091DE02882361F0E09117014F -:10444000F09118019081892B80830E94F0218111C5 -:104450001092DE0280911701909118010C94E616DB -:1044600020E0009739F0AC01415051098423952395 -:104470002F5FF7CF822F089580911303843039F195 -:104480001092F30220E488E190E00FB6F894A8952A -:10449000809360000FBE2093600080E00E94BC0209 -:1044A00080E00E94EA0883B7817F846083BF83B77E -:1044B000816083BF7894889583B78E7F83BF88E1BE -:1044C0000FB6F89480936000109260000FBE0895BC -:1044D0000895089580E00E94BC020E9468220E9414 -:1044E00045090E9469220E94CA0991E0811101C018 -:1044F00090E0892F08950E94BC1B80E00E94BC02BE -:104500000E94E4270E94DA160C94EA081F920F9288 -:104510000FB60F9211248F939F93AF93BF93809107 -:10452000F302811113C08091F4029091F502A091E1 -:10453000F602B091F7024196A11DB11D8093F402DD -:104540009093F502A093F602B093F702BF91AF915A -:104550009F918F910F900FBE0F901F90189582E042 -:1045600084BD93E095BD9AEF97BD80936E0008954A -:104570002FB7F8948091F4029091F502A091F60281 -:10458000B091F7022FBF0895CF92DF92EF92FF9282 -:104590000F931F932FB7F8944091F4025091F502B6 -:1045A0006091F6027091F7022FBF6A017B01EE2441 -:1045B000FF248C0120E030E0C016D106E206F306AD -:1045C00010F4415051099A01281B390BC9011F9160 -:1045D0000F91FF90EF90DF90CF9008951F920F9270 -:1045E0000FB60F9211248F939F93AF93BF93809137 -:1045F000F4029091F502A091F602B091F7020196B3 -:10460000A11DB11D8093F4029093F502A093F602D0 -:10461000B093F702BF91AF919F918F910F900FBE12 -:104620000F901F9018950E94D713F8942FEF87EAE8 -:1046300091E6215080409040E1F700C0000087E003 -:1046400090EBDC0180931E0390931F03A093200343 -:10465000B09321039CE088E10FB6F894A89580936D -:1046600060000FBE90936000FFCF0E947423811101 -:1046700002C00E9450230E947F238093F2020E9476 -:10468000872380931C0387FB882780F9809316017A -:104690000E948323682F70E080E090E00C947C1FE0 -:1046A0006DEE7EEF80E090E00E949B2C60E082E067 -:1046B00090E00E94892C60E083E090E00E94892CC9 -:1046C00060E084E090E00E94892C60E085E090E06A -:1046D0000E94892C60E086E090E00E94892C6FEFB8 -:1046E00087E090E00C94892C80E090E00E94832C7D -:1046F00021E08D3E9E4F09F020E0822F089582E058 -:1047000090E00C947B2C83E090E00C947B2C84E074 -:1047100090E00C947B2C682F84E090E00C94892C22 -:1047200086E090E00C947B2C682F86E090E00C945F -:10473000892C87E090E00C947B2C682F87E090E038 -:104740000C94892C8091FA0280FF0BC060911C01AF -:1047500085E0689FB00111247595679575956795FB -:104760002BC081FF09C060911C0185E0689FB001EA -:1047700011247595679520C082FF07C060911C01C8 -:1047800085E0689FB001112417C09091FB02992326 -:10479000D1F060911B01961788F720911C0185E0EC -:1047A000289F90011124929FA001939F500D1124E6 -:1047B00070E0CA010E94612C6038710540F46115F7 -:1047C000710539F002C065E070E0862F08958FE72B -:1047D000089581E008958091FA0280FF08C06091F9 -:1047E0001A0170E0759567957595679521C081FFF1 -:1047F00006C060911A0170E07595679519C082FF37 -:1048000004C060911A0170E010C09091FB029923DE -:10481000C1F0609119019617A0F780911A01899F44 -:10482000C001112470E00E94612C6038710528F4E9 -:104830006115710521F0862F08958FE7089581E0B5 -:10484000089561E070E0F4CF803F21F40E94A2233C -:10485000819504C0813F29F40E94A2238093FE0227 -:104860000895823F21F40E94A223819504C0833FD2 -:1048700029F40E94A2238093FD020895893F19F430 -:104880000E94EB2305C08A3F31F40E94EB238195FF -:104890008093FF0208958B3F21F40E94EB238195C2 -:1048A00004C08C3F29F40E94EB23809300030895F9 -:1048B000843F21F48091FC02816017C0853F21F480 -:1048C0008091FC02826011C0863F21F48091FC023D -:1048D00084600BC0873F21F48091FC02886005C092 -:1048E000883F31F48091FC0280618093FC0208953E -:1048F0008D3F21F48091FA0281600BC08E3F21F43C -:104900008091FA02826005C08F3F29F48091FA02FB -:1049100084608093FA020895803F39F48091FE020A -:1049200087FF6CC01092FE0269C0813F29F480911C -:10493000FE021816BCF362C09091FD02823F29F47A -:1049400097FF5CC01092FD0259C0833F19F41916FD -:10495000CCF354C0893F41F48091FF0218160CF04B -:104960004DC01092FF024AC08A3F29F48091FF0295 -:1049700087FF44C0F6CF8B3F39F48091000387FF57 -:104980003DC0109200033AC08C3F29F4809100038F -:104990001816BCF333C0843F21F48091FC028E7F53 -:1049A00017C0853F21F48091FC028D7F11C0863FA6 -:1049B00021F48091FC028B7F0BC0873F21F4809112 -:1049C000FC02877F05C0883F31F48091FC028F7E16 -:1049D0008093FC0213C08D3F21F48091FA028E7FF8 -:1049E0000BC08E3F21F48091FA028D7F05C08F3F6E -:1049F00029F48091FA028B7F8093FA028091FD0264 -:104A000081110EC08091FE0281110AC08091FF02C7 -:104A1000811106C080910003811102C01092FB0237 -:104A200008958CEF92E00E94F1160E94B8229093B4 -:104A3000F9028093F80208951F93CF93DF9380913A -:104A4000F8029091F9020E94C422AC019091FB02FD -:104A5000992321F020911D0130E006C020911E0114 -:104A60008AE0289F900111244217530708F486C05A -:104A70008091FD02C091FE02D091FF0210910003CF -:104A8000811107C0C11176C0D11174C0111172C05B -:104A900075C09F3F19F09F5F9093FB02181624F496 -:104AA0000E94A2238093FD028091FD0287FF05C032 -:104AB0000E94A22381958093FD021C1624F40E947B -:104AC000A2238093FE028091FE0287FF05C00E9410 -:104AD000A22381958093FE026091FD02662339F145 -:104AE000C091FE02CC2319F1772767FD7095872FBF -:104AF000972F0E94832923E333E343E35FE30E947C -:104B0000932A0E9450296093FD026C2F772767FD3E -:104B10007095872F972F0E94832923E333E343E384 -:104B20005FE30E94932A0E9450296093FE021D16A3 -:104B300024F40E94EB238093FF028091FF0287FF01 -:104B400005C00E94EB2381958093FF02111624F487 -:104B50000E94EB23809300038091000387FF05C030 -:104B60000E94EB23819580930003DF91CF911F91E9 -:104B70000C9411259F3F09F08ECF96CFDF91CF91F6 -:104B80001F910895ECEFF2E085E0DF011D928A9518 -:104B9000E9F71092FB021092FA020895833081F136 -:104BA00028F4813059F08230D1F00895853009F42D -:104BB00049C0B8F1863009F456C0089580911E01AD -:104BC000262F30E0280F311D2F3F310524F4680FC8 -:104BD00060931E0108958FEF80931E0108958091C8 -:104BE0001D01262F30E0280F311D2F3F310524F401 -:104BF000680F60931D0108958FEF80931D01089544 -:104C000080911C01262F30E0280F311D2F3F3105E8 -:104C100024F4680F60931C0108958FEF80931C01AA -:104C2000089580911B01262F30E0280F311D2F3F62 -:104C3000310524F4680F60931B0108958FEF809372 -:104C40001B01089580911A01262F30E0280F311D95 -:104C50002F3F310524F4680F60931A0108958FEFF8 -:104C600080931A01089580911901262F30E0280FB2 -:104C7000311D2F3F310524F4680F60931901089509 -:104C80008FEF809319010895833011F128F481305A -:104C900049F0823091F00895853081F120F186301D -:104CA000C1F1089580911E01681720F4861B80933E -:104CB0001E01089510921E01089580911D0168172C -:104CC00020F4861B80931D01089510921D01089504 -:104CD00080911C01681720F4861B80931C010895A5 -:104CE00010921C01089580911B01681720F4861B07 -:104CF00080931B01089510921B01089580911A0161 -:104D0000681720F4861B80931A01089510921A01E7 -:104D1000089580911901681720F4861B809319016A -:104D200008951092190108950F931F93873208F088 -:104D300048C08E3108F08DC0803109F477C008F585 -:104D4000873009F461C068F4863009F09DC0809115 -:104D5000F202817F8E7F8093F20281E080930203D2 -:104D600094C08B3009F489C08E3009F08DC08091D9 -:104D7000F20282FB222720F991E0922790FB82F930 -:104D80005EC0863109F479C060F4813109F07CC0DD -:104D90000E94BC1B9091160181E089278093160127 -:104DA0006CC0893109F469C08B3109F06DC0809104 -:104DB000F20281FB222720F991E0922790FB81F9F2 -:104DC0003EC0883309F459C050F4893209F457C001 -:104DD000853309F454C0873209F451C055C0833477 -:104DE00009F44DC028F48A3308F44EC0895332C008 -:104DF000883409F049C00E94BC1B0E94FA090E9435 -:104E0000C1030E94132339C09091F202892F80952B -:104E1000817080FB90F929F0966098609093F2027F -:104E200034C0997F977F9093F20227C08091F2025D -:104E300083FB222720F991E0922790FB83F980934E -:104E4000F2029923D1F08091F20281608093F20204 -:104E500014C08D5141E050E060E070E08A019B0198 -:104E600004C0000F111F221F331F8A95D2F7C901FA -:104E7000B8010E947C1F0E94BC1B81E006C061E05B -:104E800070E080E090E0F5CF80E01F910F910895F1 -:104E900080E0089580E00895CF93C82F80910203A9 -:104EA000813069F018F08230C9F184C0E0911701B7 -:104EB000F09118018081823209F07EC007C0E09134 -:104EC0001701F09118018081823261F48C2F0E94C9 -:104ED0004827811104C08C2F0E9494261DC081E0B8 -:104EE00090E01AC08C2F0E944A27811114C0C4314F -:104EF00079F048F4CB3079F0C03109F061C082E03C -:104F00008093020308C0C93219F0C83321F058C099 -:104F10001092020355C081E0817054C0C93291F1F2 -:104F200020F5C43179F1B0F4C73009F047C08EE103 -:104F300080931E0182E380931D018AE080931C010F -:104F400084E180931B0188E080931A0188E28093BA -:104F5000190134C0CE51C63088F5EC2FF0E0EA5488 -:104F6000FE4F80818093010329C0CE34E9F020F404 -:104F7000CB3421F56AE013C0C13579F0C235F1F4C4 -:104F800061E00DC080910103882319F010920103A4 -:104F900015C081E08093020315C061E006C08091D6 -:104FA00001030E94CE250AC06AE0809101030E949D -:104FB000442604C01092020380E004C081E002C0D5 -:104FC00080E0AACFCF9108950E947423811102C07E -:104FD0000E9450230E94902380931D0380FF02C0F3 -:104FE000869501C080E00C94BC0280911D03982F2F -:104FF0009695292F30E0233031054CF49F5F990FAF -:105000008170892B816080931D030E94942380917D -:105010001D0386950C94BC0280911D03982F9695D4 -:1050200091F09158990F8170892B80931D038E7F89 -:1050300091E009F490E080911D0390FB80F980934A -:105040001D030E94942380911D0386950C94BC023D -:1050500080911D03982F909590FB80F980931D03FC -:105060000E94942380911D0380FF02C0869501C099 -:1050700080E00C94BC0290911D03892F86958F5F70 -:105080008F779170843028F4880F892B80931D03CB -:1050900002C090931D0380911D038E7F91E009F45F -:1050A00090E080911D0390FB80F980931D030E9486 -:1050B000942380911D0386950C94BC0220911D03BE -:1050C000922F96958927982F990F822F8170892B7F -:1050D00080931D038E7F91E009F490E080911D0381 -:1050E00090FB80F980931D030E94942380911D03FF -:1050F00086950C94BC0280911D03869508955058A6 -:10510000BB27AA270ED0D1C1C2D130F0C7D120F021 -:1051100031F49F3F11F41EF4B7C10EF4E095E7FBA4 -:105120009FC1E92FD3D180F3BA17620773078407B1 -:10513000950718F071F49EF5EBC10EF4E0950B2E77 -:10514000BA2FA02D0B01B90190010C01CA01A001D9 -:105150001124FF27591B99F0593F50F4503E68F134 -:105160001A16F040A22F232F342F4427585FF3CF75 -:10517000469537952795A795F0405395C9F77EF446 -:105180001F16BA0B620B730B840BBAF09150A1F08F -:10519000FF0FBB1F661F771F881FC2F70EC0BA0F15 -:1051A000621F731F841F48F4879577956795B7959D -:1051B000F7959E3F08F0B3CF9395880F08F0992795 -:1051C000EE0F97958795089527D108F481E008950B -:1051D0000CD06BC163D140F05AD130F021F45F3F65 -:1051E00019F03EC1511195C14FC170D198F3992367 -:1051F000C9F35523B1F3951B550BBB27AA2762179B -:105200007307840738F09F5F5F4F220F331F441FDF -:10521000AA1FA9F333D00E2E3AF0E0E830D0915017 -:105220005040E695001CCAF729D0FE2F27D0660F04 -:10523000771F881FBB1F261737074807AB07B0E843 -:1052400009F0BB0B802DBF01FF2793585F4F2AF059 -:105250009E3F510568F004C15CC15F3FECF3983E8E -:10526000DCF3869577956795B795F7959F5FC9F7B6 -:10527000880F911D9695879597F90895E1E0660F3F -:10528000771F881FBB1F621773078407BA0720F0B8 -:10529000621B730B840BBA0BEE1F88F7E095089521 -:1052A00004D06894B11135C1089518D188F09F5782 -:1052B00090F0B92F9927B751A0F0D1F0660F771F62 -:1052C000881F991F1AF0BA95C9F712C0B13081F042 -:1052D0001FD1B1E008951CC1672F782F8827B85FD0 -:1052E00039F0B93FCCF3869577956795B395D9F7A3 -:1052F0003EF490958095709561957F4F8F4F9F4FAD -:105300000895E89409C097FB3EF4909580957095B8 -:1053100061957F4F8F4F9F4F9923A9F0F92F96E901 -:10532000BB279395F695879577956795B795F11176 -:10533000F8CFFAF4BB0F11F460FF1BC06F5F7F4F13 -:105340008F4F9F4F16C0882311F096E911C0772325 -:1053500021F09EE8872F762F05C0662371F096E82E -:10536000862F70E060E02AF09A95660F771F881FFD -:10537000DAF7880F9695879597F9089588D018F0F1 -:1053800011F08CD038F480C0C4C0E92F9FD0B0F3A6 -:105390005523C9F3E7FB6217730784079507A8F144 -:1053A00099F3E92FFF2788232AF03197660F771F9B -:1053B000881FDAF7952F5527442332F0915050403B -:1053C000220F331F441FD2F7BB27E91BF50B621BCB -:1053D000730B840BB109C1F222F4620F731F841F97 -:1053E000B11D31972AF0660F771F881FBB1FEFCFC3 -:1053F000915050405AF041F0882332F0660F771FE9 -:10540000881F91505040C1F7939530C0869577958D -:1054100067959F5FD9F7F8CF990F0008550FAA0B32 -:10542000E0E8FEEF16161706E807F907C0F01216B7 -:105430001306E407F50798F0621B730B840B950BBA -:1054400039F40A2661F0232B242B252B21F408950F -:105450000A2609F4A140A6958FEF811D811D0895AC -:1054600097F99F6780E870E060E008959F3F31F012 -:10547000915020F4879577956795B795880F911D82 -:105480009695879597F908959FEF80EC08950024ED -:105490000A941616170618060906089500240A9499 -:1054A00012161306140605060895092E0394000C1F -:1054B00011F4882352F0BB0F40F4BF2B11F460FFAE -:1054C00004C06F5F7F4F8F4F9F4F089557FD9058D7 -:1054D000440F551F59F05F3F71F04795880F97FBB8 -:1054E000991F61F09F3F79F0879508951216130672 -:1054F0001406551FF2CF4695F1DF08C016161706A1 -:105500001806991FF1CF86957105610508940895D5 -:10551000E894BB2766277727CB0197F908957CDFAE -:1055200008F48FEF08950BD0C0CFB1DF28F0B6DFBD -:1055300018F0952309F094CFA7CF1124EACFC6DF46 -:10554000A0F3959FD1F3950F50E0551F629FF00196 -:10555000729FBB27F00DB11D639FAA27F00DB11DEF -:10556000AA1F649F6627B00DA11D661F829F222778 -:10557000B00DA11D621F739FB00DA11D621F839FFF -:10558000A00D611D221F749F3327A00D611D231FD5 -:10559000849F600D211D822F762F6A2F11249F5723 -:1055A00050408AF0E1F088234AF0EE0FFF1FBB1F46 -:1055B000661F771F881F91505040A9F79E3F5105E5 -:1055C00070F04ECFA6CF5F3FECF3983EDCF38695AC -:1055D00077956795B795F795E7959F5FC1F7FE2B90 -:1055E000880F911D9695879597F90895FA01EE0F0A -:1055F000FF1F30962105310599F16115710561F4A0 -:105600008038BFE39B0749F168949038810561F0C9 -:105610008038BFEF9B0741F0992342F5FF3FE1053A -:105620003105210511F1E8940894E795D901AA23E1 -:1056300029F4AB2FBE2FF85FD0F310C0FF5F70F4DA -:10564000A695E0F7F73950F019F0FF3A38F49F7754 -:105650009F930CD00F9007FC905808953EF014CF04 -:1056600060E070E080E89FE308954FE79F775F93E5 -:105670004F933F932F939ED02F913F914F915F91E6 -:1056800052DF05C019F40EF0EBCE42CFFDCE26DF7F -:10569000C8F39638C0F707F80F92E8942BE33AEA7C -:1056A00048EB5FE74EDF0F920F920F924DB75EB758 -:1056B0000F92C0D0EAE0F1E016D04F915F91EF91E8 -:1056C000FF91E595EE1FFF1F49F0FE57E068442764 -:1056D000EE0F441FFA95E1F74195550B32D00F902C -:1056E00007FE26C00895DF93CF931F930F93FF9279 -:1056F000EF92DF927B018C01689405C0DA2EEF01F6 -:105700001EDFFE01E894A5912591359145915591B3 -:10571000AEF3EF0106DDFE019701A801DA9479F7F7 -:10572000DF90EF90FF900F911F91CF91DF9108953F -:105730009B01AC0160E070E080E89FE349CD90CE32 -:1057400095CECCDEE8F39923D9F3940F511DBBF32A -:105750009150504094F059F0882332F0660F771F33 -:10576000881F91505040C1F79E3F510544F7880F64 -:10577000911D9695879597F908955F3FACF0983EF7 -:105780009CF0BB27869577956795B79508F4B1602F -:105790009395C1F7BB0F58F711F460FFE8CF6F5F27 -:1057A0007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCEC6 -:1057B000689456CE93DEC8F39923D1F3C6F3DF93F2 -:1057C000CF931F930F93FF92C92FDD2788232AF0D1 -:1057D0002197660F771F881FDAF720E030E040E856 -:1057E0005FEB9FE3883920F0803E30F021968F7781 -:1057F00087DCE2E3F1E003C083DCEFE5F1E073DF97 -:105800008B01BE01EC01FB2E6F5771097595771F57 -:10581000880B990B78DD28E132E741E35FE38FDE07 -:10582000AF2D9801AE01FF900F911F91CF91DF91A5 -:1058300078DC3BCEFA01DC01AA0FBB1F9B01AC0157 -:10584000BF5728F422273327442750781FC0B75169 -:1058500088F4AB2F0024469537952795011CA39516 -:10586000D2F3002069F0220F331F441FB395DAF3FF -:105870000DD045CC61307105A0E88A07B94630F4F7 -:105880009B01AC016627772788279078309621F016 -:1058900020833183428353830895AA1BBB1B51E1AC -:1058A00007C0AA1FBB1FA617B70710F0A61BB70B90 -:1058B000881F991F5A95A9F780959095BC01CD0135 -:1058C000089597FB072E16F4009407D077FD09D0B2 -:1058D0000E944D2C07FC05D03EF4909581959F4F7A -:1058E0000895709561957F4F0895EE0FFF1F059005 -:1058F000F491E02D0994F999FECF92BD81BDF89AFB -:10590000992780B50895A8E1B0E042E050E00C94FA -:10591000A32C262FF999FECF92BD81BDF89A01974D -:1059200000B4021639F01FBA20BD0FB6F894FA9AE7 -:10593000F99A0FBE08950196272F0E948A2C0C9485 -:10594000892CDC01CB01FC01F999FECF06C0F2BD28 -:10595000E1BDF89A319600B40D9241505040B8F72D -:065960000895F894FFCF4A -:10596600640007000CFF0000003F64DE0F6C104966 -:10597600101510E10F0101DF022808140A321E007B -:1059860002040507090B0C0E1011131517181A1C23 -:105996001D1F2123242628292B2D2F30323435375D -:1059A600393B1F0F03764F5F6F7F4969437909596A -:1059B60053633149803F5D8B803FF8BF803FCAE12A -:1059C600803F73ED803FCAE1803FF8BF803F5D8B2B -:1059D600803F3149803F0000803FF16D7F3F75EA8F -:1059E6007E3F4C827E3F833F7E3F84287E3F833FBF -:1059F6007E3F4C827E3F75EA7E3FF16D7F3F000021 -:105A0600803F3F4D3639830436040004C7035A03EA -:105A160073038C03A50301020304050607080900A6 -:00000001FF diff --git a/keyboard/planck/keymaps/joe/compiled.hex b/keyboard/planck/keymaps/joe/compiled.hex deleted file mode 100644 index 865ed2ce99..0000000000 --- a/keyboard/planck/keymaps/joe/compiled.hex +++ /dev/null @@ -1,1479 +0,0 @@ -:100000000C9467030C94AB030C94AB030C94AB03FC -:100010000C94AB030C94AB030C94AB030C94AB03A8 -:100020000C94AB030C94AB030C946A150C943C1623 -:100030000C949E230C94AB030C94AB030C94AB0375 -:100040000C94AB030C940D040C94AB030C94AB0315 -:100050000C94AB030C9406240C94AB030C94AB03EC -:100060000C94AB030C94AB030C94AB030C94AB0358 -:100070000C94AB030C94AB030C94AB030C94AB0348 -:100080000C94DF0B0C94AB030C94AB030C94AB03FC -:100090000C94AB030C94AB030C94AB030C94AB0328 -:1000A0000C94AB030C94AB030C94AB03A916CB16C6 -:1000B000B917CB16B91710173317B91788179B172D -:1000C000851A851AB41AB41AF31A131B691C691C11 -:1000D0001E1B691CCE1BCE1B351C3E1C691C631CE1 -:1000E000DB1BDB1BDB1BDB1BDB1BDB1BDB1BDB1B60 -:1000F000DB1BDB1BDB1BDB1BDB1BDB1BDB1BDB1B50 -:10010000EB1BF91B001C071C111C07634236B79B35 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C00002010000000000000000000001E1013316 -:1001D000023301260226012C022C012C022C0127BD -:1001E00002270133023302E1015002500150025054 -:1001F000015002500001E1012602260133023301C1 -:100200002C022C012C022C0133023301270227027D -:10021000E10150025001500250015002500001E132 -:10022000013302330126022602E10001E10133021B -:10023000330127022702E1000000F1A4F1A529A65D -:1002400000000000018C028C048C088C000000006F -:100250000000000000002B22032014001A000900F7 -:1002600013000A000D000F0018001C0033002D00C1 -:100270002A00040015001600170007000B001100EB -:1002800008000C00120028000F201D001B000600B3 -:10029000190005000E00100036003700520034002F -:1002A000E000E300E200E10001202C002C0002202D -:1002B0003800500051004F00032014001A000800BD -:1002C000150017001C0018000C00120013002D0070 -:1002D0002A0004001600070009000A000B000D00A8 -:1002E0000E000F00330028000F201D001B00060029 -:1002F00019000500110010003600370052003400CC -:10030000E000E300E200E10001202C002C000220CC -:100310003800500051004F00032000005200000040 -:10032000000000002602270254005F006000610008 -:100330002A00500051004F00000000002202670018 -:1003400055005C005D005E000F2000000000000012 -:100350000000000000008500560059005A005B00B4 -:10036000E000E300E200E1000120010001000220C2 -:100370005700620063005800032014001A000900AF -:10038000130023000D000F0018001C0033002D0087 -:100390002A00210015002200240007000B00110094 -:1003A00020001E00270028000F201D001B00060053 -:1003B000190005000E00100036003700520034000E -:1003C000E000E300E200E10001202C002C0002200C -:1003D0003800500051004F003500000000000000C0 -:1003E0000000000000000000033002300130003047 -:1003F0002A001E001F0020002100220023002400EC -:100400002500260027000100310000000000000048 -:1004100000000000000000002F0030004B002E0004 -:100420000100010001000100012001000100022083 -:1004300000004A004E004D003A003B003C003D00E9 -:100440003E003F00400041004200430044004500A0 -:100450004C00F400F000F500F600F900F700500041 -:10046000510052004F0000000100F200F100F300C3 -:10047000FB00FA00FC00000000004B0152054E0199 -:100480000100010001000100012000000000022025 -:100490000000500551054F050100A800AA00A90061 -:1004A000000000000000000000000000000000004C -:1004B0000000AE00AC00AB00000000000000000037 -:1004C00000000000000000500000000000000000DC -:1004D000000000000000000000000000000000001C -:1004E0000620072008200920012001000100022029 -:1004F0006600A700A6000F052803540068006500E9 -:10050000200050006C0061006E0063006B00200052 -:100510004B006500790062006F00610072006400AA -:1005200000002C034F007200740068006F006C0024 -:1005300069006E0065006100720020004B006500DC -:10054000790062006F0061007200640073000000B7 -:100550000403090409026D00040100A0FA09040063 -:10056000000103010100092111010001223F0007E0 -:1005700005810308000A09040100010301020009C2 -:100580002111010001224D000705820308000A091C -:1005900004020001030000000921110100012236BC -:1005A000000705830308000A090403000103000093 -:1005B0000009211101000122390007058403100000 -:1005C000011201100100000008EDFE606001000151 -:1005D00002000105010906A101050719E029E71537 -:1005E0000025019508750181020508190129059565 -:1005F00005750191029501750391010507190029FF -:100600007715002501957875018102C005010980E3 -:10061000A101850216010026B7001A01002AB700C1 -:10062000751095018100C0050C0901A10185031613 -:100630000100269C021A01002A9C02751095018176 -:1006400000C005010902A1010901A1000509190164 -:100650002905150025019505750181029501750390 -:1006600081010501093009311581257F9502750841 -:10067000810609381581257F950175088106050CCD -:100680000A38021581257F950175088106C0C005CD -:10069000010906A101050719E029E71500250195C3 -:1006A0000875018102950175088101050819012964 -:1006B00005950575019102950175039101050719CD -:1006C0000029FF150025FF950675088100C011243B -:1006D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FD -:1006E00080911E0390911F03A0912003B0912103DC -:1006F0008730904BA740B04BB9F410921E03109274 -:100700001F03109220031092210314BE84B7877F29 -:1007100084BF88E10FB6F894809360001092600067 -:100720000FBEE0E0F8E3099511E0A0E0B1E0E6E9F2 -:10073000FBE502C005900D92A03CB107D9F713E08C -:10074000A0ECB1E001C01D92AE31B107E1F70E940B -:10075000B0120C94C92D0C9400000895089581E006 -:10076000089508950C94AE030C94AF030C94B10358 -:100770000E94932923E030E0281B3109220F2093A7 -:10078000C4010895282F2F9880918000211108C05E -:10079000877F8093800010928D0010928C001BC088 -:1007A000886080938000233019F48FEF9FEF0FC093 -:1007B00083E090E0821B9109880F991F2FEF3FEF94 -:1007C000A90102C0569547958A95E2F7CA01909310 -:1007D0008D0080938C000C94B8030E94B80384E0D1 -:1007E0008093C3011092C0010895279A2F988FEF2C -:1007F0009FEF90938700809386008AE0809380002B -:1008000089E1809381000E94FC280C94ED030E94F2 -:10081000F5036E9A769A0C94AD031F920F920FB661 -:100820000F9211242F933F938F939F93EF93FF93F6 -:10083000E091C101F091C201CF0101969093C201F4 -:100840008093C1010090C30102C0F695E7950A9418 -:10085000E2F7EF738091C001823019F4E03251F475 -:1008600004C0813039F4EF3329F480916F008D7F1B -:1008700080936F00F0E0E457FE4FE49121E031E017 -:10088000E29FC001E39F900D11240090C40102C0BB -:10089000969587950A94E2F790938D0080938C004B -:1008A000FF91EF919F918F913F912F910F900FBEEC -:1008B0000F901F901895FC01613061F028F06230B4 -:1008C00079F0633099F018C082818823A9F08BE217 -:1008D00092E008958281882379F08EE192E0089574 -:1008E0008281882349F085EF91E0089582818823F1 -:1008F00019F08CEC91E0089580E090E0089581E09B -:1009000008950C947F0408950C94070480911502B7 -:10091000882309F448C08091D1019091D2010097B9 -:1009200079F40E94D0239093D2018093D1018091D9 -:10093000D30190E0009771F48091D40190E00AC057 -:100940000E94DC2320910001309101012817390712 -:1009500040F329C00197880F991F880F991FFC0148 -:10096000EB52FE4F60817181828193810E94450B21 -:10097000E091D30184E0E89FF0011124EB52FE4F97 -:1009800060817181828193814FE050E00E94FD0E71 -:100990008091D30190E001966091D40170E00E94B3 -:1009A000792D8093D3010C94B203109217020C940A -:1009B000120B0895089581E0809317020C94DA04D5 -:1009C000089508958F929F92AF92BF92EF92FF92F7 -:1009D0000F931F93CF93DF93CDB7DEB7A3970FB6D7 -:1009E000F894DEBF0FBECDBF7C01FC0100811181F8 -:1009F000C8010E94CD21B8010E94E4068C01B70114 -:100A00000E948104882309F4CCC10032F0E51F075D -:100A100041F4F7018281882309F458C00E94610FD4 -:100A2000C0C10132F0E51F0741F4F701828188233C -:100A300009F44CC00E946A0FB4C10232F0E51F07EE -:100A400051F4F7018281882309F440C00E945D0FB0 -:100A50008111F0CFE3CF0332F0E51F0739F4F7013E -:100A60008281882399F10E94DB049BC10432F0E566 -:100A70001F0739F4F7018281882341F10E94D504D0 -:100A800090C10532F0E51F0749F4F7018281882300 -:100A9000E9F0809117028111F1CFE5CF0632F0E540 -:100AA0001F0739F4F7018281882381F00E94710FBA -:100AB0000AC00732F0E51F0749F4F7018281882355 -:100AC00029F00E947C0F0E94E1046BC18091170203 -:100AD000811105C0F70182818111CFC018C1003E8C -:100AE000110579F4F7018281882309F44DC00E9431 -:100AF000120B81E080931602109215021092D4011D -:100B000050C1023E110559F4F70182818823E1F1B9 -:100B10000E94120B109216021092150242C1033E5F -:100B2000110591F4F7018281882371F10E94120B63 -:100B30001092160281E0809315021092D301109258 -:100B4000D2011092D1012DC10235110559F4F701DE -:100B50008281882309F425C18091000190910101CF -:100B60000A970DC00135110579F4F70182818823B8 -:100B700009F417C180910001909101010A969093A8 -:100B80000101809300010DC14091040183E2EFE176 -:100B9000F1E0DE01119601900D928A95E1F7F701DF -:100BA000808121E030E02C0F3D1F280F311DC9014D -:100BB0002091020130910301FC01E20FF31F6081DB -:100BC000772767FD7095640F711D882777FD8095E5 -:100BD000982F0E949B2A20E030E040E451E40E94DC -:100BE000002A4B015C01F701218184E090E0821B27 -:100BF0009109BC01882777FD8095982F0E949B2A38 -:100C00009B01AC01C501B4010E9498299B01AC0174 -:100C100060E070E080E090E40E940E2C20E030E084 -:100C20004CED50E40E94AB2B4B015C01F70182813B -:100C30008823D1F04FE050E0C501B4010E94FD0EC1 -:100C4000809116028823A1F08091D40124E0829F34 -:100C5000F0011124EB52FE4F80829182A282B38276 -:100C60008F5F8093D40104C0C501B4010E94450B7D -:100C70000F3F110508F02ECF94C08091D001811153 -:100C80001FC0043130E5130709F051C00E948304EE -:100C900081E08093D0010E94D0239093CF01809374 -:100CA000CE011092C7011092C9011092C801109292 -:100CB000CB011092CA011092CD011092CC0171C0EB -:100CC0008091CE019091CF010E94DC23883C910558 -:100CD00070F48091C701E82FF0E0EE0FFF1FE8539A -:100CE000FE4F118300838F5F8093C7015AC0043881 -:100CF00080E5180721F00538104501F13AC0F701E9 -:100D00008281882341F01092C50182E01EC0043820 -:100D100030E5130759F58091C501811106C086E2BF -:100D20000E94291986E20E94F11982E01CC0043851 -:100D3000F0E51F0741F305381045D9F4F70182812A -:100D4000882331F01092C60180E20E94401A29C027 -:100D50008091C601811106C087E20E94291987E2AD -:100D60000E94F11980E20E94471A1BC00538104505 -:100D700029F381E08093C5018093C601C701A39642 -:100D80000FB6F894DEBF0FBECDBFDF91CF911F919C -:100D90000F91FF90EF90BF90AF909F908F900C9429 -:100DA000B40380E0A3960FB6F894DEBF0FBECDBFAC -:100DB000DF91CF911F910F91FF90EF90BF90AF9077 -:100DC0009F908F90089508959CE0799FF0011124E1 -:100DD00090E3899FE00DF11D1124E60FF11DEE0F48 -:100DE000FF1FE85AFD4F859194910895880F991F30 -:100DF000FC01E854FF4F859194910895880F991F45 -:100E0000FC01E85CFD4F8591949108950F931F9329 -:100E1000CF93DF93EC01811521E39207A0F5C11573 -:100E200080E3D80708F0D7C0C83ED105D8F4C03E4B -:100E3000D10508F007C2C83AD10578F4C53AD10502 -:100E400008F06AC0C130D10509F463C008F4F7C1E5 -:100E5000C430D10508F0F6C1F2C1CB3BD10508F48E -:100E600066C0EDC1C11590E2D90708F0AFC0C11549 -:100E700021E0D20708F0E6C1C03FD10508F4DFC188 -:100E80008E0110651FC2C03880E5D80700F5C03755 -:100E900090E5D90708F0A3C0C11520E5D20709F4F1 -:100EA000ACC050F4CE01905480319F4008F0C7C1CF -:100EB000DF708E01106A06C2C13080E5D80709F4E0 -:100EC000AEC0C43190E5D90708F4AFC0B8C1C3388B -:100ED00020E5D20709F48EC050F4C13890E5D90757 -:100EE00009F482C008F083C000E011EDEBC1C0310D -:100EF00081E5D80708F4A3C1C11597E5D90708F41F -:100F000036C1CE0190578115904108F098C1DF702D -:100F100093C101E010E0D6C1C53AD10509F494C1EE -:100F2000C63AD10509F093C102E810E4CBC1C83A32 -:100F3000D10509F48FC1C93AD10509F48EC1CA3A65 -:100F4000D10509F48DC1CB3AD10509F48CC1CC3A55 -:100F5000D10509F48BC1CD3AD10509F48AC1C03B52 -:100F6000D10509F489C1CE3AD10509F488C1CF3A37 -:100F7000D10509F487C1C13BD10509F486C1C23B43 -:100F8000D10509F485C1C33BD10509F484C1C43B33 -:100F9000D10509F483C1C53BD10509F482C1C63B23 -:100FA000D10509F481C1C73BD10509F480C1C83B13 -:100FB000D10509F47FC1C93BD10509F47EC1CA3B03 -:100FC000D10509F47DC100E014E47CC1CE019F701D -:100FD0000E94FE0678C1DD278E01106C73C1CF70B0 -:100FE000DD278E01146D6EC100E010ED6BC100E0D5 -:100FF00012ED68C100E013ED65C10E94D41C0E948F -:10100000120B0E94D9048FEF94E32CE081509040A2 -:101010002040E1F700C000000E942B2453C18091C2 -:10102000F20281608093F2024DC10E948C248111F2 -:1010300002C00E9468240E949F2490E090931D03A8 -:1010400080931C03C23080E5D80721F480911C03F3 -:10105000816086C0C43090E5D90721F480911C03DB -:1010600082607EC0C63020E5D20721F480911C0347 -:10107000846076C0C83080E5D80719F480911C03DD -:1010800027C0CA3090E5D90721F480911C03806104 -:1010900067C0CC3020E5D20721F480911C03806228 -:1010A0005FC0CE3080E5D80721F480911C038064B6 -:1010B00057C0C03190E5D90721F480911C038068A6 -:1010C0004FC0C23120E5D20729F480911C0384600F -:1010D000886046C0C33080E5D80721F480911C03A6 -:1010E0008E7F3EC0C53090E5D90721F480911C0366 -:1010F0008D7F36C0C73020E5D20721F480911C03D4 -:101100008B7F2EC0C93080E5D80719F480911C036D -:1011100026C0CB3090E5D90721F480911C038F7E47 -:101120001FC0CD3020E5D20721F480911C038F7DB4 -:1011300017C0CF3080E5D80721F480911C038F7B46 -:101140000FC0C13190E5D90721F480911C038F773E -:1011500007C0C331D04531F480911C038B7F877F5A -:1011600080931C0380911C030E94A324ABC08D2F8D -:1011700099278F70992781309105D9F49E012370AA -:10118000332702C0880F991F2A95E2F79C688E01C9 -:1011900044E0000F111F4A95E1F700271370802BE0 -:1011A000912B53E0CC0FDD1F5A95E1F7C076DD2778 -:1011B0002FC08230910531F4DC2FCC278E01016FD6 -:1011C000106A80C08330910569F4CE01837099273D -:1011D00001E010E002C0000F111F8A95E2F7C8017C -:1011E0009C680FC084309105B9F4CE0183709927B3 -:1011F00001E010E002C0000F111F8A95E2F7C8015C -:101200009A6823E0CC0FDD1F2A95E1F7C07ED770E6 -:101210008C010C2B1D2B56C08530910531F4DC2F31 -:10122000CC278E01046F106A4DC0069709F04AC0A2 -:10123000CF71DD27DC2FCC278E01106243C000E088 -:1012400010E040C08E013EC001E810E43BC003E85E -:1012500010E438C002EE14E435C009EE14E432C0E4 -:101260000AEE14E42FC005EB14E42CC006EB14E4E2 -:1012700029C007EB14E426C00CEC14E423C00DECE9 -:1012800014E420C003E815E41DC00AE815E41AC000 -:1012900002E915E417C004E915E414C001E216E4FC -:1012A00011C003E216E40EC004E216E40BC005E22E -:1012B00016E408C006E216E405C007E216E402C020 -:1012C0000AE216E4C801DF91CF911F910F910895B2 -:1012D0009CE0799FF001112490E3899FE00DF11DBE -:1012E0001124E60FF11DEE0FFF1FE85AFD4F859107 -:1012F0009491803E9105E0F4803C910558F581334E -:10130000910509F46FC048F48932910509F463C06E -:101310008A32910509F46DC072C089339105E9F0F4 -:1013200082389105D1F08533910509F44DC067C02D -:10133000833E910581F138F4803E9105B9F0823EFB -:101340009105D9F05CC0863E910561F1873E91051B -:10135000A1F155C00E94F606089520911C0320FDBE -:1013600002C021FF4CC080EE90E049C080911C0378 -:1013700080FFF9CF89E390E042C080911C0382FF97 -:101380000EC080911C0384FF03C080E090E037C052 -:1013900083EE90E034C080911C0382FFF2CF82EE96 -:1013A00090E02DC080911C0383FF0BC080911C0333 -:1013B00084FDEBCF87EE90E022C080911C0383FF79 -:1013C000F5CF86EE90E01BC080911C0385FF07C01F -:1013D00089E290E014C080911C0385FFF9CF85E37A -:1013E00090E00DC080911C0386FF07C08AE290E068 -:1013F00006C080911C0386FFF9CF81E390E00E9434 -:10140000060708950C94B603E82FF0E0E25BFE4F68 -:101410008081E82FEF70F0E082958F7021E030E05E -:10142000A90102C0440F551F8A95E2F740A3089511 -:101430000F931F93CF93DF9385B7806885BF85B7E0 -:10144000806885BFC3E0D0E001E010E0FE01E25B10 -:10145000FE4F8081E82FEF70F0E021A182958F7020 -:10146000A80102C0440F551F8A95E2F7CA01822BDA -:1014700081A38C2F0E94040A219740F78BE090E013 -:1014800061E070E0FC01EE5BFE4F2081E22FEF7027 -:10149000F0E042A122952F70DB0102C0AA0FBB1F12 -:1014A0002A95E2F79D01242B22A3019758F7DF919B -:1014B000CF911F910F910C948404EF92FF920F93A0 -:1014C0001F93CF93DF9300E212E0C3E0EE24E39496 -:1014D000F12CD5E08C2F0E94040A8BE090E040E0D4 -:1014E00050E0FC01EE5BFE4F6081E62FEF70F0E014 -:1014F00020A130E062956F7002C0359527956A95FE -:10150000E2F720FD09C09701082E02C0220F331F09 -:101510000A94E2F7422B532B019718F7F8019291A6 -:1015200082918F018417950721F051834083D093D6 -:1015300005018C2F0E94040AC15060F680910501BC -:1015400087FD2CC08150809305018F3F39F08FE9D2 -:101550009FE00197F1F700C0000020C080911E02BB -:1015600090911F02909327028093260280911C0283 -:1015700090911D02909325028093240280911A027B -:1015800090911B0290932302809322028091180273 -:101590009091190290932102809320020E94860468 -:1015A00081E0DF91CF911F910F91FF90EF9008950F -:1015B000E82FF0E0EE0FFF1FE05EFD4F808191818C -:1015C000089508950F931F93CF9308E212E0C0E0AF -:1015D000F801929182918F010E944823C80FF2E096 -:1015E00000321F07A9F78C2FCF911F910F910895FB -:1015F0000E948C24811102C00E9468240E94B124A0 -:10160000809307033E9A809171008D7F80937100D3 -:1016100082E0809390008AE18093910081E0809342 -:101620002A02089580912A02811102C00E94F80ABC -:1016300010927A0210927902809171008D7F8093CE -:101640007100809190008F738093900010923C0203 -:1016500010923B0210927302109274021092750263 -:10166000109276021092720210927102E1E5F2E09D -:10167000A1E4B2E011921192119211921D921D9269 -:1016800082E0E137F807B1F70895CF92DF92EF9249 -:10169000FF920F931F93CF93DF9320913B0222235E -:1016A00009F484C06B017C0180912A02811102C07F -:1016B0000E94F80A01E712E0C7E0D0E0A701960116 -:1016C000F80192918291729162918F010E94FC299E -:1016D000811131C0FE01EE0FFF1FEE0FFF1FEF5A09 -:1016E000FD4F1082118212821382DE01AA0FBB1FEE -:1016F000AF5BBD4F11961C921E92C730D105E9F029 -:10170000219644815581668177814083518362832C -:101710007383148215821682178212968D919C9182 -:10172000139711969C938E9313961C921E92129768 -:1017300034961296E2CF219708F680917902909123 -:101740007A02019797FD05C090937A0280937902FF -:1017500004C010927A0210927902809179029091DD -:101760007A0220917702309178022817390724F005 -:101770001092780210927702892BC1F48091710047 -:101780008D7F80937100809190008F738093900083 -:1017900010927302109274021092750210927602E7 -:1017A000109272021092710210923B02DF91CF915F -:1017B0001F910F91FF90EF90DF90CF9008951F92AF -:1017C0000F920FB60F9211244F925F926F927F92F9 -:1017D0008F929F92AF92BF92CF92DF92EF92FF9241 -:1017E0002F933F934F935F936F937F938F939F9329 -:1017F000AF93BF93CF93DF93EF93FF9380913B021F -:10180000882309F49BC1C0917902D0917A021C16F9 -:101810001D060CF093C140902B0250902C0260905A -:101820002D0270902E0220E030E0A901C301B20128 -:101830000E94A72B18160CF065C0C130D10509F421 -:1018400052C08091770290917802BE010E94792D5A -:101850007C01909378028093770280903D02909073 -:101860003E02A0903F02B090400220E030E040E80D -:101870005FE3C501B4010E94982960933D02709313 -:101880003E0280933F0290934002F701EE0FFF1F4C -:10189000EE0FFF1FEF5AFD4FA3019201608171818E -:1018A000828193810E94002A20E030E040E05EE3E4 -:1018B0000E94AB2B9B01AC01C501B4010E94A72B78 -:1018C00018168CF4C7010196BE010E94792D9093E1 -:1018D00078028093770210923D0210923E0210929D -:1018E0003F0210924002E0917702F0917802EE0FF1 -:1018F000FF1FEE0FFF1FEF5AFD4F60817181828144 -:101900009381D0C0C0907302D0907402E0907502B1 -:10191000F090760220E030E0A901C701B6010E94F4 -:10192000FC292197882309F4A2C0FE01EE0FFF1FB6 -:10193000EE0FFF1FEF5AFD4F80809180A280B38091 -:10194000A5019401C701B6010E94FC2987FF31C09F -:10195000A501940160E070E08CED93EC0E94002AF8 -:1019600020E030E040E451E40E94002A20E030E032 -:1019700040E05FE30E94AB2B9B01AC0160E070E0B4 -:1019800080E090E40E940E2C9B01AC01C501B401E3 -:101990000E94AB2B9B01AC01C701B6010E94FC2940 -:1019A00087FF07C0A701960160E070E08CED93E42B -:1019B00039C0A5019401C701B6010E94A72B1816D2 -:1019C0000CF055C0A501940160E070E08CED93E44B -:1019D0000E94002A20E030E040E451E40E94002A06 -:1019E00020E030E040E05FE30E94AB2B9B01AC01C4 -:1019F00060E070E080E090E40E940E2C9B01AC015E -:101A0000C501B4010E94AB2B9B01AC01C701B6011B -:101A10000E94A72B18165CF5A701960160E070E004 -:101A20008CED93EC0E94002A20E030E040E451E489 -:101A30000E94002A20E030E040E05FE30E94AB2BF0 -:101A40009B01AC0160E070E080E090E40E940E2C0D -:101A50009B01AC01C701B6010E94AB2B60937302DE -:101A600070937402809375029093760213C0FE0106 -:101A7000EE0FFF1FEE0FFF1FEF5AFD4F8081918188 -:101A8000A281B3818093730290937402A093750234 -:101A9000B093760260917302709174028091750226 -:101AA0009091760220912802309129022F3F4FEF2A -:101AB000340731F02F5F3F4F3093290220932802E3 -:101AC0000E94870F6B017C0120E034E244EF51E477 -:101AD0000E94FC2987FF08C086EFC82E88E2D82E16 -:101AE00084EFE82E81E4F82E20E030E040E051E47D -:101AF000C701B6010E94AB2B9B01AC0160E074E210 -:101B000084E79BE40E94002A6B017C010E946D2AFD -:101B10007093970060939600209106013091070121 -:101B20004091080150910901C701B6010E94AB2BF9 -:101B30000E946D2A709399006093980080913C02F6 -:101B4000882309F433C1C0903702D0903802E09066 -:101B50003902F0903A0220E030E0A901C701B60155 -:101B60000E94A72B1816D4F5809128029091290283 -:101B70008F3F2FEF920729F00196909329028093CF -:101B80002802C701B6010E94870F20E030E040E044 -:101B900051E40E94AB2B9B01AC0160E074E284E74E -:101BA0009BE40E94002A6B017C010E946D2A7093C5 -:101BB00097006093960020910601309107014091B3 -:101BC000080150910901C701B6010E94AB2B0E9488 -:101BD0006D2A709399006093980008C01092970046 -:101BE0001092960010929900109298006091310224 -:101BF000709132026F5F7F4F7093320260933102B7 -:101C0000209196003091970080E090E0232BF1F036 -:101C1000C0919600D09197000E94992A6B017C0197 -:101C2000BE0180E090E00E94992A9B01AC01609186 -:101C300033027091340280913502909136020E94F5 -:101C4000002A20E03FEF4FE757E410C00E94992A96 -:101C50006B017C0120E030EE4FEF54E460913302E1 -:101C60007091340280913502909136020E94AB2B24 -:101C70009B01AC01C701B6010E94A72B87FD96C04E -:101C800080912F028F5F80932F0290E020910303B9 -:101C90003091040382179307A0F080910E038823EC -:101CA00019F010922F020DC0809171008D7F8093EA -:101CB0007100809190008F738093900010923C028D -:101CC0007DC080913002C0912F02811128C0C09048 -:101CD0000803D0900903E0900A03F0900B0320E082 -:101CE00030E0A901C701B6010E94A72B1816BCF469 -:101CF00081E08093300210923702109238021092E5 -:101D0000390210923A02C0923302D0923402E09229 -:101D10003502F0923602C150C0932F0243C0109298 -:101D200030021092290210922802E0910503F091EE -:101D3000060348E0C49FE00DF11D112480819181CC -:101D4000A281B3818093370290933802A093390225 -:101D5000B0933A0220E030E040E85EE364817581B0 -:101D6000868197810E94AB2B6B017C0180910A01D7 -:101D7000682F70E080E090E00E94992A20E030E037 -:101D800048EC52E40E94002A9B01AC01C701B60155 -:101D90000E94AB2B60933302709334028093350220 -:101DA0009093360210923202109231028091070312 -:101DB00080FD04C010923C0210923B02FF91EF9113 -:101DC000DF91CF91BF91AF919F918F917F916F9153 -:101DD0005F914F913F912F91FF90EF90DF90CF90C7 -:101DE000BF90AF909F908F907F906F905F904F903B -:101DF0000F900FBE0F901F901895CF92DF92EF9229 -:101E0000FF92CF93DF936B017C01EA0180912A025C -:101E1000811102C00E94F80A8091070380FF46C02A -:101E20008091790290917A0208970CF03FC08091DE -:101E300071008D7F8093710080913C0281110E941E -:101E4000120B81E080933B0210922902109228022B -:101E500020E030E0A901C701B6010E94A72B1816A7 -:101E6000DCF48091790290917A02FC01EE0FFF1F61 -:101E7000EE0FFF1FEF5AFD4FC082D182E282F38244 -:101E8000FC01EE0FFF1FEF5BFD4FD183C083019676 -:101E900090937A028093790280917100826080939E -:101EA000710080919000806880939000DF91CF91C5 -:101EB000FF90EF90DF90CF9008958091070381709D -:101EC0000895809107038160809307030E94B524E1 -:101ED0000C94E004809107038E7F809307030C9499 -:101EE000B52480917B0290E0019666E070E00E944C -:101EF000792D80937B02089580917B0290E0019779 -:101F000066E070E00E94792D80937B0208958F92A5 -:101F10009F92AF92BF92CF92DF92EF92FF920F9378 -:101F20001F93CF93DF936B017C01C0912802D09166 -:101F30002902BE0180E090E00E94992A4B015C01D9 -:101F4000A701960160E070E08CE594E40E94002A0D -:101F50009B01AC01C501B4010E94AB2B0E946D2A0C -:101F600020917B02233009F473C028F4222351F01E -:101F70002130E9F02CC1243009F4A0C0253009F447 -:101F8000E0C025C180E090E0A0E0BFE380930601BF -:101F900090930701A0930801B093090110922B02BE -:101FA00010922C0210922D0210922E0210C110924B -:101FB0002B0210922C0210922D0210922E026431EC -:101FC000710540F46A30710560F520E030E040E8CA -:101FD0005EE32BC0693C710508F0AAC080E090E088 -:101FE0000E94992A20E030E040EA51E40E949729BB -:101FF00020E030E044E353E40E94002A9B01AC015E -:102000000E94AB2B20E030E040E05EE30E94AB2B6F -:102010009B01AC0160E070E080E09EE30E949729A4 -:1020200044C020E030E040E05FE3C701B6010E9419 -:10203000AB2B6B017C0180E090E0A0E0BEE38093DD -:10204000060190930701A0930801B0930901BFC056 -:1020500010922B0210922C0210922D0210922E023E -:102060004AE0469F9001479F300D1124C90168EB5B -:102070007BE00E94652DBC016C5D754077FF03C05D -:10208000719561957109882777FD8095982F0E9439 -:102090009B2A2EE333EC4EE259E30E94AB2B20E067 -:1020A00030E040EC5EE30E94982960930601709353 -:1020B0000701809308019093090189C010922B02B7 -:1020C00010922C0210922D0210922E02CE018370DB -:1020D0009927892BE1F0BE016170772780E090E0BD -:1020E0000E94992A20E030E040E05EE30E94AB2BA2 -:1020F00020E030E040E45FE30E949829609306010D -:102100007093070180930801909309010CC080E04F -:1021100090E0A0E0BFE38093060190930701A093B5 -:102120000801B0930901C770DD27CD2B09F04FC01E -:1021300010920601109207011092080110920901F5 -:1021400046C010922B0210922C0210922D02109277 -:102150002E0200E010E020E03FE300930601109320 -:10216000070120930801309309016739710578F15F -:1021700080E090E00E94992A20E030E047E153E4BB -:102180000E94972920E030E04AE754E40E94002AA8 -:1021900020E030E048E452E40E94AB2B20E030E045 -:1021A00040EA51E40E94DD2A0E94682A660F771FE8 -:1021B000660F771FFB01EE5AFE4F2081318142816D -:1021C0005381C701B6010E94AB2B6B017C01C70193 -:1021D000B601DF91CF911F910F91FF90EF90DF90AB -:1021E000CF90BF90AF909F908F90089580918C0278 -:1021F0000895CF93DF9300D01F92CDB7DEB79C0137 -:1022000080911303843019F593E099833B832A83EB -:102210009093E9008FEF9091E800815095FD06C002 -:1022200095ED9A95F1F700008111F5CF8091E800C6 -:1022300085FF0DC040E050E063E070E0CE01019604 -:102240000E945A138091E8008E778093E8000F90E7 -:102250000F900F90DF91CF910895CF93DF9300D02F -:102260001F92CDB7DEB720911303243021F522E071 -:1022700029839B838A8383E08093E9008FEF909189 -:10228000E800815095FD06C095ED9A95F1F70000A4 -:102290008111F5CF8091E80085FF0DC040E050E04E -:1022A00063E070E0CE0101960E945A138091E8002D -:1022B0008E778093E8000F900F900F90DF91CF9171 -:1022C0000895209113032430F1F422E02093E900D3 -:1022D0002FEF3091E800215035FD06C035ED3A95DD -:1022E000F1F700002111F5CF2091E80025FF0BC088 -:1022F00040E050E065E070E00E945A138091E800F1 -:102300008E778093E8000895CF93DF93EC0190914E -:102310001303943009F046C0809115018823D9F049 -:10232000809116018823B9F09093E9008FEF909186 -:10233000E800815095FD06C095E19A95F1F70000FF -:102340008111F5CF8091E80085FF2CC040E050E07E -:1023500060E170E017C081E08093E9008FEF909119 -:10236000E800815095FD06C095ED9A95F1F70000C3 -:102370008111F5CF8091E80085FF14C040E050E066 -:1023800068E070E0CE010E945A138091E8008E77D9 -:102390008093E80080E1FE01ACE7B2E001900D928D -:1023A0008A95E1F7DF91CF91089580911203811111 -:1023B00009C00E94EF140E944C158091E2008460D5 -:1023C0008093E200089510921203089508950895ED -:1023D0000C94932342E061EC81E00E94691442E096 -:1023E00061EC82E00E94691442E061EC83E00E94AB -:1023F000691442E161EC84E00C9469148091150346 -:10240000833009F455C030F4813071F0823009F422 -:102410008EC008958A3009F47AC08B3009F460C008 -:10242000893009F09CC020C080911403813A09F0E2 -:1024300096C08091E800877F8093E8008091180320 -:1024400090911903892B21F460E18CE792E003C09D -:1024500060E080E090E070E00E94A5138091E800C9 -:102460008B778093E800089580911403813209F0FE -:1024700076C08091180390911903009719F0039783 -:1024800009F06DC08091E800877F8093E80080911B -:10249000E80082FD05C0809113038111F8CF5FC071 -:1024A0008091F10080938C028091E8008B7753C07B -:1024B00080911403813A09F052C0809118039091E1 -:1024C0001903892B09F04BC08091E800877F809326 -:1024D000E8008091E80080FFFCCF8091150136C0B4 -:1024E000809114038132D9F58091180390911903DA -:1024F000892BA9F58091E800877F8093E8000E94EE -:102500009E1480911603809315010C94D41C809125 -:102510001403813221F58091E800877F8093E800E1 -:102520000E949E148091170380938D0208958091DC -:102530001403813AA1F48091E800877F8093E8003A -:102540008091E80080FFFCCF80918D028093F100A4 -:102550008091E8008E778093E8000C949E14089593 -:1025600084B7877F84BF88E10FB6F89480936000BA -:10257000109260000FBE90E080E80FB6F894809350 -:102580006100909361000FBE0E9441180E94EF14F9 -:102590000E944C158091E20084608093E200789460 -:1025A0000E94D2170E9443188BE091E00E94ED1721 -:1025B00080911303853069F40E94542380911103A4 -:1025C0008823B1F30E948223882391F30E9444134D -:1025D000EFCF0E944B18ECCF292F33272330310542 -:1025E000C9F064F42130310581F02230310509F061 -:1025F00043C08DE690E024E535E042C0213231054C -:10260000F1F02232310541F137C082E190E021EC56 -:1026100035E036C099278130910541F0823091052F -:1026200041F0892B49F5E0E5F5E005C0E2E2F5E08F -:1026300002C0E8EFF4E0849190E09F0121C0643093 -:10264000D8F4E62FF0E0EE0FFF1FE255FE4F208199 -:10265000318189E090E014C0643070F470E0FB01D7 -:10266000EE0FFF1FEA55FE4F20813181FB01EE5531 -:10267000FE4F808190E004C080E090E020E030E0F8 -:10268000FA0131832083089580E189BD82E189BD0B -:1026900009B400FEFDCF8091D8008F7D8093D800D3 -:1026A0008091E00082608093E0008091E00081FDF5 -:1026B000FCCF0895CF92DF92EF92FF920F931F937A -:1026C000CF93DF93EC018B016A010E94BD1481114D -:1026D00033C0C114D10439F0F60180819181081B07 -:1026E000190BC80FD91FE12CF12C0115110519F197 -:1026F0008091E80085FD16C08091E8008E77809378 -:10270000E800C114D10449F0F60180819181E80EFE -:10271000F91EF182E08285E00FC00E94BD1488237B -:1027200021F30AC089918093F10001501109FFEF54 -:10273000EF1AFF0ADACF80E0DF91CF911F910F915E -:10274000FF90EF90DF90CF90089520911A03309181 -:102750001B032617370748F06115710539F42091DE -:10276000E8002E772093E80001C0B90140E0611530 -:102770007105A9F120911303222309F443C02530E8 -:1027800009F442C02091E80023FD40C02091E800F8 -:1027900022FD32C02091E80020FFE9CF4091F300F4 -:1027A0002091F20030E0342BFC01CF01611571055E -:1027B00059F02830310540F481918093F100615047 -:1027C00071092F5F3F4FF1CF41E02830310509F00B -:1027D00040E02091E8002E772093E800C8CF411117 -:1027E000C9CF0AC080911303882361F0853061F05E -:1027F0008091E80083FD0AC08091E80082FFF2CF5B -:1028000080E0089582E0089583E0089581E00895CE -:1028100020911A0330911B032617370748F06115E2 -:10282000710539F42091E8002E772093E80001C06B -:10283000B901FC0120E06115710591F1809113034C -:10284000882309F440C0853009F43FC08091E80036 -:1028500083FD3DC08091E80082FD2FC08091E8009B -:1028600080FFE9CF2091F3008091F20090E0922B5D -:102870006115710559F08830910540F42491209339 -:10288000F1003196615071090196F2CF21E008976D -:1028900009F020E08091E8008E778093E800CBCFAC -:1028A0002111CCCF0AC080911303882361F08530B9 -:1028B00061F08091E80083FD0AC08091E80082FF0A -:1028C000F2CF80E0089582E0089583E0089581E0EA -:1028D0000895982F973058F59093E900981739F09C -:1028E0007091EC002091ED005091F00003C0242F76 -:1028F000762F50E021FF19C03091EB003E7F3093DE -:10290000EB003091ED003D7F3093ED003091EB0016 -:1029100031603093EB007093EC002093ED00509306 -:10292000F0002091EE0027FF07C09F5FD3CF8F708C -:102930008093E90081E0089580E008958091140378 -:1029400087FF11C08091E80082FD05C080911303CC -:102950008111F8CF11C08091E8008B770BC0809176 -:102960001303882349F08091E80080FFF8CF80911D -:10297000E8008E778093E80008952091E40030917C -:10298000E50095E64091EC00842F817040FF22C065 -:102990008091E80080FD1CC080911303882391F092 -:1029A000853091F08091EB0085FD10C04091E400EE -:1029B0005091E5004217530729F39A01915011F7FE -:1029C00084E0089582E0089583E0089581E0089509 -:1029D00080E008954091E80042FFDECF08950E9414 -:1029E0005D150E946515E0EEF0E0808181608083D6 -:1029F000E8EDF0E080818F77808319BCA7EDB0E02F -:102A00008C918E7F8C9380818F7E808310921203B5 -:102A100008950F931F93CF93DF930E945D150E943B -:102A20006515C8EDD0E088818F77888388818068BC -:102A3000888388818F7D888319BC1092130310923C -:102A40000F03109211031092100300EE10E0F80132 -:102A500080818B7F808388818160888342E060E011 -:102A600080E00E946914E1EEF0E080818E7F808337 -:102A7000E2EEF0E0808181608083808188608083E5 -:102A8000F80180818E7F8083888180618883DF91D7 -:102A9000CF911F910F910895E8EDF0E080818F7E36 -:102AA0008083E7EDF0E080818160808384E082BFF5 -:102AB00081E0809312030C940915E8EDF0E0808129 -:102AC0008E7F80831092E20008951092DA001092B7 -:102AD000E10008951F920F920FB60F9211242F93C9 -:102AE0003F934F935F936F937F938F939F93AF9396 -:102AF000BF93EF93FF938091E10082FF0BC0809121 -:102B0000E20082FF07C08091E1008B7F8093E100AB -:102B10000E94D1178091DA0080FF1FC08091D800F9 -:102B200080FF1BC08091DA008E7F8093DA00809155 -:102B3000D90080FF0DC080E189BD82E189BD09B463 -:102B400000FEFDCF81E0809313030E94D51105C0E4 -:102B500019BC109213030E94E3118091E10080FFE1 -:102B600019C08091E20080FF15C08091E2008E7F45 -:102B70008093E2008091E20080618093E200809186 -:102B8000D80080628093D80019BC85E0809313033D -:102B90000E94E7118091E10084FF30C08091E20043 -:102BA00084FF2CC080E189BD82E189BD09B400FEAB -:102BB000FDCF8091D8008F7D8093D8008091E10077 -:102BC0008F7E8093E1008091E2008F7E8093E2000F -:102BD0008091E20081608093E20080910F0388235E -:102BE00011F084E007C08091E30087FD02C081E01E -:102BF00001C083E0809313030E94E8118091E100FB -:102C000083FF29C08091E20083FF25C08091E1000D -:102C1000877F8093E10082E08093130310920F037B -:102C20008091E1008E7F8093E1008091E2008E7FB1 -:102C30008093E2008091E20080618093E20042E0B4 -:102C400060E080E00E9469148091F00088608093C9 -:102C5000F0000E94E611FF91EF91BF91AF919F911B -:102C60008F917F916F915F914F913F912F910F9035 -:102C70000FBE0F901F9018951F920F920FB60F92D4 -:102C800011242F933F934F935F936F937F938F9371 -:102C90009F93AF93BF93CF93DF93EF93FF93C09135 -:102CA000E900CF708091EC00D82FD17080FDD0E882 -:102CB0001092E9008091F000877F8093F000789473 -:102CC0000E9480161092E9008091F0008860809345 -:102CD000F000CD2BCF70C093E900FF91EF91DF9111 -:102CE000CF91BF91AF919F918F917F916F915F91A4 -:102CF0004F913F912F910F900FBE0F901F901895FD -:102D00001F93CF93DF93CDB7DEB7AA970FB6F89492 -:102D1000DEBF0FBECDBFE4E1F3E088E08E0F9091FF -:102D2000F10091938E13FBCF0E94FE118091E80079 -:102D300083FF1FC18091140390911503492F50E028 -:102D40004A30510508F015C1FA01EA5AFF4F0C94B8 -:102D50008D2D803881F0823809F00BC180911803E5 -:102D60008F708093E9008091EB0085FB882780F9C4 -:102D70001092E90006C08091100390911103911107 -:102D800082609091E800977F9093E8008093F10033 -:102D90001092F100C8C0282F2D7F09F0EAC08823C7 -:102DA00019F0823061F0E5C080911603813009F09E -:102DB000E0C0933009F080E0809311032BC0809134 -:102DC0001603811127C0809118038F7009F4D1C0B8 -:102DD0008093E9002091EB0020FF1CC0933021F488 -:102DE0008091EB00806214C09091EB009061909311 -:102DF000EB0021E030E0A90102C0440F551F8A9585 -:102E0000E2F74093EA001092EA008091EB008860BC -:102E10008093EB001092E9008091E800877F86C0E4 -:102E20008111A7C0109116031F778091E30080786D -:102E3000812B8093E3008091E800877F8093E800F6 -:102E40000E949E148091E80080FFFCCF8091E300F7 -:102E500080688093E300111102C082E001C083E02A -:102E60008093130386C08058823008F082C080911E -:102E70001603909117038C3D53E0950779F583E095 -:102E80008A838AE289834FB7F894DE01139620E0A3 -:102E90003EE051E2E32FF0E050935700E49120FF31 -:102EA00003C0E295EF703F5FEF708E2F90E0EA3045 -:102EB00010F0C79601C0C0968D939D932F5F24316B -:102EC00049F74FBF8091E800877F8093E8006AE26E -:102ED00070E0CE0101960E94A51314C0AE014F5FB1 -:102EE0005F4F609118030E94EC12BC01009709F437 -:102EF00040C09091E800977F9093E80089819A8183 -:102F00000E9408148091E8008B778093E80031C01C -:102F1000803879F58091E800877F8093E800809180 -:102F20000F038093F1008091E8008E778093E80092 -:102F30000E949E141EC081111CC0909116039230F5 -:102F4000C0F48091E800877F8093E80090930F039E -:102F50000E949E1480910F03811106C08091E300AE -:102F600087FD02C081E001C084E0809313030E94CA -:102F7000EA118091E80083FF0AC08091E800877F12 -:102F80008093E8008091EB0080628093EB00AA962A -:102F90000FB6F894DEBF0FBECDBFDF91CF911F916A -:102FA00008950895CF93809113038823A1F0C091D1 -:102FB000E900CF709091EC00892F817090FD80E83E -:102FC000C82B1092E9008091E80083FD0E948016D2 -:102FD000CF70C093E900CF910895909393028093AE -:102FE00092020895E0919202F0919302309721F0BD -:102FF0000190F081E02D099480E00895E091920223 -:10300000F0919302309721F00280F381E02D099432 -:103010000895E0919202F0919302309721F004809C -:10302000F581E02D0994089520919002309191024C -:103030008217930771F09093910280939002E09130 -:103040009202F0919302309721F00680F781E02DF3 -:103050000994089520918E0230918F028217930770 -:1030600071F090938F0280938E02E0919202F09122 -:103070009302309721F00084F185E02D09940895A2 -:1030800008950C9440180E94C7230E94180A0E94B9 -:103090004D240C94FC285F926F927F928F929F92A6 -:1030A000AF92BF92CF92DF92EF92FF920F931F9356 -:1030B000CF93DF9300D000D01F92CDB7DEB70E9430 -:1030C0005D0A9DE9C92E92E0D92E03E010E0AA2402 -:1030D000A394B12C502E802F0E94D80A4C01F601E7 -:1030E000729062906F016826792661147104A1F4D0 -:1030F0000150110978F78FEF89838A831B820E9420 -:10310000D0238160782F9D838C8349815A816B8184 -:103110008D810E94FB1838C08091F20281FD0E94CF -:10312000E10A2BE030E07501022E02C0EE0CFF1C1C -:103130000A94E2F7C70186219721892B09F1298397 -:103140005A828E209F2091E0892809F490E09B8389 -:103150000E94D0238160782F9D838C8349815A817E -:103160006B818D810E94FB18000F111FF801EB5637 -:10317000FD4F80819181E826F926F182E08204C02A -:103180002150310980F6B4CF0E9434261091940268 -:103190000E94F2171817D1F00E94F2178093940240 -:1031A0000F900F900F900F900F90DF91CF911F9184 -:1031B0000F91FF90EF90DF90CF90BF90AF909F90D6 -:1031C0008F907F906F905F900C94020A0F900F90F9 -:1031D0000F900F900F90DF91CF911F910F91FF9063 -:1031E000EF90DF90CF90BF90AF909F908F907F90A7 -:1031F0006F905F900895CF93DF93CDB7DEB72B9795 -:103200000FB6F894DEBF0FBECDBF4F8358876987D6 -:103210007A878B87DE01119686E0FD0111928A95EF -:10322000E9F785E0FE01379601900D928A95E1F766 -:1032300049815A816B817C818D819E810E94721FA0 -:103240002B960FB6F894DEBF0FBECDBFDF91CF91A6 -:103250000895CF93882309F4C2C0C82F823859F447 -:103260000E94F21781FDBBC089E30E944C220E949C -:10327000192389E30CC0833879F40E94F21780FD8A -:10328000AEC083E50E944C220E94192383E50E9470 -:103290008E22CF910C941923843859F40E94F2178E -:1032A00082FD9DC087E40E944C220E94192387E47E -:1032B000EECF8CEF8C0F813A48F48C2F0E9464285B -:1032C00081118DC08C2F0E944C22E3CF80E28C0FA5 -:1032D000883048F4C77081E001C0880FCA95EAF7CA -:1032E0000E94D222D6CF8BE58C0F833078F4C53A7A -:1032F00029F0C63A31F083E890E005C081E890E01B -:1033000002C082E890E0CF910C94141888E58C0FED -:10331000833108F064C0C83A39F1C93A41F1CA3A78 -:1033200049F1CB3A51F1CC3A59F1CD3A61F1C03B78 -:1033300069F1CE3A71F1CF3A79F1C13B81F1C23BEB -:1033400089F1C33B91F1C43B99F1C53BA1F1C63B67 -:10335000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BC7 -:10336000C9F180E090E038C082EE90E035C089EE8F -:1033700090E032C08AEE90E02FC085EB90E02CC048 -:1033800086EB90E029C087EB90E026C08CEC90E0C3 -:1033900023C08DEC90E020C083E891E01DC08AE856 -:1033A00091E01AC082E991E017C084E991E014C06D -:1033B00081E292E011C083E292E00EC084E292E0EA -:1033C0000BC085E292E008C086E292E005C087E289 -:1033D00092E002C08AE292E0CF910C942A18CF9139 -:1033E0000895882309F44BC0823859F40E94F217DB -:1033F00081FF45C089E30E944C220E94192389E382 -:103400000CC0833871F40E94F21780FF38C083E546 -:103410000E944C220E94192383E50E948E220C9464 -:103420001923843859F40E94F21782FF28C087E4D8 -:103430000E944C220E94192387E4EFCF9CEF980F43 -:10344000913A58F390E2980F983050F4877091E0D9 -:1034500001C0990F8A95EAF7892F0E94D822DFCF01 -:103460009BE5980F933020F480E090E00C941418C2 -:10347000885A833120F480E090E00C942A18089553 -:10348000882321F00E94D2220C94192308958823C6 -:1034900021F00E94D8220C94192308957F928F92D4 -:1034A0009F92AF92BF92CF92DF92EF92FF920F93D3 -:1034B0001F93CF93DF931F92CDB7DEB77C01C62E4B -:1034C000772EFC01058102950F70128111110E9467 -:1034D000EF220E944522882379F0112369F080E2CF -:1034E0008C0D883048F082E00E942E220E944522F6 -:1034F00091E0D82ED92601C0D12CE72DE295EF70AE -:10350000F0E0E05AFF4F0C948D2D872D807F072D22 -:103510000F70882311F00295007F112389F000239A -:1035200009F499C180E28C0D883020F4802F0E942C -:10353000D22203C0802F0E94E2220E9419238BC155 -:103540008C2D0E94F119002309F4C3C180E28C0D77 -:10355000883020F4802F0E94D82203C0802F0E9440 -:10356000E8220E941923B5C1872D807F972D9F7077 -:10357000803211F4892F03C0892F8295807FCC205F -:1035800021F0F1E0CF16A1F01DC0112339F0002386 -:1035900019F1013009F50E9402239BC1002319F0A3 -:1035A000013009F496C189830E940523898110C1E5 -:1035B000112321F0063008F08CC10EC0053008F050 -:1035C00088C106C1112359F0002331F0F70195811C -:1035D00090FF41C19F7095830E94401A7AC10023D9 -:1035E00009F4F6C03EC1872D86958695837090E0DC -:1035F000009719F0019761F06CC1112321F08C2D17 -:10360000972D937002C080E090E00E94141861C171 -:10361000112321F08C2D972D937002C080E090E053 -:103620000E942A1856C18C2D112319F00E943C25A6 -:1036300002C00E94A4250E9429264BC1872D8370B9 -:1036400009F052C0111145C18C2D82958695877065 -:10365000880F880F9C2D9F70892E912CA12CB12C46 -:10366000082E04C0880C991CAA1CBB1C0A94D2F713 -:10367000C4FE14C00FE010E020E030E0B901A80162 -:1036800004C0440F551F661F771F8A95D2F7CB01E0 -:10369000BA01609570958095909503C060E070E0E8 -:1036A000CB01272D26952695237030E02230310559 -:1036B00069F02330310589F0682979298A299B2905 -:1036C0002130310571F00E94BA2003C1682979299F -:1036D0008A299B290E94D620FCC00E94BA20C501DD -:1036E000B4010E949E20F5C0112319F0872D81702E -:1036F00001C08695882309F4ECC08C2D82958695AF -:103700008770880F880F9C2D9F70892E912CA12C7B -:10371000B12C082E04C0880C991CAA1CBB1C0A944E -:10372000D2F7C4FE14C00FE010E020E030E0B90191 -:10373000A80104C0440F551F661F771F8A95D2F752 -:10374000CB01BA01609570958095909503C060E0BB -:1037500070E0CB01272D269526952370422F50E04F -:103760004230510569F04330510589F068297929C3 -:103770008A299B294130510571F00E949421A9C0EA -:10378000682979298A299B290E94B021A2C00E9418 -:103790009421C501B4010E9478219BC08C2D90E03A -:1037A000FC01E05EF109E531F10508F050C0E05997 -:1037B000FF4F0C948D2D0C2D0F70872D8F711123C1 -:1037C00021F00E941121802F07CF0E943221802FEB -:1037D0000E94471A7EC0112341F0053008F079C0DD -:1037E000872D8F710E94572174C0063008F071C078 -:1037F000F7CF112339F0872D8F710E94112169C0F5 -:103800001123C9F3872D8F710E94322162C01123C9 -:1038100029F0872D8F710E94FC205BC00E94F2204E -:1038200058C0112351F0172D1F71812F0E941121B3 -:1038300063E0812F0E9425224CC081E00E942E224D -:10384000023008F446C082E00E942E2242C01123BA -:1038500031F0002381F28C2D0E9429193AC00023F7 -:1038600089F28C2D0E94F11934C0472D4F706C2DB8 -:10387000C7010E945B040E9416202BC0111129C0B1 -:10388000472D4F7050E042305105B9F04CF44115CE -:10389000510581F041305105E1F40E94242919C0FD -:1038A0004330510569F04430510599F48C2D0E9444 -:1038B00076290FC00E940D290CC00E94402909C022 -:1038C0000E94532906C0472D4F706C2DC7010E94DE -:1038D000E306DD20F9F00E94212280FD1BC0F701E4 -:1038E00012820E941B220E941121C7010E94991C72 -:1038F0000E941B220F90DF91CF911F910F91FF909B -:10390000EF90DF90CF90BF90AF909F908F907F907F -:103910000C9432210F90DF91CF911F910F91FF9066 -:10392000EF90DF90CF90BF90AF909F908F907F905F -:1039300008950F931F93CF93DF93EC0188819981B2 -:103940002B813C81232BB9F09F3F11F48F3F99F0DD -:10395000CE010E94E204882371F0688179818A8116 -:103960000E9417228C010E94CC210E949320B80152 -:10397000CE010E944E1ADF91CF911F910F910895B1 -:103980000E94EF220E94FF220E94C4220E9419235B -:103990000E94DA260E94292680E090E00E941418F6 -:1039A00080E090E00C942A180E94DF220C94C01C46 -:1039B0000E940C22292F22952F7030E02C303105E7 -:1039C0004CF42A3031056CF4225031092230310593 -:1039D000A8F407C02C30310569F02F30310551F0C3 -:1039E0000DC0803F69F018F4803E40F409C0843F68 -:1039F00029F406C093FB882780F9089580E0089594 -:103A000081E00895CF93DF9300D000D01F92CDB70F -:103A1000DEB70F900F900F900F900F90DF91CF9126 -:103A20000895CF93DF9300D000D000D0CDB7DEB79C -:103A300026960FB6F894DEBF0FBECDBFDF91CF91B3 -:103A400008951F93CF93DF93C0919D0216E080915C -:103A50009E02C81799F0D0E01C9FF0011D9FF00D49 -:103A60001124E156FD4F408151816281738184812F -:103A700095810E94111D2196C770E9CFDF91CF91EA -:103A80001F9108954091CF025091D0026091D102D0 -:103A90007091D2028091D3029091D4020C94111DA6 -:103AA0008091D40282958F7009F054C08091D10228 -:103AB000882309F44FC080919D02A0919E026091DD -:103AC000CF027091D0024091D2025091D302B6E061 -:103AD0008A1709F43FC090E041155105C1F17F3FBD -:103AE00011F46F3FA1F1B89FF001B99FF00D1124BF -:103AF000E156FD4F218172132AC02081621327C035 -:103B00002281211124C0238134812417350710F428 -:103B100021503109241B350B283C3105C0F420917C -:103B2000D4022F7020612093D40226E0289FF00158 -:103B3000299FF00D1124EC55FD4F80818F7080611D -:103B400080838FEC92E00E94991C0C94211D0196B9 -:103B50008770BECF0895CF92DF92EF92FF920F93BE -:103B60001F93CF93DF93CDB7DEB762970FB6F8946C -:103B7000DEBF0FBECDBF8C0185E0F801DE011D96D2 -:103B800001900D928A95E1F7D8014C9111965C91C4 -:103B9000119712966C9112971396CD90DC90149712 -:103BA0003091CF027091D0028091D2029091D302D5 -:103BB000009709F46BC17F3F19F43F3F09F466C1D8 -:103BC000E090D102EE2009F4C0C02091D402C816C2 -:103BD000D90628F0F601E81BF90BCF0104C0809547 -:103BE00090958C0D9D1DFF24F394883C910578F0F1 -:103BF000F12C207F09F0C6C07C2DD98AC88A89891A -:103C00000E94021D8FEC92E00E94991CB1C0822F8D -:103C1000807F09F046C0751314C0341312C06111BF -:103C200010C02F7020612093D4020E94421D8FEC9F -:103C300092E00E94991C8091D402D80115968C9331 -:103C40002EC0CD2819F15F3F11F44F3FF9F0F62E49 -:103C500061111CC080919D0220919E0236E0821766 -:103C600009F45AC090E0389FF001399FF00D1124FB -:103C7000E156FD4F7181571306C07081471303C091 -:103C80007281711103C001968770E9CFF62E662309 -:103C900009F418C18091D40281608093D402F12C80 -:103CA00011C1751308C0341306C0611104C080919E -:103CB000D402D801C3C04D875E878D859E856A8BEF -:103CC0000E94D81C6A898823E1F16623D1F12091F2 -:103CD000D402822F82958F7090E0029774F08091C9 -:103CE000CF029091D00298878F831986DB86CA868F -:103CF0002C87CE0107960E94991C86E0F801AFEC54 -:103D0000B2E001900D928A95E1F70E94501D0E9449 -:103D1000421DFF24F394D6C04D875E878D859E8516 -:103D20000E940C22292F22952F7030E0223031057D -:103D30000CF0BCC09F7009F0B6C0805E883008F4FB -:103D4000C1C0C8010E94991CE4CFC816D90608F466 -:103D500053C0F601E81BF90BCF01883C910508F42C -:103D600050C0F12C7C2DD98AC88A89890E94021DF5 -:103D7000EFECF2E086E0DF011D928A95E9F70E9400 -:103D8000421DA0C0751314C0341312C0611110C0BD -:103D90008091D402F8018583C8010E94991C86E0B5 -:103DA000EFECF2E0DF011D928A95E9F7FE2C8AC064 -:103DB0004D875E878D859E856A8B0E94D81C6A8997 -:103DC000882309F4BECF662309F4BBCF2091D40227 -:103DD000822F82958F7090E002970CF48ECF8091A5 -:103DE000CF029091D0029A8389831B82DD82CC829C -:103DF0002E83CE0101967FCF809590958C0D9D1DD1 -:103E0000ACCFF62E662309F49CCF75132EC0341365 -:103E10002CC02091D40220FD1FC0822F82958F706C -:103E2000D9F0D80115962C9315978F3049F08F5FF4 -:103E3000982F9295907F822F8F70892B15968C9357 -:103E4000C8010E94991C86E0F801AFECB2E0019035 -:103E50000D928A95E1F793CF86E0F801AFECB2E0DE -:103E600001900D928A95E1F72DC04D875E878D8573 -:103E70009E850E94D81C811140CF8091D402816020 -:103E80008093D402C8010E94991C1CC0662309F4C7 -:103E900058CF4D875E878D859E850E94D81C8823CC -:103EA00009F44FCF2ACF811148CF0CC024303105FF -:103EB0000CF047CF9F7009F440CFF8019581907FB7 -:103EC00009F03BCF8F2D62960FB6F894DEBF0FBE80 -:103ED000CDBFDF91CF911F910F91FF90EF90DF90B9 -:103EE000CF9008951F93CF93DF93CDB7DEB72C9774 -:103EF0000FB6F894DEBF0FBECDBF4F8358876987DA -:103F00007A878B879C87CE0107960E94AB1D8823FA -:103F100069F08F8198852A853B85232BF1F19F3F9E -:103F200009F063C08F3F09F060C037C086E0FE0132 -:103F30003796DE01119601900D928A95E1F76F8117 -:103F40007885EA85FB85309741F17F3F11F46F3F1B -:103F500021F120919E0230E0C901019687709927D6 -:103F600040919D0250E08417950709F447C069838A -:103F70007A83FD83EC8396E0929FD001939FB00DEE -:103F80001124A156BD4FFE01319601900D929A95D4 -:103F9000E1F780939E020E94211D16E080919D0210 -:103FA00090919E028917C1F1189FC001112481567A -:103FB0009D4F0E94AB1D882379F1E0919D021E9FC9 -:103FC000F0011124E156FD4F4081518162817381DE -:103FD000848195810E94111D80919D0290E001963F -:103FE0008770992780939D02D9CF4F815885698525 -:103FF0007A858B859C850E94111DCFCF0E94D41C91 -:1040000010929E0210929D02EFECF2E086E0DF013A -:104010001D928A95E9F7C1CF2C960FB6F894DEBFB2 -:104020000FBECDBFDF91CF911F910895EF92FF9208 -:104030000F931F93CF93DF938C01009709F46CC00B -:10404000F12CEE24E394E8012196F8018491843761 -:1040500040F4843008F051C0813081F0823019F191 -:104060005BC0853709F444C0A8F19CE7980F9037EE -:1040700008F052C08F770E94F11941C00E5F1F4FA8 -:10408000FE01C49180E28C0F883048F4C7708E2DF9 -:1040900001C0880FCA95EAF70E94F22214C08C2F43 -:1040A0000E9429192DC00E5F1F4FFE01C49180E2AE -:1040B0008C0F883058F4C7708E2D01C0880FCA95B8 -:1040C000EAF70E94F8220E9419231AC08C2F0E943E -:1040D000F11916C00E5F1F4FFE01C491CC2381F071 -:1040E0008FE99FE00197F1F700C00000C150F6CFC3 -:1040F0000E5F1F4FFE01F49003C00E9429198E012C -:104100008F2D882309F49FCFEFE9FFE03197F1F776 -:1041100000C000008150F5CFDF91CF911F910F912A -:10412000FF90EF90089508956093D9027093DA029A -:104130008093DB029093DC020C94C01C0F931F93BE -:104140000091D9021091DA022091DB023091DC0259 -:10415000DC01CB01802B912BA22BB32B8093D902B6 -:104160009093DA02A093DB02B093DC021F910F91CF -:104170000C94C01C0F931F930091D9021091DA0286 -:104180002091DB023091DC02DC01CB018023912302 -:10419000A223B3238093D9029093DA02A093DB0287 -:1041A000B093DC021F910F910C94C01C0F931F93CE -:1041B0000091D9021091DA022091DB023091DC02E9 -:1041C000DC01CB0180279127A227B3278093D90256 -:1041D0009093DA02A093DB02B093DC021F910F915F -:1041E0000C94C01C1092D5021092D6021092D702E5 -:1041F0001092D8020C94C01C41E050E060E070E0E6 -:1042000004C0440F551F661F771F8A95D2F740934D -:10421000D5025093D6026093D7027093D8020C94C3 -:10422000C01C41E050E060E070E004C0440F551F46 -:10423000661F771F8A95D2F78091D5029091D6029A -:10424000A091D702B091D802482B592B6A2B7B2B17 -:104250004093D5025093D6026093D7027093D80250 -:104260000C94C01C41E050E060E070E004C0440FDA -:10427000551F661F771F8A95D2F740955095609518 -:1042800070958091D5029091D602A091D702B091FD -:10429000D802482359236A237B234093D5025093A5 -:1042A000D6026093D7027093D8020C94C01C41E0F0 -:1042B00050E060E070E004C0440F551F661F771F98 -:1042C0008A95D2F78091D5029091D602A091D7021B -:1042D000B091D802482759276A277B274093D502F7 -:1042E0005093D6026093D7027093D8020C94C01CEE -:1042F0000F931F930091D5021091D6022091D702FF -:104300003091D802DC01CB01802B912BA22BB32B57 -:104310008093D5029093D602A093D702B093D8028F -:104320001F910F910C94C01C0F931F930091D50205 -:104330001091D6022091D7023091D802DC01CB0136 -:1043400080239123A223B3238093D5029093D60296 -:10435000A093D702B093D8021F910F910C94C01C68 -:104360000F931F930091D5021091D6022091D7028E -:104370003091D802DC01CB0180279127A227B327F7 -:104380008093D5029093D602A093D702B093D8021F -:104390001F910F910C94C01C0895CF92DF92EF9261 -:1043A000FF920F931F93CF93DF938C01C090D9029C -:1043B000D090DA02E090DB02F090DC028091D5022E -:1043C0009091D602A091D702B091D802C82AD92ADA -:1043D000EA2AFB2ACFE1D0E0D701C6010C2E04C0A7 -:1043E000B695A795979587950A94D2F780FF06C052 -:1043F000B8018C2F0E946809019721F4219760F77A -:1044000080E001C08C2FDF91CF911F910F91FF9021 -:10441000EF90DF90CF900895CF93DF93EC010E944F -:10442000CD21BE010E946809DF91CF910895CB0193 -:104430000E940C2208958091DD02859585958595D1 -:1044400008958091DD028770089598E0899F90011A -:104450001124262B2093DD020C9411212091DD02E2 -:10446000809582238093DD02982F977069F430E065 -:10447000482F552747FD50952417350729F0859576 -:10448000859585950C94322108959091DD02977061 -:1044900081E009F480E0089590911501992321F0BD -:1044A00090911601911109C02091170130911801C6 -:1044B000F90132969FEF40E01FC0982F9695969590 -:1044C00096959F3050F5E0911701F0911801E90F92 -:1044D000F11D877021E030E0A90102C0440F551F93 -:1044E0008A95E2F7CA019181892B818308959F3FC4 -:1044F00039F04F5F4E3041F051915813F8CF0DC055 -:104500005111F7CF942FF5CF9F3F39F0F901E90F03 -:10451000F11D97FDFA9582830895089590911501F4 -:10452000992321F090911601911109C02091170152 -:1045300030911801F9013296205F3F4F1FC0982F2C -:104540009695969596959F30F0F4E0911701F0912D -:104550001801E90FF11D877021E030E0A90102C0C8 -:10456000440F551F8A95E2F7CA01809591818923EE -:10457000818308953196E217F30729F0908198130B -:10458000F9CF1082F7CF089581E090E0E091170114 -:10459000F0911801E80FF91F108201968031910502 -:1045A000A9F708959091F102892B8093F102089563 -:1045B00080959091F10289238093F10208951092E1 -:1045C000F10208959091F002892B8093F0020895F2 -:1045D00080959091F00289238093F00208951092C3 -:1045E000F00208959091EF02892B8093EF020895D5 -:1045F00080959091EF0289238093EF0208951092A5 -:10460000EF0208958093DE0208951092DE0208956D -:104610008091170190911801FC0131969C01205F57 -:104620003F4F80E0919191118F5FE217F307D1F72F -:104630000895E0911701F09118018091F1028083B3 -:10464000E0911701F091180190818091F002892B7F -:104650008083E0911701F091180190818091EF0221 -:10466000892B80838091DE02882361F0E09117011D -:10467000F09118019081892B80830E940823811179 -:104680001092DE0280911701909118010C94FE1790 -:1046900020E0009739F0AC01415051098423952363 -:1046A0002F5FF7CF822F089580911303843039F163 -:1046B0001092F30220E488E190E00FB6F894A895F8 -:1046C000809360000FBE2093600080E00E94C203D0 -:1046D00080E00E94020A83B7817F846083BF83B732 -:1046E000816083BF7894889583B78E7F83BF88E18C -:1046F0000FB6F89480936000109260000FBE08958A -:104700000895089580E00E94C2030E9480230E94C1 -:104710005D0A0E9481230E94E20A91E0811101C09A -:1047200090E0892F08950E94D41C80E00E94C2036B -:104730000E94FC280E94F2170C94020A1F920F920A -:104740000FB60F9211248F939F93AF93BF938091D5 -:10475000F302811113C08091F4029091F502A091AF -:10476000F602B091F7024196A11DB11D8093F402AB -:104770009093F502A093F602B093F702BF91AF9128 -:104780009F918F910F900FBE0F901F90189582E010 -:1047900084BD93E095BD9AEF97BD80936E00089518 -:1047A0002FB7F8948091F4029091F502A091F6024F -:1047B000B091F7022FBF0895CF92DF92EF92FF9250 -:1047C0000F931F932FB7F8944091F4025091F50284 -:1047D0006091F6027091F7022FBF6A017B01EE240F -:1047E000FF248C0120E030E0C016D106E206F3067B -:1047F00010F4415051099A01281B390BC9011F912E -:104800000F91FF90EF90DF90CF9008951F920F923D -:104810000FB60F9211248F939F93AF93BF93809104 -:10482000F4029091F502A091F602B091F702019680 -:10483000A11DB11D8093F4029093F502A093F6029E -:10484000B093F702BF91AF919F918F910F900FBEE0 -:104850000F901F9018950E94EF14F8942FEF87EA9D -:1048600091E6215080409040E1F700C0000087E0D1 -:1048700090EBDC0180931E0390931F03A093200311 -:10488000B09321039CE088E10FB6F894A89580933B -:1048900060000FBE90936000FFCF0E948C248111B6 -:1048A00002C00E9468240E9497248093F2020E9412 -:1048B0009F2480931C0387FB882780F9809316012F -:1048C0000E949B24682F70E080E090E00C9494207C -:1048D0006DEE7EEF80E090E00E94B32D60E082E01C -:1048E00090E00E94A12D60E083E090E00E94A12D65 -:1048F00060E084E090E00E94A12D60E085E090E01F -:104900000E94A12D60E086E090E00E94A12D6FEF53 -:1049100087E090E00C94A12D80E090E00E949B2D18 -:1049200021E08D3E9E4F09F020E0822F089582E025 -:1049300090E00C94932D83E090E00C94932D84E010 -:1049400090E00C94932D682F84E090E00C94A12DBE -:1049500086E090E00C94932D682F86E090E00C9414 -:10496000A12D87E090E00C94932D682F87E090E0D4 -:104970000C94A12D8091FA0280FF0BC060911C0164 -:1049800085E0689FB00111247595679575956795C9 -:104990002BC081FF09C060911C0185E0689FB001B8 -:1049A00011247595679520C082FF07C060911C0196 -:1049B00085E0689FB001112417C09091FB029923F4 -:1049C000D1F060911B01961788F720911C0185E0BA -:1049D000289F90011124929FA001939F500D1124B4 -:1049E00070E0CA010E94792D6038710540F46115AC -:1049F000710539F002C065E070E0862F08958FE7F9 -:104A0000089581E008958091FA0280FF08C06091C6 -:104A10001A0170E0759567957595679521C081FFBE -:104A200006C060911A0170E07595679519C082FF04 -:104A300004C060911A0170E010C09091FB029923AC -:104A4000C1F0609119019617A0F780911A01899F12 -:104A5000C001112470E00E94792D6038710528F49E -:104A60006115710521F0862F08958FE7089581E083 -:104A7000089561E070E0F4CF803F21F40E94BA24F1 -:104A8000819504C0813F29F40E94BA248093FE02DC -:104A90000895823F21F40E94BA24819504C0833F87 -:104AA00029F40E94BA248093FD020895893F19F4E5 -:104AB0000E94032505C08A3F31F40E940325819599 -:104AC0008093FF0208958B3F21F40E940325819576 -:104AD00004C08C3F29F40E940325809300030895AD -:104AE000843F21F48091FC02816017C0853F21F44E -:104AF0008091FC02826011C0863F21F48091FC020B -:104B000084600BC0873F21F48091FC02886005C05F -:104B1000883F31F48091FC0280618093FC0208950B -:104B20008D3F21F48091FA0281600BC08E3F21F409 -:104B30008091FA02826005C08F3F29F48091FA02C9 -:104B400084608093FA020895803F39F48091FE02D8 -:104B500087FF6CC01092FE0269C0813F29F48091EA -:104B6000FE021816BCF362C09091FD02823F29F448 -:104B700097FF5CC01092FD0259C0833F19F41916CB -:104B8000CCF354C0893F41F48091FF0218160CF019 -:104B90004DC01092FF024AC08A3F29F48091FF0263 -:104BA00087FF44C0F6CF8B3F39F48091000387FF25 -:104BB0003DC0109200033AC08C3F29F4809100035D -:104BC0001816BCF333C0843F21F48091FC028E7F21 -:104BD00017C0853F21F48091FC028D7F11C0863F74 -:104BE00021F48091FC028B7F0BC0873F21F48091E0 -:104BF000FC02877F05C0883F31F48091FC028F7EE4 -:104C00008093FC0213C08D3F21F48091FA028E7FC5 -:104C10000BC08E3F21F48091FA028D7F05C08F3F3B -:104C200029F48091FA028B7F8093FA028091FD0231 -:104C300081110EC08091FE0281110AC08091FF0295 -:104C4000811106C080910003811102C01092FB0205 -:104C500008958CEF92E00E9409180E94D02390934F -:104C6000F9028093F80208951F93CF93DF93809108 -:104C7000F8029091F9020E94DC23AC019091FB02B2 -:104C8000992321F020911D0130E006C020911E01E2 -:104C90008AE0289F900111244217530708F486C028 -:104CA0008091FD02C091FE02D091FF02109100039D -:104CB000811107C0C11176C0D11174C0111172C029 -:104CC00075C09F3F19F09F5F9093FB02181624F464 -:104CD0000E94BA248093FD028091FD0287FF05C0E7 -:104CE0000E94BA2481958093FD021C1624F40E9430 -:104CF000BA248093FE028091FE0287FF05C00E94C5 -:104D0000BA2481958093FE026091FD02662339F1F9 -:104D1000C091FE02CC2319F1772767FD7095872F8C -:104D2000972F0E949B2A23E333E343E35FE30E9430 -:104D3000AB2B0E94682A6093FD026C2F772767FDDA -:104D40007095872F972F0E949B2A23E333E343E339 -:104D50005FE30E94AB2B0E94682A6093FE021D163F -:104D600024F40E9403258093FF028091FF0287FFB5 -:104D700005C00E94032581958093FF02111624F43B -:104D80000E940325809300038091000387FF05C0E4 -:104D90000E940325819580930003DF91CF911F919D -:104DA0000C9429269F3F09F08ECF96CFDF91CF91AB -:104DB0001F910895ECEFF2E085E0DF011D928A95E6 -:104DC000E9F71092FB021092FA020895833081F104 -:104DD00028F4813059F08230D1F00895853009F4FB -:104DE00049C0B8F1863009F456C0089580911E017B -:104DF000262F30E0280F311D2F3F310524F4680F96 -:104E000060931E0108958FEF80931E010895809195 -:104E10001D01262F30E0280F311D2F3F310524F4CE -:104E2000680F60931D0108958FEF80931D01089511 -:104E300080911C01262F30E0280F311D2F3F3105B6 -:104E400024F4680F60931C0108958FEF80931C0178 -:104E5000089580911B01262F30E0280F311D2F3F30 -:104E6000310524F4680F60931B0108958FEF809340 -:104E70001B01089580911A01262F30E0280F311D63 -:104E80002F3F310524F4680F60931A0108958FEFC6 -:104E900080931A01089580911901262F30E0280F80 -:104EA000311D2F3F310524F4680F609319010895D7 -:104EB0008FEF809319010895833011F128F4813028 -:104EC00049F0823091F00895853081F120F18630EB -:104ED000C1F1089580911E01681720F4861B80930C -:104EE0001E01089510921E01089580911D016817FA -:104EF00020F4861B80931D01089510921D010895D2 -:104F000080911C01681720F4861B80931C01089572 -:104F100010921C01089580911B01681720F4861BD4 -:104F200080931B01089510921B01089580911A012E -:104F3000681720F4861B80931A01089510921A01B5 -:104F4000089580911901681720F4861B8093190138 -:104F500008951092190108950F931F93873208F056 -:104F600048C08E3108F08DC0803109F477C008F553 -:104F7000873009F461C068F4863009F09DC08091E3 -:104F8000F202817F8E7F8093F20281E080930203A0 -:104F900094C08B3009F489C08E3009F08DC08091A7 -:104FA000F20282FB222720F991E0922790FB82F9FE -:104FB0005EC0863109F479C060F4813109F07CC0AB -:104FC0000E94D41C9091160181E0892780931601DC -:104FD0006CC0893109F469C08B3109F06DC08091D2 -:104FE000F20281FB222720F991E0922790FB81F9C0 -:104FF0003EC0883309F459C050F4893209F457C0CF -:10500000853309F454C0873209F451C055C0833444 -:1050100009F44DC028F48A3308F44EC0895332C0D5 -:10502000883409F049C00E94D41C0E94120B0E94CF -:10503000D9040E942B2439C09091F202892F8095C7 -:10504000817080FB90F929F0966098609093F2024D -:1050500034C0997F977F9093F20227C08091F2022B -:1050600083FB222720F991E0922790FB83F980931C -:10507000F2029923D1F08091F20281608093F202D2 -:1050800014C08D5141E050E060E070E08A019B0166 -:1050900004C0000F111F221F331F8A95D2F7C901C8 -:1050A000B8010E9494200E94D41C81E006C061E0F7 -:1050B00070E080E090E0F5CF80E01F910F910895BF -:1050C00080E0089580E00895CF93C82F8091020377 -:1050D000813069F018F08230C9F184C0E091170185 -:1050E000F09118018081823209F07EC007C0E09102 -:1050F0001701F09118018081823261F48C2F0E9497 -:105100006028811104C08C2F0E94AC271DC081E053 -:1051100090E01AC08C2F0E946228811114C0C43103 -:1051200079F048F4CB3079F0C03109F061C082E009 -:105130008093020308C0C93219F0C83321F058C067 -:105140001092020355C081E0817054C0C93291F1C0 -:1051500020F5C43179F1B0F4C73009F047C08EE1D1 -:1051600080931E0182E380931D018AE080931C01DD -:1051700084E180931B0188E080931A0188E2809388 -:10518000190134C0CE51C63088F5EC2FF0E0EA5456 -:10519000FE4F80818093010329C0CE34E9F020F4D2 -:1051A000CB3421F56AE013C0C13579F0C235F1F492 -:1051B00061E00DC080910103882319F01092010372 -:1051C00015C081E08093020315C061E006C08091A4 -:1051D00001030E94E6260AC06AE0809101030E9452 -:1051E0005C2704C01092020380E004C081E002C08A -:1051F00080E0AACFCF9108950E948C24811102C033 -:105200000E9468240E94A82480931D0380FF02C08E -:10521000869501C080E00C94C20380911D03982FF5 -:105220009695292F30E0233031054CF49F5F990F7C -:105230008170892B816080931D030E94AC24809132 -:105240001D0386950C94C20380911D03982F96959B -:1052500091F09158990F8170892B80931D038E7F57 -:1052600091E009F490E080911D0390FB80F9809318 -:105270001D030E94AC2480911D0386950C94C203EB -:1052800080911D03982F909590FB80F980931D03CA -:105290000E94AC2480911D0380FF02C0869501C04E -:1052A00080E00C94C20390911D03892F86958F5F37 -:1052B0008F779170843028F4880F892B80931D0399 -:1052C00002C090931D0380911D038E7F91E009F42D -:1052D00090E080911D0390FB80F980931D030E9454 -:1052E000AC2480911D0386950C94C20320911D036C -:1052F000922F96958927982F990F822F8170892B4D -:1053000080931D038E7F91E009F490E080911D034E -:1053100090FB80F980931D030E94AC2480911D03B3 -:1053200086950C94C20380911D038695089550586C -:10533000BB27AA270ED0D1C1C2D130F0C7D120F0EF -:1053400031F49F3F11F41EF4B7C10EF4E095E7FB72 -:105350009FC1E92FD3D180F3BA176207730784077F -:10536000950718F071F49EF5EBC10EF4E0950B2E45 -:10537000BA2FA02D0B01B90190010C01CA01A001A7 -:105380001124FF27591B99F0593F50F4503E68F102 -:105390001A16F040A22F232F342F4427585FF3CF43 -:1053A000469537952795A795F0405395C9F77EF414 -:1053B0001F16BA0B620B730B840BBAF09150A1F05D -:1053C000FF0FBB1F661F771F881FC2F70EC0BA0FE3 -:1053D000621F731F841F48F4879577956795B7956B -:1053E000F7959E3F08F0B3CF9395880F08F0992763 -:1053F000EE0F97958795089527D108F481E00895D9 -:105400000CD06BC163D140F05AD130F021F45F3F32 -:1054100019F03EC1511195C14FC170D198F3992334 -:10542000C9F35523B1F3951B550BBB27AA27621768 -:105430007307840738F09F5F5F4F220F331F441FAD -:10544000AA1FA9F333D00E2E3AF0E0E830D09150E5 -:105450005040E695001CCAF729D0FE2F27D0660FD2 -:10546000771F881FBB1F261737074807AB07B0E811 -:1054700009F0BB0B802DBF01FF2793585F4F2AF027 -:105480009E3F510568F004C15CC15F3FECF3983E5C -:10549000DCF3869577956795B795F7959F5FC9F784 -:1054A000880F911D9695879597F90895E1E0660F0D -:1054B000771F881FBB1F621773078407BA0720F086 -:1054C000621B730B840BBA0BEE1F88F7E0950895EF -:1054D00004D06894B11135C1089518D188F09F5750 -:1054E00090F0B92F9927B751A0F0D1F0660F771F30 -:1054F000881F991F1AF0BA95C9F712C0B13081F010 -:105500001FD1B1E008951CC1672F782F8827B85F9D -:1055100039F0B93FCCF3869577956795B395D9F770 -:105520003EF490958095709561957F4F8F4F9F4F7A -:105530000895E89409C097FB3EF490958095709586 -:1055400061957F4F8F4F9F4F9923A9F0F92F96E9CF -:10555000BB279395F695879577956795B795F11144 -:10556000F8CFFAF4BB0F11F460FF1BC06F5F7F4FE1 -:105570008F4F9F4F16C0882311F096E911C07723F3 -:1055800021F09EE8872F762F05C0662371F096E8FC -:10559000862F70E060E02AF09A95660F771F881FCB -:1055A000DAF7880F9695879597F9089588D018F0BF -:1055B00011F08CD038F480C0C4C0E92F9FD0B0F374 -:1055C0005523C9F3E7FB6217730784079507A8F112 -:1055D00099F3E92FFF2788232AF03197660F771F69 -:1055E000881FDAF7952F5527442332F09150504009 -:1055F000220F331F441FD2F7BB27E91BF50B621B99 -:10560000730B840BB109C1F222F4620F731F841F64 -:10561000B11D31972AF0660F771F881FBB1FEFCF90 -:10562000915050405AF041F0882332F0660F771FB6 -:10563000881F91505040C1F7939530C0869577955B -:1056400067959F5FD9F7F8CF990F0008550FAA0B00 -:10565000E0E8FEEF16161706E807F907C0F0121685 -:105660001306E407F50798F0621B730B840B950B88 -:1056700039F40A2661F0232B242B252B21F40895DD -:105680000A2609F4A140A6958FEF811D811D08957A -:1056900097F99F6780E870E060E008959F3F31F0E0 -:1056A000915020F4879577956795B795880F911D50 -:1056B0009695879597F908959FEF80EC08950024BB -:1056C0000A941616170618060906089500240A9467 -:1056D00012161306140605060895092E0394000CED -:1056E00011F4882352F0BB0F40F4BF2B11F460FF7C -:1056F00004C06F5F7F4F8F4F9F4F089557FD9058A5 -:10570000440F551F59F05F3F71F04795880F97FB85 -:10571000991F61F09F3F79F087950895121613063F -:105720001406551FF2CF4695F1DF08C0161617066E -:105730001806991FF1CF86957105610508940895A3 -:10574000E894BB2766277727CB0197F908957CDF7C -:1057500008F48FEF08950BD0C0CFB1DF28F0B6DF8B -:1057600018F0952309F094CFA7CF1124EACFC6DF14 -:10577000A0F3959FD1F3950F50E0551F629FF00164 -:10578000729FBB27F00DB11D639FAA27F00DB11DBD -:10579000AA1F649F6627B00DA11D661F829F222746 -:1057A000B00DA11D621F739FB00DA11D621F839FCD -:1057B000A00D611D221F749F3327A00D611D231FA3 -:1057C000849F600D211D822F762F6A2F11249F57F1 -:1057D00050408AF0E1F088234AF0EE0FFF1FBB1F14 -:1057E000661F771F881F91505040A9F79E3F5105B3 -:1057F00070F04ECFA6CF5F3FECF3983EDCF386957A -:1058000077956795B795F795E7959F5FC1F7FE2B5D -:10581000880F911D9695879597F90895FA01EE0FD7 -:10582000FF1F30962105310599F16115710561F46D -:105830008038BFE39B0749F168949038810561F097 -:105840008038BFEF9B0741F0992342F5FF3FE10508 -:105850003105210511F1E8940894E795D901AA23AF -:1058600029F4AB2FBE2FF85FD0F310C0FF5F70F4A8 -:10587000A695E0F7F73950F019F0FF3A38F49F7722 -:105880009F930CD00F9007FC905808953EF014CFD2 -:1058900060E070E080E89FE308954FE79F775F93B3 -:1058A0004F933F932F939ED02F913F914F915F91B4 -:1058B00052DF05C019F40EF0EBCE42CFFDCE26DF4D -:1058C000C8F39638C0F707F80F92E8942BE33AEA4A -:1058D00048EB5FE74EDF0F920F920F924DB75EB726 -:1058E0000F92C0D0EAE0F1E016D04F915F91EF91B6 -:1058F000FF91E595EE1FFF1F49F0FE57E068442732 -:10590000EE0F441FFA95E1F74195550B32D00F90F9 -:1059100007FE26C00895DF93CF931F930F93FF9246 -:10592000EF92DF927B018C01689405C0DA2EEF01C3 -:105930001EDFFE01E894A591259135914591559181 -:10594000AEF3EF0106DDFE019701A801DA9479F7C5 -:10595000DF90EF90FF900F911F91CF91DF9108950D -:105960009B01AC0160E070E080E89FE349CD90CE00 -:1059700095CECCDEE8F39923D9F3940F511DBBF3F8 -:105980009150504094F059F0882332F0660F771F01 -:10599000881F91505040C1F79E3F510544F7880F32 -:1059A000911D9695879597F908955F3FACF0983EC5 -:1059B0009CF0BB27869577956795B79508F4B160FD -:1059C0009395C1F7BB0F58F711F460FFE8CF6F5FF5 -:1059D0007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE94 -:1059E000689456CE93DEC8F39923D1F3C6F3DF93C0 -:1059F000CF931F930F93FF92C92FDD2788232AF09F -:105A00002197660F771F881FDAF720E030E040E823 -:105A10005FEB9FE3883920F0803E30F021968F774E -:105A200087DCE2E3F1E003C083DCEFE5F1E073DF64 -:105A30008B01BE01EC01FB2E6F5771097595771F25 -:105A4000880B990B78DD28E132E741E35FE38FDED5 -:105A5000AF2D9801AE01FF900F911F91CF91DF9173 -:105A600078DC3BCEFA01DC01AA0FBB1F9B01AC0125 -:105A7000BF5728F422273327442750781FC0B75137 -:105A800088F4AB2F0024469537952795011CA395E4 -:105A9000D2F3002069F0220F331F441FB395DAF3CD -:105AA0000DD045CC61307105A0E88A07B94630F4C5 -:105AB0009B01AC016627772788279078309621F0E4 -:105AC00020833183428353830895AA1BBB1B51E17A -:105AD00007C0AA1FBB1FA617B70710F0A61BB70B5E -:105AE000881F991F5A95A9F780959095BC01CD0103 -:105AF000089597FB072E16F4009407D077FD09D080 -:105B00000E94652D07FC05D03EF4909581959F4F2E -:105B10000895709561957F4F0895EE0FFF1F0590D2 -:105B2000F491E02D0994F999FECF92BD81BDF89AC8 -:105B3000992780B50895A8E1B0E042E050E00C94C8 -:105B4000BB2D262FF999FECF92BD81BDF89A019702 -:105B500000B4021639F01FBA20BD0FB6F894FA9AB5 -:105B6000F99A0FBE08950196272F0E94A22D0C943A -:105B7000A12DDC01CB01FC01F999FECF06C0F2BDDD -:105B8000E1BDF89A319600B40D9241505040B8F7FB -:065B90000895F894FFCF18 -:105B9600640007000CFF0000003F64F610841161EA -:105BA600112D11F9100101DF022808140A321E0016 -:105BB60002040507090B0C0E1011131517181A1CF1 -:105BC6001D1F2123242628292B2D2F30323435372B -:105BD600393B1F0F03764F5F6F7F49694379095938 -:105BE60053633149803F5D8B803FF8BF803FCAE1F8 -:105BF600803F73ED803FCAE1803FF8BF803F5D8BF9 -:105C0600803F3149803F0000803FF16D7F3F75EA5C -:105C16007E3F4C827E3F833F7E3F84287E3F833F8C -:105C26007E3F4C827E3F75EA7E3FF16D7F3F0000EE -:105C3600803F3F4D36398F0642060C06D305660572 -:105C46007F059805B105010203040506070809004A -:00000001FF diff --git a/keyboard/planck/keymaps/kyle/compiled.hex b/keyboard/planck/keymaps/kyle/compiled.hex deleted file mode 100644 index 9226d4c19b..0000000000 --- a/keyboard/planck/keymaps/kyle/compiled.hex +++ /dev/null @@ -1,1449 +0,0 @@ -:100000000C9496020C94DA020C94DA020C94DA0244 -:100010000C94DA020C94DA020C94DA020C94DA02F0 -:100020000C94DA020C94DA020C9478140C944A15AD -:100030000C94AC220C94DA020C94DA020C94DA02DE -:100040000C94DA020C943C030C94DA020C94DA025D -:100050000C94DA020C9414230C94DA020C94DA0255 -:100060000C94DA020C94DA020C94DA020C94DA02A0 -:100070000C94DA020C94DA020C94DA020C94DA0290 -:100080000C94ED0A0C94DA020C94DA020C94DA0265 -:100090000C94DA020C94DA020C94DA020C94DA0270 -:1000A0000C94DA020C94DA020C94DA02B715D91522 -:1000B000C716D915C7161E164116C7169616A916C5 -:1000C00093199319C219C219011A211A771B771BA8 -:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 -:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 -:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 -:10010000F91A071B0E1B151B1F1B07634236B79BF3 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A299 -:1001D000F1A3018C028C290014001A0008001500FC -:1001E00017001C0018000C00120013002A002B003E -:1001F00004001600070009000A000B000D000E00A5 -:100200000F0033003400E1001D001B000600190040 -:100210000500110010003600370038002800E40007 -:10022000E000E200E30002202C002C00012050003E -:10023000510052004F00290014001A000900130059 -:100240000A000D000F0018001C0033002A002B00CC -:10025000040015001600170007000B00110008002D -:100260000C0012003400E1001D001B000600190004 -:1002700005000E0010003600370038002800C300CB -:10028000E000E200E30002202C002C0001205000DE -:10029000510052004F0035001E001F0020002100B9 -:1002A0002200230024002500260027002A00010048 -:1002B0000320042048120100010001002D002E003F -:1002C0002F00300031000100440045006800690043 -:1002D0006A006B006C006D006E006F000100010091 -:1002E0000100010001000100010001000120AB003C -:1002F000AA00A900AE0035021E021F022002210240 -:100300002202230224022502260227022A000100DB -:100310000320042048120712010001002D022E02C2 -:100320002F023002310201003A003B003C003D0048 -:100330003E003F0040004100420043000100835066 -:100340000100010001000220010001000100AB00DA -:10035000AA00A900AE002803540068006500200030 -:1003600050006C0061006E0063006B0020004B00C9 -:100370006500790062006F00610072006400000097 -:100380002C034F007200740068006F006C0069005D -:100390006E0065006100720020004B00650079006E -:1003A00062006F00610072006400730000000403CB -:1003B000090409026D00040100A0FA09040000010B -:1003C00003010100092111010001223F00070581FD -:1003D0000308000A090401000103010200092111B8 -:1003E000010001224D000705820308000A090402EA -:1003F000000103000000092111010001223600075D -:1004000005830308000A0904030001030000000932 -:100410002111010001223900070584031000011297 -:1004200001100100000008EDFE6060010001020003 -:100430000105010906A101050719E029E7150025B5 -:1004400001950875018102050819012905950575B1 -:10045000019102950175039101050719002977158E -:10046000002501957875018102C005010980A1016F -:10047000850216010026B7001A01002AB700751080 -:1004800095018100C0050C0901A101850316010039 -:10049000269C021A01002A9C02751095018100C059 -:1004A00005010902A1010901A10005091901290598 -:1004B00015002501950575018102950175038101DE -:1004C0000501093009311581257F950275088106DE -:1004D00009381581257F950175088106050C0A38B4 -:1004E000021581257F950175088106C0C0050109A7 -:1004F00006A101050719E029E715002501950875F2 -:1005000001810295017508810105081901290595E8 -:1005100005750191029501750391010507190029DF -:10052000FF150025FF950675088100C011241FBE28 -:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A -:100540001E0390911F03A0912003B09121038730D7 -:10055000904BA740B04BB9F410921E0310921F03AA -:10056000109220031092210314BE84B7877F84BFAA -:1005700088E10FB6F89480936000109260000FBE7F -:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 -:1005900002C005900D92A03CB107D9F713E0A0EC82 -:1005A000B1E001C01D92AE31B107E1F70E94BE116A -:1005B0000C94D72C0C9400000895089581E00895C0 -:1005C00008950C94DD020C94DE020C94E0020E946B -:1005D000A12823E030E0281B3109220F2093C40119 -:1005E0000895282F2F9880918000211108C0877FBF -:1005F0008093800010928D0010928C001BC0886048 -:1006000080938000233019F48FEF9FEF0FC083E0B9 -:1006100090E0821B9109880F991F2FEF3FEFA901EE -:1006200002C0569547958A95E2F7CA0190938D00CE -:1006300080938C000C94E7020E94E70284E0809390 -:10064000C3011092C0010895279A2F988FEF9FEF52 -:1006500090938700809386008AE08093800089E1F0 -:10066000809381000E940A280C941C030E9424039A -:100670006E9A769A0C94DC021F920F920FB60F922C -:1006800011242F933F938F939F93EF93FF93E091C8 -:10069000C101F091C201CF0101969093C2018093F4 -:1006A000C1010090C30102C0F695E7950A94E2F7F4 -:1006B000EF738091C001823019F4E03251F404C02C -:1006C000813039F4EF3329F480916F008D7F80936E -:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B -:1006E000C001E39F900D11240090C40102C09695B3 -:1006F00087950A94E2F790938D0080938C00FF9188 -:10070000EF919F918F913F912F910F900FBE0F907E -:100710001F90189581E008950C948A0308950C9415 -:10072000360380911502882309F448C08091D101D5 -:100730009091D201009779F40E94DE229093D20129 -:100740008093D1018091D30190E0009771F4809162 -:10075000D40190E00AC00E94EA2220910001309169 -:1007600001012817390740F329C00197880F991F05 -:10077000880F991FFC01EB52FE4F608171818281CD -:1007800093810E94530AE091D30184E0E89FF00135 -:100790001124EB52FE4F60817181828193814FE081 -:1007A00050E00E940B0E8091D30190E00196609181 -:1007B000D40170E00E94872C8093D3010C94E10255 -:1007C000109217020C94200A0895089581E08093F6 -:1007D00017020C94E503089508958F929F92AF92AB -:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA -:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 -:10080000FC0100811181C8010E94DB20B8010E9417 -:10081000F2058C01B7010E948C03882309F4CCC136 -:100820000032F0E51F0741F4F7018281882309F4C3 -:1008300058C00E946F0EC0C10132F0E51F0741F49D -:10084000F7018281882309F44CC00E94780EB4C15C -:100850000232F0E51F0751F4F7018281882309F481 -:1008600040C00E946B0E8111F0CFE3CF0332F0E560 -:100870001F0739F4F7018281882399F10E94E6036A -:100880009BC10432F0E51F0739F4F7018281882308 -:1008900041F10E94E00390C10532F0E51F0749F4E1 -:1008A000F70182818823E9F0809117028111F1CF4D -:1008B000E5CF0632F0E51F0739F4F701828188237E -:1008C00081F00E947F0E0AC00732F0E51F0749F44D -:1008D000F7018281882329F00E948A0E0E94EC038E -:1008E0006BC180911702811105C0F70182818111CE -:1008F000CFC018C1003E110579F4F7018281882329 -:1009000009F44DC00E94200A81E0809316021092E3 -:1009100015021092D40150C1023E110559F4F7019D -:1009200082818823E1F10E94200A1092160210921F -:10093000150242C1033E110591F4F701828188231B -:1009400071F10E94200A1092160281E08093150234 -:100950001092D3011092D2011092D1012DC1023513 -:10096000110559F4F7018281882309F425C180918A -:100970000001909101010A970DC00135110579F42C -:10098000F7018281882309F417C1809100019091B9 -:1009900001010A9690930101809300010DC14091DD -:1009A000040183E2EFE1F1E0DE01119601900D9286 -:1009B0008A95E1F7F701808121E030E02C0F3D1F9F -:1009C000280F311DC9012091020130910301FC0162 -:1009D000E20FF31F6081772767FD7095640F711D2B -:1009E000882777FD8095982F0E94A92920E030E084 -:1009F00040E451E40E940E294B015C01F701218182 -:100A000084E090E0821B9109BC01882777FD8095E6 -:100A1000982F0E94A9299B01AC01C501B4010E9435 -:100A2000A6289B01AC0160E070E080E090E40E94A9 -:100A30001C2B20E030E04CED50E40E94B92A4B0121 -:100A40005C01F70182818823D1F04FE050E0C501BD -:100A5000B4010E940B0E809116028823A1F08091B0 -:100A6000D40124E0829FF0011124EB52FE4F8082DA -:100A70009182A282B3828F5F8093D40104C0C501AA -:100A8000B4010E94530A0F3F110508F02ECF94C005 -:100A90008091D00181111FC0043130E5130709F0A6 -:100AA00051C00E948E0381E08093D0010E94DE221B -:100AB0009093CF018093CE011092C7011092C9018B -:100AC0001092C8011092CB011092CA011092CD0170 -:100AD0001092CC0171C08091CE019091CF010E9403 -:100AE000EA22883C910570F48091C701E82FF0E07C -:100AF000EE0FFF1FE853FE4F118300838F5F80933B -:100B0000C7015AC0043880E5180721F005381045A0 -:100B100001F13AC0F7018281882341F01092C501AA -:100B200082E01EC0043830E5130759F58091C501F5 -:100B3000811106C086E20E94371886E20E94FF18E3 -:100B400082E01CC00438F0E51F0741F3053810456A -:100B5000D9F4F7018281882331F01092C60180E236 -:100B60000E944E1929C08091C601811106C087E2FA -:100B70000E94371887E20E94FF1880E20E945519F0 -:100B80001BC00538104529F381E08093C50180938F -:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 -:100BA000DF91CF911F910F91FF90EF90BF90AF9089 -:100BB0009F908F900C94E30280E0A3960FB6F89478 -:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 -:100BD000EF90BF90AF909F908F90089580E090E04D -:100BE000089508959CE0799FF001112490E3899F76 -:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B -:100C0000FE4F859194910895880F991FFC01E45B34 -:100C1000FF4F859194910895880F991FFC01E4532B -:100C2000FE4F8591949108950F931F93CF93DF9377 -:100C3000EC01811521E39207A0F5C11580E3D807E7 -:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 -:100C500007C2C83AD10578F4C53AD10508F06AC090 -:100C6000C130D10509F463C008F4F7C1C430D1051F -:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 -:100C8000C11590E2D90708F0AFC0C11521E0D20725 -:100C900008F0E6C1C03FD10508F4DFC18E01106540 -:100CA0001FC2C03880E5D80700F5C03790E5D907E6 -:100CB00008F0A3C0C11520E5D20709F4ACC050F478 -:100CC000CE01905480319F4008F0C7C1DF708E0183 -:100CD000106A06C2C13080E5D80709F4AEC0C4313D -:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 -:100CF00009F48EC050F4C13890E5D90709F482C0D8 -:100D000008F083C000E011EDEBC1C03181E5D807E8 -:100D100008F4A3C1C11597E5D90708F436C1CE017F -:100D200090578115904108F098C1DF7093C101E0A0 -:100D300010E0D6C1C53AD10509F494C1C63AD1052F -:100D400009F093C102E810E4CBC1C83AD10509F417 -:100D50008FC1C93AD10509F48EC1CA3AD10509F447 -:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 -:100D70008BC1CD3AD10509F48AC1C03BD10509F434 -:100D800089C1CE3AD10509F488C1CF3AD10509F419 -:100D900087C1C13BD10509F486C1C23BD10509F425 -:100DA00085C1C33BD10509F484C1C43BD10509F415 -:100DB00083C1C53BD10509F482C1C63BD10509F405 -:100DC00081C1C73BD10509F480C1C83BD10509F4F5 -:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 -:100DE0007DC100E014E47CC1CE019F700E940C061E -:100DF00078C1DD278E01106C73C1CF70DD278E01A5 -:100E0000146D6EC100E010ED6BC100E012ED68C121 -:100E100000E013ED65C10E94E21B0E94200A0E94BF -:100E2000E4038FEF94E32CE0815090402040E1F701 -:100E300000C000000E94392353C18091F2028160FA -:100E40008093F2024DC10E949A23811102C00E9438 -:100E500076230E94AD2390E090931D0380931C03A2 -:100E6000C23080E5D80721F480911C03816086C0E0 -:100E7000C43090E5D90721F480911C0382607EC0C4 -:100E8000C63020E5D20721F480911C03846076C02F -:100E9000C83080E5D80719F480911C0327C0CA30F8 -:100EA00090E5D90721F480911C03806167C0CC30A4 -:100EB00020E5D20721F480911C0380625FC0CE3010 -:100EC00080E5D80721F480911C03806457C0C031AD -:100ED00090E5D90721F480911C0380684FC0C2318E -:100EE00020E5D20729F480911C038460886046C005 -:100EF000C33080E5D80721F480911C038E7F3EC06B -:100F0000C53090E5D90721F480911C038D7F36C050 -:100F1000C73020E5D20721F480911C038B7F2EC0BF -:100F2000C93080E5D80719F480911C0326C0CB3066 -:100F300090E5D90721F480911C038F7E1FC0CD302E -:100F400020E5D20721F480911C038F7D17C0CF309C -:100F500080E5D80721F480911C038F7B0FC0C1313D -:100F600090E5D90721F480911C038F7707C0C33126 -:100F7000D04531F480911C038B7F877F80931C03C5 -:100F800080911C030E94B123ABC08D2F99278F70D5 -:100F9000992781309105D9F49E012370332702C02F -:100FA000880F991F2A95E2F79C688E0144E0000F94 -:100FB000111F4A95E1F700271370802B912B53E006 -:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 -:100FD000910531F4DC2FCC278E01016F106A80C09F -:100FE0008330910569F4CE018370992701E010E008 -:100FF00002C0000F111F8A95E2F7C8019C680FC05C -:1010000084309105B9F4CE018370992701E010E096 -:1010100002C0000F111F8A95E2F7C8019A6823E009 -:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 -:101030001D2B56C08530910531F4DC2FCC278E0155 -:10104000046F106A4DC0069709F04AC0CF71DD27C2 -:10105000DC2FCC278E01106243C000E010E040C0BE -:101060008E013EC001E810E43BC003E810E438C044 -:1010700002EE14E435C009EE14E432C00AEE14E4C2 -:101080002FC005EB14E42CC006EB14E429C007EBD9 -:1010900014E426C00CEC14E423C00DEC14E420C0CE -:1010A00003E815E41DC00AE815E41AC002E915E4D6 -:1010B00017C004E915E414C001E216E411C003E20C -:1010C00016E40EC004E216E40BC005E216E408C004 -:1010D00006E216E405C007E216E402C00AE216E4DE -:1010E000C801DF91CF911F910F9108959CE0799FE6 -:1010F000F001112490E3899FE00DF11D1124E60F0A -:10110000F11DEE0FFF1FEA52FE4F85919491803E34 -:101110009105E0F4803C910558F58133910509F47F -:101120006FC048F48932910509F463C08A32910591 -:1011300009F46DC072C089339105E9F082389105D8 -:10114000D1F08533910509F44DC067C0833E910508 -:1011500081F138F4803E9105B9F0823E9105D9F0D5 -:101160005CC0863E910561F1873E9105A1F155C0B5 -:101170000E940406089520911C0320FD02C021FF57 -:101180004CC080EE90E049C080911C0380FFF9CFF5 -:1011900089E390E042C080911C0382FF0EC08091E1 -:1011A0001C0384FF03C080E090E037C083EE90E032 -:1011B00034C080911C0382FFF2CF82EE90E02DC0FC -:1011C00080911C0383FF0BC080911C0384FDEBCF37 -:1011D00087EE90E022C080911C0383FFF5CF86EE5E -:1011E00090E01BC080911C0385FF07C089E290E05E -:1011F00014C080911C0385FFF9CF85E390E00DC0FA -:1012000080911C0386FF07C08AE290E006C08091AF -:101210001C0386FFF9CF81E390E00E941406089535 -:101220000C94E502E82FF0E0E25BFE4F8081E82FAE -:10123000EF70F0E082958F7021E030E0A90102C0EC -:10124000440F551F8A95E2F740A308950F931F930B -:10125000CF93DF9385B7806885BF85B7806885BFEA -:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 -:10127000E82FEF70F0E021A182958F70A80102C0E5 -:10128000440F551F8A95E2F7CA01822B81A38C2F48 -:101290000E941209219740F78BE090E061E070E036 -:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 -:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F -:1012C0009D01242B22A3019758F7DF91CF911F9105 -:1012D0000F910C948F03EF92FF920F931F93CF9374 -:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA -:1012F0008C2F0E9412098BE090E040E050E0FC014E -:10130000EE5BFE4F6081E62FEF70F0E020A130E051 -:1013100062956F7002C0359527956A95E2F720FDBA -:1013200009C09701082E02C0220F331F0A94E2F76A -:10133000422B532B019718F7F801929182918F015C -:101340008417950721F051834083D09305018C2F9A -:101350000E941209C15060F68091050187FD2CC0E2 -:101360008150809305018F3F39F08FE99FE001970D -:10137000F1F700C0000020C080911E0290911F0272 -:10138000909327028093260280911C0290911D0267 -:10139000909325028093240280911A0290911B025F -:1013A0009093230280932202809118029091190257 -:1013B00090932102809320020E94910381E0DF91AB -:1013C000CF911F910F91FF90EF900895E82FF0E0DB -:1013D000EE0FFF1FE05EFD4F80819181089508951B -:1013E0000F931F93CF9308E212E0C0E0F8019291AF -:1013F00082918F010E945622C80FF2E000321F072F -:10140000A9F78C2FCF911F910F9108950E949A23D5 -:10141000811102C00E9476230E94BF23809307039C -:101420003E9A809171008D7F8093710082E080935D -:1014300090008AE18093910081E080932A020895D0 -:1014400080912A02811102C00E94060A10927A023B -:1014500010927902809171008D7F8093710080914C -:1014600090008F738093900010923C0210923B0288 -:10147000109273021092740210927502109276020A -:101480001092720210927102E1E5F2E0A1E4B2E082 -:1014900011921192119211921D921D9282E0E137E8 -:1014A000F807B1F70895CF92DF92EF92FF920F9372 -:1014B0001F93CF93DF9320913B02222309F484C032 -:1014C0006B017C0180912A02811102C00E94060AF0 -:1014D00001E712E0C7E0D0E0A7019601F801929180 -:1014E0008291729162918F010E940A29811131C00B -:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 -:10150000118212821382DE01AA0FBB1FAF5BBD4F97 -:1015100011961C921E92C730D105E9F021964481A4 -:1015200055816681778140835183628373831482FE -:1015300015821682178212968D919C91139711969F -:101540009C938E9313961C921E9212973496129629 -:10155000E2CF219708F68091790290917A02019763 -:1015600097FD05C090937A028093790204C010928F -:101570007A02109279028091790290917A022091F8 -:101580007702309178022817390724F010927802F8 -:1015900010927702892BC1F4809171008D7F809326 -:1015A0007100809190008F7380939000109273026D -:1015B00010927402109275021092760210927202CA -:1015C0001092710210923B02DF91CF911F910F9107 -:1015D000FF90EF90DF90CF9008951F920F920FB67B -:1015E0000F9211244F925F926F927F928F929F92EF -:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 -:101600004F935F936F937F938F939F93AF93BF930A -:10161000CF93DF93EF93FF9380913B02882309F4EC -:101620009BC1C0917902D0917A021C161D060CF064 -:1016300093C140902B0250902C0260902D0270902C -:101640002E0220E030E0A901C301B2010E94B52AB8 -:1016500018160CF065C0C130D10509F452C0809154 -:10166000770290917802BE010E94872C7C019093B2 -:1016700078028093770280903D0290903E02A09085 -:101680003F02B090400220E030E040E85FE3C50157 -:10169000B4010E94A62860933D0270933E0280939D -:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 -:1016B000EF5AFD4FA3019201608171818281938174 -:1016C0000E940E2920E030E040E05EE30E94B92A4B -:1016D0009B01AC01C501B4010E94B52A18168CF417 -:1016E000C7010196BE010E94872C909378028093D7 -:1016F000770210923D0210923E0210923F02109229 -:101700004002E0917702F0917802EE0FFF1FEE0F9A -:10171000FF1FEF5AFD4F6081718182819381D0C09C -:10172000C0907302D0907402E0907502F09076023F -:1017300020E030E0A901C701B6010E940A292197E3 -:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A -:10175000EF5AFD4F80809180A280B380A501940153 -:10176000C701B6010E940A2987FF31C0A501940173 -:1017700060E070E08CED93EC0E940E2920E030E0F8 -:1017800040E451E40E940E2920E030E040E05FE3B5 -:101790000E94B92A9B01AC0160E070E080E090E417 -:1017A0000E941C2B9B01AC01C501B4010E94B92A07 -:1017B0009B01AC01C701B6010E940A2987FF07C03F -:1017C000A701960160E070E08CED93E439C0A501BB -:1017D0009401C701B6010E94B52A18160CF055C035 -:1017E000A501940160E070E08CED93E40E940E2965 -:1017F00020E030E040E451E40E940E2920E030E097 -:1018000040E05FE30E94B92A9B01AC0160E070E018 -:1018100080E090E40E941C2B9B01AC01C501B40147 -:101820000E94B92A9B01AC01C701B6010E94B52AEA -:1018300018165CF5A701960160E070E08CED93EC62 -:101840000E940E2920E030E040E451E40E940E297D -:1018500020E030E040E05FE30E94B92A9B01AC0148 -:1018600060E070E080E090E40E941C2B9B01AC01E2 -:10187000C701B6010E94B92A609373027093740283 -:10188000809375029093760213C0FE01EE0FFF1F46 -:10189000EE0FFF1FEF5AFD4F80819181A281B3812E -:1018A0008093730290937402A0937502B0937602B2 -:1018B000609173027091740280917502909176022A -:1018C00020912802309129022F3F4FEF340731F049 -:1018D0002F5F3F4F30932902209328020E94950EDC -:1018E0006B017C0120E034E244EF51E40E940A29BC -:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 -:1019000081E4F82E20E030E040E051E4C701B60168 -:101910000E94B92A9B01AC0160E074E284E79BE479 -:101920000E940E296B017C010E947B297093970015 -:1019300060939600209106013091070140910801C3 -:1019400050910901C701B6010E94B92A0E947B2962 -:10195000709399006093980080913C02882309F469 -:1019600033C1C0903702D0903802E0903902F09035 -:101970003A0220E030E0A901C701B6010E94B52A71 -:101980001816D4F580912802909129028F3F2FEFED -:10199000920729F001969093290280932802C701AB -:1019A000B6010E94950E20E030E040E051E40E9434 -:1019B000B92A9B01AC0160E074E284E79BE40E94D9 -:1019C0000E296B017C010E947B2970939700609324 -:1019D0009600209106013091070140910801509135 -:1019E0000901C701B6010E94B92A0E947B297093A0 -:1019F00099006093980008C010929700109296008A -:101A00001092990010929800609131027091320208 -:101A10006F5F7F4F70933202609331022091960086 -:101A20003091970080E090E0232BF1F0C091960078 -:101A3000D09197000E94A7296B017C01BE0180E034 -:101A400090E00E94A7299B01AC0160913302709144 -:101A5000340280913502909136020E940E2920E0D6 -:101A60003FEF4FE757E410C00E94A7296B017C01AC -:101A700020E030EE4FEF54E4609133027091340275 -:101A800080913502909136020E94B92A9B01AC01E7 -:101A9000C701B6010E94B52A87FD96C080912F022A -:101AA0008F5F80932F0290E0209103033091040315 -:101AB00082179307A0F080910E03882319F01092EB -:101AC0002F020DC0809171008D7F809371008091F5 -:101AD00090008F738093900010923C027DC08091A3 -:101AE0003002C0912F02811128C0C0900803D0900D -:101AF0000903E0900A03F0900B0320E030E0A90115 -:101B0000C701B6010E94B52A1816BCF481E0809383 -:101B1000300210923702109238021092390210925D -:101B20003A02C0923302D0923402E0923502F0922F -:101B30003602C150C0932F0243C01092300210925F -:101B4000290210922802E0910503F091060348E073 -:101B5000C49FE00DF11D112480819181A281B38188 -:101B60008093370290933802A0933902B0933A02DF -:101B700020E030E040E85EE36481758186819781F2 -:101B80000E94B92A6B017C0180910A01682F70E0E4 -:101B900080E090E00E94A72920E030E048EC52E489 -:101BA0000E940E299B01AC01C701B6010E94B92A0F -:101BB000609333027093340280933502909336021F -:101BC00010923202109231028091070380FD04C00E -:101BD00010923C0210923B02FF91EF91DF91CF9166 -:101BE000BF91AF919F918F917F916F915F914F9135 -:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB -:101C00009F908F907F906F905F904F900F900FBE3E -:101C10000F901F901895CF92DF92EF92FF92CF9383 -:101C2000DF936B017C01EA0180912A02811102C0DD -:101C30000E94060A8091070380FF46C080917902C6 -:101C400090917A0208970CF03FC0809171008D7FCF -:101C50008093710080913C0281110E94200A81E0F2 -:101C600080933B02109229021092280220E030E07B -:101C7000A901C701B6010E94B52A1816DCF48091AB -:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 -:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 -:101CA000FF1FEF5BFD4FD183C083019690937A02B3 -:101CB000809379028091710082608093710080919D -:101CC0009000806880939000DF91CF91FF90EF901B -:101CD000DF90CF90089580910703817008958091DF -:101CE00007038160809307030E94C3230C94EB03D6 -:101CF000809107038E7F809307030C94C323809108 -:101D00007B0290E0019666E070E00E94872C809351 -:101D10007B02089580917B0290E0019766E070E07D -:101D20000E94872C80937B0208958F929F92AF929E -:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 -:101D4000DF936B017C01C0912802D0912902BE0172 -:101D500080E090E00E94A7294B015C01A701960159 -:101D600060E070E08CE594E40E940E299B01AC01D8 -:101D7000C501B4010E94B92A0E947B2920917B02EF -:101D8000233009F473C028F4222351F02130E9F004 -:101D90002CC1243009F4A0C0253009F4E0C025C1CD -:101DA00080E090E0A0E0BFE38093060190930701FC -:101DB000A0930801B093090110922B0210922C02FB -:101DC00010922D0210922E0210C110922B0210922E -:101DD0002C0210922D0210922E026431710540F4F3 -:101DE0006A30710560F520E030E040E85EE32BC02A -:101DF000693C710508F0AAC080E090E00E94A72924 -:101E000020E030E040EA51E40E94A52820E030E0E4 -:101E100044E353E40E940E299B01AC010E94B92ABD -:101E200020E030E040E05EE30E94B92A9B01AC0173 -:101E300060E070E080E09EE30E94A52844C020E0BE -:101E400030E040E05FE3C701B6010E94B92A6B01B0 -:101E50007C0180E090E0A0E0BEE3809306019093D7 -:101E60000701A0930801B0930901BFC010922B0293 -:101E700010922C0210922D0210922E024AE0469FE0 -:101E80009001479F300D1124C90168EB7BE00E944F -:101E9000732CBC016C5D754077FF03C07195619533 -:101EA0007109882777FD8095982F0E94A9292EE334 -:101EB00033EC4EE259E30E94B92A20E030E040ECD6 -:101EC0005EE30E94A6286093060170930701809349 -:101ED00008019093090189C010922B0210922C02E4 -:101EE00010922D0210922E02CE0183709927892B19 -:101EF000E1F0BE016170772780E090E00E94A729A1 -:101F000020E030E040E05EE30E94B92A20E030E0CB -:101F100040E45FE30E94A6286093060170930701E6 -:101F200080930801909309010CC080E090E0A0E04C -:101F3000BFE38093060190930701A0930801B0933B -:101F40000901C770DD27CD2B09F04FC010920601A3 -:101F500010920701109208011092090146C01092D8 -:101F60002B0210922C0210922D0210922E0200E0F1 -:101F700010E020E03FE30093060110930701209357 -:101F80000801309309016739710578F180E090E02C -:101F90000E94A72920E030E047E153E40E94A528F1 -:101FA00020E030E04AE754E40E940E2920E030E0CF -:101FB00048E452E40E94B92A20E030E040EA51E4CB -:101FC0000E94EB290E947629660F771F660F771F04 -:101FD000FB01EE5AFE4F2081318142815381C701BE -:101FE000B6010E94B92A6B017C01C701B601DF91DD -:101FF000CF911F910F91FF90EF90DF90CF90BF9006 -:10200000AF909F908F90089580918C020895CF9308 -:10201000DF9300D01F92CDB7DEB79C0180911303F0 -:10202000843019F593E099833B832A839093E900E8 -:102030008FEF9091E800815095FD06C095ED9A953F -:10204000F1F700008111F5CF8091E80085FF0DC008 -:1020500040E050E063E070E0CE0101960E9468121B -:102060008091E8008E778093E8000F900F900F909A -:10207000DF91CF910895CF93DF9300D01F92CDB71A -:10208000DEB720911303243021F522E029839B83BE -:102090008A8383E08093E9008FEF9091E80081507C -:1020A00095FD06C095ED9A95F1F700008111F5CFE9 -:1020B0008091E80085FF0DC040E050E063E070E0F3 -:1020C000CE0101960E9468128091E8008E7780937D -:1020D000E8000F900F900F90DF91CF91089520911D -:1020E00013032430F1F422E02093E9002FEF309124 -:1020F000E800215035FD06C035ED3A95F1F70000B6 -:102100002111F5CF2091E80025FF0BC040E050E001 -:1021100065E070E00E9468128091E8008E778093FD -:10212000E8000895CF93DF93EC019091130394306E -:1021300009F046C0809115018823D9F080911601DD -:102140008823B9F09093E9008FEF9091E8008150D7 -:1021500095FD06C095E19A95F1F700008111F5CF44 -:102160008091E80085FF2CC040E050E060E170E025 -:1021700017C081E08093E9008FEF9091E8008150D3 -:1021800095FD06C095ED9A95F1F700008111F5CF08 -:102190008091E80085FF14C040E050E068E070E006 -:1021A000CE010E9468128091E8008E778093E8004B -:1021B00080E1FE01ACE7B2E001900D928A95E1F773 -:1021C000DF91CF91089580911203811109C00E947F -:1021D000FD130E945A148091E20084608093E20013 -:1021E0000895109212030895089508950C94A12261 -:1021F00042E061EC81E00E94771342E061EC82E012 -:102200000E94771342E061EC83E00E94771342E181 -:1022100061EC84E00C94771380911503833009F40A -:1022200055C030F4813071F0823009F48EC00895C9 -:102230008A3009F47AC08B3009F460C0893009F023 -:102240009CC020C080911403813A09F096C080910F -:10225000E800877F8093E80080911803909119032C -:10226000892B21F460E18CE792E003C060E080E01C -:1022700090E070E00E94B3128091E8008B77809329 -:10228000E800089580911403813209F076C08091AE -:10229000180390911903009719F0039709F06DC086 -:1022A0008091E800877F8093E8008091E80082FDBC -:1022B00005C0809113038111F8CF5FC08091F100B8 -:1022C00080938C028091E8008B7753C08091140337 -:1022D000813A09F052C08091180390911903892B1B -:1022E00009F04BC08091E800877F8093E8008091DF -:1022F000E80080FFFCCF8091150136C08091140367 -:102300008132D9F58091180390911903892BA9F591 -:102310008091E800877F8093E8000E94AC13809151 -:102320001603809315010C94E21B809114038132F3 -:1023300021F58091E800877F8093E8000E94AC132C -:102340008091170380938D02089580911403813A40 -:10235000A1F48091E800877F8093E8008091E800F5 -:1023600080FFFCCF80918D028093F1008091E80086 -:102370008E778093E8000C94AC13089584B7877F20 -:1023800084BF88E10FB6F8948093600010926000DB -:102390000FBE90E080E80FB6F894809361009093B0 -:1023A00061000FBE0E944F170E94FD130E945A1435 -:1023B0008091E20084608093E20078940E94E016AD -:1023C0000E9451178BE091E00E94FB16809113034D -:1023D000853069F40E946222809111038823B1F351 -:1023E0000E949022882391F30E945212EFCF0E9404 -:1023F0005917ECCF292F332723303105C9F064F466 -:102400002130310581F02230310509F043C08DE6DD -:1024100090E022EB33E042C021323105F1F022326C -:10242000310541F137C082E190E02FE134E036C060 -:1024300099278130910541F08230910541F0892B37 -:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 -:10245000F3E0849190E09F0121C06430D8F4E62F2E -:10246000F0E0EE0FFF1FE255FE4F2081318189E041 -:1024700090E014C0643070F470E0FB01EE0FFF1FB9 -:10248000EA55FE4F20813181FB01EE55FE4F8081E0 -:1024900090E004C080E090E020E030E0FA01318379 -:1024A0002083089580E189BD82E189BD09B400FEE1 -:1024B000FDCF8091D8008F7D8093D8008091E0007F -:1024C00082608093E0008091E00081FDFCCF089560 -:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 -:1024E000EC018B016A010E94CB13811133C0C1142E -:1024F000D10439F0F60180819181081B190BC80FB6 -:10250000D91FE12CF12C0115110519F18091E8007A -:1025100085FD16C08091E8008E778093E800C11495 -:10252000D10449F0F60180819181E80EF91EF18213 -:10253000E08285E00FC00E94CB13882321F30AC0FC -:1025400089918093F10001501109FFEFEF1AFF0A02 -:10255000DACF80E0DF91CF911F910F91FF90EF9044 -:10256000DF90CF90089520911A0330911B03261716 -:10257000370748F06115710539F42091E8002E778E -:102580002093E80001C0B90140E061157105A9F18F -:1025900020911303222309F443C0253009F442C0DB -:1025A0002091E80023FD40C02091E80022FD32C0C8 -:1025B0002091E80020FFE9CF4091F3002091F20044 -:1025C00030E0342BFC01CF016115710559F0283042 -:1025D000310540F481918093F100615071092F5FC2 -:1025E0003F4FF1CF41E02830310509F040E0209124 -:1025F000E8002E772093E800C8CF4111C9CF0AC068 -:1026000080911303882361F0853061F08091E800A8 -:1026100083FD0AC08091E80082FFF2CF80E0089538 -:1026200082E0089583E0089581E0089520911A03DF -:1026300030911B032617370748F06115710539F4EF -:102640002091E8002E772093E80001C0B901FC0139 -:1026500020E06115710591F180911303882309F43D -:1026600040C0853009F43FC08091E80083FD3DC043 -:102670008091E80082FD2FC08091E80080FFE9CFC3 -:102680002091F3008091F20090E0922B611571058A -:1026900059F08830910540F424912093F10031964F -:1026A000615071090196F2CF21E0089709F020E00E -:1026B0008091E8008E778093E800CBCF2111CCCFBA -:1026C0000AC080911303882361F0853061F0809106 -:1026D000E80083FD0AC08091E80082FFF2CF80E02D -:1026E000089582E0089583E0089581E00895982F89 -:1026F000973058F59093E900981739F07091EC00F5 -:102700002091ED005091F00003C0242F762F50E06F -:1027100021FF19C03091EB003E7F3093EB003091E8 -:10272000ED003D7F3093ED003091EB003160309350 -:10273000EB007093EC002093ED005093F00020919B -:10274000EE0027FF07C09F5FD3CF8F708093E90013 -:1027500081E0089580E008958091140387FF11C0FF -:102760008091E80082FD05C0809113038111F8CFAC -:1027700011C08091E8008B770BC0809113038823F0 -:1027800049F08091E80080FFF8CF8091E8008E77D3 -:102790008093E80008952091E4003091E50095E6EB -:1027A0004091EC00842F817040FF22C08091E800AE -:1027B00080FD1CC080911303882391F0853091F037 -:1027C0008091EB0085FD10C04091E4005091E50040 -:1027D0004217530729F39A01915011F784E00895A5 -:1027E00082E0089583E0089581E0089580E00895EF -:1027F0004091E80042FFDECF08950E946B140E94D2 -:102800007314E0EEF0E0808181608083E8EDF0E019 -:1028100080818F77808319BCA7EDB0E08C918E7F8B -:102820008C9380818F7E80831092120308950F9382 -:102830001F93CF93DF930E946B140E947314C8ED13 -:10284000D0E088818F7788838881806888838881B9 -:102850008F7D888319BC1092130310920F0310927E -:1028600011031092100300EE10E0F80180818B7FBD -:10287000808388818160888342E060E080E00E94FC -:102880007713E1EEF0E080818E7F8083E2EEF0E06E -:10289000808181608083808188608083F80180816D -:1028A0008E7F8083888180618883DF91CF911F91A3 -:1028B0000F910895E8EDF0E080818F7E8083E7ED51 -:1028C000F0E080818160808384E082BF81E080933A -:1028D00012030C941714E8EDF0E080818E7F808362 -:1028E0001092E20008951092DA001092E10008952B -:1028F0001F920F920FB60F9211242F933F934F9375 -:102900005F936F937F938F939F93AF93BF93EF9357 -:10291000FF938091E10082FF0BC08091E20082FF73 -:1029200007C08091E1008B7F8093E1000E94DF1659 -:102930008091DA0080FF1FC08091D80080FF1BC00B -:102940008091DA008E7F8093DA008091D90080FF39 -:102950000DC080E189BD82E189BD09B400FEFDCFD3 -:1029600081E0809313030E94E31005C019BC10920C -:1029700013030E94F1108091E10080FF19C0809143 -:10298000E20080FF15C08091E2008E7F8093E2001C -:102990008091E20080618093E2008091D8008062A3 -:1029A0008093D80019BC85E0809313030E94F51032 -:1029B0008091E10084FF30C08091E20084FF2CC050 -:1029C00080E189BD82E189BD09B400FEFDCF80911F -:1029D000D8008F7D8093D8008091E1008F7E809316 -:1029E000E1008091E2008F7E8093E2008091E2001E -:1029F00081608093E20080910F03882311F084E0CE -:102A000007C08091E30087FD02C081E001C083E040 -:102A1000809313030E94F6108091E10083FF29C088 -:102A20008091E20083FF25C08091E100877F809341 -:102A3000E10082E08093130310920F038091E10084 -:102A40008E7F8093E1008091E2008E7F8093E20090 -:102A50008091E20080618093E20042E060E080E0EB -:102A60000E9477138091F00088608093F0000E94AC -:102A7000F410FF91EF91BF91AF919F918F917F9152 -:102A80006F915F914F913F912F910F900FBE0F90DB -:102A90001F9018951F920F920FB60F9211242F932B -:102AA0003F934F935F936F937F938F939F93AF93D6 -:102AB000BF93CF93DF93EF93FF93C091E900CF7063 -:102AC0008091EC00D82FD17080FDD0E81092E90001 -:102AD0008091F000877F8093F00078940E948E159B -:102AE0001092E9008091F00088608093F000CD2B77 -:102AF000CF70C093E900FF91EF91DF91CF91BF912B -:102B0000AF919F918F917F916F915F914F913F9185 -:102B10002F910F900FBE0F901F9018951F93CF937A -:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E -:102B3000CDBFE4E1F3E088E08E0F9091F100919336 -:102B40008E13FBCF0E940C118091E80083FF1FC100 -:102B50008091140390911503492F50E04A3051059C -:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB -:102B700081F0823809F00BC1809118038F70809327 -:102B8000E9008091EB0085FB882780F91092E9002D -:102B900006C0809110039091110391118260909171 -:102BA000E800977F9093E8008093F1001092F10085 -:102BB000C8C0282F2D7F09F0EAC0882319F0823081 -:102BC00061F0E5C080911603813009F0E0C09330D8 -:102BD00009F080E0809311032BC0809116038111CE -:102BE00027C0809118038F7009F4D1C08093E90049 -:102BF0002091EB0020FF1CC0933021F48091EB006A -:102C0000806214C09091EB0090619093EB0021E002 -:102C100030E0A90102C0440F551F8A95E2F74093A6 -:102C2000EA001092EA008091EB0088608093EB004C -:102C30001092E9008091E800877F86C08111A7C0CB -:102C4000109116031F778091E3008078812B809389 -:102C5000E3008091E800877F8093E8000E94AC1336 -:102C60008091E80080FFFCCF8091E3008068809332 -:102C7000E300111102C082E001C083E080931303DE -:102C800086C08058823008F082C0809116039091EF -:102C900017038C3D53E0950779F583E08A838AE238 -:102CA00089834FB7F894DE01139620E03EE051E2AD -:102CB000E32FF0E050935700E49120FF03C0E2952A -:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 -:102CD00001C0C0968D939D932F5F243149F74FBF5C -:102CE0008091E800877F8093E8006AE270E0CE017F -:102CF00001960E94B31214C0AE014F5F5F4F609106 -:102D000018030E94FA11BC01009709F440C0909189 -:102D1000E800977F9093E80089819A810E941613BA -:102D20008091E8008B778093E80031C0803879F596 -:102D30008091E800877F8093E80080910F03809363 -:102D4000F1008091E8008E778093E8000E94AC1338 -:102D50001EC081111CC0909116039230C0F4809166 -:102D6000E800877F8093E80090930F030E94AC13E4 -:102D700080910F03811106C08091E30087FD02C09E -:102D800081E001C084E0809313030E94F8108091D9 -:102D9000E80083FF0AC08091E800877F8093E80005 -:102DA0008091EB0080628093EB00AA960FB6F894B6 -:102DB000DEBF0FBECDBFDF91CF911F910895089563 -:102DC000CF93809113038823A1F0C091E900CF70C5 -:102DD0009091EC00892F817090FD80E8C82B1092B3 -:102DE000E9008091E80083FD0E948E15CF70C093AA -:102DF000E900CF91089590939302809392020895F1 -:102E0000E0919202F0919302309721F00190F081CD -:102E1000E02D099480E00895E0919202F0919302F0 -:102E2000309721F00280F381E02D09940895E0911C -:102E30009202F0919302309721F00480F581E02D09 -:102E4000099408952091900230919102821793077E -:102E500071F09093910280939002E0919202F09130 -:102E60009302309721F00680F781E02D09940895B0 -:102E700020918E0230918F028217930771F0909308 -:102E80008F0280938E02E0919202F091930230972C -:102E900021F00084F185E02D0994089508950C94A3 -:102EA0004E170E94D5220E9426090E945B230C9493 -:102EB0000A285F926F927F928F929F92AF92BF92F9 -:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 -:102ED00000D000D01F92CDB7DEB70E946B099DE9EC -:102EE000C92E92E0D92E03E010E0AA24A394B12CBD -:102EF000502E802F0E94E6094C01F60172906290DC -:102F00006F016826792661147104A1F4015011093A -:102F100078F78FEF89838A831B820E94DE2281608B -:102F2000782F9D838C8349815A816B818D810E948A -:102F3000091838C08091F20281FD0E94EF092BE050 -:102F400030E07501022E02C0EE0CFF1C0A94E2F77D -:102F5000C70186219721892B09F129835A828E2066 -:102F60009F2091E0892809F490E09B830E94DE2253 -:102F70008160782F9D838C8349815A816B818D81FB -:102F80000E940918000F111FF801EB56FD4F8081B8 -:102F90009181E826F926F182E08204C021503109AE -:102FA00080F6B4CF0E944225109194020E9400172F -:102FB0001817D1F00E940017809394020F900F9081 -:102FC0000F900F900F90DF91CF911F910F91FF9075 -:102FD000EF90DF90CF90BF90AF909F908F907F90B9 -:102FE0006F905F900C9410090F900F900F900F90BE -:102FF0000F90DF91CF911F910F91FF90EF90DF9095 -:10300000CF90BF90AF909F908F907F906F905F9088 -:103010000895CF93DF93CDB7DEB72B970FB6F89413 -:10302000DEBF0FBECDBF4F83588769877A878B87F6 -:10303000DE01119686E0FD0111928A95E9F785E09F -:10304000FE01379601900D928A95E1F749815A81E8 -:103050006B817C818D819E810E94801E2B960FB694 -:10306000F894DEBF0FBECDBFDF91CF910895CF930F -:10307000882309F4C2C0C82F823859F40E9400176F -:1030800081FDBBC089E30E945A210E94272289E367 -:103090000CC0833879F40E94001780FDAEC083E530 -:1030A0000E945A210E94272283E50E949C21CF91F1 -:1030B0000C942722843859F40E94001782FD9DC089 -:1030C00087E40E945A210E94272287E4EECF8CEFEA -:1030D0008C0F813A48F48C2F0E94722781118DC089 -:1030E0008C2F0E945A21E3CF80E28C0F883048F465 -:1030F000C77081E001C0880FCA95EAF70E94E021FD -:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 -:1031100031F083E890E005C081E890E002C082E8E9 -:1031200090E0CF910C94221788E58C0F833108F042 -:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 -:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 -:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 -:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 -:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B -:1031800090E038C082EE90E035C089EE90E032C029 -:103190008AEE90E02FC085EB90E02CC086EB90E0AB -:1031A00029C087EB90E026C08CEC90E023C08DEC2A -:1031B00090E020C083E891E01DC08AE891E01AC049 -:1031C00082E991E017C084E991E014C081E292E0C5 -:1031D00011C083E292E00EC084E292E00BC085E26F -:1031E00092E008C086E292E005C087E292E002C069 -:1031F0008AE292E0CF910C943817CF9108958823FA -:1032000009F44BC0823859F40E94001781FF45C071 -:1032100089E30E945A210E94272289E30CC0833847 -:1032200071F40E94001780FF38C083E50E945A2184 -:103230000E94272283E50E949C210C942722843837 -:1032400059F40E94001782FF28C087E40E945A2187 -:103250000E94272287E4EFCF9CEF980F913A58F312 -:1032600090E2980F983050F4877091E001C0990F68 -:103270008A95EAF7892F0E94E621DFCF9BE5980F18 -:10328000933020F480E090E00C942217885A833128 -:1032900020F480E090E00C9438170895882321F002 -:1032A0000E94E0210C9427220895882321F00E9497 -:1032B000E6210C94272208957F928F929F92AF92DD -:1032C000BF92CF92DF92EF92FF920F931F93CF9313 -:1032D000DF931F92CDB7DEB77C01C62E772EFC019F -:1032E000058102950F70128111110E94FD210E942B -:1032F0005321882379F0112369F080E28C0D883006 -:1033000048F082E00E943C210E94532191E0D82E97 -:10331000D92601C0D12CE72DE295EF70F0E0E05AFC -:10332000FF4F0C949B2C872D807F072D0F708823D7 -:1033300011F00295007F112389F0002309F499C14F -:1033400080E28C0D883020F4802F0E94E02103C0A1 -:10335000802F0E94F0210E9427228BC18C2D0E9479 -:10336000FF18002309F4C3C180E28C0D883020F4DB -:10337000802F0E94E62103C0802F0E94F6210E9428 -:103380002722B5C1872D807F972D9F70803211F441 -:10339000892F03C0892F8295807FCC2021F0F1E016 -:1033A000CF16A1F01DC0112339F0002319F101300F -:1033B00009F50E9410229BC1002319F0013009F485 -:1033C00096C189830E941322898110C1112321F0A3 -:1033D000063008F08CC10EC0053008F088C106C167 -:1033E000112359F0002331F0F701958190FF41C17D -:1033F0009F7095830E944E197AC1002309F4F6C08C -:103400003EC1872D86958695837090E0009719F0D0 -:10341000019761F06CC1112321F08C2D972D9370D1 -:1034200002C080E090E00E94221761C1112321F0C8 -:103430008C2D972D937002C080E090E00E94381789 -:1034400056C18C2D112319F00E944A2402C00E94FB -:10345000B2240E9437254BC1872D837009F052C0DA -:10346000111145C18C2D829586958770880F880F24 -:103470009C2D9F70892E912CA12CB12C082E04C05C -:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 -:103490000FE010E020E030E0B901A80104C0440FC3 -:1034A000551F661F771F8A95D2F7CB01BA01609529 -:1034B00070958095909503C060E070E0CB01272D5A -:1034C00026952695237030E02230310569F02330AF -:1034D000310589F0682979298A299B29213031050C -:1034E00071F00E94C81F03C1682979298A299B2984 -:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 -:10350000AC1FF5C0112319F0872D817001C086957D -:10351000882309F4ECC08C2D829586958770880FDE -:10352000880F9C2D9F70892E912CA12CB12C082ED8 -:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 -:1035400014C00FE010E020E030E0B901A80104C091 -:10355000440F551F661F771F8A95D2F7CB01BA011A -:10356000609570958095909503C060E070E0CB0108 -:10357000272D269526952370422F50E04230510585 -:1035800069F04330510589F0682979298A299B29F6 -:103590004130510571F00E94A220A9C06829792903 -:1035A0008A299B290E94BE20A2C00E94A220C50198 -:1035B000B4010E9486209BC08C2D90E0FC01E05E4F -:1035C000F109E531F10508F050C0E059FF4F0C94C6 -:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 -:1035E0001F20802F07CF0E944020802F0E94551956 -:1035F0007EC0112341F0053008F079C0872D8F710E -:103600000E94652074C0063008F071C0F7CF112306 -:1036100039F0872D8F710E941F2069C01123C9F3D3 -:10362000872D8F710E94402062C0112329F0872DC1 -:103630008F710E940A205BC00E94002058C0112395 -:1036400051F0172D1F71812F0E941F2063E0812FE1 -:103650000E9433214CC081E00E943C21023008F4DA -:1036600046C082E00E943C2142C0112331F0002379 -:1036700081F28C2D0E9437183AC0002389F28C2DDC -:103680000E94FF1834C0472D4F706C2DC7010E9457 -:10369000EE050E94241F2BC0111129C0472D4F7029 -:1036A00050E042305105B9F04CF44115510581F01C -:1036B00041305105E1F40E94322819C043305105D0 -:1036C00069F04430510599F48C2D0E9484280FC074 -:1036D0000E941B280CC00E944E2809C00E9461282D -:1036E00006C0472D4F706C2DC7010E94F105DD20EB -:1036F000F9F00E942F2180FD1BC0F70112820E9469 -:1037000029210E941F20C7010E94A71B0E94292176 -:103710000F90DF91CF911F910F91FF90EF90DF906D -:10372000CF90BF90AF909F908F907F900C9440204F -:103730000F90DF91CF911F910F91FF90EF90DF904D -:10374000CF90BF90AF909F908F907F9008950F93F0 -:103750001F93CF93DF93EC01888199812B813C816A -:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 -:10377000ED03882371F0688179818A810E94252177 -:103780008C010E94DA200E94A11FB801CE010E9484 -:103790005C19DF91CF911F910F9108950E94FD2137 -:1037A0000E940D220E94D2210E9427220E94E82519 -:1037B0000E94372580E090E00E94221780E090E090 -:1037C0000C9438170E94ED210C94CE1B0E941A21F4 -:1037D000292F22952F7030E02C3031054CF42A30FF -:1037E00031056CF42250310922303105A8F407C0AC -:1037F0002C30310569F02F30310551F00DC0803F7C -:1038000069F018F4803E40F409C0843F29F406C0F2 -:1038100093FB882780F9089580E0089581E008955A -:10382000CF93DF9300D000D01F92CDB7DEB70F90BB -:103830000F900F900F900F90DF91CF910895CF933D -:10384000DF9300D000D000D0CDB7DEB726960FB6FC -:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 -:10386000CF93DF93C0919D0216E080919E02C8170E -:1038700099F0D0E01C9FF0011D9FF00D1124E1563E -:10388000FD4F4081518162817381848195810E94C5 -:103890001F1C2196C770E9CFDF91CF911F9108952A -:1038A0004091CF025091D0026091D1027091D2022A -:1038B0008091D3029091D4020C941F1C8091D40269 -:1038C00082958F7009F054C08091D102882309F449 -:1038D0004FC080919D02A0919E026091CF02709195 -:1038E000D0024091D2025091D302B6E08A1709F477 -:1038F0003FC090E041155105C1F17F3F11F46F3F8A -:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 -:10391000218172132AC02081621327C022812111C4 -:1039200024C0238134812417350710F42150310934 -:10393000241B350B283C3105C0F42091D4022F7094 -:1039400020612093D40226E0289FF001299FF00DEA -:103950001124EC55FD4F80818F70806180838FEC46 -:1039600092E00E94A71B0C942F1C01968770BECF7B -:103970000895CF92DF92EF92FF920F931F93CF9310 -:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 -:10399000CDBF8C0185E0F801DE011D9601900D92EE -:1039A0008A95E1F7D8014C9111965C911197129686 -:1039B0006C9112971396CD90DC9014973091CF02B2 -:1039C0007091D0028091D2029091D302009709F4B5 -:1039D0006BC17F3F19F43F3F09F466C1E090D1020B -:1039E000EE2009F4C0C02091D402C816D90628F0F0 -:1039F000F601E81BF90BCF0104C0809590958C0D62 -:103A00009D1DFF24F394883C910578F0F12C207FD4 -:103A100009F0C6C07C2DD98AC88A89890E94101CE9 -:103A20008FEC92E00E94A71BB1C0822F807F09F02B -:103A300046C0751314C0341312C0611110C02F702A -:103A400020612093D4020E94501C8FEC92E00E94CF -:103A5000A71B8091D402D80115968C932EC0CD2837 -:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 -:103A700080919D0220919E0236E0821709F45AC07F -:103A800090E0389FF001399FF00D1124E156FD4F71 -:103A90007181571306C07081471303C07281711181 -:103AA00003C001968770E9CFF62E662309F418C18A -:103AB0008091D40281608093D402F12C11C17513DE -:103AC00008C0341306C0611104C08091D402D8012B -:103AD000C3C04D875E878D859E856A8B0E94E61BDD -:103AE0006A898823E1F16623D1F12091D402822FE3 -:103AF00082958F7090E0029774F08091CF02909140 -:103B0000D00298878F831986DB86CA862C87CE01E0 -:103B100007960E94A71B86E0F801AFECB2E0019087 -:103B20000D928A95E1F70E945E1C0E94501CFF24B2 -:103B3000F394D6C04D875E878D859E850E941A219D -:103B4000292F22952F7030E0223031050CF0BCC0B7 -:103B50009F7009F0B6C0805E883008F4C1C0C8010B -:103B60000E94A71BE4CFC816D90608F453C0F6017B -:103B7000E81BF90BCF01883C910508F450C0F12CEB -:103B80007C2DD98AC88A89890E94101CEFECF2E04A -:103B900086E0DF011D928A95E9F70E94501CA0C0C3 -:103BA000751314C0341312C0611110C08091D40277 -:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 -:103BC000DF011D928A95E9F7FE2C8AC04D875E873A -:103BD0008D859E856A8B0E94E61B6A89882309F47D -:103BE000BECF662309F4BBCF2091D402822F8295E9 -:103BF0008F7090E002970CF48ECF8091CF0290915D -:103C0000D0029A8389831B82DD82CC822E83CE01EF -:103C100001967FCF809590958C0D9D1DACCFF62E93 -:103C2000662309F49CCF75132EC034132CC0209149 -:103C3000D40220FD1FC0822F82958F70D9F0D80149 -:103C400015962C9315978F3049F08F5F982F92958A -:103C5000907F822F8F70892B15968C93C8010E94BC -:103C6000A71B86E0F801AFECB2E001900D928A95B7 -:103C7000E1F793CF86E0F801AFECB2E001900D924E -:103C80008A95E1F72DC04D875E878D859E850E94C0 -:103C9000E61B811140CF8091D40281608093D402D1 -:103CA000C8010E94A71B1CC0662309F458CF4D878A -:103CB0005E878D859E850E94E61B882309F44FCF81 -:103CC0002ACF811148CF0CC0243031050CF047CFEA -:103CD0009F7009F440CFF8019581907F09F03BCFA8 -:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 -:103CF000CF911F910F91FF90EF90DF90CF9008959B -:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 -:103D1000DEBF0FBECDBF4F83588769877A878B87F9 -:103D20009C87CE0107960E94B91C882369F08F8179 -:103D300098852A853B85232BF1F19F3F09F063C0CD -:103D40008F3F09F060C037C086E0FE013796DE0184 -:103D5000119601900D928A95E1F76F817885EA8539 -:103D6000FB85309741F17F3F11F46F3F21F12091A6 -:103D70009E0230E0C90101968770992740919D020B -:103D800050E08417950709F447C069837A83FD835F -:103D9000EC8396E0929FD001939FB00D1124A15621 -:103DA000BD4FFE01319601900D929A95E1F78093F7 -:103DB0009E020E942F1C16E080919D0290919E020F -:103DC0008917C1F1189FC001112481569D4F0E948F -:103DD000B91C882379F1E0919D021E9FF001112406 -:103DE000E156FD4F408151816281738184819581CB -:103DF0000E941F1C80919D0290E001968770992778 -:103E000080939D02D9CF4F81588569857A858B85AE -:103E10009C850E941F1CCFCF0E94E21B10929E0225 -:103E200010929D02EFECF2E086E0DF011D928A9590 -:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 -:103E4000DF91CF911F910895EF92FF920F931F93EF -:103E5000CF93DF938C01009709F46CC0F12CEE2412 -:103E6000E394E8012196F8018491843740F484308A -:103E700008F051C0813081F0823019F15BC0853784 -:103E800009F444C0A8F19CE7980F903708F052C09D -:103E90008F770E94FF1841C00E5F1F4FFE01C49133 -:103EA00080E28C0F883048F4C7708E2D01C0880FD7 -:103EB000CA95EAF70E94002214C08C2F0E9437187E -:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 -:103ED00058F4C7708E2D01C0880FCA95EAF70E946A -:103EE00006220E9427221AC08C2F0E94FF1816C09B -:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C -:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 -:103F1000FE01F49003C00E9437188E018F2D882374 -:103F200009F49FCFEFE9FFE03197F1F700C00000FF -:103F30008150F5CFDF91CF911F910F91FF90EF90BE -:103F4000089508956093D9027093DA028093DB029A -:103F50009093DC020C94CE1B0F931F930091D90217 -:103F60001091DA022091DB023091DC02DC01CB01FE -:103F7000802B912BA22BB32B8093D9029093DA0242 -:103F8000A093DB02B093DC021F910F910C94CE1B27 -:103F90000F931F930091D9021091DA022091DB0256 -:103FA0003091DC02DC01CB0180239123A223B323D7 -:103FB0008093D9029093DA02A093DB02B093DC02E3 -:103FC0001F910F910C94CE1B0F931F930091D90258 -:103FD0001091DA022091DB023091DC02DC01CB018E -:103FE00080279127A227B3278093D9029093DA02E2 -:103FF000A093DB02B093DC021F910F910C94CE1BB7 -:104000001092D5021092D6021092D7021092D802C6 -:104010000C94CE1B41E050E060E070E004C0440F1F -:10402000551F661F771F8A95D2F74093D50250938C -:10403000D6026093D7027093D8020C94CE1B41E055 -:1040400050E060E070E004C0440F551F661F771F0A -:104050008A95D2F78091D5029091D602A091D7028D -:10406000B091D802482B592B6A2B7B2B4093D50259 -:104070005093D6026093D7027093D8020C94CE1B53 -:1040800041E050E060E070E004C0440F551F661F3F -:10409000771F8A95D2F740955095609570958091DD -:1040A000D5029091D602A091D702B091D8024823B0 -:1040B00059236A237B234093D5025093D602609301 -:1040C000D7027093D8020C94CE1B41E050E060E020 -:1040D00070E004C0440F551F661F771F8A95D2F702 -:1040E0008091D5029091D602A091D702B091D802CA -:1040F000482759276A277B274093D5025093D60239 -:104100006093D7027093D8020C94CE1B0F931F9329 -:104110000091D5021091D6022091D7023091D80299 -:10412000DC01CB01802B912BA22BB32B8093D502EA -:104130009093D602A093D702B093D8021F910F910B -:104140000C94CE1B0F931F930091D5021091D602B1 -:104150002091D7023091D802DC01CB01802391233A -:10416000A223B3238093D5029093D602A093D702C3 -:10417000B093D8021F910F910C94CE1B0F931F93F5 -:104180000091D5021091D6022091D7023091D80229 -:10419000DC01CB0180279127A227B3278093D5028A -:1041A0009093D602A093D702B093D8021F910F919B -:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 -:1041C0001F93CF93DF938C01C090D902D090DA0275 -:1041D000E090DB02F090DC028091D5029091D60253 -:1041E000A091D702B091D802C82AD92AEA2AFB2A7C -:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B -:10420000979587950A94D2F780FF06C0B8018C2F46 -:104210000E947608019721F4219760F780E001C0A1 -:104220008C2FDF91CF911F910F91FF90EF90DF9036 -:10423000CF900895CF93DF93EC010E94DB20BE0165 -:104240000E947608DF91CF910895CB010E941A2138 -:1042500008958091DD0285958595859508958091D5 -:10426000DD028770089598E0899F90011124262B24 -:104270002093DD020C941F202091DD028095822383 -:104280008093DD02982F977069F430E0482F55270E -:1042900047FD50952417350729F085958595859517 -:1042A0000C94402008959091DD02977081E009F40C -:1042B00080E0089590911501992321F090911601C5 -:1042C000911109C02091170130911801F90132961E -:1042D0009FEF40E01FC0982F9695969596959F303A -:1042E00050F5E0911701F0911801E90FF11D877069 -:1042F00021E030E0A90102C0440F551F8A95E2F782 -:10430000CA019181892B818308959F3F39F04F5FC6 -:104310004E3041F051915813F8CF0DC05111F7CFE5 -:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B -:10433000FA9582830895089590911501992321F0AB -:1043400090911601911109C0209117013091180127 -:10435000F9013296205F3F4F1FC0982F9695969592 -:1043600096959F30F0F4E0911701F0911801E90F54 -:10437000F11D877021E030E0A90102C0440F551FF4 -:104380008A95E2F7CA0180959181892381830895F6 -:104390003196E217F30729F090819813F9CF108234 -:1043A000F7CF089581E090E0E0911701F0911801B6 -:1043B000E80FF91F1082019680319105A9F7089541 -:1043C0009091F102892B8093F1020895809590914C -:1043D000F10289238093F10208951092F102089569 -:1043E0009091F002892B8093F0020895809590912E -:1043F000F00289238093F00208951092F00208954C -:104400009091EF02892B8093EF020895809590910F -:10441000EF0289238093EF0208951092EF0208952E -:104420008093DE0208951092DE02089580911701B4 -:1044300090911801FC0131969C01205F3F4F80E074 -:10444000919191118F5FE217F307D1F70895E091F1 -:104450001701F09118018091F1028083E09117011A -:10446000F091180190818091F002892B8083E09176 -:104470001701F091180190818091EF02892B8083C0 -:104480008091DE02882361F0E0911701F09118011C -:104490009081892B80830E94162281111092DE0266 -:1044A00080911701909118010C940C1720E000974F -:1044B00039F0AC0141505109842395232F5FF7CF88 -:1044C000822F089580911303843039F11092F30202 -:1044D00020E488E190E00FB6F894A89580936000FE -:1044E0000FBE2093600080E00E94F10280E00E94F5 -:1044F000100983B7817F846083BF83B7816083BFE6 -:104500007894889583B78E7F83BF88E10FB6F8943F -:1045100080936000109260000FBE08950895089582 -:1045200080E00E94F1020E948E220E946B090E948C -:104530008F220E94F00991E0811101C090E0892F43 -:1045400008950E94E21B80E00E94F1020E940A2866 -:104550000E9400170C9410091F920F920FB60F9231 -:1045600011248F939F93AF93BF938091F302811196 -:1045700013C08091F4029091F502A091F602B091DF -:10458000F7024196A11DB11D8093F4029093F502AC -:10459000A093F602B093F702BF91AF919F918F91D4 -:1045A0000F900FBE0F901F90189582E084BD93E08E -:1045B00095BD9AEF97BD80936E0008952FB7F8943C -:1045C0008091F4029091F502A091F602B091F70269 -:1045D0002FBF0895CF92DF92EF92FF920F931F9318 -:1045E0002FB7F8944091F4025091F5026091F602D1 -:1045F0007091F7022FBF6A017B01EE24FF248C012A -:1046000020E030E0C016D106E206F30610F4415077 -:1046100051099A01281B390BC9011F910F91FF9075 -:10462000EF90DF90CF9008951F920F920FB60F92E8 -:1046300011248F939F93AF93BF938091F402909135 -:10464000F502A091F602B091F7020196A11DB11DED -:104650008093F4029093F502A093F602B093F702D0 -:10466000BF91AF919F918F910F900FBE0F901F90B0 -:1046700018950E94FD13F8942FEF87EA91E62150D8 -:1046800080409040E1F700C0000087E090EBDC0143 -:1046900080931E0390931F03A0932003B0932103E4 -:1046A0009CE088E10FB6F894A895809360000FBE57 -:1046B00090936000FFCF0E949A23811102C00E9454 -:1046C00076230E94A5238093F2020E94AD2380935B -:1046D0001C0387FB882780F9809316010E94A92379 -:1046E000682F70E080E090E00C94A21F6DEE7EEFEA -:1046F00080E090E00E94C12C60E082E090E00E94A7 -:10470000AF2C60E083E090E00E94AF2C60E084E09A -:1047100090E00E94AF2C60E085E090E00E94AF2C1A -:1047200060E086E090E00E94AF2C6FEF87E090E0C1 -:104730000C94AF2C80E090E00E94A92C21E08D3EEB -:104740009E4F09F020E0822F089582E090E00C94C3 -:10475000A12C83E090E00C94A12C84E090E00C94D8 -:10476000A12C682F84E090E00C94AF2C86E090E0C0 -:104770000C94A12C682F86E090E00C94AF2C87E07D -:1047800090E00C94A12C682F87E090E00C94AF2C63 -:104790008091FA0280FF0BC060911C0185E0689F48 -:1047A000B001112475956795759567952BC081FFAC -:1047B00009C060911C0185E0689FB00111247595C6 -:1047C000679520C082FF07C060911C0185E0689F4B -:1047D000B001112417C09091FB029923D1F0609190 -:1047E0001B01961788F720911C0185E0289F9001F6 -:1047F0001124929FA001939F500D112470E0CA01D3 -:104800000E94872C6038710540F46115710539F0FC -:1048100002C065E070E0862F08958FE7089581E07B -:1048200008958091FA0280FF08C060911A0170E03B -:10483000759567957595679521C081FF06C0609154 -:104840001A0170E07595679519C082FF04C06091E8 -:104850001A0170E010C09091FB029923C1F06091A1 -:1048600019019617A0F780911A01899FC0011124A0 -:1048700070E00E94872C6038710528F4611571057D -:1048800021F0862F08958FE7089581E0089561E073 -:1048900070E0F4CF803F21F40E94C823819504C0CA -:1048A000813F29F40E94C8238093FE020895823F2D -:1048B00021F40E94C823819504C0833F29F40E94FB -:1048C000C8238093FD020895893F19F40E941124A2 -:1048D00005C08A3F31F40E94112481958093FF0224 -:1048E00008958B3F21F40E941124819504C08C3FD0 -:1048F00029F40E941124809300030895843F21F439 -:104900008091FC02816017C0853F21F48091FC02F8 -:10491000826011C0863F21F48091FC0284600BC04C -:10492000873F21F48091FC02886005C0883F31F404 -:104930008091FC0280618093FC0208958D3F21F4F8 -:104940008091FA0281600BC08E3F21F48091FA02BF -:10495000826005C08F3F29F48091FA0284608093C1 -:10496000FA020895803F39F48091FE0287FF6CC0FF -:104970001092FE0269C0813F29F48091FE02181650 -:10498000BCF362C09091FD02823F29F497FF5CC0A6 -:104990001092FD0259C0833F19F41916CCF354C08C -:1049A000893F41F48091FF0218160CF04DC010921F -:1049B000FF024AC08A3F29F48091FF0287FF44C06A -:1049C000F6CF8B3F39F48091000387FF3DC01092F2 -:1049D00000033AC08C3F29F4809100031816BCF301 -:1049E00033C0843F21F48091FC028E7F17C0853F45 -:1049F00021F48091FC028D7F11C0863F21F48091CB -:104A0000FC028B7F0BC0873F21F48091FC02877FE3 -:104A100005C0883F31F48091FC028F7E8093FC02B8 -:104A200013C08D3F21F48091FA028E7F0BC08E3F20 -:104A300021F48091FA028D7F05C08F3F29F4809187 -:104A4000FA028B7F8093FA028091FD0281110EC0E1 -:104A50008091FE0281110AC08091FF02811106C07F -:104A600080910003811102C01092FB0208958CEF27 -:104A700092E00E9417170E94DE229093F902809321 -:104A8000F80208951F93CF93DF938091F8029091DD -:104A9000F9020E94EA22AC019091FB02992321F0D5 -:104AA00020911D0130E006C020911E018AE0289F60 -:104AB000900111244217530708F486C08091FD022B -:104AC000C091FE02D091FF0210910003811107C036 -:104AD000C11176C0D11174C0111172C075C09F3F51 -:104AE00019F09F5F9093FB02181624F40E94C823CC -:104AF0008093FD028091FD0287FF05C00E94C823BC -:104B000081958093FD021C1624F40E94C823809393 -:104B1000FE028091FE0287FF05C00E94C823819596 -:104B20008093FE026091FD02662339F1C091FE027E -:104B3000CC2319F1772767FD7095872F972F0E9457 -:104B4000A92923E333E343E35FE30E94B92A0E94E8 -:104B500076296093FD026C2F772767FD7095872F6C -:104B6000972F0E94A92923E333E343E35FE30E94E5 -:104B7000B92A0E9476296093FE021D1624F40E9431 -:104B800011248093FF028091FF0287FF05C00E94DD -:104B9000112481958093FF02111624F40E941124A0 -:104BA000809300038091000387FF05C00E941124B9 -:104BB000819580930003DF91CF911F910C9437254D -:104BC0009F3F09F08ECF96CFDF91CF911F9108952F -:104BD000ECEFF2E085E0DF011D928A95E9F7109293 -:104BE000FB021092FA020895833081F128F481309B -:104BF00059F08230D1F00895853009F449C0B8F1F8 -:104C0000863009F456C0089580911E01262F30E0A9 -:104C1000280F311D2F3F310524F4680F60931E01CA -:104C200008958FEF80931E01089580911D01262F16 -:104C300030E0280F311D2F3F310524F4680F6093B9 -:104C40001D0108958FEF80931D01089580911C012F -:104C5000262F30E0280F311D2F3F310524F4680F37 -:104C600060931C0108958FEF80931C01089580913B -:104C70001B01262F30E0280F311D2F3F310524F472 -:104C8000680F60931B0108958FEF80931B010895B7 -:104C900080911A01262F30E0280F311D2F3F31055A -:104CA00024F4680F60931A0108958FEF80931A011E -:104CB000089580911901262F30E0280F311D2F3FD4 -:104CC000310524F4680F6093190108958FEF8093E4 -:104CD00019010895833011F128F4813049F08230B0 -:104CE00091F00895853081F120F18630C1F1089569 -:104CF00080911E01681720F4861B80931E01089581 -:104D000010921E01089580911D01681720F4861BE2 -:104D100080931D01089510921D01089580911C013A -:104D2000681720F4861B80931C01089510921C01C3 -:104D3000089580911B01681720F4861B80931B0146 -:104D4000089510921B01089580911A01681720F4AC -:104D5000861B80931A01089510921A01089580917C -:104D60001901681720F4861B809319010895109289 -:104D7000190108950F931F93873208F048C08E31B0 -:104D800008F08DC0803109F477C008F5873009F448 -:104D900061C068F4863009F09DC08091F202817F85 -:104DA0008E7F8093F20281E08093020394C08B3067 -:104DB00009F489C08E3009F08DC08091F20282FB27 -:104DC000222720F991E0922790FB82F95EC086317C -:104DD00009F479C060F4813109F07CC00E94E21BC3 -:104DE0009091160181E08927809316016CC089316A -:104DF00009F469C08B3109F06DC08091F20281FB2A -:104E0000222720F991E0922790FB81F93EC0883358 -:104E100009F459C050F4893209F457C0853309F4B4 -:104E200054C0873209F451C055C0833409F44DC0D1 -:104E300028F48A3308F44EC0895332C0883409F00C -:104E400049C00E94E21B0E94200A0E94E4030E94C3 -:104E5000392339C09091F202892F8095817080FBAF -:104E600090F929F0966098609093F20234C0997F8F -:104E7000977F9093F20227C08091F20283FB222752 -:104E800020F991E0922790FB83F98093F202992315 -:104E9000D1F08091F20281608093F20214C08D51B2 -:104EA00041E050E060E070E08A019B0104C0000F27 -:104EB000111F221F331F8A95D2F7C901B8010E9422 -:104EC000A21F0E94E21B81E006C061E070E080E06A -:104ED00090E0F5CF80E01F910F91089580E0089554 -:104EE00080E00895CF93C82F80910203813069F04C -:104EF00018F08230C9F184C0E0911701F0911801D7 -:104F00008081823209F07EC007C0E0911701F091E4 -:104F100018018081823261F48C2F0E946E278111EA -:104F200004C08C2F0E94BA261DC081E090E01AC0F8 -:104F30008C2F0E947027811114C0C43179F048F47D -:104F4000CB3079F0C03109F061C082E08093020378 -:104F500008C0C93219F0C83321F058C010920203BA -:104F600055C081E0817054C0C93291F120F5C4313F -:104F700079F1B0F4C73009F047C08EE180931E018B -:104F800082E380931D018AE080931C0184E1809379 -:104F90001B0188E080931A0188E28093190134C0D4 -:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 -:104FB0008093010329C0CE34E9F020F4CB3421F5ED -:104FC0006AE013C0C13579F0C235F1F461E00DC07B -:104FD00080910103882319F01092010315C081E02C -:104FE0008093020315C061E006C0809101030E9416 -:104FF000F4250AC06AE0809101030E946A2604C079 -:105000001092020380E004C081E002C080E0AACFD9 -:10501000CF9108950E949A23811102C00E947623A5 -:105020000E94B62380931D0380FF02C0869501C0B5 -:1050300080E00C94F10280911D03982F9695292F02 -:1050400030E0233031054CF49F5F990F8170892B3C -:10505000816080931D030E94BA2380911D03869571 -:105060000C94F10280911D03982F969591F0915820 -:10507000990F8170892B80931D038E7F91E009F435 -:1050800090E080911D0390FB80F980931D030E94A6 -:10509000BA2380911D0386950C94F10280911D0323 -:1050A000982F909590FB80F980931D030E94BA235E -:1050B00080911D0380FF02C0869501C080E00C94A2 -:1050C000F10290911D03892F86958F5F8F779170E4 -:1050D000843028F4880F892B80931D0302C090939D -:1050E0001D0380911D038E7F91E009F490E0809173 -:1050F0001D0390FB80F980931D030E94BA238091C9 -:105100001D0386950C94F10220911D03922F969514 -:105110008927982F990F822F8170892B80931D03E7 -:105120008E7F91E009F490E080911D0390FB80F95F -:1051300080931D030E94BA2380911D0386950C94D1 -:10514000F10280911D03869508955058BB27AA2728 -:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 -:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF -:10517000D3D180F3BA17620773078407950718F035 -:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 -:105190000B01B90190010C01CA01A0011124FF27E4 -:1051A000591B99F0593F50F4503E68F11A16F040DF -:1051B000A22F232F342F4427585FF3CF46953795DE -:1051C0002795A795F0405395C9F77EF41F16BA0BA3 -:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 -:1051E000661F771F881FC2F70EC0BA0F621F731F9A -:1051F000841F48F4879577956795B795F7959E3FF7 -:1052000008F0B3CF9395880F08F09927EE0F979584 -:105210008795089527D108F481E008950CD06BC1DB -:1052200063D140F05AD130F021F45F3F19F03EC114 -:10523000511195C14FC170D198F39923C9F35523EA -:10524000B1F3951B550BBB27AA2762177307840779 -:1052500038F09F5F5F4F220F331F441FAA1FA9F32F -:1052600033D00E2E3AF0E0E830D091505040E69521 -:10527000001CCAF729D0FE2F27D0660F771F881F82 -:10528000BB1F261737074807AB07B0E809F0BB0B71 -:10529000802DBF01FF2793585F4F2AF09E3F510595 -:1052A00068F004C15CC15F3FECF3983EDCF3869587 -:1052B00077956795B795F7959F5FC9F7880F911D0B -:1052C0009695879597F90895E1E0660F771F881FF7 -:1052D000BB1F621773078407BA0720F0621B730BAA -:1052E000840BBA0BEE1F88F7E095089504D06894FC -:1052F000B11135C1089518D188F09F5790F0B92F9A -:105300009927B751A0F0D1F0660F771F881F991F1A -:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF -:1053200008951CC1672F782F8827B85F39F0B93FDF -:10533000CCF3869577956795B395D9F73EF490951C -:105340008095709561957F4F8F4F9F4F0895E8949A -:1053500009C097FB3EF490958095709561957F4FBD -:105360008F4F9F4F9923A9F0F92F96E9BB2793956B -:10537000F695879577956795B795F111F8CFFAF47B -:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC -:1053900016C0882311F096E911C0772321F09EE80A -:1053A000872F762F05C0662371F096E8862F70E070 -:1053B00060E02AF09A95660F771F881FDAF7880F4A -:1053C0009695879597F9089588D018F011F08CD0AC -:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F -:1053E000E7FB6217730784079507A8F199F3E92F84 -:1053F000FF2788232AF03197660F771F881FDAF777 -:10540000952F5527442332F091505040220F331FDF -:10541000441FD2F7BB27E91BF50B621B730B840BF0 -:10542000B109C1F222F4620F731F841FB11D3197BD -:105430002AF0660F771F881FBB1FEFCF9150504097 -:105440005AF041F0882332F0660F771F881F915081 -:105450005040C1F7939530C08695779567959F5FCB -:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 -:1054700016161706E807F907C0F012161306E40718 -:10548000F50798F0621B730B840B950B39F40A2611 -:1054900061F0232B242B252B21F408950A2609F4EF -:1054A000A140A6958FEF811D811D089597F99F67F3 -:1054B00080E870E060E008959F3F31F0915020F463 -:1054C000879577956795B795880F911D96958795E0 -:1054D00097F908959FEF80EC089500240A9416161A -:1054E000170618060906089500240A9412161306D2 -:1054F000140605060895092E0394000C11F4882360 -:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B -:105510007F4F8F4F9F4F089557FD9058440F551F51 -:1055200059F05F3F71F04795880F97FB991F61F025 -:105530009F3F79F087950895121613061406551F9C -:10554000F2CF4695F1DF08C0161617061806991F08 -:10555000F1CF86957105610508940895E894BB27FD -:1055600066277727CB0197F908957CDF08F48FEF42 -:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 -:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF -:10559000D1F3950F50E0551F629FF001729FBB271A -:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 -:1055B0006627B00DA11D661F829F2227B00DA11D79 -:1055C000621F739FB00DA11D621F839FA00D611DFF -:1055D000221F749F3327A00D611D231F849F600D20 -:1055E000211D822F762F6A2F11249F5750408AF059 -:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 -:10560000881F91505040A9F79E3F510570F04ECF32 -:10561000A6CF5F3FECF3983EDCF3869577956795D0 -:10562000B795F795E7959F5FC1F7FE2B880F911D02 -:105630009695879597F90895FA01EE0FFF1F30961A -:105640002105310599F16115710561F48038BFE3D9 -:105650009B0749F168949038810561F08038BFEF6D -:105660009B0741F0992342F5FF3FE10531052105F4 -:1056700011F1E8940894E795D901AA2329F4AB2FF6 -:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F -:10569000F73950F019F0FF3A38F49F779F930CD008 -:1056A0000F9007FC905808953EF014CF60E070E032 -:1056B00080E89FE308954FE79F775F934F933F9371 -:1056C0002F939ED02F913F914F915F9152DF05C054 -:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C -:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C -:1056F0004EDF0F920F920F924DB75EB70F92C0D050 -:10570000EAE0F1E016D04F915F91EF91FF91E595BE -:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD -:10572000FA95E1F74195550B32D00F9007FE26C050 -:105730000895DF93CF931F930F93FF92EF92DF9221 -:105740007B018C01689405C0DA2EEF011EDFFE019B -:10575000E894A5912591359145915591AEF3EF01CE -:1057600006DDFE019701A801DA9479F7DF90EF904A -:10577000FF900F911F91CF91DF9108959B01AC0194 -:1057800060E070E080E89FE349CD90CE95CECCDE1E -:10579000E8F39923D9F3940F511DBBF39150504076 -:1057A00094F059F0882332F0660F771F881F9150CC -:1057B0005040C1F79E3F510544F7880F911D9695C3 -:1057C000879597F908955F3FACF0983E9CF0BB2712 -:1057D000869577956795B79508F4B1609395C1F76D -:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B -:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 -:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD -:105810000F93FF92C92FDD2788232AF02197660F67 -:10582000771F881FDAF720E030E040E85FEB9FE366 -:10583000883920F0803E30F021968F7787DCE2E3D4 -:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 -:10585000EC01FB2E6F5771097595771F880B990B1B -:1058600078DD28E132E741E35FE38FDEAF2D980179 -:10587000AE01FF900F911F91CF91DF9178DC3BCE6D -:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 -:1058900022273327442750781FC0B75188F4AB2FF5 -:1058A0000024469537952795011CA395D2F3002037 -:1058B00069F0220F331F441FB395DAF30DD045CCA6 -:1058C00061307105A0E88A07B94630F49B01AC014C -:1058D0006627772788279078309621F020833183B8 -:1058E000428353830895AA1BBB1B51E107C0AA1F23 -:1058F000BB1FA617B70710F0A61BB70B881F991F71 -:105900005A95A9F780959095BC01CD01089597FB14 -:10591000072E16F4009407D077FD09D00E94732C4F -:1059200007FC05D03EF4909581959F4F08957095A2 -:1059300061957F4F0895EE0FFF1F0590F491E02DC4 -:105940000994F999FECF92BD81BDF89A992780B547 -:105950000895A8E1B0E042E050E00C94C92C262F55 -:10596000F999FECF92BD81BDF89A019700B4021655 -:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 -:1059800008950196272F0E94B02C0C94AF2CDC01B7 -:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A -:1059A000319600B40D9241505040B8F70895F894E4 -:0259B000FFCF27 -:1059B200640007000CFF0000003F64041092106FA7 -:1059C200103B1007100101DF022808140A321E00E2 -:1059D20002040507090B0C0E1011131517181A1CD7 -:1059E2001D1F2123242628292B2D2F303234353711 -:1059F200393B1F0F03764F5F6F7F4969437909591E -:105A020053633149803F5D8B803FF8BF803FCAE1DD -:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE -:105A2200803F3149803F0000803FF16D7F3F75EA42 -:105A32007E3F4C827E3F833F7E3F84287E3F833F72 -:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 -:105A5200803F3F4D3639ED04A0046A043104C4038B -:105A6200DD03F6030F04010203040506070809001B -:00000001FF diff --git a/keyboard/planck/keymaps/leo/compiled.hex b/keyboard/planck/keymaps/leo/compiled.hex deleted file mode 100644 index 4bfe15bd09..0000000000 --- a/keyboard/planck/keymaps/leo/compiled.hex +++ /dev/null @@ -1,1454 +0,0 @@ -:100000000C94C5020C9409030C9409030C94090385 -:100010000C9409030C9409030C9409030C94090330 -:100020000C9409030C9409030C94A7140C947915EF -:100030000C94DB220C9409030C9409030C9409031F -:100040000C9409030C946B030C9409030C9409039E -:100050000C9409030C9443230C9409030C94090396 -:100060000C9409030C9409030C9409030C940903E0 -:100070000C9409030C9409030C9409030C940903D0 -:100080000C941C0B0C9409030C9409030C940903A5 -:100090000C9409030C9409030C9409030C940903B0 -:1000A0000C9409030C9409030C940903E615081633 -:1000B000F6160816F6164D167016F616C516D8164C -:1000C000C219C219F119F119301A501AA61BA61B30 -:1000D0005B1AA61B0B1B0B1B721B7B1BA61BA01BFF -:1000E000181B181B181B181B181B181B181B181B78 -:1000F000181B181B181B181B181B181B181B181B68 -:10010000281B361B3D1B441B4E1B07634236B79B07 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A299 -:1001D000F1A3F1A429002F003400330013001C0008 -:1001E00009000A00060015000F002A002B00040079 -:1001F0001200080018000C0007000B001700110087 -:1002000016002800E100370014000D000E001B004E -:10021000050010001A0019001D003600E000E20081 -:10022000E300032002202C002C0001200320E70023 -:10023000E600E400000000000000000000000000F4 -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:10026000000000000000000000000000000000008E -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:100290000000000030141E001F002000210022007A -:1002A0002300240025002600270030023A003B00EE -:1002B0003C003D003E003F00400041004200430042 -:1002C000440045000100010001000100010001009F -:1002D0000100010001000100010001000100010016 -:1002E0000100010001000100010001000100010006 -:1002F000010001002E021E021F022002221422020F -:10030000230224022414271427022D0001001F14A5 -:100310003802640064022D1464143200250226029F -:100320002D02380001000100010001000100010060 -:100330000100010025142614010001000100010044 -:1003400001000100010001000100010001000100A5 -:100350000100010001004A0052004D0001000100AF -:1003600001004A0052004D0001004C0001004F0006 -:10037000510050004B0001004B00500051004F0055 -:100380000100010001000100010001004E00010018 -:100390004E000100AA00A9000100010001000100B7 -:1003A0000100010001000100010001000100010045 -:1003B000010001002803540068006500200050007F -:1003C0006C0061006E0063006B0020004B00650054 -:1003D000790062006F0061007200640000002C036D -:1003E0004F007200740068006F006C0069006E00BE -:1003F00065006100720020004B006500790062001A -:100400006F006100720064007300000004030904BF -:1004100009026D00040100A0FA09040000010301B3 -:100420000100092111010001223F00070581030895 -:10043000000A090401000103010200092111010061 -:1004400001224D000705820308000A090402000189 -:100450000300000009211101000122360007058375 -:100460000308000A09040300010300000009211128 -:100470000100012239000705840310000112011058 -:100480000100000008EDFE606001000102000105AE -:10049000010906A101050719E029E71500250195C5 -:1004A0000875018102050819012905950575019155 -:1004B000029501750391010507190029771500259B -:1004C00001957875018102C005010980A1018502AD -:1004D00016010026B7001A01002AB7007510950111 -:1004E0008100C0050C0901A1018503160100269CAD -:1004F000021A01002A9C02751095018100C00501B5 -:100500000902A1010901A100050919012905150028 -:10051000250195057501810295017503810105018C -:10052000093009311581257F950275088106093842 -:100530001581257F950175088106050C0A3802157D -:1005400081257F950175088106C0C005010906A1B6 -:1005500001050719E029E7150025019508750181B6 -:100560000295017508810105081901290595057590 -:100570000191029501750391010507190029FF15E5 -:100580000025FF950675088100C011241FBECFEF1E -:10059000DAE0DEBFCDBF04B603FE24C080911E03A7 -:1005A00090911F03A0912003B09121038730904BBD -:1005B000A740B04BB9F410921E0310921F03109283 -:1005C00020031092210314BE84B7877F84BF88E183 -:1005D0000FB6F89480936000109260000FBEE0E0C8 -:1005E000F8E3099511E0A0E0B1E0E0E1FAE502C02E -:1005F00005900D92A03CB107D9F713E0A0ECB1E053 -:1006000001C01D92AE31B107E1F70E94ED110C94CB -:10061000062D0C9400000895089581E00895089532 -:100620000C940C030C940D030C940F030E94D0281F -:1006300023E030E0281B3109220F2093C4010895E4 -:10064000282F2F9880918000211108C0877F8093E8 -:10065000800010928D0010928C001BC088608093E7 -:100660008000233019F48FEF9FEF0FC083E090E0FC -:10067000821B9109880F991F2FEF3FEFA90102C03C -:10068000569547958A95E2F7CA0190938D0080931D -:100690008C000C9416030E94160384E08093C3011F -:1006A0001092C0010895279A2F988FEF9FEF909393 -:1006B0008700809386008AE08093800089E18093A0 -:1006C00081000E9439280C944B030E9453036E9AB8 -:1006D000769A0C940B031F920F920FB60F9211246F -:1006E0002F933F938F939F93EF93FF93E091C101DB -:1006F000F091C201CF0101969093C2018093C10194 -:100700000090C30102C0F695E7950A94E2F7EF73F3 -:100710008091C001823019F4E03251F404C081307C -:1007200039F4EF3329F480916F008D7F80936F004F -:10073000F0E0E457FE4FE49121E031E0E29FC00198 -:10074000E39F900D11240090C40102C096958795F7 -:100750000A94E2F790938D0080938C00FF91EF91C3 -:100760009F918F913F912F910F900FBE0F901F90EF -:10077000189581E008950C94B90308950C946503CD -:1007800080911502882309F448C08091D10190918D -:10079000D201009779F40E940D239093D2018093A7 -:1007A000D1018091D30190E0009771F48091D40140 -:1007B00090E00AC00E9419232091000130910101AC -:1007C0002817390740F329C00197880F991F880F10 -:1007D000991FFC01EB52FE4F6081718182819381F0 -:1007E0000E94820AE091D30184E0E89FF001112485 -:1007F000EB52FE4F60817181828193814FE050E026 -:100800000E943A0E8091D30190E001966091D4014C -:1008100070E00E94B62C8093D3010C9410031092C8 -:1008200017020C944F0A0895089581E080931702EF -:100830000C941404089508958F929F92AF92BF92E2 -:10084000EF92FF920F931F93CF93DF93CDB7DEB755 -:10085000A3970FB6F894DEBF0FBECDBF7C01FC019D -:1008600000811181C8010E940A21B8010E9421065D -:100870008C01B7010E94BB03882309F4CCC100326C -:10088000F0E51F0741F4F7018281882309F458C07D -:100890000E949E0EC0C10132F0E51F0741F4F7012E -:1008A0008281882309F44CC00E94A70EB4C1023291 -:1008B000F0E51F0751F4F7018281882309F440C055 -:1008C0000E949A0E8111F0CFE3CF0332F0E51F07AB -:1008D00039F4F7018281882399F10E9415049BC1A4 -:1008E0000432F0E51F0739F4F7018281882341F1D2 -:1008F0000E940F0490C10532F0E51F0749F4F7018B -:1009000082818823E9F0809117028111F1CFE5CF30 -:100910000632F0E51F0739F4F7018281882381F060 -:100920000E94AE0E0AC00732F0E51F0749F4F70136 -:100930008281882329F00E94B90E0E941B046BC19A -:1009400080911702811105C0F70182818111CFC00A -:1009500018C1003E110579F4F7018281882309F45A -:100960004DC00E944F0A81E080931602109215023A -:100970001092D40150C1023E110559F4F701828151 -:100980008823E1F10E944F0A10921602109215027C -:1009900042C1033E110591F4F7018281882371F170 -:1009A0000E944F0A1092160281E080931502109265 -:1009B000D3011092D2011092D1012DC1023511053F -:1009C00059F4F7018281882309F425C1809100013F -:1009D000909101010A970DC00135110579F4F701D5 -:1009E0008281882309F417C180910001909101014F -:1009F0000A9690930101809300010DC1409104017A -:100A000083E2EFE1F1E0DE01119601900D928A950B -:100A1000E1F7F701808121E030E02C0F3D1F280F26 -:100A2000311DC9012091020130910301FC01E20F47 -:100A3000F31F6081772767FD7095640F711D88270C -:100A400077FD8095982F0E94D82920E030E040E47F -:100A500051E40E943D294B015C01F701218184E0B2 -:100A600090E0821B9109BC01882777FD8095982F23 -:100A70000E94D8299B01AC01C501B4010E94D52870 -:100A80009B01AC0160E070E080E090E40E944B2BA1 -:100A900020E030E04CED50E40E94E82A4B015C017C -:100AA000F70182818823D1F04FE050E0C501B40105 -:100AB0000E943A0E809116028823A1F08091D40101 -:100AC00024E0829FF0011124EB52FE4F808291823C -:100AD000A282B3828F5F8093D40104C0C501B401A8 -:100AE0000E94820A0F3F110508F02ECF94C080911A -:100AF000D00181111FC0043130E5130709F051C046 -:100B00000E94BD0381E08093D0010E940D23909349 -:100B1000CF018093CE011092C7011092C9011092AB -:100B2000C8011092CB011092CA011092CD0110920F -:100B3000CC0171C08091CE019091CF010E94192308 -:100B4000883C910570F48091C701E82FF0E0EE0F2A -:100B5000FF1FE853FE4F118300838F5F8093C7010F -:100B60005AC0043880E5180721F00538104501F116 -:100B70003AC0F7018281882341F01092C50182E0DA -:100B80001EC0043830E5130759F58091C501811165 -:100B900006C086E20E94661886E20E942E1982E054 -:100BA0001CC00438F0E51F0741F305381045D9F49F -:100BB000F7018281882331F01092C60180E20E9401 -:100BC0007D1929C08091C601811106C087E20E946B -:100BD000661887E20E942E1980E20E9484191BC0C9 -:100BE0000538104529F381E08093C5018093C60143 -:100BF000C701A3960FB6F894DEBF0FBECDBFDF913D -:100C0000CF911F910F91FF90EF90BF90AF909F9069 -:100C10008F900C94120380E0A3960FB6F894DEBF79 -:100C20000FBECDBFDF91CF911F910F91FF90EF903D -:100C3000BF90AF909F908F90089580E090E00895CE -:100C400008959CE0799FF001112490E3899FE00DC5 -:100C5000F11D1124E60FF11DEE0FFF1FEC52FE4FA8 -:100C6000859194910895880F991FFC01E45BFF4FD3 -:100C7000859194910895880F991FFC01E453FE4FCC -:100C80008591949108950F931F93CF93DF93EC0177 -:100C9000811521E39207A0F5C11580E3D80708F07C -:100CA000D7C0C83ED105D8F4C03ED10508F007C270 -:100CB000C83AD10578F4C53AD10508F06AC0C13008 -:100CC000D10509F463C008F4F7C1C430D10508F0B8 -:100CD000F6C1F2C1CB3BD10508F466C0EDC1C11528 -:100CE00090E2D90708F0AFC0C11521E0D20708F0A3 -:100CF000E6C1C03FD10508F4DFC18E0110651FC2F7 -:100D0000C03880E5D80700F5C03790E5D90708F06E -:100D1000A3C0C11520E5D20709F4ACC050F4CE0140 -:100D2000905480319F4008F0C7C1DF708E01106A77 -:100D300006C2C13080E5D80709F4AEC0C43190E5E1 -:100D4000D90708F4AFC0B8C1C33820E5D20709F409 -:100D50008EC050F4C13890E5D90709F482C008F07C -:100D600083C000E011EDEBC1C03181E5D80708F484 -:100D7000A3C1C11597E5D90708F436C1CE01905734 -:100D80008115904108F098C1DF7093C101E010E037 -:100D9000D6C1C53AD10509F494C1C63AD10509F0C6 -:100DA00093C102E810E4CBC1C83AD10509F48FC160 -:100DB000C93AD10509F48EC1CA3AD10509F48DC1E9 -:100DC000CB3AD10509F48CC1CC3AD10509F48BC1D9 -:100DD000CD3AD10509F48AC1C03BD10509F489C1D6 -:100DE000CE3AD10509F488C1CF3AD10509F487C1BB -:100DF000C13BD10509F486C1C23BD10509F485C1C7 -:100E0000C33BD10509F484C1C43BD10509F483C1B6 -:100E1000C53BD10509F482C1C63BD10509F481C1A6 -:100E2000C73BD10509F480C1C83BD10509F47FC196 -:100E3000C93BD10509F47EC1CA3BD10509F47DC186 -:100E400000E014E47CC1CE019F700E943B0678C193 -:100E5000DD278E01106C73C1CF70DD278E01146DFC -:100E60006EC100E010ED6BC100E012ED68C100E062 -:100E700013ED65C10E94111C0E944F0A0E941304C9 -:100E80008FEF94E32CE0815090402040E1F700C0C8 -:100E900000000E94682353C18091F2028160809318 -:100EA000F2024DC10E94C923811102C00E94A523F4 -:100EB0000E94DC2390E090931D0380931C03C230BA -:100EC00080E5D80721F480911C03816086C0C4307E -:100ED00090E5D90721F480911C0382607EC0C63062 -:100EE00020E5D20721F480911C03846076C0C830CD -:100EF00080E5D80719F480911C0327C0CA3090E51B -:100F0000D90721F480911C03806167C0CC3020E5B3 -:100F1000D20721F480911C0380625FC0CE3080E54F -:100F2000D80721F480911C03806457C0C03190E53C -:100F3000D90721F480911C0380684FC0C23120E59D -:100F4000D20729F480911C038460886046C0C330B6 -:100F500080E5D80721F480911C038E7F3EC0C53008 -:100F600090E5D90721F480911C038D7F36C0C730EE -:100F700020E5D20721F480911C038B7F2EC0C9305D -:100F800080E5D80719F480911C0326C0CB3090E58A -:100F9000D90721F480911C038F7E1FC0CD3020E53E -:100FA000D20721F480911C038F7D17C0CF3080E5DC -:100FB000D80721F480911C038F7B0FC0C13190E5CD -:100FC000D90721F480911C038F7707C0C331D04526 -:100FD00031F480911C038B7F877F80931C03809169 -:100FE0001C030E94E023ABC08D2F99278F70992797 -:100FF00081309105D9F49E012370332702C0880FF8 -:10100000991F2A95E2F79C688E0144E0000F111F9A -:101010004A95E1F700271370802B912B53E0CC0FFA -:10102000DD1F5A95E1F7C076DD272FC0823091058C -:1010300031F4DC2FCC278E01016F106A80C0833021 -:10104000910569F4CE018370992701E010E002C098 -:10105000000F111F8A95E2F7C8019C680FC0843009 -:101060009105B9F4CE018370992701E010E002C028 -:10107000000F111F8A95E2F7C8019A6823E0CC0F90 -:10108000DD1F2A95E1F7C07ED7708C010C2B1D2B3C -:1010900056C08530910531F4DC2FCC278E01046FCA -:1010A000106A4DC0069709F04AC0CF71DD27DC2FCA -:1010B000CC278E01106243C000E010E040C08E01DA -:1010C0003EC001E810E43BC003E810E438C002EE83 -:1010D00014E435C009EE14E432C00AEE14E42FC063 -:1010E00005EB14E42CC006EB14E429C007EB14E470 -:1010F00026C00CEC14E423C00DEC14E420C003E87B -:1011000015E41DC00AE815E41AC002E915E417C089 -:1011100004E915E414C001E216E411C003E216E488 -:101120000EC004E216E40BC005E216E408C006E2B5 -:1011300016E405C007E216E402C00AE216E4C8019C -:10114000DF91CF911F910F9108959CE0799FF0015D -:10115000112490E3899FE00DF11D1124E60FF11D8C -:10116000EE0FFF1FEC52FE4F85919491803E91054A -:10117000E0F4803C910558F58133910509F46FC086 -:1011800048F48932910509F463C08A32910509F463 -:101190006DC072C089339105E9F082389105D1F0B4 -:1011A0008533910509F44DC067C0833E910581F1F7 -:1011B00038F4803E9105B9F0823E9105D9F05CC0CB -:1011C000863E910561F1873E9105A1F155C00E94CF -:1011D0003306089520911C0320FD02C021FF4CC05E -:1011E00080EE90E049C080911C0380FFF9CF89E335 -:1011F00090E042C080911C0382FF0EC080911C03CE -:1012000084FF03C080E090E037C083EE90E034C0FC -:1012100080911C0382FFF2CF82EE90E02DC080917E -:101220001C0383FF0BC080911C0384FDEBCF87EE72 -:1012300090E022C080911C0383FFF5CF86EE90E002 -:101240001BC080911C0385FF07C089E290E014C099 -:1012500080911C0385FFF9CF85E390E00DC080915C -:101260001C0386FF07C08AE290E006C080911C0341 -:1012700086FFF9CF81E390E00E94430608950C9425 -:101280001403E82FF0E0E25BFE4F8081E82FEF705F -:10129000F0E082958F7021E030E0A90102C0440F98 -:1012A000551F8A95E2F740A308950F931F93CF939C -:1012B000DF9385B7806885BF85B7806885BFC3E049 -:1012C000D0E001E010E0FE01E25BFE4F8081E82FFC -:1012D000EF70F0E021A182958F70A80102C0440F49 -:1012E000551F8A95E2F7CA01822B81A38C2F0E9499 -:1012F0004109219740F78BE090E061E070E0FC014C -:10130000EE5BFE4F2081E22FEF70F0E042A12295CC -:101310002F70DB0102C0AA0FBB1F2A95E2F79D01C7 -:10132000242B22A3019758F7DF91CF911F910F91A2 -:101330000C94BE03EF92FF920F931F93CF93DF9312 -:1013400000E212E0C3E0EE24E394F12CD5E08C2F10 -:101350000E9441098BE090E040E050E0FC01EE5B30 -:10136000FE4F6081E62FEF70F0E020A130E0629543 -:101370006F7002C0359527956A95E2F720FD09C088 -:101380009701082E02C0220F331F0A94E2F7422B66 -:10139000532B019718F7F801929182918F018417CE -:1013A000950721F051834083D09305018C2F0E9433 -:1013B0004109C15060F68091050187FD2CC0815024 -:1013C000809305018F3F39F08FE99FE00197F1F796 -:1013D00000C0000020C080911E0290911F029093D7 -:1013E00027028093260280911C0290911D02909307 -:1013F00025028093240280911A0290911B029093FF -:1014000023028093220280911802909119029093F6 -:101410002102809320020E94C00381E0DF91CF91DE -:101420001F910F91FF90EF900895E82FF0E0EE0FDD -:10143000FF1FE05EFD4F80819181089508950F9315 -:101440001F93CF9308E212E0C0E0F80192918291DD -:101450008F010E948522C80FF2E000321F07A9F712 -:101460008C2FCF911F910F9108950E94C923811154 -:1014700002C00E94A5230E94EE23809307033E9A98 -:10148000809171008D7F8093710082E08093900045 -:101490008AE18093910081E080932A0208958091EF -:1014A0002A02811102C00E94350A10927A0210921B -:1014B0007902809171008D7F8093710080919000FE -:1014C0008F738093900010923C0210923B02109216 -:1014D00073021092740210927502109276021092AA -:1014E000720210927102E1E5F2E0A1E4B2E0119221 -:1014F0001192119211921D921D9282E0E137F8072C -:10150000B1F70895CF92DF92EF92FF920F931F935E -:10151000CF93DF9320913B02222309F484C06B0117 -:101520007C0180912A02811102C00E94350A01E7E4 -:1015300012E0C7E0D0E0A7019601F80192918291F4 -:10154000729162918F010E943929811131C0FE018F -:10155000EE0FFF1FEE0FFF1FEF5AFD4F108211829B -:1015600012821382DE01AA0FBB1FAF5BBD4F119623 -:101570001C921E92C730D105E9F021964481558115 -:1015800066817781408351836283738314821582DD -:101590001682178212968D919C91139711969C93A7 -:1015A0008E9313961C921E92129734961296E2CF47 -:1015B000219708F68091790290917A02019797FD20 -:1015C00005C090937A028093790204C010927A0247 -:1015D000109279028091790290917A02209177029B -:1015E000309178022817390724F01092780210926F -:1015F0007702892BC1F4809171008D7F80937100F7 -:10160000809190008F7380939000109273021092DB -:101610007402109275021092760210927202109269 -:10162000710210923B02DF91CF911F910F91FF90B9 -:10163000EF90DF90CF9008951F920F920FB60F9208 -:1016400011244F925F926F927F928F929F92AF92EE -:10165000BF92CF92DF92EF92FF922F933F934F93DF -:101660005F936F937F938F939F93AF93BF93CF932A -:10167000DF93EF93FF9380913B02882309F49BC192 -:10168000C0917902D0917A021C161D060CF093C10C -:1016900040902B0250902C0260902D0270902E02F0 -:1016A00020E030E0A901C301B2010E94E42A18162B -:1016B0000CF065C0C130D10509F452C080917702A9 -:1016C00090917802BE010E94B62C7C019093780222 -:1016D0008093770280903D0290903E02A0903F025E -:1016E000B090400220E030E040E85FE3C501B40183 -:1016F0000E94D52860933D0270933E0280933F0282 -:1017000090934002F701EE0FFF1FEE0FFF1FEF5AFD -:10171000FD4FA301920160817181828193810E94BA -:101720003D2920E030E040E05EE30E94E82A9B0192 -:10173000AC01C501B4010E94E42A18168CF4C7015B -:101740000196BE010E94B62C909378028093770296 -:1017500010923D0210923E0210923F0210924002FF -:10176000E0917702F0917802EE0FFF1FEE0FFF1F5E -:10177000EF5AFD4F6081718182819381D0C0C0900A -:101780007302D0907402E0907502F090760220E02F -:1017900030E0A901C701B6010E94392921978823A9 -:1017A00009F4A2C0FE01EE0FFF1FEE0FFF1FEF5A5C -:1017B000FD4F80809180A280B380A5019401C70174 -:1017C000B6010E94392987FF31C0A501940160E06C -:1017D00070E08CED93EC0E943D2920E030E040E485 -:1017E00051E40E943D2920E030E040E05FE30E94A8 -:1017F000E82A9B01AC0160E070E080E090E40E9488 -:101800004B2B9B01AC01C501B4010E94E82A9B014E -:10181000AC01C701B6010E94392987FF07C0A701A3 -:10182000960160E070E08CED93E439C0A50194016D -:10183000C701B6010E94E42A18160CF055C0A50194 -:10184000940160E070E08CED93E40E943D2920E07B -:1018500030E040E451E40E943D2920E030E040E0E7 -:101860005FE30E94E82A9B01AC0160E070E080E049 -:1018700090E40E944B2B9B01AC01C501B4010E9476 -:10188000E82A9B01AC01C701B6010E94E42A1816A0 -:101890005CF5A701960160E070E08CED93EC0E948E -:1018A0003D2920E030E040E451E40E943D2920E061 -:1018B00030E040E05FE30E94E82A9B01AC0160E079 -:1018C00070E080E090E40E944B2B9B01AC01C701CB -:1018D000B6010E94E82A60937302709374028093A9 -:1018E00075029093760213C0FE01EE0FFF1FEE0FFC -:1018F000FF1FEF5AFD4F80819181A281B3818093B8 -:10190000730290937402A0937502B0937602609173 -:101910007302709174028091750290917602209109 -:101920002802309129022F3F4FEF340731F02F5F0B -:101930003F4F30932902209328020E94C40E6B016E -:101940007C0120E034E244EF51E40E94392987FF12 -:1019500008C086EFC82E88E2D82E84EFE82E81E4F6 -:10196000F82E20E030E040E051E4C701B6010E94CB -:10197000E82A9B01AC0160E074E284E79BE40E94EA -:101980003D296B017C010E94AA2970939700609306 -:101990009600209106013091070140910801509175 -:1019A0000901C701B6010E94E82A0E94AA29709382 -:1019B00099006093980080913C02882309F433C118 -:1019C000C0903702D0903802E0903902F0903A028D -:1019D00020E030E0A901C701B6010E94E42A1816F0 -:1019E000D4F580912802909129028F3F2FEF920722 -:1019F00029F001969093290280932802C701B6012D -:101A00000E94C40E20E030E040E051E40E94E82A49 -:101A10009B01AC0160E074E284E79BE40E943D29F5 -:101A20006B017C010E94AA29709397006093960035 -:101A30002091060130910701409108015091090160 -:101A4000C701B6010E94E82A0E94AA297093990052 -:101A50006093980008C01092970010929600109220 -:101A600099001092980060913102709132026F5F7C -:101A70007F4F709332026093310220919600309133 -:101A8000970080E090E0232BF1F0C0919600D09178 -:101A900097000E94D6296B017C01BE0180E090E096 -:101AA0000E94D6299B01AC016091330270913402EF -:101AB00080913502909136020E943D2920E03FEF4F -:101AC0004FE757E410C00E94D6296B017C0120E04B -:101AD00030EE4FEF54E46091330270913402809104 -:101AE0003502909136020E94E82A9B01AC01C701A1 -:101AF000B6010E94E42A87FD96C080912F028F5F75 -:101B000080932F0290E02091030330910403821709 -:101B10009307A0F080910E03882319F010922F02F2 -:101B20000DC0809171008D7F809371008091900035 -:101B30008F738093900010923C027DC080913002A0 -:101B4000C0912F02811128C0C0900803D0900903D2 -:101B5000E0900A03F0900B0320E030E0A901C701F8 -:101B6000B6010E94E42A1816BCF481E0809330028A -:101B700010923702109238021092390210923A02F3 -:101B8000C0923302D0923402E0923502F0923602D3 -:101B9000C150C0932F0243C010923002109229020C -:101BA00010922802E0910503F091060348E0C49FDB -:101BB000E00DF11D112480819181A281B381809378 -:101BC000370290933802A0933902B0933A0220E092 -:101BD00030E040E85EE364817581868197810E94F0 -:101BE000E82A6B017C0180910A01682F70E080E097 -:101BF00090E00E94D62920E030E048EC52E40E94B8 -:101C00003D299B01AC01C701B6010E94E82A6093FF -:101C1000330270933402809335029093360210920F -:101C20003202109231028091070380FD04C01092AD -:101C30003C0210923B02FF91EF91DF91CF91BF9157 -:101C4000AF919F918F917F916F915F914F913F9154 -:101C50002F91FF90EF90DF90CF90BF90AF909F902B -:101C60008F907F906F905F904F900F900FBE0F906E -:101C70001F901895CF92DF92EF92FF92CF93DF9350 -:101C80006B017C01EA0180912A02811102C00E944D -:101C9000350A8091070380FF46C0809179029091B8 -:101CA0007A0208970CF03FC0809171008D7F80937D -:101CB000710080913C0281110E944F0A81E0809363 -:101CC0003B02109229021092280220E030E0A90184 -:101CD000C701B6010E94E42A1816DCF4809179024B -:101CE00090917A02FC01EE0FFF1FEE0FFF1FEF5ADB -:101CF000FD4FC082D182E282F382FC01EE0FFF1F12 -:101D0000EF5BFD4FD183C083019690937A0280935D -:101D100079028091710082608093710080919000BF -:101D2000806880939000DF91CF91FF90EF90DF90DB -:101D3000CF900895809107038170089580910703E3 -:101D40008160809307030E94F2230C941A0480910F -:101D500007038E7F809307030C94F22380917B020C -:101D600090E0019666E070E00E94B62C80937B02C2 -:101D7000089580917B0290E0019766E070E00E94F8 -:101D8000B62C80937B0208958F929F92AF92BF9260 -:101D9000CF92DF92EF92FF920F931F93CF93DF9337 -:101DA0006B017C01C0912802D0912902BE0180E024 -:101DB00090E00E94D6294B015C01A701960160E0EA -:101DC00070E08CE594E40E943D299B01AC01C501C3 -:101DD000B4010E94E82A0E94AA2920917B022330A4 -:101DE00009F473C028F4222351F02130E9F02CC10A -:101DF000243009F4A0C0253009F4E0C025C180E0FA -:101E000090E0A0E0BFE38093060190930701A093C8 -:101E10000801B093090110922B0210922C0210922B -:101E20002D0210922E0210C110922B0210922C0241 -:101E300010922D0210922E026431710540F46A3026 -:101E4000710560F520E030E040E85EE32BC0693CBE -:101E5000710508F0AAC080E090E00E94D62920E039 -:101E600030E040EA51E40E94D42820E030E044E32E -:101E700053E40E943D299B01AC010E94E82A20E026 -:101E800030E040E05EE30E94E82A9B01AC0160E0A4 -:101E900070E080E09EE30E94D42844C020E030E05F -:101EA00040E05FE3C701B6010E94E82A6B017C01B4 -:101EB00080E090E0A0E0BEE38093060190930701EC -:101EC000A0930801B0930901BFC010922B02109299 -:101ED0002C0210922D0210922E024AE0469F900191 -:101EE000479F300D1124C90168EB7BE00E94A22CB2 -:101EF000BC016C5D754077FF03C0719561957109F8 -:101F0000882777FD8095982F0E94D8292EE333ECFF -:101F10004EE259E30E94E82A20E030E040EC5EE324 -:101F20000E94D528609306017093070180930801F1 -:101F30009093090189C010922B0210922C021092EA -:101F40002D0210922E02CE0183709927892BE1F089 -:101F5000BE016170772780E090E00E94D62920E0E2 -:101F600030E040E05EE30E94E82A20E030E040E418 -:101F70005FE30E94D5286093060170930701809368 -:101F80000801909309010CC080E090E0A0E0BFE35D -:101F90008093060190930701A0930801B093090173 -:101FA000C770DD27CD2B09F04FC0109206011092AB -:101FB0000701109208011092090146C010922B02ED -:101FC00010922C0210922D0210922E0200E010E0CE -:101FD00020E03FE3009306011093070120930801DE -:101FE000309309016739710578F180E090E00E9433 -:101FF000D62920E030E047E153E40E94D42820E0D5 -:1020000030E04AE754E40E943D2920E030E048E413 -:1020100052E40E94E82A20E030E040EA51E40E94C5 -:102020001A2A0E94A529660F771F660F771FFB01EA -:10203000EE5AFE4F2081318142815381C701B601A2 -:102040000E94E82A6B017C01C701B601DF91CF91A4 -:102050001F910F91FF90EF90DF90CF90BF90AF90C6 -:102060009F908F90089580918C020895CF93DF9375 -:1020700000D01F92CDB7DEB79C018091130384304E -:1020800019F593E099833B832A839093E9008FEFBE -:102090009091E800815095FD06C095ED9A95F1F775 -:1020A00000008111F5CF8091E80085FF0DC040E070 -:1020B00050E063E070E0CE0101960E94971280919B -:1020C000E8008E778093E8000F900F900F90DF91DB -:1020D000CF910895CF93DF9300D01F92CDB7DEB795 -:1020E00020911303243021F522E029839B838A83E6 -:1020F00083E08093E9008FEF9091E800815095FD97 -:1021000006C095ED9A95F1F700008111F5CF809109 -:10211000E80085FF0DC040E050E063E070E0CE01D4 -:1021200001960E9497128091E8008E778093E800D4 -:102130000F900F900F90DF91CF910895209113038E -:102140002430F1F422E02093E9002FEF3091E800F1 -:10215000215035FD06C035ED3A95F1F7000021110B -:10216000F5CF2091E80025FF0BC040E050E065E08E -:1021700070E00E9497128091E8008E778093E800CB -:102180000895CF93DF93EC0190911303943009F0FD -:1021900046C0809115018823D9F0809116018823CB -:1021A000B9F09093E9008FEF9091E800815095FD90 -:1021B00006C095E19A95F1F700008111F5CF809165 -:1021C000E80085FF2CC040E050E060E170E017C0FF -:1021D00081E08093E9008FEF9091E800815095FDB8 -:1021E00006C095ED9A95F1F700008111F5CF809129 -:1021F000E80085FF14C040E050E068E070E0CE01E8 -:102200000E9497128091E8008E778093E80080E129 -:10221000FE01ACE7B2E001900D928A95E1F7DF9103 -:10222000CF91089580911203811109C00E942C144E -:102230000E9489148091E20084608093E2000895F6 -:10224000109212030895089508950C94D02242E04C -:1022500061EC81E00E94A61342E061EC82E00E9402 -:10226000A61342E061EC83E00E94A61342E161EC18 -:1022700084E00C94A61380911503833009F455C0B3 -:1022800030F4813071F0823009F48EC008958A30C4 -:1022900009F47AC08B3009F460C0893009F09CC021 -:1022A00020C080911403813A09F096C08091E80023 -:1022B000877F8093E8008091180390911903892B00 -:1022C00021F460E18CE792E003C060E080E090E000 -:1022D00070E00E94E2128091E8008B778093E80022 -:1022E000089580911403813209F076C0809118031B -:1022F00090911903009719F0039709F06DC0809130 -:10230000E800877F8093E8008091E80082FD05C0A7 -:10231000809113038111F8CF5FC08091F100809309 -:102320008C028091E8008B7753C080911403813A2E -:1023300009F052C08091180390911903892B09F07C -:102340004BC08091E800877F8093E8008091E8008F -:1023500080FFFCCF8091150136C08091140381323B -:10236000D9F58091180390911903892BA9F58091D3 -:10237000E800877F8093E8000E94DB1380911603BA -:10238000809315010C94111C80911403813221F566 -:102390008091E800877F8093E8000E94DB138091A2 -:1023A000170380938D02089580911403813AA1F45C -:1023B0008091E800877F8093E8008091E80080FFAB -:1023C000FCCF80918D028093F1008091E8008E77A0 -:1023D0008093E8000C94DB13089584B7877F84BF53 -:1023E00088E10FB6F89480936000109260000FBEF1 -:1023F00090E080E80FB6F8948093610090936100BC -:102400000FBE0E947E170E942C140E948914809196 -:10241000E20084608093E20078940E940F170E948B -:1024200080178BE091E00E942A178091130385307A -:1024300069F40E949122809111038823B1F30E94D4 -:10244000BF22882391F30E948112EFCF0E94881748 -:10245000ECCF292F332723303105C9F064F4213024 -:10246000310581F02230310509F043C08DE690E05E -:1024700020E134E042C021323105F1F02232310551 -:1024800041F137C082E190E02DE734E036C0992772 -:102490008130910541F08230910541F0892B49F559 -:1024A000ECE0F4E005C0EEEDF3E002C0E4EBF3E0B5 -:1024B000849190E09F0121C06430D8F4E62FF0E0D1 -:1024C000EE0FFF1FE255FE4F2081318189E090E041 -:1024D00014C0643070F470E0FB01EE0FFF1FEA558A -:1024E000FE4F20813181FB01EE55FE4F808190E04F -:1024F00004C080E090E020E030E0FA0131832083E6 -:10250000089580E189BD82E189BD09B400FEFDCF57 -:102510008091D8008F7D8093D8008091E000826008 -:102520008093E0008091E00081FDFCCF0895CF9280 -:10253000DF92EF92FF920F931F93CF93DF93EC0103 -:102540008B016A010E94FA13811133C0C114D104B6 -:1025500039F0F60180819181081B190BC80FD91F32 -:10256000E12CF12C0115110519F18091E80085FD90 -:1025700016C08091E8008E778093E800C114D104E2 -:1025800049F0F60180819181E80EF91EF182E08226 -:1025900085E00FC00E94FA13882321F30AC08991B5 -:1025A0008093F10001501109FFEFEF1AFF0ADACF13 -:1025B00080E0DF91CF911F910F91FF90EF90DF901E -:1025C000CF90089520911A0330911B0326173707E7 -:1025D00048F06115710539F42091E8002E772093B9 -:1025E000E80001C0B90140E061157105A9F1209131 -:1025F0001303222309F443C0253009F442C020917B -:10260000E80023FD40C02091E80022FD32C0209167 -:10261000E80020FFE9CF4091F3002091F20030E084 -:10262000342BFC01CF016115710559F028303105BB -:1026300040F481918093F100615071092F5F3F4F09 -:10264000F1CF41E02830310509F040E02091E80069 -:102650002E772093E800C8CF4111C9CF0AC08091DE -:102660001303882361F0853061F08091E80083FDD9 -:102670000AC08091E80082FFF2CF80E0089582E0F6 -:10268000089583E0089581E0089520911A03309120 -:102690001B032617370748F06115710539F420919F -:1026A000E8002E772093E80001C0B901FC0120E08A -:1026B0006115710591F180911303882309F440C0DD -:1026C000853009F43FC08091E80083FD3DC08091D2 -:1026D000E80082FD2FC08091E80080FFE9CF2091C3 -:1026E000F3008091F20090E0922B6115710559F092 -:1026F0008830910540F424912093F1003196615087 -:1027000071090196F2CF21E0089709F020E080914D -:10271000E8008E778093E800CBCF2111CCCF0AC0A0 -:1027200080911303882361F0853061F08091E80087 -:1027300083FD0AC08091E80082FFF2CF80E0089517 -:1027400082E0089583E0089581E00895982F9730FE -:1027500058F59093E900981739F07091EC002091AA -:10276000ED005091F00003C0242F762F50E021FFA0 -:1027700019C03091EB003E7F3093EB003091ED00BB -:102780003D7F3093ED003091EB0031603093EB00F2 -:102790007093EC002093ED005093F0002091EE0038 -:1027A00027FF07C09F5FD3CF8F708093E90081E040 -:1027B000089580E008958091140387FF11C08091EF -:1027C000E80082FD05C0809113038111F8CF11C08C -:1027D0008091E8008B770BC080911303882349F028 -:1027E0008091E80080FFF8CF8091E8008E77809399 -:1027F000E80008952091E4003091E50095E64091CD -:10280000EC00842F817040FF22C08091E80080FDA1 -:102810001CC080911303882391F0853091F0809142 -:10282000EB0085FD10C04091E4005091E500421797 -:10283000530729F39A01915011F784E0089582E03B -:10284000089583E0089581E0089580E0089540911F -:10285000E80042FFDECF08950E949A140E94A2145D -:10286000E0EEF0E0808181608083E8EDF0E080813F -:102870008F77808319BCA7EDB0E08C918E7F8C930D -:1028800080818F7E80831092120308950F931F938F -:10289000CF93DF930E949A140E94A214C8EDD0E057 -:1028A00088818F77888388818068888388818F7DFD -:1028B000888319BC1092130310920F031092110316 -:1028C0001092100300EE10E0F80180818B7F80836E -:1028D00088818160888342E060E080E00E94A613E6 -:1028E000E1EEF0E080818E7F8083E2EEF0E0808197 -:1028F00081608083808188608083F80180818E7F01 -:102900008083888180618883DF91CF911F910F91AF -:102910000895E8EDF0E080818F7E8083E7EDF0E0C0 -:1029200080818160808384E082BF81E08093120394 -:102930000C944614E8EDF0E080818E7F8083109245 -:10294000E20008951092DA001092E10008951F92BB -:102950000F920FB60F9211242F933F934F935F93D3 -:102960006F937F938F939F93AF93BF93EF93FF9357 -:102970008091E10082FF0BC08091E20082FF07C0DE -:102980008091E1008B7F8093E1000E940E1780917F -:10299000DA0080FF1FC08091D80080FF1BC08091AB -:1029A000DA008E7F8093DA008091D90080FF0DC01D -:1029B00080E189BD82E189BD09B400FEFDCF81E0DF -:1029C000809313030E94121105C019BC10921303C7 -:1029D0000E9420118091E10080FF19C08091E200E7 -:1029E00080FF15C08091E2008E7F8093E20080918D -:1029F000E20080618093E2008091D8008062809341 -:102A0000D80019BC85E0809313030E9424118091A3 -:102A1000E10084FF30C08091E20084FF2CC080E19F -:102A200089BD82E189BD09B400FEFDCF8091D80047 -:102A30008F7D8093D8008091E1008F7E8093E100AC -:102A40008091E2008F7E8093E2008091E2008160BD -:102A50008093E20080910F03882311F084E007C087 -:102A60008091E30087FD02C081E001C083E0809394 -:102A700013030E9425118091E10083FF29C08091FA -:102A8000E20083FF25C08091E100877F8093E10011 -:102A900082E08093130310920F038091E1008E7FF8 -:102AA0008093E1008091E2008E7F8093E20080912C -:102AB000E20080618093E20042E060E080E00E94FA -:102AC000A6138091F00088608093F0000E9423118B -:102AD000FF91EF91BF91AF919F918F917F916F91F6 -:102AE0005F914F913F912F910F900FBE0F901F90CC -:102AF00018951F920F920FB60F9211242F933F93A8 -:102B00004F935F936F937F938F939F93AF93BF93F5 -:102B1000CF93DF93EF93FF93C091E900CF70809143 -:102B2000EC00D82FD17080FDD0E81092E9008091A0 -:102B3000F000877F8093F00078940E94BD1510927A -:102B4000E9008091F00088608093F000CD2BCF7079 -:102B5000C093E900FF91EF91DF91CF91BF91AF91C9 -:102B60009F918F917F916F915F914F913F912F91A5 -:102B70000F900FBE0F901F9018951F93CF93DF9368 -:102B8000CDB7DEB7AA970FB6F894DEBF0FBECDBFA4 -:102B9000E4E1F3E088E08E0F9091F10091938E13C1 -:102BA000FBCF0E943B118091E80083FF1FC1809101 -:102BB000140390911503492F50E04A30510508F055 -:102BC00015C1FA01EA5AFF4F0C94CA2C803881F0E3 -:102BD000823809F00BC1809118038F708093E9004F -:102BE0008091EB0085FB882780F91092E90006C0F0 -:102BF0008091100390911103911182609091E800EF -:102C0000977F9093E8008093F1001092F100C8C084 -:102C1000282F2D7F09F0EAC0882319F0823061F057 -:102C2000E5C080911603813009F0E0C0933009F0CF -:102C300080E0809311032BC080911603811127C07F -:102C4000809118038F7009F4D1C08093E90020911E -:102C5000EB0020FF1CC0933021F48091EB008062D8 -:102C600014C09091EB0090619093EB0021E030E074 -:102C7000A90102C0440F551F8A95E2F74093EA006C -:102C80001092EA008091EB0088608093EB00109234 -:102C9000E9008091E800877F86C08111A7C010916C -:102CA00016031F778091E3008078812B8093E300E7 -:102CB0008091E800877F8093E8000E94DB13809179 -:102CC000E80080FFFCCF8091E30080688093E30000 -:102CD000111102C082E001C083E08093130386C01B -:102CE0008058823008F082C08091160390911703BB -:102CF0008C3D53E0950779F583E08A838AE28983E6 -:102D00004FB7F894DE01139620E03EE051E2E32F46 -:102D1000F0E050935700E49120FF03C0E295EF707C -:102D20003F5FEF708E2F90E0EA3010F0C79601C041 -:102D3000C0968D939D932F5F243149F74FBF8091AB -:102D4000E800877F8093E8006AE270E0CE01019698 -:102D50000E94E21214C0AE014F5F5F4F60911803F2 -:102D60000E942912BC01009709F440C09091E8002C -:102D7000977F9093E80089819A810E944513809102 -:102D8000E8008B778093E80031C0803879F5809136 -:102D9000E800877F8093E80080910F038093F10023 -:102DA0008091E8008E778093E8000E94DB131EC0BC -:102DB00081111CC0909116039230C0F48091E800FC -:102DC000877F8093E80090930F030E94DB1380912C -:102DD0000F03811106C08091E30087FD02C081E0EE -:102DE00001C084E0809313030E9427118091E800C2 -:102DF00083FF0AC08091E800877F8093E80080917C -:102E0000EB0080628093EB00AA960FB6F894DEBFC9 -:102E10000FBECDBFDF91CF911F9108950895CF933D -:102E2000809113038823A1F0C091E900CF709091A5 -:102E3000EC00892F817090FD80E8C82B1092E9008A -:102E40008091E80083FD0E94BD15CF70C093E9001A -:102E5000CF91089590939302809392020895E09108 -:102E60009202F0919302309721F00190F081E02DD1 -:102E7000099480E00895E0919202F09193023097D6 -:102E800021F00280F381E02D09940895E0919202EF -:102E9000F0919302309721F00480F581E02D0994A0 -:102EA000089520919002309191028217930771F05A -:102EB0009093910280939002E0919202F09193029C -:102EC000309721F00680F781E02D09940895209134 -:102ED0008E0230918F028217930771F090938F02C8 -:102EE00080938E02E0919202F0919302309721F04C -:102EF0000084F185E02D0994089508950C947D17C0 -:102F00000E9404230E9455090E948A230C943928A8 -:102F10005F926F927F928F929F92AF92BF92CF9269 -:102F2000DF92EF92FF920F931F93CF93DF9300D026 -:102F300000D01F92CDB7DEB70E949A099DE9C92E35 -:102F400092E0D92E03E010E0AA24A394B12C502ED5 -:102F5000802F0E94150A4C01F601729062906F0159 -:102F60006826792661147104A1F40150110978F7DB -:102F70008FEF89838A831B820E940D238160782FC3 -:102F80009D838C8349815A816B818D810E94381881 -:102F900038C08091F20281FD0E941E0A2BE030E0D1 -:102FA0007501022E02C0EE0CFF1C0A94E2F7C70165 -:102FB00086219721892B09F129835A828E209F200F -:102FC00091E0892809F490E09B830E940D238160A1 -:102FD000782F9D838C8349815A816B818D810E94DA -:102FE0003818000F111FF801EB56FD4F80819181B9 -:102FF000E826F926F182E08204C02150310980F6EA -:10300000B4CF0E947125109194020E942F171817B7 -:10301000D1F00E942F17809394020F900F900F9081 -:103020000F900F90DF91CF911F910F91FF90EF9034 -:10303000DF90CF90BF90AF909F908F907F906F90D8 -:103040005F900C943F090F900F900F900F900F908E -:10305000DF91CF911F910F91FF90EF90DF90CF9074 -:10306000BF90AF909F908F907F906F905F900895EA -:10307000CF93DF93CDB7DEB72B970FB6F894DEBFB3 -:103080000FBECDBF4F83588769877A878B87DE0154 -:10309000119686E0FD0111928A95E9F785E0FE011F -:1030A000379601900D928A95E1F749815A816B819B -:1030B0007C818D819E810E94AF1E2B960FB6F89465 -:1030C000DEBF0FBECDBFDF91CF910895CF93882390 -:1030D00009F4C2C0C82F823859F40E942F1781FD0D -:1030E000BBC089E30E9489210E94562289E30CC05B -:1030F000833879F40E942F1780FDAEC083E50E94CB -:1031000089210E94562283E50E94CB21CF910C9405 -:103110005622843859F40E942F1782FD9DC087E4FF -:103120000E9489210E94562287E4EECF8CEF8C0FFB -:10313000813A48F48C2F0E94A12781118DC08C2FD9 -:103140000E948921E3CF80E28C0F883048F4C77059 -:1031500081E001C0880FCA95EAF70E940F22D6CFFE -:103160008BE58C0F833078F4C53A29F0C63A31F0FC -:1031700083E890E005C081E890E002C082E890E03A -:10318000CF910C94511788E58C0F833108F064C0FF -:10319000C83A39F1C93A41F1CA3A49F1CB3A51F149 -:1031A000CC3A59F1CD3A61F1C03B69F1CE3A71F1B7 -:1031B000CF3A79F1C13B81F1C23B89F1C33B91F137 -:1031C000C43B99F1C53BA1F1C63BA9F1C73BB1F1A5 -:1031D000C83BB9F1C93BC1F1CA3BC9F180E090E0FD -:1031E00038C082EE90E035C089EE90E032C08AEEC1 -:1031F00090E02FC085EB90E02CC086EB90E029C0DA -:1032000087EB90E026C08CEC90E023C08DEC90E042 -:1032100020C083E891E01DC08AE891E01AC082E9ED -:1032200091E017C084E991E014C081E292E011C0FE -:1032300083E292E00EC084E292E00BC085E292E06D -:1032400008C086E292E005C087E292E002C08AE20E -:1032500092E0CF910C946717CF910895882309F4D9 -:103260004BC0823859F40E942F1781FF45C089E373 -:103270000E9489210E94562289E30CC0833871F490 -:103280000E942F1780FF38C083E50E9489210E9489 -:10329000562283E50E94CB210C945622843859F49F -:1032A0000E942F1782FF28C087E40E9489210E9474 -:1032B000562287E4EFCF9CEF980F913A58F390E2B3 -:1032C000980F983050F4877091E001C0990F8A955B -:1032D000EAF7892F0E941522DFCF9BE5980F9330E4 -:1032E00020F480E090E00C945117885A833120F448 -:1032F00080E090E00C9467170895882321F00E94E5 -:103300000F220C9456220895882321F00E94152242 -:103310000C94562208957F928F929F92AF92BF9203 -:10332000CF92DF92EF92FF920F931F93CF93DF9391 -:103330001F92CDB7DEB77C01C62E772EFC0105812A -:1033400002950F70128111110E942C220E9482217D -:10335000882379F0112369F080E28C0D883048F0E1 -:1033600082E00E946B210E94822191E0D82ED92612 -:1033700001C0D12CE72DE295EF70F0E0E05AFF4F4D -:103380000C94CA2C872D807F072D0F70882311F095 -:103390000295007F112389F0002309F499C180E28E -:1033A0008C0D883020F4802F0E940F2203C0802FC4 -:1033B0000E941F220E9456228BC18C2D0E942E1922 -:1033C000002309F4C3C180E28C0D883020F4802FE3 -:1033D0000E94152203C0802F0E9425220E9456229F -:1033E000B5C1872D807F972D9F70803211F4892F72 -:1033F00003C0892F8295807FCC2021F0F1E0CF1689 -:10340000A1F01DC0112339F0002319F1013009F595 -:103410000E943F229BC1002319F0013009F496C19C -:1034200089830E944222898110C1112321F0063034 -:1034300008F08CC10EC0053008F088C106C1112308 -:1034400059F0002331F0F701958190FF41C19F7041 -:1034500095830E947D197AC1002309F4F6C03EC10C -:10346000872D86958695837090E0009719F00197D7 -:1034700061F06CC1112321F08C2D972D937002C047 -:1034800080E090E00E94511761C1112321F08C2D42 -:10349000972D937002C080E090E00E94671756C19C -:1034A0008C2D112319F00E94792402C00E94E1247E -:1034B0000E9466254BC1872D837009F052C01111FF -:1034C00045C18C2D829586958770880F880F9C2D1D -:1034D0009F70892E912CA12CB12C082E04C0880C31 -:1034E000991CAA1CBB1C0A94D2F7C4FE14C00FE09E -:1034F00010E020E030E0B901A80104C0440F551FDE -:10350000661F771F8A95D2F7CB01BA016095709537 -:103510008095909503C060E070E0CB01272D269543 -:103520002695237030E02230310569F023303105D3 -:1035300089F0682979298A299B292130310571F080 -:103540000E94F71F03C1682979298A299B290E94B3 -:103550001320FCC00E94F71FC501B4010E94DB1FAD -:10356000F5C0112319F0872D817001C0869588233D -:1035700009F4ECC08C2D829586958770880F880F92 -:103580009C2D9F70892E912CA12CB12C082E04C04B -:10359000880C991CAA1CBB1C0A94D2F7C4FE14C048 -:1035A0000FE010E020E030E0B901A80104C0440FB2 -:1035B000551F661F771F8A95D2F7CB01BA01609518 -:1035C00070958095909503C060E070E0CB01272D49 -:1035D000269526952370422F50E04230510569F020 -:1035E0004330510589F0682979298A299B2941307E -:1035F000510571F00E94D120A9C0682979298A2932 -:103600009B290E94ED20A2C00E94D120C501B401D7 -:103610000E94B5209BC08C2D90E0FC01E05EF1097A -:10362000E531F10508F050C0E059FF4F0C94CA2C69 -:103630000C2D0F70872D8F71112321F00E944E20C9 -:10364000802F07CF0E946F20802F0E9484197EC098 -:10365000112341F0053008F079C0872D8F710E9449 -:10366000942074C0063008F071C0F7CF112339F0F0 -:10367000872D8F710E944E2069C01123C9F3872DB9 -:103680008F710E946F2062C0112329F0872D8F71E6 -:103690000E9439205BC00E942F2058C0112351F096 -:1036A000172D1F71812F0E944E2063E0812F0E94F1 -:1036B00062214CC081E00E946B21023008F446C0B8 -:1036C00082E00E946B2142C0112331F0002381F27D -:1036D0008C2D0E9466183AC0002389F28C2D0E941E -:1036E0002E1934C0472D4F706C2DC7010E941D0646 -:1036F0000E94531F2BC0111129C0472D4F7050E05D -:1037000042305105B9F04CF44115510581F041307A -:103710005105E1F40E94612819C04330510569F058 -:103720004430510599F48C2D0E94B3280FC00E949B -:103730004A280CC00E947D2809C00E94902806C01B -:10374000472D4F706C2DC7010E942006DD20F9F037 -:103750000E945E2180FD1BC0F70112820E94582149 -:103760000E944E20C7010E94D61B0E9458210F9034 -:10377000DF91CF911F910F91FF90EF90DF90CF904D -:10378000BF90AF909F908F907F900C946F200F9080 -:10379000DF91CF911F910F91FF90EF90DF90CF902D -:1037A000BF90AF909F908F907F9008950F931F933D -:1037B000CF93DF93EC01888199812B813C81232B6E -:1037C000B9F09F3F11F48F3F99F0CE010E941C0485 -:1037D000882371F0688179818A810E9454218C014B -:1037E0000E9409210E94D01FB801CE010E948B19AE -:1037F000DF91CF911F910F9108950E942C220E947A -:103800003C220E9401220E9456220E9417260E94FA -:10381000662580E090E00E94511780E090E00C94D3 -:1038200067170E941C220C94FD1B0E944921292F1E -:1038300022952F7030E02C3031054CF42A303105C0 -:103840006CF42250310922303105A8F407C02C3025 -:10385000310569F02F30310551F00DC0803F69F01E -:1038600018F4803E40F409C0843F29F406C093FB5D -:10387000882780F9089580E0089581E00895CF9326 -:10388000DF9300D000D01F92CDB7DEB70F900F901E -:103890000F900F900F90DF91CF910895CF93DF930A -:1038A00000D000D000D0CDB7DEB726960FB6F89482 -:1038B000DEBF0FBECDBFDF91CF9108951F93CF9391 -:1038C000DF93C0919D0216E080919E02C81799F087 -:1038D000D0E01C9FF0011D9FF00D1124E156FD4F1B -:1038E0004081518162817381848195810E944E1C47 -:1038F0002196C770E9CFDF91CF911F910895409134 -:10390000CF025091D0026091D1027091D202809189 -:10391000D3029091D4020C944E1C8091D4028295D3 -:103920008F7009F054C08091D102882309F44FC0F0 -:1039300080919D02A0919E026091CF027091D00271 -:103940004091D2025091D302B6E08A1709F43FC0E9 -:1039500090E041155105C1F17F3F11F46F3FA1F196 -:10396000B89FF001B99FF00D1124E156FD4F218160 -:1039700072132AC02081621327C02281211124C022 -:10398000238134812417350710F421503109241B79 -:10399000350B283C3105C0F42091D4022F702061F2 -:1039A0002093D40226E0289FF001299FF00D1124D6 -:1039B000EC55FD4F80818F70806180838FEC92E0A9 -:1039C0000E94D61B0C945E1C01968770BECF089592 -:1039D000CF92DF92EF92FF920F931F93CF93DF93DB -:1039E000CDB7DEB762970FB6F894DEBF0FBECDBF7E -:1039F0008C0185E0F801DE011D9601900D928A95FB -:103A0000E1F7D8014C9111965C91119712966C9147 -:103A100012971396CD90DC9014973091CF0270914D -:103A2000D0028091D2029091D302009709F46BC129 -:103A30007F3F19F43F3F09F466C1E090D102EE20C8 -:103A400009F4C0C02091D402C816D90628F0F601A6 -:103A5000E81BF90BCF0104C0809590958C0D9D1D3E -:103A6000FF24F394883C910578F0F12C207F09F035 -:103A7000C6C07C2DD98AC88A89890E943F1C8FECD8 -:103A800092E00E94D61BB1C0822F807F09F046C011 -:103A9000751314C0341312C0611110C02F7020614F -:103AA0002093D4020E947F1C8FEC92E00E94D61BD0 -:103AB0008091D402D80115968C932EC0CD2819F18F -:103AC0005F3F11F44F3FF9F0F62E61111CC0809159 -:103AD0009D0220919E0236E0821709F45AC090E0C0 -:103AE000389FF001399FF00D1124E156FD4F71818F -:103AF000571306C07081471303C07281711103C050 -:103B000001968770E9CFF62E662309F418C18091DB -:103B1000D40281608093D402F12C11C1751308C0C6 -:103B2000341306C0611104C08091D402D801C3C00F -:103B30004D875E878D859E856A8B0E94151C6A89DC -:103B40008823E1F16623D1F12091D402822F82955E -:103B50008F7090E0029774F08091CF029091D00224 -:103B600098878F831986DB86CA862C87CE010796B5 -:103B70000E94D61B86E0F801AFECB2E001900D92F6 -:103B80008A95E1F70E948D1C0E947F1CFF24F3940C -:103B9000D6C04D875E878D859E850E944921292F3D -:103BA00022952F7030E0223031050CF0BCC09F70A0 -:103BB00009F0B6C0805E883008F4C1C0C8010E9418 -:103BC000D61BE4CFC816D90608F453C0F601E81B8B -:103BD000F90BCF01883C910508F450C0F12C7C2DE5 -:103BE000D98AC88A89890E943F1CEFECF2E086E0FE -:103BF000DF011D928A95E9F70E947F1CA0C0751312 -:103C000014C0341312C0611110C08091D402F801A5 -:103C10008583C8010E94D61B86E0EFECF2E0DF014D -:103C20001D928A95E9F7FE2C8AC04D875E878D85A7 -:103C30009E856A8B0E94151C6A89882309F4BECF71 -:103C4000662309F4BBCF2091D402822F82958F7016 -:103C500090E002970CF48ECF8091CF029091D00229 -:103C60009A8389831B82DD82CC822E83CE010196CA -:103C70007FCF809590958C0D9D1DACCFF62E662341 -:103C800009F49CCF75132EC034132CC02091D4029C -:103C900020FD1FC0822F82958F70D9F0D801159614 -:103CA0002C9315978F3049F08F5F982F9295907FC6 -:103CB000822F8F70892B15968C93C8010E94D61B7A -:103CC00086E0F801AFECB2E001900D928A95E1F741 -:103CD00093CF86E0F801AFECB2E001900D928A95A7 -:103CE000E1F72DC04D875E878D859E850E94151C4E -:103CF000811140CF8091D40281608093D402C801A9 -:103D00000E94D61B1CC0662309F458CF4D875E87DE -:103D10008D859E850E94151C882309F44FCF2ACFDC -:103D2000811148CF0CC0243031050CF047CF9F7073 -:103D300009F440CFF8019581907F09F03BCF8F2D9A -:103D400062960FB6F894DEBF0FBECDBFDF91CF9164 -:103D50001F910F91FF90EF90DF90CF9008951F93E8 -:103D6000CF93DF93CDB7DEB72C970FB6F894DEBFB5 -:103D70000FBECDBF4F83588769877A878B879C8713 -:103D8000CE0107960E94E81C882369F08F819885F0 -:103D90002A853B85232BF1F19F3F09F063C08F3FBC -:103DA00009F060C037C086E0FE013796DE0111964B -:103DB00001900D928A95E1F76F817885EA85FB8500 -:103DC000309741F17F3F11F46F3F21F120919E0226 -:103DD00030E0C90101968770992740919D0250E01B -:103DE0008417950709F447C069837A83FD83EC83C0 -:103DF00096E0929FD001939FB00D1124A156BD4F24 -:103E0000FE01319601900D929A95E1F780939E0202 -:103E10000E945E1C16E080919D0290919E0289177F -:103E2000C1F1189FC001112481569D4F0E94E81CCA -:103E3000882379F1E0919D021E9FF0011124E15643 -:103E4000FD4F4081518162817381848195810E94FF -:103E50004E1C80919D0290E0019687709927809377 -:103E60009D02D9CF4F81588569857A858B859C8540 -:103E70000E944E1CCFCF0E94111C10929E021092E5 -:103E80009D02EFECF2E086E0DF011D928A95E9F7F2 -:103E9000C1CF2C960FB6F894DEBF0FBECDBFDF9119 -:103EA000CF911F910895EF92FF920F931F93CF939D -:103EB000DF938C01009709F46CC0F12CEE24E3949D -:103EC000E8012196F8018491843740F4843008F0A9 -:103ED00051C0813081F0823019F15BC0853709F41F -:103EE00044C0A8F19CE7980F903708F052C08F7734 -:103EF0000E942E1941C00E5F1F4FFE01C49180E247 -:103F00008C0F883048F4C7708E2D01C0880FCA9579 -:103F1000EAF70E942F2214C08C2F0E9466182DC031 -:103F20000E5F1F4FFE01C49180E28C0F883058F461 -:103F3000C7708E2D01C0880FCA95EAF70E943522FE -:103F40000E9456221AC08C2F0E942E1916C00E5F96 -:103F50001F4FFE01C491CC2381F08FE99FE00197B0 -:103F6000F1F700C00000C150F6CF0E5F1F4FFE01F9 -:103F7000F49003C00E9466188E018F2D882309F4E7 -:103F80009FCFEFE9FFE03197F1F700C000008150CB -:103F9000F5CFDF91CF911F910F91FF90EF90089592 -:103FA00008956093D9027093DA028093DB029093B4 -:103FB000DC020C94FD1B0F931F930091D90210910A -:103FC000DA022091DB023091DC02DC01CB01802B94 -:103FD000912BA22BB32B8093D9029093DA02A0935A -:103FE000DB02B093DC021F910F910C94FD1B0F9329 -:103FF0001F930091D9021091DA022091DB023091D7 -:10400000DC02DC01CB0180239123A223B323809324 -:10401000D9029093DA02A093DB02B093DC021F91E5 -:104020000F910C94FD1B0F931F930091D9021091D7 -:10403000DA022091DB023091DC02DC01CB01802727 -:104040009127A227B3278093D9029093DA02A093F5 -:10405000DB02B093DC021F910F910C94FD1B1092B8 -:10406000D5021092D6021092D7021092D8020C9468 -:10407000FD1B41E050E060E070E004C0440F551FBC -:10408000661F771F8A95D2F74093D5025093D602C8 -:104090006093D7027093D8020C94FD1B41E050E06E -:1040A00060E070E004C0440F551F661F771F8A95BB -:1040B000D2F78091D5029091D602A091D702B0910B -:1040C000D802482B592B6A2B7B2B4093D502509357 -:1040D000D6026093D7027093D8020C94FD1B41E086 -:1040E00050E060E070E004C0440F551F661F771F6A -:1040F0008A95D2F740955095609570958091D5023C -:104100009091D602A091D702B091D80248235923AA -:104110006A237B234093D5025093D6026093D70243 -:104120007093D8020C94FD1B41E050E060E070E019 -:1041300004C0440F551F661F771F8A95D2F78091E0 -:10414000D5029091D602A091D702B091D80248270B -:1041500059276A277B274093D5025093D602609354 -:10416000D7027093D8020C94FD1B0F931F930091FC -:10417000D5021091D6022091D7023091D802DC01ED -:10418000CB01802B912BA22BB32B8093D502909344 -:10419000D602A093D702B093D8021F910F910C942E -:1041A000FD1B0F931F930091D5021091D602209111 -:1041B000D7023091D802DC01CB0180239123A223C6 -:1041C000B3238093D5029093D602A093D702B093E5 -:1041D000D8021F910F910C94FD1B0F931F93009118 -:1041E000D5021091D6022091D7023091D802DC017D -:1041F000CB0180279127A227B3278093D5029093E4 -:10420000D602A093D702B093D8021F910F910C94BD -:10421000FD1B0895CF92DF92EF92FF920F931F93B1 -:10422000CF93DF938C01C090D902D090DA02E09056 -:10423000DB02F090DC028091D5029091D602A09131 -:10424000D702B091D802C82AD92AEA2AFB2ACFE19C -:10425000D0E0D701C6010C2E04C0B695A79597955E -:1042600087950A94D2F780FF06C0B8018C2F0E9470 -:10427000A508019721F4219760F780E001C08C2FF9 -:10428000DF91CF911F910F91FF90EF90DF90CF9032 -:104290000895CF93DF93EC010E940A21BE010E9492 -:1042A000A508DF91CF910895CB010E94492108957F -:1042B0008091DD0285958595859508958091DD0233 -:1042C0008770089598E0899F90011124262B2093F0 -:1042D000DD020C944E202091DD0280958223809394 -:1042E000DD02982F977069F430E0482F552747FD7D -:1042F00050952417350729F08595859585950C945B -:104300006F2008959091DD02977081E009F480E0BC -:10431000089590911501992321F090911601911122 -:1043200009C02091170130911801F90132969FEFD1 -:1043300040E01FC0982F9695969596959F3050F522 -:10434000E0911701F0911801E90FF11D877021E04C -:1043500030E0A90102C0440F551F8A95E2F7CA0157 -:104360009181892B818308959F3F39F04F5F4E30B3 -:1043700041F051915813F8CF0DC05111F7CF942F40 -:10438000F5CF9F3F39F0F901E90FF11D97FDFA953F -:1043900082830895089590911501992321F09091B9 -:1043A0001601911109C02091170130911801F901EE -:1043B0003296205F3F4F1FC0982F96959695969501 -:1043C0009F30F0F4E0911701F0911801E90FF11D11 -:1043D000877021E030E0A90102C0440F551F8A9583 -:1043E000E2F7CA01809591818923818308953196EE -:1043F000E217F30729F090819813F9CF1082F7CFD5 -:10440000089581E090E0E0911701F0911801E80F24 -:10441000F91F1082019680319105A9F708959091B6 -:10442000F102892B8093F102089580959091F10219 -:1044300089238093F10208951092F10208959091DA -:10444000F002892B8093F002089580959091F002FC -:1044500089238093F00208951092F00208959091BC -:10446000EF02892B8093EF02089580959091EF02DF -:1044700089238093EF0208951092EF0208958093AC -:10448000DE0208951092DE02089580911701909146 -:104490001801FC0131969C01205F3F4F80E0919113 -:1044A00091118F5FE217F307D1F70895E09117019B -:1044B000F09118018091F1028083E0911701F09151 -:1044C000180190818091F002892B8083E09117017F -:1044D000F091180190818091EF02892B8083809167 -:1044E000DE02882361F0E0911701F09118019081BC -:1044F000892B80830E94452281111092DE028091D7 -:104500001701909118010C943B1720E0009739F0A7 -:10451000AC0141505109842395232F5FF7CF822F9F -:10452000089580911303843039F11092F30220E44E -:1045300088E190E00FB6F894A895809360000FBED4 -:104540002093600080E00E94200380E00E943F09E9 -:1045500083B7817F846083BF83B7816083BF789492 -:10456000889583B78E7F83BF88E10FB6F8948093D8 -:104570006000109260000FBE08950895089580E0D5 -:104580000E9420030E94BD220E949A090E94BE221E -:104590000E941F0A91E0811101C090E0892F0895C7 -:1045A0000E94111C80E00E9420030E9439280E9472 -:1045B0002F170C943F091F920F920FB60F921124E0 -:1045C0008F939F93AF93BF938091F302811113C098 -:1045D0008091F4029091F502A091F602B091F70259 -:1045E0004196A11DB11D8093F4029093F502A09312 -:1045F000F602B093F702BF91AF919F918F910F9008 -:104600000FBE0F901F90189582E084BD93E095BD7A -:104610009AEF97BD80936E0008952FB7F89480911C -:10462000F4029091F502A091F602B091F7022FBF2B -:104630000895CF92DF92EF92FF920F931F932FB7BF -:10464000F8944091F4025091F5026091F602709155 -:10465000F7022FBF6A017B01EE24FF248C0120E0CA -:1046600030E0C016D106E206F30610F441505109BD -:104670009A01281B390BC9011F910F91FF90EF90F0 -:10468000DF90CF9008951F920F920FB60F921124D2 -:104690008F939F93AF93BF938091F4029091F50213 -:1046A000A091F602B091F7020196A11DB11D809371 -:1046B000F4029093F502A093F602B093F702BF9133 -:1046C000AF919F918F910F900FBE0F901F901895F3 -:1046D0000E942C14F8942FEF87EA91E62150804035 -:1046E0009040E1F700C0000087E090EBDC01809390 -:1046F0001E0390931F03A0932003B09321039CE01B -:1047000088E10FB6F894A895809360000FBE90934F -:104710006000FFCF0E94C923811102C00E94A5231F -:104720000E94D4238093F2020E94DC2380931C0316 -:1047300087FB882780F9809316010E94D823682F71 -:1047400070E080E090E00C94D11F6DEE7EEF80E091 -:1047500090E00E94F02C60E082E090E00E94DE2C6D -:1047600060E083E090E00E94DE2C60E084E090E076 -:104770000E94DE2C60E085E090E00E94DE2C60E08C -:1047800086E090E00E94DE2C6FEF87E090E00C94D2 -:10479000DE2C80E090E00E94D82C21E08D3E9E4FE0 -:1047A00009F020E0822F089582E090E00C94D02C54 -:1047B00083E090E00C94D02C84E090E00C94D02C1A -:1047C000682F84E090E00C94DE2C86E090E00C945E -:1047D000D02C682F86E090E00C94DE2C87E090E0EF -:1047E0000C94D02C682F87E090E00C94DE2C809104 -:1047F000FA0280FF0BC060911C0185E0689FB00148 -:10480000112475956795759567952BC081FF09C033 -:1048100060911C0185E0689FB00111247595679532 -:1048200020C082FF07C060911C0185E0689FB00135 -:10483000112417C09091FB029923D1F060911B01C4 -:10484000961788F720911C0185E0289F900111247C -:10485000929FA001939F500D112470E0CA010E9405 -:10486000B62C6038710540F46115710539F002C04D -:1048700065E070E0862F08958FE7089581E0089540 -:104880008091FA0280FF08C060911A0170E075956E -:1048900067957595679521C081FF06C060911A01E3 -:1048A00070E07595679519C082FF04C060911A0188 -:1048B00070E010C09091FB029923C1F06091190142 -:1048C0009617A0F780911A01899FC001112470E00A -:1048D0000E94B62C6038710528F46115710521F02D -:1048E000862F08958FE7089581E0089561E070E0D4 -:1048F000F4CF803F21F40E94F723819504C0813FCB -:1049000029F40E94F7238093FE020895823F21F448 -:104910000E94F723819504C0833F29F40E94F72366 -:104920008093FD020895893F19F40E94402405C038 -:104930008A3F31F40E94402481958093FF020895BC -:104940008B3F21F40E944024819504C08C3F29F4C0 -:104950000E944024809300030895843F21F48091B5 -:10496000FC02816017C0853F21F48091FC028260C7 -:1049700011C0863F21F48091FC0284600BC0873F08 -:1049800021F48091FC02886005C0883F31F4809159 -:10499000FC0280618093FC0208958D3F21F4809198 -:1049A000FA0281600BC08E3F21F48091FA0282608E -:1049B00005C08F3F29F48091FA0284608093FA0247 -:1049C0000895803F39F48091FE0287FF6CC01092F9 -:1049D000FE0269C0813F29F48091FE021816BCF3E3 -:1049E00062C09091FD02823F29F497FF5CC0109253 -:1049F000FD0259C0833F19F41916CCF354C0893F06 -:104A000041F48091FF0218160CF04DC01092FF0285 -:104A10004AC08A3F29F48091FF0287FF44C0F6CF45 -:104A20008B3F39F48091000387FF3DC01092000353 -:104A30003AC08C3F29F4809100031816BCF333C0B0 -:104A4000843F21F48091FC028E7F17C0853F21F4C2 -:104A50008091FC028D7F11C0863F21F48091FC0281 -:104A60008B7F0BC0873F21F48091FC02877F05C0BC -:104A7000883F31F48091FC028F7E8093FC0213C04A -:104A80008D3F21F48091FA028E7F0BC08E3F21F47E -:104A90008091FA028D7F05C08F3F29F48091FA0240 -:104AA0008B7F8093FA028091FD0281110EC080916C -:104AB000FE0281110AC08091FF02811106C080911F -:104AC0000003811102C01092FB0208958CEF92E066 -:104AD0000E9446170E940D239093F9028093F802DA -:104AE00008951F93CF93DF938091F8029091F9027C -:104AF0000E941923AC019091FB02992321F020918F -:104B00001D0130E006C020911E018AE0289F90011F -:104B100011244217530708F486C08091FD02C0910A -:104B2000FE02D091FF0210910003811107C0C11154 -:104B300076C0D11174C0111172C075C09F3F19F0B9 -:104B40009F5F9093FB02181624F40E94F723809332 -:104B5000FD028091FD0287FF05C00E94F723819529 -:104B60008093FD021C1624F40E94F7238093FE021A -:104B70008091FE0287FF05C00E94F72381958093F4 -:104B8000FE026091FD02662339F1C091FE02CC2342 -:104B900019F1772767FD7095872F972F0E94D829E5 -:104BA00023E333E343E35FE30E94E82A0E94A5295D -:104BB0006093FD026C2F772767FD7095872F972FE5 -:104BC0000E94D82923E333E343E35FE30E94E82A0A -:104BD0000E94A5296093FE021D1624F40E94402421 -:104BE0008093FF028091FF0287FF05C00E9440244E -:104BF00081958093FF02111624F40E944024809333 -:104C000000038091000387FF05C00E944024819526 -:104C100080930003DF91CF911F910C9466259F3FF5 -:104C200009F08ECF96CFDF91CF911F910895ECEFD1 -:104C3000F2E085E0DF011D928A95E9F71092FB0210 -:104C40001092FA020895833081F128F4813059F0EE -:104C50008230D1F00895853009F449C0B8F186302A -:104C600009F456C0089580911E01262F30E0280FC8 -:104C7000311D2F3F310524F4680F60931E01089504 -:104C80008FEF80931E01089580911D01262F30E043 -:104C9000280F311D2F3F310524F4680F60931D014B -:104CA00008958FEF80931D01089580911C01262F98 -:104CB00030E0280F311D2F3F310524F4680F609339 -:104CC0001C0108958FEF80931C01089580911B01B2 -:104CD000262F30E0280F311D2F3F310524F4680FB7 -:104CE00060931B0108958FEF80931B0108958091BD -:104CF0001A01262F30E0280F311D2F3F310524F4F3 -:104D0000680F60931A0108958FEF80931A01089538 -:104D100080911901262F30E0280F311D2F3F3105DA -:104D200024F4680F6093190108958FEF809319019F -:104D30000895833011F128F4813049F0823091F0E8 -:104D40000895853081F120F18630C1F10895809178 -:104D50001E01681720F4861B80931E01089510928F -:104D60001E01089580911D01681720F4861B809311 -:104D70001D01089510921D01089580911C0168176E -:104D800020F4861B80931C01089510921C01089545 -:104D900080911B01681720F4861B80931B010895E6 -:104DA00010921B01089580911A01681720F4861B48 -:104DB00080931A01089510921A01089580911901A3 -:104DC000681720F4861B8093190108951092190129 -:104DD00008950F931F93873208F048C08E3108F072 -:104DE0008DC0803109F477C008F5873009F461C0BF -:104DF00068F4863009F09DC08091F202817F8E7F39 -:104E00008093F20281E08093020394C08B3009F416 -:104E100089C08E3009F08DC08091F20282FB22277A -:104E200020F991E0922790FB82F95EC0863109F467 -:104E300079C060F4813109F07CC00E94111C90910E -:104E4000160181E08927809316016CC0893109F42D -:104E500069C08B3109F06DC08091F20281FB22277D -:104E600020F991E0922790FB81F93EC0883309F444 -:104E700059C050F4893209F457C0853309F454C03D -:104E8000873209F451C055C0833409F44DC028F469 -:104E90008A3308F44EC0895332C0883409F049C0BF -:104EA0000E94111C0E944F0A0E9413040E94682352 -:104EB00039C09091F202892F8095817080FB90F922 -:104EC00029F0966098609093F20234C0997F977FA2 -:104ED0009093F20227C08091F20283FB222720F9EF -:104EE00091E0922790FB83F98093F2029923D1F00D -:104EF0008091F20281608093F20214C08D5141E0F2 -:104F000050E060E070E08A019B0104C0000F111FB7 -:104F1000221F331F8A95D2F7C901B8010E94D11F01 -:104F20000E94111C81E006C061E070E080E090E02A -:104F3000F5CF80E01F910F91089580E0089580E003 -:104F40000895CF93C82F80910203813069F018F043 -:104F50008230C9F184C0E0911701F091180180817D -:104F6000823209F07EC007C0E0911701F09118016C -:104F70008081823261F48C2F0E949D27811104C0B0 -:104F80008C2F0E94E9261DC081E090E01AC08C2F72 -:104F90000E949F27811114C0C43179F048F4CB30AE -:104FA00079F0C03109F061C082E08093020308C04B -:104FB000C93219F0C83321F058C01092020355C00D -:104FC00081E0817054C0C93291F120F5C43179F18A -:104FD000B0F4C73009F047C08EE180931E0182E330 -:104FE00080931D018AE080931C0184E180931B0162 -:104FF00088E080931A0188E28093190134C0CE5171 -:10500000C63088F5EC2FF0E0EA54FE4F80818093A3 -:10501000010329C0CE34E9F020F4CB3421F56AE055 -:1050200013C0C13579F0C235F1F461E00DC0809153 -:105030000103882319F01092010315C081E08093C9 -:10504000020315C061E006C0809101030E9423267F -:105050000AC06AE0809101030E94992604C0109260 -:10506000020380E004C081E002C080E0AACFCF91BB -:1050700008950E94C923811102C00E94A5230E94A5 -:10508000E52380931D0380FF02C0869501C080E068 -:105090000C94200380911D03982F9695292F30E0C2 -:1050A000233031054CF49F5F990F8170892B81600B -:1050B00080931D030E94E92380911D0386950C9423 -:1050C000200380911D03982F969591F09158990F88 -:1050D0008170892B80931D038E7F91E009F490E00D -:1050E00080911D0390FB80F980931D030E94E923AA -:1050F00080911D0386950C94200380911D03982FA9 -:10510000909590FB80F980931D030E94E923809184 -:105110001D0380FF02C0869501C080E00C9420032F -:1051200090911D03892F86958F5F8F7791708430C2 -:1051300028F4880F892B80931D0302C090931D03D0 -:1051400080911D038E7F91E009F490E080911D0312 -:1051500090FB80F980931D030E94E92380911D0339 -:1051600086950C94200320911D03922F96958927F4 -:10517000982F990F822F8170892B80931D038E7F2A -:1051800091E009F490E080911D0390FB80F98093F9 -:105190001D030E94E92380911D0386950C94200332 -:1051A00080911D03869508955058BB27AA270ED0DD -:1051B000D1C1C2D130F0C7D120F031F49F3F11F4FA -:1051C0001EF4B7C10EF4E095E7FB9FC1E92FD3D1E0 -:1051D00080F3BA17620773078407950718F071F414 -:1051E0009EF5EBC10EF4E0950B2EBA2FA02D0B010E -:1051F000B90190010C01CA01A0011124FF27591B1C -:1052000099F0593F50F4503E68F11A16F040A22F21 -:10521000232F342F4427585FF3CF46953795279592 -:10522000A795F0405395C9F77EF41F16BA0B620B91 -:10523000730B840BBAF09150A1F0FF0FBB1F661FD8 -:10524000771F881FC2F70EC0BA0F621F731F841F1B -:1052500048F4879577956795B795F7959E3F08F041 -:10526000B3CF9395880F08F09927EE0F9795879500 -:10527000089527D108F481E008950CD06BC163D163 -:1052800040F05AD130F021F45F3F19F03EC1511186 -:1052900095C14FC170D198F39923C9F35523B1F348 -:1052A000951B550BBB27AA2762177307840738F095 -:1052B0009F5F5F4F220F331F441FAA1FA9F333D0F4 -:1052C0000E2E3AF0E0E830D091505040E695001CA8 -:1052D000CAF729D0FE2F27D0660F771F881FBB1F64 -:1052E000261737074807AB07B0E809F0BB0B802D3E -:1052F000BF01FF2793585F4F2AF09E3F510568F08A -:1053000004C15CC15F3FECF3983EDCF38695779572 -:105310006795B795F7959F5FC9F7880F911D96958B -:10532000879597F90895E1E0660F771F881FBB1FE7 -:10533000621773078407BA0720F0621B730B840B94 -:10534000BA0BEE1F88F7E095089504D06894B11168 -:1053500035C1089518D188F09F5790F0B92F99273B -:10536000B751A0F0D1F0660F771F881F991F1AF070 -:10537000BA95C9F712C0B13081F01FD1B1E00895DC -:105380001CC1672F782F8827B85F39F0B93FCCF35D -:10539000869577956795B395D9F73EF49095809566 -:1053A000709561957F4F8F4F9F4F0895E89409C086 -:1053B00097FB3EF490958095709561957F4F8F4F48 -:1053C0009F4F9923A9F0F92F96E9BB279395F6955E -:1053D000879577956795B795F111F8CFFAF4BB0FDC -:1053E00011F460FF1BC06F5F7F4F8F4F9F4F16C040 -:1053F000882311F096E911C0772321F09EE8872FCA -:10540000762F05C0662371F096E8862F70E060E085 -:105410002AF09A95660F771F881FDAF7880F9695FE -:10542000879597F9089588D018F011F08CD038F44A -:1054300080C0C4C0E92F9FD0B0F35523C9F3E7FB68 -:105440006217730784079507A8F199F3E92FFF27DF -:1054500088232AF03197660F771F881FDAF7952F78 -:105460005527442332F091505040220F331F441FE0 -:10547000D2F7BB27E91BF50B621B730B840BB10939 -:10548000C1F222F4620F731F841FB11D31972AF0FD -:10549000660F771F881FBB1FEFCF915050405AF007 -:1054A00041F0882332F0660F771F881F91505040DB -:1054B000C1F7939530C08695779567959F5FD9F72B -:1054C000F8CF990F0008550FAA0BE0E8FEEF16166B -:1054D0001706E807F907C0F012161306E407F507E8 -:1054E00098F0621B730B840B950B39F40A2661F05C -:1054F000232B242B252B21F408950A2609F4A140FF -:10550000A6958FEF811D811D089597F99F6780E80B -:1055100070E060E008959F3F31F0915020F487954E -:1055200077956795B795880F911D9695879597F90B -:1055300008959FEF80EC089500240A94161617062C -:1055400018060906089500240A9412161306140674 -:1055500005060895092E0394000C11F4882352F0D7 -:10556000BB0F40F4BF2B11F460FF04C06F5F7F4F8F -:105570008F4F9F4F089557FD9058440F551F59F076 -:105580005F3F71F04795880F97FB991F61F09F3F30 -:1055900079F087950895121613061406551FF2CF59 -:1055A0004695F1DF08C0161617061806991FF1CFA9 -:1055B00086957105610508940895E894BB276627D0 -:1055C0007727CB0197F908957CDF08F48FEF0895D2 -:1055D0000BD0C0CFB1DF28F0B6DF18F0952309F06B -:1055E00094CFA7CF1124EACFC6DFA0F3959FD1F3C4 -:1055F000950F50E0551F629FF001729FBB27F00D81 -:10560000B11D639FAA27F00DB11DAA1F649F6627D5 -:10561000B00DA11D661F829F2227B00DA11D621F24 -:10562000739FB00DA11D621F839FA00D611D221FDE -:10563000749F3327A00D611D231F849F600D211DC2 -:10564000822F762F6A2F11249F5750408AF0E1F065 -:1056500088234AF0EE0FFF1FBB1F661F771F881FAE -:1056600091505040A9F79E3F510570F04ECFA6CF04 -:105670005F3FECF3983EDCF3869577956795B79599 -:10568000F795E7959F5FC1F7FE2B880F911D9695C3 -:10569000879597F90895FA01EE0FFF1F30962105BF -:1056A000310599F16115710561F48038BFE39B07FD -:1056B00049F168949038810561F08038BFEF9B070D -:1056C00041F0992342F5FF3FE1053105210511F134 -:1056D000E8940894E795D901AA2329F4AB2FBE2FAB -:1056E000F85FD0F310C0FF5F70F4A695E0F7F739CC -:1056F00050F019F0FF3A38F49F779F930CD00F9039 -:1057000007FC905808953EF014CF60E070E080E808 -:105710009FE308954FE79F775F934F933F932F93B6 -:105720009ED02F913F914F915F9152DF05C019F4A8 -:105730000EF0EBCE42CFFDCE26DFC8F39638C0F791 -:1057400007F80F92E8942BE33AEA48EB5FE74EDF65 -:105750000F920F920F924DB75EB70F92C0D0EAE052 -:10576000F1E016D04F915F91EF91FF91E595EE1F1B -:10577000FF1F49F0FE57E0684427EE0F441FFA95DB -:10578000E1F74195550B32D00F9007FE26C00895E2 -:10579000DF93CF931F930F93FF92EF92DF927B01E2 -:1057A0008C01689405C0DA2EEF011EDFFE01E8943B -:1057B000A5912591359145915591AEF3EF0106DD07 -:1057C000FE019701A801DA9479F7DF90EF90FF903E -:1057D0000F911F91CF91DF9108959B01AC0160E083 -:1057E00070E080E89FE349CD90CE95CECCDEE8F323 -:1057F0009923D9F3940F511DBBF39150504094F06D -:1058000059F0882332F0660F771F881F915050405F -:10581000C1F79E3F510544F7880F911D96958795D6 -:1058200097F908955F3FACF0983E9CF0BB278695B2 -:1058300077956795B79508F4B1609395C1F7BB0F5D -:1058400058F711F460FFE8CF6F5F7F4F8F4F9F4F86 -:10585000E3CFB4CE0EF05FCE6CCE689456CE93DE1E -:10586000C8F39923D1F3C6F3DF93CF931F930F931C -:10587000FF92C92FDD2788232AF02197660F771F13 -:10588000881FDAF720E030E040E85FEB9FE38839DB -:1058900020F0803E30F021968F7787DCE2E3F1E064 -:1058A00003C083DCEFE5F1E073DF8B01BE01EC01A7 -:1058B000FB2E6F5771097595771F880B990B78DD53 -:1058C00028E132E741E35FE38FDEAF2D9801AE01BF -:1058D000FF900F911F91CF91DF9178DC3BCEFA01C1 -:1058E000DC01AA0FBB1F9B01AC01BF5728F4222784 -:1058F0003327442750781FC0B75188F4AB2F0024BA -:10590000469537952795011CA395D2F3002069F0A1 -:10591000220F331F441FB395DAF30DD045CC61300D -:105920007105A0E88A07B94630F49B01AC016627EF -:10593000772788279078309621F02083318342831F -:1059400053830895AA1BBB1B51E107C0AA1FBB1FAD -:10595000A617B70710F0A61BB70B881F991F5A95FB -:10596000A9F780959095BC01CD01089597FB072E6E -:1059700016F4009407D077FD09D00E94A22C07FCF2 -:1059800005D03EF4909581959F4F0895709561954F -:105990007F4F0895EE0FFF1F0590F491E02D0994BD -:1059A000F999FECF92BD81BDF89A992780B50895E7 -:1059B000A8E1B0E042E050E00C94F82C262FF999D1 -:1059C000FECF92BD81BDF89A019700B4021639F05E -:1059D0001FBA20BD0FB6F894FA9AF99A0FBE08952F -:1059E0000196272F0E94DF2C0C94DE2CDC01CB01CA -:1059F000FC01F999FECF06C0F2BDE1BDF89A3196DF -:105A000000B40D9241505040B8F70895F894FFCF7C -:105A1000640007000CFF0000003F643310C1109EBB -:105A2000106A1036100101DF022808140A321E0025 -:105A300002040507090B0C0E1011131517181A1C78 -:105A40001D1F2123242628292B2D2F3032343537B2 -:105A5000393B1F0F03764F5F6F7F496943790959BF -:105A600053633149803F5D8B803FF8BF803FCAE17F -:105A7000803F73ED803FCAE1803FF8BF803F5D8B80 -:105A8000803F3149803F0000803FF16D7F3F75EAE4 -:105A90007E3F4C827E3F833F7E3F84287E3F833F14 -:105AA0007E3F4C827E3F75EA7E3FF16D7F3F000076 -:105AB000803F3F4D36394B05FE04C8048F04220455 -:105AC0003B0454046D0401020304050607080900A1 -:00000001FF diff --git a/keyboard/planck/keymaps/lucas/compiled.hex b/keyboard/planck/keymaps/lucas/compiled.hex deleted file mode 100644 index 26fc8ee0cd..0000000000 --- a/keyboard/planck/keymaps/lucas/compiled.hex +++ /dev/null @@ -1,1471 +0,0 @@ -:100000000C9427030C946B030C946B030C946B03FC -:100010000C946B030C946B030C946B030C946B03A8 -:100020000C946B030C946B030C942E150C9400161B -:100030000C9462230C946B030C946B030C946B0371 -:100040000C946B030C94CD030C946B030C946B0316 -:100050000C946B030C94CA230C946B030C946B03E9 -:100060000C946B030C946B030C946B030C946B0358 -:100070000C946B030C946B030C946B030C946B0348 -:100080000C94A30B0C946B030C946B030C946B03F8 -:100090000C946B030C946B030C946B030C946B0328 -:1000A0000C946B030C946B030C946B036D168F16FE -:1000B0007D178F167D17D416F7167D174C175F170F -:1000C000491A491A781A781AB71AD71A2D1C2D1CF2 -:1000D000E21A2D1C921B921BF91B021C2D1C271CC3 -:1000E0009F1B9F1B9F1B9F1B9F1B9F1B9F1B9F1B40 -:1000F0009F1B9F1B9F1B9F1B9F1B9F1B9F1B9F1B30 -:10010000AF1BBD1BC41BCB1BD51B07634236B79B64 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A299 -:1001D000F1A32CA4228A3921290014001A00090055 -:1001E00013000A000D000F0018001D003602380031 -:1001F0002A00040015001600170007000B0011006C -:1002000008000C001200310200301C001B00060028 -:10021000190005000E0010003600370024022800E7 -:10022000E000E3002B00E200022003200320012075 -:100230005000510052004F00010001000100010078 -:100240000100010001000100010001003700010070 -:100250000100010001000100010001000100010096 -:100260000100010001001F02010001000100010066 -:100270000100010001000100013064022D020100B3 -:100280000100010001000100010001000100010066 -:100290000100010001000100000034020000000024 -:1002A00000000000000000002F02330200000420C4 -:1002B0004C00340000002D00000000000000000091 -:1002C0002F00330000004514000000000000000073 -:1002D0000000000000000000AD00AC00AB004414C2 -:1002E0000100010001000100010001000100010006 -:1002F000A800AA00A900AE0030141E021414310098 -:10030000210222023500230230022502260230009B -:100310002E021E001F0020002100220023002400C6 -:1003200025002600270027020000000000006414BA -:100330002514261424142714081400002D14280052 -:1003400001000100010001000100010001000100A5 -:100350004A004E004B004D00680069006A006B00C7 -:100360006C006D006E006F00700071007200730011 -:100370003A003B003C003D003E003F004000410091 -:10038000420043004400450000000000000000005F -:100390000000560057000000000000000050000060 -:1003A00000008250805081500220010001000100B5 -:1003B000A800AA00A900AE000652290014001A00E5 -:1003C0000800150017001D0018000C001200042082 -:1003D00028002A0004001600070009000A000B008C -:1003E0000D000E000F003602E000E1001C001B00B3 -:1003F0000600190005001100100037005200240209 -:10040000000000002B00E20000002C002C002C015A -:10041000E300500051004F000100000014001A00DA -:10042000090013000A000D005F0060006100000079 -:100430002A000000040015001600170007000B003A -:100440005C005D005E004D00E000E1001C001B0050 -:100450000600190005000E0059005A005B004E000E -:10046000000000002B00E20000002C002C002C01FA -:100470000000620063005800280354006800650013 -:10048000200050006C0061006E0063006B002000D3 -:100490004B006500790062006F006100720064002B -:1004A00000002C034F007200740068006F006C00A5 -:1004B00069006E0065006100720020004B0065005D -:1004C000790062006F006100720064007300000038 -:1004D0000403090409026D00040100A0FA090400E4 -:1004E000000103010100092111010001223F000761 -:1004F00005810308000A0904010001030102000943 -:100500002111010001224D000705820308000A099C -:10051000040200010300000009211101000122363C -:10052000000705830308000A090403000103000013 -:100530000009211101000122390007058403100080 -:10054000011201100100000008EDFE6060010001D1 -:1005500002000105010906A101050719E029E715B7 -:1005600000250195087501810205081901290595E5 -:10057000057501910295017503910105071900297F -:100580007715002501957875018102C00501098064 -:10059000A101850216010026B7001A01002AB70042 -:1005A000751095018100C0050C0901A10185031694 -:1005B0000100269C021A01002A9C027510950181F7 -:1005C00000C005010902A1010901A10005091901E5 -:1005D0002905150025019505750181029501750311 -:1005E00081010501093009311581257F95027508C2 -:1005F000810609381581257F950175088106050C4E -:100600000A38021581257F950175088106C0C0054D -:10061000010906A101050719E029E7150025019543 -:1006200008750181029501750881010508190129E4 -:10063000059505750191029501750391010507194D -:100640000029FF150025FF950675088100C01124BB -:100650001FBECFEFDAE0DEBFCDBF04B603FE24C07D -:1006600080911E0390911F03A0912003B09121035C -:100670008730904BA740B04BB9F410921E031092F4 -:100680001F03109220031092210314BE84B7877FAA -:1006900084BF88E10FB6F8948093600010926000E8 -:1006A0000FBEE0E0F8E3099511E0A0E0B1E0EEE173 -:1006B000FBE502C005900D92A03CB107D9F713E00D -:1006C000A0ECB1E001C01D92AE31B107E1F70E948C -:1006D00074120C948D2D0C9400000895089581E0FF -:1006E000089508950C946E030C946F030C94710399 -:1006F0000E94572923E030E0281B3109220F209364 -:10070000C4010895282F2F9880918000211108C0DE -:10071000877F8093800010928D0010928C001BC008 -:10072000886080938000233019F48FEF9FEF0FC013 -:1007300083E090E0821B9109880F991F2FEF3FEF14 -:10074000A90102C0569547958A95E2F7CA01909390 -:100750008D0080938C000C9478030E94780384E0D1 -:100760008093C3011092C0010895279A2F988FEFAC -:100770009FEF90938700809386008AE080938000AB -:1007800089E1809381000E94C0280C94AD030E94EF -:10079000B5036E9A769A0C946D031F920F920FB662 -:1007A0000F9211242F933F938F939F93EF93FF9377 -:1007B000E091C101F091C201CF0101969093C20175 -:1007C0008093C1010090C30102C0F695E7950A9499 -:1007D000E2F7EF738091C001823019F4E03251F4F6 -:1007E00004C0813039F4EF3329F480916F008D7F9C -:1007F00080936F00F0E0E457FE4FE49121E031E098 -:10080000E29FC001E39F900D11240090C40102C03B -:10081000969587950A94E2F790938D0080938C00CB -:10082000FF91EF919F918F913F912F910F900FBE6C -:100830000F901F901895662319F0613099F020C031 -:10084000FC018281882341F081EE0E94ED1881E055 -:1008500090E00E94D52014C081E090E00E94F62034 -:1008600081EE0CC0FC018281882339F081EE0E9468 -:10087000B51984E60E94ED1803C084E60E94B519FC -:1008800080E090E0089581E008950C944304089579 -:100890000C94C70380911502882309F448C0809105 -:1008A000D1019091D201009779F40E949423909302 -:1008B000D2018093D1018091D30190E0009771F42F -:1008C0008091D40190E00AC00E94A02320910001F1 -:1008D000309101012817390740F329C00197880F8B -:1008E000991F880F991FFC01EB52FE4F60817181A7 -:1008F000828193810E94090BE091D30184E0E89FFB -:10090000F0011124EB52FE4F60817181828193814D -:100910004FE050E00E94C10E8091D30190E001961B -:100920006091D40170E00E943D2D8093D3010C941E -:100930007203109217020C94D60A0895089581E06C -:10094000809317020C949E04089508958F929F92AD -:10095000AF92BF92EF92FF920F931F93CF93DF93CB -:10096000CDB7DEB7A3970FB6F894DEBF0FBECDBFED -:100970007C01FC0100811181C8010E949121B80114 -:100980000E94A8068C01B7010E944504882309F43F -:10099000CCC10032F0E51F0741F4F70182818823C2 -:1009A00009F458C00E94250FC0C10132F0E51F07AD -:1009B00041F4F7018281882309F44CC00E942E0F74 -:1009C000B4C10232F0E51F0751F4F7018281882398 -:1009D00009F440C00E94210F8111F0CFE3CF033210 -:1009E000F0E51F0739F4F7018281882399F10E940D -:1009F0009F049BC10432F0E51F0739F4F70182819F -:100A0000882341F10E94990490C10532F0E51F0747 -:100A100049F4F70182818823E9F08091170281115E -:100A2000F1CFE5CF0632F0E51F0739F4F7018281F7 -:100A3000882381F00E94350F0AC00732F0E51F07B6 -:100A400049F4F7018281882329F00E94400F0E9417 -:100A5000A5046BC180911702811105C0F701828145 -:100A60008111CFC018C1003E110579F4F7018281D0 -:100A7000882309F44DC00E94D60A81E080931602B3 -:100A8000109215021092D40150C1023E110559F482 -:100A9000F70182818823E1F10E94D60A10921602A2 -:100AA0001092150242C1033E110591F4F7018281B3 -:100AB000882371F10E94D60A1092160281E0809379 -:100AC00015021092D3011092D2011092D1012DC1C2 -:100AD0000235110559F4F7018281882309F425C1F3 -:100AE00080910001909101010A970DC00135110517 -:100AF00079F4F7018281882309F417C180910001FC -:100B0000909101010A9690930101809300010DC11B -:100B10004091040183E2EFE1F1E0DE0111960190E2 -:100B20000D928A95E1F7F701808121E030E02C0FEA -:100B30003D1F280F311DC901209102013091030191 -:100B4000FC01E20FF31F6081772767FD7095640F4A -:100B5000711D882777FD8095982F0E945F2A20E0DD -:100B600030E040E451E40E94C4294B015C01F701EC -:100B7000218184E090E0821B9109BC01882777FDE8 -:100B80008095982F0E945F2A9B01AC01C501B4019A -:100B90000E945C299B01AC0160E070E080E090E481 -:100BA0000E94D22B20E030E04CED50E40E946F2BED -:100BB0004B015C01F70182818823D1F04FE050E0C6 -:100BC000C501B4010E94C10E809116028823A1F0D4 -:100BD0008091D40124E0829FF0011124EB52FE4F5A -:100BE00080829182A282B3828F5F8093D40104C0FD -:100BF000C501B4010E94090B0F3F110508F02ECF6B -:100C000094C08091D00181111FC0043130E51307D9 -:100C100009F051C00E94470481E08093D0010E94F6 -:100C200094239093CF018093CE011092C70110922C -:100C3000C9011092C8011092CB011092CA01109202 -:100C4000CD011092CC0171C08091CE019091CF0165 -:100C50000E94A023883C910570F48091C701E82F81 -:100C6000F0E0EE0FFF1FE853FE4F118300838F5F0C -:100C70008093C7015AC0043880E5180721F0053871 -:100C8000104501F13AC0F7018281882341F01092AA -:100C9000C50182E01EC0043830E5130759F5809184 -:100CA000C501811106C086E20E94ED1886E20E940D -:100CB000B51982E01CC00438F0E51F0741F3053880 -:100CC0001045D9F4F7018281882331F01092C601D2 -:100CD00080E20E94041A29C08091C601811106C0D9 -:100CE00087E20E94ED1887E20E94B51980E20E9417 -:100CF0000B1A1BC00538104529F381E08093C5010C -:100D00008093C601C701A3960FB6F894DEBF0FBE4D -:100D1000CDBFDF91CF911F910F91FF90EF90BF90CA -:100D2000AF909F908F900C94740380E0A3960FB6C1 -:100D3000F894DEBF0FBECDBFDF91CF911F910F9111 -:100D4000FF90EF90BF90AF909F908F90089508957F -:100D50009CE0799FF001112490E3899FE00DF11D43 -:100D60001124E60FF11DEE0FFF1FE852FE4F859193 -:100D700094910895880F991FFC01E45BFF4F8591C2 -:100D800094910895880F991FFC01E453FE4F8591BB -:100D9000949108950F931F93CF93DF93EC018115E6 -:100DA00021E39207A0F5C11580E3D80708F0D7C06A -:100DB000C83ED105D8F4C03ED10508F007C2C83AF4 -:100DC000D10578F4C53AD10508F06AC0C130D10523 -:100DD00009F463C008F4F7C1C430D10508F0F6C1C6 -:100DE000F2C1CB3BD10508F466C0EDC1C11590E25C -:100DF000D90708F0AFC0C11521E0D20708F0E6C15D -:100E0000C03FD10508F4DFC18E0110651FC2C03894 -:100E100080E5D80700F5C03790E5D90708F0A3C0F2 -:100E2000C11520E5D20709F4ACC050F4CE019054AE -:100E300080319F4008F0C7C1DF708E01106A06C282 -:100E4000C13080E5D80709F4AEC0C43190E5D907B8 -:100E500008F4AFC0B8C1C33820E5D20709F48EC08A -:100E600050F4C13890E5D90709F482C008F083C076 -:100E700000E011EDEBC1C03181E5D80708F4A3C152 -:100E8000C11597E5D90708F436C1CE0190578115F1 -:100E9000904108F098C1DF7093C101E010E0D6C125 -:100EA000C53AD10509F494C1C63AD10509F093C1F8 -:100EB00002E810E4CBC1C83AD10509F48FC1C93AA0 -:100EC000D10509F48EC1CA3AD10509F48DC1CB3AD6 -:100ED000D10509F48CC1CC3AD10509F48BC1CD3AC6 -:100EE000D10509F48AC1C03BD10509F489C1CE3AC4 -:100EF000D10509F488C1CF3AD10509F487C1C13BB6 -:100F0000D10509F486C1C23BD10509F485C1C33BB3 -:100F1000D10509F484C1C43BD10509F483C1C53BA3 -:100F2000D10509F482C1C63BD10509F481C1C73B93 -:100F3000D10509F480C1C83BD10509F47FC1C93B83 -:100F4000D10509F47EC1CA3BD10509F47DC100E099 -:100F500014E47CC1CE019F700E94C20678C1DD27D7 -:100F60008E01106C73C1CF70DD278E01146D6EC1C0 -:100F700000E010ED6BC100E012ED68C100E013ED80 -:100F800065C10E94981C0E94D60A0E949D048FEFA2 -:100F900094E32CE0815090402040E1F700C0000035 -:100FA0000E94EF2353C18091F20281608093F2028C -:100FB0004DC10E945024811102C00E942C240E9425 -:100FC000632490E090931D0380931C03C23080E55E -:100FD000D80721F480911C03816086C0C43090E55D -:100FE000D90721F480911C0382607EC0C63020E5C1 -:100FF000D20721F480911C03846076C0C83080E55C -:10100000D80719F480911C0327C0CA3090E5D9078E -:1010100021F480911C03806167C0CC3020E5D207A9 -:1010200021F480911C0380625FC0CE3080E5D80738 -:1010300021F480911C03806457C0C03190E5D9072A -:1010400021F480911C0380684FC0C23120E5D20793 -:1010500029F480911C038460886046C0C33080E519 -:10106000D80721F480911C038E7F3EC0C53090E5E7 -:10107000D90721F480911C038D7F36C0C73020E54D -:10108000D20721F480911C038B7F2EC0C93080E5EC -:10109000D80719F480911C0326C0CB3090E5D907FE -:1010A00021F480911C038F7E1FC0CD3020E5D20734 -:1010B00021F480911C038F7D17C0CF3080E5D807C5 -:1010C00021F480911C038F7B0FC0C13190E5D907BB -:1010D00021F480911C038F7707C0C331D04531F4D0 -:1010E00080911C038B7F877F80931C0380911C035E -:1010F0000E946724ABC08D2F99278F70992781306C -:101100009105D9F49E012370332702C0880F991FDF -:101110002A95E2F79C688E0144E0000F111F4A9562 -:10112000E1F700271370802B912B53E0CC0FDD1FCC -:101130005A95E1F7C076DD272FC08230910531F452 -:10114000DC2FCC278E01016F106A80C0833091059F -:1011500069F4CE018370992701E010E002C0000F0E -:10116000111F8A95E2F7C8019C680FC08430910571 -:10117000B9F4CE018370992701E010E002C0000F9E -:10118000111F8A95E2F7C8019A6823E0CC0FDD1F92 -:101190002A95E1F7C07ED7708C010C2B1D2B56C011 -:1011A0008530910531F4DC2FCC278E01046F106A55 -:1011B0004DC0069709F04AC0CF71DD27DC2FCC2740 -:1011C0008E01106243C000E010E040C08E013EC0BE -:1011D00001E810E43BC003E810E438C002EE14E478 -:1011E00035C009EE14E432C00AEE14E42FC005EB5A -:1011F00014E42CC006EB14E429C007EB14E426C069 -:101200000CEC14E423C00DEC14E420C003E815E456 -:101210001DC00AE815E41AC002E915E417C004E984 -:1012200015E414C001E216E411C003E216E40EC096 -:1012300004E216E40BC005E216E408C006E216E478 -:1012400005C007E216E402C00AE216E4C801DF9115 -:10125000CF911F910F9108959CE0799FF001112487 -:1012600090E3899FE00DF11D1124E60FF11DEE0FB3 -:10127000FF1FE852FE4F85919491803E9105E0F466 -:10128000803C910558F58133910509F46FC048F40D -:101290008932910509F463C08A32910509F46DC061 -:1012A00072C089339105E9F082389105D1F0853318 -:1012B000910509F44DC067C0833E910581F138F472 -:1012C000803E9105B9F0823E9105D9F05CC0863E22 -:1012D000910561F1873E9105A1F155C00E94BA06C2 -:1012E000089520911C0320FD02C021FF4CC080EE18 -:1012F00090E049C080911C0380FFF9CF89E390E022 -:1013000042C080911C0382FF0EC080911C0384FFA9 -:1013100003C080E090E037C083EE90E034C080915D -:101320001C0382FFF2CF82EE90E02DC080911C035F -:1013300083FF0BC080911C0384FDEBCF87EE90E010 -:1013400022C080911C0383FFF5CF86EE90E01BC086 -:1013500080911C0385FF07C089E290E014C0809152 -:101360001C0385FFF9CF85E390E00DC080911C033D -:1013700086FF07C08AE290E006C080911C0386FFCA -:10138000F9CF81E390E00E94CA0608950C94760399 -:10139000E82FF0E0E25BFE4F8081E82FEF70F0E095 -:1013A00082958F7021E030E0A90102C0440F551FE3 -:1013B0008A95E2F740A308950F931F93CF93DF938D -:1013C00085B7806885BF85B7806885BFC3E0D0E0FA -:1013D00001E010E0FE01E25BFE4F8081E82FEF703C -:1013E000F0E021A182958F70A80102C0440F551F23 -:1013F0008A95E2F7CA01822B81A38C2F0E94C8092B -:10140000219740F78BE090E061E070E0FC01EE5B3B -:10141000FE4F2081E22FEF70F0E042A122952F7065 -:10142000DB0102C0AA0FBB1F2A95E2F79D01242B06 -:1014300022A3019758F7DF91CF911F910F910C9440 -:101440004804EF92FF920F931F93CF93DF9300E234 -:1014500012E0C3E0EE24E394F12CD5E08C2F0E943F -:10146000C8098BE090E040E050E0FC01EE5BFE4FED -:101470006081E62FEF70F0E020A130E062956F70A0 -:1014800002C0359527956A95E2F720FD09C09701BE -:10149000082E02C0220F331F0A94E2F7422B532B6F -:1014A000019718F7F801929182918F01841795079F -:1014B00021F051834083D09305018C2F0E94C809ED -:1014C000C15060F68091050187FD2CC0815080934A -:1014D00005018F3F39F08FE99FE00197F1F700C0D8 -:1014E000000020C080911E0290911F02909327025D -:1014F0008093260280911C0290911D0290932502F8 -:101500008093240280911A0290911B0290932302EF -:1015100080932202809118029091190290932102E7 -:10152000809320020E944A0481E0DF91CF911F91B5 -:101530000F91FF90EF900895E82FF0E0EE0FFF1F5E -:10154000E05EFD4F80819181089508950F931F9370 -:10155000CF9308E212E0C0E0F801929182918F01EE -:101560000E940C23C80FF2E000321F07A9F78C2F4E -:10157000CF911F910F9108950E945024811102C0B4 -:101580000E942C240E947524809307033E9A809128 -:1015900071008D7F8093710082E0809390008AE1DA -:1015A0008093910081E080932A02089580912A021D -:1015B000811102C00E94BC0A10927A021092790234 -:1015C000809171008D7F80937100809190008F7366 -:1015D0008093900010923C0210923B021092730292 -:1015E000109274021092750210927602109272029A -:1015F00010927102E1E5F2E0A1E4B2E011921192E1 -:10160000119211921D921D9282E0E137F807B1F715 -:101610000895CF92DF92EF92FF920F931F93CF9393 -:10162000DF9320913B02222309F484C06B017C01EB -:1016300080912A02811102C00E94BC0A01E712E0D7 -:10164000C7E0D0E0A7019601F801929182917291D2 -:1016500062918F010E94C029811131C0FE01EE0FFD -:10166000FF1FEE0FFF1FEF5AFD4F108211821282F3 -:101670001382DE01AA0FBB1FAF5BBD4F11961C92F8 -:101680001E92C730D105E9F02196448155816681CB -:10169000778140835183628373831482158216821B -:1016A000178212968D919C91139711969C938E930D -:1016B00013961C921E92129734961296E2CF21979F -:1016C00008F68091790290917A02019797FD05C002 -:1016D00090937A028093790204C010927A02109259 -:1016E00079028091790290917A022091770230916B -:1016F00078022817390724F01092780210927702A6 -:10170000892BC1F4809171008D7F8093710080914D -:1017100090008F7380939000109273021092740265 -:10172000109275021092760210927202109271025B -:1017300010923B02DF91CF911F910F91FF90EF909C -:10174000DF90CF9008951F920F920FB60F92112441 -:101750004F925F926F927F928F929F92AF92BF92C1 -:10176000CF92DF92EF92FF922F933F934F935F932D -:101770006F937F938F939F93AF93BF93CF93DF9399 -:10178000EF93FF9380913B02882309F49BC1C091A2 -:101790007902D0917A021C161D060CF093C140907C -:1017A0002B0250902C0260902D0270902E0220E0AF -:1017B00030E0A901C301B2010E946B2B18160CF096 -:1017C00065C0C130D10509F452C080917702909173 -:1017D0007802BE010E943D2D7C0190937802809397 -:1017E000770280903D0290903E02A0903F02B09020 -:1017F000400220E030E040E85FE3C501B4010E9410 -:101800005C2960933D0270933E0280933F02909367 -:101810004002F701EE0FFF1FEE0FFF1FEF5AFD4FC3 -:10182000A301920160817181828193810E94C42908 -:1018300020E030E040E05EE30E946F2B9B01AC01B2 -:10184000C501B4010E946B2B18168CF4C7010196D8 -:10185000BE010E943D2D90937802809377021092F2 -:101860003D0210923E0210923F0210924002E0911F -:101870007702F0917802EE0FFF1FEE0FFF1FEF5A75 -:10188000FD4F6081718182819381D0C0C0907302CD -:10189000D0907402E0907502F090760220E030E083 -:1018A000A901C701B6010E94C0292197882309F424 -:1018B000A2C0FE01EE0FFF1FEE0FFF1FEF5AFD4FFC -:1018C00080809180A280B380A5019401C701B601F8 -:1018D0000E94C02987FF31C0A501940160E070E03B -:1018E0008CED93EC0E94C42920E030E040E451E408 -:1018F0000E94C42920E030E040E05FE30E946F2BAB -:101900009B01AC0160E070E080E090E40E94D22B8B -:101910009B01AC01C501B4010E946F2B9B01AC017E -:10192000C701B6010E94C02987FF07C0A701960121 -:1019300060E070E08CED93E439C0A5019401C7012B -:10194000B6010E946B2B18160CF055C0A50194012E -:1019500060E070E08CED93E40E94C42920E030E068 -:1019600040E451E40E94C42920E030E040E05FE31D -:101970000E946F2B9B01AC0160E070E080E090E47E -:101980000E94D22B9B01AC01C501B4010E946F2BB8 -:101990009B01AC01C701B6010E946B2B18165CF5C8 -:1019A000A701960160E070E08CED93EC0E94C429E1 -:1019B00020E030E040E451E40E94C42920E030E01F -:1019C00040E05FE30E946F2B9B01AC0160E070E0A0 -:1019D00080E090E40E94D22B9B01AC01C701B601CC -:1019E0000E946F2B60937302709374028093750250 -:1019F0009093760213C0FE01EE0FFF1FEE0FFF1F44 -:101A0000EF5AFD4F80819181A281B381809373024F -:101A100090937402A0937502B09376026091730262 -:101A20007091740280917502909176022091280243 -:101A3000309129022F3F4FEF340731F02F5F3F4F96 -:101A400030932902209328020E944B0F6B017C01E6 -:101A500020E034E244EF51E40E94C02987FF08C02F -:101A600086EFC82E88E2D82E84EFE82E81E4F82E87 -:101A700020E030E040E051E4C701B6010E946F2B46 -:101A80009B01AC0160E074E284E79BE40E94C429FE -:101A90006B017C010E94312A70939700609396003D -:101AA00020910601309107014091080150910901F0 -:101AB000C701B6010E946F2B0E94312A70939900D2 -:101AC0006093980080913C02882309F433C1C09050 -:101AD0003702D0903802E0903902F0903A0220E0CC -:101AE00030E0A901C701B6010E946B2B1816D4F58E -:101AF00080912802909129028F3F2FEF920729F0C1 -:101B000001969093290280932802C701B6010E9492 -:101B10004B0F20E030E040E051E40E946F2B9B012E -:101B2000AC0160E074E284E79BE40E94C4296B018D -:101B30007C010E94312A7093970060939600209157 -:101B40000601309107014091080150910901C70138 -:101B5000B6010E946F2B0E94312A70939900609306 -:101B6000980008C010929700109296001092990069 -:101B70001092980060913102709132026F5F7F4F36 -:101B80007093320260933102209196003091970059 -:101B900080E090E0232BF1F0C0919600D091970067 -:101BA0000E945D2A6B017C01BE0180E090E00E94F2 -:101BB0005D2A9B01AC0160913302709134028091E7 -:101BC0003502909136020E94C42920E03FEF4FE792 -:101BD00057E410C00E945D2A6B017C0120E030EECA -:101BE0004FEF54E4609133027091340280913502DA -:101BF000909136020E946F2B9B01AC01C701B60188 -:101C00000E946B2B87FD96C080912F028F5F80937F -:101C10002F0290E020910303309104038217930771 -:101C2000A0F080910E03882319F010922F020DC0AE -:101C3000809171008D7F80937100809190008F73EF -:101C40008093900010923C027DC080913002C09140 -:101C50002F02811128C0C0900803D0900903E090A2 -:101C60000A03F0900B0320E030E0A901C701B601A0 -:101C70000E946B2B1816BCF481E080933002109206 -:101C80003702109238021092390210923A02C09232 -:101C90003302D0923402E0923502F0923602C15003 -:101CA000C0932F0243C0109230021092290210926A -:101CB0002802E0910503F091060348E0C49FE00D7F -:101CC000F11D112480819181A281B381809337021B -:101CD00090933802A0933902B0933A0220E030E0AA -:101CE00040E85EE364817581868197810E946F2B55 -:101CF0006B017C0180910A01682F70E080E090E028 -:101D00000E945D2A20E030E048EC52E40E94C429A1 -:101D10009B01AC01C701B6010E946F2B6093330297 -:101D200070933402809335029093360210923202FF -:101D3000109231028091070380FD04C010923C0292 -:101D400010923B02FF91EF91DF91CF91BF91AF9144 -:101D50009F918F917F916F915F914F913F912F91C3 -:101D6000FF90EF90DF90CF90BF90AF909F908F90BB -:101D70007F906F905F904F900F900FBE0F901F90CD -:101D80001895CF92DF92EF92FF92CF93DF936B0182 -:101D90007C01EA0180912A02811102C00E94BC0AE2 -:101DA0008091070380FF46C08091790290917A026A -:101DB00008970CF03FC0809171008D7F8093710077 -:101DC00080913C0281110E94D60A81E080933B02FF -:101DD000109229021092280220E030E0A901C701E8 -:101DE000B6010E946B2B1816DCF480917902909159 -:101DF0007A02FC01EE0FFF1FEE0FFF1FEF5AFD4F9F -:101E0000C082D182E282F382FC01EE0FFF1FEF5B02 -:101E1000FD4FD183C083019690937A02809379021B -:101E20008091710082608093710080919000806841 -:101E300080939000DF91CF91FF90EF90DF90CF9053 -:101E40000895809107038170089580910703816050 -:101E5000809307030E9479240C94A40480910703C3 -:101E60008E7F809307030C94792480917B0290E00D -:101E7000019666E070E00E943D2D80937B020895FC -:101E800080917B0290E0019766E070E00E943D2D1A -:101E900080937B0208958F929F92AF92BF92CF92D0 -:101EA000DF92EF92FF920F931F93CF93DF936B011B -:101EB0007C01C0912802D0912902BE0180E090E00F -:101EC0000E945D2A4B015C01A701960160E070E071 -:101ED0008CE594E40E94C4299B01AC01C501B401C6 -:101EE0000E946F2B0E94312A20917B02233009F43B -:101EF00073C028F4222351F02130E9F02CC12430A2 -:101F000009F4A0C0253009F4E0C025C180E090E0CC -:101F1000A0E0BFE38093060190930701A09308011E -:101F2000B093090110922B0210922C0210922D02F4 -:101F300010922E0210C110922B0210922C021092BD -:101F40002D0210922E026431710540F46A30710541 -:101F500060F520E030E040E85EE32BC0693C7105AD -:101F600008F0AAC080E090E00E945D2A20E030E006 -:101F700040EA51E40E945B2920E030E044E353E46E -:101F80000E94C4299B01AC010E946F2B20E030E02D -:101F900040E05EE30E946F2B9B01AC0160E070E0CB -:101FA00080E09EE30E945B2944C020E030E040E0F6 -:101FB0005FE3C701B6010E946F2B6B017C0180E0DB -:101FC00090E0A0E0BEE38093060190930701A09308 -:101FD0000801B0930901BFC010922B0210922C028D -:101FE00010922D0210922E024AE0469F9001479FC8 -:101FF000300D1124C90168EB7BE00E94292DBC0142 -:102000006C5D754077FF03C07195619571098827F4 -:1020100077FD8095982F0E945F2A2EE333EC4EE2E5 -:1020200059E30E946F2B20E030E040EC5EE30E9419 -:102030005C296093060170930701809308019093D7 -:10204000090189C010922B0210922C0210922D02CD -:1020500010922E02CE0183709927892BE1F0BE01E8 -:102060006170772780E090E00E945D2A20E030E0F8 -:1020700040E05EE30E946F2B20E030E040E45FE34D -:102080000E945C2960930601709307018093080108 -:10209000909309010CC080E090E0A0E0BFE3809342 -:1020A000060190930701A0930801B0930901C7703E -:1020B000DD27CD2B09F04FC01092060110920701C9 -:1020C000109208011092090146C010922B02109242 -:1020D0002C0210922D0210922E0200E010E020E05F -:1020E0003FE300930601109307012093080130930A -:1020F00009016739710578F180E090E00E945D2A5E -:1021000020E030E047E153E40E945B2920E030E02A -:102110004AE754E40E94C42920E030E048E452E455 -:102120000E946F2B20E030E040EA51E40E94A12A97 -:102130000E942C2A660F771F660F771FFB01EE5A4D -:10214000FE4F2081318142815381C701B6010E9437 -:102150006F2B6B017C01C701B601DF91CF911F91FD -:102160000F91FF90EF90DF90CF90BF90AF909F9036 -:102170008F90089580918C020895CF93DF9300D0C3 -:102180001F92CDB7DEB79C0180911303843019F5FF -:1021900093E099833B832A839093E9008FEF90919A -:1021A000E800815095FD06C095ED9A95F1F7000085 -:1021B0008111F5CF8091E80085FF0DC040E050E02F -:1021C00063E070E0CE0101960E941E138091E8004A -:1021D0008E778093E8000F900F900F90DF91CF9152 -:1021E0000895CF93DF9300D01F92CDB7DEB7209133 -:1021F0001303243021F522E029839B838A8383E023 -:102200008093E9008FEF9091E800815095FD06C022 -:1022100095ED9A95F1F700008111F5CF8091E800D6 -:1022200085FF0DC040E050E063E070E0CE01019614 -:102230000E941E138091E8008E778093E8000F9033 -:102240000F900F90DF91CF910895209113032430C8 -:10225000F1F422E02093E9002FEF3091E8002150C3 -:1022600035FD06C035ED3A95F1F700002111F5CFA7 -:102270002091E80025FF0BC040E050E065E070E0F1 -:102280000E941E138091E8008E778093E8000895E5 -:10229000CF93DF93EC0190911303943009F046C083 -:1022A000809115018823D9F0809116018823B9F017 -:1022B0009093E9008FEF9091E800815095FD06C062 -:1022C00095E19A95F1F700008111F5CF8091E80032 -:1022D00085FF2CC040E050E060E170E017C081E075 -:1022E0008093E9008FEF9091E800815095FD06C042 -:1022F00095ED9A95F1F700008111F5CF8091E800F6 -:1023000085FF14C040E050E068E070E0CE010E941C -:102310001E138091E8008E778093E80080E1FE0133 -:10232000ACE7B2E001900D928A95E1F7DF91CF9191 -:10233000089580911203811109C00E94B3140E9474 -:1023400010158091E20084608093E200089510925D -:1023500012030895089508950C94572342E061EC08 -:1023600081E00E942D1442E061EC82E00E942D1475 -:1023700042E061EC83E00E942D1442E161EC84E0D4 -:102380000C942D1480911503833009F455C030F45A -:10239000813071F0823009F48EC008958A3009F4DA -:1023A0007AC08B3009F460C0893009F09CC020C02D -:1023B00080911403813A09F096C08091E800877FEC -:1023C0008093E8008091180390911903892B21F4E0 -:1023D00060E18CE792E003C060E080E090E070E0B4 -:1023E0000E9469138091E8008B778093E80008953C -:1023F00080911403813209F076C080911803909186 -:102400001903009719F0039709F06DC08091E80057 -:10241000877F8093E8008091E80082FD05C080916D -:1024200013038111F8CF5FC08091F10080938C027B -:102430008091E8008B7753C080911403813A09F0B2 -:1024400052C08091180390911903892B09F04BC059 -:102450008091E800877F8093E8008091E80080FF0A -:10246000FCCF8091150136C0809114038132D9F5DB -:102470008091180390911903892BA9F58091E800A8 -:10248000877F8093E8000E946214809116038093F6 -:1024900015010C94981C80911403813221F58091D0 -:1024A000E800877F8093E8000E9462148091170300 -:1024B00080938D02089580911403813AA1F4809154 -:1024C000E800877F8093E8008091E80080FFFCCFE0 -:1024D00080918D028093F1008091E8008E77809347 -:1024E000E8000C946214089584B7877F84BF88E164 -:1024F0000FB6F89480936000109260000FBE90E0D9 -:1025000080E80FB6F89480936100909361000FBE4D -:102510000E9405180E94B3140E9410158091E200D9 -:1025200084608093E20078940E9496170E940718B6 -:102530008BE091E00E94B11780911303853069F41C -:102540000E941823809111038823B1F30E9446232F -:10255000882391F30E940813EFCF0E940F18ECCF4D -:10256000292F332723303105C9F064F42130310598 -:1025700081F02230310509F043C08DE690E024ED72 -:1025800034E042C021323105F1F02232310541F10F -:1025900037C082E190E021E435E036C099278130F0 -:1025A000910541F08230910541F0892B49F5E0ED2C -:1025B000F4E005C0E2EAF4E002C0E8E7F4E0849168 -:1025C00090E09F0121C06430D8F4E62FF0E0EE0FD8 -:1025D000FF1FE255FE4F2081318189E090E014C059 -:1025E000643070F470E0FB01EE0FFF1FEA55FE4F00 -:1025F00020813181FB01EE55FE4F808190E004C0C7 -:1026000080E090E020E030E0FA01318320830895FB -:1026100080E189BD82E189BD09B400FEFDCF8091D2 -:10262000D8008F7D8093D8008091E00082608093F5 -:10263000E0008091E00081FDFCCF0895CF92DF9211 -:10264000EF92FF920F931F93CF93DF93EC018B01D7 -:102650006A010E948114811133C0C114D10439F080 -:10266000F60180819181081B190BC80FD91FE12C3D -:10267000F12C0115110519F18091E80085FD16C0B6 -:102680008091E8008E778093E800C114D10449F06E -:10269000F60180819181E80EF91EF182E08285E0E9 -:1026A0000FC00E948114882321F30AC0899180936E -:1026B000F10001501109FFEFEF1AFF0ADACF80E0B5 -:1026C000DF91CF911F910F91FF90EF90DF90CF900E -:1026D000089520911A0330911B032617370748F0FD -:1026E0006115710539F42091E8002E772093E800F8 -:1026F00001C0B90140E061157105A9F120911303F2 -:10270000222309F443C0253009F442C02091E80097 -:1027100023FD40C02091E80022FD32C02091E80056 -:1027200020FFE9CF4091F3002091F20030E0342BFC -:10273000FC01CF016115710559F02830310540F4D5 -:1027400081918093F100615071092F5F3F4FF1CF6C -:1027500041E02830310509F040E02091E8002E7773 -:102760002093E800C8CF4111C9CF0AC0809113035C -:10277000882361F0853061F08091E80083FD0AC014 -:102780008091E80082FFF2CF80E0089582E0089512 -:1027900083E0089581E0089520911A0330911B038E -:1027A0002617370748F06115710539F42091E800C4 -:1027B0002E772093E80001C0B901FC0120E06115EB -:1027C000710591F180911303882309F440C085308D -:1027D00009F43FC08091E80083FD3DC08091E8008E -:1027E00082FD2FC08091E80080FFE9CF2091F300A7 -:1027F0008091F20090E0922B6115710559F08830BC -:10280000910540F424912093F100319661507109B3 -:102810000196F2CF21E0089709F020E08091E800CE -:102820008E778093E800CBCF2111CCCF0AC0809166 -:102830001303882361F0853061F08091E80083FD07 -:102840000AC08091E80082FFF2CF80E0089582E024 -:10285000089583E0089581E00895982F973058F502 -:102860009093E900981739F07091EC002091ED00F9 -:102870005091F00003C0242F762F50E021FF19C0A3 -:102880003091EB003E7F3093EB003091ED003D7FC7 -:102890003093ED003091EB0031603093EB0070939A -:1028A000EC002093ED005093F0002091EE0027FF04 -:1028B00007C09F5FD3CF8F708093E90081E00895B8 -:1028C00080E008958091140387FF11C08091E80093 -:1028D00082FD05C0809113038111F8CF11C0809152 -:1028E000E8008B770BC080911303882349F0809117 -:1028F000E80080FFF8CF8091E8008E778093E800B1 -:1029000008952091E4003091E50095E64091EC00B7 -:10291000842F817040FF22C08091E80080FD1CC0A0 -:1029200080911303882391F0853091F08091EB0022 -:1029300085FD10C04091E4005091E5004217530717 -:1029400029F39A01915011F784E0089582E00895E7 -:1029500083E0089581E0089580E008954091E800C3 -:1029600042FFDECF08950E9421150E942915E0EE56 -:10297000F0E0808181608083E8EDF0E080818F77F6 -:10298000808319BCA7EDB0E08C918E7F8C93808101 -:102990008F7E80831092120308950F931F93CF931D -:1029A000DF930E9421150E942915C8EDD0E088818F -:1029B0008F77888388818068888388818F7D8883EA -:1029C00019BC1092130310920F031092110310926E -:1029D000100300EE10E0F80180818B7F80838881F6 -:1029E0008160888342E060E080E00E942D14E1EE87 -:1029F000F0E080818E7F8083E2EEF0E08081816074 -:102A00008083808188608083F80180818E7F8083CD -:102A1000888180618883DF91CF911F910F91089504 -:102A2000E8EDF0E080818F7E8083E7EDF0E080814B -:102A30008160808384E082BF81E0809312030C94E4 -:102A4000CD14E8EDF0E080818E7F80831092E2006B -:102A500008951092DA001092E10008951F920F92EB -:102A60000FB60F9211242F933F934F935F936F9361 -:102A70007F938F939F93AF93BF93EF93FF93809137 -:102A8000E10082FF0BC08091E20082FF07C08091CD -:102A9000E1008B7F8093E1000E9495178091DA001E -:102AA00080FF1FC08091D80080FF1BC08091DA009A -:102AB0008E7F8093DA008091D90080FF0DC080E185 -:102AC00089BD82E189BD09B400FEFDCF81E080931C -:102AD00013030E94991105C019BC109213030E94A0 -:102AE000A7118091E10080FF19C08091E20080FF72 -:102AF00015C08091E2008E7F8093E2008091E20019 -:102B000080618093E2008091D80080628093D80039 -:102B100019BC85E0809313030E94AB118091E10002 -:102B200084FF30C08091E20084FF2CC080E189BD29 -:102B300082E189BD09B400FEFDCF8091D8008F7D70 -:102B40008093D8008091E1008F7E8093E100809196 -:102B5000E2008F7E8093E2008091E20081608093AA -:102B6000E20080910F03882311F084E007C0809178 -:102B7000E30087FD02C081E001C083E0809313037E -:102B80000E94AC118091E10083FF29C08091E20096 -:102B900083FF25C08091E100877F8093E10082E080 -:102BA0008093130310920F038091E1008E7F809336 -:102BB000E1008091E2008E7F8093E2008091E2004C -:102BC00080618093E20042E060E080E00E942D148A -:102BD0008091F00088608093F0000E94AA11FF911C -:102BE000EF91BF91AF919F918F917F916F915F9185 -:102BF0004F913F912F910F900FBE0F901F901895FE -:102C00001F920F920FB60F9211242F933F934F9361 -:102C10005F936F937F938F939F93AF93BF93CF9364 -:102C2000DF93EF93FF93C091E900CF708091EC00A8 -:102C3000D82FD17080FDD0E81092E9008091F0008B -:102C4000877F8093F00078940E9444161092E900E8 -:102C50008091F00088608093F000CD2BCF70C093FE -:102C6000E900FF91EF91DF91CF91BF91AF919F91DB -:102C70008F917F916F915F914F913F912F910F9025 -:102C80000FBE0F901F9018951F93CF93DF93CDB772 -:102C9000DEB7AA970FB6F894DEBF0FBECDBFE4E152 -:102CA000F3E088E08E0F9091F10091938E13FBCFAB -:102CB0000E94C2118091E80083FF1FC1809114031C -:102CC00090911503492F50E04A30510508F015C185 -:102CD000FA01EA5AFF4F0C94512D803881F0823866 -:102CE00009F00BC1809118038F708093E9008091E7 -:102CF000EB0085FB882780F91092E90006C08091DF -:102D0000100390911103911182609091E800977FD8 -:102D10009093E8008093F1001092F100C8C0282F32 -:102D20002D7F09F0EAC0882319F0823061F0E5C0F8 -:102D300080911603813009F0E0C0933009F080E003 -:102D4000809311032BC080911603811127C08091BD -:102D500018038F7009F4D1C08093E9002091EB0033 -:102D600020FF1CC0933021F48091EB00806214C0DE -:102D70009091EB0090619093EB0021E030E0A9018D -:102D800002C0440F551F8A95E2F74093EA00109263 -:102D9000EA008091EB0088608093EB001092E900DC -:102DA0008091E800877F86C08111A7C0109116032B -:102DB0001F778091E3008078812B8093E3008091DE -:102DC000E800877F8093E8000E9462148091E80009 -:102DD00080FFFCCF8091E30080688093E3001111B5 -:102DE00002C082E001C083E08093130386C0805854 -:102DF000823008F082C080911603909117038C3DB9 -:102E000053E0950779F583E08A838AE289834FB797 -:102E1000F894DE01139620E03EE051E2E32FF0E06B -:102E200050935700E49120FF03C0E295EF703F5F9D -:102E3000EF708E2F90E0EA3010F0C79601C0C09678 -:102E40008D939D932F5F243149F74FBF8091E80008 -:102E5000877F8093E8006AE270E0CE0101960E94CD -:102E6000691314C0AE014F5F5F4F609118030E9459 -:102E7000B012BC01009709F440C09091E800977F20 -:102E80009093E80089819A810E94CC138091E80098 -:102E90008B778093E80031C0803879F58091E80025 -:102EA000877F8093E80080910F038093F1008091E9 -:102EB000E8008E778093E8000E9462141EC08111A2 -:102EC0001CC0909116039230C0F48091E800877F77 -:102ED0008093E80090930F030E94621480910F0387 -:102EE000811106C08091E30087FD02C081E001C02E -:102EF00084E0809313030E94AE118091E80083FF69 -:102F00000AC08091E800877F8093E8008091EB0001 -:102F100080628093EB00AA960FB6F894DEBF0FBED6 -:102F2000CDBFDF91CF911F9108950895CF938091E8 -:102F300013038823A1F0C091E900CF709091EC00B9 -:102F4000892F817090FD80E8C82B1092E900809154 -:102F5000E80083FD0E944416CF70C093E900CF9132 -:102F6000089590939302809392020895E0919202C3 -:102F7000F0919302309721F00190F081E02D0994B7 -:102F800080E00895E0919202F0919302309721F051 -:102F90000280F381E02D09940895E0919202F0916E -:102FA0009302309721F00480F581E02D0994089573 -:102FB00020919002309191028217930771F09093C3 -:102FC000910280939002E0919202F09193023097E7 -:102FD00021F00680F781E02D0994089520918E025A -:102FE00030918F028217930771F090938F02809334 -:102FF0008E02E0919202F0919302309721F00084CA -:10300000F185E02D0994089508950C9404180E9408 -:103010008B230E94DC090E9411240C94C0285F922B -:103020006F927F928F929F92AF92BF92CF92DF92D8 -:10303000EF92FF920F931F93CF93DF9300D000D0B6 -:103040001F92CDB7DEB70E94210A9DE9C92E92E0FA -:10305000D92E03E010E0AA24A394B12C502E802F87 -:103060000E949C0A4C01F601729062906F016826E2 -:10307000792661147104A1F40150110978F78FEFDA -:1030800089838A831B820E9494238160782F9D8389 -:103090008C8349815A816B818D810E94BF1838C011 -:1030A0008091F20281FD0E94A50A2BE030E07501BB -:1030B000022E02C0EE0CFF1C0A94E2F7C701862123 -:1030C0009721892B09F129835A828E209F2091E034 -:1030D000892809F490E09B830E9494238160782FD3 -:1030E0009D838C8349815A816B818D810E94BF1899 -:1030F000000F111FF801EB56FD4F80819181E826EA -:10310000F926F182E08204C02150310980F6B4CF63 -:103110000E94F825109194020E94B6171817D1F05A -:103120000E94B617809394020F900F900F900F900B -:103130000F90DF91CF911F910F91FF90EF90DF9053 -:10314000CF90BF90AF909F908F907F906F905F9047 -:103150000C94C6090F900F900F900F900F90DF9175 -:10316000CF911F910F91FF90EF90DF90CF90BF9084 -:10317000AF909F908F907F906F905F900895CF93C6 -:10318000DF93CDB7DEB72B970FB6F894DEBF0FBE37 -:10319000CDBF4F83588769877A878B87DE01119669 -:1031A00086E0FD0111928A95E9F785E0FE013796E8 -:1031B00001900D928A95E1F749815A816B817C815A -:1031C0008D819E810E94361F2B960FB6F894DEBF2C -:1031D0000FBECDBFDF91CF910895CF93882309F41F -:1031E000C2C0C82F823859F40E94B61781FDBBC0F7 -:1031F00089E30E9410220E94DD2289E30CC08338FB -:1032000079F40E94B61780FDAEC083E50E941022BB -:103210000E94DD2283E50E945222CF910C94DD2290 -:10322000843859F40E94B61782FD9DC087E40E943D -:1032300010220E94DD2287E4EECF8CEF8C0F813AC2 -:1032400048F48C2F0E94282881118DC08C2F0E9459 -:103250001022E3CF80E28C0F883048F4C77081E001 -:1032600001C0880FCA95EAF70E949622D6CF8BE557 -:103270008C0F833078F4C53A29F0C63A31F083E8F0 -:1032800090E005C081E890E002C082E890E0CF9134 -:103290000C94D81788E58C0F833108F064C0C83AC5 -:1032A00039F1C93A41F1CA3A49F1CB3A51F1CC3A34 -:1032B00059F1CD3A61F1C03B69F1CE3A71F1CF3AA3 -:1032C00079F1C13B81F1C23B89F1C33B91F1C43B30 -:1032D00099F1C53BA1F1C63BA9F1C73BB1F1C83B90 -:1032E000B9F1C93BC1F1CA3BC9F180E090E038C0F7 -:1032F00082EE90E035C089EE90E032C08AEE90E038 -:103300002FC085EB90E02CC086EB90E029C087EBC6 -:1033100090E026C08CEC90E023C08DEC90E020C0C3 -:1033200083E891E01DC08AE891E01AC082E991E04B -:1033300017C084E991E014C081E292E011C083E2F9 -:1033400092E00EC084E292E00BC085E292E008C0F9 -:1033500086E292E005C087E292E002C08AE292E053 -:10336000CF910C94EE17CF910895882309F44BC0A8 -:10337000823859F40E94B61781FF45C089E30E9444 -:1033800010220E94DD2289E30CC0833871F40E9470 -:10339000B61780FF38C083E50E9410220E94DD220C -:1033A00083E50E9452220C94DD22843859F40E9455 -:1033B000B61782FF28C087E40E9410220E94DD22F7 -:1033C00087E4EFCF9CEF980F913A58F390E2980F73 -:1033D000983050F4877091E001C0990F8A95EAF710 -:1033E000892F0E949C22DFCF9BE5980F933020F419 -:1033F00080E090E00C94D817885A833120F480E064 -:1034000090E00C94EE170895882321F00E949622F4 -:103410000C94DD220895882321F00E949C220C94B4 -:10342000DD2208957F928F929F92AF92BF92CF92AA -:10343000DF92EF92FF920F931F93CF93DF931F9230 -:10344000CDB7DEB77C01C62E772EFC010581029533 -:103450000F70128111110E94B3220E940922882349 -:1034600079F0112369F080E28C0D883048F082E019 -:103470000E94F2210E94092291E0D82ED92601C093 -:10348000D12CE72DE295EF70F0E0E05AFF4F0C945D -:10349000512D872D807F072D0F70882311F0029505 -:1034A000007F112389F0002309F499C180E28C0D7B -:1034B000883020F4802F0E94962203C0802F0E9423 -:1034C000A6220E94DD228BC18C2D0E94B5190023FB -:1034D00009F4C3C180E28C0D883020F4802F0E9453 -:1034E0009C2203C0802F0E94AC220E94DD22B5C125 -:1034F000872D807F972D9F70803211F4892F03C014 -:10350000892F8295807FCC2021F0F1E0CF16A1F0A9 -:103510001DC0112339F0002319F1013009F50E9473 -:10352000C6229BC1002319F0013009F496C189839A -:103530000E94C922898110C1112321F0063008F0B0 -:103540008CC10EC0053008F088C106C1112359F0A6 -:10355000002331F0F701958190FF41C19F70958361 -:103560000E94041A7AC1002309F4F6C03EC1872DD7 -:1035700086958695837090E0009719F0019761F029 -:103580006CC1112321F08C2D972D937002C080E027 -:1035900090E00E94D81761C1112321F08C2D972D46 -:1035A000937002C080E090E00E94EE1756C18C2D0F -:1035B000112319F00E94002502C00E9468250E9474 -:1035C000ED254BC1872D837009F052C0111145C103 -:1035D0008C2D829586958770880F880F9C2D9F7003 -:1035E000892E912CA12CB12C082E04C0880C991C7A -:1035F000AA1CBB1C0A94D2F7C4FE14C00FE010E052 -:1036000020E030E0B901A80104C0440F551F661F37 -:10361000771F8A95D2F7CB01BA0160957095809596 -:10362000909503C060E070E0CB01272D269526958C -:10363000237030E02230310569F02330310589F004 -:10364000682979298A299B292130310571F00E9446 -:103650007E2003C1682979298A299B290E949A2002 -:10366000FCC00E947E20C501B4010E946220F5C00A -:10367000112319F0872D817001C08695882309F4E4 -:10368000ECC08C2D829586958770880F880F9C2DB5 -:103690009F70892E912CA12CB12C082E04C0880C6F -:1036A000991CAA1CBB1C0A94D2F7C4FE14C00FE0DC -:1036B00010E020E030E0B901A80104C0440F551F1C -:1036C000661F771F8A95D2F7CB01BA016095709576 -:1036D0008095909503C060E070E0CB01272D269582 -:1036E00026952370422F50E04230510569F0433057 -:1036F000510589F0682979298A299B29413051058A -:1037000071F00E945821A9C0682979298A299B292A -:103710000E947421A2C00E945821C501B4010E94D8 -:103720003C219BC08C2D90E0FC01E05EF109E5316D -:10373000F10508F050C0E059FF4F0C94512D0C2DAD -:103740000F70872D8F71112321F00E94D520802FBB -:1037500007CF0E94F620802F0E940B1A7EC01123F3 -:1037600041F0053008F079C0872D8F710E941B2130 -:1037700074C0063008F071C0F7CF112339F0872DDF -:103780008F710E94D52069C01123C9F3872D8F71D5 -:103790000E94F62062C0112329F0872D8F710E94AC -:1037A000C0205BC00E94B62058C0112351F0172DD5 -:1037B0001F71812F0E94D52063E0812F0E94E92193 -:1037C0004CC081E00E94F221023008F446C082E041 -:1037D0000E94F22142C0112331F0002381F28C2D8E -:1037E0000E94ED183AC0002389F28C2D0E94B51971 -:1037F00034C0472D4F706C2DC7010E941B040E94DE -:10380000DA1F2BC0111129C0472D4F7050E04230F4 -:103810005105B9F04CF44115510581F04130510585 -:10382000E1F40E94E82819C04330510569F04430A2 -:10383000510599F48C2D0E943A290FC00E94D1287D -:103840000CC00E94042909C00E94172906C0472DF8 -:103850004F706C2DC7010E94A706DD20F9F00E9471 -:10386000E52180FD1BC0F70112820E94DF210E942A -:10387000D520C7010E945D1C0E94DF210F90DF91BF -:10388000CF911F910F91FF90EF90DF90CF90BF905D -:10389000AF909F908F907F900C94F6200F90DF91C7 -:1038A000CF911F910F91FF90EF90DF90CF90BF903D -:1038B000AF909F908F907F9008950F931F93CF9319 -:1038C000DF93EC01888199812B813C81232BB9F016 -:1038D0009F3F11F48F3F99F0CE010E94A6048823E8 -:1038E00071F0688179818A810E94DB218C010E94BC -:1038F00090210E945720B801CE010E94121ADF9138 -:10390000CF911F910F9108950E94B3220E94C3226C -:103910000E9488220E94DD220E949E260E94ED25A0 -:1039200080E090E00E94D81780E090E00C94EE17C1 -:103930000E94A3220C94841C0E94D021292F22953E -:103940002F7030E02C3031054CF42A3031056CF406 -:103950002250310922303105A8F407C02C3031053E -:1039600069F02F30310551F00DC0803F69F018F437 -:10397000803E40F409C0843F29F406C093FB8827A9 -:1039800080F9089580E0089581E00895CF93DF9352 -:1039900000D000D01F92CDB7DEB70F900F900F90E0 -:1039A0000F900F90DF91CF910895CF93DF9300D0C8 -:1039B00000D000D0CDB7DEB726960FB6F894DEBFA4 -:1039C0000FBECDBFDF91CF9108951F93CF93DF93AB -:1039D000C0919D0216E080919E02C81799F0D0E038 -:1039E0001C9FF0011D9FF00D1124E156FD4F4081F9 -:1039F000518162817381848195810E94D51C2196B9 -:103A0000C770E9CFDF91CF911F9108954091CF0208 -:103A10005091D0026091D1027091D2028091D30274 -:103A20009091D4020C94D51C8091D40282958F7011 -:103A300009F054C08091D102882309F44FC08091CD -:103A40009D02A0919E026091CF027091D0024091A0 -:103A5000D2025091D302B6E08A1709F43FC090E039 -:103A600041155105C1F17F3F11F46F3FA1F1B89F9E -:103A7000F001B99FF00D1124E156FD4F2181721321 -:103A80002AC02081621327C02281211124C02381F2 -:103A900034812417350710F421503109241B350BCC -:103AA000283C3105C0F42091D4022F70206120936E -:103AB000D40226E0289FF001299FF00D1124EC5537 -:103AC000FD4F80818F70806180838FEC92E00E9437 -:103AD0005D1C0C94E51C01968770BECF0895CF92B3 -:103AE000DF92EF92FF920F931F93CF93DF93CDB7A7 -:103AF000DEB762970FB6F894DEBF0FBECDBF8C0164 -:103B000085E0F801DE011D9601900D928A95E1F79E -:103B1000D8014C9111965C91119712966C91129765 -:103B20001396CD90DC9014973091CF027091D00213 -:103B30008091D2029091D302009709F46BC17F3F2C -:103B400019F43F3F09F466C1E090D102EE2009F478 -:103B5000C0C02091D402C816D90628F0F601E81B8F -:103B6000F90BCF0104C0809590958C0D9D1DFF240D -:103B7000F394883C910578F0F12C207F09F0C6C0C1 -:103B80007C2DD98AC88A89890E94C61C8FEC92E054 -:103B90000E945D1CB1C0822F807F09F046C0751362 -:103BA00014C0341312C0611110C02F702061209313 -:103BB000D4020E94061D8FEC92E00E945D1C809151 -:103BC000D402D80115968C932EC0CD2819F15F3FF1 -:103BD00011F44F3FF9F0F62E61111CC080919D0247 -:103BE00020919E0236E0821709F45AC090E0389F77 -:103BF000F001399FF00D1124E156FD4F71815713EB -:103C000006C07081471303C07281711103C0019611 -:103C10008770E9CFF62E662309F418C18091D4028B -:103C200081608093D402F12C11C1751308C0341344 -:103C300006C0611104C08091D402D801C3C04D8771 -:103C40005E878D859E856A8B0E949C1C6A8988236D -:103C5000E1F16623D1F12091D402822F82958F70F9 -:103C600090E0029774F08091CF029091D0029887F3 -:103C70008F831986DB86CA862C87CE0107960E9421 -:103C80005D1C86E0F801AFECB2E001900D928A95E0 -:103C9000E1F70E94141D0E94061DFF24F394D6C074 -:103CA0004D875E878D859E850E94D021292F229584 -:103CB0002F7030E0223031050CF0BCC09F7009F04D -:103CC000B6C0805E883008F4C1C0C8010E945D1C87 -:103CD000E4CFC816D90608F453C0F601E81BF90B67 -:103CE000CF01883C910508F450C0F12C7C2DD98A75 -:103CF000C88A89890E94C61CEFECF2E086E0DF01E9 -:103D00001D928A95E9F70E94061DA0C0751314C084 -:103D1000341312C0611110C08091D402F801858360 -:103D2000C8010E945D1C86E0EFECF2E0DF011D920D -:103D30008A95E9F7FE2C8AC04D875E878D859E8522 -:103D40006A8B0E949C1C6A89882309F4BECF662373 -:103D500009F4BBCF2091D402822F82958F7090E01E -:103D600002970CF48ECF8091CF029091D0029A836B -:103D700089831B82DD82CC822E83CE0101967FCF88 -:103D8000809590958C0D9D1DACCFF62E662309F481 -:103D90009CCF75132EC034132CC02091D40220FD6B -:103DA0001FC0822F82958F70D9F0D80115962C9361 -:103DB00015978F3049F08F5F982F9295907F822FC3 -:103DC0008F70892B15968C93C8010E945D1C86E02C -:103DD000F801AFECB2E001900D928A95E1F793CF34 -:103DE00086E0F801AFECB2E001900D928A95E1F720 -:103DF0002DC04D875E878D859E850E949C1C8111FC -:103E000040CF8091D40281608093D402C8010E9487 -:103E10005D1C1CC0662309F458CF4D875E878D85D5 -:103E20009E850E949C1C882309F44FCF2ACF8111C4 -:103E300048CF0CC0243031050CF047CF9F7009F4F7 -:103E400040CFF8019581907F09F03BCF8F2D62968E -:103E50000FB6F894DEBF0FBECDBFDF91CF911F919B -:103E60000F91FF90EF90DF90CF9008951F93CF9325 -:103E7000DF93CDB7DEB72C970FB6F894DEBF0FBE39 -:103E8000CDBF4F83588769877A878B879C87CE0100 -:103E900007960E946F1D882369F08F8198852A8577 -:103EA0003B85232BF1F19F3F09F063C08F3F09F061 -:103EB00060C037C086E0FE013796DE0111960190A2 -:103EC0000D928A95E1F76F817885EA85FB853097B9 -:103ED00041F17F3F11F46F3F21F120919E0230E0CC -:103EE000C90101968770992740919D0250E084177F -:103EF000950709F447C069837A83FD83EC8396E0D4 -:103F0000929FD001939FB00D1124A156BD4FFE0189 -:103F1000319601900D929A95E1F780939E020E944E -:103F2000E51C16E080919D0290919E028917C1F1D7 -:103F3000189FC001112481569D4F0E946F1D882338 -:103F400079F1E0919D021E9FF0011124E156FD4F91 -:103F50004081518162817381848195810E94D51C49 -:103F600080919D0290E001968770992780939D0231 -:103F7000D9CF4F81588569857A858B859C850E942C -:103F8000D51CCFCF0E94981C10929E0210929D02C9 -:103F9000EFECF2E086E0DF011D928A95E9F7C1CFF0 -:103FA0002C960FB6F894DEBF0FBECDBFDF91CF9138 -:103FB0001F910895EF92FF920F931F93CF93DF937A -:103FC0008C01009709F46CC0F12CEE24E394E80115 -:103FD0002196F8018491843740F4843008F051C070 -:103FE000813081F0823019F15BC0853709F444C01B -:103FF000A8F19CE7980F903708F052C08F770E9485 -:10400000B51941C00E5F1F4FFE01C49180E28C0FB5 -:10401000883048F4C7708E2D01C0880FCA95EAF722 -:104020000E94B62214C08C2F0E94ED182DC00E5F86 -:104030001F4FFE01C49180E28C0F883058F4C77086 -:104040008E2D01C0880FCA95EAF70E94BC220E94FB -:10405000DD221AC08C2F0E94B51916C00E5F1F4FAB -:10406000FE01C491CC2381F08FE99FE00197F1F725 -:1040700000C00000C150F6CF0E5F1F4FFE01F4904C -:1040800003C00E94ED188E018F2D882309F49FCF65 -:10409000EFE9FFE03197F1F700C000008150F5CF64 -:1040A000DF91CF911F910F91FF90EF9008950895A8 -:1040B0006093D9027093DA028093DB029093DC0262 -:1040C0000C94841C0F931F930091D9021091DA0273 -:1040D0002091DB023091DC02DC01CB01802B912BA3 -:1040E000A22BB32B8093D9029093DA02A093DB0228 -:1040F000B093DC021F910F910C94841C0F931F93BB -:104100000091D9021091DA022091DB023091DC0299 -:10411000DC01CB0180239123A223B3238093D90216 -:104120009093DA02A093DB02B093DC021F910F910F -:104130000C94841C0F931F930091D9021091DA0202 -:104140002091DB023091DC02DC01CB01802791273A -:10415000A227B3278093D9029093DA02A093DB02BF -:10416000B093DC021F910F910C94841C1092D50225 -:104170001092D6021092D7021092D8020C94841C8E -:1041800041E050E060E070E004C0440F551F661F3E -:10419000771F8A95D2F74093D5025093D602609349 -:1041A000D7027093D8020C94841C41E050E060E088 -:1041B00070E004C0440F551F661F771F8A95D2F721 -:1041C0008091D5029091D602A091D702B091D802E9 -:1041D000482B592B6A2B7B2B4093D5025093D60248 -:1041E0006093D7027093D8020C94841C41E050E095 -:1041F00060E070E004C0440F551F661F771F8A956A -:10420000D2F740955095609570958091D502909128 -:10421000D602A091D702B091D802482359236A232D -:104220007B234093D5025093D6026093D7027093BC -:10423000D8020C94841C41E050E060E070E004C0BF -:10424000440F551F661F771F8A95D2F78091D502BC -:104250009091D602A091D702B091D8024827592751 -:104260006A277B274093D5025093D6026093D702EA -:104270007093D8020C94841C0F931F930091D50265 -:104280001091D6022091D7023091D802DC01CB01E7 -:10429000802B912BA22BB32B8093D5029093D60227 -:1042A000A093D702B093D8021F910F910C94841C55 -:1042B0000F931F930091D5021091D6022091D7023F -:1042C0003091D802DC01CB0180239123A223B323B8 -:1042D0008093D5029093D602A093D702B093D802D0 -:1042E0001F910F910C94841C0F931F930091D50282 -:1042F0001091D6022091D7023091D802DC01CB0177 -:1043000080279127A227B3278093D5029093D602C6 -:10431000A093D702B093D8021F910F910C94841CE4 -:104320000895CF92DF92EF92FF920F931F93CF9356 -:10433000DF938C01C090D902D090DA02E090DB02CA -:10434000F090DC028091D5029091D602A091D70224 -:10435000B091D802C82AD92AEA2AFB2ACFE1D0E0B4 -:10436000D701C6010C2E04C0B695A79597958795E1 -:104370000A94D2F780FF06C0B8018C2F0E942C0946 -:10438000019721F4219760F780E001C08C2FDF9125 -:10439000CF911F910F91FF90EF90DF90CF900895F4 -:1043A000CF93DF93EC010E949121BE010E942C0962 -:1043B000DF91CF910895CB010E94D0210895809183 -:1043C000DD0285958595859508958091DD0287703C -:1043D000089598E0899F90011124262B2093DD02F7 -:1043E0000C94D5202091DD02809582238093DD02FC -:1043F000982F977069F430E0482F552747FD509566 -:104400002417350729F08595859585950C94F62018 -:1044100008959091DD02977081E009F480E008959D -:1044200090911501992321F090911601911109C0E5 -:104430002091170130911801F90132969FEF40E069 -:104440001FC0982F9695969596959F3050F5E091C0 -:104450001701F0911801E90FF11D877021E030E09C -:10446000A90102C0440F551F8A95E2F7CA01918144 -:10447000892B818308959F3F39F04F5F4E3041F083 -:1044800051915813F8CF0DC05111F7CF942FF5CF9C -:104490009F3F39F0F901E90FF11D97FDFA958283ED -:1044A0000895089590911501992321F09091160196 -:1044B000911109C02091170130911801F90132962C -:1044C000205F3F4F1FC0982F9695969596959F30E9 -:1044D000F0F4E0911701F0911801E90FF11D8770D8 -:1044E00021E030E0A90102C0440F551F8A95E2F790 -:1044F000CA01809591818923818308953196E217BD -:10450000F30729F090819813F9CF1082F7CF08951F -:1045100081E090E0E0911701F0911801E80FF91F98 -:104520001082019680319105A9F708959091F102CA -:10453000892B8093F102089580959091F10289234F -:104540008093F10208951092F10208959091F00283 -:10455000892B8093F002089580959091F002892331 -:104560008093F00208951092F00208959091EF0266 -:10457000892B8093EF02089580959091EF02892313 -:104580008093EF0208951092EF0208958093DE0267 -:1045900008951092DE0208958091170190911801FC -:1045A000FC0131969C01205F3F4F80E09191911179 -:1045B0008F5FE217F307D1F70895E0911701F091AB -:1045C00018018091F1028083E0911701F0911801A8 -:1045D00090818091F002892B8083E0911701F09106 -:1045E000180190818091EF02892B80838091DE02F7 -:1045F000882361F0E0911701F09118019081892BD7 -:1046000080830E94CC2281111092DE0280911701DA -:10461000909118010C94C21720E0009739F0AC017A -:1046200041505109842395232F5FF7CF822F08959E -:1046300080911303843039F11092F30220E488E171 -:1046400090E00FB6F894A895809360000FBE209379 -:10465000600080E00E94820380E00E94C60983B768 -:10466000817F846083BF83B7816083BF789488959E -:1046700083B78E7F83BF88E10FB6F8948093600084 -:10468000109260000FBE08950895089580E00E9482 -:1046900082030E9444230E94210A0E9445230E9413 -:1046A000A60A91E0811101C090E0892F08950E942F -:1046B000981C80E00E9482030E94C0280E94B617C6 -:1046C0000C94C6091F920F920FB60F9211248F936C -:1046D0009F93AF93BF938091F302811113C0809198 -:1046E000F4029091F502A091F602B091F702419682 -:1046F000A11DB11D8093F4029093F502A093F602E0 -:10470000B093F702BF91AF919F918F910F900FBE21 -:104710000F901F90189582E084BD93E095BD9AEFAD -:1047200097BD80936E0008952FB7F8948091F4029E -:104730009091F502A091F602B091F7022FBF089573 -:10474000CF92DF92EF92FF920F931F932FB7F894BF -:104750004091F4025091F5026091F6027091F702D7 -:104760002FBF6A017B01EE24FF248C0120E030E0A2 -:10477000C016D106E206F30610F4415051099A0121 -:10478000281B390BC9011F910F91FF90EF90DF900B -:10479000CF9008951F920F920FB60F9211248F930E -:1047A0009F93AF93BF938091F4029091F502A091F3 -:1047B000F602B091F7020196A11DB11D8093F4029B -:1047C0009093F502A093F602B093F702BF91AF91D8 -:1047D0009F918F910F900FBE0F901F9018950E9480 -:1047E000B314F8942FEF87EA91E62150804090406F -:1047F000E1F700C0000087E090EBDC0180931E032E -:1048000090931F03A0932003B09321039CE088E1C1 -:104810000FB6F894A895809360000FBE9093600047 -:10482000FFCF0E945024811102C00E942C240E94BC -:104830005B248093F2020E94632480931C0387FB15 -:10484000882780F9809316010E945F24682F70E00A -:1048500080E090E00C9458206DEE7EEF80E090E0D8 -:104860000E94772D60E082E090E00E94652D60E07C -:1048700083E090E00E94652D60E084E090E00E947B -:10488000652D60E085E090E00E94652D60E086E0A7 -:1048900090E00E94652D6FEF87E090E00C94652D0D -:1048A00080E090E00E945F2D21E08D3E9E4F09F058 -:1048B00020E0822F089582E090E00C94572D83E051 -:1048C00090E00C94572D84E090E00C94572D682FC5 -:1048D00084E090E00C94652D86E090E00C94572DD8 -:1048E000682F86E090E00C94652D87E090E00C94B2 -:1048F000572D682F87E090E00C94652D8091FA0287 -:1049000080FF0BC060911C0185E0689FB0011124FD -:1049100075956795759567952BC081FF09C0609166 -:104920001C0185E0689FB00111247595679520C032 -:1049300082FF07C060911C0185E0689FB0011124CF -:1049400017C09091FB029923D1F060911B0196173B -:1049500088F720911C0185E0289F90011124929FE7 -:10496000A001939F500D112470E0CA010E943D2DBB -:104970006038710540F46115710539F002C065E0D9 -:1049800070E0862F08958FE7089581E00895809163 -:10499000FA0280FF08C060911A0170E07595679572 -:1049A0007595679521C081FF06C060911A0170E07E -:1049B0007595679519C082FF04C060911A0170E077 -:1049C00010C09091FB029923C1F0609119019617D4 -:1049D000A0F780911A01899FC001112470E00E9404 -:1049E0003D2D6038710528F46115710521F0862F81 -:1049F00008958FE7089581E0089561E070E0F4CFB5 -:104A0000803F21F40E947E24819504C0813F29F4D7 -:104A10000E947E248093FE020895823F21F40E942A -:104A20007E24819504C0833F29F40E947E248093D4 -:104A3000FD020895893F19F40E94C72405C08A3FEA -:104A400031F40E94C72481958093FF0208958B3F23 -:104A500021F40E94C724819504C08C3F29F40E9450 -:104A6000C724809300030895843F21F48091FC02C1 -:104A7000816017C0853F21F48091FC02826011C0E3 -:104A8000863F21F48091FC0284600BC0873F21F4B3 -:104A90008091FC02886005C0883F31F48091FC025F -:104AA00080618093FC0208958D3F21F48091FA0289 -:104AB00081600BC08E3F21F48091FA02826005C0B4 -:104AC0008F3F29F48091FA0284608093FA0208955E -:104AD000803F39F48091FE0287FF6CC01092FE0285 -:104AE00069C0813F29F48091FE021816BCF362C0B0 -:104AF0009091FD02823F29F497FF5CC01092FD0265 -:104B000059C0833F19F41916CCF354C0893F41F4BE -:104B10008091FF0218160CF04DC01092FF024AC09F -:104B20008A3F29F48091FF0287FF44C0F6CF8B3F74 -:104B300039F48091000387FF3DC0109200033AC012 -:104B40008C3F29F4809100031816BCF333C0843FD6 -:104B500021F48091FC028E7F17C0853F21F4809163 -:104B6000FC028D7F11C0863F21F48091FC028B7F77 -:104B70000BC0873F21F48091FC02877F05C0883FEE -:104B800031F48091FC028F7E8093FC0213C08D3F34 -:104B900021F48091FA028E7F0BC08E3F21F4809128 -:104BA000FA028D7F05C08F3F29F48091FA028B7F36 -:104BB0008093FA028091FD0281110EC08091FE0265 -:104BC00081110AC08091FF02811106C0809100030B -:104BD000811102C01092FB0208958CEF92E00E94B6 -:104BE000CD170E9494239093F9028093F8020895C0 -:104BF0001F93CF93DF938091F8029091F9020E9466 -:104C0000A023AC019091FB02992321F020911D017A -:104C100030E006C020911E018AE0289F90011124F7 -:104C20004217530708F486C08091FD02C091FE022E -:104C3000D091FF0210910003811107C0C11176C00D -:104C4000D11174C0111172C075C09F3F19F09F5FE0 -:104C50009093FB02181624F40E947E248093FD0298 -:104C60008091FD0287FF05C00E947E24819580937C -:104C7000FD021C1624F40E947E248093FE02809183 -:104C8000FE0287FF05C00E947E2481958093FE026C -:104C90006091FD02662339F1C091FE02CC2319F127 -:104CA000772767FD7095872F972F0E945F2A23E350 -:104CB00033E343E35FE30E946F2B0E942C2A60934F -:104CC000FD026C2F772767FD7095872F972F0E9425 -:104CD0005F2A23E333E343E35FE30E946F2B0E94E9 -:104CE0002C2A6093FE021D1624F40E94C724809390 -:104CF000FF028091FF0287FF05C00E94C7248195B3 -:104D00008093FF02111624F40E94C72480930003AD -:104D10008091000387FF05C00E94C724819580937E -:104D20000003DF91CF911F910C94ED259F3F09F077 -:104D30008ECF96CFDF91CF911F910895ECEFF2E0E7 -:104D400085E0DF011D928A95E9F71092FB0210922F -:104D5000FA020895833081F128F4813059F08230CD -:104D6000D1F00895853009F449C0B8F1863009F4CE -:104D700056C0089580911E01262F30E0280F311D66 -:104D80002F3F310524F4680F60931E0108958FEFC3 -:104D900080931E01089580911D01262F30E0280F79 -:104DA000311D2F3F310524F4680F60931D010895D4 -:104DB0008FEF80931D01089580911C01262F30E014 -:104DC000280F311D2F3F310524F4680F60931C011B -:104DD00008958FEF80931C01089580911B01262F69 -:104DE00030E0280F311D2F3F310524F4680F609308 -:104DF0001B0108958FEF80931B01089580911A0184 -:104E0000262F30E0280F311D2F3F310524F4680F85 -:104E100060931A0108958FEF80931A01089580918D -:104E20001901262F30E0280F311D2F3F310524F4C2 -:104E3000680F6093190108958FEF80931901089509 -:104E4000833011F128F4813049F0823091F00895D7 -:104E5000853081F120F18630C1F1089580911E01E5 -:104E6000681720F4861B80931E01089510921E017E -:104E7000089580911D01681720F4861B80931D0101 -:104E8000089510921D01089580911C01681720F467 -:104E9000861B80931C01089510921C010895809137 -:104EA0001B01681720F4861B80931B010895109244 -:104EB0001B01089580911A01681720F4861B8093C6 -:104EC0001A01089510921A01089580911901681726 -:104ED00020F4861B809319010895109219010895FA -:104EE0000F931F93873208F048C08E3108F08DC0B1 -:104EF000803109F477C008F5873009F461C068F49F -:104F0000863009F09DC08091F202817F8E7F809370 -:104F1000F20281E08093020394C08B3009F489C0CF -:104F20008E3009F08DC08091F20282FB222720F999 -:104F300091E0922790FB82F95EC0863109F479C036 -:104F400060F4813109F07CC00E94981C9091160198 -:104F500081E08927809316016CC0893109F469C00A -:104F60008B3109F06DC08091F20281FB222720F97C -:104F700091E0922790FB81F93EC0883309F459C033 -:104F800050F4893209F457C0853309F454C087328C -:104F900009F451C055C0833409F44DC028F48A3354 -:104FA00008F44EC0895332C0883409F049C00E94C9 -:104FB000981C0E94D60A0E949D040E94EF2339C0CB -:104FC0009091F202892F8095817080FB90F929F0F1 -:104FD000966098609093F20234C0997F977F909387 -:104FE000F20227C08091F20283FB222720F991E090 -:104FF000922790FB83F98093F2029923D1F080915C -:10500000F20281608093F20214C08D5141E050E0C1 -:1050100060E070E08A019B0104C0000F111F221F95 -:10502000331F8A95D2F7C901B8010E9458200E9407 -:10503000981C81E006C061E070E080E090E0F5CF70 -:1050400080E01F910F91089580E0089580E0089519 -:10505000CF93C82F80910203813069F018F082301D -:10506000C9F184C0E0911701F0911801808182326A -:1050700009F07EC007C0E0911701F091180180810E -:10508000823261F48C2F0E942428811104C08C2F5D -:105090000E9470271DC081E090E01AC08C2F0E94F2 -:1050A0002628811114C0C43179F048F4CB3079F04E -:1050B000C03109F061C082E08093020308C0C932A8 -:1050C00019F0C83321F058C01092020355C081E096 -:1050D000817054C0C93291F120F5C43179F1B0F436 -:1050E000C73009F047C08EE180931E0182E38093B0 -:1050F0001D018AE080931C0184E180931B0188E0FC -:1051000080931A0188E28093190134C0CE51C630D1 -:1051100088F5EC2FF0E0EA54FE4F80818093010384 -:1051200029C0CE34E9F020F4CB3421F56AE013C075 -:10513000C13579F0C235F1F461E00DC08091010311 -:10514000882319F01092010315C081E080930203B7 -:1051500015C061E006C0809101030E94AA260AC022 -:105160006AE0809101030E94202704C0109202038C -:1051700080E004C081E002C080E0AACFCF91089512 -:105180000E945024811102C00E942C240E946C2491 -:1051900080931D0380FF02C0869501C080E00C94BF -:1051A000820380911D03982F9695292F30E023309C -:1051B00031054CF49F5F990F8170892B816080933A -:1051C0001D030E94702480911D0386950C94820318 -:1051D00080911D03982F969591F09158990F8170A9 -:1051E000892B80931D038E7F91E009F490E08091DC -:1051F0001D0390FB80F980931D030E947024809111 -:105200001D0386950C94820380911D03982F909521 -:1052100090FB80F980931D030E94702480911D03F0 -:1052200080FF02C0869501C080E00C9482039091BB -:105230001D03892F86958F5F8F779170843028F4B6 -:10524000880F892B80931D0302C090931D038091CA -:105250001D038E7F91E009F490E080911D0390FB87 -:1052600080F980931D030E94702480911D03869510 -:105270000C94820320911D03922F96958927982FD5 -:10528000990F822F8170892B80931D038E7F91E06F -:1052900009F490E080911D0390FB80F980931D0339 -:1052A0000E94702480911D0386950C948203809146 -:1052B0001D03869508955058BB27AA270ED0D1C14B -:1052C000C2D130F0C7D120F031F49F3F11F41EF469 -:1052D000B7C10EF4E095E7FB9FC1E92FD3D180F36E -:1052E000BA17620773078407950718F071F49EF5E3 -:1052F000EBC10EF4E0950B2EBA2FA02D0B01B901D6 -:1053000090010C01CA01A0011124FF27591B99F03B -:10531000593F50F4503E68F11A16F040A22F232F47 -:10532000342F4427585FF3CF469537952795A79597 -:10533000F0405395C9F77EF41F16BA0B620B730B3E -:10534000840BBAF09150A1F0FF0FBB1F661F771FAF -:10535000881FC2F70EC0BA0F621F731F841F48F464 -:10536000879577956795B795F7959E3F08F0B3CFEA -:105370009395880F08F09927EE0F979587950895D4 -:1053800027D108F481E008950CD06BC163D140F0BF -:105390005AD130F021F45F3F19F03EC1511195C14F -:1053A0004FC170D198F39923C9F35523B1F3951BDD -:1053B000550BBB27AA2762177307840738F09F5F36 -:1053C0005F4F220F331F441FAA1FA9F333D00E2EA5 -:1053D0003AF0E0E830D091505040E695001CCAF712 -:1053E00029D0FE2F27D0660F771F881FBB1F2617D7 -:1053F00037074807AB07B0E809F0BB0B802DBF01AA -:10540000FF2793585F4F2AF09E3F510568F004C173 -:105410005CC15F3FECF3983EDCF38695779567952A -:10542000B795F7959F5FC9F7880F911D969587955A -:1054300097F90895E1E0660F771F881FBB1F621779 -:1054400073078407BA0720F0621B730B840BBA0B37 -:10545000EE1F88F7E095089504D06894B11135C126 -:10546000089518D188F09F5790F0B92F9927B75118 -:10547000A0F0D1F0660F771F881F991F1AF0BA9518 -:10548000C9F712C0B13081F01FD1B1E008951CC13D -:10549000672F782F8827B85F39F0B93FCCF386950E -:1054A00077956795B395D9F73EF49095809570956B -:1054B00061957F4F8F4F9F4F0895E89409C097FBE8 -:1054C0003EF490958095709561957F4F8F4F9F4FDB -:1054D0009923A9F0F92F96E9BB279395F69587951F -:1054E00077956795B795F111F8CFFAF4BB0F11F4E2 -:1054F00060FF1BC06F5F7F4F8F4F9F4F16C0882389 -:1055000011F096E911C0772321F09EE8872F762FBE -:1055100005C0662371F096E8862F70E060E02AF0FF -:105520009A95660F771F881FDAF7880F96958795EB -:1055300097F9089588D018F011F08CD038F480C015 -:10554000C4C0E92F9FD0B0F35523C9F3E7FB62171E -:10555000730784079507A8F199F3E92FFF2788239C -:105560002AF03197660F771F881FDAF7952F552796 -:10557000442332F091505040220F331F441FD2F782 -:10558000BB27E91BF50B621B730B840BB109C1F23E -:1055900022F4620F731F841FB11D31972AF0660F2A -:1055A000771F881FBB1FEFCF915050405AF041F03A -:1055B000882332F0660F771F881F91505040C1F743 -:1055C000939530C08695779567959F5FD9F7F8CF0B -:1055D000990F0008550FAA0BE0E8FEEF1616170604 -:1055E000E807F907C0F012161306E407F50798F06C -:1055F000621B730B840B950B39F40A2661F0232B85 -:10560000242B252B21F408950A2609F4A140A69500 -:105610008FEF811D811D089597F99F6780E870E0E5 -:1056200060E008959F3F31F0915020F48795779581 -:105630006795B795880F911D9695879597F9089569 -:105640009FEF80EC089500240A941616170618069A -:105650000906089500240A94121613061406050676 -:105660000895092E0394000C11F4882352F0BB0F07 -:1056700040F4BF2B11F460FF04C06F5F7F4F8F4F6A -:105680009F4F089557FD9058440F551F59F05F3FA5 -:1056900071F04795880F97FB991F61F09F3F79F054 -:1056A00087950895121613061406551FF2CF4695D6 -:1056B000F1DF08C0161617061806991FF1CF869558 -:1056C0007105610508940895E894BB27662777273C -:1056D000CB0197F908957CDF08F48FEF08950BD084 -:1056E000C0CFB1DF28F0B6DF18F0952309F094CFD2 -:1056F000A7CF1124EACFC6DFA0F3959FD1F3950F72 -:1057000050E0551F629FF001729FBB27F00DB11D45 -:10571000639FAA27F00DB11DAA1F649F6627B00DD5 -:10572000A11D661F829F2227B00DA11D621F739FBE -:10573000B00DA11D621F839FA00D611D221F749FCC -:105740003327A00D611D231F849F600D211D822F13 -:10575000762F6A2F11249F5750408AF0E1F088235A -:105760004AF0EE0FFF1FBB1F661F771F881F915067 -:105770005040A9F79E3F510570F04ECFA6CF5F3F36 -:10578000ECF3983EDCF3869577956795B795F7959A -:10579000E7959F5FC1F7FE2B880F911D9695879522 -:1057A00097F90895FA01EE0FFF1F30962105310594 -:1057B00099F16115710561F48038BFE39B0749F1E8 -:1057C00068949038810561F08038BFEF9B0741F005 -:1057D000992342F5FF3FE1053105210511F1E894D8 -:1057E0000894E795D901AA2329F4AB2FBE2FF85FBF -:1057F000D0F310C0FF5F70F4A695E0F7F73950F0D2 -:1058000019F0FF3A38F49F779F930CD00F9007FC64 -:10581000905808953EF014CF60E070E080E89FE378 -:1058200008954FE79F775F934F933F932F939ED0B9 -:105830002F913F914F915F9152DF05C019F40EF007 -:10584000EBCE42CFFDCE26DFC8F39638C0F707F87F -:105850000F92E8942BE33AEA48EB5FE74EDF0F92B2 -:105860000F920F924DB75EB70F92C0D0EAE0F1E011 -:1058700016D04F915F91EF91FF91E595EE1FFF1FBD -:1058800049F0FE57E0684427EE0F441FFA95E1F710 -:105890004195550B32D00F9007FE26C00895DF9337 -:1058A000CF931F930F93FF92EF92DF927B018C01B6 -:1058B000689405C0DA2EEF011EDFFE01E894A59181 -:1058C0002591359145915591AEF3EF0106DDFE012D -:1058D0009701A801DA9479F7DF90EF90FF900F918C -:1058E0001F91CF91DF9108959B01AC0160E070E0C2 -:1058F00080E89FE349CD90CE95CECCDEE8F39923A6 -:10590000D9F3940F511DBBF39150504094F059F0CE -:10591000882332F0660F771F881F91505040C1F7DF -:105920009E3F510544F7880F911D9695879597F9ED -:1059300008955F3FACF0983E9CF0BB278695779525 -:105940006795B79508F4B1609395C1F7BB0F58F709 -:1059500011F460FFE8CF6F5F7F4F8F4F9F4FE3CF12 -:10596000B4CE0EF05FCE6CCE689456CE93DEC8F304 -:105970009923D1F3C6F3DF93CF931F930F93FF9235 -:10598000C92FDD2788232AF02197660F771F881FEC -:10599000DAF720E030E040E85FEB9FE3883920F061 -:1059A000803E30F021968F7787DCE2E3F1E003C0A0 -:1059B00083DCEFE5F1E073DF8B01BE01EC01FB2E30 -:1059C0006F5771097595771F880B990B78DD28E162 -:1059D00032E741E35FE38FDEAF2D9801AE01FF9028 -:1059E0000F911F91CF91DF9178DC3BCEFA01DC0162 -:1059F000AA0FBB1F9B01AC01BF5728F422273327F6 -:105A0000442750781FC0B75188F4AB2F0024469527 -:105A100037952795011CA395D2F3002069F0220F3A -:105A2000331F441FB395DAF30DD045CC61307105B7 -:105A3000A0E88A07B94630F49B01AC0166277727B6 -:105A400088279078309621F02083318342835383D6 -:105A50000895AA1BBB1B51E107C0AA1FBB1FA617B5 -:105A6000B70710F0A61BB70B881F991F5A95A9F707 -:105A700080959095BC01CD01089597FB072E16F4F3 -:105A8000009407D077FD09D00E94292D07FC05D08E -:105A90003EF4909581959F4F0895709561957F4F45 -:105AA0000895EE0FFF1F0590F491E02D0994F999E8 -:105AB000FECF92BD81BDF89A992780B50895A8E1DF -:105AC000B0E042E050E00C947F2D262FF999FECFF4 -:105AD00092BD81BDF89A019700B4021639F01FBA41 -:105AE00020BD0FB6F894FA9AF99A0FBE0895019660 -:105AF000272F0E94662D0C94652DDC01CB01FC0143 -:105B0000F999FECF06C0F2BDE1BDF89A319600B416 -:0E5B10000D9241505040B8F70895F894FFCF21 -:105B1E00640007000CFF0000003F64BA1048112516 -:105B2E0011F110BD100101DF022808140A321E0007 -:105B3E0002040507090B0C0E1011131517181A1C69 -:105B4E001D1F2123242628292B2D2F3032343537A3 -:105B5E00393B1F0F03764F5F6F7F496943790959B0 -:105B6E0053633149803F5D8B803FF8BF803FCAE170 -:105B7E00803F73ED803FCAE1803FF8BF803F5D8B71 -:105B8E00803F3149803F0000803FF16D7F3F75EAD5 -:105B9E007E3F4C827E3F833F7E3F84287E3F833F05 -:105BAE007E3F4C827E3F75EA7E3FF16D7F3F000067 -:105BBE00803F3F4D36390F06C2058C055305E6046E -:105BCE00FF04180531050102030405060708090044 -:00000001FF diff --git a/keyboard/planck/keymaps/lukas/compiled.hex b/keyboard/planck/keymaps/lukas/compiled.hex deleted file mode 100644 index 2cd3bc5228..0000000000 --- a/keyboard/planck/keymaps/lukas/compiled.hex +++ /dev/null @@ -1,1446 +0,0 @@ -:100000000C9461020C94A5020C94A5020C94A50218 -:100010000C94A5020C94A5020C94A5020C94A502C4 -:100020000C94A5020C94A5020C9467140C94391539 -:100030000C949B220C94A5020C94A5020C94A5028E -:100040000C94A5020C9407030C94A5020C94A50231 -:100050000C94A5020C9403230C94A5020C94A50205 -:100060000C94A5020C94A5020C94A5020C94A50274 -:100070000C94A5020C94A5020C94A5020C94A50264 -:100080000C94DC0A0C94A5020C94A5020C94A50215 -:100090000C94A5020C94A5020C94A5020C94A50244 -:1000A0000C94A5020C94A5020C94A502A615C815E3 -:1000B000B616C815B6160D163016B616851698164D -:1000C00082198219B119B119F019101A661B661B31 -:1000D0001B1A661BCB1ACB1A321B3B1B661B601B01 -:1000E000D81AD81AD81AD81AD81AD81AD81AD81A80 -:1000F000D81AD81AD81AD81AD81AD81AD81AD81A70 -:10010000E81AF61AFD1A041B0E1B07634236B79B4A -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000002B001400ED -:1001D0001A000800150017001C0018000C0012007F -:1001E00013002A00290004001600070009000A0075 -:1001F0000B000D000E000F0033003400E1001D0065 -:100200001B00060019000500110010003600370021 -:1002100038002800E000E200E300013001522C0029 -:100220002C0002525000510052004F0035021E02B5 -:100230001F0220022102220223022402250226029A -:1002400027022A0001000100010001000100010055 -:1002500001002D022E022F023002310201000100A6 -:1002600001000100010001000100010001002F0058 -:100270003000010001000100010001000100010047 -:1002800001000100010001000100010035001E0015 -:100290001F0020002100220023002400250026004A -:1002A00027004C00010001000100010001000100D5 -:1002B00001002D002E002F00300031000100010050 -:1002C0000100010001000100010001000100010026 -:1002D0000100010001000100010001000100010016 -:1002E0000100010001000100010001002803540089 -:1002F00068006500200050006C0061006E00630023 -:100300006B0020004B006500790062006F00610007 -:100310007200640000002C034F007200740068003B -:100320006F006C0069006E006500610072002000C3 -:100330004B006500790062006F006100720064008C -:10034000730000000403090409026D00040100A009 -:10035000FA09040000010301010009211101000153 -:10036000223F000705810308000A09040100010378 -:10037000010200092111010001224D00070582033D -:1003800008000A090402000103000000092111010C -:1003900000012236000705830308000A0904030050 -:1003A00001030000000921110100012239000705A5 -:1003B00084031000011201100100000008EDFE602E -:1003C0006001000102000105010906A101050719EC -:1003D000E029E71500250195087501810205081936 -:1003E0000129059505750191029501750391010596 -:1003F000071900297715002501957875018102C03C -:1004000005010980A101850216010026B7001A0125 -:10041000002AB700751095018100C0050C0901A1E3 -:10042000018503160100269C021A01002A9C027510 -:100430001095018100C005010902A1010901A10077 -:100440000509190129051500250195057501810288 -:100450009501750381010501093009311581257F59 -:1004600095027508810609381581257F9501750863 -:100470008106050C0A38021581257F9501750881D2 -:1004800006C0C005010906A101050719E029E71505 -:100490000025019508750181029501750881010506 -:1004A00008190129059505750191029501750391BA -:1004B000010507190029FF150025FF95067508811C -:1004C00000C011241FBECFEFDAE0DEBFCDBF04B6FF -:1004D00003FE24C080911E0390911F03A09120036E -:1004E000B09121038730904BA740B04BB9F41092E4 -:1004F0001E0310921F03109220031092210314BEBA -:1005000084B7877F84BF88E10FB6F894809360003A -:10051000109260000FBEE0E0F8E3099511E0A0E062 -:10052000B1E0E0E9F9E502C005900D92A03CB10709 -:10053000D9F713E0A0ECB1E001C01D92AE31B107D4 -:10054000E1F70E94AD110C94C62C0C9400000895A4 -:10055000089581E0089508950C94A8020C94A902CE -:100560000C94AB020E94902823E030E0281B310954 -:10057000220F2093C4010895282F2F988091800086 -:10058000211108C0877F8093800010928D00109207 -:100590008C001BC0886080938000233019F48FEF9B -:1005A0009FEF0FC083E090E0821B9109880F991F95 -:1005B0002FEF3FEFA90102C0569547958A95E2F7C4 -:1005C000CA0190938D0080938C000C94B2020E941B -:1005D000B20284E08093C3011092C0010895279A6B -:1005E0002F988FEF9FEF90938700809386008AE08B -:1005F0008093800089E1809381000E94F9270C9408 -:10060000E7020E94EF026E9A769A0C94A7021F925C -:100610000F920FB60F9211242F933F938F939F93B6 -:10062000EF93FF93E091C101F091C201CF010196D8 -:100630009093C2018093C1010090C30102C0F6955E -:10064000E7950A94E2F7EF738091C001823019F4C4 -:10065000E03251F404C0813039F4EF3329F4809151 -:100660006F008D7F80936F00F0E0E457FE4FE491C0 -:1006700021E031E0E29FC001E39F900D1124009042 -:10068000C40102C0969587950A94E2F790938D0075 -:1006900080938C00FF91EF919F918F913F912F91CB -:1006A0000F900FBE0F901F901895662319F06130C0 -:1006B00079F01FC0FC018281882331F085EE0E9411 -:1006C00026180E94502815C085EE0E94EE1811C011 -:1006D000FC018281882339F083EE0E94261882E093 -:1006E0000E940E2006C083EE0E94EE1882E00E9457 -:1006F0002F2080E090E0089581E008950C947C0321 -:1007000008950C94010380911502882309F448C0D0 -:100710008091D1019091D201009779F40E94CD226D -:100720009093D2018093D1018091D30190E0009702 -:1007300071F48091D40190E00AC00E94D9222091E6 -:100740000001309101012817390740F329C00197B2 -:10075000880F991F880F991FFC01EB52FE4F608193 -:100760007181828193810E94420AE091D30184E0E9 -:10077000E89FF0011124EB52FE4F6081718182816C -:1007800093814FE050E00E94FA0D8091D30190E0F8 -:1007900001966091D40170E00E94762C8093D30181 -:1007A0000C94AC02109217020C940F0A089508954D -:1007B00081E0809317020C94D703089508958F92D7 -:1007C0009F92AF92BF92EF92FF920F931F93CF939E -:1007D000DF93CDB7DEB7A3970FB6F894DEBF0FBE99 -:1007E000CDBF7C01FC0100811181C8010E94CA209B -:1007F000B8010E94E1058C01B7010E947E038823A5 -:1008000009F4CCC10032F0E51F0741F4F701828101 -:10081000882309F458C00E945E0EC0C10132F0E581 -:100820001F0741F4F7018281882309F44CC00E941C -:10083000670EB4C10232F0E51F0751F4F70182815F -:10084000882309F440C00E945A0E8111F0CFE3CFF3 -:100850000332F0E51F0739F4F7018281882399F10B -:100860000E94D8039BC10432F0E51F0739F4F70159 -:100870008281882341F10E94D20390C10532F0E5C4 -:100880001F0749F4F70182818823E9F0809117025C -:100890008111F1CFE5CF0632F0E51F0739F4F701FA -:1008A0008281882381F00E946E0E0AC00732F0E533 -:1008B0001F0749F4F7018281882329F00E94790EED -:1008C0000E94DE036BC180911702811105C0F70100 -:1008D00082818111CFC018C1003E110579F4F70162 -:1008E0008281882309F44DC00E940F0A81E0809321 -:1008F0001602109215021092D40150C1023E110549 -:1009000059F4F70182818823E1F10E940F0A1092C5 -:1009100016021092150242C1033E110591F4F7012F -:100920008281882371F10E940F0A1092160281E0E1 -:10093000809315021092D3011092D2011092D1012E -:100940002DC10235110559F4F7018281882309F47C -:1009500025C180910001909101010A970DC00135D8 -:10096000110579F4F7018281882309F417C1809178 -:100970000001909101010A9690930101809300017A -:100980000DC14091040183E2EFE1F1E0DE01119637 -:1009900001900D928A95E1F7F701808121E030E026 -:1009A0002C0F3D1F280F311DC901209102013091EC -:1009B0000301FC01E20FF31F6081772767FD70954B -:1009C000640F711D882777FD8095982F0E949829C4 -:1009D00020E030E040E451E40E94FD284B015C013E -:1009E000F701218184E090E0821B9109BC018827F6 -:1009F00077FD8095982F0E9498299B01AC01C50135 -:100A0000B4010E9495289B01AC0160E070E080E099 -:100A100090E40E940B2B20E030E04CED50E40E946B -:100A2000A82A4B015C01F70182818823D1F04FE0B5 -:100A300050E0C501B4010E94FA0D8091160288238E -:100A4000A1F08091D40124E0829FF0011124EB52A7 -:100A5000FE4F80829182A282B3828F5F8093D40105 -:100A600004C0C501B4010E94420A0F3F110508F0FD -:100A70002ECF94C08091D00181111FC0043130E588 -:100A8000130709F051C00E94800381E08093D001D8 -:100A90000E94CD229093CF018093CE011092C70186 -:100AA0001092C9011092C8011092CB011092CA0194 -:100AB0001092CD011092CC0171C08091CE01909125 -:100AC000CF010E94D922883C910570F48091C70122 -:100AD000E82FF0E0EE0FFF1FE853FE4F1183008375 -:100AE0008F5F8093C7015AC0043880E5180721F052 -:100AF0000538104501F13AC0F7018281882341F0A1 -:100B00001092C50182E01EC0043830E5130759F584 -:100B10008091C501811106C086E20E94261886E2F6 -:100B20000E94EE1882E01CC00438F0E51F0741F374 -:100B300005381045D9F4F7018281882331F01092ED -:100B4000C60180E20E943D1929C08091C601811131 -:100B500006C087E20E94261887E20E94EE1880E213 -:100B60000E9444191BC00538104529F381E0809389 -:100B7000C5018093C601C701A3960FB6F894DEBFE6 -:100B80000FBECDBFDF91CF911F910F91FF90EF90DE -:100B9000BF90AF909F908F900C94AE0280E0A39690 -:100BA0000FB6F894DEBF0FBECDBFDF91CF911F917E -:100BB0000F91FF90EF90BF90AF909F908F9008950E -:100BC00008959CE0799FF001112490E3899FE00D46 -:100BD000F11D1124E60FF11DEE0FFF1FE453FE4F30 -:100BE000859194910895880F991FFC01E45BFF4F54 -:100BF000859194910895880F991FFC01E453FE4F4D -:100C00008591949108950F931F93CF93DF93EC01F7 -:100C1000811521E39207A0F5C11580E3D80708F0FC -:100C2000D7C0C83ED105D8F4C03ED10508F007C2F0 -:100C3000C83AD10578F4C53AD10508F06AC0C13088 -:100C4000D10509F463C008F4F7C1C430D10508F038 -:100C5000F6C1F2C1CB3BD10508F466C0EDC1C115A8 -:100C600090E2D90708F0AFC0C11521E0D20708F023 -:100C7000E6C1C03FD10508F4DFC18E0110651FC277 -:100C8000C03880E5D80700F5C03790E5D90708F0EF -:100C9000A3C0C11520E5D20709F4ACC050F4CE01C1 -:100CA000905480319F4008F0C7C1DF708E01106AF8 -:100CB00006C2C13080E5D80709F4AEC0C43190E562 -:100CC000D90708F4AFC0B8C1C33820E5D20709F48A -:100CD0008EC050F4C13890E5D90709F482C008F0FD -:100CE00083C000E011EDEBC1C03181E5D80708F405 -:100CF000A3C1C11597E5D90708F436C1CE019057B5 -:100D00008115904108F098C1DF7093C101E010E0B7 -:100D1000D6C1C53AD10509F494C1C63AD10509F046 -:100D200093C102E810E4CBC1C83AD10509F48FC1E0 -:100D3000C93AD10509F48EC1CA3AD10509F48DC169 -:100D4000CB3AD10509F48CC1CC3AD10509F48BC159 -:100D5000CD3AD10509F48AC1C03BD10509F489C156 -:100D6000CE3AD10509F488C1CF3AD10509F487C13B -:100D7000C13BD10509F486C1C23BD10509F485C147 -:100D8000C33BD10509F484C1C43BD10509F483C137 -:100D9000C53BD10509F482C1C63BD10509F481C127 -:100DA000C73BD10509F480C1C83BD10509F47FC117 -:100DB000C93BD10509F47EC1CA3BD10509F47DC107 -:100DC00000E014E47CC1CE019F700E94FB0578C155 -:100DD000DD278E01106C73C1CF70DD278E01146D7D -:100DE0006EC100E010ED6BC100E012ED68C100E0E3 -:100DF00013ED65C10E94D11B0E940F0A0E94D60309 -:100E00008FEF94E32CE0815090402040E1F700C048 -:100E100000000E94282353C18091F20281608093D8 -:100E2000F2024DC10E948923811102C00E946523F4 -:100E30000E949C2390E090931D0380931C03C2307A -:100E400080E5D80721F480911C03816086C0C430FE -:100E500090E5D90721F480911C0382607EC0C630E2 -:100E600020E5D20721F480911C03846076C0C8304D -:100E700080E5D80719F480911C0327C0CA3090E59B -:100E8000D90721F480911C03806167C0CC3020E534 -:100E9000D20721F480911C0380625FC0CE3080E5D0 -:100EA000D80721F480911C03806457C0C03190E5BD -:100EB000D90721F480911C0380684FC0C23120E51E -:100EC000D20729F480911C038460886046C0C33037 -:100ED00080E5D80721F480911C038E7F3EC0C53089 -:100EE00090E5D90721F480911C038D7F36C0C7306F -:100EF00020E5D20721F480911C038B7F2EC0C930DE -:100F000080E5D80719F480911C0326C0CB3090E50A -:100F1000D90721F480911C038F7E1FC0CD3020E5BE -:100F2000D20721F480911C038F7D17C0CF3080E55C -:100F3000D80721F480911C038F7B0FC0C13190E54D -:100F4000D90721F480911C038F7707C0C331D045A6 -:100F500031F480911C038B7F877F80931C038091E9 -:100F60001C030E94A023ABC08D2F99278F70992757 -:100F700081309105D9F49E012370332702C0880F78 -:100F8000991F2A95E2F79C688E0144E0000F111F1B -:100F90004A95E1F700271370802B912B53E0CC0F7B -:100FA000DD1F5A95E1F7C076DD272FC0823091050D -:100FB00031F4DC2FCC278E01016F106A80C08330A2 -:100FC000910569F4CE018370992701E010E002C019 -:100FD000000F111F8A95E2F7C8019C680FC084308A -:100FE0009105B9F4CE018370992701E010E002C0A9 -:100FF000000F111F8A95E2F7C8019A6823E0CC0F11 -:10100000DD1F2A95E1F7C07ED7708C010C2B1D2BBC -:1010100056C08530910531F4DC2FCC278E01046F4A -:10102000106A4DC0069709F04AC0CF71DD27DC2F4A -:10103000CC278E01106243C000E010E040C08E015A -:101040003EC001E810E43BC003E810E438C002EE03 -:1010500014E435C009EE14E432C00AEE14E42FC0E3 -:1010600005EB14E42CC006EB14E429C007EB14E4F0 -:1010700026C00CEC14E423C00DEC14E420C003E8FB -:1010800015E41DC00AE815E41AC002E915E417C00A -:1010900004E915E414C001E216E411C003E216E409 -:1010A0000EC004E216E40BC005E216E408C006E236 -:1010B00016E405C007E216E402C00AE216E4C8011D -:1010C000DF91CF911F910F9108959CE0799FF001DE -:1010D000112490E3899FE00DF11D1124E60FF11D0D -:1010E000EE0FFF1FE453FE4F85919491803E9105D2 -:1010F000E0F4803C910558F58133910509F46FC007 -:1011000048F48932910509F463C08A32910509F4E3 -:101110006DC072C089339105E9F082389105D1F034 -:101120008533910509F44DC067C0833E910581F177 -:1011300038F4803E9105B9F0823E9105D9F05CC04B -:10114000863E910561F1873E9105A1F155C00E944F -:10115000F305089520911C0320FD02C021FF4CC01F -:1011600080EE90E049C080911C0380FFF9CF89E3B5 -:1011700090E042C080911C0382FF0EC080911C034E -:1011800084FF03C080E090E037C083EE90E034C07D -:1011900080911C0382FFF2CF82EE90E02DC08091FF -:1011A0001C0383FF0BC080911C0384FDEBCF87EEF3 -:1011B00090E022C080911C0383FFF5CF86EE90E083 -:1011C0001BC080911C0385FF07C089E290E014C01A -:1011D00080911C0385FFF9CF85E390E00DC08091DD -:1011E0001C0386FF07C08AE290E006C080911C03C2 -:1011F00086FFF9CF81E390E00E94030608950C94E6 -:10120000B002E82FF0E0E25BFE4F8081E82FEF7044 -:10121000F0E082958F7021E030E0A90102C0440F18 -:10122000551F8A95E2F740A308950F931F93CF931C -:10123000DF9385B7806885BF85B7806885BFC3E0C9 -:10124000D0E001E010E0FE01E25BFE4F8081E82F7C -:10125000EF70F0E021A182958F70A80102C0440FC9 -:10126000551F8A95E2F7CA01822B81A38C2F0E9419 -:101270000109219740F78BE090E061E070E0FC010C -:10128000EE5BFE4F2081E22FEF70F0E042A122954D -:101290002F70DB0102C0AA0FBB1F2A95E2F79D0148 -:1012A000242B22A3019758F7DF91CF911F910F9123 -:1012B0000C948103EF92FF920F931F93CF93DF93D0 -:1012C00000E212E0C3E0EE24E394F12CD5E08C2F91 -:1012D0000E9401098BE090E040E050E0FC01EE5BF1 -:1012E000FE4F6081E62FEF70F0E020A130E06295C4 -:1012F0006F7002C0359527956A95E2F720FD09C009 -:101300009701082E02C0220F331F0A94E2F7422BE6 -:10131000532B019718F7F801929182918F0184174E -:10132000950721F051834083D09305018C2F0E94B3 -:101330000109C15060F68091050187FD2CC08150E4 -:10134000809305018F3F39F08FE99FE00197F1F716 -:1013500000C0000020C080911E0290911F02909357 -:1013600027028093260280911C0290911D02909387 -:1013700025028093240280911A0290911B0290937F -:101380002302809322028091180290911902909377 -:101390002102809320020E94830381E0DF91CF919C -:1013A0001F910F91FF90EF900895E82FF0E0EE0F5E -:1013B000FF1FE05EFD4F80819181089508950F9396 -:1013C0001F93CF9308E212E0C0E0F801929182915E -:1013D0008F010E944522C80FF2E000321F07A9F7D3 -:1013E0008C2FCF911F910F9108950E948923811115 -:1013F00002C00E9465230E94AE23809307033E9A99 -:10140000809171008D7F8093710082E080939000C5 -:101410008AE18093910081E080932A02089580916F -:101420002A02811102C00E94F50910927A021092DC -:101430007902809171008D7F80937100809190007E -:101440008F738093900010923C0210923B02109296 -:10145000730210927402109275021092760210922A -:10146000720210927102E1E5F2E0A1E4B2E01192A1 -:101470001192119211921D921D9282E0E137F807AC -:10148000B1F70895CF92DF92EF92FF920F931F93DF -:10149000CF93DF9320913B02222309F484C06B0198 -:1014A0007C0180912A02811102C00E94F50901E7A6 -:1014B00012E0C7E0D0E0A7019601F8019291829175 -:1014C000729162918F010E94F928811131C0FE0151 -:1014D000EE0FFF1FEE0FFF1FEF5AFD4F108211821C -:1014E00012821382DE01AA0FBB1FAF5BBD4F1196A4 -:1014F0001C921E92C730D105E9F021964481558196 -:10150000668177814083518362837383148215825D -:101510001682178212968D919C91139711969C9327 -:101520008E9313961C921E92129734961296E2CFC7 -:10153000219708F68091790290917A02019797FDA0 -:1015400005C090937A028093790204C010927A02C7 -:10155000109279028091790290917A02209177021B -:10156000309178022817390724F0109278021092EF -:101570007702892BC1F4809171008D7F8093710077 -:10158000809190008F73809390001092730210925C -:1015900074021092750210927602109272021092EA -:1015A000710210923B02DF91CF911F910F91FF903A -:1015B000EF90DF90CF9008951F920F920FB60F9289 -:1015C00011244F925F926F927F928F929F92AF926F -:1015D000BF92CF92DF92EF92FF922F933F934F9360 -:1015E0005F936F937F938F939F93AF93BF93CF93AB -:1015F000DF93EF93FF9380913B02882309F49BC113 -:10160000C0917902D0917A021C161D060CF093C18C -:1016100040902B0250902C0260902D0270902E0270 -:1016200020E030E0A901C301B2010E94A42A1816EB -:101630000CF065C0C130D10509F452C08091770229 -:1016400090917802BE010E94762C7C0190937802E2 -:101650008093770280903D0290903E02A0903F02DE -:10166000B090400220E030E040E85FE3C501B40103 -:101670000E94952860933D0270933E0280933F0242 -:1016800090934002F701EE0FFF1FEE0FFF1FEF5A7E -:10169000FD4FA301920160817181828193810E943B -:1016A000FD2820E030E040E05EE30E94A82A9B0194 -:1016B000AC01C501B4010E94A42A18168CF4C7011C -:1016C0000196BE010E94762C909378028093770257 -:1016D00010923D0210923E0210923F021092400280 -:1016E000E0917702F0917802EE0FFF1FEE0FFF1FDF -:1016F000EF5AFD4F6081718182819381D0C0C0908B -:101700007302D0907402E0907502F090760220E0AF -:1017100030E0A901C701B6010E94F928219788236A -:1017200009F4A2C0FE01EE0FFF1FEE0FFF1FEF5ADC -:10173000FD4F80809180A280B380A5019401C701F4 -:10174000B6010E94F92887FF31C0A501940160E02D -:1017500070E08CED93EC0E94FD2820E030E040E446 -:1017600051E40E94FD2820E030E040E05FE30E9469 -:10177000A82A9B01AC0160E070E080E090E40E9448 -:101780000B2B9B01AC01C501B4010E94A82A9B014F -:10179000AC01C701B6010E94F92887FF07C0A70165 -:1017A000960160E070E08CED93E439C0A5019401EE -:1017B000C701B6010E94A42A18160CF055C0A50155 -:1017C000940160E070E08CED93E40E94FD2820E03D -:1017D00030E040E451E40E94FD2820E030E040E0A9 -:1017E0005FE30E94A82A9B01AC0160E070E080E00A -:1017F00090E40E940B2B9B01AC01C501B4010E9437 -:10180000A82A9B01AC01C701B6010E94A42A1816A0 -:101810005CF5A701960160E070E08CED93EC0E940E -:10182000FD2820E030E040E451E40E94FD2820E063 -:1018300030E040E05FE30E94A82A9B01AC0160E039 -:1018400070E080E090E40E940B2B9B01AC01C7018B -:10185000B6010E94A82A6093730270937402809369 -:1018600075029093760213C0FE01EE0FFF1FEE0F7C -:10187000FF1FEF5AFD4F80819181A281B381809338 -:10188000730290937402A0937502B09376026091F4 -:10189000730270917402809175029091760220918A -:1018A0002802309129022F3F4FEF340731F02F5F8C -:1018B0003F4F30932902209328020E94840E6B012F -:1018C0007C0120E034E244EF51E40E94F92887FFD4 -:1018D00008C086EFC82E88E2D82E84EFE82E81E477 -:1018E000F82E20E030E040E051E4C701B6010E944C -:1018F000A82A9B01AC0160E074E284E79BE40E94AB -:10190000FD286B017C010E946A2970939700609307 -:1019100096002091060130910701409108015091F5 -:101920000901C701B6010E94A82A0E946A29709382 -:1019300099006093980080913C02882309F433C198 -:10194000C0903702D0903802E0903902F0903A020D -:1019500020E030E0A901C701B6010E94A42A1816B0 -:10196000D4F580912802909129028F3F2FEF9207A2 -:1019700029F001969093290280932802C701B601AD -:101980000E94840E20E030E040E051E40E94A82A4A -:101990009B01AC0160E074E284E79BE40E94FD28B7 -:1019A0006B017C010E946A297093970060939600F6 -:1019B00020910601309107014091080150910901E1 -:1019C000C701B6010E94A82A0E946A297093990053 -:1019D0006093980008C010929700109296001092A1 -:1019E00099001092980060913102709132026F5FFD -:1019F0007F4F7093320260933102209196003091B4 -:101A0000970080E090E0232BF1F0C0919600D091F8 -:101A100097000E9496296B017C01BE0180E090E056 -:101A20000E9496299B01AC016091330270913402AF -:101A300080913502909136020E94FD2820E03FEF10 -:101A40004FE757E410C00E9496296B017C0120E00B -:101A500030EE4FEF54E46091330270913402809184 -:101A60003502909136020E94A82A9B01AC01C70161 -:101A7000B6010E94A42A87FD96C080912F028F5F35 -:101A800080932F0290E0209103033091040382178A -:101A90009307A0F080910E03882319F010922F0273 -:101AA0000DC0809171008D7F8093710080919000B6 -:101AB0008F738093900010923C027DC08091300221 -:101AC000C0912F02811128C0C0900803D090090353 -:101AD000E0900A03F0900B0320E030E0A901C70179 -:101AE000B6010E94A42A1816BCF481E0809330024B -:101AF00010923702109238021092390210923A0274 -:101B0000C0923302D0923402E0923502F092360253 -:101B1000C150C0932F0243C010923002109229028C -:101B200010922802E0910503F091060348E0C49F5B -:101B3000E00DF11D112480819181A281B3818093F8 -:101B4000370290933802A0933902B0933A0220E012 -:101B500030E040E85EE364817581868197810E9470 -:101B6000A82A6B017C0180910A01682F70E080E057 -:101B700090E00E94962920E030E048EC52E40E9478 -:101B8000FD289B01AC01C701B6010E94A82A609301 -:101B90003302709334028093350290933602109290 -:101BA0003202109231028091070380FD04C010922E -:101BB0003C0210923B02FF91EF91DF91CF91BF91D8 -:101BC000AF919F918F917F916F915F914F913F91D5 -:101BD0002F91FF90EF90DF90CF90BF90AF909F90AC -:101BE0008F907F906F905F904F900F900FBE0F90EF -:101BF0001F901895CF92DF92EF92FF92CF93DF93D1 -:101C00006B017C01EA0180912A02811102C00E94CD -:101C1000F5098091070380FF46C080917902909179 -:101C20007A0208970CF03FC0809171008D7F8093FD -:101C3000710080913C0281110E940F0A81E0809323 -:101C40003B02109229021092280220E030E0A90104 -:101C5000C701B6010E94A42A1816DCF4809179020B -:101C600090917A02FC01EE0FFF1FEE0FFF1FEF5A5B -:101C7000FD4FC082D182E282F382FC01EE0FFF1F92 -:101C8000EF5BFD4FD183C083019690937A028093DE -:101C90007902809171008260809371008091900040 -:101CA000806880939000DF91CF91FF90EF90DF905C -:101CB000CF90089580910703817008958091070364 -:101CC0008160809307030E94B2230C94DD0380910E -:101CD00007038E7F809307030C94B22380917B02CD -:101CE00090E0019666E070E00E94762C80937B0283 -:101CF000089580917B0290E0019766E070E00E9479 -:101D0000762C80937B0208958F929F92AF92BF9220 -:101D1000CF92DF92EF92FF920F931F93CF93DF93B7 -:101D20006B017C01C0912802D0912902BE0180E0A4 -:101D300090E00E9496294B015C01A701960160E0AA -:101D400070E08CE594E40E94FD289B01AC01C50184 -:101D5000B4010E94A82A0E946A2920917B022330A4 -:101D600009F473C028F4222351F02130E9F02CC18A -:101D7000243009F4A0C0253009F4E0C025C180E07A -:101D800090E0A0E0BFE38093060190930701A09349 -:101D90000801B093090110922B0210922C021092AC -:101DA0002D0210922E0210C110922B0210922C02C2 -:101DB00010922D0210922E026431710540F46A30A7 -:101DC000710560F520E030E040E85EE32BC0693C3F -:101DD000710508F0AAC080E090E00E94962920E0FA -:101DE00030E040EA51E40E94942820E030E044E3EF -:101DF00053E40E94FD289B01AC010E94A82A20E028 -:101E000030E040E05EE30E94A82A9B01AC0160E064 -:101E100070E080E09EE30E94942844C020E030E01F -:101E200040E05FE3C701B6010E94A82A6B017C0174 -:101E300080E090E0A0E0BEE380930601909307016C -:101E4000A0930801B0930901BFC010922B02109219 -:101E50002C0210922D0210922E024AE0469F900111 -:101E6000479F300D1124C90168EB7BE00E94622C72 -:101E7000BC016C5D754077FF03C071956195710978 -:101E8000882777FD8095982F0E9498292EE333ECC0 -:101E90004EE259E30E94A82A20E030E040EC5EE3E5 -:101EA0000E949528609306017093070180930801B2 -:101EB0009093090189C010922B0210922C0210926B -:101EC0002D0210922E02CE0183709927892BE1F00A -:101ED000BE016170772780E090E00E94962920E0A3 -:101EE00030E040E05EE30E94A82A20E030E040E4D9 -:101EF0005FE30E9495286093060170930701809329 -:101F00000801909309010CC080E090E0A0E0BFE3DD -:101F10008093060190930701A0930801B0930901F3 -:101F2000C770DD27CD2B09F04FC01092060110922B -:101F30000701109208011092090146C010922B026D -:101F400010922C0210922D0210922E0200E010E04E -:101F500020E03FE30093060110930701209308015E -:101F6000309309016739710578F180E090E00E94B3 -:101F7000962920E030E047E153E40E94942820E0D5 -:101F800030E04AE754E40E94FD2820E030E048E4D5 -:101F900052E40E94A82A20E030E040EA51E40E9486 -:101FA000DA290E946529660F771F660F771FFB01EC -:101FB000EE5AFE4F2081318142815381C701B60123 -:101FC0000E94A82A6B017C01C701B601DF91CF9165 -:101FD0001F910F91FF90EF90DF90CF90BF90AF9047 -:101FE0009F908F90089580918C020895CF93DF93F6 -:101FF00000D01F92CDB7DEB79C01809113038430CF -:1020000019F593E099833B832A839093E9008FEF3E -:102010009091E800815095FD06C095ED9A95F1F7F5 -:1020200000008111F5CF8091E80085FF0DC040E0F0 -:1020300050E063E070E0CE0101960E94571280915B -:10204000E8008E778093E8000F900F900F90DF915B -:10205000CF910895CF93DF9300D01F92CDB7DEB715 -:1020600020911303243021F522E029839B838A8366 -:1020700083E08093E9008FEF9091E800815095FD17 -:1020800006C095ED9A95F1F700008111F5CF80918A -:10209000E80085FF0DC040E050E063E070E0CE0155 -:1020A00001960E9457128091E8008E778093E80095 -:1020B0000F900F900F90DF91CF910895209113030F -:1020C0002430F1F422E02093E9002FEF3091E80072 -:1020D000215035FD06C035ED3A95F1F7000021118C -:1020E000F5CF2091E80025FF0BC040E050E065E00F -:1020F00070E00E9457128091E8008E778093E8008C -:102100000895CF93DF93EC0190911303943009F07D -:1021100046C0809115018823D9F08091160188234B -:10212000B9F09093E9008FEF9091E800815095FD10 -:1021300006C095E19A95F1F700008111F5CF8091E5 -:10214000E80085FF2CC040E050E060E170E017C07F -:1021500081E08093E9008FEF9091E800815095FD38 -:1021600006C095ED9A95F1F700008111F5CF8091A9 -:10217000E80085FF14C040E050E068E070E0CE0168 -:102180000E9457128091E8008E778093E80080E1EA -:10219000FE01ACE7B2E001900D928A95E1F7DF9184 -:1021A000CF91089580911203811109C00E94EC1310 -:1021B0000E9449148091E20084608093E2000895B7 -:1021C000109212030895089508950C94902242E00D -:1021D00061EC81E00E94661342E061EC82E00E94C3 -:1021E000661342E061EC83E00E94661342E161EC19 -:1021F00084E00C94661380911503833009F455C074 -:1022000030F4813071F0823009F48EC008958A3044 -:1022100009F47AC08B3009F460C0893009F09CC0A1 -:1022200020C080911403813A09F096C08091E800A3 -:10223000877F8093E8008091180390911903892B80 -:1022400021F460E18CE792E003C060E080E090E080 -:1022500070E00E94A2128091E8008B778093E800E2 -:10226000089580911403813209F076C0809118039B -:1022700090911903009719F0039709F06DC08091B0 -:10228000E800877F8093E8008091E80082FD05C028 -:10229000809113038111F8CF5FC08091F10080938A -:1022A0008C028091E8008B7753C080911403813AAF -:1022B00009F052C08091180390911903892B09F0FD -:1022C0004BC08091E800877F8093E8008091E80010 -:1022D00080FFFCCF8091150136C0809114038132BC -:1022E000D9F58091180390911903892BA9F5809154 -:1022F000E800877F8093E8000E949B13809116037B -:10230000809315010C94D11B80911403813221F527 -:102310008091E800877F8093E8000E949B13809162 -:10232000170380938D02089580911403813AA1F4DC -:102330008091E800877F8093E8008091E80080FF2B -:10234000FCCF80918D028093F1008091E8008E7720 -:102350008093E8000C949B13089584B7877F84BF13 -:1023600088E10FB6F89480936000109260000FBE71 -:1023700090E080E80FB6F89480936100909361003C -:102380000FBE0E943E170E94EC130E9449148091D8 -:10239000E20084608093E20078940E94CF160E944D -:1023A00040178BE091E00E94EA168091130385307C -:1023B00069F40E945122809111038823B1F30E9495 -:1023C0007F22882391F30E944112EFCF0E94481789 -:1023D000ECCF292F332723303105C9F064F42130A5 -:1023E000310581F02230310509F043C08DE690E0DF -:1023F00028E433E042C021323105F1F022323105C8 -:1024000041F137C082E190E025EB33E036C09927F7 -:102410008130910541F08230910541F0892B49F5D9 -:10242000E4E4F3E005C0E6E1F3E002C0ECEEF2E044 -:10243000849190E09F0121C06430D8F4E62FF0E051 -:10244000EE0FFF1FE255FE4F2081318189E090E0C1 -:1024500014C0643070F470E0FB01EE0FFF1FEA550A -:10246000FE4F20813181FB01EE55FE4F808190E0CF -:1024700004C080E090E020E030E0FA013183208366 -:10248000089580E189BD82E189BD09B400FEFDCFD8 -:102490008091D8008F7D8093D8008091E000826089 -:1024A0008093E0008091E00081FDFCCF0895CF9201 -:1024B000DF92EF92FF920F931F93CF93DF93EC0184 -:1024C0008B016A010E94BA13811133C0C114D10477 -:1024D00039F0F60180819181081B190BC80FD91FB3 -:1024E000E12CF12C0115110519F18091E80085FD11 -:1024F00016C08091E8008E778093E800C114D10463 -:1025000049F0F60180819181E80EF91EF182E082A6 -:1025100085E00FC00E94BA13882321F30AC0899175 -:102520008093F10001501109FFEFEF1AFF0ADACF93 -:1025300080E0DF91CF911F910F91FF90EF90DF909E -:10254000CF90089520911A0330911B032617370767 -:1025500048F06115710539F42091E8002E77209339 -:10256000E80001C0B90140E061157105A9F12091B1 -:102570001303222309F443C0253009F442C02091FB -:10258000E80023FD40C02091E80022FD32C02091E8 -:10259000E80020FFE9CF4091F3002091F20030E005 -:1025A000342BFC01CF016115710559F0283031053C -:1025B00040F481918093F100615071092F5F3F4F8A -:1025C000F1CF41E02830310509F040E02091E800EA -:1025D0002E772093E800C8CF4111C9CF0AC080915F -:1025E0001303882361F0853061F08091E80083FD5A -:1025F0000AC08091E80082FFF2CF80E0089582E077 -:10260000089583E0089581E0089520911A033091A0 -:102610001B032617370748F06115710539F420911F -:10262000E8002E772093E80001C0B901FC0120E00A -:102630006115710591F180911303882309F440C05D -:10264000853009F43FC08091E80083FD3DC0809152 -:10265000E80082FD2FC08091E80080FFE9CF209143 -:10266000F3008091F20090E0922B6115710559F012 -:102670008830910540F424912093F1003196615007 -:1026800071090196F2CF21E0089709F020E08091CE -:10269000E8008E778093E800CBCF2111CCCF0AC021 -:1026A00080911303882361F0853061F08091E80008 -:1026B00083FD0AC08091E80082FFF2CF80E0089598 -:1026C00082E0089583E0089581E00895982F97307F -:1026D00058F59093E900981739F07091EC0020912B -:1026E000ED005091F00003C0242F762F50E021FF21 -:1026F00019C03091EB003E7F3093EB003091ED003C -:102700003D7F3093ED003091EB0031603093EB0072 -:102710007093EC002093ED005093F0002091EE00B8 -:1027200027FF07C09F5FD3CF8F708093E90081E0C0 -:10273000089580E008958091140387FF11C080916F -:10274000E80082FD05C0809113038111F8CF11C00C -:102750008091E8008B770BC080911303882349F0A8 -:102760008091E80080FFF8CF8091E8008E77809319 -:10277000E80008952091E4003091E50095E640914D -:10278000EC00842F817040FF22C08091E80080FD22 -:102790001CC080911303882391F0853091F08091C3 -:1027A000EB0085FD10C04091E4005091E500421718 -:1027B000530729F39A01915011F784E0089582E0BC -:1027C000089583E0089581E0089580E008954091A0 -:1027D000E80042FFDECF08950E945A140E9462145E -:1027E000E0EEF0E0808181608083E8EDF0E08081C0 -:1027F0008F77808319BCA7EDB0E08C918E7F8C938E -:1028000080818F7E80831092120308950F931F930F -:10281000CF93DF930E945A140E946214C8EDD0E057 -:1028200088818F77888388818068888388818F7D7D -:10283000888319BC1092130310920F031092110396 -:102840001092100300EE10E0F80180818B7F8083EE -:1028500088818160888342E060E080E00E946613A6 -:10286000E1EEF0E080818E7F8083E2EEF0E0808117 -:1028700081608083808188608083F80180818E7F81 -:102880008083888180618883DF91CF911F910F9130 -:102890000895E8EDF0E080818F7E8083E7EDF0E041 -:1028A00080818160808384E082BF81E08093120315 -:1028B0000C940614E8EDF0E080818E7F8083109206 -:1028C000E20008951092DA001092E10008951F923C -:1028D0000F920FB60F9211242F933F934F935F9354 -:1028E0006F937F938F939F93AF93BF93EF93FF93D8 -:1028F0008091E10082FF0BC08091E20082FF07C05F -:102900008091E1008B7F8093E1000E94CE16809140 -:10291000DA0080FF1FC08091D80080FF1BC080912B -:10292000DA008E7F8093DA008091D90080FF0DC09D -:1029300080E189BD82E189BD09B400FEFDCF81E05F -:10294000809313030E94D21005C019BC1092130388 -:102950000E94E0108091E10080FF19C08091E200A8 -:1029600080FF15C08091E2008E7F8093E20080910D -:10297000E20080618093E2008091D80080628093C1 -:10298000D80019BC85E0809313030E94E410809165 -:10299000E10084FF30C08091E20084FF2CC080E120 -:1029A00089BD82E189BD09B400FEFDCF8091D800C8 -:1029B0008F7D8093D8008091E1008F7E8093E1002D -:1029C0008091E2008F7E8093E2008091E20081603E -:1029D0008093E20080910F03882311F084E007C008 -:1029E0008091E30087FD02C081E001C083E0809315 -:1029F00013030E94E5108091E10083FF29C08091BC -:102A0000E20083FF25C08091E100877F8093E10091 -:102A100082E08093130310920F038091E1008E7F78 -:102A20008093E1008091E2008E7F8093E2008091AC -:102A3000E20080618093E20042E060E080E00E947A -:102A400066138091F00088608093F0000E94E3108C -:102A5000FF91EF91BF91AF919F918F917F916F9176 -:102A60005F914F913F912F910F900FBE0F901F904C -:102A700018951F920F920FB60F9211242F933F9328 -:102A80004F935F936F937F938F939F93AF93BF9376 -:102A9000CF93DF93EF93FF93C091E900CF708091C4 -:102AA000EC00D82FD17080FDD0E81092E900809121 -:102AB000F000877F8093F00078940E947D1510923B -:102AC000E9008091F00088608093F000CD2BCF70FA -:102AD000C093E900FF91EF91DF91CF91BF91AF914A -:102AE0009F918F917F916F915F914F913F912F9126 -:102AF0000F900FBE0F901F9018951F93CF93DF93E9 -:102B0000CDB7DEB7AA970FB6F894DEBF0FBECDBF24 -:102B1000E4E1F3E088E08E0F9091F10091938E1341 -:102B2000FBCF0E94FB108091E80083FF1FC18091C2 -:102B3000140390911503492F50E04A30510508F0D5 -:102B400015C1FA01EA5AFF4F0C948A2C803881F0A3 -:102B5000823809F00BC1809118038F708093E900CF -:102B60008091EB0085FB882780F91092E90006C070 -:102B70008091100390911103911182609091E8006F -:102B8000977F9093E8008093F1001092F100C8C005 -:102B9000282F2D7F09F0EAC0882319F0823061F0D8 -:102BA000E5C080911603813009F0E0C0933009F050 -:102BB00080E0809311032BC080911603811127C000 -:102BC000809118038F7009F4D1C08093E90020919F -:102BD000EB0020FF1CC0933021F48091EB00806259 -:102BE00014C09091EB0090619093EB0021E030E0F5 -:102BF000A90102C0440F551F8A95E2F74093EA00ED -:102C00001092EA008091EB0088608093EB001092B4 -:102C1000E9008091E800877F86C08111A7C01091EC -:102C200016031F778091E3008078812B8093E30067 -:102C30008091E800877F8093E8000E949B13809139 -:102C4000E80080FFFCCF8091E30080688093E30080 -:102C5000111102C082E001C083E08093130386C09B -:102C60008058823008F082C080911603909117033B -:102C70008C3D53E0950779F583E08A838AE2898366 -:102C80004FB7F894DE01139620E03EE051E2E32FC7 -:102C9000F0E050935700E49120FF03C0E295EF70FD -:102CA0003F5FEF708E2F90E0EA3010F0C79601C0C2 -:102CB000C0968D939D932F5F243149F74FBF80912C -:102CC000E800877F8093E8006AE270E0CE01019619 -:102CD0000E94A21214C0AE014F5F5F4F60911803B3 -:102CE0000E94E911BC01009709F440C09091E800EE -:102CF000977F9093E80089819A810E9405138091C3 -:102D0000E8008B778093E80031C0803879F58091B6 -:102D1000E800877F8093E80080910F038093F100A3 -:102D20008091E8008E778093E8000E949B131EC07C -:102D300081111CC0909116039230C0F48091E8007C -:102D4000877F8093E80090930F030E949B138091EC -:102D50000F03811106C08091E30087FD02C081E06E -:102D600001C084E0809313030E94E7108091E80083 -:102D700083FF0AC08091E800877F8093E8008091FC -:102D8000EB0080628093EB00AA960FB6F894DEBF4A -:102D90000FBECDBFDF91CF911F9108950895CF93BE -:102DA000809113038823A1F0C091E900CF70909126 -:102DB000EC00892F817090FD80E8C82B1092E9000B -:102DC0008091E80083FD0E947D15CF70C093E900DB -:102DD000CF91089590939302809392020895E09189 -:102DE0009202F0919302309721F00190F081E02D52 -:102DF000099480E00895E0919202F0919302309757 -:102E000021F00280F381E02D09940895E09192026F -:102E1000F0919302309721F00480F581E02D099420 -:102E2000089520919002309191028217930771F0DA -:102E30009093910280939002E0919202F09193021C -:102E4000309721F00680F781E02D099408952091B4 -:102E50008E0230918F028217930771F090938F0248 -:102E600080938E02E0919202F0919302309721F0CC -:102E70000084F185E02D0994089508950C943D1780 -:102E80000E94C4220E9415090E944A230C94F9272B -:102E90005F926F927F928F929F92AF92BF92CF92EA -:102EA000DF92EF92FF920F931F93CF93DF9300D0A7 -:102EB00000D01F92CDB7DEB70E945A099DE9C92EF6 -:102EC00092E0D92E03E010E0AA24A394B12C502E56 -:102ED000802F0E94D5094C01F601729062906F011B -:102EE0006826792661147104A1F40150110978F75C -:102EF0008FEF89838A831B820E94CD228160782F85 -:102F00009D838C8349815A816B818D810E94F81742 -:102F100038C08091F20281FD0E94DE092BE030E092 -:102F20007501022E02C0EE0CFF1C0A94E2F7C701E5 -:102F300086219721892B09F129835A828E209F208F -:102F400091E0892809F490E09B830E94CD22816062 -:102F5000782F9D838C8349815A816B818D810E945A -:102F6000F817000F111FF801EB56FD4F808191817A -:102F7000E826F926F182E08204C02150310980F66A -:102F8000B4CF0E943125109194020E94EF161817B9 -:102F9000D1F00E94EF16809394020F900F900F9043 -:102FA0000F900F90DF91CF911F910F91FF90EF90B5 -:102FB000DF90CF90BF90AF909F908F907F906F9059 -:102FC0005F900C94FF080F900F900F900F900F9050 -:102FD000DF91CF911F910F91FF90EF90DF90CF90F5 -:102FE000BF90AF909F908F907F906F905F9008956B -:102FF000CF93DF93CDB7DEB72B970FB6F894DEBF34 -:103000000FBECDBF4F83588769877A878B87DE01D4 -:10301000119686E0FD0111928A95E9F785E0FE019F -:10302000379601900D928A95E1F749815A816B811B -:103030007C818D819E810E946F1E2B960FB6F89425 -:10304000DEBF0FBECDBFDF91CF910895CF93882310 -:1030500009F4C2C0C82F823859F40E94EF1681FDCE -:10306000BBC089E30E9449210E94162289E30CC05B -:10307000833879F40E94EF1680FDAEC083E50E948C -:1030800049210E94162283E50E948B21CF910C9446 -:103090001622843859F40E94EF1682FD9DC087E401 -:1030A0000E9449210E94162287E4EECF8CEF8C0FFC -:1030B000813A48F48C2F0E94612781118DC08C2F9A -:1030C0000E944921E3CF80E28C0F883048F4C7701A -:1030D00081E001C0880FCA95EAF70E94CF21D6CFC0 -:1030E0008BE58C0F833078F4C53A29F0C63A31F07D -:1030F00083E890E005C081E890E002C082E890E0BB -:10310000CF910C94111788E58C0F833108F064C0BF -:10311000C83A39F1C93A41F1CA3A49F1CB3A51F1C9 -:10312000CC3A59F1CD3A61F1C03B69F1CE3A71F137 -:10313000CF3A79F1C13B81F1C23B89F1C33B91F1B7 -:10314000C43B99F1C53BA1F1C63BA9F1C73BB1F125 -:10315000C83BB9F1C93BC1F1CA3BC9F180E090E07D -:1031600038C082EE90E035C089EE90E032C08AEE41 -:1031700090E02FC085EB90E02CC086EB90E029C05A -:1031800087EB90E026C08CEC90E023C08DEC90E0C3 -:1031900020C083E891E01DC08AE891E01AC082E96E -:1031A00091E017C084E991E014C081E292E011C07F -:1031B00083E292E00EC084E292E00BC085E292E0EE -:1031C00008C086E292E005C087E292E002C08AE28F -:1031D00092E0CF910C942717CF910895882309F49A -:1031E0004BC0823859F40E94EF1681FF45C089E335 -:1031F0000E9449210E94162289E30CC0833871F491 -:103200000E94EF1680FF38C083E50E9449210E948A -:10321000162283E50E948B210C941622843859F4DF -:103220000E94EF1682FF28C087E40E9449210E9475 -:10323000162287E4EFCF9CEF980F913A58F390E273 -:10324000980F983050F4877091E001C0990F8A95DB -:10325000EAF7892F0E94D521DFCF9BE5980F9330A5 -:1032600020F480E090E00C941117885A833120F408 -:1032700080E090E00C9427170895882321F00E94A5 -:10328000CF210C9416220895882321F00E94D52185 -:103290000C94162208957F928F929F92AF92BF92C4 -:1032A000CF92DF92EF92FF920F931F93CF93DF9312 -:1032B0001F92CDB7DEB77C01C62E772EFC010581AB -:1032C00002950F70128111110E94EC210E9442217F -:1032D000882379F0112369F080E28C0D883048F062 -:1032E00082E00E942B210E94422191E0D82ED92613 -:1032F00001C0D12CE72DE295EF70F0E0E05AFF4FCE -:103300000C948A2C872D807F072D0F70882311F055 -:103310000295007F112389F0002309F499C180E20E -:103320008C0D883020F4802F0E94CF2103C0802F85 -:103330000E94DF210E9416228BC18C2D0E94EE1864 -:10334000002309F4C3C180E28C0D883020F4802F63 -:103350000E94D52103C0802F0E94E5210E941622E1 -:10336000B5C1872D807F972D9F70803211F4892FF2 -:1033700003C0892F8295807FCC2021F0F1E0CF1609 -:10338000A1F01DC0112339F0002319F1013009F516 -:103390000E94FF219BC1002319F0013009F496C15E -:1033A00089830E940222898110C1112321F00630F5 -:1033B00008F08CC10EC0053008F088C106C1112389 -:1033C00059F0002331F0F701958190FF41C19F70C2 -:1033D00095830E943D197AC1002309F4F6C03EC1CD -:1033E000872D86958695837090E0009719F0019758 -:1033F00061F06CC1112321F08C2D972D937002C0C8 -:1034000080E090E00E94111761C1112321F08C2D02 -:10341000972D937002C080E090E00E94271756C15C -:103420008C2D112319F00E94392402C00E94A1247E -:103430000E9426254BC1872D837009F052C01111BF -:1034400045C18C2D829586958770880F880F9C2D9D -:103450009F70892E912CA12CB12C082E04C0880CB1 -:10346000991CAA1CBB1C0A94D2F7C4FE14C00FE01E -:1034700010E020E030E0B901A80104C0440F551F5E -:10348000661F771F8A95D2F7CB01BA0160957095B8 -:103490008095909503C060E070E0CB01272D2695C4 -:1034A0002695237030E02230310569F02330310554 -:1034B00089F0682979298A299B292130310571F001 -:1034C0000E94B71F03C1682979298A299B290E9474 -:1034D000D31FFCC00E94B71FC501B4010E949B1FEF -:1034E000F5C0112319F0872D817001C086958823BE -:1034F00009F4ECC08C2D829586958770880F880F13 -:103500009C2D9F70892E912CA12CB12C082E04C0CB -:10351000880C991CAA1CBB1C0A94D2F7C4FE14C0C8 -:103520000FE010E020E030E0B901A80104C0440F32 -:10353000551F661F771F8A95D2F7CB01BA01609598 -:1035400070958095909503C060E070E0CB01272DC9 -:10355000269526952370422F50E04230510569F0A0 -:103560004330510589F0682979298A299B294130FE -:10357000510571F00E949120A9C0682979298A29F2 -:103580009B290E94AD20A2C00E949120C501B401D8 -:103590000E9475209BC08C2D90E0FC01E05EF1093B -:1035A000E531F10508F050C0E059FF4F0C948A2C2A -:1035B0000C2D0F70872D8F71112321F00E940E208A -:1035C000802F07CF0E942F20802F0E9444197EC099 -:1035D000112341F0053008F079C0872D8F710E94CA -:1035E000542074C0063008F071C0F7CF112339F0B1 -:1035F000872D8F710E940E2069C01123C9F3872D7A -:103600008F710E942F2062C0112329F0872D8F71A6 -:103610000E94F91F5BC00E94EF1F58C0112351F098 -:10362000172D1F71812F0E940E2063E0812F0E94B1 -:1036300022214CC081E00E942B21023008F446C0B8 -:1036400082E00E942B2142C0112331F0002381F23D -:103650008C2D0E9426183AC0002389F28C2D0E94DE -:10366000EE1834C0472D4F706C2DC7010E945503D2 -:103670000E94131F2BC0111129C0472D4F7050E01D -:1036800042305105B9F04CF44115510581F04130FB -:103690005105E1F40E94212819C04330510569F019 -:1036A0004430510599F48C2D0E9473280FC00E945C -:1036B0000A280CC00E943D2809C00E94502806C05C -:1036C000472D4F706C2DC7010E94E005DD20F9F0F9 -:1036D0000E941E2180FD1BC0F70112820E9418214A -:1036E0000E940E20C7010E94961B0E9418210F9075 -:1036F000DF91CF911F910F91FF90EF90DF90CF90CE -:10370000BF90AF909F908F907F900C942F200F9040 -:10371000DF91CF911F910F91FF90EF90DF90CF90AD -:10372000BF90AF909F908F907F9008950F931F93BD -:10373000CF93DF93EC01888199812B813C81232BEE -:10374000B9F09F3F11F48F3F99F0CE010E94DF0343 -:10375000882371F0688179818A810E9414218C010B -:103760000E94C9200E94901FB801CE010E944B19EF -:10377000DF91CF911F910F9108950E94EC210E943B -:10378000FC210E94C1210E9416220E94D7250E947E -:10379000262580E090E00E94111780E090E00C94D4 -:1037A00027170E94DC210C94BD1B0E940921292FA0 -:1037B00022952F7030E02C3031054CF42A30310541 -:1037C0006CF42250310922303105A8F407C02C30A6 -:1037D000310569F02F30310551F00DC0803F69F09F -:1037E00018F4803E40F409C0843F29F406C093FBDE -:1037F000882780F9089580E0089581E00895CF93A7 -:10380000DF9300D000D01F92CDB7DEB70F900F909E -:103810000F900F900F90DF91CF910895CF93DF938A -:1038200000D000D000D0CDB7DEB726960FB6F89402 -:10383000DEBF0FBECDBFDF91CF9108951F93CF9311 -:10384000DF93C0919D0216E080919E02C81799F007 -:10385000D0E01C9FF0011D9FF00D1124E156FD4F9B -:103860004081518162817381848195810E940E1C07 -:103870002196C770E9CFDF91CF911F9108954091B4 -:10388000CF025091D0026091D1027091D20280910A -:10389000D3029091D4020C940E1C8091D402829594 -:1038A0008F7009F054C08091D102882309F44FC071 -:1038B00080919D02A0919E026091CF027091D002F2 -:1038C0004091D2025091D302B6E08A1709F43FC06A -:1038D00090E041155105C1F17F3F11F46F3FA1F117 -:1038E000B89FF001B99FF00D1124E156FD4F2181E1 -:1038F00072132AC02081621327C02281211124C0A3 -:10390000238134812417350710F421503109241BF9 -:10391000350B283C3105C0F42091D4022F70206172 -:103920002093D40226E0289FF001299FF00D112456 -:10393000EC55FD4F80818F70806180838FEC92E029 -:103940000E94961B0C941E1C01968770BECF089592 -:10395000CF92DF92EF92FF920F931F93CF93DF935B -:10396000CDB7DEB762970FB6F894DEBF0FBECDBFFE -:103970008C0185E0F801DE011D9601900D928A957B -:10398000E1F7D8014C9111965C91119712966C91C8 -:1039900012971396CD90DC9014973091CF027091CE -:1039A000D0028091D2029091D302009709F46BC1AA -:1039B0007F3F19F43F3F09F466C1E090D102EE2049 -:1039C00009F4C0C02091D402C816D90628F0F60127 -:1039D000E81BF90BCF0104C0809590958C0D9D1DBF -:1039E000FF24F394883C910578F0F12C207F09F0B6 -:1039F000C6C07C2DD98AC88A89890E94FF1B8FEC9A -:103A000092E00E94961BB1C0822F807F09F046C0D1 -:103A1000751314C0341312C0611110C02F702061CF -:103A20002093D4020E943F1C8FEC92E00E94961BD0 -:103A30008091D402D80115968C932EC0CD2819F10F -:103A40005F3F11F44F3FF9F0F62E61111CC08091D9 -:103A50009D0220919E0236E0821709F45AC090E040 -:103A6000389FF001399FF00D1124E156FD4F71810F -:103A7000571306C07081471303C07281711103C0D0 -:103A800001968770E9CFF62E662309F418C180915C -:103A9000D40281608093D402F12C11C1751308C047 -:103AA000341306C0611104C08091D402D801C3C090 -:103AB0004D875E878D859E856A8B0E94D51B6A899E -:103AC0008823E1F16623D1F12091D402822F8295DF -:103AD0008F7090E0029774F08091CF029091D002A5 -:103AE00098878F831986DB86CA862C87CE01079636 -:103AF0000E94961B86E0F801AFECB2E001900D92B7 -:103B00008A95E1F70E944D1C0E943F1CFF24F3940C -:103B1000D6C04D875E878D859E850E940921292FFD -:103B200022952F7030E0223031050CF0BCC09F7020 -:103B300009F0B6C0805E883008F4C1C0C8010E9498 -:103B4000961BE4CFC816D90608F453C0F601E81B4B -:103B5000F90BCF01883C910508F450C0F12C7C2D65 -:103B6000D98AC88A89890E94FF1BEFECF2E086E0BF -:103B7000DF011D928A95E9F70E943F1CA0C07513D2 -:103B800014C0341312C0611110C08091D402F80126 -:103B90008583C8010E94961B86E0EFECF2E0DF010E -:103BA0001D928A95E9F7FE2C8AC04D875E878D8528 -:103BB0009E856A8B0E94D51B6A89882309F4BECF33 -:103BC000662309F4BBCF2091D402822F82958F7097 -:103BD00090E002970CF48ECF8091CF029091D002AA -:103BE0009A8389831B82DD82CC822E83CE0101964B -:103BF0007FCF809590958C0D9D1DACCFF62E6623C2 -:103C000009F49CCF75132EC034132CC02091D4021C -:103C100020FD1FC0822F82958F70D9F0D801159694 -:103C20002C9315978F3049F08F5F982F9295907F46 -:103C3000822F8F70892B15968C93C8010E94961B3A -:103C400086E0F801AFECB2E001900D928A95E1F7C1 -:103C500093CF86E0F801AFECB2E001900D928A9527 -:103C6000E1F72DC04D875E878D859E850E94D51B0F -:103C7000811140CF8091D40281608093D402C80129 -:103C80000E94961B1CC0662309F458CF4D875E879F -:103C90008D859E850E94D51B882309F44FCF2ACF9E -:103CA000811148CF0CC0243031050CF047CF9F70F4 -:103CB00009F440CFF8019581907F09F03BCF8F2D1B -:103CC00062960FB6F894DEBF0FBECDBFDF91CF91E5 -:103CD0001F910F91FF90EF90DF90CF9008951F9369 -:103CE000CF93DF93CDB7DEB72C970FB6F894DEBF36 -:103CF0000FBECDBF4F83588769877A878B879C8794 -:103D0000CE0107960E94A81C882369F08F819885B0 -:103D10002A853B85232BF1F19F3F09F063C08F3F3C -:103D200009F060C037C086E0FE013796DE011196CB -:103D300001900D928A95E1F76F817885EA85FB8580 -:103D4000309741F17F3F11F46F3F21F120919E02A6 -:103D500030E0C90101968770992740919D0250E09B -:103D60008417950709F447C069837A83FD83EC8340 -:103D700096E0929FD001939FB00D1124A156BD4FA4 -:103D8000FE01319601900D929A95E1F780939E0283 -:103D90000E941E1C16E080919D0290919E02891740 -:103DA000C1F1189FC001112481569D4F0E94A81C8B -:103DB000882379F1E0919D021E9FF0011124E156C4 -:103DC000FD4F4081518162817381848195810E9480 -:103DD0000E1C80919D0290E0019687709927809338 -:103DE0009D02D9CF4F81588569857A858B859C85C1 -:103DF0000E940E1CCFCF0E94D11B10929E021092E7 -:103E00009D02EFECF2E086E0DF011D928A95E9F772 -:103E1000C1CF2C960FB6F894DEBF0FBECDBFDF9199 -:103E2000CF911F910895EF92FF920F931F93CF931D -:103E3000DF938C01009709F46CC0F12CEE24E3941D -:103E4000E8012196F8018491843740F4843008F029 -:103E500051C0813081F0823019F15BC0853709F49F -:103E600044C0A8F19CE7980F903708F052C08F77B4 -:103E70000E94EE1841C00E5F1F4FFE01C49180E208 -:103E80008C0F883048F4C7708E2D01C0880FCA95FA -:103E9000EAF70E94EF2114C08C2F0E9426182DC033 -:103EA0000E5F1F4FFE01C49180E28C0F883058F4E2 -:103EB000C7708E2D01C0880FCA95EAF70E94F521C0 -:103EC0000E9416221AC08C2F0E94EE1816C00E5F98 -:103ED0001F4FFE01C491CC2381F08FE99FE0019731 -:103EE000F1F700C00000C150F6CF0E5F1F4FFE017A -:103EF000F49003C00E9426188E018F2D882309F4A8 -:103F00009FCFEFE9FFE03197F1F700C0000081504B -:103F1000F5CFDF91CF911F910F91FF90EF90089512 -:103F200008956093D9027093DA028093DB02909334 -:103F3000DC020C94BD1B0F931F930091D9021091CA -:103F4000DA022091DB023091DC02DC01CB01802B14 -:103F5000912BA22BB32B8093D9029093DA02A093DA -:103F6000DB02B093DC021F910F910C94BD1B0F93E9 -:103F70001F930091D9021091DA022091DB02309157 -:103F8000DC02DC01CB0180239123A223B3238093A5 -:103F9000D9029093DA02A093DB02B093DC021F9166 -:103FA0000F910C94BD1B0F931F930091D902109198 -:103FB000DA022091DB023091DC02DC01CB018027A8 -:103FC0009127A227B3278093D9029093DA02A09376 -:103FD000DB02B093DC021F910F910C94BD1B109279 -:103FE000D5021092D6021092D7021092D8020C94E9 -:103FF000BD1B41E050E060E070E004C0440F551F7D -:10400000661F771F8A95D2F74093D5025093D60248 -:104010006093D7027093D8020C94BD1B41E050E02E -:1040200060E070E004C0440F551F661F771F8A953B -:10403000D2F78091D5029091D602A091D702B0918B -:10404000D802482B592B6A2B7B2B4093D5025093D7 -:10405000D6026093D7027093D8020C94BD1B41E046 -:1040600050E060E070E004C0440F551F661F771FEA -:104070008A95D2F740955095609570958091D502BC -:104080009091D602A091D702B091D802482359232B -:104090006A237B234093D5025093D6026093D702C4 -:1040A0007093D8020C94BD1B41E050E060E070E0DA -:1040B00004C0440F551F661F771F8A95D2F7809161 -:1040C000D5029091D602A091D702B091D80248278C -:1040D00059276A277B274093D5025093D6026093D5 -:1040E000D7027093D8020C94BD1B0F931F930091BD -:1040F000D5021091D6022091D7023091D802DC016E -:10410000CB01802B912BA22BB32B8093D5029093C4 -:10411000D602A093D702B093D8021F910F910C94AE -:10412000BD1B0F931F930091D5021091D6022091D1 -:10413000D7023091D802DC01CB0180239123A22346 -:10414000B3238093D5029093D602A093D702B09365 -:10415000D8021F910F910C94BD1B0F931F930091D8 -:10416000D5021091D6022091D7023091D802DC01FD -:10417000CB0180279127A227B3278093D502909364 -:10418000D602A093D702B093D8021F910F910C943E -:10419000BD1B0895CF92DF92EF92FF920F931F9372 -:1041A000CF93DF938C01C090D902D090DA02E090D7 -:1041B000DB02F090DC028091D5029091D602A091B2 -:1041C000D702B091D802C82AD92AEA2AFB2ACFE11D -:1041D000D0E0D701C6010C2E04C0B695A7959795DF -:1041E00087950A94D2F780FF06C0B8018C2F0E94F1 -:1041F0006508019721F4219760F780E001C08C2FBA -:10420000DF91CF911F910F91FF90EF90DF90CF90B2 -:104210000895CF93DF93EC010E94CA20BE010E9453 -:104220006508DF91CF910895CB010E94092108957F -:104230008091DD0285958595859508958091DD02B3 -:104240008770089598E0899F90011124262B209370 -:10425000DD020C940E202091DD0280958223809354 -:10426000DD02982F977069F430E0482F552747FDFD -:1042700050952417350729F08595859585950C94DB -:104280002F2008959091DD02977081E009F480E07D -:10429000089590911501992321F0909116019111A3 -:1042A00009C02091170130911801F90132969FEF52 -:1042B00040E01FC0982F9695969596959F3050F5A3 -:1042C000E0911701F0911801E90FF11D877021E0CD -:1042D00030E0A90102C0440F551F8A95E2F7CA01D8 -:1042E0009181892B818308959F3F39F04F5F4E3034 -:1042F00041F051915813F8CF0DC05111F7CF942FC1 -:10430000F5CF9F3F39F0F901E90FF11D97FDFA95BF -:1043100082830895089590911501992321F0909139 -:104320001601911109C02091170130911801F9016E -:104330003296205F3F4F1FC0982F96959695969581 -:104340009F30F0F4E0911701F0911801E90FF11D91 -:10435000877021E030E0A90102C0440F551F8A9503 -:10436000E2F7CA018095918189238183089531966E -:10437000E217F30729F090819813F9CF1082F7CF55 -:10438000089581E090E0E0911701F0911801E80FA5 -:10439000F91F1082019680319105A9F70895909137 -:1043A000F102892B8093F102089580959091F1029A -:1043B00089238093F10208951092F102089590915B -:1043C000F002892B8093F002089580959091F0027D -:1043D00089238093F00208951092F002089590913D -:1043E000EF02892B8093EF02089580959091EF0260 -:1043F00089238093EF0208951092EF02089580932D -:10440000DE0208951092DE020895809117019091C6 -:104410001801FC0131969C01205F3F4F80E0919193 -:1044200091118F5FE217F307D1F70895E09117011B -:10443000F09118018091F1028083E0911701F091D1 -:10444000180190818091F002892B8083E0911701FF -:10445000F091180190818091EF02892B80838091E7 -:10446000DE02882361F0E0911701F091180190813C -:10447000892B80830E94052281111092DE02809197 -:104480001701909118010C94FB1620E0009739F069 -:10449000AC0141505109842395232F5FF7CF822F20 -:1044A000089580911303843039F11092F30220E4CF -:1044B00088E190E00FB6F894A895809360000FBE55 -:1044C0002093600080E00E94BC0280E00E94FF0810 -:1044D00083B7817F846083BF83B7816083BF789413 -:1044E000889583B78E7F83BF88E10FB6F894809359 -:1044F0006000109260000FBE08950895089580E056 -:104500000E94BC020E947D220E945A090E947E22C3 -:104510000E94DF0991E0811101C090E0892F089588 -:104520000E94D11B80E00E94BC020E94F9270E94D9 -:10453000EF160C94FF081F920F920FB60F921124E2 -:104540008F939F93AF93BF938091F302811113C018 -:104550008091F4029091F502A091F602B091F702D9 -:104560004196A11DB11D8093F4029093F502A09392 -:10457000F602B093F702BF91AF919F918F910F9088 -:104580000FBE0F901F90189582E084BD93E095BDFB -:104590009AEF97BD80936E0008952FB7F89480919D -:1045A000F4029091F502A091F602B091F7022FBFAC -:1045B0000895CF92DF92EF92FF920F931F932FB740 -:1045C000F8944091F4025091F5026091F6027091D6 -:1045D000F7022FBF6A017B01EE24FF248C0120E04B -:1045E00030E0C016D106E206F30610F4415051093E -:1045F0009A01281B390BC9011F910F91FF90EF9071 -:10460000DF90CF9008951F920F920FB60F92112452 -:104610008F939F93AF93BF938091F4029091F50293 -:10462000A091F602B091F7020196A11DB11D8093F1 -:10463000F4029093F502A093F602B093F702BF91B3 -:10464000AF919F918F910F900FBE0F901F90189573 -:104650000E94EC13F8942FEF87EA91E621508040F6 -:104660009040E1F700C0000087E090EBDC01809310 -:104670001E0390931F03A0932003B09321039CE09B -:1046800088E10FB6F894A895809360000FBE9093D0 -:104690006000FFCF0E948923811102C00E94652320 -:1046A0000E9494238093F2020E949C2380931C0317 -:1046B00087FB882780F9809316010E949823682F32 -:1046C00070E080E090E00C94911F6DEE7EEF80E052 -:1046D00090E00E94B02C60E082E090E00E949E2C6E -:1046E00060E083E090E00E949E2C60E084E090E037 -:1046F0000E949E2C60E085E090E00E949E2C60E08D -:1047000086E090E00E949E2C6FEF87E090E00C9492 -:104710009E2C80E090E00E94982C21E08D3E9E4FE0 -:1047200009F020E0822F089582E090E00C94902C14 -:1047300083E090E00C94902C84E090E00C94902C1A -:10474000682F84E090E00C949E2C86E090E00C941E -:10475000902C682F86E090E00C949E2C87E090E0EF -:104760000C94902C682F87E090E00C949E2C809104 -:10477000FA0280FF0BC060911C0185E0689FB001C8 -:10478000112475956795759567952BC081FF09C0B4 -:1047900060911C0185E0689FB001112475956795B3 -:1047A00020C082FF07C060911C0185E0689FB001B6 -:1047B000112417C09091FB029923D1F060911B0145 -:1047C000961788F720911C0185E0289F90011124FD -:1047D000929FA001939F500D112470E0CA010E9486 -:1047E000762C6038710540F46115710539F002C00E -:1047F00065E070E0862F08958FE7089581E00895C1 -:104800008091FA0280FF08C060911A0170E07595EE -:1048100067957595679521C081FF06C060911A0163 -:1048200070E07595679519C082FF04C060911A0108 -:1048300070E010C09091FB029923C1F060911901C2 -:104840009617A0F780911A01899FC001112470E08A -:104850000E94762C6038710528F46115710521F0ED -:10486000862F08958FE7089581E0089561E070E054 -:10487000F4CF803F21F40E94B723819504C0813F8B -:1048800029F40E94B7238093FE020895823F21F409 -:104890000E94B723819504C0833F29F40E94B72367 -:1048A0008093FD020895893F19F40E94002405C0F9 -:1048B0008A3F31F40E94002481958093FF0208957D -:1048C0008B3F21F40E940024819504C08C3F29F481 -:1048D0000E940024809300030895843F21F4809176 -:1048E000FC02816017C0853F21F48091FC02826048 -:1048F00011C0863F21F48091FC0284600BC0873F89 -:1049000021F48091FC02886005C0883F31F48091D9 -:10491000FC0280618093FC0208958D3F21F4809118 -:10492000FA0281600BC08E3F21F48091FA0282600E -:1049300005C08F3F29F48091FA0284608093FA02C7 -:104940000895803F39F48091FE0287FF6CC0109279 -:10495000FE0269C0813F29F48091FE021816BCF363 -:1049600062C09091FD02823F29F497FF5CC01092D3 -:10497000FD0259C0833F19F41916CCF354C0893F86 -:1049800041F48091FF0218160CF04DC01092FF0206 -:104990004AC08A3F29F48091FF0287FF44C0F6CFC6 -:1049A0008B3F39F48091000387FF3DC010920003D4 -:1049B0003AC08C3F29F4809100031816BCF333C031 -:1049C000843F21F48091FC028E7F17C0853F21F443 -:1049D0008091FC028D7F11C0863F21F48091FC0202 -:1049E0008B7F0BC0873F21F48091FC02877F05C03D -:1049F000883F31F48091FC028F7E8093FC0213C0CB -:104A00008D3F21F48091FA028E7F0BC08E3F21F4FE -:104A10008091FA028D7F05C08F3F29F48091FA02C0 -:104A20008B7F8093FA028091FD0281110EC08091EC -:104A3000FE0281110AC08091FF02811106C080919F -:104A40000003811102C01092FB0208958CEF92E0E6 -:104A50000E9406170E94CD229093F9028093F802DB -:104A600008951F93CF93DF938091F8029091F902FC -:104A70000E94D922AC019091FB02992321F0209150 -:104A80001D0130E006C020911E018AE0289F9001A0 -:104A900011244217530708F486C08091FD02C0918B -:104AA000FE02D091FF0210910003811107C0C111D5 -:104AB00076C0D11174C0111172C075C09F3F19F03A -:104AC0009F5F9093FB02181624F40E94B7238093F3 -:104AD000FD028091FD0287FF05C00E94B7238195EA -:104AE0008093FD021C1624F40E94B7238093FE02DB -:104AF0008091FE0287FF05C00E94B72381958093B5 -:104B0000FE026091FD02662339F1C091FE02CC23C2 -:104B100019F1772767FD7095872F972F0E949829A5 -:104B200023E333E343E35FE30E94A82A0E9465295D -:104B30006093FD026C2F772767FD7095872F972F65 -:104B40000E94982923E333E343E35FE30E94A82A0A -:104B50000E9465296093FE021D1624F40E94002421 -:104B60008093FF028091FF0287FF05C00E9400240E -:104B700081958093FF02111624F40E9400248093F3 -:104B800000038091000387FF05C00E9400248195E7 -:104B900080930003DF91CF911F910C9426259F3FB6 -:104BA00009F08ECF96CFDF91CF911F910895ECEF52 -:104BB000F2E085E0DF011D928A95E9F71092FB0291 -:104BC0001092FA020895833081F128F4813059F06F -:104BD0008230D1F00895853009F449C0B8F18630AB -:104BE00009F456C0089580911E01262F30E0280F49 -:104BF000311D2F3F310524F4680F60931E01089585 -:104C00008FEF80931E01089580911D01262F30E0C3 -:104C1000280F311D2F3F310524F4680F60931D01CB -:104C200008958FEF80931D01089580911C01262F18 -:104C300030E0280F311D2F3F310524F4680F6093B9 -:104C40001C0108958FEF80931C01089580911B0132 -:104C5000262F30E0280F311D2F3F310524F4680F37 -:104C600060931B0108958FEF80931B01089580913D -:104C70001A01262F30E0280F311D2F3F310524F473 -:104C8000680F60931A0108958FEF80931A010895B9 -:104C900080911901262F30E0280F311D2F3F31055B -:104CA00024F4680F6093190108958FEF8093190120 -:104CB0000895833011F128F4813049F0823091F069 -:104CC0000895853081F120F18630C1F108958091F9 -:104CD0001E01681720F4861B80931E010895109210 -:104CE0001E01089580911D01681720F4861B809392 -:104CF0001D01089510921D01089580911C016817EF -:104D000020F4861B80931C01089510921C010895C5 -:104D100080911B01681720F4861B80931B01089566 -:104D200010921B01089580911A01681720F4861BC8 -:104D300080931A01089510921A0108958091190123 -:104D4000681720F4861B80931901089510921901A9 -:104D500008950F931F93873208F048C08E3108F0F2 -:104D60008DC0803109F477C008F5873009F461C03F -:104D700068F4863009F09DC08091F202817F8E7FB9 -:104D80008093F20281E08093020394C08B3009F497 -:104D900089C08E3009F08DC08091F20282FB2227FB -:104DA00020F991E0922790FB82F95EC0863109F4E8 -:104DB00079C060F4813109F07CC00E94D11B9091D0 -:104DC000160181E08927809316016CC0893109F4AE -:104DD00069C08B3109F06DC08091F20281FB2227FE -:104DE00020F991E0922790FB81F93EC0883309F4C5 -:104DF00059C050F4893209F457C0853309F454C0BE -:104E0000873209F451C055C0833409F44DC028F4E9 -:104E10008A3308F44EC0895332C0883409F049C03F -:104E20000E94D11B0E940F0A0E94D6030E942823D1 -:104E300039C09091F202892F8095817080FB90F9A2 -:104E400029F0966098609093F20234C0997F977F22 -:104E50009093F20227C08091F20283FB222720F96F -:104E600091E0922790FB83F98093F2029923D1F08D -:104E70008091F20281608093F20214C08D5141E072 -:104E800050E060E070E08A019B0104C0000F111F38 -:104E9000221F331F8A95D2F7C901B8010E94911FC2 -:104EA0000E94D11B81E006C061E070E080E090E0EC -:104EB000F5CF80E01F910F91089580E0089580E084 -:104EC0000895CF93C82F80910203813069F018F0C4 -:104ED0008230C9F184C0E0911701F09118018081FE -:104EE000823209F07EC007C0E0911701F0911801ED -:104EF0008081823261F48C2F0E945D27811104C071 -:104F00008C2F0E94A9261DC081E090E01AC08C2F32 -:104F10000E945F27811114C0C43179F048F4CB306E -:104F200079F0C03109F061C082E08093020308C0CB -:104F3000C93219F0C83321F058C01092020355C08D -:104F400081E0817054C0C93291F120F5C43179F10A -:104F5000B0F4C73009F047C08EE180931E0182E3B0 -:104F600080931D018AE080931C0184E180931B01E2 -:104F700088E080931A0188E28093190134C0CE51F1 -:104F8000C63088F5EC2FF0E0EA54FE4F8081809324 -:104F9000010329C0CE34E9F020F4CB3421F56AE0D6 -:104FA00013C0C13579F0C235F1F461E00DC08091D4 -:104FB0000103882319F01092010315C081E080934A -:104FC000020315C061E006C0809101030E94E32541 -:104FD0000AC06AE0809101030E94592604C0109221 -:104FE000020380E004C081E002C080E0AACFCF913C -:104FF00008950E948923811102C00E9465230E94A6 -:10500000A52380931D0380FF02C0869501C080E028 -:105010000C94BC0280911D03982F9695292F30E0A7 -:10502000233031054CF49F5F990F8170892B81608B -:1050300080931D030E94A92380911D0386950C94E3 -:10504000BC0280911D03982F969591F09158990F6D -:105050008170892B80931D038E7F91E009F490E08D -:1050600080911D0390FB80F980931D030E94A9236A -:1050700080911D0386950C94BC0280911D03982F8E -:10508000909590FB80F980931D030E94A923809145 -:105090001D0380FF02C0869501C080E00C94BC0215 -:1050A00090911D03892F86958F5F8F779170843043 -:1050B00028F4880F892B80931D0302C090931D0351 -:1050C00080911D038E7F91E009F490E080911D0393 -:1050D00090FB80F980931D030E94A92380911D03FA -:1050E00086950C94BC0220911D03922F96958927DA -:1050F000982F990F822F8170892B80931D038E7FAB -:1051000091E009F490E080911D0390FB80F9809379 -:105110001D030E94A92380911D0386950C94BC0257 -:1051200080911D03869508955058BB27AA270ED05D -:10513000D1C1C2D130F0C7D120F031F49F3F11F47A -:105140001EF4B7C10EF4E095E7FB9FC1E92FD3D160 -:1051500080F3BA17620773078407950718F071F494 -:105160009EF5EBC10EF4E0950B2EBA2FA02D0B018E -:10517000B90190010C01CA01A0011124FF27591B9C -:1051800099F0593F50F4503E68F11A16F040A22FA2 -:10519000232F342F4427585FF3CF46953795279513 -:1051A000A795F0405395C9F77EF41F16BA0B620B12 -:1051B000730B840BBAF09150A1F0FF0FBB1F661F59 -:1051C000771F881FC2F70EC0BA0F621F731F841F9C -:1051D00048F4879577956795B795F7959E3F08F0C2 -:1051E000B3CF9395880F08F09927EE0F9795879581 -:1051F000089527D108F481E008950CD06BC163D1E4 -:1052000040F05AD130F021F45F3F19F03EC1511106 -:1052100095C14FC170D198F39923C9F35523B1F3C8 -:10522000951B550BBB27AA2762177307840738F015 -:105230009F5F5F4F220F331F441FAA1FA9F333D074 -:105240000E2E3AF0E0E830D091505040E695001C28 -:10525000CAF729D0FE2F27D0660F771F881FBB1FE4 -:10526000261737074807AB07B0E809F0BB0B802DBE -:10527000BF01FF2793585F4F2AF09E3F510568F00A -:1052800004C15CC15F3FECF3983EDCF386957795F3 -:105290006795B795F7959F5FC9F7880F911D96950C -:1052A000879597F90895E1E0660F771F881FBB1F68 -:1052B000621773078407BA0720F0621B730B840B15 -:1052C000BA0BEE1F88F7E095089504D06894B111E9 -:1052D00035C1089518D188F09F5790F0B92F9927BC -:1052E000B751A0F0D1F0660F771F881F991F1AF0F1 -:1052F000BA95C9F712C0B13081F01FD1B1E008955D -:105300001CC1672F782F8827B85F39F0B93FCCF3DD -:10531000869577956795B395D9F73EF490958095E6 -:10532000709561957F4F8F4F9F4F0895E89409C006 -:1053300097FB3EF490958095709561957F4F8F4FC8 -:105340009F4F9923A9F0F92F96E9BB279395F695DE -:10535000879577956795B795F111F8CFFAF4BB0F5C -:1053600011F460FF1BC06F5F7F4F8F4F9F4F16C0C0 -:10537000882311F096E911C0772321F09EE8872F4A -:10538000762F05C0662371F096E8862F70E060E006 -:105390002AF09A95660F771F881FDAF7880F96957F -:1053A000879597F9089588D018F011F08CD038F4CB -:1053B00080C0C4C0E92F9FD0B0F35523C9F3E7FBE9 -:1053C0006217730784079507A8F199F3E92FFF2760 -:1053D00088232AF03197660F771F881FDAF7952FF9 -:1053E0005527442332F091505040220F331F441F61 -:1053F000D2F7BB27E91BF50B621B730B840BB109BA -:10540000C1F222F4620F731F841FB11D31972AF07D -:10541000660F771F881FBB1FEFCF915050405AF087 -:1054200041F0882332F0660F771F881F915050405B -:10543000C1F7939530C08695779567959F5FD9F7AB -:10544000F8CF990F0008550FAA0BE0E8FEEF1616EB -:105450001706E807F907C0F012161306E407F50768 -:1054600098F0621B730B840B950B39F40A2661F0DC -:10547000232B242B252B21F408950A2609F4A1407F -:10548000A6958FEF811D811D089597F99F6780E88C -:1054900070E060E008959F3F31F0915020F48795CF -:1054A00077956795B795880F911D9695879597F98C -:1054B00008959FEF80EC089500240A9416161706AD -:1054C00018060906089500240A94121613061406F5 -:1054D00005060895092E0394000C11F4882352F058 -:1054E000BB0F40F4BF2B11F460FF04C06F5F7F4F10 -:1054F0008F4F9F4F089557FD9058440F551F59F0F7 -:105500005F3F71F04795880F97FB991F61F09F3FB0 -:1055100079F087950895121613061406551FF2CFD9 -:105520004695F1DF08C0161617061806991FF1CF29 -:1055300086957105610508940895E894BB27662750 -:105540007727CB0197F908957CDF08F48FEF089552 -:105550000BD0C0CFB1DF28F0B6DF18F0952309F0EB -:1055600094CFA7CF1124EACFC6DFA0F3959FD1F344 -:10557000950F50E0551F629FF001729FBB27F00D01 -:10558000B11D639FAA27F00DB11DAA1F649F662756 -:10559000B00DA11D661F829F2227B00DA11D621FA5 -:1055A000739FB00DA11D621F839FA00D611D221F5F -:1055B000749F3327A00D611D231F849F600D211D43 -:1055C000822F762F6A2F11249F5750408AF0E1F0E6 -:1055D00088234AF0EE0FFF1FBB1F661F771F881F2F -:1055E00091505040A9F79E3F510570F04ECFA6CF85 -:1055F0005F3FECF3983EDCF3869577956795B7951A -:10560000F795E7959F5FC1F7FE2B880F911D969543 -:10561000879597F90895FA01EE0FFF1F309621053F -:10562000310599F16115710561F48038BFE39B077D -:1056300049F168949038810561F08038BFEF9B078D -:1056400041F0992342F5FF3FE1053105210511F1B4 -:10565000E8940894E795D901AA2329F4AB2FBE2F2B -:10566000F85FD0F310C0FF5F70F4A695E0F7F7394C -:1056700050F019F0FF3A38F49F779F930CD00F90B9 -:1056800007FC905808953EF014CF60E070E080E889 -:105690009FE308954FE79F775F934F933F932F9337 -:1056A0009ED02F913F914F915F9152DF05C019F429 -:1056B0000EF0EBCE42CFFDCE26DFC8F39638C0F712 -:1056C00007F80F92E8942BE33AEA48EB5FE74EDFE6 -:1056D0000F920F920F924DB75EB70F92C0D0EAE0D3 -:1056E000F1E016D04F915F91EF91FF91E595EE1F9C -:1056F000FF1F49F0FE57E0684427EE0F441FFA955C -:10570000E1F74195550B32D00F9007FE26C0089562 -:10571000DF93CF931F930F93FF92EF92DF927B0162 -:105720008C01689405C0DA2EEF011EDFFE01E894BB -:10573000A5912591359145915591AEF3EF0106DD87 -:10574000FE019701A801DA9479F7DF90EF90FF90BE -:105750000F911F91CF91DF9108959B01AC0160E003 -:1057600070E080E89FE349CD90CE95CECCDEE8F3A3 -:105770009923D9F3940F511DBBF39150504094F0ED -:1057800059F0882332F0660F771F881F91505040E0 -:10579000C1F79E3F510544F7880F911D9695879557 -:1057A00097F908955F3FACF0983E9CF0BB27869533 -:1057B00077956795B79508F4B1609395C1F7BB0FDE -:1057C00058F711F460FFE8CF6F5F7F4F8F4F9F4F07 -:1057D000E3CFB4CE0EF05FCE6CCE689456CE93DE9F -:1057E000C8F39923D1F3C6F3DF93CF931F930F939D -:1057F000FF92C92FDD2788232AF02197660F771F94 -:10580000881FDAF720E030E040E85FEB9FE388395B -:1058100020F0803E30F021968F7787DCE2E3F1E0E4 -:1058200003C083DCEFE5F1E073DF8B01BE01EC0127 -:10583000FB2E6F5771097595771F880B990B78DDD3 -:1058400028E132E741E35FE38FDEAF2D9801AE013F -:10585000FF900F911F91CF91DF9178DC3BCEFA0141 -:10586000DC01AA0FBB1F9B01AC01BF5728F4222704 -:105870003327442750781FC0B75188F4AB2F00243A -:10588000469537952795011CA395D2F3002069F022 -:10589000220F331F441FB395DAF30DD045CC61308E -:1058A0007105A0E88A07B94630F49B01AC01662770 -:1058B000772788279078309621F0208331834283A0 -:1058C00053830895AA1BBB1B51E107C0AA1FBB1F2E -:1058D000A617B70710F0A61BB70B881F991F5A957C -:1058E000A9F780959095BC01CD01089597FB072EEF -:1058F00016F4009407D077FD09D00E94622C07FCB3 -:1059000005D03EF4909581959F4F089570956195CF -:105910007F4F0895EE0FFF1F0590F491E02D09943D -:10592000F999FECF92BD81BDF89A992780B5089567 -:10593000A8E1B0E042E050E00C94B82C262FF99991 -:10594000FECF92BD81BDF89A019700B4021639F0DE -:105950001FBA20BD0FB6F894FA9AF99A0FBE0895AF -:105960000196272F0E949F2C0C949E2CDC01CB01CA -:10597000FC01F999FECF06C0F2BDE1BDF89A31965F -:1059800000B40D9241505040B8F70895F894FFCFFD -:10599000640007000CFF0000003F64F30F81105EFD -:1059A000102A10F60F0101DF022808140A321E0027 -:1059B00002040507090B0C0E1011131517181A1CF9 -:1059C0001D1F2123242628292B2D2F303234353733 -:1059D000393B1F0F03764F5F6F7F49694379095940 -:1059E00053633149803F5D8B803FF8BF803FCAE100 -:1059F000803F73ED803FCAE1803FF8BF803F5D8B01 -:105A0000803F3149803F0000803FF16D7F3F75EA64 -:105A10007E3F4C827E3F833F7E3F84287E3F833F94 -:105A20007E3F4C827E3F75EA7E3FF16D7F3F0000F6 -:105A3000803F3F4D3639830436040004C7035A03C0 -:105A400073038C03A503010203040506070809007C -:00000001FF diff --git a/keyboard/planck/keymaps/max/compiled.hex b/keyboard/planck/keymaps/max/compiled.hex deleted file mode 100644 index d9594415fb..0000000000 --- a/keyboard/planck/keymaps/max/compiled.hex +++ /dev/null @@ -1,1449 +0,0 @@ -:100000000C9496020C94DA020C94DA020C94DA0244 -:100010000C94DA020C94DA020C94DA020C94DA02F0 -:100020000C94DA020C94DA020C9478140C944A15AD -:100030000C94AC220C94DA020C94DA020C94DA02DE -:100040000C94DA020C943C030C94DA020C94DA025D -:100050000C94DA020C9414230C94DA020C94DA0255 -:100060000C94DA020C94DA020C94DA020C94DA02A0 -:100070000C94DA020C94DA020C94DA020C94DA0290 -:100080000C94ED0A0C94DA020C94DA020C94DA0265 -:100090000C94DA020C94DA020C94DA020C94DA0270 -:1000A0000C94DA020C94DA020C94DA02B715D91522 -:1000B000C716D915C7161E164116C7169616A916C5 -:1000C00093199319C219C219011A211A771B771BA8 -:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 -:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 -:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 -:10010000F91A071B0E1B151B1F1B07634236B79BF3 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000000000F1A299 -:1001D000F1A3018C028C290014001A0008001500FC -:1001E00017001C0018000C00120013002A002B003E -:1001F00004001600070009000A000B000D000E00A5 -:100200000F0033002800E1001D001B00060019004C -:100210000500110010003600370038003400E000FF -:100220008350E200E30002202C002C00012050004B -:10023000510052004F00290014001A000900130059 -:100240000A000D000F0018001C0033002A002B00CC -:10025000040015001600170007000B00110008002D -:100260000C0012002800E1001D001B000600190010 -:1002700005000E0010003600370038003400E000A2 -:100280008350E200E30002202C002C0001205000EB -:10029000510052004F0035001E001F0020002100B9 -:1002A0002200230024002500260027002A00010048 -:1002B0000320042000500100010001002D002E0049 -:1002C0002F00300001000100440045006800690073 -:1002D0006A006B006C006D006E006F003100010061 -:1002E0000100010001000100010001000120AB003C -:1002F000AA00A900AE0035021E021F022002210240 -:100300002202230224022502260227022A000100DB -:100310000320042000500100010001002D022E02E4 -:100320002F023002010001003A003B003C003D007A -:100330003E003F0040004100420043003102010006 -:100340000100010001000220010001000100AB00DA -:10035000AA00A900AE002803540068006500200030 -:1003600050006C0061006E0063006B0020004B00C9 -:100370006500790062006F00610072006400000097 -:100380002C034F007200740068006F006C0069005D -:100390006E0065006100720020004B00650079006E -:1003A00062006F00610072006400730000000403CB -:1003B000090409026D00040100A0FA09040000010B -:1003C00003010100092111010001223F00070581FD -:1003D0000308000A090401000103010200092111B8 -:1003E000010001224D000705820308000A090402EA -:1003F000000103000000092111010001223600075D -:1004000005830308000A0904030001030000000932 -:100410002111010001223900070584031000011297 -:1004200001100100000008EDFE6060010001020003 -:100430000105010906A101050719E029E7150025B5 -:1004400001950875018102050819012905950575B1 -:10045000019102950175039101050719002977158E -:10046000002501957875018102C005010980A1016F -:10047000850216010026B7001A01002AB700751080 -:1004800095018100C0050C0901A101850316010039 -:10049000269C021A01002A9C02751095018100C059 -:1004A00005010902A1010901A10005091901290598 -:1004B00015002501950575018102950175038101DE -:1004C0000501093009311581257F950275088106DE -:1004D00009381581257F950175088106050C0A38B4 -:1004E000021581257F950175088106C0C0050109A7 -:1004F00006A101050719E029E715002501950875F2 -:1005000001810295017508810105081901290595E8 -:1005100005750191029501750391010507190029DF -:10052000FF150025FF950675088100C011241FBE28 -:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A -:100540001E0390911F03A0912003B09121038730D7 -:10055000904BA740B04BB9F410921E0310921F03AA -:10056000109220031092210314BE84B7877F84BFAA -:1005700088E10FB6F89480936000109260000FBE7F -:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 -:1005900002C005900D92A03CB107D9F713E0A0EC82 -:1005A000B1E001C01D92AE31B107E1F70E94BE116A -:1005B0000C94D72C0C9400000895089581E00895C0 -:1005C00008950C94DD020C94DE020C94E0020E946B -:1005D000A12823E030E0281B3109220F2093C40119 -:1005E0000895282F2F9880918000211108C0877FBF -:1005F0008093800010928D0010928C001BC0886048 -:1006000080938000233019F48FEF9FEF0FC083E0B9 -:1006100090E0821B9109880F991F2FEF3FEFA901EE -:1006200002C0569547958A95E2F7CA0190938D00CE -:1006300080938C000C94E7020E94E70284E0809390 -:10064000C3011092C0010895279A2F988FEF9FEF52 -:1006500090938700809386008AE08093800089E1F0 -:10066000809381000E940A280C941C030E9424039A -:100670006E9A769A0C94DC021F920F920FB60F922C -:1006800011242F933F938F939F93EF93FF93E091C8 -:10069000C101F091C201CF0101969093C2018093F4 -:1006A000C1010090C30102C0F695E7950A94E2F7F4 -:1006B000EF738091C001823019F4E03251F404C02C -:1006C000813039F4EF3329F480916F008D7F80936E -:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B -:1006E000C001E39F900D11240090C40102C09695B3 -:1006F00087950A94E2F790938D0080938C00FF9188 -:10070000EF919F918F913F912F910F900FBE0F907E -:100710001F90189581E008950C948A0308950C9415 -:10072000360380911502882309F448C08091D101D5 -:100730009091D201009779F40E94DE229093D20129 -:100740008093D1018091D30190E0009771F4809162 -:10075000D40190E00AC00E94EA2220910001309169 -:1007600001012817390740F329C00197880F991F05 -:10077000880F991FFC01EB52FE4F608171818281CD -:1007800093810E94530AE091D30184E0E89FF00135 -:100790001124EB52FE4F60817181828193814FE081 -:1007A00050E00E940B0E8091D30190E00196609181 -:1007B000D40170E00E94872C8093D3010C94E10255 -:1007C000109217020C94200A0895089581E08093F6 -:1007D00017020C94E503089508958F929F92AF92AB -:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA -:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 -:10080000FC0100811181C8010E94DB20B8010E9417 -:10081000F2058C01B7010E948C03882309F4CCC136 -:100820000032F0E51F0741F4F7018281882309F4C3 -:1008300058C00E946F0EC0C10132F0E51F0741F49D -:10084000F7018281882309F44CC00E94780EB4C15C -:100850000232F0E51F0751F4F7018281882309F481 -:1008600040C00E946B0E8111F0CFE3CF0332F0E560 -:100870001F0739F4F7018281882399F10E94E6036A -:100880009BC10432F0E51F0739F4F7018281882308 -:1008900041F10E94E00390C10532F0E51F0749F4E1 -:1008A000F70182818823E9F0809117028111F1CF4D -:1008B000E5CF0632F0E51F0739F4F701828188237E -:1008C00081F00E947F0E0AC00732F0E51F0749F44D -:1008D000F7018281882329F00E948A0E0E94EC038E -:1008E0006BC180911702811105C0F70182818111CE -:1008F000CFC018C1003E110579F4F7018281882329 -:1009000009F44DC00E94200A81E0809316021092E3 -:1009100015021092D40150C1023E110559F4F7019D -:1009200082818823E1F10E94200A1092160210921F -:10093000150242C1033E110591F4F701828188231B -:1009400071F10E94200A1092160281E08093150234 -:100950001092D3011092D2011092D1012DC1023513 -:10096000110559F4F7018281882309F425C180918A -:100970000001909101010A970DC00135110579F42C -:10098000F7018281882309F417C1809100019091B9 -:1009900001010A9690930101809300010DC14091DD -:1009A000040183E2EFE1F1E0DE01119601900D9286 -:1009B0008A95E1F7F701808121E030E02C0F3D1F9F -:1009C000280F311DC9012091020130910301FC0162 -:1009D000E20FF31F6081772767FD7095640F711D2B -:1009E000882777FD8095982F0E94A92920E030E084 -:1009F00040E451E40E940E294B015C01F701218182 -:100A000084E090E0821B9109BC01882777FD8095E6 -:100A1000982F0E94A9299B01AC01C501B4010E9435 -:100A2000A6289B01AC0160E070E080E090E40E94A9 -:100A30001C2B20E030E04CED50E40E94B92A4B0121 -:100A40005C01F70182818823D1F04FE050E0C501BD -:100A5000B4010E940B0E809116028823A1F08091B0 -:100A6000D40124E0829FF0011124EB52FE4F8082DA -:100A70009182A282B3828F5F8093D40104C0C501AA -:100A8000B4010E94530A0F3F110508F02ECF94C005 -:100A90008091D00181111FC0043130E5130709F0A6 -:100AA00051C00E948E0381E08093D0010E94DE221B -:100AB0009093CF018093CE011092C7011092C9018B -:100AC0001092C8011092CB011092CA011092CD0170 -:100AD0001092CC0171C08091CE019091CF010E9403 -:100AE000EA22883C910570F48091C701E82FF0E07C -:100AF000EE0FFF1FE853FE4F118300838F5F80933B -:100B0000C7015AC0043880E5180721F005381045A0 -:100B100001F13AC0F7018281882341F01092C501AA -:100B200082E01EC0043830E5130759F58091C501F5 -:100B3000811106C086E20E94371886E20E94FF18E3 -:100B400082E01CC00438F0E51F0741F3053810456A -:100B5000D9F4F7018281882331F01092C60180E236 -:100B60000E944E1929C08091C601811106C087E2FA -:100B70000E94371887E20E94FF1880E20E945519F0 -:100B80001BC00538104529F381E08093C50180938F -:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 -:100BA000DF91CF911F910F91FF90EF90BF90AF9089 -:100BB0009F908F900C94E30280E0A3960FB6F89478 -:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 -:100BD000EF90BF90AF909F908F90089580E090E04D -:100BE000089508959CE0799FF001112490E3899F76 -:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B -:100C0000FE4F859194910895880F991FFC01E45B34 -:100C1000FF4F859194910895880F991FFC01E4532B -:100C2000FE4F8591949108950F931F93CF93DF9377 -:100C3000EC01811521E39207A0F5C11580E3D807E7 -:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 -:100C500007C2C83AD10578F4C53AD10508F06AC090 -:100C6000C130D10509F463C008F4F7C1C430D1051F -:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 -:100C8000C11590E2D90708F0AFC0C11521E0D20725 -:100C900008F0E6C1C03FD10508F4DFC18E01106540 -:100CA0001FC2C03880E5D80700F5C03790E5D907E6 -:100CB00008F0A3C0C11520E5D20709F4ACC050F478 -:100CC000CE01905480319F4008F0C7C1DF708E0183 -:100CD000106A06C2C13080E5D80709F4AEC0C4313D -:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 -:100CF00009F48EC050F4C13890E5D90709F482C0D8 -:100D000008F083C000E011EDEBC1C03181E5D807E8 -:100D100008F4A3C1C11597E5D90708F436C1CE017F -:100D200090578115904108F098C1DF7093C101E0A0 -:100D300010E0D6C1C53AD10509F494C1C63AD1052F -:100D400009F093C102E810E4CBC1C83AD10509F417 -:100D50008FC1C93AD10509F48EC1CA3AD10509F447 -:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 -:100D70008BC1CD3AD10509F48AC1C03BD10509F434 -:100D800089C1CE3AD10509F488C1CF3AD10509F419 -:100D900087C1C13BD10509F486C1C23BD10509F425 -:100DA00085C1C33BD10509F484C1C43BD10509F415 -:100DB00083C1C53BD10509F482C1C63BD10509F405 -:100DC00081C1C73BD10509F480C1C83BD10509F4F5 -:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 -:100DE0007DC100E014E47CC1CE019F700E940C061E -:100DF00078C1DD278E01106C73C1CF70DD278E01A5 -:100E0000146D6EC100E010ED6BC100E012ED68C121 -:100E100000E013ED65C10E94E21B0E94200A0E94BF -:100E2000E4038FEF94E32CE0815090402040E1F701 -:100E300000C000000E94392353C18091F2028160FA -:100E40008093F2024DC10E949A23811102C00E9438 -:100E500076230E94AD2390E090931D0380931C03A2 -:100E6000C23080E5D80721F480911C03816086C0E0 -:100E7000C43090E5D90721F480911C0382607EC0C4 -:100E8000C63020E5D20721F480911C03846076C02F -:100E9000C83080E5D80719F480911C0327C0CA30F8 -:100EA00090E5D90721F480911C03806167C0CC30A4 -:100EB00020E5D20721F480911C0380625FC0CE3010 -:100EC00080E5D80721F480911C03806457C0C031AD -:100ED00090E5D90721F480911C0380684FC0C2318E -:100EE00020E5D20729F480911C038460886046C005 -:100EF000C33080E5D80721F480911C038E7F3EC06B -:100F0000C53090E5D90721F480911C038D7F36C050 -:100F1000C73020E5D20721F480911C038B7F2EC0BF -:100F2000C93080E5D80719F480911C0326C0CB3066 -:100F300090E5D90721F480911C038F7E1FC0CD302E -:100F400020E5D20721F480911C038F7D17C0CF309C -:100F500080E5D80721F480911C038F7B0FC0C1313D -:100F600090E5D90721F480911C038F7707C0C33126 -:100F7000D04531F480911C038B7F877F80931C03C5 -:100F800080911C030E94B123ABC08D2F99278F70D5 -:100F9000992781309105D9F49E012370332702C02F -:100FA000880F991F2A95E2F79C688E0144E0000F94 -:100FB000111F4A95E1F700271370802B912B53E006 -:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 -:100FD000910531F4DC2FCC278E01016F106A80C09F -:100FE0008330910569F4CE018370992701E010E008 -:100FF00002C0000F111F8A95E2F7C8019C680FC05C -:1010000084309105B9F4CE018370992701E010E096 -:1010100002C0000F111F8A95E2F7C8019A6823E009 -:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 -:101030001D2B56C08530910531F4DC2FCC278E0155 -:10104000046F106A4DC0069709F04AC0CF71DD27C2 -:10105000DC2FCC278E01106243C000E010E040C0BE -:101060008E013EC001E810E43BC003E810E438C044 -:1010700002EE14E435C009EE14E432C00AEE14E4C2 -:101080002FC005EB14E42CC006EB14E429C007EBD9 -:1010900014E426C00CEC14E423C00DEC14E420C0CE -:1010A00003E815E41DC00AE815E41AC002E915E4D6 -:1010B00017C004E915E414C001E216E411C003E20C -:1010C00016E40EC004E216E40BC005E216E408C004 -:1010D00006E216E405C007E216E402C00AE216E4DE -:1010E000C801DF91CF911F910F9108959CE0799FE6 -:1010F000F001112490E3899FE00DF11D1124E60F0A -:10110000F11DEE0FFF1FEA52FE4F85919491803E34 -:101110009105E0F4803C910558F58133910509F47F -:101120006FC048F48932910509F463C08A32910591 -:1011300009F46DC072C089339105E9F082389105D8 -:10114000D1F08533910509F44DC067C0833E910508 -:1011500081F138F4803E9105B9F0823E9105D9F0D5 -:101160005CC0863E910561F1873E9105A1F155C0B5 -:101170000E940406089520911C0320FD02C021FF57 -:101180004CC080EE90E049C080911C0380FFF9CFF5 -:1011900089E390E042C080911C0382FF0EC08091E1 -:1011A0001C0384FF03C080E090E037C083EE90E032 -:1011B00034C080911C0382FFF2CF82EE90E02DC0FC -:1011C00080911C0383FF0BC080911C0384FDEBCF37 -:1011D00087EE90E022C080911C0383FFF5CF86EE5E -:1011E00090E01BC080911C0385FF07C089E290E05E -:1011F00014C080911C0385FFF9CF85E390E00DC0FA -:1012000080911C0386FF07C08AE290E006C08091AF -:101210001C0386FFF9CF81E390E00E941406089535 -:101220000C94E502E82FF0E0E25BFE4F8081E82FAE -:10123000EF70F0E082958F7021E030E0A90102C0EC -:10124000440F551F8A95E2F740A308950F931F930B -:10125000CF93DF9385B7806885BF85B7806885BFEA -:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 -:10127000E82FEF70F0E021A182958F70A80102C0E5 -:10128000440F551F8A95E2F7CA01822B81A38C2F48 -:101290000E941209219740F78BE090E061E070E036 -:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 -:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F -:1012C0009D01242B22A3019758F7DF91CF911F9105 -:1012D0000F910C948F03EF92FF920F931F93CF9374 -:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA -:1012F0008C2F0E9412098BE090E040E050E0FC014E -:10130000EE5BFE4F6081E62FEF70F0E020A130E051 -:1013100062956F7002C0359527956A95E2F720FDBA -:1013200009C09701082E02C0220F331F0A94E2F76A -:10133000422B532B019718F7F801929182918F015C -:101340008417950721F051834083D09305018C2F9A -:101350000E941209C15060F68091050187FD2CC0E2 -:101360008150809305018F3F39F08FE99FE001970D -:10137000F1F700C0000020C080911E0290911F0272 -:10138000909327028093260280911C0290911D0267 -:10139000909325028093240280911A0290911B025F -:1013A0009093230280932202809118029091190257 -:1013B00090932102809320020E94910381E0DF91AB -:1013C000CF911F910F91FF90EF900895E82FF0E0DB -:1013D000EE0FFF1FE05EFD4F80819181089508951B -:1013E0000F931F93CF9308E212E0C0E0F8019291AF -:1013F00082918F010E945622C80FF2E000321F072F -:10140000A9F78C2FCF911F910F9108950E949A23D5 -:10141000811102C00E9476230E94BF23809307039C -:101420003E9A809171008D7F8093710082E080935D -:1014300090008AE18093910081E080932A020895D0 -:1014400080912A02811102C00E94060A10927A023B -:1014500010927902809171008D7F8093710080914C -:1014600090008F738093900010923C0210923B0288 -:10147000109273021092740210927502109276020A -:101480001092720210927102E1E5F2E0A1E4B2E082 -:1014900011921192119211921D921D9282E0E137E8 -:1014A000F807B1F70895CF92DF92EF92FF920F9372 -:1014B0001F93CF93DF9320913B02222309F484C032 -:1014C0006B017C0180912A02811102C00E94060AF0 -:1014D00001E712E0C7E0D0E0A7019601F801929180 -:1014E0008291729162918F010E940A29811131C00B -:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 -:10150000118212821382DE01AA0FBB1FAF5BBD4F97 -:1015100011961C921E92C730D105E9F021964481A4 -:1015200055816681778140835183628373831482FE -:1015300015821682178212968D919C91139711969F -:101540009C938E9313961C921E9212973496129629 -:10155000E2CF219708F68091790290917A02019763 -:1015600097FD05C090937A028093790204C010928F -:101570007A02109279028091790290917A022091F8 -:101580007702309178022817390724F010927802F8 -:1015900010927702892BC1F4809171008D7F809326 -:1015A0007100809190008F7380939000109273026D -:1015B00010927402109275021092760210927202CA -:1015C0001092710210923B02DF91CF911F910F9107 -:1015D000FF90EF90DF90CF9008951F920F920FB67B -:1015E0000F9211244F925F926F927F928F929F92EF -:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 -:101600004F935F936F937F938F939F93AF93BF930A -:10161000CF93DF93EF93FF9380913B02882309F4EC -:101620009BC1C0917902D0917A021C161D060CF064 -:1016300093C140902B0250902C0260902D0270902C -:101640002E0220E030E0A901C301B2010E94B52AB8 -:1016500018160CF065C0C130D10509F452C0809154 -:10166000770290917802BE010E94872C7C019093B2 -:1016700078028093770280903D0290903E02A09085 -:101680003F02B090400220E030E040E85FE3C50157 -:10169000B4010E94A62860933D0270933E0280939D -:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 -:1016B000EF5AFD4FA3019201608171818281938174 -:1016C0000E940E2920E030E040E05EE30E94B92A4B -:1016D0009B01AC01C501B4010E94B52A18168CF417 -:1016E000C7010196BE010E94872C909378028093D7 -:1016F000770210923D0210923E0210923F02109229 -:101700004002E0917702F0917802EE0FFF1FEE0F9A -:10171000FF1FEF5AFD4F6081718182819381D0C09C -:10172000C0907302D0907402E0907502F09076023F -:1017300020E030E0A901C701B6010E940A292197E3 -:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A -:10175000EF5AFD4F80809180A280B380A501940153 -:10176000C701B6010E940A2987FF31C0A501940173 -:1017700060E070E08CED93EC0E940E2920E030E0F8 -:1017800040E451E40E940E2920E030E040E05FE3B5 -:101790000E94B92A9B01AC0160E070E080E090E417 -:1017A0000E941C2B9B01AC01C501B4010E94B92A07 -:1017B0009B01AC01C701B6010E940A2987FF07C03F -:1017C000A701960160E070E08CED93E439C0A501BB -:1017D0009401C701B6010E94B52A18160CF055C035 -:1017E000A501940160E070E08CED93E40E940E2965 -:1017F00020E030E040E451E40E940E2920E030E097 -:1018000040E05FE30E94B92A9B01AC0160E070E018 -:1018100080E090E40E941C2B9B01AC01C501B40147 -:101820000E94B92A9B01AC01C701B6010E94B52AEA -:1018300018165CF5A701960160E070E08CED93EC62 -:101840000E940E2920E030E040E451E40E940E297D -:1018500020E030E040E05FE30E94B92A9B01AC0148 -:1018600060E070E080E090E40E941C2B9B01AC01E2 -:10187000C701B6010E94B92A609373027093740283 -:10188000809375029093760213C0FE01EE0FFF1F46 -:10189000EE0FFF1FEF5AFD4F80819181A281B3812E -:1018A0008093730290937402A0937502B0937602B2 -:1018B000609173027091740280917502909176022A -:1018C00020912802309129022F3F4FEF340731F049 -:1018D0002F5F3F4F30932902209328020E94950EDC -:1018E0006B017C0120E034E244EF51E40E940A29BC -:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 -:1019000081E4F82E20E030E040E051E4C701B60168 -:101910000E94B92A9B01AC0160E074E284E79BE479 -:101920000E940E296B017C010E947B297093970015 -:1019300060939600209106013091070140910801C3 -:1019400050910901C701B6010E94B92A0E947B2962 -:10195000709399006093980080913C02882309F469 -:1019600033C1C0903702D0903802E0903902F09035 -:101970003A0220E030E0A901C701B6010E94B52A71 -:101980001816D4F580912802909129028F3F2FEFED -:10199000920729F001969093290280932802C701AB -:1019A000B6010E94950E20E030E040E051E40E9434 -:1019B000B92A9B01AC0160E074E284E79BE40E94D9 -:1019C0000E296B017C010E947B2970939700609324 -:1019D0009600209106013091070140910801509135 -:1019E0000901C701B6010E94B92A0E947B297093A0 -:1019F00099006093980008C010929700109296008A -:101A00001092990010929800609131027091320208 -:101A10006F5F7F4F70933202609331022091960086 -:101A20003091970080E090E0232BF1F0C091960078 -:101A3000D09197000E94A7296B017C01BE0180E034 -:101A400090E00E94A7299B01AC0160913302709144 -:101A5000340280913502909136020E940E2920E0D6 -:101A60003FEF4FE757E410C00E94A7296B017C01AC -:101A700020E030EE4FEF54E4609133027091340275 -:101A800080913502909136020E94B92A9B01AC01E7 -:101A9000C701B6010E94B52A87FD96C080912F022A -:101AA0008F5F80932F0290E0209103033091040315 -:101AB00082179307A0F080910E03882319F01092EB -:101AC0002F020DC0809171008D7F809371008091F5 -:101AD00090008F738093900010923C027DC08091A3 -:101AE0003002C0912F02811128C0C0900803D0900D -:101AF0000903E0900A03F0900B0320E030E0A90115 -:101B0000C701B6010E94B52A1816BCF481E0809383 -:101B1000300210923702109238021092390210925D -:101B20003A02C0923302D0923402E0923502F0922F -:101B30003602C150C0932F0243C01092300210925F -:101B4000290210922802E0910503F091060348E073 -:101B5000C49FE00DF11D112480819181A281B38188 -:101B60008093370290933802A0933902B0933A02DF -:101B700020E030E040E85EE36481758186819781F2 -:101B80000E94B92A6B017C0180910A01682F70E0E4 -:101B900080E090E00E94A72920E030E048EC52E489 -:101BA0000E940E299B01AC01C701B6010E94B92A0F -:101BB000609333027093340280933502909336021F -:101BC00010923202109231028091070380FD04C00E -:101BD00010923C0210923B02FF91EF91DF91CF9166 -:101BE000BF91AF919F918F917F916F915F914F9135 -:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB -:101C00009F908F907F906F905F904F900F900FBE3E -:101C10000F901F901895CF92DF92EF92FF92CF9383 -:101C2000DF936B017C01EA0180912A02811102C0DD -:101C30000E94060A8091070380FF46C080917902C6 -:101C400090917A0208970CF03FC0809171008D7FCF -:101C50008093710080913C0281110E94200A81E0F2 -:101C600080933B02109229021092280220E030E07B -:101C7000A901C701B6010E94B52A1816DCF48091AB -:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 -:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 -:101CA000FF1FEF5BFD4FD183C083019690937A02B3 -:101CB000809379028091710082608093710080919D -:101CC0009000806880939000DF91CF91FF90EF901B -:101CD000DF90CF90089580910703817008958091DF -:101CE00007038160809307030E94C3230C94EB03D6 -:101CF000809107038E7F809307030C94C323809108 -:101D00007B0290E0019666E070E00E94872C809351 -:101D10007B02089580917B0290E0019766E070E07D -:101D20000E94872C80937B0208958F929F92AF929E -:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 -:101D4000DF936B017C01C0912802D0912902BE0172 -:101D500080E090E00E94A7294B015C01A701960159 -:101D600060E070E08CE594E40E940E299B01AC01D8 -:101D7000C501B4010E94B92A0E947B2920917B02EF -:101D8000233009F473C028F4222351F02130E9F004 -:101D90002CC1243009F4A0C0253009F4E0C025C1CD -:101DA00080E090E0A0E0BFE38093060190930701FC -:101DB000A0930801B093090110922B0210922C02FB -:101DC00010922D0210922E0210C110922B0210922E -:101DD0002C0210922D0210922E026431710540F4F3 -:101DE0006A30710560F520E030E040E85EE32BC02A -:101DF000693C710508F0AAC080E090E00E94A72924 -:101E000020E030E040EA51E40E94A52820E030E0E4 -:101E100044E353E40E940E299B01AC010E94B92ABD -:101E200020E030E040E05EE30E94B92A9B01AC0173 -:101E300060E070E080E09EE30E94A52844C020E0BE -:101E400030E040E05FE3C701B6010E94B92A6B01B0 -:101E50007C0180E090E0A0E0BEE3809306019093D7 -:101E60000701A0930801B0930901BFC010922B0293 -:101E700010922C0210922D0210922E024AE0469FE0 -:101E80009001479F300D1124C90168EB7BE00E944F -:101E9000732CBC016C5D754077FF03C07195619533 -:101EA0007109882777FD8095982F0E94A9292EE334 -:101EB00033EC4EE259E30E94B92A20E030E040ECD6 -:101EC0005EE30E94A6286093060170930701809349 -:101ED00008019093090189C010922B0210922C02E4 -:101EE00010922D0210922E02CE0183709927892B19 -:101EF000E1F0BE016170772780E090E00E94A729A1 -:101F000020E030E040E05EE30E94B92A20E030E0CB -:101F100040E45FE30E94A6286093060170930701E6 -:101F200080930801909309010CC080E090E0A0E04C -:101F3000BFE38093060190930701A0930801B0933B -:101F40000901C770DD27CD2B09F04FC010920601A3 -:101F500010920701109208011092090146C01092D8 -:101F60002B0210922C0210922D0210922E0200E0F1 -:101F700010E020E03FE30093060110930701209357 -:101F80000801309309016739710578F180E090E02C -:101F90000E94A72920E030E047E153E40E94A528F1 -:101FA00020E030E04AE754E40E940E2920E030E0CF -:101FB00048E452E40E94B92A20E030E040EA51E4CB -:101FC0000E94EB290E947629660F771F660F771F04 -:101FD000FB01EE5AFE4F2081318142815381C701BE -:101FE000B6010E94B92A6B017C01C701B601DF91DD -:101FF000CF911F910F91FF90EF90DF90CF90BF9006 -:10200000AF909F908F90089580918C020895CF9308 -:10201000DF9300D01F92CDB7DEB79C0180911303F0 -:10202000843019F593E099833B832A839093E900E8 -:102030008FEF9091E800815095FD06C095ED9A953F -:10204000F1F700008111F5CF8091E80085FF0DC008 -:1020500040E050E063E070E0CE0101960E9468121B -:102060008091E8008E778093E8000F900F900F909A -:10207000DF91CF910895CF93DF9300D01F92CDB71A -:10208000DEB720911303243021F522E029839B83BE -:102090008A8383E08093E9008FEF9091E80081507C -:1020A00095FD06C095ED9A95F1F700008111F5CFE9 -:1020B0008091E80085FF0DC040E050E063E070E0F3 -:1020C000CE0101960E9468128091E8008E7780937D -:1020D000E8000F900F900F90DF91CF91089520911D -:1020E00013032430F1F422E02093E9002FEF309124 -:1020F000E800215035FD06C035ED3A95F1F70000B6 -:102100002111F5CF2091E80025FF0BC040E050E001 -:1021100065E070E00E9468128091E8008E778093FD -:10212000E8000895CF93DF93EC019091130394306E -:1021300009F046C0809115018823D9F080911601DD -:102140008823B9F09093E9008FEF9091E8008150D7 -:1021500095FD06C095E19A95F1F700008111F5CF44 -:102160008091E80085FF2CC040E050E060E170E025 -:1021700017C081E08093E9008FEF9091E8008150D3 -:1021800095FD06C095ED9A95F1F700008111F5CF08 -:102190008091E80085FF14C040E050E068E070E006 -:1021A000CE010E9468128091E8008E778093E8004B -:1021B00080E1FE01ACE7B2E001900D928A95E1F773 -:1021C000DF91CF91089580911203811109C00E947F -:1021D000FD130E945A148091E20084608093E20013 -:1021E0000895109212030895089508950C94A12261 -:1021F00042E061EC81E00E94771342E061EC82E012 -:102200000E94771342E061EC83E00E94771342E181 -:1022100061EC84E00C94771380911503833009F40A -:1022200055C030F4813071F0823009F48EC00895C9 -:102230008A3009F47AC08B3009F460C0893009F023 -:102240009CC020C080911403813A09F096C080910F -:10225000E800877F8093E80080911803909119032C -:10226000892B21F460E18CE792E003C060E080E01C -:1022700090E070E00E94B3128091E8008B77809329 -:10228000E800089580911403813209F076C08091AE -:10229000180390911903009719F0039709F06DC086 -:1022A0008091E800877F8093E8008091E80082FDBC -:1022B00005C0809113038111F8CF5FC08091F100B8 -:1022C00080938C028091E8008B7753C08091140337 -:1022D000813A09F052C08091180390911903892B1B -:1022E00009F04BC08091E800877F8093E8008091DF -:1022F000E80080FFFCCF8091150136C08091140367 -:102300008132D9F58091180390911903892BA9F591 -:102310008091E800877F8093E8000E94AC13809151 -:102320001603809315010C94E21B809114038132F3 -:1023300021F58091E800877F8093E8000E94AC132C -:102340008091170380938D02089580911403813A40 -:10235000A1F48091E800877F8093E8008091E800F5 -:1023600080FFFCCF80918D028093F1008091E80086 -:102370008E778093E8000C94AC13089584B7877F20 -:1023800084BF88E10FB6F8948093600010926000DB -:102390000FBE90E080E80FB6F894809361009093B0 -:1023A00061000FBE0E944F170E94FD130E945A1435 -:1023B0008091E20084608093E20078940E94E016AD -:1023C0000E9451178BE091E00E94FB16809113034D -:1023D000853069F40E946222809111038823B1F351 -:1023E0000E949022882391F30E945212EFCF0E9404 -:1023F0005917ECCF292F332723303105C9F064F466 -:102400002130310581F02230310509F043C08DE6DD -:1024100090E022EB33E042C021323105F1F022326C -:10242000310541F137C082E190E02FE134E036C060 -:1024300099278130910541F08230910541F0892B37 -:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 -:10245000F3E0849190E09F0121C06430D8F4E62F2E -:10246000F0E0EE0FFF1FE255FE4F2081318189E041 -:1024700090E014C0643070F470E0FB01EE0FFF1FB9 -:10248000EA55FE4F20813181FB01EE55FE4F8081E0 -:1024900090E004C080E090E020E030E0FA01318379 -:1024A0002083089580E189BD82E189BD09B400FEE1 -:1024B000FDCF8091D8008F7D8093D8008091E0007F -:1024C00082608093E0008091E00081FDFCCF089560 -:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 -:1024E000EC018B016A010E94CB13811133C0C1142E -:1024F000D10439F0F60180819181081B190BC80FB6 -:10250000D91FE12CF12C0115110519F18091E8007A -:1025100085FD16C08091E8008E778093E800C11495 -:10252000D10449F0F60180819181E80EF91EF18213 -:10253000E08285E00FC00E94CB13882321F30AC0FC -:1025400089918093F10001501109FFEFEF1AFF0A02 -:10255000DACF80E0DF91CF911F910F91FF90EF9044 -:10256000DF90CF90089520911A0330911B03261716 -:10257000370748F06115710539F42091E8002E778E -:102580002093E80001C0B90140E061157105A9F18F -:1025900020911303222309F443C0253009F442C0DB -:1025A0002091E80023FD40C02091E80022FD32C0C8 -:1025B0002091E80020FFE9CF4091F3002091F20044 -:1025C00030E0342BFC01CF016115710559F0283042 -:1025D000310540F481918093F100615071092F5FC2 -:1025E0003F4FF1CF41E02830310509F040E0209124 -:1025F000E8002E772093E800C8CF4111C9CF0AC068 -:1026000080911303882361F0853061F08091E800A8 -:1026100083FD0AC08091E80082FFF2CF80E0089538 -:1026200082E0089583E0089581E0089520911A03DF -:1026300030911B032617370748F06115710539F4EF -:102640002091E8002E772093E80001C0B901FC0139 -:1026500020E06115710591F180911303882309F43D -:1026600040C0853009F43FC08091E80083FD3DC043 -:102670008091E80082FD2FC08091E80080FFE9CFC3 -:102680002091F3008091F20090E0922B611571058A -:1026900059F08830910540F424912093F10031964F -:1026A000615071090196F2CF21E0089709F020E00E -:1026B0008091E8008E778093E800CBCF2111CCCFBA -:1026C0000AC080911303882361F0853061F0809106 -:1026D000E80083FD0AC08091E80082FFF2CF80E02D -:1026E000089582E0089583E0089581E00895982F89 -:1026F000973058F59093E900981739F07091EC00F5 -:102700002091ED005091F00003C0242F762F50E06F -:1027100021FF19C03091EB003E7F3093EB003091E8 -:10272000ED003D7F3093ED003091EB003160309350 -:10273000EB007093EC002093ED005093F00020919B -:10274000EE0027FF07C09F5FD3CF8F708093E90013 -:1027500081E0089580E008958091140387FF11C0FF -:102760008091E80082FD05C0809113038111F8CFAC -:1027700011C08091E8008B770BC0809113038823F0 -:1027800049F08091E80080FFF8CF8091E8008E77D3 -:102790008093E80008952091E4003091E50095E6EB -:1027A0004091EC00842F817040FF22C08091E800AE -:1027B00080FD1CC080911303882391F0853091F037 -:1027C0008091EB0085FD10C04091E4005091E50040 -:1027D0004217530729F39A01915011F784E00895A5 -:1027E00082E0089583E0089581E0089580E00895EF -:1027F0004091E80042FFDECF08950E946B140E94D2 -:102800007314E0EEF0E0808181608083E8EDF0E019 -:1028100080818F77808319BCA7EDB0E08C918E7F8B -:102820008C9380818F7E80831092120308950F9382 -:102830001F93CF93DF930E946B140E947314C8ED13 -:10284000D0E088818F7788838881806888838881B9 -:102850008F7D888319BC1092130310920F0310927E -:1028600011031092100300EE10E0F80180818B7FBD -:10287000808388818160888342E060E080E00E94FC -:102880007713E1EEF0E080818E7F8083E2EEF0E06E -:10289000808181608083808188608083F80180816D -:1028A0008E7F8083888180618883DF91CF911F91A3 -:1028B0000F910895E8EDF0E080818F7E8083E7ED51 -:1028C000F0E080818160808384E082BF81E080933A -:1028D00012030C941714E8EDF0E080818E7F808362 -:1028E0001092E20008951092DA001092E10008952B -:1028F0001F920F920FB60F9211242F933F934F9375 -:102900005F936F937F938F939F93AF93BF93EF9357 -:10291000FF938091E10082FF0BC08091E20082FF73 -:1029200007C08091E1008B7F8093E1000E94DF1659 -:102930008091DA0080FF1FC08091D80080FF1BC00B -:102940008091DA008E7F8093DA008091D90080FF39 -:102950000DC080E189BD82E189BD09B400FEFDCFD3 -:1029600081E0809313030E94E31005C019BC10920C -:1029700013030E94F1108091E10080FF19C0809143 -:10298000E20080FF15C08091E2008E7F8093E2001C -:102990008091E20080618093E2008091D8008062A3 -:1029A0008093D80019BC85E0809313030E94F51032 -:1029B0008091E10084FF30C08091E20084FF2CC050 -:1029C00080E189BD82E189BD09B400FEFDCF80911F -:1029D000D8008F7D8093D8008091E1008F7E809316 -:1029E000E1008091E2008F7E8093E2008091E2001E -:1029F00081608093E20080910F03882311F084E0CE -:102A000007C08091E30087FD02C081E001C083E040 -:102A1000809313030E94F6108091E10083FF29C088 -:102A20008091E20083FF25C08091E100877F809341 -:102A3000E10082E08093130310920F038091E10084 -:102A40008E7F8093E1008091E2008E7F8093E20090 -:102A50008091E20080618093E20042E060E080E0EB -:102A60000E9477138091F00088608093F0000E94AC -:102A7000F410FF91EF91BF91AF919F918F917F9152 -:102A80006F915F914F913F912F910F900FBE0F90DB -:102A90001F9018951F920F920FB60F9211242F932B -:102AA0003F934F935F936F937F938F939F93AF93D6 -:102AB000BF93CF93DF93EF93FF93C091E900CF7063 -:102AC0008091EC00D82FD17080FDD0E81092E90001 -:102AD0008091F000877F8093F00078940E948E159B -:102AE0001092E9008091F00088608093F000CD2B77 -:102AF000CF70C093E900FF91EF91DF91CF91BF912B -:102B0000AF919F918F917F916F915F914F913F9185 -:102B10002F910F900FBE0F901F9018951F93CF937A -:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E -:102B3000CDBFE4E1F3E088E08E0F9091F100919336 -:102B40008E13FBCF0E940C118091E80083FF1FC100 -:102B50008091140390911503492F50E04A3051059C -:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB -:102B700081F0823809F00BC1809118038F70809327 -:102B8000E9008091EB0085FB882780F91092E9002D -:102B900006C0809110039091110391118260909171 -:102BA000E800977F9093E8008093F1001092F10085 -:102BB000C8C0282F2D7F09F0EAC0882319F0823081 -:102BC00061F0E5C080911603813009F0E0C09330D8 -:102BD00009F080E0809311032BC0809116038111CE -:102BE00027C0809118038F7009F4D1C08093E90049 -:102BF0002091EB0020FF1CC0933021F48091EB006A -:102C0000806214C09091EB0090619093EB0021E002 -:102C100030E0A90102C0440F551F8A95E2F74093A6 -:102C2000EA001092EA008091EB0088608093EB004C -:102C30001092E9008091E800877F86C08111A7C0CB -:102C4000109116031F778091E3008078812B809389 -:102C5000E3008091E800877F8093E8000E94AC1336 -:102C60008091E80080FFFCCF8091E3008068809332 -:102C7000E300111102C082E001C083E080931303DE -:102C800086C08058823008F082C0809116039091EF -:102C900017038C3D53E0950779F583E08A838AE238 -:102CA00089834FB7F894DE01139620E03EE051E2AD -:102CB000E32FF0E050935700E49120FF03C0E2952A -:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 -:102CD00001C0C0968D939D932F5F243149F74FBF5C -:102CE0008091E800877F8093E8006AE270E0CE017F -:102CF00001960E94B31214C0AE014F5F5F4F609106 -:102D000018030E94FA11BC01009709F440C0909189 -:102D1000E800977F9093E80089819A810E941613BA -:102D20008091E8008B778093E80031C0803879F596 -:102D30008091E800877F8093E80080910F03809363 -:102D4000F1008091E8008E778093E8000E94AC1338 -:102D50001EC081111CC0909116039230C0F4809166 -:102D6000E800877F8093E80090930F030E94AC13E4 -:102D700080910F03811106C08091E30087FD02C09E -:102D800081E001C084E0809313030E94F8108091D9 -:102D9000E80083FF0AC08091E800877F8093E80005 -:102DA0008091EB0080628093EB00AA960FB6F894B6 -:102DB000DEBF0FBECDBFDF91CF911F910895089563 -:102DC000CF93809113038823A1F0C091E900CF70C5 -:102DD0009091EC00892F817090FD80E8C82B1092B3 -:102DE000E9008091E80083FD0E948E15CF70C093AA -:102DF000E900CF91089590939302809392020895F1 -:102E0000E0919202F0919302309721F00190F081CD -:102E1000E02D099480E00895E0919202F0919302F0 -:102E2000309721F00280F381E02D09940895E0911C -:102E30009202F0919302309721F00480F581E02D09 -:102E4000099408952091900230919102821793077E -:102E500071F09093910280939002E0919202F09130 -:102E60009302309721F00680F781E02D09940895B0 -:102E700020918E0230918F028217930771F0909308 -:102E80008F0280938E02E0919202F091930230972C -:102E900021F00084F185E02D0994089508950C94A3 -:102EA0004E170E94D5220E9426090E945B230C9493 -:102EB0000A285F926F927F928F929F92AF92BF92F9 -:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 -:102ED00000D000D01F92CDB7DEB70E946B099DE9EC -:102EE000C92E92E0D92E03E010E0AA24A394B12CBD -:102EF000502E802F0E94E6094C01F60172906290DC -:102F00006F016826792661147104A1F4015011093A -:102F100078F78FEF89838A831B820E94DE2281608B -:102F2000782F9D838C8349815A816B818D810E948A -:102F3000091838C08091F20281FD0E94EF092BE050 -:102F400030E07501022E02C0EE0CFF1C0A94E2F77D -:102F5000C70186219721892B09F129835A828E2066 -:102F60009F2091E0892809F490E09B830E94DE2253 -:102F70008160782F9D838C8349815A816B818D81FB -:102F80000E940918000F111FF801EB56FD4F8081B8 -:102F90009181E826F926F182E08204C021503109AE -:102FA00080F6B4CF0E944225109194020E9400172F -:102FB0001817D1F00E940017809394020F900F9081 -:102FC0000F900F900F90DF91CF911F910F91FF9075 -:102FD000EF90DF90CF90BF90AF909F908F907F90B9 -:102FE0006F905F900C9410090F900F900F900F90BE -:102FF0000F90DF91CF911F910F91FF90EF90DF9095 -:10300000CF90BF90AF909F908F907F906F905F9088 -:103010000895CF93DF93CDB7DEB72B970FB6F89413 -:10302000DEBF0FBECDBF4F83588769877A878B87F6 -:10303000DE01119686E0FD0111928A95E9F785E09F -:10304000FE01379601900D928A95E1F749815A81E8 -:103050006B817C818D819E810E94801E2B960FB694 -:10306000F894DEBF0FBECDBFDF91CF910895CF930F -:10307000882309F4C2C0C82F823859F40E9400176F -:1030800081FDBBC089E30E945A210E94272289E367 -:103090000CC0833879F40E94001780FDAEC083E530 -:1030A0000E945A210E94272283E50E949C21CF91F1 -:1030B0000C942722843859F40E94001782FD9DC089 -:1030C00087E40E945A210E94272287E4EECF8CEFEA -:1030D0008C0F813A48F48C2F0E94722781118DC089 -:1030E0008C2F0E945A21E3CF80E28C0F883048F465 -:1030F000C77081E001C0880FCA95EAF70E94E021FD -:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 -:1031100031F083E890E005C081E890E002C082E8E9 -:1031200090E0CF910C94221788E58C0F833108F042 -:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 -:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 -:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 -:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 -:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B -:1031800090E038C082EE90E035C089EE90E032C029 -:103190008AEE90E02FC085EB90E02CC086EB90E0AB -:1031A00029C087EB90E026C08CEC90E023C08DEC2A -:1031B00090E020C083E891E01DC08AE891E01AC049 -:1031C00082E991E017C084E991E014C081E292E0C5 -:1031D00011C083E292E00EC084E292E00BC085E26F -:1031E00092E008C086E292E005C087E292E002C069 -:1031F0008AE292E0CF910C943817CF9108958823FA -:1032000009F44BC0823859F40E94001781FF45C071 -:1032100089E30E945A210E94272289E30CC0833847 -:1032200071F40E94001780FF38C083E50E945A2184 -:103230000E94272283E50E949C210C942722843837 -:1032400059F40E94001782FF28C087E40E945A2187 -:103250000E94272287E4EFCF9CEF980F913A58F312 -:1032600090E2980F983050F4877091E001C0990F68 -:103270008A95EAF7892F0E94E621DFCF9BE5980F18 -:10328000933020F480E090E00C942217885A833128 -:1032900020F480E090E00C9438170895882321F002 -:1032A0000E94E0210C9427220895882321F00E9497 -:1032B000E6210C94272208957F928F929F92AF92DD -:1032C000BF92CF92DF92EF92FF920F931F93CF9313 -:1032D000DF931F92CDB7DEB77C01C62E772EFC019F -:1032E000058102950F70128111110E94FD210E942B -:1032F0005321882379F0112369F080E28C0D883006 -:1033000048F082E00E943C210E94532191E0D82E97 -:10331000D92601C0D12CE72DE295EF70F0E0E05AFC -:10332000FF4F0C949B2C872D807F072D0F708823D7 -:1033300011F00295007F112389F0002309F499C14F -:1033400080E28C0D883020F4802F0E94E02103C0A1 -:10335000802F0E94F0210E9427228BC18C2D0E9479 -:10336000FF18002309F4C3C180E28C0D883020F4DB -:10337000802F0E94E62103C0802F0E94F6210E9428 -:103380002722B5C1872D807F972D9F70803211F441 -:10339000892F03C0892F8295807FCC2021F0F1E016 -:1033A000CF16A1F01DC0112339F0002319F101300F -:1033B00009F50E9410229BC1002319F0013009F485 -:1033C00096C189830E941322898110C1112321F0A3 -:1033D000063008F08CC10EC0053008F088C106C167 -:1033E000112359F0002331F0F701958190FF41C17D -:1033F0009F7095830E944E197AC1002309F4F6C08C -:103400003EC1872D86958695837090E0009719F0D0 -:10341000019761F06CC1112321F08C2D972D9370D1 -:1034200002C080E090E00E94221761C1112321F0C8 -:103430008C2D972D937002C080E090E00E94381789 -:1034400056C18C2D112319F00E944A2402C00E94FB -:10345000B2240E9437254BC1872D837009F052C0DA -:10346000111145C18C2D829586958770880F880F24 -:103470009C2D9F70892E912CA12CB12C082E04C05C -:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 -:103490000FE010E020E030E0B901A80104C0440FC3 -:1034A000551F661F771F8A95D2F7CB01BA01609529 -:1034B00070958095909503C060E070E0CB01272D5A -:1034C00026952695237030E02230310569F02330AF -:1034D000310589F0682979298A299B29213031050C -:1034E00071F00E94C81F03C1682979298A299B2984 -:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 -:10350000AC1FF5C0112319F0872D817001C086957D -:10351000882309F4ECC08C2D829586958770880FDE -:10352000880F9C2D9F70892E912CA12CB12C082ED8 -:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 -:1035400014C00FE010E020E030E0B901A80104C091 -:10355000440F551F661F771F8A95D2F7CB01BA011A -:10356000609570958095909503C060E070E0CB0108 -:10357000272D269526952370422F50E04230510585 -:1035800069F04330510589F0682979298A299B29F6 -:103590004130510571F00E94A220A9C06829792903 -:1035A0008A299B290E94BE20A2C00E94A220C50198 -:1035B000B4010E9486209BC08C2D90E0FC01E05E4F -:1035C000F109E531F10508F050C0E059FF4F0C94C6 -:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 -:1035E0001F20802F07CF0E944020802F0E94551956 -:1035F0007EC0112341F0053008F079C0872D8F710E -:103600000E94652074C0063008F071C0F7CF112306 -:1036100039F0872D8F710E941F2069C01123C9F3D3 -:10362000872D8F710E94402062C0112329F0872DC1 -:103630008F710E940A205BC00E94002058C0112395 -:1036400051F0172D1F71812F0E941F2063E0812FE1 -:103650000E9433214CC081E00E943C21023008F4DA -:1036600046C082E00E943C2142C0112331F0002379 -:1036700081F28C2D0E9437183AC0002389F28C2DDC -:103680000E94FF1834C0472D4F706C2DC7010E9457 -:10369000EE050E94241F2BC0111129C0472D4F7029 -:1036A00050E042305105B9F04CF44115510581F01C -:1036B00041305105E1F40E94322819C043305105D0 -:1036C00069F04430510599F48C2D0E9484280FC074 -:1036D0000E941B280CC00E944E2809C00E9461282D -:1036E00006C0472D4F706C2DC7010E94F105DD20EB -:1036F000F9F00E942F2180FD1BC0F70112820E9469 -:1037000029210E941F20C7010E94A71B0E94292176 -:103710000F90DF91CF911F910F91FF90EF90DF906D -:10372000CF90BF90AF909F908F907F900C9440204F -:103730000F90DF91CF911F910F91FF90EF90DF904D -:10374000CF90BF90AF909F908F907F9008950F93F0 -:103750001F93CF93DF93EC01888199812B813C816A -:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 -:10377000ED03882371F0688179818A810E94252177 -:103780008C010E94DA200E94A11FB801CE010E9484 -:103790005C19DF91CF911F910F9108950E94FD2137 -:1037A0000E940D220E94D2210E9427220E94E82519 -:1037B0000E94372580E090E00E94221780E090E090 -:1037C0000C9438170E94ED210C94CE1B0E941A21F4 -:1037D000292F22952F7030E02C3031054CF42A30FF -:1037E00031056CF42250310922303105A8F407C0AC -:1037F0002C30310569F02F30310551F00DC0803F7C -:1038000069F018F4803E40F409C0843F29F406C0F2 -:1038100093FB882780F9089580E0089581E008955A -:10382000CF93DF9300D000D01F92CDB7DEB70F90BB -:103830000F900F900F900F90DF91CF910895CF933D -:10384000DF9300D000D000D0CDB7DEB726960FB6FC -:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 -:10386000CF93DF93C0919D0216E080919E02C8170E -:1038700099F0D0E01C9FF0011D9FF00D1124E1563E -:10388000FD4F4081518162817381848195810E94C5 -:103890001F1C2196C770E9CFDF91CF911F9108952A -:1038A0004091CF025091D0026091D1027091D2022A -:1038B0008091D3029091D4020C941F1C8091D40269 -:1038C00082958F7009F054C08091D102882309F449 -:1038D0004FC080919D02A0919E026091CF02709195 -:1038E000D0024091D2025091D302B6E08A1709F477 -:1038F0003FC090E041155105C1F17F3F11F46F3F8A -:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 -:10391000218172132AC02081621327C022812111C4 -:1039200024C0238134812417350710F42150310934 -:10393000241B350B283C3105C0F42091D4022F7094 -:1039400020612093D40226E0289FF001299FF00DEA -:103950001124EC55FD4F80818F70806180838FEC46 -:1039600092E00E94A71B0C942F1C01968770BECF7B -:103970000895CF92DF92EF92FF920F931F93CF9310 -:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 -:10399000CDBF8C0185E0F801DE011D9601900D92EE -:1039A0008A95E1F7D8014C9111965C911197129686 -:1039B0006C9112971396CD90DC9014973091CF02B2 -:1039C0007091D0028091D2029091D302009709F4B5 -:1039D0006BC17F3F19F43F3F09F466C1E090D1020B -:1039E000EE2009F4C0C02091D402C816D90628F0F0 -:1039F000F601E81BF90BCF0104C0809590958C0D62 -:103A00009D1DFF24F394883C910578F0F12C207FD4 -:103A100009F0C6C07C2DD98AC88A89890E94101CE9 -:103A20008FEC92E00E94A71BB1C0822F807F09F02B -:103A300046C0751314C0341312C0611110C02F702A -:103A400020612093D4020E94501C8FEC92E00E94CF -:103A5000A71B8091D402D80115968C932EC0CD2837 -:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 -:103A700080919D0220919E0236E0821709F45AC07F -:103A800090E0389FF001399FF00D1124E156FD4F71 -:103A90007181571306C07081471303C07281711181 -:103AA00003C001968770E9CFF62E662309F418C18A -:103AB0008091D40281608093D402F12C11C17513DE -:103AC00008C0341306C0611104C08091D402D8012B -:103AD000C3C04D875E878D859E856A8B0E94E61BDD -:103AE0006A898823E1F16623D1F12091D402822FE3 -:103AF00082958F7090E0029774F08091CF02909140 -:103B0000D00298878F831986DB86CA862C87CE01E0 -:103B100007960E94A71B86E0F801AFECB2E0019087 -:103B20000D928A95E1F70E945E1C0E94501CFF24B2 -:103B3000F394D6C04D875E878D859E850E941A219D -:103B4000292F22952F7030E0223031050CF0BCC0B7 -:103B50009F7009F0B6C0805E883008F4C1C0C8010B -:103B60000E94A71BE4CFC816D90608F453C0F6017B -:103B7000E81BF90BCF01883C910508F450C0F12CEB -:103B80007C2DD98AC88A89890E94101CEFECF2E04A -:103B900086E0DF011D928A95E9F70E94501CA0C0C3 -:103BA000751314C0341312C0611110C08091D40277 -:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 -:103BC000DF011D928A95E9F7FE2C8AC04D875E873A -:103BD0008D859E856A8B0E94E61B6A89882309F47D -:103BE000BECF662309F4BBCF2091D402822F8295E9 -:103BF0008F7090E002970CF48ECF8091CF0290915D -:103C0000D0029A8389831B82DD82CC822E83CE01EF -:103C100001967FCF809590958C0D9D1DACCFF62E93 -:103C2000662309F49CCF75132EC034132CC0209149 -:103C3000D40220FD1FC0822F82958F70D9F0D80149 -:103C400015962C9315978F3049F08F5F982F92958A -:103C5000907F822F8F70892B15968C93C8010E94BC -:103C6000A71B86E0F801AFECB2E001900D928A95B7 -:103C7000E1F793CF86E0F801AFECB2E001900D924E -:103C80008A95E1F72DC04D875E878D859E850E94C0 -:103C9000E61B811140CF8091D40281608093D402D1 -:103CA000C8010E94A71B1CC0662309F458CF4D878A -:103CB0005E878D859E850E94E61B882309F44FCF81 -:103CC0002ACF811148CF0CC0243031050CF047CFEA -:103CD0009F7009F440CFF8019581907F09F03BCFA8 -:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 -:103CF000CF911F910F91FF90EF90DF90CF9008959B -:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 -:103D1000DEBF0FBECDBF4F83588769877A878B87F9 -:103D20009C87CE0107960E94B91C882369F08F8179 -:103D300098852A853B85232BF1F19F3F09F063C0CD -:103D40008F3F09F060C037C086E0FE013796DE0184 -:103D5000119601900D928A95E1F76F817885EA8539 -:103D6000FB85309741F17F3F11F46F3F21F12091A6 -:103D70009E0230E0C90101968770992740919D020B -:103D800050E08417950709F447C069837A83FD835F -:103D9000EC8396E0929FD001939FB00D1124A15621 -:103DA000BD4FFE01319601900D929A95E1F78093F7 -:103DB0009E020E942F1C16E080919D0290919E020F -:103DC0008917C1F1189FC001112481569D4F0E948F -:103DD000B91C882379F1E0919D021E9FF001112406 -:103DE000E156FD4F408151816281738184819581CB -:103DF0000E941F1C80919D0290E001968770992778 -:103E000080939D02D9CF4F81588569857A858B85AE -:103E10009C850E941F1CCFCF0E94E21B10929E0225 -:103E200010929D02EFECF2E086E0DF011D928A9590 -:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 -:103E4000DF91CF911F910895EF92FF920F931F93EF -:103E5000CF93DF938C01009709F46CC0F12CEE2412 -:103E6000E394E8012196F8018491843740F484308A -:103E700008F051C0813081F0823019F15BC0853784 -:103E800009F444C0A8F19CE7980F903708F052C09D -:103E90008F770E94FF1841C00E5F1F4FFE01C49133 -:103EA00080E28C0F883048F4C7708E2D01C0880FD7 -:103EB000CA95EAF70E94002214C08C2F0E9437187E -:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 -:103ED00058F4C7708E2D01C0880FCA95EAF70E946A -:103EE00006220E9427221AC08C2F0E94FF1816C09B -:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C -:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 -:103F1000FE01F49003C00E9437188E018F2D882374 -:103F200009F49FCFEFE9FFE03197F1F700C00000FF -:103F30008150F5CFDF91CF911F910F91FF90EF90BE -:103F4000089508956093D9027093DA028093DB029A -:103F50009093DC020C94CE1B0F931F930091D90217 -:103F60001091DA022091DB023091DC02DC01CB01FE -:103F7000802B912BA22BB32B8093D9029093DA0242 -:103F8000A093DB02B093DC021F910F910C94CE1B27 -:103F90000F931F930091D9021091DA022091DB0256 -:103FA0003091DC02DC01CB0180239123A223B323D7 -:103FB0008093D9029093DA02A093DB02B093DC02E3 -:103FC0001F910F910C94CE1B0F931F930091D90258 -:103FD0001091DA022091DB023091DC02DC01CB018E -:103FE00080279127A227B3278093D9029093DA02E2 -:103FF000A093DB02B093DC021F910F910C94CE1BB7 -:104000001092D5021092D6021092D7021092D802C6 -:104010000C94CE1B41E050E060E070E004C0440F1F -:10402000551F661F771F8A95D2F74093D50250938C -:10403000D6026093D7027093D8020C94CE1B41E055 -:1040400050E060E070E004C0440F551F661F771F0A -:104050008A95D2F78091D5029091D602A091D7028D -:10406000B091D802482B592B6A2B7B2B4093D50259 -:104070005093D6026093D7027093D8020C94CE1B53 -:1040800041E050E060E070E004C0440F551F661F3F -:10409000771F8A95D2F740955095609570958091DD -:1040A000D5029091D602A091D702B091D8024823B0 -:1040B00059236A237B234093D5025093D602609301 -:1040C000D7027093D8020C94CE1B41E050E060E020 -:1040D00070E004C0440F551F661F771F8A95D2F702 -:1040E0008091D5029091D602A091D702B091D802CA -:1040F000482759276A277B274093D5025093D60239 -:104100006093D7027093D8020C94CE1B0F931F9329 -:104110000091D5021091D6022091D7023091D80299 -:10412000DC01CB01802B912BA22BB32B8093D502EA -:104130009093D602A093D702B093D8021F910F910B -:104140000C94CE1B0F931F930091D5021091D602B1 -:104150002091D7023091D802DC01CB01802391233A -:10416000A223B3238093D5029093D602A093D702C3 -:10417000B093D8021F910F910C94CE1B0F931F93F5 -:104180000091D5021091D6022091D7023091D80229 -:10419000DC01CB0180279127A227B3278093D5028A -:1041A0009093D602A093D702B093D8021F910F919B -:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 -:1041C0001F93CF93DF938C01C090D902D090DA0275 -:1041D000E090DB02F090DC028091D5029091D60253 -:1041E000A091D702B091D802C82AD92AEA2AFB2A7C -:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B -:10420000979587950A94D2F780FF06C0B8018C2F46 -:104210000E947608019721F4219760F780E001C0A1 -:104220008C2FDF91CF911F910F91FF90EF90DF9036 -:10423000CF900895CF93DF93EC010E94DB20BE0165 -:104240000E947608DF91CF910895CB010E941A2138 -:1042500008958091DD0285958595859508958091D5 -:10426000DD028770089598E0899F90011124262B24 -:104270002093DD020C941F202091DD028095822383 -:104280008093DD02982F977069F430E0482F55270E -:1042900047FD50952417350729F085958595859517 -:1042A0000C94402008959091DD02977081E009F40C -:1042B00080E0089590911501992321F090911601C5 -:1042C000911109C02091170130911801F90132961E -:1042D0009FEF40E01FC0982F9695969596959F303A -:1042E00050F5E0911701F0911801E90FF11D877069 -:1042F00021E030E0A90102C0440F551F8A95E2F782 -:10430000CA019181892B818308959F3F39F04F5FC6 -:104310004E3041F051915813F8CF0DC05111F7CFE5 -:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B -:10433000FA9582830895089590911501992321F0AB -:1043400090911601911109C0209117013091180127 -:10435000F9013296205F3F4F1FC0982F9695969592 -:1043600096959F30F0F4E0911701F0911801E90F54 -:10437000F11D877021E030E0A90102C0440F551FF4 -:104380008A95E2F7CA0180959181892381830895F6 -:104390003196E217F30729F090819813F9CF108234 -:1043A000F7CF089581E090E0E0911701F0911801B6 -:1043B000E80FF91F1082019680319105A9F7089541 -:1043C0009091F102892B8093F1020895809590914C -:1043D000F10289238093F10208951092F102089569 -:1043E0009091F002892B8093F0020895809590912E -:1043F000F00289238093F00208951092F00208954C -:104400009091EF02892B8093EF020895809590910F -:10441000EF0289238093EF0208951092EF0208952E -:104420008093DE0208951092DE02089580911701B4 -:1044300090911801FC0131969C01205F3F4F80E074 -:10444000919191118F5FE217F307D1F70895E091F1 -:104450001701F09118018091F1028083E09117011A -:10446000F091180190818091F002892B8083E09176 -:104470001701F091180190818091EF02892B8083C0 -:104480008091DE02882361F0E0911701F09118011C -:104490009081892B80830E94162281111092DE0266 -:1044A00080911701909118010C940C1720E000974F -:1044B00039F0AC0141505109842395232F5FF7CF88 -:1044C000822F089580911303843039F11092F30202 -:1044D00020E488E190E00FB6F894A89580936000FE -:1044E0000FBE2093600080E00E94F10280E00E94F5 -:1044F000100983B7817F846083BF83B7816083BFE6 -:104500007894889583B78E7F83BF88E10FB6F8943F -:1045100080936000109260000FBE08950895089582 -:1045200080E00E94F1020E948E220E946B090E948C -:104530008F220E94F00991E0811101C090E0892F43 -:1045400008950E94E21B80E00E94F1020E940A2866 -:104550000E9400170C9410091F920F920FB60F9231 -:1045600011248F939F93AF93BF938091F302811196 -:1045700013C08091F4029091F502A091F602B091DF -:10458000F7024196A11DB11D8093F4029093F502AC -:10459000A093F602B093F702BF91AF919F918F91D4 -:1045A0000F900FBE0F901F90189582E084BD93E08E -:1045B00095BD9AEF97BD80936E0008952FB7F8943C -:1045C0008091F4029091F502A091F602B091F70269 -:1045D0002FBF0895CF92DF92EF92FF920F931F9318 -:1045E0002FB7F8944091F4025091F5026091F602D1 -:1045F0007091F7022FBF6A017B01EE24FF248C012A -:1046000020E030E0C016D106E206F30610F4415077 -:1046100051099A01281B390BC9011F910F91FF9075 -:10462000EF90DF90CF9008951F920F920FB60F92E8 -:1046300011248F939F93AF93BF938091F402909135 -:10464000F502A091F602B091F7020196A11DB11DED -:104650008093F4029093F502A093F602B093F702D0 -:10466000BF91AF919F918F910F900FBE0F901F90B0 -:1046700018950E94FD13F8942FEF87EA91E62150D8 -:1046800080409040E1F700C0000087E090EBDC0143 -:1046900080931E0390931F03A0932003B0932103E4 -:1046A0009CE088E10FB6F894A895809360000FBE57 -:1046B00090936000FFCF0E949A23811102C00E9454 -:1046C00076230E94A5238093F2020E94AD2380935B -:1046D0001C0387FB882780F9809316010E94A92379 -:1046E000682F70E080E090E00C94A21F6DEE7EEFEA -:1046F00080E090E00E94C12C60E082E090E00E94A7 -:10470000AF2C60E083E090E00E94AF2C60E084E09A -:1047100090E00E94AF2C60E085E090E00E94AF2C1A -:1047200060E086E090E00E94AF2C6FEF87E090E0C1 -:104730000C94AF2C80E090E00E94A92C21E08D3EEB -:104740009E4F09F020E0822F089582E090E00C94C3 -:10475000A12C83E090E00C94A12C84E090E00C94D8 -:10476000A12C682F84E090E00C94AF2C86E090E0C0 -:104770000C94A12C682F86E090E00C94AF2C87E07D -:1047800090E00C94A12C682F87E090E00C94AF2C63 -:104790008091FA0280FF0BC060911C0185E0689F48 -:1047A000B001112475956795759567952BC081FFAC -:1047B00009C060911C0185E0689FB00111247595C6 -:1047C000679520C082FF07C060911C0185E0689F4B -:1047D000B001112417C09091FB029923D1F0609190 -:1047E0001B01961788F720911C0185E0289F9001F6 -:1047F0001124929FA001939F500D112470E0CA01D3 -:104800000E94872C6038710540F46115710539F0FC -:1048100002C065E070E0862F08958FE7089581E07B -:1048200008958091FA0280FF08C060911A0170E03B -:10483000759567957595679521C081FF06C0609154 -:104840001A0170E07595679519C082FF04C06091E8 -:104850001A0170E010C09091FB029923C1F06091A1 -:1048600019019617A0F780911A01899FC0011124A0 -:1048700070E00E94872C6038710528F4611571057D -:1048800021F0862F08958FE7089581E0089561E073 -:1048900070E0F4CF803F21F40E94C823819504C0CA -:1048A000813F29F40E94C8238093FE020895823F2D -:1048B00021F40E94C823819504C0833F29F40E94FB -:1048C000C8238093FD020895893F19F40E941124A2 -:1048D00005C08A3F31F40E94112481958093FF0224 -:1048E00008958B3F21F40E941124819504C08C3FD0 -:1048F00029F40E941124809300030895843F21F439 -:104900008091FC02816017C0853F21F48091FC02F8 -:10491000826011C0863F21F48091FC0284600BC04C -:10492000873F21F48091FC02886005C0883F31F404 -:104930008091FC0280618093FC0208958D3F21F4F8 -:104940008091FA0281600BC08E3F21F48091FA02BF -:10495000826005C08F3F29F48091FA0284608093C1 -:10496000FA020895803F39F48091FE0287FF6CC0FF -:104970001092FE0269C0813F29F48091FE02181650 -:10498000BCF362C09091FD02823F29F497FF5CC0A6 -:104990001092FD0259C0833F19F41916CCF354C08C -:1049A000893F41F48091FF0218160CF04DC010921F -:1049B000FF024AC08A3F29F48091FF0287FF44C06A -:1049C000F6CF8B3F39F48091000387FF3DC01092F2 -:1049D00000033AC08C3F29F4809100031816BCF301 -:1049E00033C0843F21F48091FC028E7F17C0853F45 -:1049F00021F48091FC028D7F11C0863F21F48091CB -:104A0000FC028B7F0BC0873F21F48091FC02877FE3 -:104A100005C0883F31F48091FC028F7E8093FC02B8 -:104A200013C08D3F21F48091FA028E7F0BC08E3F20 -:104A300021F48091FA028D7F05C08F3F29F4809187 -:104A4000FA028B7F8093FA028091FD0281110EC0E1 -:104A50008091FE0281110AC08091FF02811106C07F -:104A600080910003811102C01092FB0208958CEF27 -:104A700092E00E9417170E94DE229093F902809321 -:104A8000F80208951F93CF93DF938091F8029091DD -:104A9000F9020E94EA22AC019091FB02992321F0D5 -:104AA00020911D0130E006C020911E018AE0289F60 -:104AB000900111244217530708F486C08091FD022B -:104AC000C091FE02D091FF0210910003811107C036 -:104AD000C11176C0D11174C0111172C075C09F3F51 -:104AE00019F09F5F9093FB02181624F40E94C823CC -:104AF0008093FD028091FD0287FF05C00E94C823BC -:104B000081958093FD021C1624F40E94C823809393 -:104B1000FE028091FE0287FF05C00E94C823819596 -:104B20008093FE026091FD02662339F1C091FE027E -:104B3000CC2319F1772767FD7095872F972F0E9457 -:104B4000A92923E333E343E35FE30E94B92A0E94E8 -:104B500076296093FD026C2F772767FD7095872F6C -:104B6000972F0E94A92923E333E343E35FE30E94E5 -:104B7000B92A0E9476296093FE021D1624F40E9431 -:104B800011248093FF028091FF0287FF05C00E94DD -:104B9000112481958093FF02111624F40E941124A0 -:104BA000809300038091000387FF05C00E941124B9 -:104BB000819580930003DF91CF911F910C9437254D -:104BC0009F3F09F08ECF96CFDF91CF911F9108952F -:104BD000ECEFF2E085E0DF011D928A95E9F7109293 -:104BE000FB021092FA020895833081F128F481309B -:104BF00059F08230D1F00895853009F449C0B8F1F8 -:104C0000863009F456C0089580911E01262F30E0A9 -:104C1000280F311D2F3F310524F4680F60931E01CA -:104C200008958FEF80931E01089580911D01262F16 -:104C300030E0280F311D2F3F310524F4680F6093B9 -:104C40001D0108958FEF80931D01089580911C012F -:104C5000262F30E0280F311D2F3F310524F4680F37 -:104C600060931C0108958FEF80931C01089580913B -:104C70001B01262F30E0280F311D2F3F310524F472 -:104C8000680F60931B0108958FEF80931B010895B7 -:104C900080911A01262F30E0280F311D2F3F31055A -:104CA00024F4680F60931A0108958FEF80931A011E -:104CB000089580911901262F30E0280F311D2F3FD4 -:104CC000310524F4680F6093190108958FEF8093E4 -:104CD00019010895833011F128F4813049F08230B0 -:104CE00091F00895853081F120F18630C1F1089569 -:104CF00080911E01681720F4861B80931E01089581 -:104D000010921E01089580911D01681720F4861BE2 -:104D100080931D01089510921D01089580911C013A -:104D2000681720F4861B80931C01089510921C01C3 -:104D3000089580911B01681720F4861B80931B0146 -:104D4000089510921B01089580911A01681720F4AC -:104D5000861B80931A01089510921A01089580917C -:104D60001901681720F4861B809319010895109289 -:104D7000190108950F931F93873208F048C08E31B0 -:104D800008F08DC0803109F477C008F5873009F448 -:104D900061C068F4863009F09DC08091F202817F85 -:104DA0008E7F8093F20281E08093020394C08B3067 -:104DB00009F489C08E3009F08DC08091F20282FB27 -:104DC000222720F991E0922790FB82F95EC086317C -:104DD00009F479C060F4813109F07CC00E94E21BC3 -:104DE0009091160181E08927809316016CC089316A -:104DF00009F469C08B3109F06DC08091F20281FB2A -:104E0000222720F991E0922790FB81F93EC0883358 -:104E100009F459C050F4893209F457C0853309F4B4 -:104E200054C0873209F451C055C0833409F44DC0D1 -:104E300028F48A3308F44EC0895332C0883409F00C -:104E400049C00E94E21B0E94200A0E94E4030E94C3 -:104E5000392339C09091F202892F8095817080FBAF -:104E600090F929F0966098609093F20234C0997F8F -:104E7000977F9093F20227C08091F20283FB222752 -:104E800020F991E0922790FB83F98093F202992315 -:104E9000D1F08091F20281608093F20214C08D51B2 -:104EA00041E050E060E070E08A019B0104C0000F27 -:104EB000111F221F331F8A95D2F7C901B8010E9422 -:104EC000A21F0E94E21B81E006C061E070E080E06A -:104ED00090E0F5CF80E01F910F91089580E0089554 -:104EE00080E00895CF93C82F80910203813069F04C -:104EF00018F08230C9F184C0E0911701F0911801D7 -:104F00008081823209F07EC007C0E0911701F091E4 -:104F100018018081823261F48C2F0E946E278111EA -:104F200004C08C2F0E94BA261DC081E090E01AC0F8 -:104F30008C2F0E947027811114C0C43179F048F47D -:104F4000CB3079F0C03109F061C082E08093020378 -:104F500008C0C93219F0C83321F058C010920203BA -:104F600055C081E0817054C0C93291F120F5C4313F -:104F700079F1B0F4C73009F047C08EE180931E018B -:104F800082E380931D018AE080931C0184E1809379 -:104F90001B0188E080931A0188E28093190134C0D4 -:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 -:104FB0008093010329C0CE34E9F020F4CB3421F5ED -:104FC0006AE013C0C13579F0C235F1F461E00DC07B -:104FD00080910103882319F01092010315C081E02C -:104FE0008093020315C061E006C0809101030E9416 -:104FF000F4250AC06AE0809101030E946A2604C079 -:105000001092020380E004C081E002C080E0AACFD9 -:10501000CF9108950E949A23811102C00E947623A5 -:105020000E94B62380931D0380FF02C0869501C0B5 -:1050300080E00C94F10280911D03982F9695292F02 -:1050400030E0233031054CF49F5F990F8170892B3C -:10505000816080931D030E94BA2380911D03869571 -:105060000C94F10280911D03982F969591F0915820 -:10507000990F8170892B80931D038E7F91E009F435 -:1050800090E080911D0390FB80F980931D030E94A6 -:10509000BA2380911D0386950C94F10280911D0323 -:1050A000982F909590FB80F980931D030E94BA235E -:1050B00080911D0380FF02C0869501C080E00C94A2 -:1050C000F10290911D03892F86958F5F8F779170E4 -:1050D000843028F4880F892B80931D0302C090939D -:1050E0001D0380911D038E7F91E009F490E0809173 -:1050F0001D0390FB80F980931D030E94BA238091C9 -:105100001D0386950C94F10220911D03922F969514 -:105110008927982F990F822F8170892B80931D03E7 -:105120008E7F91E009F490E080911D0390FB80F95F -:1051300080931D030E94BA2380911D0386950C94D1 -:10514000F10280911D03869508955058BB27AA2728 -:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 -:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF -:10517000D3D180F3BA17620773078407950718F035 -:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 -:105190000B01B90190010C01CA01A0011124FF27E4 -:1051A000591B99F0593F50F4503E68F11A16F040DF -:1051B000A22F232F342F4427585FF3CF46953795DE -:1051C0002795A795F0405395C9F77EF41F16BA0BA3 -:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 -:1051E000661F771F881FC2F70EC0BA0F621F731F9A -:1051F000841F48F4879577956795B795F7959E3FF7 -:1052000008F0B3CF9395880F08F09927EE0F979584 -:105210008795089527D108F481E008950CD06BC1DB -:1052200063D140F05AD130F021F45F3F19F03EC114 -:10523000511195C14FC170D198F39923C9F35523EA -:10524000B1F3951B550BBB27AA2762177307840779 -:1052500038F09F5F5F4F220F331F441FAA1FA9F32F -:1052600033D00E2E3AF0E0E830D091505040E69521 -:10527000001CCAF729D0FE2F27D0660F771F881F82 -:10528000BB1F261737074807AB07B0E809F0BB0B71 -:10529000802DBF01FF2793585F4F2AF09E3F510595 -:1052A00068F004C15CC15F3FECF3983EDCF3869587 -:1052B00077956795B795F7959F5FC9F7880F911D0B -:1052C0009695879597F90895E1E0660F771F881FF7 -:1052D000BB1F621773078407BA0720F0621B730BAA -:1052E000840BBA0BEE1F88F7E095089504D06894FC -:1052F000B11135C1089518D188F09F5790F0B92F9A -:105300009927B751A0F0D1F0660F771F881F991F1A -:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF -:1053200008951CC1672F782F8827B85F39F0B93FDF -:10533000CCF3869577956795B395D9F73EF490951C -:105340008095709561957F4F8F4F9F4F0895E8949A -:1053500009C097FB3EF490958095709561957F4FBD -:105360008F4F9F4F9923A9F0F92F96E9BB2793956B -:10537000F695879577956795B795F111F8CFFAF47B -:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC -:1053900016C0882311F096E911C0772321F09EE80A -:1053A000872F762F05C0662371F096E8862F70E070 -:1053B00060E02AF09A95660F771F881FDAF7880F4A -:1053C0009695879597F9089588D018F011F08CD0AC -:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F -:1053E000E7FB6217730784079507A8F199F3E92F84 -:1053F000FF2788232AF03197660F771F881FDAF777 -:10540000952F5527442332F091505040220F331FDF -:10541000441FD2F7BB27E91BF50B621B730B840BF0 -:10542000B109C1F222F4620F731F841FB11D3197BD -:105430002AF0660F771F881FBB1FEFCF9150504097 -:105440005AF041F0882332F0660F771F881F915081 -:105450005040C1F7939530C08695779567959F5FCB -:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 -:1054700016161706E807F907C0F012161306E40718 -:10548000F50798F0621B730B840B950B39F40A2611 -:1054900061F0232B242B252B21F408950A2609F4EF -:1054A000A140A6958FEF811D811D089597F99F67F3 -:1054B00080E870E060E008959F3F31F0915020F463 -:1054C000879577956795B795880F911D96958795E0 -:1054D00097F908959FEF80EC089500240A9416161A -:1054E000170618060906089500240A9412161306D2 -:1054F000140605060895092E0394000C11F4882360 -:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B -:105510007F4F8F4F9F4F089557FD9058440F551F51 -:1055200059F05F3F71F04795880F97FB991F61F025 -:105530009F3F79F087950895121613061406551F9C -:10554000F2CF4695F1DF08C0161617061806991F08 -:10555000F1CF86957105610508940895E894BB27FD -:1055600066277727CB0197F908957CDF08F48FEF42 -:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 -:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF -:10559000D1F3950F50E0551F629FF001729FBB271A -:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 -:1055B0006627B00DA11D661F829F2227B00DA11D79 -:1055C000621F739FB00DA11D621F839FA00D611DFF -:1055D000221F749F3327A00D611D231F849F600D20 -:1055E000211D822F762F6A2F11249F5750408AF059 -:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 -:10560000881F91505040A9F79E3F510570F04ECF32 -:10561000A6CF5F3FECF3983EDCF3869577956795D0 -:10562000B795F795E7959F5FC1F7FE2B880F911D02 -:105630009695879597F90895FA01EE0FFF1F30961A -:105640002105310599F16115710561F48038BFE3D9 -:105650009B0749F168949038810561F08038BFEF6D -:105660009B0741F0992342F5FF3FE10531052105F4 -:1056700011F1E8940894E795D901AA2329F4AB2FF6 -:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F -:10569000F73950F019F0FF3A38F49F779F930CD008 -:1056A0000F9007FC905808953EF014CF60E070E032 -:1056B00080E89FE308954FE79F775F934F933F9371 -:1056C0002F939ED02F913F914F915F9152DF05C054 -:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C -:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C -:1056F0004EDF0F920F920F924DB75EB70F92C0D050 -:10570000EAE0F1E016D04F915F91EF91FF91E595BE -:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD -:10572000FA95E1F74195550B32D00F9007FE26C050 -:105730000895DF93CF931F930F93FF92EF92DF9221 -:105740007B018C01689405C0DA2EEF011EDFFE019B -:10575000E894A5912591359145915591AEF3EF01CE -:1057600006DDFE019701A801DA9479F7DF90EF904A -:10577000FF900F911F91CF91DF9108959B01AC0194 -:1057800060E070E080E89FE349CD90CE95CECCDE1E -:10579000E8F39923D9F3940F511DBBF39150504076 -:1057A00094F059F0882332F0660F771F881F9150CC -:1057B0005040C1F79E3F510544F7880F911D9695C3 -:1057C000879597F908955F3FACF0983E9CF0BB2712 -:1057D000869577956795B79508F4B1609395C1F76D -:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B -:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 -:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD -:105810000F93FF92C92FDD2788232AF02197660F67 -:10582000771F881FDAF720E030E040E85FEB9FE366 -:10583000883920F0803E30F021968F7787DCE2E3D4 -:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 -:10585000EC01FB2E6F5771097595771F880B990B1B -:1058600078DD28E132E741E35FE38FDEAF2D980179 -:10587000AE01FF900F911F91CF91DF9178DC3BCE6D -:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 -:1058900022273327442750781FC0B75188F4AB2FF5 -:1058A0000024469537952795011CA395D2F3002037 -:1058B00069F0220F331F441FB395DAF30DD045CCA6 -:1058C00061307105A0E88A07B94630F49B01AC014C -:1058D0006627772788279078309621F020833183B8 -:1058E000428353830895AA1BBB1B51E107C0AA1F23 -:1058F000BB1FA617B70710F0A61BB70B881F991F71 -:105900005A95A9F780959095BC01CD01089597FB14 -:10591000072E16F4009407D077FD09D00E94732C4F -:1059200007FC05D03EF4909581959F4F08957095A2 -:1059300061957F4F0895EE0FFF1F0590F491E02DC4 -:105940000994F999FECF92BD81BDF89A992780B547 -:105950000895A8E1B0E042E050E00C94C92C262F55 -:10596000F999FECF92BD81BDF89A019700B4021655 -:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 -:1059800008950196272F0E94B02C0C94AF2CDC01B7 -:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A -:1059A000319600B40D9241505040B8F70895F894E4 -:0259B000FFCF27 -:1059B200640007000CFF0000003F64041092106FA7 -:1059C200103B1007100101DF022808140A321E00E2 -:1059D20002040507090B0C0E1011131517181A1CD7 -:1059E2001D1F2123242628292B2D2F303234353711 -:1059F200393B1F0F03764F5F6F7F4969437909591E -:105A020053633149803F5D8B803FF8BF803FCAE1DD -:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE -:105A2200803F3149803F0000803FF16D7F3F75EA42 -:105A32007E3F4C827E3F833F7E3F84287E3F833F72 -:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 -:105A5200803F3F4D3639ED04A0046A043104C4038B -:105A6200DD03F6030F04010203040506070809001B -:00000001FF diff --git a/keyboard/planck/keymaps/mollat/compiled.hex b/keyboard/planck/keymaps/mollat/compiled.hex deleted file mode 100644 index 549b7a8dfa..0000000000 --- a/keyboard/planck/keymaps/mollat/compiled.hex +++ /dev/null @@ -1,1495 +0,0 @@ -:100000000C94A5030C94E9030C94E9030C94E90304 -:100010000C94E9030C94E9030C94E9030C94E903B0 -:100020000C94E9030C94E9030C94E9150C94BB16A9 -:100030000C941D240C94E9030C94E9030C94E9033B -:100040000C94E9030C944B040C94E9030C94E9031D -:100050000C94E9030C9485240C94E9030C94E903B3 -:100060000C94E9030C94E9030C94E9030C94E90360 -:100070000C94E9030C94E9030C94E9030C94E90350 -:100080000C945E0C0C94E9030C94E9030C94E903C2 -:100090000C94E9030C94E9030C94E9030C94E90330 -:1000A0000C94E9030C94E9030C94E903A704AD0450 -:1000B000B304B904BF04C404C904CE04D304D804EF -:1000C000DD04E204E704EC04F104F60428174A17FF -:1000D00038184A1738188F17B217381807181A180F -:1000E000041B041B331B331B721B921BE81CE81CF4 -:1000F0009D1BE81C4D1C4D1CB41CBD1CE81CE21CC7 -:100100005A1C5A1C5A1C5A1C5A1C5A1C5A1C5A1C3F -:100110005A1C5A1C5A1C5A1C5A1C5A1C5A1C5A1C2F -:100120006A1C781C7F1C861C901C07634236B79B98 -:10013000D8A71A39685618AEBAAB558C1D3CB7CC47 -:100140005763BD6DEDFD753EF6177231BF000000BF -:10015000803F08000000BE922449123EABAAAA2AA2 -:10016000BECDCCCC4C3E00000080BEABAAAAAA3EBD -:1001700000000000BF000000803F000000000008F9 -:100180004178D3BB4387D1133D190E3CC3BD428296 -:10019000AD2B3E68EC8276BED98FE1A93E4C80EF54 -:1001A000FFBE01C4FF7F3F00000000000000000010 -:1001B00000000000000000010204060A0F17202CB6 -:1001C0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9B2 -:1001D000DAC7B39D87715D4A3A2C20170F0A0604CF -:1001E00002010000000000000000000001E0010525 -:1001F000020502E0000129022901E1013302330274 -:10020000E10114021401280228000129022901E158 -:100210000133023302E1011A021A01280228000107 -:10022000E00105020502E0010602060001E0010509 -:10023000020502E0011302130001E00105020502BC -:10024000E0011102110001E00105020502E0010FC9 -:10025000020F0001E00105020502E0012502250070 -:1002600001E00105020502E0012402240001E00191 -:1002700005020502E0012302230001E00105020559 -:1002800002E0012202220001E00105020502E00174 -:100290002102210001E00105020502E00120022007 -:1002A0000001E00105020502E0011F021F0001E05C -:1002B0000105020502E0011E021E0001E001050227 -:1002C0000502E001270227000000000000000000F6 -:1002D00000000C30294614001A0008001500170011 -:1002E0001C0018000C00120013002A002B4304000D -:1002F0001600070009000A000B000D000E000F0099 -:1003000033003400E1001D001B0006001900050049 -:10031000110010003600370038002872000000007D -:10032000E300E200E0002C442C410252E600E7002A -:100330000000000035001E021F02200221022202DE -:10034000230224022502260227022D0000001E009F -:100350001F00200021002200230024002500260089 -:1003600027002E0000000000000000000000000038 -:1003700000000000360037003100310200000000AC -:10038000000000000000000001000000000000006C -:100390000000000035020000000000000000000026 -:1003A0000000000000002F0230022D0200003A0081 -:1003B0003B003C003D003E003F00400041002F005C -:1003C00030002E020000000000000000000042008B -:1003D0004300440045000000000000000000000051 -:1003E000000000000000000000000100000000000C -:1003F000000000000000000000004D0000000000B0 -:1004000000000000490000004C001C140100000026 -:10041000161400004E0022145000510052004F00EC -:100420001314141400004A000000000000004B00E8 -:100430000000000000000000000028000050000044 -:100440000000000000002C002C0000000000000054 -:100450000000000000000E300D3000000000000021 -:1004600000000000000000000B30000000300130F0 -:1004700002300330043005300630073008300930D0 -:10048000000000000000000000000C300000000030 -:100490000A30000000000000000000000000000022 -:1004A000000000000000010000000000000000004B -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000010000000000000000000000DA -:1005200000000000000000000000000000000000CB -:1005300000000000FA000000F200F100F000F300FB -:100540000000000000000000000000000000F900B2 -:10055000000000000000000000000000000000009B -:100560000000FF00FE00FD00F400F600F5000000B2 -:1005700000000000280354006800650020005000BF -:100580006C0061006E0063006B0020004B00650092 -:10059000790062006F0061007200640000002C03AB -:1005A0004F007200740068006F006C0069006E00FC -:1005B00065006100720020004B0065007900620058 -:1005C0006F006100720064007300000004030904FE -:1005D00009026D00040100A0FA09040000010301F2 -:1005E0000100092111010001223F000705810308D4 -:1005F000000A0904010001030102000921110100A0 -:1006000001224D000705820308000A0904020001C7 -:1006100003000000092111010001223600070583B3 -:100620000308000A09040300010300000009211166 -:100630000100012239000705840310000112011096 -:100640000100000008EDFE606001000102000105EC -:10065000010906A101050719E029E7150025019503 -:100660000875018102050819012905950575019193 -:1006700002950175039101050719002977150025D9 -:1006800001957875018102C005010980A1018502EB -:1006900016010026B7001A01002AB700751095014F -:1006A0008100C0050C0901A1018503160100269CEB -:1006B000021A01002A9C02751095018100C00501F3 -:1006C0000902A1010901A100050919012905150067 -:1006D00025019505750181029501750381010501CB -:1006E000093009311581257F950275088106093881 -:1006F0001581257F950175088106050C0A380215BC -:1007000081257F950175088106C0C005010906A1F4 -:1007100001050719E029E7150025019508750181F4 -:1007200002950175088101050819012905950575CE -:100730000191029501750391010507190029FF1523 -:100740000025FF950675088100C011241FBECFEF5C -:10075000DAE0DEBFCDBF04B603FE24C080911E03E5 -:1007600090911F03A0912003B09121038730904BFB -:10077000A740B04BB9F410921E0310921F031092C1 -:1007800020031092210314BE84B7877F84BF88E1C1 -:100790000FB6F89480936000109260000FBEE0E006 -:1007A000F8E3099511E0A0E0B1E0E4E9FCE502C05E -:1007B00005900D92A03CB107D9F713E0A0ECB1E091 -:1007C00001C01D92AE31B107E1F70E942F130C94C6 -:1007D000482E0C9400000895089581E0089508952E -:1007E0000C94EC030C94ED030C94EF030E94122A7A -:1007F00023E030E0281B3109220F2093C401089523 -:10080000282F2F9880918000211108C0877F809326 -:10081000800010928D0010928C001BC08860809325 -:100820008000233019F48FEF9FEF0FC083E090E03A -:10083000821B9109880F991F2FEF3FEFA90102C07A -:10084000569547958A95E2F7CA0190938D0080935B -:100850008C000C94F6030E94F60384E08093C3019D -:100860001092C0010895279A2F988FEF9FEF9093D1 -:100870008700809386008AE08093800089E18093DE -:1008800081000E947B290C942B040E9433046E9AF1 -:10089000769A0C94EB031F920F920FB60F921124CD -:1008A0002F933F938F939F93EF93FF93E091C10119 -:1008B000F091C201CF0101969093C2018093C101D2 -:1008C0000090C30102C0F695E7950A94E2F7EF7332 -:1008D0008091C001823019F4E03251F404C08130BB -:1008E00039F4EF3329F480916F008D7F80936F008E -:1008F000F0E0E455FE4FE49121E031E0E29FC001D9 -:10090000E39F900D11240090C40102C09695879535 -:100910000A94E2F790938D0080938C00FF91EF9101 -:100920009F918F913F912F910F900FBE0F901F902D -:100930001895462F50E04031510508F05CC0FA018F -:10094000EA5AFF4FDC0112968C910C940C2E8823EE -:1009500009F451C08BEB92E00895882309F44BC051 -:100960008EEA92E00895882309F445C081EA92E076 -:100970000895882309F43FC084E992E0089588230C -:10098000D1F187E892E008958823A9F18AE792E0FF -:100990000895882381F18DE692E00895882359F126 -:1009A00080E692E00895882331F183E592E008958E -:1009B000882309F186E492E008958823E1F089E331 -:1009C00092E008958823B9F08CE292E0089588239C -:1009D00091F08FE192E00895882369F08AE092E037 -:1009E0000895882341F085EF91E00895882319F058 -:1009F0008CEE91E0089580E090E0089581E0089504 -:100A00000C94FE0408950C944504809115028823EB -:100A100009F448C08091D1019091D201009779F4F6 -:100A20000E944F249093D2018093D1018091D301F1 -:100A300090E0009771F48091D40190E00AC00E9488 -:100A40005B2420910001309101012817390740F300 -:100A500029C00197880F991F880F991FFC01EB523D -:100A6000FE4F60817181828193810E94C40BE0916D -:100A7000D30184E0E89FF0011124EB52FE4F608126 -:100A80007181828193814FE050E00E947C0F8091C0 -:100A9000D30190E001966091D40170E00E94F82D9E -:100AA0008093D3010C94F003109217020C94910BD5 -:100AB0000895089581E0809317020C9459050895D4 -:100AC00008958F929F92AF92BF92EF92FF920F93F1 -:100AD0001F93CF93DF93CDB7DEB7A3970FB6F894EC -:100AE000DEBF0FBECDBF7C01FC0100811181C801BA -:100AF0000E944C22B8010E9463078C01B7010E943A -:100B00000005882309F4CCC10032F0E51F0741F449 -:100B1000F7018281882309F458C00E94E00FC0C108 -:100B20000132F0E51F0741F4F7018281882309F4BF -:100B30004CC00E94E90FB4C10232F0E51F0751F426 -:100B4000F7018281882309F440C00E94DC0F8111E3 -:100B5000F0CFE3CF0332F0E51F0739F4F7018281CC -:100B6000882399F10E945A059BC10432F0E51F07C2 -:100B700039F4F7018281882341F10E94540590C124 -:100B80000532F0E51F0749F4F70182818823E9F077 -:100B9000809117028111F1CFE5CF0632F0E51F07F2 -:100BA00039F4F7018281882381F00E94F00F0AC096 -:100BB0000732F0E51F0749F4F7018281882329F005 -:100BC0000E94FB0F0E9460056BC18091170281118A -:100BD00005C0F70182818111CFC018C1003E110507 -:100BE00079F4F7018281882309F44DC00E94910BAA -:100BF00081E080931602109215021092D40150C128 -:100C0000023E110559F4F70182818823E1F10E9427 -:100C1000910B109216021092150242C1033E11056B -:100C200091F4F7018281882371F10E94910B109257 -:100C3000160281E0809315021092D3011092D20126 -:100C40001092D1012DC10235110559F4F7018281AD -:100C5000882309F425C180910001909101010A9730 -:100C60000DC00135110579F4F7018281882309F45B -:100C700017C180910001909101010A9690930101A2 -:100C8000809300010DC14091040183E2EFE1F1E0A6 -:100C9000DE01119601900D928A95E1F7F7018081AE -:100CA00021E030E02C0F3D1F280F311DC90120919C -:100CB000020130910301FC01E20FF31F60817727ED -:100CC00067FD7095640F711D882777FD8095982FBB -:100CD0000E941A2B20E030E040E451E40E947F2A79 -:100CE0004B015C01F701218184E090E0821B9109B6 -:100CF000BC01882777FD8095982F0E941A2B9B01B5 -:100D0000AC01C501B4010E94172A9B01AC0160E04F -:100D100070E080E090E40E948D2C20E030E04CED0B -:100D200050E40E942A2C4B015C01F7018281882348 -:100D3000D1F04FE050E0C501B4010E947C0F8091DA -:100D400016028823A1F08091D40124E0829FF00153 -:100D50001124EB52FE4F80829182A282B3828F5F78 -:100D60008093D40104C0C501B4010E94C40B0F3F9D -:100D7000110508F02ECF94C08091D00181111FC0C1 -:100D8000043130E5130709F051C00E94020581E0EB -:100D90008093D0010E944F249093CF018093CE0185 -:100DA0001092C7011092C9011092C8011092CB0194 -:100DB0001092CA011092CD011092CC0171C08091A5 -:100DC000CE019091CF010E945B24883C910570F484 -:100DD0008091C701E82FF0E0EE0FFF1FE853FE4FB0 -:100DE000118300838F5F8093C7015AC0043880E568 -:100DF000180721F00538104501F13AC0F70182814A -:100E0000882341F01092C50182E01EC0043830E50D -:100E1000130759F58091C501811106C086E20E9431 -:100E2000A81986E20E94701A82E01CC00438F0E51E -:100E30001F0741F305381045D9F4F7018281882353 -:100E400031F01092C60180E20E94BF1A29C0809141 -:100E5000C601811106C087E20E94A81987E20E949C -:100E6000701A80E20E94C61A1BC00538104529F38B -:100E700081E08093C5018093C601C701A3960FB698 -:100E8000F894DEBF0FBECDBFDF91CF911F910F91C0 -:100E9000FF90EF90BF90AF909F908F900C94F203D3 -:100EA00080E0A3960FB6F894DEBF0FBECDBFDF91F2 -:100EB000CF911F910F91FF90EF90BF90AF909F90B7 -:100EC0008F90089508959CE0799FF001112490E39C -:100ED000899FE00DF11D1124E60FF11DEE0FFF1F9C -:100EE000EC52FD4F859194910895880F991FFC0154 -:100EF000E85BFE4F859194910895880F991FFC013E -:100F0000E853FD4F8591949108950F931F93CF93CC -:100F1000DF93EC01811521E39207A0F5C11580E371 -:100F2000D80708F0D7C0C83ED105D8F4C03ED105D7 -:100F300008F007C2C83AD10578F4C53AD10508F0DF -:100F40006AC0C130D10509F463C008F4F7C1C430E8 -:100F5000D10508F0F6C1F2C1CB3BD10508F466C05B -:100F6000EDC1C11590E2D90708F0AFC0C11521E06D -:100F7000D20708F0E6C1C03FD10508F4DFC18E01F9 -:100F800010651FC2C03880E5D80700F5C03790E56E -:100F9000D90708F0A3C0C11520E5D20709F4ACC0F9 -:100FA00050F4CE01905480319F4008F0C7C1DF70EB -:100FB0008E01106A06C2C13080E5D80709F4AEC0C0 -:100FC000C43190E5D90708F4AFC0B8C1C33820E5F3 -:100FD000D20709F48EC050F4C13890E5D90709F45E -:100FE00082C008F083C000E011EDEBC1C03181E5A3 -:100FF000D80708F4A3C1C11597E5D90708F436C18D -:10100000CE0190578115904108F098C1DF7093C1CF -:1010100001E010E0D6C1C53AD10509F494C1C63A41 -:10102000D10509F093C102E810E4CBC1C83AD1055B -:1010300009F48FC1C93AD10509F48EC1CA3AD10564 -:1010400009F48DC1CB3AD10509F48CC1CC3AD10554 -:1010500009F48BC1CD3AD10509F48AC1C03BD10551 -:1010600009F489C1CE3AD10509F488C1CF3AD10536 -:1010700009F487C1C13BD10509F486C1C23BD10542 -:1010800009F485C1C33BD10509F484C1C43BD10532 -:1010900009F483C1C53BD10509F482C1C63BD10522 -:1010A00009F481C1C73BD10509F480C1C83BD10512 -:1010B00009F47FC1C93BD10509F47EC1CA3BD10502 -:1010C00009F47DC100E014E47CC1CE019F700E9450 -:1010D0007D0778C1DD278E01106C73C1CF70DD27CD -:1010E0008E01146D6EC100E010ED6BC100E012EDD9 -:1010F00068C100E013ED65C10E94531D0E94910B71 -:101100000E9458058FEF94E32CE0815090402040DE -:10111000E1F700C000000E94AA2453C18091F202AE -:1011200081608093F2024DC10E940B25811102C0A3 -:101130000E94E7240E941E2590E090931D03809357 -:101140001C03C23080E5D80721F480911C03816024 -:1011500086C0C43090E5D90721F480911C038260D9 -:101160007EC0C63020E5D20721F480911C03846044 -:1011700076C0C83080E5D80719F480911C0327C0D9 -:10118000CA3090E5D90721F480911C03806167C0C3 -:10119000CC3020E5D20721F480911C0380625FC02F -:1011A000CE3080E5D80721F480911C03806457C0BD -:1011B000C03190E5D90721F480911C0380684FC0AD -:1011C000C23120E5D20729F480911C038460886035 -:1011D00046C0C33080E5D80721F480911C038E7F80 -:1011E0003EC0C53090E5D90721F480911C038D7F66 -:1011F00036C0C73020E5D20721F480911C038B7FD5 -:101200002EC0C93080E5D80719F480911C0326C090 -:10121000CB3090E5D90721F480911C038F7E1FC04D -:10122000CD3020E5D20721F480911C038F7D17C0BB -:10123000CF3080E5D80721F480911C038F7B0FC04D -:10124000C13190E5D90721F480911C038F7707C045 -:10125000C331D04531F480911C038B7F877F80930D -:101260001C0380911C030E942225ABC08D2F99275F -:101270008F70992781309105D9F49E01237033270F -:1012800002C0880F991F2A95E2F79C688E0144E0FE -:10129000000F111F4A95E1F700271370802B912B47 -:1012A00053E0CC0FDD1F5A95E1F7C076DD272FC044 -:1012B0008230910531F4DC2FCC278E01016F106A4A -:1012C00080C08330910569F4CE018370992701E0D5 -:1012D00010E002C0000F111F8A95E2F7C8019C6858 -:1012E0000FC084309105B9F4CE018370992701E0D5 -:1012F00010E002C0000F111F8A95E2F7C8019A683A -:1013000023E0CC0FDD1F2A95E1F7C07ED7708C015A -:101310000C2B1D2B56C08530910531F4DC2FCC27CA -:101320008E01046F106A4DC0069709F04AC0CF7154 -:10133000DD27DC2FCC278E01106243C000E010E0D7 -:1013400040C08E013EC001E810E43BC003E810E459 -:1013500038C002EE14E435C009EE14E432C00AEEDF -:1013600014E42FC005EB14E42CC006EB14E429C0F0 -:1013700007EB14E426C00CEC14E423C00DEC14E4D9 -:1013800020C003E815E41DC00AE815E41AC002E90C -:1013900015E417C004E915E414C001E216E411C015 -:1013A00003E216E40EC004E216E40BC005E216E404 -:1013B00008C006E216E405C007E216E402C00AE22D -:1013C00016E4C801DF91CF911F910F9108959CE021 -:1013D000799FF001112490E3899FE00DF11D112404 -:1013E000E60FF11DEE0FFF1FEC52FD4F859194911A -:1013F000803E9105E0F4803C910558F581339105DC -:1014000009F46FC048F48932910509F463C08A3247 -:10141000910509F46DC072C089339105E9F08238F5 -:101420009105D1F08533910509F44DC067C0833E25 -:10143000910581F138F4803E9105B9F0823E910525 -:10144000D9F05CC0863E910561F1873E9105A1F11E -:1014500055C00E947507089520911C0320FD02C00D -:1014600021FF4CC080EE90E049C080911C0380FFBA -:10147000F9CF89E390E042C080911C0382FF0EC047 -:1014800080911C0384FF03C080E090E037C083EEAE -:1014900090E034C080911C0382FFF2CF82EE90E096 -:1014A0002DC080911C0383FF0BC080911C0384FD21 -:1014B000EBCF87EE90E022C080911C0383FFF5CF35 -:1014C00086EE90E01BC080911C0385FF07C089E277 -:1014D00090E014C080911C0385FFF9CF85E390E074 -:1014E0000DC080911C0386FF07C08AE290E006C011 -:1014F00080911C0386FFF9CF81E390E00E9485076D -:1015000008950C94F403E82FF0E0E25BFE4F808135 -:10151000E82FEF70F0E082958F7021E030E0A901B4 -:1015200002C0440F551F8A95E2F740A308950F9318 -:101530001F93CF93DF9385B7806885BF85B7806899 -:1015400085BFC3E0D0E001E010E0FE01E25BFE4FAA -:101550008081E82FEF70F0E021A182958F70A801C3 -:1015600002C0440F551F8A95E2F7CA01822B81A35E -:101570008C2F0E94830A219740F78BE090E061E076 -:1015800070E0FC01EE5BFE4F2081E22FEF70F0E097 -:1015900042A122952F70DB0102C0AA0FBB1F2A9522 -:1015A000E2F79D01242B22A3019758F7DF91CF91F9 -:1015B0001F910F910C940305EF92FF920F931F93CD -:1015C000CF93DF9300E212E0C3E0EE24E394F12C2A -:1015D000D5E08C2F0E94830A8BE090E040E050E041 -:1015E000FC01EE5BFE4F6081E62FEF70F0E020A182 -:1015F00030E062956F7002C0359527956A95E2F7E5 -:1016000020FD09C09701082E02C0220F331F0A9443 -:10161000E2F7422B532B019718F7F8019291829130 -:101620008F018417950721F051834083D0930501E2 -:101630008C2F0E94830AC15060F68091050187FDBE -:101640002CC08150809305018F3F39F08FE99FE0D6 -:101650000197F1F700C0000020C080911E02909118 -:101660001F02909327028093260280911C02909182 -:101670001D02909325028093240280911A0290917A -:101680001B02909323028093220280911802909172 -:10169000190290932102809320020E94050581E0A7 -:1016A000DF91CF911F910F91FF90EF900895E82F58 -:1016B000F0E0EE0FFF1FE05EFD4F80819181089505 -:1016C00008950F931F93CF9308E212E0C0E0F80152 -:1016D000929182918F010E94C723C80FF2E00032DD -:1016E0001F07A9F78C2FCF911F910F9108950E948A -:1016F0000B25811102C00E94E7240E9430258093AF -:1017000007033E9A809171008D7F8093710082E083 -:10171000809390008AE18093910081E080932A0277 -:10172000089580912A02811102C00E94770B1092C5 -:101730007A0210927902809171008D7F80937100FE -:10174000809190008F738093900010923C021092D1 -:101750003B02109273021092740210927502109262 -:1017600076021092720210927102E1E5F2E0A1E4B9 -:10177000B2E011921192119211921D921D9282E08B -:10178000E137F807B1F70895CF92DF92EF92FF9219 -:101790000F931F93CF93DF9320913B02222309F4F1 -:1017A00084C06B017C0180912A02811102C00E94D9 -:1017B000770B01E712E0C7E0D0E0A7019601F8013E -:1017C00092918291729162918F010E947B2A811184 -:1017D00031C0FE01EE0FFF1FEE0FFF1FEF5AFD4F4E -:1017E0001082118212821382DE01AA0FBB1FAF5B2F -:1017F000BD4F11961C921E92C730D105E9F021967B -:1018000044815581668177814083518362837383EC -:10181000148215821682178212968D919C911397CD -:1018200011969C938E9313961C921E921297349647 -:101830001296E2CF219708F68091790290917A0270 -:10184000019797FD05C090937A028093790204C0B6 -:1018500010927A02109279028091790290917A0224 -:1018600020917702309178022817390724F01092DE -:10187000780210927702892BC1F4809171008D7FDC -:1018800080937100809190008F73809390001092EC -:1018900073021092740210927502109276021092E6 -:1018A00072021092710210923B02DF91CF911F9150 -:1018B0000F91FF90EF90DF90CF9008951F920F92BD -:1018C0000FB60F9211244F925F926F927F928F9278 -:1018D0009F92AF92BF92CF92DF92EF92FF922F939F -:1018E0003F934F935F936F937F938F939F93AF93A8 -:1018F000BF93CF93DF93EF93FF9380913B028823B5 -:1019000009F49BC1C0917902D0917A021C161D0680 -:101910000CF093C140902B0250902C0260902D024D -:1019200070902E0220E030E0A901C301B2010E94B4 -:10193000262C18160CF065C0C130D10509F452C030 -:101940008091770290917802BE010E94F82D7C016F -:10195000909378028093770280903D0290903E02AF -:10196000A0903F02B090400220E030E040E85FE30A -:10197000C501B4010E94172A60933D0270933E0294 -:1019800080933F0290934002F701EE0FFF1FEE0F8E -:10199000FF1FEF5AFD4FA301920160817181828187 -:1019A00093810E947F2A20E030E040E05EE30E94C5 -:1019B0002A2C9B01AC01C501B4010E94262C1816EB -:1019C0008CF4C7010196BE010E94F82D9093780215 -:1019D0008093770210923D0210923E0210923F02D5 -:1019E00010924002E0917702F0917802EE0FFF1F13 -:1019F000EE0FFF1FEF5AFD4F60817181828193814D -:101A0000D0C0C0907302D0907402E0907502F09044 -:101A1000760220E030E0A901C701B6010E947B2ACE -:101A20002197882309F4A2C0FE01EE0FFF1FEE0FDD -:101A3000FF1FEF5AFD4F80809180A280B380A501E7 -:101A40009401C701B6010E947B2A87FF31C0A5011E -:101A5000940160E070E08CED93EC0E947F2A20E01E -:101A600030E040E451E40E947F2A20E030E040E092 -:101A70005FE30E942A2C9B01AC0160E070E080E0F3 -:101A800090E40E948D2C9B01AC01C501B4010E9421 -:101A90002A2C9B01AC01C701B6010E947B2A87FF5B -:101AA00007C0A701960160E070E08CED93E439C0B7 -:101AB000A5019401C701B6010E94262C18160CF04E -:101AC00055C0A501940160E070E08CED93E40E94A4 -:101AD0007F2A20E030E040E451E40E947F2A20E0A9 -:101AE00030E040E05FE30E942A2C9B01AC0160E003 -:101AF00070E080E090E40E948D2C9B01AC01C50158 -:101B0000B4010E942A2C9B01AC01C701B6010E94BE -:101B1000262C18165CF5A701960160E070E08CEDAC -:101B200093EC0E947F2A20E030E040E451E40E94E0 -:101B30007F2A20E030E040E05FE30E942A2C9B01F6 -:101B4000AC0160E070E080E090E40E948D2C9B018D -:101B5000AC01C701B6010E942A2C609373027093F6 -:101B60007402809375029093760213C0FE01EE0F0B -:101B7000FF1FEE0FFF1FEF5AFD4F80819181A28161 -:101B8000B3818093730290937402A0937502B09313 -:101B90007602609173027091740280917502909147 -:101BA000760220912802309129022F3F4FEF34070F -:101BB00031F02F5F3F4F30932902209328020E947B -:101BC00006106B017C0120E034E244EF51E40E94F6 -:101BD0007B2A87FF08C086EFC82E88E2D82E84EFC4 -:101BE000E82E81E4F82E20E030E040E051E4C70127 -:101BF000B6010E942A2C9B01AC0160E074E284E7EC -:101C00009BE40E947F2A6B017C010E94EC2A709366 -:101C10009700609396002091060130910701409152 -:101C2000080150910901C701B6010E942A2C0E94A7 -:101C3000EC2A709399006093980080913C0288236D -:101C400009F433C1C0903702D0903802E0903902D5 -:101C5000F0903A0220E030E0A901C701B6010E94ED -:101C6000262C1816D4F580912802909129028F3FD6 -:101C70002FEF920729F00196909329028093280272 -:101C8000C701B6010E94061020E030E040E051E4B8 -:101C90000E942A2C9B01AC0160E074E284E79BE483 -:101CA0000E947F2A6B017C010E94EC2A70939700AE -:101CB0006093960020910601309107014091080140 -:101CC00050910901C701B6010E942A2C0E94EC2AFA -:101CD000709399006093980008C01092970010923A -:101CE00096001092990010929800609131027091C4 -:101CF00032026F5F7F4F7093320260933102209106 -:101D000096003091970080E090E0232BF1F0C09195 -:101D10009600D09197000E94182B6B017C01BE01A8 -:101D200080E090E00E94182B9B01AC01609133028F -:101D30007091340280913502909136020E947F2A80 -:101D400020E03FEF4FE757E410C00E94182B6B01D3 -:101D50007C0120E030EE4FEF54E46091330270914B -:101D6000340280913502909136020E942A2C9B0108 -:101D7000AC01C701B6010E94262C87FD96C0809158 -:101D80002F028F5F80932F0290E020910303309108 -:101D9000040382179307A0F080910E03882319F0A3 -:101DA00010922F020DC0809171008D7F8093710081 -:101DB000809190008F738093900010923C027DC0C0 -:101DC00080913002C0912F02811128C0C090080379 -:101DD000D0900903E0900A03F0900B0320E030E07C -:101DE000A901C701B6010E94262C1816BCF481E097 -:101DF000809330021092370210923802109239020A -:101E000010923A02C0923302D0923402E09235022C -:101E1000F0923602C150C0932F0243C0109230029C -:101E20001092290210922802E0910503F091060316 -:101E300048E0C49FE00DF11D112480819181A281B1 -:101E4000B3818093370290933802A0933902B09304 -:101E50003A0220E030E040E85EE3648175818681EB -:101E600097810E942A2C6B017C0180910A01682FC6 -:101E700070E080E090E00E94182B20E030E048EC19 -:101E800052E40E947F2A9B01AC01C701B6010E9467 -:101E90002A2C60933302709334028093350290931E -:101EA000360210923202109231028091070380FDB7 -:101EB00004C010923C0210923B02FF91EF91DF911F -:101EC000CF91BF91AF919F918F917F916F915F91D2 -:101ED0004F913F912F91FF90EF90DF90CF90BF9067 -:101EE000AF909F908F907F906F905F904F900F90EA -:101EF0000FBE0F901F901895CF92DF92EF92FF9236 -:101F0000CF93DF936B017C01EA0180912A0281115A -:101F100002C00E94770B8091070380FF46C080912A -:101F2000790290917A0208970CF03FC0809171007D -:101F30008D7F8093710080913C0281110E94910BF2 -:101F400081E080933B02109229021092280220E047 -:101F500030E0A901C701B6010E94262C1816DCF456 -:101F60008091790290917A02FC01EE0FFF1FEE0F33 -:101F7000FF1FEF5AFD4FC082D182E282F382FC0143 -:101F8000EE0FFF1FEF5BFD4FD183C083019690934F -:101F90007A0280937902809171008260809371004F -:101FA00080919000806880939000DF91CF91FF90A6 -:101FB000EF90DF90CF90089580910703817008958E -:101FC000809107038160809307030E9434250C945D -:101FD0005F05809107038E7F809307030C9434255F -:101FE00080917B0290E0019666E070E00E94F82DFF -:101FF00080937B02089580917B0290E0019766E0D8 -:1020000070E00E94F82D80937B0208958F929F923A -:10201000AF92BF92CF92DF92EF92FF920F931F93F6 -:10202000CF93DF936B017C01C0912802D0912902EC -:10203000BE0180E090E00E94182B4B015C01A701DB -:10204000960160E070E08CE594E40E947F2A9B0199 -:10205000AC01C501B4010E942A2C0E94EC2A2091F7 -:102060007B02233009F473C028F4222351F021307D -:10207000E9F02CC1243009F4A0C0253009F4E0C0F7 -:1020800025C180E090E0A0E0BFE38093060190933B -:102090000701A0930801B093090110922B0210923E -:1020A0002C0210922D0210922E0210C110922B02BF -:1020B00010922C0210922D0210922E0264317105A2 -:1020C00040F46A30710560F520E030E040E85EE3FE -:1020D0002BC0693C710508F0AAC080E090E00E9426 -:1020E000182B20E030E040EA51E40E94162A20E05C -:1020F00030E044E353E40E947F2A9B01AC010E943C -:102100002A2C20E030E040E05EE30E942A2C9B0174 -:10211000AC0160E070E080E09EE30E94162A44C0BB -:1021200020E030E040E05FE3C701B6010E942A2CC6 -:102130006B017C0180E090E0A0E0BEE380930601AB -:1021400090930701A0930801B0930901BFC01092BA -:102150002B0210922C0210922D0210922E024AE0B5 -:10216000469F9001479F300D1124C90168EB7BE029 -:102170000E94E42DBC016C5D754077FF03C0719532 -:1021800061957109882777FD8095982F0E941A2BF9 -:102190002EE333EC4EE259E30E942A2C20E030E09B -:1021A00040EC5EE30E94172A6093060170930701DA -:1021B000809308019093090189C010922B0210921C -:1021C0002C0210922D0210922E02CE0183709927BC -:1021D000892BE1F0BE016170772780E090E00E94DA -:1021E000182B20E030E040E05EE30E942A2C20E043 -:1021F00030E040E45FE30E94172A60930601709389 -:10220000070180930801909309010CC080E090E0E1 -:10221000A0E0BFE38093060190930701A09308011B -:10222000B0930901C770DD27CD2B09F04FC0109284 -:10223000060110920701109208011092090146C090 -:1022400010922B0210922C0210922D0210922E024C -:1022500000E010E020E03FE3009306011093070147 -:1022600020930801309309016739710578F180E006 -:1022700090E00E94182B20E030E047E153E40E94F8 -:10228000162A20E030E04AE754E40E947F2A20E04A -:1022900030E048E452E40E942A2C20E030E040EA9A -:1022A00051E40E945C2B0E94E72A660F771F660F9D -:1022B000771FFB01EE5AFE4F20813181428153810D -:1022C000C701B6010E942A2C6B017C01C701B6012F -:1022D000DF91CF911F910F91FF90EF90DF90CF9002 -:1022E000BF90AF909F908F90089580918C02089539 -:1022F000CF93DF9300D01F92CDB7DEB79C018091C2 -:102300001303843019F593E099833B832A839093D8 -:10231000E9008FEF9091E800815095FD06C095EDA2 -:102320009A95F1F700008111F5CF8091E80085FFC3 -:102330000DC040E050E063E070E0CE0101960E94E5 -:10234000D9138091E8008E778093E8000F900F906A -:102350000F90DF91CF910895CF93DF9300D01F921C -:10236000CDB7DEB720911303243021F522E0298375 -:102370009B838A8383E08093E9008FEF9091E8004C -:10238000815095FD06C095ED9A95F1F700008111F9 -:10239000F5CF8091E80085FF0DC040E050E063E09C -:1023A00070E0CE0101960E94D9138091E8008E77EB -:1023B0008093E8000F900F900F90DF91CF910895D8 -:1023C000209113032430F1F422E02093E9002FEF51 -:1023D0003091E800215035FD06C035ED3A95F1F712 -:1023E00000002111F5CF2091E80025FF0BC040E04F -:1023F00050E065E070E00E94D9138091E8008E778C -:102400008093E8000895CF93DF93EC01909113033C -:10241000943009F046C0809115018823D9F080914D -:1024200016018823B9F09093E9008FEF9091E800AE -:10243000815095FD06C095E19A95F1F70000811154 -:10244000F5CF8091E80085FF2CC040E050E060E1CE -:1024500070E017C081E08093E9008FEF9091E80071 -:10246000815095FD06C095ED9A95F1F70000811118 -:10247000F5CF8091E80085FF14C040E050E068E0AF -:1024800070E0CE010E94D9138091E8008E7780938E -:10249000E80080E1FE01ACE7B2E001900D928A9580 -:1024A000E1F7DF91CF91089580911203811109C066 -:1024B0000E946E150E94CB158091E200846080938B -:1024C000E2000895109212030895089508950C945F -:1024D000122442E061EC81E00E94E81442E061ECE9 -:1024E00082E00E94E81442E061EC83E00E94E8147C -:1024F00042E161EC84E00C94E81480911503833090 -:1025000009F455C030F4813071F0823009F48EC086 -:1025100008958A3009F47AC08B3009F460C089309C -:1025200009F09CC020C080911403813A09F096C044 -:102530008091E800877F8093E80080911803909154 -:102540001903892B21F460E18CE792E003C060E07D -:1025500080E090E070E00E9424148091E8008B7786 -:102560008093E800089580911403813209F076C0C9 -:102570008091180390911903009719F0039709F0BF -:102580006DC08091E800877F8093E8008091E8002B -:1025900082FD05C0809113038111F8CF5FC0809147 -:1025A000F10080938C028091E8008B7753C080917A -:1025B0001403813A09F052C08091180390911903D5 -:1025C000892B09F04BC08091E800877F8093E80059 -:1025D0008091E80080FFFCCF8091150136C080918A -:1025E00014038132D9F58091180390911903892B36 -:1025F000A9F58091E800877F8093E8000E941D156F -:1026000080911603809315010C94531D809114033F -:10261000813221F58091E800877F8093E8000E9455 -:102620001D158091170380938D02089580911403E6 -:10263000813AA1F48091E800877F8093E80080913F -:10264000E80080FFFCCF80918D028093F1008091A3 -:10265000E8008E778093E8000C941D15089584B7E8 -:10266000877F84BF88E10FB6F89480936000109252 -:1026700060000FBE90E080E80FB6F8948093610090 -:10268000909361000FBE0E94C0180E946E150E94B8 -:10269000CB158091E20084608093E20078940E94E0 -:1026A00051180E94C2188BE091E00E946C18809132 -:1026B0001303853069F40E94D3238091110388238A -:1026C000B1F30E940124882391F30E94C313EFCF3A -:1026D0000E94CA18ECCF292F332723303105C9F0C7 -:1026E00064F42130310581F02230310509F043C016 -:1026F0008DE690E020ED35E042C021323105F1F069 -:102700002232310541F137C082E190E02DE336E01D -:1027100036C099278130910541F08230910541F012 -:10272000892B49F5ECECF5E005C0EEE9F5E002C0D7 -:10273000E4E7F5E0849190E09F0121C06430D8F493 -:10274000E62FF0E0EE0FFF1FE255FE4F20813181B2 -:1027500089E090E014C0643070F470E0FB01EE0F8B -:10276000FF1FEA55FE4F20813181FB01EE55FE4FE0 -:10277000808190E004C080E090E020E030E0FA0149 -:1027800031832083089580E189BD82E189BD09B448 -:1027900000FEFDCF8091D8008F7D8093D80080917E -:1027A000E00082608093E0008091E00081FDFCCF3A -:1027B0000895CF92DF92EF92FF920F931F93CF93E2 -:1027C000DF93EC018B016A010E943C15811133C03B -:1027D000C114D10439F0F60180819181081B190BD5 -:1027E000C80FD91FE12CF12C0115110519F18091A9 -:1027F000E80085FD16C08091E8008E778093E800A0 -:10280000C114D10449F0F60180819181E80EF91ECE -:10281000F182E08285E00FC00E943C15882321F3FD -:102820000AC089918093F10001501109FFEFEF1A5E -:10283000FF0ADACF80E0DF91CF911F910F91FF90D7 -:10284000EF90DF90CF90089520911A0330911B03F1 -:102850002617370748F06115710539F42091E80013 -:102860002E772093E80001C0B90140E061157105A1 -:10287000A9F120911303222309F443C0253009F460 -:1028800042C02091E80023FD40C02091E80022FDD5 -:1028900032C02091E80020FFE9CF4091F300209161 -:1028A000F20030E0342BFC01CF016115710559F0C5 -:1028B0002830310540F481918093F1006150710915 -:1028C0002F5F3F4FF1CF41E02830310509F040E064 -:1028D0002091E8002E772093E800C8CF4111C9CF9E -:1028E0000AC080911303882361F0853061F08091E4 -:1028F000E80083FD0AC08091E80082FFF2CF80E00B -:10290000089582E0089583E0089581E0089520917C -:102910001A0330911B032617370748F0611571051C -:1029200039F42091E8002E772093E80001C0B90126 -:10293000FC0120E06115710591F18091130388235A -:1029400009F440C0853009F43FC08091E80083FD60 -:102950003DC08091E80082FD2FC08091E80080FF9B -:10296000E9CF2091F3008091F20090E0922B611565 -:10297000710559F08830910540F424912093F100BD -:102980003196615071090196F2CF21E0089709F064 -:1029900020E08091E8008E778093E800CBCF211172 -:1029A000CCCF0AC080911303882361F0853061F099 -:1029B0008091E80083FD0AC08091E80082FFF2CF99 -:1029C00080E0089582E0089583E0089581E008950D -:1029D000982F973058F59093E900981739F0709137 -:1029E000EC002091ED005091F00003C0242F762FD1 -:1029F00050E021FF19C03091EB003E7F3093EB0097 -:102A00003091ED003D7F3093ED003091EB0031606F -:102A10003093EB007093EC002093ED005093F000A6 -:102A20002091EE0027FF07C09F5FD3CF8F70809368 -:102A3000E90081E0089580E008958091140387FF04 -:102A400011C08091E80082FD05C0809113038111BF -:102A5000F8CF11C08091E8008B770BC080911303F1 -:102A6000882349F08091E80080FFF8CF8091E8004A -:102A70008E778093E80008952091E4003091E5007E -:102A800095E64091EC00842F817040FF22C0809138 -:102A9000E80080FD1CC080911303882391F08530ED -:102AA00091F08091EB0085FD10C04091E4005091C1 -:102AB000E5004217530729F39A01915011F784E07A -:102AC000089582E0089583E0089581E0089580E00C -:102AD00008954091E80042FFDECF08950E94DC1582 -:102AE0000E94E415E0EEF0E0808181608083E8EDF3 -:102AF000F0E080818F77808319BCA7EDB0E08C91E6 -:102B00008E7F8C9380818F7E808310921203089534 -:102B10000F931F93CF93DF930E94DC150E94E4155F -:102B2000C8EDD0E088818F7788838881806888832A -:102B300088818F7D888319BC1092130310920F0334 -:102B4000109211031092100300EE10E0F801808142 -:102B50008B7F808388818160888342E060E080E0B1 -:102B60000E94E814E1EEF0E080818E7F8083E2EE47 -:102B7000F0E0808181608083808188608083F801BB -:102B800080818E7F8083888180618883DF91CF916F -:102B90001F910F910895E8EDF0E080818F7E808392 -:102BA000E7EDF0E080818160808384E082BF81E096 -:102BB000809312030C948815E8EDF0E080818E7FFD -:102BC00080831092E20008951092DA001092E100E2 -:102BD00008951F920F920FB60F9211242F933F93D7 -:102BE0004F935F936F937F938F939F93AF93BF9315 -:102BF000EF93FF938091E10082FF0BC08091E20090 -:102C000082FF07C08091E1008B7F8093E1000E94EA -:102C100050188091DA0080FF1FC08091D80080FF9B -:102C20001BC08091DA008E7F8093DA008091D900FA -:102C300080FF0DC080E189BD82E189BD09B400FE3D -:102C4000FDCF81E0809313030E94541205C019BC8C -:102C5000109213030E9462128091E10080FF19C05C -:102C60008091E20080FF15C08091E2008E7F80930A -:102C7000E2008091E20080618093E2008091D800C0 -:102C800080628093D80019BC85E0809313030E9472 -:102C900066128091E10084FF30C08091E20084FFE1 -:102CA0002CC080E189BD82E189BD09B400FEFDCF61 -:102CB0008091D8008F7D8093D8008091E1008F7E35 -:102CC0008093E1008091E2008F7E8093E20080910A -:102CD000E20081608093E20080910F03882311F06D -:102CE00084E007C08091E30087FD02C081E001C05D -:102CF00083E0809313030E9467128091E10083FFB9 -:102D000029C08091E20083FF25C08091E100877F88 -:102D10008093E10082E08093130310920F0380916F -:102D2000E1008E7F8093E1008091E2008E7F8093AE -:102D3000E2008091E20080618093E20042E060E086 -:102D400080E00E94E8148091F00088608093F00099 -:102D50000E946512FF91EF91BF91AF919F918F916A -:102D60007F916F915F914F913F912F910F900FBE87 -:102D70000F901F9018951F920F920FB60F9211246B -:102D80002F933F934F935F936F937F938F939F9373 -:102D9000AF93BF93CF93DF93EF93FF93C091E9007D -:102DA000CF708091EC00D82FD17080FDD0E81092C8 -:102DB000E9008091F000877F8093F00078940E9472 -:102DC000FF161092E9008091F00088608093F00077 -:102DD000CD2BCF70C093E900FF91EF91DF91CF91A0 -:102DE000BF91AF919F918F917F916F915F914F9123 -:102DF0003F912F910F900FBE0F901F9018951F932A -:102E0000CF93DF93CDB7DEB7AA970FB6F894DEBFA6 -:102E10000FBECDBFE4E1F3E088E08E0F9091F100AA -:102E200091938E13FBCF0E947D128091E80083FF67 -:102E30001FC18091140390911503492F50E04A302F -:102E4000510508F015C1FA01EA59FF4F0C940C2EF8 -:102E5000803881F0823809F00BC1809118038F709F -:102E60008093E9008091EB0085FB882780F9109220 -:102E7000E90006C0809110039091110391118260C6 -:102E80009091E800977F9093E8008093F100109272 -:102E9000F100C8C0282F2D7F09F0EAC0882319F05F -:102EA000823061F0E5C080911603813009F0E0C006 -:102EB000933009F080E0809311032BC080911603BA -:102EC000811127C0809118038F7009F4D1C08093BD -:102ED000E9002091EB0020FF1CC0933021F4809189 -:102EE000EB00806214C09091EB0090619093EB0036 -:102EF00021E030E0A90102C0440F551F8A95E2F796 -:102F00004093EA001092EA008091EB008860809381 -:102F1000EB001092E9008091E800877F86C0811164 -:102F2000A7C0109116031F778091E3008078812B52 -:102F30008093E3008091E800877F8093E8000E94FF -:102F40001D158091E80080FFFCCF8091E300806830 -:102F50008093E300111102C082E001C083E08093FE -:102F6000130386C08058823008F082C08091160317 -:102F7000909117038C3D53E0950779F583E08A83A0 -:102F80008AE289834FB7F894DE01139620E03EE091 -:102F900051E2E32FF0E050935700E49120FF03C08B -:102FA000E295EF703F5FEF708E2F90E0EA3010F007 -:102FB000C79601C0C0968D939D932F5F243149F72A -:102FC0004FBF8091E800877F8093E8006AE270E05D -:102FD000CE0101960E94241414C0AE014F5F5F4FD2 -:102FE000609118030E946B13BC01009709F440C064 -:102FF0009091E800977F9093E80089819A810E94E0 -:1030000087148091E8008B778093E80031C0803886 -:1030100079F58091E800877F8093E80080910F0325 -:103020008093F1008091E8008E778093E8000E9401 -:103030001D151EC081111CC0909116039230C0F462 -:103040008091E800877F8093E80090930F030E94AF -:103050001D1580910F03811106C08091E30087FD4B -:1030600002C081E001C084E0809313030E946912D2 -:103070008091E80083FF0AC08091E800877F8093F9 -:10308000E8008091EB0080628093EB00AA960FB677 -:10309000F894DEBF0FBECDBFDF91CF911F91089591 -:1030A0000895CF93809113038823A1F0C091E90084 -:1030B000CF709091EC00892F817090FD80E8C82B33 -:1030C0001092E9008091E80083FD0E94FF16CF7006 -:1030D000C093E900CF910895909393028093920258 -:1030E0000895E0919202F0919302309721F00190BF -:1030F000F081E02D099480E00895E0919202F09132 -:103100009302309721F00280F381E02D0994089515 -:10311000E0919202F0919302309721F00480F581C2 -:10312000E02D099408952091900230919102821728 -:10313000930771F09093910280939002E091920234 -:10314000F0919302309721F00680F781E02D0994E9 -:10315000089520918E0230918F028217930771F0AB -:1031600090938F0280938E02E0919202F0919302ED -:10317000309721F00084F185E02D09940895089599 -:103180000C94BF180E9446240E94970A0E94CC24E7 -:103190000C947B295F926F927F928F929F92AF9255 -:1031A000BF92CF92DF92EF92FF920F931F93CF9334 -:1031B000DF9300D000D01F92CDB7DEB70E94DC0AAB -:1031C0009DE9C92E92E0D92E03E010E0AA24A39431 -:1031D000B12C502E802F0E94570B4C01F60172909B -:1031E00062906F016826792661147104A1F4015080 -:1031F000110978F78FEF89838A831B820E944F24FD -:103200008160782F9D838C8349815A816B818D8168 -:103210000E947A1938C08091F20281FD0E94600BF1 -:103220002BE030E07501022E02C0EE0CFF1C0A9468 -:10323000E2F7C70186219721892B09F129835A8258 -:103240008E209F2091E0892809F490E09B830E94C2 -:103250004F248160782F9D838C8349815A816B81B3 -:103260008D810E947A19000F111FF801EB56FD4F56 -:1032700080819181E826F926F182E08204C0215004 -:10328000310980F6B4CF0E94B326109194020E94B7 -:1032900071181817D1F00E947118809394020F9042 -:1032A0000F900F900F900F90DF91CF911F910F9182 -:1032B000FF90EF90DF90CF90BF90AF909F908F9056 -:1032C0007F906F905F900C94810A0F900F900F90F9 -:1032D0000F900F90DF91CF911F910F91FF90EF9082 -:1032E000DF90CF90BF90AF909F908F907F906F9026 -:1032F0005F900895CF93DF93CDB7DEB72B970FB6CE -:10330000F894DEBF0FBECDBF4F83588769877A8799 -:103310008B87DE01119686E0FD0111928A95E9F70F -:1033200085E0FE01379601900D928A95E1F749817B -:103330005A816B817C818D819E810E94F11F2B9629 -:103340000FB6F894DEBF0FBECDBFDF91CF910895C9 -:10335000CF93882309F4C2C0C82F823859F40E9441 -:10336000711881FDBBC089E30E94CB220E94982383 -:1033700089E30CC0833879F40E94711880FDAEC0D7 -:1033800083E50E94CB220E94982383E50E940D23AF -:10339000CF910C949823843859F40E94711882FDBF -:1033A0009DC087E40E94CB220E94982387E4EECF41 -:1033B0008CEF8C0F813A48F48C2F0E94E328811106 -:1033C0008DC08C2F0E94CB22E3CF80E28C0F8830FF -:1033D00048F4C77081E001C0880FCA95EAF70E94DF -:1033E0005123D6CF8BE58C0F833078F4C53A29F082 -:1033F000C63A31F083E890E005C081E890E002C071 -:1034000082E890E0CF910C94931888E58C0F83317B -:1034100008F064C0C83A39F1C93A41F1CA3A49F1F1 -:10342000CB3A51F1CC3A59F1CD3A61F1C03B69F157 -:10343000CE3A71F1CF3A79F1C13B81F1C23B89F1CA -:10344000C33B91F1C43B99F1C53BA1F1C63BA9F146 -:10345000C73BB1F1C83BB9F1C93BC1F1CA3BC9F1A6 -:1034600080E090E038C082EE90E035C089EE90E0D8 -:1034700032C08AEE90E02FC085EB90E02CC086EB46 -:1034800090E029C087EB90E026C08CEC90E023C050 -:103490008DEC90E020C083E891E01DC08AE891E0C7 -:1034A0001AC082E991E017C084E991E014C081E27A -:1034B00092E011C083E292E00EC084E292E00BC081 -:1034C00085E292E008C086E292E005C087E292E0E1 -:1034D00002C08AE292E0CF910C94A918CF9108958E -:1034E000882309F44BC0823859F40E94711881FF77 -:1034F00045C089E30E94CB220E94982389E30CC037 -:10350000833871F40E94711880FF38C083E50E94EF -:10351000CB220E94982383E50E940D230C949823CC -:10352000843859F40E94711882FF28C087E40E94F1 -:10353000CB220E94982387E4EFCF9CEF980F913A1B -:1035400058F390E2980F983050F4877091E001C0E2 -:10355000990F8A95EAF7892F0E945723DFCF9BE5C1 -:10356000980F933020F480E090E00C949318885AE0 -:10357000833120F480E090E00C94A918089588230A -:1035800021F00E9451230C9498230895882321F060 -:103590000E9457230C94982308957F928F929F92B4 -:1035A000AF92BF92CF92DF92EF92FF920F931F9351 -:1035B000CF93DF931F92CDB7DEB77C01C62E772E57 -:1035C000FC01058102950F70128111110E946E237A -:1035D0000E94C422882379F0112369F080E28C0DC7 -:1035E000883048F082E00E94AD220E94C42291E01F -:1035F000D82ED92601C0D12CE72DE295EF70F0E04E -:10360000E059FF4F0C940C2E872D807F072D0F70F3 -:10361000882311F00295007F112389F0002309F41B -:1036200099C180E28C0D883020F4802F0E945123B4 -:1036300003C0802F0E9461230E9498238BC18C2D90 -:103640000E94701A002309F4C3C180E28C0D8830F7 -:1036500020F4802F0E94572303C0802F0E946723ED -:103660000E949823B5C1872D807F972D9F7080324F -:1036700011F4892F03C0892F8295807FCC2021F0FF -:10368000F1E0CF16A1F01DC0112339F0002319F18C -:10369000013009F50E9481239BC1002319F00130FC -:1036A00009F496C189830E948423898110C1112362 -:1036B00021F0063008F08CC10EC0053008F088C13A -:1036C00006C1112359F0002331F0F701958190FFD5 -:1036D00041C19F7095830E94BF1A7AC1002309F4EB -:1036E000F6C03EC1872D86958695837090E0009741 -:1036F00019F0019761F06CC1112321F08C2D972DE9 -:10370000937002C080E090E00E94931861C1112381 -:1037100021F08C2D972D937002C080E090E00E94E4 -:10372000A91856C18C2D112319F00E94BB2502C087 -:103730000E9423260E94A8264BC1872D837009F082 -:1037400052C0111145C18C2D829586958770880FC6 -:10375000880F9C2D9F70892E912CA12CB12C082EA6 -:1037600004C0880C991CAA1CBB1C0A94D2F7C4FE86 -:1037700014C00FE010E020E030E0B901A80104C05F -:10378000440F551F661F771F8A95D2F7CB01BA01E8 -:10379000609570958095909503C060E070E0CB01D6 -:1037A000272D26952695237030E02230310569F0CB -:1037B0002330310589F0682979298A299B2921300C -:1037C000310571F00E94392103C1682979298A29BC -:1037D0009B290E945521FCC00E943921C501B401DA -:1037E0000E941D21F5C0112319F0872D817001C0A1 -:1037F0008695882309F4ECC08C2D82958695877078 -:10380000880F880F9C2D9F70892E912CA12CB12C94 -:10381000082E04C0880C991CAA1CBB1C0A94D2F761 -:10382000C4FE14C00FE010E020E030E0B901A801B0 -:1038300004C0440F551F661F771F8A95D2F7CB012E -:10384000BA01609570958095909503C060E070E036 -:10385000CB01272D269526952370422F50E042302C -:10386000510569F04330510589F0682979298A2981 -:103870009B294130510571F00E941322A9C068298B -:1038800079298A299B290E942F22A2C00E941322F3 -:10389000C501B4010E94F7219BC08C2D90E0FC0172 -:1038A000E05EF109E531F10508F050C0E058FF4F46 -:1038B0000C940C2E0C2D0F70872D8F71112321F07D -:1038C0000E949021802F07CF0E94B121802F0E945B -:1038D000C61A7EC0112341F0053008F079C0872D4B -:1038E0008F710E94D62174C0063008F071C0F7CFE6 -:1038F000112339F0872D8F710E94902169C0112307 -:10390000C9F3872D8F710E94B12162C0112329F064 -:10391000872D8F710E947B215BC00E94712158C04E -:10392000112351F0172D1F71812F0E94902163E008 -:10393000812F0E94A4224CC081E00E94AD2202305F -:1039400008F446C082E00E94AD2242C0112331F04B -:10395000002381F28C2D0E94A8193AC0002389F21D -:103960008C2D0E94701A34C0472D4F706C2DC701EA -:103970000E9499040E9495202BC0111129C0472D47 -:103980004F7050E042305105B9F04CF441155105EB -:1039900081F041305105E1F40E94A32919C0433060 -:1039A000510569F04430510599F48C2D0E94F52998 -:1039B0000FC00E948C290CC00E94BF2909C00E9420 -:1039C000D22906C0472D4F706C2DC7010E94620797 -:1039D000DD20F9F00E94A02280FD1BC0F7011282B9 -:1039E0000E949A220E949021C7010E94181D0E94E5 -:1039F0009A220F90DF91CF911F910F91FF90EF903E -:103A0000DF90CF90BF90AF909F908F907F900C945D -:103A1000B1210F90DF91CF911F910F91FF90EF9007 -:103A2000DF90CF90BF90AF909F908F907F90089540 -:103A30000F931F93CF93DF93EC01888199812B81A2 -:103A40003C81232BB9F09F3F11F48F3F99F0CE01B9 -:103A50000E946105882371F0688179818A810E94C2 -:103A600096228C010E944B220E941221B801CE01A5 -:103A70000E94CD1ADF91CF911F910F9108950E945E -:103A80006E230E947E230E9443230E9498230E945B -:103A900059270E94A82680E090E00E94931880E0B9 -:103AA00090E00C94A9180E945E230C943F1D0E9484 -:103AB0008B22292F22952F7030E02C3031054CF4C9 -:103AC0002A3031056CF42250310922303105A8F436 -:103AD00007C02C30310569F02F30310551F00DC091 -:103AE000803F69F018F4803E40F409C0843F29F417 -:103AF00006C093FB882780F9089580E0089581E04F -:103B00000895CF93DF9300D000D01F92CDB7DEB7DA -:103B10000F900F900F900F900F90DF91CF9108951D -:103B2000CF93DF9300D000D000D0CDB7DEB726967C -:103B30000FB6F894DEBF0FBECDBFDF91CF910895D1 -:103B40001F93CF93DF93C0919D0216E080919E0258 -:103B5000C81799F0D0E01C9FF0011D9FF00D1124B3 -:103B6000E156FD4F4081518162817381848195814D -:103B70000E94901D2196C770E9CFDF91CF911F91D0 -:103B800008954091CF025091D0026091D10270917E -:103B9000D2028091D3029091D4020C94901D809116 -:103BA000D40282958F7009F054C08091D10288238D -:103BB00009F44FC080919D02A0919E026091CF02B6 -:103BC0007091D0024091D2025091D302B6E08A1790 -:103BD00009F43FC090E041155105C1F17F3F11F458 -:103BE0006F3FA1F1B89FF001B99FF00D1124E1568C -:103BF000FD4F218172132AC02081621327C02281C8 -:103C0000211124C0238134812417350710F4215059 -:103C10003109241B350B283C3105C0F42091D40216 -:103C20002F7020612093D40226E0289FF001299F65 -:103C3000F00D1124EC55FD4F80818F7080618083E1 -:103C40008FEC92E00E94181D0C94A01D01968770C5 -:103C5000BECF0895CF92DF92EF92FF920F931F9302 -:103C6000CF93DF93CDB7DEB762970FB6F894DEBF80 -:103C70000FBECDBF8C0185E0F801DE011D960190DD -:103C80000D928A95E1F7D8014C9111965C911197AC -:103C900012966C9112971396CD90DC9014973091F8 -:103CA000CF027091D0028091D2029091D3020097FE -:103CB00009F46BC17F3F19F43F3F09F466C1E090FE -:103CC000D102EE2009F4C0C02091D402C816D90652 -:103CD00028F0F601E81BF90BCF0104C08095909500 -:103CE0008C0D9D1DFF24F394883C910578F0F12CF8 -:103CF000207F09F0C6C07C2DD98AC88A89890E9494 -:103D0000811D8FEC92E00E94181DB1C0822F807F30 -:103D100009F046C0751314C0341312C0611110C0ED -:103D20002F7020612093D4020E94C11D8FEC92E07D -:103D30000E94181D8091D402D80115968C932EC034 -:103D4000CD2819F15F3F11F44F3FF9F0F62E6111C4 -:103D50001CC080919D0220919E0236E0821709F4DA -:103D60005AC090E0389FF001399FF00D1124E156C0 -:103D7000FD4F7181571306C07081471303C07281D4 -:103D8000711103C001968770E9CFF62E662309F4FE -:103D900018C18091D40281608093D402F12C11C1AA -:103DA000751308C0341306C0611104C08091D40299 -:103DB000D801C3C04D875E878D859E856A8B0E9422 -:103DC000571D6A898823E1F16623D1F12091D4023D -:103DD000822F82958F7090E0029774F08091CF02CD -:103DE0009091D00298878F831986DB86CA862C87AC -:103DF000CE0107960E94181D86E0F801AFECB2E0F4 -:103E000001900D928A95E1F70E94CF1D0E94C11D7D -:103E1000FF24F394D6C04D875E878D859E850E94D2 -:103E20008B22292F22952F7030E0223031050CF0A3 -:103E3000BCC09F7009F0B6C0805E883008F4C1C075 -:103E4000C8010E94181DE4CFC816D90608F453C053 -:103E5000F601E81BF90BCF01883C910508F450C02E -:103E6000F12C7C2DD98AC88A89890E94811DEFECAA -:103E7000F2E086E0DF011D928A95E9F70E94C11DFC -:103E8000A0C0751314C0341312C0611110C080910A -:103E9000D402F8018583C8010E94181D86E0EFEC6A -:103EA000F2E0DF011D928A95E9F7FE2C8AC04D876A -:103EB0005E878D859E856A8B0E94571D6A8988233F -:103EC00009F4BECF662309F4BBCF2091D402822F20 -:103ED00082958F7090E002970CF48ECF8091CF0284 -:103EE0009091D0029A8389831B82DD82CC822E83BB -:103EF000CE0101967FCF809590958C0D9D1DACCF06 -:103F0000F62E662309F49CCF75132EC034132CC0F3 -:103F10002091D40220FD1FC0822F82958F70D9F08E -:103F2000D80115962C9315978F3049F08F5F982FF5 -:103F30009295907F822F8F70892B15968C93C80154 -:103F40000E94181D86E0F801AFECB2E001900D92DE -:103F50008A95E1F793CF86E0F801AFECB2E00190EB -:103F60000D928A95E1F72DC04D875E878D859E85E0 -:103F70000E94571D811140CF8091D40281608093AF -:103F8000D402C8010E94181D1CC0662309F458CF32 -:103F90004D875E878D859E850E94571D882309F475 -:103FA0004FCF2ACF811148CF0CC0243031050CF0FF -:103FB00047CF9F7009F440CFF8019581907F09F0B9 -:103FC0003BCF8F2D62960FB6F894DEBF0FBECDBFEC -:103FD000DF91CF911F910F91FF90EF90DF90CF90E5 -:103FE00008951F93CF93DF93CDB7DEB72C970FB60D -:103FF000F894DEBF0FBECDBF4F83588769877A879D -:104000008B879C87CE0107960E942A1E882369F021 -:104010008F8198852A853B85232BF1F19F3F09F0FD -:1040200063C08F3F09F060C037C086E0FE0137965D -:10403000DE01119601900D928A95E1F76F817885E6 -:10404000EA85FB85309741F17F3F11F46F3F21F105 -:1040500020919E0230E0C901019687709927409116 -:104060009D0250E08417950709F447C069837A835D -:10407000FD83EC8396E0929FD001939FB00D1124B5 -:10408000A156BD4FFE01319601900D929A95E1F730 -:1040900080939E020E94A01D16E080919D02909147 -:1040A0009E028917C1F1189FC001112481569D4FAE -:1040B0000E942A1E882379F1E0919D021E9FF00143 -:1040C0001124E156FD4F40815181628173818481C9 -:1040D00095810E94901D80919D0290E001968770CD -:1040E000992780939D02D9CF4F81588569857A851C -:1040F0008B859C850E94901DCFCF0E94531D1092EE -:104100009E0210929D02EFECF2E086E0DF011D922C -:104110008A95E9F7C1CF2C960FB6F894DEBF0FBE93 -:10412000CDBFDF91CF911F910895EF92FF920F9332 -:104130001F93CF93DF938C01009709F46CC0F12C8F -:10414000EE24E394E8012196F8018491843740F449 -:10415000843008F051C0813081F0823019F15BC0A9 -:10416000853709F444C0A8F19CE7980F903708F010 -:1041700052C08F770E94701A41C00E5F1F4FFE0120 -:10418000C49180E28C0F883048F4C7708E2D01C036 -:10419000880FCA95EAF70E94712314C08C2F0E94E1 -:1041A000A8192DC00E5F1F4FFE01C49180E28C0F35 -:1041B000883058F4C7708E2D01C0880FCA95EAF771 -:1041C0000E9477230E9498231AC08C2F0E94701A95 -:1041D00016C00E5F1F4FFE01C491CC2381F08FE902 -:1041E0009FE00197F1F700C00000C150F6CF0E5FCD -:1041F0001F4FFE01F49003C00E94A8198E018F2D5D -:10420000882309F49FCFEFE9FFE03197F1F700C071 -:1042100000008150F5CFDF91CF911F910F91FF905A -:10422000EF90089508956093D9027093DA02809315 -:10423000DB029093DC020C943F1D0F931F930091BF -:10424000D9021091DA022091DB023091DC02DC010C -:10425000CB01802B912BA22BB32B8093D90290936F -:10426000DA02A093DB02B093DC021F910F910C9451 -:104270003F1D0F931F930091D9021091DA022091F4 -:10428000DB023091DC02DC01CB0180239123A223ED -:10429000B3238093D9029093DA02A093DB02B09308 -:1042A000DC021F910F910C943F1D0F931F930091FF -:1042B000D9021091DA022091DB023091DC02DC019C -:1042C000CB0180279127A227B3278093D90290930F -:1042D000DA02A093DB02B093DC021F910F910C94E1 -:1042E0003F1D1092D5021092D6021092D702109262 -:1042F000D8020C943F1D41E050E060E070E004C043 -:10430000440F551F661F771F8A95D2F74093D50239 -:104310005093D6026093D7027093D8020C943F1D3D -:1043200041E050E060E070E004C0440F551F661F9C -:10433000771F8A95D2F78091D5029091D602A091ED -:10434000D702B091D802482B592B6A2B7B2B409374 -:10435000D5025093D6026093D7027093D8020C9482 -:104360003F1D41E050E060E070E004C0440F551F85 -:10437000661F771F8A95D2F7409550956095709586 -:104380008091D5029091D602A091D702B091D80227 -:10439000482359236A237B234093D5025093D602A6 -:1043A0006093D7027093D8020C943F1D41E050E017 -:1043B00060E070E004C0440F551F661F771F8A95A8 -:1043C000D2F78091D5029091D602A091D702B091F8 -:1043D000D802482759276A277B274093D502509354 -:1043E000D6026093D7027093D8020C943F1D0F93AE -:1043F0001F930091D5021091D6022091D7023091DF -:10440000D802DC01CB01802B912BA22BB32B809304 -:10441000D5029093D602A093D702B093D8021F91F1 -:104420000F910C943F1D0F931F930091D502109193 -:10443000D6022091D7023091D802DC01CB01802333 -:104440009123A223B3238093D5029093D602A09305 -:10445000D702B093D8021F910F910C943F1D0F9378 -:104460001F930091D5021091D6022091D70230916E -:10447000D802DC01CB0180279127A227B3278093A4 -:10448000D5029093D602A093D702B093D8021F9181 -:104490000F910C943F1D0895CF92DF92EF92FF92FF -:1044A0000F931F93CF93DF938C01C090D902D090CC -:1044B000DA02E090DB02F090DC028091D50290916C -:1044C000D602A091D702B091D802C82AD92AEA2AE6 -:1044D000FB2ACFE1D0E0D701C6010C2E04C0B6956F -:1044E000A795979587950A94D2F780FF06C0B801E3 -:1044F0008C2F0E94E709019721F4219760F780E053 -:1045000001C08C2FDF91CF911F910F91FF90EF9001 -:10451000DF90CF900895CF93DF93EC010E944C225F -:10452000BE010E94E709DF91CF910895CB010E945F -:104530008B2208958091DD02859585958595089556 -:104540008091DD028770089598E0899F9001112481 -:10455000262B2093DD020C9490212091DD02809582 -:1045600082238093DD02982F977069F430E0482F02 -:10457000552747FD50952417350729F085958595D2 -:1045800085950C94B12108959091DD02977081E09A -:1045900009F480E0089590911501992321F09091FC -:1045A0001601911109C02091170130911801F901EC -:1045B00032969FEF40E01FC0982F9695969596955E -:1045C0009F3050F5E0911701F0911801E90FF11DAE -:1045D000877021E030E0A90102C0440F551F8A9581 -:1045E000E2F7CA019181892B818308959F3F39F0B9 -:1045F0004F5F4E3041F051915813F8CF0DC051111B -:10460000F7CF942FF5CF9F3F39F0F901E90FF11D56 -:1046100097FDFA9582830895089590911501992345 -:1046200021F090911601911109C02091170130914C -:104630001801F9013296205F3F4F1FC0982F9695C1 -:10464000969596959F30F0F4E0911701F09118013E -:10465000E90FF11D877021E030E0A90102C0440F8D -:10466000551F8A95E2F7CA0180959181892381833C -:1046700008953196E217F30729F090819813F9CF46 -:104680001082F7CF089581E090E0E0911701F0915A -:104690001801E80FF91F1082019680319105A9F7E2 -:1046A00008959091F102892B8093F10208958095ED -:1046B0009091F10289238093F10208951092F10202 -:1046C00008959091F002892B8093F00208958095CF -:1046D0009091F00289238093F00208951092F002E5 -:1046E00008959091EF02892B8093EF0208958095B1 -:1046F0009091EF0289238093EF0208951092EF02C8 -:1047000008958093DE0208951092DE02089580914C -:10471000170190911801FC0131969C01205F3F4FD9 -:1047200080E0919191118F5FE217F307D1F708951F -:10473000E0911701F09118018091F1028083E091DE -:104740001701F091180190818091F002892B8083EC -:10475000E0911701F091180190818091EF02892B6F -:1047600080838091DE02882361F0E0911701F0914F -:1047700018019081892B80830E94872381111092D8 -:10478000DE0280911701909118010C947D1820E0B1 -:10479000009739F0AC0141505109842395232F5FD4 -:1047A000F7CF822F089580911303843039F110924E -:1047B000F30220E488E190E00FB6F894A895809386 -:1047C00060000FBE2093600080E00E94000480E043 -:1047D0000E94810A83B7817F846083BF83B7816031 -:1047E00083BF7894889583B78E7F83BF88E10FB6A7 -:1047F000F89480936000109260000FBE08950895B1 -:10480000089580E00E9400040E94FF230E94DC0AB9 -:104810000E9400240E94610B91E0811101C090E090 -:10482000892F08950E94531D80E00E9400040E9479 -:104830007B290E9471180C94810A1F920F920FB667 -:104840000F9211248F939F93AF93BF938091F302A4 -:10485000811113C08091F4029091F502A091F602AB -:10486000B091F7024196A11DB11D8093F40290937F -:10487000F502A093F602B093F702BF91AF919F911A -:104880008F910F900FBE0F901F90189582E084BDFE -:1048900093E095BD9AEF97BD80936E0008952FB772 -:1048A000F8948091F4029091F502A091F602B091F3 -:1048B000F7022FBF0895CF92DF92EF92FF920F93EE -:1048C0001F932FB7F8944091F4025091F502609134 -:1048D000F6027091F7022FBF6A017B01EE24FF24DC -:1048E0008C0120E030E0C016D106E206F30610F499 -:1048F000415051099A01281B390BC9011F910F9191 -:10490000FF90EF90DF90CF9008951F920F920FB617 -:104910000F9211248F939F93AF93BF938091F402D2 -:104920009091F502A091F602B091F7020196A11DB7 -:10493000B11D8093F4029093F502A093F602B09318 -:10494000F702BF91AF919F918F910F900FBE0F9083 -:104950001F9018950E946E15F8942FEF87EA91E644 -:10496000215080409040E1F700C0000087E090EBCC -:10497000DC0180931E0390931F03A0932003B09348 -:1049800021039CE088E10FB6F894A895809360001D -:104990000FBE90936000FFCF0E940B25811102C0D3 -:1049A0000E94E7240E9416258093F2020E941E2591 -:1049B00080931C0387FB882780F9809316010E944F -:1049C0001A25682F70E080E090E00C9413216DEEC2 -:1049D0007EEF80E090E00E94322E60E082E090E086 -:1049E0000E94202E60E083E090E00E94202E60E094 -:1049F00084E090E00E94202E60E085E090E00E943C -:104A0000202E60E086E090E00E94202E6FEF87E08D -:104A100090E00C94202E80E090E00E941A2E21E07D -:104A20008D3E9E4F09F020E0822F089582E090E0B5 -:104A30000C94122E83E090E00C94122E84E090E00F -:104A40000C94122E682F84E090E00C94202E86E0C7 -:104A500090E00C94122E682F86E090E00C94202EAB -:104A600087E090E00C94122E682F87E090E00C9481 -:104A7000202E8091FA0280FF0BC060911C0185E01E -:104A8000689FB001112475956795759567952BC042 -:104A900081FF09C060911C0185E0689FB00111246D -:104AA0007595679520C082FF07C060911C0185E065 -:104AB000689FB001112417C09091FB029923D1F097 -:104AC00060911B01961788F720911C0185E0289FB3 -:104AD00090011124929FA001939F500D112470E02A -:104AE000CA010E94F82D6038710540F46115710506 -:104AF00039F002C065E070E0862F08958FE70895D1 -:104B000081E008958091FA0280FF08C060911A0147 -:104B100070E0759567957595679521C081FF06C012 -:104B200060911A0170E07595679519C082FF04C005 -:104B300060911A0170E010C09091FB029923C1F0BE -:104B4000609119019617A0F780911A01899FC00101 -:104B5000112470E00E94F82D6038710528F4611569 -:104B6000710521F0862F08958FE7089581E008955B -:104B700061E070E0F4CF803F21F40E9439258195F7 -:104B800004C0813F29F40E9439258093FE020895D4 -:104B9000823F21F40E943925819504C0833F29F486 -:104BA0000E9439258093FD020895893F19F40E94DF -:104BB000822505C08A3F31F40E9482258195809329 -:104BC000FF0208958B3F21F40E948225819504C045 -:104BD0008C3F29F40E948225809300030895843F2E -:104BE00021F48091FC02816017C0853F21F48091FF -:104BF000FC02826011C0863F21F48091FC02846037 -:104C00000BC0873F21F48091FC02886005C0883F7B -:104C100031F48091FC0280618093FC0208958D3F05 -:104C200021F48091FA0281600BC08E3F21F48091C3 -:104C3000FA02826005C08F3F29F48091FA028460F5 -:104C40008093FA020895803F39F48091FE0287FF35 -:104C50006CC01092FE0269C0813F29F48091FE026F -:104C60001816BCF362C09091FD02823F29F497FFB1 -:104C70005CC01092FD0259C0833F19F41916CCF3A1 -:104C800054C0893F41F48091FF0218160CF04DC0CA -:104C90001092FF024AC08A3F29F48091FF0287FFE9 -:104CA00044C0F6CF8B3F39F48091000387FF3DC0AD -:104CB000109200033AC08C3F29F48091000318162B -:104CC000BCF333C0843F21F48091FC028E7F17C077 -:104CD000853F21F48091FC028D7F11C0863F21F435 -:104CE0008091FC028B7F0BC0873F21F48091FC02F6 -:104CF000877F05C0883F31F48091FC028F7E8093CE -:104D0000FC0213C08D3F21F48091FA028E7F0BC00C -:104D10008E3F21F48091FA028D7F05C08F3F29F4E8 -:104D20008091FA028B7F8093FA028091FD028111BB -:104D30000EC08091FE0281110AC08091FF02811194 -:104D400006C080910003811102C01092FB020895F9 -:104D50008CEF92E00E9488180E944F249093F902F1 -:104D60008093F80208951F93CF93DF938091F80208 -:104D70009091F9020E945B24AC019091FB0299236F -:104D800021F020911D0130E006C020911E018AE033 -:104D9000289F900111244217530708F486C0809180 -:104DA000FD02C091FE02D091FF021091000381111B -:104DB00007C0C11176C0D11174C0111172C075C085 -:104DC0009F3F19F09F5F9093FB02181624F40E94F6 -:104DD00039258093FD028091FD0287FF05C00E9466 -:104DE000392581958093FD021C1624F40E943925F3 -:104DF0008093FE028091FE0287FF05C00E94392544 -:104E000081958093FE026091FD02662339F1C09185 -:104E1000FE02CC2319F1772767FD7095872F972F16 -:104E20000E941A2B23E333E343E35FE30E942A2C1F -:104E30000E94E72A6093FD026C2F772767FD70952B -:104E4000872F972F0E941A2B23E333E343E35FE37B -:104E50000E942A2C0E94E72A6093FE021D1624F469 -:104E60000E9482258093FF028091FF0287FF05C088 -:104E70000E94822581958093FF02111624F40E94DE -:104E80008225809300038091000387FF05C00E9464 -:104E90008225819580930003DF91CF911F910C941F -:104EA000A8269F3F09F08ECF96CFDF91CF911F911B -:104EB0000895ECEFF2E085E0DF011D928A95E9F7B5 -:104EC0001092FB021092FA020895833081F128F4C7 -:104ED000813059F08230D1F00895853009F449C00D -:104EE000B8F1863009F456C0089580911E01262F2E -:104EF00030E0280F311D2F3F310524F4680F6093F7 -:104F00001E0108958FEF80931E01089580911D0169 -:104F1000262F30E0280F311D2F3F310524F4680F74 -:104F200060931D0108958FEF80931D010895809176 -:104F30001C01262F30E0280F311D2F3F310524F4AE -:104F4000680F60931C0108958FEF80931C010895F2 -:104F500080911B01262F30E0280F311D2F3F310596 -:104F600024F4680F60931B0108958FEF80931B0159 -:104F7000089580911A01262F30E0280F311D2F3F10 -:104F8000310524F4680F60931A0108958FEF809320 -:104F90001A01089580911901262F30E0280F311D44 -:104FA0002F3F310524F4680F6093190108958FEFA6 -:104FB000809319010895833011F128F4813049F06C -:104FC000823091F00895853081F120F18630C1F171 -:104FD000089580911E01681720F4861B80931E019E -:104FE000089510921E01089580911D01681720F404 -:104FF000861B80931D01089510921D0108958091D4 -:105000001C01681720F4861B80931C0108951092E0 -:105010001C01089580911B01681720F4861B809362 -:105020001B01089510921B01089580911A016817C1 -:1050300020F4861B80931A01089510921A01089596 -:1050400080911901681720F4861B80931901089537 -:105050001092190108950F931F93873208F048C0EA -:105060008E3108F08DC0803109F477C008F58730A3 -:1050700009F461C068F4863009F09DC08091F202A5 -:10508000817F8E7F8093F20281E08093020394C03F -:105090008B3009F489C08E3009F08DC08091F20206 -:1050A00082FB222720F991E0922790FB82F95EC0D3 -:1050B000863109F479C060F4813109F07CC00E9426 -:1050C000531D9091160181E08927809316016CC0D1 -:1050D000893109F469C08B3109F06DC08091F20209 -:1050E00081FB222720F991E0922790FB81F93EC0B5 -:1050F000883309F459C050F4893209F457C0853314 -:1051000009F454C0873209F451C055C0833409F4FE -:105110004DC028F48A3308F44EC0895332C0883415 -:1051200009F049C00E94531D0E94910B0E9458052E -:105130000E94AA2439C09091F202892F8095817033 -:1051400080FB90F929F0966098609093F20234C049 -:10515000997F977F9093F20227C08091F20283FBA0 -:10516000222720F991E0922790FB83F98093F202A5 -:105170009923D1F08091F20281608093F20214C0F1 -:105180008D5141E050E060E070E08A019B0104C075 -:10519000000F111F221F331F8A95D2F7C901B801D2 -:1051A0000E9413210E94531D81E006C061E070E05F -:1051B00080E090E0F5CF80E01F910F91089580E0AE -:1051C000089580E00895CF93C82F80910203813025 -:1051D00069F018F08230C9F184C0E0911701F091B4 -:1051E00018018081823209F07EC007C0E09117016A -:1051F000F09118018081823261F48C2F0E94DF28A7 -:10520000811104C08C2F0E942B281DC081E090E0EA -:105210001AC08C2F0E94E128811114C0C43179F08A -:1052200048F4CB3079F0C03109F061C082E080935E -:10523000020308C0C93219F0C83321F058C01092D7 -:10524000020355C081E0817054C0C93291F120F54C -:10525000C43179F1B0F4C73009F047C08EE18093D2 -:105260001E0182E380931D018AE080931C0184E18A -:1052700080931B0188E080931A0188E280931901D2 -:1052800034C0CE51C63088F5EC2FF0E0EA54FE4F22 -:1052900080818093010329C0CE34E9F020F4CB341F -:1052A00021F56AE013C0C13579F0C235F1F461E04F -:1052B0000DC080910103882319F01092010315C0DD -:1052C00081E08093020315C061E006C08091010374 -:1052D0000E9465270AC06AE0809101030E94DB27D3 -:1052E00004C01092020380E004C081E002C080E0AC -:1052F000AACFCF9108950E940B25811102C00E9470 -:10530000E7240E94272580931D0380FF02C0869515 -:1053100001C080E00C94000480911D03982F9695A5 -:10532000292F30E0233031054CF49F5F990F8170B5 -:10533000892B816080931D030E942B2580911D0382 -:1053400086950C94000480911D03982F969591F0FA -:105350009158990F8170892B80931D038E7F91E066 -:1053600009F490E080911D0390FB80F980931D0368 -:105370000E942B2580911D0386950C94000480913A -:105380001D03982F909590FB80F980931D030E9438 -:105390002B2580911D0380FF02C0869501C080E00F -:1053A0000C94000490911D03892F86958F5F8F7751 -:1053B0009170843028F4880F892B80931D0302C0DC -:1053C00090931D0380911D038E7F91E009F490E07E -:1053D00080911D0390FB80F980931D030E942B2573 -:1053E00080911D0386950C94000420911D03922F3B -:1053F00096958927982F990F822F8170892B8093FA -:105400001D038E7F91E009F490E080911D0390FBD5 -:1054100080F980931D030E942B2580911D038695A2 -:105420000C94000480911D03869508955058BB2765 -:10543000AA270ED0D1C1C2D130F0C7D120F031F4AB -:105440009F3F11F41EF4B7C10EF4E095E7FB9FC136 -:10545000E92FD3D180F3BA17620773078407950742 -:1054600018F071F49EF5EBC10EF4E0950B2EBA2FF7 -:10547000A02D0B01B90190010C01CA01A00111245A -:10548000FF27591B99F0593F50F4503E68F11A1606 -:10549000F040A22F232F342F4427585FF3CF469597 -:1054A00037952795A795F0405395C9F77EF41F16B9 -:1054B000BA0B620B730B840BBAF09150A1F0FF0F83 -:1054C000BB1F661F771F881FC2F70EC0BA0F621F6F -:1054D000731F841F48F4879577956795B795F7955F -:1054E0009E3F08F0B3CF9395880F08F09927EE0FF1 -:1054F00097958795089527D108F481E008950CD0F9 -:105500006BC163D140F05AD130F021F45F3F19F004 -:105510003EC1511195C14FC170D198F39923C9F380 -:105520005523B1F3951B550BBB27AA2762177307A9 -:10553000840738F09F5F5F4F220F331F441FAA1F5D -:10554000A9F333D00E2E3AF0E0E830D0915050401D -:10555000E695001CCAF729D0FE2F27D0660F771FCB -:10556000881FBB1F261737074807AB07B0E809F0AD -:10557000BB0B802DBF01FF2793585F4F2AF09E3F42 -:10558000510568F004C15CC15F3FECF3983EDCF369 -:10559000869577956795B795F7959F5FC9F7880FBB -:1055A000911D9695879597F90895E1E0660F771F0D -:1055B000881FBB1F621773078407BA0720F0621B9E -:1055C000730B840BBA0BEE1F88F7E095089504D097 -:1055D0006894B11135C1089518D188F09F5790F0A3 -:1055E000B92F9927B751A0F0D1F0660F771F881F08 -:1055F000991F1AF0BA95C9F712C0B13081F01FD1C6 -:10560000B1E008951CC1672F782F8827B85F39F063 -:10561000B93FCCF3869577956795B395D9F73EF466 -:1056200090958095709561957F4F8F4F9F4F08950E -:10563000E89409C097FB3EF490958095709561952C -:105640007F4F8F4F9F4F9923A9F0F92F96E9BB27E2 -:105650009395F695879577956795B795F111F8CF5E -:10566000FAF4BB0F11F460FF1BC06F5F7F4F8F4FC9 -:105670009F4F16C0882311F096E911C0772321F0BF -:105680009EE8872F762F05C0662371F096E8862F57 -:1056900070E060E02AF09A95660F771F881FDAF7AE -:1056A000880F9695879597F9089588D018F011F08E -:1056B0008CD038F480C0C4C0E92F9FD0B0F35523FC -:1056C000C9F3E7FB6217730784079507A8F199F3FD -:1056D000E92FFF2788232AF03197660F771F881F4D -:1056E000DAF7952F5527442332F091505040220F7E -:1056F000331F441FD2F7BB27E91BF50B621B730B4B -:10570000840BB109C1F222F4620F731F841FB11D13 -:1057100031972AF0660F771F881FBB1FEFCF91507C -:1057200050405AF041F0882332F0660F771F881FEF -:1057300091505040C1F7939530C086957795679505 -:105740009F5FD9F7F8CF990F0008550FAA0BE0E833 -:10575000FEEF16161706E807F907C0F01216130633 -:10576000E407F50798F0621B730B840B950B39F473 -:105770000A2661F0232B242B252B21F408950A26D9 -:1057800009F4A140A6958FEF811D811D089597F919 -:105790009F6780E870E060E008959F3F31F091508E -:1057A00020F4879577956795B795880F911D969505 -:1057B000879597F908959FEF80EC089500240A9447 -:1057C0001616170618060906089500240A941216DC -:1057D0001306140605060895092E0394000C11F40F -:1057E000882352F0BB0F40F4BF2B11F460FF04C0BC -:1057F0006F5F7F4F8F4F9F4F089557FD9058440F15 -:10580000551F59F05F3F71F04795880F97FB991F1F -:1058100061F09F3F79F087950895121613061406DC -:10582000551FF2CF4695F1DF08C016161706180669 -:10583000991FF1CF86957105610508940895E89444 -:10584000BB2766277727CB0197F908957CDF08F4FB -:105850008FEF08950BD0C0CFB1DF28F0B6DF18F07E -:10586000952309F094CFA7CF1124EACFC6DFA0F388 -:10587000959FD1F3950F50E0551F629FF001729FE5 -:10588000BB27F00DB11D639FAA27F00DB11DAA1F04 -:10589000649F6627B00DA11D661F829F2227B00D51 -:1058A000A11D621F739FB00DA11D621F839FA00DDC -:1058B000611D221F749F3327A00D611D231F849F2C -:1058C000600D211D822F762F6A2F11249F57504083 -:1058D0008AF0E1F088234AF0EE0FFF1FBB1F661F1E -:1058E000771F881F91505040A9F79E3F510570F0D7 -:1058F0004ECFA6CF5F3FECF3983EDCF386957795CD -:105900006795B795F795E7959F5FC1F7FE2B880FD1 -:10591000911D9695879597F90895FA01EE0FFF1F4F -:1059200030962105310599F16115710561F48038D2 -:10593000BFE39B0749F168949038810561F0803896 -:10594000BFEF9B0741F0992342F5FF3FE105310589 -:10595000210511F1E8940894E795D901AA2329F4C7 -:10596000AB2FBE2FF85FD0F310C0FF5F70F4A69589 -:10597000E0F7F73950F019F0FF3A38F49F779F932A -:105980000CD00F9007FC905808953EF014CF60E0C3 -:1059900070E080E89FE308954FE79F775F934F9310 -:1059A0003F932F939ED02F913F914F915F9152DF64 -:1059B00005C019F40EF0EBCE42CFFDCE26DFC8F3C2 -:1059C0009638C0F707F80F92E8942BE33AEA48EBD1 -:1059D0005FE74EDF0F920F920F924DB75EB70F92B7 -:1059E000C0D0EAE2F1E016D04F915F91EF91FF91C4 -:1059F000E595EE1FFF1F49F0FE57E0684427EE0FC4 -:105A0000441FFA95E1F74195550B32D00F9007FEF0 -:105A100026C00895DF93CF931F930F93FF92EF92C9 -:105A2000DF927B018C01689405C0DA2EEF011EDF46 -:105A3000FE01E894A5912591359145915591AEF3DC -:105A4000EF0106DDFE019701A801DA9479F7DF90F6 -:105A5000EF90FF900F911F91CF91DF9108959B01DF -:105A6000AC0160E070E080E89FE349CD90CE95CE38 -:105A7000CCDEE8F39923D9F3940F511DBBF3915079 -:105A8000504094F059F0882332F0660F771F881F3A -:105A900091505040C1F79E3F510544F7880F911D2A -:105AA0009695879597F908955F3FACF0983E9CF0E6 -:105AB000BB27869577956795B79508F4B160939560 -:105AC000C1F7BB0F58F711F460FFE8CF6F5F7F4F4E -:105AD0008F4F9F4FE3CFB4CE0EF05FCE6CCE689465 -:105AE00056CE93DEC8F39923D1F3C6F3DF93CF9359 -:105AF0001F930F93FF92C92FDD2788232AF0219748 -:105B0000660F771F881FDAF720E030E040E85FEB90 -:105B10009FE3883920F0803E30F021968F7787DC34 -:105B2000E2E5F1E003C083DCEFE7F1E073DF8B0136 -:105B3000BE01EC01FB2E6F5771097595771F880B1D -:105B4000990B78DD28E132E741E35FE38FDEAF2D8B -:105B50009801AE01FF900F911F91CF91DF9178DCFA -:105B60003BCEFA01DC01AA0FBB1F9B01AC01BF5762 -:105B700028F422273327442750781FC0B75188F4D0 -:105B8000AB2F0024469537952795011CA395D2F39A -:105B9000002069F0220F331F441FB395DAF30DD0B4 -:105BA00045CC61307105A0E88A07B94630F49B0105 -:105BB000AC016627772788279078309621F02083DC -:105BC0003183428353830895AA1BBB1B51E107C055 -:105BD000AA1FBB1FA617B70710F0A61BB70B881F7D -:105BE000991F5A95A9F780959095BC01CD0108950C -:105BF00097FB072E16F4009407D077FD09D00E947A -:105C0000E42D07FC05D03EF4909581959F4F0895B3 -:105C1000709561957F4F0895EE0FFF1F0590F491E9 -:105C2000E02D0994F999FECF92BD81BDF89A99278C -:105C300080B50895A8E1B0E042E050E00C943A2E1F -:105C4000262FF999FECF92BD81BDF89A019700B435 -:105C5000021639F01FBA20BD0FB6F894FA9AF99AD5 -:105C60000FBE08950196272F0E94212E0C94202EFE -:105C7000DC01CB01FC01F999FECF06C0F2BDE1BD0C -:105C8000F89A319600B40D9241505040B8F70895FB -:045C9000F894FFCFB6 -:105C9400640007000CFF0000003F6475110312E06C -:105CA40011AC1178110101DF022808140A321E0018 -:105CB40002040507090B0C0E1011131517181A1CF2 -:105CC4001D1F2123242628292B2D2F30323435372C -:105CD400393B1F0F03764F5F6F7F49694379095939 -:105CE40053633149803F5D8B803FF8BF803FCAE1F9 -:105CF400803F73ED803FCAE1803FF8BF803F5D8BFA -:105D0400803F3149803F0000803FF16D7F3F75EA5D -:105D14007E3F4C827E3F833F7E3F84287E3F833F8D -:105D24007E3F4C827E3F75EA7E3FF16D7F3F0000EF -:105D3400803F3F4D36390B07BE0688064F06E20505 -:105D4400FB0514062D0601020304050607080900D5 -:00000001FF diff --git a/keyboard/planck/keymaps/nico/compiled.hex b/keyboard/planck/keymaps/nico/compiled.hex deleted file mode 100644 index 61527c5307..0000000000 --- a/keyboard/planck/keymaps/nico/compiled.hex +++ /dev/null @@ -1,1456 +0,0 @@ -:100000000C94C4020C9408030C9408030C94080389 -:100010000C9408030C9408030C9408030C94080334 -:100020000C9408030C9408030C94B5140C948715D5 -:100030000C94E9220C9408030C9408030C94080314 -:100040000C9408030C946A030C9408030C940803A2 -:100050000C9408030C9451230C9408030C9408038B -:100060000C9408030C9408030C9408030C940803E4 -:100070000C9408030C9408030C9408030C940803D4 -:100080000C942A0B0C9408030C9408030C9408039A -:100090000C9408030C9408030C9408030C940803B4 -:1000A0000C9408030C9408030C940803F41516161A -:1000B0000417161604175B167E160417D316E616D9 -:1000C000D019D019FF19FF193E1A5E1AB41BB41BC0 -:1000D000691AB41B191B191B801B891BB41BAE1B8F -:1000E000261B261B261B261B261B261B261B261B08 -:1000F000261B261B261B261B261B261B261B261BF8 -:10010000361B441B4B1B521B5C1B07634236B79BC1 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C00002010000000000000000000000002AA35F -:1001D00028A42B0014001A000800150017001C00AA -:1001E00018000C00120013002A00E00004001600A2 -:1001F000070009000A000B000D000E000F0033007D -:100200003400E1001D001B0006001900050011006C -:100210001000360037003800280000302900E200C6 -:10022000E30001202C002C0002205000510052005D -:100230004F002B0014001A00090013000A000D00E3 -:100240000F0018001C0033002A00E0000400150015 -:100250001600170007000B00110008000C00120028 -:100260003400E1001D001B000600190005000E000F -:100270001000360037003800280000302900E20066 -:10028000E30001202C002C000220500051005200FD -:100290004F002B0034003600370013001C0009000B -:1002A0000A00060015000F002A00E00004001200FA -:1002B000080018000C0007000B00170011001600C2 -:1002C0003800E100330014000D000E001B00050093 -:1002D00010001A0019001D00280000302900E2005B -:1002E000E30001202C002C0002205000510052009D -:1002F0004F0035021E021F022002210222022302A9 -:1003000024022502260227022A0001003A003B00AF -:100310003C003D003E003F002D022E022F02300225 -:10032000310201004000410042004300440045000A -:10033000005301530253005001000030010001003E -:100340000100010069006A000100BB00AA00A900C9 -:10035000AE0035001E001F002000210022002300F7 -:1003600024002500260027002A0001003A003B0057 -:100370003C003D003E003F002D002E002F003000CD -:1003800031000100400041004200430044004500AC -:1003900000530153025300500100003001000100DE -:1003A0000100010069006A000100BB00AA00A90069 -:1003B000AE002803540068006500200050006C0067 -:1003C00061006E0063006B0020004B006500790047 -:1003D00062006F0061007200640000002C034F0097 -:1003E0007200740068006F006C0069006E006500A8 -:1003F0006100720020004B006500790062006F0010 -:100400006100720064007300000004030904090223 -:100410006D00040100A0FA090400000103010100BD -:10042000092111010001223F000705810308000A8C -:100430000904010001030102000921110100012248 -:100440004D000705820308000A09040200010300A9 -:10045000000009211101000122360007058303086D -:10046000000A090403000103000000092111010032 -:100470000122390007058403100001120110010058 -:10048000000008EDFE6060010001020001050109A5 -:1004900006A101050719E029E71500250195087552 -:1004A000018102050819012905950575019102953B -:1004B000017503910105071900297715002501959C -:1004C0007875018102C005010980A101850216012C -:1004D0000026B7001A01002AB700751095018100A7 -:1004E000C0050C0901A1018503160100269C021A12 -:1004F00001002A9C02751095018100C005010902C6 -:10050000A1010901A100050919012905150025010D -:100510009505750181029501750381010501093079 -:1005200009311581257F95027508810609381581E5 -:10053000257F950175088106050C0A38021581256D -:100540007F950175088106C0C005010906A1010556 -:100550000719E029E7150025019508750181029525 -:100560000175088101050819012905950575019195 -:10057000029501750391010507190029FF15002552 -:10058000FF950675088100C011241FBECFEFDAE089 -:10059000DEBFCDBF04B603FE24C080911E03909140 -:1005A0001F03A0912003B09121038730904BA740F7 -:1005B000B04BB9F410921E0310921F031092200347 -:1005C0001092210314BE84B7877F84BF88E10FB6E1 -:1005D000F89480936000109260000FBEE0E0F8E3B2 -:1005E000099511E0A0E0B1E0ECE2FAE502C0059067 -:1005F0000D92A03CB107D9F713E0A0ECB1E001C027 -:100600001D92AE31B107E1F70E94FB110C94142D3D -:100610000C9400000895089581E0089508950C94C5 -:100620000B030C940C030C940E030E94DE2823E0B1 -:1006300030E0281B3109220F2093C4010895282F90 -:100640002F9880918000211108C0877F80938000BF -:1006500010928D0010928C001BC0886080938000E7 -:10066000233019F48FEF9FEF0FC083E090E0821BDF -:100670009109880F991F2FEF3FEFA90102C05695EE -:1006800047958A95E2F7CA0190938D0080938C007C -:100690000C9415030E94150384E08093C30110920B -:1006A000C0010895279A2F988FEF9FEF90938700AE -:1006B000809386008AE08093800089E180938100A6 -:1006C0000E9447280C944A030E9452036E9A769A1D -:1006D0000C940A031F920F920FB60F9211242F93BE -:1006E0003F938F939F93EF93FF93E091C101F0911C -:1006F000C201CF0101969093C2018093C101009085 -:10070000C30102C0F695E7950A94E2F7EF73809172 -:10071000C001823019F4E03251F404C0813039F460 -:10072000EF3329F480916F008D7F80936F00F0E0AC -:10073000E457FE4FE49121E031E0E29FC001E39FE6 -:10074000900D11240090C40102C0969587950A94DB -:10075000E2F790938D0080938C00FF91EF919F9131 -:100760008F913F912F910F900FBE0F901F90189572 -:1007700061110DC0FC018281882331F085EE0E9459 -:1007800074180E949E2803C085EE0E943C1980E0E8 -:1007900090E0089581E008950C94CA0308950C94A4 -:1007A000640380911502882309F448C08091D10127 -:1007B0009091D201009779F40E941B239093D2016B -:1007C0008093D1018091D30190E0009771F48091E2 -:1007D000D40190E00AC00E942723209100013091AB -:1007E00001012817390740F329C00197880F991F85 -:1007F000880F991FFC01EB52FE4F6081718182814D -:1008000093810E94900AE091D30184E0E89FF00177 -:100810001124EB52FE4F60817181828193814FE000 -:1008200050E00E94480E8091D30190E001966091C3 -:10083000D40170E00E94C42C8093D3010C940F0368 -:10084000109217020C945D0A0895089581E0809338 -:1008500017020C942504089508958F929F92AF92E9 -:10086000BF92EF92FF920F931F93CF93DF93CDB779 -:10087000DEB7A3970FB6F894DEBF0FBECDBF7C01E5 -:10088000FC0100811181C8010E941821B8010E9459 -:100890002F068C01B7010E94CC03882309F4CCC138 -:1008A0000032F0E51F0741F4F7018281882309F443 -:1008B00058C00E94AC0EC0C10132F0E51F0741F4E0 -:1008C000F7018281882309F44CC00E94B50EB4C19F -:1008D0000232F0E51F0751F4F7018281882309F401 -:1008E00040C00E94A80E8111F0CFE3CF0332F0E5A3 -:1008F0001F0739F4F7018281882399F10E942604A9 -:100900009BC10432F0E51F0739F4F7018281882387 -:1009100041F10E94200490C10532F0E51F0749F41F -:10092000F70182818823E9F0809117028111F1CFCC -:10093000E5CF0632F0E51F0739F4F70182818823FD -:1009400081F00E94BC0E0AC00732F0E51F0749F48F -:10095000F7018281882329F00E94C70E0E942C048F -:100960006BC180911702811105C0F701828181114D -:10097000CFC018C1003E110579F4F70182818823A8 -:1009800009F44DC00E945D0A81E080931602109226 -:1009900015021092D40150C1023E110559F4F7011D -:1009A00082818823E1F10E945D0A10921602109262 -:1009B000150242C1033E110591F4F701828188239B -:1009C00071F10E945D0A1092160281E08093150277 -:1009D0001092D3011092D2011092D1012DC1023593 -:1009E000110559F4F7018281882309F425C180910A -:1009F0000001909101010A970DC00135110579F4AC -:100A0000F7018281882309F417C180910001909138 -:100A100001010A9690930101809300010DC140915C -:100A2000040183E2EFE1F1E0DE01119601900D9205 -:100A30008A95E1F7F701808121E030E02C0F3D1F1E -:100A4000280F311DC9012091020130910301FC01E1 -:100A5000E20FF31F6081772767FD7095640F711DAA -:100A6000882777FD8095982F0E94E62920E030E0C6 -:100A700040E451E40E944B294B015C01F7012181C4 -:100A800084E090E0821B9109BC01882777FD809566 -:100A9000982F0E94E6299B01AC01C501B4010E9478 -:100AA000E3289B01AC0160E070E080E090E40E94EC -:100AB000592B20E030E04CED50E40E94F62A4B0127 -:100AC0005C01F70182818823D1F04FE050E0C5013D -:100AD000B4010E94480E809116028823A1F08091F3 -:100AE000D40124E0829FF0011124EB52FE4F80825A -:100AF0009182A282B3828F5F8093D40104C0C5012A -:100B0000B4010E94900A0F3F110508F02ECF94C047 -:100B10008091D00181111FC0043130E5130709F025 -:100B200051C00E94CE0381E08093D0010E941B231C -:100B30009093CF018093CE011092C7011092C9010A -:100B40001092C8011092CB011092CA011092CD01EF -:100B50001092CC0171C08091CE019091CF010E9482 -:100B60002723883C910570F48091C701E82FF0E0BD -:100B7000EE0FFF1FE853FE4F118300838F5F8093BA -:100B8000C7015AC0043880E5180721F00538104520 -:100B900001F13AC0F7018281882341F01092C5012A -:100BA00082E01EC0043830E5130759F58091C50175 -:100BB000811106C086E20E94741886E20E943C19E8 -:100BC00082E01CC00438F0E51F0741F305381045EA -:100BD000D9F4F7018281882331F01092C60180E2B6 -:100BE0000E948B1929C08091C601811106C087E23D -:100BF0000E94741887E20E943C1980E20E949219B8 -:100C00001BC00538104529F381E08093C50180930E -:100C1000C601C701A3960FB6F894DEBF0FBECDBFC5 -:100C2000DF91CF911F910F91FF90EF90BF90AF9008 -:100C30009F908F900C94110380E0A3960FB6F894C8 -:100C4000DEBF0FBECDBFDF91CF911F910F91FF90FF -:100C5000EF90BF90AF909F908F90089508959CE083 -:100C6000799FF001112490E3899FE00DF11D11247B -:100C7000E60FF11DEE0FFF1FEE52FE4F859194918E -:100C80000895880F991FFC01E45BFF4F85919491B3 -:100C90000895880F991FFC01E453FE4F85919491AC -:100CA00008950F931F93CF93DF93EC01811521E3F8 -:100CB0009207A0F5C11580E3D80708F0D7C0C83E59 -:100CC000D105D8F4C03ED10508F007C2C83AD10515 -:100CD00078F4C53AD10508F06AC0C130D10509F4ED -:100CE00063C008F4F7C1C430D10508F0F6C1F2C101 -:100CF000CB3BD10508F466C0EDC1C11590E2D90720 -:100D000008F0AFC0C11521E0D20708F0E6C1C03F2E -:100D1000D10508F4DFC18E0110651FC2C03880E51F -:100D2000D80700F5C03790E5D90708F0A3C0C11572 -:100D300020E5D20709F4ACC050F4CE0190548031C4 -:100D40009F4008F0C7C1DF708E01106A06C2C13033 -:100D500080E5D80709F4AEC0C43190E5D90708F49E -:100D6000AFC0B8C1C33820E5D20709F48EC050F433 -:100D7000C13890E5D90709F482C008F083C000E0CB -:100D800011EDEBC1C03181E5D80708F4A3C1C1154D -:100D900097E5D90708F436C1CE01905781159041E7 -:100DA00008F098C1DF7093C101E010E0D6C1C53AE8 -:100DB000D10509F494C1C63AD10509F093C102E8FE -:100DC00010E4CBC1C83AD10509F48FC1C93AD105A5 -:100DD00009F48EC1CA3AD10509F48DC1CB3AD105C7 -:100DE00009F48CC1CC3AD10509F48BC1CD3AD105B7 -:100DF00009F48AC1C03BD10509F489C1CE3AD105B5 -:100E000009F488C1CF3AD10509F487C1C13BD105A6 -:100E100009F486C1C23BD10509F485C1C33BD105A4 -:100E200009F484C1C43BD10509F483C1C53BD10594 -:100E300009F482C1C63BD10509F481C1C73BD10584 -:100E400009F480C1C83BD10509F47FC1C93BD10574 -:100E500009F47EC1CA3BD10509F47DC100E014E468 -:100E60007CC1CE019F700E94490678C1DD278E01AA -:100E7000106C73C1CF70DD278E01146D6EC100E060 -:100E800010ED6BC100E012ED68C100E013ED65C12B -:100E90000E941F1C0E945D0A0E9424048FEF94E3AD -:100EA0002CE0815090402040E1F700C000000E94FB -:100EB000762353C18091F20281608093F2024DC18A -:100EC0000E94D723811102C00E94B3230E94EA230B -:100ED00090E090931D0380931C03C23080E5D807F7 -:100EE00021F480911C03816086C0C43090E5D9074D -:100EF00021F480911C0382607EC0C63020E5D207B9 -:100F000021F480911C03846076C0C83080E5D80746 -:100F100019F480911C0327C0CA3090E5D90721F449 -:100F200080911C03806167C0CC3020E5D20721F49A -:100F300080911C0380625FC0CE3080E5D80721F429 -:100F400080911C03806457C0C03190E5D90721F41B -:100F500080911C0380684FC0C23120E5D20729F47C -:100F600080911C038460886046C0C33080E5D80748 -:100F700021F480911C038E7F3EC0C53090E5D907D7 -:100F800021F480911C038D7F36C0C73020E5D20745 -:100F900021F480911C038B7F2EC0C93080E5D807D7 -:100FA00019F480911C0326C0CB3090E5D90721F4B9 -:100FB00080911C038F7E1FC0CD3020E5D20721F425 -:100FC00080911C038F7D17C0CF3080E5D80721F4B6 -:100FD00080911C038F7B0FC0C13190E5D90721F4AC -:100FE00080911C038F7707C0C331D04531F48091C5 -:100FF0001C038B7F877F80931C0380911C030E94BE -:10100000EE23ABC08D2F99278F70992781309105E2 -:10101000D9F49E012370332702C0880F991F2A95A7 -:10102000E2F79C688E0144E0000F111F4A95E1F73A -:1010300000271370802B912B53E0CC0FDD1F5A95A6 -:10104000E1F7C076DD272FC08230910531F4DC2F27 -:10105000CC278E01016F106A80C08330910569F43E -:10106000CE018370992701E010E002C0000F111F2C -:101070008A95E2F7C8019C680FC084309105B9F4E5 -:10108000CE018370992701E010E002C0000F111F0C -:101090008A95E2F7C8019A6823E0CC0FDD1F2A95F4 -:1010A000E1F7C07ED7708C010C2B1D2B56C085300C -:1010B000910531F4DC2FCC278E01046F106A4DC0EE -:1010C000069709F04AC0CF71DD27DC2FCC278E01AF -:1010D000106243C000E010E040C08E013EC001E855 -:1010E00010E43BC003E810E438C002EE14E435C05D -:1010F00009EE14E432C00AEE14E42FC005EB14E448 -:101100002CC006EB14E429C007EB14E426C00CEC59 -:1011100014E423C00DEC14E420C003E815E41DC062 -:101120000AE815E41AC002E915E417C004E915E459 -:1011300014C001E216E411C003E216E40EC004E29A -:1011400016E40BC005E216E408C006E216E405C08A -:1011500007E216E402C00AE216E4C801DF91CF916B -:101160001F910F9108959CE0799FF001112490E365 -:10117000899FE00DF11D1124E60FF11DEE0FFF1FF9 -:10118000EE52FE4F85919491803E9105E0F4803CB3 -:10119000910558F58133910509F46FC048F48932FF -:1011A000910509F463C08A32910509F46DC072C0DB -:1011B00089339105E9F082389105D1F085339105A5 -:1011C00009F44DC067C0833E910581F138F4803E3B -:1011D0009105B9F0823E9105D9F05CC0863E91053B -:1011E00061F1873E9105A1F155C00E944106089525 -:1011F00020911C0320FD02C021FF4CC080EE90E036 -:1012000049C080911C0380FFF9CF89E390E042C080 -:1012100080911C0382FF0EC080911C0384FF03C0D9 -:1012200080E090E037C083EE90E034C080911C03F2 -:1012300082FFF2CF82EE90E02DC080911C0383FFED -:101240000BC080911C0384FDEBCF87EE90E022C0A1 -:1012500080911C0383FFF5CF86EE90E01BC0809148 -:101260001C0385FF07C089E290E014C080911C0335 -:1012700085FFF9CF85E390E00DC080911C0386FFC8 -:1012800007C08AE290E006C080911C0386FFF9CF78 -:1012900081E390E00E94510608950C941303E82F17 -:1012A000F0E0E25BFE4F8081E82FEF70F0E0829586 -:1012B0008F7021E030E0A90102C0440F551F8A95CC -:1012C000E2F740A308950F931F93CF93DF9385B761 -:1012D000806885BF85B7806885BFC3E0D0E001E046 -:1012E00010E0FE01E25BFE4F8081E82FEF70F0E03E -:1012F00021A182958F70A80102C0440F551F8A95C5 -:10130000E2F7CA01822B81A38C2F0E944F092197FB -:1013100040F78BE090E061E070E0FC01EE5BFE4F97 -:101320002081E22FEF70F0E042A122952F70DB01C7 -:1013300002C0AA0FBB1F2A95E2F79D01242B22A30E -:10134000019758F7DF91CF911F910F910C94CF0324 -:10135000EF92FF920F931F93CF93DF9300E212E07F -:10136000C3E0EE24E394F12CD5E08C2F0E944F09CA -:101370008BE090E040E050E0FC01EE5BFE4F6081CE -:10138000E62FEF70F0E020A130E062956F7002C0B0 -:10139000359527956A95E2F720FD09C09701082E3B -:1013A00002C0220F331F0A94E2F7422B532B0197FE -:1013B00018F7F801929182918F018417950721F017 -:1013C00051834083D09305018C2F0E944F09C15057 -:1013D00060F68091050187FD2CC081508093050146 -:1013E0008F3F39F08FE99FE00197F1F700C00000CF -:1013F00020C080911E0290911F029093270280933B -:10140000260280911C0290911D02909325028093E8 -:10141000240280911A0290911B02909323028093E0 -:1014200022028091180290911902909321028093D8 -:1014300020020E94D10381E0DF91CF911F910F9193 -:10144000FF90EF900895E82FF0E0EE0FFF1FE05EB1 -:10145000FD4F80819181089508950F931F93CF933D -:1014600008E212E0C0E0F801929182918F010E949F -:101470009322C80FF2E000321F07A9F78C2FCF91FB -:101480001F910F9108950E94D723811102C00E94DD -:10149000B3230E94FC23809307033E9A809171003E -:1014A0008D7F8093710082E0809390008AE1809329 -:1014B000910081E080932A02089580912A0281118F -:1014C00002C00E94430A10927A021092790280911F -:1014D00071008D7F80937100809190008F73809355 -:1014E000900010923C0210923B02109273021092F4 -:1014F000740210927502109276021092720210928B -:101500007102E1E5F2E0A1E4B2E0119211921192D0 -:1015100011921D921D9282E0E137F807B1F708950C -:10152000CF92DF92EF92FF920F931F93CF93DF93AF -:1015300020913B02222309F484C06B017C0180913D -:101540002A02811102C00E94430A01E712E0C7E0AB -:10155000D0E0A7019601F801929182917291629177 -:101560008F010E944729811131C0FE01EE0FFF1F3C -:10157000EE0FFF1FEF5AFD4F10821182128213826D -:10158000DE01AA0FBB1FAF5BBD4F11961C921E92CE -:10159000C730D105E9F02196448155816681778174 -:1015A000408351836283738314821582168217826B -:1015B00012968D919C91139711969C938E931396EE -:1015C0001C921E92129734961296E2CF219708F63B -:1015D0008091790290917A02019797FD05C09093CE -:1015E0007A028093790204C010927A0210927902F2 -:1015F0008091790290917A0220917702309178025D -:101600002817390724F01092780210927702892B5C -:10161000C1F4809171008D7F809371008091900062 -:101620008F73809390001092730210927402109244 -:10163000750210927602109272021092710210924C -:101640003B02DF91CF911F910F91FF90EF90DF90C0 -:10165000CF9008951F920F920FB60F9211244F92C0 -:101660005F926F927F928F929F92AF92BF92CF9232 -:10167000DF92EF92FF922F933F934F935F936F937D -:101680007F938F939F93AF93BF93CF93DF93EF930A -:10169000FF9380913B02882309F49BC1C09179029A -:1016A000D0917A021C161D060CF093C140902B02BB -:1016B00050902C0260902D0270902E0220E030E0BD -:1016C000A901C301B2010E94F22A18160CF065C0EC -:1016D000C130D10509F452C080917702909178020F -:1016E000BE010E94C42C7C01909378028093770203 -:1016F00080903D0290903E02A0903F02B090400248 -:1017000020E030E040E85FE3C501B4010E94E32837 -:1017100060933D0270933E0280933F02909340029B -:10172000F701EE0FFF1FEE0FFF1FEF5AFD4FA30152 -:10173000920160817181828193810E944B2920E016 -:1017400030E040E05EE30E94F62A9B01AC01C50157 -:10175000B4010E94F22A18168CF4C7010196BE014A -:101760000E94C42C909378028093770210923D02DD -:1017700010923E0210923F0210924002E0917702D6 -:10178000F0917802EE0FFF1FEE0FFF1FEF5AFD4F93 -:101790006081718182819381D0C0C0907302D090AA -:1017A0007402E0907502F090760220E030E0A9012A -:1017B000C701B6010E9447292197882309F4A2C0D6 -:1017C000FE01EE0FFF1FEE0FFF1FEF5AFD4F80804F -:1017D0009180A280B380A5019401C701B6010E9447 -:1017E000472987FF31C0A501940160E070E08CEDCE -:1017F00093EC0E944B2920E030E040E451E40E9449 -:101800004B2920E030E040E05FE30E94F62A9B0194 -:10181000AC0160E070E080E090E40E94592B9B01F5 -:10182000AC01C501B4010E94F62A9B01AC01C701BD -:10183000B6010E94472987FF07C0A701960160E013 -:1018400070E08CED93E439C0A5019401C701B601A5 -:101850000E94F22A18160CF055C0A501940160E010 -:1018600070E08CED93E40E944B2920E030E040E4EE -:1018700051E40E944B2920E030E040E05FE30E9409 -:10188000F62A9B01AC0160E070E080E090E40E94E9 -:10189000592B9B01AC01C501B4010E94F62A9B01A2 -:1018A000AC01C701B6010E94F22A18165CF5A70127 -:1018B000960160E070E08CED93EC0E944B2920E0F3 -:1018C00030E040E451E40E944B2920E030E040E069 -:1018D0005FE30E94F62A9B01AC0160E070E080E0CB -:1018E00090E40E94592B9B01AC01C701B6010E94F4 -:1018F000F62A60937302709374028093750290933A -:10190000760213C0FE01EE0FFF1FEE0FFF1FEF5A0E -:10191000FD4F80819181A281B38180937302909366 -:101920007402A0937502B093760260917302709175 -:101930007402809175029091760220912802309174 -:1019400029022F3F4FEF340731F02F5F3F4F309385 -:101950002902209328020E94D20E6B017C0120E014 -:1019600034E244EF51E40E94472987FF08C086EF24 -:10197000C82E88E2D82E84EFE82E81E4F82E20E0ED -:1019800030E040E051E4C701B6010E94F62A9B0115 -:10199000AC0160E074E284E79BE40E944B296B0198 -:1019A0007C010E94B8297093970060939600209163 -:1019B0000601309107014091080150910901C701CA -:1019C000B6010E94F62A0E94B8297093990060938C -:1019D000980080913C02882309F433C1C0903702FB -:1019E000D0903802E0903902F0903A0220E030E0E6 -:1019F000A901C701B6010E94F22A1816D4F58091F8 -:101A00002802909129028F3F2FEF920729F001962B -:101A10009093290280932802C701B6010E94D20E3A -:101A200020E030E040E051E40E94F62A9B01AC0146 -:101A300060E074E284E79BE40E944B296B017C0127 -:101A40000E94B82970939700609396002091060138 -:101A5000309107014091080150910901C701B60179 -:101A60000E94F62A0E94B82970939900609398000A -:101A700008C0109297001092960010929900109250 -:101A8000980060913102709132026F5F7F4F7093C6 -:101A9000320260933102209196003091970080E0ED -:101AA00090E0232BF1F0C0919600D09197000E9416 -:101AB000E4296B017C01BE0180E090E00E94E429F2 -:101AC0009B01AC0160913302709134028091350228 -:101AD000909136020E944B2920E03FEF4FE757E4F8 -:101AE00010C00E94E4296B017C0120E030EE4FEF32 -:101AF00054E46091330270913402809135029091E8 -:101B000036020E94F62A9B01AC01C701B6010E9471 -:101B1000F22A87FD96C080912F028F5F80932F025B -:101B200090E0209103033091040382179307A0F003 -:101B300080910E03882319F010922F020DC080911E -:101B400071008D7F80937100809190008F738093DE -:101B5000900010923C027DC080913002C0912F0213 -:101B6000811128C0C0900803D0900903E0900A03B7 -:101B7000F0900B0320E030E0A901C701B6010E94FC -:101B8000F22A1816BCF481E08093300210923702DA -:101B9000109238021092390210923A02C092330227 -:101BA000D0923402E0923502F0923602C150C093D6 -:101BB0002F0243C010923002109229021092280284 -:101BC000E0910503F091060348E0C49FE00DF11D8C -:101BD000112480819181A281B381809337029093F7 -:101BE0003802A0933902B0933A0220E030E040E896 -:101BF0005EE364817581868197810E94F62A6B017C -:101C00007C0180910A01682F70E080E090E00E94E2 -:101C1000E42920E030E048EC52E40E944B299B018B -:101C2000AC01C701B6010E94F62A6093330270939B -:101C30003402809335029093360210923202109251 -:101C400031028091070380FD04C010923C02109283 -:101C50003B02FF91EF91DF91CF91BF91AF919F91A7 -:101C60008F917F916F915F914F913F912F91FF9055 -:101C7000EF90DF90CF90BF90AF909F908F907F902C -:101C80006F905F904F900F900FBE0F901F90189520 -:101C9000CF92DF92EF92FF92CF93DF936B017C01A3 -:101CA000EA0180912A02811102C00E94430A8091B8 -:101CB000070380FF46C08091790290917A020897CD -:101CC0000CF03FC0809171008D7F809371008091F6 -:101CD0003C0281110E945D0A81E080933B021092D8 -:101CE00029021092280220E030E0A901C701B601C4 -:101CF0000E94F22A1816DCF48091790290917A02FF -:101D0000FC01EE0FFF1FEE0FFF1FEF5AFD4FC082C9 -:101D1000D182E282F382FC01EE0FFF1FEF5BFD4FE9 -:101D2000D183C083019690937A0280937902809147 -:101D30007100826080937100809190008068809330 -:101D40009000DF91CF91FF90EF90DF90CF900895BA -:101D500080910703817008958091070381608093CB -:101D600007030E9400240C942B04809107038E7FAC -:101D7000809307030C94002480917B0290E00196ED -:101D800066E070E00E94C42C80937B0208958091ED -:101D90007B0290E0019766E070E00E94C42C809383 -:101DA0007B0208958F929F92AF92BF92CF92DF9263 -:101DB000EF92FF920F931F93CF93DF936B017C0100 -:101DC000C0912802D0912902BE0180E090E00E94DB -:101DD000E4294B015C01A701960160E070E08CE50D -:101DE00094E40E944B299B01AC01C501B4010E94FF -:101DF000F62A0E94B82920917B02233009F473C08F -:101E000028F4222351F02130E9F02CC1243009F4C8 -:101E1000A0C0253009F4E0C025C180E090E0A0E03A -:101E2000BFE38093060190930701A0930801B0934C -:101E3000090110922B0210922C0210922D02109286 -:101E40002E0210C110922B0210922C0210922D0221 -:101E500010922E026431710540F46A30710560F50C -:101E600020E030E040E85EE32BC0693C710508F0FB -:101E7000AAC080E090E00E94E42920E030E040EA3F -:101E800051E40E94E22820E030E044E353E40E9461 -:101E90004B299B01AC010E94F62A20E030E040E093 -:101EA0005EE30E94F62A9B01AC0160E070E080E0F6 -:101EB0009EE30E94E22844C020E030E040E05FE37F -:101EC000C701B6010E94F62A6B017C0180E090E018 -:101ED000A0E0BEE38093060190930701A093080160 -:101EE000B0930901BFC010922B0210922C021092E5 -:101EF0002D0210922E024AE0469F9001479F300D1E -:101F00001124C90168EB7BE00E94B02CBC016C5D20 -:101F1000754077FF03C0719561957109882777FD3A -:101F20008095982F0E94E6292EE333EC4EE259E388 -:101F30000E94F62A20E030E040EC5EE30E94E328B5 -:101F40006093060170930701809308019093090143 -:101F500089C010922B0210922C0210922D02109226 -:101F60002E02CE0183709927892BE1F0BE016170AA -:101F7000772780E090E00E94E42920E030E040E014 -:101F80005EE30E94F62A20E030E040E45FE30E9436 -:101F9000E3286093060170930701809308019093F2 -:101FA00009010CC080E090E0A0E0BFE3809306014F -:101FB00090930701A0930801B0930901C770DD2732 -:101FC000CD2B09F04FC0109206011092070110921C -:101FD00008011092090146C010922B0210922C02A7 -:101FE00010922D0210922E0200E010E020E03FE35C -:101FF0000093060110930701209308013093090113 -:102000006739710578F180E090E00E94E42920E0D2 -:1020100030E047E153E40E94E22820E030E04AE764 -:1020200054E40E944B2920E030E048E452E40E944E -:10203000F62A20E030E040EA51E40E94282A0E947B -:10204000B329660F771F660F771FFB01EE5AFE4F0D -:102050002081318142815381C701B6010E94F62A55 -:102060006B017C01C701B601DF91CF911F910F91E8 -:10207000FF90EF90DF90CF90BF90AF909F908F90A8 -:10208000089580918C020895CF93DF9300D01F9222 -:10209000CDB7DEB79C0180911303843019F593E02E -:1020A00099833B832A839093E9008FEF9091E80016 -:1020B000815095FD06C095ED9A95F1F700008111CC -:1020C000F5CF8091E80085FF0DC040E050E063E06F -:1020D00070E0CE0101960E94A5128091E8008E77F3 -:1020E0008093E8000F900F900F90DF91CF910895AB -:1020F000CF93DF9300D01F92CDB7DEB720911303AB -:10210000243021F522E029839B838A8383E0809316 -:10211000E9008FEF9091E800815095FD06C095EDA4 -:102120009A95F1F700008111F5CF8091E80085FFC5 -:102130000DC040E050E063E070E0CE0101960E94E7 -:10214000A5128091E8008E778093E8000F900F90A1 -:102150000F90DF91CF910895209113032430F1F473 -:1021600022E02093E9002FEF3091E800215035FD67 -:1021700006C035ED3A95F1F700002111F5CF209119 -:10218000E80025FF0BC040E050E065E070E00E94F1 -:10219000A5128091E8008E778093E8000895CF9390 -:1021A000DF93EC0190911303943009F046C08091C5 -:1021B00015018823D9F0809116018823B9F09093F6 -:1021C000E9008FEF9091E800815095FD06C095E100 -:1021D0009A95F1F700008111F5CF8091E80085FF15 -:1021E0002CC040E050E060E170E017C081E08093D7 -:1021F000E9008FEF9091E800815095FD06C095EDC4 -:102200009A95F1F700008111F5CF8091E80085FFE4 -:1022100014C040E050E068E070E0CE010E94A512DA -:102220008091E8008E778093E80080E1FE01ACE7C2 -:10223000B2E001900D928A95E1F7DF91CF91089578 -:1022400080911203811109C00E943A140E949714D0 -:102250008091E20084608093E2000895109212035E -:102260000895089508950C94DE2242E061EC81E027 -:102270000E94B41342E061EC82E00E94B41342E099 -:1022800061EC83E00E94B41342E161EC84E00C94C1 -:10229000B41380911503833009F455C030F48130B4 -:1022A00071F0823009F48EC008958A3009F47AC042 -:1022B0008B3009F460C0893009F09CC020C0809147 -:1022C0001403813A09F096C08091E800877F8093DB -:1022D000E8008091180390911903892B21F460E1A3 -:1022E0008CE792E003C060E080E090E070E00E9444 -:1022F000F0128091E8008B778093E8000895809138 -:102300001403813209F076C080911803909119036B -:10231000009719F0039709F06DC08091E800877F5E -:102320008093E8008091E80082FD05C0809113034E -:102330008111F8CF5FC08091F10080938C02809171 -:10234000E8008B7753C080911403813A09F052C0A2 -:102350008091180390911903892B09F04BC080914B -:10236000E800877F8093E8008091E80080FFFCCF41 -:102370008091150136C0809114038132D9F5809186 -:10238000180390911903892BA9F58091E800877FA4 -:102390008093E8000E94E913809116038093150151 -:1023A0000C941F1C80911403813221F58091E80068 -:1023B000877F8093E8000E94E91380911703809340 -:1023C0008D02089580911403813AA1F48091E80070 -:1023D000877F8093E8008091E80080FFFCCF8091A8 -:1023E0008D028093F1008091E8008E778093E80061 -:1023F0000C94E913089584B7877F84BF88E10FB6F2 -:10240000F89480936000109260000FBE90E080E826 -:102410000FB6F89480936100909361000FBE0E9404 -:102420008C170E943A140E9497148091E2008460F5 -:102430008093E20078940E941D170E948E178BE013 -:1024400091E00E94381780911303853069F40E944F -:102450009F22809111038823B1F30E94CD2288230B -:1024600091F30E948F12EFCF0E949617ECCF292F85 -:10247000332723303105C9F064F42130310581F070 -:102480002230310509F043C08DE690E02EE034E0C3 -:1024900042C021323105F1F02232310541F137C01D -:1024A00082E190E02BE734E036C099278130910536 -:1024B00041F08230910541F0892B49F5EAE0F4E0E2 -:1024C00005C0ECEDF3E002C0E2EBF3E0849190E0B4 -:1024D0009F0121C06430D8F4E62FF0E0EE0FFF1F1B -:1024E000E255FE4F2081318189E090E014C06430D4 -:1024F00070F470E0FB01EE0FFF1FEA55FE4F2081E4 -:102500003181FB01EE55FE4F808190E004C080E0F8 -:1025100090E020E030E0FA0131832083089580E1EB -:1025200089BD82E189BD09B400FEFDCF8091D8004C -:102530008F7D8093D8008091E00082608093E000DE -:102540008091E00081FDFCCF0895CF92DF92EF9261 -:10255000FF920F931F93CF93DF93EC018B016A01DE -:102560000E940814811133C0C114D10439F0F6015E -:1025700080819181081B190BC80FD91FE12CF12C08 -:102580000115110519F18091E80085FD16C08091B3 -:10259000E8008E778093E800C114D10449F0F60179 -:1025A00080819181E80EF91EF182E08285E00FC002 -:1025B0000E940814882321F30AC089918093F100B6 -:1025C00001501109FFEFEF1AFF0ADACF80E0DF9127 -:1025D000CF911F910F91FF90EF90DF90CF900895D2 -:1025E00020911A0330911B032617370748F0611515 -:1025F000710539F42091E8002E772093E80001C09E -:10260000B90140E061157105A9F12091130322235E -:1026100009F443C0253009F442C02091E80023FDAD -:1026200040C02091E80022FD32C02091E80020FF48 -:10263000E9CF4091F3002091F20030E0342BFC010F -:10264000CF016115710559F02830310540F48191B1 -:102650008093F100615071092F5F3F4FF1CF41E04E -:102660002830310509F040E02091E8002E772093D2 -:10267000E800C8CF4111C9CF0AC080911303882355 -:1026800061F0853061F08091E80083FD0AC080919F -:10269000E80082FFF2CF80E0089582E0089583E0B1 -:1026A000089581E0089520911A0330911B032617A5 -:1026B000370748F06115710539F42091E8002E774D -:1026C0002093E80001C0B901FC0120E0611571050B -:1026D00091F180911303882309F440C0853009F4F7 -:1026E0003FC08091E80083FD3DC08091E80082FDFD -:1026F0002FC08091E80080FFE9CF2091F300809106 -:10270000F20090E0922B6115710559F08830910527 -:1027100040F424912093F1003196615071090196A3 -:10272000F2CF21E0089709F020E08091E8008E7751 -:102730008093E800CBCF2111CCCF0AC08091130346 -:10274000882361F0853061F08091E80083FD0AC044 -:102750008091E80082FFF2CF80E0089582E0089542 -:1027600083E0089581E00895982F973058F590936D -:10277000E900981739F07091EC002091ED0050912C -:10278000F00003C0242F762F50E021FF19C03091B4 -:10279000EB003E7F3093EB003091ED003D7F3093B6 -:1027A000ED003091EB0031603093EB007093EC0062 -:1027B0002093ED005093F0002091EE0027FF07C01A -:1027C0009F5FD3CF8F708093E90081E0089580E010 -:1027D00008958091140387FF11C08091E80082FD65 -:1027E00005C0809113038111F8CF11C08091E800DA -:1027F0008B770BC080911303882349F08091E80008 -:1028000080FFF8CF8091E8008E778093E8000895EC -:102810002091E4003091E50095E64091EC00842F92 -:10282000817040FF22C08091E80080FD1CC0809133 -:102830001303882391F0853091F08091EB0085FDA2 -:1028400010C04091E4005091E5004217530729F36E -:102850009A01915011F784E0089582E0089583E091 -:10286000089581E0089580E008954091E80042FFD6 -:10287000DECF08950E94A8140E94B014E0EEF0E0AC -:10288000808181608083E8EDF0E080818F778083B4 -:1028900019BCA7EDB0E08C918E7F8C9380818F7EE8 -:1028A00080831092120308950F931F93CF93DF93A9 -:1028B0000E94A8140E94B014C8EDD0E088818F77E0 -:1028C000888388818068888388818F7D888319BC0C -:1028D0001092130310920F03109211031092100321 -:1028E00000EE10E0F80180818B7F80838881816019 -:1028F000888342E060E080E00E94B413E1EEF0E003 -:1029000080818E7F8083E2EEF0E080818160808331 -:10291000808188608083F80180818E7F80838881B8 -:1029200080618883DF91CF911F910F910895E8ED29 -:10293000F0E080818F7E8083E7EDF0E08081816030 -:10294000808384E082BF81E0809312030C9454144E -:10295000E8EDF0E080818E7F80831092E2000895A0 -:102960001092DA001092E10008951F920F920FB6B4 -:102970000F9211242F933F934F935F936F937F9305 -:102980008F939F93AF93BF93EF93FF938091E10059 -:1029900082FF0BC08091E20082FF07C08091E100BE -:1029A0008B7F8093E1000E941C178091DA0080FFEA -:1029B0001FC08091D80080FF1BC08091DA008E7FFD -:1029C0008093DA008091D90080FF0DC080E189BD3D -:1029D00082E189BD09B400FEFDCF81E0809313033D -:1029E0000E94201105C019BC109213030E942E11E1 -:1029F0008091E10080FF19C08091E20080FF15C046 -:102A00008091E2008E7F8093E2008091E2008061FD -:102A10008093E2008091D80080628093D80019BC36 -:102A200085E0809313030E9432118091E10084FFBE -:102A300030C08091E20084FF2CC080E189BD82E13A -:102A400089BD09B400FEFDCF8091D8008F7D8093B1 -:102A5000D8008091E1008F7E8093E1008091E200B8 -:102A60008F7E8093E2008091E20081608093E2009B -:102A700080910F03882311F084E007C08091E30068 -:102A800087FD02C081E001C083E0809313030E94B0 -:102A900033118091E10083FF29C08091E20083FF20 -:102AA00025C08091E100877F8093E10082E08093E0 -:102AB000130310920F038091E1008E7F8093E10059 -:102AC0008091E2008E7F8093E2008091E20080613D -:102AD0008093E20042E060E080E00E94B4138091C5 -:102AE000F00088608093F0000E943111FF91EF9117 -:102AF000BF91AF919F918F917F916F915F914F9116 -:102B00003F912F910F900FBE0F901F9018951F921D -:102B10000F920FB60F9211242F933F934F935F9311 -:102B20006F937F938F939F93AF93BF93CF93DF93D5 -:102B3000EF93FF93C091E900CF708091EC00D82F04 -:102B4000D17080FDD0E81092E9008091F000877F7D -:102B50008093F00078940E94CB151092E900809148 -:102B6000F00088608093F000CD2BCF70C093E90017 -:102B7000FF91EF91DF91CF91BF91AF919F918F9195 -:102B80007F916F915F914F913F912F910F900FBE69 -:102B90000F901F9018951F93CF93DF93CDB7DEB79B -:102BA000AA970FB6F894DEBF0FBECDBFE4E1F3E005 -:102BB00088E08E0F9091F10091938E13FBCF0E94CD -:102BC00049118091E80083FF1FC180911403909107 -:102BD0001503492F50E04A30510508F015C1FA019C -:102BE000EA5AFF4F0C94D82C803881F0823809F0D3 -:102BF0000BC1809118038F708093E9008091EB00E6 -:102C000085FB882780F91092E90006C080911003A7 -:102C100090911103911182609091E800977F9093B9 -:102C2000E8008093F1001092F100C8C0282F2D7F9A -:102C300009F0EAC0882319F0823061F0E5C0809184 -:102C40001603813009F0E0C0933009F080E08093F2 -:102C500011032BC080911603811127C080911803A6 -:102C60008F7009F4D1C08093E9002091EB0020FF20 -:102C70001CC0933021F48091EB00806214C09091CD -:102C8000EB0090619093EB0021E030E0A90102C0DD -:102C9000440F551F8A95E2F74093EA001092EA002C -:102CA0008091EB0088608093EB001092E9008091A6 -:102CB000E800877F86C08111A7C0109116031F7797 -:102CC0008091E3008078812B8093E3008091E8007D -:102CD000877F8093E8000E94E9138091E80080FFDD -:102CE000FCCF8091E30080688093E300111102C063 -:102CF00082E001C083E08093130386C08058823055 -:102D000008F082C080911603909117038C3D53E028 -:102D1000950779F583E08A838AE289834FB7F8942F -:102D2000DE01139620E03EE051E2E32FF0E0509305 -:102D30005700E49120FF03C0E295EF703F5FEF7012 -:102D40008E2F90E0EA3010F0C79601C0C0968D93A8 -:102D50009D932F5F243149F74FBF8091E800877F13 -:102D60008093E8006AE270E0CE0101960E94F012C2 -:102D700014C0AE014F5F5F4F609118030E9437127D -:102D8000BC01009709F440C09091E800977F9093B0 -:102D9000E80089819A810E9453138091E8008B7723 -:102DA0008093E80031C0803879F58091E800877F12 -:102DB0008093E80080910F038093F1008091E800F8 -:102DC0008E778093E8000E94E9131EC081111CC019 -:102DD000909116039230C0F48091E800877F809331 -:102DE000E80090930F030E94E91380910F03811173 -:102DF00006C08091E30087FD02C081E001C084E04D -:102E0000809313030E9435118091E80083FF0AC06C -:102E10008091E800877F8093E8008091EB008062DA -:102E20008093EB00AA960FB6F894DEBF0FBECDBF1D -:102E3000DF91CF911F9108950895CF93809113034F -:102E40008823A1F0C091E900CF709091EC00892F08 -:102E5000817090FD80E8C82B1092E9008091E80015 -:102E600083FD0E94CB15CF70C093E900CF910895E8 -:102E700090939302809392020895E0919202F091D0 -:102E80009302309721F00190F081E02D099480E0C9 -:102E90000895E0919202F0919302309721F0028020 -:102EA000F381E02D09940895E0919202F09193024C -:102EB000309721F00480F581E02D09940895209148 -:102EC0009002309191028217930771F090939102D2 -:102ED00080939002E0919202F0919302309721F05A -:102EE0000680F781E02D0994089520918E0230919B -:102EF0008F028217930771F090938F0280938E0256 -:102F0000E0919202F0919302309721F00084F185D4 -:102F1000E02D0994089508950C948B170E941223B4 -:102F20000E9463090E9498230C9447285F926F9235 -:102F30007F928F929F92AF92BF92CF92DF92EF9249 -:102F4000FF920F931F93CF93DF9300D000D01F9277 -:102F5000CDB7DEB70E94A8099DE9C92E92E0D92E0F -:102F600003E010E0AA24A394B12C502E802F0E94DD -:102F7000230A4C01F601729062906F01682679264F -:102F800061147104A1F40150110978F78FEF89835E -:102F90008A831B820E941B238160782F9D838C83F0 -:102FA00049815A816B818D810E94461838C0809179 -:102FB000F20281FD0E942C0A2BE030E07501022E06 -:102FC00002C0EE0CFF1C0A94E2F7C701862197218C -:102FD000892B09F129835A828E209F2091E089282C -:102FE00009F490E09B830E941B238160782F9D83CE -:102FF0008C8349815A816B818D810E944618000F14 -:10300000111FF801EB56FD4F80819181E826F926CA -:10301000F182E08204C02150310980F6B4CF0E94D1 -:103020007F25109194020E943D171817D1F00E943D -:103030003D17809394020F900F900F900F900F9078 -:10304000DF91CF911F910F91FF90EF90DF90CF9084 -:10305000BF90AF909F908F907F906F905F900C94F7 -:103060004D090F900F900F900F900F90DF91CF911F -:103070001F910F91FF90EF90DF90CF90BF90AF9096 -:103080009F908F907F906F905F900895CF93DF9384 -:10309000CDB7DEB72B970FB6F894DEBF0FBECDBF0E -:1030A0004F83588769877A878B87DE01119686E080 -:1030B000FD0111928A95E9F785E0FE0137960190AE -:1030C0000D928A95E1F749815A816B817C818D81CE -:1030D0009E810E94BD1E2B960FB6F894DEBF0FBED8 -:1030E000CDBFDF91CF910895CF93882309F4C2C05B -:1030F000C82F823859F40E943D1781FDBBC089E377 -:103100000E9497210E94642289E30CC0833879F4DD -:103110000E943D1780FDAEC083E50E9497210E946A -:10312000642283E50E94D921CF910C9464228438D3 -:1031300059F40E943D1782FD9DC087E40E949721AB -:103140000E94642287E4EECF8CEF8C0F813A48F422 -:103150008C2F0E94AF2781118DC08C2F0E94972148 -:10316000E3CF80E28C0F883048F4C77081E001C063 -:10317000880FCA95EAF70E941D22D6CF8BE58C0FE7 -:10318000833078F4C53A29F0C63A31F083E890E00C -:1031900005C081E890E002C082E890E0CF910C94F5 -:1031A0005F1788E58C0F833108F064C0C83A39F1A5 -:1031B000C93A41F1CA3A49F1CB3A51F1CC3A59F105 -:1031C000CD3A61F1C03B69F1CE3A71F1CF3A79F174 -:1031D000C13B81F1C23B89F1C33B91F1C43B99F101 -:1031E000C53BA1F1C63BA9F1C73BB1F1C83BB9F161 -:1031F000C93BC1F1CA3BC9F180E090E038C082EE22 -:1032000090E035C089EE90E032C08AEE90E02FC0A9 -:1032100085EB90E02CC086EB90E029C087EB90E036 -:1032200026C08CEC90E023C08DEC90E020C083E8B9 -:1032300091E01DC08AE891E01AC082E991E017C0D0 -:1032400084E991E014C081E292E011C083E292E04F -:103250000EC084E292E00BC085E292E008C086E2F4 -:1032600092E005C087E292E002C08AE292E0CF914C -:103270000C947517CF910895882309F44BC08238B8 -:1032800059F40E943D1781FF45C089E30E949721B0 -:103290000E94642289E30CC0833871F40E943D17B8 -:1032A00080FF38C083E50E9497210E94642283E555 -:1032B0000E94D9210C946422843859F40E943D174D -:1032C00082FF28C087E40E9497210E94642287E43D -:1032D000EFCF9CEF980F913A58F390E2980F983007 -:1032E00050F4877091E001C0990F8A95EAF7892F11 -:1032F0000E942322DFCF9BE5980F933020F480E0DB -:1033000090E00C945F17885A833120F480E090E0BD -:103310000C9475170895882321F00E941D220C94A7 -:1033200064220895882321F00E9423220C946422B1 -:1033300008957F928F929F92AF92BF92CF92DF9229 -:10334000EF92FF920F931F93CF93DF931F92CDB70E -:10335000DEB77C01C62E772EFC01058102950F7029 -:10336000128111110E943A220E949021882379F043 -:10337000112369F080E28C0D883048F082E00E94D1 -:1033800079210E94902191E0D82ED92601C0D12C1C -:10339000E72DE295EF70F0E0E05AFF4F0C94D82C47 -:1033A000872D807F072D0F70882311F00295007FF5 -:1033B000112389F0002309F499C180E28C0D883033 -:1033C00020F4802F0E941D2203C0802F0E942D22F6 -:1033D0000E9464228BC18C2D0E943C19002309F4A9 -:1033E000C3C180E28C0D883020F4802F0E942322FC -:1033F00003C0802F0E9433220E946422B5C1872D12 -:10340000807F972D9F70803211F4892F03C0892F00 -:103410008295807FCC2021F0F1E0CF16A1F01DC075 -:10342000112339F0002319F1013009F50E944D22D2 -:103430009BC1002319F0013009F496C189830E94D1 -:103440005022898110C1112321F0063008F08CC16F -:103450000EC0053008F088C106C1112359F00023C1 -:1034600031F0F701958190FF41C19F7095830E94D3 -:103470008B197AC1002309F4F6C03EC1872D8695C9 -:103480008695837090E0009719F0019761F06CC108 -:10349000112321F08C2D972D937002C080E090E0D5 -:1034A0000E945F1761C1112321F08C2D972D93701D -:1034B00002C080E090E00E94751756C18C2D112348 -:1034C00019F00E94872402C00E94EF240E947425F4 -:1034D0004BC1872D837009F052C0111145C18C2D4D -:1034E000829586958770880F880F9C2D9F70892EF6 -:1034F000912CA12CB12C082E04C0880C991CAA1C5C -:10350000BB1C0A94D2F7C4FE14C00FE010E020E008 -:1035100030E0B901A80104C0440F551F661F771F92 -:103520008A95D2F7CB01BA016095709580959095F8 -:1035300003C060E070E0CB01272D2695269523700F -:1035400030E02230310569F02330310589F06829F7 -:1035500079298A299B292130310571F00E940520A3 -:1035600003C1682979298A299B290E942120FCC04E -:103570000E940520C501B4010E94E91FF5C0112376 -:1035800019F0872D817001C08695882309F4ECC05D -:103590008C2D829586958770880F880F9C2D9F7043 -:1035A000892E912CA12CB12C082E04C0880C991CBA -:1035B000AA1CBB1C0A94D2F7C4FE14C00FE010E092 -:1035C00020E030E0B901A80104C0440F551F661F78 -:1035D000771F8A95D2F7CB01BA01609570958095D7 -:1035E000909503C060E070E0CB01272D26952695CD -:1035F0002370422F50E04230510569F043305105AD -:1036000089F0682979298A299B294130510571F06F -:103610000E94DF20A9C0682979298A299B290E9454 -:10362000FB20A2C00E94DF20C501B4010E94C3207C -:103630009BC08C2D90E0FC01E05EF109E531F105C5 -:1036400008F050C0E059FF4F0C94D82C0C2D0F708F -:10365000872D8F71112321F00E945C20802F07CFCE -:103660000E947D20802F0E9492197EC0112341F07C -:10367000053008F079C0872D8F710E94A22074C098 -:10368000063008F071C0F7CF112339F0872D8F7104 -:103690000E945C2069C01123C9F3872D8F710E949D -:1036A0007D2062C0112329F0872D8F710E94472051 -:1036B0005BC00E943D2058C0112351F0172D1F718F -:1036C000812F0E945C2063E0812F0E9470214CC0FA -:1036D00081E00E947921023008F446C082E00E9415 -:1036E000792142C0112331F0002381F28C2D0E94F8 -:1036F00074183AC0002389F28C2D0E943C1934C002 -:10370000472D4F706C2DC7010E94B8030E94611FA6 -:103710002BC0111129C0472D4F7050E04230510588 -:10372000B9F04CF44115510581F041305105E1F4F7 -:103730000E946F2819C04330510569F0443051058B -:1037400099F48C2D0E94C1280FC00E9458280CC0EB -:103750000E948B2809C00E949E2806C0472D4F70EA -:103760006C2DC7010E942E06DD20F9F00E946C210D -:1037700080FD1BC0F70112820E9466210E945C201E -:10378000C7010E94E41B0E9466210F90DF91CF9138 -:103790001F910F91FF90EF90DF90CF90BF90AF906F -:1037A0009F908F907F900C947D200F90DF91CF9110 -:1037B0001F910F91FF90EF90DF90CF90BF90AF904F -:1037C0009F908F907F9008950F931F93CF93DF93D7 -:1037D000EC01888199812B813C81232BB9F09F3F9B -:1037E00011F48F3F99F0CE010E942D04882371F0CF -:1037F000688179818A810E9462218C010E9417214F -:103800000E94DE1FB801CE010E949919DF91CF916D -:103810001F910F9108950E943A220E944A220E940D -:103820000F220E9464220E9425260E94742580E0B7 -:1038300090E00E945F1780E090E00C9475170E9462 -:103840002A220C940B1C0E945721292F22952F709D -:1038500030E02C3031054CF42A3031056CF4225024 -:10386000310922303105A8F407C02C30310569F048 -:103870002F30310551F00DC0803F69F018F4803EC3 -:1038800040F409C0843F29F406C093FB882780F9DF -:10389000089580E0089581E00895CF93DF9300D0EC -:1038A00000D01F92CDB7DEB70F900F900F900F9002 -:1038B0000F90DF91CF910895CF93DF9300D000D088 -:1038C00000D0CDB7DEB726960FB6F894DEBF0FBE98 -:1038D000CDBFDF91CF9108951F93CF93DF93C09118 -:1038E0009D0216E080919E02C81799F0D0E01C9FBF -:1038F000F0011D9FF00D1124E156FD4F40815181D3 -:1039000062817381848195810E945C1C2196C770BD -:10391000E9CFDF91CF911F9108954091CF0250914F -:10392000D0026091D1027091D2028091D302909125 -:10393000D4020C945C1C8091D40282958F7009F0A3 -:1039400054C08091D102882309F44FC080919D0218 -:10395000A0919E026091CF027091D0024091D2025C -:103960005091D302B6E08A1709F43FC090E04115A8 -:103970005105C1F17F3F11F46F3FA1F1B89FF001F4 -:10398000B99FF00D1124E156FD4F218172132AC019 -:103990002081621327C02281211124C02381348118 -:1039A0002417350710F421503109241B350B283C0E -:1039B0003105C0F42091D4022F7020612093D402ED -:1039C00026E0289FF001299FF00D1124EC55FD4FB2 -:1039D00080818F70806180838FEC92E00E94E41B75 -:1039E0000C946C1C01968770BECF0895CF92DF9225 -:1039F000EF92FF920F931F93CF93DF93CDB7DEB774 -:103A000062970FB6F894DEBF0FBECDBF8C0185E084 -:103A1000F801DE011D9601900D928A95E1F7D8011B -:103A20004C9111965C91119712966C911297139686 -:103A3000CD90DC9014973091CF027091D00280919C -:103A4000D2029091D302009709F46BC17F3F19F421 -:103A50003F3F09F466C1E090D102EE2009F4C0C0F6 -:103A60002091D402C816D90628F0F601E81BF90BFC -:103A7000CF0104C0809590958C0D9D1DFF24F3947B -:103A8000883C910578F0F12C207F09F0C6C07C2D90 -:103A9000D98AC88A89890E944D1C8FEC92E00E94C5 -:103AA000E41BB1C0822F807F09F046C0751314C09B -:103AB000341312C0611110C02F7020612093D40202 -:103AC0000E948D1C8FEC92E00E94E41B8091D40236 -:103AD000D80115968C932EC0CD2819F15F3F11F4B3 -:103AE0004F3FF9F0F62E61111CC080919D0220918C -:103AF0009E0236E0821709F45AC090E0389FF00128 -:103B0000399FF00D1124E156FD4F7181571306C006 -:103B10007081471303C07281711103C001968770D1 -:103B2000E9CFF62E662309F418C18091D402816092 -:103B30008093D402F12C11C1751308C0341306C050 -:103B4000611104C08091D402D801C3C04D875E8743 -:103B50008D859E856A8B0E94231C6A898823E1F1EA -:103B60006623D1F12091D402822F82958F7090E04C -:103B7000029774F08091CF029091D00298878F8342 -:103B80001986DB86CA862C87CE0107960E94E41B25 -:103B900086E0F801AFECB2E001900D928A95E1F772 -:103BA0000E949B1C0E948D1CFF24F394D6C04D875D -:103BB0005E878D859E850E945721292F22952F7023 -:103BC00030E0223031050CF0BCC09F7009F0B6C067 -:103BD000805E883008F4C1C0C8010E94E41BE4CFB5 -:103BE000C816D90608F453C0F601E81BF90BCF013B -:103BF000883C910508F450C0F12C7C2DD98AC88AE4 -:103C000089890E944D1CEFECF2E086E0DF011D92F5 -:103C10008A95E9F70E948D1CA0C0751314C0341357 -:103C200012C0611110C08091D402F8018583C801CF -:103C30000E94E41B86E0EFECF2E0DF011D928A9522 -:103C4000E9F7FE2C8AC04D875E878D859E856A8B3D -:103C50000E94231C6A89882309F4BECF662309F4D5 -:103C6000BBCF2091D402822F82958F7090E0029773 -:103C70000CF48ECF8091CF029091D0029A838983E9 -:103C80001B82DD82CC822E83CE0101967FCF809570 -:103C900090958C0D9D1DACCFF62E662309F49CCF1C -:103CA00075132EC034132CC02091D40220FD1FC0E8 -:103CB000822F82958F70D9F0D80115962C93159785 -:103CC0008F3049F08F5F982F9295907F822F8F7061 -:103CD000892B15968C93C8010E94E41B86E0F8019D -:103CE000AFECB2E001900D928A95E1F793CF86E0B8 -:103CF000F801AFECB2E001900D928A95E1F72DC08A -:103D00004D875E878D859E850E94231C811140CF43 -:103D10008091D40281608093D402C8010E94E41B88 -:103D20001CC0662309F458CF4D875E878D859E851C -:103D30000E94231C882309F44FCF2ACF811148CF3A -:103D40000CC0243031050CF047CF9F7009F440CFF0 -:103D5000F8019581907F09F03BCF8F2D62960FB6C9 -:103D6000F894DEBF0FBECDBFDF91CF911F910F91B1 -:103D7000FF90EF90DF90CF9008951F93CF93DF9344 -:103D8000CDB7DEB72C970FB6F894DEBF0FBECDBF10 -:103D90004F83588769877A878B879C87CE010796E0 -:103DA0000E94F61C882369F08F8198852A853B85BF -:103DB000232BF1F19F3F09F063C08F3F09F060C0F2 -:103DC00037C086E0FE013796DE01119601900D9214 -:103DD0008A95E1F76F817885EA85FB85309741F117 -:103DE0007F3F11F46F3F21F120919E0230E0C90125 -:103DF00001968770992740919D0250E0841795079E -:103E000009F447C069837A83FD83EC8396E0929F2F -:103E1000D001939FB00D1124A156BD4FFE013196E4 -:103E200001900D929A95E1F780939E020E946C1C7E -:103E300016E080919D0290919E028917C1F1189F12 -:103E4000C001112481569D4F0E94F61C882379F1F0 -:103E5000E0919D021E9FF0011124E156FD4F40812B -:103E6000518162817381848195810E945C1C809163 -:103E70009D0290E001968770992780939D02D9CF8B -:103E80004F81588569857A858B859C850E945C1C4D -:103E9000CFCF0E941F1C10929E0210929D02EFEC49 -:103EA000F2E086E0DF011D928A95E9F7C1CF2C96FA -:103EB0000FB6F894DEBF0FBECDBFDF91CF911F913B -:103EC0000895EF92FF920F931F93CF93DF938C018E -:103ED000009709F46CC0F12CEE24E394E8012196DC -:103EE000F8018491843740F4843008F051C0813067 -:103EF00081F0823019F15BC0853709F444C0A8F124 -:103F00009CE7980F903708F052C08F770E943C19B9 -:103F100041C00E5F1F4FFE01C49180E28C0F8830BC -:103F200048F4C7708E2D01C0880FCA95EAF70E9429 -:103F30003D2214C08C2F0E9474182DC00E5F1F4F9D -:103F4000FE01C49180E28C0F883058F4C7708E2D2A -:103F500001C0880FCA95EAF70E9443220E9464229A -:103F60001AC08C2F0E943C1916C00E5F1F4FFE0115 -:103F7000C491CC2381F08FE99FE00197F1F700C055 -:103F80000000C150F6CF0E5F1F4FFE01F49003C03A -:103F90000E9474188E018F2D882309F49FCFEFE9BA -:103FA000FFE03197F1F700C000008150F5CFDF91BD -:103FB000CF911F910F91FF90EF9008950895609316 -:103FC000D9027093DA028093DB029093DC020C94A6 -:103FD0000B1C0F931F930091D9021091DA022091CC -:103FE000DB023091DC02DC01CB01802B912BA22B78 -:103FF000B32B8093D9029093DA02A093DB02B093A3 -:10400000DC021F910F910C940B1C0F931F930091D6 -:10401000D9021091DA022091DB023091DC02DC013E -:10402000CB0180239123A223B3238093D9029093C1 -:10403000DA02A093DB02B093DC021F910F910C9483 -:104040000B1C0F931F930091D9021091DA0220915B -:10405000DB023091DC02DC01CB0180279127A22713 -:10406000B3278093D9029093DA02A093DB02B09336 -:10407000DC021F910F910C940B1C1092D502109230 -:10408000D6021092D7021092D8020C940B1C41E079 -:1040900050E060E070E004C0440F551F661F771FBA -:1040A0008A95D2F74093D5025093D6026093D702F7 -:1040B0007093D8020C940B1C41E050E060E070E07B -:1040C00004C0440F551F661F771F8A95D2F7809151 -:1040D000D5029091D602A091D702B091D802482B78 -:1040E000592B6A2B7B2B4093D5025093D6026093B9 -:1040F000D7027093D8020C940B1C41E050E060E0B2 -:1041000070E004C0440F551F661F771F8A95D2F7D1 -:1041100040955095609570958091D5029091D6020A -:10412000A091D702B091D802482359236A237B2358 -:104130004093D5025093D6026093D7027093D80271 -:104140000C940B1C41E050E060E070E004C0440FB0 -:10415000551F661F771F8A95D2F78091D5029091DF -:10416000D602A091D702B091D802482759276A27D2 -:104170007B274093D5025093D6026093D702709369 -:10418000D8020C940B1C0F931F930091D502109131 -:10419000D6022091D7023091D802DC01CB01802BCE -:1041A000912BA22BB32B8093D5029093D602A09390 -:1041B000D702B093D8021F910F910C940B1C0F9350 -:1041C0001F930091D5021091D6022091D702309111 -:1041D000D802DC01CB0180239123A223B323809357 -:1041E000D5029093D602A093D702B093D8021F9124 -:1041F0000F910C940B1C0F931F930091D5021091FB -:10420000D6022091D7023091D802DC01CB01802761 -:104210009127A227B3278093D5029093D602A0932B -:10422000D702B093D8021F910F910C940B1C0895E4 -:10423000CF92DF92EF92FF920F931F93CF93DF9372 -:104240008C01C090D902D090DA02E090DB02F090AD -:10425000DC028091D5029091D602A091D702B09154 -:10426000D802C82AD92AEA2AFB2ACFE1D0E0D7010E -:10427000C6010C2E04C0B695A795979587950A940C -:10428000D2F780FF06C0B8018C2F0E94B3080197B7 -:1042900021F4219760F780E001C08C2FDF91CF914E -:1042A0001F910F91FF90EF90DF90CF900895CF93E3 -:1042B000DF93EC010E941821BE010E94B308DF9138 -:1042C000CF910895CB010E94572108958091DD027E -:1042D00085958595859508958091DD02877008956F -:1042E00098E0899F90011124262B2093DD020C94E5 -:1042F0005C202091DD02809582238093DD02982F3F -:10430000977069F430E0482F552747FD50952417E2 -:10431000350729F08595859585950C947D20089520 -:104320009091DD02977081E009F480E0089590910A -:104330001501992321F090911601911109C0209146 -:10434000170130911801F90132969FEF40E01FC02C -:10435000982F9695969596959F3050F5E091170178 -:10436000F0911801E90FF11D877021E030E0A901FB -:1043700002C0440F551F8A95E2F7CA019181892B2B -:10438000818308959F3F39F04F5F4E3041F0519146 -:104390005813F8CF0DC05111F7CF942FF5CF9F3F91 -:1043A00039F0F901E90FF11D97FDFA95828308951F -:1043B000089590911501992321F090911601911182 -:1043C00009C02091170130911801F9013296205F40 -:1043D0003F4F1FC0982F9695969596959F30F0F475 -:1043E000E0911701F0911801E90FF11D877021E0AC -:1043F00030E0A90102C0440F551F8A95E2F7CA01B7 -:10440000809591818923818308953196E217F3077E -:1044100029F090819813F9CF1082F7CF089581E0A9 -:1044200090E0E0911701F0911801E80FF91F108258 -:10443000019680319105A9F708959091F102892B99 -:104440008093F102089580959091F10289238093E1 -:10445000F10208951092F10208959091F002892BD3 -:104460008093F002089580959091F00289238093C3 -:10447000F00208951092F00208959091EF02892BB6 -:104480008093EF02089580959091EF0289238093A5 -:10449000EF0208951092EF0208958093DE020895CE -:1044A0001092DE0208958091170190911801FC018D -:1044B00031969C01205F3F4F80E0919191118F5F79 -:1044C000E217F307D1F70895E0911701F091180171 -:1044D0008091F1028083E0911701F09118019081A1 -:1044E0008091F002892B8083E0911701F0911801EF -:1044F00090818091EF02892B80838091DE02882356 -:1045000061F0E0911701F09118019081892B80836F -:104510000E94532281111092DE0280911701909126 -:1045200018010C94491720E0009739F0AC01415074 -:104530005109842395232F5FF7CF822F089580910F -:104540001303843039F11092F30220E488E190E003 -:104550000FB6F894A895809360000FBE209360007A -:1045600080E00E941F0380E00E944D0983B7817F95 -:10457000846083BF83B7816083BF7894889583B755 -:104580008E7F83BF88E10FB6F8948093600010920D -:1045900060000FBE08950895089580E00E941F03F3 -:1045A0000E94CB220E94A8090E94CC220E942D0AC0 -:1045B00091E0811101C090E0892F08950E941F1C95 -:1045C00080E00E941F030E9447280E943D170C9420 -:1045D0004D091F920F920FB60F9211248F939F9344 -:1045E000AF93BF938091F302811113C08091F402C5 -:1045F0009091F502A091F602B091F7024196A11DAB -:10460000B11D8093F4029093F502A093F602B0934B -:10461000F702BF91AF919F918F910F900FBE0F90B6 -:104620001F90189582E084BD93E095BD9AEF97BDE9 -:1046300080936E0008952FB7F8948091F4029091C2 -:10464000F502A091F602B091F7022FBF0895CF9224 -:10465000DF92EF92FF920F931F932FB7F894409140 -:10466000F4025091F5026091F6027091F7022FBFAB -:104670006A017B01EE24FF248C0120E030E0C016AB -:10468000D106E206F30610F4415051099A01281BA5 -:10469000390BC9011F910F91FF90EF90DF90CF90E0 -:1046A00008951F920F920FB60F9211248F939F932C -:1046B000AF93BF938091F4029091F502A091F6021E -:1046C000B091F7020196A11DB11D8093F402909361 -:1046D000F502A093F602B093F702BF91AF919F91BC -:1046E0008F910F900FBE0F901F9018950E943A1453 -:1046F000F8942FEF87EA91E6215080409040E1F74F -:1047000000C0000087E090EBDC0180931E039093D3 -:104710001F03A0932003B09321039CE088E10FB610 -:10472000F894A895809360000FBE90936000FFCF2F -:104730000E94D723811102C00E94B3230E94E2236A -:104740008093F2020E94EA2380931C0387FB882750 -:1047500080F9809316010E94E623682F70E080E0C4 -:1047600090E00C94DF1F6DEE7EEF80E090E00E9401 -:10477000FE2C60E082E090E00E94EC2C60E083E0A0 -:1047800090E00E94EC2C60E084E090E00E94EC2C31 -:1047900060E085E090E00E94EC2C60E086E090E034 -:1047A0000E94EC2C6FEF87E090E00C94EC2C80E002 -:1047B00090E00E94E62C21E08D3E9E4F09F020E023 -:1047C000822F089582E090E00C94DE2C83E090E04C -:1047D0000C94DE2C84E090E00C94DE2C682F84E0B6 -:1047E00090E00C94EC2C86E090E00C94DE2C682F8A -:1047F00086E090E00C94EC2C87E090E00C94DE2CAA -:10480000682F87E090E00C94EC2C8091FA0280FFF6 -:104810000BC060911C0185E0689FB0011124759563 -:104820006795759567952BC081FF09C060911C0144 -:1048300085E0689FB00111247595679520C082FFBF -:1048400007C060911C0185E0689FB001112417C06A -:104850009091FB029923D1F060911B01961788F784 -:1048600020911C0185E0289F90011124929FA001B6 -:10487000939F500D112470E0CA010E94C42C60382F -:10488000710540F46115710539F002C065E070E012 -:10489000862F08958FE7089581E008958091FA02A8 -:1048A00080FF08C060911A0170E075956795759555 -:1048B000679521C081FF06C060911A0170E075956F -:1048C000679519C082FF04C060911A0170E010C0A2 -:1048D0009091FB029923C1F0609119019617A0F7FE -:1048E00080911A01899FC001112470E00E94C42C9C -:1048F0006038710528F46115710521F0862F08953F -:104900008FE7089581E0089561E070E0F4CF803F83 -:1049100021F40E940524819504C0813F29F40E945E -:1049200005248093FE020895823F21F40E9405240D -:10493000819504C0833F29F40E9405248093FD02E1 -:104940000895893F19F40E944E2405C08A3F31F42E -:104950000E944E2481958093FF0208958B3F21F49D -:104960000E944E24819504C08C3F29F40E944E245D -:10497000809300030895843F21F48091FC028160BC -:1049800017C0853F21F48091FC02826011C0863FF0 -:1049900021F48091FC0284600BC0873F21F4809158 -:1049A000FC02886005C0883F31F48091FC02806180 -:1049B0008093FC0208958D3F21F48091FA0281607A -:1049C0000BC08E3F21F48091FA02826005C08F3FB8 -:1049D00029F48091FA0284608093FA020895803F5E -:1049E00039F48091FE0287FF6CC01092FE0269C00C -:1049F000813F29F48091FE021816BCF362C09091A9 -:104A0000FD02823F29F497FF5CC01092FD0259C05D -:104A1000833F19F41916CCF354C0893F41F48091B7 -:104A2000FF0218160CF04DC01092FF024AC08A3FD8 -:104A300029F48091FF0287FF44C0F6CF8B3F39F401 -:104A40008091000387FF3DC0109200033AC08C3F65 -:104A500029F4809100031816BCF333C0843F21F47D -:104A60008091FC028E7F17C0853F21F48091FC026B -:104A70008D7F11C0863F21F48091FC028B7F0BC09B -:104A8000873F21F48091FC02877F05C0883F31F485 -:104A90008091FC028F7E8093FC0213C08D3F21F435 -:104AA0008091FA028E7F0BC08E3F21F48091FA0232 -:104AB0008D7F05C08F3F29F48091FA028B7F809310 -:104AC000FA028091FD0281110EC08091FE028111D7 -:104AD0000AC08091FF02811106C0809100038111FC -:104AE00002C01092FB0208958CEF92E00E945417CE -:104AF0000E941B239093F9028093F80208951F935C -:104B0000CF93DF938091F8029091F9020E942723BE -:104B1000AC019091FB02992321F020911D0130E01E -:104B200006C020911E018AE0289F9001112442179F -:104B3000530708F486C08091FD02C091FE02D09117 -:104B4000FF0210910003811107C0C11176C0D1117D -:104B500074C0111172C075C09F3F19F09F5F909390 -:104B6000FB02181624F40E9405248093FD02809114 -:104B7000FD0287FF05C00E94052481958093FD02F8 -:104B80001C1624F40E9405248093FE028091FE02EC -:104B900087FF05C00E94052481958093FE026091E5 -:104BA000FD02662339F1C091FE02CC2319F177276B -:104BB00067FD7095872F972F0E94E62923E333E343 -:104BC00043E35FE30E94F62A0E94B3296093FD024B -:104BD0006C2F772767FD7095872F972F0E94E62906 -:104BE00023E333E343E35FE30E94F62A0E94B32901 -:104BF0006093FE021D1624F40E944E248093FF024F -:104C00008091FF0287FF05C00E944E24819580930A -:104C1000FF02111624F40E944E2480930003809119 -:104C2000000387FF05C00E944E24819580930003F6 -:104C3000DF91CF911F910C9474259F3F09F08ECF87 -:104C400096CFDF91CF911F910895ECEFF2E085E0D0 -:104C5000DF011D928A95E9F71092FB021092FA0289 -:104C60000895833081F128F4813059F08230D1F0F9 -:104C70000895853009F449C0B8F1863009F456C06A -:104C8000089580911E01262F30E0280F311D2F3FFF -:104C9000310524F4680F60931E0108958FEF80930F -:104CA0001E01089580911D01262F30E0280F311D2F -:104CB0002F3F310524F4680F60931D0108958FEF95 -:104CC00080931D01089580911C01262F30E0280F4C -:104CD000311D2F3F310524F4680F60931C010895A6 -:104CE0008FEF80931C01089580911B01262F30E0E7 -:104CF000280F311D2F3F310524F4680F60931B01ED -:104D000008958FEF80931B01089580911A01262F3B -:104D100030E0280F311D2F3F310524F4680F6093D8 -:104D20001A0108958FEF80931A0108958091190157 -:104D3000262F30E0280F311D2F3F310524F4680F56 -:104D40006093190108958FEF8093190108958330BE -:104D500011F128F4813049F0823091F008958530C6 -:104D600081F120F18630C1F1089580911E0168170C -:104D700020F4861B80931E01089510921E01089551 -:104D800080911D01681720F4861B80931D010895F2 -:104D900010921D01089580911C01681720F4861B54 -:104DA00080931C01089510921C01089580911B01AD -:104DB000681720F4861B80931B01089510921B0135 -:104DC000089580911A01681720F4861B80931A01B8 -:104DD000089510921A01089580911901681720F41E -:104DE000861B8093190108951092190108950F935D -:104DF0001F93873208F048C08E3108F08DC0803193 -:104E000009F477C008F5873009F461C068F486308A -:104E100009F09DC08091F202817F8E7F8093F20223 -:104E200081E08093020394C08B3009F489C08E30F6 -:104E300009F08DC08091F20282FB222720F991E0D7 -:104E4000922790FB82F95EC0863109F479C060F444 -:104E5000813109F07CC00E941F1C9091160181E0F5 -:104E60008927809316016CC0893109F469C08B31A0 -:104E700009F06DC08091F20281FB222720F991E0B8 -:104E8000922790FB81F93EC0883309F459C050F451 -:104E9000893209F457C0853309F454C0873209F4C4 -:104EA00051C055C0833409F44DC028F48A3308F446 -:104EB0004EC0895332C0883409F049C00E941F1C7B -:104EC0000E945D0A0E9424040E94762339C09091BA -:104ED000F202892F8095817080FB90F929F096600D -:104EE00098609093F20234C0997F977F9093F2027A -:104EF00027C08091F20283FB222720F991E09227BC -:104F000090FB83F98093F2029923D1F08091F20211 -:104F100081608093F20214C08D5141E050E060E066 -:104F200070E08A019B0104C0000F111F221F331F74 -:104F30008A95D2F7C901B8010E94DF1F0E941F1C89 -:104F400081E006C061E070E080E090E0F5CF80E0B5 -:104F50001F910F91089580E0089580E00895CF9308 -:104F6000C82F80910203813069F018F08230C9F1B6 -:104F700084C0E0911701F09118018081823209F01C -:104F80007EC007C0E0911701F09118018081823244 -:104F900061F48C2F0E94AB27811104C08C2F0E94DA -:104FA000F7261DC081E090E01AC08C2F0E94AD272B -:104FB000811114C0C43179F048F4CB3079F0C0319C -:104FC00009F061C082E08093020308C0C93219F081 -:104FD000C83321F058C01092020355C081E081709F -:104FE00054C0C93291F120F5C43179F1B0F4C73021 -:104FF00009F047C08EE180931E0182E380931D017A -:105000008AE080931C0184E180931B0188E08093F7 -:105010001A0188E28093190134C0CE51C63088F558 -:10502000EC2FF0E0EA54FE4F80818093010329C009 -:10503000CE34E9F020F4CB3421F56AE013C0C13559 -:1050400079F0C235F1F461E00DC08091010388234D -:1050500019F01092010315C081E08093020315C07E -:1050600061E006C0809101030E9431260AC06AE017 -:10507000809101030E94A72604C01092020380E0E1 -:1050800004C081E002C080E0AACFCF9108950E94C1 -:10509000D723811102C00E94B3230E94F32380937F -:1050A0001D0380FF02C0869501C080E00C941F03A1 -:1050B00080911D03982F9695292F30E023303105DC -:1050C0004CF49F5F990F8170892B816080931D0341 -:1050D0000E94F72380911D0386950C941F038091F5 -:1050E0001D03982F969591F09158990F8170892BF7 -:1050F00080931D038E7F91E009F490E080911D0361 -:1051000090FB80F980931D030E94F72380911D037B -:1051100086950C941F0380911D03982F909590FB0A -:1051200080F980931D030E94F72380911D0380FF67 -:1051300002C0869501C080E00C941F0390911D036E -:10514000892F86958F5F8F779170843028F4880F30 -:10515000892B80931D0302C090931D0380911D0332 -:105160008E7F91E009F490E080911D0390FB80F91F -:1051700080931D030E94F72380911D0386950C9454 -:105180001F0320911D03922F96958927982F990F21 -:10519000822F8170892B80931D038E7F91E009F40B -:1051A00090E080911D0390FB80F980931D030E9485 -:1051B000F72380911D0386950C941F0380911D0396 -:1051C000869508955058BB27AA270ED0D1C1C2D1C9 -:1051D00030F0C7D120F031F49F3F11F41EF4B7C175 -:1051E0000EF4E095E7FB9FC1E92FD3D180F3BA1706 -:1051F000620773078407950718F071F49EF5EBC1F9 -:105200000EF4E0950B2EBA2FA02D0B01B9019001E1 -:105210000C01CA01A0011124FF27591B99F0593F25 -:1052200050F4503E68F11A16F040A22F232F342F6D -:105230004427585FF3CF469537952795A795F040BB -:105240005395C9F77EF41F16BA0B620B730B840BD0 -:10525000BAF09150A1F0FF0FBB1F661F771F881F88 -:10526000C2F70EC0BA0F621F731F841F48F48795E0 -:1052700077956795B795F7959E3F08F0B3CF9395CF -:10528000880F08F09927EE0F97958795089527D1F5 -:1052900008F481E008950CD06BC163D140F05AD17D -:1052A00030F021F45F3F19F03EC1511195C14FC15B -:1052B00070D198F39923C9F35523B1F3951B550B7E -:1052C000BB27AA2762177307840738F09F5F5F4FD9 -:1052D000220F331F441FAA1FA9F333D00E2E3AF01A -:1052E000E0E830D091505040E695001CCAF729D034 -:1052F000FE2F27D0660F771F881FBB1F2617370783 -:105300004807AB07B0E809F0BB0B802DBF01FF27B2 -:1053100093585F4F2AF09E3F510568F004C15CC16D -:105320005F3FECF3983EDCF3869577956795B795EC -:10533000F7959F5FC9F7880F911D9695879597F907 -:105340000895E1E0660F771F881FBB1F6217730780 -:105350008407BA0720F0621B730B840BBA0BEE1F95 -:1053600088F7E095089504D06894B11135C1089587 -:1053700018D188F09F5790F0B92F9927B751A0F016 -:10538000D1F0660F771F881F991F1AF0BA95C9F7D9 -:1053900012C0B13081F01FD1B1E008951CC1672F58 -:1053A000782F8827B85F39F0B93FCCF38695779589 -:1053B0006795B395D9F73EF4909580957095619572 -:1053C0007F4F8F4F9F4F0895E89409C097FB3EF49D -:1053D00090958095709561957F4F8F4F9F4F992342 -:1053E000A9F0F92F96E9BB279395F69587957795C0 -:1053F0006795B795F111F8CFFAF4BB0F11F460FF80 -:105400001BC06F5F7F4F8F4F9F4F16C0882311F0D7 -:1054100096E911C0772321F09EE8872F762F05C0EB -:10542000662371F096E8862F70E060E02AF09A9586 -:10543000660F771F881FDAF7880F9695879597F97B -:10544000089588D018F011F08CD038F480C0C4C012 -:10545000E92F9FD0B0F35523C9F3E7FB6217730719 -:1054600084079507A8F199F3E92FFF2788232AF0ED -:105470003197660F771F881FDAF7952F552744233A -:1054800032F091505040220F331F441FD2F7BB27F8 -:10549000E91BF50B621B730B840BB109C1F222F4FB -:1054A000620F731F841FB11D31972AF0660F771F9B -:1054B000881FBB1FEFCF915050405AF041F0882316 -:1054C00032F0660F771F881F91505040C1F79395B7 -:1054D00030C08695779567959F5FD9F7F8CF990F7C -:1054E0000008550FAA0BE0E8FEEF16161706E807AE -:1054F000F907C0F012161306E407F50798F0621BCF -:10550000730B840B950B39F40A2661F0232B242BA3 -:10551000252B21F408950A2609F4A140A6958FEFC2 -:10552000811D811D089597F99F6780E870E060E014 -:1055300008959F3F31F0915020F4879577956795B6 -:10554000B795880F911D9695879597F908959FEFC8 -:1055500080EC089500240A9416161706180609060A -:10556000089500240A9412161306140605060895D9 -:10557000092E0394000C11F4882352F0BB0F40F461 -:10558000BF2B11F460FF04C06F5F7F4F8F4F9F4FA1 -:10559000089557FD9058440F551F59F05F3F71F023 -:1055A0004795880F97FB991F61F09F3F79F087958A -:1055B0000895121613061406551FF2CF4695F1DF13 -:1055C00008C0161617061806991FF1CF86957105A3 -:1055D000610508940895E894BB2766277727CB01D7 -:1055E00097F908957CDF08F48FEF08950BD0C0CFB2 -:1055F000B1DF28F0B6DF18F0952309F094CFA7CFDC -:105600001124EACFC6DFA0F3959FD1F3950F50E0A8 -:10561000551F629FF001729FBB27F00DB11D639F64 -:10562000AA27F00DB11DAA1F649F6627B00DA11D0A -:10563000661F829F2227B00DA11D621F739FB00DB0 -:10564000A11D621F839FA00D611D221F749F332720 -:10565000A00D611D231F849F600D211D822F762FB9 -:105660006A2F11249F5750408AF0E1F088234AF0B6 -:10567000EE0FFF1FBB1F661F771F881F9150504002 -:10568000A9F79E3F510570F04ECFA6CF5F3FECF3D8 -:10569000983EDCF3869577956795B795F795E795EE -:1056A0009F5FC1F7FE2B880F911D9695879597F9FF -:1056B0000895FA01EE0FFF1F30962105310599F18B -:1056C0006115710561F48038BFE39B0749F1689467 -:1056D0009038810561F08038BFEF9B0741F0992336 -:1056E00042F5FF3FE1053105210511F1E8940894E9 -:1056F000E795D901AA2329F4AB2FBE2FF85FD0F389 -:1057000010C0FF5F70F4A695E0F7F73950F019F07C -:10571000FF3A38F49F779F930CD00F9007FC905876 -:1057200008953EF014CF60E070E080E89FE30895B4 -:105730004FE79F775F934F933F932F939ED02F9187 -:105740003F914F915F9152DF05C019F40EF0EBCEFF -:1057500042CFFDCE26DFC8F39638C0F707F80F9288 -:10576000E8942BE33AEA48EB5FE74EDF0F920F92A3 -:105770000F924DB75EB70F92C0D0EAE0F1E016D0BD -:105780004F915F91EF91FF91E595EE1FFF1F49F05B -:10579000FE57E0684427EE0F441FFA95E1F7419564 -:1057A000550B32D00F9007FE26C00895DF93CF939C -:1057B0001F930F93FF92EF92DF927B018C0168940D -:1057C00005C0DA2EEF011EDFFE01E894A5912591B8 -:1057D000359145915591AEF3EF0106DDFE0197013C -:1057E000A801DA9479F7DF90EF90FF900F911F9165 -:1057F000CF91DF9108959B01AC0160E070E080E8FB -:105800009FE349CD90CE95CECCDEE8F39923D9F332 -:10581000940F511DBBF39150504094F059F08823E0 -:1058200032F0660F771F881F91505040C1F79E3F9E -:10583000510544F7880F911D9695879597F908951E -:105840005F3FACF0983E9CF0BB27869577956795B7 -:10585000B79508F4B1609395C1F7BB0F58F711F4F1 -:1058600060FFE8CF6F5F7F4F8F4F9F4FE3CFB4CE86 -:105870000EF05FCE6CCE689456CE93DEC8F39923BB -:10588000D1F3C6F3DF93CF931F930F93FF92C92FEA -:10589000DD2788232AF02197660F771F881FDAF704 -:1058A00020E030E040E85FEB9FE3883920F0803E65 -:1058B00030F021968F7787DCE2E3F1E003C083DCF0 -:1058C000EFE5F1E073DF8B01BE01EC01FB2E6F57BA -:1058D00071097595771F880B990B78DD28E132E700 -:1058E00041E35FE38FDEAF2D9801AE01FF900F9192 -:1058F0001F91CF91DF9178DC3BCEFA01DC01AA0F3A -:10590000BB1F9B01AC01BF5728F422273327442734 -:1059100050781FC0B75188F4AB2F002446953795B7 -:105920002795011CA395D2F3002069F0220F331FA5 -:10593000441FB395DAF30DD045CC61307105A0E872 -:105940008A07B94630F49B01AC0166277727882780 -:105950009078309621F020833183428353830895D9 -:10596000AA1BBB1B51E107C0AA1FBB1FA617B70785 -:1059700010F0A61BB70B881F991F5A95A9F78095A1 -:105980009095BC01CD01089597FB072E16F4009465 -:1059900007D077FD09D00E94B02C07FC05D03EF45B -:1059A000909581959F4F0895709561957F4F0895CB -:1059B000EE0FFF1F0590F491E02D0994F999FECFA9 -:1059C00092BD81BDF89A992780B50895A8E1B0E00D -:1059D00042E050E00C94062D262FF999FECF92BD9F -:1059E00081BDF89A019700B4021639F01FBA20BDA4 -:1059F0000FB6F894FA9AF99A0FBE08950196272FD8 -:105A00000E94ED2C0C94EC2CDC01CB01FC01F999EB -:105A1000FECF06C0F2BDE1BDF89A319600B40D92FA -:0C5A200041505040B8F70895F894FFCFB3 -:105A2C00640007000CFF0000003F644110CF10AC75 -:105A3C0010781044100101DF022808140A321E00ED -:105A4C0002040507090B0C0E1011131517181A1C5C -:105A5C001D1F2123242628292B2D2F303234353796 -:105A6C00393B1F0F03764F5F6F7F496943790959A3 -:105A7C0053633149803F5D8B803FF8BF803FCAE163 -:105A8C00803F73ED803FCAE1803FF8BF803F5D8B64 -:105A9C00803F3149803F0000803FF16D7F3F75EAC8 -:105AAC007E3F4C827E3F833F7E3F84287E3F833FF8 -:105ABC007E3F4C827E3F75EA7E3FF16D7F3F00005A -:105ACC00803F3F4D36394905FC04C6048D04200443 -:105ADC00390452046B04010203040506070809008B -:00000001FF diff --git a/keyboard/planck/keymaps/pete/compiled.hex b/keyboard/planck/keymaps/pete/compiled.hex deleted file mode 100644 index ddf70df507..0000000000 --- a/keyboard/planck/keymaps/pete/compiled.hex +++ /dev/null @@ -1,1143 +0,0 @@ -:100000000C94F1020C9435030C9435030C943503D5 -:100010000C9435030C9435030C9435030C94350380 -:100020000C9435030C9435030C94D20D0C94A40E4F -:100030000C94061C0C9435030C9435030C94350376 -:100040000C9435030C9496030C9435030C943503EF -:100050000C9435030C946E1C0C9435030C943503EE -:100060000C9435030C9435030C9435030C94350330 -:100070000C9435030C9435030C9435030C94350320 -:100080000C9435030C9435030C9435030C94350310 -:100090000C9435030C9435030C9435030C94350300 -:1000A0000C9435030C9435030C943503FC030404C1 -:1000B0000E0416041E042F0458045804580458044F -:1000C0005804580458045804580458043B04110FA9 -:1000D000330F2110330F2110780F9B0F2110F00FD9 -:1000E0000310ED12ED121C131C135B137B13D114C0 -:1000F000D1148613D114361436149D14A614D114B9 -:10010000CB144314431443144314431443144314AF -:100110004314431443144314431443144314431427 -:1001200043145314611468146F1479140000000010 -:1001300000000000000000010204060A0F17202C36 -:100140003A4A5D71879DB3C7DAE9F5FCFFFCF5E932 -:10015000DAC7B39D87715D4A3A2C20170F0A06044F -:100160000201000000000000000000002B0014004D -:100170001A000800150017001C0018000C001200DF -:1001800013002A00290004001600070009000A00D5 -:100190000B000D000E000F0033003400E1001D00C5 -:1001A0001B00060019000500110010003600370082 -:1001B000380028000530E000E200E30003302C00A6 -:1001C0002C0004305000510052004F002B0014004E -:1001D0001A00090013000A000D000F0018001C008F -:1001E00033002A002900040015001600170007003C -:1001F0000B00110008000C0012003400E1001D008B -:100200001B000600190005000E0010003600370024 -:10021000380028000530E000E200E30003302C0045 -:100220002C0004305000510052004F002B003400CD -:100230003600370013001C0009000A0006001500F4 -:100240000F002A00290004001200080018000C000A -:1002500007000B001700110016003800E100330002 -:1002600014000D000E001B00050010001A001900FC -:100270001D0028000530E000E200E30003302C0000 -:100280002C0004305000510052004F0035021E0275 -:100290001F0220022102220223022402250226023A -:1002A00027022A00010001000100010001000100F5 -:1002B00001002D022E022F02300231020100010046 -:1002C0000100010001000100010001000100010026 -:1002D0000100010001000100010001000100010016 -:1002E00001000100AB00AA00A900AE0035001E000D -:1002F0001F002000210022002300240025002600EA -:1003000027002A0001000100010001000100010096 -:1003100001002D002E002F003000310001000100EF -:1003200001000100010001000100010001000100C5 -:1003300001000100010001000100010001000100B5 -:1003400001000100AB00AA00A900AE0083506603C3 -:10035000000000000000000000003A003B003C00EC -:100360003D004C0001001030A800AA00A9000000C8 -:1003700000003E003F0040004100200A0100350817 -:10038000AC00AE00AB00000000004200430044009F -:100390004500210A053001000100010000000000B5 -:1003A000000000004A004E004B004D00010001001B -:1003B0000100010001000100010001000100010035 -:1003C0000100010001000100010001000100010025 -:1003D0000100003001300230010001000100010085 -:1003E0000100010001000100010001000100010005 -:1003F00001000100010001000100010001000050A6 -:100400000050010001000100010001002803540018 -:1004100068006500200050006C0061006E00630001 -:100420006B0020004B006500790062006F006100E6 -:100430007200640000002C034F007200740068001A -:100440006F006C0069006E006500610072002000A2 -:100450004B006500790062006F006100720064006B -:10046000730000000403090409026D00040100A0E8 -:10047000FA09040000010301010009211101000132 -:10048000223F000705810308000A09040100010357 -:10049000010200092111010001224D00070582031C -:1004A00008000A09040200010300000009211101EB -:1004B00000012236000705830308000A090403002F -:1004C0000103000000092111010001223900070584 -:1004D00084031000011201100100000008EDFE600D -:1004E0006001000102000105010906A101050719CB -:1004F000E029E71500250195087501810205081915 -:100500000129059505750191029501750391010574 -:10051000071900297715002501957875018102C01A -:1005200005010980A101850216010026B7001A0104 -:10053000002AB700751095018100C0050C0901A1C2 -:10054000018503160100269C021A01002A9C0275EF -:100550001095018100C005010902A1010901A10056 -:100560000509190129051500250195057501810267 -:100570009501750381010501093009311581257F38 -:1005800095027508810609381581257F9501750842 -:100590008106050C0A38021581257F9501750881B1 -:1005A00006C0C005010906A101050719E029E715E4 -:1005B00000250195087501810295017508810105E5 -:1005C0000819012905950575019102950175039199 -:1005D000010507190029FF150025FF9506750881FB -:1005E00000C011241FBECFEFDAE0DEBFCDBF04B6DE -:1005F00003FE24C08091FB019091FC01A091FD01BC -:10060000B091FE018730904BA740B04BB9F41092E7 -:10061000FB011092FC011092FD011092FE0114BE2C -:1006200084B7877F84BF88E10FB6F8948093600019 -:10063000109260000FBEE0E0F8E3099511E0A0E041 -:10064000B1E0E6E0F7E402C005900D92A434B107F2 -:10065000D9F711E0A4E4B1E001C01D92AB3FB107AE -:10066000E1F70E94180B0C9481230C94000008956C -:1006700081E0089508950C9437030C9438030C948A -:100680003A030E94F72123E030E0281B3109220FB2 -:10069000209348010895282F2F98809180002111E0 -:1006A00008C0877F8093800010928D0010928C008C -:1006B0001BC0886080938000233019F48FEF9FEF78 -:1006C0000FC083E090E0821B9109880F991F2FEFE4 -:1006D0003FEFA90102C0569547958A95E2F7CA01F6 -:1006E00090938D0080938C000C9441030E944103F1 -:1006F00084E080934701109244010895279A2F982F -:100700008FEF9FEF90938700809386008AE080931D -:10071000800089E1809381000E9460210C9476031F -:100720000E947E036E9A769A0C945B041F920F923D -:100730000FB60F9211242F933F938F939F93EF93B4 -:10074000FF93E0914501F0914601CF01019690930E -:100750004601809345010090470102C0F695E79558 -:100760000A94E2F7EF7380914401823019F4E03289 -:1007700051F404C0813039F4EF3329F480916F00D3 -:100780008D7F80936F00F0E0E45DFE4FE49121E007 -:1007900031E0E29FC001E39F900D112400904801D9 -:1007A00002C0969587950A94E2F790938D00809306 -:1007B0008C00FF91EF919F918F913F912F910F901E -:1007C0000FBE0F901F901895CF93DF93EC010E94FE -:1007D000021DBE0180E090E0DF91CF910C94FC18E7 -:1007E000462F50E04131510508F062C0DC01FA01AA -:1007F000EA5AFF4F0C94312312968C91882309F406 -:1008000057C081E090E007C012968C91882309F4CC -:100810004FC082E090E00E94E4034AC012968C919F -:10082000882309F445C084E090E0F5CF12968C91BE -:10083000882311F083E007C083E00EC012968C91EC -:10084000882349F084E00E94791946E064E083E05F -:100850000E9428082DC084E00E949A19F6CF1296B3 -:100860008C91882321F085E00E94791921C085E0D0 -:100870000E949A191DC012968C91882369F085EE0A -:100880000E94911184EE0E94911186EE0E949111B6 -:1008900087EE0E9491110CC085EE0E94591284EEE1 -:1008A0000E94591286EE0E94591287EE0E94591238 -:1008B00080E090E00895089581E008950C945C0430 -:1008C00008950F931F93CF93DF938C01FC01C08198 -:1008D000D181CE010E94351ABE010E940E05EC01A5 -:1008E000B8010E945E04882309F48DC0F80182815A -:1008F000882309F44AC08091540181111FC0C4317A -:10090000F0E5DF0709F051C00E94600481E08093A8 -:1009100054010E94381C909353018093520110920D -:100920004B0110924D0110924C0110924F01109208 -:100930004E01109251011092500165C080915201F8 -:10094000909153010E94441C883C910570F4809161 -:100950004B01E82FF0E0EE0FFF1FE45BFE4FD18369 -:10096000C0838F5F80934B014EC0C43880E5D807A9 -:1009700021F0C538D04501F13AC0F80182818823C1 -:1009800041F01092490182E01EC0C438E0E5DE0764 -:1009900059F580914901811106C086E20E949111AA -:1009A00086E20E94591282E01CC0C438F0E5DF07DD -:1009B00041F3C538D045D9F4F8018281882331F05C -:1009C00010924A0180E20E94A8121DC080914A0143 -:1009D000811106C087E20E94911187E20E9459129C -:1009E00080E20E94AF120FC0C538D04529F381E0E4 -:1009F0008093490180934A01C801DF91CF911F91F3 -:100A00000F910C943D0380E0DF91CF911F910F91E6 -:100A100008950C9490030C943B0308959CE0799FF7 -:100A2000F001112490E3899FE00DF11D1124E60FE0 -:100A3000F11DEE0FFF1FE459FE4F8591949108952B -:100A4000880F991FFC01E451F0408591949108951D -:100A5000880F991FFC01E459FE4F859194910895E8 -:100A60000F931F93CF93DF93EC01811521E392073E -:100A7000A0F5C11580E3D80708F0D7C0C83ED1055E -:100A8000D8F4C03ED10508F003C2C83AD10578F4C5 -:100A9000C53AD10508F06AC0C130D10509F463C078 -:100AA00008F4F3C1C430D10508F0F2C1EEC1CB3B6C -:100AB000D10508F466C0E9C1C11590E2D90708F074 -:100AC000AFC0C11521E0D20708F0E2C1C03FD10597 -:100AD00008F4DBC18E0110651BC2C03880E5D80761 -:100AE00000F5C03790E5D90708F0A3C0C11520E58F -:100AF000D20709F4ACC050F4CE01905480319F402D -:100B000008F0C3C1DF708E01106A02C2C13080E5F7 -:100B1000D80709F4AAC0C43190E5D90708F4ABC0DE -:100B2000B4C1C33820E5D20709F48EC050F4C138EF -:100B300090E5D90709F482C008F083C000E011ED08 -:100B4000E7C1C03181E5D80708F49FC1C11597E519 -:100B5000D90708F432C1CE0190578115904108F0B1 -:100B600094C1DF708FC101E010E0D2C1C53AD10558 -:100B700009F490C1C63AD10509F08FC102E810E42A -:100B8000C7C1C83AD10509F48BC1C93AD10509F4E6 -:100B90008AC1CA3AD10509F489C1CB3AD10509F411 -:100BA00088C1CC3AD10509F487C1CD3AD10509F401 -:100BB00086C1C03BD10509F485C1CE3AD10509F4FF -:100BC00084C1CF3AD10509F483C1C13BD10509F4F1 -:100BD00082C1C23BD10509F481C1C33BD10509F4EF -:100BE00080C1C43BD10509F47FC1C53BD10509F4DF -:100BF0007EC1C63BD10509F47DC1C73BD10509F4CF -:100C00007CC1C83BD10509F47BC1C93BD10509F4BE -:100C10007AC1CA3BD10509F479C100E014E478C176 -:100C2000CE019F700E94280574C1DD278E01106CD3 -:100C30006FC1CF70DD278E01146D6AC100E010ED29 -:100C400067C100E012ED64C100E013ED61C10E94D4 -:100C50003C158FEF94E32CE0815090402040E1F769 -:100C600000C000000E94931C53C18091DB01816091 -:100C70008093DB014DC10E94EF1C811102C00E94D4 -:100C8000D01C0E94071D90E09093FA018093F90117 -:100C9000C23080E5D80721F48091F901816086C0D7 -:100CA000C43090E5D90721F48091F90182607EC0BB -:100CB000C63020E5D20721F48091F901846076C026 -:100CC000C83080E5D80719F48091F90127C0CA30EF -:100CD00090E5D90721F48091F901806167C0CC309B -:100CE00020E5D20721F48091F90180625FC0CE3007 -:100CF00080E5D80721F48091F901806457C0C031A4 -:100D000090E5D90721F48091F90180684FC0C23184 -:100D100020E5D20729F48091F9018460886046C0FB -:100D2000C33080E5D80721F48091F9018E7F3EC061 -:100D3000C53090E5D90721F48091F9018D7F36C047 -:100D4000C73020E5D20721F48091F9018B7F2EC0B6 -:100D5000C93080E5D80719F48091F90126C0CB305D -:100D600090E5D90721F48091F9018F7E1FC0CD3025 -:100D700020E5D20721F48091F9018F7D17C0CF3093 -:100D800080E5D80721F48091F9018F7B0FC0C13134 -:100D900090E5D90721F48091F9018F7707C0C3311D -:100DA000D04531F48091F9018B7F877F8093F901E1 -:100DB0008091F9010E940B1DABC08D2F99278F7078 -:100DC000992781309105D9F49E012370332702C001 -:100DD000880F991F2A95E2F79C688E0144E0000F66 -:100DE000111F4A95E1F700271370802B912B53E0D8 -:100DF000CC0FDD1F5A95E1F7C076DD272FC082307A -:100E0000910531F4DC2FCC278E01016F106A80C070 -:100E10008330910569F4CE018370992701E010E0D9 -:100E200002C0000F111F8A95E2F7C8019C680FC02D -:100E300084309105B9F4CE018370992701E010E068 -:100E400002C0000F111F8A95E2F7C8019A6823E0DB -:100E5000CC0FDD1F2A95E1F7C07ED7708C010C2BDB -:100E60001D2B56C08530910531F4DC2FCC278E0127 -:100E7000046F106A4DC0069709F04AC0CF71DD2794 -:100E8000DC2FCC278E01106243C000E010E040C090 -:100E90008E013EC001E810E43BC003E810E438C016 -:100EA00002EE14E435C009EE14E432C00AEE14E494 -:100EB0002FC005EB14E42CC006EB14E429C007EBAB -:100EC00014E426C00CEC14E423C00DEC14E420C0A0 -:100ED00003E815E41DC00AE815E41AC002E915E4A8 -:100EE00017C004E915E414C001E216E411C003E2DE -:100EF00016E40EC004E216E40BC005E216E408C0D6 -:100F000006E216E405C007E216E402C00AE216E4AF -:100F1000C801DF91CF911F910F9108959CE0799FB7 -:100F2000F001112490E3899FE00DF11D1124E60FDB -:100F3000F11DEE0FFF1FE459FE4F85919491803E05 -:100F40009105E0F4803C910558F58133910509F451 -:100F50006FC048F48932910509F463C08A32910563 -:100F600009F46DC072C089339105E9F082389105AA -:100F7000D1F08533910509F44DC067C0833E9105DA -:100F800081F138F4803E9105B9F0823E9105D9F0A7 -:100F90005CC0863E910561F1873E9105A1F155C087 -:100FA0000E94200508952091F90120FD02C021FF33 -:100FB0004CC080EE90E049C08091F90180FFF9CFEC -:100FC00089E390E042C08091F90182FF0EC08091D8 -:100FD000F90184FF03C080E090E037C083EE90E029 -:100FE00034C08091F90182FFF2CF82EE90E02DC0F3 -:100FF0008091F90183FF0BC08091F90184FDEBCF53 -:1010000087EE90E022C08091F90183FFF5CF86EE54 -:1010100090E01BC08091F90185FF07C089E290E054 -:1010200014C08091F90185FFF9CF85E390E00DC0F0 -:101030008091F90186FF07C08AE290E006C08091A6 -:10104000F90186FFF9CF81E390E00E943005089511 -:10105000CF92DF92EF92FF920F931F9301E010E087 -:1010600020E030E06801790104C0CC0CDD1CEE1CEE -:10107000FF1C8A95D2F704C0000F111F221F331FD7 -:101080006A95D2F70C291D292E293F29C090BE014F -:10109000D090BF01E090C001F090C101C022D122E8 -:1010A000E222F322842FC016D106E206F30641F4B1 -:1010B0001F910F91FF90EF90DF90CF900C947919D2 -:1010C0001F910F91FF90EF90DF90CF900C949A19A1 -:1010D0000C943F03E82FF0E0EF5DFE4F8081E82F96 -:1010E000EF70F0E082958F7021E030E0A90102C03E -:1010F000440F551F8A95E2F740A308950F931F935D -:10110000CF93DF9385B7806885BF85B7806885BF3B -:10111000C3E0D0E001E010E0FE01EF5DFE4F808112 -:10112000E82FEF70F0E021A182958F70A80102C036 -:10113000440F551F8A95E2F7CA01822B81A38C2F99 -:101140000E946A08219740F78BE090E061E070E030 -:10115000FC01EB5EFE4F2081E22FEF70F0E042A138 -:1011600022952F70DB0102C0AA0FBB1F2A95E2F760 -:101170009D01242B22A3019758F7DF91CF911F9156 -:101180000F910C940905EF92FF920F931F93CF9349 -:10119000DF930DE511E0C3E0EE24E394F12CD5E0FC -:1011A0008C2F0E946A088BE090E040E050E0FC0148 -:1011B000EB5EFE4F6081E62FEF70F0E020A130E0A3 -:1011C00062956F7002C0359527956A95E2F720FD0C -:1011D00009C09701082E02C0220F331F0A94E2F7BC -:1011E000422B532B019718F7F801929182918F01AE -:1011F0008417950721F051834083D09300018C2FF1 -:101200000E946A08C15060F68091000187FD2CC0E1 -:101210008150809300018F3F39F08FE99FE0019763 -:10122000F1F700C0000020C080915B0190915C014B -:1012300090936401809363018091590190915A01C8 -:1012400090936201809361018091570190915801C0 -:101250009093600180935F018091550190915601B8 -:1012600090935E0180935D010E940B0581E0DF9108 -:10127000CF911F910F91FF90EF900895E82FF0E02C -:10128000EE0FFF1FE35AFE4F80819181089508956C -:101290000F931F93CF9305E611E0C0E0F801929100 -:1012A00082918F010E94B01BC80FF1E00D351F071E -:1012B000A9F78C2FCF911F910F91089580917501FF -:1012C0000895CF93DF9300D01F92CDB7DEB79C0176 -:1012D0008091F001843019F593E099833B832A8350 -:1012E0009093E9008FEF9091E800815095FD06C042 -:1012F00095ED9A95F1F700008111F5CF8091E80006 -:1013000085FF0DC040E050E063E070E0CE01019643 -:101310000E94C20B8091E8008E778093E8000F90C6 -:101320000F900F90DF91CF910895CF93DF9300D06E -:101330001F92CDB7DEB72091F001243021F522E0D5 -:1013400029839B838A8383E08093E9008FEF9091C8 -:10135000E800815095FD06C095ED9A95F1F70000E3 -:101360008111F5CF8091E80085FF0DC040E050E08D -:1013700063E070E0CE0101960E94C20B8091E8000C -:101380008E778093E8000F900F900F90DF91CF91B0 -:1013900008952091F0012430F1F422E02093E90037 -:1013A0002FEF3091E800215035FD06C035ED3A951C -:1013B000F1F700002111F5CF2091E80025FF0BC0C7 -:1013C00040E050E065E070E00E94C20B8091E800D0 -:1013D0008E778093E8000895CF93DF93EC0190918E -:1013E000F001943009F046C080910B018823D9F0B8 -:1013F00080910C018823B9F09093E9008FEF9091D0 -:10140000E800815095FD06C095E19A95F1F700003E -:101410008111F5CF8091E80085FF2CC040E050E0BD -:1014200060E170E017C081E08093E9008FEF909158 -:10143000E800815095FD06C095ED9A95F1F7000002 -:101440008111F5CF8091E80085FF14C040E050E0A5 -:1014500068E070E0CE010E94C20B8091E8008E77B8 -:101460008093E80080E1FE01A5E6B1E001900D92D5 -:101470008A95E1F7DF91CF9108958091EF01811175 -:1014800009C00E94570D0E94B40D8091E200846053 -:101490008093E20008951092EF0108950895089551 -:1014A0000C94FB1B42E061EC81E00E94D10C42E015 -:1014B00061EC82E00E94D10C42E061EC83E00E948A -:1014C000D10C42E161EC84E00C94D10C8091F201EA -:1014D000833009F455C030F4813071F0823009F462 -:1014E0008EC008958A3009F47AC08B3009F460C048 -:1014F000893009F09CC020C08091F101813A09F047 -:1015000096C08091E800877F8093E8008091F50184 -:101510009091F601892B21F460E185E691E003C00A -:1015200060E080E090E070E00E940D0C8091E800A7 -:101530008B778093E80008958091F101813209F062 -:1015400076C08091F5019091F601009719F003970C -:1015500009F06DC08091E800877F8093E80080915A -:10156000E80082FD05C08091F0018111F8CF5FC0D5 -:101570008091F100809375018091E8008B7753C0D2 -:101580008091F101813A09F052C08091F50190916A -:10159000F601892B09F04BC08091E800877F80938A -:1015A000E8008091E80080FFFCCF80910B0136C0FD -:1015B0008091F1018132D9F58091F5019091F60188 -:1015C000892BA9F58091E800877F8093E8000E942D -:1015D000060D8091F30180930B010C943C158091D2 -:1015E000F101813221F58091E800877F8093E80046 -:1015F0000E94060D8091F4018093760108958091F8 -:10160000F101813AA1F48091E800877F8093E8009E -:101610008091E80080FFFCCF809176018093F100FB -:101620008091E8008E778093E8000C94060D089571 -:1016300084B7877F84BF88E10FB6F89480936000F9 -:10164000109260000FBE90E080E80FB6F89480938F -:101650006100909361000FBE0E94A9100E94570D77 -:101660000E94B40D8091E20084608093E20078943F -:101670000E943A100E94AB1081E091E00E94551048 -:101680008091F001853069F40E94BC1B8091EE01CD -:101690008823B1F30E94EA1B882391F30E94AC0BCC -:1016A000EFCF0E94B310ECCF292F33272330310521 -:1016B000C9F064F42130310581F02230310509F0A0 -:1016C00043C08DE690E028E634E042C02132310587 -:1016D000F1F02232310541F137C082E190E025ED91 -:1016E00034E036C099278130910541F08230910570 -:1016F00041F0892B49F5E4E6F4E005C0E6E3F4E0C7 -:1017000002C0ECE0F4E0849190E09F0121C06430DD -:10171000D8F4E62FF0E0EE0FFF1FEF5CFE4F2081C4 -:10172000318189E090E014C0643070F470E0FB0116 -:10173000EE0FFF1FE75DFE4F20813181FB01EB5D66 -:10174000FE4F808190E004C080E090E020E030E037 -:10175000FA0131832083089580E189BD82E189BD4A -:1017600009B400FEFDCF8091D8008F7D8093D80012 -:101770008091E00082608093E0008091E00081FD34 -:10178000FCCF0895CF92DF92EF92FF920F931F93B9 -:10179000CF93DF93EC018B016A010E94250D81112B -:1017A00033C0C114D10439F0F60180819181081B46 -:1017B000190BC80FD91FE12CF12C0115110519F1D6 -:1017C0008091E80085FD16C08091E8008E778093B7 -:1017D000E800C114D10449F0F60180819181E80E3E -:1017E000F91EF182E08285E00FC00E94250D88235A -:1017F00021F30AC089918093F10001501109FFEF94 -:10180000EF1AFF0ADACF80E0DF91CF911F910F919D -:10181000FF90EF90DF90CF9008952091F7013091E5 -:10182000F8012617370748F06115710539F4209142 -:10183000E8002E772093E80001C0B90140E061156F -:101840007105A9F12091F001222309F443C025304C -:1018500009F442C02091E80023FD40C02091E80037 -:1018600022FD32C02091E80020FFE9CF4091F30033 -:101870002091F20030E0342BFC01CF01611571059D -:1018800059F02830310540F481918093F100615086 -:1018900071092F5F3F4FF1CF41E02830310509F04A -:1018A00040E02091E8002E772093E800C8CF411156 -:1018B000C9CF0AC08091F001882361F0853061F0C2 -:1018C0008091E80083FD0AC08091E80082FFF2CF9A -:1018D00080E0089582E0089583E0089581E008950E -:1018E0002091F7013091F8012617370748F061156C -:1018F000710539F42091E8002E772093E80001C0AB -:10190000B901FC0120E06115710591F18091F001B0 -:10191000882309F440C0853009F43FC08091E80075 -:1019200083FD3DC08091E80082FD2FC08091E800DA -:1019300080FFE9CF2091F3008091F20090E0922B9C -:101940006115710559F08830910540F42491209378 -:10195000F1003196615071090196F2CF21E00897AC -:1019600009F020E08091E8008E778093E800CBCFEB -:101970002111CCCF0AC08091F001882361F085301D -:1019800061F08091E80083FD0AC08091E80082FF49 -:10199000F2CF80E0089582E0089583E0089581E029 -:1019A0000895982F973058F59093E900981739F0DB -:1019B0007091EC002091ED005091F00003C0242FB5 -:1019C000762F50E021FF19C03091EB003E7F30931D -:1019D000EB003091ED003D7F3093ED003091EB0056 -:1019E00031603093EB007093EC002093ED00509346 -:1019F000F0002091EE0027FF07C09F5FD3CF8F70CC -:101A00008093E90081E0089580E008958091F101DC -:101A100087FF11C08091E80082FD05C08091F00130 -:101A20008111F8CF11C08091E8008B770BC08091B5 -:101A3000F001882349F08091E80080FFF8CF809181 -:101A4000E8008E778093E80008952091E4003091BB -:101A5000E50095E64091EC00842F817040FF22C0A4 -:101A60008091E80080FD1CC08091F001882391F0F6 -:101A7000853091F08091EB0085FD10C04091E4002D -:101A80005091E5004217530729F39A01915011F73D -:101A900084E0089582E0089583E0089581E0089548 -:101AA00080E008954091E80042FFDECF08950E9453 -:101AB000C50D0E94CD0DE0EEF0E080818160808355 -:101AC000E8EDF0E080818F77808319BCA7EDB0E06E -:101AD0008C918E7F8C9380818F7E80831092EF011A -:101AE00008950F931F93CF93DF930E94C50D0E941B -:101AF000CD0DC8EDD0E088818F778883888180689C -:101B0000888388818F7D888319BC1092F0011092A0 -:101B1000EC011092EE011092ED0100EE10E0F801E0 -:101B200080818B7F808388818160888342E060E050 -:101B300080E00E94D10CE1EEF0E080818E7F808316 -:101B4000E2EEF0E080818160808380818860808324 -:101B5000F80180818E7F8083888180618883DF9116 -:101B6000CF911F910F910895E8EDF0E080818F7E75 -:101B70008083E7EDF0E080818160808384E082BF34 -:101B800081E08093EF010C94710DE8EDF0E080812D -:101B90008E7F80831092E20008951092DA001092F6 -:101BA000E10008951F920F920FB60F9211242F9308 -:101BB0003F934F935F936F937F938F939F93AF93D5 -:101BC000BF93EF93FF938091E10082FF0BC0809160 -:101BD000E20082FF07C08091E1008B7F8093E100EB -:101BE0000E9439108091DA0080FF1FC08091D800D8 -:101BF00080FF1BC08091DA008E7F8093DA00809195 -:101C0000D90080FF0DC080E189BD82E189BD09B4A2 -:101C100000FEFDCF81E08093F0010E943D0A05C0E7 -:101C200019BC1092F0010E944B0A8091E10080FFE4 -:101C300019C08091E20080FF15C08091E2008E7F84 -:101C40008093E2008091E20080618093E2008091C5 -:101C5000D80080628093D80019BC85E08093F001A1 -:101C60000E944F0A8091E10084FF30C08091E20021 -:101C700084FF2CC080E189BD82E189BD09B400FEEA -:101C8000FDCF8091D8008F7D8093D8008091E100B6 -:101C90008F7E8093E1008091E2008F7E8093E2004E -:101CA0008091E20081608093E2008091EC018823C2 -:101CB00011F084E007C08091E30087FD02C081E05D -:101CC00001C083E08093F0010E94500A8091E100FE -:101CD00083FF29C08091E20083FF25C08091E1004D -:101CE000877F8093E10082E08093F0011092EC0105 -:101CF0008091E1008E7F8093E1008091E2008E7FF1 -:101D00008093E2008091E20080618093E20042E0F3 -:101D100060E080E00E94D10C8091F00088608093A8 -:101D2000F0000E944E0AFF91EF91BF91AF919F91F9 -:101D30008F917F916F915F914F913F912F910F9074 -:101D40000FBE0F901F9018951F920F920FB60F9213 -:101D500011242F933F934F935F936F937F938F93B0 -:101D60009F93AF93BF93CF93DF93EF93FF93C09174 -:101D7000E900CF708091EC00D82FD17080FDD0E8C1 -:101D80001092E9008091F000877F8093F0007894B2 -:101D90000E94E80E1092E9008091F0008860809324 -:101DA000F000CD2BCF70C093E900FF91EF91DF9150 -:101DB000CF91BF91AF919F918F917F916F915F91E3 -:101DC0004F913F912F910F900FBE0F901F9018953C -:101DD0001F93CF93DF93CDB7DEB7AA970FB6F894D2 -:101DE000DEBF0FBECDBFE1EFF1E088E08E0F909136 -:101DF000F10091938E13FBCF0E94660A8091E80058 -:101E000083FF1FC18091F1019091F201492F50E0B1 -:101E10004A30510508F015C1FA01E959FF4F0C94F9 -:101E20003123803881F0823809F00BC18091F501AF -:101E30008F708093E9008091EB0085FB882780F903 -:101E40001092E90006C08091ED019091EE01911190 -:101E500082609091E800977F9093E8008093F10072 -:101E60001092F100C8C0282F2D7F09F0EAC0882306 -:101E700019F0823061F0E5C08091F301813009F002 -:101E8000E0C0933009F080E08093EE012BC0809198 -:101E9000F301811127C08091F5018F7009F4D1C041 -:101EA0008093E9002091EB0020FF1CC0933021F4C7 -:101EB0008091EB00806214C09091EB009061909350 -:101EC000EB0021E030E0A90102C0440F551F8A95C4 -:101ED000E2F74093EA001092EA008091EB008860FC -:101EE0008093EB001092E9008091E800877F86C024 -:101EF0008111A7C01091F3011F778091E3008078D2 -:101F0000812B8093E3008091E800877F8093E80035 -:101F10000E94060D8091E80080FFFCCF8091E300D5 -:101F200080688093E300111102C082E001C083E069 -:101F30008093F00186C08058823008F082C0809182 -:101F4000F3019091F4018C3D53E0950779F583E01E -:101F50008A838AE289834FB7F894DE01139620E0E2 -:101F60003EE051E2E32FF0E050935700E49120FF70 -:101F700003C0E295EF703F5FEF708E2F90E0EA3084 -:101F800010F0C79601C0C0968D939D932F5F2431AA -:101F900049F74FBF8091E800877F8093E8006AE2AD -:101FA00070E0CE0101960E940D0C14C0AE014F5F8F -:101FB0005F4F6091F5010E94540BBC01009709F43A -:101FC00040C09091E800977F9093E80089819A81C2 -:101FD0000E94700C8091E8008B778093E80031C0FC -:101FE000803879F58091E800877F8093E8008091C0 -:101FF000EC018093F1008091E8008E778093E800F7 -:102000000E94060D1EC081111CC09091F3019230F8 -:10201000C0F48091E800877F8093E8009093EC0102 -:102020000E94060D8091EC01811106C08091E300B1 -:1020300087FD02C081E001C084E08093F0010E942E -:10204000520A8091E80083FF0AC08091E800877FF0 -:102050008093E8008091EB0080628093EB00AA9669 -:102060000FB6F894DEBF0FBECDBFDF91CF911F91A9 -:1020700008950895CF938091F0018823A1F0C09135 -:10208000E900CF709091EC00892F817090FD80E87D -:10209000C82B1092E9008091E80083FD0E94E80EB1 -:1020A000CF70C093E900CF91089590937C01809305 -:1020B0007B010895E0917B01F0917C01309721F044 -:1020C0000190F081E02D099480E00895E0917B017A -:1020D000F0917C01309721F00280F381E02D09948A -:1020E0000895E0917B01F0917C01309721F004800C -:1020F000F581E02D099408952091790130917A01BC -:102100008217930771F090937A0180937901E0919F -:102110007B01F0917C01309721F00680F781E02D62 -:1021200009940895209177013091780182179307DF -:1021300071F09093780180937701E0917B01F091A9 -:102140007C01309721F00084F185E02D09940895F9 -:1021500008950C94A8100E942F1C0E947E080E94D3 -:10216000B51C0C9460215F926F927F928F929F9228 -:10217000AF92BF92CF92DF92EF92FF920F931F9395 -:10218000CF93DF9300D000D01F92CDB7DEB70E946F -:10219000C30896E8C92E91E0D92E03E010E0AA24E6 -:1021A000A394B12C502E802F0E943E094C01F601C1 -:1021B000729062906F016826792661147104A1F40F -:1021C0000150110978F78FEF89838A831B820E945F -:1021D000381C8160782F9D838C8349815A816B8163 -:1021E0008D810E94631138C08091DB0181FD0E94C6 -:1021F00047092BE030E07501022E02C0EE0CFF1CF7 -:102200000A94E2F7C70186219721892B09F12983D6 -:102210005A828E209F2091E0892809F490E09B83C8 -:102220000E94381C8160782F9D838C8349815A815C -:102230006B818D810E946311000F111FF801E2581C -:10224000FE4F80819181E826F926F182E08204C068 -:102250002150310980F6B4CF0E94931E10917D0168 -:102260000E945A101817D1F00E945A1080937D01D5 -:102270000F900F900F900F900F90DF91CF911F91C3 -:102280000F91FF90EF90DF90CF90BF90AF909F9015 -:102290008F907F906F905F900C9468080F900F90D4 -:1022A0000F900F900F90DF91CF911F910F91FF90A2 -:1022B000EF90DF90CF90BF90AF909F908F907F90E6 -:1022C0006F905F900895CF93DF93CDB7DEB72B97D4 -:1022D0000FB6F894DEBF0FBECDBF4F835887698716 -:1022E0007A878B87DE01119686E0FD0111928A952F -:1022F000E9F785E0FE01379601900D928A95E1F7A6 -:1023000049815A816B817C818D819E810E94DA177F -:102310002B960FB6F894DEBF0FBECDBFDF91CF91E5 -:102320000895CF93882309F4C2C0C82F823859F486 -:102330000E945A1081FDBBC089E30E94B41A0E941A -:10234000811B89E30CC0833879F40E945A1080FD08 -:10235000AEC083E50E94B41A0E94811B83E50E94EF -:10236000F61ACF910C94811B843859F40E945A10AC -:1023700082FD9DC087E40E94B41A0E94811B87E4FD -:10238000EECF8CEF8C0F813A48F48C2F0E94C8203E -:1023900081118DC08C2F0E94B41AE3CF80E28C0F84 -:1023A000883048F4C77081E001C0880FCA95EAF709 -:1023B0000E943A1BD6CF8BE58C0F833078F4C53A58 -:1023C00029F0C63A31F083E890E005C081E890E05A -:1023D00002C082E890E0CF910C947C1088E58C0FCD -:1023E000833108F064C0C83A39F1C93A41F1CA3AB8 -:1023F00049F1CB3A51F1CC3A59F1CD3A61F1C03BB8 -:1024000069F1CE3A71F1CF3A79F1C13B81F1C23B2A -:1024100089F1C33B91F1C43B99F1C53BA1F1C63BA6 -:10242000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B06 -:10243000C9F180E090E038C082EE90E035C089EECE -:1024400090E032C08AEE90E02FC085EB90E02CC087 -:1024500086EB90E029C087EB90E026C08CEC90E002 -:1024600023C08DEC90E020C083E891E01DC08AE895 -:1024700091E01AC082E991E017C084E991E014C0AC -:1024800081E292E011C083E292E00EC084E292E029 -:102490000BC085E292E008C086E292E005C087E2C8 -:1024A00092E002C08AE292E0CF910C949210CF9118 -:1024B0000895882309F44BC0823859F40E945A10B9 -:1024C00081FF45C089E30E94B41A0E94811B89E301 -:1024D0000CC0833871F40E945A1080FF38C083E525 -:1024E0000E94B41A0E94811B83E50E94F61A0C9484 -:1024F000811B843859F40E945A1082FF28C087E457 -:102500000E94B41A0E94811B87E4EFCF9CEF980FC2 -:10251000913A58F390E2980F983050F4877091E018 -:1025200001C0990F8A95EAF7892F0E94401BDFCFDF -:102530009BE5980F933020F480E090E00C947C10A1 -:10254000885A833120F480E090E00C949210089532 -:10255000882321F00E943A1B0C94811B0895882344 -:1025600021F00E94401B0C94811B08957F928F9252 -:102570009F92AF92BF92CF92DF92EF92FF920F9312 -:102580001F93CF93DF931F92CDB7DEB77C01C62E8A -:10259000772EFC01058102950F70128111110E94A6 -:1025A000571B0E94AD1A882379F0112369F080E24D -:1025B0008C0D883048F082E00E94961A0E94AD1A75 -:1025C00091E0D82ED92601C0D12CE72DE295EF70ED -:1025D000F0E0EF58FF4F0C943123872D807F072DBB -:1025E0000F70882311F00295007F112389F00023DA -:1025F00009F499C180E28C0D883020F4802F0E946C -:102600003A1B03C0802F0E944A1B0E94811B8BC172 -:102610008C2D0E945912002309F4C3C180E28C0D55 -:10262000883020F4802F0E94401B03C0802F0E941E -:10263000501B0E94811BB5C1872D807F972D9F70F5 -:10264000803211F4892F03C0892F8295807FCC209E -:1026500021F0F1E0CF16A1F01DC0112339F00023C5 -:1026600019F1013009F50E946A1B9BC1002319F082 -:10267000013009F496C189830E946D1B898110C1C4 -:10268000112321F0063008F08CC10EC0053008F08F -:1026900088C106C1112359F0002331F0F70195815B -:1026A00090FF41C19F7095830E94A8127AC10023B8 -:1026B00009F4F6C03EC1872D86958695837090E01B -:1026C000009719F0019761F06CC1112321F08C2D56 -:1026D000972D937002C080E090E00E947C1061C151 -:1026E000112321F08C2D972D937002C080E090E093 -:1026F0000E94921056C18C2D112319F00E949B1D2F -:1027000002C00E94031E0E94881E4BC1872D837049 -:1027100009F052C0111145C18C2D829586958770A4 -:10272000880F880F9C2D9F70892E912CA12CB12C85 -:10273000082E04C0880C991CAA1CBB1C0A94D2F752 -:10274000C4FE14C00FE010E020E030E0B901A801A1 -:1027500004C0440F551F661F771F8A95D2F7CB011F -:10276000BA01609570958095909503C060E070E027 -:10277000CB01272D26952695237030E02230310598 -:1027800069F02330310589F0682979298A299B2944 -:102790002130310571F00E94221903C1682979297D -:1027A0008A299B290E943E19FCC00E942219C5015A -:1027B000B4010E940619F5C0112319F0872D81700C -:1027C00001C08695882309F4ECC08C2D82958695EE -:1027D0008770880F880F9C2D9F70892E912CA12CBB -:1027E000B12C082E04C0880C991CAA1CBB1C0A948E -:1027F000D2F7C4FE14C00FE010E020E030E0B901D1 -:10280000A80104C0440F551F661F771F8A95D2F791 -:10281000CB01BA01609570958095909503C060E0FA -:1028200070E0CB01272D269526952370422F50E08E -:102830004230510569F04330510589F06829792902 -:102840008A299B294130510571F00E94FC19A9C0C9 -:10285000682979298A299B290E94181AA2C00E94F6 -:10286000FC19C501B4010E94E0199BC08C2D90E0B9 -:10287000FC01E05EF109E531F10508F050C0EF57C9 -:10288000FF4F0C9431230C2D0F70872D8F71112366 -:1028900021F00E947919802F07CF0E949A19802F6A -:1028A0000E94AF127EC0112341F0053008F079C0BC -:1028B000872D8F710E94BF1974C0063008F071C057 -:1028C000F7CF112339F0872D8F710E94791969C0D4 -:1028D0001123C9F3872D8F710E949A1962C01123A9 -:1028E00029F0872D8F710E9464195BC00E945A19CC -:1028F00058C0112351F0172D1F71812F0E94791993 -:1029000063E0812F0E948D1A4CC081E00E94961ACC -:10291000023008F446C082E00E94961A42C0112399 -:1029200031F0002381F28C2D0E9491113AC00023D6 -:1029300089F28C2D0E94591234C0472D4F706C2D96 -:10294000C7010E94F0030E947E182BC0111129C0FC -:10295000472D4F7050E042305105B9F04CF441150D -:10296000510581F041305105E1F40E94882119C0E0 -:102970004330510569F04430510599F48C2D0E9483 -:10298000DA210FC00E9471210CC00E94A42109C04D -:102990000E94B72106C0472D4F706C2DC7010E94C1 -:1029A0000D05DD20F9F00E94891A80FD1BC0F7019A -:1029B00012820E94831A0E947919C7010E94011590 -:1029C0000E94831A0F90DF91CF911F910F91FF907A -:1029D000EF90DF90CF90BF90AF909F908F907F90BF -:1029E0000C949A190F90DF91CF911F910F91FF9046 -:1029F000EF90DF90CF90BF90AF909F908F907F909F -:102A000008950F931F93CF93DF93EC0188819981F1 -:102A10002B813C81232BB9F09F3F11F48F3F99F01C -:102A2000CE010E946104882371F0688179818A81D6 -:102A30000E947F1A8C010E94341A0E94FB18B80170 -:102A4000CE010E94B612DF91CF911F910F91089590 -:102A50000E94571B0E94671B0E942C1B0E94811B17 -:102A60000E94391F0E94881E80E090E00E947C1026 -:102A700080E090E00C9492100E94471B0C94281563 -:102A80000E94741A292F22952F7030E02C303105C6 -:102A90004CF42A3031056CF42250310922303105D2 -:102AA000A8F407C02C30310569F02F30310551F002 -:102AB0000DC0803F69F018F4803E40F409C0843FA7 -:102AC00029F406C093FB882780F9089580E00895D3 -:102AD00081E00895CF93DF9300D000D01F92CDB74F -:102AE000DEB70F900F900F900F900F90DF91CF9166 -:102AF0000895CF93DF9300D000D000D0CDB7DEB7DC -:102B000026960FB6F894DEBF0FBECDBFDF91CF91F2 -:102B100008951F93CF93DF93C091860116E08091B3 -:102B20008701C81799F0D0E01C9FF0011D9FF00DA0 -:102B30001124E857FE4F4081518162817381848165 -:102B400095810E9479152196C770E9CFDF91CF91C9 -:102B50001F9108954091B8015091B9016091BA0157 -:102B60007091BB018091BC019091BD010C947915CD -:102B70008091BD0182958F7009F054C08091BA0197 -:102B8000882309F44FC080918601A091870160914C -:102B9000B8017091B9014091BB015091BC01B6E000 -:102BA0008A1709F43FC090E041155105C1F17F3FFC -:102BB00011F46F3FA1F1B89FF001B99FF00D1124FE -:102BC000E857FE4F218172132AC02081621327C06B -:102BD0002281211124C0238134812417350710F468 -:102BE00021503109241B350B283C3105C0F42091BC -:102BF000BD012F7020612093BD0126E0289FF001C8 -:102C0000299FF00D1124E357FE4F80818F70806162 -:102C1000808388EB91E00E9401150C948915019640 -:102C20008770BECF0895CF92DF92EF92FF920F93FD -:102C30001F93CF93DF93CDB7DEB762970FB6F894AB -:102C4000DEBF0FBECDBF8C0185E0F801DE011D9611 -:102C500001900D928A95E1F7D8014C9111965C9103 -:102C6000119712966C9112971396CD90DC90149751 -:102C70003091B8017091B9018091BB019091BC0174 -:102C8000009709F46BC17F3F19F43F3F09F466C117 -:102C9000E090BA01EE2009F4C0C02091BD01C81631 -:102CA000D90628F0F601E81BF90BCF0104C0809586 -:102CB00090958C0D9D1DFF24F394883C910578F030 -:102CC000F12C207F09F0C6C07C2DD98AC88A898959 -:102CD0000E946A1588EB91E00E940115B1C0822F15 -:102CE000807F09F046C0751314C0341312C06111FF -:102CF00010C02F7020612093BD010E94AA1588EB9F -:102D000091E00E9401158091BD01D80115968C9328 -:102D10002EC0CD2819F15F3F11F44F3FF9F0F62E88 -:102D200061111CC0809186012091870136E08217D5 -:102D300009F45AC090E0389FF001399FF00D11243A -:102D4000E857FE4F7181571306C07081471303C0C7 -:102D50007281711103C001968770E9CFF62E662348 -:102D600009F418C18091BD0181608093BD01F12CEF -:102D700011C1751308C0341306C0611104C08091DD -:102D8000BD01D801C3C04D875E878D859E856A8B46 -:102D90000E9440156A898823E1F16623D1F12091D0 -:102DA000BD01822F82958F7090E0029774F0809120 -:102DB000B8019091B90198878F831986DB86CA86FE -:102DC0002C87CE0107960E94011586E0F801A8EB3A -:102DD000B1E001900D928A95E1F70E94B8150E942A -:102DE000AA15FF24F394D6C04D875E878D859E85F6 -:102DF0000E94741A292F22952F7030E0223031055D -:102E00000CF0BCC09F7009F0B6C0805E883008F43A -:102E1000C1C0C8010E940115E4CFC816D90608F444 -:102E200053C0F601E81BF90BCF01883C910508F46B -:102E300050C0F12C7C2DD98AC88A89890E946A15D4 -:102E4000E8EBF1E086E0DF011D928A95E9F70E9448 -:102E5000AA15A0C0751314C0341312C0611110C09C -:102E60008091BD01F8018583C8010E94011586E0AB -:102E7000E8EBF1E0DF011D928A95E9F7FE2C8AC0AC -:102E80004D875E878D859E856A8B0E9440156A8975 -:102E9000882309F4BECF662309F4BBCF2091BD017E -:102EA000822F82958F7090E002970CF48ECF8091E4 -:102EB000B8019091B9019A8389831B82DD82CC820B -:102EC0002E83CE0101967FCF809590958C0D9D1D10 -:102ED000ACCFF62E662309F49CCF75132EC03413A5 -:102EE0002CC02091BD0120FD1FC0822F82958F70C4 -:102EF000D9F0D80115962C9315978F3049F08F5F34 -:102F0000982F9295907F822F8F70892B15968C9396 -:102F1000C8010E94011586E0F801A8EBB1E001901C -:102F20000D928A95E1F793CF86E0F801A8EBB1E026 -:102F300001900D928A95E1F72DC04D875E878D85B2 -:102F40009E850E944015811140CF8091BD01816016 -:102F50008093BD01C8010E9401151CC0662309F4BD -:102F600058CF4D875E878D859E850E9440158823AA -:102F700009F44FCF2ACF811148CF0CC0243031053E -:102F80000CF047CF9F7009F440CFF8019581907FF6 -:102F900009F03BCF8F2D62960FB6F894DEBF0FBEBF -:102FA000CDBFDF91CF911F910F91FF90EF90DF90F8 -:102FB000CF9008951F93CF93DF93CDB7DEB72C97B3 -:102FC0000FB6F894DEBF0FBECDBF4F835887698719 -:102FD0007A878B879C87CE0107960E9413168823D9 -:102FE00069F08F8198852A853B85232BF1F19F3FDE -:102FF00009F063C08F3F09F060C037C086E0FE0172 -:103000003796DE01119601900D928A95E1F76F8156 -:103010007885EA85FB85309741F17F3F11F46F3F5A -:1030200021F12091870130E0C9010196877099272D -:103030004091860150E08417950709F447C06983E1 -:103040007A83FD83EC8396E0929FD001939FB00D2D -:103050001124A857BE4FFE01319601900D929A950A -:10306000E1F7809387010E94891516E0809186011F -:10307000909187018917C1F1189FC00111248857C9 -:103080009E4F0E941316882379F1E09186011E9FBE -:10309000F0011124E857FE4F408151816281738114 -:1030A000848195810E9479158091860190E0019636 -:1030B0008770992780938601D9CF4F81588569857C -:1030C0007A858B859C850E947915CFCF0E943C150F -:1030D0001092870110928601E8EBF1E086E0DF01B3 -:1030E0001D928A95E9F7C1CF2C960FB6F894DEBFF2 -:1030F0000FBECDBFDF91CF911F910895EF92FF9248 -:103100000F931F93CF93DF938C01009709F46CC04A -:10311000F12CEE24E394E8012196F80184918437A0 -:1031200040F4843008F051C0813081F0823019F1D0 -:103130005BC0853709F444C0A8F19CE7980F90372D -:1031400008F052C08F770E94591241C00E5F1F4F86 -:10315000FE01C49180E28C0F883048F4C7708E2D38 -:1031600001C0880FCA95EAF70E945A1B14C08C2F21 -:103170000E9491112DC00E5F1F4FFE01C49180E28D -:103180008C0F883058F4C7708E2D01C0880FCA95F7 -:10319000EAF70E94601B0E94811B1AC08C2F0E94BC -:1031A000591216C00E5F1F4FFE01C491CC2381F04F -:1031B0008FE99FE00197F1F700C00000C150F6CF02 -:1031C0000E5F1F4FFE01F49003C00E9491118E010B -:1031D0008F2D882309F49FCFEFE9FFE03197F1F7B6 -:1031E00000C000008150F5CFDF91CF911F910F916A -:1031F000FF90EF90089508956093C2017093C3010A -:103200008093C4019093C5010C9428150F931F93CC -:103210000091C2011091C3012091C4013091C501F8 -:10322000DC01CB01802B912BA22BB32B8093C2010D -:103230009093C301A093C401B093C5011F910F9156 -:103240000C9428150F931F930091C2011091C30194 -:103250002091C4013091C501DC01CB018023912371 -:10326000A223B3238093C2019093C301A093C4010E -:10327000B093C5011F910F910C9428150F931F93C4 -:103280000091C2011091C3012091C4013091C50188 -:10329000DC01CB0180279127A227B3278093C201AD -:1032A0009093C301A093C401B093C5011F910F91E6 -:1032B0000C9428151092BE011092BF011092C0010B -:1032C0001092C1010C94281541E050E060E070E0DC -:1032D00004C0440F551F661F771F8A95D2F740938D -:1032E000BE015093BF016093C0017093C1010C9463 -:1032F000281541E050E060E070E004C0440F551F25 -:10330000661F771F8A95D2F78091BE019091BF0109 -:10331000A091C001B091C101482B592B6A2B7B2B86 -:103320004093BE015093BF016093C0017093C101EF -:103330000C94281541E050E060E070E004C0440FB8 -:10334000551F661F771F8A95D2F740955095609557 -:1033500070958091BE019091BF01A091C001B09184 -:10336000C101482359236A237B234093BE01509314 -:10337000BF016093C0017093C1010C94281541E016 -:1033800050E060E070E004C0440F551F661F771FD7 -:103390008A95D2F78091BE019091BF01A091C001A2 -:1033A000B091C101482759276A277B274093BE0166 -:1033B0005093BF016093C0017093C1010C94281514 -:1033C0000F931F930091BE011091BF012091C00186 -:1033D0003091C101DC01CB01802B912BA22BB32BAF -:1033E0008093BE019093BF01A093C001B093C1012F -:1033F0001F910F910C9428150F931F930091BE01FC -:103400001091BF012091C0013091C101DC01CB01BD -:1034100080239123A223B3238093BE019093BF0105 -:10342000A093C001B093C1011F910F910C94281576 -:103430000F931F930091BE011091BF012091C00115 -:103440003091C101DC01CB0180279127A227B3274E -:103450008093BE019093BF01A093C001B093C101BE -:103460001F910F910C9428150895CF92DF92EF923F -:10347000FF920F931F93CF93DF938C01C090C201F3 -:10348000D090C301E090C401F090C5018091BE01CD -:103490009091BF01A091C001B091C101C82AD92A61 -:1034A000EA2AFB2ACFE1D0E0D701C6010C2E04C0E6 -:1034B000B695A795979587950A94D2F780FF06C091 -:1034C000B8018C2F0E948E07019721F4219760F795 -:1034D00080E001C08C2FDF91CF911F910F91FF9061 -:1034E000EF90DF90CF900895CF93DF93EC010E948F -:1034F000351ABE010E948E07DF91CF910895CB014E -:103500000E94741A08958091C601859585958595C8 -:1035100008958091C6018770089598E0899F900171 -:103520001124262B2093C6010C9479192091C601F1 -:10353000809582238093C601982F977069F430E0BC -:10354000482F552747FD50952417350729F08595B5 -:10355000859585950C949A1908959091C601977058 -:1035600081E009F480E0089590910B01992321F006 -:1035700090910C01911109C020910D0130910E0123 -:10358000F90132969FEF40E01FC0982F96959695CF -:1035900096959F3050F5E0910D01F0910E01E90FE5 -:1035A000F11D877021E030E0A90102C0440F551FD2 -:1035B0008A95E2F7CA019181892B818308959F3F03 -:1035C00039F04F5F4E3041F051915813F8CF0DC094 -:1035D0005111F7CF942FF5CF9F3F39F0F901E90F43 -:1035E000F11D97FDFA9582830895089590910B013E -:1035F000992321F090910C01911109C020910D01A6 -:1036000030910E01F9013296205F3F4F1FC0982F75 -:103610009695969596959F30F0F4E0910D01F09176 -:103620000E01E90FF11D877021E030E0A90102C011 -:10363000440F551F8A95E2F7CA018095918189232D -:10364000818308953196E217F30729F0908198134A -:10365000F9CF1082F7CF089581E090E0E0910D015D -:10366000F0910E01E80FF91F10820196803191054B -:10367000A9F708959091DA01892B8093DA010895D2 -:1036800080959091DA0189238093DA010895109250 -:10369000DA0108959091D901892B8093D901089579 -:1036A00080959091D90189238093D9010895109232 -:1036B000D90108959091D801892B8093D80108955C -:1036C00080959091D80189238093D8010895109214 -:1036D000D80108958093C70108951092C7010895F5 -:1036E00080910D0190910E01FC0131969C01205FAB -:1036F0003F4F80E0919191118F5FE217F307D1F76F -:103700000895E0910D01F0910E018091DA0180831E -:10371000E0910D01F0910E0190818091D901892BEA -:103720008083E0910D01F0910E0190818091D8018C -:10373000892B80838091C701882361F0E0910D017E -:10374000F0910E019081892B80830E94701B811162 -:103750001092C70180910D0190910E010C9466109A -:1037600020E0009739F0AC014150510984239523A2 -:103770002F5FF7CF822F08958091F001843039F1C7 -:103780001092DC0120E488E190E00FB6F894A8954F -:10379000809360000FBE2093600080E00E944B0386 -:1037A00080E00E94680883B7817F846083BF83B70D -:1037B000816083BF7894889583B78E7F83BF88E1CB -:1037C0000FB6F89480936000109260000FBE0895C9 -:1037D0000895089580E00E944B030E94E81B0E9418 -:1037E000C3080E94E91B0E94480991E0811101C0B1 -:1037F00090E0892F08950E943C1580E00E944B03C1 -:103800000E9460210E945A100C9468081F920F9227 -:103810000FB60F9211248F939F93AF93BF93809114 -:10382000DC01811113C08091DD019091DE01A09136 -:10383000DF01B091E0014196A11DB11D8093DD0132 -:103840009093DE01A093DF01B093E001BF91AF91AF -:103850009F918F910F900FBE0F901F90189582E04F -:1038600084BD93E095BD9AEF97BD80936E00089557 -:103870002FB7F8948091DD019091DE01A091DF01D6 -:10388000B091E0012FBF0895CF92DF92EF92FF92A7 -:103890000F931F932FB7F8944091DD015091DE01F3 -:1038A0006091DF017091E0012FBF6A017B01EE247E -:1038B000FF248C0120E030E0C016D106E206F306BA -:1038C00010F4415051099A01281B390BC9011F916D -:1038D0000F91FF90EF90DF90CF9008951F920F927D -:1038E0000FB60F9211248F939F93AF93BF93809144 -:1038F000DD019091DE01A091DF01B091E001019620 -:10390000A11DB11D8093DD019093DE01A093DF0125 -:10391000B093E001BF91AF919F918F910F900FBE37 -:103920000F901F9018950E94570DF8942FEF87EA7B -:1039300091E6215080409040E1F700C0000087E010 -:1039400090EBDC018093FB019093FC01A093FD01BF -:10395000B093FE019CE088E10FB6F894A89580939F -:1039600060000FBE90936000FFCF0E94EF1C81119A -:1039700002C00E94D01C0E94FA1C8093DB010E94AE -:10398000071D8093F90187FB882780F980930C013C -:103990000E94FE1C682F70E080E090E00C94FC1800 -:1039A0006DEE7EEF80E090E00E946B2360E082E0AD -:1039B00090E00E94592360E083E090E00E94592348 -:1039C00060E084E090E00E94592360E085E090E0B0 -:1039D0000E94592360E086E090E00C94592380E037 -:1039E00090E00E94532321E08D3E9E4F09F020E09D -:1039F000822F089582E090E00C944B2383E090E0C6 -:103A00000C944B23682F83E090E00C94592384E0BE -:103A100090E00C944B23682F84E090E00C945923A1 -:103A200086E090E00C944B23682F86E090E00C94A5 -:103A300059238091E30180FF0BC06091120185E062 -:103A4000689FB001112475956795759567952BC092 -:103A500081FF09C06091120185E0689FB0011124C7 -:103A60007595679520C082FF07C06091120185E0BF -:103A7000689FB001112417C09091E4019923D1F0FF -:103A800060911101961788F72091120185E0289F17 -:103A900090011124929FA001939F500D112470E07A -:103AA000CA010E941D236038710540F4611571053B -:103AB00039F002C065E070E0862F08958FE7089521 -:103AC00081E008958091E30180FF08C060911001BA -:103AD00070E0759567957595679521C081FF06C063 -:103AE0006091100170E07595679519C082FF04C060 -:103AF0006091100170E010C09091E4019923C1F031 -:103B000060910F019617A0F780911001899FC00165 -:103B1000112470E00E941D236038710528F461159E -:103B2000710521F0862F08958FE7089581E00895AB -:103B300061E070E0F4CF803F21F40E94191D81956F -:103B400004C0813F29F40E94191D8093E701089564 -:103B5000823F21F40E94191D819504C0833F29F4FE -:103B60000E94191D8093E6010895893F19F40E946F -:103B7000621D05C08A3F31F40E94621D81958093C9 -:103B8000E80108958B3F21F40E94621D819504C0D5 -:103B90008C3F29F40E94621D8093E9010895843FBF -:103BA00021F48091E501816017C0853F21F4809167 -:103BB000E501826011C0863F21F48091E5018460B7 -:103BC0000BC0873F21F48091E501886005C0883FE4 -:103BD00031F48091E50180618093E50108958D3F86 -:103BE00021F48091E30181600BC08E3F21F480912C -:103BF000E301826005C08F3F29F48091E301846076 -:103C00008093E3010895803F39F48091E70187FFB5 -:103C10006CC01092E70169C0813F29F48091E701EF -:103C20001816BCF362C09091E601823F29F497FF19 -:103C30005CC01092E60159C0833F19F41916CCF309 -:103C400054C0893F41F48091E80118160CF04DC032 -:103C50001092E8014AC08A3F29F48091E80187FF69 -:103C600044C0F6CF8B3F39F48091E90187FF3DC016 -:103C70001092E9013AC08C3F29F48091E9011816AD -:103C8000BCF333C0843F21F48091E5018E7F17C0DF -:103C9000853F21F48091E5018D7F11C0863F21F49D -:103CA0008091E5018B7F0BC0873F21F48091E50176 -:103CB000877F05C0883F31F48091E5018F7E809336 -:103CC000E50113C08D3F21F48091E3018E7F0BC08D -:103CD0008E3F21F48091E3018D7F05C08F3F29F451 -:103CE0008091E3018B7F8093E3018091E601811154 -:103CF0000EC08091E70181110AC08091E801811115 -:103D000006C08091E901811102C01092E40108957A -:103D100085EE91E00E9471100E94381C9093E201A0 -:103D20008093E10108951F93CF93DF938091E10188 -:103D30009091E2010E94441CAC019091E40199230E -:103D400021F02091130130E006C0209114018AE097 -:103D5000289F900111244217530708F486C08091D0 -:103D6000E601C091E701D091E8011091E9018111CC -:103D700007C0C11176C0D11174C0111172C075C0D5 -:103D80009F3F19F09F5F9093E401181624F40E945E -:103D9000191D8093E6018091E60187FF05C00E940E -:103DA000191D81958093E6011C1624F40E94191DAB -:103DB0008093E7018091E70187FF05C00E94191DEC -:103DC00081958093E7016091E601662339F1C09106 -:103DD000E701CC2319F1772767FD7095872F972F7F -:103DE0000E942E2223E333E343E35FE30E94922207 -:103DF0000E94FB216093E6016C2F772767FD709589 -:103E0000872F972F0E942E2223E333E343E35FE3C0 -:103E10000E9492220E94FB216093E7011D1624F468 -:103E20000E94621D8093E8018091E80187FF05C030 -:103E30000E94621D81958093E801111624F40E946E -:103E4000621D8093E9018091E90187FF05C00E940E -:103E5000621D81958093E901DF91CF911F910C94B0 -:103E6000881E9F3F09F08ECF96CFDF91CF911F9193 -:103E70000895E5EEF1E085E0DF011D928A95E9F70E -:103E80001092E4011092E3010895833081F128F447 -:103E9000813059F08230D1F00895853009F449C05D -:103EA000B8F1863009F456C0089580911401262F88 -:103EB00030E0280F311D2F3F310524F4680F609347 -:103EC000140108958FEF80931401089580911301D8 -:103ED000262F30E0280F311D2F3F310524F4680FC5 -:103EE0006093130108958FEF8093130108958091DB -:103EF0001201262F30E0280F311D2F3F310524F409 -:103F0000680F6093120108958FEF80931201089556 -:103F100080911101262F30E0280F311D2F3F3105F0 -:103F200024F4680F6093110108958FEF80931101BD -:103F3000089580911001262F30E0280F311D2F3F6A -:103F4000310524F4680F6093100108958FEF80937A -:103F50001001089580910F01262F30E0280F311DA8 -:103F60002F3F310524F4680F60930F0108958FEF00 -:103F700080930F010895833011F128F4813049F0C6 -:103F8000823091F00895853081F120F18630C1F1C1 -:103F9000089580911401681720F4861B8093140102 -:103FA000089510921401089580911301681720F468 -:103FB000861B809313010895109213010895809138 -:103FC0001201681720F4861B809312010895109245 -:103FD0001201089580911101681720F4861B8093C7 -:103FE0001101089510921101089580911001681730 -:103FF00020F4861B809310010895109210010895FB -:1040000080910F01681720F4861B80930F0108959B -:1040100010920F0108950F931F93873208F048C044 -:104020008E3108F092C0803109F47CC008F58730E9 -:1040300009F466C068F4863009F0A2C08091DB0103 -:10404000817F8E7F8093DB0181E08093EB0199C0BB -:104050008B3009F48EC08E3009F092C08091DB0164 -:1040600082FB222720F991E0922790FB82F963C01E -:10407000863109F47EC060F4813109F081C00E946C -:104080003C1590910C0181E0892780930C0171C04F -:10409000893109F46EC08B3109F072C08091DB0167 -:1040A00081FB222720F991E0922790FB81F943C000 -:1040B000883309F45EC050F4893209F45CC085335A -:1040C00009F459C0873209F456C05AC0833409F440 -:1040D00052C028F48A3308F453C0895337C0883457 -:1040E00009F04EC00E943C150FEF13ED20E3015084 -:1040F00010402040E1F700C000000E94931C39C02E -:104100009091DB01892F8095817080FB90F929F0D7 -:10411000966098609093DB0134C0997F977F90936D -:10412000DB0127C08091DB0183FB222720F991E08E -:10413000922790FB83F98093DB019923D1F0809142 -:10414000DB0181608093DB0114C08D5141E050E0C0 -:1041500060E070E08A019B0104C0000F111F221F64 -:10416000331F8A95D2F7C901B8010E94FC180E943A -:104170003C1581E006C061E070E080E090E0F5CFA2 -:1041800080E01F910F91089580E0089580E00895E8 -:10419000CF93C82F8091EB01813069F018F0823005 -:1041A000C9F184C0E0910D01F0910E01808182324D -:1041B00009F07EC007C0E0910D01F0910E018081F1 -:1041C000823261F48C2F0E94C420811104C08C2F94 -:1041D0000E940B201DC081E090E01AC08C2F0E942D -:1041E000C620811114C0C43179F048F4CB3079F085 -:1041F000C03109F061C082E08093EB0108C0C93290 -:1042000019F0C83321F058C01092EB0155C081E07D -:10421000817054C0C93291F120F5C43179F1B0F404 -:10422000C73009F047C08EE18093140182E3809388 -:1042300013018AE08093120184E18093110188E0E8 -:104240008093100188E280930F0134C0CE51C630B4 -:1042500088F5EC2FF0E0E75CFE4F80818093EA0167 -:1042600029C0CE34E9F020F4CB3421F56AE013C044 -:10427000C13579F0C235F1F461E00DC08091EA01F9 -:10428000882319F01092EA0115C081E08093EB01B8 -:1042900015C061E006C08091EA010E94451F0AC076 -:1042A0006AE08091EA010E94BB1F04C01092EB01FA -:1042B00080E004C081E002C080E0AACFCF910895E1 -:1042C0000E94EF1C811102C00E94D01C0E94101D90 -:1042D0008093FA0180FF02C0869501C080E00C94B3 -:1042E0004B038091FA01982F9695292F30E02330C7 -:1042F00031054CF49F5F990F8170892B8160809309 -:10430000FA010E94141D8091FA0186950C944B03CA -:104310008091FA01982F969591F09158990F81709C -:10432000892B8093FA018E7F91E009F490E08091CF -:10433000FA0190FB80F98093FA010E94141D80918C -:10434000FA0186950C944B038091FA01982F909571 -:1043500090FB80F98093FA010E94141D8091FA016C -:1043600080FF02C0869501C080E00C944B039091C1 -:10437000FA01892F86958F5F8F779170843028F4AA -:10438000880F892B8093FA0102C09093FA018091E3 -:10439000FA018E7F91E009F490E08091FA0190FBA0 -:1043A00080F98093FA010E94141D8091FA0186958C -:1043B0000C944B032091FA01922F96958927982F00 -:1043C000990F822F8170892B8093FA018E7F91E063 -:1043D00009F490E08091FA0190FB80F98093FA0152 -:1043E0000E94141D8091FA0186950C944B038091D4 -:1043F000FA018695089504D06894B1118DC008958E -:1044000070D088F09F5790F0B92F9927B751A0F03E -:10441000D1F0660F771F881F991F1AF0BA95C9F758 -:1044200012C0B13081F077D0B1E0089574C0672F29 -:10443000782F8827B85F39F0B93FCCF38695779508 -:104440006795B395D9F73EF49095809570956195F1 -:104450007F4F8F4F9F4F0895E89409C097FB3EF41C -:1044600090958095709561957F4F8F4F9F4F9923C1 -:10447000A9F0F92F96E9BB279395F695879577953F -:104480006795B795F111F8CFFAF4BB0F11F460FFFF -:104490001BC06F5F7F4F8F4F9F4F16C0882311F057 -:1044A00096E911C0772321F09EE8872F762F05C06B -:1044B000662371F096E8862F70E060E02AF09A9506 -:1044C000660F771F881FDAF7880F9695879597F9FB -:1044D000089557FD9058440F551F59F05F3F71F0F4 -:1044E0004795880F97FB991F61F09F3F79F087955B -:1044F0000895121613061406551FF2CF4695F1DFE4 -:1045000008C0161617061806991FF1CF8695710573 -:10451000610508940895E894BB2766277727CB01A7 -:1045200097F908950BD078C069D028F06ED018F0B4 -:10453000952309F05AC05FC01124EECFCADFA0F363 -:10454000959FD1F3950F50E0551F629FF001729F28 -:10455000BB27F00DB11D639FAA27F00DB11DAA1F47 -:10456000649F6627B00DA11D661F829F2227B00D94 -:10457000A11D621F739FB00DA11D621F839FA00D1F -:10458000611D221F749F3327A00D611D231F849F6F -:10459000600D211D822F762F6A2F11249F575040C6 -:1045A0008AF0E1F088234AF0EE0FFF1FBB1F661F61 -:1045B000771F881F91505040A9F79E3F510570F01A -:1045C00014C0AACF5F3FECF3983EDCF38695779555 -:1045D0006795B795F795E7959F5FC1F7FE2B880F15 -:1045E000911D9695879597F9089597F99F6780E8AB -:1045F00070E060E008959FEF80EC089500240A9435 -:104600001616170618060906089500240A941216AD -:104610001306140605060895092E0394000C11F4E0 -:10462000882352F0BB0F40F4BF2B11F460FF04C08D -:104630006F5F7F4F8F4F9F4F089597FB072E16F4A4 -:10464000009407D077FD09D00E94372307FC05D0DE -:104650003EF4909581959F4F0895709561957F4F99 -:104660000895EE0FFF1F0590F491E02D0994AA1B09 -:10467000BB1B51E107C0AA1FBB1FA617B70710F04D -:10468000A61BB70B881F991F5A95A9F7809590957F -:10469000BC01CD010895F999FECF92BD81BDF89A74 -:1046A000992780B50895A8E1B0E042E050E00C946D -:1046B0007323262FF999FECF92BD81BDF89A0197F9 -:1046C00000B4021639F01FBA20BD0FB6F894FA9A5A -:1046D000F99A0FBE08950196272F0E945A230C9431 -:1046E0005923DC01CB01FC01F999FECF06C0F2BDD4 -:1046F000E1BDF89A319600B40D9241505040B8F7A0 -:064700000895F894FFCFBC -:10470600FF5E09EC09C909950961090101C801287B -:1047160008140A321E1F0F03764F5F6F7F496943E5 -:1047260079095953633F4D3639A30556052005E7E8 -:10473600047A049304AC04C50401020304050607C5 -:04474600080900005E -:00000001FF diff --git a/keyboard/planck/keymaps/pvc/compiled.hex b/keyboard/planck/keymaps/pvc/compiled.hex deleted file mode 100644 index 9e6f0ffe20..0000000000 --- a/keyboard/planck/keymaps/pvc/compiled.hex +++ /dev/null @@ -1,1635 +0,0 @@ -:100000000C9467030C94AB030C94AB030C94AB03FC -:100010000C94AB030C94AB030C94AB030C94AB03A8 -:100020000C94AB030C94AB030C94BE170C94901877 -:100030000C94F2250C94AB030C94AB030C94AB031F -:100040000C94AB030C940B040C94AB030C94AB0317 -:100050000C94AB030C945A260C94AB030C94AB0396 -:100060000C94AB030C94AB030C94AB030C94AB0358 -:100070000C94AB030C94AB030C94AB030C94AB0348 -:100080000C947A0D0C94AB030C94AB030C94AB035F -:100090000C94AB030C94AB030C94AB030C94AB0328 -:1000A0000C94AB030C94AB030C94AB037504870462 -:1000B0009B04B404AD04C404D304DB04E304ED04E2 -:1000C000F504FD0404050B051705170517051705AD -:1000D00017051705CF04FD181F190D1A1F190D1A42 -:1000E000641987190D1ADC19EF19D91CD91C081DC0 -:1000F000081D471D671DBD1EBD1E721DBD1E221E93 -:10010000221E891E921EBD1EB71E2F1E2F1E2F1EC1 -:100110002F1E2F1E2F1E2F1E2F1E2F1E2F1E2F1E77 -:100120002F1E2F1E2F1E2F1E2F1E3F1E4D1E541E14 -:100130005B1E651E07634236B79BD8A71A396856FF -:1001400018AEBAAB558C1D3CB7CC5763BD6DEDFDF9 -:10015000753EF6177231BF000000803F08000000B6 -:10016000BE922449123EABAAAA2ABECDCCCC4C3EAC -:1001700000000080BEABAAAAAA3E00000000BF009B -:100180000000803F0000000000084178D3BB438797 -:10019000D1133D190E3CC3BD4282AD2B3E68EC82AB -:1001A00076BED98FE1A93E4C80EFFFBE01C4FF7F30 -:1001B0003F00000000000000000000000000000000 -:1001C00000010204060A0F17202C3A4A5D71879D30 -:1001D000B3C7DAE9F5FCFFFCF5E9DAC7B39D87712F -:1001E0005D4A3A2C20170F0A0604020100000000A5 -:1001F00000000000000000222B0014001A0008007C -:10020000150017001C0018000C00120013002A0033 -:10021000290004001600070009000A000B000D0069 -:100220000E000F0033003400E1001D001B0006002B -:100230001900050011001000360037005200280098 -:10024000E000E3000530E20003302C002C00043015 -:10025000C000500051004F002B0014001A0009008C -:1002600013000A000D000F0018001C0033002900C5 -:100270002A00040015001600170007000B001100EB -:1002800008000C0012003400E1001D001B000600F5 -:10029000190005000E00100036003700520028003B -:1002A000E000E3000530E20003302C002C000430B5 -:1002B000C000500051004F002B00340036003700C2 -:1002C00013001C0009000A00060015000F002A0098 -:1002D000290004001200080018000C0007000B00A1 -:1002E0001700110016003800E100330014000D0063 -:1002F0000E001B00050010001A0019001D00280048 -:10030000E000E3000530E20003302C002C00043054 -:100310005200510050004F0046003A003B003C00A4 -:100320003D00530054005F006000610056004C0027 -:1003300039003E003F0040004100470055005C008E -:100340005D005E0057004900010042004300440088 -:1003500045004800000059005A005B0058004A0060 -:1003600001000100010001000100620062000100C3 -:10037000E600630058004D00010021022F022F000B -:100380002602220220022702300030021F024B0008 -:1003900001002302250257005600330033022D02CC -:1003A0003400340235004E000100310224021E02E6 -:1003B0003502380031002E003602370238024A007A -:1003C0000100010001000100010001000100010025 -:1003D0000100010001004D0053003A003B003C00C9 -:1003E0003D003E003F004000410042004300480005 -:1003F000390044004500680069006A006B006C0029 -:100400006D006E006F004600470000000000000015 -:100410000000000000000000000000000000A80034 -:1004200001000100010001000100AE00AE0001006A -:10043000A900AA00AC00AB002900FD00FE00FF00EF -:100440000000000000000000000000000000290083 -:10045000000000000000000000000000000000009C -:1004600000000000000000000100F800F700F600A6 -:10047000F50000000000000000000000F900FA0094 -:1004800001000100010001000100F400F40001007E -:10049000F000F100F200F3000100073008300930ED -:1004A0000A300B300C300D30010001002550225075 -:1004B00001000030013002300100010001000100A4 -:1004C0000100010001000100010001000100010024 -:1004D00014300050010006300100010026500100D8 -:1004E0000100010001000100010001000100010004 -:1004F0000100010027500100280354006800650036 -:10050000200050006C0061006E0063006B00200052 -:100510004B006500790062006F00610072006400AA -:1005200000002C034F007200740068006F006C0024 -:1005300069006E0065006100720020004B006500DC -:10054000790062006F0061007200640073000000B7 -:100550000403090409026D00040100A0FA09040063 -:10056000000103010100092111010001223F0007E0 -:1005700005810308000A09040100010301020009C2 -:100580002111010001224D000705820308000A091C -:1005900004020001030000000921110100012236BC -:1005A000000705830308000A090403000103000093 -:1005B0000009211101000122390007058403100000 -:1005C000011201100100000008EDFE606001000151 -:1005D00002000105010906A101050719E029E71537 -:1005E0000025019508750181020508190129059565 -:1005F00005750191029501750391010507190029FF -:100600007715002501957875018102C005010980E3 -:10061000A101850216010026B7001A01002AB700C1 -:10062000751095018100C0050C0901A10185031613 -:100630000100269C021A01002A9C02751095018176 -:1006400000C005010902A1010901A1000509190164 -:100650002905150025019505750181029501750390 -:1006600081010501093009311581257F9502750841 -:10067000810609381581257F950175088106050CCD -:100680000A38021581257F950175088106C0C005CD -:10069000010906A101050719E029E71500250195C3 -:1006A0000875018102950175088101050819012964 -:1006B00005950575019102950175039101050719CD -:1006C0000029FF150025FF950675088100C011243B -:1006D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FD -:1006E00080916F0590917005A0917105B091720590 -:1006F0008730904BA740B04BB9F410926F05109221 -:100700007005109271051092720514BE84B7877F30 -:1007100084BF88E10FB6F894809360001092600067 -:100720000FBEE0E0F8E3099514E0A0E0B1E0EAE0F4 -:10073000F3E602C005900D92A031B107D9F715E09C -:10074000A0E1B4E001C01D92AF36B107E1F70E940D -:1007500004150C9483310C940000089581E00895F1 -:100760000C94AD030C94AE030C941E050E944D2D09 -:1007700023E030E0281B3109220F20931404089550 -:10078000282F2F9880918000211108C0877F8093A7 -:10079000800010928D0010928C001BC088608093A6 -:1007A0008000233019F48FEF9FEF0FC083E090E0BB -:1007B000821B9109880F991F2FEF3FEFA90102C0FB -:1007C000569547958A95E2F7CA0190938D008093DC -:1007D0008C000C94B6030E94B60384E0809313044B -:1007E000109210040895279A2F988FEF9FEF9093FF -:1007F0008700809386008AE08093800089E180935F -:1008000081000E94B62C0C94EB030E94F3036E9AB5 -:10081000769A0C948F051F920F920FB60F921124A7 -:100820002F933F938F939F93EF93FF93E091110446 -:10083000F0911204CF010196909312048093110459 -:100840000090130402C0F695E7950A94E2F7EF735F -:1008500080911004823019F4E03251F404C08130E8 -:1008600039F4EF3329F480916F008D7F80936F000E -:10087000F0E0EA54FE4FE49121E031E0E29FC00154 -:10088000E39F900D11240090140402C09695879563 -:100890000A94E2F790938D0080938C00FF91EF9182 -:1008A0009F918F913F912F910F900FBE0F901F90AE -:1008B0001895CF93DF93EC010E944E28BE0180E093 -:1008C00090E0DF91CF910C94E8220F931F93CF9388 -:1008D000DF93462F50E04531510508F0A8C0EC01E8 -:1008E000FA01EA5AFF4F0C9447318A81882309F4B0 -:1008F0009EC081E090E00E9459040AE017ED23E2D7 -:100900003CE340E064E070E080E792E011C08A815F -:10091000882309F48CC082E090E00E9459040AE028 -:1009200017ED23E23CE340E066E070E080E092E017 -:100930000E94F8107CC08A81882309F478C084E082 -:1009400090E00E9459040AE017ED23E23CE340E006 -:1009500068E070E080E392E0EBCF8A81882311F0B9 -:1009600084E006C084E00DC08A81882349F083E0DA -:100970000E94652347E063E084E00E945D0B57C05E -:1009800083E00E948623F6CF8A81882321F085E0C8 -:100990000E9465234CC085E00E94862348C08A815E -:1009A00081110E940D2D8A81882309F440C086E0C0 -:1009B0000E94AB233CC08A818823C9F160E070E0CB -:1009C00080E09EE307C08A81882389F160E070E0BF -:1009D00080E89EE30E949F112AC08A81882339F112 -:1009E00060E070E080E09FE3F5CF8A818823F9F032 -:1009F00060E070E080E49FE3EDCF8A818823B9F066 -:100A00008AE00E94B11113C08A81882381F08AE0B4 -:100A10000E94AB110CC08A81882349F060E070E02D -:100A200080E09FE30E949F1184E60E94A81180E06D -:100A300090E0DF91CF911F910F9108950F931F9335 -:100A4000CF93C82F8FE39CE90197F1F700C0000016 -:100A500090911504C1FF0BC091FD14C000E010E09F -:100A6000980140E062E070E080E991E03AC091FFD7 -:100A700009C000E010E0980140E062E070E080E82A -:100A800091E02FC0C0FF0BC090FD14C000E010E04B -:100A9000980140E062E070E080E791E022C090FFC2 -:100AA00009C000E010E0980140E062E070E080E6FC -:100AB00091E017C0C2FF0BC092FD15C000E010E02E -:100AC000980140E062E070E080E591E00AC092FFAA -:100AD0000AC000E010E0980140E062E070E080E4CD -:100AE00091E00E94F810C0931504CF911F910F91CF -:100AF00008950F931F938FE39CE90197F1F700C0CE -:100B000000000AE017ED23E23CE340E06FE070E014 -:100B100088ED92E00E94F8101F910F91089580E0F7 -:100B20000E94C2110C9479050F931F930AE017EDF0 -:100B300023E23CE340E069E070E080E992E00E945B -:100B4000F8102FEF87EA91E6215080409040E1F7BE -:100B500000C000001F910F910C94AD0C0F931F93D8 -:100B60000AE017ED23E23CE340E065E070E088ED49 -:100B700091E00E94F8101F910F9108950F931F9319 -:100B80000AE017ED23E23CE340E067E070E080EA32 -:100B900091E00E94F8101F910F9108950F931F93F9 -:100BA0000AE017ED23E23CE340E068E070E080E01B -:100BB00091E00E94F8101F910F91089581E008952F -:100BC0000C94DE0508950C94050480916604882336 -:100BD00009F448C08091220490912304009779F48D -:100BE0000E9424269093230480932204809124045D -:100BF00090E0009771F48091250490E00AC00E9473 -:100C0000302620915003309151032817390740F3C3 -:100C100029C00197880F991F880F991FFC01EA5D71 -:100C2000FB4F60817181828193810E94E00CE09191 -:100C3000240484E0E89FF0011124EA5DFB4F608109 -:100C40007181828193814FE050E00E9498108091E1 -:100C5000240490E001966091250470E00E943331F5 -:100C6000809324040C94B003109268040C94AD0C8F -:100C700081E0809368040C94BE058F929F92AF929E -:100C8000BF92EF92FF920F931F93CF93DF93CDB755 -:100C9000DEB7A3970FB6F894DEBF0FBECDBF7C01C1 -:100CA000FC0100811181C8010E942124B8010E9429 -:100CB0003F088C01B7010E94E005882309F4CCC1EC -:100CC0000032F0E51F0741F4F7018281882309F41F -:100CD00058C00E948F11C0C10132F0E51F0741F4D6 -:100CE000F7018281882309F44CC00E949811B4C195 -:100CF0000232F0E51F0751F4F7018281882309F4DD -:100D000040C00E948B118111F0CFE3CF0332F0E598 -:100D10001F0739F4F7018281882399F10E94380670 -:100D20009BC10432F0E51F0739F4F7018281882363 -:100D300041F10E94340690C10532F0E51F0749F4E5 -:100D4000F70182818823E9F0809168048111F1CF55 -:100D5000E5CF0632F0E51F0739F4F70182818823D9 -:100D600081F00E94C5110AC00732F0E51F0749F45F -:100D7000F7018281882329F00E94D0110E94CE05BC -:100D80006BC180916804811105C0F70182818111D6 -:100D9000CFC018C1003E110579F4F7018281882384 -:100DA00009F44DC00E94AD0C81E08093670410925D -:100DB00066041092250450C1023E110559F4F70152 -:100DC00082818823E1F10E94AD0C10926704109299 -:100DD000660442C1033E110591F4F7018281882324 -:100DE00071F10E94AD0C1092670481E0809366045B -:100DF0001092240410922304109222042DC1023573 -:100E0000110559F4F7018281882309F425C18091E5 -:100E10005003909151030A970DC00135110579F4E3 -:100E2000F7018281882309F417C1809150039091C2 -:100E300051030A9690935103809350030DC1409142 -:100E4000540383E2EFE6F3E0DE01119601900D9288 -:100E50008A95E1F7F701808121E030E02C0F3D1FFA -:100E6000280F311DC9012091520330915303FC0119 -:100E7000E20FF31F6081772767FD7095640F711D86 -:100E8000882777FD8095982F0E94552E20E030E02E -:100E900040E451E40E94BA2D4B015C01F70121812D -:100EA00084E090E0821B9109BC01882777FD809542 -:100EB000982F0E94552E9B01AC01C501B4010E94E0 -:100EC000522D9B01AC0160E070E080E090E40E9454 -:100ED000C82F20E030E04CED50E40E94652F4B011C -:100EE0005C01F70182818823D1F04FE050E0C50119 -:100EF000B4010E949810809167048823A1F080912A -:100F0000250424E0829FF0011124EA5DFB4F8082DA -:100F10009182A282B3828F5F8093250404C0C501B1 -:100F2000B4010E94E00C0F3F110508F02ECF94C0D1 -:100F30008091210481111FC0043130E5130709F0AD -:100F400051C00E94E20581E0809321040E94242682 -:100F50009093200480931F041092180410921A0496 -:100F60001092190410921C0410921B0410921E047B -:100F700010921D0471C080911F04909120040E9462 -:100F80003026883C910570F480911804E82FF0E039 -:100F9000EE0FFF1FE75EFB4F118300838F5F80938F -:100FA00018045AC0043880E5180721F005381045A8 -:100FB00001F13AC0F7018281882341F010921604B2 -:100FC00082E01EC0043830E5130759F580911604FD -:100FD000811106C086E20E947D1B86E20E94451CAC -:100FE00082E01CC00438F0E51F0741F305381045C6 -:100FF000D9F4F7018281882331F01092170480E23E -:101000000E94941C29C080911704811106C087E2B8 -:101010000E947D1B87E20E94451C80E20E949B1C6F -:101020001BC00538104529F381E080931604809396 -:101030001704C701A3960FB6F894DEBF0FBECDBF4D -:10104000DF91CF911F910F91FF90EF90BF90AF90E4 -:101050009F908F900C94B20380E0A3960FB6F89403 -:10106000DEBF0FBECDBFDF91CF911F910F91FF90DB -:10107000EF90BF90AF909F908F90089508959CE05F -:10108000799FF001112490E3899FE00DF11D112457 -:10109000E60FF11DEE0FFF1FE850FE4F8591949172 -:1010A0000895880F991FFC01EA58FF4F859194918C -:1010B0000895880F991FFC01EA50FE4F8591949185 -:1010C00008950F931F93CF93DF93EC01811521E3D4 -:1010D0009207A0F5C11580E3D80708F0D7C0C83E35 -:1010E000D105D8F4C03ED10508F007C2C83AD105F1 -:1010F00078F4C53AD10508F06AC0C130D10509F4C9 -:1011000063C008F4F7C1C430D10508F0F6C1F2C1DC -:10111000CB3BD10508F466C0EDC1C11590E2D907FB -:1011200008F0AFC0C11521E0D20708F0E6C1C03F0A -:10113000D10508F4DFC18E0110651FC2C03880E5FB -:10114000D80700F5C03790E5D90708F0A3C0C1154E -:1011500020E5D20709F4ACC050F4CE0190548031A0 -:101160009F4008F0C7C1DF708E01106A06C2C1300F -:1011700080E5D80709F4AEC0C43190E5D90708F47A -:10118000AFC0B8C1C33820E5D20709F48EC050F40F -:10119000C13890E5D90709F482C008F083C000E0A7 -:1011A00011EDEBC1C03181E5D80708F4A3C1C11529 -:1011B00097E5D90708F436C1CE01905781159041C3 -:1011C00008F098C1DF7093C101E010E0D6C1C53AC4 -:1011D000D10509F494C1C63AD10509F093C102E8DA -:1011E00010E4CBC1C83AD10509F48FC1C93AD10581 -:1011F00009F48EC1CA3AD10509F48DC1CB3AD105A3 -:1012000009F48CC1CC3AD10509F48BC1CD3AD10592 -:1012100009F48AC1C03BD10509F489C1CE3AD10590 -:1012200009F488C1CF3AD10509F487C1C13BD10582 -:1012300009F486C1C23BD10509F485C1C33BD10580 -:1012400009F484C1C43BD10509F483C1C53BD10570 -:1012500009F482C1C63BD10509F481C1C73BD10560 -:1012600009F480C1C83BD10509F47FC1C93BD10550 -:1012700009F47EC1CA3BD10509F47DC100E014E444 -:101280007CC1CE019F700E94590878C1DD278E0174 -:10129000106C73C1CF70DD278E01146D6EC100E03C -:1012A00010ED6BC100E012ED68C100E013ED65C107 -:1012B0000E94281F0E94AD0C0E9494058FEF94E3BA -:1012C0002CE0815090402040E1F700C000000E94D7 -:1012D0007F2653C1809143058160809343054DC1B2 -:1012E0000E943628811102C00E9412280E945328B1 -:1012F00090E090936E0580936D05C23080E5D8072D -:1013000021F480916D05816086C0C43090E5D907D5 -:1013100021F480916D0582607EC0C63020E5D20741 -:1013200021F480916D05846076C0C83080E5D807CF -:1013300019F480916D0527C0CA3090E5D90721F4D2 -:1013400080916D05806167C0CC3020E5D20721F423 -:1013500080916D0580625FC0CE3080E5D80721F4B2 -:1013600080916D05806457C0C03190E5D90721F4A4 -:1013700080916D0580684FC0C23120E5D20729F405 -:1013800080916D058460886046C0C33080E5D807D1 -:1013900021F480916D058E7F3EC0C53090E5D90760 -:1013A00021F480916D058D7F36C0C73020E5D207CE -:1013B00021F480916D058B7F2EC0C93080E5D80760 -:1013C00019F480916D0526C0CB3090E5D90721F442 -:1013D00080916D058F7E1FC0CD3020E5D20721F4AE -:1013E00080916D058F7D17C0CF3080E5D80721F43F -:1013F00080916D058F7B0FC0C13190E5D90721F435 -:1014000080916D058F7707C0C331D04531F480914D -:101410006D058B7F877F80936D0580916D050E94A0 -:101420005728ABC08D2F99278F7099278130910550 -:10143000D9F49E012370332702C0880F991F2A9583 -:10144000E2F79C688E0144E0000F111F4A95E1F716 -:1014500000271370802B912B53E0CC0FDD1F5A9582 -:10146000E1F7C076DD272FC08230910531F4DC2F03 -:10147000CC278E01016F106A80C08330910569F41A -:10148000CE018370992701E010E002C0000F111F08 -:101490008A95E2F7C8019C680FC084309105B9F4C1 -:1014A000CE018370992701E010E002C0000F111FE8 -:1014B0008A95E2F7C8019A6823E0CC0FDD1F2A95D0 -:1014C000E1F7C07ED7708C010C2B1D2B56C08530E8 -:1014D000910531F4DC2FCC278E01046F106A4DC0CA -:1014E000069709F04AC0CF71DD27DC2FCC278E018B -:1014F000106243C000E010E040C08E013EC001E831 -:1015000010E43BC003E810E438C002EE14E435C038 -:1015100009EE14E432C00AEE14E42FC005EB14E423 -:101520002CC006EB14E429C007EB14E426C00CEC35 -:1015300014E423C00DEC14E420C003E815E41DC03E -:101540000AE815E41AC002E915E417C004E915E435 -:1015500014C001E216E411C003E216E40EC004E276 -:1015600016E40BC005E216E408C006E216E405C066 -:1015700007E216E402C00AE216E4C801DF91CF9147 -:101580001F910F9108959CE0799FF001112490E341 -:10159000899FE00DF11D1124E60FF11DEE0FFF1FD5 -:1015A000E850FE4F85919491803E9105E0F4803C97 -:1015B000910558F58133910509F46FC048F48932DB -:1015C000910509F463C08A32910509F46DC072C0B7 -:1015D00089339105E9F082389105D1F08533910581 -:1015E00009F44DC067C0833E910581F138F4803E17 -:1015F0009105B9F0823E9105D9F05CC0863E910517 -:1016000061F1873E9105A1F155C00E9451080895EE -:1016100020916D0520FD02C021FF4CC080EE90E0BE -:1016200049C080916D0580FFF9CF89E390E042C009 -:1016300080916D0582FF0EC080916D0584FF03C00F -:1016400080E090E037C083EE90E034C080916D057B -:1016500082FFF2CF82EE90E02DC080916D0583FF76 -:101660000BC080916D0584FDEBCF87EE90E022C02A -:1016700080916D0583FFF5CF86EE90E01BC08091D1 -:101680006D0585FF07C089E290E014C080916D056B -:1016900085FFF9CF85E390E00DC080916D0586FF51 -:1016A00007C08AE290E006C080916D0586FFF9CF01 -:1016B00081E390E00E9461080895CF92DF92EF925B -:1016C000FF920F931F9301E010E020E030E06801EB -:1016D000790104C0CC0CDD1CEE1CFF1C8A95D2F7EE -:1016E00004C0000F111F221F331F6A95D2F70C2967 -:1016F0001D292E293F29C0902605D0902705E0906E -:101700002805F0902905C022D122E222F322842F5D -:10171000C016D106E206F30641F41F910F91FF9027 -:10172000EF90DF90CF900C9465231F910F91FF9065 -:10173000EF90DF90CF900C9486230C94B403E82FA5 -:10174000F0E0E256FC4F8081E82FEF70F0E08295E8 -:101750008F7021E030E0A90102C0440F551F8A9527 -:10176000E2F740A308950F931F93CF93DF9385B7BC -:10177000806885BF85B7806885BFC3E0D0E001E0A1 -:1017800010E0FE01E256FC4F8081E82FEF70F0E0A0 -:1017900021A182958F70A80102C0440F551F8A9520 -:1017A000E2F7CA01822B81A38C2F0E949F0B219705 -:1017B00040F78BE090E061E070E0FC01EE56FC4FFA -:1017C0002081E22FEF70F0E042A122952F70DB0123 -:1017D00002C0AA0FBB1F2A95E2F79D01242B22A36A -:1017E000019758F7DF91CF911F910F910C94E3056A -:1017F000EF92FF920F931F93CF93DF9301E714E0D3 -:10180000C3E0EE24E394F12CD5E08C2F0E949F0BD3 -:101810008BE090E040E050E0FC01EE56FC4F608130 -:10182000E62FEF70F0E020A130E062956F7002C00B -:10183000359527956A95E2F720FD09C09701082E96 -:1018400002C0220F331F0A94E2F7422B532B019759 -:1018500018F7F801929182918F018417950721F072 -:1018600051834083D09355038C2F0E949F0BC1500E -:1018700060F68091550387FD2CC0815080935503FD -:101880008F3F39F08FE99FE00197F1F700C000002A -:1018900020C080916F04909170049093780480939D -:1018A000770480916D0490916E04909376048093F8 -:1018B000750480916B0490916C04909374048093F0 -:1018C00073048091690490916A04909372048093E8 -:1018D00071040E94E50581E0DF91CF911F910F9186 -:1018E000FF90EF900895E82FF0E0EE0FFF1FEF5804 -:1018F000FB4F80819181089508950F931F93CF939B -:1019000009E714E0C0E0F801929182918F010E94F2 -:101910009C25C80FF4E001371F07A9F78C2FCF9142 -:101920001F910F9108950E943628811102C00E94D4 -:1019300012280E946528809358053E9A8091710074 -:101940008D7F8093710082E0809390008AE1809384 -:10195000910081E080937B04089580917B04811144 -:1019600002C00E94930C1092CB041092CA04809182 -:1019700071008D7F80937100809190008F738093B0 -:10198000900010928D0410928C041092C404109256 -:10199000C5041092C6041092C7041092C30410929A -:1019A000C204E2EAF4E0A2E9B4E0119211921192C9 -:1019B00011921D921D9284E0E23CF807B1F7089560 -:1019C000CF92DF92EF92FF920F931F93CF93DF930B -:1019D00020918C04222309F484C06B017C01809146 -:1019E0007B04811102C00E94930C02EC14E0C7E05A -:1019F000D0E0A7019601F8019291829172916291D3 -:101A00008F010E94B62D811131C0FE01EE0FFF1F24 -:101A1000EE0FFF1FEE55FB4F1082118212821382D0 -:101A2000DE01AA0FBB1FAE56BB4F11961C921E9231 -:101A3000C730D105E9F021964481558166817781CF -:101A400040835183628373831482158216821782C6 -:101A500012968D919C91139711969C938E93139649 -:101A60001C921E92129734961296E2CF219708F696 -:101A70008091CA049091CB04019797FD05C0909383 -:101A8000CB048093CA0404C01092CB041092CA0401 -:101A90008091CA049091CB042091C8043091C9046C -:101AA0002817390724F01092C9041092C804892B12 -:101AB000C1F4809171008D7F8093710080919000BE -:101AC0008F73809390001092C4041092C5041092FA -:101AD000C6041092C7041092C3041092C20410925C -:101AE0008C04DF91CF911F910F91FF90EF90DF90C9 -:101AF000CF9008951F920F920FB60F9211244F921C -:101B00005F926F927F928F929F92AF92BF92CF928D -:101B1000DF92EF92FF922F933F934F935F936F93D8 -:101B20007F938F939F93AF93BF93CF93DF93EF9365 -:101B3000FF9380918C04882309F49BC1C091CA044F -:101B4000D091CB041C161D060CF093C140907C0470 -:101B500050907D0460907E0470907F0420E030E01F -:101B6000A901C301B2010E94612F18160CF065C0D3 -:101B7000C130D10509F452C08091C8049091C904C4 -:101B8000BE010E9433317C019093C9048093C80444 -:101B900080908E0490908F04A0909004B090910457 -:101BA00020E030E040E85FE3C501B4010E94522D1F -:101BB00060938E0470938F048093900490939104AB -:101BC000F701EE0FFF1FEE0FFF1FEE55FB4FA301B6 -:101BD000920160817181828193810E94BA2D20E0FF -:101BE00030E040E05EE30E94652F9B01AC01C5013F -:101BF000B4010E94612F18168CF4C7010196BE0132 -:101C00000E9433319093C9048093C80410928E04CB -:101C100010928F041092900410929104E091C804E5 -:101C2000F091C904EE0FFF1FEE0FFF1FEE55FB4FA3 -:101C30006081718182819381D0C0C090C404D090B2 -:101C4000C504E090C604F090C70420E030E0A9018C -:101C5000C701B6010E94B62D2197882309F4A2C0BE -:101C6000FE01EE0FFF1FEE0FFF1FEE55FB4F8080B2 -:101C70009180A280B380A5019401C701B6010E94A2 -:101C8000B62D87FF31C0A501940160E070E08CEDB6 -:101C900093EC0E94BA2D20E030E040E451E40E9431 -:101CA000BA2D20E030E040E05FE30E94652F9B0109 -:101CB000AC0160E070E080E090E40E94C82F9B01DE -:101CC000AC01C501B4010E94652F9B01AC01C701A5 -:101CD000B6010E94B62D87FF07C0A701960160E0FC -:101CE00070E08CED93E439C0A5019401C701B60101 -:101CF0000E94612F18160CF055C0A501940160E0F8 -:101D000070E08CED93E40E94BA2D20E030E040E4D6 -:101D100051E40E94BA2D20E030E040E05FE30E94F1 -:101D2000652F9B01AC0160E070E080E090E40E94D0 -:101D3000C82F9B01AC01C501B4010E94652F9B0116 -:101D4000AC01C701B6010E94612F18165CF5A7010E -:101D5000960160E070E08CED93EC0E94BA2D20E0DB -:101D600030E040E451E40E94BA2D20E030E040E051 -:101D70005FE30E94652F9B01AC0160E070E080E0B2 -:101D800090E40E94C82F9B01AC01C701B6010E94DC -:101D9000652F6093C4047093C5048093C604909328 -:101DA000C70413C0FE01EE0FFF1FEE0FFF1FEE551D -:101DB000FB4F80819181A281B3818093C404909371 -:101DC000C504A093C604B093C7046091C404709185 -:101DD000C5048091C6049091C70420917904309184 -:101DE0007A042F3F4FEF340731F02F5F3F4F30938E -:101DF0007A04209379040E94DB116B017C0120E0BE -:101E000034E244EF51E40E94B62D87FF08C086EF0C -:101E1000C82E88E2D82E84EFE82E81E4F82E20E048 -:101E200030E040E051E4C701B6010E94652F9B01FC -:101E3000AC0160E074E284E79BE40E94BA2D6B0180 -:101E40007C010E94272E709397006093960020914A -:101E50005603309157034091580350915903C701DD -:101E6000B6010E94652F0E94272E709399006093FF -:101E7000980080918D04882309F433C1C0908804B0 -:101E8000D0908904E0908A04F0908B0420E030E048 -:101E9000A901C701B6010E94612F1816D4F58091DF -:101EA000790490917A048F3F2FEF920729F00196E1 -:101EB00090937A0480937904C701B6010E94DB11E4 -:101EC00020E030E040E051E40E94652F9B01AC012E -:101ED00060E074E284E79BE40E94BA2D6B017C0110 -:101EE0000E94272E709397006093960020915603CE -:101EF000309157034091580350915903C701B601DF -:101F00000E94652F0E94272E70939900609398007D -:101F100008C01092970010929600109299001092AB -:101F2000980060918204709183046F5F7F4F70937B -:101F3000830460938204209196003091970080E0A2 -:101F400090E0232BF1F0C0919600D09197000E9471 -:101F5000532E6B017C01BE0180E090E00E94532E65 -:101F60009B01AC016091840470918504809186048A -:101F7000909187040E94BA2D20E03FEF4FE757E48D -:101F800010C00E94532E6B017C0120E030EE4FEF19 -:101F900054E460918404709185048091860490914A -:101FA00087040E94652F9B01AC01C701B6010E9406 -:101FB000612F87FD96C0809180048F5F809380049D -:101FC00090E0209154053091550582179307A0F0B9 -:101FD00080915F05882319F0109280040DC08091D4 -:101FE00071008D7F80937100809190008F7380933A -:101FF000900010928D047DC080918104C091800476 -:10200000811128C0C0905905D0905A05E0905B0519 -:10201000F0905C0520E030E0A901C701B6010E9404 -:10202000612F1816BCF481E080938104109288041B -:102030001092890410928A0410928B04C092840436 -:10204000D0928504E0928604F0928704C150C09338 -:10205000800443C01092810410927A041092790493 -:10206000E0915605F091570548E0C49FE00DF11D41 -:10207000112480819181A281B381809388049093FF -:102080008904A0938A04B0938B0420E030E040E8F8 -:102090005EE364817581868197810E94652F6B0163 -:1020A0007C0180915A03682F70E080E090E00E94EC -:1020B000532E20E030E048EC52E40E94BA2D9B0100 -:1020C000AC01C701B6010E94652F60938404709330 -:1020D0008504809386049093870410928304109261 -:1020E00082048091580580FD04C010928D041092E6 -:1020F0008C04FF91EF91DF91CF91BF91AF919F91B0 -:102100008F917F916F915F914F913F912F91FF90B0 -:10211000EF90DF90CF90BF90AF909F908F907F9087 -:102120006F905F904F900F900FBE0F901F9018957B -:10213000CF92DF92EF92FF92CF93DF936B017C01FE -:10214000EA0180917B04811102C00E94930C80916E -:10215000580580FF46C08091CA049091CB0408972F -:102160000CF03FC0809171008D7F80937100809151 -:102170008D0481110E94AD0C81E080938C0410923B -:102180007A041092790420E030E0A901C701B60179 -:102190000E94612F1816DCF48091CA049091CB0440 -:1021A000FC01EE0FFF1FEE0FFF1FEE55FB4FC0822D -:1021B000D182E282F382FC01EE0FFF1FEE56FB4F4D -:1021C000D183C08301969093CB048093CA048091FD -:1021D000710082608093710080919000806880938C -:1021E0009000DF91CF91FF90EF90DF90CF90089516 -:1021F0008F929F92AF92BF92CF92DF92EF92FF9217 -:102200000F931F93CF93DF93EC017B01D42E4801F2 -:10221000590180917B04811102C00E94930C80912E -:10222000580580FF6BC0809171008D7F8093710095 -:1022300080918C0481110E94AD0C81E080938D040B -:10224000D0935705C0935605F0925505E09254057A -:10225000D0925F058092590590925A05A0925B0535 -:10226000B0925C0510928E0410928F04109290042C -:10227000109291041092800488819981AA81BB8177 -:102280008093880490938904A0938A04B0938B046C -:1022900020E030E040E85EE36C817D818E819F81AB -:1022A0000E94652F6B017C0180915A03682F70E0BA -:1022B00080E090E00E94532E20E030E048EC52E4B1 -:1022C0000E94BA2D9B01AC01C701B6010E94652F87 -:1022D00060938404709385048093860490938704AC -:1022E0001092830410928204809171008260809326 -:1022F000710080919000806880939000DF91CF9171 -:102300001F910F91FF90EF90DF90CF90BF90AF9013 -:102310009F908F90089580915805817008958091C5 -:1023200058058160809358050E9469280C94AE0579 -:10233000809158058E7F809358050C94692860938E -:10234000560370935703809358039093590308954D -:1023500080935A03089590915A03890F80935A03EA -:10236000089590915A03292F30E0281B31092A3013 -:10237000310524F48AE080935A030895981B9093C2 -:102380005A0308958093CC0408958091CC0490E082 -:10239000019666E070E00E9433318093CC0408958A -:1023A0008091CC0490E0019766E070E00E943331A8 -:1023B0008093CC0408958F929F92AF92BF92CF9258 -:1023C000DF92EF92FF920F931F93CF93DF936B01F6 -:1023D0007C01C0917904D0917A04BE0180E090E044 -:1023E0000E94532E4B015C01A701960160E070E052 -:1023F0008CE594E40E94BA2D9B01AC01C501B401A7 -:102400000E94652F0E94272E2091CC04233009F4CE -:1024100073C028F4222351F02130E9F02CC124307C -:1024200009F4A0C0253009F4E0C025C180E090E0A7 -:10243000A0E0BFE38093560390935703A093580303 -:10244000B093590310927C0410927D0410927E0484 -:1024500010927F0410C110927C0410927D0410929F -:102460007E0410927F046431710540F46A30710576 -:1024700060F520E030E040E85EE32BC0693C710588 -:1024800008F0AAC080E090E00E94532E20E030E0E7 -:1024900040EA51E40E94512D20E030E044E353E44F -:1024A0000E94BA2D9B01AC010E94652F20E030E014 -:1024B00040E05EE30E94652F9B01AC0160E070E0AC -:1024C00080E09EE30E94512D44C020E030E040E0D7 -:1024D0005FE3C701B6010E94652F6B017C0180E0BC -:1024E00090E0A0E0BEE38093560390935703A0933F -:1024F0005803B0935903BFC010927C0410927D041E -:1025000010927E0410927F044AE0469F9001479FFC -:10251000300D1124C90168EB7BE00E941F31BC0122 -:102520006C5D754077FF03C07195619571098827CF -:1025300077FD8095982F0E94552E2EE333EC4EE2C6 -:1025400059E30E94652F20E030E040EC5EE30E94FA -:10255000522D6093560370935703809358039093C2 -:10256000590389C010927C0410927D0410927E045D -:1025700010927F04CE0183709927892BE1F0BE0170 -:102580006170772780E090E00E94532E20E030E0D9 -:1025900040E05EE30E94652F20E030E040E45FE32E -:1025A0000E94522D609356037093570380935803F3 -:1025B000909359030CC080E090E0A0E0BFE38093CB -:1025C000560390935703A0935803B0935903C770D1 -:1025D000DD27CD2B09F04FC0109256031092570300 -:1025E000109258031092590346C010927C04109226 -:1025F0007D0410927E0410927F0400E010E020E041 -:102600003FE30093560310935703209358033093EE -:1026100059036739710578F180E090E00E94532EEC -:1026200020E030E047E153E40E94512D20E030E00B -:102630004AE754E40E94BA2D20E030E048E452E436 -:102640000E94652F20E030E040EA51E40E94972E7E -:102650000E94222E660F771F660F771FFB01EE5533 -:10266000FC4F2081318142815381C701B6010E9414 -:10267000652F6B017C01C701B601DF91CF911F91DE -:102680000F91FF90EF90DF90CF90BF90AF909F9011 -:102690008F9008958091DD040895CF93DF9300D04B -:1026A0001F92CDB7DEB79C0180916405843019F587 -:1026B00093E099833B832A839093E9008FEF909175 -:1026C000E800815095FD06C095ED9A95F1F7000060 -:1026D0008111F5CF8091E80085FF0DC040E050E00A -:1026E00063E070E0CE0101960E94AE158091E80093 -:1026F0008E778093E8000F900F900F90DF91CF912D -:102700000895CF93DF9300D01F92CDB7DEB720910D -:102710006405243021F522E029839B838A8383E0AA -:102720008093E9008FEF9091E800815095FD06C0FD -:1027300095ED9A95F1F700008111F5CF8091E800B1 -:1027400085FF0DC040E050E063E070E0CE010196EF -:102750000E94AE158091E8008E778093E8000F907C -:102760000F900F90DF91CF91089520916405243050 -:10277000F1F422E02093E9002FEF3091E80021509E -:1027800035FD06C035ED3A95F1F700002111F5CF82 -:102790002091E80025FF0BC040E050E065E070E0CC -:1027A0000E94AE158091E8008E778093E80008952E -:1027B000CF93DF93EC0190916405943009F046C00B -:1027C000809165038823D9F0809166038823B9F04E -:1027D0009093E9008FEF9091E800815095FD06C03D -:1027E00095E19A95F1F700008111F5CF8091E8000D -:1027F00085FF2CC040E050E060E170E017C081E050 -:102800008093E9008FEF9091E800815095FD06C01C -:1028100095ED9A95F1F700008111F5CF8091E800D0 -:1028200085FF14C040E050E068E070E0CE010E94F7 -:10283000AE158091E8008E778093E80080E1FE017C -:10284000ADECB4E001900D928A95E1F7DF91CF9164 -:10285000089580916305811109C00E9443170E9469 -:10286000A0178091E20084608093E20008951092A6 -:1028700063050895089508950C94E72542E061ECFE -:1028800081E00E94BD1642E061EC82E00E94BD162C -:1028900042E061EC83E00E94BD1642E161EC84E01D -:1028A0000C94BD1680916605833009F455C030F450 -:1028B000813071F0823009F48EC008958A3009F4B5 -:1028C0007AC08B3009F460C0893009F09CC020C008 -:1028D00080916505813A09F096C08091E800877F74 -:1028E0008093E8008091690590916A05892B21F415 -:1028F00060E18DEC94E003C060E080E090E070E087 -:102900000E94F9158091E8008B778093E800089584 -:1029100080916505813209F076C0809169059091BA -:102920006A05009719F0039709F06DC08091E800DF -:10293000877F8093E8008091E80082FD05C0809148 -:1029400064058111F8CF5FC08091F1008093DD04B0 -:102950008091E8008B7753C080916505813A09F03A -:1029600052C08091690590916A05892B09F04BC08E -:102970008091E800877F8093E8008091E80080FFE5 -:10298000FCCF8091650336C0809165058132D9F511 -:102990008091690590916A05892BA9F58091E800DD -:1029A000877F8093E8000E94F216809167058093EC -:1029B00065030C94281F80916505813221F5809173 -:1029C000E800877F8093E8000E94F21680916805F6 -:1029D0008093DE04089580916505813AA1F4809189 -:1029E000E800877F8093E8008091E80080FFFCCFBB -:1029F0008091DE048093F1008091E8008E778093CF -:102A0000E8000C94F216089584B7877F84BF88E1AC -:102A10000FB6F89480936000109260000FBE90E0B3 -:102A200080E80FB6F89480936100909361000FBE28 -:102A30000E94951A0E9443170E94A0178091E200FD -:102A400084608093E20078940E94261A0E94971A6C -:102A50008BE593E00E94411A80916405853069F40A -:102A60000E94A825809162058823B1F30E94D62593 -:102A7000882391F30E949815EFCF0E949F1AECCF04 -:102A8000292F332723303105C9F064F42130310573 -:102A900081F02230310509F043C08DE690E024E555 -:102AA00035E042C021323105F1F02232310541F1E9 -:102AB00037C082E190E021EC35E036C099278130C3 -:102AC000910541F08230910541F0892B49F5E0E50F -:102AD000F5E005C0E2E2F5E002C0E8EFF4E0849141 -:102AE00090E09F0121C06430D8F4E62FF0E0EE0FB3 -:102AF000FF1FE250FC4F2081318189E090E014C03B -:102B0000643070F470E0FB01EE0FFF1FEA50FC4FE1 -:102B100020813181FB01EE50FC4F808190E004C0A8 -:102B200080E090E020E030E0FA01318320830895D6 -:102B300080E189BD82E189BD09B400FEFDCF8091AD -:102B4000D8008F7D8093D8008091E00082608093D0 -:102B5000E0008091E00081FDFCCF0895CF92DF92EC -:102B6000EF92FF920F931F93CF93DF93EC018B01B2 -:102B70006A010E941117811133C0C114D10439F0C8 -:102B8000F60180819181081B190BC80FD91FE12C18 -:102B9000F12C0115110519F18091E80085FD16C091 -:102BA0008091E8008E778093E800C114D10449F049 -:102BB000F60180819181E80EF91EF182E08285E0C4 -:102BC0000FC00E941117882321F30AC089918093B6 -:102BD000F10001501109FFEFEF1AFF0ADACF80E090 -:102BE000DF91CF911F910F91FF90EF90DF90CF90E9 -:102BF000089520916B0530916C052617370748F032 -:102C00006115710539F42091E8002E772093E800D2 -:102C100001C0B90140E061157105A9F12091640579 -:102C2000222309F443C0253009F442C02091E80072 -:102C300023FD40C02091E80022FD32C02091E80031 -:102C400020FFE9CF4091F3002091F20030E0342BD7 -:102C5000FC01CF016115710559F02830310540F4B0 -:102C600081918093F100615071092F5F3F4FF1CF47 -:102C700041E02830310509F040E02091E8002E774E -:102C80002093E800C8CF4111C9CF0AC080916405E4 -:102C9000882361F0853061F08091E80083FD0AC0EF -:102CA0008091E80082FFF2CF80E0089582E00895ED -:102CB00083E0089581E0089520916B0530916C05C3 -:102CC0002617370748F06115710539F42091E8009F -:102CD0002E772093E80001C0B901FC0120E06115C6 -:102CE000710591F180916405882309F440C0853015 -:102CF00009F43FC08091E80083FD3DC08091E80069 -:102D000082FD2FC08091E80080FFE9CF2091F30081 -:102D10008091F20090E0922B6115710559F0883096 -:102D2000910540F424912093F1003196615071098E -:102D30000196F2CF21E0089709F020E08091E800A9 -:102D40008E778093E800CBCF2111CCCF0AC0809141 -:102D50006405882361F0853061F08091E80083FD8F -:102D60000AC08091E80082FFF2CF80E0089582E0FF -:102D7000089583E0089581E00895982F973058F5DD -:102D80009093E900981739F07091EC002091ED00D4 -:102D90005091F00003C0242F762F50E021FF19C07E -:102DA0003091EB003E7F3093EB003091ED003D7FA2 -:102DB0003093ED003091EB0031603093EB00709375 -:102DC000EC002093ED005093F0002091EE0027FFDF -:102DD00007C09F5FD3CF8F708093E90081E0089593 -:102DE00080E008958091650587FF11C08091E8001B -:102DF00082FD05C0809164058111F8CF11C08091DA -:102E0000E8008B770BC080916405882349F080919E -:102E1000E80080FFF8CF8091E8008E778093E8008B -:102E200008952091E4003091E50095E64091EC0092 -:102E3000842F817040FF22C08091E80080FD1CC07B -:102E400080916405882391F0853091F08091EB00AA -:102E500085FD10C04091E4005091E50042175307F2 -:102E600029F39A01915011F784E0089582E00895C2 -:102E700083E0089581E0089580E008954091E8009E -:102E800042FFDECF08950E94B1170E94B917E0EE0D -:102E9000F0E0808181608083E8EDF0E080818F77D1 -:102EA000808319BCA7EDB0E08C918E7F8C938081DC -:102EB0008F7E80831092630508950F931F93CF93A5 -:102EC000DF930E94B1170E94B917C8EDD0E0888146 -:102ED0008F77888388818068888388818F7D8883C5 -:102EE00019BC109264051092600510926205109250 -:102EF000610500EE10E0F80180818B7F808388817E -:102F00008160888342E060E080E00E94BD16E1EECF -:102F1000F0E080818E7F8083E2EEF0E0808181604E -:102F20008083808188608083F80180818E7F8083A8 -:102F3000888180618883DF91CF911F910F910895DF -:102F4000E8EDF0E080818F7E8083E7EDF0E0808126 -:102F50008160808384E082BF81E0809363050C946C -:102F60005D17E8EDF0E080818E7F80831092E200B3 -:102F700008951092DA001092E10008951F920F92C6 -:102F80000FB60F9211242F933F934F935F936F933C -:102F90007F938F939F93AF93BF93EF93FF93809112 -:102FA000E10082FF0BC08091E20082FF07C08091A8 -:102FB000E1008B7F8093E1000E94251A8091DA0066 -:102FC00080FF1FC08091D80080FF1BC08091DA0075 -:102FD0008E7F8093DA008091D90080FF0DC080E160 -:102FE00089BD82E189BD09B400FEFDCF81E08093F7 -:102FF00064050E94291405C019BC109264050E9442 -:1030000037148091E10080FF19C08091E20080FFB9 -:1030100015C08091E2008E7F8093E2008091E200F3 -:1030200080618093E2008091D80080628093D80014 -:1030300019BC85E0809364050E943B148091E100F7 -:1030400084FF30C08091E20084FF2CC080E189BD04 -:1030500082E189BD09B400FEFDCF8091D8008F7D4B -:103060008093D8008091E1008F7E8093E100809171 -:10307000E2008F7E8093E2008091E2008160809385 -:10308000E20080916005882311F084E007C0809100 -:10309000E30087FD02C081E001C083E08093640506 -:1030A0000E943C148091E10083FF29C08091E200DE -:1030B00083FF25C08091E100877F8093E10082E05B -:1030C00080936405109260058091E1008E7F80936B -:1030D000E1008091E2008E7F8093E2008091E20027 -:1030E00080618093E20042E060E080E00E94BD16D3 -:1030F0008091F00088608093F0000E943A14FF9164 -:10310000EF91BF91AF919F918F917F916F915F915F -:103110004F913F912F910F900FBE0F901F901895D8 -:103120001F920F920FB60F9211242F933F934F933C -:103130005F936F937F938F939F93AF93BF93CF933F -:10314000DF93EF93FF93C091E900CF708091EC0083 -:10315000D82FD17080FDD0E81092E9008091F00066 -:10316000877F8093F00078940E94D4181092E90031 -:103170008091F00088608093F000CD2BCF70C093D9 -:10318000E900FF91EF91DF91CF91BF91AF919F91B6 -:103190008F917F916F915F914F913F912F910F9000 -:1031A0000FBE0F901F9018951F93CF93DF93CDB74D -:1031B000DEB7AA970FB6F894DEBF0FBECDBFE5E627 -:1031C000F5E088E08E0F9091F10091938E13FBCF84 -:1031D0000E9452148091E80083FF1FC18091650511 -:1031E00090916605492F50E04A30510508F015C10D -:1031F000FA01E559FF4F0C944731803881F082384D -:1032000009F00BC1809169058F708093E90080916E -:10321000EB0085FB882780F91092E90006C08091B9 -:10322000610590916205911182609091E800977F0D -:103230009093E8008093F1001092F100C8C0282F0D -:103240002D7F09F0EAC0882319F0823061F0E5C0D3 -:1032500080916705813009F0E0C0933009F080E08B -:10326000809362052BC080916705811127C08091F2 -:1032700069058F7009F4D1C08093E9002091EB00BB -:1032800020FF1CC0933021F48091EB00806214C0B9 -:103290009091EB0090619093EB0021E030E0A90168 -:1032A00002C0440F551F8A95E2F74093EA0010923E -:1032B000EA008091EB0088608093EB001092E900B7 -:1032C0008091E800877F86C08111A7C010916705B3 -:1032D0001F778091E3008078812B8093E3008091B9 -:1032E000E800877F8093E8000E94F2168091E80052 -:1032F00080FFFCCF8091E30080688093E300111190 -:1033000002C082E001C083E08093640586C08058DB -:10331000823008F082C080916705909168058C3DED -:1033200053E0950779F583E08A838AE289834FB772 -:10333000F894DE01139620E03EE051E2E32FF0E046 -:1033400050935700E49120FF03C0E295EF703F5F78 -:10335000EF708E2F90E0EA3010F0C79601C0C09653 -:103360008D939D932F5F243149F74FBF8091E800E3 -:10337000877F8093E8006AE270E0CE0101960E94A8 -:10338000F91514C0AE014F5F5F4F609169050E944F -:103390004015BC01009709F440C09091E800977F68 -:1033A0009093E80089819A810E945C168091E800E0 -:1033B0008B778093E80031C0803879F58091E80000 -:1033C000877F8093E800809160058093F100809171 -:1033D000E8008E778093E8000E94F2161EC08111EB -:1033E0001CC0909167059230C0F48091E800877FFF -:1033F0008093E800909360050E94F216809160052A -:10340000811106C08091E30087FD02C081E001C008 -:1034100084E0809364050E943E148091E80083FF5D -:103420000AC08091E800877F8093E8008091EB00DC -:1034300080628093EB00AA960FB6F894DEBF0FBEB1 -:10344000CDBFDF91CF911F9108950895CF938091C3 -:1034500064058823A1F0C091E900CF709091EC0041 -:10346000892F817090FD80E8C82B1092E90080912F -:10347000E80083FD0E94D418CF70C093E900CF917B -:1034800008959093E4048093E3040895E091E304A5 -:10349000F091E404309721F00190F081E02D09943F -:1034A00080E00895E091E304F091E404309721F086 -:1034B0000280F381E02D09940895E091E304F091F6 -:1034C000E404309721F00480F581E02D09940895FB -:1034D0002091E1043091E2048217930771F09093F8 -:1034E000E2048093E104E091E304F091E404309776 -:1034F00021F00680F781E02D099408952091DF04E2 -:103500003091E0048217930771F09093E004809368 -:10351000DF04E091E304F091E404309721F00084AB -:10352000F185E02D0994089508950C94941A0E9451 -:103530001B260E94B30B0E94E5260C94B62C5F92CA -:103540006F927F928F929F92AF92BF92CF92DF92B3 -:10355000EF92FF920F931F93CF93DF9300D000D091 -:103560001F92CDB7DEB70E94F80B9EEEC92E94E0F5 -:10357000D92E03E010E0AA24A394B12C502E802F62 -:103580000E94730C4C01F601729062906F016826E4 -:10359000792661147104A1F40150110978F78FEFB5 -:1035A00089838A831B820E9424268160782F9D83D1 -:1035B0008C8349815A816B818D810E944F1B38C059 -:1035C0008091430581FD0E947C0C2BE030E0750169 -:1035D000022E02C0EE0CFF1C0A94E2F7C7018621FE -:1035E0009721892B09F129835A828E209F2091E00F -:1035F000892809F490E09B830E9424268160782F1B -:103600009D838C8349815A816B818D810E944F1BE0 -:10361000000F111FF801EA51FB4F80819181E826CC -:10362000F926F182E08204C02150310980F6B4CF3E -:103630000E94E8291091E5040E94461A1817D1F05B -:103640000E94461A8093E5040F900F900F900F9000 -:103650000F90DF91CF911F910F91FF90EF90DF902E -:10366000CF90BF90AF909F908F907F906F905F9022 -:103670000C949D0B0F900F900F900F900F90DF9177 -:10368000CF911F910F91FF90EF90DF90CF90BF905F -:10369000AF909F908F907F906F905F900895CF93A1 -:1036A000DF93CDB7DEB72B970FB6F894DEBF0FBE12 -:1036B000CDBF4F83588769877A878B87DE01119644 -:1036C00086E0FD0111928A95E9F785E0FE013796C3 -:1036D00001900D928A95E1F749815A816B817C8135 -:1036E0008D819E810E94C6212B960FB6F894DEBF75 -:1036F0000FBECDBFDF91CF910895CF93882309F4FA -:10370000C2C0C82F823859F40E94461A81FDBBC03E -:1037100089E30E94A0240E946D2589E30CC08338B0 -:1037200079F40E94461A80FDAEC083E50E94A02471 -:103730000E946D2583E50E94E224CF910C946D25B3 -:10374000843859F40E94461A82FD9DC087E40E9485 -:10375000A0240E946D2587E4EECF8CEF8C0F813A78 -:1037600048F48C2F0E941E2C81118DC08C2F0E943A -:10377000A024E3CF80E28C0F883048F4C77081E04A -:1037800001C0880FCA95EAF70E942625D6CF8BE59F -:103790008C0F833078F4C53A29F0C63A31F083E8CB -:1037A00090E005C081E890E002C082E890E0CF910F -:1037B0000C94681A88E58C0F833108F064C0C83A0D -:1037C00039F1C93A41F1CA3A49F1CB3A51F1CC3A0F -:1037D00059F1CD3A61F1C03B69F1CE3A71F1CF3A7E -:1037E00079F1C13B81F1C23B89F1C33B91F1C43B0B -:1037F00099F1C53BA1F1C63BA9F1C73BB1F1C83B6B -:10380000B9F1C93BC1F1CA3BC9F180E090E038C0D1 -:1038100082EE90E035C089EE90E032C08AEE90E012 -:103820002FC085EB90E02CC086EB90E029C087EBA1 -:1038300090E026C08CEC90E023C08DEC90E020C09E -:1038400083E891E01DC08AE891E01AC082E991E026 -:1038500017C084E991E014C081E292E011C083E2D4 -:1038600092E00EC084E292E00BC085E292E008C0D4 -:1038700086E292E005C087E292E002C08AE292E02E -:10388000CF910C947E1ACF910895882309F44BC0F0 -:10389000823859F40E94461A81FF45C089E30E948C -:1038A000A0240E946D2589E30CC0833871F40E9426 -:1038B000461A80FF38C083E50E94A0240E946D252F -:1038C00083E50E94E2240C946D25843859F40E940B -:1038D000461A82FF28C087E40E94A0240E946D251A -:1038E00087E4EFCF9CEF980F913A58F390E2980F4E -:1038F000983050F4877091E001C0990F8A95EAF7EB -:10390000892F0E942C25DFCF9BE5980F933020F460 -:1039100080E090E00C94681A885A833120F480E0AB -:1039200090E00C947E1A0895882321F00E942625A9 -:103930000C946D250895882321F00E942C250C9469 -:103940006D2508957F928F929F92AF92BF92CF92F2 -:10395000DF92EF92FF920F931F93CF93DF931F920B -:10396000CDB7DEB77C01C62E772EFC01058102950E -:103970000F70128111110E9443250E9499248823FF -:1039800079F0112369F080E28C0D883048F082E0F4 -:103990000E9482240E94992491E0D82ED92601C049 -:1039A000D12CE72DE295EF70F0E0EB58FF4F0C942F -:1039B0004731872D807F072D0F70882311F00295E6 -:1039C000007F112389F0002309F499C180E28C0D56 -:1039D000883020F4802F0E94262503C0802F0E946B -:1039E00036250E946D258BC18C2D0E94451C00231D -:1039F00009F4C3C180E28C0D883020F4802F0E942E -:103A00002C2503C0802F0E943C250E946D25B5C146 -:103A1000872D807F972D9F70803211F4892F03C0EE -:103A2000892F8295807FCC2021F0F1E0CF16A1F084 -:103A30001DC0112339F0002319F1013009F50E944E -:103A400056259BC1002319F0013009F496C18983E2 -:103A50000E945925898110C1112321F0063008F0F8 -:103A60008CC10EC0053008F088C106C1112359F081 -:103A7000002331F0F701958190FF41C19F7095833C -:103A80000E94941C7AC1002309F4F6C03EC1872D20 -:103A900086958695837090E0009719F0019761F004 -:103AA0006CC1112321F08C2D972D937002C080E002 -:103AB00090E00E94681A61C1112321F08C2D972D8E -:103AC000937002C080E090E00E947E1A56C18C2D57 -:103AD000112319F00E94F02802C00E9458290E9468 -:103AE000DD294BC1872D837009F052C0111145C1EA -:103AF0008C2D829586958770880F880F9C2D9F70DE -:103B0000892E912CA12CB12C082E04C0880C991C54 -:103B1000AA1CBB1C0A94D2F7C4FE14C00FE010E02C -:103B200020E030E0B901A80104C0440F551F661F12 -:103B3000771F8A95D2F7CB01BA0160957095809571 -:103B4000909503C060E070E0CB01272D2695269567 -:103B5000237030E02230310569F02330310589F0DF -:103B6000682979298A299B292130310571F00E9421 -:103B70000E2303C1682979298A299B290E942A23B7 -:103B8000FCC00E940E23C501B4010E94F222F5C0C0 -:103B9000112319F0872D817001C08695882309F4BF -:103BA000ECC08C2D829586958770880F880F9C2D90 -:103BB0009F70892E912CA12CB12C082E04C0880C4A -:103BC000991CAA1CBB1C0A94D2F7C4FE14C00FE0B7 -:103BD00010E020E030E0B901A80104C0440F551FF7 -:103BE000661F771F8A95D2F7CB01BA016095709551 -:103BF0008095909503C060E070E0CB01272D26955D -:103C000026952370422F50E04230510569F0433031 -:103C1000510589F0682979298A299B294130510564 -:103C200071F00E94E823A9C0682979298A299B2973 -:103C30000E940424A2C00E94E823C501B4010E948E -:103C4000CC239BC08C2D90E0FC01E05EF109E531B6 -:103C5000F10508F050C0EB57FF4F0C9447310C2D85 -:103C60000F70872D8F71112321F00E946523802F03 -:103C700007CF0E948623802F0E949B1C7EC01123A9 -:103C800041F0053008F079C0872D8F710E94AB2379 -:103C900074C0063008F071C0F7CF112339F0872DBA -:103CA0008F710E94652369C01123C9F3872D8F711D -:103CB0000E94862362C0112329F0872D8F710E94F4 -:103CC00050235BC00E94462358C0112351F0172D8A -:103CD0001F71812F0E94652363E0812F0E94792448 -:103CE0004CC081E00E948224023008F446C082E089 -:103CF0000E94822442C0112331F0002381F28C2DD6 -:103D00000E947D1B3AC0002389F28C2D0E94451C25 -:103D100034C0472D4F706C2DC7010E9465040E946E -:103D20006A222BC0111129C0472D4F7050E042303C -:103D30005105B9F04CF44115510581F04130510560 -:103D4000E1F40E94DE2C19C04330510569F0443083 -:103D5000510599F48C2D0E94302D0FC00E94C72C64 -:103D60000CC00E94FA2C09C00E940D2D06C0472DE0 -:103D70004F706C2DC7010E943E08DD20F9F00E94B3 -:103D8000752480FD1BC0F70112820E946F240E94DF -:103D90006523C7010E94ED1E0E946F240F90DF91E2 -:103DA000CF911F910F91FF90EF90DF90CF90BF9038 -:103DB000AF909F908F907F900C9486230F90DF910F -:103DC000CF911F910F91FF90EF90DF90CF90BF9018 -:103DD000AF909F908F907F9008950F931F93CF93F4 -:103DE000DF93EC01888199812B813C81232BB9F0F1 -:103DF0009F3F11F48F3F99F0CE010E943D0688232A -:103E000071F0688179818A810E946B248C010E9403 -:103E100020240E94E722B801CE010E94A21CDF915B -:103E2000CF911F910F9108950E9443250E94532521 -:103E30000E9418250E946D250E948E2A0E94DD296D -:103E400080E090E00E94681A80E090E00C947E1A76 -:103E50000E9433250C94141F0E946024292F229560 -:103E60002F7030E02C3031054CF42A3031056CF4E1 -:103E70002250310922303105A8F407C02C30310519 -:103E800069F02F30310551F00DC0803F69F018F412 -:103E9000803E40F409C0843F29F406C093FB882784 -:103EA00080F9089580E0089581E00895CF93DF932D -:103EB00000D000D01F92CDB7DEB70F900F900F90BB -:103EC0000F900F90DF91CF910895CF93DF9300D0A3 -:103ED00000D000D0CDB7DEB726960FB6F894DEBF7F -:103EE0000FBECDBFDF91CF9108951F93CF93DF9386 -:103EF000C091EE0416E08091EF04C81799F0D0E06D -:103F00001C9FF0011D9FF00D1124E051FB4F4081DB -:103F1000518162817381848195810E94651F219600 -:103F2000C770E9CFDF91CF911F910895409120058F -:103F300050912105609122057091230580912405FF -:103F4000909125050C94651F8091250582958F70B1 -:103F500009F054C080912205882309F44FC0809154 -:103F6000EE04A091EF04609120057091210540912D -:103F7000230550912405B6E08A1709F43FC090E06C -:103F800041155105C1F17F3F11F46F3FA1F1B89F79 -:103F9000F001B99FF00D1124E051FB4F2181721304 -:103FA0002AC02081621327C02281211124C02381CD -:103FB00034812417350710F421503109241B350BA7 -:103FC000283C3105C0F4209125052F7020612093F5 -:103FD000250526E0289FF001299FF00D1124EB50C4 -:103FE000FB4F80818F708061808380E295E00E942A -:103FF000ED1E0C94751F01968770BECF0895CF9269 -:10400000DF92EF92FF920F931F93CF93DF93CDB781 -:10401000DEB762970FB6F894DEBF0FBECDBF8C013E -:1040200085E0F801DE011D9601900D928A95E1F779 -:10403000D8014C9111965C91119712966C91129740 -:104040001396CD90DC901497309120057091210546 -:104050008091230590912405009709F46BC17F3F5F -:1040600019F43F3F09F466C1E0902205EE2009F4FF -:10407000C0C020912505C816D90628F0F601E81B16 -:10408000F90BCF0104C0809590958C0D9D1DFF24E8 -:10409000F394883C910578F0F12C207F09F0C6C09C -:1040A0007C2DD98AC88A89890E94561F80E295E0B2 -:1040B0000E94ED1EB1C0822F807F09F046C07513AB -:1040C00014C0341312C0611110C02F7020612093EE -:1040D00025050E94961F80E295E00E94ED1E8091CA -:1040E0002505D80115968C932EC0CD2819F15F3F78 -:1040F00011F44F3FF9F0F62E61111CC08091EE04CF -:104100002091EF0436E0821709F45AC090E0389FFE -:10411000F001399FF00D1124E051FB4F71815713CD -:1041200006C07081471303C07281711103C00196EC -:104130008770E9CFF62E662309F418C18091250512 -:10414000816080932505F12C11C1751308C03413CB -:1041500006C0611104C080912505D801C3C04D87F8 -:104160005E878D859E856A8B0E942C1F6A898823B5 -:10417000E1F16623D1F120912505822F82958F7080 -:1041800090E0029774F08091200590912105988726 -:104190008F831986DB86CA862C87CE0107960E94FC -:1041A000ED1E86E0F801A0E2B5E001900D928A953F -:1041B000E1F70E94A41F0E94961FFF24F394D6C02B -:1041C0004D875E878D859E850E946024292F2295CC -:1041D0002F7030E0223031050CF0BCC09F7009F028 -:1041E000B6C0805E883008F4C1C0C8010E94ED1ED0 -:1041F000E4CFC816D90608F453C0F601E81BF90B42 -:10420000CF01883C910508F450C0F12C7C2DD98A4F -:10421000C88A89890E94561FE0E2F5E086E0DF0146 -:104220001D928A95E9F70E94961FA0C0751314C0CD -:10423000341312C0611110C080912505F8018583E7 -:10424000C8010E94ED1E86E0E0E2F5E0DF011D926C -:104250008A95E9F7FE2C8AC04D875E878D859E85FD -:104260006A8B0E942C1F6A89882309F4BECF6623BB -:1042700009F4BBCF20912505822F82958F7090E0A5 -:1042800002970CF48ECF80912005909121059A839E -:1042900089831B82DD82CC822E83CE0101967FCF63 -:1042A000809590958C0D9D1DACCFF62E662309F45C -:1042B0009CCF75132EC034132CC02091250520FDF2 -:1042C0001FC0822F82958F70D9F0D80115962C933C -:1042D00015978F3049F08F5F982F9295907F822F9E -:1042E0008F70892B15968C93C8010E94ED1E86E075 -:1042F000F801A0E2B5E001900D928A95E1F793CF25 -:1043000086E0F801A0E2B5E001900D928A95E1F710 -:104310002DC04D875E878D859E850E942C1F811143 -:1043200040CF80912505816080932505C8010E94BA -:10433000ED1E1CC0662309F458CF4D875E878D851E -:104340009E850E942C1F882309F44FCF2ACF81110C -:1043500048CF0CC0243031050CF047CF9F7009F4D2 -:1043600040CFF8019581907F09F03BCF8F2D629669 -:104370000FB6F894DEBF0FBECDBFDF91CF911F9176 -:104380000F91FF90EF90DF90CF9008951F93CF9300 -:10439000DF93CDB7DEB72C970FB6F894DEBF0FBE14 -:1043A000CDBF4F83588769877A878B879C87CE01DB -:1043B00007960E94FF1F882369F08F8198852A85C0 -:1043C0003B85232BF1F19F3F09F063C08F3F09F03C -:1043D00060C037C086E0FE013796DE01119601907D -:1043E0000D928A95E1F76F817885EA85FB85309794 -:1043F00041F17F3F11F46F3F21F12091EF0430E054 -:10440000C9010196877099274091EE0450E0841706 -:10441000950709F447C069837A83FD83EC8396E0AE -:10442000929FD001939FB00D1124A051BB4FFE016C -:10443000319601900D929A95E1F78093EF040E94D6 -:10444000751F16E08091EE049091EF048917C1F179 -:10445000189FC001112480519B4F0E94FF1F882389 -:1044600079F1E091EE041E9FF0011124E051FB4F21 -:104470004081518162817381848195810E94651F91 -:104480008091EE0490E00196877099278093EE0466 -:10449000D9CF4F81588569857A858B859C850E9407 -:1044A000651FCFCF0E94281F1092EF041092EE04D8 -:1044B000E0E2F5E086E0DF011D928A95E9F7C1CFE1 -:1044C0002C960FB6F894DEBF0FBECDBFDF91CF9113 -:1044D0001F910895EF92FF920F931F93CF93DF9355 -:1044E0008C01009709F46CC0F12CEE24E394E801F0 -:1044F0002196F8018491843740F4843008F051C04B -:10450000813081F0823019F15BC0853709F444C0F5 -:10451000A8F19CE7980F903708F052C08F770E945F -:10452000451C41C00E5F1F4FFE01C49180E28C0FFD -:10453000883048F4C7708E2D01C0880FCA95EAF7FD -:104540000E94462514C08C2F0E947D1B2DC00E5F3B -:104550001F4FFE01C49180E28C0F883058F4C77061 -:104560008E2D01C0880FCA95EAF70E944C250E9443 -:104570006D251AC08C2F0E94451C16C00E5F1F4F60 -:10458000FE01C491CC2381F08FE99FE00197F1F700 -:1045900000C00000C150F6CF0E5F1F4FFE01F49027 -:1045A00003C00E947D1B8E018F2D882309F49FCFAD -:1045B000EFE9FFE03197F1F700C000008150F5CF3F -:1045C000DF91CF911F910F91FF90EF900895089583 -:1045D00060932A0570932B0580932C0590932D05ED -:1045E0000C94141F0F931F9300912A0510912B0513 -:1045F00020912C0530912D05DC01CB01802B912BD6 -:10460000A22BB32B80932A0590932B05A0932C0506 -:10461000B0932D051F910F910C94141F0F931F93AE -:1046200000912A0510912B0520912C0530912D0524 -:10463000DC01CB0180239123A223B32380932A059D -:1046400090932B05A0932C05B0932D051F910F91EE -:104650000C94141F0F931F9300912A0510912B05A2 -:1046600020912C0530912D05DC01CB01802791276D -:10467000A227B32780932A0590932B05A0932C059E -:10468000B0932D051F910F910C94141F10922605C5 -:104690001092270510922805109229050C94141FDA -:1046A00041E050E060E070E004C0440F551F661F19 -:1046B000771F8A95D2F7409326055093270560937C -:1046C0002805709329050C94141F41E050E060E028 -:1046D00070E004C0440F551F661F771F8A95D2F7FC -:1046E0008091260590912705A0912805B091290574 -:1046F000482B592B6A2B7B2B40932605509327057B -:1047000060932805709329050C94141F41E050E034 -:1047100060E070E004C0440F551F661F771F8A9544 -:10472000D2F74095509560957095809126059091AF -:104730002705A0912805B0912905482359236A230C -:104740007B2340932605509327056093280570939B -:1047500029050C94141F41E050E060E070E004C0B3 -:10476000440F551F661F771F8A95D2F78091260543 -:1047700090912705A0912805B09129054827592730 -:104780006A277B27409326055093270560932805C9 -:10479000709329050C94141F0F931F930091260505 -:1047A000109127052091280530912905DC01CB01C6 -:1047B000802B912BA22BB32B80932605909327055A -:1047C000A0932805B09329051F910F910C94141FF5 -:1047D0000F931F930091260510912705209128051E -:1047E00030912905DC01CB0180239123A223B3233F -:1047F0008093260590932705A0932805B09329055B -:104800001F910F910C94141F0F931F930091260575 -:10481000109127052091280530912905DC01CB0155 -:1048200080279127A227B3278093260590932705F9 -:10483000A0932805B09329051F910F910C94141F84 -:104840000895CF92DF92EF92FF920F931F93CF9331 -:10485000DF938C01C0902A05D0902B05E0902C05A9 -:10486000F0902D058091260590912705A0912805AF -:10487000B0912905C82AD92AEA2AFB2ACFE1D0E03B -:10488000D701C6010C2E04C0B695A79597958795BC -:104890000A94D2F780FF06C0B8018C2F0E94C30A89 -:1048A000019721F4219760F780E001C08C2FDF9100 -:1048B000CF911F910F91FF90EF90DF90CF900895CF -:1048C000CF93DF93EC010E942124BE010E94C30A12 -:1048D000DF91CF910895CB010E94602408958091CB -:1048E0002E05859585958595089580912E0587706F -:1048F000089598E0899F90011124262B20932E057E -:104900000C94652320912E058095822380932E059B -:10491000982F977069F430E0482F552747FD509540 -:104920002417350729F08595859585950C94862360 -:10493000089590912E05977081E009F480E0089524 -:1049400090916503992321F090916603911109C01C -:104950002091670330916803F90132969FEF40E0A0 -:104960001FC0982F9695969596959F3050F5E0919B -:104970006703F0916803E90FF11D877021E030E0D3 -:10498000A90102C0440F551F8A95E2F7CA0191811F -:10499000892B818308959F3F39F04F5F4E3041F05E -:1049A00051915813F8CF0DC05111F7CF942FF5CF77 -:1049B0009F3F39F0F901E90FF11D97FDFA958283C8 -:1049C0000895089590916503992321F090916603CD -:1049D000911109C02091670330916803F901329663 -:1049E000205F3F4F1FC0982F9695969596959F30C4 -:1049F000F0F4E0916703F0916803E90FF11D87700F -:104A000021E030E0A90102C0440F551F8A95E2F76A -:104A1000CA01809591818923818308953196E21797 -:104A2000F30729F090819813F9CF1082F7CF0895FA -:104A300081E090E0E0916703F0916803E80FF91FCF -:104A40001082019680319105A9F708959091420551 -:104A5000892B809342050895809590914205892382 -:104A60008093420508951092420508959091410562 -:104A7000892B809341050895809590914105892364 -:104A80008093410508951092410508959091400545 -:104A9000892B809340050895809590914005892346 -:104AA00080934005089510924005089580932F0546 -:104AB000089510922F0508958091670390916803DF -:104AC000FC0131969C01205F3F4F80E09191911154 -:104AD0008F5FE217F307D1F70895E0916703F09134 -:104AE0006803809142058083E0916703F091680339 -:104AF000908180914105892B8083E0916703F0913B -:104B00006803908180914005892B808380912F05D7 -:104B1000882361F0E0916703F09168039081892B0D -:104B200080830E945C25811110922F05809167037C -:104B3000909168030C94521A20E0009739F0AC0170 -:104B400041505109842395232F5FF7CF822F089579 -:104B500080916405843039F11092440520E488E1A5 -:104B600090E00FB6F894A895809360000FBE209354 -:104B7000600080E00E94C00380E00E949D0B83B72C -:104B8000817F846083BF83B7816083BF7894889579 -:104B900083B78E7F83BF88E10FB6F894809360005F -:104BA000109260000FBE08950895089580E00E945D -:104BB000C0030E94D4250E94F80B0E94D5250E94B4 -:104BC0007D0C91E0811101C090E0892F08950E9431 -:104BD000281F80E00E94C0030E94B62C0E94461A43 -:104BE0000C949D0B1F920F920FB60F9211248F936E -:104BF0009F93AF93BF9380914405811113C080911F -:104C0000450590914605A0914705B091480541960C -:104C1000A11DB11D8093450590934605A0934705BE -:104C2000B0934805BF91AF919F918F910F900FBEA8 -:104C30000F901F90189582E084BD93E095BD9AEF88 -:104C400097BD80936E0008952FB7F8948091450525 -:104C500090914605A0914705B09148052FBF089552 -:104C6000CF92DF92EF92FF920F931F932FB7F8949A -:104C70004091450550914605609147057091480562 -:104C80002FBF6A017B01EE24FF248C0120E030E07D -:104C9000C016D106E206F30610F4415051099A01FC -:104CA000281B390BC9011F910F91FF90EF90DF90E6 -:104CB000CF9008951F920F920FB60F9211248F93E9 -:104CC0009F93AF93BF938091450590914605A09126 -:104CD0004705B09148050196A11DB11D809345057A -:104CE00090934605A0934705B0934805BF91AF91B7 -:104CF0009F918F910F900FBE0F901F9018950E945B -:104D00004317F8942FEF87EA91E6215080409040B6 -:104D1000E1F700C0000087E090EBDC0180936F05B5 -:104D200090937005A0937105B09372059CE088E1A3 -:104D30000FB6F894A895809360000FBE9093600022 -:104D4000FFCFCF92DF92EF92FF920F931F93CF93FB -:104D5000DF93D82FC3E0EE24E394F12C8C2F0E9434 -:104D6000730C6C010BE010E09701002E02C0220FC3 -:104D7000331F0A94E2F72C213D21232B49F0602FA9 -:104D80007C2F80E00E943F08D81302C081E006C05B -:104D90000150110948F7C15008F780E0DF91CF9129 -:104DA0001F910F91FF90EF90DF90CF900895CF93D8 -:104DB000C82F8CE20E94A126882321F08C2FCF914E -:104DC0000C94A12680E0CF910895CF930E943628BD -:104DD000811102C00E941228C5E6C15049F00E940C -:104DE000F80B8FE39CE90197F1F700C00000F5CFC5 -:104DF00089E20E94D726811113C18AE20E94D72638 -:104E000081110E94122885E00E94D72681110E94FC -:104E10007F260E9441288093430587E00E94D72681 -:104E20008823A9F18BE10E94D726882351F0809135 -:104E3000430581FB222720F991E0922790FB81F91D -:104E40000EC08EE00E94D726882361F08091430532 -:104E500082FB222720F991E0922790FB82F9809330 -:104E6000430515C080E10E94D72690914305882311 -:104E700041F093FB222720F981E0822780FB93F900 -:104E800004C0892F809580FB90F990934305809111 -:104E900043050E9445280E94532880936D0580EEAB -:104EA0000E94D726882341F080916D05982F909518 -:104EB00090FB80F980936D0589E30E94D7268823B3 -:104EC00059F080916D0581FB222720F991E092270E -:104ED00090FB81F980936D0582EE0E94D72688238E -:104EE00059F080916D0582FB222720F991E09227ED -:104EF00090FB82F980936D0586EE0E94D726882369 -:104F000059F080916D0583FB222720F991E09227CB -:104F100090FB83F980936D0583EE0E94D72688234A -:104F200059F080916D0584FB222720F991E09227AA -:104F300090FB84F980936D0585E30E94D726882332 -:104F400059F080916D0585FB222720F991E0922789 -:104F500090FB85F980936D0581E30E94D726882315 -:104F600059F080916D0586FB222720F991E0922768 -:104F700090FB86F980936D0581E10E94D7268823F6 -:104F800059F080916D0587FB222720F991E0922747 -:104F900090FB87F980936D0580916D050E945728DD -:104FA00080916D0587FB882780F98093660387E2EF -:104FB0000E94D726C82F8EE10E94D7268111C26099 -:104FC0008FE10E94D7268111C46080E20E94D7261B -:104FD0008111C86081E20E94D7268111C06182E2FE -:104FE0000E94D7268111C06283E20E94D7268111D8 -:104FF000C06484E20E94D726882311F0C06802C0F2 -:10500000CC2329F08C2F0E944E286C2F03C00E94C5 -:105010004A28682F70E080E090E0CF910C94E8225D -:10502000CF9108956DEE7EEF80E090E00E946D31AB -:1050300060E082E090E00E945B3160E083E090E01D -:105040000E945B3160E084E090E00E945B3160E0B0 -:1050500085E090E00E945B3160E086E090E00E9495 -:105060005B316FEF87E090E00C945B3180E090E083 -:105070000E94553121E08D3E9E4F09F020E0822FA5 -:10508000089582E090E00C944D31682F82E090E02A -:105090000C945B3183E090E00C944D31682F83E0F9 -:1050A00090E00C945B3184E090E00C944D31682FDB -:1050B00084E090E00C945B3186E090E00C944D31FC -:1050C000682F86E090E00C945B3187E090E00C94D0 -:1050D0004D31682F87E090E00C945B3180914B0557 -:1050E00080FF0BC060916C0385E0689FB0011124C4 -:1050F00075956795759567952BC081FF09C060917F -:105100006C0385E0689FB00111247595679520C0F8 -:1051100082FF07C060916C0385E0689FB001112495 -:1051200017C090914C059923D1F060916B039617AD -:1051300088F720916C0385E0289F90011124929FAD -:10514000A001939F500D112470E0CA010E943331D9 -:105150006038710540F46115710539F002C065E0F1 -:1051600070E0862F08958FE7089581E0089580917B -:105170004B0580FF08C060916A0370E075956795E4 -:105180007595679521C081FF06C060916A0370E044 -:105190007595679519C082FF04C060916A0370E03D -:1051A00010C090914C059923C1F060916903961746 -:1051B000A0F780916A03899FC001112470E00E94CA -:1051C00033316038710528F46115710521F0862F9F -:1051D00008958FE7089581E0089561E070E0F4CFCD -:1051E000803F21F40E946E28819504C0813F29F4FC -:1051F0000E946E2880934F050895823F21F40E94FB -:105200006E28819504C0833F29F40E946E28809304 -:105210004E050895893F19F40E94B72805C08A3FBA -:1052200031F40E94B72881958093500508958B3FF3 -:1052300021F40E94B728819504C08C3F29F40E9474 -:10524000B728809351050895843F21F480914D053E -:10525000816017C0853F21F480914D05826011C0A7 -:10526000863F21F480914D0584600BC0873F21F477 -:1052700080914D05886005C0883F31F480914D05CF -:10528000806180934D0508958D3F21F480914B05F9 -:1052900081600BC08E3F21F480914B05826005C078 -:1052A0008F3F29F480914B05846080934B050895CE -:1052B000803F39F480914F0587FF6CC010924F05F5 -:1052C00069C0813F29F480914F051816BCF362C074 -:1052D00090914E05823F29F497FF5CC010924E05D5 -:1052E00059C0833F19F41916CCF354C0893F41F4D7 -:1052F0008091500518160CF04DC0109250054AC010 -:105300008A3F29F48091500587FF44C0F6CF8B3F38 -:1053100039F48091510587FF3DC0109251053AC084 -:105320008C3F29F4809151051816BCF333C0843F9B -:1053300021F480914D058E7F17C0853F21F4809127 -:105340004D058D7F11C0863F21F480914D058B7FE7 -:105350000BC0873F21F480914D05877F05C0883FB2 -:1053600031F480914D058F7E80934D0513C08D3FA4 -:1053700021F480914B058E7F0BC08E3F21F48091EC -:105380004B058D7F05C08F3F29F480914B058B7FA6 -:1053900080934B0580914E0581110EC080914F0581 -:1053A00081110AC080915005811106C0809151057C -:1053B000811102C010924C0508958DE495E00E9481 -:1053C0005D1A0E94242690934A058093490508950A -:1053D0001F93CF93DF938091490590914A050E94D6 -:1053E0003026AC0190914C05992321F020916D035A -:1053F00030E006C020916E038AE0289F90011124BE -:105400004217530708F486C080914E05C0914F059E -:10541000D091500510915105811107C0C11176C07E -:10542000D11174C0111172C075C09F3F19F09F5FF8 -:1054300090934C05181624F40E946E2880934E0514 -:1054400080914E0587FF05C00E946E28819580934C -:105450004E051C1624F40E946E2880934F058091FF -:105460004F0587FF05C00E946E28819580934F05E8 -:1054700060914E05662339F1C0914F05CC2319F197 -:10548000772767FD7095872F972F0E94552E23E36E -:1054900033E343E35FE30E94652F0E94222E609373 -:1054A0004E056C2F772767FD7095872F972F0E94E9 -:1054B000552E23E333E343E35FE30E94652F0E940D -:1054C000222E60934F051D1624F40E94B728809366 -:1054D00050058091500587FF05C00E94B72881952F -:1054E00080935005111624F40E94B728809351052B -:1054F0008091510587FF05C00E94B7288195809350 -:105500005105DF91CF911F910C94DD299F3F09F048 -:105510008ECF96CFDF91CF911F910895EDE4F5E006 -:1055200085E0DF011D928A95E9F710924C051092F3 -:105530004B050895833081F128F4813059F0823091 -:10554000D1F00895853009F449C0B8F1863009F4E6 -:1055500056C0089580916E03262F30E0280F311D2C -:105560002F3F310524F4680F60936E0308958FEF89 -:1055700080936E03089580916D03262F30E0280FED -:10558000311D2F3F310524F4680F60936D0308959A -:105590008FEF80936D03089580916C03262F30E088 -:1055A000280F311D2F3F310524F4680F60936C03E1 -:1055B00008958FEF80936C03089580916B03262FDD -:1055C00030E0280F311D2F3F310524F4680F609320 -:1055D0006B0308958FEF80936B03089580916A03A6 -:1055E000262F30E0280F311D2F3F310524F4680F9E -:1055F00060936A0308958FEF80936A030895809102 -:105600006903262F30E0280F311D2F3F310524F488 -:10561000680F6093690308958FEF8093690308957D -:10562000833011F128F4813049F0823091F00895EF -:10563000853081F120F18630C1F1089580916E03AB -:10564000681720F4861B80936E03089510926E03F2 -:10565000089580916D03681720F4861B80936D0375 -:10566000089510926D03089580916C03681720F4DB -:10567000861B80936C03089510926C0308958091AB -:105680006B03681720F4861B80936B0308951092B8 -:105690006B03089580916A03681720F4861B80933A -:1056A0006A03089510926A03089580916903681748 -:1056B00020F4861B8093690308951092690308956E -:1056C0000F931F938B3109F470C0A0F58E3009F44D -:1056D0007FC0C0F4873009F456C068F4863009F002 -:1056E000A5C080914305817F8E7F8093430581E033 -:1056F000809353059CC0883009F491C08B3009F425 -:105700008EC094C0813109F46DC068F4803109F015 -:105710008DC08091430583FB222720F991E09227D9 -:1057200090FB83F94BC0863109F479C0893109F4C3 -:1057300076C07CC0853309F474C068F4873209F4FC -:1057400070C028F48E3108F471C08D5155C0893273 -:1057500009F467C06BC0833438F48A3308F04BC057 -:10576000883309F45CC062C0833409F45AC08834B9 -:1057700009F05CC00E94281F0E94AD0C0E94940595 -:105780000E947F264CC090914305892F809581709F -:1057900080FB90F929F0966098609093430547C08C -:1057A000997F977F909343053AC08091430581FB91 -:1057B000222720F991E0922790FB81F980934305FD -:1057C000992369F18091430581608093430527C047 -:1057D0008091430582FB222720F991E0922790FBDC -:1057E00082F9ECCF0E94281F9091660381E08927FF -:1057F0008093660314C0895341E050E060E070E09C -:105800008A019B0104C0000F111F221F331F8A95BC -:10581000D2F7C901B8010E94E8220E94281F81E046 -:1058200006C061E070E080E090E0F5CF80E01F917D -:105830000F91089580E0089580E00895CF93C82FD8 -:1058400080915305813069F018F08230C9F184C02D -:10585000E0916703F09168038081823209F07EC095 -:1058600007C0E0916703F09168038081823261F4A0 -:105870008C2F0E941A2C811104C08C2F0E94602B47 -:105880001DC081E090E01AC08C2F0E941C2C811159 -:1058900014C0C43179F048F4CB3079F0C03109F04C -:1058A00061C082E08093530508C0C93219F0C83343 -:1058B00021F058C01092530555C081E0817054C04A -:1058C000C93291F120F5C43179F1B0F4C73009F053 -:1058D00047C08EE180936E0382E380936D038AE07C -:1058E00080936C0384E180936B0388E080936A0368 -:1058F00088E28093690334C0CE51C63088F5EC2F1E -:10590000F0E0EA5FFB4F80818093520529C0CE34DE -:10591000E9F020F4CB3421F56AE013C0C13579F009 -:10592000C235F1F461E00DC080915205882319F071 -:105930001092520515C081E08093530515C061E0B7 -:1059400006C0809152050E949A2A0AC06AE080919E -:1059500052050E94102B04C01092530580E004C031 -:1059600081E002C080E0AACFCF9108950E9436283E -:10597000811102C00E9412280E945C2880936E054B -:1059800080FF02C0869501C080E00C94C003809126 -:105990006E05982F9695292F30E0233031054CF471 -:1059A0009F5F990F8170892B816080936E050E94A3 -:1059B000602880916E0586950C94C00380916E05D9 -:1059C000982F969591F09158990F8170892B80931B -:1059D0006E058E7F91E009F490E080916E0590FB5A -:1059E00080F980936E050E94602880916E058695EF -:1059F0000C94C00380916E05982F909590FB80F9D0 -:105A000080936E050E94602880916E0580FF02C021 -:105A1000869501C080E00C94C00390916E05892F9B -:105A200086958F5F8F779170843028F4880F892B4B -:105A300080936E0502C090936E0580916E058E7FF7 -:105A400091E009F490E080916E0590FB80F98093DD -:105A50006E050E94602880916E0586950C94C003A7 -:105A600020916E05922F96958927982F990F822F56 -:105A70008170892B80936E058E7F91E009F490E010 -:105A800080916E0590FB80F980936E050E946028DE -:105A900080916E0586950C94C00380916E05869565 -:105AA00008955058BB27AA270ED0D1C1C2D130F0DB -:105AB000C7D120F031F49F3F11F41EF4B7C10EF4AA -:105AC000E095E7FB9FC1E92FD3D180F3BA176207B6 -:105AD00073078407950718F071F49EF5EBC10EF477 -:105AE000E0950B2EBA2FA02D0B01B90190010C01EE -:105AF000CA01A0011124FF27591B99F0593F50F406 -:105B0000503E68F11A16F040A22F232F342F44275D -:105B1000585FF3CF469537952795A795F040539555 -:105B2000C9F77EF41F16BA0B620B730B840BBAF025 -:105B30009150A1F0FF0FBB1F661F771F881FC2F790 -:105B40000EC0BA0F621F731F841F48F487957795A4 -:105B50006795B795F7959E3F08F0B3CF9395880F5B -:105B600008F09927EE0F97958795089527D108F4A7 -:105B700081E008950CD06BC163D140F05AD130F070 -:105B800021F45F3F19F03EC1511195C14FC170D151 -:105B900098F39923C9F35523B1F3951B550BBB27F4 -:105BA000AA2762177307840738F09F5F5F4F220FA1 -:105BB000331F441FAA1FA9F333D00E2E3AF0E0E89A -:105BC00030D091505040E695001CCAF729D0FE2FE6 -:105BD00027D0660F771F881FBB1F26173707480778 -:105BE000AB07B0E809F0BB0B802DBF01FF2793582E -:105BF0005F4F2AF09E3F510568F004C15CC15F3FD2 -:105C0000ECF3983EDCF3869577956795B795F79515 -:105C10009F5FC9F7880F911D9695879597F908950D -:105C2000E1E0660F771F881FBB1F621773078407A9 -:105C3000BA0720F0621B730B840BBA0BEE1F88F7B8 -:105C4000E095089504D06894B11135C1089518D134 -:105C500088F09F5790F0B92F9927B751A0F0D1F055 -:105C6000660F771F881F991F1AF0BA95C9F712C0DF -:105C7000B13081F01FD1B1E008951CC1672F782F9A -:105C80008827B85F39F0B93FCCF38695779567954B -:105C9000B395D9F73EF490958095709561957F4FB7 -:105CA0008F4F9F4F0895E89409C097FB3EF490955D -:105CB0008095709561957F4F8F4F9F4F9923A9F0E5 -:105CC000F92F96E9BB279395F69587957795679574 -:105CD000B795F111F8CFFAF4BB0F11F460FF1BC0B8 -:105CE0006F5F7F4F8F4F9F4F16C0882311F096E94B -:105CF00011C0772321F09EE8872F762F05C06623F9 -:105D000071F096E8862F70E060E02AF09A95660FB1 -:105D1000771F881FDAF7880F9695879597F908956A -:105D200088D018F011F08CD038F480C0C4C0E92FAE -:105D30009FD0B0F35523C9F3E7FB621773078407BD -:105D40009507A8F199F3E92FFF2788232AF03197C7 -:105D5000660F771F881FDAF7952F5527442332F0F7 -:105D600091505040220F331F441FD2F7BB27E91B2D -:105D7000F50B621B730B840BB109C1F222F4620FA5 -:105D8000731F841FB11D31972AF0660F771F881F7C -:105D9000BB1FEFCF915050405AF041F0882332F0B2 -:105DA000660F771F881F91505040C1F7939530C000 -:105DB0008695779567959F5FD9F7F8CF990F00087B -:105DC000550FAA0BE0E8FEEF16161706E807F907CD -:105DD000C0F012161306E407F50798F0621B730B68 -:105DE000840B950B39F40A2661F0232B242B252BE9 -:105DF00021F408950A2609F4A140A6958FEF811D8C -:105E0000811D089597F99F6780E870E060E008952C -:105E10009F3F31F0915020F4879577956795B7951E -:105E2000880F911D9695879597F908959FEF80ECBF -:105E3000089500240A9416161706180609060895F0 -:105E400000240A9412161306140605060895092E56 -:105E50000394000C11F4882352F0BB0F40F4BF2BC5 -:105E600011F460FF04C06F5F7F4F8F4F9F4F089505 -:105E700057FD9058440F551F59F05F3F71F04795FB -:105E8000880F97FB991F61F09F3F79F087950895E0 -:105E9000121613061406551FF2CF4695F1DF08C0FF -:105EA000161617061806991FF1CF8695710561051C -:105EB00008940895E894BB2766277727CB0197F9C4 -:105EC00008957CDF08F48FEF08950BD0C0CFB1DFC9 -:105ED00028F0B6DF18F0952309F094CFA7CF11244E -:105EE000EACFC6DFA0F3959FD1F3950F50E0551F81 -:105EF000629FF001729FBB27F00DB11D639FAA271F -:105F0000F00DB11DAA1F649F6627B00DA11D661F6D -:105F1000829F2227B00DA11D621F739FB00DA11D8E -:105F2000621F839FA00D611D221F749F3327A00D48 -:105F3000611D231F849F600D211D822F762F6A2FE4 -:105F400011249F5750408AF0E1F088234AF0EE0F69 -:105F5000FF1FBB1F661F771F881F91505040A9F776 -:105F60009E3F510570F04ECFA6CF5F3FECF3983EB9 -:105F7000DCF3869577956795B795F795E7959F5FDD -:105F8000C1F7FE2B880F911D9695879597F9089577 -:105F9000FA01EE0FFF1F30962105310599F16115C9 -:105FA000710561F48038BFE39B0749F1689490382C -:105FB000810561F08038BFEF9B0741F0992342F5DE -:105FC000FF3FE1053105210511F1E8940894E795BB -:105FD000D901AA2329F4AB2FBE2FF85FD0F310C04C -:105FE000FF5F70F4A695E0F7F73950F019F0FF3A2B -:105FF00038F49F779F930CD00F9007FC905808952A -:106000003EF014CF60E070E080E89FE308954FE732 -:106010009F775F934F933F932F939ED02F913F9104 -:106020004F915F9152DF05C019F40EF0EBCE42CFD5 -:10603000FDCE26DFC8F39638C0F707F80F92E89434 -:106040002BE33AEA48EB5FE74EDF0F920F920F9295 -:106050004DB75EB70F92C0D0E4E3F1E016D04F9198 -:106060005F91EF91FF91E595EE1FFF1F49F0FE57FD -:10607000E0684427EE0F441FFA95E1F74195550B70 -:1060800032D00F9007FE26C00895DF93CF931F9361 -:106090000F93FF92EF92DF927B018C01689405C011 -:1060A000DA2EEF011EDFFE01E894A59125913591CE -:1060B00045915591AEF3EF0106DDFE019701A80170 -:1060C000DA9479F7DF90EF90FF900F911F91CF91C5 -:1060D000DF9108959B01AC0160E070E080E89FE3F0 -:1060E00049CD90CE95CECCDEE8F39923D9F3940F29 -:1060F000511DBBF39150504094F059F0882332F079 -:10610000660F771F881F91505040C1F79E3F510581 -:1061100044F7880F911D9695879597F908955F3FED -:10612000ACF0983E9CF0BB27869577956795B79520 -:1061300008F4B1609395C1F7BB0F58F711F460FFF5 -:10614000E8CF6F5F7F4F8F4F9F4FE3CFB4CE0EF0FE -:106150005FCE6CCE689456CE93DEC8F39923D1F30C -:10616000C6F3DF93CF931F930F93FF92C92FDD27C1 -:1061700088232AF02197660F771F881FDAF720E01F -:1061800030E040E85FEB9FE3883920F0803E30F05C -:1061900021968F7787DCECE5F1E003C083DCE9E84A -:1061A000F1E073DF8B01BE01EC01FB2E6F5771092B -:1061B0007595771F880B990B78DD28E132E741E36D -:1061C0005FE38FDEAF2D9801AE01FF900F911F911D -:1061D000CF91DF9178DC3BCEFA01DC01AA0FBB1F27 -:1061E0009B01AC01BF5728F422273327442750785E -:1061F0001FC0B75188F4AB2F0024469537952795DB -:10620000011CA395D2F3002069F0220F331F441F15 -:10621000B395DAF30DD045CC61307105A0E88A075B -:10622000B94630F49B01AC01662777278827907820 -:10623000309621F020833183428353830895AA1B33 -:10624000BB1B51E107C0AA1FBB1FA617B70710F061 -:10625000A61BB70B881F991F5A95A9F78095909593 -:10626000BC01CD01089597FB072E16F4009407D0CA -:1062700077FD09D00E941F3107FC05D03EF49095B0 -:1062800081959F4F0895709561957F4F0895EE0F0A -:10629000FF1F0590F491E02D0994F999FECF92BD6E -:1062A00081BDF89A992780B50895A8E1B0E042E051 -:1062B00050E00C947531262FF999FECF92BD81BD27 -:1062C000F89A019700B4021639F01FBA20BD0FB634 -:1062D000F894FA9AF99A0FBE08950196272F0E9412 -:1062E0005C310C945B31DC01CB01FC01F999FECFF0 -:1062F00006C0F2BDE1BDF89A319600B40D9241504E -:0A6300005040B8F70895F894FFCF5D -:10630A0000005C440000004148F17644000000416E -:10631A005C978A44000000411FD592440000004166 -:10632A0052D0A444000000415CFFB8440000004180 -:10633A000AA7CF44000000410000DC4400000041ED -:10634A00A4D0A443000000417BD492430000004142 -:10635A007BD4924300000041A4D0A4430000004132 -:10636A00A4D02444000000411FD51244000000417B -:10637A001FD5124400000041A4D02444000000416B -:10638A00A4F076430000004100005C430000004195 -:10639A0000005C4300000041A4F076430000004185 -:1063AA00A4D082430000C0417BD492430000004144 -:1063BA00A4D0A4430000C041A4D0824300000041FD -:1063CA00A4D0A44300008041A4D0824300008041AD -:1063DA00A4D0A443000080411FD51244000080418C -:1063EA00A4D024440000804100D00244000080412F -:1063FA00A4D08243000080410000C44300008041D1 -:10640A000AA7CF44000000410000DC44000000411C -:10641A00000000000000804052D0244500004041A6 -:10642A0000000000000080400AA74F4500004041DC -:10643A000AA7CF44000000410000DC4400000041EC -:10644A00000000000000804052D0244500000041B6 -:10645A0000000000000080405CFF38450000004159 -:10646A00000000000000804052D024450000004196 -:10647A000AA7CF44000000410000DC4400000041AC -:10648A00000000000000804052D0244500008041F6 -:10649A00A4F0F6430000C0417BD4924300000041BF -:1064AA0048F176440000804100005C44000000424C -:1064BA005CFF434400008041A4F0F6430000C04161 -:1064CA001FD51244000000415CFF43440000804194 -:1064DA005CFF384400000042A4D0A443000080417D -:1064EA00A4D0A44300008041719DAE4300008041C6 -:1064FA000000C443000080410000C4430000804102 -:10650A00719DAE4300008041A4D0A44300008041A5 -:10651A007BD4924300008041A4D082430000804192 -:10652A00A4D08243000080417BD492430000804182 -:10653A00A4D0A44300008041A4D0A4430000C041D9 -:10654A007BD49243000000417BD492430000004276 -:10655A00640007000CFF0000003F644A13D813B51B -:10656A001381134D13010130052808140A321E0045 -:10657A0002040507090B0C0E1011131517181A1C23 -:10658A001D1F2123242628292B2D2F30323435375D -:10659A00393B1F0F03764F5F6F7F4969437909596A -:1065AA0053633149803F5D8B803FF8BF803FCAE12A -:1065BA00803F73ED803FCAE1803FF8BF803F5D8B2B -:1065CA00803F3149803F0000803FF16D7F3F75EA8F -:1065DA007E3F4C827E3F833F7E3F84287E3F833FBF -:1065EA007E3F4C827E3F75EA7E3FF16D7F3F000021 -:1065FA00803F3F4D36398F0642060C06D3056605A5 -:10660A007F059805B105010203040506070809007C -:00000001FF diff --git a/keyboard/planck/keymaps/tak3over/compiled.hex b/keyboard/planck/keymaps/tak3over/compiled.hex deleted file mode 100644 index 0eec0b65c7..0000000000 --- a/keyboard/planck/keymaps/tak3over/compiled.hex +++ /dev/null @@ -1,1456 +0,0 @@ -:100000000C94C1020C9405030C9405030C94050395 -:100010000C9405030C9405030C9405030C94050340 -:100020000C9405030C9405030C94B2140C948415E1 -:100030000C94E6220C9405030C9405030C94050320 -:100040000C9405030C9467030C9405030C940503AE -:100050000C9405030C944E230C9405030C94050397 -:100060000C9405030C9405030C9405030C940503F0 -:100070000C9405030C9405030C9405030C940503E0 -:100080000C94270B0C9405030C9405030C940503A6 -:100090000C9405030C9405030C9405030C940503C0 -:1000A0000C9405030C9405030C940503F115131629 -:1000B00001171316011758167B160117D016E316F1 -:1000C000CD19CD19FC19FC193B1A5B1AB11BB11BD8 -:1000D000661AB11B161B161B7D1B861BB11BAB1BA7 -:1000E000231B231B231B231B231B231B231B231B20 -:1000F000231B231B231B231B231B231B231B231B10 -:10010000331B411B481B4F1B591B07634236B79BD0 -:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 -:100120005763BD6DEDFD753EF6177231BF000000DF -:10013000803F08000000BE922449123EABAAAA2AC2 -:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD -:1001500000000000BF000000803F00000000000819 -:100160004178D3BB4387D1133D190E3CC3BD4282B6 -:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 -:10018000FFBE01C4FF7F3F00000000000000000030 -:1001900000000000000000010204060A0F17202CD6 -:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 -:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF -:1001C0000201000000000000000000002B001400ED -:1001D0001A000800150017001C0018000C0012007F -:1001E00013002A00290004001600070009000A0075 -:1001F0000B000D000E000F0033003400E1001D0065 -:100200001B00060019000500110010003600370021 -:1002100038002800E000E200E300045202522C0003 -:100220002C0003525000510052004F002B001400CC -:100230001A00090013000A000D000F0018001C002E -:1002400033002A00290004001500160017000700DB -:100250000B00110008000C0012003400E1001D002A -:100260001B000600190005000E00100036003700C4 -:1002700038002800E000E200E300045202522C00A3 -:100280002C0003525000510052004F0035021E0254 -:100290001F0220022102220223022402250226023A -:1002A00027022A000100005049004A004B00015378 -:1002B00050002D002E002F003000310001000030D2 -:1002C0004C004D004E0000534C002D022E022F0218 -:1002D00030020100010001000100010001000100E5 -:1002E00001000100010001000100010035001E00B5 -:1002F0001F002000210022002300240025002600EA -:1003000027002A0001003A003B003C003D003E006F -:100310003F002D002E002F00300031020100400070 -:10032000410042004300440045002D022E022F02EE -:100330003002010001000100010001000100010084 -:1003400001000100010001000100010035001E0054 -:100350001F00200021002200230024002500260089 -:1003600027002A000100E7001B00060019001D00FD -:100370005000510052004F004C0031000100E400D9 -:100380001B00060019001D00AB00A800AA00A90070 -:10039000AE000100010001000100010001000100A8 -:1003A00001000100010001000100010028035400C8 -:1003B00068006500200050006C0061006E00630062 -:1003C0006B0020004B006500790062006F00610047 -:1003D0007200640000002C034F007200740068007B -:1003E0006F006C0069006E00650061007200200003 -:1003F0004B006500790062006F00610072006400CC -:10040000730000000403090409026D00040100A048 -:10041000FA09040000010301010009211101000192 -:10042000223F000705810308000A090401000103B7 -:10043000010200092111010001224D00070582037C -:1004400008000A090402000103000000092111014B -:1004500000012236000705830308000A090403008F -:1004600001030000000921110100012239000705E4 -:1004700084031000011201100100000008EDFE606D -:100480006001000102000105010906A1010507192B -:10049000E029E71500250195087501810205081975 -:1004A00001290595057501910295017503910105D5 -:1004B000071900297715002501957875018102C07B -:1004C00005010980A101850216010026B7001A0165 -:1004D000002AB700751095018100C0050C0901A123 -:1004E000018503160100269C021A01002A9C027550 -:1004F0001095018100C005010902A1010901A100B7 -:1005000005091901290515002501950575018102C7 -:100510009501750381010501093009311581257F98 -:1005200095027508810609381581257F95017508A2 -:100530008106050C0A38021581257F950175088111 -:1005400006C0C005010906A101050719E029E71544 -:100550000025019508750181029501750881010545 -:1005600008190129059505750191029501750391F9 -:10057000010507190029FF150025FF95067508815B -:1005800000C011241FBECFEFDAE0DEBFCDBF04B63E -:1005900003FE24C080911E0390911F03A0912003AD -:1005A000B09121038730904BA740B04BB9F4109223 -:1005B0001E0310921F03109220031092210314BEF9 -:1005C00084B7877F84BF88E10FB6F894809360007A -:1005D000109260000FBEE0E0F8E3099511E0A0E0A2 -:1005E000B1E0E6E2FAE502C005900D92A03CB10749 -:1005F000D9F713E0A0ECB1E001C01D92AE31B10714 -:10060000E1F70E94F8110C94112D0C94000008954C -:10061000089581E0089508950C9408030C9409034B -:100620000C940B030E94DB2823E030E0281B3109E7 -:10063000220F2093C4010895282F2F9880918000C5 -:10064000211108C0877F8093800010928D00109246 -:100650008C001BC0886080938000233019F48FEFDA -:100660009FEF0FC083E090E0821B9109880F991FD4 -:100670002FEF3FEFA90102C0569547958A95E2F703 -:10068000CA0190938D0080938C000C9412030E94F9 -:10069000120384E08093C3011092C0010895279A49 -:1006A0002F988FEF9FEF90938700809386008AE0CA -:1006B0008093800089E1809381000E9444280C94FB -:1006C00047030E944F036E9A769A0C9407031F9279 -:1006D0000F920FB60F9211242F933F938F939F93F6 -:1006E000EF93FF93E091C101F091C201CF01019618 -:1006F0009093C2018093C1010090C30102C0F6959E -:10070000E7950A94E2F7EF738091C001823019F403 -:10071000E03251F404C0813039F4EF3329F4809190 -:100720006F008D7F80936F00F0E0E457FE4FE491FF -:1007300021E031E0E29FC001E39F900D1124009081 -:10074000C40102C0969587950A94E2F790938D00B4 -:1007500080938C00FF91EF919F918F913F912F910A -:100760000F900FBE0F901F90189561110DC0FC01E6 -:100770008281882331F085EE0E9471180E949B28A7 -:1007800003C085EE0E94391980E090E0089581E071 -:1007900008950C94C70308950C9461038091150289 -:1007A000882309F448C08091D1019091D20100972B -:1007B00079F40E9418239093D2018093D101809103 -:1007C000D30190E0009771F48091D40190E00AC0C9 -:1007D0000E9424232091000130910101281739073C -:1007E00040F329C00197880F991F880F991FFC01BA -:1007F000EB52FE4F60817181828193810E948D0A4C -:10080000E091D30184E0E89FF0011124EB52FE4F08 -:1008100060817181828193814FE050E00E94450E9A -:100820008091D30190E001966091D40170E00E9424 -:10083000C12C8093D3010C940C03109217020C94DA -:100840005A0A0895089581E0809317020C942204B7 -:10085000089508958F929F92AF92BF92EF92FF9268 -:100860000F931F93CF93DF93CDB7DEB7A3970FB648 -:10087000F894DEBF0FBECDBF7C01FC010081118169 -:10088000C8010E941521B8010E942C068C01B701F5 -:100890000E94C903882309F4CCC10032F0E51F0788 -:1008A00041F4F7018281882309F458C00E94A90EFF -:1008B000C0C10132F0E51F0741F4F70182818823AE -:1008C00009F44CC00E94B20EB4C10232F0E51F0719 -:1008D00051F4F7018281882309F440C00E94A50EDB -:1008E0008111F0CFE3CF0332F0E51F0739F4F701B0 -:1008F0008281882399F10E9423049BC10432F0E590 -:100900001F0739F4F7018281882341F10E941D04F9 -:1009100090C10532F0E51F0749F4F7018281882371 -:10092000E9F0809117028111F1CFE5CF0632F0E5B1 -:100930001F0739F4F7018281882381F00E94B90EE4 -:100940000AC00732F0E51F0749F4F70182818823C6 -:1009500029F00E94C40E0E9429046BC180911702E5 -:10096000811105C0F70182818111CFC018C1003EFD -:10097000110579F4F7018281882309F44DC00E94A2 -:100980005A0A81E080931602109215021092D40147 -:1009900050C1023E110559F4F70182818823E1F12B -:1009A0000E945A0A109216021092150242C1033E8A -:1009B000110591F4F7018281882371F10E945A0A8E -:1009C0001092160281E0809315021092D3011092CA -:1009D000D2011092D1012DC10235110559F4F70150 -:1009E0008281882309F425C1809100019091010141 -:1009F0000A970DC00135110579F4F701828188232A -:100A000009F417C180910001909101010A96909319 -:100A10000101809300010DC14091040183E2EFE1E7 -:100A2000F1E0DE01119601900D928A95E1F7F70150 -:100A3000808121E030E02C0F3D1F280F311DC901BE -:100A40002091020130910301FC01E20FF31F60814C -:100A5000772767FD7095640F711D882777FD809556 -:100A6000982F0E94E32920E030E040E451E40E9406 -:100A700048294B015C01F701218184E090E0821B51 -:100A80009109BC01882777FD8095982F0E94E32962 -:100A90009B01AC01C501B4010E94E0289B01AC019F -:100AA00060E070E080E090E40E94562B20E030E0AF -:100AB0004CED50E40E94F32A4B015C01F701828166 -:100AC0008823D1F04FE050E0C501B4010E94450EEB -:100AD000809116028823A1F08091D40124E0829FA6 -:100AE000F0011124EB52FE4F80829182A282B382E8 -:100AF0008F5F8093D40104C0C501B4010E948D0AA8 -:100B00000F3F110508F02ECF94C08091D0018111C4 -:100B10001FC0043130E5130709F051C00E94CB0318 -:100B200081E08093D0010E9418239093CF0180939D -:100B3000CE011092C7011092C9011092C801109203 -:100B4000CB011092CA011092CD011092CC0171C05C -:100B50008091CE019091CF010E942423883C910581 -:100B600070F48091C701E82FF0E0EE0FFF1FE8530B -:100B7000FE4F118300838F5F8093C7015AC00438F2 -:100B800080E5180721F00538104501F13AC0F7015A -:100B90008281882341F01092C50182E01EC0043892 -:100BA00030E5130759F58091C501811106C086E231 -:100BB0000E94711886E20E94391982E01CC0043834 -:100BC000F0E51F0741F305381045D9F4F70182819C -:100BD000882331F01092C60180E20E94881929C052 -:100BE0008091C601811106C087E20E94711887E2D8 -:100BF0000E94391980E20E948F191BC005381045E8 -:100C000029F381E08093C5018093C601C701A396B3 -:100C10000FB6F894DEBF0FBECDBFDF91CF911F910D -:100C20000F91FF90EF90BF90AF909F908F900C949A -:100C30000E0380E0A3960FB6F894DEBF0FBECDBFC3 -:100C4000DF91CF911F910F91FF90EF90BF90AF90E8 -:100C50009F908F90089508959CE0799FF001112452 -:100C600090E3899FE00DF11D1124E60FF11DEE0FB9 -:100C7000FF1FE453FE4F859194910895880F991FAB -:100C8000FC01E45BFF4F859194910895880F991FB3 -:100C9000FC01E453FE4F8591949108950F931F93A7 -:100CA000CF93DF93EC01811521E39207A0F5C115E5 -:100CB00080E3D80708F0D7C0C83ED105D8F4C03EBD -:100CC000D10508F007C2C83AD10578F4C53AD10574 -:100CD00008F06AC0C130D10509F463C008F4F7C157 -:100CE000C430D10508F0F6C1F2C1CB3BD10508F400 -:100CF00066C0EDC1C11590E2D90708F0AFC0C115BB -:100D000021E0D20708F0E6C1C03FD10508F4DFC1F9 -:100D10008E0110651FC2C03880E5D80700F5C037C6 -:100D200090E5D90708F0A3C0C11520E5D20709F462 -:100D3000ACC050F4CE01905480319F4008F0C7C140 -:100D4000DF708E01106A06C2C13080E5D80709F451 -:100D5000AEC0C43190E5D90708F4AFC0B8C1C338FC -:100D600020E5D20709F48EC050F4C13890E5D907C8 -:100D700009F482C008F083C000E011EDEBC1C0317E -:100D800081E5D80708F4A3C1C11597E5D90708F490 -:100D900036C1CE0190578115904108F098C1DF709F -:100DA00093C101E010E0D6C1C53AD10509F494C160 -:100DB000C63AD10509F093C102E810E4CBC1C83AA4 -:100DC000D10509F48FC1C93AD10509F48EC1CA3AD7 -:100DD000D10509F48DC1CB3AD10509F48CC1CC3AC7 -:100DE000D10509F48BC1CD3AD10509F48AC1C03BC4 -:100DF000D10509F489C1CE3AD10509F488C1CF3AA9 -:100E0000D10509F487C1C13BD10509F486C1C23BB4 -:100E1000D10509F485C1C33BD10509F484C1C43BA4 -:100E2000D10509F483C1C53BD10509F482C1C63B94 -:100E3000D10509F481C1C73BD10509F480C1C83B84 -:100E4000D10509F47FC1C93BD10509F47EC1CA3B74 -:100E5000D10509F47DC100E014E47CC1CE019F708E -:100E60000E94460678C1DD278E01106C73C1CF70D9 -:100E7000DD278E01146D6EC100E010ED6BC100E046 -:100E800012ED68C100E013ED65C10E941C1C0E94B8 -:100E90005A0A0E9421048FEF94E32CE08150904085 -:100EA0002040E1F700C000000E94732353C18091ED -:100EB000F20281608093F2024DC10E94D42381111D -:100EC00002C00E94B0230E94E72390E090931D038C -:100ED00080931C03C23080E5D80721F480911C0365 -:100EE000816086C0C43090E5D90721F480911C034D -:100EF00082607EC0C63020E5D20721F480911C03B9 -:100F0000846076C0C83080E5D80719F480911C034E -:100F100027C0CA3090E5D90721F480911C03806175 -:100F200067C0CC3020E5D20721F480911C03806299 -:100F30005FC0CE3080E5D80721F480911C03806427 -:100F400057C0C03190E5D90721F480911C03806817 -:100F50004FC0C23120E5D20729F480911C03846080 -:100F6000886046C0C33080E5D80721F480911C0317 -:100F70008E7F3EC0C53090E5D90721F480911C03D7 -:100F80008D7F36C0C73020E5D20721F480911C0345 -:100F90008B7F2EC0C93080E5D80719F480911C03DF -:100FA00026C0CB3090E5D90721F480911C038F7EB9 -:100FB0001FC0CD3020E5D20721F480911C038F7D26 -:100FC00017C0CF3080E5D80721F480911C038F7BB8 -:100FD0000FC0C13190E5D90721F480911C038F77B0 -:100FE00007C0C331D04531F480911C038B7F877FCC -:100FF00080931C0380911C030E94EB23ABC08D2FB8 -:1010000099278F70992781309105D9F49E0123701B -:10101000332702C0880F991F2A95E2F79C688E013A -:1010200044E0000F111F4A95E1F700271370802B51 -:10103000912B53E0CC0FDD1F5A95E1F7C076DD27E9 -:101040002FC08230910531F4DC2FCC278E01016F47 -:10105000106A80C08330910569F4CE0183709927AE -:1010600001E010E002C0000F111F8A95E2F7C801ED -:101070009C680FC084309105B9F4CE018370992724 -:1010800001E010E002C0000F111F8A95E2F7C801CD -:101090009A6823E0CC0FDD1F2A95E1F7C07ED77058 -:1010A0008C010C2B1D2B56C08530910531F4DC2FA3 -:1010B000CC278E01046F106A4DC0069709F04AC014 -:1010C000CF71DD27DC2FCC278E01106243C000E0FA -:1010D00010E040C08E013EC001E810E43BC003E8D0 -:1010E00010E438C002EE14E435C009EE14E432C056 -:1010F0000AEE14E42FC005EB14E42CC006EB14E454 -:1011000029C007EB14E426C00CEC14E423C00DEC5A -:1011100014E420C003E815E41DC00AE815E41AC071 -:1011200002E915E417C004E915E414C001E216E46D -:1011300011C003E216E40EC004E216E40BC005E29F -:1011400016E408C006E216E405C007E216E402C091 -:101150000AE216E4C801DF91CF911F910F91089523 -:101160009CE0799FF001112490E3899FE00DF11D2F -:101170001124E60FF11DEE0FFF1FE453FE4F859182 -:101180009491803E9105E0F4803C910558F58133BF -:10119000910509F46FC048F48932910509F463C0E0 -:1011A0008A32910509F46DC072C089339105E9F066 -:1011B00082389105D1F08533910509F44DC067C09F -:1011C000833E910581F138F4803E9105B9F0823E6D -:1011D0009105D9F05CC0863E910561F1873E91058D -:1011E000A1F155C00E943E06089520911C0320FDE8 -:1011F00002C021FF4CC080EE90E049C080911C03EA -:1012000080FFF9CF89E390E042C080911C0382FF08 -:101210000EC080911C0384FF03C080E090E037C0C3 -:1012200083EE90E034C080911C0382FFF2CF82EE07 -:1012300090E02DC080911C0383FF0BC080911C03A4 -:1012400084FDEBCF87EE90E022C080911C0383FFEA -:10125000F5CF86EE90E01BC080911C0385FF07C090 -:1012600089E290E014C080911C0385FFF9CF85E3EB -:1012700090E00DC080911C0386FF07C08AE290E0D9 -:1012800006C080911C0386FFF9CF81E390E00E94A5 -:101290004E0608950C941003E82FF0E0E25BFE4F39 -:1012A0008081E82FEF70F0E082958F7021E030E0D0 -:1012B000A90102C0440F551F8A95E2F740A3089583 -:1012C0000F931F93CF93DF9385B7806885BF85B752 -:1012D000806885BFC3E0D0E001E010E0FE01E25B82 -:1012E000FE4F8081E82FEF70F0E021A182958F7092 -:1012F000A80102C0440F551F8A95E2F7CA01822B4C -:1013000081A38C2F0E944C09219740F78BE090E03D -:1013100061E070E0FC01EE5BFE4F2081E22FEF7098 -:10132000F0E042A122952F70DB0102C0AA0FBB1F83 -:101330002A95E2F79D01242B22A3019758F7DF910C -:10134000CF911F910F910C94CC03EF92FF920F93CA -:101350001F93CF93DF9300E212E0C3E0EE24E39407 -:10136000F12CD5E08C2F0E944C098BE090E040E0FE -:1013700050E0FC01EE5BFE4F6081E62FEF70F0E085 -:1013800020A130E062956F7002C0359527956A956F -:10139000E2F720FD09C09701082E02C0220F331F7B -:1013A0000A94E2F7422B532B019718F7F801929118 -:1013B00082918F018417950721F051834083D09348 -:1013C00005018C2F0E944C09C15060F680910501E7 -:1013D00087FD2CC08150809305018F3F39F08FE944 -:1013E0009FE00197F1F700C0000020C080911E022D -:1013F00090911F02909327028093260280911C02F5 -:1014000090911D02909325028093240280911A02EC -:1014100090911B02909323028093220280911802E4 -:101420009091190290932102809320020E94CE0392 -:1014300081E0DF91CF911F910F91FF90EF90089580 -:10144000E82FF0E0EE0FFF1FE05EFD4F80819181FD -:10145000089508950F931F93CF9308E212E0C0E020 -:10146000F801929182918F010E949022C80FF2E0C0 -:1014700000321F07A9F78C2FCF911F910F9108956C -:101480000E94D423811102C00E94B0230E94F9233C -:10149000809307033E9A809171008D7F8093710045 -:1014A00082E0809390008AE18093910081E08093B4 -:1014B0002A02089580912A02811102C00E94400AE6 -:1014C00010927A0210927902809171008D7F809340 -:1014D0007100809190008F738093900010923C0275 -:1014E00010923B02109273021092740210927502D5 -:1014F000109276021092720210927102E1E5F2E00F -:10150000A1E4B2E011921192119211921D921D92DA -:1015100082E0E137F807B1F70895CF92DF92EF92BA -:10152000FF920F931F93CF93DF9320913B022223CF -:1015300009F484C06B017C0180912A02811102C0F0 -:101540000E94400A01E712E0C7E0D0E0A70196013F -:10155000F80192918291729162918F010E944429C7 -:10156000811131C0FE01EE0FFF1FEE0FFF1FEF5A7A -:10157000FD4F1082118212821382DE01AA0FBB1F5F -:10158000AF5BBD4F11961C921E92C730D105E9F09A -:10159000219644815581668177814083518362839E -:1015A0007383148215821682178212968D919C91F4 -:1015B000139711969C938E9313961C921E921297DA -:1015C00034961296E2CF219708F680917902909195 -:1015D0007A02019797FD05C090937A028093790271 -:1015E00004C010927A02109279028091790290914F -:1015F0007A0220917702309178022817390724F077 -:101600001092780210927702892BC1F480917100B8 -:101610008D7F80937100809190008F7380939000F4 -:101620001092730210927402109275021092760258 -:10163000109272021092710210923B02DF91CF91D0 -:101640001F910F91FF90EF90DF90CF9008951F9220 -:101650000F920FB60F9211244F925F926F927F926A -:101660008F929F92AF92BF92CF92DF92EF92FF92B2 -:101670002F933F934F935F936F937F938F939F939A -:10168000AF93BF93CF93DF93EF93FF9380913B0290 -:10169000882309F49BC1C0917902D0917A021C166B -:1016A0001D060CF093C140902B0250902C026090CC -:1016B0002D0270902E0220E030E0A901C301B2019A -:1016C0000E94EF2A18160CF065C0C130D10509F44C -:1016D00052C08091770290917802BE010E94C12C85 -:1016E0007C01909378028093770280903D029090E5 -:1016F0003E02A0903F02B090400220E030E040E87F -:101700005FE3C501B4010E94E02860933D0270933D -:101710003E0280933F0290934002F701EE0FFF1FBD -:10172000EE0FFF1FEF5AFD4FA301920160817181FF -:10173000828193810E94482920E030E040E05EE30E -:101740000E94F32A9B01AC01C501B4010E94EF2A5B -:1017500018168CF4C7010196BE010E94C12C90930B -:1017600078028093770210923D0210923E0210920E -:101770003F0210924002E0917702F0917802EE0F62 -:10178000FF1FEE0FFF1FEF5AFD4F608171818281B5 -:101790009381D0C0C0907302D0907402E090750223 -:1017A000F090760220E030E0A901C701B6010E9466 -:1017B00044292197882309F4A2C0FE01EE0FFF1FE0 -:1017C000EE0FFF1FEF5AFD4F80809180A280B38003 -:1017D000A5019401C701B6010E94442987FF31C0C9 -:1017E000A501940160E070E08CED93EC0E94482923 -:1017F00020E030E040E451E40E94482920E030E05D -:1018000040E05FE30E94F32A9B01AC0160E070E0DE -:1018100080E090E40E94562B9B01AC01C501B4010D -:101820000E94F32A9B01AC01C701B6010E94442922 -:1018300087FF07C0A701960160E070E08CED93E49C -:1018400039C0A5019401C701B6010E94EF2A1816FC -:101850000CF055C0A501940160E070E08CED93E4BC -:101860000E94482920E030E040E451E40E944829E9 -:1018700020E030E040E05FE30E94F32A9B01AC01EE -:1018800060E070E080E090E40E94562B9B01AC0188 -:10189000C501B4010E94F32A9B01AC01C701B60146 -:1018A0000E94EF2A18165CF5A701960160E070E02F -:1018B0008CED93EC0E94482920E030E040E451E4B4 -:1018C0000E94482920E030E040E05FE30E94F32AD4 -:1018D0009B01AC0160E070E080E090E40E94562B38 -:1018E0009B01AC01C701B6010E94F32A6093730209 -:1018F00070937402809375029093760213C0FE0178 -:10190000EE0FFF1FEE0FFF1FEF5AFD4F80819181F9 -:10191000A281B3818093730290937402A0937502A5 -:10192000B093760260917302709174028091750297 -:101930009091760220912802309129022F3F4FEF9B -:10194000340731F02F5F3F4F309329022093280254 -:101950000E94CF0E6B017C0120E034E244EF51E4A1 -:101960000E94442987FF08C086EFC82E88E2D82E3F -:1019700084EFE82E81E4F82E20E030E040E051E4EE -:10198000C701B6010E94F32A9B01AC0160E074E23A -:1019900084E79BE40E9448296B017C010E94B529E1 -:1019A0007093970060939600209106013091070193 -:1019B0004091080150910901C701B6010E94F32A24 -:1019C0000E94B529709399006093980080913C0221 -:1019D000882309F433C1C0903702D0903802E090D8 -:1019E0003902F0903A0220E030E0A901C701B601C7 -:1019F0000E94EF2A1816D4F58091280290912902AE -:101A00008F3F2FEF920729F0019690932902809340 -:101A10002802C701B6010E94CF0E20E030E040E06E -:101A200051E40E94F32A9B01AC0160E074E284E778 -:101A30009BE40E9448296B017C010E94B5297093A8 -:101A40009700609396002091060130910701409124 -:101A5000080150910901C701B6010E94F32A0E94B2 -:101A6000B529709399006093980008C01092970070 -:101A70001092960010929900109298006091310295 -:101A8000709132026F5F7F4F709332026093310228 -:101A9000209196003091970080E090E0232BF1F0A8 -:101AA000C0919600D09197000E94E1296B017C01C2 -:101AB000BE0180E090E00E94E1299B01AC016091B1 -:101AC00033027091340280913502909136020E9467 -:101AD000482920E03FEF4FE757E410C00E94E1297A -:101AE0006B017C0120E030EE4FEF54E46091330253 -:101AF0007091340280913502909136020E94F32A4F -:101B00009B01AC01C701B6010E94EF2A87FD96C078 -:101B100080912F028F5F80932F0290E0209103032A -:101B20003091040382179307A0F080910E0388235D -:101B300019F010922F020DC0809171008D7F80935B -:101B40007100809190008F738093900010923C02FE -:101B50007DC080913002C0912F02811128C0C090B9 -:101B60000803D0900903E0900A03F0900B0320E0F3 -:101B700030E0A901C701B6010E94EF2A1816BCF493 -:101B800081E0809330021092370210923802109256 -:101B9000390210923A02C0923302D0923402E0929B -:101BA0003502F0923602C150C0932F0243C010920A -:101BB00030021092290210922802E0910503F09160 -:101BC000060348E0C49FE00DF11D1124808191813E -:101BD000A281B3818093370290933802A093390297 -:101BE000B0933A0220E030E040E85EE36481758122 -:101BF000868197810E94F32A6B017C0180910A0102 -:101C0000682F70E080E090E00E94E12920E030E061 -:101C100048EC52E40E9448299B01AC01C701B6017F -:101C20000E94F32A6093330270933402809335024A -:101C30009093360210923202109231028091070383 -:101C400080FD04C010923C0210923B02FF91EF9184 -:101C5000DF91CF91BF91AF919F918F917F916F91C4 -:101C60005F914F913F912F91FF90EF90DF90CF9038 -:101C7000BF90AF909F908F907F906F905F904F90AC -:101C80000F900FBE0F901F901895CF92DF92EF929A -:101C9000FF92CF93DF936B017C01EA0180912A02CE -:101CA000811102C00E94400A8091070380FF46C054 -:101CB0008091790290917A0208970CF03FC0809150 -:101CC00071008D7F8093710080913C0281110E9490 -:101CD0005A0A81E080933B02109229021092280256 -:101CE00020E030E0A901C701B6010E94EF2A1816D2 -:101CF000DCF48091790290917A02FC01EE0FFF1FD3 -:101D0000EE0FFF1FEF5AFD4FC082D182E282F382B5 -:101D1000FC01EE0FFF1FEF5BFD4FD183C0830196E7 -:101D200090937A028093790280917100826080930F -:101D3000710080919000806880939000DF91CF9136 -:101D4000FF90EF90DF90CF9008958091070381700E -:101D50000895809107038160809307030E94FD230B -:101D60000C942804809107038E7F809307030C94C2 -:101D7000FD2380917B0290E0019666E070E00E9476 -:101D8000C12C80937B02089580917B0290E00197A3 -:101D900066E070E00E94C12C80937B0208958F92D0 -:101DA0009F92AF92BF92CF92DF92EF92FF920F93EA -:101DB0001F93CF93DF936B017C01C0912802D091D8 -:101DC0002902BE0180E090E00E94E1294B015C0104 -:101DD000A701960160E070E08CE594E40E94482938 -:101DE0009B01AC01C501B4010E94F32A0E94B529F0 -:101DF00020917B02233009F473C028F4222351F090 -:101E00002130E9F02CC1243009F4A0C0253009F4B8 -:101E1000E0C025C180E090E0A0E0BFE38093060130 -:101E200090930701A0930801B093090110922B022F -:101E300010922C0210922D0210922E0210C11092BC -:101E40002B0210922C0210922D0210922E0264315D -:101E5000710540F46A30710560F520E030E040E83B -:101E60005EE32BC0693C710508F0AAC080E090E0F9 -:101E70000E94E12920E030E040EA51E40E94DF289E -:101E800020E030E044E353E40E9448299B01AC0188 -:101E90000E94F32A20E030E040E05EE30E94F32A53 -:101EA0009B01AC0160E070E080E09EE30E94DF28CF -:101EB00044C020E030E040E05FE3C701B6010E948B -:101EC000F32A6B017C0180E090E0A0E0BEE3809308 -:101ED000060190930701A0930801B0930901BFC0C8 -:101EE00010922B0210922C0210922D0210922E02B0 -:101EF0004AE0469F9001479F300D1124C90168EBCD -:101F00007BE00E94AD2CBC016C5D754077FF03C087 -:101F1000719561957109882777FD8095982F0E94AA -:101F2000E3292EE333EC4EE259E30E94F32A20E04A -:101F300030E040EC5EE30E94E0286093060170937D -:101F40000701809308019093090189C010922B0228 -:101F500010922C0210922D0210922E02CE0183704C -:101F60009927892BE1F0BE016170772780E090E02E -:101F70000E94E12920E030E040E05EE30E94F32A85 -:101F800020E030E040E45FE30E94E0286093060137 -:101F90007093070180930801909309010CC080E0C1 -:101FA00090E0A0E0BFE38093060190930701A09327 -:101FB0000801B0930901C770DD27CD2B09F04FC090 -:101FC0001092060110920701109208011092090167 -:101FD00046C010922B0210922C0210922D021092E9 -:101FE0002E0200E010E020E03FE300930601109392 -:101FF000070120930801309309016739710578F1D1 -:1020000080E090E00E94E12920E030E047E153E4E5 -:102010000E94DF2820E030E04AE754E40E9448298B -:1020200020E030E048E452E40E94F32A20E030E06F -:1020300040EA51E40E94252A0E94B029660F771FCA -:10204000660F771FFB01EE5AFE4F208131814281DE -:102050005381C701B6010E94F32A6B017C01C701BD -:10206000B601DF91CF911F910F91FF90EF90DF901C -:10207000CF90BF90AF909F908F90089580918C02E9 -:102080000895CF93DF9300D01F92CDB7DEB79C01A8 -:1020900080911303843019F593E099833B832A835D -:1020A0009093E9008FEF9091E800815095FD06C074 -:1020B00095ED9A95F1F700008111F5CF8091E80038 -:1020C00085FF0DC040E050E063E070E0CE01019676 -:1020D0000E94A2128091E8008E778093E8000F9012 -:1020E0000F900F90DF91CF910895CF93DF9300D0A1 -:1020F0001F92CDB7DEB720911303243021F522E0E3 -:1021000029839B838A8383E08093E9008FEF9091FA -:10211000E800815095FD06C095ED9A95F1F7000015 -:102120008111F5CF8091E80085FF0DC040E050E0BF -:1021300063E070E0CE0101960E94A2128091E80057 -:102140008E778093E8000F900F900F90DF91CF91E2 -:102150000895209113032430F1F422E02093E90044 -:102160002FEF3091E800215035FD06C035ED3A954E -:10217000F1F700002111F5CF2091E80025FF0BC0F9 -:1021800040E050E065E070E00E94A2128091E8001B -:102190008E778093E8000895CF93DF93EC019091C0 -:1021A0001303943009F046C0809115018823D9F0BB -:1021B000809116018823B9F09093E9008FEF9091F8 -:1021C000E800815095FD06C095E19A95F1F7000071 -:1021D0008111F5CF8091E80085FF2CC040E050E0F0 -:1021E00060E170E017C081E08093E9008FEF90918B -:1021F000E800815095FD06C095ED9A95F1F7000035 -:102200008111F5CF8091E80085FF14C040E050E0D7 -:1022100068E070E0CE010E94A2128091E8008E7703 -:102220008093E80080E1FE01ACE7B2E001900D92FE -:102230008A95E1F7DF91CF91089580911203811182 -:1022400009C00E9437140E9494148091E2008460B7 -:102250008093E2000895109212030895089508955E -:102260000C94DB2242E061EC81E00E94B11342E079 -:1022700061EC82E00E94B11342E061EC83E00E94D5 -:10228000B11342E161EC84E00C94B1138091150329 -:10229000833009F455C030F4813071F0823009F494 -:1022A0008EC008958A3009F47AC08B3009F460C07A -:1022B000893009F09CC020C080911403813A09F054 -:1022C00096C08091E800877F8093E8008091180392 -:1022D00090911903892B21F460E18CE792E003C00F -:1022E00060E080E090E070E00E94ED128091E800F4 -:1022F0008B778093E800089580911403813209F070 -:1023000076C08091180390911903009719F00397F4 -:1023100009F06DC08091E800877F8093E80080918C -:10232000E80082FD05C0809113038111F8CF5FC0E2 -:102330008091F10080938C028091E8008B7753C0EC -:1023400080911403813A09F052C080911803909152 -:102350001903892B09F04BC08091E800877F809397 -:10236000E8008091E80080FFFCCF8091150136C025 -:10237000809114038132D9F580911803909119034B -:10238000892BA9F58091E800877F8093E8000E945F -:10239000E61380911603809315010C941C1C809108 -:1023A0001403813221F58091E800877F8093E80053 -:1023B0000E94E6138091170380938D020895809107 -:1023C0001403813AA1F48091E800877F8093E800AC -:1023D0008091E80080FFFCCF80918D028093F10016 -:1023E0008091E8008E778093E8000C94E6130895BE -:1023F00084B7877F84BF88E10FB6F894809360002C -:10240000109260000FBE90E080E80FB6F8948093C1 -:102410006100909361000FBE0E9489170E943714DB -:102420000E9494148091E20084608093E20078948A -:102430000E941A170E948B178BE091E00E943517BB -:1024400080911303853069F40E949C2280911103CE -:102450008823B1F30E94CA22882391F30E948C1230 -:10246000EFCF0E949317ECCF292F3327233031056C -:10247000C9F064F42130310581F02230310509F0D2 -:1024800043C08DE690E028E034E042C021323105BF -:10249000F1F02232310541F137C082E190E025E7C9 -:1024A00034E036C099278130910541F082309105A2 -:1024B00041F0892B49F5E4E0F4E005C0E6EDF3E0F6 -:1024C00002C0ECEAF3E0849190E09F0121C0643007 -:1024D000D8F4E62FF0E0EE0FFF1FE255FE4F20810B -:1024E000318189E090E014C0643070F470E0FB0149 -:1024F000EE0FFF1FEA55FE4F20813181FB01EE55A3 -:10250000FE4F808190E004C080E090E020E030E069 -:10251000FA0131832083089580E189BD82E189BD7C -:1025200009B400FEFDCF8091D8008F7D8093D80044 -:102530008091E00082608093E0008091E00081FD66 -:10254000FCCF0895CF92DF92EF92FF920F931F93EB -:10255000CF93DF93EC018B016A010E940514811176 -:1025600033C0C114D10439F0F60180819181081B78 -:10257000190BC80FD91FE12CF12C0115110519F108 -:102580008091E80085FD16C08091E8008E778093E9 -:10259000E800C114D10449F0F60180819181E80E70 -:1025A000F91EF182E08285E00FC00E9405148823A5 -:1025B00021F30AC089918093F10001501109FFEFC6 -:1025C000EF1AFF0ADACF80E0DF91CF911F910F91D0 -:1025D000FF90EF90DF90CF90089520911A033091F3 -:1025E0001B032617370748F06115710539F4209150 -:1025F000E8002E772093E80001C0B90140E06115A2 -:102600007105A9F120911303222309F443C0253059 -:1026100009F442C02091E80023FD40C02091E80069 -:1026200022FD32C02091E80020FFE9CF4091F30065 -:102630002091F20030E0342BFC01CF0161157105CF -:1026400059F02830310540F481918093F1006150B8 -:1026500071092F5F3F4FF1CF41E02830310509F07C -:1026600040E02091E8002E772093E800C8CF411188 -:10267000C9CF0AC080911303882361F0853061F0CF -:102680008091E80083FD0AC08091E80082FFF2CFCC -:1026900080E0089582E0089583E0089581E0089540 -:1026A00020911A0330911B032617370748F0611554 -:1026B000710539F42091E8002E772093E80001C0DD -:1026C000B901FC0120E06115710591F180911303BE -:1026D000882309F440C0853009F43FC08091E800A8 -:1026E00083FD3DC08091E80082FD2FC08091E8000D -:1026F00080FFE9CF2091F3008091F20090E0922BCF -:102700006115710559F08830910540F424912093AA -:10271000F1003196615071090196F2CF21E00897DE -:1027200009F020E08091E8008E778093E800CBCF1D -:102730002111CCCF0AC080911303882361F085302A -:1027400061F08091E80083FD0AC08091E80082FF7B -:10275000F2CF80E0089582E0089583E0089581E05B -:102760000895982F973058F59093E900981739F00D -:102770007091EC002091ED005091F00003C0242FE7 -:10278000762F50E021FF19C03091EB003E7F30934F -:10279000EB003091ED003D7F3093ED003091EB0088 -:1027A00031603093EB007093EC002093ED00509378 -:1027B000F0002091EE0027FF07C09F5FD3CF8F70FE -:1027C0008093E90081E0089580E0089580911403EA -:1027D00087FF11C08091E80082FD05C0809113033E -:1027E0008111F8CF11C08091E8008B770BC08091E8 -:1027F0001303882349F08091E80080FFF8CF80918F -:10280000E8008E778093E80008952091E4003091ED -:10281000E50095E64091EC00842F817040FF22C0D6 -:102820008091E80080FD1CC080911303882391F003 -:10283000853091F08091EB0085FD10C04091E4005F -:102840005091E5004217530729F39A01915011F76F -:1028500084E0089582E0089583E0089581E008957A -:1028600080E008954091E80042FFDECF08950E9485 -:10287000A5140E94AD14E0EEF0E0808181608083B9 -:10288000E8EDF0E080818F77808319BCA7EDB0E0A0 -:102890008C918E7F8C9380818F7E80831092120327 -:1028A00008950F931F93CF93DF930E94A5140E9466 -:1028B000AD14C8EDD0E088818F77888388818068E7 -:1028C000888388818F7D888319BC109213031092AE -:1028D0000F03109211031092100300EE10E0F801A4 -:1028E00080818B7F808388818160888342E060E083 -:1028F00080E00E94B113E1EEF0E080818E7F808362 -:10290000E2EEF0E080818160808380818860808356 -:10291000F80180818E7F8083888180618883DF9148 -:10292000CF911F910F910895E8EDF0E080818F7EA7 -:102930008083E7EDF0E080818160808384E082BF66 -:1029400081E0809312030C945114E8EDF0E0808153 -:102950008E7F80831092E20008951092DA00109228 -:10296000E10008951F920F920FB60F9211242F933A -:102970003F934F935F936F937F938F939F93AF9307 -:10298000BF93EF93FF938091E10082FF0BC0809192 -:10299000E20082FF07C08091E1008B7F8093E1001D -:1029A0000E9419178091DA0080FF1FC08091D80023 -:1029B00080FF1BC08091DA008E7F8093DA008091C7 -:1029C000D90080FF0DC080E189BD82E189BD09B4D5 -:1029D00000FEFDCF81E0809313030E941D1105C00E -:1029E00019BC109213030E942B118091E10080FF0B -:1029F00019C08091E20080FF15C08091E2008E7FB7 -:102A00008093E2008091E20080618093E2008091F7 -:102A1000D80080628093D80019BC85E080931303AE -:102A20000E942F118091E10084FF30C08091E2006C -:102A300084FF2CC080E189BD82E189BD09B400FE1C -:102A4000FDCF8091D8008F7D8093D8008091E100E8 -:102A50008F7E8093E1008091E2008F7E8093E20080 -:102A60008091E20081608093E20080910F038823CF -:102A700011F084E007C08091E30087FD02C081E08F -:102A800001C083E0809313030E9430118091E10024 -:102A900083FF29C08091E20083FF25C08091E1007F -:102AA000877F8093E10082E08093130310920F03ED -:102AB0008091E1008E7F8093E1008091E2008E7F23 -:102AC0008093E2008091E20080618093E20042E026 -:102AD00060E080E00E94B1138091F00088608093F4 -:102AE000F0000E942E11FF91EF91BF91AF919F9145 -:102AF0008F917F916F915F914F913F912F910F90A7 -:102B00000FBE0F901F9018951F920F920FB60F9245 -:102B100011242F933F934F935F936F937F938F93E2 -:102B20009F93AF93BF93CF93DF93EF93FF93C091A6 -:102B3000E900CF708091EC00D82FD17080FDD0E8F3 -:102B40001092E9008091F000877F8093F0007894E4 -:102B50000E94C8151092E9008091F000886080936F -:102B6000F000CD2BCF70C093E900FF91EF91DF9182 -:102B7000CF91BF91AF919F918F917F916F915F9115 -:102B80004F913F912F910F900FBE0F901F9018956E -:102B90001F93CF93DF93CDB7DEB7AA970FB6F89404 -:102BA000DEBF0FBECDBFE4E1F3E088E08E0F909171 -:102BB000F10091938E13FBCF0E9446118091E800A3 -:102BC00083FF1FC18091140390911503492F50E09A -:102BD0004A30510508F015C1FA01EA5AFF4F0C942A -:102BE000D52C803881F0823809F00BC18091180310 -:102BF0008F708093E9008091EB0085FB882780F936 -:102C00001092E90006C08091100390911103911178 -:102C100082609091E800977F9093E8008093F100A4 -:102C20001092F100C8C0282F2D7F09F0EAC0882338 -:102C300019F0823061F0E5C080911603813009F00F -:102C4000E0C0933009F080E0809311032BC08091A5 -:102C50001603811127C0809118038F7009F4D1C029 -:102C60008093E9002091EB0020FF1CC0933021F4F9 -:102C70008091EB00806214C09091EB009061909382 -:102C8000EB0021E030E0A90102C0440F551F8A95F6 -:102C9000E2F74093EA001092EA008091EB0088602E -:102CA0008093EB001092E9008091E800877F86C056 -:102CB0008111A7C0109116031F778091E3008078DF -:102CC000812B8093E3008091E800877F8093E80068 -:102CD0000E94E6138091E80080FFFCCF8091E30022 -:102CE00080688093E300111102C082E001C083E09C -:102CF0008093130386C08058823008F082C0809190 -:102D00001603909117038C3D53E0950779F583E006 -:102D10008A838AE289834FB7F894DE01139620E014 -:102D20003EE051E2E32FF0E050935700E49120FFA2 -:102D300003C0E295EF703F5FEF708E2F90E0EA30B6 -:102D400010F0C79601C0C0968D939D932F5F2431DC -:102D500049F74FBF8091E800877F8093E8006AE2DF -:102D600070E0CE0101960E94ED1214C0AE014F5FDB -:102D70005F4F609118030E943412BC01009709F460 -:102D800040C09091E800977F9093E80089819A81F4 -:102D90000E9450138091E8008B778093E80031C047 -:102DA000803879F58091E800877F8093E8008091F2 -:102DB0000F038093F1008091E8008E778093E80004 -:102DC0000E94E6131EC081111CC090911603923020 -:102DD000C0F48091E800877F8093E80090930F0310 -:102DE0000E94E61380910F03811106C08091E300D9 -:102DF00087FD02C081E001C084E0809313030E943C -:102E000032118091E80083FF0AC08091E800877F3B -:102E10008093E8008091EB0080628093EB00AA969B -:102E20000FB6F894DEBF0FBECDBFDF91CF911F91DB -:102E300008950895CF93809113038823A1F0C09142 -:102E4000E900CF709091EC00892F817090FD80E8AF -:102E5000C82B1092E9008091E80083FD0E94C815FC -:102E6000CF70C093E900CF9108959093930280931F -:102E700092020895E0919202F0919302309721F02E -:102E80000190F081E02D099480E00895E091920294 -:102E9000F0919302309721F00280F381E02D0994A4 -:102EA0000895E0919202F0919302309721F004800E -:102EB000F581E02D099408952091900230919102BE -:102EC0008217930771F09093910280939002E091A2 -:102ED0009202F0919302309721F00680F781E02D65 -:102EE0000994089520918E0230918F0282179307E2 -:102EF00071F090938F0280938E02E0919202F09194 -:102F00009302309721F00084F185E02D0994089513 -:102F100008950C9488170E940F230E9460090E9454 -:102F200095230C9444285F926F927F928F929F9288 -:102F3000AF92BF92CF92DF92EF92FF920F931F93C7 -:102F4000CF93DF9300D000D01F92CDB7DEB70E94A1 -:102F5000A5099DE9C92E92E0D92E03E010E0AA242C -:102F6000A394B12C502E802F0E94200A4C01F60110 -:102F7000729062906F016826792661147104A1F441 -:102F80000150110978F78FEF89838A831B820E9491 -:102F900018238160782F9D838C8349815A816B81AE -:102FA0008D810E94431838C08091F20281FD0E94F9 -:102FB000290A2BE030E07501022E02C0EE0CFF1C46 -:102FC0000A94E2F7C70186219721892B09F1298309 -:102FD0005A828E209F2091E0892809F490E09B83FB -:102FE0000E9418238160782F9D838C8349815A81A8 -:102FF0006B818D810E944318000F111FF801EB5661 -:10300000FD4F80819181E826F926F182E08204C09B -:103010002150310980F6B4CF0E947C251091940292 -:103020000E943A171817D1F00E943A178093940221 -:103030000F900F900F900F900F90DF91CF911F91F5 -:103040000F91FF90EF90DF90CF90BF90AF909F9047 -:103050008F907F906F905F900C944A090F900F9023 -:103060000F900F900F90DF91CF911F910F91FF90D4 -:10307000EF90DF90CF90BF90AF909F908F907F9018 -:103080006F905F900895CF93DF93CDB7DEB72B9706 -:103090000FB6F894DEBF0FBECDBF4F835887698748 -:1030A0007A878B87DE01119686E0FD0111928A9561 -:1030B000E9F785E0FE01379601900D928A95E1F7D8 -:1030C00049815A816B817C818D819E810E94BA1ECB -:1030D0002B960FB6F894DEBF0FBECDBFDF91CF9118 -:1030E0000895CF93882309F4C2C0C82F823859F4B9 -:1030F0000E943A1781FDBBC089E30E9494210E947F -:10310000612289E30CC0833879F40E943A1780FD6C -:10311000AEC083E50E9494210E94612283E50E9453 -:10312000D621CF910C946122843859F40E943A1729 -:1031300082FD9DC087E40E9494210E94612287E461 -:10314000EECF8CEF8C0F813A48F48C2F0E94AC2785 -:1031500081118DC08C2F0E949421E3CF80E28C0FCF -:10316000883048F4C77081E001C0880FCA95EAF73B -:103170000E941A22D6CF8BE58C0F833078F4C53AA3 -:1031800029F0C63A31F083E890E005C081E890E08C -:1031900002C082E890E0CF910C945C1788E58C0F18 -:1031A000833108F064C0C83A39F1C93A41F1CA3AEA -:1031B00049F1CB3A51F1CC3A59F1CD3A61F1C03BEA -:1031C00069F1CE3A71F1CF3A79F1C13B81F1C23B5D -:1031D00089F1C33B91F1C43B99F1C53BA1F1C63BD9 -:1031E000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B39 -:1031F000C9F180E090E038C082EE90E035C089EE01 -:1032000090E032C08AEE90E02FC085EB90E02CC0B9 -:1032100086EB90E029C087EB90E026C08CEC90E034 -:1032200023C08DEC90E020C083E891E01DC08AE8C7 -:1032300091E01AC082E991E017C084E991E014C0DE -:1032400081E292E011C083E292E00EC084E292E05B -:103250000BC085E292E008C086E292E005C087E2FA -:1032600092E002C08AE292E0CF910C947217CF9163 -:103270000895882309F44BC0823859F40E943A1704 -:1032800081FF45C089E30E9494210E94612289E365 -:103290000CC0833871F40E943A1780FF38C083E570 -:1032A0000E9494210E94612283E50E94D6210C9401 -:1032B0006122843859F40E943A1782FF28C087E4BB -:1032C0000E9494210E94612287E4EFCF9CEF980F27 -:1032D000913A58F390E2980F983050F4877091E04B -:1032E00001C0990F8A95EAF7892F0E942022DFCF2B -:1032F0009BE5980F933020F480E090E00C945C17ED -:10330000885A833120F480E090E00C94721708957D -:10331000882321F00E941A220C94612208958823A8 -:1033200021F00E9420220C94612208957F928F92B6 -:103330009F92AF92BF92CF92DF92EF92FF920F9344 -:103340001F93CF93DF931F92CDB7DEB77C01C62EBC -:10335000772EFC01058102950F70128111110E94D8 -:1033600037220E948D21882379F0112369F080E2B1 -:103370008C0D883048F082E00E9476210E948D21D9 -:1033800091E0D82ED92601C0D12CE72DE295EF701F -:10339000F0E0E05AFF4F0C94D52C872D807F072D4D -:1033A0000F70882311F00295007F112389F000230C -:1033B00009F499C180E28C0D883020F4802F0E949E -:1033C0001A2203C0802F0E942A220E9461228BC1F0 -:1033D0008C2D0E943919002309F4C3C180E28C0DA1 -:1033E000883020F4802F0E94202203C0802F0E946A -:1033F00030220E946122B5C1872D807F972D9F705A -:10340000803211F4892F03C0892F8295807FCC20D0 -:1034100021F0F1E0CF16A1F01DC0112339F00023F7 -:1034200019F1013009F50E944A229BC1002319F0CD -:10343000013009F496C189830E944D22898110C10F -:10344000112321F0063008F08CC10EC0053008F0C1 -:1034500088C106C1112359F0002331F0F70195818D -:1034600090FF41C19F7095830E9488197AC1002303 -:1034700009F4F6C03EC1872D86958695837090E04D -:10348000009719F0019761F06CC1112321F08C2D88 -:10349000972D937002C080E090E00E945C1761C19C -:1034A000112321F08C2D972D937002C080E090E0C5 -:1034B0000E94721756C18C2D112319F00E9484248A -:1034C00002C00E94EC240E9471254BC1872D83709D -:1034D00009F052C0111145C18C2D829586958770D7 -:1034E000880F880F9C2D9F70892E912CA12CB12CB8 -:1034F000082E04C0880C991CAA1CBB1C0A94D2F785 -:10350000C4FE14C00FE010E020E030E0B901A801D3 -:1035100004C0440F551F661F771F8A95D2F7CB0151 -:10352000BA01609570958095909503C060E070E059 -:10353000CB01272D26952695237030E022303105CA -:1035400069F02330310589F0682979298A299B2976 -:103550002130310571F00E94022003C168297929C8 -:103560008A299B290E941E20FCC00E940220C501BE -:10357000B4010E94E61FF5C0112319F0872D817058 -:1035800001C08695882309F4ECC08C2D8295869520 -:103590008770880F880F9C2D9F70892E912CA12CED -:1035A000B12C082E04C0880C991CAA1CBB1C0A94C0 -:1035B000D2F7C4FE14C00FE010E020E030E0B90103 -:1035C000A80104C0440F551F661F771F8A95D2F7C4 -:1035D000CB01BA01609570958095909503C060E02D -:1035E00070E0CB01272D269526952370422F50E0C1 -:1035F0004230510569F04330510589F06829792935 -:103600008A299B294130510571F00E94DC20A9C014 -:10361000682979298A299B290E94F820A2C00E9442 -:10362000DC20C501B4010E94C0209BC08C2D90E01D -:10363000FC01E05EF109E531F10508F050C0E05908 -:10364000FF4F0C94D52C0C2D0F70872D8F711123EB -:1036500021F00E945920802F07CF0E947A20802FCE -:103660000E948F197EC0112341F0053008F079C007 -:10367000872D8F710E949F2074C0063008F071C0A2 -:10368000F7CF112339F0872D8F710E94592069C01F -:103690001123C9F3872D8F710E947A2062C01123F4 -:1036A00029F0872D8F710E9444205BC00E943A2030 -:1036B00058C0112351F0172D1F71812F0E945920DE -:1036C00063E0812F0E946D214CC081E00E94762131 -:1036D000023008F446C082E00E94762142C01123E5 -:1036E00031F0002381F28C2D0E9471183AC0002322 -:1036F00089F28C2D0E94391934C0472D4F706C2DE2 -:10370000C7010E94B5030E945E1F2BC0111129C082 -:10371000472D4F7050E042305105B9F04CF441153F -:10372000510581F041305105E1F40E946C2819C027 -:103730004330510569F04430510599F48C2D0E94B5 -:10374000BE280FC00E9455280CC00E94882809C0BE -:103750000E949B2806C0472D4F706C2DC7010E9408 -:103760002B06DD20F9F00E94692180FD1BC0F701C6 -:1037700012820E9463210E945920C7010E94E11B0E -:103780000E9463210F90DF91CF911F910F91FF90C5 -:10379000EF90DF90CF90BF90AF909F908F907F90F1 -:1037A0000C947A200F90DF91CF911F910F91FF9091 -:1037B000EF90DF90CF90BF90AF909F908F907F90D1 -:1037C00008950F931F93CF93DF93EC018881998124 -:1037D0002B813C81232BB9F09F3F11F48F3F99F04F -:1037E000CE010E942A04882371F0688179818A8140 -:1037F0000E945F218C010E9414210E94DB1FB801EE -:10380000CE010E949619DF91CF911F910F910895DB -:103810000E9437220E9447220E940C220E946122AD -:103820000E9422260E94712580E090E00E945C1791 -:1038300080E090E00C9472170E9427220C94081CE0 -:103840000E945421292F22952F7030E02C30310511 -:103850004CF42A3031056CF4225031092230310504 -:10386000A8F407C02C30310569F02F30310551F034 -:103870000DC0803F69F018F4803E40F409C0843FD9 -:1038800029F406C093FB882780F9089580E0089505 -:1038900081E00895CF93DF9300D000D01F92CDB781 -:1038A000DEB70F900F900F900F900F90DF91CF9198 -:1038B0000895CF93DF9300D000D000D0CDB7DEB70E -:1038C00026960FB6F894DEBF0FBECDBFDF91CF9125 -:1038D00008951F93CF93DF93C0919D0216E08091CE -:1038E0009E02C81799F0D0E01C9FF0011D9FF00DBB -:1038F0001124E156FD4F40815181628173818481A1 -:1039000095810E94591C2196C770E9CFDF91CF9114 -:103910001F9108954091CF025091D0026091D10241 -:103920007091D2028091D3029091D4020C94591CD0 -:103930008091D40282958F7009F054C08091D10299 -:10394000882309F44FC080919D02A0919E0260914E -:10395000CF027091D0024091D2025091D302B6E0D2 -:103960008A1709F43FC090E041155105C1F17F3F2E -:1039700011F46F3FA1F1B89FF001B99FF00D112430 -:10398000E156FD4F218172132AC02081621327C0A6 -:103990002281211124C0238134812417350710F49A -:1039A00021503109241B350B283C3105C0F42091EE -:1039B000D4022F7020612093D40226E0289FF001CA -:1039C000299FF00D1124EC55FD4F80818F7080618F -:1039D00080838FEC92E00E94E11B0C94691C01969D -:1039E0008770BECF0895CF92DF92EF92FF920F9330 -:1039F0001F93CF93DF93CDB7DEB762970FB6F894DE -:103A0000DEBF0FBECDBF8C0185E0F801DE011D9643 -:103A100001900D928A95E1F7D8014C9111965C9135 -:103A2000119712966C9112971396CD90DC90149783 -:103A30003091CF027091D0028091D2029091D30246 -:103A4000009709F46BC17F3F19F43F3F09F466C149 -:103A5000E090D102EE2009F4C0C02091D402C81633 -:103A6000D90628F0F601E81BF90BCF0104C08095B8 -:103A700090958C0D9D1DFF24F394883C910578F062 -:103A8000F12C207F09F0C6C07C2DD98AC88A89898B -:103A90000E944A1C8FEC92E00E94E11BB1C0822F71 -:103AA000807F09F046C0751314C0341312C0611131 -:103AB00010C02F7020612093D4020E948A1C8FECCA -:103AC00092E00E94E11B8091D402D80115968C935C -:103AD0002EC0CD2819F15F3F11F44F3FF9F0F62EBB -:103AE00061111CC080919D0220919E0236E08217D8 -:103AF00009F45AC090E0389FF001399FF00D11246D -:103B0000E156FD4F7181571306C07081471303C002 -:103B10007281711103C001968770E9CFF62E66237A -:103B200009F418C18091D40281608093D402F12CF1 -:103B300011C1751308C0341306C0611104C080910F -:103B4000D402D801C3C04D875E878D859E856A8B60 -:103B50000E94201C6A898823E1F16623D1F120911B -:103B6000D402822F82958F7090E0029774F080913A -:103B7000CF029091D00298878F831986DB86CA8600 -:103B80002C87CE0107960E94E11B86E0F801AFEC7E -:103B9000B2E001900D928A95E1F70E94981C0E9474 -:103BA0008A1CFF24F394D6C04D875E878D859E8541 -:103BB0000E945421292F22952F7030E022303105A8 -:103BC0000CF0BCC09F7009F0B6C0805E883008F46D -:103BD000C1C0C8010E94E11BE4CFC816D90608F491 -:103BE00053C0F601E81BF90BCF01883C910508F49E -:103BF00050C0F12C7C2DD98AC88A89890E944A1C20 -:103C0000EFECF2E086E0DF011D928A95E9F70E9471 -:103C10008A1CA0C0751314C0341312C0611110C0E7 -:103C20008091D402F8018583C8010E94E11B86E0DF -:103C3000EFECF2E0DF011D928A95E9F7FE2C8AC0D5 -:103C40004D875E878D859E856A8B0E94201C6A89C0 -:103C5000882309F4BECF662309F4BBCF2091D40298 -:103C6000822F82958F7090E002970CF48ECF809116 -:103C7000CF029091D0029A8389831B82DD82CC820D -:103C80002E83CE0101967FCF809590958C0D9D1D42 -:103C9000ACCFF62E662309F49CCF75132EC03413D7 -:103CA0002CC02091D40220FD1FC0822F82958F70DE -:103CB000D9F0D80115962C9315978F3049F08F5F66 -:103CC000982F9295907F822F8F70892B15968C93C9 -:103CD000C8010E94E11B86E0F801AFECB2E0019060 -:103CE0000D928A95E1F793CF86E0F801AFECB2E050 -:103CF00001900D928A95E1F72DC04D875E878D85E5 -:103D00009E850E94201C811140CF8091D402816049 -:103D10008093D402C8010E94E11B1CC0662309F4F1 -:103D200058CF4D875E878D859E850E94201C8823F5 -:103D300009F44FCF2ACF811148CF0CC02430310570 -:103D40000CF047CF9F7009F440CFF8019581907F28 -:103D500009F03BCF8F2D62960FB6F894DEBF0FBEF1 -:103D6000CDBFDF91CF911F910F91FF90EF90DF902A -:103D7000CF9008951F93CF93DF93CDB7DEB72C97E5 -:103D80000FB6F894DEBF0FBECDBF4F83588769874B -:103D90007A878B879C87CE0107960E94F31C882325 -:103DA00069F08F8198852A853B85232BF1F19F3F10 -:103DB00009F063C08F3F09F060C037C086E0FE01A4 -:103DC0003796DE01119601900D928A95E1F76F8189 -:103DD0007885EA85FB85309741F17F3F11F46F3F8D -:103DE00021F120919E0230E0C90101968770992748 -:103DF00040919D0250E08417950709F447C06983FC -:103E00007A83FD83EC8396E0929FD001939FB00D5F -:103E10001124A156BD4FFE01319601900D929A9545 -:103E2000E1F780939E020E94691C16E080919D023A -:103E300090919E028917C1F1189FC00111248156EB -:103E40009D4F0E94F31C882379F1E0919D021E9FF3 -:103E5000F0011124E156FD4F40815181628173814F -:103E6000848195810E94591C80919D0290E0019669 -:103E70008770992780939D02D9CF4F815885698596 -:103E80007A858B859C850E94591CCFCF0E941C1C73 -:103E900010929E0210929D02EFECF2E086E0DF01AC -:103EA0001D928A95E9F7C1CF2C960FB6F894DEBF24 -:103EB0000FBECDBFDF91CF911F910895EF92FF927A -:103EC0000F931F93CF93DF938C01009709F46CC07D -:103ED000F12CEE24E394E8012196F80184918437D3 -:103EE00040F4843008F051C0813081F0823019F103 -:103EF0005BC0853709F444C0A8F19CE7980F903760 -:103F000008F052C08F770E94391941C00E5F1F4FD1 -:103F1000FE01C49180E28C0F883048F4C7708E2D6A -:103F200001C0880FCA95EAF70E943A2214C08C2F6C -:103F30000E9471182DC00E5F1F4FFE01C49180E2D8 -:103F40008C0F883058F4C7708E2D01C0880FCA9529 -:103F5000EAF70E9440220E9461221AC08C2F0E9420 -:103F6000391916C00E5F1F4FFE01C491CC2381F09A -:103F70008FE99FE00197F1F700C00000C150F6CF34 -:103F80000E5F1F4FFE01F49003C00E9471188E0156 -:103F90008F2D882309F49FCFEFE9FFE03197F1F7E8 -:103FA00000C000008150F5CFDF91CF911F910F919C -:103FB000FF90EF90089508956093D9027093DA020C -:103FC0008093DB029093DC020C94081C0F931F93E8 -:103FD0000091D9021091DA022091DB023091DC02CB -:103FE000DC01CB01802B912BA22BB32B8093D90228 -:103FF0009093DA02A093DB02B093DC021F910F9141 -:104000000C94081C0F931F930091D9021091DA02AF -:104010002091DB023091DC02DC01CB018023912373 -:10402000A223B3238093D9029093DA02A093DB02F8 -:10403000B093DC021F910F910C94081C0F931F93F7 -:104040000091D9021091DA022091DB023091DC025A -:10405000DC01CB0180279127A227B3278093D902C7 -:104060009093DA02A093DB02B093DC021F910F91D0 -:104070000C94081C1092D5021092D6021092D7020E -:104080001092D8020C94081C41E050E060E070E00F -:1040900004C0440F551F661F771F8A95D2F74093BF -:1040A000D5025093D6026093D7027093D8020C9435 -:1040B000081C41E050E060E070E004C0440F551F70 -:1040C000661F771F8A95D2F78091D5029091D6020C -:1040D000A091D702B091D802482B592B6A2B7B2B89 -:1040E0004093D5025093D6026093D7027093D802C2 -:1040F0000C94081C41E050E060E070E004C0440F04 -:10410000551F661F771F8A95D2F740955095609589 -:1041100070958091D5029091D602A091D702B0916E -:10412000D802482359236A237B234093D502509316 -:10413000D6026093D7027093D8020C94081C41E019 -:1041400050E060E070E004C0440F551F661F771F09 -:104150008A95D2F78091D5029091D602A091D7028C -:10416000B091D802482759276A277B274093D50268 -:104170005093D6026093D7027093D8020C94081C17 -:104180000F931F930091D5021091D6022091D70270 -:104190003091D802DC01CB01802B912BA22BB32BC9 -:1041A0008093D5029093D602A093D702B093D80201 -:1041B0001F910F910C94081C0F931F930091D5022F -:1041C0001091D6022091D7023091D802DC01CB01A8 -:1041D00080239123A223B3238093D5029093D60208 -:1041E000A093D702B093D8021F910F910C94081C92 -:1041F0000F931F930091D5021091D6022091D70200 -:104200003091D802DC01CB0180279127A227B32768 -:104210008093D5029093D602A093D702B093D80290 -:104220001F910F910C94081C0895CF92DF92EF928A -:10423000FF920F931F93CF93DF938C01C090D9020D -:10424000D090DA02E090DB02F090DC028091D5029F -:104250009091D602A091D702B091D802C82AD92A4B -:10426000EA2AFB2ACFE1D0E0D701C6010C2E04C018 -:10427000B695A795979587950A94D2F780FF06C0C3 -:10428000B8018C2F0E94B008019721F4219760F7A4 -:1042900080E001C08C2FDF91CF911F910F91FF9093 -:1042A000EF90DF90CF900895CF93DF93EC010E94C1 -:1042B0001521BE010E94B008DF91CF910895CB0176 -:1042C0000E94542108958091DD02859585958595FC -:1042D00008958091DD028770089598E0899F90018C -:1042E0001124262B2093DD020C9459202091DD020D -:1042F000809582238093DD02982F977069F430E0D7 -:10430000482F552747FD50952417350729F08595E7 -:10431000859585950C947A2008959091DD0297708B -:1043200081E009F480E0089590911501992321F02E -:1043300090911601911109C0209117013091180137 -:10434000F90132969FEF40E01FC0982F9695969501 -:1043500096959F3050F5E0911701F0911801E90F03 -:10436000F11D877021E030E0A90102C0440F551F04 -:104370008A95E2F7CA019181892B818308959F3F35 -:1043800039F04F5F4E3041F051915813F8CF0DC0C6 -:104390005111F7CF942FF5CF9F3F39F0F901E90F75 -:1043A000F11D97FDFA958283089508959091150166 -:1043B000992321F090911601911109C020911701C4 -:1043C00030911801F9013296205F3F4F1FC0982F9E -:1043D0009695969596959F30F0F4E0911701F0919F -:1043E0001801E90FF11D877021E030E0A90102C03A -:1043F000440F551F8A95E2F7CA0180959181892360 -:10440000818308953196E217F30729F0908198137C -:10441000F9CF1082F7CF089581E090E0E091170185 -:10442000F0911801E80FF91F108201968031910573 -:10443000A9F708959091F102892B8093F1020895D4 -:1044400080959091F10289238093F1020895109252 -:10445000F10208959091F002892B8093F002089563 -:1044600080959091F00289238093F0020895109234 -:10447000F00208959091EF02892B8093EF02089546 -:1044800080959091EF0289238093EF020895109216 -:10449000EF0208958093DE0208951092DE020895DF -:1044A0008091170190911801FC0131969C01205FC9 -:1044B0003F4F80E0919191118F5FE217F307D1F7A1 -:1044C0000895E0911701F09118018091F102808325 -:1044D000E0911701F091180190818091F002892BF1 -:1044E0008083E0911701F091180190818091EF0293 -:1044F000892B80838091DE02882361F0E09117018F -:10450000F09118019081892B80830E9450228111A3 -:104510001092DE0280911701909118010C944617B9 -:1045200020E0009739F0AC014150510984239523D4 -:104530002F5FF7CF822F089580911303843039F1D4 -:104540001092F30220E488E190E00FB6F894A89569 -:10455000809360000FBE2093600080E00E941C03E7 -:1045600080E00E944A0983B7817F846083BF83B75C -:10457000816083BF7894889583B78E7F83BF88E1FD -:104580000FB6F89480936000109260000FBE0895FB -:104590000895089580E00E941C030E94C8220E9492 -:1045A000A5090E94C9220E942A0A91E0811101C036 -:1045B00090E0892F08950E941C1C80E00E941C033B -:1045C0000E9444280E943A170C944A091F920F92A5 -:1045D0000FB60F9211248F939F93AF93BF93809147 -:1045E000F302811113C08091F4029091F502A09121 -:1045F000F602B091F7024196A11DB11D8093F4021D -:104600009093F502A093F602B093F702BF91AF9199 -:104610009F918F910F900FBE0F901F90189582E081 -:1046200084BD93E095BD9AEF97BD80936E00089589 -:104630002FB7F8948091F4029091F502A091F602C0 -:10464000B091F7022FBF0895CF92DF92EF92FF92C1 -:104650000F931F932FB7F8944091F4025091F502F5 -:104660006091F6027091F7022FBF6A017B01EE2480 -:10467000FF248C0120E030E0C016D106E206F306EC -:1046800010F4415051099A01281B390BC9011F919F -:104690000F91FF90EF90DF90CF9008951F920F92AF -:1046A0000FB60F9211248F939F93AF93BF93809176 -:1046B000F4029091F502A091F602B091F7020196F2 -:1046C000A11DB11D8093F4029093F502A093F60210 -:1046D000B093F702BF91AF919F918F910F900FBE52 -:1046E0000F901F9018950E943714F8942FEF87EAC7 -:1046F00091E6215080409040E1F700C0000087E043 -:1047000090EBDC0180931E0390931F03A093200382 -:10471000B09321039CE088E10FB6F894A8958093AC -:1047200060000FBE90936000FFCF0E94D4238111E0 -:1047300002C00E94B0230E94DF238093F2020E94F5 -:10474000E72380931C0387FB882780F98093160159 -:104750000E94E323682F70E080E090E00C94DC1F5F -:104760006DEE7EEF80E090E00E94FB2C60E082E046 -:1047700090E00E94E92C60E083E090E00E94E92C48 -:1047800060E084E090E00E94E92C60E085E090E049 -:104790000E94E92C60E086E090E00E94E92C6FEF37 -:1047A00087E090E00C94E92C80E090E00E94E32CFC -:1047B00021E08D3E9E4F09F020E0822F089582E097 -:1047C00090E00C94DB2C83E090E00C94DB2C84E0F4 -:1047D00090E00C94DB2C682F84E090E00C94E92CA2 -:1047E00086E090E00C94DB2C682F86E090E00C943F -:1047F000E92C87E090E00C94DB2C682F87E090E0B8 -:104800000C94E92C8091FA0280FF0BC060911C018E -:1048100085E0689FB001112475956795759567953A -:104820002BC081FF09C060911C0185E0689FB00129 -:1048300011247595679520C082FF07C060911C0107 -:1048400085E0689FB001112417C09091FB02992365 -:10485000D1F060911B01961788F720911C0185E02B -:10486000289F90011124929FA001939F500D112425 -:1048700070E0CA010E94C12C6038710540F46115D6 -:10488000710539F002C065E070E0862F08958FE76A -:10489000089581E008958091FA0280FF08C0609138 -:1048A0001A0170E0759567957595679521C081FF30 -:1048B00006C060911A0170E07595679519C082FF76 -:1048C00004C060911A0170E010C09091FB0299231E -:1048D000C1F0609119019617A0F780911A01899F84 -:1048E000C001112470E00E94C12C6038710528F4C9 -:1048F0006115710521F0862F08958FE7089581E0F5 -:10490000089561E070E0F4CF803F21F40E9402241A -:10491000819504C0813F29F40E9402248093FE0205 -:104920000895823F21F40E940224819504C0833FB0 -:1049300029F40E9402248093FD020895893F19F40E -:104940000E944B2405C08A3F31F40E944B2481957C -:104950008093FF0208958B3F21F40E944B248195A0 -:1049600004C08C3F29F40E944B24809300030895D7 -:10497000843F21F48091FC02816017C0853F21F4BF -:104980008091FC02826011C0863F21F48091FC027C -:1049900084600BC0873F21F48091FC02886005C0D1 -:1049A000883F31F48091FC0280618093FC0208957D -:1049B0008D3F21F48091FA0281600BC08E3F21F47B -:1049C0008091FA02826005C08F3F29F48091FA023B -:1049D00084608093FA020895803F39F48091FE024A -:1049E00087FF6CC01092FE0269C0813F29F480915C -:1049F000FE021816BCF362C09091FD02823F29F4BA -:104A000097FF5CC01092FD0259C0833F19F419163C -:104A1000CCF354C0893F41F48091FF0218160CF08A -:104A20004DC01092FF024AC08A3F29F48091FF02D4 -:104A300087FF44C0F6CF8B3F39F48091000387FF96 -:104A40003DC0109200033AC08C3F29F480910003CE -:104A50001816BCF333C0843F21F48091FC028E7F92 -:104A600017C0853F21F48091FC028D7F11C0863FE5 -:104A700021F48091FC028B7F0BC0873F21F4809151 -:104A8000FC02877F05C0883F31F48091FC028F7E55 -:104A90008093FC0213C08D3F21F48091FA028E7F37 -:104AA0000BC08E3F21F48091FA028D7F05C08F3FAD -:104AB00029F48091FA028B7F8093FA028091FD02A3 -:104AC00081110EC08091FE0281110AC08091FF0207 -:104AD000811106C080910003811102C01092FB0277 -:104AE00008958CEF92E00E9451170E941823909332 -:104AF000F9028093F80208951F93CF93DF9380917A -:104B0000F8029091F9020E942423AC019091FB02DB -:104B1000992321F020911D0130E006C020911E0153 -:104B20008AE0289F900111244217530708F486C099 -:104B30008091FD02C091FE02D091FF02109100030E -:104B4000811107C0C11176C0D11174C0111172C09A -:104B500075C09F3F19F09F5F9093FB02181624F4D5 -:104B60000E9402248093FD028091FD0287FF05C010 -:104B70000E94022481958093FD021C1624F40E9459 -:104B800002248093FE028091FE0287FF05C00E94EE -:104B9000022481958093FE026091FD02662339F123 -:104BA000C091FE02CC2319F1772767FD7095872FFE -:104BB000972F0E94E32923E333E343E35FE30E945B -:104BC000F32A0E94B0296093FD026C2F772767FDBE -:104BD0007095872F972F0E94E32923E333E343E364 -:104BE0005FE30E94F32A0E94B0296093FE021D1623 -:104BF00024F40E944B248093FF028091FF0287FFE0 -:104C000005C00E944B2481958093FF02111624F465 -:104C10000E944B24809300038091000387FF05C00E -:104C20000E944B24819580930003DF91CF911F91C7 -:104C30000C9471259F3F09F08ECF96CFDF91CF91D5 -:104C40001F910895ECEFF2E085E0DF011D928A9557 -:104C5000E9F71092FB021092FA020895833081F175 -:104C600028F4813059F08230D1F00895853009F46C -:104C700049C0B8F1863009F456C0089580911E01EC -:104C8000262F30E0280F311D2F3F310524F4680F07 -:104C900060931E0108958FEF80931E010895809107 -:104CA0001D01262F30E0280F311D2F3F310524F440 -:104CB000680F60931D0108958FEF80931D01089583 -:104CC00080911C01262F30E0280F311D2F3F310528 -:104CD00024F4680F60931C0108958FEF80931C01EA -:104CE000089580911B01262F30E0280F311D2F3FA2 -:104CF000310524F4680F60931B0108958FEF8093B2 -:104D00001B01089580911A01262F30E0280F311DD4 -:104D10002F3F310524F4680F60931A0108958FEF37 -:104D200080931A01089580911901262F30E0280FF1 -:104D3000311D2F3F310524F4680F60931901089548 -:104D40008FEF809319010895833011F128F4813099 -:104D500049F0823091F00895853081F120F186305C -:104D6000C1F1089580911E01681720F4861B80937D -:104D70001E01089510921E01089580911D0168176B -:104D800020F4861B80931D01089510921D01089543 -:104D900080911C01681720F4861B80931C010895E4 -:104DA00010921C01089580911B01681720F4861B46 -:104DB00080931B01089510921B01089580911A01A0 -:104DC000681720F4861B80931A01089510921A0127 -:104DD000089580911901681720F4861B80931901AA -:104DE00008951092190108950F931F93873208F0C8 -:104DF00048C08E3108F08DC0803109F477C008F5C5 -:104E0000873009F461C068F4863009F09DC0809154 -:104E1000F202817F8E7F8093F20281E08093020311 -:104E200094C08B3009F489C08E3009F08DC0809118 -:104E3000F20282FB222720F991E0922790FB82F96F -:104E40005EC0863109F479C060F4813109F07CC01C -:104E50000E941C1C9091160181E089278093160105 -:104E60006CC0893109F469C08B3109F06DC0809143 -:104E7000F20281FB222720F991E0922790FB81F931 -:104E80003EC0883309F459C050F4893209F457C040 -:104E9000853309F454C0873209F451C055C08334B6 -:104EA00009F44DC028F48A3308F44EC0895332C047 -:104EB000883409F049C00E941C1C0E945A0A0E94B2 -:104EC00021040E94732339C09091F202892F8095AA -:104ED000817080FB90F929F0966098609093F202BF -:104EE00034C0997F977F9093F20227C08091F2029D -:104EF00083FB222720F991E0922790FB83F980938E -:104F0000F2029923D1F08091F20281608093F20243 -:104F100014C08D5141E050E060E070E08A019B01D7 -:104F200004C0000F111F221F331F8A95D2F7C90139 -:104F3000B8010E94DC1F0E941C1C81E006C061E0D9 -:104F400070E080E090E0F5CF80E01F910F91089530 -:104F500080E0089580E00895CF93C82F80910203E8 -:104F6000813069F018F08230C9F184C0E0911701F6 -:104F7000F09118018081823209F07EC007C0E09173 -:104F80001701F09118018081823261F48C2F0E9408 -:104F9000A827811104C08C2F0E94F4261DC081E037 -:104FA00090E01AC08C2F0E94AA27811114C0C4312E -:104FB00079F048F4CB3079F0C03109F061C082E07B -:104FC0008093020308C0C93219F0C83321F058C0D9 -:104FD0001092020355C081E0817054C0C93291F132 -:104FE00020F5C43179F1B0F4C73009F047C08EE143 -:104FF00080931E0182E380931D018AE080931C014F -:1050000084E180931B0188E080931A0188E28093F9 -:10501000190134C0CE51C63088F5EC2FF0E0EA54C7 -:10502000FE4F80818093010329C0CE34E9F020F443 -:10503000CB3421F56AE013C0C13579F0C235F1F403 -:1050400061E00DC080910103882319F010920103E3 -:1050500015C081E08093020315C061E006C0809115 -:1050600001030E942E260AC06AE0809101030E947B -:10507000A42604C01092020380E004C081E002C0B4 -:1050800080E0AACFCF9108950E94D423811102C05D -:105090000E94B0230E94F02380931D0380FF02C072 -:1050A000869501C080E00C941C0380911D03982F0D -:1050B0009695292F30E0233031054CF49F5F990FEE -:1050C0008170892B816080931D030E94F42380915D -:1050D0001D0386950C941C0380911D03982F9695B3 -:1050E00091F09158990F8170892B80931D038E7FC9 -:1050F00091E009F490E080911D0390FB80F980938A -:105100001D030E94F42380911D0386950C941C03BB -:1051100080911D03982F909590FB80F980931D033B -:105120000E94F42380911D0380FF02C0869501C078 -:1051300080E00C941C0390911D03892F86958F5F4E -:105140008F779170843028F4880F892B80931D030A -:1051500002C090931D0380911D038E7F91E009F49E -:1051600090E080911D0390FB80F980931D030E94C5 -:10517000F42380911D0386950C941C0320911D033C -:10518000922F96958927982F990F822F8170892BBE -:1051900080931D038E7F91E009F490E080911D03C0 -:1051A00090FB80F980931D030E94F42380911D03DE -:1051B00086950C941C0380911D0386950895505884 -:1051C000BB27AA270ED0D1C1C2D130F0C7D120F061 -:1051D00031F49F3F11F41EF4B7C10EF4E095E7FBE4 -:1051E0009FC1E92FD3D180F3BA17620773078407F1 -:1051F000950718F071F49EF5EBC10EF4E0950B2EB7 -:10520000BA2FA02D0B01B90190010C01CA01A00118 -:105210001124FF27591B99F0593F50F4503E68F173 -:105220001A16F040A22F232F342F4427585FF3CFB4 -:10523000469537952795A795F0405395C9F77EF485 -:105240001F16BA0B620B730B840BBAF09150A1F0CE -:10525000FF0FBB1F661F771F881FC2F70EC0BA0F54 -:10526000621F731F841F48F4879577956795B795DC -:10527000F7959E3F08F0B3CF9395880F08F09927D4 -:10528000EE0F97958795089527D108F481E008954A -:105290000CD06BC163D140F05AD130F021F45F3FA4 -:1052A00019F03EC1511195C14FC170D198F39923A6 -:1052B000C9F35523B1F3951B550BBB27AA276217DA -:1052C0007307840738F09F5F5F4F220F331F441F1F -:1052D000AA1FA9F333D00E2E3AF0E0E830D0915057 -:1052E0005040E695001CCAF729D0FE2F27D0660F44 -:1052F000771F881FBB1F261737074807AB07B0E883 -:1053000009F0BB0B802DBF01FF2793585F4F2AF098 -:105310009E3F510568F004C15CC15F3FECF3983ECD -:10532000DCF3869577956795B795F7959F5FC9F7F5 -:10533000880F911D9695879597F90895E1E0660F7E -:10534000771F881FBB1F621773078407BA0720F0F7 -:10535000621B730B840BBA0BEE1F88F7E095089560 -:1053600004D06894B11135C1089518D188F09F57C1 -:1053700090F0B92F9927B751A0F0D1F0660F771FA1 -:10538000881F991F1AF0BA95C9F712C0B13081F081 -:105390001FD1B1E008951CC1672F782F8827B85F0F -:1053A00039F0B93FCCF3869577956795B395D9F7E2 -:1053B0003EF490958095709561957F4F8F4F9F4FEC -:1053C0000895E89409C097FB3EF4909580957095F8 -:1053D00061957F4F8F4F9F4F9923A9F0F92F96E941 -:1053E000BB279395F695879577956795B795F111B6 -:1053F000F8CFFAF4BB0F11F460FF1BC06F5F7F4F53 -:105400008F4F9F4F16C0882311F096E911C0772364 -:1054100021F09EE8872F762F05C0662371F096E86D -:10542000862F70E060E02AF09A95660F771F881F3C -:10543000DAF7880F9695879597F9089588D018F030 -:1054400011F08CD038F480C0C4C0E92F9FD0B0F3E5 -:105450005523C9F3E7FB6217730784079507A8F183 -:1054600099F3E92FFF2788232AF03197660F771FDA -:10547000881FDAF7952F5527442332F0915050407A -:10548000220F331F441FD2F7BB27E91BF50B621B0A -:10549000730B840BB109C1F222F4620F731F841FD6 -:1054A000B11D31972AF0660F771F881FBB1FEFCF02 -:1054B000915050405AF041F0882332F0660F771F28 -:1054C000881F91505040C1F7939530C086957795CD -:1054D00067959F5FD9F7F8CF990F0008550FAA0B72 -:1054E000E0E8FEEF16161706E807F907C0F01216F7 -:1054F0001306E407F50798F0621B730B840B950BFA -:1055000039F40A2661F0232B242B252B21F408954E -:105510000A2609F4A140A6958FEF811D811D0895EB -:1055200097F99F6780E870E060E008959F3F31F051 -:10553000915020F4879577956795B795880F911DC1 -:105540009695879597F908959FEF80EC089500242C -:105550000A941616170618060906089500240A94D8 -:1055600012161306140605060895092E0394000C5E -:1055700011F4882352F0BB0F40F4BF2B11F460FFED -:1055800004C06F5F7F4F8F4F9F4F089557FD905816 -:10559000440F551F59F05F3F71F04795880F97FBF7 -:1055A000991F61F09F3F79F08795089512161306B1 -:1055B0001406551FF2CF4695F1DF08C016161706E0 -:1055C0001806991FF1CF8695710561050894089515 -:1055D000E894BB2766277727CB0197F908957CDFEE -:1055E00008F48FEF08950BD0C0CFB1DF28F0B6DFFD -:1055F00018F0952309F094CFA7CF1124EACFC6DF86 -:10560000A0F3959FD1F3950F50E0551F629FF001D5 -:10561000729FBB27F00DB11D639FAA27F00DB11D2E -:10562000AA1F649F6627B00DA11D661F829F2227B7 -:10563000B00DA11D621F739FB00DA11D621F839F3E -:10564000A00D611D221F749F3327A00D611D231F14 -:10565000849F600D211D822F762F6A2F11249F5762 -:1056600050408AF0E1F088234AF0EE0FFF1FBB1F85 -:10567000661F771F881F91505040A9F79E3F510524 -:1056800070F04ECFA6CF5F3FECF3983EDCF38695EB -:1056900077956795B795F795E7959F5FC1F7FE2BCF -:1056A000880F911D9695879597F90895FA01EE0F49 -:1056B000FF1F30962105310599F16115710561F4DF -:1056C0008038BFE39B0749F168949038810561F009 -:1056D0008038BFEF9B0741F0992342F5FF3FE1057A -:1056E0003105210511F1E8940894E795D901AA2321 -:1056F00029F4AB2FBE2FF85FD0F310C0FF5F70F41A -:10570000A695E0F7F73950F019F0FF3A38F49F7793 -:105710009F930CD00F9007FC905808953EF014CF43 -:1057200060E070E080E89FE308954FE79F775F9324 -:105730004F933F932F939ED02F913F914F915F9125 -:1057400052DF05C019F40EF0EBCE42CFFDCE26DFBE -:10575000C8F39638C0F707F80F92E8942BE33AEABB -:1057600048EB5FE74EDF0F920F920F924DB75EB797 -:105770000F92C0D0EAE0F1E016D04F915F91EF9127 -:10578000FF91E595EE1FFF1F49F0FE57E0684427A3 -:10579000EE0F441FFA95E1F74195550B32D00F906B -:1057A00007FE26C00895DF93CF931F930F93FF92B8 -:1057B000EF92DF927B018C01689405C0DA2EEF0135 -:1057C0001EDFFE01E894A5912591359145915591F3 -:1057D000AEF3EF0106DDFE019701A801DA9479F737 -:1057E000DF90EF90FF900F911F91CF91DF9108957F -:1057F0009B01AC0160E070E080E89FE349CD90CE72 -:1058000095CECCDEE8F39923D9F3940F511DBBF369 -:105810009150504094F059F0882332F0660F771F72 -:10582000881F91505040C1F79E3F510544F7880FA3 -:10583000911D9695879597F908955F3FACF0983E36 -:105840009CF0BB27869577956795B79508F4B1606E -:105850009395C1F7BB0F58F711F460FFE8CF6F5F66 -:105860007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE05 -:10587000689456CE93DEC8F39923D1F3C6F3DF9331 -:10588000CF931F930F93FF92C92FDD2788232AF010 -:105890002197660F771F881FDAF720E030E040E895 -:1058A0005FEB9FE3883920F0803E30F021968F77C0 -:1058B00087DCE2E3F1E003C083DCEFE5F1E073DFD6 -:1058C0008B01BE01EC01FB2E6F5771097595771F97 -:1058D000880B990B78DD28E132E741E35FE38FDE47 -:1058E000AF2D9801AE01FF900F911F91CF91DF91E5 -:1058F00078DC3BCEFA01DC01AA0FBB1F9B01AC0197 -:10590000BF5728F422273327442750781FC0B751A8 -:1059100088F4AB2F0024469537952795011CA39555 -:10592000D2F3002069F0220F331F441FB395DAF33E -:105930000DD045CC61307105A0E88A07B94630F436 -:105940009B01AC016627772788279078309621F055 -:1059500020833183428353830895AA1BBB1B51E1EB -:1059600007C0AA1FBB1FA617B70710F0A61BB70BCF -:10597000881F991F5A95A9F780959095BC01CD0174 -:10598000089597FB072E16F4009407D077FD09D0F1 -:105990000E94AD2C07FC05D03EF4909581959F4F59 -:1059A0000895709561957F4F0895EE0FFF1F059044 -:1059B000F491E02D0994F999FECF92BD81BDF89A3A -:1059C000992780B50895A8E1B0E042E050E00C943A -:1059D000032D262FF999FECF92BD81BDF89A01972C -:1059E00000B4021639F01FBA20BD0FB6F894FA9A27 -:1059F000F99A0FBE08950196272F0E94EA2C0C9465 -:105A0000E92CDC01CB01FC01F999FECF06C0F2BD07 -:105A1000E1BDF89A319600B40D9241505040B8F76C -:065A20000895F894FFCF89 -:105A2600640007000CFF0000003F643E10CC10A984 -:105A360010751041100101DF022808140A321E00F9 -:105A460002040507090B0C0E1011131517181A1C62 -:105A56001D1F2123242628292B2D2F30323435379C -:105A6600393B1F0F03764F5F6F7F496943790959A9 -:105A760053633149803F5D8B803FF8BF803FCAE169 -:105A8600803F73ED803FCAE1803FF8BF803F5D8B6A -:105A9600803F3149803F0000803FF16D7F3F75EACE -:105AA6007E3F4C827E3F833F7E3F84287E3F833FFE -:105AB6007E3F4C827E3F75EA7E3FF16D7F3F000060 -:105AC600803F3F4D36394305F604C00487041A0467 -:105AD60033044C04650401020304050607080900A3 -:00000001FF diff --git a/keyboard/planck/keymaps/unicode/compiled.hex b/keyboard/planck/keymaps/unicode/compiled.hex deleted file mode 100644 index a32eb3a4a9..0000000000 --- a/keyboard/planck/keymaps/unicode/compiled.hex +++ /dev/null @@ -1,1185 +0,0 @@ -:100000000C9493040C94D7040C94D7040C94D70448 -:100010000C94D7040C94D7040C94D7040C94D704F4 -:100020000C94D7040C94D7040C948A0F0C945C1095 -:100030000C94741D0C94D7040C94D7040C94D7041E -:100040000C94D7040C94D7040C94D7040C94D704C4 -:100050000C94D7040C94DC1D0C94D7040C94D70496 -:100060000C94D7040C94D7040C94D7040C94D704A4 -:100070000C94D7040C94D7040C94D7040C94D70494 -:100080000C94D7040C94D7040C94D7040C94D70484 -:100090000C94D7040C94D7040C94D7040C94D70474 -:1000A0000C94D7040C94D7040C94D704500558052D -:1000B00062056A0579058305C005C005C005C00550 -:1000C000C005C0059105B405BC05C910EB10D911D8 -:1000D000EB10D91130115311D911A811BB11A5146E -:1000E000A514D414D41413153315891689163E1586 -:1000F0008916EE15EE1555165E1689168316FB1534 -:10010000FB15FB15FB15FB15FB15FB15FB15FB156F -:10011000FB15FB15FB15FB15FB15FB15FB150B164E -:1001200019162016271631160108011501090119A3 -:100130000112010F02080215020902190212020F30 -:10014000002B0014001A000800150017001C0018EE -:10015000000C00120013002A0029000400160007FA -:100160000009000A000B000D000E000F00330034E0 -:1001700000E1001D001B0006001900050011001021 -:100180000036003700380028000530E000E200E3C8 -:100190000003302C002C0004305000510052004F5E -:1001A000002B00718077806680708067806A806C29 -:1001B00080758079803B800880290061807280731F -:1001C000807480648068806E80658069806F80271D -:1001D00080E1007A8078806380768062806B806DB9 -:1001E000802C802E802F8028000100E000E200E3B8 -:1001F0000003302C002C0004305000510052004FFE -:10020000002B0034003600370013001C0009000AE0 -:1002100000060015000F002A002900040012000843 -:100220000018000C0007000B001700110016003822 -:1002300000E100330014000D000E001B000500104B -:10024000001A0019001D0028000530E000E200E35C -:100250000003302C002C0004305000510052004F9D -:100260000035021E021F0220022102220223022464 -:10027000022502260227022A004C003A003B003CDD -:10028000003D003E003F002D022E022F02300231C1 -:1002900002010040004100420043004400450001CB -:1002A0000001000100010001000100010001000146 -:1002B000000100010001000100AB00AA00A900AE8E -:1002C0000035001E001F0020002100220023002412 -:1002D000002500260027002A004C003A003B003C85 -:1002E000003D003E003F002D002E002F0030003169 -:1002F000000100400041004200430044004500016D -:1003000000010001000100010001000100010001E5 -:10031000000100010001000100AB00AA00A900AE2D -:10032000001E001E001E001E001E001E001E001EDD -:10033000001E001E001E001E00000014001A00080F -:1003400000150017001C0018000C00120013002FED -:10035000000E3004001600070009000A000B000D13 -:10036000000E000F00330034000D300000000006C6 -:100370000019000000000011001000000000000043 -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F00000000000000000000000000000000000FD -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000000000CC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:100740000001000050010001000100010001000152 -:10075000000100010001004C000100010001002027 -:10076000502150135012500030013002300C300133 -:1007700000010027502650235024502850295001B2 -:100780000001000100010001000100010001000161 -:100790000001000100010001000100010001000151 -:1007A000002803540068006500200050006C0061C0 -:1007B000006E0063006B0020004B00650079006252 -:1007C000006F0061007200640000002C034F007293 -:1007D00000740068006F006C0069006E00650061C5 -:1007E00000720020004B006500790062006F00611C -:1007F000007200640073000000040309040902543D -:1008000000030100A0FA090400000103010100092E -:100810002111010001223F000705810308000A0998 -:100820000401000103010200092111010001224D10 -:10083000000705820308000A090402000103000002 -:100840000009211101000122360007058303080079 -:100850000A1201100100000008EDFE6060010001B5 -:1008600002000105010980A101850216010026B7D9 -:10087000001A01002AB700751095018100C0050C0F -:100880000901A1018503160100269C021A01002A14 -:100890009C02751095018100C005010902A10109A2 -:1008A00001A1000509190129051500250195057506 -:1008B0000181029501750381010501093009311596 -:1008C00081257F95027508810609381581257F9558 -:1008D0000175088106050C0A38021581257F9501EE -:1008E00075088106C0C005010906A101050719E0C8 -:1008F00029E7150025019508750181029501750804 -:1009000081010508190129059505750191029501D7 -:10091000750391010507190029FF150025FF9506AC -:1009200075088100C00011241FBECFEFDAE0DEBFE2 -:10093000CDBF04B603FE24C08091E4019091E5018F -:10094000A091E601B091E7018730904BA740B04BF2 -:10095000B9F41092E4011092E5011092E6011092B0 -:10096000E70114BE84B7877F84BF88E10FB6F8948F -:1009700080936000109260000FBEE0E0F8E30995FC -:1009800011E0A0E0B1E0ECEBF9E402C005900D92BB -:10099000AE33B107D9F711E0AEE3B1E001C01D926B -:1009A000A43EB107E1F70E94D00C0C94DC240C9417 -:1009B0000000089581E0089508950C94D9040C94E2 -:1009C000DA040C94DC040E94522323E030E0281B5C -:1009D0003109220F209340010895282F2F988091EC -:1009E0008000211108C0877F8093800010928D00C5 -:1009F00010928C001BC0886080938000233019F413 -:100A00008FEF9FEF0FC083E090E0821B9109880F6A -:100A1000991F2FEF3FEFA90102C0569547958A9580 -:100A2000E2F7CA0190938D0080938C000C94E3044C -:100A30000E94E30484E080933F0110923E010895F8 -:100A4000279A2F988FEF9FEF9093870080938600CF -:100A50008AE08093800089E1809381000E94BB221C -:100A60000C9418050E9420056E9A769A0C94C6057F -:100A7000CF93DF93EC010E946B1EBE0180E090E0FB -:100A8000DF91CF910C94B41A462F50E04F305105AE -:100A900008F076C0DC01FA01EA5AFF4F0C948C246E -:100AA00012968C91882309F46BC081E090E007C016 -:100AB00012968C91882309F463C082E090E00E9432 -:100AC00038055EC012968C91882309F459C084E0E1 -:100AD00090E0F5CF12968C91882311F083E00EC040 -:100AE00083E00E94521B40E164E083E00E94080A18 -:100AF00047C012968C91882321F084E00E94311B1C -:100B0000F2CF84E0EECF12968C91882331F085EEFF -:100B10000E9449130E94122333C085EE0E941114D3 -:100B20002FC012968C91882359F184E00E94521BA9 -:100B300083E00E94521B80E10E94521B85E00E94CC -:100B4000311B0E94581E811102C00E94391E0E9452 -:100B5000701E90E09093E3018093E201806880939F -:100B6000E2010E94741E0CC012968C91882341F001 -:100B700085E00E94521B04C012968C91811103C023 -:100B800080E090E0089588E291E00895089581E082 -:100B900008950C94C7050895282F882339F090E014 -:100BA0002A3010F44D9608950697089587E290E054 -:100BB0000895AF92BF92DF92EF92FF920F931F932F -:100BC000CF93DF938C01FC01C081D181CE010E94C3 -:100BD000ED1BBE010E94EE06EC01B8010E94C905A2 -:100BE000882309F4EBC0F8018281882309F4A0C0AE -:100BF00080914D0181111FC0C431F0E5DF0709F07C -:100C0000D7C00E94CB0581E080934D010E94A61DB4 -:100C100090934C0180934B01109244011092460135 -:100C200010924501109248011092470110924A011A -:100C300010924901C3C080914B0190914C010E94D8 -:100C4000B21D883C910570F480914401E82FF0E0DA -:100C5000EE0FFF1FEB5BFE4FD183C0838F5F80934E -:100C60004401ACC0C13080E8D80708F451C0F80195 -:100C70008281882309F460C05E01E894B7F880910E -:100C80004301813079F050F08230C1F482EE0E944D -:100C9000491387E50E94491387E50EC082EE0E9442 -:100CA00049130CC080EE0E94491381EE0E94491343 -:100CB00088E10E94491388E10E9411148CE0E82E1B -:100CC000F12CC5010E2C02C0969587950A94E2F787 -:100CD0008F700E94CC05D82E0E9449138D2D0E9442 -:100CE0001114F4E0EF1AF1088CEFE8168FEFF80614 -:100CF00041F780914301813029F010F0823041F4B6 -:100D000082EE04C080EE0E94111481EE0E94111444 -:100D1000C438E0E5DE0721F0C538D04501F137C021 -:100D2000F8018281882361F01092410182E01EC0A7 -:100D3000C130F0E8DF0760F3C43880E5D80761F41C -:100D400080914101811106C086E20E94491386E22A -:100D50000E94111482E018C0C538D045C1F4F801D2 -:100D60008281882331F01092420180E20E94601457 -:100D700025C080914201811106C087E20E9449137B -:100D800087E20E94111480E20E94671417C081E07C -:100D90008093410180934201C801DF91CF911F915F -:100DA0000F91FF90EF90DF90BF90AF900C94DF0415 -:100DB000C130F0E8DF0708F05FCFAACF80E0DF9115 -:100DC000CF911F910F91FF90EF90DF90BF90AF9068 -:100DD00008950C9432050C94DD0408959CE0799FED -:100DE000F001112490E3899FE00DF11D1124E60F1D -:100DF000F11DEE0FFF1FEF5BFE4F8591949108955B -:100E0000880F991FFC01EF53F0408591949108954C -:100E1000880F991FFC01EF5BFE4F85919491089517 -:100E20000F931F93CF93DF93EC01811521E392077A -:100E3000A0F5C11580E3D80708F0D7C0C83ED1059A -:100E4000D8F4C03ED10508F003C2C83AD10578F401 -:100E5000C53AD10508F06AC0C130D10509F463C0B4 -:100E600008F4F3C1C430D10508F0F2C1EEC1CB3BA8 -:100E7000D10508F466C0E9C1C11590E2D90708F0B0 -:100E8000AFC0C11521E0D20708F0E2C1C03FD105D3 -:100E900008F4DBC18E0110651BC2C03880E5D8079D -:100EA00000F5C03790E5D90708F0A3C0C11520E5CB -:100EB000D20709F4ACC050F4CE01905480319F4069 -:100EC00008F0C3C1DF708E01106A02C2C13080E534 -:100ED000D80709F4AAC0C43190E5D90708F4ABC01B -:100EE000B4C1C33820E5D20709F48EC050F4C1382C -:100EF00090E5D90709F482C008F083C000E011ED45 -:100F0000E7C1C03181E5D80708F49FC1C11597E555 -:100F1000D90708F432C1CE0190578115904108F0ED -:100F200094C1DF708FC101E010E0D2C1C53AD10594 -:100F300009F490C1C63AD10509F08FC102E810E466 -:100F4000C7C1C83AD10509F48BC1C93AD10509F422 -:100F50008AC1CA3AD10509F489C1CB3AD10509F44D -:100F600088C1CC3AD10509F487C1CD3AD10509F43D -:100F700086C1C03BD10509F485C1CE3AD10509F43B -:100F800084C1CF3AD10509F483C1C13BD10509F42D -:100F900082C1C23BD10509F481C1C33BD10509F42B -:100FA00080C1C43BD10509F47FC1C53BD10509F41B -:100FB0007EC1C63BD10509F47DC1C73BD10509F40B -:100FC0007CC1C83BD10509F47BC1C93BD10509F4FB -:100FD0007AC1CA3BD10509F479C100E014E478C1B3 -:100FE000CE019F700E94080774C1DD278E01106C2E -:100FF0006FC1CF70DD278E01146D6AC100E010ED66 -:1010000067C100E012ED64C100E013ED61C10E9410 -:10101000F4168FEF94E32CE0815090402040E1F7EC -:1010200000C000000E94011E53C18091C401816074 -:101030008093C4014DC10E94581E811102C00E94BC -:10104000391E0E94701E90E09093E3018093E201AC -:10105000C23080E5D80721F48091E201816086C02A -:10106000C43090E5D90721F48091E20182607EC00E -:10107000C63020E5D20721F48091E201846076C079 -:10108000C83080E5D80719F48091E20127C0CA3042 -:1010900090E5D90721F48091E201806167C0CC30EE -:1010A00020E5D20721F48091E20180625FC0CE305A -:1010B00080E5D80721F48091E201806457C0C031F7 -:1010C00090E5D90721F48091E20180684FC0C231D8 -:1010D00020E5D20729F48091E2018460886046C04F -:1010E000C33080E5D80721F48091E2018E7F3EC0B5 -:1010F000C53090E5D90721F48091E2018D7F36C09B -:10110000C73020E5D20721F48091E2018B7F2EC009 -:10111000C93080E5D80719F48091E20126C0CB30B0 -:1011200090E5D90721F48091E2018F7E1FC0CD3078 -:1011300020E5D20721F48091E2018F7D17C0CF30E6 -:1011400080E5D80721F48091E2018F7B0FC0C13187 -:1011500090E5D90721F48091E2018F7707C0C33170 -:10116000D04531F48091E2018B7F877F8093E2014B -:101170008091E2010E94741EABC08D2F99278F7061 -:10118000992781309105D9F49E012370332702C03D -:10119000880F991F2A95E2F79C688E0144E0000FA2 -:1011A000111F4A95E1F700271370802B912B53E014 -:1011B000CC0FDD1F5A95E1F7C076DD272FC08230B6 -:1011C000910531F4DC2FCC278E01016F106A80C0AD -:1011D0008330910569F4CE018370992701E010E016 -:1011E00002C0000F111F8A95E2F7C8019C680FC06A -:1011F00084309105B9F4CE018370992701E010E0A5 -:1012000002C0000F111F8A95E2F7C8019A6823E017 -:10121000CC0FDD1F2A95E1F7C07ED7708C010C2B17 -:101220001D2B56C08530910531F4DC2FCC278E0163 -:10123000046F106A4DC0069709F04AC0CF71DD27D0 -:10124000DC2FCC278E01106243C000E010E040C0CC -:101250008E013EC001E810E43BC003E810E438C052 -:1012600002EE14E435C009EE14E432C00AEE14E4D0 -:101270002FC005EB14E42CC006EB14E429C007EBE7 -:1012800014E426C00CEC14E423C00DEC14E420C0DC -:1012900003E815E41DC00AE815E41AC002E915E4E4 -:1012A00017C004E915E414C001E216E411C003E21A -:1012B00016E40EC004E216E40BC005E216E408C012 -:1012C00006E216E405C007E216E402C00AE216E4EC -:1012D000C801DF91CF911F910F9108959CE0799FF4 -:1012E000F001112490E3899FE00DF11D1124E60F18 -:1012F000F11DEE0FFF1FEF5BFE4F85919491803E35 -:101300009105E0F4803C910558F58133910509F48D -:101310006FC048F48932910509F463C08A3291059F -:1013200009F46DC072C089339105E9F082389105E6 -:10133000D1F08533910509F44DC067C0833E910516 -:1013400081F138F4803E9105B9F0823E9105D9F0E3 -:101350005CC0863E910561F1873E9105A1F155C0C3 -:101360000E94000708952091E20120FD02C021FFA4 -:101370004CC080EE90E049C08091E20180FFF9CF3F -:1013800089E390E042C08091E20182FF0EC080912B -:10139000E20184FF03C080E090E037C083EE90E07C -:1013A00034C08091E20182FFF2CF82EE90E02DC046 -:1013B0008091E20183FF0BC08091E20184FDEBCFBD -:1013C00087EE90E022C08091E20183FFF5CF86EEA8 -:1013D00090E01BC08091E20185FF07C089E290E0A8 -:1013E00014C08091E20185FFF9CF85E390E00DC044 -:1013F0008091E20186FF07C08AE290E006C08091FA -:10140000E20186FFF9CF81E390E00E941007089582 -:10141000CF92DF92EF92FF920F931F9301E010E0C3 -:1014200020E030E06801790104C0CC0CDD1CEE1C2A -:10143000FF1C8A95D2F704C0000F111F221F331F13 -:101440006A95D2F70C291D292E293F29C090AF019A -:10145000D090B001E090B101F090B201C022D12251 -:10146000E222F322842FC016D106E206F30641F4ED -:101470001F910F91FF90EF90DF90CF900C94311B54 -:101480001F910F91FF90EF90DF90CF900C94521B23 -:101490000C94E104E82FF0E0E05EFE4F8081E82F3D -:1014A000EF70F0E082958F7021E030E0A90102C07A -:1014B000440F551F8A95E2F740A308950F931F9399 -:1014C000CF93DF9385B7806885BF85B7806885BF78 -:1014D000C3E0D0E001E010E0FE01E05EFE4F80815D -:1014E000E82FEF70F0E021A182958F70A80102C073 -:1014F000440F551F8A95E2F7CA01822B81A38C2FD6 -:101500000E944A0A219740F78BE090E061E070E08A -:10151000FC01EC5EFE4F2081E22FEF70F0E042A173 -:1015200022952F70DB0102C0AA0FBB1F2A95E2F79C -:101530009D01242B22A3019758F7DF91CF911F9192 -:101540000F910C94E906EF92FF920F931F93CF93A4 -:10155000DF9306E511E0C3E0EE24E394F12CD5E03F -:101560008C2F0E944A0A8BE090E040E050E0FC01A2 -:10157000EC5EFE4F6081E62FEF70F0E020A130E0DE -:1015800062956F7002C0359527956A95E2F720FD48 -:1015900009C09701082E02C0220F331F0A94E2F7F8 -:1015A000422B532B019718F7F801929182918F01EA -:1015B0008417950721F051834083D09300018C2F2D -:1015C0000E944A0AC15060F68091000187FD2CC03C -:1015D0008150809300018F3F39F08FE99FE00197A0 -:1015E000F1F700C0000020C0809154019091550196 -:1015F00090935D0180935C01809152019091530121 -:1016000090935B0180935A01809150019091510118 -:10161000909359018093580180914E0190914F0110 -:1016200090935701809356010E94EB0681E0DF9171 -:10163000CF911F910F91FF90EF900895E82FF0E068 -:10164000EE0FFF1FEA5AFE4F8081918108950895A1 -:101650000F931F93CF930EE511E0C0E0F801929134 -:1016600082918F010E941E1DC80FF1E006351F07F1 -:10167000A9F78C2FCF911F910F910895809166014A -:101680000895CF93DF9300D01F92CDB7DEB79C01B2 -:101690008091D901843019F593E099833B832A83A3 -:1016A0009093E9008FEF9091E800815095FD06C07E -:1016B00095ED9A95F1F700008111F5CF8091E80042 -:1016C00085FF0DC040E050E063E070E0CE01019680 -:1016D0000E947A0D8091E8008E778093E8000F9049 -:1016E0000F900F90DF91CF910895CF93DF9300D0AB -:1016F0001F92CDB7DEB72091D901243021F522E029 -:1017000029839B838A8383E08093E9008FEF909104 -:10171000E800815095FD06C095ED9A95F1F700001F -:101720008111F5CF8091E80085FF0DC040E050E0C9 -:1017300063E070E0CE0101960E947A0D8091E8008E -:101740008E778093E8000F900F900F90DF91CF91EC -:1017500008952091D9012430F1F422E02093E9008A -:101760002FEF3091E800215035FD06C035ED3A9558 -:10177000F1F700002111F5CF2091E80025FF0BC003 -:1017800040E050E065E070E00E947A0D8091E80052 -:101790008E778093E8000895CF93DF932091D9014D -:1017A000243039F521E02093E9002FEF3091E80053 -:1017B000215035FD06C035ED3A95F1F700002111B5 -:1017C000F5CF2091E80025FF14C0EC0140E050E087 -:1017D00068E070E00E947A0D8091E8008E77809337 -:1017E000E80088E0FE01AEE5B1E001900D928A9537 -:1017F000E1F7DF91CF9108958091D801811109C05F -:101800000E940F0F0E946C0F8091E2008460809311 -:10181000E20008951092D8010895089508950C9457 -:10182000691D42E061EC81E00E94890E42E061ECBA -:1018300082E00E94890E42E061EC83E00C94890E04 -:101840008091DB01833009F453C030F4813071F0B2 -:10185000823009F48CC008958A3009F478C08B3046 -:1018600009F45EC0893009F09AC020C08091DA0185 -:10187000813A09F094C08091E800877F8093E80066 -:101880008091DE019091DF01892B21F468E08EE5E3 -:1018900091E003C060E080E090E070E00E94C50D40 -:1018A0008091E8008B778093E80008958091DA01B9 -:1018B000813209F074C08091DE019091DF01892BA3 -:1018C00009F06DC08091E800877F8093E8008091E7 -:1018D000E80082FD05C08091D9018111F8CF5FC079 -:1018E0008091F100809366018091E8008B7753C06E -:1018F0008091DA01813A09F052C08091DE01909125 -:10190000DF01892B09F04BC08091E800877F80932D -:10191000E8008091E80080FFFCCF80910B0136C089 -:101920008091DA018132D9F58091DE019091DF0159 -:10193000892BA9F58091E800877F8093E8000E94B9 -:10194000BE0E8091DC0180930B010C94F416809103 -:10195000DA01813221F58091E800877F8093E800E9 -:101960000E94BE0E8091DD018093670108958091F1 -:10197000DA01813AA1F48091E800877F8093E80042 -:101980008091E80080FFFCCF809167018093F10097 -:101990008091E8008E778093E8000C94BE0E089545 -:1019A00084B7877F84BF88E10FB6F8948093600086 -:1019B000109260000FBE90E080E80FB6F89480931C -:1019C0006100909361000FBE0E9461120E940F0F90 -:1019D0000E946C0F8091E20084608093E200789412 -:1019E0000E94F2110E94631281E091E00E940D12A8 -:1019F0008091D901853069F40E942A1D8091D70118 -:101A00008823B1F30E94581D882391F30E94640D2E -:101A1000EFCF0E946B12ECCF292F332723303105F3 -:101A2000C9F064F42130310581F02230310509F02C -:101A300043C084E590E02DEF37E042C0213231050C -:101A4000F1F02232310541F137C082E190E021E529 -:101A500038E036C099278130910541F082309105F8 -:101A600041F0892B49F5E9EFF7E005C0EBECF7E031 -:101A700002C0E1EAF7E0849190E09F0121C0633069 -:101A8000D8F4E62FF0E0EE0FFF1FE35DFE4F20815C -:101A9000318189E090E014C0633070F470E0FB01A4 -:101AA000EE0FFF1FE95DFE4F20813181FB01EC5DF0 -:101AB000FE4F808190E004C080E090E020E030E0C4 -:101AC000FA0131832083089580E189BD82E189BDD7 -:101AD00009B400FEFDCF8091D8008F7D8093D8009F -:101AE0008091E00082608093E0008091E00081FDC1 -:101AF000FCCF0895CF92DF92EF92FF920F931F9346 -:101B0000CF93DF93EC018B016A010E94DD0E8111FE -:101B100033C0C114D10439F0F60180819181081BD2 -:101B2000190BC80FD91FE12CF12C0115110519F162 -:101B30008091E80085FD16C08091E8008E77809343 -:101B4000E800C114D10449F0F60180819181E80ECA -:101B5000F91EF182E08285E00FC00E94DD0E88232D -:101B600021F30AC089918093F10001501109FFEF20 -:101B7000EF1AFF0ADACF80E0DF91CF911F910F912A -:101B8000FF90EF90DF90CF9008952091E001309189 -:101B9000E1012617370748F06115710539F42091E6 -:101BA000E8002E772093E80001C0B90140E06115FC -:101BB0007105A9F12091D901222309F443C02530F0 -:101BC00009F442C02091E80023FD40C02091E800C4 -:101BD00022FD32C02091E80020FFE9CF4091F300C0 -:101BE0002091F20030E0342BFC01CF01611571052A -:101BF00059F02830310540F481918093F100615013 -:101C000071092F5F3F4FF1CF41E02830310509F0D6 -:101C100040E02091E8002E772093E800C8CF4111E2 -:101C2000C9CF0AC08091D901882361F0853061F065 -:101C30008091E80083FD0AC08091E80082FFF2CF26 -:101C400080E0089582E0089583E0089581E008959A -:101C50002091E0013091E1012617370748F0611526 -:101C6000710539F42091E8002E772093E80001C037 -:101C7000B901FC0120E06115710591F18091D90154 -:101C8000882309F440C0853009F43FC08091E80002 -:101C900083FD3DC08091E80082FD2FC08091E80067 -:101CA00080FFE9CF2091F3008091F20090E0922B29 -:101CB0006115710559F08830910540F42491209305 -:101CC000F1003196615071090196F2CF21E0089739 -:101CD00009F020E08091E8008E778093E800CBCF78 -:101CE0002111CCCF0AC08091D901882361F08530C1 -:101CF00061F08091E80083FD0AC08091E80082FFD6 -:101D0000F2CF80E0089582E0089583E0089581E0B5 -:101D10000895982F973058F59093E900981739F067 -:101D20007091EC002091ED005091F00003C0242F41 -:101D3000762F50E021FF19C03091EB003E7F3093A9 -:101D4000EB003091ED003D7F3093ED003091EB00E2 -:101D500031603093EB007093EC002093ED005093D2 -:101D6000F0002091EE0027FF07C09F5FD3CF8F7058 -:101D70008093E90081E0089580E008958091DA0180 -:101D800087FF11C08091E80082FD05C08091D901D4 -:101D90008111F8CF11C08091E8008B770BC0809142 -:101DA000D901882349F08091E80080FFF8CF809125 -:101DB000E8008E778093E80008952091E400309148 -:101DC000E50095E64091EC00842F817040FF22C031 -:101DD0008091E80080FD1CC08091D901882391F09A -:101DE000853091F08091EB0085FD10C04091E400BA -:101DF0005091E5004217530729F39A01915011F7CA -:101E000084E0089582E0089583E0089581E00895D4 -:101E100080E008954091E80042FFDECF08950E94DF -:101E20007D0F0E94850FE0EEF0E08081816080836D -:101E3000E8EDF0E080818F77808319BCA7EDB0E0FA -:101E40008C918E7F8C9380818F7E80831092D801BD -:101E500008950F931F93CF93DF930E947D0F0E94ED -:101E6000850FC8EDD0E088818F778883888180686E -:101E7000888388818F7D888319BC1092D901109244 -:101E8000D5011092D7011092D60100EE10E0F801B2 -:101E900080818B7F808388818160888342E060E0DD -:101EA00080E00E94890EE1EEF0E080818E7F8083E9 -:101EB000E2EEF0E0808181608083808188608083B1 -:101EC000F80180818E7F8083888180618883DF91A3 -:101ED000CF911F910F910895E8EDF0E080818F7E02 -:101EE0008083E7EDF0E080818160808384E082BFC1 -:101EF00081E08093D8010C94290FE8EDF0E0808117 -:101F00008E7F80831092E20008951092DA00109282 -:101F1000E10008951F920F920FB60F9211242F9394 -:101F20003F934F935F936F937F938F939F93AF9361 -:101F3000BF93EF93FF938091E10082FF0BC08091EC -:101F4000E20082FF07C08091E1008B7F8093E10077 -:101F50000E94F1118091DA0080FF1FC08091D800AB -:101F600080FF1BC08091DA008E7F8093DA00809121 -:101F7000D90080FF0DC080E189BD82E189BD09B42F -:101F800000FEFDCF81E08093D9010E94FC0B05C0CB -:101F900019BC1092D9010E940A0C8091E10080FFC7 -:101FA00019C08091E20080FF15C08091E2008E7F11 -:101FB0008093E2008091E20080618093E200809152 -:101FC000D80080628093D80019BC85E08093D90145 -:101FD0000E940E0C8091E10084FF30C08091E200ED -:101FE00084FF2CC080E189BD82E189BD09B400FE77 -:101FF000FDCF8091D8008F7D8093D8008091E10043 -:102000008F7E8093E1008091E2008F7E8093E200DA -:102010008091E20081608093E2008091D501882365 -:1020200011F084E007C08091E30087FD02C081E0E9 -:1020300001C083E08093D9010E940F0C8091E100E0 -:1020400083FF29C08091E20083FF25C08091E100D9 -:10205000877F8093E10082E08093D9011092D501BF -:102060008091E1008E7F8093E1008091E2008E7F7D -:102070008093E2008091E20080618093E20042E080 -:1020800060E080E00E94890E8091F000886080937B -:10209000F0000E940D0CFF91EF91BF91AF919F91C5 -:1020A0008F917F916F915F914F913F912F910F9001 -:1020B0000FBE0F901F9018951F920F920FB60F92A0 -:1020C00011242F933F934F935F936F937F938F933D -:1020D0009F93AF93BF93CF93DF93EF93FF93C09101 -:1020E000E900CF708091EC00D82FD17080FDD0E84E -:1020F0001092E9008091F000877F8093F00078943F -:102100000E94A0101092E9008091F00088608093F6 -:10211000F000CD2BCF70C093E900FF91EF91DF91DC -:10212000CF91BF91AF919F918F917F916F915F916F -:102130004F913F912F910F900FBE0F901F901895C8 -:102140001F93CF93DF93CDB7DEB7AA970FB6F8945E -:10215000DEBF0FBECDBFEAEDF1E088E08E0F9091BB -:10216000F10091938E13FBCF0E94200C8091E80028 -:1021700083FF1FC18091DA019091DB01492F50E06C -:102180004A30510508F015C1FA01EB59FF4F0C9484 -:102190008C24803881F0823809F00BC18091DE01F7 -:1021A0008F708093E9008091EB0085FB882780F990 -:1021B0001092E90006C08091D6019091D70191114B -:1021C00082609091E800977F9093E8008093F100FF -:1021D0001092F100C8C0282F2D7F09F0EAC0882393 -:1021E00019F0823061F0E5C08091DC01813009F0A6 -:1021F000E0C0933009F080E08093D7012BC080913C -:10220000DC01811127C08091DE018F7009F4D1C0FB -:102210008093E9002091EB0020FF1CC0933021F453 -:102220008091EB00806214C09091EB0090619093DC -:10223000EB0021E030E0A90102C0440F551F8A9550 -:10224000E2F74093EA001092EA008091EB00886088 -:102250008093EB001092E9008091E800877F86C0B0 -:102260008111A7C01091DC011F778091E300807875 -:10227000812B8093E3008091E800877F8093E800C2 -:102280000E94BE0E8091E80080FFFCCF8091E300A9 -:1022900080688093E300111102C082E001C083E0F6 -:1022A0008093D90186C08058823008F082C0809126 -:1022B000DC019091DD018C3D53E0950779F583E0D9 -:1022C0008A838AE289834FB7F894DE01139620E06F -:1022D0003EE051E2E32FF0E050935700E49120FFFD -:1022E00003C0E295EF703F5FEF708E2F90E0EA3011 -:1022F00010F0C79601C0C0968D939D932F5F243137 -:1023000049F74FBF8091E800877F8093E8006AE239 -:1023100070E0CE0101960E94C50D14C0AE014F5F62 -:102320005F4F6091DE010E940C0DBC01009709F423 -:1023300040C09091E800977F9093E80089819A814E -:102340000E94280E8091E8008B778093E80031C0CE -:10235000803879F58091E800877F8093E80080914C -:10236000D5018093F1008091E8008E778093E8009A -:102370000E94BE0E1EC081111CC09091DC019230E3 -:10238000C0F48091E800877F8093E8009093D501A6 -:102390000E94BE0E8091D501811106C08091E3009C -:1023A00087FD02C081E001C084E08093D9010E94D2 -:1023B000110C8091E80083FF0AC08091E800877FBC -:1023C0008093E8008091EB0080628093EB00AA96F6 -:1023D0000FB6F894DEBF0FBECDBFDF91CF911F9136 -:1023E00008950895CF938091D9018823A1F0C091D9 -:1023F000E900CF709091EC00892F817090FD80E80A -:10240000C82B1092E9008091E80083FD0E94A01083 -:10241000CF70C093E900CF91089590936D018093A0 -:102420006C010895E0916C01F0916D01309721F0FD -:102430000190F081E02D099480E00895E0916C0115 -:10244000F0916D01309721F00280F381E02D099425 -:102450000895E0916C01F0916D01309721F00480B6 -:10246000F581E02D0994089520916A0130916B0166 -:102470008217930771F090936B0180936A01E0914A -:102480006C01F0916D01309721F00680F781E02D0D -:10249000099408952091680130916901821793078A -:1024A00071F09093690180936801E0916C01F09163 -:1024B0006D01309721F00084F185E02D0994089595 -:1024C00008950C9460120E949D1D0E945E0A0E9455 -:1024D000231E0C94BB225F926F927F928F929F92E9 -:1024E000AF92BF92CF92DF92EF92FF920F931F9322 -:1024F000CF93DF9300D000D01F92CDB7DEB70E94FC -:10250000A30A97E7C92E91E0D92E03E010E0AA2490 -:10251000A394B12C502E802F0E941E0B4C01F6016B -:10252000729062906F016826792661147104A1F49B -:102530000150110978F78FEF89838A831B820E94EB -:10254000A61D8160782F9D838C8349815A816B8180 -:102550008D810E941B1338C08091C40181FD0E94AF -:10256000270B2BE030E07501022E02C0EE0CFF1CA1 -:102570000A94E2F7C70186219721892B09F1298363 -:102580005A828E209F2091E0892809F490E09B8355 -:102590000E94A61D8160782F9D838C8349815A817A -:1025A0006B818D810E941B13000F111FF801E159EF -:1025B000FE4F80819181E826F926F182E08204C0F5 -:1025C0002150310980F6B4CF0E94FC1F10916E019A -:1025D0000E9412121817D1F00E94121280936E01FD -:1025E0000F900F900F900F900F90DF91CF911F9150 -:1025F0000F91FF90EF90DF90CF90BF90AF909F90A2 -:102600008F907F906F905F900C94480A0F900F907E -:102610000F900F900F90DF91CF911F910F91FF902E -:10262000EF90DF90CF90BF90AF909F908F907F9072 -:102630006F905F900895CF93DF93CDB7DEB72B9760 -:102640000FB6F894DEBF0FBECDBF4F8358876987A2 -:102650007A878B87DE01119686E0FD0111928A95BB -:10266000E9F785E0FE01379601900D928A95E1F732 -:1026700049815A816B817C818D819E810E94921952 -:102680002B960FB6F894DEBF0FBECDBFDF91CF9172 -:102690000895CF93882309F4C2C0C82F823859F413 -:1026A0000E94121281FDBBC089E30E946C1C0E9433 -:1026B000EF1C89E30CC0833879F40E94121280FD6C -:1026C000AEC083E50E946C1C0E94EF1C83E50E9453 -:1026D000891CCF910C94EF1C843859F40E9412127B -:1026E00082FD9DC087E40E946C1C0E94EF1C87E461 -:1026F000EECF8CEF8C0F813A48F48C2F0E9423226E -:1027000081118DC08C2F0E946C1CE3CF80E28C0F56 -:10271000883048F4C77081E001C0880FCA95EAF795 -:102720000E94A81CD6CF8BE58C0F833078F4C53A75 -:1027300029F0C63A31F083E890E005C081E890E0E6 -:1027400002C082E890E0CF910C94341288E58C0F9F -:10275000833108F064C0C83A39F1C93A41F1CA3A44 -:1027600049F1CB3A51F1CC3A59F1CD3A61F1C03B44 -:1027700069F1CE3A71F1CF3A79F1C13B81F1C23BB7 -:1027800089F1C33B91F1C43B99F1C53BA1F1C63B33 -:10279000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B93 -:1027A000C9F180E090E038C082EE90E035C089EE5B -:1027B00090E032C08AEE90E02FC085EB90E02CC014 -:1027C00086EB90E029C087EB90E026C08CEC90E08F -:1027D00023C08DEC90E020C083E891E01DC08AE822 -:1027E00091E01AC082E991E017C084E991E014C039 -:1027F00081E292E011C083E292E00EC084E292E0B6 -:102800000BC085E292E008C086E292E005C087E254 -:1028100092E002C08AE292E0CF910C944A12CF91EA -:102820000895882309F44BC0823859F40E9412128B -:1028300081FF45C089E30E946C1C0E94EF1C89E364 -:102840000CC0833871F40E94121280FF38C083E5F7 -:102850000E946C1C0E94EF1C83E50E94891C0C9452 -:10286000EF1C843859F40E94121282FF28C087E4BA -:102870000E946C1C0E94EF1C87E4EFCF9CEF980F26 -:10288000913A58F390E2980F983050F4877091E0A5 -:1028900001C0990F8A95EAF7892F0E94AE1CDFCFFD -:1028A0009BE5980F933020F480E090E00C94341274 -:1028B000885A833120F480E090E00C944A12089505 -:1028C000882321F00E94A81C0C94EF1C08958823F3 -:1028D00021F00E94AE1C0C94EF1C08957F928F9201 -:1028E0009F92AF92BF92CF92DF92EF92FF920F939F -:1028F0001F93CF93DF931F92CDB7DEB77C01C62E17 -:10290000772EFC01058102950F70128111110E9432 -:10291000C51C0E94651C882379F0112369F080E2B0 -:102920008C0D883048F082E00E944E1C0E94651C8D -:1029300091E0D82ED92601C0D12CE72DE295EF7079 -:10294000F0E0E159FF4F0C948C24872D807F072DF8 -:102950000F70882311F00295007F112389F0002366 -:1029600009F499C180E28C0D883020F4802F0E94F8 -:10297000A81C03C0802F0E94B81C0E94EF1C8BC1B2 -:102980008C2D0E941114002309F4C3C180E28C0D28 -:10299000883020F4802F0E94AE1C03C0802F0E943C -:1029A000BE1C0E94EF1CB5C1872D807F972D9F70A4 -:1029B000803211F4892F03C0892F8295807FCC202B -:1029C00021F0F1E0CF16A1F01DC0112339F0002352 -:1029D00019F1013009F50E94D81C9BC1002319F0A0 -:1029E000013009F496C189830E94DB1C898110C1E2 -:1029F000112321F0063008F08CC10EC0053008F01C -:102A000088C106C1112359F0002331F0F7019581E7 -:102A100090FF41C19F7095830E9460147AC100238A -:102A200009F4F6C03EC1872D86958695837090E0A7 -:102A3000009719F0019761F06CC1112321F08C2DE2 -:102A4000972D937002C080E090E00E94341261C123 -:102A5000112321F08C2D972D937002C080E090E01F -:102A60000E944A1256C18C2D112319F00E94041F96 -:102A700002C00E946C1F0E94F11F4BC1872D837002 -:102A800009F052C0111145C18C2D82958695877031 -:102A9000880F880F9C2D9F70892E912CA12CB12C12 -:102AA000082E04C0880C991CAA1CBB1C0A94D2F7DF -:102AB000C4FE14C00FE010E020E030E0B901A8012E -:102AC00004C0440F551F661F771F8A95D2F7CB01AC -:102AD000BA01609570958095909503C060E070E0B4 -:102AE000CB01272D26952695237030E02230310525 -:102AF00069F02330310589F0682979298A299B29D1 -:102B00002130310571F00E94DA1A03C16829792950 -:102B10008A299B290E94F61AFCC00E94DA1AC50174 -:102B2000B4010E94BE1AF5C0112319F0872D8170DF -:102B300001C08695882309F4ECC08C2D829586957A -:102B40008770880F880F9C2D9F70892E912CA12C47 -:102B5000B12C082E04C0880C991CAA1CBB1C0A941A -:102B6000D2F7C4FE14C00FE010E020E030E0B9015D -:102B7000A80104C0440F551F661F771F8A95D2F71E -:102B8000CB01BA01609570958095909503C060E087 -:102B900070E0CB01272D269526952370422F50E01B -:102BA0004230510569F04330510589F0682979298F -:102BB0008A299B294130510571F00E94B41BA9C09C -:102BC000682979298A299B290E94D01BA2C00E94CA -:102BD000B41BC501B4010E94981B9BC08C2D90E0D2 -:102BE000FC01E05EF109E531F10508F050C0E15863 -:102BF000FF4F0C948C240C2D0F70872D8F71112397 -:102C000021F00E94311B802F07CF0E94521B802F82 -:102C10000E9467147EC0112341F0053008F079C08E -:102C2000872D8F710E94771B74C0063008F071C029 -:102C3000F7CF112339F0872D8F710E94311B69C0A6 -:102C40001123C9F3872D8F710E94521B62C011237B -:102C500029F0872D8F710E941C1B5BC00E94121BE4 -:102C600058C0112351F0172D1F71812F0E94311B65 -:102C700063E0812F0E94451C4CC081E00E944E1CE5 -:102C8000023008F446C082E00E944E1C42C011236C -:102C900031F0002381F28C2D0E9449133AC00023A9 -:102CA00089F28C2D0E94111434C0472D4F706C2D69 -:102CB000C7010E9444050E94361A2BC0111129C079 -:102CC000472D4F7050E042305105B9F04CF441159A -:102CD000510581F041305105E1F40E94E32219C011 -:102CE0004330510569F04430510599F48C2D0E9410 -:102CF00035230FC00E94CC220CC00E94FF2209C0C5 -:102D00000E94122306C0472D4F706C2DC7010E94F0 -:102D1000ED06DD20F9F00E94411C80FD1BC0F7018B -:102D200012820E943B1C0E94311BC7010E94B916EF -:102D30000E943B1C0F90DF91CF911F910F91FF904C -:102D4000EF90DF90CF90BF90AF909F908F907F904B -:102D50000C94521B0F90DF91CF911F910F91FF9018 -:102D6000EF90DF90CF90BF90AF909F908F907F902B -:102D700008950F931F93CF93DF93EC01888199817E -:102D80002B813C81232BB9F09F3F11F48F3F99F0A9 -:102D9000CE010E94D905882371F0688179818A81EA -:102DA0000E94371C8C010E94EC1B0E94B31AB801D0 -:102DB000CE010E946E14DF91CF911F910F91089563 -:102DC0000E94C51C0E94D51C0E949A1C0E94EF1CE8 -:102DD0000E94A2200E94F11F80E090E00E94341225 -:102DE00080E090E00C944A120E94B51C0C94E0160E -:102DF0000E942C1C292F22952F7030E02C30310599 -:102E00004CF42A3031056CF422503109223031055E -:102E1000A8F407C02C30310569F02F30310551F08E -:102E20000DC0803F69F018F4803E40F409C0843F33 -:102E300029F406C093FB882780F9089580E008955F -:102E400081E00895CF93DF9300D000D01F92CDB7DB -:102E5000DEB70F900F900F900F900F90DF91CF91F2 -:102E60000895CF93DF9300D000D000D0CDB7DEB768 -:102E700026960FB6F894DEBF0FBECDBFDF91CF917F -:102E800008951F93CF93DF93C091770116E080914F -:102E90007801C81799F0D0E01C9FF0011D9FF00D3C -:102EA0001124E758FE4F40815181628173818481F2 -:102EB00095810E9431172196C770E9CFDF91CF919C -:102EC0001F9108954091A9015091AA016091AB0111 -:102ED0007091AC018091AD019091AE010C943117CD -:102EE0008091AE0182958F7009F054C08091AB0142 -:102EF000882309F44FC080917701A09178016091F7 -:102F0000A9017091AA014091AC015091AD01B6E0C8 -:102F10008A1709F43FC090E041155105C1F17F3F88 -:102F200011F46F3FA1F1B89FF001B99FF00D11248A -:102F3000E758FE4F218172132AC02081621327C0F7 -:102F40002281211124C0238134812417350710F4F4 -:102F500021503109241B350B283C3105C0F4209148 -:102F6000AE012F7020612093AE0126E0289FF00172 -:102F7000299FF00D1124E258FE4F80818F708061EF -:102F8000808389EA91E00E94B9160C94411701965A -:102F90008770BECF0895CF92DF92EF92FF920F938A -:102FA0001F93CF93DF93CDB7DEB762970FB6F89438 -:102FB000DEBF0FBECDBF8C0185E0F801DE011D969E -:102FC00001900D928A95E1F7D8014C9111965C9190 -:102FD000119712966C9112971396CD90DC901497DE -:102FE0003091A9017091AA018091AC019091AD013D -:102FF000009709F46BC17F3F19F43F3F09F466C1A4 -:10300000E090AB01EE2009F4C0C02091AE01C816DB -:10301000D90628F0F601E81BF90BCF0104C0809512 -:1030200090958C0D9D1DFF24F394883C910578F0BC -:10303000F12C207F09F0C6C07C2DD98AC88A8989E5 -:103040000E94221789EA91E00E94B916B1C0822F2E -:10305000807F09F046C0751314C0341312C061118B -:1030600010C02F7020612093AE010E94621789EA80 -:1030700091E00E94B9168091AE01D80115968C930B -:103080002EC0CD2819F15F3F11F44F3FF9F0F62E15 -:1030900061111CC0809177012091780136E0821780 -:1030A00009F45AC090E0389FF001399FF00D1124C7 -:1030B000E758FE4F7181571306C07081471303C054 -:1030C0007281711103C001968770E9CFF62E6623D5 -:1030D00009F418C18091AE0181608093AE01F12C9A -:1030E00011C1751308C0341306C0611104C080916A -:1030F000AE01D801C3C04D875E878D859E856A8BE2 -:103100000E94F8166A898823E1F16623D1F12091A3 -:10311000AE01822F82958F7090E0029774F08091BB -:10312000A9019091AA0198878F831986DB86CA86A8 -:103130002C87CE0107960E94B91686E0F801A9EA0D -:10314000B1E001900D928A95E1F70E9470170E94FC -:103150006217FF24F394D6C04D875E878D859E85C8 -:103160000E942C1C292F22952F7030E0223031052F -:103170000CF0BCC09F7009F0B6C0805E883008F4C7 -:10318000C1C0C8010E94B916E4CFC816D90608F418 -:1031900053C0F601E81BF90BCF01883C910508F4F8 -:1031A00050C0F12C7C2DD98AC88A89890E942217A7 -:1031B000E9EAF1E086E0DF011D928A95E9F70E94D5 -:1031C0006217A0C0751314C0341312C0611110C06F -:1031D0008091AE01F8018583C8010E94B91686E08E -:1031E000E9EAF1E0DF011D928A95E9F7FE2C8AC039 -:1031F0004D875E878D859E856A8B0E94F8166A8949 -:10320000882309F4BECF662309F4BBCF2091AE0119 -:10321000822F82958F7090E002970CF48ECF809170 -:10322000A9019091AA019A8389831B82DD82CC82B5 -:103230002E83CE0101967FCF809590958C0D9D1D9C -:10324000ACCFF62E662309F49CCF75132EC0341331 -:103250002CC02091AE0120FD1FC0822F82958F705F -:10326000D9F0D80115962C9315978F3049F08F5FC0 -:10327000982F9295907F822F8F70892B15968C9323 -:10328000C8010E94B91686E0F801A9EAB1E00190F0 -:103290000D928A95E1F793CF86E0F801A9EAB1E0B3 -:1032A00001900D928A95E1F72DC04D875E878D853F -:1032B0009E850E94F816811140CF8091AE018160F9 -:1032C0008093AE01C8010E94B9161CC0662309F4A0 -:1032D00058CF4D875E878D859E850E94F81688237E -:1032E00009F44FCF2ACF811148CF0CC024303105CB -:1032F0000CF047CF9F7009F440CFF8019581907F83 -:1033000009F03BCF8F2D62960FB6F894DEBF0FBE4B -:10331000CDBFDF91CF911F910F91FF90EF90DF9084 -:10332000CF9008951F93CF93DF93CDB7DEB72C973F -:103330000FB6F894DEBF0FBECDBF4F8358876987A5 -:103340007A878B879C87CE0107960E94CB178823AC -:1033500069F08F8198852A853B85232BF1F19F3F6A -:1033600009F063C08F3F09F060C037C086E0FE01FE -:103370003796DE01119601900D928A95E1F76F81E3 -:103380007885EA85FB85309741F17F3F11F46F3FE7 -:1033900021F12091780130E0C901019687709927C9 -:1033A0004091770150E08417950709F447C069837D -:1033B0007A83FD83EC8396E0929FD001939FB00DBA -:1033C0001124A758BE4FFE01319601900D929A9597 -:1033D000E1F7809378010E94411716E08091770110 -:1033E000909178018917C1F1189FC0011124875865 -:1033F0009E4F0E94CB17882379F1E09177011E9FA1 -:10340000F0011124E758FE4F4081518162817381A0 -:10341000848195810E9431178091770190E0019617 -:103420008770992780937701D9CF4F815885698517 -:103430007A858B859C850E943117CFCF0E94F41628 -:103440001092780110927701E9EAF1E086E0DF015D -:103450001D928A95E9F7C1CF2C960FB6F894DEBF7E -:103460000FBECDBFDF91CF911F910895EF92FF92D4 -:103470000F931F93CF93DF938C01009709F46CC0D7 -:10348000F12CEE24E394E8012196F801849184372D -:1034900040F4843008F051C0813081F0823019F15D -:1034A0005BC0853709F444C0A8F19CE7980F9037BA -:1034B00008F052C08F770E94111441C00E5F1F4F59 -:1034C000FE01C49180E28C0F883048F4C7708E2DC5 -:1034D00001C0880FCA95EAF70E94C81C14C08C2F3F -:1034E0000E9449132DC00E5F1F4FFE01C49180E260 -:1034F0008C0F883058F4C7708E2D01C0880FCA9584 -:10350000EAF70E94CE1C0E94EF1C1AC08C2F0E946A -:10351000111416C00E5F1F4FFE01C491CC2381F021 -:103520008FE99FE00197F1F700C00000C150F6CF8E -:103530000E5F1F4FFE01F49003C00E9449138E01DD -:103540008F2D882309F49FCFEFE9FFE03197F1F742 -:1035500000C000008150F5CFDF91CF911F910F91F6 -:10356000FF90EF90089508956093B3017093B401B4 -:103570008093B5019093B6010C94E0160F931F93BE -:103580000091B3011091B4012091B5013091B601C1 -:10359000DC01CB01802B912BA22BB32B8093B301A9 -:1035A0009093B401A093B501B093B6011F910F9110 -:1035B0000C94E0160F931F930091B3011091B40186 -:1035C0002091B5013091B601DC01CB01802391231C -:1035D000A223B3238093B3019093B401A093B501C8 -:1035E000B093B6011F910F910C94E0160F931F93A7 -:1035F0000091B3011091B4012091B5013091B60151 -:10360000DC01CB0180279127A227B3278093B30148 -:103610009093B401A093B501B093B6011F910F919F -:103620000C94E0161092AF011092B0011092B1010B -:103630001092B2010C94E01641E050E060E070E0BE -:1036400004C0440F551F661F771F8A95D2F7409319 -:10365000AF015093B0016093B1017093B2010C942B -:10366000E01641E050E060E070E004C0440F551FF8 -:10367000661F771F8A95D2F78091AF019091B001B4 -:10368000A091B101B091B201482B592B6A2B7B2B31 -:103690004093AF015093B0016093B1017093B201B8 -:1036A0000C94E01641E050E060E070E004C0440F8C -:1036B000551F661F771F8A95D2F7409550956095E4 -:1036C00070958091AF019091B001A091B101B0913E -:1036D000B201482359236A237B234093AF015093BF -:1036E000B0016093B1017093B2010C94E01641E017 -:1036F00050E060E070E004C0440F551F661F771F64 -:103700008A95D2F78091AF019091B001A091B1015B -:10371000B091B201482759276A277B274093AF0110 -:103720005093B0016093B1017093B2010C94E01614 -:103730000F931F930091AF011091B0012091B1013F -:103740003091B201DC01CB01802B912BA22BB32B4A -:103750008093AF019093B001A093B101B093B201F7 -:103760001F910F910C94E0160F931F930091AF01DE -:103770001091B0012091B1013091B201DC01CB0177 -:1037800080239123A223B3238093AF019093B001B0 -:10379000A093B101B093B2011F910F910C94E01668 -:1037A0000F931F930091AF011091B0012091B101CF -:1037B0003091B201DC01CB0180279127A227B327EA -:1037C0008093AF019093B001A093B101B093B20187 -:1037D0001F910F910C94E0160895CF92DF92EF9213 -:1037E000FF920F931F93CF93DF938C01C090B3018F -:1037F000D090B401E090B501F090B6018091AF0196 -:103800009091B001A091B101B091B201C82AD92A1A -:10381000EA2AFB2ACFE1D0E0D701C6010C2E04C072 -:10382000B695A795979587950A94D2F780FF06C01D -:10383000B8018C2F0E946E09019721F4219760F73F -:1038400080E001C08C2FDF91CF911F910F91FF90ED -:10385000EF90DF90CF900895CF93DF93EC010E941B -:10386000ED1BBE010E946E09DF91CF910895CB013F -:103870000E942C1C08958091B701859585958595AA -:1038800008958091B7018770089598E0899F90010D -:103890001124262B2093B7010C94311B2091B701E2 -:1038A000809582238093B701982F977069F430E058 -:1038B000482F552747FD50952417350729F0859542 -:1038C000859585950C94521B08959091B70197703A -:1038D00081E009F480E0089520910C0130910D0100 -:1038E000F90132969FEF40E05191581789F09F3FC0 -:1038F00019F4511101C0942F4F5F4630A9F79F3F33 -:1039000039F0F901E90FF11D97FDFA9582830895C9 -:10391000089520910C0130910D01F9013296285F34 -:103920003F4F9081981301C010823196E217F30740 -:10393000C1F7089581E090E0E0910C01F0910D0154 -:10394000E80FF91F1082019688309105A9F70895B4 -:103950009091C301892B8093C30108958095909124 -:10396000C30189238093C30108951092C301089570 -:103970009091C201892B8093C20108958095909106 -:10398000C20189238093C20108951092C201089553 -:103990009091C101892B8093C101089580959091E8 -:1039A000C10189238093C10108951092C101089536 -:1039B0008093B80108951092B801089580910C0188 -:1039C00090910D01FC0131969C01285F3F4F80E0F2 -:1039D000919191118F5FE217F307D1F70895E0916C -:1039E0000C01F0910D018091C3018083E0910C01E5 -:1039F000F0910D0190818091C201892B8083E0912B -:103A00000C01F0910D0190818091C101892B80837F -:103A10008091B801882361F0E0910C01F0910D01D3 -:103A20009081892B80830E94DE1C81111092B80145 -:103A300080910C0190910D010C941E1220E00097D2 -:103A400039F0AC0141505109842395232F5FF7CF02 -:103A5000822F08958091D901843039F11092C501E7 -:103A600020E488E190E00FB6F894A8958093600078 -:103A70000FBE2093600080E00E94ED0480E00E9471 -:103A8000480A83B7817F846083BF83B7816083BF27 -:103A90007894889583B78E7F83BF88E10FB6F894BA -:103AA00080936000109260000FBE089508950895FD -:103AB00080E00E94ED040E94561D0E94A30A0E940D -:103AC000571D0E94280B91E0811101C090E0892FC1 -:103AD00008950E94F41680E00E94ED040E94BB222B -:103AE0000E9412120C94480A1F920F920FB60F9266 -:103AF00011248F939F93AF93BF938091C501811140 -:103B000013C08091C6019091C701A091C801B091E6 -:103B1000C9014196A11DB11D8093C6019093C701B3 -:103B2000A093C801B093C901BF91AF919F918F91AC -:103B30000F900FBE0F901F90189582E084BD93E008 -:103B400095BD9AEF97BD80936E0008952FB7F894B6 -:103B50008091C6019091C701A091C801B091C9019F -:103B60002FBF0895CF92DF92EF92FF920F931F9392 -:103B70002FB7F8944091C6015091C7016091C801D8 -:103B80007091C9012FBF6A017B01EE24FF248C01D3 -:103B900020E030E0C016D106E206F30610F44150F2 -:103BA00051099A01281B390BC9011F910F91FF90F0 -:103BB000EF90DF90CF9008951F920F920FB60F9263 -:103BC00011248F939F93AF93BF938091C6019091DF -:103BD000C701A091C801B091C9010196A11DB11DF5 -:103BE0008093C6019093C701A093C801B093C90107 -:103BF000BF91AF919F918F910F900FBE0F901F902B -:103C000018950E940F0FF8942FEF87EA91E6215044 -:103C100080409040E1F700C0000087E090EBDC01BD -:103C20008093E4019093E501A093E601B093E7014E -:103C30009CE088E10FB6F894A895809360000FBED1 -:103C400090936000FFCF0E94581E811102C00E9415 -:103C5000391E0E94631E8093C4010E94701E8093CF -:103C6000E2010E94671E682F70E080E090E00C94F3 -:103C7000B41A6DEE7EEF80E090E00E94C62460E012 -:103C800082E090E00E94B42460E083E090E00E9433 -:103C9000B42460E084E090E00E94B42460E085E019 -:103CA00090E00E94B42460E086E090E00C94B4249C -:103CB00080E090E00E94AE2421E08D3E9E4F09F00E -:103CC00020E0822F089582E090E00C94A62483E007 -:103CD00090E00C94A624682F83E090E00C94B42428 -:103CE00084E090E00C94A624682F84E090E00C948B -:103CF000B42486E090E00C94A624682F86E090E03F -:103D00000C94B4248091CC0180FF0BC06091110110 -:103D100085E0689FB0011124759567957595679545 -:103D20002BC081FF09C06091110185E0689FB0013F -:103D300011247595679520C082FF07C0609111011D -:103D400085E0689FB001112417C09091CD0199239F -:103D5000D1F060911001961788F72091110185E04C -:103D6000289F90011124929FA001939F500D112430 -:103D700070E0CA010E9478246038710540F4611532 -:103D8000710539F002C065E070E0862F08958FE775 -:103D9000089581E008958091CC0180FF08C0609172 -:103DA0000F0170E0759567957595679521C081FF46 -:103DB00006C060910F0170E07595679519C082FF8C -:103DC00004C060910F0170E010C09091CD01992363 -:103DD000C1F060910E019617A0F780910F01899FA5 -:103DE000C001112470E00E9478246038710528F425 -:103DF0006115710521F0862F08958FE7089581E000 -:103E0000089561E070E0F4CF803F21F40E94821EAB -:103E1000819504C0813F29F40E94821E8093D001C5 -:103E20000895823F21F40E94821E819504C0833F41 -:103E300029F40E94821E8093CF010895893F19F4CE -:103E40000E94CB1E05C08A3F31F40E94CB1E819593 -:103E50008093D10108958B3F21F40E94CB1E819560 -:103E600004C08C3F29F40E94CB1E8093D201089598 -:103E7000843F21F48091CE01816017C0853F21F4F9 -:103E80008091CE01826011C0863F21F48091CE01E5 -:103E900084600BC0873F21F48091CE01886005C00B -:103EA000883F31F48091CE0180618093CE010895E6 -:103EB0008D3F21F48091CC0181600BC08E3F21F4B5 -:103EC0008091CC01826005C08F3F29F48091CC01A4 -:103ED00084608093CC010895803F39F48091D001B3 -:103EE00087FF6CC01092D00169C0813F29F4809196 -:103EF000D0011816BCF362C09091CF01823F29F423 -:103F000097FF5CC01092CF0159C0833F19F4191676 -:103F1000CCF354C0893F41F48091D10118160CF0C4 -:103F20004DC01092D1014AC08A3F29F48091D1013D -:103F300087FF44C0F6CF8B3F39F48091D20187FFD1 -:103F40003DC01092D2013AC08C3F29F48091D20139 -:103F50001816BCF333C0843F21F48091CE018E7FCC -:103F600017C0853F21F48091CE018D7F11C0863F1F -:103F700021F48091CE018B7F0BC0873F21F480918B -:103F8000CE01877F05C0883F31F48091CE018F7EBE -:103F90008093CE0113C08D3F21F48091CC018E7FA0 -:103FA0000BC08E3F21F48091CC018D7F05C08F3FE7 -:103FB00029F48091CC018B7F8093CC018091CF013B -:103FC00081110EC08091D00181110AC08091D10170 -:103FD000811106C08091D201811102C01092CD01E1 -:103FE00008958EEC91E00E9429120E94A61D9093E4 -:103FF000CB018093CA0108951F93CF93DF938091E3 -:10400000CA019091CB010E94B21DAC019091CD01EB -:10401000992321F02091120130E006C02091130174 -:104020008AE0289F900111244217530708F486C0A4 -:104030008091CF01C091D001D091D1011091D201D6 -:10404000811107C0C11176C0D11174C0111172C0A5 -:1040500075C09F3F19F09F5F9093CD01181624F40F -:104060000E94821E8093CF018091CF0187FF05C0FF -:104070000E94821E81958093CF011C1624F40E9419 -:10408000821E8093D0018091D00187FF05C00E94DD -:10409000821E81958093D0016091CF01662339F112 -:1040A000C091D001CC2319F1772767FD7095872F38 -:1040B000972F0E94892323E333E343E35FE30E94C6 -:1040C000ED230E9456236093CF016C2F772767FD65 -:1040D0007095872F972F0E94892323E333E343E3CF -:1040E0005FE30E94ED230E9456236093D0011D16CA -:1040F00024F40E94CB1E8093D1018091D10187FFCF -:1041000005C00E94CB1E81958093D101111624F425 -:104110000E94CB1E8093D2018091D20187FF05C0FF -:104120000E94CB1E81958093D201DF91CF911F9188 -:104130000C94F11F9F3F09F08ECF96CFDF91CF9166 -:104140001F910895EEECF1E085E0DF011D928A9564 -:10415000E9F71092CD011092CC010895833081F1DE -:1041600028F4813059F08230D1F00895853009F477 -:1041700049C0B8F1863009F456C008958091130102 -:10418000262F30E0280F311D2F3F310524F4680F12 -:104190006093130108958FEF809313010895809128 -:1041A0001201262F30E0280F311D2F3F310524F456 -:1041B000680F6093120108958FEF809312010895A4 -:1041C00080911101262F30E0280F311D2F3F31053E -:1041D00024F4680F6093110108958FEF809311010B -:1041E000089580911001262F30E0280F311D2F3FB8 -:1041F000310524F4680F6093100108958FEF8093C8 -:104200001001089580910F01262F30E0280F311DF5 -:104210002F3F310524F4680F60930F0108958FEF4D -:1042200080930F01089580910E01262F30E0280F12 -:10423000311D2F3F310524F4680F60930E0108955E -:104240008FEF80930E010895833011F128F48130AF -:1042500049F0823091F00895853081F120F1863067 -:10426000C1F1089580911301681720F4861B809393 -:104270001301089510921301089580911201681797 -:1042800020F4861B80931201089510921201089564 -:1042900080911101681720F4861B80931101089505 -:1042A00010921101089580911001681720F4861B67 -:1042B00080931001089510921001089580910F01CC -:1042C000681720F4861B80930F01089510920F0148 -:1042D000089580910E01681720F4861B80930E01CB -:1042E000089510920E0108950F931F938732D8F509 -:1042F0008E3108F085C08E3009F46FC098F4873095 -:1043000009F459C08B3009F48FC0863009F093C08E -:104310008091C401817F8E7F8093C40181E080936E -:10432000D4018AC0863109F47FC068F4803109F075 -:1043300082C08091C40183FB222720F991E092275B -:1043400090FB83F953C0893109F46EC08B3109F0B9 -:1043500072C08091C40181FB222720F991E092274D -:1043600090FB81F943C0883309F45EC050F4893270 -:1043700009F45CC0853309F459C0873209F456C08A -:104380005AC0833409F452C028F48A3308F453C065 -:10439000895337C0883409F04EC00E94F4160FEFDD -:1043A00013ED20E3015010402040E1F700C0000071 -:1043B0000E94011E39C09091C401892F809581709F -:1043C00080FB90F929F0966098609093C40134C006 -:1043D000997F977F9093C40127C08091C40182FB8D -:1043E000222720F991E0922790FB82F98093C40163 -:1043F0009923D1F08091C40181608093C40114C0DD -:104400008D5141E050E060E070E08A019B0104C002 -:10441000000F111F221F331F8A95D2F7C901B8015F -:104420000E94B41A0E94F41681E006C061E070E0B8 -:1044300080E090E0F5CF80E01F910F91089580E03B -:10444000089580E00895CF93C82F8091D4018130E2 -:1044500069F018F08230C9F184C0E0910C01F0914C -:104460000D018081823209F07EC007C0E0910C010D -:10447000F0910D018081823261F48C2F0E941F2205 -:10448000811104C08C2F0E9474211DC081E090E036 -:104490001AC08C2F0E942122811114C0C43179F0DE -:1044A00048F4CB3079F0C03109F061C082E08093EC -:1044B000D40108C0C93219F0C83321F058C0109295 -:1044C000D40155C081E0817054C0C93291F120F50A -:1044D000C43179F1B0F4C73009F047C08EE1809360 -:1044E000130182E3809312018AE08093110184E139 -:1044F0008093100188E080930F0188E280930E0181 -:1045000034C0CE51C63088F5EC2FF0E0ED5CFE4FA4 -:1045100080818093D30129C0CE34E9F020F4CB34DC -:1045200021F56AE013C0C13579F0C235F1F461E0DC -:104530000DC08091D301882319F01092D30115C0CA -:1045400081E08093D40115C061E006C08091D30161 -:104550000E94AE200AC06AE08091D3010E9424210B -:1045600004C01092D40180E004C081E002C080E069 -:10457000AACFCF9108950E94581E811102C00E94B7 -:10458000391E0E94791E8093E30180FF02C0869548 -:1045900001C080E00C94ED048091E301982F969582 -:1045A000292F30E0233031054CF49F5F990F817043 -:1045B000892B81608093E3010E947D1E8091E3013D -:1045C00086950C94ED048091E301982F969591F0D7 -:1045D0009158990F8170892B8093E3018E7F91E030 -:1045E00009F490E08091E30190FB80F98093E3016E -:1045F0000E947D1E8091E30186950C94ED048091CC -:10460000E301982F909590FB80F98093E3010E943D -:104610007D1E8091E30180FF02C0869501C080E08D -:104620000C94ED049091E301892F86958F5F8F772D -:104630009170843028F4880F892B8093E30102C0A5 -:104640009093E3018091E3018E7F91E009F490E083 -:104650008091E30190FB80F98093E3010E947D1E2D -:104660008091E30186950C94ED042091E301922F53 -:1046700096958927982F990F822F8170892B809387 -:10468000E3018E7F91E009F490E08091E30190FBDB -:1046900080F98093E3010E947D1E8091E30186955D -:1046A0000C94ED048091E3018695089504D06894FC -:1046B000B1118DC0089570D088F09F5790F0B92F38 -:1046C0009927B751A0F0D1F0660F771F881F991F67 -:1046D0001AF0BA95C9F712C0B13081F077D0B1E0C5 -:1046E000089574C0672F782F8827B85F39F0B93FD5 -:1046F000CCF3869577956795B395D9F73EF4909569 -:104700008095709561957F4F8F4F9F4F0895E894E6 -:1047100009C097FB3EF490958095709561957F4F09 -:104720008F4F9F4F9923A9F0F92F96E9BB279395B7 -:10473000F695879577956795B795F111F8CFFAF4C7 -:10474000BB0F11F460FF1BC06F5F7F4F8F4F9F4FF8 -:1047500016C0882311F096E911C0772321F09EE856 -:10476000872F762F05C0662371F096E8862F70E0BC -:1047700060E02AF09A95660F771F881FDAF7880F96 -:104780009695879597F9089557FD9058440F551FB2 -:1047900059F05F3F71F04795880F97FB991F61F0C3 -:1047A0009F3F79F087950895121613061406551F3A -:1047B000F2CF4695F1DF08C0161617061806991FA6 -:1047C000F1CF86957105610508940895E894BB279B -:1047D00066277727CB0197F908950BD078C069D069 -:1047E00028F06ED018F0952309F05AC05FC011244C -:1047F000EECFCADFA0F3959FD1F3950F50E0551F80 -:10480000629FF001729FBB27F00DB11D639FAA2725 -:10481000F00DB11DAA1F649F6627B00DA11D661F74 -:10482000829F2227B00DA11D621F739FB00DA11D95 -:10483000621F839FA00D611D221F749F3327A00D4F -:10484000611D231F849F600D211D822F762F6A2FEB -:1048500011249F5750408AF0E1F088234AF0EE0F70 -:10486000FF1FBB1F661F771F881F91505040A9F77D -:104870009E3F510570F014C0AACF5F3FECF3983E05 -:10488000DCF3869577956795B795F795E7959F5FE4 -:10489000C1F7FE2B880F911D9695879597F908957E -:1048A00097F99F6780E870E060E008959FEF80ECE3 -:1048B000089500240A941616170618060906089586 -:1048C00000240A9412161306140605060895092EEC -:1048D0000394000C11F4882352F0BB0F40F4BF2B5B -:1048E00011F460FF04C06F5F7F4F8F4F9F4F08959B -:1048F00097FB072E16F4009407D077FD09D00E948D -:10490000922407FC05D03EF4909581959F4F089521 -:10491000709561957F4F0895EE0FFF1F0590F491FC -:10492000E02D0994AA1BBB1B51E107C0AA1FBB1FA6 -:10493000A617B70710F0A61BB70B881F991F5A952B -:10494000A9F780959095BC01CD010895F999FECF06 -:1049500092BD81BDF89A992780B50895A8E1B0E08D -:1049600042E050E00C94CE24262FF999FECF92BD60 -:1049700081BDF89A019700B4021639F01FBA20BD24 -:104980000FB6F894FA9AF99A0FBE08950196272F58 -:104990000E94B5240C94B424DC01CB01FC01F999EC -:1049A000FECF06C0F2BDE1BDF89A319600B40D927B -:0C49B00041505040B8F70895F894FFCF34 -:1049BC00FF3E0BCC0BA90B750B410B01B901280861 -:1049CC00140A321E1F0F03764F5F6F7F49694379BC -:1049DC00095953633F4D36E608990863080F0828B8 -:0E49EC0008410801020304050607080900003F -:00000001FF diff --git a/keyboard/planck/keymaps/yang/compiled.hex b/keyboard/planck/keymaps/yang/compiled.hex deleted file mode 100644 index da6b0017a1..0000000000 --- a/keyboard/planck/keymaps/yang/compiled.hex +++ /dev/null @@ -1,1318 +0,0 @@ -:100000000C949F030C94E3030C94E3030C94E3031C -:100010000C94E3030C94E3030C94E3030C94E303C8 -:100020000C94E3030C94E3030C94A4130C94761443 -:100030000C948E210C94E3030C94E3030C94E303DF -:100040000C94E3030C9447040C94E3030C94E30333 -:100050000C94E3030C94F6210C94E3030C94E30357 -:100060000C94E3030C94E3030C94E3030C94E30378 -:100070000C94E3030C94E3030C94E3030C94E30368 -:100080000C94060F0C94E3030C94E3030C94E30329 -:100090000C94E3030C94E3030C94E3030C94E30348 -:1000A0000C94E3030C94E3030C94E303B404D00432 -:1000B000B804BC04C004C404C804CC04E31405158B -:1000C000F3150515F3154A156D15F315C215D5155C -:1000D000BF18BF18EE18EE182D194D19A31AA31A40 -:1000E0005819A31A081A081A6F1A781AA31A9D1A0F -:1000F000151A151A151A151A151A151A151A151A88 -:10010000151A151A151A151A151A151A151A151A77 -:10011000251A331A3A1A411A4B1A0000000000003F -:100120000000000000010204060A0F17202C3A4AC2 -:100130005D71879DB3C7DAE9F5FCFFFCF5E9DAC725 -:10014000B39D87715D4A3A2C20170F0A06040201FD -:10015000000000000000000000002CA500F001F0ED -:1001600002F003F004F005F006F007F02B00140095 -:100170001A000800150017001C0018000C001200DF -:1001800013002A00290004001600070009000A00D5 -:100190000B000D000E000F0033003400E1001D00C5 -:1001A0001B00060019000500110010003600370082 -:1001B000380028000030E000E200E3000352002095 -:1001C000002004525000510052004F002B00140038 -:1001D0001A00090013000A000D000F0018001C008F -:1001E00033002A002900040015001600170007003C -:1001F0000B00110008000C0012003400E1001D008B -:100200001B000600190005000E0010003600370024 -:10021000380028000030E000E200E3000352002034 -:10022000002004525000510052004F002B003400B7 -:100230003600370013001C0009000A0006001500F4 -:100240000F002A00290004001200080018000C000A -:1002500007000B001700110016003800E100330002 -:1002600014000D000E001B00050010001A001900FC -:100270001D0028000030E000E200E30003520020EF -:10028000002004525000510052004F0035021E025F -:100290001F0220022102220223022402250226023A -:1002A00027022A0001003A003B003C003D003E00CE -:1002B0003F002D022E022F023002310201004000C9 -:1002C00041004200430044004500005301530253E3 -:1002D00000500100010001000100010001000100C7 -:1002E00001000100AB00AA00A900AE0035001E000D -:1002F0001F002000210022002300240025002600EA -:1003000027002A0001003A003B003C003D003E006F -:100310003F002D002E002F00300031000100400072 -:100320004100420043004400450000530153025382 -:100330000050010001000100010001000100010066 -:1003400001000100AB00AA00A900AE0001004B00B3 -:1003500052004E00010001000100010001000100F7 -:1003600001004C000100500051004F0001004A0004 -:100370005000510052004F004D00010001000120CB -:100380000220032004200520062007200820010069 -:100390000100010001000100010001000100010055 -:1003A0000100010001000100010001006432146439 -:1003B0003214783C1E1E140A0500000000010101E1 -:1003C0000202030405050607090A0B0C0E0F1112A1 -:1003D000141517191B1D1F212325282A2C2F3134F2 -:1003E00036393B3E414346494C4F5255585A5D6160 -:1003F00064676A6D707376797C7F8386898C8F924F -:1004000095989B9EA2A5A7AAADB0B3B6B9BCBEC134 -:10041000C4C6C9CBCED0D3D5D7DADCDEE0E2E4E681 -:10042000E8EAEBEDEEF0F1F3F4F5F6F8F9FAFAFBA1 -:10043000FCFDFDFEFEFEFFFFFFFFFFFFFFFEFEFED9 -:10044000FDFDFCFBFAFAF9F8F6F5F4F3F1F0EEED48 -:10045000EBEAE8E6E4E2E0DEDCDAD7D5D3D0CECBD7 -:10046000C9C6C4C1BEBCB9B6B3B0ADAAA7A5A29E49 -:100470009B9895928F8C898683807C797673706D3A -:100480006A6764615D5A5855524F4C494643413E34 -:100490003B393634312F2C2A282523211F1D1B19C7 -:1004A00017151412110F0E0C0B0A09070605050487 -:1004B0000302020101010000000001010202020228 -:1004C00002020303030303030303030303030303FE -:1004D00004040404040404040404040405050505D8 -:1004E00005050505050506060606060606060707B0 -:1004F000070707070708080808080809090909097C -:10050000090A0A0A0A0A0B0B0B0B0B0C0C0C0C0C3D -:100510000D0D0D0D0E0E0E0E0F0F0F1010101011F1 -:100520001111121212131313141414151516161692 -:10053000171718181919191A1A1B1B1C1C1D1D1E18 -:100540001E1F20202121222323242425262627287C -:1005500028292A2B2B2C2D2E2F30303132333435B5 -:10056000363738393A3B3C3D3E3F404142444546B0 -:1005700047494A4B4C4E4F5152535556585A5B5D62 -:100580005E6062636567696B6D6E70727476797BAD -:100590007D7F818486888B8D909295979A9D9FA26E -:1005A000A5A8ABAEB1B4B7BABEC1C4C8CBCFD3D681 -:1005B000DADEE2E6EAEEF2F8FF28035400680065AE -:1005C00000200050006C0061006E0063006B002092 -:1005D000004B006500790062006F006100720064EA -:1005E0000000002C034F007200740068006F006C64 -:1005F0000069006E0065006100720020004B00651C -:1006000000790062006F00610072006400730000F6 -:10061000000403090409025400030100A0FA0904BC -:1006200000000103010100092111010001223F0026 -:100630000705810308000A09040100010301020003 -:10064000092111010001224D000705820308000A5B -:100650000904020001030000000921110100012228 -:1006600036000705830308000A120110010000008C -:1006700008EDFE606001000102000105010980A192 -:1006800001850216010026B7001A01002AB700757D -:100690001095018100C0050C0901A1018503160117 -:1006A00000269C021A01002A9C0275109501810007 -:1006B000C005010902A1010901A1000509190129CB -:1006C00005150025019505750181029501750381C8 -:1006D000010501093009311581257F9502750881D1 -:1006E0000609381581257F950175088106050C0AD4 -:1006F00038021581257F950175088106C0C0050166 -:100700000906A101050719E029E71500250195084B -:1007100075018102950175088101050819012905F6 -:100720009505750191029501750391010507190061 -:1007300029FF150025FF950675088100C0001124CA -:100740001FBECFEFDAE0DEBFCDBF04B603FE24C08C -:100750008091540290915502A0915602B091570297 -:100760008730904BA740B04BB9F4109254021092CE -:100770005502109256021092570214BE84B7877F1A -:1007800084BF88E10FB6F8948093600010926000F7 -:100790000FBEE0E0F8E3099511E0A0E0B1E0EAE087 -:1007A000F2E502C005900D92AE33B107D9F712E021 -:1007B000AEE3B1E001C01D92A435B107E1F70E949C -:1007C000EA100C9403290C9400000895089581E028 -:1007D000089508950C94E6030C94E7030C94E90340 -:1007E0000E94672723E030E0281B3109220F209365 -:1007F00042010895282F2F9880918000211108C070 -:10080000877F8093800010928D0010928C001BC017 -:10081000886080938000233019F48FEF9FEF0FC022 -:1008200083E090E0821B9109880F991F2FEF3FEF23 -:10083000A90102C0569547958A95E2F7CA0190939F -:100840008D0080938C000C94F0030E94F00384E0F0 -:100850008093410110923E010895279A2F988FEFBF -:100860009FEF90938700809386008AE080938000BA -:1008700089E1809381000E94D0260C9425040E9477 -:100880002D040E94780C6E9A769A0C94E5031F92C0 -:100890000F920FB60F9211242F933F938F939F9334 -:1008A000EF93FF93E0913F01F0914001CF0101965A -:1008B0009093400180933F010090410102C0F69562 -:1008C000E7950A94E2F7EF7380913E01823019F4C4 -:1008D000E03251F404C0813039F4EF3329F48091CF -:1008E0006F008D7F80936F00F0E0E65EFE4FE49135 -:1008F00021E031E0E29FC001E39F900D11240090C0 -:10090000420102C0969587950A94E2F790938D0074 -:1009100080938C00FF91EF919F918F913F912F9148 -:100920000F900FBE0F901F90189561110DC0FC0124 -:100930008281882331F085EE0E9463170E94272769 -:1009400003C085EE0E942B1880E090E00895462FAA -:1009500050E04830510538F5FA01EA5AFF4FDC0102 -:1009600012968C910C94B5288823E9F00C94B50C60 -:100970008823C9F00C94770B8823A9F00C948F0B73 -:10098000882389F00C94AE0B882369F00C94C90B72 -:10099000882349F00C94E30B882329F00C94FE0B78 -:1009A00081110C94AB0C089581E008950C94D4044B -:1009B00008950F931F93CF93DF938C01FC01C081A7 -:1009C000D181CE010E940720BE010E948505EC0165 -:1009D000B8010E94D604882309F48DC0F8018281F1 -:1009E000882309F44AC080914E0181111FC0C4318F -:1009F000F0E5DF0709F051C00E94D80481E0809340 -:100A00004E010E94C02190934D0180934C011092A1 -:100A1000450110924701109246011092490110922F -:100A2000480110924B0110924A0165C080914C011F -:100A300090914D010E94CC21883C910570F48091E9 -:100A40004501E82FF0E0EE0FFF1FEA5BFE4FD18378 -:100A5000C0838F5F809345014EC0C43880E5D807BE -:100A600021F0C538D04501F13AC0F80182818823D0 -:100A700041F01092430182E01EC0C438E0E5DE0779 -:100A800059F580914301811106C086E20E946317E7 -:100A900086E20E942B1882E01CC0C438F0E5DF0714 -:100AA00041F3C538D045D9F4F8018281882331F06B -:100AB0001092440180E20E947A181DC08091440186 -:100AC000811106C087E20E94631787E20E942B18FB -:100AD00080E20E9481180FC0C538D04529F381E01B -:100AE0008093430180934401C801DF91CF911F910E -:100AF0000F910C94EC0380E0DF91CF911F910F9147 -:100B000008950C943F040C94EA039CE0799FF00153 -:100B1000112490E3899FE00DF11D1124E60FF11DD2 -:100B2000EE0FFF1FE459FE4F859194910895880FB1 -:100B3000991FFC01E652F040859194910895880F29 -:100B4000991FFC01E65AFE4F8591949108950F93E9 -:100B50001F93CF93DF93EC01811521E39207A0F55A -:100B6000C11580E3D80708F0D7C0C83ED105D8F436 -:100B7000C03ED10508F003C2C83AD10578F4C53AA1 -:100B8000D10508F06AC0C130D10509F463C008F48A -:100B9000F3C1C430D10508F0F2C1EEC1CB3BD105A1 -:100BA00008F466C0E9C1C11590E2D90708F0AFC0EA -:100BB000C11521E0D20708F0E2C1C03FD10508F419 -:100BC000DBC18E0110651BC2C03880E5D80700F577 -:100BD000C03790E5D90708F0A3C0C11520E5D207BA -:100BE00009F4ACC050F4CE01905480319F4008F01D -:100BF000C3C1DF708E01106A02C2C13080E5D80720 -:100C000009F4AAC0C43190E5D90708F4ABC0B4C157 -:100C1000C33820E5D20709F48EC050F4C13890E5FE -:100C2000D90709F482C008F083C000E011EDE7C1E4 -:100C3000C03181E5D80708F49FC1C11597E5D907F0 -:100C400008F432C1CE0190578115904108F094C14B -:100C5000DF708FC101E010E0D2C1C53AD10509F4BF -:100C600090C1C63AD10509F08FC102E810E4C7C1AE -:100C7000C83AD10509F48BC1C93AD10509F48AC132 -:100C8000CA3AD10509F489C1CB3AD10509F488C122 -:100C9000CC3AD10509F487C1CD3AD10509F486C112 -:100CA000C03BD10509F485C1CE3AD10509F484C110 -:100CB000CF3AD10509F483C1C13BD10509F482C102 -:100CC000C23BD10509F481C1C33BD10509F480C100 -:100CD000C43BD10509F47FC1C53BD10509F47EC1F0 -:100CE000C63BD10509F47DC1C73BD10509F47CC1E0 -:100CF000C83BD10509F47BC1C93BD10509F47AC1D0 -:100D0000CA3BD10509F479C100E014E478C1CE01F1 -:100D10009F700E949F0574C1DD278E01106C6FC10A -:100D2000CF70DD278E01146D6AC100E010ED67C140 -:100D300000E012ED64C100E013ED61C10E940E1BE2 -:100D40008FEF94E32CE0815090402040E1F700C009 -:100D500000000E941B2253C18091D80181608093C2 -:100D6000D8014DC10E947222811102C00E945322FB -:100D70000E94852290E09093530280935202C230E9 -:100D800080E5D80721F480915202816086C0C4308A -:100D900090E5D90721F48091520282607EC0C6306E -:100DA00020E5D20721F480915202846076C0C830D9 -:100DB00080E5D80719F48091520227C0CA3090E527 -:100DC000D90721F480915202806167C0CC3020E5C0 -:100DD000D20721F48091520280625FC0CE3080E55C -:100DE000D80721F480915202806457C0C03190E549 -:100DF000D90721F48091520280684FC0C23120E5AA -:100E0000D20729F4809152028460886046C0C330C2 -:100E100080E5D80721F4809152028E7F3EC0C53014 -:100E200090E5D90721F4809152028D7F36C0C730FA -:100E300020E5D20721F4809152028B7F2EC0C93069 -:100E400080E5D80719F48091520226C0CB3090E596 -:100E5000D90721F4809152028F7E1FC0CD3020E54A -:100E6000D20721F4809152028F7D17C0CF3080E5E8 -:100E7000D80721F4809152028F7B0FC0C13190E5D9 -:100E8000D90721F4809152028F7707C0C331D04532 -:100E900031F4809152028B7F877F80935202809140 -:100EA00052020E948922ABC08D2F99278F709927FB -:100EB00081309105D9F49E012370332702C0880F39 -:100EC000991F2A95E2F79C688E0144E0000F111FDC -:100ED0004A95E1F700271370802B912B53E0CC0F3C -:100EE000DD1F5A95E1F7C076DD272FC082309105CE -:100EF00031F4DC2FCC278E01016F106A80C0833063 -:100F0000910569F4CE018370992701E010E002C0D9 -:100F1000000F111F8A95E2F7C8019C680FC084304A -:100F20009105B9F4CE018370992701E010E002C069 -:100F3000000F111F8A95E2F7C8019A6823E0CC0FD1 -:100F4000DD1F2A95E1F7C07ED7708C010C2B1D2B7D -:100F500056C08530910531F4DC2FCC278E01046F0B -:100F6000106A4DC0069709F04AC0CF71DD27DC2F0B -:100F7000CC278E01106243C000E010E040C08E011B -:100F80003EC001E810E43BC003E810E438C002EEC4 -:100F900014E435C009EE14E432C00AEE14E42FC0A4 -:100FA00005EB14E42CC006EB14E429C007EB14E4B1 -:100FB00026C00CEC14E423C00DEC14E420C003E8BC -:100FC00015E41DC00AE815E41AC002E915E417C0CB -:100FD00004E915E414C001E216E411C003E216E4CA -:100FE0000EC004E216E40BC005E216E408C006E2F7 -:100FF00016E405C007E216E402C00AE216E4C801DE -:10100000DF91CF911F910F9108959CE0799FF0019E -:10101000112490E3899FE00DF11D1124E60FF11DCD -:10102000EE0FFF1FE459FE4F85919491803E91058C -:10103000E0F4803C910558F58133910509F46FC0C7 -:1010400048F48932910509F463C08A32910509F4A4 -:101050006DC072C089339105E9F082389105D1F0F5 -:101060008533910509F44DC067C0833E910581F138 -:1010700038F4803E9105B9F0823E9105D9F05CC00C -:10108000863E910561F1873E9105A1F155C00E9410 -:10109000970508952091520220FD02C021FF4CC007 -:1010A00080EE90E049C08091520280FFF9CF89E341 -:1010B00090E042C08091520282FF0EC080915202A5 -:1010C00084FF03C080E090E037C083EE90E034C03E -:1010D0008091520282FFF2CF82EE90E02DC080918B -:1010E000520283FF0BC08091520284FDEBCF87EE4A -:1010F00090E022C08091520283FFF5CF86EE90E00F -:101100001BC08091520285FF07C089E290E014C0A5 -:101110008091520285FFF9CF85E390E00DC0809168 -:10112000520286FF07C08AE290E006C08091520218 -:1011300086FFF9CF81E390E00E94A70508950C9403 -:10114000EE03E82FF0E0EF5DFE4F8081E82FEF70B7 -:10115000F0E082958F7021E030E0A90102C0440FD9 -:10116000551F8A95E2F740A308950F931F93CF93DD -:10117000DF9385B7806885BF85B7806885BFC3E08A -:10118000D0E001E010E0FE01EF5DFE4F8081E82F2E -:10119000EF70F0E021A182958F70A80102C0440F8A -:1011A000551F8A95E2F7CA01822B81A38C2F0E94DA -:1011B000A108219740F78BE090E061E070E0FC012E -:1011C000EB5EFE4F2081E22FEF70F0E042A122950E -:1011D0002F70DB0102C0AA0FBB1F2A95E2F79D0109 -:1011E000242B22A3019758F7DF91CF911F910F91E4 -:1011F0000C948105EF92FF920F931F93CF93DF938F -:1012000007E511E0C3E0EE24E394F12CD5E08C2F48 -:101210000E94A1088BE090E040E050E0FC01EB5E12 -:10122000FE4F6081E62FEF70F0E020A130E0629584 -:101230006F7002C0359527956A95E2F720FD09C0C9 -:101240009701082E02C0220F331F0A94E2F7422BA7 -:10125000532B019718F7F801929182918F0184170F -:10126000950721F051834083D09300018C2F0E9479 -:10127000A108C15060F68091000187FD2CC081500B -:10128000809300018F3F39F08FE99FE00197F1F7DC -:1012900000C0000020C080915501909156019093AC -:1012A0005E0180935D018091530190915401909370 -:1012B0005C0180935B018091510190915201909368 -:1012C0005A018093590180914F0190915001909360 -:1012D0005801809357010E94830581E0DF91CF91EF -:1012E0001F910F91FF90EF900895E82FF0E0EE0F1F -:1012F000FF1FE95AFE4F80819181089508950F9351 -:101300001F93CF930FE511E0C0E0F8019291829115 -:101310008F010E943821C80FF1E007351F07A9F798 -:101320008C2FCF911F910F9108952BB1342F3095B1 -:1013300023233BB1432B3FB7F894FC01680F791F7F -:10134000E617F70789F0819198E04BB9000000C0DB -:1013500087FF2BB9880F000000C000C000C02BB968 -:1013600000C09A9591F7ECCF3FBF08952AB1242B86 -:101370002AB99B01220F331F620F731F0E94950928 -:1013800087EC90E00197F1F700C00000089542E07B -:101390000C94B609AF92BF92CF92DF92EF92FF9278 -:1013A0000F931F93CF93DF936C01790150E0FA0103 -:1013B000E754FB4F44918FEF90E0FC01E61BF109ED -:1013C000E754FB4FE491E09509F495C0C42FD0E0B9 -:1013D0008E1B91098C9F90018D9F300D9C9F300D2D -:1013E0001124E32F8CE3A82EB12CC601B5010E9475 -:1013F0008D28DC016230710509F446C0D0F4611516 -:10140000710599F16130710509F079C0C31BD109EB -:10141000B501681B790BC69FC001C79F900DD69F71 -:10142000900D1124B5010E948D28032F060F142F53 -:1014300067C06430710509F44BC0B8F165307105BF -:1014400009F05DC0C31BD109B501681B790BC69FAC -:10145000C001C79F900DD69F900D1124B5010E9429 -:101460008D28132FE32FE60F44C0C31BD109CC9D59 -:10147000C001CD9D900DDC9D900D1124B5010E9401 -:101480008D28132F160F35C0C31BD109CA9FC00169 -:10149000CB9F900DDA9F900D1124B5010E948D28ED -:1014A000142F032FE32FE60F2BC0C31BD109B50167 -:1014B000681B790BC69FC001C79F900DD69F900DEA -:1014C0001124B5010E948D28132F160F032F0FC072 -:1014D000C31BD109CA9FC001CB9F900DDA9F900D0D -:1014E0001124B5010E948D28032F060F132FE42F1E -:1014F00007C0042F05C0E42F142F042F01C0E0E023 -:10150000D70111960C9311971C931296EC93DF91CF -:10151000CF911F910F91FF90EF90DF90CF90BF90F0 -:10152000AF90089587E090E00C94C328AB01BC0114 -:1015300087E090E00C94E128E9EEF1E083E080831D -:10154000AAEEB1E08C91807884668F778C938CECD6 -:10155000828383836091E9017091EA018091EB01BC -:101560009091EC010C94960A8091E90180FF06C0ED -:101570006CE170E081EF91E00C94C70980E090E0AD -:10158000FC01EF50FE4F11821082128203968435C7 -:101590009105B1F7EDCF20E030E0F901EF50FE4FBB -:1015A0008183608342832D5F3F4F24353105A9F746 -:1015B0000C94B40AEF92FF920F931F93CF93DF9393 -:1015C00000D01F92CDB7DEB70091E9011091EA017A -:1015D0002091EB013091EC010093ED011093EE01AD -:1015E0002093EF013093F0012091E90120FF21C009 -:1015F000042FF62EE92E182F9E012F5F3F4F0E94D9 -:10160000CA098091ED0110FB87F98093ED011695D1 -:101610008091EE018078182BE0FA17F91093EE0113 -:10162000F092EF010093F0014B8169818A810E9461 -:10163000CB0A0F900F900F90DF91CF911F910F91D8 -:10164000FF90EF9008950F931F93CF93DF93EC01DA -:10165000062F142F9091E90190FF44C0892F8E77B7 -:10166000823021F4CE010E94DA0A1BC0892F8695B0 -:101670008F732EE3280F2F73243018F41091EC0190 -:1016800010C0865C8F73893060F4C92FCC1FCC27C3 -:10169000CC1FD091EA018D2F880FC82BD7FBDD27F7 -:1016A000D0F98091E901C0FB87F98093E901C695E3 -:1016B0008091EA018078C82BD0FBC7F9C093EA017A -:1016C0000093EB011093EC016091E9017091EA0144 -:1016D0008091EB019091EC01DF91CF911F910F91DF -:1016E0000C94960ADF91CF911F910F910895E9EE26 -:1016F000F1E02081221F2227221F3091EA01432F8F -:10170000440F842F822B37FB992790F90A9668E6BD -:1017100071E00E94A128438162810C94230B2091E7 -:10172000E901221F2227221F3091EA01432F440F93 -:10173000842F822B37FB992790F98A3091051CF46E -:10174000825A9E4F01C00A9768E671E00E94A12864 -:101750004091EC016091EB010C94230B6091EB0143 -:10176000862F90E08F3E910514F46F5E01C06FEFFD -:101770008091E901881F8827881F9091EA01292F0D -:10178000220F97FB992790F94091EC01822B0C9442 -:10179000230B6091EB01862F90E0419714F061518B -:1017A00001C060E08091E901881F8827881F90911F -:1017B000EA01292F220F97FB992790F94091EC011C -:1017C000822B0C94230B4091EC01842F90E08F3EF0 -:1017D000910514F44F5E01C04FEF8091E901881F1D -:1017E0008827881F9091EA01292F220F97FB9927BC -:1017F00090F96091EB01822B0C94230B4091EC014A -:10180000842F90E0419714F0415101C040E0809155 -:10181000E901881F8827881F9091EA01292F220F4C -:1018200097FB992790F96091EB01822B0C94230B85 -:101830008091700181110FC081E08093700189E077 -:10184000809391008FB7F89493E09093990090ED76 -:10185000909398008FBF0895E1E7F0E08081826067 -:1018600080830895E1E7F0E080818D7F8083089593 -:101870009091E90190FF3BC09178811102C0926084 -:1018800007C0883110F09E6203C08F73880F982BB9 -:101890009093E9016091E9017091EA018091EB0177 -:1018A0009091EC010E94960A8091E901982F9E7711 -:1018B000923019F40E94320C07C08695825C8F73B7 -:1018C000863110F40E942C0C8091E901881F882732 -:1018D000881F9091EA01292F220F97FB992790F9F1 -:1018E0004091EC016091EB01822B0C94230B089545 -:1018F0008091D80181608093D80181E0809371014B -:101900000E947222811104C00E9453220E949C0AEC -:101910000E94920A6093E9017093EA018093EB01BF -:101920009093EC016E7761F40E949C0A0E94920AE7 -:101930006093E9017093EA018093EB019093EC01CD -:101940000E94180C8091E90180FF04C086958F7376 -:101950000C94380C08958091E90186958F738F5F00 -:10196000883108F081E00C94380C8091E901982FBF -:10197000909590FB80F98093E9016091E901709165 -:10198000EA018091EB019091EC010E94960A80910E -:10199000E90180FF04C086958F730C94380C0E9477 -:1019A000320C2FEF80E792E0215080409040E1F729 -:1019B00000C000000C94B40ACF93C82F80916E0130 -:1019C00090916F010E94CC21EC2FF0E0EB54FC4F82 -:1019D000E491F0E08E179F0718F10E94C0219093C8 -:1019E0006F0180936E01E0916D01F0E0E754FC4FD0 -:1019F00044918091E901881F8827881F9091EA010E -:101A0000292F220F97FB992790F96091EB01822BE8 -:101A10000E94DA0A80916D0190E0019680936D0139 -:101A2000CF910895CF93C82F80916B0190916C0155 -:101A30000E94CC21EC2FF0E0EE54FC4FE491F0E05A -:101A40008E179F07E8F00E94C02190936C0180934D -:101A50006B014091EC016091EB01809169019091E3 -:101A60006A010E94DA0A8091690190916A010196E7 -:101A700068E671E00E948D2890936A018093690165 -:101A8000CF910895CF92DF92FF920F931F93CF9340 -:101A9000DF93F82E80916701909168010E94CC211C -:101AA000EF2DE695F0E0EE54FC4FE491F0E08E1758 -:101AB0009F07F0F10E94C021909368018093670115 -:101AC00001EF11E0C0E0D0E088E6C82EDD24D39419 -:101AD00080916501909166018C0F9D1FB6010E9457 -:101AE0008D2898014091EC016091EB010E94CA0998 -:101AF0002C960D5F1F4FC03581E0D80749F70E9433 -:101B0000B40A2091650130916601F0FE0BC0C90155 -:101B1000019668E671E00E948D289093660180939B -:101B2000650106C02150310930936601209365019B -:101B3000DF91CF911F910F91FF90DF90CF9008958B -:101B40008F929F92AF92BF92CF92DF92EF92FF92CD -:101B50000F931F93CF93DF93C82F80FF03C0DD2423 -:101B6000DA9402C0DD24D3948091630190916401E2 -:101B70000E94CC21C695EC2FF0E0E155FC4FE4919A -:101B8000F0E08E179F0708F467C00E94C021909371 -:101B900064018093630191EFE92E91E0F92E03EF48 -:101BA00011E0C0E0D0E027E0822E912CF8013197BF -:101BB0001082F7011082F801108287E0A82EB12C64 -:101BC000C12C809162018C0D87FD845E992787FD71 -:101BD0009095C817D907E9F42091EC012A9DC0011E -:101BE0002B9D900D1124B4010E94A128462F8091B5 -:101BF000E901881F8827881F9091EA01592F550F06 -:101C000097FB992790F997016091EB01852B0E9432 -:101C1000CA09CD0CF1E0AF1AB10899F6219683E01C -:101C2000E80EF11C0D5F1F4FCC31D10509F0BECF7E -:101C30000E94B40A8091620191E0D91206C081111C -:101C400002C08BE107C0815005C090E00196BE0143 -:101C50000E94A12880936201DF91CF911F910F9183 -:101C6000FF90EF90DF90CF90BF90AF909F908F90BC -:101C700008959F92AF92BF92CF92DF92EF92FF9220 -:101C80000F931F93CF93DF93CDB7DEB7C455D10920 -:101C90000FB6F894DEBF0FBECDBF182F8091600144 -:101CA000909161010E94CC21E12FF0E0E455FC4FBE -:101CB000E491F0E08E179F0708F495C00E94C021C0 -:101CC0009093610180936001CE0101967C015E01D9 -:101CD00093E0A90EB11CC12CD12C8701F5013197DD -:101CE0001082F7011082F5011082912C9091010170 -:101CF00080915F01999E800D112487FD04C08C3175 -:101D00001CF08BE101C080E0992787FD9095C816F3 -:101D1000D906A1F48091E901881F8827881F909136 -:101D2000EA01592F550F97FB992790F99701409198 -:101D3000EC016091EB01852B0E94CA099394F7E0B6 -:101D40009F12D4CF8FEFC81AD80A93E0E90EF11C86 -:101D5000E3E0AE0EB11CFCE1CF16D10409F0BECF1A -:101D600023EF31E059E0E52EF12C6CE1C62ED12CA9 -:101D7000C701B6010E94A128D9011197FC01EE0FFD -:101D8000FF1FE80FF91FE00FF11F81818C9311975E -:101D900080818C938281F9018083FFEFEF1AFF0A23 -:101DA0002D5F3F4F85E2E816F10411F70E94B40A57 -:101DB0009091010180915F01913049F48A3F2CF4A8 -:101DC00089EF80935F018FEF08C081500AC0833292 -:101DD0003CF082E280935F0181E08093010103C0C7 -:101DE0008F5F80935F01CC5ADF4F0FB6F894DEBF50 -:101DF0000FBECDBFDF91CF911F910F91FF90EF905C -:101E0000DF90CF90BF90AF909F9008951F920F9258 -:101E10000FB60F9211242F933F934F935F936F93BD -:101E20007F938F939F93AF93BF93EF93FF93809193 -:101E3000E90186958F739EE3980F9F73943020F489 -:101E400082500E94DC0C23C09AE3980F9F7393305A -:101E500020F486500E94120D1AC097E3980F9F73CA -:101E6000963020F489500E94420D11C091E3980FE2 -:101E70009F73963020F48F500E94A00D08C09BE203 -:101E8000980F9F73933018F485510E94390EFF917B -:101E9000EF91BF91AF919F918F917F916F915F91E2 -:101EA0004F913F912F910F900FBE0F901F9018955B -:101EB00080917A010895CF93DF9300D01F92CDB720 -:101EC000DEB79C0180914902843019F593E0998333 -:101ED0003B832A839093E9008FEF9091E800815033 -:101EE00095FD06C095ED9A95F1F700008111F5CFAB -:101EF0008091E80085FF0DC040E050E063E070E0B5 -:101F0000CE0101960E9494118091E8008E77809313 -:101F1000E8000F900F900F90DF91CF910895CF932D -:101F2000DF9300D01F92CDB7DEB720914902243055 -:101F300021F522E029839B838A8383E08093E90053 -:101F40008FEF9091E800815095FD06C095ED9A9530 -:101F5000F1F700008111F5CF8091E80085FF0DC0F9 -:101F600040E050E063E070E0CE0101960E949411E1 -:101F70008091E8008E778093E8000F900F900F908B -:101F8000DF91CF910895209149022430F1F422E0AD -:101F90002093E9002FEF3091E800215035FD06C075 -:101FA00035ED3A95F1F700002111F5CF2091E800C9 -:101FB00025FF0BC040E050E065E070E00E94941106 -:101FC0008091E8008E778093E8000895CF93DF93A7 -:101FD00020914902243039F521E02093E9002FEFC8 -:101FE0003091E800215035FD06C035ED3A95F1F706 -:101FF00000002111F5CF2091E80025FF14C0EC016D -:1020000040E050E068E070E00E9494118091E800A8 -:102010008E778093E80088E0FE01A2E7B1E00190AE -:102020000D928A95E1F7DF91CF9108958091480252 -:10203000811109C00E9429130E9486138091E20039 -:1020400084608093E20008951092480208950895F4 -:1020500008950C94832142E061EC81E00E94A31278 -:1020600042E061EC82E00E94A31242E061EC83E076 -:102070000C94A31280914B02833009F453C030F4C6 -:10208000813071F0823009F48CC008958A3009F4EF -:1020900078C08B3009F45EC0893009F09AC020C046 -:1020A00080914A02813A09F094C08091E800877FCC -:1020B0008093E80080914E0290914F02892B21F489 -:1020C00068E082E791E003C060E080E090E070E0CB -:1020D0000E94DF118091E8008B778093E8000895DB -:1020E00080914A02813209F074C080914E02909131 -:1020F0004F02892B09F06DC08091E800877F8093A3 -:10210000E8008091E80082FD05C0809149028111BC -:10211000F8CF5FC08091F10080937A018091E80050 -:102120008B7753C080914A02813A09F052C0809166 -:102130004E0290914F02892B09F04BC08091E8002C -:10214000877F8093E8008091E80080FFFCCF80913A -:102150000C0136C080914A028132D9F580914E023D -:1021600090914F02892BA9F58091E800877F809399 -:10217000E8000E94D81280914C0280930C010C94CC -:102180000E1B80914A02813221F58091E800877F01 -:102190008093E8000E94D81280914D0280937B01C9 -:1021A000089580914A02813AA1F48091E800877FE6 -:1021B0008093E8008091E80080FFFCCF80917B0154 -:1021C0008093F1008091E8008E778093E8000C9472 -:1021D000D812089584B7877F84BF88E10FB6F8943A -:1021E00080936000109260000FBE90E080E80FB610 -:1021F000F89480936100909361000FBE0E947B165B -:102200000E9429130E9486138091E20084608093CB -:10221000E20078940E940C160E947D1682E091E004 -:102220000E94271680914902853069F40E9444215A -:10223000809147028823B1F30E947221882391F391 -:102240000E947E11EFCF0E948516ECCF292F3327F5 -:1022500023303105C9F064F42130310581F022309A -:10226000310509F043C084E590E025E136E042C045 -:1022700021323105F1F02232310541F137C082E1DE -:1022800090E029E636E036C099278130910541F08B -:102290008230910541F0892B49F5E1E1F6E005C076 -:1022A000E3EEF5E002C0E9EBF5E0849190E09F01F8 -:1022B00021C06330D8F4E62FF0E0EE0FFF1FE25D9F -:1022C000FE4F2081318189E090E014C0633070F4CA -:1022D00070E0FB01EE0FFF1FE85DFE4F20813181B2 -:1022E000FB01EB5DFE4F808190E004C080E090E058 -:1022F00020E030E0FA0131832083089580E189BD38 -:1023000082E189BD09B400FEFDCF8091D8008F7DA8 -:102310008093D8008091E00082608093E0008091FB -:10232000E00081FDFCCF0895CF92DF92EF92FF9203 -:102330000F931F93CF93DF93EC018B016A010E94EF -:10234000F712811133C0C114D10439F0F601808134 -:102350009181081B190BC80FD91FE12CF12C011515 -:10236000110519F18091E80085FD16C08091E80003 -:102370008E778093E800C114D10449F0F601808182 -:102380009181E80EF91EF182E08285E00FC00E9483 -:10239000F712882321F30AC089918093F10001503C -:1023A0001109FFEFEF1AFF0ADACF80E0DF91CF913A -:1023B0001F910F91FF90EF90DF90CF9008952091A3 -:1023C0005002309151022617370748F06115710508 -:1023D00039F42091E8002E772093E80001C0B9017C -:1023E00040E061157105A9F120914902222309F409 -:1023F00043C0253009F442C02091E80023FD40C0CD -:102400002091E80022FD32C02091E80020FFE9CFB2 -:102410004091F3002091F20030E0342BFC01CF0119 -:102420006115710559F02830310540F48191809390 -:10243000F100615071092F5F3F4FF1CF41E028302B -:10244000310509F040E02091E8002E772093E80064 -:10245000C8CF4111C9CF0AC080914902882361F0D9 -:10246000853061F08091E80083FD0AC08091E8002A -:1024700082FFF2CF80E0089582E0089583E008951E -:1024800081E00895209150023091510226173707BC -:1024900048F06115710539F42091E8002E772093FA -:1024A000E80001C0B901FC0120E06115710591F15E -:1024B00080914902882309F440C0853009F43FC067 -:1024C0008091E80083FD3DC08091E80082FD2FC02F -:1024D0008091E80080FFE9CF2091F3008091F20025 -:1024E00090E0922B6115710559F08830910540F408 -:1024F00024912093F1003196615071090196F2CF39 -:1025000021E0089709F020E08091E8008E77809321 -:10251000E800CBCF2111CCCF0AC08091490288239B -:1025200061F0853061F08091E80083FD0AC0809100 -:10253000E80082FFF2CF80E0089582E0089583E012 -:10254000089581E00895982F973058F59093E90009 -:10255000981739F07091EC002091ED005091F00047 -:1025600003C0242F762F50E021FF19C03091EB00DB -:102570003E7F3093EB003091ED003D7F3093ED00D6 -:102580003091EB0031603093EB007093EC002093BE -:10259000ED005093F0002091EE0027FF07C09F5FF1 -:1025A000D3CF8F708093E90081E0089580E0089593 -:1025B00080914A0287FF11C08091E80082FD05C02A -:1025C000809149028111F8CF11C08091E8008B778A -:1025D0000BC080914902882349F08091E80080FF78 -:1025E000F8CF8091E8008E778093E80008952091DD -:1025F000E4003091E50095E64091EC00842F817075 -:1026000040FF22C08091E80080FD1CC080914902FB -:10261000882391F0853091F08091EB0085FD10C00A -:102620004091E4005091E5004217530729F39A01C5 -:10263000915011F784E0089582E0089583E00895B1 -:1026400081E0089580E008954091E80042FFDECFE8 -:1026500008950E9497130E949F13E0EEF0E080819E -:1026600081608083E8EDF0E080818F77808319BC02 -:10267000A7EDB0E08C918E7F8C9380818F7E8083DC -:102680001092480208950F931F93CF93DF930E94F7 -:1026900097130E949F13C8EDD0E088818F778883BD -:1026A00088818068888388818F7D888319BC109297 -:1026B000490210924502109247021092460200EE23 -:1026C00010E0F80180818B7F80838881816088831E -:1026D00042E060E080E00E94A312E1EEF0E0808141 -:1026E0008E7F8083E2EEF0E0808181608083808154 -:1026F00088608083F80180818E7F808388818061FB -:102700008883DF91CF911F910F910895E8EDF0E05C -:1027100080818F7E8083E7EDF0E08081816080831F -:1027200084E082BF81E0809348020C944313E8ED7B -:10273000F0E080818E7F80831092E20008951092F5 -:10274000DA001092E10008951F920F920FB60F92D7 -:1027500011242F933F934F935F936F937F938F93A6 -:102760009F93AF93BF93EF93FF938091E10082FF1C -:102770000BC08091E20082FF07C08091E1008B7F57 -:102780008093E1000E940B168091DA0080FF1FC049 -:102790008091D80080FF1BC08091DA008E7F8093EB -:1027A000DA008091D90080FF0DC080E189BD82E10F -:1027B00089BD09B400FEFDCF81E0809349020E94EB -:1027C000161005C019BC109249020E942410809175 -:1027D000E10080FF19C08091E20080FF15C0809168 -:1027E000E2008E7F8093E2008091E200806180931E -:1027F000E2008091D80080628093D80019BC85E007 -:10280000809349020E9428108091E10084FF30C02B -:102810008091E20084FF2CC080E189BD82E189BD06 -:1028200009B400FEFDCF8091D8008F7D8093D80041 -:102830008091E1008F7E8093E1008091E2008F7EA5 -:102840008093E2008091E20081608093E2008091B9 -:102850004502882311F084E007C08091E30087FDE2 -:1028600002C081E001C083E0809349020E942910E8 -:102870008091E10083FF29C08091E20083FF25C0A1 -:102880008091E100877F8093E10082E0809349029C -:10289000109245028091E1008E7F8093E10080914B -:1028A000E2008E7F8093E2008091E200806180935D -:1028B000E20042E060E080E00E94A3128091F0001C -:1028C00088608093F0000E942710FF91EF91BF91E4 -:1028D000AF919F918F917F916F915F914F913F91B8 -:1028E0002F910F900FBE0F901F9018951F920F926F -:1028F0000FB60F9211242F933F934F935F936F93D3 -:102900007F938F939F93AF93BF93CF93DF93EF9377 -:10291000FF93C091E900CF708091EC00D82FD17067 -:1029200080FDD0E81092E9008091F000877F8093CD -:10293000F00078940E94BA141092E9008091F0009F -:1029400088608093F000CD2BCF70C093E900FF9199 -:10295000EF91DF91CF91BF91AF919F918F917F9137 -:102960006F915F914F913F912F910F900FBE0F90FC -:102970001F9018951F93CF93DF93CDB7DEB7AA971B -:102980000FB6F894DEBF0FBECDBFEAE4F2E088E0F8 -:102990008E0F9091F10091938E13FBCF0E943A100D -:1029A0008091E80083FF1FC180914A0290914B0201 -:1029B000492F50E04A30510508F015C1FA01E25A9A -:1029C000FF4F0C94B528803881F0823809F00BC194 -:1029D00080914E028F708093E9008091EB0085FB1F -:1029E000882780F91092E90006C0809146029091F4 -:1029F0004702911182609091E800977F9093E800E0 -:102A00008093F1001092F100C8C0282F2D7F09F0AB -:102A1000EAC0882319F0823061F0E5C080914C0251 -:102A2000813009F0E0C0933009F080E080934702E4 -:102A30002BC080914C02811127C080914E028F7073 -:102A400009F4D1C08093E9002091EB0020FF1CC065 -:102A5000933021F48091EB00806214C09091EB00E0 -:102A600090619093EB0021E030E0A90102C0440F97 -:102A7000551F8A95E2F74093EA001092EA00809190 -:102A8000EB0088608093EB001092E9008091E800F1 -:102A9000877F86C08111A7C010914C021F7780915B -:102AA000E3008078812B8093E3008091E800877FAA -:102AB0008093E8000E94D8128091E80080FFFCCF4C -:102AC0008091E30080688093E300111102C082E0EE -:102AD00001C083E08093490286C08058823008F0AC -:102AE00082C080914C0290914D028C3D53E095073D -:102AF00079F583E08A838AE289834FB7F894DE010F -:102B0000139620E03EE051E2E32FF0E050935700AF -:102B1000E49120FF03C0E295EF703F5FEF708E2FCE -:102B200090E0EA3010F0C79601C0C0968D939D9357 -:102B30002F5F243149F74FBF8091E800877F809352 -:102B4000E8006AE270E0CE0101960E94DF1114C035 -:102B5000AE014F5F5F4F60914E020E942611BC0193 -:102B6000009709F440C09091E800977F9093E800A7 -:102B700089819A810E9442128091E8008B7780932C -:102B8000E80031C0803879F58091E800877F809334 -:102B9000E800809145028093F1008091E8008E77F3 -:102BA0008093E8000E94D8121EC081111CC0909131 -:102BB0004C029230C0F48091E800877F8093E80057 -:102BC000909345020E94D81280914502811106C05F -:102BD0008091E30087FD02C081E001C084E0809322 -:102BE00049020E942B108091E80083FF0AC0809167 -:102BF000E800877F8093E8008091EB0080628093FB -:102C0000EB00AA960FB6F894DEBF0FBECDBFDF91E2 -:102C1000CF911F9108950895CF9380914902882301 -:102C2000A1F0C091E900CF709091EC00892F8170E4 -:102C300090FD80E8C82B1092E9008091E80083FDA8 -:102C40000E94BA14CF70C093E900CF910895909379 -:102C50008101809380010895E0918001F0918101CC -:102C6000309721F00190F081E02D099480E00895E3 -:102C7000E0918001F0918101309721F00280F38191 -:102C8000E02D09940895E0918001F0918101309741 -:102C900021F00480F581E02D0994089520917E01B2 -:102CA00030917F018217930771F090937F01809399 -:102CB0007E01E0918001F0918101309721F0068042 -:102CC000F781E02D0994089520917C0130917D01D8 -:102CD0008217930771F090937D0180937C01E091BE -:102CE0008001F0918101309721F00084F185E02D81 -:102CF0000994089508950C947A160E94B7210E94B1 -:102D0000B5080E943D220C94D0265F926F927F926C -:102D10008F929F92AF92BF92CF92DF92EF92FF92EB -:102D20000F931F93CF93DF9300D000D01F92CDB7A6 -:102D3000DEB70E94FA089BE8C92E91E0D92E03E085 -:102D400010E0AA24A394B12C502E802F0E94750964 -:102D50004C01F601729062906F0168267926611429 -:102D60007104A1F40150110978F78FEF89838A83E8 -:102D70001B820E94C0218160782F9D838C834981B2 -:102D80005A816B818D810E94351738C08091D8019E -:102D900081FD0E947E092BE030E07501022E02C009 -:102DA000EE0CFF1C0A94E2F7C70186219721892BBC -:102DB00009F129835A828E209F2091E0892809F405 -:102DC00090E09B830E94C0218160782F9D838C833B -:102DD00049815A816B818D810E943517000F111F27 -:102DE000F801ED57FE4F80819181E826F926F182A6 -:102DF000E08204C02150310980F6B4CF0E94112432 -:102E0000109182010E942C161817D1F00E942C16E6 -:102E1000809382010F900F900F900F900F90DF9191 -:102E2000CF911F910F91FF90EF90DF90CF90BF90C7 -:102E3000AF909F908F907F906F905F900C949F08C1 -:102E40000F900F900F900F900F90DF91CF911F91E7 -:102E50000F91FF90EF90DF90CF90BF90AF909F9039 -:102E60008F907F906F905F900895CF93DF93CDB751 -:102E7000DEB72B970FB6F894DEBF0FBECDBF4F83E2 -:102E8000588769877A878B87DE01119686E0FD0176 -:102E900011928A95E9F785E0FE01379601900D922F -:102EA0008A95E1F749815A816B817C818D819E8170 -:102EB0000E94AC1D2B960FB6F894DEBF0FBECDBF9F -:102EC000DF91CF910895CF93882309F4C2C0C82F12 -:102ED000823859F40E942C1681FDBBC089E30E9400 -:102EE00086200E94092189E30CC0833879F40E946E -:102EF0002C1680FDAEC083E50E9486200E94092129 -:102F000083E50E94A320CF910C940921843859F4C1 -:102F10000E942C1682FD9DC087E40E9486200E949C -:102F2000092187E4EECF8CEF8C0F813A48F48C2F87 -:102F30000E94382681118DC08C2F0E948620E3CFFD -:102F400080E28C0F883048F4C77081E001C0880FA0 -:102F5000CA95EAF70E94C220D6CF8BE58C0F83304A -:102F600078F4C53A29F0C63A31F083E890E005C01C -:102F700081E890E002C082E890E0CF910C944E1678 -:102F800088E58C0F833108F064C0C83A39F1C93A3A -:102F900041F1CA3A49F1CB3A51F1CC3A59F1CD3A23 -:102FA00061F1C03B69F1CE3A71F1CF3A79F1C13BA1 -:102FB00081F1C23B89F1C33B91F1C43B99F1C53B1F -:102FC000A1F1C63BA9F1C73BB1F1C83BB9F1C93B7F -:102FD000C1F1CA3BC9F180E090E038C082EE90E0D8 -:102FE00035C089EE90E032C08AEE90E02FC085EBCC -:102FF00090E02CC086EB90E029C087EB90E026C0E3 -:103000008CEC90E023C08DEC90E020C083E891E050 -:103010001DC08AE891E01AC082E991E017C084E9F6 -:1030200091E014C081E292E011C083E292E00EC010 -:1030300084E292E00BC085E292E008C086E292E072 -:1030400005C087E292E002C08AE292E0CF910C9440 -:103050006416CF910895882309F44BC0823859F43F -:103060000E942C1681FF45C089E30E9486200E94A1 -:10307000092189E30CC0833871F40E942C1680FF6B -:1030800038C083E50E9486200E94092183E50E94C2 -:10309000A3200C940921843859F40E942C1682FF35 -:1030A00028C087E40E9486200E94092187E4EFCF90 -:1030B0009CEF980F913A58F390E2980F983050F4A3 -:1030C000877091E001C0990F8A95EAF7892F0E94D5 -:1030D000C820DFCF9BE5980F933020F480E090E08C -:1030E0000C944E16885A833120F480E090E00C94C2 -:1030F00064160895882321F00E94C2200C940921AF -:103100000895882321F00E94C8200C940921089575 -:103110007F928F929F92AF92BF92CF92DF92EF9267 -:10312000FF920F931F93CF93DF931F92CDB7DEB71C -:103130007C01C62E772EFC01058102950F7012814D -:1031400011110E94DF200E947F20882379F0112333 -:1031500069F080E28C0D883048F082E00E9468209F -:103160000E947F2091E0D82ED92601C0D12CE72DD6 -:10317000E295EF70F0E0E859FF4F0C94B528872DE9 -:10318000807F072D0F70882311F00295007F112397 -:1031900089F0002309F499C180E28C0D883020F475 -:1031A000802F0E94C22003C0802F0E94D2200E9444 -:1031B00009218BC18C2D0E942B18002309F4C3C157 -:1031C00080E28C0D883020F4802F0E94C82003C03C -:1031D000802F0E94D8200E940921B5C1872D807FB1 -:1031E000972D9F70803211F4892F03C0892F82950B -:1031F000807FCC2021F0F1E0CF16A1F01DC011237B -:1032000039F0002319F1013009F50E94F2209BC129 -:10321000002319F0013009F496C189830E94F5203A -:10322000898110C1112321F0063008F08CC10EC035 -:10323000053008F088C106C1112359F0002331F090 -:10324000F701958190FF41C19F7095830E947A1884 -:103250007AC1002309F4F6C03EC1872D8695869574 -:10326000837090E0009719F0019761F06CC1112311 -:1032700021F08C2D972D937002C080E090E00E9489 -:103280004E1661C1112321F08C2D972D937002C031 -:1032900080E090E00E94641656C18C2D112319F035 -:1032A0000E94192302C00E9481230E9406244BC160 -:1032B000872D837009F052C0111145C18C2D829564 -:1032C00086958770880F880F9C2D9F70892E912C72 -:1032D000A12CB12C082E04C0880C991CAA1CBB1C64 -:1032E0000A94D2F7C4FE14C00FE010E020E030E0F2 -:1032F000B901A80104C0440F551F661F771F8A95A6 -:10330000D2F7CB01BA01609570958095909503C076 -:1033100060E070E0CB01272D26952695237030E0E4 -:103320002230310569F02330310589F06829792987 -:103330008A299B292130310571F00E94F41E03C1B6 -:10334000682979298A299B290E94101FFCC00E94A4 -:10335000F41EC501B4010E94D81EF5C0112319F056 -:10336000872D817001C08695882309F4ECC08C2DCF -:10337000829586958770880F880F9C2D9F70892E67 -:10338000912CA12CB12C082E04C0880C991CAA1CCD -:10339000BB1C0A94D2F7C4FE14C00FE010E020E07A -:1033A00030E0B901A80104C0440F551F661F771F04 -:1033B0008A95D2F7CB01BA0160957095809590956A -:1033C00003C060E070E0CB01272D26952695237081 -:1033D000422F50E04230510569F04330510589F0E9 -:1033E000682979298A299B294130510571F00E9469 -:1033F000CE1FA9C0682979298A299B290E94EA1F22 -:10340000A2C00E94CE1FC501B4010E94B21F9BC082 -:103410008C2D90E0FC01E05EF109E531F10508F04A -:1034200050C0E858FF4F0C94B5280C2D0F70872D15 -:103430008F71112321F00E944B1F802F07CF0E9414 -:103440006C1F802F0E9481187EC0112341F005302F -:1034500008F079C0872D8F710E94911F74C00630CB -:1034600008F071C0F7CF112339F0872D8F710E94BA -:103470004B1F69C01123C9F3872D8F710E946C1FE8 -:1034800062C0112329F0872D8F710E94361F5BC007 -:103490000E942C1F58C0112351F0172D1F71812F2E -:1034A0000E944B1F63E0812F0E945F204CC081E08F -:1034B0000E946820023008F446C082E00E94682022 -:1034C00042C0112331F0002381F28C2D0E9463173A -:1034D0003AC0002389F28C2D0E942B1834C0472D4E -:1034E0004F706C2DC7010E9495040E94501E2BC086 -:1034F000111129C0472D4F7050E042305105B9F0ED -:103500004CF44115510581F041305105E1F40E9420 -:10351000F82619C04330510569F04430510599F43B -:103520008C2D0E944A270FC00E94E1260CC00E94E9 -:10353000142709C00E94272706C0472D4F706C2D05 -:10354000C7010E94A704DD20F9F00E945B2080FDE6 -:103550001BC0F70112820E9455200E944B1FC70119 -:103560000E94D31A0E9455200F90DF91CF911F9196 -:103570000F91FF90EF90DF90CF90BF90AF909F9012 -:103580008F907F900C946C1F0F90DF91CF911F91C3 -:103590000F91FF90EF90DF90CF90BF90AF909F90F2 -:1035A0008F907F9008950F931F93CF93DF93EC013B -:1035B000888199812B813C81232BB9F09F3F11F4A5 -:1035C0008F3F99F0CE010E94D904882371F0688161 -:1035D00079818A810E9451208C010E9406200E94DC -:1035E000CD1EB801CE010E948818DF91CF911F91A6 -:1035F0000F9108950E94DF200E94EF200E94B420C6 -:103600000E9409210E94B7240E94062480E090E0D5 -:103610000E944E1680E090E00C9464160E94CF2029 -:103620000C94FA1A0E944620292F22952F7030E020 -:103630002C3031054CF42A3031056CF4225031091C -:1036400022303105A8F407C02C30310569F02F3045 -:10365000310551F00DC0803F69F018F4803E40F410 -:1036600009C0843F29F406C093FB882780F9089598 -:1036700080E0089581E00895CF93DF9300D000D0DB -:103680001F92CDB7DEB70F900F900F900F900F9055 -:10369000DF91CF910895CF93DF9300D000D000D079 -:1036A000CDB7DEB726960FB6F894DEBF0FBECDBFFE -:1036B000DF91CF9108951F93CF93DF93C0918B013A -:1036C00016E080918C01C81799F0D0E01C9FF001A2 -:1036D0001D9FF00D1124E357FE4F408151816281FF -:1036E0007381848195810E944B1B2196C770E9CF1D -:1036F000DF91CF911F9108954091BD015091BE017E -:103700006091BF017091C0018091C1019091C2018F -:103710000C944B1B8091C20182958F7009F054C0AC -:103720008091BF01882309F44FC080918B01A09143 -:103730008C016091BD017091BE014091C00150911A -:10374000C101B6E08A1709F43FC090E04115510568 -:10375000C1F17F3F11F46F3FA1F1B89FF001B99F14 -:10376000F00D1124E357FE4F218172132AC02081EE -:10377000621327C02281211124C0238134812417A0 -:10378000350710F421503109241B350B283C310535 -:10379000C0F42091C2012F7020612093C20126E065 -:1037A000289FF001299FF00D1124EE56FE4F8081D5 -:1037B0008F70806180838DEB91E00E94D31A0C940E -:1037C0005B1B01968770BECF0895CF92DF92EF9278 -:1037D000FF920F931F93CF93DF93CDB7DEB762971E -:1037E0000FB6F894DEBF0FBECDBF8C0185E0F801A7 -:1037F000DE011D9601900D928A95E1F7D8014C915A -:1038000011965C91119712966C9112971396CD9028 -:10381000DC9014973091BD017091BE018091C00180 -:103820009091C101009709F46BC17F3F19F43F3FAC -:1038300009F466C1E090BF01EE2009F4C0C02091F8 -:10384000C201C816D90628F0F601E81BF90BCF0112 -:1038500004C0809590958C0D9D1DFF24F394883CA9 -:10386000910578F0F12C207F09F0C6C07C2DD98A13 -:10387000C88A89890E943C1B8DEB91E00E94D31A73 -:10388000B1C0822F807F09F046C0751314C0341375 -:1038900012C0611110C02F7020612093C2010E94DC -:1038A0007C1B8DEB91E00E94D31A8091C201D8015C -:1038B00015968C932EC0CD2819F15F3F11F44F3F20 -:1038C000F9F0F62E61111CC080918B0120918C01C2 -:1038D00036E0821709F45AC090E0389FF001399F12 -:1038E000F00D1124E357FE4F7181571306C070810C -:1038F000471303C07281711103C001968770E9CF2D -:10390000F62E662309F418C18091C201816080936C -:10391000C201F12C11C1751308C0341306C0611126 -:1039200004C08091C201D801C3C04D875E878D85D8 -:103930009E856A8B0E94121B6A898823E1F16623A7 -:10394000D1F12091C201822F82958F7090E0029771 -:1039500074F08091BD019091BE0198878F83198684 -:10396000DB86CA862C87CE0107960E94D31A86E092 -:10397000F801ADEBB1E001900D928A95E1F70E945C -:103980008A1B0E947C1BFF24F394D6C04D875E8760 -:103990008D859E850E944620292F22952F7030E02C -:1039A000223031050CF0BCC09F7009F0B6C0805EBB -:1039B000883008F4C1C0C8010E94D31AE4CFC816E9 -:1039C000D90608F453C0F601E81BF90BCF01883C77 -:1039D000910508F450C0F12C7C2DD98AC88A8989B8 -:1039E0000E943C1BEDEBF1E086E0DF011D928A9521 -:1039F000E9F70E947C1BA0C0751314C0341312C0D9 -:103A0000611110C08091C201F8018583C8010E9434 -:103A1000D31A86E0EDEBF1E0DF011D928A95E9F71C -:103A2000FE2C8AC04D875E878D859E856A8B0E949D -:103A3000121B6A89882309F4BECF662309F4BBCF21 -:103A40002091C201822F82958F7090E002970CF432 -:103A50008ECF8091BD019091BE019A8389831B8294 -:103A6000DD82CC822E83CE0101967FCF809590950A -:103A70008C0D9D1DACCFF62E662309F49CCF7513DB -:103A80002EC034132CC02091C20120FD1FC0822FF4 -:103A900082958F70D9F0D80115962C9315978F3099 -:103AA00049F08F5F982F9295907F822F8F70892B8E -:103AB00015968C93C8010E94D31A86E0F801ADEBED -:103AC000B1E001900D928A95E1F793CF86E0F8017D -:103AD000ADEBB1E001900D928A95E1F72DC04D87D5 -:103AE0005E878D859E850E94121B811140CF80913B -:103AF000C20181608093C201C8010E94D31A1CC018 -:103B0000662309F458CF4D875E878D859E850E9478 -:103B1000121B882309F44FCF2ACF811148CF0CC044 -:103B2000243031050CF047CF9F7009F440CFF801E5 -:103B30009581907F09F03BCF8F2D62960FB6F89458 -:103B4000DEBF0FBECDBFDF91CF911F910F91FF90D0 -:103B5000EF90DF90CF9008951F93CF93DF93CDB771 -:103B6000DEB72C970FB6F894DEBF0FBECDBF4F83E4 -:103B7000588769877A878B879C87CE0107960E9432 -:103B8000E51B882369F08F8198852A853B85232B47 -:103B9000F1F19F3F09F063C08F3F09F060C037C06B -:103BA00086E0FE013796DE01119601900D928A950E -:103BB000E1F76F817885EA85FB85309741F17F3F9A -:103BC00011F46F3F21F120918C0130E0C901019681 -:103BD0008770992740918B0150E08417950709F46D -:103BE00047C069837A83FD83EC8396E0929FD0017E -:103BF000939FB00D1124A357BE4FFE013196019043 -:103C00000D929A95E1F780938C010E945B1B16E060 -:103C100080918B0190918C018917C1F1189FC0018F -:103C2000112483579E4F0E94E51B882379F1E09170 -:103C30008B011E9FF0011124E357FE4F40815181FB -:103C400062817381848195810E944B1B80918B01DD -:103C500090E001968770992780938B01D9CF4F818F -:103C6000588569857A858B859C850E944B1BCFCFB3 -:103C70000E940E1B10928C0110928B01EDEBF1E073 -:103C800086E0DF011D928A95E9F7C1CF2C960FB629 -:103C9000F894DEBF0FBECDBFDF91CF911F91089585 -:103CA000EF92FF920F931F93CF93DF938C010097B6 -:103CB00009F46CC0F12CEE24E394E8012196F8019C -:103CC0008491843740F4843008F051C0813081F011 -:103CD000823019F15BC0853709F444C0A8F19CE734 -:103CE000980F903708F052C08F770E942B1841C070 -:103CF0000E5F1F4FFE01C49180E28C0F883048F4A4 -:103D0000C7708E2D01C0880FCA95EAF70E94E22085 -:103D100014C08C2F0E9463172DC00E5F1F4FFE0131 -:103D2000C49180E28C0F883058F4C7708E2D01C08A -:103D3000880FCA95EAF70E94E8200E9409211AC05C -:103D40008C2F0E942B1816C00E5F1F4FFE01C491CE -:103D5000CC2381F08FE99FE00197F1F700C00000CC -:103D6000C150F6CF0E5F1F4FFE01F49003C00E94BA -:103D700063178E018F2D882309F49FCFEFE9FFE0B1 -:103D80003197F1F700C000008150F5CFDF91CF915E -:103D90001F910F91FF90EF90089508956093C701D0 -:103DA0007093C8018093C9019093CA010C94FA1AC8 -:103DB0000F931F930091C7011091C8012091C90171 -:103DC0003091CA01DC01CB01802B912BA22BB32BAC -:103DD0008093C7019093C801A093C901B093CA0111 -:103DE0001F910F910C94FA1A0F931F930091C70122 -:103DF0001091C8012091C9013091CA01DC01CB01A9 -:103E000080239123A223B3238093C7019093C801F9 -:103E1000A093C901B093CA011F910F910C94FA1A93 -:103E20000F931F930091C7011091C8012091C90100 -:103E30003091CA01DC01CB0180279127A227B3274B -:103E40008093C7019093C801A093C901B093CA01A0 -:103E50001F910F910C94FA1A1092C3011092C40191 -:103E60001092C5011092C6010C94FA1A41E050E07C -:103E700060E070E004C0440F551F661F771F8A95ED -:103E8000D2F74093C3015093C4016093C50170936E -:103E9000C6010C94FA1A41E050E060E070E004C002 -:103EA000440F551F661F771F8A95D2F78091C30173 -:103EB0009091C401A091C501B091C601482B592B26 -:103EC0006A2B7B2B4093C3015093C4016093C501BF -:103ED0007093C6010C94FA1A41E050E060E070E083 -:103EE00004C0440F551F661F771F8A95D2F740956F -:103EF0005095609570958091C3019091C401A091F7 -:103F0000C501B091C601482359236A237B234093FE -:103F1000C3015093C4016093C5017093C6010C9412 -:103F2000FA1A41E050E060E070E004C0440F551F11 -:103F3000661F771F8A95D2F78091C3019091C401C3 -:103F4000A091C501B091C601482759276A277B2750 -:103F50004093C3015093C4016093C5017093C6019F -:103F60000C94FA1A0F931F930091C3011091C4018E -:103F70002091C5013091C601DC01CB01802B912B32 -:103F8000A22BB32B8093C3019093C401A093C501CE -:103F9000B093C6011F910F910C94FA1A0F931F93BF -:103FA0000091C3011091C4012091C5013091C60157 -:103FB000DC01CB0180239123A223B3238093C3018F -:103FC0009093C401A093C501B093C6011F910F91B6 -:103FD0000C94FA1A0F931F930091C3011091C4011E -:103FE0002091C5013091C601DC01CB0180279127CA -:103FF000A227B3278093C3019093C401A093C50166 -:10400000B093C6011F910F910C94FA1A0895CF92A4 -:10401000DF92EF92FF920F931F93CF93DF938C0168 -:10402000C090C701D090C801E090C901F090CA01CA -:104030008091C3019091C401A091C501B091C601C6 -:10404000C82AD92AEA2AFB2ACFE1D0E0D701C60143 -:104050000C2E04C0B695A795979587950A94D2F72C -:1040600080FF06C0B8018C2F0E940508019721F43B -:10407000219760F780E001C08C2FDF91CF911F91D5 -:104080000F91FF90EF90DF90CF900895CF93DF9343 -:10409000EC010E940720BE010E940508DF91CF912C -:1040A0000895CB010E94462008958091CB0185950B -:1040B0008595859508958091CB018770089598E046 -:1040C000899F90011124262B2093CB010C944B1F28 -:1040D0002091CB01809582238093CB01982F9770FC -:1040E00069F430E0482F552747FD509524173507D0 -:1040F00029F08595859585950C946C1F0895909170 -:10410000CB01977081E009F480E0089520910D01C2 -:1041100030910E01F90132969FEF40E0519158170E -:1041200089F09F3F19F4511101C0942F4F5F463021 -:10413000A9F79F3F39F0F901E90FF11D97FDFA95B5 -:1041400082830895089520910D0130910E01F901A7 -:104150003296285F3F4F9081981301C010823196AC -:10416000E217F307C1F7089581E090E0E0910D01B7 -:10417000F0910E01E80FF91F108201968830910529 -:10418000A9F708959091D701892B8093D7010895BD -:1041900080959091D70189238093D701089510923B -:1041A000D70108959091D601892B8093D601089567 -:1041B00080959091D60189238093D601089510921D -:1041C000D60108959091D501892B8093D50108954A -:1041D00080959091D50189238093D50108951092FF -:1041E000D50108958093CC0108951092CC010895D3 -:1041F00080910D0190910E01FC0131969C01285F88 -:104200003F4F80E0919191118F5FE217F307D1F753 -:104210000895E0910D01F0910E018091D701808306 -:10422000E0910D01F0910E0190818091D601892BD2 -:104230008083E0910D01F0910E0190818091D50174 -:10424000892B80838091CC01882361F0E0910D015E -:10425000F0910E019081892B80830E94F8208111BA -:104260001092CC0180910D0190910E010C943816A2 -:1042700020E0009739F0AC01415051098423952387 -:104280002F5FF7CF822F089580914902843039F152 -:104290001092D90120E488E190E00FB6F894A89537 -:1042A000809360000FBE2093600080E00E94FA03BC -:1042B00080E00E949F0883B7817F846083BF83B7BB -:1042C000816083BF7894889583B78E7F83BF88E1B0 -:1042D0000FB6F89480936000109260000FBE0895AE -:1042E0000895089580E00E94FA030E9470210E94C0 -:1042F000FA080E9471210E947F0991E0811101C09A -:1043000090E0892F08950E940E1B80E00E94FA031E -:104310000E94D0260E942C160C949F081F920F9288 -:104320000FB60F9211248F939F93AF93BF938091F9 -:10433000D901811113C08091DA019091DB01A09124 -:10434000DC01B091DD014196A11DB11D8093DA0120 -:104350009093DB01A093DC01B093DD01BF91AF919D -:104360009F918F910F900FBE0F901F90189582E034 -:1043700084BD93E095BD9AEF97BD80936E0008953C -:104380002FB7F8948091DA019091DB01A091DC01C4 -:10439000B091DD012FBF0895CF92DF92EF92FF928F -:1043A0000F931F932FB7F8944091DA015091DB01DE -:1043B0006091DC017091DD012FBF6A017B01EE2469 -:1043C000FF248C0120E030E0C016D106E206F3069F -:1043D00010F4415051099A01281B390BC9011F9152 -:1043E0000F91FF90EF90DF90CF9008951F920F9262 -:1043F0000FB60F9211248F939F93AF93BF93809129 -:10440000DA019091DB01A091DC01B091DD01019610 -:10441000A11DB11D8093DA019093DB01A093DC0113 -:10442000B093DD01BF91AF919F918F910F900FBE1F -:104430000F901F9018950E942913F8942FEF87EA88 -:1044400091E6215080409040E1F700C0000087E0F5 -:1044500090EBDC018093540290935502A093560296 -:10446000B09357029CE088E10FB6F894A89580932A -:1044700060000FBE90936000FFCF0E9472228111F6 -:1044800002C00E9453220E947D228093D8010E9484 -:104490008522809352020E948122682F70E080E082 -:1044A00090E00C94CE1E6DEE7EEF80E090E00E94D6 -:1044B000ED2860E082E090E00E94CF2860E083E099 -:1044C00090E00E94CF2860E084E090E00E94CF2836 -:1044D00060E085E090E00E94CF2860E086E090E018 -:1044E0000C94CF2880E090E00E94C92821E08D3E06 -:1044F0009E4F09F020E0822F089582E090E00C9416 -:10450000BB2883E090E00C94BB2884E090E00C94FE -:10451000BB28682F84E090E00C94CF2886E090E0E0 -:104520000C94BB28682F86E090E00C94CF288091F3 -:10453000E00180FF0BC06091120185E0689FB0012F -:10454000112475956795759567952BC081FF09C0F6 -:104550006091120185E0689FB001112475956795FF -:1045600020C082FF07C06091120185E0689FB00102 -:10457000112417C09091E1019923D1F060911101AC -:10458000961788F72091120185E0289F9001112449 -:10459000929FA001939F500D112470E0CA010E94C8 -:1045A000A1286038710540F46115710539F002C029 -:1045B00065E070E0862F08958FE7089581E0089503 -:1045C0008091E00180FF08C06091100170E0759556 -:1045D00067957595679521C081FF06C060911001B0 -:1045E00070E07595679519C082FF04C06091100155 -:1045F00070E010C09091E1019923C1F060910F012A -:104600009617A0F780911001899FC001112470E0D6 -:104610000E94A1286038710528F46115710521F008 -:10462000862F08958FE7089581E0089561E070E096 -:10463000F4CF803F21F40E949722819504C0813FEE -:1046400029F40E9497228093E4010895823F21F487 -:104650000E949722819504C0833F29F40E949722EB -:104660008093E3010895893F19F40E94E02205C078 -:104670008A3F31F40E94E02281958093E5010895FC -:104680008B3F21F40E94E022819504C08C3F29F4E5 -:104690000E94E0228093E6010895843F21F48091F6 -:1046A000E201816017C0853F21F48091E2018260C0 -:1046B00011C0863F21F48091E20184600BC0873FE6 -:1046C00021F48091E201886005C0883F31F4809137 -:1046D000E20180618093E20108958D3F21F4809191 -:1046E000E00181600BC08E3F21F48091E001826087 -:1046F00005C08F3F29F48091E00184608093E00140 -:104700000895803F39F48091E40187FF6CC01092D6 -:10471000E40169C0813F29F48091E4011816BCF3DB -:1047200062C09091E301823F29F497FF5CC0109230 -:10473000E30159C0833F19F41916CCF354C0893FE3 -:1047400041F48091E50118160CF04DC01092E5017E -:104750004AC08A3F29F48091E50187FF44C0F6CF23 -:104760008B3F39F48091E60187FF3DC01092E6014E -:104770003AC08C3F29F48091E6011816BCF333C08F -:10478000843F21F48091E2018E7F17C0853F21F4A0 -:104790008091E2018D7F11C0863F21F48091E2017A -:1047A0008B7F0BC0873F21F48091E201877F05C09A -:1047B000883F31F48091E2018F7E8093E20113C043 -:1047C0008D3F21F48091E0018E7F0BC08E3F21F45C -:1047D0008091E0018D7F05C08F3F29F48091E00139 -:1047E0008B7F8093E0018091E30181110EC0809165 -:1047F000E40181110AC08091E501811106C0809118 -:10480000E601811102C01092E101089582EE91E06B -:104810000E9443160E94C0219093DF018093DE0125 -:1048200008951F93CF93DF938091DE019091DF0174 -:104830000E94CC21AC019091E101992321F02091BB -:10484000130130E006C0209114018AE0289F9001F6 -:1048500011244217530708F486C08091E301C091E8 -:10486000E401D091E5011091E601811107C0C11169 -:1048700076C0D11174C0111172C075C09F3F19F07C -:104880009F5F9093E101181624F40E949722809371 -:10489000E3018091E30187FF05C00E949722819583 -:1048A0008093E3011C1624F40E9497228093E40174 -:1048B0008091E40187FF05C00E9497228195809333 -:1048C000E4016091E301662339F1C091E401CC2356 -:1048D00019F1772767FD7095872F972F0E949E27E4 -:1048E00023E333E343E35FE30E9402280E946B2744 -:1048F0006093E3016C2F772767FD7095872F972FC3 -:104900000E949E2723E333E343E35FE30E940228F0 -:104910000E946B276093E4011D1624F40E94E0229C -:104920008093E5018091E50187FF05C00E94E022A8 -:1049300081958093E501111624F40E94E022809372 -:10494000E6018091E60187FF05C00E94E022819583 -:104950008093E601DF91CF911F910C9406249F3F35 -:1049600009F08ECF96CFDF91CF911F910895E2EE9F -:10497000F1E085E0DF011D928A95E9F71092E101EF -:104980001092E0010895833081F128F4813059F0CC -:104990008230D1F00895853009F449C0B8F18630ED -:1049A00009F456C0089580911401262F30E0280F95 -:1049B000311D2F3F310524F4680F609314010895D1 -:1049C0008FEF80931401089580911301262F30E01A -:1049D000280F311D2F3F310524F4680F6093130118 -:1049E00008958FEF80931301089580911201262F6F -:1049F00030E0280F311D2F3F310524F4680F6093FC -:104A0000120108958FEF8093120108958091110192 -:104A1000262F30E0280F311D2F3F310524F4680F79 -:104A20006093110108958FEF809311010895809193 -:104A30001001262F30E0280F311D2F3F310524F4BF -:104A4000680F6093100108958FEF8093100108950F -:104A500080910F01262F30E0280F311D2F3F3105A7 -:104A600024F4680F60930F0108958FEF80930F0176 -:104A70000895833011F128F4813049F0823091F0AB -:104A80000895853081F120F18630C1F1089580913B -:104A90001401681720F4861B809314010895109266 -:104AA0001401089580911301681720F4861B8093E8 -:104AB000130108951092130108958091120168174F -:104AC00020F4861B8093120108951092120108951C -:104AD00080911101681720F4861B809311010895BD -:104AE00010921101089580911001681720F4861B1F -:104AF00080931001089510921001089580910F0184 -:104B0000681720F4861B80930F01089510920F01FF -:104B100008950F931F938732D8F58E3108F085C022 -:104B20008E3009F46FC098F4873009F459C08B3087 -:104B300009F48FC0863009F093C08091D801817F3D -:104B40008E7F8093D80181E08093E8018AC086310E -:104B500009F47FC068F4803109F082C08091D801E7 -:104B600083FB222720F991E0922790FB83F953C021 -:104B7000893109F46EC08B3109F072C08091D8017F -:104B800081FB222720F991E0922790FB81F943C015 -:104B9000883309F45EC050F4893209F45CC085336F -:104BA00009F459C0873209F456C05AC0833409F455 -:104BB00052C028F48A3308F453C0895337C088346C -:104BC00009F04EC00E940E1B0FEF13ED20E30150C1 -:104BD00010402040E1F700C000000E941B2239C0B5 -:104BE0009091D801892F8095817080FB90F929F0F0 -:104BF000966098609093D80134C0997F977F909386 -:104C0000D80127C08091D80182FB222720F991E0AA -:104C1000922790FB82F98093D8019923D1F080915B -:104C2000D80181608093D80114C08D5141E050E0DB -:104C300060E070E08A019B0104C0000F111F221F79 -:104C4000331F8A95D2F7C901B8010E94CE1E0E9477 -:104C50000E1B81E006C061E070E080E090E0F5CFDF -:104C600080E01F910F91089580E0089580E00895FD -:104C7000CF93C82F8091E801813069F018F082301D -:104C8000C9F184C0E0910D01F0910E018081823262 -:104C900009F07EC007C0E0910D01F0910E01808106 -:104CA000823261F48C2F0E943426811104C08C2F33 -:104CB0000E9489251DC081E090E01AC08C2F0E94BF -:104CC0003626811114C0C43179F048F4CB3079F024 -:104CD000C03109F061C082E08093E80108C0C932A8 -:104CE00019F0C83321F058C01092E80155C081E096 -:104CF000817054C0C93291F120F5C43179F1B0F41A -:104D0000C73009F047C08EE18093140182E380939D -:104D100013018AE08093120184E18093110188E0FD -:104D20008093100188E280930F0134C0CE51C630C9 -:104D300088F5EC2FF0E0EC5CFE4F80818093E7017A -:104D400029C0CE34E9F020F4CB3421F56AE013C059 -:104D5000C13579F0C235F1F461E00DC08091E70111 -:104D6000882319F01092E70115C081E08093E801D3 -:104D700015C061E006C08091E7010E94C3240AC00B -:104D80006AE08091E7010E94392504C01092E80191 -:104D900080E004C081E002C080E0AACFCF910895F6 -:104DA0000E947222811102C00E9453220E948E2210 -:104DB0008093530280FF02C0869501C080E00C946E -:104DC000FA0380915302982F9695292F30E02330D3 -:104DD00031054CF49F5F990F8170892B816080931E -:104DE00053020E9492228091530286950C94FA03FA -:104DF00080915302982F969591F09158990F817058 -:104E0000892B809353028E7F91E009F490E080918A -:104E1000530290FB80F9809353020E94922280916A -:104E2000530286950C94FA0380915302982F909523 -:104E300090FB80F9809353020E949222809153024A -:104E400080FF02C0869501C080E00C94FA03909127 -:104E50005302892F86958F5F8F779170843028F465 -:104E6000880F892B8093530202C090935302809144 -:104E700053028E7F91E009F490E08091530290FB01 -:104E800080F9809353020E9492228091530286956A -:104E90000C94FA0320915302922F96958927982F0C -:104EA000990F822F8170892B809353028E7F91E01E -:104EB00009F490E08091530290FB80F980935302B3 -:104EC0000E9492228091530286950C94FA0380915D -:104ED00053028695089504D06894B1118DC0089549 -:104EE00070D088F09F5790F0B92F9927B751A0F054 -:104EF000D1F0660F771F881F991F1AF0BA95C9F76E -:104F000012C0B13081F077D0B1E0089574C0672F3E -:104F1000782F8827B85F39F0B93FCCF3869577951D -:104F20006795B395D9F73EF4909580957095619506 -:104F30007F4F8F4F9F4F0895E89409C097FB3EF431 -:104F400090958095709561957F4F8F4F9F4F9923D6 -:104F5000A9F0F92F96E9BB279395F6958795779554 -:104F60006795B795F111F8CFFAF4BB0F11F460FF14 -:104F70001BC06F5F7F4F8F4F9F4F16C0882311F06C -:104F800096E911C0772321F09EE8872F762F05C080 -:104F9000662371F096E8862F70E060E02AF09A951B -:104FA000660F771F881FDAF7880F9695879597F910 -:104FB000089557FD9058440F551F59F05F3F71F009 -:104FC0004795880F97FB991F61F09F3F79F0879570 -:104FD0000895121613061406551FF2CF4695F1DFF9 -:104FE00008C0161617061806991FF1CF8695710589 -:104FF000610508940895E894BB2766277727CB01BD -:1050000097F908950BD078C069D028F06ED018F0C9 -:10501000952309F05AC05FC01124EECFCADFA0F378 -:10502000959FD1F3950F50E0551F629FF001729F3D -:10503000BB27F00DB11D639FAA27F00DB11DAA1F5C -:10504000649F6627B00DA11D661F829F2227B00DA9 -:10505000A11D621F739FB00DA11D621F839FA00D34 -:10506000611D221F749F3327A00D611D231F849F84 -:10507000600D211D822F762F6A2F11249F575040DB -:105080008AF0E1F088234AF0EE0FFF1FBB1F661F76 -:10509000771F881F91505040A9F79E3F510570F02F -:1050A00014C0AACF5F3FECF3983EDCF3869577956A -:1050B0006795B795F795E7959F5FC1F7FE2B880F2A -:1050C000911D9695879597F9089597F99F6780E8C0 -:1050D00070E060E008959FEF80EC089500240A944A -:1050E0001616170618060906089500240A941216C3 -:1050F0001306140605060895092E0394000C11F4F6 -:10510000882352F0BB0F40F4BF2B11F460FF04C0A2 -:105110006F5F7F4F8F4F9F4F0895AA1BBB1B51E1BD -:1051200007C0AA1FBB1FA617B70710F0A61BB70B17 -:10513000881F991F5A95A9F780959095BC01CD01BC -:10514000089597FB072E16F4009407D077FD09D039 -:105150000E948D2807FC05D03EF4909581959F4FC5 -:105160000895709561957F4F0895EE0FFF1F05908C -:10517000F491E02D0994F999FECF92BD81BDF89A82 -:10518000992780B50895A6E1B0E044E050E00C9482 -:10519000F528A8E1B0E042E050E00C94F528262F75 -:1051A000F999FECF92BD81BDF89A019700B402161D -:1051B00039F01FBA20BD0FB6F894FA9AF99A0FBECB -:1051C00008950396272F0E94D0280E94CF28252FCC -:1051D0000E94D028242F0C94D0280196272F0E94BB -:1051E000D0280C94CF28DC01CB01FC01F999FECF2B -:1051F00006C0F2BDE1BDF89A319600B40D9241505F -:0A5200005040B8F70895F894FFCF6E -:10520A00FFFF580FE60FC30F8F0F5B0F01CD012869 -:10521A0008140A321E1F0F03764F5F6F7F496943D6 -:10522A0079095953633F4D36FE06B1067B062706B8 -:0E523A00400659060102030405060708090094 -:00000001FF -- cgit v1.2.1 From 39cde914751bfa7d5013b7cb20002af6285cc943 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 18:39:57 -0400 Subject: Fix spelling in comment --- keyboard/planck/keymaps/angerthosenear/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/planck/keymaps/angerthosenear/keymap.c b/keyboard/planck/keymaps/angerthosenear/keymap.c index df13471e3d..fe049d0c84 100644 --- a/keyboard/planck/keymaps/angerthosenear/keymap.c +++ b/keyboard/planck/keymaps/angerthosenear/keymap.c @@ -6,7 +6,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_QUOT}, {KC_LCTL, KC_LGUI, KC_LALT, BL_STEP, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions + // Space is repeated to accommodate for both spacebar wiring positions }, [1] = { /* WASD + NumPad */ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_PMNS, KC_TRNS}, @@ -36,4 +36,4 @@ const uint16_t PROGMEM fn_actions[] = { [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), -}; \ No newline at end of file +}; -- cgit v1.2.1 From e7b50feee434ad0035cdbddd1890c5992f28f712 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 18:42:05 -0400 Subject: Remove more generated files --- .../keymaps/experimental/planck_experimental.hex | 1645 -------------------- 1 file changed, 1645 deletions(-) delete mode 100644 keyboard/planck/keymaps/experimental/planck_experimental.hex diff --git a/keyboard/planck/keymaps/experimental/planck_experimental.hex b/keyboard/planck/keymaps/experimental/planck_experimental.hex deleted file mode 100644 index 76984a07cc..0000000000 --- a/keyboard/planck/keymaps/experimental/planck_experimental.hex +++ /dev/null @@ -1,1645 +0,0 @@ -:100000000C948F050C94D3050C94D3050C94D30554 -:100010000C94D3050C94D3050C94D3050C94D30500 -:100020000C94D3050C94D3050C94F9190C94CB1AA9 -:100030000C942D280C94D3050C94D3050C94D30563 -:100040000C94D3050C9486060C94D3050C94D3051C -:100050000C94D3050C9495280C94D3050C94D305DB -:100060000C94D3050C94D3050C94D3050C94D305B0 -:100070000C94D3050C94D3050C94D3050C94D305A0 -:100080000C94DB0F0C94D3050C94D3050C94D3057E -:100090000C94D3050C94D3050C94D3050C94D30580 -:1000A0000C94D3050C94D3050C94D305EE060007ED -:1000B000140726072E074407920792079207920714 -:1000C0009207920752078107381B5A1B481C5A1B7C -:1000D000481C9F1BC21B481C171C2A1C141F141FE2 -:1000E000431F431F821FA21FF820F820AD1FF820D6 -:1000F0005D205D20C420CD20F820F2206A206A20F7 -:100100006A206A206A206A206A206A206A206A209F -:100110006A206A206A206A206A206A207A20882061 -:100120008F209620A02007634236B79BD8A71A39A4 -:10013000685618AEBAAB558C1D3CB7CC5763BD6D35 -:10014000EDFD753EF6177231BF000000803F0800DC -:100150000000BE922449123EABAAAA2ABECDCCCC46 -:100160004C3E00000080BEABAAAAAA3E00000000E0 -:10017000BF000000803F0000000000084178D3BBB2 -:100180004387D1133D190E3CC3BD4282AD2B3E685F -:10019000EC8276BED98FE1A93E4C80EFFFBE01C450 -:1001A000FF7F3F0000000000000000000000000092 -:1001B000000000010204060A0F17202C3A4A5D7164 -:1001C000879DB3C7DAE9F5FCFFFCF5E9DAC7B39D13 -:1001D00087715D4A3A2C20170F0A060402010000BD -:1001E00000000000000000002B0014001A000800AE -:1001F000150017001C0018000C00120013002A0044 -:10020000290004001600070009000A000B000D0079 -:100210000E000F0033003400E1001D001B0006003B -:1002200019000500110010003600370038002800C2 -:100230000530E000E200E30003302C002C00043025 -:100240005000510052004F002B0014001A0009000A -:1002500013000A000D000F0018001C0033002A00D4 -:100260002900040015001600170007000B001100FC -:1002700008000C0012003400E1001D001B00060005 -:10028000190005000E001000360037003800280065 -:100290001450E000E200E30003302C002C00043096 -:1002A0005000510052004F002B0034003600370040 -:1002B00013001C0009000A00060015000F002A00A8 -:1002C000290004001200080018000C0007000B00B1 -:1002D0001700110016003800E100330014000D0073 -:1002E0000E001B00050010001A0019001D00280058 -:1002F0000530E000E200E30003302C002C00043065 -:100300005000510052004F0035021E021F02200211 -:1003100021022202230224022502260227022A00A9 -:100320004C003A003B003C003D003E003F002D02E7 -:100330002E022F0230023102010040004100420033 -:100340004300440045003202640201000100010044 -:100350000100010001000100010001000100010095 -:10036000AB00AA00A900AE0035001E001F0020004F -:1003700021002200230024002500260027002A0057 -:100380004C003A003B003C003D003E003F002D0089 -:100390002E002F00300031000100400041004200DB -:1003A000430044004500320032000100010001001A -:1003B0000100010001000100010001000100010035 -:1003C000AB00AA00A900AE001E001E001E001E0009 -:1003D0001E001E001E001E001E001E001E001E002D -:1003E000000014001A000800150017001C00180077 -:1003F0000C00120013002F0000000400160007007C -:1004000009000A000B000D000E000F00330034003D -:100410000D3000000000060019000000000011006F -:1004200010000000000000000000000000000000BC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E00000000000000000000100005001000100B6 -:1007F00001000100010001000100010001004C00A6 -:10080000010001000100205021501350125000300F -:10081000013002300C3001000100275026502350D7 -:10082000245028502950010001000100010001005E -:1008300001000100010001000100010001000100B0 -:1008400001000100010001000000000000000000A4 -:100850002A2B28000000000000000000000000001B -:1008600000000029000000002C1E34202122243426 -:100870002627252E362D3738271E1F2021222324F8 -:1008800025263333362E37381F0405060708090A94 -:100890000B0C0D0E0F101112131415161718191A30 -:1008A0001B1C1D2F3130232D350405060708090AAE -:1008B0000B0C0D0E0F101112131415161718191A10 -:1008C0001B1C1D2F3130354C0000000000000000C3 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000101010101010002 -:1008F00001010101000000000000000000000000F4 -:1009000000000100010001010101010101010101DB -:1009100001010101010101010101010101010101C7 -:1009200001010100000001010000000000000000C2 -:1009300000000000000000000000000000000000B7 -:100940000000000101010100280354006800650057 -:10095000200050006C0061006E0063006B002000FE -:100960004B006500790062006F0061007200640056 -:1009700000002C034F007200740068006F006C00D0 -:1009800069006E0065006100720020004B00650088 -:10099000790062006F006100720064007300000063 -:1009A0000403090409026D00040100A0FA0904000F -:1009B000000103010100092111010001223F00078C -:1009C00005810308000A090401000103010200096E -:1009D0002111010001224D000705820308000A09C8 -:1009E0000402000103000000092111010001223668 -:1009F000000705830308000A09040300010300003F -:100A000000092111010001223900070584031000AB -:100A1000011201100100000008EDFE6060010001FC -:100A200002000105010906A101050719E029E715E2 -:100A30000025019508750181020508190129059510 -:100A400005750191029501750391010507190029AA -:100A50007715002501957875018102C0050109808F -:100A6000A101850216010026B7001A01002AB7006D -:100A7000751095018100C0050C0901A101850316BF -:100A80000100269C021A01002A9C02751095018122 -:100A900000C005010902A1010901A1000509190110 -:100AA000290515002501950575018102950175033C -:100AB00081010501093009311581257F95027508ED -:100AC000810609381581257F950175088106050C79 -:100AD0000A38021581257F950175088106C0C00579 -:100AE000010906A101050719E029E715002501956F -:100AF0000875018102950175088101050819012910 -:100B00000595057501910295017503910105071978 -:100B10000029FF150025FF950675088100C01124E6 -:100B20001FBECFEFDAE0DEBFCDBF04B603FE24C0A8 -:100B300080915E0490915F04A0916004B091610483 -:100B40008730904BA740B04BB9F410925E041092DE -:100B50005F04109260041092610414BE84B7877F12 -:100B600084BF88E10FB6F894809360001092600013 -:100B70000FBEE0E0F8E3099513E0A0E0B1E0EEEB92 -:100B8000F4E602C005900D92A030B107D9F714E049 -:100B9000A0E0B3E001C01D92AE35B107E1F70E94BD -:100BA0003F170C945D320C94000081E00895089585 -:100BB0000C94AF070C94D5050C94D7050E94272EF2 -:100BC000811105C010920203109201030DC081E251 -:100BD00090E00090030302C0880F991F0A94E2F787 -:100BE000909302038093010382E08093000380913D -:100BF0006F00826080936F00089590916F0081E094 -:100C0000911101C080E008950E94272E23E030E07A -:100C1000281B3109220F209304030895282F2F98B1 -:100C200080918000211108C0877F809380001092FE -:100C30008D0010928C001BC0886080938000233050 -:100C400019F48FEF9FEF0FC083E090E0821B9109B2 -:100C5000880F991F2FEF3FEFA90102C056954795C6 -:100C60008A95E2F7CA0190938D0080938C000C94D2 -:100C70000406CF93C82F0E94FD05409103038823EB -:100C800029F090916F009D7F90936F00C0930303B4 -:100C90008823D1F0209101033091020302C03695E0 -:100CA00027954A95E2F72F733327C90102C0880FB1 -:100CB000991FCA95E2F790930203809301038091F4 -:100CC0006F00826080936F00CF9108950E940406A8 -:100CD00084E080930303109200030895279A2F98CD -:100CE0008FEF9FEF90938700809386008AE0809338 -:100CF000800089E1809381000E94902D0C9466060B -:100D00000E946E066E9A769A0C9497071F920F9225 -:100D10000FB60F9211242F933F938F939F93EF93CE -:100D2000FF93E0910103F0910203CF0101969093AC -:100D30000203809301030090030302C0F695E79538 -:100D40000A94E2F7EF7380910003823019F4E032E5 -:100D500051F404C0813039F4EF3329F480916F00ED -:100D60008D7F80936F00F0E0E855FE4FE49121E025 -:100D700031E0E29FC001E39F900D11240090040335 -:100D800002C0969587950A94E2F790938D00809320 -:100D90008C00FF91EF919F918F913F912F910F9038 -:100DA0000FBE0F901F901895CF93DF93EC010E9418 -:100DB0002E29BE0180E090E0DF91CF910C94232595 -:100DC0000F931F93462F50E04E30510508F0AAC0F4 -:100DD000DC01FA01EA5AFF4F0C94213212968C91F1 -:100DE000882309F49FC000E010E0980140E064E02F -:100DF00070E080ED91E00E94591381E090E011C015 -:100E000012968C91882309F48DC000E010E09801BF -:100E100040E066E070E080E691E00E94591382E0D5 -:100E200090E00E94D4067EC012968C91882309F42B -:100E300079C000E010E0980140E068E070E080E9EF -:100E400091E00E94591384E090E0EBCF12968C91D0 -:100E5000882311F083E007C083E013C012968C91C1 -:100E6000882371F084E00E94A02582E00E94390668 -:100E70000E94DE0540E164E083E00E94BE0D52C0A6 -:100E800084E00E94C125F6CF12968C91882331F020 -:100E900085EE0E94B81D0E94E72D44C085EE0E9499 -:100EA000801E40C012968C918823E1F10E940E0FA3 -:100EB00000E010E0980140E066E070E080E391E03F -:100EC0000E94591384E00E94C12583E00E94C1253D -:100ED00080E10E94C12585E00E94A0250E941B2977 -:100EE000811102C00E94F7280E94332990E090935C -:100EF0005D0480935C04806880935C040E943729C1 -:100F000011C012968C91882369F000E010E09801DE -:100F100040E066E070E080E091E00E94591385E0D7 -:100F20000E94C12580E090E01F910F9108950F93DA -:100F30001F932FEF89EF90E0215080409040E1F720 -:100F400000C0000000E010E0980140E065E070E0C3 -:100F500080EF91E00E9459131F910F9108958091A5 -:100F60001003882309F45AC080910E0390910F0357 -:100F70000E946B288D3291400CF450C010921003E7 -:100F80000E9414088091080390910903099781F445 -:100F900080910A0390910B03892B51F480910C03EB -:100FA00090910D03892B21F48AE592E00E941508A7 -:100FB0008091080390910903049791F480910A03AA -:100FC00090910B03469761F480910C0390910D036F -:100FD000892B31F48BE00E94B81D8BE00E94801EAB -:100FE00080910803909109030497C1F480910A034A -:100FF00090910B03469791F480910C0390910D030F -:10100000079761F483EE0E94B81D86E10E94B81D27 -:1010100086E10E94801E83EE0C94801E089581E07C -:1010200008950C940F08089508950F931F93CF937C -:101030008C01F80124912223F9F030E0F901E85BFA -:10104000F74FC491F901E853F74F2491222359F047 -:1010500081EE0E94B81D8C2F0E94B81D8C2F0E941B -:10106000801E81EE04C08C2F0E94B81D8C2F0E9420 -:10107000801E0F5F1F4FDDCFCF911F910F910895FD -:101080000C94800680915503882309F448C0809110 -:10109000110390911203009779F40E945F289093B6 -:1010A0001203809311038091130390E0009771F471 -:1010B0008091140390E00AC00E946B2820911802CE -:1010C000309119022817390740F329C00197880F7A -:1010D000991F880F991FFC01EB5EFC4F60817181A5 -:1010E000828193810E94410FE091130384E0E89F85 -:1010F000F0011124EB5EFC4F60817181828193814C -:101100004FE050E00E94F9128091130390E00196A5 -:101110006091140370E00E940D32809313030C94CD -:10112000D805109257030C940E0F0895089581E08E -:10113000809357030C949608089508958F929F9278 -:10114000AF92BF92EF92FF920F931F93CF93DF93D3 -:10115000CDB7DEB7A3970FB6F894DEBF0FBECDBFF5 -:101160007C01FC0100811181C8010E945C26B8014C -:101170000E94A00A8C01B7010E941108882309F47B -:10118000CCC10032F0E51F0741F4F70182818823CA -:1011900009F458C00E94F013C0C10132F0E51F07E6 -:1011A00041F4F7018281882309F44CC00E94F913AD -:1011B000B4C10232F0E51F0751F4F70182818823A0 -:1011C00009F440C00E94EC138111F0CFE3CF033249 -:1011D000F0E51F0739F4F7018281882399F10E9415 -:1011E00097089BC10432F0E51F0739F4F7018281AB -:1011F000882341F10E94910890C10532F0E51F0754 -:1012000049F4F70182818823E9F080915703811125 -:10121000F1CFE5CF0632F0E51F0739F4F7018281FF -:10122000882381F00E9400140AC00732F0E51F07EE -:1012300049F4F7018281882329F00E940B140E944F -:101240009D086BC180915703811105C0F701828110 -:101250008111CFC018C1003E110579F4F7018281D8 -:10126000882309F44DC00E940E0F81E0809356033D -:10127000109255031092140350C1023E110559F407 -:10128000F70182818823E1F10E940E0F109256032C -:101290001092550342C1033E110591F4F70182817A -:1012A000882371F10E940E0F1092560381E0809303 -:1012B00055031092130310921203109211032DC1C3 -:1012C0000235110559F4F7018281882309F425C1FB -:1012D00080911802909119020A970DC001351105ED -:1012E00079F4F7018281882309F417C180911802EB -:1012F000909119020A9690931902809318020DC1D9 -:1013000040911C0283E2E7E3F2E0DE0111960190D6 -:101310000D928A95E1F7F701808121E030E02C0FF2 -:101320003D1F280F311DC90120911A0230911B0267 -:10133000FC01E20FF31F6081772767FD7095640F52 -:10134000711D882777FD8095982F0E942F2F20E010 -:1013500030E040E451E40E94942E4B015C01F7011F -:10136000218184E090E0821B9109BC01882777FDF0 -:101370008095982F0E942F2F9B01AC01C501B401CD -:101380000E942C2E9B01AC0160E070E080E090E4B4 -:101390000E94A23020E030E04CED50E40E943F304B -:1013A0004B015C01F70182818823D1F04FE050E0CE -:1013B000C501B4010E94F912809156038823A1F05F -:1013C0008091140324E0829FF0011124EB5EFC4F16 -:1013D00080829182A282B3828F5F8093140304C0C3 -:1013E000C501B4010E94410F0F3F110508F02ECF37 -:1013F00094C08091100381111FC0043130E51307A0 -:1014000009F051C00E94130881E0809310030E94EC -:101410005F2890930F0380930E031092070310929E -:1014200009031092080310920B0310920A03109202 -:101430000D0310920C0371C080910E0390910F0365 -:101440000E946B28883C910570F480910703E82F77 -:10145000F0E0EE0FFF1FE85FFC4F118300838F5F0A -:10146000809307035AC0043880E5180721F0053837 -:10147000104501F13AC0F7018281882341F01092B2 -:10148000050382E01EC0043830E5130759F580914A -:101490000503811106C086E20E94B81D86E20E9403 -:1014A000801E82E01CC00438F0E51F0741F30538B8 -:1014B0001045D9F4F7018281882331F01092060398 -:1014C00080E20E94CF1E29C080910603811106C0D0 -:1014D00087E20E94B81D87E20E94801E80E20E947F -:1014E000D61E1BC00538104529F381E08093050303 -:1014F00080930603C701A3960FB6F894DEBF0FBE14 -:10150000CDBFDF91CF911F910F91FF90EF90BF90D2 -:10151000AF909F908F900C94DA0580E0A3960FB661 -:10152000F894DEBF0FBECDBFDF91CF911F910F9119 -:10153000FF90EF90BF90AF909F908F900895089587 -:101540009CE0799FF001112490E3899FE00DF11D4B -:101550001124E60FF11DEE0FFF1FE851FE4F85919C -:1015600094910895880F991FFC01E859FF4F8591C8 -:1015700094910895880F991FFC01E851FE4F8591C1 -:10158000949108950F931F93CF93DF93EC018115EE -:1015900021E39207A0F5C11580E3D80708F0D7C072 -:1015A000C83ED105D8F4C03ED10508F007C2C83AFC -:1015B000D10578F4C53AD10508F06AC0C130D1052B -:1015C00009F463C008F4F7C1C430D10508F0F6C1CE -:1015D000F2C1CB3BD10508F466C0EDC1C11590E264 -:1015E000D90708F0AFC0C11521E0D20708F0E6C165 -:1015F000C03FD10508F4DFC18E0110651FC2C0389D -:1016000080E5D80700F5C03790E5D90708F0A3C0FA -:10161000C11520E5D20709F4ACC050F4CE019054B6 -:1016200080319F4008F0C7C1DF708E01106A06C28A -:10163000C13080E5D80709F4AEC0C43190E5D907C0 -:1016400008F4AFC0B8C1C33820E5D20709F48EC092 -:1016500050F4C13890E5D90709F482C008F083C07E -:1016600000E011EDEBC1C03181E5D80708F4A3C15A -:10167000C11597E5D90708F436C1CE0190578115F9 -:10168000904108F098C1DF7093C101E010E0D6C12D -:10169000C53AD10509F494C1C63AD10509F093C100 -:1016A00002E810E4CBC1C83AD10509F48FC1C93AA8 -:1016B000D10509F48EC1CA3AD10509F48DC1CB3ADE -:1016C000D10509F48CC1CC3AD10509F48BC1CD3ACE -:1016D000D10509F48AC1C03BD10509F489C1CE3ACC -:1016E000D10509F488C1CF3AD10509F487C1C13BBE -:1016F000D10509F486C1C23BD10509F485C1C33BBC -:10170000D10509F484C1C43BD10509F483C1C53BAB -:10171000D10509F482C1C63BD10509F481C1C73B9B -:10172000D10509F480C1C83BD10509F47FC1C93B8B -:10173000D10509F47EC1CA3BD10509F47DC100E0A1 -:1017400014E47CC1CE019F700E94BA0A78C1DD27E3 -:101750008E01106C73C1CF70DD278E01146D6EC1C8 -:1017600000E010ED6BC100E012ED68C100E013ED88 -:1017700065C10E9463210E940E0F0E9495088FEFA1 -:1017800094E32CE0815090402040E1F700C000003D -:101790000E94BA2853C18091320481608093320440 -:1017A0004DC10E941B29811102C00E94F7280E948E -:1017B000332990E090935D0480935C04C23080E50F -:1017C000D80721F480915C04816086C0C43090E524 -:1017D000D90721F480915C0482607EC0C63020E588 -:1017E000D20721F480915C04846076C0C83080E523 -:1017F000D80719F480915C0427C0CA3090E5D90756 -:1018000021F480915C04806167C0CC3020E5D20770 -:1018100021F480915C0480625FC0CE3080E5D807FF -:1018200021F480915C04806457C0C03190E5D907F1 -:1018300021F480915C0480684FC0C23120E5D2075A -:1018400029F480915C048460886046C0C33080E5E0 -:10185000D80721F480915C048E7F3EC0C53090E5AE -:10186000D90721F480915C048D7F36C0C73020E514 -:10187000D20721F480915C048B7F2EC0C93080E5B3 -:10188000D80719F480915C0426C0CB3090E5D907C5 -:1018900021F480915C048F7E1FC0CD3020E5D207FB -:1018A00021F480915C048F7D17C0CF3080E5D8078C -:1018B00021F480915C048F7B0FC0C13190E5D90782 -:1018C00021F480915C048F7707C0C331D04531F497 -:1018D00080915C048B7F877F80935C0480915C04A3 -:1018E0000E943729ABC08D2F99278F70992781309F -:1018F0009105D9F49E012370332702C0880F991FE8 -:101900002A95E2F79C688E0144E0000F111F4A956A -:10191000E1F700271370802B912B53E0CC0FDD1FD4 -:101920005A95E1F7C076DD272FC08230910531F45A -:10193000DC2FCC278E01016F106A80C083309105A7 -:1019400069F4CE018370992701E010E002C0000F16 -:10195000111F8A95E2F7C8019C680FC08430910579 -:10196000B9F4CE018370992701E010E002C0000FA6 -:10197000111F8A95E2F7C8019A6823E0CC0FDD1F9A -:101980002A95E1F7C07ED7708C010C2B1D2B56C019 -:101990008530910531F4DC2FCC278E01046F106A5D -:1019A0004DC0069709F04AC0CF71DD27DC2FCC2748 -:1019B0008E01106243C000E010E040C08E013EC0C6 -:1019C00001E810E43BC003E810E438C002EE14E480 -:1019D00035C009EE14E432C00AEE14E42FC005EB62 -:1019E00014E42CC006EB14E429C007EB14E426C071 -:1019F0000CEC14E423C00DEC14E420C003E815E45F -:101A00001DC00AE815E41AC002E915E417C004E98C -:101A100015E414C001E216E411C003E216E40EC09E -:101A200004E216E40BC005E216E408C006E216E480 -:101A300005C007E216E402C00AE216E4C801DF911D -:101A4000CF911F910F9108959CE0799FF00111248F -:101A500090E3899FE00DF11D1124E60FF11DEE0FBB -:101A6000FF1FE851FE4F85919491803E9105E0F46F -:101A7000803C910558F58133910509F46FC048F415 -:101A80008932910509F463C08A32910509F46DC069 -:101A900072C089339105E9F082389105D1F0853320 -:101AA000910509F44DC067C0833E910581F138F47A -:101AB000803E9105B9F0823E9105D9F05CC0863E2A -:101AC000910561F1873E9105A1F155C00E94B20ACE -:101AD000089520915C0420FD02C021FF4CC080EEDF -:101AE00090E049C080915C0480FFF9CF89E390E0E9 -:101AF00042C080915C0482FF0EC080915C0484FF30 -:101B000003C080E090E037C083EE90E034C0809165 -:101B10005C0482FFF2CF82EE90E02DC080915C04E5 -:101B200083FF0BC080915C0484FDEBCF87EE90E0D7 -:101B300022C080915C0483FFF5CF86EE90E01BC04D -:101B400080915C0485FF07C089E290E014C0809119 -:101B50005C0485FFF9CF85E390E00DC080915C04C3 -:101B600086FF07C08AE290E006C080915C0486FF91 -:101B7000F9CF81E390E00E94C20A0895CF92DF92EC -:101B8000EF92FF920F931F9301E010E020E030E00E -:101B90006801790104C0CC0CDD1CEE1CFF1C8A9589 -:101BA000D2F704C0000F111F221F331F6A95D2F70E -:101BB0000C291D292E293F29C0901504D090160408 -:101BC000E0901704F0901804C022D122E222F32200 -:101BD000842FC016D106E206F30641F41F910F913F -:101BE000FF90EF90DF90CF900C94A0251F910F9164 -:101BF000FF90EF90DF90CF900C94C1250C94DC0502 -:101C0000E82FF0E0E257FD4F8081E82FEF70F0E021 -:101C100082958F7021E030E0A90102C0440F551F6A -:101C20008A95E2F740A308950F931F93CF93DF9314 -:101C300085B7806885BF85B7806885BFC3E0D0E081 -:101C400001E010E0FE01E257FD4F8081E82FEF70C8 -:101C5000F0E021A182958F70A80102C0440F551FAA -:101C60008A95E2F7CA01822B81A38C2F0E94000E75 -:101C7000219740F78BE090E061E070E0FC01EE57C7 -:101C8000FD4F2081E22FEF70F0E042A122952F70EE -:101C9000DB0102C0AA0FBB1F2A95E2F79D01242B8E -:101CA00022A3019758F7DF91CF911F910F910C94C8 -:101CB0004008EF92FF920F931F93CF93DF9300E6BC -:101CC00013E0C3E0EE24E394F12CD5E08C2F0E94C6 -:101CD000000E8BE090E040E050E0FC01EE57FD4F3D -:101CE0006081E62FEF70F0E020A130E062956F7028 -:101CF00002C0359527956A95E2F720FD09C0970146 -:101D0000082E02C0220F331F0A94E2F7422B532BF6 -:101D1000019718F7F801929182918F018417950726 -:101D200021F051834083D0931D028C2F0E94000E1E -:101D3000C15060F680911D0287FD2CC081508093B8 -:101D40001D028F3F39F08FE99FE00197F1F700C046 -:101D5000000020C080915E0390915F039093670321 -:101D60008093660380915C0390915D03909365037B -:101D70008093640380915A0390915B039093630373 -:101D8000809362038091580390915903909361036B -:101D9000809360030E94420881E0DF91CF911F9100 -:101DA0000F91FF90EF900895E82FF0E0EE0FFF1FE6 -:101DB000E05AFC4F80819181089508950F931F93FD -:101DC000CF9308E613E0C0E0F801929182918F0171 -:101DD0000E94D727C80FF3E000361F07A9F78C2F02 -:101DE000CF911F910F9108950E941B29811102C06C -:101DF0000E94F7280E944529809347043E9A8091CB -:101E000071008D7F8093710082E0809390008AE161 -:101E10008093910081E080936A03089580916A0322 -:101E2000811102C00E94F40E1092BA031092B903FD -:101E3000809171008D7F80937100809190008F73ED -:101E40008093900010927C0310927B031092B30356 -:101E50001092B4031092B5031092B6031092B2031D -:101E60001092B103E1E9F3E0A1E8B3E0119211921D -:101E7000119211921D921D9283E0E13BF807B1F798 -:101E80000895CF92DF92EF92FF920F931F93CF931B -:101E9000DF9320917B03222309F484C06B017C0132 -:101EA00080916A03811102C00E94F40E01EB13E0DD -:101EB000C7E0D0E0A7019601F8019291829172915A -:101EC00062918F010E94902E811131C0FE01EE0FB0 -:101ED000FF1FEE0FFF1FEF56FC4F10821182128280 -:101EE0001382DE01AA0FBB1FAF57BC4F11961C9285 -:101EF0001E92C730D105E9F0219644815581668153 -:101F000077814083518362837383148215821682A2 -:101F1000178212968D919C91139711969C938E9394 -:101F200013961C921E92129734961296E2CF219726 -:101F300008F68091B9039091BA03019797FD05C007 -:101F40009093BA038093B90304C01092BA0310921D -:101F5000B9038091B9039091BA032091B7033091EE -:101F6000B8032817390724F01092B8031092B7036A -:101F7000892BC1F4809171008D7F809371008091D5 -:101F800090008F73809390001092B3031092B4036B -:101F90001092B5031092B6031092B2031092B103DF -:101FA00010927B03DF91CF911F910F91FF90EF90E3 -:101FB000DF90CF9008951F920F920FB60F921124C9 -:101FC0004F925F926F927F928F929F92AF92BF9249 -:101FD000CF92DF92EF92FF922F933F934F935F93B5 -:101FE0006F937F938F939F93AF93BF93CF93DF9321 -:101FF000EF93FF9380917B03882309F49BC1C091E9 -:10200000B903D091BA031C161D060CF093C1409081 -:102010006B0350906C0360906D0370906E0320E032 -:1020200030E0A901C301B2010E943B3018160CF048 -:1020300065C0C130D10509F452C08091B7039091B9 -:10204000B803BE010E940D327C019093B8038093C7 -:10205000B70380907D0390907E03A0907F03B090A3 -:10206000800320E030E040E85FE3C501B4010E9456 -:102070002C2E60937D0370937E0380937F03909357 -:102080008003F701EE0FFF1FEE0FFF1FEF56FC4F0F -:10209000A301920160817181828193810E94942EBB -:1020A00020E030E040E05EE30E943F309B01AC0165 -:1020B000C501B4010E943B3018168CF4C70101968B -:1020C000BE010E940D329093B8038093B703109223 -:1020D0007D0310927E0310927F0310928003E091A3 -:1020E000B703F091B803EE0FFF1FEE0FFF1FEF567F -:1020F000FC4F6081718182819381D0C0C090B30315 -:10210000D090B403E090B503F090B60320E030E047 -:10211000A901C701B6010E94902E2197882309F4D6 -:10212000A2C0FE01EE0FFF1FEE0FFF1FEF56FC4F88 -:1021300080809180A280B380A5019401C701B6017F -:102140000E94902E87FF31C0A501940160E070E0ED -:102150008CED93EC0E94942E20E030E040E451E4BA -:102160000E94942E20E030E040E05FE30E943F3088 -:102170009B01AC0160E070E080E090E40E94A2303E -:102180009B01AC01C501B4010E943F309B01AC0131 -:10219000C701B6010E94902E87FF07C0A7019601D4 -:1021A00060E070E08CED93E439C0A5019401C701B3 -:1021B000B6010E943B3018160CF055C0A5019401E1 -:1021C00060E070E08CED93E40E94942E20E030E01B -:1021D00040E451E40E94942E20E030E040E05FE3D0 -:1021E0000E943F309B01AC0160E070E080E090E431 -:1021F0000E94A2309B01AC01C501B4010E943F3096 -:102200009B01AC01C701B6010E943B3018165CF57A -:10221000A701960160E070E08CED93EC0E94942E93 -:1022200020E030E040E451E40E94942E20E030E0D1 -:1022300040E05FE30E943F309B01AC0160E070E052 -:1022400080E090E40E94A2309B01AC01C701B6017E -:102250000E943F306093B3037093B4038093B5033F -:102260009093B60313C0FE01EE0FFF1FEE0FFF1F8A -:10227000EF56FC4F80819181A281B3818093B3039B -:102280009093B403A093B503B093B6036091B303E6 -:102290007091B4038091B5039091B60320916803C7 -:1022A000309169032F3F4FEF340731F02F5F3F4FDD -:1022B00030936903209368030E9416146B017C011C -:1022C00020E034E244EF51E40E94902E87FF08C0E2 -:1022D00086EFC82E88E2D82E84EFE82E81E4F82E0F -:1022E00020E030E040E051E4C701B6010E943F30F9 -:1022F0009B01AC0160E074E284E79BE40E94942EB1 -:102300006B017C010E94012F7093970060939600EF -:1023100020911E0230911F02409120025091210213 -:10232000C701B6010E943F300E94012F70939900AF -:102330006093980080917C03882309F433C1C09096 -:102340007703D0907803E0907903F0907A0320E04F -:1023500030E0A901C701B6010E943B301816D4F540 -:1023600080916803909169038F3F2FEF920729F0C6 -:1023700001969093690380936803C701B6010E9498 -:10238000161420E030E040E051E40E943F309B0111 -:10239000AC0160E074E284E79BE40E94942E6B0140 -:1023A0007C010E94012F709397006093960020910A -:1023B0001E0230911F024091200250912102C7015C -:1023C000B6010E943F300E94012F709399006093E4 -:1023D000980008C0109297001092960010929900F1 -:1023E0001092980060917103709172036F5F7F4F3C -:1023F000709372036093710320919600309197005F -:1024000080E090E0232BF1F0C0919600D0919700EE -:102410000E942D2F6B017C01BE0180E090E00E94A4 -:102420002D2F9B01AC016091730370917403809117 -:102430007503909176030E94942E20E03FEF4FE7C2 -:1024400057E410C00E942D2F6B017C0120E030EE7C -:102450004FEF54E46091730370917403809175039E -:10246000909176030E943F309B01AC01C701B601F9 -:102470000E943B3087FD96C080916F038F5F8093F1 -:102480006F0390E020914304309144048217930736 -:10249000A0F080914E04882319F010926F030DC0B4 -:1024A000809171008D7F80937100809190008F7377 -:1024B0008093900010927C037DC080917003C09146 -:1024C0006F03811128C0C0904804D0904904E09067 -:1024D0004A04F0904B0420E030E0A901C701B601A6 -:1024E0000E943B301816BCF481E080937003109278 -:1024F0007703109278031092790310927A03C092B6 -:102500007303D0927403E0927503F0927603C15086 -:10251000C0936F0343C0109270031092690310922E -:102520006803E0914504F091460448E0C49FE00D43 -:10253000F11D112480819181A281B3818093770361 -:1025400090937803A0937903B0937A0320E030E06E -:1025500040E85EE364817581868197810E943F3007 -:102560006B017C0180912202682F70E080E090E096 -:102570000E942D2F20E030E048EC52E40E94942E7F -:102580009B01AC01C701B6010E943F306093730309 -:102590007093740380937503909376031092720383 -:1025A000109271038091470480FD04C010927C0357 -:1025B00010927B03FF91EF91DF91CF91BF91AF918B -:1025C0009F918F917F916F915F914F913F912F914B -:1025D000FF90EF90DF90CF90BF90AF909F908F9043 -:1025E0007F906F905F904F900F900FBE0F901F9055 -:1025F0001895CF92DF92EF92FF92CF93DF936B010A -:102600007C01EA0180916A03811102C00E94F40EEC -:102610008091470480FF46C08091B9039091BA032E -:1026200008970CF03FC0809171008D7F80937100FE -:1026300080917C0381110E940E0F81E080937B03C7 -:10264000109269031092680320E030E0A901C701ED -:10265000B6010E943B301816DCF48091B9039091CA -:10266000BA03FC01EE0FFF1FEE0FFF1FEF56FC4FEA -:10267000C082D182E282F382FC01EE0FFF1FEF578E -:10268000FC4FD183C08301969093BA038093B90322 -:1026900080917100826080937100809190008068C9 -:1026A00080939000DF91CF91FF90EF90DF90CF90DB -:1026B00008958F929F92AF92BF92CF92DF92EF9246 -:1026C000FF920F931F93CF93DF93EC017B01D42EE6 -:1026D0004801590180916A03811102C00E94F40EE1 -:1026E0008091470480FF6BC0809171008D7F809343 -:1026F000710080917B0381110E940E0F81E0809315 -:102700007C03D0934604C0934504F0924404E092C5 -:102710004304D0924E048092480490924904A092BF -:102720004A04B0924B0410927D0310927E031092E3 -:102730007F031092800310926F0388819981AA8190 -:10274000BB818093770390937803A0937903B09330 -:102750007A0320E030E040E85EE36C817D818E8189 -:102760009F810E943F306B017C0180912202682F83 -:1027700070E080E090E00E942D2F20E030E048ECF7 -:1027800052E40E94942E9B01AC01C701B6010E9445 -:102790003F30609373037093740380937503909339 -:1027A000760310927203109271038091710082601F -:1027B0008093710080919000806880939000DF91F9 -:1027C000CF911F910F91FF90EF90DF90CF90BF902E -:1027D000AF909F908F9008958091470481700895E5 -:1027E000809147048160809347040E9449290C949A -:1027F0009C08809147048E7F809347040C9449295C -:102800008091BB0390E0019666E070E00E940D327B -:102810008093BB0308958091BB0390E0019766E02D -:1028200070E00E940D328093BB0308958F929F92B7 -:10283000AF92BF92CF92DF92EF92FF920F931F93CE -:10284000CF93DF936B017C01C0916803D091690342 -:10285000BE0180E090E00E942D2F4B015C01A7019A -:10286000960160E070E08CE594E40E94942E9B0158 -:10287000AC01C501B4010E943F300E94012F20919C -:10288000BB03233009F473C028F4222351F0213014 -:10289000E9F02CC1243009F4A0C0253009F4E0C0CF -:1028A00025C180E090E0A0E0BFE380931E029093FA -:1028B0001F02A0932002B093210210926B0310928A -:1028C0006C0310926D0310926E0310C110926B0393 -:1028D00010926C0310926D0310926E0364317105B7 -:1028E00040F46A30710560F520E030E040E85EE3D6 -:1028F0002BC0693C710508F0AAC080E090E00E94FE -:102900002D2F20E030E040EA51E40E942B2E20E001 -:1029100030E044E353E40E94942E9B01AC010E94FA -:102920003F3020E030E040E05EE30E943F309B011A -:10293000AC0160E070E080E09EE30E942B2E44C07A -:1029400020E030E040E05FE3C701B6010E943F3085 -:102950006B017C0180E090E0A0E0BEE380931E026A -:1029600090931F02A0932002B0932102BFC0109247 -:102970006B0310926C0310926D0310926E034AE089 -:10298000469F9001479F300D1124C90168EB7BE001 -:102990000E94F931BC016C5D754077FF03C07195F1 -:1029A00061957109882777FD8095982F0E942F2FB8 -:1029B0002EE333EC4EE259E30E943F3020E030E05A -:1029C00040EC5EE30E942C2E60931E0270931F0267 -:1029D000809320029093210289C010926B03109281 -:1029E0006C0310926D0310926E03CE0183709927D1 -:1029F000892BE1F0BE016170772780E090E00E94B2 -:102A00002D2F20E030E040E05EE30E943F3020E0E8 -:102A100030E040E45FE30E942C2E60931E0270932E -:102A20001F0280932002909321020CC080E090E06E -:102A3000A0E0BFE380931E0290931F02A0932002A8 -:102A4000B0932102C770DD27CD2B09F04FC0109243 -:102A50001E0210921F02109220021092210246C004 -:102A600010926B0310926C0310926D0310926E0320 -:102A700000E010E020E03FE300931E0210931F02ED -:102A800020932002309321026739710578F180E0AC -:102A900090E00E942D2F20E030E047E153E40E94B7 -:102AA0002B2E20E030E04AE754E40E94942E20E0F0 -:102AB00030E048E452E40E943F3020E030E040EA59 -:102AC00051E40E94712F0E94FC2E660F771F660F43 -:102AD000771FFB01EE56FD4F2081318142815381EA -:102AE000C701B6010E943F306B017C01C701B601EE -:102AF000DF91CF911F910F91FF90EF90DF90CF90DA -:102B0000BF90AF909F908F9008958091CC030895CF -:102B1000CF93DF9300D01F92CDB7DEB79C01809199 -:102B20005304843019F593E099833B832A8390936F -:102B3000E9008FEF9091E800815095FD06C095ED7A -:102B40009A95F1F700008111F5CF8091E80085FF9B -:102B50000DC040E050E063E070E0CE0101960E94BD -:102B6000E9178091E8008E778093E8000F900F902E -:102B70000F90DF91CF910895CF93DF9300D01F92F4 -:102B8000CDB7DEB720915304243021F522E029830C -:102B90009B838A8383E08093E9008FEF9091E80024 -:102BA000815095FD06C095ED9A95F1F700008111D1 -:102BB000F5CF8091E80085FF0DC040E050E063E074 -:102BC00070E0CE0101960E94E9178091E8008E77AF -:102BD0008093E8000F900F900F90DF91CF910895B0 -:102BE000209153042430F1F422E02093E9002FEFE8 -:102BF0003091E800215035FD06C035ED3A95F1F7EA -:102C000000002111F5CF2091E80025FF0BC040E026 -:102C100050E065E070E00E94E9178091E8008E774F -:102C20008093E8000895CF93DF93EC0190915304D3 -:102C3000943009F046C080912D028823D9F080910C -:102C40002E028823B9F09093E9008FEF9091E8006D -:102C5000815095FD06C095E19A95F1F7000081112C -:102C6000F5CF8091E80085FF2CC040E050E060E1A6 -:102C700070E017C081E08093E9008FEF9091E80049 -:102C8000815095FD06C095ED9A95F1F700008111F0 -:102C9000F5CF8091E80085FF14C040E050E068E087 -:102CA00070E0CE010E94E9178091E8008E77809352 -:102CB000E80080E1FE01ACEBB3E001900D928A9553 -:102CC000E1F7DF91CF91089580915204811109C0FD -:102CD0000E947E190E94DB198091E200846080933B -:102CE000E2000895109252040895089508950C94F6 -:102CF000222842E061EC81E00E94F81842E061EC99 -:102D000082E00E94F81842E061EC83E00E94F8182B -:102D100042E161EC84E00C94F81880915504833012 -:102D200009F455C030F4813071F0823009F48EC05E -:102D300008958A3009F47AC08B3009F460C0893074 -:102D400009F09CC020C080915404813A09F096C0DB -:102D50008091E800877F8093E800809158049091EB -:102D60005904892B21F460E18CEB93E003C060E00F -:102D700080E090E070E00E9434188091E8008B774A -:102D80008093E800089580915404813209F076C060 -:102D90008091580490915904009719F0039709F015 -:102DA0006DC08091E800877F8093E8008091E80003 -:102DB00082FD05C0809153048111F8CF5FC08091DE -:102DC000F1008093CC038091E8008B7753C0809111 -:102DD0005404813A09F052C08091580490915904EA -:102DE000892B09F04BC08091E800877F8093E80031 -:102DF0008091E80080FFFCCF80912D0236C0809149 -:102E000054048132D9F58091580490915904892B4A -:102E1000A9F58091E800877F8093E8000E942D1932 -:102E20008091560480932D020C9463218091540468 -:102E3000813221F58091E800877F8093E8000E942D -:102E40002D19809157048093CD03089580915404E7 -:102E5000813AA1F48091E800877F8093E800809117 -:102E6000E80080FFFCCF8091CD038093F10080913A -:102E7000E8008E778093E8000C942D19089584B7AC -:102E8000877F84BF88E10FB6F8948093600010922A -:102E900060000FBE90E080E80FB6F8948093610068 -:102EA000909361000FBE0E94D01C0E947E190E9468 -:102EB000DB198091E20084608093E20078940E94A4 -:102EC000611C0E94D21C83E292E00E947C1C8091D3 -:102ED0005304853069F40E94E327809151048823CC -:102EE000B1F30E941128882391F30E94D317EFCFEA -:102EF0000E94DA1CECCF292F332723303105C9F08B -:102F000064F42130310581F02230310509F043C0ED -:102F10008DE690E024EA39E042C021323105F1F03B -:102F20002232310541F137C082E190E021E13AE0FF -:102F300036C099278130910541F08230910541F0EA -:102F4000892B49F5E0EAF9E005C0E2E7F9E002C0C3 -:102F5000E8E4F9E0849190E09F0121C06430D8F466 -:102F6000E62FF0E0EE0FFF1FE251FD4F208131818F -:102F700089E090E014C0643070F470E0FB01EE0F63 -:102F8000FF1FEA51FD4F20813181FB01EE51FD4FC2 -:102F9000808190E004C080E090E020E030E0FA0121 -:102FA00031832083089580E189BD82E189BD09B420 -:102FB00000FEFDCF8091D8008F7D8093D800809156 -:102FC000E00082608093E0008091E00081FDFCCF12 -:102FD0000895CF92DF92EF92FF920F931F93CF93BA -:102FE000DF93EC018B016A010E944C19811133C0FF -:102FF000C114D10439F0F60180819181081B190BAD -:10300000C80FD91FE12CF12C0115110519F1809180 -:10301000E80085FD16C08091E8008E778093E80077 -:10302000C114D10449F0F60180819181E80EF91EA6 -:10303000F182E08285E00FC00E944C19882321F3C1 -:103040000AC089918093F10001501109FFEFEF1A36 -:10305000FF0ADACF80E0DF91CF911F910F91FF90AF -:10306000EF90DF90CF90089520915A0430915B0447 -:103070002617370748F06115710539F42091E800EB -:103080002E772093E80001C0B90140E06115710579 -:10309000A9F120915304222309F443C0253009F4F7 -:1030A00042C02091E80023FD40C02091E80022FDAD -:1030B00032C02091E80020FFE9CF4091F300209139 -:1030C000F20030E0342BFC01CF016115710559F09D -:1030D0002830310540F481918093F10061507109ED -:1030E0002F5F3F4FF1CF41E02830310509F040E03C -:1030F0002091E8002E772093E800C8CF4111C9CF76 -:103100000AC080915304882361F0853061F080917A -:10311000E80083FD0AC08091E80082FFF2CF80E0E2 -:10312000089582E0089583E0089581E00895209154 -:103130005A0430915B042617370748F06115710572 -:1031400039F42091E8002E772093E80001C0B901FE -:10315000FC0120E06115710591F1809153048823F1 -:1031600009F440C0853009F43FC08091E80083FD38 -:103170003DC08091E80082FD2FC08091E80080FF73 -:10318000E9CF2091F3008091F20090E0922B61153D -:10319000710559F08830910540F424912093F10095 -:1031A0003196615071090196F2CF21E0089709F03C -:1031B00020E08091E8008E778093E800CBCF21114A -:1031C000CCCF0AC080915304882361F0853061F030 -:1031D0008091E80083FD0AC08091E80082FFF2CF71 -:1031E00080E0089582E0089583E0089581E00895E5 -:1031F000982F973058F59093E900981739F070910F -:10320000EC002091ED005091F00003C0242F762FA8 -:1032100050E021FF19C03091EB003E7F3093EB006E -:103220003091ED003D7F3093ED003091EB00316047 -:103230003093EB007093EC002093ED005093F0007E -:103240002091EE0027FF07C09F5FD3CF8F70809340 -:10325000E90081E0089580E008958091540487FF9B -:1032600011C08091E80082FD05C080915304811156 -:10327000F8CF11C08091E8008B770BC08091530488 -:10328000882349F08091E80080FFF8CF8091E80022 -:103290008E778093E80008952091E4003091E50056 -:1032A00095E64091EC00842F817040FF22C0809110 -:1032B000E80080FD1CC080915304882391F0853084 -:1032C00091F08091EB0085FD10C04091E400509199 -:1032D000E5004217530729F39A01915011F784E052 -:1032E000089582E0089583E0089581E0089580E0E4 -:1032F00008954091E80042FFDECF08950E94EC1946 -:103300000E94F419E0EEF0E0808181608083E8EDB6 -:10331000F0E080818F77808319BCA7EDB0E08C91BD -:103320008E7F8C9380818F7E8083109252040895CB -:103330000F931F93CF93DF930E94EC190E94F4190F -:10334000C8EDD0E088818F77888388818068888302 -:1033500088818F7D888319BC1092530410924F048A -:10336000109251041092500400EE10E0F801808198 -:103370008B7F808388818160888342E060E080E089 -:103380000E94F818E1EEF0E080818E7F8083E2EE0B -:10339000F0E0808181608083808188608083F80193 -:1033A00080818E7F8083888180618883DF91CF9147 -:1033B0001F910F910895E8EDF0E080818F7E80836A -:1033C000E7EDF0E080818160808384E082BF81E06E -:1033D000809352040C949819E8EDF0E080818E7F80 -:1033E00080831092E20008951092DA001092E100BA -:1033F00008951F920F920FB60F9211242F933F93AF -:103400004F935F936F937F938F939F93AF93BF93EC -:10341000EF93FF938091E10082FF0BC08091E20067 -:1034200082FF07C08091E1008B7F8093E1000E94C2 -:10343000601C8091DA0080FF1FC08091D80080FF5F -:103440001BC08091DA008E7F8093DA008091D900D2 -:1034500080FF0DC080E189BD82E189BD09B400FE15 -:10346000FDCF81E0809353040E94641605C019BC0F -:10347000109253040E9472168091E10080FF19C0DF -:103480008091E20080FF15C08091E2008E7F8093E2 -:10349000E2008091E20080618093E2008091D80098 -:1034A00080628093D80019BC85E0809353040E9409 -:1034B00076168091E10084FF30C08091E20084FFA5 -:1034C0002CC080E189BD82E189BD09B400FEFDCF39 -:1034D0008091D8008F7D8093D8008091E1008F7E0D -:1034E0008093E1008091E2008F7E8093E2008091E2 -:1034F000E20081608093E20080914F04882311F004 -:1035000084E007C08091E30087FD02C081E001C034 -:1035100083E0809353040E9477168091E10083FF3B -:1035200029C08091E20083FF25C08091E100877F60 -:103530008093E10082E08093530410924F048091C5 -:10354000E1008E7F8093E1008091E2008E7F809386 -:10355000E2008091E20080618093E20042E060E05E -:1035600080E00E94F8188091F00088608093F0005D -:103570000E947516FF91EF91BF91AF919F918F912E -:103580007F916F915F914F913F912F910F900FBE5F -:103590000F901F9018951F920F920FB60F92112443 -:1035A0002F933F934F935F936F937F938F939F934B -:1035B000AF93BF93CF93DF93EF93FF93C091E90055 -:1035C000CF708091EC00D82FD17080FDD0E81092A0 -:1035D000E9008091F000877F8093F00078940E944A -:1035E0000F1B1092E9008091F00088608093F0003A -:1035F000CD2BCF70C093E900FF91EF91DF91CF9178 -:10360000BF91AF919F918F917F916F915F914F91FA -:103610003F912F910F900FBE0F901F9018951F9301 -:10362000CF93DF93CDB7DEB7AA970FB6F894DEBF7E -:103630000FBECDBFE4E5F4E088E08E0F9091F1007D -:1036400091938E13FBCF0E948D168091E80083FF2B -:103650001FC18091540490915504492F50E04A3085 -:10366000510508F015C1FA01EC59FF4F0C942132B5 -:10367000803881F0823809F00BC1809158048F7036 -:103680008093E9008091EB0085FB882780F91092F8 -:10369000E90006C08091500490915104911182601C -:1036A0009091E800977F9093E8008093F10010924A -:1036B000F100C8C0282F2D7F09F0EAC0882319F037 -:1036C000823061F0E5C080915604813009F0E0C09D -:1036D000933009F080E0809351042BC08091560410 -:1036E000811127C0809158048F7009F4D1C0809354 -:1036F000E9002091EB0020FF1CC0933021F4809161 -:10370000EB00806214C09091EB0090619093EB000D -:1037100021E030E0A90102C0440F551F8A95E2F76D -:103720004093EA001092EA008091EB008860809359 -:10373000EB001092E9008091E800877F86C081113C -:10374000A7C0109156041F778091E3008078812BE9 -:103750008093E3008091E800877F8093E8000E94D7 -:103760002D198091E80080FFFCCF8091E3008068F4 -:103770008093E300111102C082E001C083E08093D6 -:10378000530486C08058823008F082C0809156046D -:10379000909157048C3D53E0950779F583E08A8337 -:1037A0008AE289834FB7F894DE01139620E03EE069 -:1037B00051E2E32FF0E050935700E49120FF03C063 -:1037C000E295EF703F5FEF708E2F90E0EA3010F0DF -:1037D000C79601C0C0968D939D932F5F243149F702 -:1037E0004FBF8091E800877F8093E8006AE270E035 -:1037F000CE0101960E94341814C0AE014F5F5F4F96 -:10380000609158040E947B17BC01009709F440C0E6 -:103810009091E800977F9093E80089819A810E94B7 -:1038200097188091E8008B778093E80031C080384A -:1038300079F58091E800877F8093E80080914F04BC -:103840008093F1008091E8008E778093E8000E94D9 -:103850002D191EC081111CC0909156049230C0F4E5 -:103860008091E800877F8093E80090934F040E9446 -:103870002D1980914F04811106C08091E30087FDCE -:1038800002C081E001C084E0809353040E94791655 -:103890008091E80083FF0AC08091E800877F8093D1 -:1038A000E8008091EB0080628093EB00AA960FB64F -:1038B000F894DEBF0FBECDBFDF91CF911F91089569 -:1038C0000895CF93809153048823A1F0C091E9001B -:1038D000CF709091EC00892F817090FD80E8C82B0B -:1038E0001092E9008091E80083FD0E940F1BCF70C9 -:1038F000C093E900CF9108959093D3038093D203AE -:103900000895E091D203F091D303309721F0019014 -:10391000F081E02D099480E00895E091D203F091C8 -:10392000D303309721F00280F381E02D09940895AC -:10393000E091D203F091D303309721F00480F58118 -:10394000E02D099408952091D0033091D10382177E -:10395000930771F09093D1038093D003E091D20349 -:10396000F091D303309721F00680F781E02D099480 -:1039700008952091CE033091CF038217930771F001 -:103980009093CF038093CE03E091D203F091D303C1 -:10399000309721F00084F185E02D09940895089571 -:1039A0000C94CF1C0E9456280E94140E0E94DC2802 -:1039B0000C94902D5F926F927F928F929F92AF9214 -:1039C000BF92CF92DF92EF92FF920F931F93CF930C -:1039D000DF9300D000D01F92CDB7DEB70E94590E02 -:1039E0009DEDC92E93E0D92E03E010E0AA24A39404 -:1039F000B12C502E802F0E94D40E4C01F6017290F3 -:103A000062906F016826792661147104A1F4015057 -:103A1000110978F78FEF89838A831B820E945F28C0 -:103A20008160782F9D838C8349815A816B818D8140 -:103A30000E948A1D38C08091320481FD0E94DD0EF3 -:103A40002BE030E07501022E02C0EE0CFF1C0A9440 -:103A5000E2F7C70186219721892B09F129835A8230 -:103A60008E209F2091E0892809F490E09B830E949A -:103A70005F288160782F9D838C8349815A816B8177 -:103A80008D810E948A1D000F111FF801EB52FC4F1F -:103A900080819181E826F926F182E08204C02150DC -:103AA000310980F6B4CF0E94C82A1091D4030E9435 -:103AB000811C1817D1F00E94811C8093D4030F90B1 -:103AC0000F900F900F900F90DF91CF911F910F915A -:103AD000FF90EF90DF90CF90BF90AF909F908F902E -:103AE0007F906F905F900C94FE0D0F900F900F9051 -:103AF0000F900F90DF91CF911F910F91FF90EF905A -:103B0000DF90CF90BF90AF909F908F907F906F90FD -:103B10005F900895CF93DF93CDB7DEB72B970FB6A5 -:103B2000F894DEBF0FBECDBF4F83588769877A8771 -:103B30008B87DE01119686E0FD0111928A95E9F7E7 -:103B400085E0FE01379601900D928A95E1F7498153 -:103B50005A816B817C818D819E810E9401242B96EC -:103B60000FB6F894DEBF0FBECDBFDF91CF910895A1 -:103B7000CF93882309F4C2C0C82F823859F40E9419 -:103B8000811C81FDBBC089E30E94DB260E94A8271F -:103B900089E30CC0833879F40E94811C80FDAEC09B -:103BA00083E50E94DB260E94A82783E50E941D274B -:103BB000CF910C94A827843859F40E94811C82FD6F -:103BC0009DC087E40E94DB260E94A82787E4EECFF1 -:103BD0008CEF8C0F813A48F48C2F0E94F82C8111C5 -:103BE0008DC08C2F0E94DB26E3CF80E28C0F8830C3 -:103BF00048F4C77081E001C0880FCA95EAF70E94B7 -:103C00006127D6CF8BE58C0F833078F4C53A29F045 -:103C1000C63A31F083E890E005C081E890E002C048 -:103C200082E890E0CF910C94A31C88E58C0F83313F -:103C300008F064C0C83A39F1C93A41F1CA3A49F1C9 -:103C4000CB3A51F1CC3A59F1CD3A61F1C03B69F12F -:103C5000CE3A71F1CF3A79F1C13B81F1C23B89F1A2 -:103C6000C33B91F1C43B99F1C53BA1F1C63BA9F11E -:103C7000C73BB1F1C83BB9F1C93BC1F1CA3BC9F17E -:103C800080E090E038C082EE90E035C089EE90E0B0 -:103C900032C08AEE90E02FC085EB90E02CC086EB1E -:103CA00090E029C087EB90E026C08CEC90E023C028 -:103CB0008DEC90E020C083E891E01DC08AE891E09F -:103CC0001AC082E991E017C084E991E014C081E252 -:103CD00092E011C083E292E00EC084E292E00BC059 -:103CE00085E292E008C086E292E005C087E292E0B9 -:103CF00002C08AE292E0CF910C94B91CCF91089552 -:103D0000882309F44BC0823859F40E94811C81FF3A -:103D100045C089E30E94DB260E94A82789E30CC0E6 -:103D2000833871F40E94811C80FF38C083E50E94B3 -:103D3000DB260E94A82783E50E941D270C94A82754 -:103D4000843859F40E94811C82FF28C087E40E94B5 -:103D5000DB260E94A82787E4EFCF9CEF980F913ACB -:103D600058F390E2980F983050F4877091E001C0BA -:103D7000990F8A95EAF7892F0E946727DFCF9BE585 -:103D8000980F933020F480E090E00C94A31C885AA4 -:103D9000833120F480E090E00C94B91C08958823CE -:103DA00021F00E9461270C94A8270895882321F010 -:103DB0000E9467270C94A82708957F928F929F9264 -:103DC000AF92BF92CF92DF92EF92FF920F931F9329 -:103DD000CF93DF931F92CDB7DEB77C01C62E772E2F -:103DE000FC01058102950F70128111110E947E273E -:103DF0000E94D426882379F0112369F080E28C0D8B -:103E0000883048F082E00E94BD260E94D42691E0CE -:103E1000D82ED92601C0D12CE72DE295EF70F0E025 -:103E2000E259FF4F0C942132872D807F072D0F70B0 -:103E3000882311F00295007F112389F0002309F4F3 -:103E400099C180E28C0D883020F4802F0E94612778 -:103E500003C0802F0E9471270E94A8278BC18C2D40 -:103E60000E94801E002309F4C3C180E28C0D8830BB -:103E700020F4802F0E94672703C0802F0E9477279D -:103E80000E94A827B5C1872D807F972D9F70803213 -:103E900011F4892F03C0892F8295807FCC2021F0D7 -:103EA000F1E0CF16A1F01DC0112339F0002319F164 -:103EB000013009F50E9491279BC1002319F00130C0 -:103EC00009F496C189830E949427898110C1112326 -:103ED00021F0063008F08CC10EC0053008F088C112 -:103EE00006C1112359F0002331F0F701958190FFAD -:103EF00041C19F7095830E94CF1E7AC1002309F4AF -:103F0000F6C03EC1872D86958695837090E0009718 -:103F100019F0019761F06CC1112321F08C2D972DC0 -:103F2000937002C080E090E00E94A31C61C1112345 -:103F300021F08C2D972D937002C080E090E00E94BC -:103F4000B91C56C18C2D112319F00E94D02902C032 -:103F50000E94382A0E94BD2A4BC1872D837009F028 -:103F600052C0111145C18C2D829586958770880F9E -:103F7000880F9C2D9F70892E912CA12CB12C082E7E -:103F800004C0880C991CAA1CBB1C0A94D2F7C4FE5E -:103F900014C00FE010E020E030E0B901A80104C037 -:103FA000440F551F661F771F8A95D2F7CB01BA01C0 -:103FB000609570958095909503C060E070E0CB01AE -:103FC000272D26952695237030E02230310569F0A3 -:103FD0002330310589F0682979298A299B292130E4 -:103FE000310571F00E94492503C1682979298A2980 -:103FF0009B290E946525FCC00E944925C501B4018A -:104000000E942D25F5C0112319F0872D817001C064 -:104010008695882309F4ECC08C2D8295869587704F -:10402000880F880F9C2D9F70892E912CA12CB12C6C -:10403000082E04C0880C991CAA1CBB1C0A94D2F739 -:10404000C4FE14C00FE010E020E030E0B901A80188 -:1040500004C0440F551F661F771F8A95D2F7CB0106 -:10406000BA01609570958095909503C060E070E00E -:10407000CB01272D269526952370422F50E0423004 -:10408000510569F04330510589F0682979298A2959 -:104090009B294130510571F00E942326A9C068294F -:1040A00079298A299B290E943F26A2C00E942326A3 -:1040B000C501B4010E9407269BC08C2D90E0FC0135 -:1040C000E05EF109E531F10508F050C0E258FF4F1C -:1040D0000C9421320C2D0F70872D8F71112321F03C -:1040E0000E94A025802F07CF0E94C125802F0E940B -:1040F000D61E7EC0112341F0053008F079C0872D0F -:104100008F710E94E62574C0063008F071C0F7CFA9 -:10411000112339F0872D8F710E94A02569C01123CA -:10412000C9F3872D8F710E94C12562C0112329F028 -:10413000872D8F710E948B255BC00E94812558C0FE -:10414000112351F0172D1F71812F0E94A02563E0CC -:10415000812F0E94B4264CC081E00E94BD2602300F -:1041600008F446C082E00E94BD2642C0112331F00F -:10417000002381F28C2D0E94B81D3AC0002389F2E1 -:104180008C2D0E94801E34C0472D4F706C2DC701AE -:104190000E94E0060E94A5242BC0111129C0472DC2 -:1041A0004F7050E042305105B9F04CF441155105C3 -:1041B00081F041305105E1F40E94B82D19C043301F -:1041C000510569F04430510599F48C2D0E940A2E56 -:1041D0000FC00E94A12D0CC00E94D42D09C00E94C6 -:1041E000E72D06C0472D4F706C2DC7010E949F0A16 -:1041F000DD20F9F00E94B02680FD1BC0F70112827D -:104200000E94AA260E94A025C7010E9428210E9480 -:10421000AA260F90DF91CF911F910F91FF90EF9001 -:10422000DF90CF90BF90AF909F908F907F900C9435 -:10423000C1250F90DF91CF911F910F91FF90EF90CB -:10424000DF90CF90BF90AF909F908F907F90089518 -:104250000F931F93CF93DF93EC01888199812B817A -:104260003C81232BB9F09F3F11F48F3F99F0CE0191 -:104270000E949E08882371F0688179818A810E945A -:10428000A6268C010E945B260E942225B801CE0141 -:104290000E94DD1EDF91CF911F910F9108950E9422 -:1042A0007E270E948E270E9453270E94A8270E94E3 -:1042B0006E2B0E94BD2A80E090E00E94A31C80E04B -:1042C00090E00C94B91C0E946E270C944F210E9420 -:1042D0009B26292F22952F7030E02C3031054CF48D -:1042E0002A3031056CF42250310922303105A8F40E -:1042F00007C02C30310569F02F30310551F00DC069 -:10430000803F69F018F4803E40F409C0843F29F4EE -:1043100006C093FB882780F9089580E0089581E026 -:104320000895CF93DF9300D000D01F92CDB7DEB7B2 -:104330000F900F900F900F900F90DF91CF910895F5 -:10434000CF93DF9300D000D000D0CDB7DEB7269654 -:104350000FB6F894DEBF0FBECDBFDF91CF910895A9 -:104360001F93CF93DF93C091DD0316E08091DE03AE -:10437000C81799F0D0E01C9FF0011D9FF00D11248B -:10438000E152FC4F4081518162817381848195812A -:104390000E94A0212196C770E9CFDF91CF911F9194 -:1043A000089540910F045091100460911104709190 -:1043B000120480911304909114040C94A021809114 -:1043C000140482958F7009F054C0809111048823E1 -:1043D00009F44FC08091DD03A091DE0360910F04CA -:1043E000709110044091120450911304B6E08A17A2 -:1043F00009F43FC090E041155105C1F17F3F11F430 -:104400006F3FA1F1B89FF001B99FF00D1124E15267 -:10441000FC4F218172132AC02081621327C02281A0 -:10442000211124C0238134812417350710F4215031 -:104430003109241B350B283C3105C0F420911404AC -:104440002F7020612093140426E0289FF001299FFB -:10445000F00D1124EC51FC4F80818F7080618083BE -:104460008FE094E00E9428210C94B021019687707F -:10447000BECF0895CF92DF92EF92FF920F931F93DA -:10448000CF93DF93CDB7DEB762970FB6F894DEBF58 -:104490000FBECDBF8C0185E0F801DE011D960190B5 -:1044A0000D928A95E1F7D8014C9111965C91119784 -:1044B00012966C9112971396CD90DC9014973091D0 -:1044C0000F047091100480911204909113040097CE -:1044D00009F46BC17F3F19F43F3F09F466C1E090D6 -:1044E0001104EE2009F4C0C020911404C816D906A6 -:1044F00028F0F601E81BF90BCF0104C080959095D8 -:104500008C0D9D1DFF24F394883C910578F0F12CCF -:10451000207F09F0C6C07C2DD98AC88A89890E946B -:1045200091218FE094E00E942821B1C0822F807FEA -:1045300009F046C0751314C0341312C0611110C0C5 -:104540002F702061209314040E94D1218FE094E009 -:104550000E94282180911404D80115968C932EC0B6 -:10456000CD2819F15F3F11F44F3FF9F0F62E61119C -:104570001CC08091DD032091DE0336E0821709F430 -:104580005AC090E0389FF001399FF00D1124E1529C -:10459000FC4F7181571306C07081471303C07281AD -:1045A000711103C001968770E9CFF62E662309F4D6 -:1045B00018C180911404816080931404F12C11C1FE -:1045C000751308C0341306C0611104C0809114042F -:1045D000D801C3C04D875E878D859E856A8B0E94FA -:1045E00067216A898823E1F16623D1F120911404BF -:1045F000822F82958F7090E0029774F080910F0463 -:104600009091100498878F831986DB86CA862C8741 -:10461000CE0107960E94282186E0F801AFE0B4E0C1 -:1046200001900D928A95E1F70E94DF210E94D1212D -:10463000FF24F394D6C04D875E878D859E850E94AA -:104640009B26292F22952F7030E0223031050CF067 -:10465000BCC09F7009F0B6C0805E883008F4C1C04D -:10466000C8010E942821E4CFC816D90608F453C017 -:10467000F601E81BF90BCF01883C910508F450C006 -:10468000F12C7C2DD98AC88A89890E949121EFE07A -:10469000F4E086E0DF011D928A95E9F70E94D121BE -:1046A000A0C0751314C0341312C0611110C08091E2 -:1046B0001404F8018583C8010E94282186E0EFE0F8 -:1046C000F4E0DF011D928A95E9F7FE2C8AC04D8740 -:1046D0005E878D859E856A8B0E9467216A89882303 -:1046E00009F4BECF662309F4BBCF20911404822FB6 -:1046F00082958F7090E002970CF48ECF80910F041A -:10470000909110049A8389831B82DD82CC822E8350 -:10471000CE0101967FCF809590958C0D9D1DACCFDD -:10472000F62E662309F49CCF75132EC034132CC0CB -:104730002091140420FD1FC0822F82958F70D9F024 -:10474000D80115962C9315978F3049F08F5F982FCD -:104750009295907F822F8F70892B15968C93C8012C -:104760000E94282186E0F801AFE0B4E001900D92AC -:104770008A95E1F793CF86E0F801AFE0B4E00190CD -:104780000D928A95E1F72DC04D875E878D859E85B8 -:104790000E946721811140CF809114048160809331 -:1047A0001404C8010E9428211CC0662309F458CFB4 -:1047B0004D875E878D859E850E946721882309F439 -:1047C0004FCF2ACF811148CF0CC0243031050CF0D7 -:1047D00047CF9F7009F440CFF8019581907F09F091 -:1047E0003BCF8F2D62960FB6F894DEBF0FBECDBFC4 -:1047F000DF91CF911F910F91FF90EF90DF90CF90BD -:1048000008951F93CF93DF93CDB7DEB72C970FB6E4 -:10481000F894DEBF0FBECDBF4F83588769877A8774 -:104820008B879C87CE0107960E943A22882369F0E5 -:104830008F8198852A853B85232BF1F19F3F09F0D5 -:1048400063C08F3F09F060C037C086E0FE01379635 -:10485000DE01119601900D928A95E1F76F817885BE -:10486000EA85FB85309741F17F3F11F46F3F21F1DD -:104870002091DE0330E0C9010196877099274091AD -:10488000DD0350E08417950709F447C069837A83F4 -:10489000FD83EC8396E0929FD001939FB00D11248D -:1048A000A152BC4FFE01319601900D929A95E1F70D -:1048B0008093DE030E94B02116E08091DD03909189 -:1048C000DE038917C1F1189FC001112481529C4F4A -:1048D0000E943A22882379F1E091DD031E9FF001C6 -:1048E0001124E152FC4F40815181628173818481A6 -:1048F00095810E94A0218091DD0390E00196877050 -:1049000099278093DD03D9CF4F81588569857A85B2 -:104910008B859C850E94A021CFCF0E94632110929D -:10492000DE031092DD03EFE0F4E086E0DF011D928C -:104930008A95E9F7C1CF2C960FB6F894DEBF0FBE6B -:10494000CDBFDF91CF911F910895EF92FF920F930A -:104950001F93CF93DF938C01009709F46CC0F12C67 -:10496000EE24E394E8012196F8018491843740F421 -:10497000843008F051C0813081F0823019F15BC081 -:10498000853709F444C0A8F19CE7980F903708F0E8 -:1049900052C08F770E94801E41C00E5F1F4FFE01E4 -:1049A000C49180E28C0F883048F4C7708E2D01C00E -:1049B000880FCA95EAF70E94812714C08C2F0E94A5 -:1049C000B81D2DC00E5F1F4FFE01C49180E28C0FF9 -:1049D000883058F4C7708E2D01C0880FCA95EAF749 -:1049E0000E9487270E94A8271AC08C2F0E94801E31 -:1049F00016C00E5F1F4FFE01C491CC2381F08FE9DA -:104A00009FE00197F1F700C00000C150F6CF0E5FA4 -:104A10001F4FFE01F49003C00E94B81D8E018F2D20 -:104A2000882309F49FCFEFE9FFE03197F1F700C049 -:104A300000008150F5CFDF91CF911F910F91FF9032 -:104A4000EF90089508956093190470931A04809369 -:104A50001B0490931C040C944F210F931F930091FF -:104A6000190410911A0420911B0430911C04DC01DC -:104A7000CB01802B912BA22BB32B80931904909305 -:104A80001A04A0931B04B0931C041F910F910C9463 -:104A90004F210F931F930091190410911A04209134 -:104AA0001B0430911C04DC01CB0180239123A22341 -:104AB000B3238093190490931A04A0931B04B0931A -:104AC0001C041F910F910C944F210F931F93009181 -:104AD000190410911A0420911B0430911C04DC016C -:104AE000CB0180279127A227B327809319049093A5 -:104AF0001A04A0931B04B0931C041F910F910C94F3 -:104B00004F2110921504109216041092170410925F -:104B100018040C944F2141E050E060E070E004C0C4 -:104B2000440F551F661F771F8A95D2F740931504CF -:104B30005093160460931704709318040C944F213B -:104B400041E050E060E070E004C0440F551F661F74 -:104B5000771F8A95D2F78091150490911604A09141 -:104B60001704B0911804482B592B6A2B7B2B4093C8 -:104B700015045093160460931704709318040C9452 -:104B80004F2141E050E060E070E004C0440F551F49 -:104B9000661F771F8A95D2F740955095609570955E -:104BA0008091150490911604A0911704B0911804F7 -:104BB000482359236A237B234093150450931604FA -:104BC00060931704709318040C944F2141E050E057 -:104BD00060E070E004C0440F551F661F771F8A9580 -:104BE000D2F78091150490911604A0911704B0910A -:104BF0001804482759276A277B27409315045093A8 -:104C0000160460931704709318040C944F210F93AB -:104C10001F930091150410911604209117043091F0 -:104C20001804DC01CB01802B912BA22BB32B80939A -:104C3000150490931604A0931704B09318041F91C1 -:104C40000F910C944F210F931F9300911504109115 -:104C500016042091170430911804DC01CB01802345 -:104C60009123A223B3238093150490931604A09359 -:104C70001704B09318041F910F910C944F210F93B8 -:104C80001F93009115041091160420911704309180 -:104C90001804DC01CB0180279127A227B32780933A -:104CA000150490931604A0931704B09318041F9151 -:104CB0000F910C944F210895CF92DF92EF92FF92C3 -:104CC0000F931F93CF93DF938C01C0901904D09062 -:104CD0001A04E0901B04F0901C048091150490913C -:104CE0001604A0911704B0911804C82AD92AEA2AF8 -:104CF000FB2ACFE1D0E0D701C6010C2E04C0B69547 -:104D0000A795979587950A94D2F780FF06C0B801BA -:104D10008C2F0E94240D019721F4219760F780E0E9 -:104D200001C08C2FDF91CF911F910F91FF90EF90D9 -:104D3000DF90CF900895CF93DF93EC010E945C2623 -:104D4000BE010E94240DDF91CF910895CB010E94F6 -:104D50009B26089580911D048595859585950895D8 -:104D600080911D048770089598E0899F9001112417 -:104D7000262B20931D040C94A02520911D048095C2 -:104D8000822380931D04982F977069F430E0482F98 -:104D9000552747FD50952417350729F085958595AA -:104DA00085950C94C125089590911D04977081E01C -:104DB00009F480E0089590912D02992321F09091BB -:104DC0002E02911109C020912F0230913002F90179 -:104DD00032969FEF40E01FC0982F96959695969536 -:104DE0009F3050F5E0912F02F0913002E90FF11D54 -:104DF000877021E030E0A90102C0440F551F8A9559 -:104E0000E2F7CA019181892B818308959F3F39F090 -:104E10004F5F4E3041F051915813F8CF0DC05111F2 -:104E2000F7CF942FF5CF9F3F39F0F901E90FF11D2E -:104E300097FDFA9582830895089590912D02992304 -:104E400021F090912E02911109C020912F023091F2 -:104E50003002F9013296205F3F4F1FC0982F969580 -:104E6000969596959F30F0F4E0912F02F0913002E4 -:104E7000E90FF11D877021E030E0A90102C0440F65 -:104E8000551F8A95E2F7CA01809591818923818314 -:104E900008953196E217F30729F090819813F9CF1E -:104EA0001082F7CF089581E090E0E0912F02F09119 -:104EB0003002E80FF91F1082019680319105A9F7A1 -:104EC000089590913104892B809331040895809541 -:104ED0009091310489238093310408951092310414 -:104EE000089590913004892B809330040895809523 -:104EF00090913004892380933004089510923004F7 -:104F0000089590912F04892B80932F040895809504 -:104F100090912F04892380932F04089510922F04D9 -:104F2000089580931E04089510921E0408958091A0 -:104F30002F0290913002FC0131969C01205F3F4F7F -:104F400080E0919191118F5FE217F307D1F70895F7 -:104F5000E0912F02F0913002809131048083E09142 -:104F60002F02F0913002908180913004892B808350 -:104F7000E0912F02F0913002908180912F04892BD3 -:104F8000808380911E04882361F0E0912F02F091CC -:104F900030029081892B80830E9497278111109283 -:104FA0001E0480912F02909130020C948D1C20E001 -:104FB000009739F0AC0141505109842395232F5FAC -:104FC000F7CF822F089580915304843039F11092E5 -:104FD000330420E488E190E00FB6F894A89580931C -:104FE00060000FBE2093600080E00E940E0680E00B -:104FF0000E94FE0D83B7817F846083BF83B7816089 -:1050000083BF7894889583B78E7F83BF88E10FB67E -:10501000F89480936000109260000FBE0895089588 -:10502000089580E00E940E060E940F280E94590EEB -:105030000E9410280E94DE0E91E0811101C090E0D4 -:10504000892F08950E94632180E00E940E060E942D -:10505000902D0E94811C0C94FE0D1F920F920FB692 -:105060000F9211248F939F93AF93BF93809133043A -:10507000811113C08091340490913504A0913604BD -:10508000B09137044196A11DB11D809334049093D3 -:105090003504A0933604B0933704BF91AF919F912C -:1050A0008F910F900FBE0F901F90189582E084BDD6 -:1050B00093E095BD9AEF97BD80936E0008952FB74A -:1050C000F8948091340490913504A0913604B09105 -:1050D00037042FBF0895CF92DF92EF92FF920F9384 -:1050E0001F932FB7F8944091340450913504609188 -:1050F0003604709137042FBF6A017B01EE24FF2430 -:105100008C0120E030E0C016D106E206F30610F470 -:10511000415051099A01281B390BC9011F910F9168 -:10512000FF90EF90DF90CF9008951F920F920FB6EF -:105130000F9211248F939F93AF93BF938091340468 -:1051400090913504A0913604B09137040196A11DC9 -:10515000B11D8093340490933504A0933604B0932A -:105160003704BF91AF919F918F910F900FBE0F9019 -:105170001F9018950E947E19F8942FEF87EA91E608 -:10518000215080409040E1F700C0000087E090EBA4 -:10519000DC0180935E0490935F04A0936004B0935D -:1051A00061049CE088E10FB6F894A89580936000B4 -:1051B0000FBE90936000FFCF0E941B29811102C097 -:1051C0000E94F7280E942629809332040E943329E6 -:1051D00080935C0487FB882780F980932E020E94CD -:1051E0002A29682F70E080E090E00C9423256DEE72 -:1051F0007EEF80E090E00E94473260E082E090E045 -:105200000E94353260E083E090E00E94353260E039 -:1052100084E090E00E94353260E085E090E00E94FA -:10522000353260E086E090E00E9435326FEF87E033 -:1052300090E00C94353280E090E00E942F3221E023 -:105240008D3E9E4F09F020E0822F089582E090E08D -:105250000C94273283E090E00C942732682F83E08F -:1052600090E00C94353284E090E00C942732682F63 -:1052700084E090E00C94353286E090E00C94273284 -:10528000682F86E090E00C94353287E090E00C9433 -:105290002732682F87E090E00C94353280913A04F1 -:1052A00080FF0BC06091340285E0689FB00111243B -:1052B00075956795759567952BC081FF09C06091BD -:1052C000340285E0689FB00111247595679520C070 -:1052D00082FF07C06091340285E0689FB00111240D -:1052E00017C090913B049923D1F060913302961737 -:1052F00088F72091340285E0289F90011124929F25 -:10530000A001939F500D112470E0CA010E940D323C -:105310006038710540F46115710539F002C065E02F -:1053200070E0862F08958FE7089581E008958091B9 -:105330003A0480FF08C06091320270E0759567956D -:105340007595679521C081FF06C06091320270E0BB -:105350007595679519C082FF04C06091320270E0B4 -:1053600010C090913B049923C1F0609131029617CF -:10537000A0F780913202899FC001112470E00E9441 -:105380000D326038710528F46115710521F0862F02 -:1053900008958FE7089581E0089561E070E0F4CF0B -:1053A000803F21F40E944E29819504C0813F29F459 -:1053B0000E944E2980933E040895823F21F40E946A -:1053C0004E29819504C0833F29F40E944E29809381 -:1053D0003D040895893F19F40E94972905C08A3F2A -:1053E00031F40E949729819580933F0408958B3F63 -:1053F00021F40E949729819504C08C3F29F40E94D2 -:105400009729809340040895843F21F480913C04BF -:10541000816017C0853F21F480913C04826011C0F7 -:10542000863F21F480913C0484600BC0873F21F4C7 -:1054300080913C04886005C0883F31F480913C0431 -:10544000806180933C0408958D3F21F480913A045B -:1054500081600BC08E3F21F480913A04826005C0C8 -:105460008F3F29F480913A04846080933A04089530 -:10547000803F39F480913E0487FF6CC010923E0457 -:1054800069C0813F29F480913E041816BCF362C0C4 -:1054900090913D04823F29F497FF5CC010923D0437 -:1054A00059C0833F19F41916CCF354C0893F41F415 -:1054B00080913F0418160CF04DC010923F044AC072 -:1054C0008A3F29F480913F0487FF44C0F6CF8B3F89 -:1054D00039F48091400487FF3DC0109240043AC0E7 -:1054E0008C3F29F4809140041816BCF333C0843FEC -:1054F00021F480913C048E7F17C0853F21F4809178 -:105500003C048D7F11C0863F21F480913C048B7F49 -:105510000BC0873F21F480913C04877F05C0883F02 -:1055200031F480913C048F7E80933C0413C08D3F06 -:1055300021F480913A048E7F0BC08E3F21F480913C -:105540003A048D7F05C08F3F29F480913A048B7F08 -:1055500080933A0480913D0481110EC080913E04F5 -:1055600081110AC080913F04811106C080914004DE -:10557000811102C010923B0408958CE394E00E94D4 -:10558000981C0E945F2890933904809338040895F2 -:105590001F93CF93DF9380913804909139040E9438 -:1055A0006B28AC0190913B04992321F020913502A6 -:1055B00030E006C0209136028AE0289F9001112435 -:1055C0004217530708F486C080913D04C0913E0401 -:1055D000D0913F0410914004811107C0C11176C0E1 -:1055E000D11174C0111172C075C09F3F19F09F5F37 -:1055F00090933B04181624F40E944E2980933D0496 -:1056000080913D0487FF05C00E944E2981958093BB -:105610003D041C1624F40E944E2980933E04809180 -:105620003E0487FF05C00E944E29819580933E0469 -:1056300060913D04662339F1C0913E04CC2319F1F9 -:10564000772767FD7095872F972F0E942F2F23E3D1 -:1056500033E343E35FE30E943F300E94FC2E6093FC -:105660003D046C2F772767FD7095872F972F0E9439 -:105670002F2F23E333E343E35FE30E943F300E9495 -:10568000FC2E60933E041D1624F40E9497298093FB -:105690003F0480913F0487FF05C00E9497298195B0 -:1056A00080933F04111624F40E94972980934004AC -:1056B0008091400487FF05C00E94972981958093BF -:1056C0004004DF91CF911F910C94BD2A9F3F09F0B8 -:1056D0008ECF96CFDF91CF911F910895ECE3F4E048 -:1056E00085E0DF011D928A95E9F710923B04109244 -:1056F0003A040895833081F128F4813059F08230E2 -:10570000D1F00895853009F449C0B8F1863009F424 -:1057100056C0089580913602262F30E0280F311DA3 -:105720002F3F310524F4680F6093360208958FEF00 -:1057300080933602089580913502262F30E0280F9D -:10574000311D2F3F310524F4680F60933502089511 -:105750008FEF80933502089580913402262F30E038 -:10576000280F311D2F3F310524F4680F6093340258 -:1057700008958FEF80933402089580913302262F8D -:1057800030E0280F311D2F3F310524F4680F60935E -:10579000330208958FEF809333020895809132028F -:1057A000262F30E0280F311D2F3F310524F4680FDC -:1057B0006093320208958FEF8093320208958091B2 -:1057C0003102262F30E0280F311D2F3F310524F400 -:1057D000680F6093310208958FEF8093310208952E -:1057E000833011F128F4813049F0823091F008952E -:1057F000853081F120F18630C1F108958091360223 -:10580000681720F4861B80933602089510923602A2 -:10581000089580913502681720F4861B8093350225 -:10582000089510923502089580913402681720F48B -:10583000861B80933402089510923402089580915B -:105840003302681720F4861B809333020895109268 -:105850003302089580913202681720F4861B8093EA -:105860003202089510923202089580913102681731 -:1058700020F4861B8093310208951092310208951E -:105880000F931F93873208F048C08E3108F08DC007 -:10589000803109F477C008F5873009F461C068F4F5 -:1058A000863009F09DC080913204817F8E7F809385 -:1058B000320481E08093420494C08B3009F489C0A3 -:1058C0008E3009F08DC08091320482FB222720F9AE -:1058D00091E0922790FB82F95EC0863109F479C08D -:1058E00060F4813109F07CC00E94632190912E0206 -:1058F00081E0892780932E026CC0893109F469C048 -:105900008B3109F06DC08091320481FB222720F990 -:1059100091E0922790FB81F93EC0883309F459C089 -:1059200050F4893209F457C0853309F454C08732E2 -:1059300009F451C055C0833409F44DC028F48A33AA -:1059400008F44EC0895332C0883409F049C00E941F -:1059500063210E940E0F0E9495080E94BA2839C048 -:1059600090913204892F8095817080FB90F929F005 -:10597000966098609093320434C0997F977F90939B -:10598000320427C08091320483FB222720F991E062 -:10599000922790FB83F9809332049923D1F0809170 -:1059A000320481608093320414C08D5141E050E094 -:1059B00060E070E08A019B0104C0000F111F221FEC -:1059C000331F8A95D2F7C901B8010E9423250E948E -:1059D000632181E006C061E070E080E090E0F5CFF7 -:1059E00080E01F910F91089580E0089580E0089570 -:1059F000CF93C82F80914204813069F018F0823033 -:105A0000C9F184C0E0912F02F0913002808182328E -:105A100009F07EC007C0E0912F02F0913002808132 -:105A2000823261F48C2F0E94F42C811104C08C2FDF -:105A30000E94402C1DC081E090E01AC08C2F0E9473 -:105A4000F62C811114C0C43179F048F4CB3079F0D0 -:105A5000C03109F061C082E08093420408C0C932BD -:105A600019F0C83321F058C01092420455C081E0AB -:105A7000817054C0C93291F120F5C43179F1B0F48C -:105A8000C73009F047C08EE18093360282E38093ED -:105A900035028AE08093340284E18093330288E007 -:105AA0008093320288E28093310234C0CE51C630F6 -:105AB00088F5EC2FF0E0EA50FD4F8081809341049F -:105AC00029C0CE34E9F020F4CB3421F56AE013C0CC -:105AD000C13579F0C235F1F461E00DC08091410427 -:105AE000882319F01092410415C081E0809342048C -:105AF00015C061E006C0809141040E947A2B0AC063 -:105B00006AE0809141040E94F02B04C0109242048C -:105B100080E004C081E002C080E0AACFCF91089568 -:105B20000E941B29811102C00E94F7280E943C2973 -:105B300080935D0480FF02C0869501C080E00C94D4 -:105B40000E0680915D04982F9695292F30E0233022 -:105B500031054CF49F5F990F8170892B8160809390 -:105B60005D040E94402980915D0486950C940E0688 -:105B700080915D04982F969591F09158990F8170BE -:105B8000892B80935D048E7F91E009F490E08091F1 -:105B90005D0490FB80F980935D040E944029809110 -:105BA0005D0486950C940E0680915D04982F909567 -:105BB00090FB80F980935D040E94402980915D04F0 -:105BC00080FF02C0869501C080E00C940E06909183 -:105BD0005D04892F86958F5F8F779170843028F4CC -:105BE000880F892B80935D0402C090935D0480919F -:105BF0005D048E7F91E009F490E080915D0490FB5C -:105C000080F980935D040E94402980915D0486950F -:105C10000C940E0620915D04922F96958927982F5B -:105C2000990F822F8170892B80935D048E7F91E084 -:105C300009F490E080915D0490FB80F980935D040D -:105C40000E94402980915D0486950C940E068091F7 -:105C50005D04869508955058BB27AA270ED0D1C160 -:105C6000C2D130F0C7D120F031F49F3F11F41EF4BF -:105C7000B7C10EF4E095E7FB9FC1E92FD3D180F3C4 -:105C8000BA17620773078407950718F071F49EF539 -:105C9000EBC10EF4E0950B2EBA2FA02D0B01B9012C -:105CA00090010C01CA01A0011124FF27591B99F092 -:105CB000593F50F4503E68F11A16F040A22F232F9E -:105CC000342F4427585FF3CF469537952795A795EE -:105CD000F0405395C9F77EF41F16BA0B620B730B95 -:105CE000840BBAF09150A1F0FF0FBB1F661F771F06 -:105CF000881FC2F70EC0BA0F621F731F841F48F4BB -:105D0000879577956795B795F7959E3F08F0B3CF40 -:105D10009395880F08F09927EE0F9795879508952A -:105D200027D108F481E008950CD06BC163D140F015 -:105D30005AD130F021F45F3F19F03EC1511195C1A5 -:105D40004FC170D198F39923C9F35523B1F3951B33 -:105D5000550BBB27AA2762177307840738F09F5F8C -:105D60005F4F220F331F441FAA1FA9F333D00E2EFB -:105D70003AF0E0E830D091505040E695001CCAF768 -:105D800029D0FE2F27D0660F771F881FBB1F26172D -:105D900037074807AB07B0E809F0BB0B802DBF0100 -:105DA000FF2793585F4F2AF09E3F510568F004C1CA -:105DB0005CC15F3FECF3983EDCF386957795679581 -:105DC000B795F7959F5FC9F7880F911D96958795B1 -:105DD00097F90895E1E0660F771F881FBB1F6217D0 -:105DE00073078407BA0720F0621B730B840BBA0B8E -:105DF000EE1F88F7E095089504D06894B11135C17D -:105E0000089518D188F09F5790F0B92F9927B7516E -:105E1000A0F0D1F0660F771F881F991F1AF0BA956E -:105E2000C9F712C0B13081F01FD1B1E008951CC193 -:105E3000672F782F8827B85F39F0B93FCCF3869564 -:105E400077956795B395D9F73EF4909580957095C1 -:105E500061957F4F8F4F9F4F0895E89409C097FB3E -:105E60003EF490958095709561957F4F8F4F9F4F31 -:105E70009923A9F0F92F96E9BB279395F695879575 -:105E800077956795B795F111F8CFFAF4BB0F11F438 -:105E900060FF1BC06F5F7F4F8F4F9F4F16C08823DF -:105EA00011F096E911C0772321F09EE8872F762F15 -:105EB00005C0662371F096E8862F70E060E02AF056 -:105EC0009A95660F771F881FDAF7880F9695879542 -:105ED00097F9089588D018F011F08CD038F480C06C -:105EE000C4C0E92F9FD0B0F35523C9F3E7FB621775 -:105EF000730784079507A8F199F3E92FFF278823F3 -:105F00002AF03197660F771F881FDAF7952F5527EC -:105F1000442332F091505040220F331F441FD2F7D8 -:105F2000BB27E91BF50B621B730B840BB109C1F294 -:105F300022F4620F731F841FB11D31972AF0660F80 -:105F4000771F881FBB1FEFCF915050405AF041F090 -:105F5000882332F0660F771F881F91505040C1F799 -:105F6000939530C08695779567959F5FD9F7F8CF61 -:105F7000990F0008550FAA0BE0E8FEEF161617065A -:105F8000E807F907C0F012161306E407F50798F0C2 -:105F9000621B730B840B950B39F40A2661F0232BDB -:105FA000242B252B21F408950A2609F4A140A69557 -:105FB0008FEF811D811D089597F99F6780E870E03C -:105FC00060E008959F3F31F0915020F487957795D8 -:105FD0006795B795880F911D9695879597F90895C0 -:105FE0009FEF80EC089500240A94161617061806F1 -:105FF0000906089500240A941216130614060506CD -:106000000895092E0394000C11F4882352F0BB0F5D -:1060100040F4BF2B11F460FF04C06F5F7F4F8F4FC0 -:106020009F4F089557FD9058440F551F59F05F3FFB -:1060300071F04795880F97FB991F61F09F3F79F0AA -:1060400087950895121613061406551FF2CF46952C -:10605000F1DF08C0161617061806991FF1CF8695AE -:106060007105610508940895E894BB276627772792 -:10607000CB0197F908957CDF08F48FEF08950BD0DA -:10608000C0CFB1DF28F0B6DF18F0952309F094CF28 -:10609000A7CF1124EACFC6DFA0F3959FD1F3950FC8 -:1060A00050E0551F629FF001729FBB27F00DB11D9C -:1060B000639FAA27F00DB11DAA1F649F6627B00D2C -:1060C000A11D661F829F2227B00DA11D621F739F15 -:1060D000B00DA11D621F839FA00D611D221F749F23 -:1060E0003327A00D611D231F849F600D211D822F6A -:1060F000762F6A2F11249F5750408AF0E1F08823B1 -:106100004AF0EE0FFF1FBB1F661F771F881F9150BD -:106110005040A9F79E3F510570F04ECFA6CF5F3F8C -:10612000ECF3983EDCF3869577956795B795F795F0 -:10613000E7959F5FC1F7FE2B880F911D9695879578 -:1061400097F90895FA01EE0FFF1F309621053105EA -:1061500099F16115710561F48038BFE39B0749F13E -:1061600068949038810561F08038BFEF9B0741F05B -:10617000992342F5FF3FE1053105210511F1E8942E -:106180000894E795D901AA2329F4AB2FBE2FF85F15 -:10619000D0F310C0FF5F70F4A695E0F7F73950F028 -:1061A00019F0FF3A38F49F779F930CD00F9007FCBB -:1061B000905808953EF014CF60E070E080E89FE3CF -:1061C00008954FE79F775F934F933F932F939ED010 -:1061D0002F913F914F915F9152DF05C019F40EF05E -:1061E000EBCE42CFFDCE26DFC8F39638C0F707F8D6 -:1061F0000F92E8942BE33AEA48EB5FE74EDF0F9209 -:106200000F920F924DB75EB70F92C0D0E6E2F1E069 -:1062100016D04F915F91EF91FF91E595EE1FFF1F13 -:1062200049F0FE57E0684427EE0F441FFA95E1F766 -:106230004195550B32D00F9007FE26C00895DF938D -:10624000CF931F930F93FF92EF92DF927B018C010C -:10625000689405C0DA2EEF011EDFFE01E894A591D7 -:106260002591359145915591AEF3EF0106DDFE0183 -:106270009701A801DA9479F7DF90EF90FF900F91E2 -:106280001F91CF91DF9108959B01AC0160E070E018 -:1062900080E89FE349CD90CE95CECCDEE8F39923FC -:1062A000D9F3940F511DBBF39150504094F059F025 -:1062B000882332F0660F771F881F91505040C1F736 -:1062C0009E3F510544F7880F911D9695879597F944 -:1062D00008955F3FACF0983E9CF0BB27869577957C -:1062E0006795B79508F4B1609395C1F7BB0F58F760 -:1062F00011F460FFE8CF6F5F7F4F8F4F9F4FE3CF69 -:10630000B4CE0EF05FCE6CCE689456CE93DEC8F35A -:106310009923D1F3C6F3DF93CF931F930F93FF928B -:10632000C92FDD2788232AF02197660F771F881F42 -:10633000DAF720E030E040E85FEB9FE3883920F0B7 -:10634000803E30F021968F7787DCEEE4F1E003C0E9 -:1063500083DCEBE7F1E073DF8B01BE01EC01FB2E88 -:106360006F5771097595771F880B990B78DD28E1B8 -:1063700032E741E35FE38FDEAF2D9801AE01FF907E -:106380000F911F91CF91DF9178DC3BCEFA01DC01B8 -:10639000AA0FBB1F9B01AC01BF5728F4222733274C -:1063A000442750781FC0B75188F4AB2F002446957E -:1063B00037952795011CA395D2F3002069F0220F91 -:1063C000331F441FB395DAF30DD045CC613071050E -:1063D000A0E88A07B94630F49B01AC01662777270D -:1063E00088279078309621F020833183428353832D -:1063F0000895AA1BBB1B51E107C0AA1FBB1FA6170C -:10640000B70710F0A61BB70B881F991F5A95A9F75D -:1064100080959095BC01CD01089597FB072E16F449 -:10642000009407D077FD09D00E94F93107FC05D010 -:106430003EF4909581959F4F0895709561957F4F9B -:106440000895EE0FFF1F0590F491E02D0994F9993E -:10645000FECF92BD81BDF89A992780B50895A8E135 -:10646000B0E042E050E00C944F32262FF999FECF75 -:1064700092BD81BDF89A019700B4021639F01FBA97 -:1064800020BD0FB6F894FA9AF99A0FBE08950196B6 -:10649000272F0E9436320C943532DC01CB01FC01EF -:1064A000F999FECF06C0F2BDE1BDF89A319600B46D -:0E64B0000D9241505040B8F70895F894FFCF78 -:1064BE000AA7CF44000000410000DC440000004168 -:1064CE00000000000000804000005C4500004041DC -:1064DE00000000000000804052D0244500004041E2 -:1064EE000AA7CF44000000410000DC440000004138 -:1064FE00000000000000804052D0244500004041C2 -:10650E00000000000000804000005C45000040419B -:10651E000AA7CF44000000410000DC440000004107 -:10652E00000000000000804052D024450000404191 -:10653E0000000000000080400AA74F4500004041C7 -:10654E000AA7CF44000000410000DC4400000041D7 -:10655E00000000000000804052D0244500000041A1 -:10656E0000000000000080405CFF38450000004144 -:10657E00000000000000804052D024450000004181 -:10658E000AA7CF44000000410000DC440000004197 -:10659E00000000000000804052D0244500008041E1 -:1065AE0053D024450000404160970A450000004149 -:1065BE0054D0A444000000410000DC44000000411F -:1065CE0060970A450000A041640007000CFF000020 -:1065DE00003F6485151316F015BC15881501011FB3 -:1065EE00042808140A321E0002040507090B0C0EBB -:1065FE001011131517181A1C1D1F212324262829C4 -:10660E002B2D2F3032343537393B6966207965733F -:10661E000A097065616E7574206275747465720A0C -:10662E00656C73650A097269636520736E61636BCD -:10663E0073001F0F03764F5F6F7F496943790959C6 -:10664E0053633149803F5D8B803FF8BF803FCAE185 -:10665E00803F73ED803FCAE1803FF8BF803F5D8B86 -:10666E00803F3149803F0000803FF16D7F3F75EAEA -:10667E007E3F4C827E3F833F7E3F84287E3F833F1A -:10668E007E3F4C827E3F75EA7E3FF16D7F3F00007C -:10669E00803F3F4D3639DF0A920A5C0A230AB6095B -:1066AE00CF09E809010A01020304050607080900DB -:00000001FF -- cgit v1.2.1 From ce1742a31fb785cae4cb12e9cf5f9eab00b9311f Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 15 Jun 2016 18:42:30 -0400 Subject: Add rule to ignore contents of .build directories; their contents are generated --- keyboard/planck/keymaps/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 keyboard/planck/keymaps/.gitignore diff --git a/keyboard/planck/keymaps/.gitignore b/keyboard/planck/keymaps/.gitignore new file mode 100644 index 0000000000..24e5b0a1ae --- /dev/null +++ b/keyboard/planck/keymaps/.gitignore @@ -0,0 +1 @@ +.build -- cgit v1.2.1 From f566125c6e29e3db62552c089428591d460ce583 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Thu, 16 Jun 2016 16:51:19 -0400 Subject: Revert removals of compiled files --- keyboard/planck/.gitignore | 1 - keyboard/planck/keymaps/alexey/compiled.hex | 1444 +++++++++++++++++ .../planck/keymaps/angerthosenear/compiled.hex | 1449 +++++++++++++++++ keyboard/planck/keymaps/austin/compiled.hex | 1449 +++++++++++++++++ keyboard/planck/keymaps/bone2planck/compiled.hex | 1450 +++++++++++++++++ keyboard/planck/keymaps/brandon/compiled.hex | 1456 +++++++++++++++++ keyboard/planck/keymaps/charlie/compiled.hex | 1445 +++++++++++++++++ keyboard/planck/keymaps/daniel/compiled.hex | 1448 +++++++++++++++++ keyboard/planck/keymaps/david/compiled.hex | 1449 +++++++++++++++++ keyboard/planck/keymaps/default/compiled.hex | 1611 +++++++++++++++++++ keyboard/planck/keymaps/dzobert/compiled.hex | 1449 +++++++++++++++++ keyboard/planck/keymaps/experimental/compiled.hex | 1645 ++++++++++++++++++++ .../keymaps/experimental/planck_experimental.hex | 1645 ++++++++++++++++++++ keyboard/planck/keymaps/gabriel/compiled.hex | 1450 +++++++++++++++++ keyboard/planck/keymaps/jacob/compiled.hex | 1444 +++++++++++++++++ keyboard/planck/keymaps/joe/compiled.hex | 1479 ++++++++++++++++++ keyboard/planck/keymaps/kyle/compiled.hex | 1449 +++++++++++++++++ keyboard/planck/keymaps/leo/compiled.hex | 1454 +++++++++++++++++ keyboard/planck/keymaps/lucas/compiled.hex | 1471 +++++++++++++++++ keyboard/planck/keymaps/lukas/compiled.hex | 1446 +++++++++++++++++ keyboard/planck/keymaps/max/compiled.hex | 1449 +++++++++++++++++ keyboard/planck/keymaps/mollat/compiled.hex | 1495 ++++++++++++++++++ keyboard/planck/keymaps/nico/compiled.hex | 1456 +++++++++++++++++ keyboard/planck/keymaps/pete/compiled.hex | 1143 ++++++++++++++ keyboard/planck/keymaps/pvc/compiled.hex | 1635 +++++++++++++++++++ keyboard/planck/keymaps/tak3over/compiled.hex | 1456 +++++++++++++++++ keyboard/planck/keymaps/unicode/compiled.hex | 1185 ++++++++++++++ keyboard/planck/keymaps/yang/compiled.hex | 1318 ++++++++++++++++ 28 files changed, 39270 insertions(+), 1 deletion(-) create mode 100644 keyboard/planck/keymaps/alexey/compiled.hex create mode 100644 keyboard/planck/keymaps/angerthosenear/compiled.hex create mode 100644 keyboard/planck/keymaps/austin/compiled.hex create mode 100644 keyboard/planck/keymaps/bone2planck/compiled.hex create mode 100644 keyboard/planck/keymaps/brandon/compiled.hex create mode 100644 keyboard/planck/keymaps/charlie/compiled.hex create mode 100644 keyboard/planck/keymaps/daniel/compiled.hex create mode 100644 keyboard/planck/keymaps/david/compiled.hex create mode 100644 keyboard/planck/keymaps/default/compiled.hex create mode 100644 keyboard/planck/keymaps/dzobert/compiled.hex create mode 100644 keyboard/planck/keymaps/experimental/compiled.hex create mode 100644 keyboard/planck/keymaps/experimental/planck_experimental.hex create mode 100644 keyboard/planck/keymaps/gabriel/compiled.hex create mode 100644 keyboard/planck/keymaps/jacob/compiled.hex create mode 100644 keyboard/planck/keymaps/joe/compiled.hex create mode 100644 keyboard/planck/keymaps/kyle/compiled.hex create mode 100644 keyboard/planck/keymaps/leo/compiled.hex create mode 100644 keyboard/planck/keymaps/lucas/compiled.hex create mode 100644 keyboard/planck/keymaps/lukas/compiled.hex create mode 100644 keyboard/planck/keymaps/max/compiled.hex create mode 100644 keyboard/planck/keymaps/mollat/compiled.hex create mode 100644 keyboard/planck/keymaps/nico/compiled.hex create mode 100644 keyboard/planck/keymaps/pete/compiled.hex create mode 100644 keyboard/planck/keymaps/pvc/compiled.hex create mode 100644 keyboard/planck/keymaps/tak3over/compiled.hex create mode 100644 keyboard/planck/keymaps/unicode/compiled.hex create mode 100644 keyboard/planck/keymaps/yang/compiled.hex diff --git a/keyboard/planck/.gitignore b/keyboard/planck/.gitignore index fc71164f75..6e92f57d46 100644 --- a/keyboard/planck/.gitignore +++ b/keyboard/planck/.gitignore @@ -1,2 +1 @@ tags -compiled.hex diff --git a/keyboard/planck/keymaps/alexey/compiled.hex b/keyboard/planck/keymaps/alexey/compiled.hex new file mode 100644 index 0000000000..deddcea06a --- /dev/null +++ b/keyboard/planck/keymaps/alexey/compiled.hex @@ -0,0 +1,1444 @@ +:100000000C9461020C94A5020C94A5020C94A50218 +:100010000C94A5020C94A5020C94A5020C94A502C4 +:100020000C94A5020C94A5020C9452140C94241563 +:100030000C9486220C94A5020C94A5020C94A502A3 +:100040000C94A5020C9407030C94A5020C94A50231 +:100050000C94A5020C94EE220C94A5020C94A5021B +:100060000C94A5020C94A5020C94A5020C94A50274 +:100070000C94A5020C94A5020C94A5020C94A50264 +:100080000C94C70A0C94A5020C94A5020C94A5022A +:100090000C94A5020C94A5020C94A5020C94A50244 +:1000A0000C94A5020C94A5020C94A5029115B3150D +:1000B000A116B315A116F8151B16A11670168316F6 +:1000C0006D196D199C199C19DB19FB19511B511BDA +:1000D000061A511BB61AB61A1D1B261B511B4B1BA9 +:1000E000C31AC31AC31AC31AC31AC31AC31AC31A28 +:1000F000C31AC31AC31AC31AC31AC31AC31AC31A18 +:10010000D31AE11AE81AEF1AF91A07634236B79BB5 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000002B001400ED +:1001D0001A000800150017001C0018000C0012007F +:1001E00013002A00290004001600070009000A0075 +:1001F0000B000D000E000F003300015201001D0026 +:100200001B00060019000500110010003600370021 +:10021000380001000030E300E200E000E1002C00C3 +:100220002C0002522D00340028000100010049007A +:100230004A0052004D004B000100400041004200C6 +:100240004300010001004C00500051004F004E00DF +:1002500001003D003E003F0044000100010001009C +:10026000010001000100010001003A003B003C00D8 +:100270004500010001000100010001000100010032 +:100280000100AA00A900AB00AE00010001001E029F +:100290001F022F02300231024B00240025002600ED +:1002A000250201000100200221022602270235005A +:1002B0004E002100220023002E0201000100220234 +:1002C00023022F003000350224021E001F002000F0 +:1002D000310001000100010049000100010001009E +:1002E00001000100010027002E0001002803540036 +:1002F00068006500200050006C0061006E00630023 +:100300006B0020004B006500790062006F00610007 +:100310007200640000002C034F007200740068003B +:100320006F006C0069006E006500610072002000C3 +:100330004B006500790062006F006100720064008C +:10034000730000000403090409026D00040100A009 +:10035000FA09040000010301010009211101000153 +:10036000223F000705810308000A09040100010378 +:10037000010200092111010001224D00070582033D +:1003800008000A090402000103000000092111010C +:1003900000012236000705830308000A0904030050 +:1003A00001030000000921110100012239000705A5 +:1003B00084031000011201100100000008EDFE602E +:1003C0006001000102000105010906A101050719EC +:1003D000E029E71500250195087501810205081936 +:1003E0000129059505750191029501750391010596 +:1003F000071900297715002501957875018102C03C +:1004000005010980A101850216010026B7001A0125 +:10041000002AB700751095018100C0050C0901A1E3 +:10042000018503160100269C021A01002A9C027510 +:100430001095018100C005010902A1010901A10077 +:100440000509190129051500250195057501810288 +:100450009501750381010501093009311581257F59 +:1004600095027508810609381581257F9501750863 +:100470008106050C0A38021581257F9501750881D2 +:1004800006C0C005010906A101050719E029E71505 +:100490000025019508750181029501750881010506 +:1004A00008190129059505750191029501750391BA +:1004B000010507190029FF150025FF95067508811C +:1004C00000C011241FBECFEFDAE0DEBFCDBF04B6FF +:1004D00003FE24C080911E0390911F03A09120036E +:1004E000B09121038730904BA740B04BB9F41092E4 +:1004F0001E0310921F03109220031092210314BEBA +:1005000084B7877F84BF88E10FB6F894809360003A +:10051000109260000FBEE0E0F8E3099511E0A0E062 +:10052000B1E0E6E6F9E502C005900D92A03CB10706 +:10053000D9F713E0A0ECB1E001C01D92AE31B107D4 +:10054000E1F70E9498110C94B12C0C9400000895CE +:10055000089581E0089508950C94A8020C94A902CE +:100560000C94AB020E947B2823E030E0281B310969 +:10057000220F2093C4010895282F2F988091800086 +:10058000211108C0877F8093800010928D00109207 +:100590008C001BC0886080938000233019F48FEF9B +:1005A0009FEF0FC083E090E0821B9109880F991F95 +:1005B0002FEF3FEFA90102C0569547958A95E2F7C4 +:1005C000CA0190938D0080938C000C94B2020E941B +:1005D000B20284E08093C3011092C0010895279A6B +:1005E0002F988FEF9FEF90938700809386008AE08B +:1005F0008093800089E1809381000E94E4270C941D +:10060000E7020E94EF026E9A769A0C94A7021F925C +:100610000F920FB60F9211242F933F938F939F93B6 +:10062000EF93FF93E091C101F091C201CF010196D8 +:100630009093C2018093C1010090C30102C0F6955E +:10064000E7950A94E2F7EF738091C001823019F4C4 +:10065000E03251F404C0813039F4EF3329F4809151 +:100660006F008D7F80936F00F0E0E457FE4FE491C0 +:1006700021E031E0E29FC001E39F900D1124009042 +:10068000C40102C0969587950A94E2F790938D0075 +:1006900080938C00FF91EF919F918F913F912F91CB +:1006A0000F900FBE0F901F90189561110DC0FC01A7 +:1006B0008281882331F085EE0E9411180E943B2828 +:1006C00003C085EE0E94D91880E090E0089581E093 +:1006D00008950C94670308950C940103809115020A +:1006E000882309F448C08091D1019091D2010097EC +:1006F00079F40E94B8229093D2018093D101809125 +:10070000D30190E0009771F48091D40190E00AC089 +:100710000E94C4222091000130910101281739075D +:1007200040F329C00197880F991F880F991FFC017A +:10073000EB52FE4F60817181828193810E942D0A6C +:10074000E091D30184E0E89FF0011124EB52FE4FC9 +:1007500060817181828193814FE050E00E94E50DBC +:100760008091D30190E001966091D40170E00E94E5 +:10077000612C8093D3010C94AC02109217020C945C +:10078000FA090895089581E0809317020C94C2033A +:10079000089508958F929F92AF92BF92EF92FF9229 +:1007A0000F931F93CF93DF93CDB7DEB7A3970FB609 +:1007B000F894DEBF0FBECDBF7C01FC01008111812A +:1007C000C8010E94B520B8010E94CC058C01B70178 +:1007D0000E946903882309F4CCC10032F0E51F07A9 +:1007E00041F4F7018281882309F458C00E94490E20 +:1007F000C0C10132F0E51F0741F4F701828188236F +:1008000009F44CC00E94520EB4C10232F0E51F0739 +:1008100051F4F7018281882309F440C00E94450EFB +:100820008111F0CFE3CF0332F0E51F0739F4F70170 +:100830008281882399F10E94C3039BC10432F0E5B1 +:100840001F0739F4F7018281882341F10E94BD031B +:1008500090C10532F0E51F0749F4F7018281882332 +:10086000E9F0809117028111F1CFE5CF0632F0E572 +:100870001F0739F4F7018281882381F00E94590E05 +:100880000AC00732F0E51F0749F4F7018281882387 +:1008900029F00E94640E0E94C9036BC18091170267 +:1008A000811105C0F70182818111CFC018C1003EBE +:1008B000110579F4F7018281882309F44DC00E9463 +:1008C000FA0981E080931602109215021092D40169 +:1008D00050C1023E110559F4F70182818823E1F1EC +:1008E0000E94FA09109216021092150242C1033EAC +:1008F000110591F4F7018281882371F10E94FA09B0 +:100900001092160281E0809315021092D30110928A +:10091000D2011092D1012DC10235110559F4F70110 +:100920008281882309F425C1809100019091010101 +:100930000A970DC00135110579F4F70182818823EA +:1009400009F417C180910001909101010A969093DA +:100950000101809300010DC14091040183E2EFE1A8 +:10096000F1E0DE01119601900D928A95E1F7F70111 +:10097000808121E030E02C0F3D1F280F311DC9017F +:100980002091020130910301FC01E20FF31F60810D +:10099000772767FD7095640F711D882777FD809517 +:1009A000982F0E94832920E030E040E451E40E9427 +:1009B000E8284B015C01F701218184E090E0821B73 +:1009C0009109BC01882777FD8095982F0E94832983 +:1009D0009B01AC01C501B4010E9480289B01AC01C0 +:1009E00060E070E080E090E40E94F62A20E030E0D1 +:1009F0004CED50E40E94932A4B015C01F701828187 +:100A00008823D1F04FE050E0C501B4010E94E50D0C +:100A1000809116028823A1F08091D40124E0829F66 +:100A2000F0011124EB52FE4F80829182A282B382A8 +:100A30008F5F8093D40104C0C501B4010E942D0AC8 +:100A40000F3F110508F02ECF94C08091D001811185 +:100A50001FC0043130E5130709F051C00E946B0339 +:100A600081E08093D0010E94B8229093CF018093BF +:100A7000CE011092C7011092C9011092C8011092C4 +:100A8000CB011092CA011092CD011092CC0171C01D +:100A90008091CE019091CF010E94C422883C9105A3 +:100AA00070F48091C701E82FF0E0EE0FFF1FE853CC +:100AB000FE4F118300838F5F8093C7015AC00438B3 +:100AC00080E5180721F00538104501F13AC0F7011B +:100AD0008281882341F01092C50182E01EC0043853 +:100AE00030E5130759F58091C501811106C086E2F2 +:100AF0000E94111886E20E94D91882E01CC00438B6 +:100B0000F0E51F0741F305381045D9F4F70182815C +:100B1000882331F01092C60180E20E94281929C072 +:100B20008091C601811106C087E20E94111887E2F8 +:100B30000E94D91880E20E942F191BC00538104569 +:100B400029F381E08093C5018093C601C701A39674 +:100B50000FB6F894DEBF0FBECDBFDF91CF911F91CE +:100B60000F91FF90EF90BF90AF909F908F900C945B +:100B7000AE0280E0A3960FB6F894DEBF0FBECDBFE5 +:100B8000DF91CF911F910F91FF90EF90BF90AF90A9 +:100B90009F908F90089508959CE0799FF001112413 +:100BA00090E3899FE00DF11D1124E60FF11DEE0F7A +:100BB000FF1FE453FE4F859194910895880F991F6C +:100BC000FC01E45BFF4F859194910895880F991F74 +:100BD000FC01E453FE4F8591949108950F931F9368 +:100BE000CF93DF93EC01811521E39207A0F5C115A6 +:100BF00080E3D80708F0D7C0C83ED105D8F4C03E7E +:100C0000D10508F007C2C83AD10578F4C53AD10534 +:100C100008F06AC0C130D10509F463C008F4F7C117 +:100C2000C430D10508F0F6C1F2C1CB3BD10508F4C0 +:100C300066C0EDC1C11590E2D90708F0AFC0C1157B +:100C400021E0D20708F0E6C1C03FD10508F4DFC1BA +:100C50008E0110651FC2C03880E5D80700F5C03787 +:100C600090E5D90708F0A3C0C11520E5D20709F423 +:100C7000ACC050F4CE01905480319F4008F0C7C101 +:100C8000DF708E01106A06C2C13080E5D80709F412 +:100C9000AEC0C43190E5D90708F4AFC0B8C1C338BD +:100CA00020E5D20709F48EC050F4C13890E5D90789 +:100CB00009F482C008F083C000E011EDEBC1C0313F +:100CC00081E5D80708F4A3C1C11597E5D90708F451 +:100CD00036C1CE0190578115904108F098C1DF7060 +:100CE00093C101E010E0D6C1C53AD10509F494C121 +:100CF000C63AD10509F093C102E810E4CBC1C83A65 +:100D0000D10509F48FC1C93AD10509F48EC1CA3A97 +:100D1000D10509F48DC1CB3AD10509F48CC1CC3A87 +:100D2000D10509F48BC1CD3AD10509F48AC1C03B84 +:100D3000D10509F489C1CE3AD10509F488C1CF3A69 +:100D4000D10509F487C1C13BD10509F486C1C23B75 +:100D5000D10509F485C1C33BD10509F484C1C43B65 +:100D6000D10509F483C1C53BD10509F482C1C63B55 +:100D7000D10509F481C1C73BD10509F480C1C83B45 +:100D8000D10509F47FC1C93BD10509F47EC1CA3B35 +:100D9000D10509F47DC100E014E47CC1CE019F704F +:100DA0000E94E60578C1DD278E01106C73C1CF70FB +:100DB000DD278E01146D6EC100E010ED6BC100E007 +:100DC00012ED68C100E013ED65C10E94BC1B0E94DA +:100DD000FA090E94C1038FEF94E32CE08150904008 +:100DE0002040E1F700C000000E94132353C180910E +:100DF000F20281608093F2024DC10E94742381113E +:100E000002C00E9450230E94872390E090931D030C +:100E100080931C03C23080E5D80721F480911C0325 +:100E2000816086C0C43090E5D90721F480911C030D +:100E300082607EC0C63020E5D20721F480911C0379 +:100E4000846076C0C83080E5D80719F480911C030F +:100E500027C0CA3090E5D90721F480911C03806136 +:100E600067C0CC3020E5D20721F480911C0380625A +:100E70005FC0CE3080E5D80721F480911C038064E8 +:100E800057C0C03190E5D90721F480911C038068D8 +:100E90004FC0C23120E5D20729F480911C03846041 +:100EA000886046C0C33080E5D80721F480911C03D8 +:100EB0008E7F3EC0C53090E5D90721F480911C0398 +:100EC0008D7F36C0C73020E5D20721F480911C0306 +:100ED0008B7F2EC0C93080E5D80719F480911C03A0 +:100EE00026C0CB3090E5D90721F480911C038F7E7A +:100EF0001FC0CD3020E5D20721F480911C038F7DE7 +:100F000017C0CF3080E5D80721F480911C038F7B78 +:100F10000FC0C13190E5D90721F480911C038F7770 +:100F200007C0C331D04531F480911C038B7F877F8C +:100F300080931C0380911C030E948B23ABC08D2FD8 +:100F400099278F70992781309105D9F49E012370DC +:100F5000332702C0880F991F2A95E2F79C688E01FB +:100F600044E0000F111F4A95E1F700271370802B12 +:100F7000912B53E0CC0FDD1F5A95E1F7C076DD27AA +:100F80002FC08230910531F4DC2FCC278E01016F08 +:100F9000106A80C08330910569F4CE01837099276F +:100FA00001E010E002C0000F111F8A95E2F7C801AE +:100FB0009C680FC084309105B9F4CE0183709927E5 +:100FC00001E010E002C0000F111F8A95E2F7C8018E +:100FD0009A6823E0CC0FDD1F2A95E1F7C07ED77019 +:100FE0008C010C2B1D2B56C08530910531F4DC2F64 +:100FF000CC278E01046F106A4DC0069709F04AC0D5 +:10100000CF71DD27DC2FCC278E01106243C000E0BA +:1010100010E040C08E013EC001E810E43BC003E890 +:1010200010E438C002EE14E435C009EE14E432C016 +:101030000AEE14E42FC005EB14E42CC006EB14E414 +:1010400029C007EB14E426C00CEC14E423C00DEC1B +:1010500014E420C003E815E41DC00AE815E41AC032 +:1010600002E915E417C004E915E414C001E216E42E +:1010700011C003E216E40EC004E216E40BC005E260 +:1010800016E408C006E216E405C007E216E402C052 +:101090000AE216E4C801DF91CF911F910F910895E4 +:1010A0009CE0799FF001112490E3899FE00DF11DF0 +:1010B0001124E60FF11DEE0FFF1FE453FE4F859143 +:1010C0009491803E9105E0F4803C910558F5813380 +:1010D000910509F46FC048F48932910509F463C0A1 +:1010E0008A32910509F46DC072C089339105E9F027 +:1010F00082389105D1F08533910509F44DC067C060 +:10110000833E910581F138F4803E9105B9F0823E2D +:101110009105D9F05CC0863E910561F1873E91054D +:10112000A1F155C00E94DE05089520911C0320FD09 +:1011300002C021FF4CC080EE90E049C080911C03AA +:1011400080FFF9CF89E390E042C080911C0382FFC9 +:101150000EC080911C0384FF03C080E090E037C084 +:1011600083EE90E034C080911C0382FFF2CF82EEC8 +:1011700090E02DC080911C0383FF0BC080911C0365 +:1011800084FDEBCF87EE90E022C080911C0383FFAB +:10119000F5CF86EE90E01BC080911C0385FF07C051 +:1011A00089E290E014C080911C0385FFF9CF85E3AC +:1011B00090E00DC080911C0386FF07C08AE290E09A +:1011C00006C080911C0386FFF9CF81E390E00E9466 +:1011D000EE0508950C94B002E82FF0E0E25BFE4FBC +:1011E0008081E82FEF70F0E082958F7021E030E091 +:1011F000A90102C0440F551F8A95E2F740A3089544 +:101200000F931F93CF93DF9385B7806885BF85B712 +:10121000806885BFC3E0D0E001E010E0FE01E25B42 +:10122000FE4F8081E82FEF70F0E021A182958F7052 +:10123000A80102C0440F551F8A95E2F7CA01822B0C +:1012400081A38C2F0E94EC08219740F78BE090E05F +:1012500061E070E0FC01EE5BFE4F2081E22FEF7059 +:10126000F0E042A122952F70DB0102C0AA0FBB1F44 +:101270002A95E2F79D01242B22A3019758F7DF91CD +:10128000CF911F910F910C946C03EF92FF920F93EB +:101290001F93CF93DF9300E212E0C3E0EE24E394C8 +:1012A000F12CD5E08C2F0E94EC088BE090E040E020 +:1012B00050E0FC01EE5BFE4F6081E62FEF70F0E046 +:1012C00020A130E062956F7002C0359527956A9530 +:1012D000E2F720FD09C09701082E02C0220F331F3C +:1012E0000A94E2F7422B532B019718F7F8019291D9 +:1012F00082918F018417950721F051834083D09309 +:1013000005018C2F0E94EC08C15060F68091050108 +:1013100087FD2CC08150809305018F3F39F08FE904 +:101320009FE00197F1F700C0000020C080911E02ED +:1013300090911F02909327028093260280911C02B5 +:1013400090911D02909325028093240280911A02AD +:1013500090911B02909323028093220280911802A5 +:101360009091190290932102809320020E946E03B3 +:1013700081E0DF91CF911F910F91FF90EF90089541 +:10138000E82FF0E0EE0FFF1FE05EFD4F80819181BE +:10139000089508950F931F93CF9308E212E0C0E0E1 +:1013A000F801929182918F010E943022C80FF2E0E1 +:1013B00000321F07A9F78C2FCF911F910F9108952D +:1013C0000E947423811102C00E9450230E9499231D +:1013D000809307033E9A809171008D7F8093710006 +:1013E00082E0809390008AE18093910081E0809375 +:1013F0002A02089580912A02811102C00E94E00908 +:1014000010927A0210927902809171008D7F809300 +:101410007100809190008F738093900010923C0235 +:1014200010923B0210927302109274021092750295 +:10143000109276021092720210927102E1E5F2E0CF +:10144000A1E4B2E011921192119211921D921D929B +:1014500082E0E137F807B1F70895CF92DF92EF927B +:10146000FF920F931F93CF93DF9320913B02222390 +:1014700009F484C06B017C0180912A02811102C0B1 +:101480000E94E00901E712E0C7E0D0E0A701960161 +:10149000F80192918291729162918F010E94E428E9 +:1014A000811131C0FE01EE0FFF1FEE0FFF1FEF5A3B +:1014B000FD4F1082118212821382DE01AA0FBB1F20 +:1014C000AF5BBD4F11961C921E92C730D105E9F05B +:1014D000219644815581668177814083518362835F +:1014E0007383148215821682178212968D919C91B5 +:1014F000139711969C938E9313961C921E9212979B +:1015000034961296E2CF219708F680917902909155 +:101510007A02019797FD05C090937A028093790231 +:1015200004C010927A02109279028091790290910F +:101530007A0220917702309178022817390724F037 +:101540001092780210927702892BC1F48091710079 +:101550008D7F80937100809190008F7380939000B5 +:101560001092730210927402109275021092760219 +:10157000109272021092710210923B02DF91CF9191 +:101580001F910F91FF90EF90DF90CF9008951F92E1 +:101590000F920FB60F9211244F925F926F927F922B +:1015A0008F929F92AF92BF92CF92DF92EF92FF9273 +:1015B0002F933F934F935F936F937F938F939F935B +:1015C000AF93BF93CF93DF93EF93FF9380913B0251 +:1015D000882309F49BC1C0917902D0917A021C162C +:1015E0001D060CF093C140902B0250902C0260908D +:1015F0002D0270902E0220E030E0A901C301B2015B +:101600000E948F2A18160CF065C0C130D10509F46C +:1016100052C08091770290917802BE010E94612CA5 +:101620007C01909378028093770280903D029090A5 +:101630003E02A0903F02B090400220E030E040E83F +:101640005FE3C501B4010E94802860933D0270935E +:101650003E0280933F0290934002F701EE0FFF1F7E +:10166000EE0FFF1FEF5AFD4FA301920160817181C0 +:10167000828193810E94E82820E030E040E05EE330 +:101680000E94932A9B01AC01C501B4010E948F2ADC +:1016900018168CF4C7010196BE010E94612C90932C +:1016A00078028093770210923D0210923E021092CF +:1016B0003F0210924002E0917702F0917802EE0F23 +:1016C000FF1FEE0FFF1FEF5AFD4F60817181828176 +:1016D0009381D0C0C0907302D0907402E0907502E4 +:1016E000F090760220E030E0A901C701B6010E9427 +:1016F000E4282197882309F4A2C0FE01EE0FFF1F02 +:10170000EE0FFF1FEF5AFD4F80809180A280B380C3 +:10171000A5019401C701B6010E94E42887FF31C0EA +:10172000A501940160E070E08CED93EC0E94E82844 +:1017300020E030E040E451E40E94E82820E030E07E +:1017400040E05FE30E94932A9B01AC0160E070E0FF +:1017500080E090E40E94F62A9B01AC01C501B4012F +:101760000E94932A9B01AC01C701B6010E94E428A4 +:1017700087FF07C0A701960160E070E08CED93E45D +:1017800039C0A5019401C701B6010E948F2A18161D +:101790000CF055C0A501940160E070E08CED93E47D +:1017A0000E94E82820E030E040E451E40E94E8286C +:1017B00020E030E040E05FE30E94932A9B01AC010F +:1017C00060E070E080E090E40E94F62A9B01AC01AA +:1017D000C501B4010E94932A9B01AC01C701B60167 +:1017E0000E948F2A18165CF5A701960160E070E050 +:1017F0008CED93EC0E94E82820E030E040E451E4D6 +:101800000E94E82820E030E040E05FE30E94932A55 +:101810009B01AC0160E070E080E090E40E94F62A59 +:101820009B01AC01C701B6010E94932A6093730229 +:1018300070937402809375029093760213C0FE0138 +:10184000EE0FFF1FEE0FFF1FEF5AFD4F80819181BA +:10185000A281B3818093730290937402A093750266 +:10186000B093760260917302709174028091750258 +:101870009091760220912802309129022F3F4FEF5C +:10188000340731F02F5F3F4F309329022093280215 +:101890000E946F0E6B017C0120E034E244EF51E4C2 +:1018A0000E94E42887FF08C086EFC82E88E2D82E61 +:1018B00084EFE82E81E4F82E20E030E040E051E4AF +:1018C000C701B6010E94932A9B01AC0160E074E25B +:1018D00084E79BE40E94E8286B017C010E94552963 +:1018E0007093970060939600209106013091070154 +:1018F0004091080150910901C701B6010E94932A45 +:101900000E945529709399006093980080913C0241 +:10191000882309F433C1C0903702D0903802E09098 +:101920003902F0903A0220E030E0A901C701B60187 +:101930000E948F2A1816D4F58091280290912902CE +:101940008F3F2FEF920729F0019690932902809301 +:101950002802C701B6010E946F0E20E030E040E08F +:1019600051E40E94932A9B01AC0160E074E284E799 +:101970009BE40E94E8286B017C010E94552970932A +:1019800097006093960020910601309107014091E5 +:10199000080150910901C701B6010E94932A0E94D3 +:1019A0005529709399006093980008C01092970091 +:1019B0001092960010929900109298006091310256 +:1019C000709132026F5F7F4F7093320260933102E9 +:1019D000209196003091970080E090E0232BF1F069 +:1019E000C0919600D09197000E9481296B017C01E3 +:1019F000BE0180E090E00E9481299B01AC016091D2 +:101A000033027091340280913502909136020E9427 +:101A1000E82820E03FEF4FE757E410C00E948129FB +:101A20006B017C0120E030EE4FEF54E46091330213 +:101A30007091340280913502909136020E94932A6F +:101A40009B01AC01C701B6010E948F2A87FD96C099 +:101A500080912F028F5F80932F0290E020910303EB +:101A60003091040382179307A0F080910E0388231E +:101A700019F010922F020DC0809171008D7F80931C +:101A80007100809190008F738093900010923C02BF +:101A90007DC080913002C0912F02811128C0C0907A +:101AA0000803D0900903E0900A03F0900B0320E0B4 +:101AB00030E0A901C701B6010E948F2A1816BCF4B4 +:101AC00081E0809330021092370210923802109217 +:101AD000390210923A02C0923302D0923402E0925C +:101AE0003502F0923602C150C0932F0243C01092CB +:101AF00030021092290210922802E0910503F09121 +:101B0000060348E0C49FE00DF11D112480819181FE +:101B1000A281B3818093370290933802A093390257 +:101B2000B0933A0220E030E040E85EE364817581E2 +:101B3000868197810E94932A6B017C0180910A0122 +:101B4000682F70E080E090E00E94812920E030E082 +:101B500048EC52E40E94E8289B01AC01C701B601A1 +:101B60000E94932A6093330270933402809335026B +:101B70009093360210923202109231028091070344 +:101B800080FD04C010923C0210923B02FF91EF9145 +:101B9000DF91CF91BF91AF919F918F917F916F9185 +:101BA0005F914F913F912F91FF90EF90DF90CF90F9 +:101BB000BF90AF909F908F907F906F905F904F906D +:101BC0000F900FBE0F901F901895CF92DF92EF925B +:101BD000FF92CF93DF936B017C01EA0180912A028F +:101BE000811102C00E94E0098091070380FF46C076 +:101BF0008091790290917A0208970CF03FC0809111 +:101C000071008D7F8093710080913C0281110E9450 +:101C1000FA0981E080933B02109229021092280277 +:101C200020E030E0A901C701B6010E948F2A1816F2 +:101C3000DCF48091790290917A02FC01EE0FFF1F93 +:101C4000EE0FFF1FEF5AFD4FC082D182E282F38276 +:101C5000FC01EE0FFF1FEF5BFD4FD183C0830196A8 +:101C600090937A02809379028091710082608093D0 +:101C7000710080919000806880939000DF91CF91F7 +:101C8000FF90EF90DF90CF900895809107038170CF +:101C90000895809107038160809307030E949D232C +:101CA0000C94C803809107038E7F809307030C94E4 +:101CB0009D2380917B0290E0019666E070E00E9497 +:101CC000612C80937B02089580917B0290E00197C4 +:101CD00066E070E00E94612C80937B0208958F92F1 +:101CE0009F92AF92BF92CF92DF92EF92FF920F93AB +:101CF0001F93CF93DF936B017C01C0912802D09199 +:101D00002902BE0180E090E00E9481294B015C0124 +:101D1000A701960160E070E08CE594E40E94E82859 +:101D20009B01AC01C501B4010E94932A0E94552970 +:101D300020917B02233009F473C028F4222351F050 +:101D40002130E9F02CC1243009F4A0C0253009F479 +:101D5000E0C025C180E090E0A0E0BFE380930601F1 +:101D600090930701A0930801B093090110922B02F0 +:101D700010922C0210922D0210922E0210C110927D +:101D80002B0210922C0210922D0210922E0264311E +:101D9000710540F46A30710560F520E030E040E8FC +:101DA0005EE32BC0693C710508F0AAC080E090E0BA +:101DB0000E94812920E030E040EA51E40E947F281F +:101DC00020E030E044E353E40E94E8289B01AC01AA +:101DD0000E94932A20E030E040E05EE30E94932AD4 +:101DE0009B01AC0160E070E080E09EE30E947F28F0 +:101DF00044C020E030E040E05FE3C701B6010E944C +:101E0000932A6B017C0180E090E0A0E0BEE3809328 +:101E1000060190930701A0930801B0930901BFC088 +:101E200010922B0210922C0210922D0210922E0270 +:101E30004AE0469F9001479F300D1124C90168EB8D +:101E40007BE00E944D2CBC016C5D754077FF03C0A8 +:101E5000719561957109882777FD8095982F0E946B +:101E600083292EE333EC4EE259E30E94932A20E0CB +:101E700030E040EC5EE30E9480286093060170939E +:101E80000701809308019093090189C010922B02E9 +:101E900010922C0210922D0210922E02CE0183700D +:101EA0009927892BE1F0BE016170772780E090E0EF +:101EB0000E94812920E030E040E05EE30E94932A06 +:101EC00020E030E040E45FE30E9480286093060158 +:101ED0007093070180930801909309010CC080E082 +:101EE00090E0A0E0BFE38093060190930701A093E8 +:101EF0000801B0930901C770DD27CD2B09F04FC051 +:101F00001092060110920701109208011092090127 +:101F100046C010922B0210922C0210922D021092A9 +:101F20002E0200E010E020E03FE300930601109352 +:101F3000070120930801309309016739710578F191 +:101F400080E090E00E94812920E030E047E153E406 +:101F50000E947F2820E030E04AE754E40E94E8280D +:101F600020E030E048E452E40E94932A20E030E090 +:101F700040EA51E40E94C5290E945029660F771F4C +:101F8000660F771FFB01EE5AFE4F2081318142819F +:101F90005381C701B6010E94932A6B017C01C701DE +:101FA000B601DF91CF911F910F91FF90EF90DF90DD +:101FB000CF90BF90AF909F908F90089580918C02AA +:101FC0000895CF93DF9300D01F92CDB7DEB79C0169 +:101FD00080911303843019F593E099833B832A831E +:101FE0009093E9008FEF9091E800815095FD06C035 +:101FF00095ED9A95F1F700008111F5CF8091E800F9 +:1020000085FF0DC040E050E063E070E0CE01019636 +:102010000E9442128091E8008E778093E8000F9032 +:102020000F900F90DF91CF910895CF93DF9300D061 +:102030001F92CDB7DEB720911303243021F522E0A3 +:1020400029839B838A8383E08093E9008FEF9091BB +:10205000E800815095FD06C095ED9A95F1F70000D6 +:102060008111F5CF8091E80085FF0DC040E050E080 +:1020700063E070E0CE0101960E9442128091E80078 +:102080008E778093E8000F900F900F90DF91CF91A3 +:102090000895209113032430F1F422E02093E90005 +:1020A0002FEF3091E800215035FD06C035ED3A950F +:1020B000F1F700002111F5CF2091E80025FF0BC0BA +:1020C00040E050E065E070E00E9442128091E8003C +:1020D0008E778093E8000895CF93DF93EC01909181 +:1020E0001303943009F046C0809115018823D9F07C +:1020F000809116018823B9F09093E9008FEF9091B9 +:10210000E800815095FD06C095E19A95F1F7000031 +:102110008111F5CF8091E80085FF2CC040E050E0B0 +:1021200060E170E017C081E08093E9008FEF90914B +:10213000E800815095FD06C095ED9A95F1F70000F5 +:102140008111F5CF8091E80085FF14C040E050E098 +:1021500068E070E0CE010E9442128091E8008E7724 +:102160008093E80080E1FE01ACE7B2E001900D92BF +:102170008A95E1F7DF91CF91089580911203811143 +:1021800009C00E94D7130E9434148091E200846039 +:102190008093E2000895109212030895089508951F +:1021A0000C947B2242E061EC81E00E94511342E0FA +:1021B00061EC82E00E94511342E061EC83E00E94F6 +:1021C000511342E161EC84E00C94511380911503AA +:1021D000833009F455C030F4813071F0823009F455 +:1021E0008EC008958A3009F47AC08B3009F460C03B +:1021F000893009F09CC020C080911403813A09F015 +:1022000096C08091E800877F8093E8008091180352 +:1022100090911903892B21F460E18CE792E003C0CF +:1022200060E080E090E070E00E948D128091E80014 +:102230008B778093E800089580911403813209F030 +:1022400076C08091180390911903009719F00397B5 +:1022500009F06DC08091E800877F8093E80080914D +:10226000E80082FD05C0809113038111F8CF5FC0A3 +:102270008091F10080938C028091E8008B7753C0AD +:1022800080911403813A09F052C080911803909113 +:102290001903892B09F04BC08091E800877F809358 +:1022A000E8008091E80080FFFCCF8091150136C0E6 +:1022B000809114038132D9F580911803909119030C +:1022C000892BA9F58091E800877F8093E8000E9420 +:1022D000861380911603809315010C94BC1B80918A +:1022E0001403813221F58091E800877F8093E80014 +:1022F0000E9486138091170380938D020895809128 +:102300001403813AA1F48091E800877F8093E8006C +:102310008091E80080FFFCCF80918D028093F100D6 +:102320008091E8008E778093E8000C9486130895DE +:1023300084B7877F84BF88E10FB6F89480936000EC +:10234000109260000FBE90E080E80FB6F894809382 +:102350006100909361000FBE0E9429170E94D7135D +:102360000E9434148091E20084608093E2007894AB +:102370000E94BA160E942B178BE091E00E94D5169E +:1023800080911303853069F40E943C2280911103EF +:102390008823B1F30E946A22882391F30E942C12B1 +:1023A000EFCF0E943317ECCF292F3327233031058D +:1023B000C9F064F42130310581F02230310509F093 +:1023C00043C08DE690E028E433E042C0213231057D +:1023D000F1F02232310541F137C082E190E025EB86 +:1023E00033E036C099278130910541F08230910564 +:1023F00041F0892B49F5E4E4F3E005C0E6E1F3E0C0 +:1024000002C0ECEEF2E0849190E09F0121C06430C4 +:10241000D8F4E62FF0E0EE0FFF1FE255FE4F2081CB +:10242000318189E090E014C0643070F470E0FB0109 +:10243000EE0FFF1FEA55FE4F20813181FB01EE5563 +:10244000FE4F808190E004C080E090E020E030E02A +:10245000FA0131832083089580E189BD82E189BD3D +:1024600009B400FEFDCF8091D8008F7D8093D80005 +:102470008091E00082608093E0008091E00081FD27 +:10248000FCCF0895CF92DF92EF92FF920F931F93AC +:10249000CF93DF93EC018B016A010E94A513811198 +:1024A00033C0C114D10439F0F60180819181081B39 +:1024B000190BC80FD91FE12CF12C0115110519F1C9 +:1024C0008091E80085FD16C08091E8008E778093AA +:1024D000E800C114D10449F0F60180819181E80E31 +:1024E000F91EF182E08285E00FC00E94A5138823C7 +:1024F00021F30AC089918093F10001501109FFEF87 +:10250000EF1AFF0ADACF80E0DF91CF911F910F9190 +:10251000FF90EF90DF90CF90089520911A033091B3 +:102520001B032617370748F06115710539F4209110 +:10253000E8002E772093E80001C0B90140E0611562 +:102540007105A9F120911303222309F443C025301A +:1025500009F442C02091E80023FD40C02091E8002A +:1025600022FD32C02091E80020FFE9CF4091F30026 +:102570002091F20030E0342BFC01CF016115710590 +:1025800059F02830310540F481918093F100615079 +:1025900071092F5F3F4FF1CF41E02830310509F03D +:1025A00040E02091E8002E772093E800C8CF411149 +:1025B000C9CF0AC080911303882361F0853061F090 +:1025C0008091E80083FD0AC08091E80082FFF2CF8D +:1025D00080E0089582E0089583E0089581E0089501 +:1025E00020911A0330911B032617370748F0611515 +:1025F000710539F42091E8002E772093E80001C09E +:10260000B901FC0120E06115710591F1809113037E +:10261000882309F440C0853009F43FC08091E80068 +:1026200083FD3DC08091E80082FD2FC08091E800CD +:1026300080FFE9CF2091F3008091F20090E0922B8F +:102640006115710559F08830910540F4249120936B +:10265000F1003196615071090196F2CF21E008979F +:1026600009F020E08091E8008E778093E800CBCFDE +:102670002111CCCF0AC080911303882361F08530EB +:1026800061F08091E80083FD0AC08091E80082FF3C +:10269000F2CF80E0089582E0089583E0089581E01C +:1026A0000895982F973058F59093E900981739F0CE +:1026B0007091EC002091ED005091F00003C0242FA8 +:1026C000762F50E021FF19C03091EB003E7F309310 +:1026D000EB003091ED003D7F3093ED003091EB0049 +:1026E00031603093EB007093EC002093ED00509339 +:1026F000F0002091EE0027FF07C09F5FD3CF8F70BF +:102700008093E90081E0089580E0089580911403AA +:1027100087FF11C08091E80082FD05C080911303FE +:102720008111F8CF11C08091E8008B770BC08091A8 +:102730001303882349F08091E80080FFF8CF80914F +:10274000E8008E778093E80008952091E4003091AE +:10275000E50095E64091EC00842F817040FF22C097 +:102760008091E80080FD1CC080911303882391F0C4 +:10277000853091F08091EB0085FD10C04091E40020 +:102780005091E5004217530729F39A01915011F730 +:1027900084E0089582E0089583E0089581E008953B +:1027A00080E008954091E80042FFDECF08950E9446 +:1027B00045140E944D14E0EEF0E08081816080833A +:1027C000E8EDF0E080818F77808319BCA7EDB0E061 +:1027D0008C918E7F8C9380818F7E808310921203E8 +:1027E00008950F931F93CF93DF930E9445140E9487 +:1027F0004D14C8EDD0E088818F7788838881806808 +:10280000888388818F7D888319BC1092130310926E +:102810000F03109211031092100300EE10E0F80164 +:1028200080818B7F808388818160888342E060E043 +:1028300080E00E945113E1EEF0E080818E7F808382 +:10284000E2EEF0E080818160808380818860808317 +:10285000F80180818E7F8083888180618883DF9109 +:10286000CF911F910F910895E8EDF0E080818F7E68 +:102870008083E7EDF0E080818160808384E082BF27 +:1028800081E0809312030C94F113E8EDF0E0808175 +:102890008E7F80831092E20008951092DA001092E9 +:1028A000E10008951F920F920FB60F9211242F93FB +:1028B0003F934F935F936F937F938F939F93AF93C8 +:1028C000BF93EF93FF938091E10082FF0BC0809153 +:1028D000E20082FF07C08091E1008B7F8093E100DE +:1028E0000E94B9168091DA0080FF1FC08091D80045 +:1028F00080FF1BC08091DA008E7F8093DA00809188 +:10290000D90080FF0DC080E189BD82E189BD09B495 +:1029100000FEFDCF81E0809313030E94BD1005C02F +:1029200019BC109213030E94CB108091E10080FF2C +:1029300019C08091E20080FF15C08091E2008E7F77 +:102940008093E2008091E20080618093E2008091B8 +:10295000D80080628093D80019BC85E0809313036F +:102960000E94CF108091E10084FF30C08091E2008E +:1029700084FF2CC080E189BD82E189BD09B400FEDD +:10298000FDCF8091D8008F7D8093D8008091E100A9 +:102990008F7E8093E1008091E2008F7E8093E20041 +:1029A0008091E20081608093E20080910F03882390 +:1029B00011F084E007C08091E30087FD02C081E050 +:1029C00001C083E0809313030E94D0108091E10046 +:1029D00083FF29C08091E20083FF25C08091E10040 +:1029E000877F8093E10082E08093130310920F03AE +:1029F0008091E1008E7F8093E1008091E2008E7FE4 +:102A00008093E2008091E20080618093E20042E0E6 +:102A100060E080E00E9451138091F0008860809314 +:102A2000F0000E94CE10FF91EF91BF91AF919F9166 +:102A30008F917F916F915F914F913F912F910F9067 +:102A40000FBE0F901F9018951F920F920FB60F9206 +:102A500011242F933F934F935F936F937F938F93A3 +:102A60009F93AF93BF93CF93DF93EF93FF93C09167 +:102A7000E900CF708091EC00D82FD17080FDD0E8B4 +:102A80001092E9008091F000877F8093F0007894A5 +:102A90000E9468151092E9008091F0008860809390 +:102AA000F000CD2BCF70C093E900FF91EF91DF9143 +:102AB000CF91BF91AF919F918F917F916F915F91D6 +:102AC0004F913F912F910F900FBE0F901F9018952F +:102AD0001F93CF93DF93CDB7DEB7AA970FB6F894C5 +:102AE000DEBF0FBECDBFE4E1F3E088E08E0F909132 +:102AF000F10091938E13FBCF0E94E6108091E800C5 +:102B000083FF1FC18091140390911503492F50E05A +:102B10004A30510508F015C1FA01EA5AFF4F0C94EA +:102B2000752C803881F0823809F00BC18091180330 +:102B30008F708093E9008091EB0085FB882780F9F6 +:102B40001092E90006C08091100390911103911139 +:102B500082609091E800977F9093E8008093F10065 +:102B60001092F100C8C0282F2D7F09F0EAC08823F9 +:102B700019F0823061F0E5C080911603813009F0D0 +:102B8000E0C0933009F080E0809311032BC0809166 +:102B90001603811127C0809118038F7009F4D1C0EA +:102BA0008093E9002091EB0020FF1CC0933021F4BA +:102BB0008091EB00806214C09091EB009061909343 +:102BC000EB0021E030E0A90102C0440F551F8A95B7 +:102BD000E2F74093EA001092EA008091EB008860EF +:102BE0008093EB001092E9008091E800877F86C017 +:102BF0008111A7C0109116031F778091E3008078A0 +:102C0000812B8093E3008091E800877F8093E80028 +:102C10000E9486138091E80080FFFCCF8091E30042 +:102C200080688093E300111102C082E001C083E05C +:102C30008093130386C08058823008F082C0809150 +:102C40001603909117038C3D53E0950779F583E0C7 +:102C50008A838AE289834FB7F894DE01139620E0D5 +:102C60003EE051E2E32FF0E050935700E49120FF63 +:102C700003C0E295EF703F5FEF708E2F90E0EA3077 +:102C800010F0C79601C0C0968D939D932F5F24319D +:102C900049F74FBF8091E800877F8093E8006AE2A0 +:102CA00070E0CE0101960E948D1214C0AE014F5FFC +:102CB0005F4F609118030E94D411BC01009709F482 +:102CC00040C09091E800977F9093E80089819A81B5 +:102CD0000E94F0128091E8008B778093E80031C069 +:102CE000803879F58091E800877F8093E8008091B3 +:102CF0000F038093F1008091E8008E778093E800C5 +:102D00000E9486131EC081111CC090911603923040 +:102D1000C0F48091E800877F8093E80090930F03D0 +:102D20000E94861380910F03811106C08091E300F9 +:102D300087FD02C081E001C084E0809313030E94FC +:102D4000D2108091E80083FF0AC08091E800877F5D +:102D50008093E8008091EB0080628093EB00AA965C +:102D60000FB6F894DEBF0FBECDBFDF91CF911F919C +:102D700008950895CF93809113038823A1F0C09103 +:102D8000E900CF709091EC00892F817090FD80E870 +:102D9000C82B1092E9008091E80083FD0E9468151D +:102DA000CF70C093E900CF910895909393028093E0 +:102DB00092020895E0919202F0919302309721F0EF +:102DC0000190F081E02D099480E00895E091920255 +:102DD000F0919302309721F00280F381E02D099465 +:102DE0000895E0919202F0919302309721F00480CF +:102DF000F581E02D0994089520919002309191027F +:102E00008217930771F09093910280939002E09162 +:102E10009202F0919302309721F00680F781E02D25 +:102E20000994089520918E0230918F0282179307A2 +:102E300071F090938F0280938E02E0919202F09154 +:102E40009302309721F00084F185E02D09940895D4 +:102E500008950C9428170E94AF220E9400090E9436 +:102E600035230C94E4275F926F927F928F929F920A +:102E7000AF92BF92CF92DF92EF92FF920F931F9388 +:102E8000CF93DF9300D000D01F92CDB7DEB70E9462 +:102E900045099DE9C92E92E0D92E03E010E0AA244D +:102EA000A394B12C502E802F0E94C0094C01F60132 +:102EB000729062906F016826792661147104A1F402 +:102EC0000150110978F78FEF89838A831B820E9452 +:102ED000B8228160782F9D838C8349815A816B81D0 +:102EE0008D810E94E31738C08091F20281FD0E941B +:102EF000C9092BE030E07501022E02C0EE0CFF1C68 +:102F00000A94E2F7C70186219721892B09F12983C9 +:102F10005A828E209F2091E0892809F490E09B83BB +:102F20000E94B8228160782F9D838C8349815A81C9 +:102F30006B818D810E94E317000F111FF801EB5682 +:102F4000FD4F80819181E826F926F182E08204C05C +:102F50002150310980F6B4CF0E941C2510919402B3 +:102F60000E94DA161817D1F00E94DA1680939402A4 +:102F70000F900F900F900F900F90DF91CF911F91B6 +:102F80000F91FF90EF90DF90CF90BF90AF909F9008 +:102F90008F907F906F905F900C94EA080F900F9045 +:102FA0000F900F900F90DF91CF911F910F91FF9095 +:102FB000EF90DF90CF90BF90AF909F908F907F90D9 +:102FC0006F905F900895CF93DF93CDB7DEB72B97C7 +:102FD0000FB6F894DEBF0FBECDBF4F835887698709 +:102FE0007A878B87DE01119686E0FD0111928A9522 +:102FF000E9F785E0FE01379601900D928A95E1F799 +:1030000049815A816B817C818D819E810E945A1EEB +:103010002B960FB6F894DEBF0FBECDBFDF91CF91D8 +:103020000895CF93882309F4C2C0C82F823859F479 +:103030000E94DA1681FDBBC089E30E9434210E9400 +:10304000012289E30CC0833879F40E94DA1680FDEE +:10305000AEC083E50E9434210E94012283E50E94D4 +:103060007621CF910C940122843859F40E94DA160B +:1030700082FD9DC087E40E9434210E94012287E4E2 +:10308000EECF8CEF8C0F813A48F48C2F0E944C27A6 +:1030900081118DC08C2F0E943421E3CF80E28C0FF0 +:1030A000883048F4C77081E001C0880FCA95EAF7FC +:1030B0000E94BA21D6CF8BE58C0F833078F4C53AC5 +:1030C00029F0C63A31F083E890E005C081E890E04D +:1030D00002C082E890E0CF910C94FC1688E58C0F3A +:1030E000833108F064C0C83A39F1C93A41F1CA3AAB +:1030F00049F1CB3A51F1CC3A59F1CD3A61F1C03BAB +:1031000069F1CE3A71F1CF3A79F1C13B81F1C23B1D +:1031100089F1C33B91F1C43B99F1C53BA1F1C63B99 +:10312000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BF9 +:10313000C9F180E090E038C082EE90E035C089EEC1 +:1031400090E032C08AEE90E02FC085EB90E02CC07A +:1031500086EB90E029C087EB90E026C08CEC90E0F5 +:1031600023C08DEC90E020C083E891E01DC08AE888 +:1031700091E01AC082E991E017C084E991E014C09F +:1031800081E292E011C083E292E00EC084E292E01C +:103190000BC085E292E008C086E292E005C087E2BB +:1031A00092E002C08AE292E0CF910C941217CF9184 +:1031B0000895882309F44BC0823859F40E94DA1626 +:1031C00081FF45C089E30E9434210E94012289E3E6 +:1031D0000CC0833871F40E94DA1680FF38C083E592 +:1031E0000E9434210E94012283E50E9476210C94E2 +:1031F0000122843859F40E94DA1682FF28C087E43D +:103200000E9434210E94012287E4EFCF9CEF980FA7 +:10321000913A58F390E2980F983050F4877091E00B +:1032200001C0990F8A95EAF7892F0E94C021DFCF4C +:103230009BE5980F933020F480E090E00C94FC160E +:10324000885A833120F480E090E00C94121708959E +:10325000882321F00E94BA210C940122089588232A +:1032600021F00E94C0210C94012208957F928F9238 +:103270009F92AF92BF92CF92DF92EF92FF920F9305 +:103280001F93CF93DF931F92CDB7DEB77C01C62E7D +:10329000772EFC01058102950F70128111110E9499 +:1032A000D7210E942D21882379F0112369F080E233 +:1032B0008C0D883048F082E00E9416210E942D215A +:1032C00091E0D82ED92601C0D12CE72DE295EF70E0 +:1032D000F0E0E05AFF4F0C94752C872D807F072D6E +:1032E0000F70882311F00295007F112389F00023CD +:1032F00009F499C180E28C0D883020F4802F0E945F +:10330000BA2103C0802F0E94CA210E9401228BC1D2 +:103310008C2D0E94D918002309F4C3C180E28C0DC2 +:10332000883020F4802F0E94C02103C0802F0E948B +:10333000D0210E940122B5C1872D807F972D9F70DB +:10334000803211F4892F03C0892F8295807FCC2091 +:1033500021F0F1E0CF16A1F01DC0112339F00023B8 +:1033600019F1013009F50E94EA219BC1002319F0EF +:10337000013009F496C189830E94ED21898110C131 +:10338000112321F0063008F08CC10EC0053008F082 +:1033900088C106C1112359F0002331F0F70195814E +:1033A00090FF41C19F7095830E9428197AC1002324 +:1033B00009F4F6C03EC1872D86958695837090E00E +:1033C000009719F0019761F06CC1112321F08C2D49 +:1033D000972D937002C080E090E00E94FC1661C1BE +:1033E000112321F08C2D972D937002C080E090E086 +:1033F0000E94121756C18C2D112319F00E9424240B +:1034000002C00E948C240E9411254BC1872D83701D +:1034100009F052C0111145C18C2D82958695877097 +:10342000880F880F9C2D9F70892E912CA12CB12C78 +:10343000082E04C0880C991CAA1CBB1C0A94D2F745 +:10344000C4FE14C00FE010E020E030E0B901A80194 +:1034500004C0440F551F661F771F8A95D2F7CB0112 +:10346000BA01609570958095909503C060E070E01A +:10347000CB01272D26952695237030E0223031058B +:1034800069F02330310589F0682979298A299B2937 +:103490002130310571F00E94A21F03C168297929EA +:1034A0008A299B290E94BE1FFCC00E94A21FC50141 +:1034B000B4010E94861FF5C0112319F0872D817079 +:1034C00001C08695882309F4ECC08C2D82958695E1 +:1034D0008770880F880F9C2D9F70892E912CA12CAE +:1034E000B12C082E04C0880C991CAA1CBB1C0A9481 +:1034F000D2F7C4FE14C00FE010E020E030E0B901C4 +:10350000A80104C0440F551F661F771F8A95D2F784 +:10351000CB01BA01609570958095909503C060E0ED +:1035200070E0CB01272D269526952370422F50E081 +:103530004230510569F04330510589F068297929F5 +:103540008A299B294130510571F00E947C20A9C035 +:10355000682979298A299B290E949820A2C00E9463 +:103560007C20C501B4010E9460209BC08C2D90E09E +:10357000FC01E05EF109E531F10508F050C0E059C9 +:10358000FF4F0C94752C0C2D0F70872D8F7111230C +:1035900021F00E94F91F802F07CF0E941A20802F50 +:1035A0000E942F197EC0112341F0053008F079C028 +:1035B000872D8F710E943F2074C0063008F071C0C3 +:1035C000F7CF112339F0872D8F710E94F91F69C041 +:1035D0001123C9F3872D8F710E941A2062C0112315 +:1035E00029F0872D8F710E94E41F5BC00E94DA1FB3 +:1035F00058C0112351F0172D1F71812F0E94F91F00 +:1036000063E0812F0E940D214CC081E00E941621B1 +:10361000023008F446C082E00E94162142C0112305 +:1036200031F0002381F28C2D0E9411183AC0002342 +:1036300089F28C2D0E94D91834C0472D4F706C2D03 +:10364000C7010E9455030E94FE1E2BC0111129C004 +:10365000472D4F7050E042305105B9F04CF4411500 +:10366000510581F041305105E1F40E940C2819C048 +:103670004330510569F04430510599F48C2D0E9476 +:103680005E280FC00E94F5270CC00E94282809C0A0 +:103690000E943B2806C0472D4F706C2DC7010E9429 +:1036A000CB05DD20F9F00E94092180FD1BC0F70148 +:1036B00012820E9403210E94F91FC7010E94811BF0 +:1036C0000E9403210F90DF91CF911F910F91FF90E6 +:1036D000EF90DF90CF90BF90AF909F908F907F90B2 +:1036E0000C941A200F90DF91CF911F910F91FF90B2 +:1036F000EF90DF90CF90BF90AF909F908F907F9092 +:1037000008950F931F93CF93DF93EC0188819981E4 +:103710002B813C81232BB9F09F3F11F48F3F99F00F +:10372000CE010E94CA03882371F0688179818A8161 +:103730000E94FF208C010E94B4200E947B1FB801D0 +:10374000CE010E943619DF91CF911F910F910895FC +:103750000E94D7210E94E7210E94AC210E940122F1 +:103760000E94C2250E94112580E090E00E94FC1674 +:1037700080E090E00C9412170E94C7210C94A81BC3 +:103780000E94F420292F22952F7030E02C30310533 +:103790004CF42A3031056CF42250310922303105C5 +:1037A000A8F407C02C30310569F02F30310551F0F5 +:1037B0000DC0803F69F018F4803E40F409C0843F9A +:1037C00029F406C093FB882780F9089580E00895C6 +:1037D00081E00895CF93DF9300D000D01F92CDB742 +:1037E000DEB70F900F900F900F900F90DF91CF9159 +:1037F0000895CF93DF9300D000D000D0CDB7DEB7CF +:1038000026960FB6F894DEBF0FBECDBFDF91CF91E5 +:1038100008951F93CF93DF93C0919D0216E080918E +:103820009E02C81799F0D0E01C9FF0011D9FF00D7B +:103830001124E156FD4F4081518162817381848161 +:1038400095810E94F91B2196C770E9CFDF91CF9136 +:103850001F9108954091CF025091D0026091D10202 +:103860007091D2028091D3029091D4020C94F91BF2 +:103870008091D40282958F7009F054C08091D1025A +:10388000882309F44FC080919D02A0919E0260910F +:10389000CF027091D0024091D2025091D302B6E093 +:1038A0008A1709F43FC090E041155105C1F17F3FEF +:1038B00011F46F3FA1F1B89FF001B99FF00D1124F1 +:1038C000E156FD4F218172132AC02081621327C067 +:1038D0002281211124C0238134812417350710F45B +:1038E00021503109241B350B283C3105C0F42091AF +:1038F000D4022F7020612093D40226E0289FF0018B +:10390000299FF00D1124EC55FD4F80818F7080614F +:1039100080838FEC92E00E94811B0C94091C01961D +:103920008770BECF0895CF92DF92EF92FF920F93F0 +:103930001F93CF93DF93CDB7DEB762970FB6F8949E +:10394000DEBF0FBECDBF8C0185E0F801DE011D9604 +:1039500001900D928A95E1F7D8014C9111965C91F6 +:10396000119712966C9112971396CD90DC90149744 +:103970003091CF027091D0028091D2029091D30207 +:10398000009709F46BC17F3F19F43F3F09F466C10A +:10399000E090D102EE2009F4C0C02091D402C816F4 +:1039A000D90628F0F601E81BF90BCF0104C0809579 +:1039B00090958C0D9D1DFF24F394883C910578F023 +:1039C000F12C207F09F0C6C07C2DD98AC88A89894C +:1039D0000E94EA1B8FEC92E00E94811BB1C0822FF3 +:1039E000807F09F046C0751314C0341312C06111F2 +:1039F00010C02F7020612093D4020E942A1C8FECEB +:103A000092E00E94811B8091D402D80115968C937C +:103A10002EC0CD2819F15F3F11F44F3FF9F0F62E7B +:103A200061111CC080919D0220919E0236E0821798 +:103A300009F45AC090E0389FF001399FF00D11242D +:103A4000E156FD4F7181571306C07081471303C0C3 +:103A50007281711103C001968770E9CFF62E66233B +:103A600009F418C18091D40281608093D402F12CB2 +:103A700011C1751308C0341306C0611104C08091D0 +:103A8000D402D801C3C04D875E878D859E856A8B21 +:103A90000E94C01B6A898823E1F16623D1F120913D +:103AA000D402822F82958F7090E0029774F08091FB +:103AB000CF029091D00298878F831986DB86CA86C1 +:103AC0002C87CE0107960E94811B86E0F801AFEC9F +:103AD000B2E001900D928A95E1F70E94381C0E9495 +:103AE0002A1CFF24F394D6C04D875E878D859E8562 +:103AF0000E94F420292F22952F7030E022303105CA +:103B00000CF0BCC09F7009F0B6C0805E883008F42D +:103B1000C1C0C8010E94811BE4CFC816D90608F4B1 +:103B200053C0F601E81BF90BCF01883C910508F45E +:103B300050C0F12C7C2DD98AC88A89890E94EA1B41 +:103B4000EFECF2E086E0DF011D928A95E9F70E9432 +:103B50002A1CA0C0751314C0341312C0611110C008 +:103B60008091D402F8018583C8010E94811B86E000 +:103B7000EFECF2E0DF011D928A95E9F7FE2C8AC096 +:103B80004D875E878D859E856A8B0E94C01B6A89E2 +:103B9000882309F4BECF662309F4BBCF2091D40259 +:103BA000822F82958F7090E002970CF48ECF8091D7 +:103BB000CF029091D0029A8389831B82DD82CC82CE +:103BC0002E83CE0101967FCF809590958C0D9D1D03 +:103BD000ACCFF62E662309F49CCF75132EC0341398 +:103BE0002CC02091D40220FD1FC0822F82958F709F +:103BF000D9F0D80115962C9315978F3049F08F5F27 +:103C0000982F9295907F822F8F70892B15968C9389 +:103C1000C8010E94811B86E0F801AFECB2E0019080 +:103C20000D928A95E1F793CF86E0F801AFECB2E010 +:103C300001900D928A95E1F72DC04D875E878D85A5 +:103C40009E850E94C01B811140CF8091D40281606B +:103C50008093D402C8010E94811B1CC0662309F412 +:103C600058CF4D875E878D859E850E94C01B882317 +:103C700009F44FCF2ACF811148CF0CC02430310531 +:103C80000CF047CF9F7009F440CFF8019581907FE9 +:103C900009F03BCF8F2D62960FB6F894DEBF0FBEB2 +:103CA000CDBFDF91CF911F910F91FF90EF90DF90EB +:103CB000CF9008951F93CF93DF93CDB7DEB72C97A6 +:103CC0000FB6F894DEBF0FBECDBF4F83588769870C +:103CD0007A878B879C87CE0107960E94931C882346 +:103CE00069F08F8198852A853B85232BF1F19F3FD1 +:103CF00009F063C08F3F09F060C037C086E0FE0165 +:103D00003796DE01119601900D928A95E1F76F8149 +:103D10007885EA85FB85309741F17F3F11F46F3F4D +:103D200021F120919E0230E0C90101968770992708 +:103D300040919D0250E08417950709F447C06983BC +:103D40007A83FD83EC8396E0929FD001939FB00D20 +:103D50001124A156BD4FFE01319601900D929A9506 +:103D6000E1F780939E020E94091C16E080919D025B +:103D700090919E028917C1F1189FC00111248156AC +:103D80009D4F0E94931C882379F1E0919D021E9F14 +:103D9000F0011124E156FD4F408151816281738110 +:103DA000848195810E94F91B80919D0290E001968B +:103DB0008770992780939D02D9CF4F815885698557 +:103DC0007A858B859C850E94F91BCFCF0E94BC1BF6 +:103DD00010929E0210929D02EFECF2E086E0DF016D +:103DE0001D928A95E9F7C1CF2C960FB6F894DEBFE5 +:103DF0000FBECDBFDF91CF911F910895EF92FF923B +:103E00000F931F93CF93DF938C01009709F46CC03D +:103E1000F12CEE24E394E8012196F8018491843793 +:103E200040F4843008F051C0813081F0823019F1C3 +:103E30005BC0853709F444C0A8F19CE7980F903720 +:103E400008F052C08F770E94D91841C00E5F1F4FF3 +:103E5000FE01C49180E28C0F883048F4C7708E2D2B +:103E600001C0880FCA95EAF70E94DA2114C08C2F8E +:103E70000E9411182DC00E5F1F4FFE01C49180E2F9 +:103E80008C0F883058F4C7708E2D01C0880FCA95EA +:103E9000EAF70E94E0210E9401221AC08C2F0E94A2 +:103EA000D91816C00E5F1F4FFE01C491CC2381F0BC +:103EB0008FE99FE00197F1F700C00000C150F6CFF5 +:103EC0000E5F1F4FFE01F49003C00E9411188E0177 +:103ED0008F2D882309F49FCFEFE9FFE03197F1F7A9 +:103EE00000C000008150F5CFDF91CF911F910F915D +:103EF000FF90EF90089508956093D9027093DA02CD +:103F00008093DB029093DC020C94A81B0F931F9309 +:103F10000091D9021091DA022091DB023091DC028B +:103F2000DC01CB01802B912BA22BB32B8093D902E8 +:103F30009093DA02A093DB02B093DC021F910F9101 +:103F40000C94A81B0F931F930091D9021091DA02D1 +:103F50002091DB023091DC02DC01CB018023912334 +:103F6000A223B3238093D9029093DA02A093DB02B9 +:103F7000B093DC021F910F910C94A81B0F931F9319 +:103F80000091D9021091DA022091DB023091DC021B +:103F9000DC01CB0180279127A227B3278093D90288 +:103FA0009093DA02A093DB02B093DC021F910F9191 +:103FB0000C94A81B1092D5021092D6021092D70230 +:103FC0001092D8020C94A81B41E050E060E070E031 +:103FD00004C0440F551F661F771F8A95D2F7409380 +:103FE000D5025093D6026093D7027093D8020C94F6 +:103FF000A81B41E050E060E070E004C0440F551F92 +:10400000661F771F8A95D2F78091D5029091D602CC +:10401000A091D702B091D802482B592B6A2B7B2B49 +:104020004093D5025093D6026093D7027093D80282 +:104030000C94A81B41E050E060E070E004C0440F25 +:10404000551F661F771F8A95D2F74095509560954A +:1040500070958091D5029091D602A091D702B0912F +:10406000D802482359236A237B234093D5025093D7 +:10407000D6026093D7027093D8020C94A81B41E03B +:1040800050E060E070E004C0440F551F661F771FCA +:104090008A95D2F78091D5029091D602A091D7024D +:1040A000B091D802482759276A277B274093D50229 +:1040B0005093D6026093D7027093D8020C94A81B39 +:1040C0000F931F930091D5021091D6022091D70231 +:1040D0003091D802DC01CB01802B912BA22BB32B8A +:1040E0008093D5029093D602A093D702B093D802C2 +:1040F0001F910F910C94A81B0F931F930091D50251 +:104100001091D6022091D7023091D802DC01CB0168 +:1041100080239123A223B3238093D5029093D602C8 +:10412000A093D702B093D8021F910F910C94A81BB3 +:104130000F931F930091D5021091D6022091D702C0 +:104140003091D802DC01CB0180279127A227B32729 +:104150008093D5029093D602A093D702B093D80251 +:104160001F910F910C94A81B0895CF92DF92EF92AC +:10417000FF920F931F93CF93DF938C01C090D902CE +:10418000D090DA02E090DB02F090DC028091D50260 +:104190009091D602A091D702B091D802C82AD92A0C +:1041A000EA2AFB2ACFE1D0E0D701C6010C2E04C0D9 +:1041B000B695A795979587950A94D2F780FF06C084 +:1041C000B8018C2F0E945008019721F4219760F7C5 +:1041D00080E001C08C2FDF91CF911F910F91FF9054 +:1041E000EF90DF90CF900895CF93DF93EC010E9482 +:1041F000B520BE010E945008DF91CF910895CB01F8 +:104200000E94F42008958091DD028595859585951D +:1042100008958091DD028770089598E0899F90014C +:104220001124262B2093DD020C94F91F2091DD022E +:10423000809582238093DD02982F977069F430E097 +:10424000482F552747FD50952417350729F08595A8 +:10425000859585950C941A2008959091DD029770AC +:1042600081E009F480E0089590911501992321F0EF +:1042700090911601911109C02091170130911801F8 +:10428000F90132969FEF40E01FC0982F96959695C2 +:1042900096959F3050F5E0911701F0911801E90FC4 +:1042A000F11D877021E030E0A90102C0440F551FC5 +:1042B0008A95E2F7CA019181892B818308959F3FF6 +:1042C00039F04F5F4E3041F051915813F8CF0DC087 +:1042D0005111F7CF942FF5CF9F3F39F0F901E90F36 +:1042E000F11D97FDFA958283089508959091150127 +:1042F000992321F090911601911109C02091170185 +:1043000030911801F9013296205F3F4F1FC0982F5E +:104310009695969596959F30F0F4E0911701F0915F +:104320001801E90FF11D877021E030E0A90102C0FA +:10433000440F551F8A95E2F7CA0180959181892320 +:10434000818308953196E217F30729F0908198133D +:10435000F9CF1082F7CF089581E090E0E091170146 +:10436000F0911801E80FF91F108201968031910534 +:10437000A9F708959091F102892B8093F102089595 +:1043800080959091F10289238093F1020895109213 +:10439000F10208959091F002892B8093F002089524 +:1043A00080959091F00289238093F00208951092F5 +:1043B000F00208959091EF02892B8093EF02089507 +:1043C00080959091EF0289238093EF0208951092D7 +:1043D000EF0208958093DE0208951092DE020895A0 +:1043E0008091170190911801FC0131969C01205F8A +:1043F0003F4F80E0919191118F5FE217F307D1F762 +:104400000895E0911701F09118018091F1028083E5 +:10441000E0911701F091180190818091F002892BB1 +:104420008083E0911701F091180190818091EF0253 +:10443000892B80838091DE02882361F0E09117014F +:10444000F09118019081892B80830E94F0218111C5 +:104450001092DE0280911701909118010C94E616DB +:1044600020E0009739F0AC01415051098423952395 +:104470002F5FF7CF822F089580911303843039F195 +:104480001092F30220E488E190E00FB6F894A8952A +:10449000809360000FBE2093600080E00E94BC0209 +:1044A00080E00E94EA0883B7817F846083BF83B77E +:1044B000816083BF7894889583B78E7F83BF88E1BE +:1044C0000FB6F89480936000109260000FBE0895BC +:1044D0000895089580E00E94BC020E9468220E9414 +:1044E00045090E9469220E94CA0991E0811101C018 +:1044F00090E0892F08950E94BC1B80E00E94BC02BE +:104500000E94E4270E94DA160C94EA081F920F9288 +:104510000FB60F9211248F939F93AF93BF93809107 +:10452000F302811113C08091F4029091F502A091E1 +:10453000F602B091F7024196A11DB11D8093F402DD +:104540009093F502A093F602B093F702BF91AF915A +:104550009F918F910F900FBE0F901F90189582E042 +:1045600084BD93E095BD9AEF97BD80936E0008954A +:104570002FB7F8948091F4029091F502A091F60281 +:10458000B091F7022FBF0895CF92DF92EF92FF9282 +:104590000F931F932FB7F8944091F4025091F502B6 +:1045A0006091F6027091F7022FBF6A017B01EE2441 +:1045B000FF248C0120E030E0C016D106E206F306AD +:1045C00010F4415051099A01281B390BC9011F9160 +:1045D0000F91FF90EF90DF90CF9008951F920F9270 +:1045E0000FB60F9211248F939F93AF93BF93809137 +:1045F000F4029091F502A091F602B091F7020196B3 +:10460000A11DB11D8093F4029093F502A093F602D0 +:10461000B093F702BF91AF919F918F910F900FBE12 +:104620000F901F9018950E94D713F8942FEF87EAE8 +:1046300091E6215080409040E1F700C0000087E003 +:1046400090EBDC0180931E0390931F03A093200343 +:10465000B09321039CE088E10FB6F894A89580936D +:1046600060000FBE90936000FFCF0E947423811101 +:1046700002C00E9450230E947F238093F2020E9476 +:10468000872380931C0387FB882780F9809316017A +:104690000E948323682F70E080E090E00C947C1FE0 +:1046A0006DEE7EEF80E090E00E949B2C60E082E067 +:1046B00090E00E94892C60E083E090E00E94892CC9 +:1046C00060E084E090E00E94892C60E085E090E06A +:1046D0000E94892C60E086E090E00E94892C6FEFB8 +:1046E00087E090E00C94892C80E090E00E94832C7D +:1046F00021E08D3E9E4F09F020E0822F089582E058 +:1047000090E00C947B2C83E090E00C947B2C84E074 +:1047100090E00C947B2C682F84E090E00C94892C22 +:1047200086E090E00C947B2C682F86E090E00C945F +:10473000892C87E090E00C947B2C682F87E090E038 +:104740000C94892C8091FA0280FF0BC060911C01AF +:1047500085E0689FB00111247595679575956795FB +:104760002BC081FF09C060911C0185E0689FB001EA +:1047700011247595679520C082FF07C060911C01C8 +:1047800085E0689FB001112417C09091FB02992326 +:10479000D1F060911B01961788F720911C0185E0EC +:1047A000289F90011124929FA001939F500D1124E6 +:1047B00070E0CA010E94612C6038710540F46115F7 +:1047C000710539F002C065E070E0862F08958FE72B +:1047D000089581E008958091FA0280FF08C06091F9 +:1047E0001A0170E0759567957595679521C081FFF1 +:1047F00006C060911A0170E07595679519C082FF37 +:1048000004C060911A0170E010C09091FB029923DE +:10481000C1F0609119019617A0F780911A01899F44 +:10482000C001112470E00E94612C6038710528F4E9 +:104830006115710521F0862F08958FE7089581E0B5 +:10484000089561E070E0F4CF803F21F40E94A2233C +:10485000819504C0813F29F40E94A2238093FE0227 +:104860000895823F21F40E94A223819504C0833FD2 +:1048700029F40E94A2238093FD020895893F19F430 +:104880000E94EB2305C08A3F31F40E94EB238195FF +:104890008093FF0208958B3F21F40E94EB238195C2 +:1048A00004C08C3F29F40E94EB23809300030895F9 +:1048B000843F21F48091FC02816017C0853F21F480 +:1048C0008091FC02826011C0863F21F48091FC023D +:1048D00084600BC0873F21F48091FC02886005C092 +:1048E000883F31F48091FC0280618093FC0208953E +:1048F0008D3F21F48091FA0281600BC08E3F21F43C +:104900008091FA02826005C08F3F29F48091FA02FB +:1049100084608093FA020895803F39F48091FE020A +:1049200087FF6CC01092FE0269C0813F29F480911C +:10493000FE021816BCF362C09091FD02823F29F47A +:1049400097FF5CC01092FD0259C0833F19F41916FD +:10495000CCF354C0893F41F48091FF0218160CF04B +:104960004DC01092FF024AC08A3F29F48091FF0295 +:1049700087FF44C0F6CF8B3F39F48091000387FF57 +:104980003DC0109200033AC08C3F29F4809100038F +:104990001816BCF333C0843F21F48091FC028E7F53 +:1049A00017C0853F21F48091FC028D7F11C0863FA6 +:1049B00021F48091FC028B7F0BC0873F21F4809112 +:1049C000FC02877F05C0883F31F48091FC028F7E16 +:1049D0008093FC0213C08D3F21F48091FA028E7FF8 +:1049E0000BC08E3F21F48091FA028D7F05C08F3F6E +:1049F00029F48091FA028B7F8093FA028091FD0264 +:104A000081110EC08091FE0281110AC08091FF02C7 +:104A1000811106C080910003811102C01092FB0237 +:104A200008958CEF92E00E94F1160E94B8229093B4 +:104A3000F9028093F80208951F93CF93DF9380913A +:104A4000F8029091F9020E94C422AC019091FB02FD +:104A5000992321F020911D0130E006C020911E0114 +:104A60008AE0289F900111244217530708F486C05A +:104A70008091FD02C091FE02D091FF0210910003CF +:104A8000811107C0C11176C0D11174C0111172C05B +:104A900075C09F3F19F09F5F9093FB02181624F496 +:104AA0000E94A2238093FD028091FD0287FF05C032 +:104AB0000E94A22381958093FD021C1624F40E947B +:104AC000A2238093FE028091FE0287FF05C00E9410 +:104AD000A22381958093FE026091FD02662339F145 +:104AE000C091FE02CC2319F1772767FD7095872FBF +:104AF000972F0E94832923E333E343E35FE30E947C +:104B0000932A0E9450296093FD026C2F772767FD3E +:104B10007095872F972F0E94832923E333E343E384 +:104B20005FE30E94932A0E9450296093FE021D16A3 +:104B300024F40E94EB238093FF028091FF0287FF01 +:104B400005C00E94EB2381958093FF02111624F487 +:104B50000E94EB23809300038091000387FF05C030 +:104B60000E94EB23819580930003DF91CF911F91E9 +:104B70000C9411259F3F09F08ECF96CFDF91CF91F6 +:104B80001F910895ECEFF2E085E0DF011D928A9518 +:104B9000E9F71092FB021092FA020895833081F136 +:104BA00028F4813059F08230D1F00895853009F42D +:104BB00049C0B8F1863009F456C0089580911E01AD +:104BC000262F30E0280F311D2F3F310524F4680FC8 +:104BD00060931E0108958FEF80931E0108958091C8 +:104BE0001D01262F30E0280F311D2F3F310524F401 +:104BF000680F60931D0108958FEF80931D01089544 +:104C000080911C01262F30E0280F311D2F3F3105E8 +:104C100024F4680F60931C0108958FEF80931C01AA +:104C2000089580911B01262F30E0280F311D2F3F62 +:104C3000310524F4680F60931B0108958FEF809372 +:104C40001B01089580911A01262F30E0280F311D95 +:104C50002F3F310524F4680F60931A0108958FEFF8 +:104C600080931A01089580911901262F30E0280FB2 +:104C7000311D2F3F310524F4680F60931901089509 +:104C80008FEF809319010895833011F128F481305A +:104C900049F0823091F00895853081F120F186301D +:104CA000C1F1089580911E01681720F4861B80933E +:104CB0001E01089510921E01089580911D0168172C +:104CC00020F4861B80931D01089510921D01089504 +:104CD00080911C01681720F4861B80931C010895A5 +:104CE00010921C01089580911B01681720F4861B07 +:104CF00080931B01089510921B01089580911A0161 +:104D0000681720F4861B80931A01089510921A01E7 +:104D1000089580911901681720F4861B809319016A +:104D200008951092190108950F931F93873208F088 +:104D300048C08E3108F08DC0803109F477C008F585 +:104D4000873009F461C068F4863009F09DC0809115 +:104D5000F202817F8E7F8093F20281E080930203D2 +:104D600094C08B3009F489C08E3009F08DC08091D9 +:104D7000F20282FB222720F991E0922790FB82F930 +:104D80005EC0863109F479C060F4813109F07CC0DD +:104D90000E94BC1B9091160181E089278093160127 +:104DA0006CC0893109F469C08B3109F06DC0809104 +:104DB000F20281FB222720F991E0922790FB81F9F2 +:104DC0003EC0883309F459C050F4893209F457C001 +:104DD000853309F454C0873209F451C055C0833477 +:104DE00009F44DC028F48A3308F44EC0895332C008 +:104DF000883409F049C00E94BC1B0E94FA090E9435 +:104E0000C1030E94132339C09091F202892F80952B +:104E1000817080FB90F929F0966098609093F2027F +:104E200034C0997F977F9093F20227C08091F2025D +:104E300083FB222720F991E0922790FB83F980934E +:104E4000F2029923D1F08091F20281608093F20204 +:104E500014C08D5141E050E060E070E08A019B0198 +:104E600004C0000F111F221F331F8A95D2F7C901FA +:104E7000B8010E947C1F0E94BC1B81E006C061E05B +:104E800070E080E090E0F5CF80E01F910F910895F1 +:104E900080E0089580E00895CF93C82F80910203A9 +:104EA000813069F018F08230C9F184C0E0911701B7 +:104EB000F09118018081823209F07EC007C0E09134 +:104EC0001701F09118018081823261F48C2F0E94C9 +:104ED0004827811104C08C2F0E9494261DC081E0B8 +:104EE00090E01AC08C2F0E944A27811114C0C4314F +:104EF00079F048F4CB3079F0C03109F061C082E03C +:104F00008093020308C0C93219F0C83321F058C099 +:104F10001092020355C081E0817054C0C93291F1F2 +:104F200020F5C43179F1B0F4C73009F047C08EE103 +:104F300080931E0182E380931D018AE080931C010F +:104F400084E180931B0188E080931A0188E28093BA +:104F5000190134C0CE51C63088F5EC2FF0E0EA5488 +:104F6000FE4F80818093010329C0CE34E9F020F404 +:104F7000CB3421F56AE013C0C13579F0C235F1F4C4 +:104F800061E00DC080910103882319F010920103A4 +:104F900015C081E08093020315C061E006C08091D6 +:104FA00001030E94CE250AC06AE0809101030E949D +:104FB000442604C01092020380E004C081E002C0D5 +:104FC00080E0AACFCF9108950E947423811102C07E +:104FD0000E9450230E94902380931D0380FF02C0F3 +:104FE000869501C080E00C94BC0280911D03982F2F +:104FF0009695292F30E0233031054CF49F5F990FAF +:105000008170892B816080931D030E94942380917D +:105010001D0386950C94BC0280911D03982F9695D4 +:1050200091F09158990F8170892B80931D038E7F89 +:1050300091E009F490E080911D0390FB80F980934A +:105040001D030E94942380911D0386950C94BC023D +:1050500080911D03982F909590FB80F980931D03FC +:105060000E94942380911D0380FF02C0869501C099 +:1050700080E00C94BC0290911D03892F86958F5F70 +:105080008F779170843028F4880F892B80931D03CB +:1050900002C090931D0380911D038E7F91E009F45F +:1050A00090E080911D0390FB80F980931D030E9486 +:1050B000942380911D0386950C94BC0220911D03BE +:1050C000922F96958927982F990F822F8170892B7F +:1050D00080931D038E7F91E009F490E080911D0381 +:1050E00090FB80F980931D030E94942380911D03FF +:1050F00086950C94BC0280911D03869508955058A6 +:10510000BB27AA270ED0D1C1C2D130F0C7D120F021 +:1051100031F49F3F11F41EF4B7C10EF4E095E7FBA4 +:105120009FC1E92FD3D180F3BA17620773078407B1 +:10513000950718F071F49EF5EBC10EF4E0950B2E77 +:10514000BA2FA02D0B01B90190010C01CA01A001D9 +:105150001124FF27591B99F0593F50F4503E68F134 +:105160001A16F040A22F232F342F4427585FF3CF75 +:10517000469537952795A795F0405395C9F77EF446 +:105180001F16BA0B620B730B840BBAF09150A1F08F +:10519000FF0FBB1F661F771F881FC2F70EC0BA0F15 +:1051A000621F731F841F48F4879577956795B7959D +:1051B000F7959E3F08F0B3CF9395880F08F0992795 +:1051C000EE0F97958795089527D108F481E008950B +:1051D0000CD06BC163D140F05AD130F021F45F3F65 +:1051E00019F03EC1511195C14FC170D198F3992367 +:1051F000C9F35523B1F3951B550BBB27AA2762179B +:105200007307840738F09F5F5F4F220F331F441FDF +:10521000AA1FA9F333D00E2E3AF0E0E830D0915017 +:105220005040E695001CCAF729D0FE2F27D0660F04 +:10523000771F881FBB1F261737074807AB07B0E843 +:1052400009F0BB0B802DBF01FF2793585F4F2AF059 +:105250009E3F510568F004C15CC15F3FECF3983E8E +:10526000DCF3869577956795B795F7959F5FC9F7B6 +:10527000880F911D9695879597F90895E1E0660F3F +:10528000771F881FBB1F621773078407BA0720F0B8 +:10529000621B730B840BBA0BEE1F88F7E095089521 +:1052A00004D06894B11135C1089518D188F09F5782 +:1052B00090F0B92F9927B751A0F0D1F0660F771F62 +:1052C000881F991F1AF0BA95C9F712C0B13081F042 +:1052D0001FD1B1E008951CC1672F782F8827B85FD0 +:1052E00039F0B93FCCF3869577956795B395D9F7A3 +:1052F0003EF490958095709561957F4F8F4F9F4FAD +:105300000895E89409C097FB3EF4909580957095B8 +:1053100061957F4F8F4F9F4F9923A9F0F92F96E901 +:10532000BB279395F695879577956795B795F11176 +:10533000F8CFFAF4BB0F11F460FF1BC06F5F7F4F13 +:105340008F4F9F4F16C0882311F096E911C0772325 +:1053500021F09EE8872F762F05C0662371F096E82E +:10536000862F70E060E02AF09A95660F771F881FFD +:10537000DAF7880F9695879597F9089588D018F0F1 +:1053800011F08CD038F480C0C4C0E92F9FD0B0F3A6 +:105390005523C9F3E7FB6217730784079507A8F144 +:1053A00099F3E92FFF2788232AF03197660F771F9B +:1053B000881FDAF7952F5527442332F0915050403B +:1053C000220F331F441FD2F7BB27E91BF50B621BCB +:1053D000730B840BB109C1F222F4620F731F841F97 +:1053E000B11D31972AF0660F771F881FBB1FEFCFC3 +:1053F000915050405AF041F0882332F0660F771FE9 +:10540000881F91505040C1F7939530C0869577958D +:1054100067959F5FD9F7F8CF990F0008550FAA0B32 +:10542000E0E8FEEF16161706E807F907C0F01216B7 +:105430001306E407F50798F0621B730B840B950BBA +:1054400039F40A2661F0232B242B252B21F408950F +:105450000A2609F4A140A6958FEF811D811D0895AC +:1054600097F99F6780E870E060E008959F3F31F012 +:10547000915020F4879577956795B795880F911D82 +:105480009695879597F908959FEF80EC08950024ED +:105490000A941616170618060906089500240A9499 +:1054A00012161306140605060895092E0394000C1F +:1054B00011F4882352F0BB0F40F4BF2B11F460FFAE +:1054C00004C06F5F7F4F8F4F9F4F089557FD9058D7 +:1054D000440F551F59F05F3F71F04795880F97FBB8 +:1054E000991F61F09F3F79F0879508951216130672 +:1054F0001406551FF2CF4695F1DF08C016161706A1 +:105500001806991FF1CF86957105610508940895D5 +:10551000E894BB2766277727CB0197F908957CDFAE +:1055200008F48FEF08950BD0C0CFB1DF28F0B6DFBD +:1055300018F0952309F094CFA7CF1124EACFC6DF46 +:10554000A0F3959FD1F3950F50E0551F629FF00196 +:10555000729FBB27F00DB11D639FAA27F00DB11DEF +:10556000AA1F649F6627B00DA11D661F829F222778 +:10557000B00DA11D621F739FB00DA11D621F839FFF +:10558000A00D611D221F749F3327A00D611D231FD5 +:10559000849F600D211D822F762F6A2F11249F5723 +:1055A00050408AF0E1F088234AF0EE0FFF1FBB1F46 +:1055B000661F771F881F91505040A9F79E3F5105E5 +:1055C00070F04ECFA6CF5F3FECF3983EDCF38695AC +:1055D00077956795B795F795E7959F5FC1F7FE2B90 +:1055E000880F911D9695879597F90895FA01EE0F0A +:1055F000FF1F30962105310599F16115710561F4A0 +:105600008038BFE39B0749F168949038810561F0C9 +:105610008038BFEF9B0741F0992342F5FF3FE1053A +:105620003105210511F1E8940894E795D901AA23E1 +:1056300029F4AB2FBE2FF85FD0F310C0FF5F70F4DA +:10564000A695E0F7F73950F019F0FF3A38F49F7754 +:105650009F930CD00F9007FC905808953EF014CF04 +:1056600060E070E080E89FE308954FE79F775F93E5 +:105670004F933F932F939ED02F913F914F915F91E6 +:1056800052DF05C019F40EF0EBCE42CFFDCE26DF7F +:10569000C8F39638C0F707F80F92E8942BE33AEA7C +:1056A00048EB5FE74EDF0F920F920F924DB75EB758 +:1056B0000F92C0D0EAE0F1E016D04F915F91EF91E8 +:1056C000FF91E595EE1FFF1F49F0FE57E068442764 +:1056D000EE0F441FFA95E1F74195550B32D00F902C +:1056E00007FE26C00895DF93CF931F930F93FF9279 +:1056F000EF92DF927B018C01689405C0DA2EEF01F6 +:105700001EDFFE01E894A5912591359145915591B3 +:10571000AEF3EF0106DDFE019701A801DA9479F7F7 +:10572000DF90EF90FF900F911F91CF91DF9108953F +:105730009B01AC0160E070E080E89FE349CD90CE32 +:1057400095CECCDEE8F39923D9F3940F511DBBF32A +:105750009150504094F059F0882332F0660F771F33 +:10576000881F91505040C1F79E3F510544F7880F64 +:10577000911D9695879597F908955F3FACF0983EF7 +:105780009CF0BB27869577956795B79508F4B1602F +:105790009395C1F7BB0F58F711F460FFE8CF6F5F27 +:1057A0007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCEC6 +:1057B000689456CE93DEC8F39923D1F3C6F3DF93F2 +:1057C000CF931F930F93FF92C92FDD2788232AF0D1 +:1057D0002197660F771F881FDAF720E030E040E856 +:1057E0005FEB9FE3883920F0803E30F021968F7781 +:1057F00087DCE2E3F1E003C083DCEFE5F1E073DF97 +:105800008B01BE01EC01FB2E6F5771097595771F57 +:10581000880B990B78DD28E132E741E35FE38FDE07 +:10582000AF2D9801AE01FF900F911F91CF91DF91A5 +:1058300078DC3BCEFA01DC01AA0FBB1F9B01AC0157 +:10584000BF5728F422273327442750781FC0B75169 +:1058500088F4AB2F0024469537952795011CA39516 +:10586000D2F3002069F0220F331F441FB395DAF3FF +:105870000DD045CC61307105A0E88A07B94630F4F7 +:105880009B01AC016627772788279078309621F016 +:1058900020833183428353830895AA1BBB1B51E1AC +:1058A00007C0AA1FBB1FA617B70710F0A61BB70B90 +:1058B000881F991F5A95A9F780959095BC01CD0135 +:1058C000089597FB072E16F4009407D077FD09D0B2 +:1058D0000E944D2C07FC05D03EF4909581959F4F7A +:1058E0000895709561957F4F0895EE0FFF1F059005 +:1058F000F491E02D0994F999FECF92BD81BDF89AFB +:10590000992780B50895A8E1B0E042E050E00C94FA +:10591000A32C262FF999FECF92BD81BDF89A01974D +:1059200000B4021639F01FBA20BD0FB6F894FA9AE7 +:10593000F99A0FBE08950196272F0E948A2C0C9485 +:10594000892CDC01CB01FC01F999FECF06C0F2BD28 +:10595000E1BDF89A319600B40D9241505040B8F72D +:065960000895F894FFCF4A +:10596600640007000CFF0000003F64DE0F6C104966 +:10597600101510E10F0101DF022808140A321E007B +:1059860002040507090B0C0E1011131517181A1C23 +:105996001D1F2123242628292B2D2F30323435375D +:1059A600393B1F0F03764F5F6F7F4969437909596A +:1059B60053633149803F5D8B803FF8BF803FCAE12A +:1059C600803F73ED803FCAE1803FF8BF803F5D8B2B +:1059D600803F3149803F0000803FF16D7F3F75EA8F +:1059E6007E3F4C827E3F833F7E3F84287E3F833FBF +:1059F6007E3F4C827E3F75EA7E3FF16D7F3F000021 +:105A0600803F3F4D3639830436040004C7035A03EA +:105A160073038C03A50301020304050607080900A6 +:00000001FF diff --git a/keyboard/planck/keymaps/angerthosenear/compiled.hex b/keyboard/planck/keymaps/angerthosenear/compiled.hex new file mode 100644 index 0000000000..b584d6a935 --- /dev/null +++ b/keyboard/planck/keymaps/angerthosenear/compiled.hex @@ -0,0 +1,1449 @@ +:100000000C9496020C94DA020C94DA020C94DA0244 +:100010000C94DA020C94DA020C94DA020C94DA02F0 +:100020000C94DA020C94DA020C9478140C944A15AD +:100030000C94AC220C94DA020C94DA020C94DA02DE +:100040000C94DA020C943C030C94DA020C94DA025D +:100050000C94DA020C9414230C94DA020C94DA0255 +:100060000C94DA020C94DA020C94DA020C94DA02A0 +:100070000C94DA020C94DA020C94DA020C94DA0290 +:100080000C94ED0A0C94DA020C94DA020C94DA0265 +:100090000C94DA020C94DA020C94DA020C94DA0270 +:1000A0000C94DA020C94DA020C94DA02B715D91522 +:1000B000C716D915C7161E164116C7169616A916C5 +:1000C00093199319C219C219011A211A771B771BA8 +:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 +:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 +:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 +:10010000F91A071B0E1B151B1F1B07634236B79BF3 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A299 +:1001D000F1A3018C028C290014001A0008001500FC +:1001E00017001C0018000C00120013002A002B003E +:1001F00004001600070009000A000B000D000E00A5 +:100200000F0033002800E1001D001B00060019004C +:100210000500110010003600370038003400E000FF +:10022000E300E200835002202C002C00012050004B +:10023000510052004F0001000100010001000100C7 +:1002400001005F00600061005400560001000100E1 +:10025000010001000100010001005C005D005E0082 +:1002600055005700010001000100010001000100DC +:10027000010059005A005B006300580001000100B2 +:1002800001000100010002202C0062000120010099 +:1002900001000100010035001E001F0020002100A8 +:1002A0002200230024002500260027000100010071 +:1002B0000320042048120100010001002D002E003F +:1002C0002F00300031000100440045006800690043 +:1002D0006A006B006C006D006E006F000100010091 +:1002E00001000100010001000100AC000120AB0091 +:1002F000AA00A900AE0035021E021F022002210240 +:100300002202230224022502260227024C000100B9 +:100310000320042048120100010001002D022E02DA +:100320002F023002310201003A003B003C003D0048 +:100330003E003F0040004100420043000100010038 +:1003400001000100010002200100010001004A003B +:100350004E004B004D00280354006800650020004B +:1003600050006C0061006E0063006B0020004B00C9 +:100370006500790062006F00610072006400000097 +:100380002C034F007200740068006F006C0069005D +:100390006E0065006100720020004B00650079006E +:1003A00062006F00610072006400730000000403CB +:1003B000090409026D00040100A0FA09040000010B +:1003C00003010100092111010001223F00070581FD +:1003D0000308000A090401000103010200092111B8 +:1003E000010001224D000705820308000A090402EA +:1003F000000103000000092111010001223600075D +:1004000005830308000A0904030001030000000932 +:100410002111010001223900070584031000011297 +:1004200001100100000008EDFE6060010001020003 +:100430000105010906A101050719E029E7150025B5 +:1004400001950875018102050819012905950575B1 +:10045000019102950175039101050719002977158E +:10046000002501957875018102C005010980A1016F +:10047000850216010026B7001A01002AB700751080 +:1004800095018100C0050C0901A101850316010039 +:10049000269C021A01002A9C02751095018100C059 +:1004A00005010902A1010901A10005091901290598 +:1004B00015002501950575018102950175038101DE +:1004C0000501093009311581257F950275088106DE +:1004D00009381581257F950175088106050C0A38B4 +:1004E000021581257F950175088106C0C0050109A7 +:1004F00006A101050719E029E715002501950875F2 +:1005000001810295017508810105081901290595E8 +:1005100005750191029501750391010507190029DF +:10052000FF150025FF950675088100C011241FBE28 +:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A +:100540001E0390911F03A0912003B09121038730D7 +:10055000904BA740B04BB9F410921E0310921F03AA +:10056000109220031092210314BE84B7877F84BFAA +:1005700088E10FB6F89480936000109260000FBE7F +:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 +:1005900002C005900D92A03CB107D9F713E0A0EC82 +:1005A000B1E001C01D92AE31B107E1F70E94BE116A +:1005B0000C94D72C0C9400000895089581E00895C0 +:1005C00008950C94DD020C94DE020C94E0020E946B +:1005D000A12823E030E0281B3109220F2093C40119 +:1005E0000895282F2F9880918000211108C0877FBF +:1005F0008093800010928D0010928C001BC0886048 +:1006000080938000233019F48FEF9FEF0FC083E0B9 +:1006100090E0821B9109880F991F2FEF3FEFA901EE +:1006200002C0569547958A95E2F7CA0190938D00CE +:1006300080938C000C94E7020E94E70284E0809390 +:10064000C3011092C0010895279A2F988FEF9FEF52 +:1006500090938700809386008AE08093800089E1F0 +:10066000809381000E940A280C941C030E9424039A +:100670006E9A769A0C94DC021F920F920FB60F922C +:1006800011242F933F938F939F93EF93FF93E091C8 +:10069000C101F091C201CF0101969093C2018093F4 +:1006A000C1010090C30102C0F695E7950A94E2F7F4 +:1006B000EF738091C001823019F4E03251F404C02C +:1006C000813039F4EF3329F480916F008D7F80936E +:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B +:1006E000C001E39F900D11240090C40102C09695B3 +:1006F00087950A94E2F790938D0080938C00FF9188 +:10070000EF919F918F913F912F910F900FBE0F907E +:100710001F90189581E008950C948A0308950C9415 +:10072000360380911502882309F448C08091D101D5 +:100730009091D201009779F40E94DE229093D20129 +:100740008093D1018091D30190E0009771F4809162 +:10075000D40190E00AC00E94EA2220910001309169 +:1007600001012817390740F329C00197880F991F05 +:10077000880F991FFC01EB52FE4F608171818281CD +:1007800093810E94530AE091D30184E0E89FF00135 +:100790001124EB52FE4F60817181828193814FE081 +:1007A00050E00E940B0E8091D30190E00196609181 +:1007B000D40170E00E94872C8093D3010C94E10255 +:1007C000109217020C94200A0895089581E08093F6 +:1007D00017020C94E503089508958F929F92AF92AB +:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA +:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 +:10080000FC0100811181C8010E94DB20B8010E9417 +:10081000F2058C01B7010E948C03882309F4CCC136 +:100820000032F0E51F0741F4F7018281882309F4C3 +:1008300058C00E946F0EC0C10132F0E51F0741F49D +:10084000F7018281882309F44CC00E94780EB4C15C +:100850000232F0E51F0751F4F7018281882309F481 +:1008600040C00E946B0E8111F0CFE3CF0332F0E560 +:100870001F0739F4F7018281882399F10E94E6036A +:100880009BC10432F0E51F0739F4F7018281882308 +:1008900041F10E94E00390C10532F0E51F0749F4E1 +:1008A000F70182818823E9F0809117028111F1CF4D +:1008B000E5CF0632F0E51F0739F4F701828188237E +:1008C00081F00E947F0E0AC00732F0E51F0749F44D +:1008D000F7018281882329F00E948A0E0E94EC038E +:1008E0006BC180911702811105C0F70182818111CE +:1008F000CFC018C1003E110579F4F7018281882329 +:1009000009F44DC00E94200A81E0809316021092E3 +:1009100015021092D40150C1023E110559F4F7019D +:1009200082818823E1F10E94200A1092160210921F +:10093000150242C1033E110591F4F701828188231B +:1009400071F10E94200A1092160281E08093150234 +:100950001092D3011092D2011092D1012DC1023513 +:10096000110559F4F7018281882309F425C180918A +:100970000001909101010A970DC00135110579F42C +:10098000F7018281882309F417C1809100019091B9 +:1009900001010A9690930101809300010DC14091DD +:1009A000040183E2EFE1F1E0DE01119601900D9286 +:1009B0008A95E1F7F701808121E030E02C0F3D1F9F +:1009C000280F311DC9012091020130910301FC0162 +:1009D000E20FF31F6081772767FD7095640F711D2B +:1009E000882777FD8095982F0E94A92920E030E084 +:1009F00040E451E40E940E294B015C01F701218182 +:100A000084E090E0821B9109BC01882777FD8095E6 +:100A1000982F0E94A9299B01AC01C501B4010E9435 +:100A2000A6289B01AC0160E070E080E090E40E94A9 +:100A30001C2B20E030E04CED50E40E94B92A4B0121 +:100A40005C01F70182818823D1F04FE050E0C501BD +:100A5000B4010E940B0E809116028823A1F08091B0 +:100A6000D40124E0829FF0011124EB52FE4F8082DA +:100A70009182A282B3828F5F8093D40104C0C501AA +:100A8000B4010E94530A0F3F110508F02ECF94C005 +:100A90008091D00181111FC0043130E5130709F0A6 +:100AA00051C00E948E0381E08093D0010E94DE221B +:100AB0009093CF018093CE011092C7011092C9018B +:100AC0001092C8011092CB011092CA011092CD0170 +:100AD0001092CC0171C08091CE019091CF010E9403 +:100AE000EA22883C910570F48091C701E82FF0E07C +:100AF000EE0FFF1FE853FE4F118300838F5F80933B +:100B0000C7015AC0043880E5180721F005381045A0 +:100B100001F13AC0F7018281882341F01092C501AA +:100B200082E01EC0043830E5130759F58091C501F5 +:100B3000811106C086E20E94371886E20E94FF18E3 +:100B400082E01CC00438F0E51F0741F3053810456A +:100B5000D9F4F7018281882331F01092C60180E236 +:100B60000E944E1929C08091C601811106C087E2FA +:100B70000E94371887E20E94FF1880E20E945519F0 +:100B80001BC00538104529F381E08093C50180938F +:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 +:100BA000DF91CF911F910F91FF90EF90BF90AF9089 +:100BB0009F908F900C94E30280E0A3960FB6F89478 +:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 +:100BD000EF90BF90AF909F908F90089580E090E04D +:100BE000089508959CE0799FF001112490E3899F76 +:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B +:100C0000FE4F859194910895880F991FFC01E45B34 +:100C1000FF4F859194910895880F991FFC01E4532B +:100C2000FE4F8591949108950F931F93CF93DF9377 +:100C3000EC01811521E39207A0F5C11580E3D807E7 +:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 +:100C500007C2C83AD10578F4C53AD10508F06AC090 +:100C6000C130D10509F463C008F4F7C1C430D1051F +:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 +:100C8000C11590E2D90708F0AFC0C11521E0D20725 +:100C900008F0E6C1C03FD10508F4DFC18E01106540 +:100CA0001FC2C03880E5D80700F5C03790E5D907E6 +:100CB00008F0A3C0C11520E5D20709F4ACC050F478 +:100CC000CE01905480319F4008F0C7C1DF708E0183 +:100CD000106A06C2C13080E5D80709F4AEC0C4313D +:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 +:100CF00009F48EC050F4C13890E5D90709F482C0D8 +:100D000008F083C000E011EDEBC1C03181E5D807E8 +:100D100008F4A3C1C11597E5D90708F436C1CE017F +:100D200090578115904108F098C1DF7093C101E0A0 +:100D300010E0D6C1C53AD10509F494C1C63AD1052F +:100D400009F093C102E810E4CBC1C83AD10509F417 +:100D50008FC1C93AD10509F48EC1CA3AD10509F447 +:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 +:100D70008BC1CD3AD10509F48AC1C03BD10509F434 +:100D800089C1CE3AD10509F488C1CF3AD10509F419 +:100D900087C1C13BD10509F486C1C23BD10509F425 +:100DA00085C1C33BD10509F484C1C43BD10509F415 +:100DB00083C1C53BD10509F482C1C63BD10509F405 +:100DC00081C1C73BD10509F480C1C83BD10509F4F5 +:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 +:100DE0007DC100E014E47CC1CE019F700E940C061E +:100DF00078C1DD278E01106C73C1CF70DD278E01A5 +:100E0000146D6EC100E010ED6BC100E012ED68C121 +:100E100000E013ED65C10E94E21B0E94200A0E94BF +:100E2000E4038FEF94E32CE0815090402040E1F701 +:100E300000C000000E94392353C18091F2028160FA +:100E40008093F2024DC10E949A23811102C00E9438 +:100E500076230E94AD2390E090931D0380931C03A2 +:100E6000C23080E5D80721F480911C03816086C0E0 +:100E7000C43090E5D90721F480911C0382607EC0C4 +:100E8000C63020E5D20721F480911C03846076C02F +:100E9000C83080E5D80719F480911C0327C0CA30F8 +:100EA00090E5D90721F480911C03806167C0CC30A4 +:100EB00020E5D20721F480911C0380625FC0CE3010 +:100EC00080E5D80721F480911C03806457C0C031AD +:100ED00090E5D90721F480911C0380684FC0C2318E +:100EE00020E5D20729F480911C038460886046C005 +:100EF000C33080E5D80721F480911C038E7F3EC06B +:100F0000C53090E5D90721F480911C038D7F36C050 +:100F1000C73020E5D20721F480911C038B7F2EC0BF +:100F2000C93080E5D80719F480911C0326C0CB3066 +:100F300090E5D90721F480911C038F7E1FC0CD302E +:100F400020E5D20721F480911C038F7D17C0CF309C +:100F500080E5D80721F480911C038F7B0FC0C1313D +:100F600090E5D90721F480911C038F7707C0C33126 +:100F7000D04531F480911C038B7F877F80931C03C5 +:100F800080911C030E94B123ABC08D2F99278F70D5 +:100F9000992781309105D9F49E012370332702C02F +:100FA000880F991F2A95E2F79C688E0144E0000F94 +:100FB000111F4A95E1F700271370802B912B53E006 +:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 +:100FD000910531F4DC2FCC278E01016F106A80C09F +:100FE0008330910569F4CE018370992701E010E008 +:100FF00002C0000F111F8A95E2F7C8019C680FC05C +:1010000084309105B9F4CE018370992701E010E096 +:1010100002C0000F111F8A95E2F7C8019A6823E009 +:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 +:101030001D2B56C08530910531F4DC2FCC278E0155 +:10104000046F106A4DC0069709F04AC0CF71DD27C2 +:10105000DC2FCC278E01106243C000E010E040C0BE +:101060008E013EC001E810E43BC003E810E438C044 +:1010700002EE14E435C009EE14E432C00AEE14E4C2 +:101080002FC005EB14E42CC006EB14E429C007EBD9 +:1010900014E426C00CEC14E423C00DEC14E420C0CE +:1010A00003E815E41DC00AE815E41AC002E915E4D6 +:1010B00017C004E915E414C001E216E411C003E20C +:1010C00016E40EC004E216E40BC005E216E408C004 +:1010D00006E216E405C007E216E402C00AE216E4DE +:1010E000C801DF91CF911F910F9108959CE0799FE6 +:1010F000F001112490E3899FE00DF11D1124E60F0A +:10110000F11DEE0FFF1FEA52FE4F85919491803E34 +:101110009105E0F4803C910558F58133910509F47F +:101120006FC048F48932910509F463C08A32910591 +:1011300009F46DC072C089339105E9F082389105D8 +:10114000D1F08533910509F44DC067C0833E910508 +:1011500081F138F4803E9105B9F0823E9105D9F0D5 +:101160005CC0863E910561F1873E9105A1F155C0B5 +:101170000E940406089520911C0320FD02C021FF57 +:101180004CC080EE90E049C080911C0380FFF9CFF5 +:1011900089E390E042C080911C0382FF0EC08091E1 +:1011A0001C0384FF03C080E090E037C083EE90E032 +:1011B00034C080911C0382FFF2CF82EE90E02DC0FC +:1011C00080911C0383FF0BC080911C0384FDEBCF37 +:1011D00087EE90E022C080911C0383FFF5CF86EE5E +:1011E00090E01BC080911C0385FF07C089E290E05E +:1011F00014C080911C0385FFF9CF85E390E00DC0FA +:1012000080911C0386FF07C08AE290E006C08091AF +:101210001C0386FFF9CF81E390E00E941406089535 +:101220000C94E502E82FF0E0E25BFE4F8081E82FAE +:10123000EF70F0E082958F7021E030E0A90102C0EC +:10124000440F551F8A95E2F740A308950F931F930B +:10125000CF93DF9385B7806885BF85B7806885BFEA +:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 +:10127000E82FEF70F0E021A182958F70A80102C0E5 +:10128000440F551F8A95E2F7CA01822B81A38C2F48 +:101290000E941209219740F78BE090E061E070E036 +:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 +:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F +:1012C0009D01242B22A3019758F7DF91CF911F9105 +:1012D0000F910C948F03EF92FF920F931F93CF9374 +:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA +:1012F0008C2F0E9412098BE090E040E050E0FC014E +:10130000EE5BFE4F6081E62FEF70F0E020A130E051 +:1013100062956F7002C0359527956A95E2F720FDBA +:1013200009C09701082E02C0220F331F0A94E2F76A +:10133000422B532B019718F7F801929182918F015C +:101340008417950721F051834083D09305018C2F9A +:101350000E941209C15060F68091050187FD2CC0E2 +:101360008150809305018F3F39F08FE99FE001970D +:10137000F1F700C0000020C080911E0290911F0272 +:10138000909327028093260280911C0290911D0267 +:10139000909325028093240280911A0290911B025F +:1013A0009093230280932202809118029091190257 +:1013B00090932102809320020E94910381E0DF91AB +:1013C000CF911F910F91FF90EF900895E82FF0E0DB +:1013D000EE0FFF1FE05EFD4F80819181089508951B +:1013E0000F931F93CF9308E212E0C0E0F8019291AF +:1013F00082918F010E945622C80FF2E000321F072F +:10140000A9F78C2FCF911F910F9108950E949A23D5 +:10141000811102C00E9476230E94BF23809307039C +:101420003E9A809171008D7F8093710082E080935D +:1014300090008AE18093910081E080932A020895D0 +:1014400080912A02811102C00E94060A10927A023B +:1014500010927902809171008D7F8093710080914C +:1014600090008F738093900010923C0210923B0288 +:10147000109273021092740210927502109276020A +:101480001092720210927102E1E5F2E0A1E4B2E082 +:1014900011921192119211921D921D9282E0E137E8 +:1014A000F807B1F70895CF92DF92EF92FF920F9372 +:1014B0001F93CF93DF9320913B02222309F484C032 +:1014C0006B017C0180912A02811102C00E94060AF0 +:1014D00001E712E0C7E0D0E0A7019601F801929180 +:1014E0008291729162918F010E940A29811131C00B +:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 +:10150000118212821382DE01AA0FBB1FAF5BBD4F97 +:1015100011961C921E92C730D105E9F021964481A4 +:1015200055816681778140835183628373831482FE +:1015300015821682178212968D919C91139711969F +:101540009C938E9313961C921E9212973496129629 +:10155000E2CF219708F68091790290917A02019763 +:1015600097FD05C090937A028093790204C010928F +:101570007A02109279028091790290917A022091F8 +:101580007702309178022817390724F010927802F8 +:1015900010927702892BC1F4809171008D7F809326 +:1015A0007100809190008F7380939000109273026D +:1015B00010927402109275021092760210927202CA +:1015C0001092710210923B02DF91CF911F910F9107 +:1015D000FF90EF90DF90CF9008951F920F920FB67B +:1015E0000F9211244F925F926F927F928F929F92EF +:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 +:101600004F935F936F937F938F939F93AF93BF930A +:10161000CF93DF93EF93FF9380913B02882309F4EC +:101620009BC1C0917902D0917A021C161D060CF064 +:1016300093C140902B0250902C0260902D0270902C +:101640002E0220E030E0A901C301B2010E94B52AB8 +:1016500018160CF065C0C130D10509F452C0809154 +:10166000770290917802BE010E94872C7C019093B2 +:1016700078028093770280903D0290903E02A09085 +:101680003F02B090400220E030E040E85FE3C50157 +:10169000B4010E94A62860933D0270933E0280939D +:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 +:1016B000EF5AFD4FA3019201608171818281938174 +:1016C0000E940E2920E030E040E05EE30E94B92A4B +:1016D0009B01AC01C501B4010E94B52A18168CF417 +:1016E000C7010196BE010E94872C909378028093D7 +:1016F000770210923D0210923E0210923F02109229 +:101700004002E0917702F0917802EE0FFF1FEE0F9A +:10171000FF1FEF5AFD4F6081718182819381D0C09C +:10172000C0907302D0907402E0907502F09076023F +:1017300020E030E0A901C701B6010E940A292197E3 +:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A +:10175000EF5AFD4F80809180A280B380A501940153 +:10176000C701B6010E940A2987FF31C0A501940173 +:1017700060E070E08CED93EC0E940E2920E030E0F8 +:1017800040E451E40E940E2920E030E040E05FE3B5 +:101790000E94B92A9B01AC0160E070E080E090E417 +:1017A0000E941C2B9B01AC01C501B4010E94B92A07 +:1017B0009B01AC01C701B6010E940A2987FF07C03F +:1017C000A701960160E070E08CED93E439C0A501BB +:1017D0009401C701B6010E94B52A18160CF055C035 +:1017E000A501940160E070E08CED93E40E940E2965 +:1017F00020E030E040E451E40E940E2920E030E097 +:1018000040E05FE30E94B92A9B01AC0160E070E018 +:1018100080E090E40E941C2B9B01AC01C501B40147 +:101820000E94B92A9B01AC01C701B6010E94B52AEA +:1018300018165CF5A701960160E070E08CED93EC62 +:101840000E940E2920E030E040E451E40E940E297D +:1018500020E030E040E05FE30E94B92A9B01AC0148 +:1018600060E070E080E090E40E941C2B9B01AC01E2 +:10187000C701B6010E94B92A609373027093740283 +:10188000809375029093760213C0FE01EE0FFF1F46 +:10189000EE0FFF1FEF5AFD4F80819181A281B3812E +:1018A0008093730290937402A0937502B0937602B2 +:1018B000609173027091740280917502909176022A +:1018C00020912802309129022F3F4FEF340731F049 +:1018D0002F5F3F4F30932902209328020E94950EDC +:1018E0006B017C0120E034E244EF51E40E940A29BC +:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 +:1019000081E4F82E20E030E040E051E4C701B60168 +:101910000E94B92A9B01AC0160E074E284E79BE479 +:101920000E940E296B017C010E947B297093970015 +:1019300060939600209106013091070140910801C3 +:1019400050910901C701B6010E94B92A0E947B2962 +:10195000709399006093980080913C02882309F469 +:1019600033C1C0903702D0903802E0903902F09035 +:101970003A0220E030E0A901C701B6010E94B52A71 +:101980001816D4F580912802909129028F3F2FEFED +:10199000920729F001969093290280932802C701AB +:1019A000B6010E94950E20E030E040E051E40E9434 +:1019B000B92A9B01AC0160E074E284E79BE40E94D9 +:1019C0000E296B017C010E947B2970939700609324 +:1019D0009600209106013091070140910801509135 +:1019E0000901C701B6010E94B92A0E947B297093A0 +:1019F00099006093980008C010929700109296008A +:101A00001092990010929800609131027091320208 +:101A10006F5F7F4F70933202609331022091960086 +:101A20003091970080E090E0232BF1F0C091960078 +:101A3000D09197000E94A7296B017C01BE0180E034 +:101A400090E00E94A7299B01AC0160913302709144 +:101A5000340280913502909136020E940E2920E0D6 +:101A60003FEF4FE757E410C00E94A7296B017C01AC +:101A700020E030EE4FEF54E4609133027091340275 +:101A800080913502909136020E94B92A9B01AC01E7 +:101A9000C701B6010E94B52A87FD96C080912F022A +:101AA0008F5F80932F0290E0209103033091040315 +:101AB00082179307A0F080910E03882319F01092EB +:101AC0002F020DC0809171008D7F809371008091F5 +:101AD00090008F738093900010923C027DC08091A3 +:101AE0003002C0912F02811128C0C0900803D0900D +:101AF0000903E0900A03F0900B0320E030E0A90115 +:101B0000C701B6010E94B52A1816BCF481E0809383 +:101B1000300210923702109238021092390210925D +:101B20003A02C0923302D0923402E0923502F0922F +:101B30003602C150C0932F0243C01092300210925F +:101B4000290210922802E0910503F091060348E073 +:101B5000C49FE00DF11D112480819181A281B38188 +:101B60008093370290933802A0933902B0933A02DF +:101B700020E030E040E85EE36481758186819781F2 +:101B80000E94B92A6B017C0180910A01682F70E0E4 +:101B900080E090E00E94A72920E030E048EC52E489 +:101BA0000E940E299B01AC01C701B6010E94B92A0F +:101BB000609333027093340280933502909336021F +:101BC00010923202109231028091070380FD04C00E +:101BD00010923C0210923B02FF91EF91DF91CF9166 +:101BE000BF91AF919F918F917F916F915F914F9135 +:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB +:101C00009F908F907F906F905F904F900F900FBE3E +:101C10000F901F901895CF92DF92EF92FF92CF9383 +:101C2000DF936B017C01EA0180912A02811102C0DD +:101C30000E94060A8091070380FF46C080917902C6 +:101C400090917A0208970CF03FC0809171008D7FCF +:101C50008093710080913C0281110E94200A81E0F2 +:101C600080933B02109229021092280220E030E07B +:101C7000A901C701B6010E94B52A1816DCF48091AB +:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 +:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 +:101CA000FF1FEF5BFD4FD183C083019690937A02B3 +:101CB000809379028091710082608093710080919D +:101CC0009000806880939000DF91CF91FF90EF901B +:101CD000DF90CF90089580910703817008958091DF +:101CE00007038160809307030E94C3230C94EB03D6 +:101CF000809107038E7F809307030C94C323809108 +:101D00007B0290E0019666E070E00E94872C809351 +:101D10007B02089580917B0290E0019766E070E07D +:101D20000E94872C80937B0208958F929F92AF929E +:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 +:101D4000DF936B017C01C0912802D0912902BE0172 +:101D500080E090E00E94A7294B015C01A701960159 +:101D600060E070E08CE594E40E940E299B01AC01D8 +:101D7000C501B4010E94B92A0E947B2920917B02EF +:101D8000233009F473C028F4222351F02130E9F004 +:101D90002CC1243009F4A0C0253009F4E0C025C1CD +:101DA00080E090E0A0E0BFE38093060190930701FC +:101DB000A0930801B093090110922B0210922C02FB +:101DC00010922D0210922E0210C110922B0210922E +:101DD0002C0210922D0210922E026431710540F4F3 +:101DE0006A30710560F520E030E040E85EE32BC02A +:101DF000693C710508F0AAC080E090E00E94A72924 +:101E000020E030E040EA51E40E94A52820E030E0E4 +:101E100044E353E40E940E299B01AC010E94B92ABD +:101E200020E030E040E05EE30E94B92A9B01AC0173 +:101E300060E070E080E09EE30E94A52844C020E0BE +:101E400030E040E05FE3C701B6010E94B92A6B01B0 +:101E50007C0180E090E0A0E0BEE3809306019093D7 +:101E60000701A0930801B0930901BFC010922B0293 +:101E700010922C0210922D0210922E024AE0469FE0 +:101E80009001479F300D1124C90168EB7BE00E944F +:101E9000732CBC016C5D754077FF03C07195619533 +:101EA0007109882777FD8095982F0E94A9292EE334 +:101EB00033EC4EE259E30E94B92A20E030E040ECD6 +:101EC0005EE30E94A6286093060170930701809349 +:101ED00008019093090189C010922B0210922C02E4 +:101EE00010922D0210922E02CE0183709927892B19 +:101EF000E1F0BE016170772780E090E00E94A729A1 +:101F000020E030E040E05EE30E94B92A20E030E0CB +:101F100040E45FE30E94A6286093060170930701E6 +:101F200080930801909309010CC080E090E0A0E04C +:101F3000BFE38093060190930701A0930801B0933B +:101F40000901C770DD27CD2B09F04FC010920601A3 +:101F500010920701109208011092090146C01092D8 +:101F60002B0210922C0210922D0210922E0200E0F1 +:101F700010E020E03FE30093060110930701209357 +:101F80000801309309016739710578F180E090E02C +:101F90000E94A72920E030E047E153E40E94A528F1 +:101FA00020E030E04AE754E40E940E2920E030E0CF +:101FB00048E452E40E94B92A20E030E040EA51E4CB +:101FC0000E94EB290E947629660F771F660F771F04 +:101FD000FB01EE5AFE4F2081318142815381C701BE +:101FE000B6010E94B92A6B017C01C701B601DF91DD +:101FF000CF911F910F91FF90EF90DF90CF90BF9006 +:10200000AF909F908F90089580918C020895CF9308 +:10201000DF9300D01F92CDB7DEB79C0180911303F0 +:10202000843019F593E099833B832A839093E900E8 +:102030008FEF9091E800815095FD06C095ED9A953F +:10204000F1F700008111F5CF8091E80085FF0DC008 +:1020500040E050E063E070E0CE0101960E9468121B +:102060008091E8008E778093E8000F900F900F909A +:10207000DF91CF910895CF93DF9300D01F92CDB71A +:10208000DEB720911303243021F522E029839B83BE +:102090008A8383E08093E9008FEF9091E80081507C +:1020A00095FD06C095ED9A95F1F700008111F5CFE9 +:1020B0008091E80085FF0DC040E050E063E070E0F3 +:1020C000CE0101960E9468128091E8008E7780937D +:1020D000E8000F900F900F90DF91CF91089520911D +:1020E00013032430F1F422E02093E9002FEF309124 +:1020F000E800215035FD06C035ED3A95F1F70000B6 +:102100002111F5CF2091E80025FF0BC040E050E001 +:1021100065E070E00E9468128091E8008E778093FD +:10212000E8000895CF93DF93EC019091130394306E +:1021300009F046C0809115018823D9F080911601DD +:102140008823B9F09093E9008FEF9091E8008150D7 +:1021500095FD06C095E19A95F1F700008111F5CF44 +:102160008091E80085FF2CC040E050E060E170E025 +:1021700017C081E08093E9008FEF9091E8008150D3 +:1021800095FD06C095ED9A95F1F700008111F5CF08 +:102190008091E80085FF14C040E050E068E070E006 +:1021A000CE010E9468128091E8008E778093E8004B +:1021B00080E1FE01ACE7B2E001900D928A95E1F773 +:1021C000DF91CF91089580911203811109C00E947F +:1021D000FD130E945A148091E20084608093E20013 +:1021E0000895109212030895089508950C94A12261 +:1021F00042E061EC81E00E94771342E061EC82E012 +:102200000E94771342E061EC83E00E94771342E181 +:1022100061EC84E00C94771380911503833009F40A +:1022200055C030F4813071F0823009F48EC00895C9 +:102230008A3009F47AC08B3009F460C0893009F023 +:102240009CC020C080911403813A09F096C080910F +:10225000E800877F8093E80080911803909119032C +:10226000892B21F460E18CE792E003C060E080E01C +:1022700090E070E00E94B3128091E8008B77809329 +:10228000E800089580911403813209F076C08091AE +:10229000180390911903009719F0039709F06DC086 +:1022A0008091E800877F8093E8008091E80082FDBC +:1022B00005C0809113038111F8CF5FC08091F100B8 +:1022C00080938C028091E8008B7753C08091140337 +:1022D000813A09F052C08091180390911903892B1B +:1022E00009F04BC08091E800877F8093E8008091DF +:1022F000E80080FFFCCF8091150136C08091140367 +:102300008132D9F58091180390911903892BA9F591 +:102310008091E800877F8093E8000E94AC13809151 +:102320001603809315010C94E21B809114038132F3 +:1023300021F58091E800877F8093E8000E94AC132C +:102340008091170380938D02089580911403813A40 +:10235000A1F48091E800877F8093E8008091E800F5 +:1023600080FFFCCF80918D028093F1008091E80086 +:102370008E778093E8000C94AC13089584B7877F20 +:1023800084BF88E10FB6F8948093600010926000DB +:102390000FBE90E080E80FB6F894809361009093B0 +:1023A00061000FBE0E944F170E94FD130E945A1435 +:1023B0008091E20084608093E20078940E94E016AD +:1023C0000E9451178BE091E00E94FB16809113034D +:1023D000853069F40E946222809111038823B1F351 +:1023E0000E949022882391F30E945212EFCF0E9404 +:1023F0005917ECCF292F332723303105C9F064F466 +:102400002130310581F02230310509F043C08DE6DD +:1024100090E022EB33E042C021323105F1F022326C +:10242000310541F137C082E190E02FE134E036C060 +:1024300099278130910541F08230910541F0892B37 +:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 +:10245000F3E0849190E09F0121C06430D8F4E62F2E +:10246000F0E0EE0FFF1FE255FE4F2081318189E041 +:1024700090E014C0643070F470E0FB01EE0FFF1FB9 +:10248000EA55FE4F20813181FB01EE55FE4F8081E0 +:1024900090E004C080E090E020E030E0FA01318379 +:1024A0002083089580E189BD82E189BD09B400FEE1 +:1024B000FDCF8091D8008F7D8093D8008091E0007F +:1024C00082608093E0008091E00081FDFCCF089560 +:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 +:1024E000EC018B016A010E94CB13811133C0C1142E +:1024F000D10439F0F60180819181081B190BC80FB6 +:10250000D91FE12CF12C0115110519F18091E8007A +:1025100085FD16C08091E8008E778093E800C11495 +:10252000D10449F0F60180819181E80EF91EF18213 +:10253000E08285E00FC00E94CB13882321F30AC0FC +:1025400089918093F10001501109FFEFEF1AFF0A02 +:10255000DACF80E0DF91CF911F910F91FF90EF9044 +:10256000DF90CF90089520911A0330911B03261716 +:10257000370748F06115710539F42091E8002E778E +:102580002093E80001C0B90140E061157105A9F18F +:1025900020911303222309F443C0253009F442C0DB +:1025A0002091E80023FD40C02091E80022FD32C0C8 +:1025B0002091E80020FFE9CF4091F3002091F20044 +:1025C00030E0342BFC01CF016115710559F0283042 +:1025D000310540F481918093F100615071092F5FC2 +:1025E0003F4FF1CF41E02830310509F040E0209124 +:1025F000E8002E772093E800C8CF4111C9CF0AC068 +:1026000080911303882361F0853061F08091E800A8 +:1026100083FD0AC08091E80082FFF2CF80E0089538 +:1026200082E0089583E0089581E0089520911A03DF +:1026300030911B032617370748F06115710539F4EF +:102640002091E8002E772093E80001C0B901FC0139 +:1026500020E06115710591F180911303882309F43D +:1026600040C0853009F43FC08091E80083FD3DC043 +:102670008091E80082FD2FC08091E80080FFE9CFC3 +:102680002091F3008091F20090E0922B611571058A +:1026900059F08830910540F424912093F10031964F +:1026A000615071090196F2CF21E0089709F020E00E +:1026B0008091E8008E778093E800CBCF2111CCCFBA +:1026C0000AC080911303882361F0853061F0809106 +:1026D000E80083FD0AC08091E80082FFF2CF80E02D +:1026E000089582E0089583E0089581E00895982F89 +:1026F000973058F59093E900981739F07091EC00F5 +:102700002091ED005091F00003C0242F762F50E06F +:1027100021FF19C03091EB003E7F3093EB003091E8 +:10272000ED003D7F3093ED003091EB003160309350 +:10273000EB007093EC002093ED005093F00020919B +:10274000EE0027FF07C09F5FD3CF8F708093E90013 +:1027500081E0089580E008958091140387FF11C0FF +:102760008091E80082FD05C0809113038111F8CFAC +:1027700011C08091E8008B770BC0809113038823F0 +:1027800049F08091E80080FFF8CF8091E8008E77D3 +:102790008093E80008952091E4003091E50095E6EB +:1027A0004091EC00842F817040FF22C08091E800AE +:1027B00080FD1CC080911303882391F0853091F037 +:1027C0008091EB0085FD10C04091E4005091E50040 +:1027D0004217530729F39A01915011F784E00895A5 +:1027E00082E0089583E0089581E0089580E00895EF +:1027F0004091E80042FFDECF08950E946B140E94D2 +:102800007314E0EEF0E0808181608083E8EDF0E019 +:1028100080818F77808319BCA7EDB0E08C918E7F8B +:102820008C9380818F7E80831092120308950F9382 +:102830001F93CF93DF930E946B140E947314C8ED13 +:10284000D0E088818F7788838881806888838881B9 +:102850008F7D888319BC1092130310920F0310927E +:1028600011031092100300EE10E0F80180818B7FBD +:10287000808388818160888342E060E080E00E94FC +:102880007713E1EEF0E080818E7F8083E2EEF0E06E +:10289000808181608083808188608083F80180816D +:1028A0008E7F8083888180618883DF91CF911F91A3 +:1028B0000F910895E8EDF0E080818F7E8083E7ED51 +:1028C000F0E080818160808384E082BF81E080933A +:1028D00012030C941714E8EDF0E080818E7F808362 +:1028E0001092E20008951092DA001092E10008952B +:1028F0001F920F920FB60F9211242F933F934F9375 +:102900005F936F937F938F939F93AF93BF93EF9357 +:10291000FF938091E10082FF0BC08091E20082FF73 +:1029200007C08091E1008B7F8093E1000E94DF1659 +:102930008091DA0080FF1FC08091D80080FF1BC00B +:102940008091DA008E7F8093DA008091D90080FF39 +:102950000DC080E189BD82E189BD09B400FEFDCFD3 +:1029600081E0809313030E94E31005C019BC10920C +:1029700013030E94F1108091E10080FF19C0809143 +:10298000E20080FF15C08091E2008E7F8093E2001C +:102990008091E20080618093E2008091D8008062A3 +:1029A0008093D80019BC85E0809313030E94F51032 +:1029B0008091E10084FF30C08091E20084FF2CC050 +:1029C00080E189BD82E189BD09B400FEFDCF80911F +:1029D000D8008F7D8093D8008091E1008F7E809316 +:1029E000E1008091E2008F7E8093E2008091E2001E +:1029F00081608093E20080910F03882311F084E0CE +:102A000007C08091E30087FD02C081E001C083E040 +:102A1000809313030E94F6108091E10083FF29C088 +:102A20008091E20083FF25C08091E100877F809341 +:102A3000E10082E08093130310920F038091E10084 +:102A40008E7F8093E1008091E2008E7F8093E20090 +:102A50008091E20080618093E20042E060E080E0EB +:102A60000E9477138091F00088608093F0000E94AC +:102A7000F410FF91EF91BF91AF919F918F917F9152 +:102A80006F915F914F913F912F910F900FBE0F90DB +:102A90001F9018951F920F920FB60F9211242F932B +:102AA0003F934F935F936F937F938F939F93AF93D6 +:102AB000BF93CF93DF93EF93FF93C091E900CF7063 +:102AC0008091EC00D82FD17080FDD0E81092E90001 +:102AD0008091F000877F8093F00078940E948E159B +:102AE0001092E9008091F00088608093F000CD2B77 +:102AF000CF70C093E900FF91EF91DF91CF91BF912B +:102B0000AF919F918F917F916F915F914F913F9185 +:102B10002F910F900FBE0F901F9018951F93CF937A +:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E +:102B3000CDBFE4E1F3E088E08E0F9091F100919336 +:102B40008E13FBCF0E940C118091E80083FF1FC100 +:102B50008091140390911503492F50E04A3051059C +:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB +:102B700081F0823809F00BC1809118038F70809327 +:102B8000E9008091EB0085FB882780F91092E9002D +:102B900006C0809110039091110391118260909171 +:102BA000E800977F9093E8008093F1001092F10085 +:102BB000C8C0282F2D7F09F0EAC0882319F0823081 +:102BC00061F0E5C080911603813009F0E0C09330D8 +:102BD00009F080E0809311032BC0809116038111CE +:102BE00027C0809118038F7009F4D1C08093E90049 +:102BF0002091EB0020FF1CC0933021F48091EB006A +:102C0000806214C09091EB0090619093EB0021E002 +:102C100030E0A90102C0440F551F8A95E2F74093A6 +:102C2000EA001092EA008091EB0088608093EB004C +:102C30001092E9008091E800877F86C08111A7C0CB +:102C4000109116031F778091E3008078812B809389 +:102C5000E3008091E800877F8093E8000E94AC1336 +:102C60008091E80080FFFCCF8091E3008068809332 +:102C7000E300111102C082E001C083E080931303DE +:102C800086C08058823008F082C0809116039091EF +:102C900017038C3D53E0950779F583E08A838AE238 +:102CA00089834FB7F894DE01139620E03EE051E2AD +:102CB000E32FF0E050935700E49120FF03C0E2952A +:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 +:102CD00001C0C0968D939D932F5F243149F74FBF5C +:102CE0008091E800877F8093E8006AE270E0CE017F +:102CF00001960E94B31214C0AE014F5F5F4F609106 +:102D000018030E94FA11BC01009709F440C0909189 +:102D1000E800977F9093E80089819A810E941613BA +:102D20008091E8008B778093E80031C0803879F596 +:102D30008091E800877F8093E80080910F03809363 +:102D4000F1008091E8008E778093E8000E94AC1338 +:102D50001EC081111CC0909116039230C0F4809166 +:102D6000E800877F8093E80090930F030E94AC13E4 +:102D700080910F03811106C08091E30087FD02C09E +:102D800081E001C084E0809313030E94F8108091D9 +:102D9000E80083FF0AC08091E800877F8093E80005 +:102DA0008091EB0080628093EB00AA960FB6F894B6 +:102DB000DEBF0FBECDBFDF91CF911F910895089563 +:102DC000CF93809113038823A1F0C091E900CF70C5 +:102DD0009091EC00892F817090FD80E8C82B1092B3 +:102DE000E9008091E80083FD0E948E15CF70C093AA +:102DF000E900CF91089590939302809392020895F1 +:102E0000E0919202F0919302309721F00190F081CD +:102E1000E02D099480E00895E0919202F0919302F0 +:102E2000309721F00280F381E02D09940895E0911C +:102E30009202F0919302309721F00480F581E02D09 +:102E4000099408952091900230919102821793077E +:102E500071F09093910280939002E0919202F09130 +:102E60009302309721F00680F781E02D09940895B0 +:102E700020918E0230918F028217930771F0909308 +:102E80008F0280938E02E0919202F091930230972C +:102E900021F00084F185E02D0994089508950C94A3 +:102EA0004E170E94D5220E9426090E945B230C9493 +:102EB0000A285F926F927F928F929F92AF92BF92F9 +:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 +:102ED00000D000D01F92CDB7DEB70E946B099DE9EC +:102EE000C92E92E0D92E03E010E0AA24A394B12CBD +:102EF000502E802F0E94E6094C01F60172906290DC +:102F00006F016826792661147104A1F4015011093A +:102F100078F78FEF89838A831B820E94DE2281608B +:102F2000782F9D838C8349815A816B818D810E948A +:102F3000091838C08091F20281FD0E94EF092BE050 +:102F400030E07501022E02C0EE0CFF1C0A94E2F77D +:102F5000C70186219721892B09F129835A828E2066 +:102F60009F2091E0892809F490E09B830E94DE2253 +:102F70008160782F9D838C8349815A816B818D81FB +:102F80000E940918000F111FF801EB56FD4F8081B8 +:102F90009181E826F926F182E08204C021503109AE +:102FA00080F6B4CF0E944225109194020E9400172F +:102FB0001817D1F00E940017809394020F900F9081 +:102FC0000F900F900F90DF91CF911F910F91FF9075 +:102FD000EF90DF90CF90BF90AF909F908F907F90B9 +:102FE0006F905F900C9410090F900F900F900F90BE +:102FF0000F90DF91CF911F910F91FF90EF90DF9095 +:10300000CF90BF90AF909F908F907F906F905F9088 +:103010000895CF93DF93CDB7DEB72B970FB6F89413 +:10302000DEBF0FBECDBF4F83588769877A878B87F6 +:10303000DE01119686E0FD0111928A95E9F785E09F +:10304000FE01379601900D928A95E1F749815A81E8 +:103050006B817C818D819E810E94801E2B960FB694 +:10306000F894DEBF0FBECDBFDF91CF910895CF930F +:10307000882309F4C2C0C82F823859F40E9400176F +:1030800081FDBBC089E30E945A210E94272289E367 +:103090000CC0833879F40E94001780FDAEC083E530 +:1030A0000E945A210E94272283E50E949C21CF91F1 +:1030B0000C942722843859F40E94001782FD9DC089 +:1030C00087E40E945A210E94272287E4EECF8CEFEA +:1030D0008C0F813A48F48C2F0E94722781118DC089 +:1030E0008C2F0E945A21E3CF80E28C0F883048F465 +:1030F000C77081E001C0880FCA95EAF70E94E021FD +:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 +:1031100031F083E890E005C081E890E002C082E8E9 +:1031200090E0CF910C94221788E58C0F833108F042 +:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 +:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 +:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 +:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 +:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B +:1031800090E038C082EE90E035C089EE90E032C029 +:103190008AEE90E02FC085EB90E02CC086EB90E0AB +:1031A00029C087EB90E026C08CEC90E023C08DEC2A +:1031B00090E020C083E891E01DC08AE891E01AC049 +:1031C00082E991E017C084E991E014C081E292E0C5 +:1031D00011C083E292E00EC084E292E00BC085E26F +:1031E00092E008C086E292E005C087E292E002C069 +:1031F0008AE292E0CF910C943817CF9108958823FA +:1032000009F44BC0823859F40E94001781FF45C071 +:1032100089E30E945A210E94272289E30CC0833847 +:1032200071F40E94001780FF38C083E50E945A2184 +:103230000E94272283E50E949C210C942722843837 +:1032400059F40E94001782FF28C087E40E945A2187 +:103250000E94272287E4EFCF9CEF980F913A58F312 +:1032600090E2980F983050F4877091E001C0990F68 +:103270008A95EAF7892F0E94E621DFCF9BE5980F18 +:10328000933020F480E090E00C942217885A833128 +:1032900020F480E090E00C9438170895882321F002 +:1032A0000E94E0210C9427220895882321F00E9497 +:1032B000E6210C94272208957F928F929F92AF92DD +:1032C000BF92CF92DF92EF92FF920F931F93CF9313 +:1032D000DF931F92CDB7DEB77C01C62E772EFC019F +:1032E000058102950F70128111110E94FD210E942B +:1032F0005321882379F0112369F080E28C0D883006 +:1033000048F082E00E943C210E94532191E0D82E97 +:10331000D92601C0D12CE72DE295EF70F0E0E05AFC +:10332000FF4F0C949B2C872D807F072D0F708823D7 +:1033300011F00295007F112389F0002309F499C14F +:1033400080E28C0D883020F4802F0E94E02103C0A1 +:10335000802F0E94F0210E9427228BC18C2D0E9479 +:10336000FF18002309F4C3C180E28C0D883020F4DB +:10337000802F0E94E62103C0802F0E94F6210E9428 +:103380002722B5C1872D807F972D9F70803211F441 +:10339000892F03C0892F8295807FCC2021F0F1E016 +:1033A000CF16A1F01DC0112339F0002319F101300F +:1033B00009F50E9410229BC1002319F0013009F485 +:1033C00096C189830E941322898110C1112321F0A3 +:1033D000063008F08CC10EC0053008F088C106C167 +:1033E000112359F0002331F0F701958190FF41C17D +:1033F0009F7095830E944E197AC1002309F4F6C08C +:103400003EC1872D86958695837090E0009719F0D0 +:10341000019761F06CC1112321F08C2D972D9370D1 +:1034200002C080E090E00E94221761C1112321F0C8 +:103430008C2D972D937002C080E090E00E94381789 +:1034400056C18C2D112319F00E944A2402C00E94FB +:10345000B2240E9437254BC1872D837009F052C0DA +:10346000111145C18C2D829586958770880F880F24 +:103470009C2D9F70892E912CA12CB12C082E04C05C +:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 +:103490000FE010E020E030E0B901A80104C0440FC3 +:1034A000551F661F771F8A95D2F7CB01BA01609529 +:1034B00070958095909503C060E070E0CB01272D5A +:1034C00026952695237030E02230310569F02330AF +:1034D000310589F0682979298A299B29213031050C +:1034E00071F00E94C81F03C1682979298A299B2984 +:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 +:10350000AC1FF5C0112319F0872D817001C086957D +:10351000882309F4ECC08C2D829586958770880FDE +:10352000880F9C2D9F70892E912CA12CB12C082ED8 +:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 +:1035400014C00FE010E020E030E0B901A80104C091 +:10355000440F551F661F771F8A95D2F7CB01BA011A +:10356000609570958095909503C060E070E0CB0108 +:10357000272D269526952370422F50E04230510585 +:1035800069F04330510589F0682979298A299B29F6 +:103590004130510571F00E94A220A9C06829792903 +:1035A0008A299B290E94BE20A2C00E94A220C50198 +:1035B000B4010E9486209BC08C2D90E0FC01E05E4F +:1035C000F109E531F10508F050C0E059FF4F0C94C6 +:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 +:1035E0001F20802F07CF0E944020802F0E94551956 +:1035F0007EC0112341F0053008F079C0872D8F710E +:103600000E94652074C0063008F071C0F7CF112306 +:1036100039F0872D8F710E941F2069C01123C9F3D3 +:10362000872D8F710E94402062C0112329F0872DC1 +:103630008F710E940A205BC00E94002058C0112395 +:1036400051F0172D1F71812F0E941F2063E0812FE1 +:103650000E9433214CC081E00E943C21023008F4DA +:1036600046C082E00E943C2142C0112331F0002379 +:1036700081F28C2D0E9437183AC0002389F28C2DDC +:103680000E94FF1834C0472D4F706C2DC7010E9457 +:10369000EE050E94241F2BC0111129C0472D4F7029 +:1036A00050E042305105B9F04CF44115510581F01C +:1036B00041305105E1F40E94322819C043305105D0 +:1036C00069F04430510599F48C2D0E9484280FC074 +:1036D0000E941B280CC00E944E2809C00E9461282D +:1036E00006C0472D4F706C2DC7010E94F105DD20EB +:1036F000F9F00E942F2180FD1BC0F70112820E9469 +:1037000029210E941F20C7010E94A71B0E94292176 +:103710000F90DF91CF911F910F91FF90EF90DF906D +:10372000CF90BF90AF909F908F907F900C9440204F +:103730000F90DF91CF911F910F91FF90EF90DF904D +:10374000CF90BF90AF909F908F907F9008950F93F0 +:103750001F93CF93DF93EC01888199812B813C816A +:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 +:10377000ED03882371F0688179818A810E94252177 +:103780008C010E94DA200E94A11FB801CE010E9484 +:103790005C19DF91CF911F910F9108950E94FD2137 +:1037A0000E940D220E94D2210E9427220E94E82519 +:1037B0000E94372580E090E00E94221780E090E090 +:1037C0000C9438170E94ED210C94CE1B0E941A21F4 +:1037D000292F22952F7030E02C3031054CF42A30FF +:1037E00031056CF42250310922303105A8F407C0AC +:1037F0002C30310569F02F30310551F00DC0803F7C +:1038000069F018F4803E40F409C0843F29F406C0F2 +:1038100093FB882780F9089580E0089581E008955A +:10382000CF93DF9300D000D01F92CDB7DEB70F90BB +:103830000F900F900F900F90DF91CF910895CF933D +:10384000DF9300D000D000D0CDB7DEB726960FB6FC +:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 +:10386000CF93DF93C0919D0216E080919E02C8170E +:1038700099F0D0E01C9FF0011D9FF00D1124E1563E +:10388000FD4F4081518162817381848195810E94C5 +:103890001F1C2196C770E9CFDF91CF911F9108952A +:1038A0004091CF025091D0026091D1027091D2022A +:1038B0008091D3029091D4020C941F1C8091D40269 +:1038C00082958F7009F054C08091D102882309F449 +:1038D0004FC080919D02A0919E026091CF02709195 +:1038E000D0024091D2025091D302B6E08A1709F477 +:1038F0003FC090E041155105C1F17F3F11F46F3F8A +:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 +:10391000218172132AC02081621327C022812111C4 +:1039200024C0238134812417350710F42150310934 +:10393000241B350B283C3105C0F42091D4022F7094 +:1039400020612093D40226E0289FF001299FF00DEA +:103950001124EC55FD4F80818F70806180838FEC46 +:1039600092E00E94A71B0C942F1C01968770BECF7B +:103970000895CF92DF92EF92FF920F931F93CF9310 +:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 +:10399000CDBF8C0185E0F801DE011D9601900D92EE +:1039A0008A95E1F7D8014C9111965C911197129686 +:1039B0006C9112971396CD90DC9014973091CF02B2 +:1039C0007091D0028091D2029091D302009709F4B5 +:1039D0006BC17F3F19F43F3F09F466C1E090D1020B +:1039E000EE2009F4C0C02091D402C816D90628F0F0 +:1039F000F601E81BF90BCF0104C0809590958C0D62 +:103A00009D1DFF24F394883C910578F0F12C207FD4 +:103A100009F0C6C07C2DD98AC88A89890E94101CE9 +:103A20008FEC92E00E94A71BB1C0822F807F09F02B +:103A300046C0751314C0341312C0611110C02F702A +:103A400020612093D4020E94501C8FEC92E00E94CF +:103A5000A71B8091D402D80115968C932EC0CD2837 +:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 +:103A700080919D0220919E0236E0821709F45AC07F +:103A800090E0389FF001399FF00D1124E156FD4F71 +:103A90007181571306C07081471303C07281711181 +:103AA00003C001968770E9CFF62E662309F418C18A +:103AB0008091D40281608093D402F12C11C17513DE +:103AC00008C0341306C0611104C08091D402D8012B +:103AD000C3C04D875E878D859E856A8B0E94E61BDD +:103AE0006A898823E1F16623D1F12091D402822FE3 +:103AF00082958F7090E0029774F08091CF02909140 +:103B0000D00298878F831986DB86CA862C87CE01E0 +:103B100007960E94A71B86E0F801AFECB2E0019087 +:103B20000D928A95E1F70E945E1C0E94501CFF24B2 +:103B3000F394D6C04D875E878D859E850E941A219D +:103B4000292F22952F7030E0223031050CF0BCC0B7 +:103B50009F7009F0B6C0805E883008F4C1C0C8010B +:103B60000E94A71BE4CFC816D90608F453C0F6017B +:103B7000E81BF90BCF01883C910508F450C0F12CEB +:103B80007C2DD98AC88A89890E94101CEFECF2E04A +:103B900086E0DF011D928A95E9F70E94501CA0C0C3 +:103BA000751314C0341312C0611110C08091D40277 +:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 +:103BC000DF011D928A95E9F7FE2C8AC04D875E873A +:103BD0008D859E856A8B0E94E61B6A89882309F47D +:103BE000BECF662309F4BBCF2091D402822F8295E9 +:103BF0008F7090E002970CF48ECF8091CF0290915D +:103C0000D0029A8389831B82DD82CC822E83CE01EF +:103C100001967FCF809590958C0D9D1DACCFF62E93 +:103C2000662309F49CCF75132EC034132CC0209149 +:103C3000D40220FD1FC0822F82958F70D9F0D80149 +:103C400015962C9315978F3049F08F5F982F92958A +:103C5000907F822F8F70892B15968C93C8010E94BC +:103C6000A71B86E0F801AFECB2E001900D928A95B7 +:103C7000E1F793CF86E0F801AFECB2E001900D924E +:103C80008A95E1F72DC04D875E878D859E850E94C0 +:103C9000E61B811140CF8091D40281608093D402D1 +:103CA000C8010E94A71B1CC0662309F458CF4D878A +:103CB0005E878D859E850E94E61B882309F44FCF81 +:103CC0002ACF811148CF0CC0243031050CF047CFEA +:103CD0009F7009F440CFF8019581907F09F03BCFA8 +:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 +:103CF000CF911F910F91FF90EF90DF90CF9008959B +:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 +:103D1000DEBF0FBECDBF4F83588769877A878B87F9 +:103D20009C87CE0107960E94B91C882369F08F8179 +:103D300098852A853B85232BF1F19F3F09F063C0CD +:103D40008F3F09F060C037C086E0FE013796DE0184 +:103D5000119601900D928A95E1F76F817885EA8539 +:103D6000FB85309741F17F3F11F46F3F21F12091A6 +:103D70009E0230E0C90101968770992740919D020B +:103D800050E08417950709F447C069837A83FD835F +:103D9000EC8396E0929FD001939FB00D1124A15621 +:103DA000BD4FFE01319601900D929A95E1F78093F7 +:103DB0009E020E942F1C16E080919D0290919E020F +:103DC0008917C1F1189FC001112481569D4F0E948F +:103DD000B91C882379F1E0919D021E9FF001112406 +:103DE000E156FD4F408151816281738184819581CB +:103DF0000E941F1C80919D0290E001968770992778 +:103E000080939D02D9CF4F81588569857A858B85AE +:103E10009C850E941F1CCFCF0E94E21B10929E0225 +:103E200010929D02EFECF2E086E0DF011D928A9590 +:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 +:103E4000DF91CF911F910895EF92FF920F931F93EF +:103E5000CF93DF938C01009709F46CC0F12CEE2412 +:103E6000E394E8012196F8018491843740F484308A +:103E700008F051C0813081F0823019F15BC0853784 +:103E800009F444C0A8F19CE7980F903708F052C09D +:103E90008F770E94FF1841C00E5F1F4FFE01C49133 +:103EA00080E28C0F883048F4C7708E2D01C0880FD7 +:103EB000CA95EAF70E94002214C08C2F0E9437187E +:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 +:103ED00058F4C7708E2D01C0880FCA95EAF70E946A +:103EE00006220E9427221AC08C2F0E94FF1816C09B +:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C +:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 +:103F1000FE01F49003C00E9437188E018F2D882374 +:103F200009F49FCFEFE9FFE03197F1F700C00000FF +:103F30008150F5CFDF91CF911F910F91FF90EF90BE +:103F4000089508956093D9027093DA028093DB029A +:103F50009093DC020C94CE1B0F931F930091D90217 +:103F60001091DA022091DB023091DC02DC01CB01FE +:103F7000802B912BA22BB32B8093D9029093DA0242 +:103F8000A093DB02B093DC021F910F910C94CE1B27 +:103F90000F931F930091D9021091DA022091DB0256 +:103FA0003091DC02DC01CB0180239123A223B323D7 +:103FB0008093D9029093DA02A093DB02B093DC02E3 +:103FC0001F910F910C94CE1B0F931F930091D90258 +:103FD0001091DA022091DB023091DC02DC01CB018E +:103FE00080279127A227B3278093D9029093DA02E2 +:103FF000A093DB02B093DC021F910F910C94CE1BB7 +:104000001092D5021092D6021092D7021092D802C6 +:104010000C94CE1B41E050E060E070E004C0440F1F +:10402000551F661F771F8A95D2F74093D50250938C +:10403000D6026093D7027093D8020C94CE1B41E055 +:1040400050E060E070E004C0440F551F661F771F0A +:104050008A95D2F78091D5029091D602A091D7028D +:10406000B091D802482B592B6A2B7B2B4093D50259 +:104070005093D6026093D7027093D8020C94CE1B53 +:1040800041E050E060E070E004C0440F551F661F3F +:10409000771F8A95D2F740955095609570958091DD +:1040A000D5029091D602A091D702B091D8024823B0 +:1040B00059236A237B234093D5025093D602609301 +:1040C000D7027093D8020C94CE1B41E050E060E020 +:1040D00070E004C0440F551F661F771F8A95D2F702 +:1040E0008091D5029091D602A091D702B091D802CA +:1040F000482759276A277B274093D5025093D60239 +:104100006093D7027093D8020C94CE1B0F931F9329 +:104110000091D5021091D6022091D7023091D80299 +:10412000DC01CB01802B912BA22BB32B8093D502EA +:104130009093D602A093D702B093D8021F910F910B +:104140000C94CE1B0F931F930091D5021091D602B1 +:104150002091D7023091D802DC01CB01802391233A +:10416000A223B3238093D5029093D602A093D702C3 +:10417000B093D8021F910F910C94CE1B0F931F93F5 +:104180000091D5021091D6022091D7023091D80229 +:10419000DC01CB0180279127A227B3278093D5028A +:1041A0009093D602A093D702B093D8021F910F919B +:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 +:1041C0001F93CF93DF938C01C090D902D090DA0275 +:1041D000E090DB02F090DC028091D5029091D60253 +:1041E000A091D702B091D802C82AD92AEA2AFB2A7C +:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B +:10420000979587950A94D2F780FF06C0B8018C2F46 +:104210000E947608019721F4219760F780E001C0A1 +:104220008C2FDF91CF911F910F91FF90EF90DF9036 +:10423000CF900895CF93DF93EC010E94DB20BE0165 +:104240000E947608DF91CF910895CB010E941A2138 +:1042500008958091DD0285958595859508958091D5 +:10426000DD028770089598E0899F90011124262B24 +:104270002093DD020C941F202091DD028095822383 +:104280008093DD02982F977069F430E0482F55270E +:1042900047FD50952417350729F085958595859517 +:1042A0000C94402008959091DD02977081E009F40C +:1042B00080E0089590911501992321F090911601C5 +:1042C000911109C02091170130911801F90132961E +:1042D0009FEF40E01FC0982F9695969596959F303A +:1042E00050F5E0911701F0911801E90FF11D877069 +:1042F00021E030E0A90102C0440F551F8A95E2F782 +:10430000CA019181892B818308959F3F39F04F5FC6 +:104310004E3041F051915813F8CF0DC05111F7CFE5 +:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B +:10433000FA9582830895089590911501992321F0AB +:1043400090911601911109C0209117013091180127 +:10435000F9013296205F3F4F1FC0982F9695969592 +:1043600096959F30F0F4E0911701F0911801E90F54 +:10437000F11D877021E030E0A90102C0440F551FF4 +:104380008A95E2F7CA0180959181892381830895F6 +:104390003196E217F30729F090819813F9CF108234 +:1043A000F7CF089581E090E0E0911701F0911801B6 +:1043B000E80FF91F1082019680319105A9F7089541 +:1043C0009091F102892B8093F1020895809590914C +:1043D000F10289238093F10208951092F102089569 +:1043E0009091F002892B8093F0020895809590912E +:1043F000F00289238093F00208951092F00208954C +:104400009091EF02892B8093EF020895809590910F +:10441000EF0289238093EF0208951092EF0208952E +:104420008093DE0208951092DE02089580911701B4 +:1044300090911801FC0131969C01205F3F4F80E074 +:10444000919191118F5FE217F307D1F70895E091F1 +:104450001701F09118018091F1028083E09117011A +:10446000F091180190818091F002892B8083E09176 +:104470001701F091180190818091EF02892B8083C0 +:104480008091DE02882361F0E0911701F09118011C +:104490009081892B80830E94162281111092DE0266 +:1044A00080911701909118010C940C1720E000974F +:1044B00039F0AC0141505109842395232F5FF7CF88 +:1044C000822F089580911303843039F11092F30202 +:1044D00020E488E190E00FB6F894A89580936000FE +:1044E0000FBE2093600080E00E94F10280E00E94F5 +:1044F000100983B7817F846083BF83B7816083BFE6 +:104500007894889583B78E7F83BF88E10FB6F8943F +:1045100080936000109260000FBE08950895089582 +:1045200080E00E94F1020E948E220E946B090E948C +:104530008F220E94F00991E0811101C090E0892F43 +:1045400008950E94E21B80E00E94F1020E940A2866 +:104550000E9400170C9410091F920F920FB60F9231 +:1045600011248F939F93AF93BF938091F302811196 +:1045700013C08091F4029091F502A091F602B091DF +:10458000F7024196A11DB11D8093F4029093F502AC +:10459000A093F602B093F702BF91AF919F918F91D4 +:1045A0000F900FBE0F901F90189582E084BD93E08E +:1045B00095BD9AEF97BD80936E0008952FB7F8943C +:1045C0008091F4029091F502A091F602B091F70269 +:1045D0002FBF0895CF92DF92EF92FF920F931F9318 +:1045E0002FB7F8944091F4025091F5026091F602D1 +:1045F0007091F7022FBF6A017B01EE24FF248C012A +:1046000020E030E0C016D106E206F30610F4415077 +:1046100051099A01281B390BC9011F910F91FF9075 +:10462000EF90DF90CF9008951F920F920FB60F92E8 +:1046300011248F939F93AF93BF938091F402909135 +:10464000F502A091F602B091F7020196A11DB11DED +:104650008093F4029093F502A093F602B093F702D0 +:10466000BF91AF919F918F910F900FBE0F901F90B0 +:1046700018950E94FD13F8942FEF87EA91E62150D8 +:1046800080409040E1F700C0000087E090EBDC0143 +:1046900080931E0390931F03A0932003B0932103E4 +:1046A0009CE088E10FB6F894A895809360000FBE57 +:1046B00090936000FFCF0E949A23811102C00E9454 +:1046C00076230E94A5238093F2020E94AD2380935B +:1046D0001C0387FB882780F9809316010E94A92379 +:1046E000682F70E080E090E00C94A21F6DEE7EEFEA +:1046F00080E090E00E94C12C60E082E090E00E94A7 +:10470000AF2C60E083E090E00E94AF2C60E084E09A +:1047100090E00E94AF2C60E085E090E00E94AF2C1A +:1047200060E086E090E00E94AF2C6FEF87E090E0C1 +:104730000C94AF2C80E090E00E94A92C21E08D3EEB +:104740009E4F09F020E0822F089582E090E00C94C3 +:10475000A12C83E090E00C94A12C84E090E00C94D8 +:10476000A12C682F84E090E00C94AF2C86E090E0C0 +:104770000C94A12C682F86E090E00C94AF2C87E07D +:1047800090E00C94A12C682F87E090E00C94AF2C63 +:104790008091FA0280FF0BC060911C0185E0689F48 +:1047A000B001112475956795759567952BC081FFAC +:1047B00009C060911C0185E0689FB00111247595C6 +:1047C000679520C082FF07C060911C0185E0689F4B +:1047D000B001112417C09091FB029923D1F0609190 +:1047E0001B01961788F720911C0185E0289F9001F6 +:1047F0001124929FA001939F500D112470E0CA01D3 +:104800000E94872C6038710540F46115710539F0FC +:1048100002C065E070E0862F08958FE7089581E07B +:1048200008958091FA0280FF08C060911A0170E03B +:10483000759567957595679521C081FF06C0609154 +:104840001A0170E07595679519C082FF04C06091E8 +:104850001A0170E010C09091FB029923C1F06091A1 +:1048600019019617A0F780911A01899FC0011124A0 +:1048700070E00E94872C6038710528F4611571057D +:1048800021F0862F08958FE7089581E0089561E073 +:1048900070E0F4CF803F21F40E94C823819504C0CA +:1048A000813F29F40E94C8238093FE020895823F2D +:1048B00021F40E94C823819504C0833F29F40E94FB +:1048C000C8238093FD020895893F19F40E941124A2 +:1048D00005C08A3F31F40E94112481958093FF0224 +:1048E00008958B3F21F40E941124819504C08C3FD0 +:1048F00029F40E941124809300030895843F21F439 +:104900008091FC02816017C0853F21F48091FC02F8 +:10491000826011C0863F21F48091FC0284600BC04C +:10492000873F21F48091FC02886005C0883F31F404 +:104930008091FC0280618093FC0208958D3F21F4F8 +:104940008091FA0281600BC08E3F21F48091FA02BF +:10495000826005C08F3F29F48091FA0284608093C1 +:10496000FA020895803F39F48091FE0287FF6CC0FF +:104970001092FE0269C0813F29F48091FE02181650 +:10498000BCF362C09091FD02823F29F497FF5CC0A6 +:104990001092FD0259C0833F19F41916CCF354C08C +:1049A000893F41F48091FF0218160CF04DC010921F +:1049B000FF024AC08A3F29F48091FF0287FF44C06A +:1049C000F6CF8B3F39F48091000387FF3DC01092F2 +:1049D00000033AC08C3F29F4809100031816BCF301 +:1049E00033C0843F21F48091FC028E7F17C0853F45 +:1049F00021F48091FC028D7F11C0863F21F48091CB +:104A0000FC028B7F0BC0873F21F48091FC02877FE3 +:104A100005C0883F31F48091FC028F7E8093FC02B8 +:104A200013C08D3F21F48091FA028E7F0BC08E3F20 +:104A300021F48091FA028D7F05C08F3F29F4809187 +:104A4000FA028B7F8093FA028091FD0281110EC0E1 +:104A50008091FE0281110AC08091FF02811106C07F +:104A600080910003811102C01092FB0208958CEF27 +:104A700092E00E9417170E94DE229093F902809321 +:104A8000F80208951F93CF93DF938091F8029091DD +:104A9000F9020E94EA22AC019091FB02992321F0D5 +:104AA00020911D0130E006C020911E018AE0289F60 +:104AB000900111244217530708F486C08091FD022B +:104AC000C091FE02D091FF0210910003811107C036 +:104AD000C11176C0D11174C0111172C075C09F3F51 +:104AE00019F09F5F9093FB02181624F40E94C823CC +:104AF0008093FD028091FD0287FF05C00E94C823BC +:104B000081958093FD021C1624F40E94C823809393 +:104B1000FE028091FE0287FF05C00E94C823819596 +:104B20008093FE026091FD02662339F1C091FE027E +:104B3000CC2319F1772767FD7095872F972F0E9457 +:104B4000A92923E333E343E35FE30E94B92A0E94E8 +:104B500076296093FD026C2F772767FD7095872F6C +:104B6000972F0E94A92923E333E343E35FE30E94E5 +:104B7000B92A0E9476296093FE021D1624F40E9431 +:104B800011248093FF028091FF0287FF05C00E94DD +:104B9000112481958093FF02111624F40E941124A0 +:104BA000809300038091000387FF05C00E941124B9 +:104BB000819580930003DF91CF911F910C9437254D +:104BC0009F3F09F08ECF96CFDF91CF911F9108952F +:104BD000ECEFF2E085E0DF011D928A95E9F7109293 +:104BE000FB021092FA020895833081F128F481309B +:104BF00059F08230D1F00895853009F449C0B8F1F8 +:104C0000863009F456C0089580911E01262F30E0A9 +:104C1000280F311D2F3F310524F4680F60931E01CA +:104C200008958FEF80931E01089580911D01262F16 +:104C300030E0280F311D2F3F310524F4680F6093B9 +:104C40001D0108958FEF80931D01089580911C012F +:104C5000262F30E0280F311D2F3F310524F4680F37 +:104C600060931C0108958FEF80931C01089580913B +:104C70001B01262F30E0280F311D2F3F310524F472 +:104C8000680F60931B0108958FEF80931B010895B7 +:104C900080911A01262F30E0280F311D2F3F31055A +:104CA00024F4680F60931A0108958FEF80931A011E +:104CB000089580911901262F30E0280F311D2F3FD4 +:104CC000310524F4680F6093190108958FEF8093E4 +:104CD00019010895833011F128F4813049F08230B0 +:104CE00091F00895853081F120F18630C1F1089569 +:104CF00080911E01681720F4861B80931E01089581 +:104D000010921E01089580911D01681720F4861BE2 +:104D100080931D01089510921D01089580911C013A +:104D2000681720F4861B80931C01089510921C01C3 +:104D3000089580911B01681720F4861B80931B0146 +:104D4000089510921B01089580911A01681720F4AC +:104D5000861B80931A01089510921A01089580917C +:104D60001901681720F4861B809319010895109289 +:104D7000190108950F931F93873208F048C08E31B0 +:104D800008F08DC0803109F477C008F5873009F448 +:104D900061C068F4863009F09DC08091F202817F85 +:104DA0008E7F8093F20281E08093020394C08B3067 +:104DB00009F489C08E3009F08DC08091F20282FB27 +:104DC000222720F991E0922790FB82F95EC086317C +:104DD00009F479C060F4813109F07CC00E94E21BC3 +:104DE0009091160181E08927809316016CC089316A +:104DF00009F469C08B3109F06DC08091F20281FB2A +:104E0000222720F991E0922790FB81F93EC0883358 +:104E100009F459C050F4893209F457C0853309F4B4 +:104E200054C0873209F451C055C0833409F44DC0D1 +:104E300028F48A3308F44EC0895332C0883409F00C +:104E400049C00E94E21B0E94200A0E94E4030E94C3 +:104E5000392339C09091F202892F8095817080FBAF +:104E600090F929F0966098609093F20234C0997F8F +:104E7000977F9093F20227C08091F20283FB222752 +:104E800020F991E0922790FB83F98093F202992315 +:104E9000D1F08091F20281608093F20214C08D51B2 +:104EA00041E050E060E070E08A019B0104C0000F27 +:104EB000111F221F331F8A95D2F7C901B8010E9422 +:104EC000A21F0E94E21B81E006C061E070E080E06A +:104ED00090E0F5CF80E01F910F91089580E0089554 +:104EE00080E00895CF93C82F80910203813069F04C +:104EF00018F08230C9F184C0E0911701F0911801D7 +:104F00008081823209F07EC007C0E0911701F091E4 +:104F100018018081823261F48C2F0E946E278111EA +:104F200004C08C2F0E94BA261DC081E090E01AC0F8 +:104F30008C2F0E947027811114C0C43179F048F47D +:104F4000CB3079F0C03109F061C082E08093020378 +:104F500008C0C93219F0C83321F058C010920203BA +:104F600055C081E0817054C0C93291F120F5C4313F +:104F700079F1B0F4C73009F047C08EE180931E018B +:104F800082E380931D018AE080931C0184E1809379 +:104F90001B0188E080931A0188E28093190134C0D4 +:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 +:104FB0008093010329C0CE34E9F020F4CB3421F5ED +:104FC0006AE013C0C13579F0C235F1F461E00DC07B +:104FD00080910103882319F01092010315C081E02C +:104FE0008093020315C061E006C0809101030E9416 +:104FF000F4250AC06AE0809101030E946A2604C079 +:105000001092020380E004C081E002C080E0AACFD9 +:10501000CF9108950E949A23811102C00E947623A5 +:105020000E94B62380931D0380FF02C0869501C0B5 +:1050300080E00C94F10280911D03982F9695292F02 +:1050400030E0233031054CF49F5F990F8170892B3C +:10505000816080931D030E94BA2380911D03869571 +:105060000C94F10280911D03982F969591F0915820 +:10507000990F8170892B80931D038E7F91E009F435 +:1050800090E080911D0390FB80F980931D030E94A6 +:10509000BA2380911D0386950C94F10280911D0323 +:1050A000982F909590FB80F980931D030E94BA235E +:1050B00080911D0380FF02C0869501C080E00C94A2 +:1050C000F10290911D03892F86958F5F8F779170E4 +:1050D000843028F4880F892B80931D0302C090939D +:1050E0001D0380911D038E7F91E009F490E0809173 +:1050F0001D0390FB80F980931D030E94BA238091C9 +:105100001D0386950C94F10220911D03922F969514 +:105110008927982F990F822F8170892B80931D03E7 +:105120008E7F91E009F490E080911D0390FB80F95F +:1051300080931D030E94BA2380911D0386950C94D1 +:10514000F10280911D03869508955058BB27AA2728 +:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 +:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF +:10517000D3D180F3BA17620773078407950718F035 +:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 +:105190000B01B90190010C01CA01A0011124FF27E4 +:1051A000591B99F0593F50F4503E68F11A16F040DF +:1051B000A22F232F342F4427585FF3CF46953795DE +:1051C0002795A795F0405395C9F77EF41F16BA0BA3 +:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 +:1051E000661F771F881FC2F70EC0BA0F621F731F9A +:1051F000841F48F4879577956795B795F7959E3FF7 +:1052000008F0B3CF9395880F08F09927EE0F979584 +:105210008795089527D108F481E008950CD06BC1DB +:1052200063D140F05AD130F021F45F3F19F03EC114 +:10523000511195C14FC170D198F39923C9F35523EA +:10524000B1F3951B550BBB27AA2762177307840779 +:1052500038F09F5F5F4F220F331F441FAA1FA9F32F +:1052600033D00E2E3AF0E0E830D091505040E69521 +:10527000001CCAF729D0FE2F27D0660F771F881F82 +:10528000BB1F261737074807AB07B0E809F0BB0B71 +:10529000802DBF01FF2793585F4F2AF09E3F510595 +:1052A00068F004C15CC15F3FECF3983EDCF3869587 +:1052B00077956795B795F7959F5FC9F7880F911D0B +:1052C0009695879597F90895E1E0660F771F881FF7 +:1052D000BB1F621773078407BA0720F0621B730BAA +:1052E000840BBA0BEE1F88F7E095089504D06894FC +:1052F000B11135C1089518D188F09F5790F0B92F9A +:105300009927B751A0F0D1F0660F771F881F991F1A +:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF +:1053200008951CC1672F782F8827B85F39F0B93FDF +:10533000CCF3869577956795B395D9F73EF490951C +:105340008095709561957F4F8F4F9F4F0895E8949A +:1053500009C097FB3EF490958095709561957F4FBD +:105360008F4F9F4F9923A9F0F92F96E9BB2793956B +:10537000F695879577956795B795F111F8CFFAF47B +:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC +:1053900016C0882311F096E911C0772321F09EE80A +:1053A000872F762F05C0662371F096E8862F70E070 +:1053B00060E02AF09A95660F771F881FDAF7880F4A +:1053C0009695879597F9089588D018F011F08CD0AC +:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F +:1053E000E7FB6217730784079507A8F199F3E92F84 +:1053F000FF2788232AF03197660F771F881FDAF777 +:10540000952F5527442332F091505040220F331FDF +:10541000441FD2F7BB27E91BF50B621B730B840BF0 +:10542000B109C1F222F4620F731F841FB11D3197BD +:105430002AF0660F771F881FBB1FEFCF9150504097 +:105440005AF041F0882332F0660F771F881F915081 +:105450005040C1F7939530C08695779567959F5FCB +:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 +:1054700016161706E807F907C0F012161306E40718 +:10548000F50798F0621B730B840B950B39F40A2611 +:1054900061F0232B242B252B21F408950A2609F4EF +:1054A000A140A6958FEF811D811D089597F99F67F3 +:1054B00080E870E060E008959F3F31F0915020F463 +:1054C000879577956795B795880F911D96958795E0 +:1054D00097F908959FEF80EC089500240A9416161A +:1054E000170618060906089500240A9412161306D2 +:1054F000140605060895092E0394000C11F4882360 +:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B +:105510007F4F8F4F9F4F089557FD9058440F551F51 +:1055200059F05F3F71F04795880F97FB991F61F025 +:105530009F3F79F087950895121613061406551F9C +:10554000F2CF4695F1DF08C0161617061806991F08 +:10555000F1CF86957105610508940895E894BB27FD +:1055600066277727CB0197F908957CDF08F48FEF42 +:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 +:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF +:10559000D1F3950F50E0551F629FF001729FBB271A +:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 +:1055B0006627B00DA11D661F829F2227B00DA11D79 +:1055C000621F739FB00DA11D621F839FA00D611DFF +:1055D000221F749F3327A00D611D231F849F600D20 +:1055E000211D822F762F6A2F11249F5750408AF059 +:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 +:10560000881F91505040A9F79E3F510570F04ECF32 +:10561000A6CF5F3FECF3983EDCF3869577956795D0 +:10562000B795F795E7959F5FC1F7FE2B880F911D02 +:105630009695879597F90895FA01EE0FFF1F30961A +:105640002105310599F16115710561F48038BFE3D9 +:105650009B0749F168949038810561F08038BFEF6D +:105660009B0741F0992342F5FF3FE10531052105F4 +:1056700011F1E8940894E795D901AA2329F4AB2FF6 +:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F +:10569000F73950F019F0FF3A38F49F779F930CD008 +:1056A0000F9007FC905808953EF014CF60E070E032 +:1056B00080E89FE308954FE79F775F934F933F9371 +:1056C0002F939ED02F913F914F915F9152DF05C054 +:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C +:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C +:1056F0004EDF0F920F920F924DB75EB70F92C0D050 +:10570000EAE0F1E016D04F915F91EF91FF91E595BE +:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD +:10572000FA95E1F74195550B32D00F9007FE26C050 +:105730000895DF93CF931F930F93FF92EF92DF9221 +:105740007B018C01689405C0DA2EEF011EDFFE019B +:10575000E894A5912591359145915591AEF3EF01CE +:1057600006DDFE019701A801DA9479F7DF90EF904A +:10577000FF900F911F91CF91DF9108959B01AC0194 +:1057800060E070E080E89FE349CD90CE95CECCDE1E +:10579000E8F39923D9F3940F511DBBF39150504076 +:1057A00094F059F0882332F0660F771F881F9150CC +:1057B0005040C1F79E3F510544F7880F911D9695C3 +:1057C000879597F908955F3FACF0983E9CF0BB2712 +:1057D000869577956795B79508F4B1609395C1F76D +:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B +:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 +:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD +:105810000F93FF92C92FDD2788232AF02197660F67 +:10582000771F881FDAF720E030E040E85FEB9FE366 +:10583000883920F0803E30F021968F7787DCE2E3D4 +:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 +:10585000EC01FB2E6F5771097595771F880B990B1B +:1058600078DD28E132E741E35FE38FDEAF2D980179 +:10587000AE01FF900F911F91CF91DF9178DC3BCE6D +:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 +:1058900022273327442750781FC0B75188F4AB2FF5 +:1058A0000024469537952795011CA395D2F3002037 +:1058B00069F0220F331F441FB395DAF30DD045CCA6 +:1058C00061307105A0E88A07B94630F49B01AC014C +:1058D0006627772788279078309621F020833183B8 +:1058E000428353830895AA1BBB1B51E107C0AA1F23 +:1058F000BB1FA617B70710F0A61BB70B881F991F71 +:105900005A95A9F780959095BC01CD01089597FB14 +:10591000072E16F4009407D077FD09D00E94732C4F +:1059200007FC05D03EF4909581959F4F08957095A2 +:1059300061957F4F0895EE0FFF1F0590F491E02DC4 +:105940000994F999FECF92BD81BDF89A992780B547 +:105950000895A8E1B0E042E050E00C94C92C262F55 +:10596000F999FECF92BD81BDF89A019700B4021655 +:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 +:1059800008950196272F0E94B02C0C94AF2CDC01B7 +:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A +:1059A000319600B40D9241505040B8F70895F894E4 +:0259B000FFCF27 +:1059B200640007000CFF0000003F64041092106FA7 +:1059C200103B1007100101DF022808140A321E00E2 +:1059D20002040507090B0C0E1011131517181A1CD7 +:1059E2001D1F2123242628292B2D2F303234353711 +:1059F200393B1F0F03764F5F6F7F4969437909591E +:105A020053633149803F5D8B803FF8BF803FCAE1DD +:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE +:105A2200803F3149803F0000803FF16D7F3F75EA42 +:105A32007E3F4C827E3F833F7E3F84287E3F833F72 +:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 +:105A5200803F3F4D3639ED04A0046A043104C4038B +:105A6200DD03F6030F04010203040506070809001B +:00000001FF diff --git a/keyboard/planck/keymaps/austin/compiled.hex b/keyboard/planck/keymaps/austin/compiled.hex new file mode 100644 index 0000000000..fcd925dae0 --- /dev/null +++ b/keyboard/planck/keymaps/austin/compiled.hex @@ -0,0 +1,1449 @@ +:100000000C9496020C94DA020C94DA020C94DA0244 +:100010000C94DA020C94DA020C94DA020C94DA02F0 +:100020000C94DA020C94DA020C9478140C944A15AD +:100030000C94AC220C94DA020C94DA020C94DA02DE +:100040000C94DA020C943C030C94DA020C94DA025D +:100050000C94DA020C9414230C94DA020C94DA0255 +:100060000C94DA020C94DA020C94DA020C94DA02A0 +:100070000C94DA020C94DA020C94DA020C94DA0290 +:100080000C94ED0A0C94DA020C94DA020C94DA0265 +:100090000C94DA020C94DA020C94DA020C94DA0270 +:1000A0000C94DA020C94DA020C94DA02B715D91522 +:1000B000C716D915C7161E164116C7169616A916C5 +:1000C00093199319C219C219011A211A771B771BA8 +:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 +:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 +:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 +:10010000F91A071B0E1B151B1F1B07634236B79BF3 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A299 +:1001D000F1A3018C028C2B0014001A0008001500FA +:1001E00017001C0018000C00120013002A00290040 +:1001F00004001600070009000A000B000D000E00A5 +:100200000F0033003400E1001D001B000600190040 +:100210000500110010003600370038002800835018 +:10022000E300E200E00002202C002C00012050003E +:10023000510052004F002B0014001A000900130057 +:100240000A000D000F0018001C0033002A002900CE +:10025000040015001600170007000B00110008002D +:100260000C0012003400E1001D001B000600190004 +:1002700005000E0010003600370038002800C300CB +:10028000E300E200E00002202C002C0001205000DE +:10029000510052004F0035001E001F0020002100B9 +:1002A0002200230024002500260027002A00010048 +:1002B0000320042048120100010001002D002E003F +:1002C0002F00300031000100440045006800690043 +:1002D0006A006B006C006D006E006F000100010091 +:1002E0000100010001000100010001000120AB003C +:1002F000AA00A900AE0035021E021F022002210240 +:100300002202230224022502260227022A000100DB +:100310000320042048120100010001002D022E02DA +:100320002F023002310201003A003B003C003D0048 +:100330003E003F0040004100420043000100010038 +:100340000100010001000220010001000100AB00DA +:10035000AA00A900AE002803540068006500200030 +:1003600050006C0061006E0063006B0020004B00C9 +:100370006500790062006F00610072006400000097 +:100380002C034F007200740068006F006C0069005D +:100390006E0065006100720020004B00650079006E +:1003A00062006F00610072006400730000000403CB +:1003B000090409026D00040100A0FA09040000010B +:1003C00003010100092111010001223F00070581FD +:1003D0000308000A090401000103010200092111B8 +:1003E000010001224D000705820308000A090402EA +:1003F000000103000000092111010001223600075D +:1004000005830308000A0904030001030000000932 +:100410002111010001223900070584031000011297 +:1004200001100100000008EDFE6060010001020003 +:100430000105010906A101050719E029E7150025B5 +:1004400001950875018102050819012905950575B1 +:10045000019102950175039101050719002977158E +:10046000002501957875018102C005010980A1016F +:10047000850216010026B7001A01002AB700751080 +:1004800095018100C0050C0901A101850316010039 +:10049000269C021A01002A9C02751095018100C059 +:1004A00005010902A1010901A10005091901290598 +:1004B00015002501950575018102950175038101DE +:1004C0000501093009311581257F950275088106DE +:1004D00009381581257F950175088106050C0A38B4 +:1004E000021581257F950175088106C0C0050109A7 +:1004F00006A101050719E029E715002501950875F2 +:1005000001810295017508810105081901290595E8 +:1005100005750191029501750391010507190029DF +:10052000FF150025FF950675088100C011241FBE28 +:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A +:100540001E0390911F03A0912003B09121038730D7 +:10055000904BA740B04BB9F410921E0310921F03AA +:10056000109220031092210314BE84B7877F84BFAA +:1005700088E10FB6F89480936000109260000FBE7F +:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 +:1005900002C005900D92A03CB107D9F713E0A0EC82 +:1005A000B1E001C01D92AE31B107E1F70E94BE116A +:1005B0000C94D72C0C9400000895089581E00895C0 +:1005C00008950C94DD020C94DE020C94E0020E946B +:1005D000A12823E030E0281B3109220F2093C40119 +:1005E0000895282F2F9880918000211108C0877FBF +:1005F0008093800010928D0010928C001BC0886048 +:1006000080938000233019F48FEF9FEF0FC083E0B9 +:1006100090E0821B9109880F991F2FEF3FEFA901EE +:1006200002C0569547958A95E2F7CA0190938D00CE +:1006300080938C000C94E7020E94E70284E0809390 +:10064000C3011092C0010895279A2F988FEF9FEF52 +:1006500090938700809386008AE08093800089E1F0 +:10066000809381000E940A280C941C030E9424039A +:100670006E9A769A0C94DC021F920F920FB60F922C +:1006800011242F933F938F939F93EF93FF93E091C8 +:10069000C101F091C201CF0101969093C2018093F4 +:1006A000C1010090C30102C0F695E7950A94E2F7F4 +:1006B000EF738091C001823019F4E03251F404C02C +:1006C000813039F4EF3329F480916F008D7F80936E +:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B +:1006E000C001E39F900D11240090C40102C09695B3 +:1006F00087950A94E2F790938D0080938C00FF9188 +:10070000EF919F918F913F912F910F900FBE0F907E +:100710001F90189581E008950C948A0308950C9415 +:10072000360380911502882309F448C08091D101D5 +:100730009091D201009779F40E94DE229093D20129 +:100740008093D1018091D30190E0009771F4809162 +:10075000D40190E00AC00E94EA2220910001309169 +:1007600001012817390740F329C00197880F991F05 +:10077000880F991FFC01EB52FE4F608171818281CD +:1007800093810E94530AE091D30184E0E89FF00135 +:100790001124EB52FE4F60817181828193814FE081 +:1007A00050E00E940B0E8091D30190E00196609181 +:1007B000D40170E00E94872C8093D3010C94E10255 +:1007C000109217020C94200A0895089581E08093F6 +:1007D00017020C94E503089508958F929F92AF92AB +:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA +:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 +:10080000FC0100811181C8010E94DB20B8010E9417 +:10081000F2058C01B7010E948C03882309F4CCC136 +:100820000032F0E51F0741F4F7018281882309F4C3 +:1008300058C00E946F0EC0C10132F0E51F0741F49D +:10084000F7018281882309F44CC00E94780EB4C15C +:100850000232F0E51F0751F4F7018281882309F481 +:1008600040C00E946B0E8111F0CFE3CF0332F0E560 +:100870001F0739F4F7018281882399F10E94E6036A +:100880009BC10432F0E51F0739F4F7018281882308 +:1008900041F10E94E00390C10532F0E51F0749F4E1 +:1008A000F70182818823E9F0809117028111F1CF4D +:1008B000E5CF0632F0E51F0739F4F701828188237E +:1008C00081F00E947F0E0AC00732F0E51F0749F44D +:1008D000F7018281882329F00E948A0E0E94EC038E +:1008E0006BC180911702811105C0F70182818111CE +:1008F000CFC018C1003E110579F4F7018281882329 +:1009000009F44DC00E94200A81E0809316021092E3 +:1009100015021092D40150C1023E110559F4F7019D +:1009200082818823E1F10E94200A1092160210921F +:10093000150242C1033E110591F4F701828188231B +:1009400071F10E94200A1092160281E08093150234 +:100950001092D3011092D2011092D1012DC1023513 +:10096000110559F4F7018281882309F425C180918A +:100970000001909101010A970DC00135110579F42C +:10098000F7018281882309F417C1809100019091B9 +:1009900001010A9690930101809300010DC14091DD +:1009A000040183E2EFE1F1E0DE01119601900D9286 +:1009B0008A95E1F7F701808121E030E02C0F3D1F9F +:1009C000280F311DC9012091020130910301FC0162 +:1009D000E20FF31F6081772767FD7095640F711D2B +:1009E000882777FD8095982F0E94A92920E030E084 +:1009F00040E451E40E940E294B015C01F701218182 +:100A000084E090E0821B9109BC01882777FD8095E6 +:100A1000982F0E94A9299B01AC01C501B4010E9435 +:100A2000A6289B01AC0160E070E080E090E40E94A9 +:100A30001C2B20E030E04CED50E40E94B92A4B0121 +:100A40005C01F70182818823D1F04FE050E0C501BD +:100A5000B4010E940B0E809116028823A1F08091B0 +:100A6000D40124E0829FF0011124EB52FE4F8082DA +:100A70009182A282B3828F5F8093D40104C0C501AA +:100A8000B4010E94530A0F3F110508F02ECF94C005 +:100A90008091D00181111FC0043130E5130709F0A6 +:100AA00051C00E948E0381E08093D0010E94DE221B +:100AB0009093CF018093CE011092C7011092C9018B +:100AC0001092C8011092CB011092CA011092CD0170 +:100AD0001092CC0171C08091CE019091CF010E9403 +:100AE000EA22883C910570F48091C701E82FF0E07C +:100AF000EE0FFF1FE853FE4F118300838F5F80933B +:100B0000C7015AC0043880E5180721F005381045A0 +:100B100001F13AC0F7018281882341F01092C501AA +:100B200082E01EC0043830E5130759F58091C501F5 +:100B3000811106C086E20E94371886E20E94FF18E3 +:100B400082E01CC00438F0E51F0741F3053810456A +:100B5000D9F4F7018281882331F01092C60180E236 +:100B60000E944E1929C08091C601811106C087E2FA +:100B70000E94371887E20E94FF1880E20E945519F0 +:100B80001BC00538104529F381E08093C50180938F +:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 +:100BA000DF91CF911F910F91FF90EF90BF90AF9089 +:100BB0009F908F900C94E30280E0A3960FB6F89478 +:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 +:100BD000EF90BF90AF909F908F90089580E090E04D +:100BE000089508959CE0799FF001112490E3899F76 +:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B +:100C0000FE4F859194910895880F991FFC01E45B34 +:100C1000FF4F859194910895880F991FFC01E4532B +:100C2000FE4F8591949108950F931F93CF93DF9377 +:100C3000EC01811521E39207A0F5C11580E3D807E7 +:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 +:100C500007C2C83AD10578F4C53AD10508F06AC090 +:100C6000C130D10509F463C008F4F7C1C430D1051F +:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 +:100C8000C11590E2D90708F0AFC0C11521E0D20725 +:100C900008F0E6C1C03FD10508F4DFC18E01106540 +:100CA0001FC2C03880E5D80700F5C03790E5D907E6 +:100CB00008F0A3C0C11520E5D20709F4ACC050F478 +:100CC000CE01905480319F4008F0C7C1DF708E0183 +:100CD000106A06C2C13080E5D80709F4AEC0C4313D +:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 +:100CF00009F48EC050F4C13890E5D90709F482C0D8 +:100D000008F083C000E011EDEBC1C03181E5D807E8 +:100D100008F4A3C1C11597E5D90708F436C1CE017F +:100D200090578115904108F098C1DF7093C101E0A0 +:100D300010E0D6C1C53AD10509F494C1C63AD1052F +:100D400009F093C102E810E4CBC1C83AD10509F417 +:100D50008FC1C93AD10509F48EC1CA3AD10509F447 +:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 +:100D70008BC1CD3AD10509F48AC1C03BD10509F434 +:100D800089C1CE3AD10509F488C1CF3AD10509F419 +:100D900087C1C13BD10509F486C1C23BD10509F425 +:100DA00085C1C33BD10509F484C1C43BD10509F415 +:100DB00083C1C53BD10509F482C1C63BD10509F405 +:100DC00081C1C73BD10509F480C1C83BD10509F4F5 +:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 +:100DE0007DC100E014E47CC1CE019F700E940C061E +:100DF00078C1DD278E01106C73C1CF70DD278E01A5 +:100E0000146D6EC100E010ED6BC100E012ED68C121 +:100E100000E013ED65C10E94E21B0E94200A0E94BF +:100E2000E4038FEF94E32CE0815090402040E1F701 +:100E300000C000000E94392353C18091F2028160FA +:100E40008093F2024DC10E949A23811102C00E9438 +:100E500076230E94AD2390E090931D0380931C03A2 +:100E6000C23080E5D80721F480911C03816086C0E0 +:100E7000C43090E5D90721F480911C0382607EC0C4 +:100E8000C63020E5D20721F480911C03846076C02F +:100E9000C83080E5D80719F480911C0327C0CA30F8 +:100EA00090E5D90721F480911C03806167C0CC30A4 +:100EB00020E5D20721F480911C0380625FC0CE3010 +:100EC00080E5D80721F480911C03806457C0C031AD +:100ED00090E5D90721F480911C0380684FC0C2318E +:100EE00020E5D20729F480911C038460886046C005 +:100EF000C33080E5D80721F480911C038E7F3EC06B +:100F0000C53090E5D90721F480911C038D7F36C050 +:100F1000C73020E5D20721F480911C038B7F2EC0BF +:100F2000C93080E5D80719F480911C0326C0CB3066 +:100F300090E5D90721F480911C038F7E1FC0CD302E +:100F400020E5D20721F480911C038F7D17C0CF309C +:100F500080E5D80721F480911C038F7B0FC0C1313D +:100F600090E5D90721F480911C038F7707C0C33126 +:100F7000D04531F480911C038B7F877F80931C03C5 +:100F800080911C030E94B123ABC08D2F99278F70D5 +:100F9000992781309105D9F49E012370332702C02F +:100FA000880F991F2A95E2F79C688E0144E0000F94 +:100FB000111F4A95E1F700271370802B912B53E006 +:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 +:100FD000910531F4DC2FCC278E01016F106A80C09F +:100FE0008330910569F4CE018370992701E010E008 +:100FF00002C0000F111F8A95E2F7C8019C680FC05C +:1010000084309105B9F4CE018370992701E010E096 +:1010100002C0000F111F8A95E2F7C8019A6823E009 +:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 +:101030001D2B56C08530910531F4DC2FCC278E0155 +:10104000046F106A4DC0069709F04AC0CF71DD27C2 +:10105000DC2FCC278E01106243C000E010E040C0BE +:101060008E013EC001E810E43BC003E810E438C044 +:1010700002EE14E435C009EE14E432C00AEE14E4C2 +:101080002FC005EB14E42CC006EB14E429C007EBD9 +:1010900014E426C00CEC14E423C00DEC14E420C0CE +:1010A00003E815E41DC00AE815E41AC002E915E4D6 +:1010B00017C004E915E414C001E216E411C003E20C +:1010C00016E40EC004E216E40BC005E216E408C004 +:1010D00006E216E405C007E216E402C00AE216E4DE +:1010E000C801DF91CF911F910F9108959CE0799FE6 +:1010F000F001112490E3899FE00DF11D1124E60F0A +:10110000F11DEE0FFF1FEA52FE4F85919491803E34 +:101110009105E0F4803C910558F58133910509F47F +:101120006FC048F48932910509F463C08A32910591 +:1011300009F46DC072C089339105E9F082389105D8 +:10114000D1F08533910509F44DC067C0833E910508 +:1011500081F138F4803E9105B9F0823E9105D9F0D5 +:101160005CC0863E910561F1873E9105A1F155C0B5 +:101170000E940406089520911C0320FD02C021FF57 +:101180004CC080EE90E049C080911C0380FFF9CFF5 +:1011900089E390E042C080911C0382FF0EC08091E1 +:1011A0001C0384FF03C080E090E037C083EE90E032 +:1011B00034C080911C0382FFF2CF82EE90E02DC0FC +:1011C00080911C0383FF0BC080911C0384FDEBCF37 +:1011D00087EE90E022C080911C0383FFF5CF86EE5E +:1011E00090E01BC080911C0385FF07C089E290E05E +:1011F00014C080911C0385FFF9CF85E390E00DC0FA +:1012000080911C0386FF07C08AE290E006C08091AF +:101210001C0386FFF9CF81E390E00E941406089535 +:101220000C94E502E82FF0E0E25BFE4F8081E82FAE +:10123000EF70F0E082958F7021E030E0A90102C0EC +:10124000440F551F8A95E2F740A308950F931F930B +:10125000CF93DF9385B7806885BF85B7806885BFEA +:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 +:10127000E82FEF70F0E021A182958F70A80102C0E5 +:10128000440F551F8A95E2F7CA01822B81A38C2F48 +:101290000E941209219740F78BE090E061E070E036 +:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 +:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F +:1012C0009D01242B22A3019758F7DF91CF911F9105 +:1012D0000F910C948F03EF92FF920F931F93CF9374 +:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA +:1012F0008C2F0E9412098BE090E040E050E0FC014E +:10130000EE5BFE4F6081E62FEF70F0E020A130E051 +:1013100062956F7002C0359527956A95E2F720FDBA +:1013200009C09701082E02C0220F331F0A94E2F76A +:10133000422B532B019718F7F801929182918F015C +:101340008417950721F051834083D09305018C2F9A +:101350000E941209C15060F68091050187FD2CC0E2 +:101360008150809305018F3F39F08FE99FE001970D +:10137000F1F700C0000020C080911E0290911F0272 +:10138000909327028093260280911C0290911D0267 +:10139000909325028093240280911A0290911B025F +:1013A0009093230280932202809118029091190257 +:1013B00090932102809320020E94910381E0DF91AB +:1013C000CF911F910F91FF90EF900895E82FF0E0DB +:1013D000EE0FFF1FE05EFD4F80819181089508951B +:1013E0000F931F93CF9308E212E0C0E0F8019291AF +:1013F00082918F010E945622C80FF2E000321F072F +:10140000A9F78C2FCF911F910F9108950E949A23D5 +:10141000811102C00E9476230E94BF23809307039C +:101420003E9A809171008D7F8093710082E080935D +:1014300090008AE18093910081E080932A020895D0 +:1014400080912A02811102C00E94060A10927A023B +:1014500010927902809171008D7F8093710080914C +:1014600090008F738093900010923C0210923B0288 +:10147000109273021092740210927502109276020A +:101480001092720210927102E1E5F2E0A1E4B2E082 +:1014900011921192119211921D921D9282E0E137E8 +:1014A000F807B1F70895CF92DF92EF92FF920F9372 +:1014B0001F93CF93DF9320913B02222309F484C032 +:1014C0006B017C0180912A02811102C00E94060AF0 +:1014D00001E712E0C7E0D0E0A7019601F801929180 +:1014E0008291729162918F010E940A29811131C00B +:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 +:10150000118212821382DE01AA0FBB1FAF5BBD4F97 +:1015100011961C921E92C730D105E9F021964481A4 +:1015200055816681778140835183628373831482FE +:1015300015821682178212968D919C91139711969F +:101540009C938E9313961C921E9212973496129629 +:10155000E2CF219708F68091790290917A02019763 +:1015600097FD05C090937A028093790204C010928F +:101570007A02109279028091790290917A022091F8 +:101580007702309178022817390724F010927802F8 +:1015900010927702892BC1F4809171008D7F809326 +:1015A0007100809190008F7380939000109273026D +:1015B00010927402109275021092760210927202CA +:1015C0001092710210923B02DF91CF911F910F9107 +:1015D000FF90EF90DF90CF9008951F920F920FB67B +:1015E0000F9211244F925F926F927F928F929F92EF +:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 +:101600004F935F936F937F938F939F93AF93BF930A +:10161000CF93DF93EF93FF9380913B02882309F4EC +:101620009BC1C0917902D0917A021C161D060CF064 +:1016300093C140902B0250902C0260902D0270902C +:101640002E0220E030E0A901C301B2010E94B52AB8 +:1016500018160CF065C0C130D10509F452C0809154 +:10166000770290917802BE010E94872C7C019093B2 +:1016700078028093770280903D0290903E02A09085 +:101680003F02B090400220E030E040E85FE3C50157 +:10169000B4010E94A62860933D0270933E0280939D +:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 +:1016B000EF5AFD4FA3019201608171818281938174 +:1016C0000E940E2920E030E040E05EE30E94B92A4B +:1016D0009B01AC01C501B4010E94B52A18168CF417 +:1016E000C7010196BE010E94872C909378028093D7 +:1016F000770210923D0210923E0210923F02109229 +:101700004002E0917702F0917802EE0FFF1FEE0F9A +:10171000FF1FEF5AFD4F6081718182819381D0C09C +:10172000C0907302D0907402E0907502F09076023F +:1017300020E030E0A901C701B6010E940A292197E3 +:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A +:10175000EF5AFD4F80809180A280B380A501940153 +:10176000C701B6010E940A2987FF31C0A501940173 +:1017700060E070E08CED93EC0E940E2920E030E0F8 +:1017800040E451E40E940E2920E030E040E05FE3B5 +:101790000E94B92A9B01AC0160E070E080E090E417 +:1017A0000E941C2B9B01AC01C501B4010E94B92A07 +:1017B0009B01AC01C701B6010E940A2987FF07C03F +:1017C000A701960160E070E08CED93E439C0A501BB +:1017D0009401C701B6010E94B52A18160CF055C035 +:1017E000A501940160E070E08CED93E40E940E2965 +:1017F00020E030E040E451E40E940E2920E030E097 +:1018000040E05FE30E94B92A9B01AC0160E070E018 +:1018100080E090E40E941C2B9B01AC01C501B40147 +:101820000E94B92A9B01AC01C701B6010E94B52AEA +:1018300018165CF5A701960160E070E08CED93EC62 +:101840000E940E2920E030E040E451E40E940E297D +:1018500020E030E040E05FE30E94B92A9B01AC0148 +:1018600060E070E080E090E40E941C2B9B01AC01E2 +:10187000C701B6010E94B92A609373027093740283 +:10188000809375029093760213C0FE01EE0FFF1F46 +:10189000EE0FFF1FEF5AFD4F80819181A281B3812E +:1018A0008093730290937402A0937502B0937602B2 +:1018B000609173027091740280917502909176022A +:1018C00020912802309129022F3F4FEF340731F049 +:1018D0002F5F3F4F30932902209328020E94950EDC +:1018E0006B017C0120E034E244EF51E40E940A29BC +:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 +:1019000081E4F82E20E030E040E051E4C701B60168 +:101910000E94B92A9B01AC0160E074E284E79BE479 +:101920000E940E296B017C010E947B297093970015 +:1019300060939600209106013091070140910801C3 +:1019400050910901C701B6010E94B92A0E947B2962 +:10195000709399006093980080913C02882309F469 +:1019600033C1C0903702D0903802E0903902F09035 +:101970003A0220E030E0A901C701B6010E94B52A71 +:101980001816D4F580912802909129028F3F2FEFED +:10199000920729F001969093290280932802C701AB +:1019A000B6010E94950E20E030E040E051E40E9434 +:1019B000B92A9B01AC0160E074E284E79BE40E94D9 +:1019C0000E296B017C010E947B2970939700609324 +:1019D0009600209106013091070140910801509135 +:1019E0000901C701B6010E94B92A0E947B297093A0 +:1019F00099006093980008C010929700109296008A +:101A00001092990010929800609131027091320208 +:101A10006F5F7F4F70933202609331022091960086 +:101A20003091970080E090E0232BF1F0C091960078 +:101A3000D09197000E94A7296B017C01BE0180E034 +:101A400090E00E94A7299B01AC0160913302709144 +:101A5000340280913502909136020E940E2920E0D6 +:101A60003FEF4FE757E410C00E94A7296B017C01AC +:101A700020E030EE4FEF54E4609133027091340275 +:101A800080913502909136020E94B92A9B01AC01E7 +:101A9000C701B6010E94B52A87FD96C080912F022A +:101AA0008F5F80932F0290E0209103033091040315 +:101AB00082179307A0F080910E03882319F01092EB +:101AC0002F020DC0809171008D7F809371008091F5 +:101AD00090008F738093900010923C027DC08091A3 +:101AE0003002C0912F02811128C0C0900803D0900D +:101AF0000903E0900A03F0900B0320E030E0A90115 +:101B0000C701B6010E94B52A1816BCF481E0809383 +:101B1000300210923702109238021092390210925D +:101B20003A02C0923302D0923402E0923502F0922F +:101B30003602C150C0932F0243C01092300210925F +:101B4000290210922802E0910503F091060348E073 +:101B5000C49FE00DF11D112480819181A281B38188 +:101B60008093370290933802A0933902B0933A02DF +:101B700020E030E040E85EE36481758186819781F2 +:101B80000E94B92A6B017C0180910A01682F70E0E4 +:101B900080E090E00E94A72920E030E048EC52E489 +:101BA0000E940E299B01AC01C701B6010E94B92A0F +:101BB000609333027093340280933502909336021F +:101BC00010923202109231028091070380FD04C00E +:101BD00010923C0210923B02FF91EF91DF91CF9166 +:101BE000BF91AF919F918F917F916F915F914F9135 +:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB +:101C00009F908F907F906F905F904F900F900FBE3E +:101C10000F901F901895CF92DF92EF92FF92CF9383 +:101C2000DF936B017C01EA0180912A02811102C0DD +:101C30000E94060A8091070380FF46C080917902C6 +:101C400090917A0208970CF03FC0809171008D7FCF +:101C50008093710080913C0281110E94200A81E0F2 +:101C600080933B02109229021092280220E030E07B +:101C7000A901C701B6010E94B52A1816DCF48091AB +:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 +:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 +:101CA000FF1FEF5BFD4FD183C083019690937A02B3 +:101CB000809379028091710082608093710080919D +:101CC0009000806880939000DF91CF91FF90EF901B +:101CD000DF90CF90089580910703817008958091DF +:101CE00007038160809307030E94C3230C94EB03D6 +:101CF000809107038E7F809307030C94C323809108 +:101D00007B0290E0019666E070E00E94872C809351 +:101D10007B02089580917B0290E0019766E070E07D +:101D20000E94872C80937B0208958F929F92AF929E +:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 +:101D4000DF936B017C01C0912802D0912902BE0172 +:101D500080E090E00E94A7294B015C01A701960159 +:101D600060E070E08CE594E40E940E299B01AC01D8 +:101D7000C501B4010E94B92A0E947B2920917B02EF +:101D8000233009F473C028F4222351F02130E9F004 +:101D90002CC1243009F4A0C0253009F4E0C025C1CD +:101DA00080E090E0A0E0BFE38093060190930701FC +:101DB000A0930801B093090110922B0210922C02FB +:101DC00010922D0210922E0210C110922B0210922E +:101DD0002C0210922D0210922E026431710540F4F3 +:101DE0006A30710560F520E030E040E85EE32BC02A +:101DF000693C710508F0AAC080E090E00E94A72924 +:101E000020E030E040EA51E40E94A52820E030E0E4 +:101E100044E353E40E940E299B01AC010E94B92ABD +:101E200020E030E040E05EE30E94B92A9B01AC0173 +:101E300060E070E080E09EE30E94A52844C020E0BE +:101E400030E040E05FE3C701B6010E94B92A6B01B0 +:101E50007C0180E090E0A0E0BEE3809306019093D7 +:101E60000701A0930801B0930901BFC010922B0293 +:101E700010922C0210922D0210922E024AE0469FE0 +:101E80009001479F300D1124C90168EB7BE00E944F +:101E9000732CBC016C5D754077FF03C07195619533 +:101EA0007109882777FD8095982F0E94A9292EE334 +:101EB00033EC4EE259E30E94B92A20E030E040ECD6 +:101EC0005EE30E94A6286093060170930701809349 +:101ED00008019093090189C010922B0210922C02E4 +:101EE00010922D0210922E02CE0183709927892B19 +:101EF000E1F0BE016170772780E090E00E94A729A1 +:101F000020E030E040E05EE30E94B92A20E030E0CB +:101F100040E45FE30E94A6286093060170930701E6 +:101F200080930801909309010CC080E090E0A0E04C +:101F3000BFE38093060190930701A0930801B0933B +:101F40000901C770DD27CD2B09F04FC010920601A3 +:101F500010920701109208011092090146C01092D8 +:101F60002B0210922C0210922D0210922E0200E0F1 +:101F700010E020E03FE30093060110930701209357 +:101F80000801309309016739710578F180E090E02C +:101F90000E94A72920E030E047E153E40E94A528F1 +:101FA00020E030E04AE754E40E940E2920E030E0CF +:101FB00048E452E40E94B92A20E030E040EA51E4CB +:101FC0000E94EB290E947629660F771F660F771F04 +:101FD000FB01EE5AFE4F2081318142815381C701BE +:101FE000B6010E94B92A6B017C01C701B601DF91DD +:101FF000CF911F910F91FF90EF90DF90CF90BF9006 +:10200000AF909F908F90089580918C020895CF9308 +:10201000DF9300D01F92CDB7DEB79C0180911303F0 +:10202000843019F593E099833B832A839093E900E8 +:102030008FEF9091E800815095FD06C095ED9A953F +:10204000F1F700008111F5CF8091E80085FF0DC008 +:1020500040E050E063E070E0CE0101960E9468121B +:102060008091E8008E778093E8000F900F900F909A +:10207000DF91CF910895CF93DF9300D01F92CDB71A +:10208000DEB720911303243021F522E029839B83BE +:102090008A8383E08093E9008FEF9091E80081507C +:1020A00095FD06C095ED9A95F1F700008111F5CFE9 +:1020B0008091E80085FF0DC040E050E063E070E0F3 +:1020C000CE0101960E9468128091E8008E7780937D +:1020D000E8000F900F900F90DF91CF91089520911D +:1020E00013032430F1F422E02093E9002FEF309124 +:1020F000E800215035FD06C035ED3A95F1F70000B6 +:102100002111F5CF2091E80025FF0BC040E050E001 +:1021100065E070E00E9468128091E8008E778093FD +:10212000E8000895CF93DF93EC019091130394306E +:1021300009F046C0809115018823D9F080911601DD +:102140008823B9F09093E9008FEF9091E8008150D7 +:1021500095FD06C095E19A95F1F700008111F5CF44 +:102160008091E80085FF2CC040E050E060E170E025 +:1021700017C081E08093E9008FEF9091E8008150D3 +:1021800095FD06C095ED9A95F1F700008111F5CF08 +:102190008091E80085FF14C040E050E068E070E006 +:1021A000CE010E9468128091E8008E778093E8004B +:1021B00080E1FE01ACE7B2E001900D928A95E1F773 +:1021C000DF91CF91089580911203811109C00E947F +:1021D000FD130E945A148091E20084608093E20013 +:1021E0000895109212030895089508950C94A12261 +:1021F00042E061EC81E00E94771342E061EC82E012 +:102200000E94771342E061EC83E00E94771342E181 +:1022100061EC84E00C94771380911503833009F40A +:1022200055C030F4813071F0823009F48EC00895C9 +:102230008A3009F47AC08B3009F460C0893009F023 +:102240009CC020C080911403813A09F096C080910F +:10225000E800877F8093E80080911803909119032C +:10226000892B21F460E18CE792E003C060E080E01C +:1022700090E070E00E94B3128091E8008B77809329 +:10228000E800089580911403813209F076C08091AE +:10229000180390911903009719F0039709F06DC086 +:1022A0008091E800877F8093E8008091E80082FDBC +:1022B00005C0809113038111F8CF5FC08091F100B8 +:1022C00080938C028091E8008B7753C08091140337 +:1022D000813A09F052C08091180390911903892B1B +:1022E00009F04BC08091E800877F8093E8008091DF +:1022F000E80080FFFCCF8091150136C08091140367 +:102300008132D9F58091180390911903892BA9F591 +:102310008091E800877F8093E8000E94AC13809151 +:102320001603809315010C94E21B809114038132F3 +:1023300021F58091E800877F8093E8000E94AC132C +:102340008091170380938D02089580911403813A40 +:10235000A1F48091E800877F8093E8008091E800F5 +:1023600080FFFCCF80918D028093F1008091E80086 +:102370008E778093E8000C94AC13089584B7877F20 +:1023800084BF88E10FB6F8948093600010926000DB +:102390000FBE90E080E80FB6F894809361009093B0 +:1023A00061000FBE0E944F170E94FD130E945A1435 +:1023B0008091E20084608093E20078940E94E016AD +:1023C0000E9451178BE091E00E94FB16809113034D +:1023D000853069F40E946222809111038823B1F351 +:1023E0000E949022882391F30E945212EFCF0E9404 +:1023F0005917ECCF292F332723303105C9F064F466 +:102400002130310581F02230310509F043C08DE6DD +:1024100090E022EB33E042C021323105F1F022326C +:10242000310541F137C082E190E02FE134E036C060 +:1024300099278130910541F08230910541F0892B37 +:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 +:10245000F3E0849190E09F0121C06430D8F4E62F2E +:10246000F0E0EE0FFF1FE255FE4F2081318189E041 +:1024700090E014C0643070F470E0FB01EE0FFF1FB9 +:10248000EA55FE4F20813181FB01EE55FE4F8081E0 +:1024900090E004C080E090E020E030E0FA01318379 +:1024A0002083089580E189BD82E189BD09B400FEE1 +:1024B000FDCF8091D8008F7D8093D8008091E0007F +:1024C00082608093E0008091E00081FDFCCF089560 +:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 +:1024E000EC018B016A010E94CB13811133C0C1142E +:1024F000D10439F0F60180819181081B190BC80FB6 +:10250000D91FE12CF12C0115110519F18091E8007A +:1025100085FD16C08091E8008E778093E800C11495 +:10252000D10449F0F60180819181E80EF91EF18213 +:10253000E08285E00FC00E94CB13882321F30AC0FC +:1025400089918093F10001501109FFEFEF1AFF0A02 +:10255000DACF80E0DF91CF911F910F91FF90EF9044 +:10256000DF90CF90089520911A0330911B03261716 +:10257000370748F06115710539F42091E8002E778E +:102580002093E80001C0B90140E061157105A9F18F +:1025900020911303222309F443C0253009F442C0DB +:1025A0002091E80023FD40C02091E80022FD32C0C8 +:1025B0002091E80020FFE9CF4091F3002091F20044 +:1025C00030E0342BFC01CF016115710559F0283042 +:1025D000310540F481918093F100615071092F5FC2 +:1025E0003F4FF1CF41E02830310509F040E0209124 +:1025F000E8002E772093E800C8CF4111C9CF0AC068 +:1026000080911303882361F0853061F08091E800A8 +:1026100083FD0AC08091E80082FFF2CF80E0089538 +:1026200082E0089583E0089581E0089520911A03DF +:1026300030911B032617370748F06115710539F4EF +:102640002091E8002E772093E80001C0B901FC0139 +:1026500020E06115710591F180911303882309F43D +:1026600040C0853009F43FC08091E80083FD3DC043 +:102670008091E80082FD2FC08091E80080FFE9CFC3 +:102680002091F3008091F20090E0922B611571058A +:1026900059F08830910540F424912093F10031964F +:1026A000615071090196F2CF21E0089709F020E00E +:1026B0008091E8008E778093E800CBCF2111CCCFBA +:1026C0000AC080911303882361F0853061F0809106 +:1026D000E80083FD0AC08091E80082FFF2CF80E02D +:1026E000089582E0089583E0089581E00895982F89 +:1026F000973058F59093E900981739F07091EC00F5 +:102700002091ED005091F00003C0242F762F50E06F +:1027100021FF19C03091EB003E7F3093EB003091E8 +:10272000ED003D7F3093ED003091EB003160309350 +:10273000EB007093EC002093ED005093F00020919B +:10274000EE0027FF07C09F5FD3CF8F708093E90013 +:1027500081E0089580E008958091140387FF11C0FF +:102760008091E80082FD05C0809113038111F8CFAC +:1027700011C08091E8008B770BC0809113038823F0 +:1027800049F08091E80080FFF8CF8091E8008E77D3 +:102790008093E80008952091E4003091E50095E6EB +:1027A0004091EC00842F817040FF22C08091E800AE +:1027B00080FD1CC080911303882391F0853091F037 +:1027C0008091EB0085FD10C04091E4005091E50040 +:1027D0004217530729F39A01915011F784E00895A5 +:1027E00082E0089583E0089581E0089580E00895EF +:1027F0004091E80042FFDECF08950E946B140E94D2 +:102800007314E0EEF0E0808181608083E8EDF0E019 +:1028100080818F77808319BCA7EDB0E08C918E7F8B +:102820008C9380818F7E80831092120308950F9382 +:102830001F93CF93DF930E946B140E947314C8ED13 +:10284000D0E088818F7788838881806888838881B9 +:102850008F7D888319BC1092130310920F0310927E +:1028600011031092100300EE10E0F80180818B7FBD +:10287000808388818160888342E060E080E00E94FC +:102880007713E1EEF0E080818E7F8083E2EEF0E06E +:10289000808181608083808188608083F80180816D +:1028A0008E7F8083888180618883DF91CF911F91A3 +:1028B0000F910895E8EDF0E080818F7E8083E7ED51 +:1028C000F0E080818160808384E082BF81E080933A +:1028D00012030C941714E8EDF0E080818E7F808362 +:1028E0001092E20008951092DA001092E10008952B +:1028F0001F920F920FB60F9211242F933F934F9375 +:102900005F936F937F938F939F93AF93BF93EF9357 +:10291000FF938091E10082FF0BC08091E20082FF73 +:1029200007C08091E1008B7F8093E1000E94DF1659 +:102930008091DA0080FF1FC08091D80080FF1BC00B +:102940008091DA008E7F8093DA008091D90080FF39 +:102950000DC080E189BD82E189BD09B400FEFDCFD3 +:1029600081E0809313030E94E31005C019BC10920C +:1029700013030E94F1108091E10080FF19C0809143 +:10298000E20080FF15C08091E2008E7F8093E2001C +:102990008091E20080618093E2008091D8008062A3 +:1029A0008093D80019BC85E0809313030E94F51032 +:1029B0008091E10084FF30C08091E20084FF2CC050 +:1029C00080E189BD82E189BD09B400FEFDCF80911F +:1029D000D8008F7D8093D8008091E1008F7E809316 +:1029E000E1008091E2008F7E8093E2008091E2001E +:1029F00081608093E20080910F03882311F084E0CE +:102A000007C08091E30087FD02C081E001C083E040 +:102A1000809313030E94F6108091E10083FF29C088 +:102A20008091E20083FF25C08091E100877F809341 +:102A3000E10082E08093130310920F038091E10084 +:102A40008E7F8093E1008091E2008E7F8093E20090 +:102A50008091E20080618093E20042E060E080E0EB +:102A60000E9477138091F00088608093F0000E94AC +:102A7000F410FF91EF91BF91AF919F918F917F9152 +:102A80006F915F914F913F912F910F900FBE0F90DB +:102A90001F9018951F920F920FB60F9211242F932B +:102AA0003F934F935F936F937F938F939F93AF93D6 +:102AB000BF93CF93DF93EF93FF93C091E900CF7063 +:102AC0008091EC00D82FD17080FDD0E81092E90001 +:102AD0008091F000877F8093F00078940E948E159B +:102AE0001092E9008091F00088608093F000CD2B77 +:102AF000CF70C093E900FF91EF91DF91CF91BF912B +:102B0000AF919F918F917F916F915F914F913F9185 +:102B10002F910F900FBE0F901F9018951F93CF937A +:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E +:102B3000CDBFE4E1F3E088E08E0F9091F100919336 +:102B40008E13FBCF0E940C118091E80083FF1FC100 +:102B50008091140390911503492F50E04A3051059C +:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB +:102B700081F0823809F00BC1809118038F70809327 +:102B8000E9008091EB0085FB882780F91092E9002D +:102B900006C0809110039091110391118260909171 +:102BA000E800977F9093E8008093F1001092F10085 +:102BB000C8C0282F2D7F09F0EAC0882319F0823081 +:102BC00061F0E5C080911603813009F0E0C09330D8 +:102BD00009F080E0809311032BC0809116038111CE +:102BE00027C0809118038F7009F4D1C08093E90049 +:102BF0002091EB0020FF1CC0933021F48091EB006A +:102C0000806214C09091EB0090619093EB0021E002 +:102C100030E0A90102C0440F551F8A95E2F74093A6 +:102C2000EA001092EA008091EB0088608093EB004C +:102C30001092E9008091E800877F86C08111A7C0CB +:102C4000109116031F778091E3008078812B809389 +:102C5000E3008091E800877F8093E8000E94AC1336 +:102C60008091E80080FFFCCF8091E3008068809332 +:102C7000E300111102C082E001C083E080931303DE +:102C800086C08058823008F082C0809116039091EF +:102C900017038C3D53E0950779F583E08A838AE238 +:102CA00089834FB7F894DE01139620E03EE051E2AD +:102CB000E32FF0E050935700E49120FF03C0E2952A +:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 +:102CD00001C0C0968D939D932F5F243149F74FBF5C +:102CE0008091E800877F8093E8006AE270E0CE017F +:102CF00001960E94B31214C0AE014F5F5F4F609106 +:102D000018030E94FA11BC01009709F440C0909189 +:102D1000E800977F9093E80089819A810E941613BA +:102D20008091E8008B778093E80031C0803879F596 +:102D30008091E800877F8093E80080910F03809363 +:102D4000F1008091E8008E778093E8000E94AC1338 +:102D50001EC081111CC0909116039230C0F4809166 +:102D6000E800877F8093E80090930F030E94AC13E4 +:102D700080910F03811106C08091E30087FD02C09E +:102D800081E001C084E0809313030E94F8108091D9 +:102D9000E80083FF0AC08091E800877F8093E80005 +:102DA0008091EB0080628093EB00AA960FB6F894B6 +:102DB000DEBF0FBECDBFDF91CF911F910895089563 +:102DC000CF93809113038823A1F0C091E900CF70C5 +:102DD0009091EC00892F817090FD80E8C82B1092B3 +:102DE000E9008091E80083FD0E948E15CF70C093AA +:102DF000E900CF91089590939302809392020895F1 +:102E0000E0919202F0919302309721F00190F081CD +:102E1000E02D099480E00895E0919202F0919302F0 +:102E2000309721F00280F381E02D09940895E0911C +:102E30009202F0919302309721F00480F581E02D09 +:102E4000099408952091900230919102821793077E +:102E500071F09093910280939002E0919202F09130 +:102E60009302309721F00680F781E02D09940895B0 +:102E700020918E0230918F028217930771F0909308 +:102E80008F0280938E02E0919202F091930230972C +:102E900021F00084F185E02D0994089508950C94A3 +:102EA0004E170E94D5220E9426090E945B230C9493 +:102EB0000A285F926F927F928F929F92AF92BF92F9 +:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 +:102ED00000D000D01F92CDB7DEB70E946B099DE9EC +:102EE000C92E92E0D92E03E010E0AA24A394B12CBD +:102EF000502E802F0E94E6094C01F60172906290DC +:102F00006F016826792661147104A1F4015011093A +:102F100078F78FEF89838A831B820E94DE2281608B +:102F2000782F9D838C8349815A816B818D810E948A +:102F3000091838C08091F20281FD0E94EF092BE050 +:102F400030E07501022E02C0EE0CFF1C0A94E2F77D +:102F5000C70186219721892B09F129835A828E2066 +:102F60009F2091E0892809F490E09B830E94DE2253 +:102F70008160782F9D838C8349815A816B818D81FB +:102F80000E940918000F111FF801EB56FD4F8081B8 +:102F90009181E826F926F182E08204C021503109AE +:102FA00080F6B4CF0E944225109194020E9400172F +:102FB0001817D1F00E940017809394020F900F9081 +:102FC0000F900F900F90DF91CF911F910F91FF9075 +:102FD000EF90DF90CF90BF90AF909F908F907F90B9 +:102FE0006F905F900C9410090F900F900F900F90BE +:102FF0000F90DF91CF911F910F91FF90EF90DF9095 +:10300000CF90BF90AF909F908F907F906F905F9088 +:103010000895CF93DF93CDB7DEB72B970FB6F89413 +:10302000DEBF0FBECDBF4F83588769877A878B87F6 +:10303000DE01119686E0FD0111928A95E9F785E09F +:10304000FE01379601900D928A95E1F749815A81E8 +:103050006B817C818D819E810E94801E2B960FB694 +:10306000F894DEBF0FBECDBFDF91CF910895CF930F +:10307000882309F4C2C0C82F823859F40E9400176F +:1030800081FDBBC089E30E945A210E94272289E367 +:103090000CC0833879F40E94001780FDAEC083E530 +:1030A0000E945A210E94272283E50E949C21CF91F1 +:1030B0000C942722843859F40E94001782FD9DC089 +:1030C00087E40E945A210E94272287E4EECF8CEFEA +:1030D0008C0F813A48F48C2F0E94722781118DC089 +:1030E0008C2F0E945A21E3CF80E28C0F883048F465 +:1030F000C77081E001C0880FCA95EAF70E94E021FD +:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 +:1031100031F083E890E005C081E890E002C082E8E9 +:1031200090E0CF910C94221788E58C0F833108F042 +:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 +:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 +:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 +:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 +:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B +:1031800090E038C082EE90E035C089EE90E032C029 +:103190008AEE90E02FC085EB90E02CC086EB90E0AB +:1031A00029C087EB90E026C08CEC90E023C08DEC2A +:1031B00090E020C083E891E01DC08AE891E01AC049 +:1031C00082E991E017C084E991E014C081E292E0C5 +:1031D00011C083E292E00EC084E292E00BC085E26F +:1031E00092E008C086E292E005C087E292E002C069 +:1031F0008AE292E0CF910C943817CF9108958823FA +:1032000009F44BC0823859F40E94001781FF45C071 +:1032100089E30E945A210E94272289E30CC0833847 +:1032200071F40E94001780FF38C083E50E945A2184 +:103230000E94272283E50E949C210C942722843837 +:1032400059F40E94001782FF28C087E40E945A2187 +:103250000E94272287E4EFCF9CEF980F913A58F312 +:1032600090E2980F983050F4877091E001C0990F68 +:103270008A95EAF7892F0E94E621DFCF9BE5980F18 +:10328000933020F480E090E00C942217885A833128 +:1032900020F480E090E00C9438170895882321F002 +:1032A0000E94E0210C9427220895882321F00E9497 +:1032B000E6210C94272208957F928F929F92AF92DD +:1032C000BF92CF92DF92EF92FF920F931F93CF9313 +:1032D000DF931F92CDB7DEB77C01C62E772EFC019F +:1032E000058102950F70128111110E94FD210E942B +:1032F0005321882379F0112369F080E28C0D883006 +:1033000048F082E00E943C210E94532191E0D82E97 +:10331000D92601C0D12CE72DE295EF70F0E0E05AFC +:10332000FF4F0C949B2C872D807F072D0F708823D7 +:1033300011F00295007F112389F0002309F499C14F +:1033400080E28C0D883020F4802F0E94E02103C0A1 +:10335000802F0E94F0210E9427228BC18C2D0E9479 +:10336000FF18002309F4C3C180E28C0D883020F4DB +:10337000802F0E94E62103C0802F0E94F6210E9428 +:103380002722B5C1872D807F972D9F70803211F441 +:10339000892F03C0892F8295807FCC2021F0F1E016 +:1033A000CF16A1F01DC0112339F0002319F101300F +:1033B00009F50E9410229BC1002319F0013009F485 +:1033C00096C189830E941322898110C1112321F0A3 +:1033D000063008F08CC10EC0053008F088C106C167 +:1033E000112359F0002331F0F701958190FF41C17D +:1033F0009F7095830E944E197AC1002309F4F6C08C +:103400003EC1872D86958695837090E0009719F0D0 +:10341000019761F06CC1112321F08C2D972D9370D1 +:1034200002C080E090E00E94221761C1112321F0C8 +:103430008C2D972D937002C080E090E00E94381789 +:1034400056C18C2D112319F00E944A2402C00E94FB +:10345000B2240E9437254BC1872D837009F052C0DA +:10346000111145C18C2D829586958770880F880F24 +:103470009C2D9F70892E912CA12CB12C082E04C05C +:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 +:103490000FE010E020E030E0B901A80104C0440FC3 +:1034A000551F661F771F8A95D2F7CB01BA01609529 +:1034B00070958095909503C060E070E0CB01272D5A +:1034C00026952695237030E02230310569F02330AF +:1034D000310589F0682979298A299B29213031050C +:1034E00071F00E94C81F03C1682979298A299B2984 +:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 +:10350000AC1FF5C0112319F0872D817001C086957D +:10351000882309F4ECC08C2D829586958770880FDE +:10352000880F9C2D9F70892E912CA12CB12C082ED8 +:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 +:1035400014C00FE010E020E030E0B901A80104C091 +:10355000440F551F661F771F8A95D2F7CB01BA011A +:10356000609570958095909503C060E070E0CB0108 +:10357000272D269526952370422F50E04230510585 +:1035800069F04330510589F0682979298A299B29F6 +:103590004130510571F00E94A220A9C06829792903 +:1035A0008A299B290E94BE20A2C00E94A220C50198 +:1035B000B4010E9486209BC08C2D90E0FC01E05E4F +:1035C000F109E531F10508F050C0E059FF4F0C94C6 +:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 +:1035E0001F20802F07CF0E944020802F0E94551956 +:1035F0007EC0112341F0053008F079C0872D8F710E +:103600000E94652074C0063008F071C0F7CF112306 +:1036100039F0872D8F710E941F2069C01123C9F3D3 +:10362000872D8F710E94402062C0112329F0872DC1 +:103630008F710E940A205BC00E94002058C0112395 +:1036400051F0172D1F71812F0E941F2063E0812FE1 +:103650000E9433214CC081E00E943C21023008F4DA +:1036600046C082E00E943C2142C0112331F0002379 +:1036700081F28C2D0E9437183AC0002389F28C2DDC +:103680000E94FF1834C0472D4F706C2DC7010E9457 +:10369000EE050E94241F2BC0111129C0472D4F7029 +:1036A00050E042305105B9F04CF44115510581F01C +:1036B00041305105E1F40E94322819C043305105D0 +:1036C00069F04430510599F48C2D0E9484280FC074 +:1036D0000E941B280CC00E944E2809C00E9461282D +:1036E00006C0472D4F706C2DC7010E94F105DD20EB +:1036F000F9F00E942F2180FD1BC0F70112820E9469 +:1037000029210E941F20C7010E94A71B0E94292176 +:103710000F90DF91CF911F910F91FF90EF90DF906D +:10372000CF90BF90AF909F908F907F900C9440204F +:103730000F90DF91CF911F910F91FF90EF90DF904D +:10374000CF90BF90AF909F908F907F9008950F93F0 +:103750001F93CF93DF93EC01888199812B813C816A +:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 +:10377000ED03882371F0688179818A810E94252177 +:103780008C010E94DA200E94A11FB801CE010E9484 +:103790005C19DF91CF911F910F9108950E94FD2137 +:1037A0000E940D220E94D2210E9427220E94E82519 +:1037B0000E94372580E090E00E94221780E090E090 +:1037C0000C9438170E94ED210C94CE1B0E941A21F4 +:1037D000292F22952F7030E02C3031054CF42A30FF +:1037E00031056CF42250310922303105A8F407C0AC +:1037F0002C30310569F02F30310551F00DC0803F7C +:1038000069F018F4803E40F409C0843F29F406C0F2 +:1038100093FB882780F9089580E0089581E008955A +:10382000CF93DF9300D000D01F92CDB7DEB70F90BB +:103830000F900F900F900F90DF91CF910895CF933D +:10384000DF9300D000D000D0CDB7DEB726960FB6FC +:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 +:10386000CF93DF93C0919D0216E080919E02C8170E +:1038700099F0D0E01C9FF0011D9FF00D1124E1563E +:10388000FD4F4081518162817381848195810E94C5 +:103890001F1C2196C770E9CFDF91CF911F9108952A +:1038A0004091CF025091D0026091D1027091D2022A +:1038B0008091D3029091D4020C941F1C8091D40269 +:1038C00082958F7009F054C08091D102882309F449 +:1038D0004FC080919D02A0919E026091CF02709195 +:1038E000D0024091D2025091D302B6E08A1709F477 +:1038F0003FC090E041155105C1F17F3F11F46F3F8A +:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 +:10391000218172132AC02081621327C022812111C4 +:1039200024C0238134812417350710F42150310934 +:10393000241B350B283C3105C0F42091D4022F7094 +:1039400020612093D40226E0289FF001299FF00DEA +:103950001124EC55FD4F80818F70806180838FEC46 +:1039600092E00E94A71B0C942F1C01968770BECF7B +:103970000895CF92DF92EF92FF920F931F93CF9310 +:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 +:10399000CDBF8C0185E0F801DE011D9601900D92EE +:1039A0008A95E1F7D8014C9111965C911197129686 +:1039B0006C9112971396CD90DC9014973091CF02B2 +:1039C0007091D0028091D2029091D302009709F4B5 +:1039D0006BC17F3F19F43F3F09F466C1E090D1020B +:1039E000EE2009F4C0C02091D402C816D90628F0F0 +:1039F000F601E81BF90BCF0104C0809590958C0D62 +:103A00009D1DFF24F394883C910578F0F12C207FD4 +:103A100009F0C6C07C2DD98AC88A89890E94101CE9 +:103A20008FEC92E00E94A71BB1C0822F807F09F02B +:103A300046C0751314C0341312C0611110C02F702A +:103A400020612093D4020E94501C8FEC92E00E94CF +:103A5000A71B8091D402D80115968C932EC0CD2837 +:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 +:103A700080919D0220919E0236E0821709F45AC07F +:103A800090E0389FF001399FF00D1124E156FD4F71 +:103A90007181571306C07081471303C07281711181 +:103AA00003C001968770E9CFF62E662309F418C18A +:103AB0008091D40281608093D402F12C11C17513DE +:103AC00008C0341306C0611104C08091D402D8012B +:103AD000C3C04D875E878D859E856A8B0E94E61BDD +:103AE0006A898823E1F16623D1F12091D402822FE3 +:103AF00082958F7090E0029774F08091CF02909140 +:103B0000D00298878F831986DB86CA862C87CE01E0 +:103B100007960E94A71B86E0F801AFECB2E0019087 +:103B20000D928A95E1F70E945E1C0E94501CFF24B2 +:103B3000F394D6C04D875E878D859E850E941A219D +:103B4000292F22952F7030E0223031050CF0BCC0B7 +:103B50009F7009F0B6C0805E883008F4C1C0C8010B +:103B60000E94A71BE4CFC816D90608F453C0F6017B +:103B7000E81BF90BCF01883C910508F450C0F12CEB +:103B80007C2DD98AC88A89890E94101CEFECF2E04A +:103B900086E0DF011D928A95E9F70E94501CA0C0C3 +:103BA000751314C0341312C0611110C08091D40277 +:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 +:103BC000DF011D928A95E9F7FE2C8AC04D875E873A +:103BD0008D859E856A8B0E94E61B6A89882309F47D +:103BE000BECF662309F4BBCF2091D402822F8295E9 +:103BF0008F7090E002970CF48ECF8091CF0290915D +:103C0000D0029A8389831B82DD82CC822E83CE01EF +:103C100001967FCF809590958C0D9D1DACCFF62E93 +:103C2000662309F49CCF75132EC034132CC0209149 +:103C3000D40220FD1FC0822F82958F70D9F0D80149 +:103C400015962C9315978F3049F08F5F982F92958A +:103C5000907F822F8F70892B15968C93C8010E94BC +:103C6000A71B86E0F801AFECB2E001900D928A95B7 +:103C7000E1F793CF86E0F801AFECB2E001900D924E +:103C80008A95E1F72DC04D875E878D859E850E94C0 +:103C9000E61B811140CF8091D40281608093D402D1 +:103CA000C8010E94A71B1CC0662309F458CF4D878A +:103CB0005E878D859E850E94E61B882309F44FCF81 +:103CC0002ACF811148CF0CC0243031050CF047CFEA +:103CD0009F7009F440CFF8019581907F09F03BCFA8 +:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 +:103CF000CF911F910F91FF90EF90DF90CF9008959B +:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 +:103D1000DEBF0FBECDBF4F83588769877A878B87F9 +:103D20009C87CE0107960E94B91C882369F08F8179 +:103D300098852A853B85232BF1F19F3F09F063C0CD +:103D40008F3F09F060C037C086E0FE013796DE0184 +:103D5000119601900D928A95E1F76F817885EA8539 +:103D6000FB85309741F17F3F11F46F3F21F12091A6 +:103D70009E0230E0C90101968770992740919D020B +:103D800050E08417950709F447C069837A83FD835F +:103D9000EC8396E0929FD001939FB00D1124A15621 +:103DA000BD4FFE01319601900D929A95E1F78093F7 +:103DB0009E020E942F1C16E080919D0290919E020F +:103DC0008917C1F1189FC001112481569D4F0E948F +:103DD000B91C882379F1E0919D021E9FF001112406 +:103DE000E156FD4F408151816281738184819581CB +:103DF0000E941F1C80919D0290E001968770992778 +:103E000080939D02D9CF4F81588569857A858B85AE +:103E10009C850E941F1CCFCF0E94E21B10929E0225 +:103E200010929D02EFECF2E086E0DF011D928A9590 +:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 +:103E4000DF91CF911F910895EF92FF920F931F93EF +:103E5000CF93DF938C01009709F46CC0F12CEE2412 +:103E6000E394E8012196F8018491843740F484308A +:103E700008F051C0813081F0823019F15BC0853784 +:103E800009F444C0A8F19CE7980F903708F052C09D +:103E90008F770E94FF1841C00E5F1F4FFE01C49133 +:103EA00080E28C0F883048F4C7708E2D01C0880FD7 +:103EB000CA95EAF70E94002214C08C2F0E9437187E +:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 +:103ED00058F4C7708E2D01C0880FCA95EAF70E946A +:103EE00006220E9427221AC08C2F0E94FF1816C09B +:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C +:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 +:103F1000FE01F49003C00E9437188E018F2D882374 +:103F200009F49FCFEFE9FFE03197F1F700C00000FF +:103F30008150F5CFDF91CF911F910F91FF90EF90BE +:103F4000089508956093D9027093DA028093DB029A +:103F50009093DC020C94CE1B0F931F930091D90217 +:103F60001091DA022091DB023091DC02DC01CB01FE +:103F7000802B912BA22BB32B8093D9029093DA0242 +:103F8000A093DB02B093DC021F910F910C94CE1B27 +:103F90000F931F930091D9021091DA022091DB0256 +:103FA0003091DC02DC01CB0180239123A223B323D7 +:103FB0008093D9029093DA02A093DB02B093DC02E3 +:103FC0001F910F910C94CE1B0F931F930091D90258 +:103FD0001091DA022091DB023091DC02DC01CB018E +:103FE00080279127A227B3278093D9029093DA02E2 +:103FF000A093DB02B093DC021F910F910C94CE1BB7 +:104000001092D5021092D6021092D7021092D802C6 +:104010000C94CE1B41E050E060E070E004C0440F1F +:10402000551F661F771F8A95D2F74093D50250938C +:10403000D6026093D7027093D8020C94CE1B41E055 +:1040400050E060E070E004C0440F551F661F771F0A +:104050008A95D2F78091D5029091D602A091D7028D +:10406000B091D802482B592B6A2B7B2B4093D50259 +:104070005093D6026093D7027093D8020C94CE1B53 +:1040800041E050E060E070E004C0440F551F661F3F +:10409000771F8A95D2F740955095609570958091DD +:1040A000D5029091D602A091D702B091D8024823B0 +:1040B00059236A237B234093D5025093D602609301 +:1040C000D7027093D8020C94CE1B41E050E060E020 +:1040D00070E004C0440F551F661F771F8A95D2F702 +:1040E0008091D5029091D602A091D702B091D802CA +:1040F000482759276A277B274093D5025093D60239 +:104100006093D7027093D8020C94CE1B0F931F9329 +:104110000091D5021091D6022091D7023091D80299 +:10412000DC01CB01802B912BA22BB32B8093D502EA +:104130009093D602A093D702B093D8021F910F910B +:104140000C94CE1B0F931F930091D5021091D602B1 +:104150002091D7023091D802DC01CB01802391233A +:10416000A223B3238093D5029093D602A093D702C3 +:10417000B093D8021F910F910C94CE1B0F931F93F5 +:104180000091D5021091D6022091D7023091D80229 +:10419000DC01CB0180279127A227B3278093D5028A +:1041A0009093D602A093D702B093D8021F910F919B +:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 +:1041C0001F93CF93DF938C01C090D902D090DA0275 +:1041D000E090DB02F090DC028091D5029091D60253 +:1041E000A091D702B091D802C82AD92AEA2AFB2A7C +:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B +:10420000979587950A94D2F780FF06C0B8018C2F46 +:104210000E947608019721F4219760F780E001C0A1 +:104220008C2FDF91CF911F910F91FF90EF90DF9036 +:10423000CF900895CF93DF93EC010E94DB20BE0165 +:104240000E947608DF91CF910895CB010E941A2138 +:1042500008958091DD0285958595859508958091D5 +:10426000DD028770089598E0899F90011124262B24 +:104270002093DD020C941F202091DD028095822383 +:104280008093DD02982F977069F430E0482F55270E +:1042900047FD50952417350729F085958595859517 +:1042A0000C94402008959091DD02977081E009F40C +:1042B00080E0089590911501992321F090911601C5 +:1042C000911109C02091170130911801F90132961E +:1042D0009FEF40E01FC0982F9695969596959F303A +:1042E00050F5E0911701F0911801E90FF11D877069 +:1042F00021E030E0A90102C0440F551F8A95E2F782 +:10430000CA019181892B818308959F3F39F04F5FC6 +:104310004E3041F051915813F8CF0DC05111F7CFE5 +:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B +:10433000FA9582830895089590911501992321F0AB +:1043400090911601911109C0209117013091180127 +:10435000F9013296205F3F4F1FC0982F9695969592 +:1043600096959F30F0F4E0911701F0911801E90F54 +:10437000F11D877021E030E0A90102C0440F551FF4 +:104380008A95E2F7CA0180959181892381830895F6 +:104390003196E217F30729F090819813F9CF108234 +:1043A000F7CF089581E090E0E0911701F0911801B6 +:1043B000E80FF91F1082019680319105A9F7089541 +:1043C0009091F102892B8093F1020895809590914C +:1043D000F10289238093F10208951092F102089569 +:1043E0009091F002892B8093F0020895809590912E +:1043F000F00289238093F00208951092F00208954C +:104400009091EF02892B8093EF020895809590910F +:10441000EF0289238093EF0208951092EF0208952E +:104420008093DE0208951092DE02089580911701B4 +:1044300090911801FC0131969C01205F3F4F80E074 +:10444000919191118F5FE217F307D1F70895E091F1 +:104450001701F09118018091F1028083E09117011A +:10446000F091180190818091F002892B8083E09176 +:104470001701F091180190818091EF02892B8083C0 +:104480008091DE02882361F0E0911701F09118011C +:104490009081892B80830E94162281111092DE0266 +:1044A00080911701909118010C940C1720E000974F +:1044B00039F0AC0141505109842395232F5FF7CF88 +:1044C000822F089580911303843039F11092F30202 +:1044D00020E488E190E00FB6F894A89580936000FE +:1044E0000FBE2093600080E00E94F10280E00E94F5 +:1044F000100983B7817F846083BF83B7816083BFE6 +:104500007894889583B78E7F83BF88E10FB6F8943F +:1045100080936000109260000FBE08950895089582 +:1045200080E00E94F1020E948E220E946B090E948C +:104530008F220E94F00991E0811101C090E0892F43 +:1045400008950E94E21B80E00E94F1020E940A2866 +:104550000E9400170C9410091F920F920FB60F9231 +:1045600011248F939F93AF93BF938091F302811196 +:1045700013C08091F4029091F502A091F602B091DF +:10458000F7024196A11DB11D8093F4029093F502AC +:10459000A093F602B093F702BF91AF919F918F91D4 +:1045A0000F900FBE0F901F90189582E084BD93E08E +:1045B00095BD9AEF97BD80936E0008952FB7F8943C +:1045C0008091F4029091F502A091F602B091F70269 +:1045D0002FBF0895CF92DF92EF92FF920F931F9318 +:1045E0002FB7F8944091F4025091F5026091F602D1 +:1045F0007091F7022FBF6A017B01EE24FF248C012A +:1046000020E030E0C016D106E206F30610F4415077 +:1046100051099A01281B390BC9011F910F91FF9075 +:10462000EF90DF90CF9008951F920F920FB60F92E8 +:1046300011248F939F93AF93BF938091F402909135 +:10464000F502A091F602B091F7020196A11DB11DED +:104650008093F4029093F502A093F602B093F702D0 +:10466000BF91AF919F918F910F900FBE0F901F90B0 +:1046700018950E94FD13F8942FEF87EA91E62150D8 +:1046800080409040E1F700C0000087E090EBDC0143 +:1046900080931E0390931F03A0932003B0932103E4 +:1046A0009CE088E10FB6F894A895809360000FBE57 +:1046B00090936000FFCF0E949A23811102C00E9454 +:1046C00076230E94A5238093F2020E94AD2380935B +:1046D0001C0387FB882780F9809316010E94A92379 +:1046E000682F70E080E090E00C94A21F6DEE7EEFEA +:1046F00080E090E00E94C12C60E082E090E00E94A7 +:10470000AF2C60E083E090E00E94AF2C60E084E09A +:1047100090E00E94AF2C60E085E090E00E94AF2C1A +:1047200060E086E090E00E94AF2C6FEF87E090E0C1 +:104730000C94AF2C80E090E00E94A92C21E08D3EEB +:104740009E4F09F020E0822F089582E090E00C94C3 +:10475000A12C83E090E00C94A12C84E090E00C94D8 +:10476000A12C682F84E090E00C94AF2C86E090E0C0 +:104770000C94A12C682F86E090E00C94AF2C87E07D +:1047800090E00C94A12C682F87E090E00C94AF2C63 +:104790008091FA0280FF0BC060911C0185E0689F48 +:1047A000B001112475956795759567952BC081FFAC +:1047B00009C060911C0185E0689FB00111247595C6 +:1047C000679520C082FF07C060911C0185E0689F4B +:1047D000B001112417C09091FB029923D1F0609190 +:1047E0001B01961788F720911C0185E0289F9001F6 +:1047F0001124929FA001939F500D112470E0CA01D3 +:104800000E94872C6038710540F46115710539F0FC +:1048100002C065E070E0862F08958FE7089581E07B +:1048200008958091FA0280FF08C060911A0170E03B +:10483000759567957595679521C081FF06C0609154 +:104840001A0170E07595679519C082FF04C06091E8 +:104850001A0170E010C09091FB029923C1F06091A1 +:1048600019019617A0F780911A01899FC0011124A0 +:1048700070E00E94872C6038710528F4611571057D +:1048800021F0862F08958FE7089581E0089561E073 +:1048900070E0F4CF803F21F40E94C823819504C0CA +:1048A000813F29F40E94C8238093FE020895823F2D +:1048B00021F40E94C823819504C0833F29F40E94FB +:1048C000C8238093FD020895893F19F40E941124A2 +:1048D00005C08A3F31F40E94112481958093FF0224 +:1048E00008958B3F21F40E941124819504C08C3FD0 +:1048F00029F40E941124809300030895843F21F439 +:104900008091FC02816017C0853F21F48091FC02F8 +:10491000826011C0863F21F48091FC0284600BC04C +:10492000873F21F48091FC02886005C0883F31F404 +:104930008091FC0280618093FC0208958D3F21F4F8 +:104940008091FA0281600BC08E3F21F48091FA02BF +:10495000826005C08F3F29F48091FA0284608093C1 +:10496000FA020895803F39F48091FE0287FF6CC0FF +:104970001092FE0269C0813F29F48091FE02181650 +:10498000BCF362C09091FD02823F29F497FF5CC0A6 +:104990001092FD0259C0833F19F41916CCF354C08C +:1049A000893F41F48091FF0218160CF04DC010921F +:1049B000FF024AC08A3F29F48091FF0287FF44C06A +:1049C000F6CF8B3F39F48091000387FF3DC01092F2 +:1049D00000033AC08C3F29F4809100031816BCF301 +:1049E00033C0843F21F48091FC028E7F17C0853F45 +:1049F00021F48091FC028D7F11C0863F21F48091CB +:104A0000FC028B7F0BC0873F21F48091FC02877FE3 +:104A100005C0883F31F48091FC028F7E8093FC02B8 +:104A200013C08D3F21F48091FA028E7F0BC08E3F20 +:104A300021F48091FA028D7F05C08F3F29F4809187 +:104A4000FA028B7F8093FA028091FD0281110EC0E1 +:104A50008091FE0281110AC08091FF02811106C07F +:104A600080910003811102C01092FB0208958CEF27 +:104A700092E00E9417170E94DE229093F902809321 +:104A8000F80208951F93CF93DF938091F8029091DD +:104A9000F9020E94EA22AC019091FB02992321F0D5 +:104AA00020911D0130E006C020911E018AE0289F60 +:104AB000900111244217530708F486C08091FD022B +:104AC000C091FE02D091FF0210910003811107C036 +:104AD000C11176C0D11174C0111172C075C09F3F51 +:104AE00019F09F5F9093FB02181624F40E94C823CC +:104AF0008093FD028091FD0287FF05C00E94C823BC +:104B000081958093FD021C1624F40E94C823809393 +:104B1000FE028091FE0287FF05C00E94C823819596 +:104B20008093FE026091FD02662339F1C091FE027E +:104B3000CC2319F1772767FD7095872F972F0E9457 +:104B4000A92923E333E343E35FE30E94B92A0E94E8 +:104B500076296093FD026C2F772767FD7095872F6C +:104B6000972F0E94A92923E333E343E35FE30E94E5 +:104B7000B92A0E9476296093FE021D1624F40E9431 +:104B800011248093FF028091FF0287FF05C00E94DD +:104B9000112481958093FF02111624F40E941124A0 +:104BA000809300038091000387FF05C00E941124B9 +:104BB000819580930003DF91CF911F910C9437254D +:104BC0009F3F09F08ECF96CFDF91CF911F9108952F +:104BD000ECEFF2E085E0DF011D928A95E9F7109293 +:104BE000FB021092FA020895833081F128F481309B +:104BF00059F08230D1F00895853009F449C0B8F1F8 +:104C0000863009F456C0089580911E01262F30E0A9 +:104C1000280F311D2F3F310524F4680F60931E01CA +:104C200008958FEF80931E01089580911D01262F16 +:104C300030E0280F311D2F3F310524F4680F6093B9 +:104C40001D0108958FEF80931D01089580911C012F +:104C5000262F30E0280F311D2F3F310524F4680F37 +:104C600060931C0108958FEF80931C01089580913B +:104C70001B01262F30E0280F311D2F3F310524F472 +:104C8000680F60931B0108958FEF80931B010895B7 +:104C900080911A01262F30E0280F311D2F3F31055A +:104CA00024F4680F60931A0108958FEF80931A011E +:104CB000089580911901262F30E0280F311D2F3FD4 +:104CC000310524F4680F6093190108958FEF8093E4 +:104CD00019010895833011F128F4813049F08230B0 +:104CE00091F00895853081F120F18630C1F1089569 +:104CF00080911E01681720F4861B80931E01089581 +:104D000010921E01089580911D01681720F4861BE2 +:104D100080931D01089510921D01089580911C013A +:104D2000681720F4861B80931C01089510921C01C3 +:104D3000089580911B01681720F4861B80931B0146 +:104D4000089510921B01089580911A01681720F4AC +:104D5000861B80931A01089510921A01089580917C +:104D60001901681720F4861B809319010895109289 +:104D7000190108950F931F93873208F048C08E31B0 +:104D800008F08DC0803109F477C008F5873009F448 +:104D900061C068F4863009F09DC08091F202817F85 +:104DA0008E7F8093F20281E08093020394C08B3067 +:104DB00009F489C08E3009F08DC08091F20282FB27 +:104DC000222720F991E0922790FB82F95EC086317C +:104DD00009F479C060F4813109F07CC00E94E21BC3 +:104DE0009091160181E08927809316016CC089316A +:104DF00009F469C08B3109F06DC08091F20281FB2A +:104E0000222720F991E0922790FB81F93EC0883358 +:104E100009F459C050F4893209F457C0853309F4B4 +:104E200054C0873209F451C055C0833409F44DC0D1 +:104E300028F48A3308F44EC0895332C0883409F00C +:104E400049C00E94E21B0E94200A0E94E4030E94C3 +:104E5000392339C09091F202892F8095817080FBAF +:104E600090F929F0966098609093F20234C0997F8F +:104E7000977F9093F20227C08091F20283FB222752 +:104E800020F991E0922790FB83F98093F202992315 +:104E9000D1F08091F20281608093F20214C08D51B2 +:104EA00041E050E060E070E08A019B0104C0000F27 +:104EB000111F221F331F8A95D2F7C901B8010E9422 +:104EC000A21F0E94E21B81E006C061E070E080E06A +:104ED00090E0F5CF80E01F910F91089580E0089554 +:104EE00080E00895CF93C82F80910203813069F04C +:104EF00018F08230C9F184C0E0911701F0911801D7 +:104F00008081823209F07EC007C0E0911701F091E4 +:104F100018018081823261F48C2F0E946E278111EA +:104F200004C08C2F0E94BA261DC081E090E01AC0F8 +:104F30008C2F0E947027811114C0C43179F048F47D +:104F4000CB3079F0C03109F061C082E08093020378 +:104F500008C0C93219F0C83321F058C010920203BA +:104F600055C081E0817054C0C93291F120F5C4313F +:104F700079F1B0F4C73009F047C08EE180931E018B +:104F800082E380931D018AE080931C0184E1809379 +:104F90001B0188E080931A0188E28093190134C0D4 +:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 +:104FB0008093010329C0CE34E9F020F4CB3421F5ED +:104FC0006AE013C0C13579F0C235F1F461E00DC07B +:104FD00080910103882319F01092010315C081E02C +:104FE0008093020315C061E006C0809101030E9416 +:104FF000F4250AC06AE0809101030E946A2604C079 +:105000001092020380E004C081E002C080E0AACFD9 +:10501000CF9108950E949A23811102C00E947623A5 +:105020000E94B62380931D0380FF02C0869501C0B5 +:1050300080E00C94F10280911D03982F9695292F02 +:1050400030E0233031054CF49F5F990F8170892B3C +:10505000816080931D030E94BA2380911D03869571 +:105060000C94F10280911D03982F969591F0915820 +:10507000990F8170892B80931D038E7F91E009F435 +:1050800090E080911D0390FB80F980931D030E94A6 +:10509000BA2380911D0386950C94F10280911D0323 +:1050A000982F909590FB80F980931D030E94BA235E +:1050B00080911D0380FF02C0869501C080E00C94A2 +:1050C000F10290911D03892F86958F5F8F779170E4 +:1050D000843028F4880F892B80931D0302C090939D +:1050E0001D0380911D038E7F91E009F490E0809173 +:1050F0001D0390FB80F980931D030E94BA238091C9 +:105100001D0386950C94F10220911D03922F969514 +:105110008927982F990F822F8170892B80931D03E7 +:105120008E7F91E009F490E080911D0390FB80F95F +:1051300080931D030E94BA2380911D0386950C94D1 +:10514000F10280911D03869508955058BB27AA2728 +:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 +:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF +:10517000D3D180F3BA17620773078407950718F035 +:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 +:105190000B01B90190010C01CA01A0011124FF27E4 +:1051A000591B99F0593F50F4503E68F11A16F040DF +:1051B000A22F232F342F4427585FF3CF46953795DE +:1051C0002795A795F0405395C9F77EF41F16BA0BA3 +:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 +:1051E000661F771F881FC2F70EC0BA0F621F731F9A +:1051F000841F48F4879577956795B795F7959E3FF7 +:1052000008F0B3CF9395880F08F09927EE0F979584 +:105210008795089527D108F481E008950CD06BC1DB +:1052200063D140F05AD130F021F45F3F19F03EC114 +:10523000511195C14FC170D198F39923C9F35523EA +:10524000B1F3951B550BBB27AA2762177307840779 +:1052500038F09F5F5F4F220F331F441FAA1FA9F32F +:1052600033D00E2E3AF0E0E830D091505040E69521 +:10527000001CCAF729D0FE2F27D0660F771F881F82 +:10528000BB1F261737074807AB07B0E809F0BB0B71 +:10529000802DBF01FF2793585F4F2AF09E3F510595 +:1052A00068F004C15CC15F3FECF3983EDCF3869587 +:1052B00077956795B795F7959F5FC9F7880F911D0B +:1052C0009695879597F90895E1E0660F771F881FF7 +:1052D000BB1F621773078407BA0720F0621B730BAA +:1052E000840BBA0BEE1F88F7E095089504D06894FC +:1052F000B11135C1089518D188F09F5790F0B92F9A +:105300009927B751A0F0D1F0660F771F881F991F1A +:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF +:1053200008951CC1672F782F8827B85F39F0B93FDF +:10533000CCF3869577956795B395D9F73EF490951C +:105340008095709561957F4F8F4F9F4F0895E8949A +:1053500009C097FB3EF490958095709561957F4FBD +:105360008F4F9F4F9923A9F0F92F96E9BB2793956B +:10537000F695879577956795B795F111F8CFFAF47B +:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC +:1053900016C0882311F096E911C0772321F09EE80A +:1053A000872F762F05C0662371F096E8862F70E070 +:1053B00060E02AF09A95660F771F881FDAF7880F4A +:1053C0009695879597F9089588D018F011F08CD0AC +:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F +:1053E000E7FB6217730784079507A8F199F3E92F84 +:1053F000FF2788232AF03197660F771F881FDAF777 +:10540000952F5527442332F091505040220F331FDF +:10541000441FD2F7BB27E91BF50B621B730B840BF0 +:10542000B109C1F222F4620F731F841FB11D3197BD +:105430002AF0660F771F881FBB1FEFCF9150504097 +:105440005AF041F0882332F0660F771F881F915081 +:105450005040C1F7939530C08695779567959F5FCB +:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 +:1054700016161706E807F907C0F012161306E40718 +:10548000F50798F0621B730B840B950B39F40A2611 +:1054900061F0232B242B252B21F408950A2609F4EF +:1054A000A140A6958FEF811D811D089597F99F67F3 +:1054B00080E870E060E008959F3F31F0915020F463 +:1054C000879577956795B795880F911D96958795E0 +:1054D00097F908959FEF80EC089500240A9416161A +:1054E000170618060906089500240A9412161306D2 +:1054F000140605060895092E0394000C11F4882360 +:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B +:105510007F4F8F4F9F4F089557FD9058440F551F51 +:1055200059F05F3F71F04795880F97FB991F61F025 +:105530009F3F79F087950895121613061406551F9C +:10554000F2CF4695F1DF08C0161617061806991F08 +:10555000F1CF86957105610508940895E894BB27FD +:1055600066277727CB0197F908957CDF08F48FEF42 +:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 +:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF +:10559000D1F3950F50E0551F629FF001729FBB271A +:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 +:1055B0006627B00DA11D661F829F2227B00DA11D79 +:1055C000621F739FB00DA11D621F839FA00D611DFF +:1055D000221F749F3327A00D611D231F849F600D20 +:1055E000211D822F762F6A2F11249F5750408AF059 +:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 +:10560000881F91505040A9F79E3F510570F04ECF32 +:10561000A6CF5F3FECF3983EDCF3869577956795D0 +:10562000B795F795E7959F5FC1F7FE2B880F911D02 +:105630009695879597F90895FA01EE0FFF1F30961A +:105640002105310599F16115710561F48038BFE3D9 +:105650009B0749F168949038810561F08038BFEF6D +:105660009B0741F0992342F5FF3FE10531052105F4 +:1056700011F1E8940894E795D901AA2329F4AB2FF6 +:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F +:10569000F73950F019F0FF3A38F49F779F930CD008 +:1056A0000F9007FC905808953EF014CF60E070E032 +:1056B00080E89FE308954FE79F775F934F933F9371 +:1056C0002F939ED02F913F914F915F9152DF05C054 +:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C +:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C +:1056F0004EDF0F920F920F924DB75EB70F92C0D050 +:10570000EAE0F1E016D04F915F91EF91FF91E595BE +:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD +:10572000FA95E1F74195550B32D00F9007FE26C050 +:105730000895DF93CF931F930F93FF92EF92DF9221 +:105740007B018C01689405C0DA2EEF011EDFFE019B +:10575000E894A5912591359145915591AEF3EF01CE +:1057600006DDFE019701A801DA9479F7DF90EF904A +:10577000FF900F911F91CF91DF9108959B01AC0194 +:1057800060E070E080E89FE349CD90CE95CECCDE1E +:10579000E8F39923D9F3940F511DBBF39150504076 +:1057A00094F059F0882332F0660F771F881F9150CC +:1057B0005040C1F79E3F510544F7880F911D9695C3 +:1057C000879597F908955F3FACF0983E9CF0BB2712 +:1057D000869577956795B79508F4B1609395C1F76D +:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B +:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 +:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD +:105810000F93FF92C92FDD2788232AF02197660F67 +:10582000771F881FDAF720E030E040E85FEB9FE366 +:10583000883920F0803E30F021968F7787DCE2E3D4 +:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 +:10585000EC01FB2E6F5771097595771F880B990B1B +:1058600078DD28E132E741E35FE38FDEAF2D980179 +:10587000AE01FF900F911F91CF91DF9178DC3BCE6D +:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 +:1058900022273327442750781FC0B75188F4AB2FF5 +:1058A0000024469537952795011CA395D2F3002037 +:1058B00069F0220F331F441FB395DAF30DD045CCA6 +:1058C00061307105A0E88A07B94630F49B01AC014C +:1058D0006627772788279078309621F020833183B8 +:1058E000428353830895AA1BBB1B51E107C0AA1F23 +:1058F000BB1FA617B70710F0A61BB70B881F991F71 +:105900005A95A9F780959095BC01CD01089597FB14 +:10591000072E16F4009407D077FD09D00E94732C4F +:1059200007FC05D03EF4909581959F4F08957095A2 +:1059300061957F4F0895EE0FFF1F0590F491E02DC4 +:105940000994F999FECF92BD81BDF89A992780B547 +:105950000895A8E1B0E042E050E00C94C92C262F55 +:10596000F999FECF92BD81BDF89A019700B4021655 +:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 +:1059800008950196272F0E94B02C0C94AF2CDC01B7 +:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A +:1059A000319600B40D9241505040B8F70895F894E4 +:0259B000FFCF27 +:1059B200640007000CFF0000003F64041092106FA7 +:1059C200103B1007100101DF022808140A321E00E2 +:1059D20002040507090B0C0E1011131517181A1CD7 +:1059E2001D1F2123242628292B2D2F303234353711 +:1059F200393B1F0F03764F5F6F7F4969437909591E +:105A020053633149803F5D8B803FF8BF803FCAE1DD +:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE +:105A2200803F3149803F0000803FF16D7F3F75EA42 +:105A32007E3F4C827E3F833F7E3F84287E3F833F72 +:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 +:105A5200803F3F4D3639ED04A0046A043104C4038B +:105A6200DD03F6030F04010203040506070809001B +:00000001FF diff --git a/keyboard/planck/keymaps/bone2planck/compiled.hex b/keyboard/planck/keymaps/bone2planck/compiled.hex new file mode 100644 index 0000000000..0d5287b3ee --- /dev/null +++ b/keyboard/planck/keymaps/bone2planck/compiled.hex @@ -0,0 +1,1450 @@ +:100000000C9491020C94D5020C94D5020C94D50258 +:100010000C94D5020C94D5020C94D5020C94D50204 +:100020000C94D5020C94D5020C9482140C945415A3 +:100030000C94B6220C94D5020C94D5020C94D502E3 +:100040000C94D5020C9437030C94D5020C94D50271 +:100050000C94D5020C941E230C94D5020C94D5025A +:100060000C94D5020C94D5020C94D5020C94D502B4 +:100070000C94D5020C94D5020C94D5020C94D502A4 +:100080000C94F70A0C94D5020C94D5020C94D5026A +:100090000C94D5020C94D5020C94D5020C94D50284 +:1000A0000C94D5020C94D5020C94D502C115E3151D +:1000B000D116E315D11628164B16D116A016B31675 +:1000C0009D199D19CC19CC190B1A2B1A811B811B58 +:1000D000361A811BE61AE61A4D1B561B811B7B1B29 +:1000E000F31AF31AF31AF31AF31AF31AF31AF31AA8 +:1000F000F31AF31AF31AF31AF31AF31AF31AF31A98 +:10010000031B111B181B1F1B291B07634236B79BC0 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C00002010000000000000000000014000D000B +:1001D0000700180004001B0013000B000F001000A4 +:1001E0001A002D000152060017000C000800120032 +:1001F00005001100150016000A0001521600090042 +:1002000019002F00340033001D001C003600370099 +:100210000E001600E000E300E200035202522C0040 +:100220002C000252035229002B002800350214141E +:1002300038022514261435001E02640064022702C9 +:100240002302000001002D1424022414271430027C +:100250002D0225022602380037020100000031007D +:100260002102641430140814300022021F023102EB +:100270003602000001000100010001000100010040 +:1002800001000100010001000100010000004B001D +:100290002A0052004C004E000000240025002600D9 +:1002A0000000000000004A00500051004F004D00C7 +:1002B0003700210022002300360000001600000055 +:1002C0002B0049002800000027001E001F0020000E +:1002D00036021600010001000100010001000100CA +:1002E0000100010001000100010001000000000008 +:1002F0004600470048000000000040004100420066 +:100300004500000000000000A800AA00A9000000AD +:1003100020143D003E003F004400000001000000AA +:10032000AC00AE00AB0000001F143A003B003C00E4 +:100330004300010001000100010001000000010074 +:100340000100000001000100010001002803540029 +:1003500068006500200050006C0061006E006300C2 +:100360006B0020004B006500790062006F006100A7 +:100370007200640000002C034F00720074006800DB +:100380006F006C0069006E00650061007200200063 +:100390004B006500790062006F006100720064002C +:1003A000730000000403090409026D00040100A0A9 +:1003B000FA090400000103010100092111010001F3 +:1003C000223F000705810308000A09040100010318 +:1003D000010200092111010001224D0007058203DD +:1003E00008000A09040200010300000009211101AC +:1003F00000012236000705830308000A09040300F0 +:100400000103000000092111010001223900070544 +:1004100084031000011201100100000008EDFE60CD +:100420006001000102000105010906A1010507198B +:10043000E029E715002501950875018102050819D5 +:100440000129059505750191029501750391010535 +:10045000071900297715002501957875018102C0DB +:1004600005010980A101850216010026B7001A01C5 +:10047000002AB700751095018100C0050C0901A183 +:10048000018503160100269C021A01002A9C0275B0 +:100490001095018100C005010902A1010901A10017 +:1004A0000509190129051500250195057501810228 +:1004B0009501750381010501093009311581257FF9 +:1004C00095027508810609381581257F9501750803 +:1004D0008106050C0A38021581257F950175088172 +:1004E00006C0C005010906A101050719E029E715A5 +:1004F00000250195087501810295017508810105A6 +:100500000819012905950575019102950175039159 +:10051000010507190029FF150025FF9506750881BB +:1005200000C011241FBECFEFDAE0DEBFCDBF04B69E +:1005300003FE24C080911E0390911F03A09120030D +:10054000B09121038730904BA740B04BB9F4109283 +:100550001E0310921F03109220031092210314BE59 +:1005600084B7877F84BF88E10FB6F89480936000DA +:10057000109260000FBEE0E0F8E3099511E0A0E002 +:10058000B1E0E6ECF9E502C005900D92A03CB107A0 +:10059000D9F713E0A0ECB1E001C01D92AE31B10774 +:1005A000E1F70E94C8110C94E12C0C94000008950E +:1005B000089581E0089508950C94D8020C94D9020E +:1005C0000C94DB020E94AB2823E030E0281B3109A9 +:1005D000220F2093C4010895282F2F988091800026 +:1005E000211108C0877F8093800010928D001092A7 +:1005F0008C001BC0886080938000233019F48FEF3B +:100600009FEF0FC083E090E0821B9109880F991F34 +:100610002FEF3FEFA90102C0569547958A95E2F763 +:10062000CA0190938D0080938C000C94E2020E948A +:10063000E20284E08093C3011092C0010895279ADA +:100640002F988FEF9FEF90938700809386008AE02A +:100650008093800089E1809381000E9414280C948B +:1006600017030E941F036E9A769A0C94D7021F926A +:100670000F920FB60F9211242F933F938F939F9356 +:10068000EF93FF93E091C101F091C201CF01019678 +:100690009093C2018093C1010090C30102C0F695FE +:1006A000E7950A94E2F7EF738091C001823019F464 +:1006B000E03251F404C0813039F4EF3329F48091F1 +:1006C0006F008D7F80936F00F0E0E457FE4FE49160 +:1006D00021E031E0E29FC001E39F900D11240090E2 +:1006E000C40102C0969587950A94E2F790938D0015 +:1006F00080938C00FF91EF919F918F913F912F916B +:100700000F900FBE0F901F90189561110DC0FC0146 +:100710008281882331F085EE0E9441180E946B2867 +:1007200003C085EE0E94091980E090E0089581E001 +:1007300008950C94970308950C9431038091150249 +:10074000882309F448C08091D1019091D20100978B +:1007500079F40E94E8229093D2018093D101809194 +:10076000D30190E0009771F48091D40190E00AC029 +:100770000E94F422209100013091010128173907CD +:1007800040F329C00197880F991F880F991FFC011A +:10079000EB52FE4F60817181828193810E945D0ADC +:1007A000E091D30184E0E89FF0011124EB52FE4F69 +:1007B00060817181828193814FE050E00E94150E2B +:1007C0008091D30190E001966091D40170E00E9485 +:1007D000912C8093D3010C94DC02109217020C949C +:1007E0002A0A0895089581E0809317020C94F20379 +:1007F000089508958F929F92AF92BF92EF92FF92C9 +:100800000F931F93CF93DF93CDB7DEB7A3970FB6A8 +:10081000F894DEBF0FBECDBF7C01FC0100811181C9 +:10082000C8010E94E520B8010E94FC058C01B701B7 +:100830000E949903882309F4CCC10032F0E51F0718 +:1008400041F4F7018281882309F458C00E94790E8F +:10085000C0C10132F0E51F0741F4F701828188230E +:1008600009F44CC00E94820EB4C10232F0E51F07A9 +:1008700051F4F7018281882309F440C00E94750E6B +:100880008111F0CFE3CF0332F0E51F0739F4F70110 +:100890008281882399F10E94F3039BC10432F0E521 +:1008A0001F0739F4F7018281882341F10E94ED038B +:1008B00090C10532F0E51F0749F4F70182818823D2 +:1008C000E9F0809117028111F1CFE5CF0632F0E512 +:1008D0001F0739F4F7018281882381F00E94890E75 +:1008E0000AC00732F0E51F0749F4F7018281882327 +:1008F00029F00E94940E0E94F9036BC180911702A7 +:10090000811105C0F70182818111CFC018C1003E5D +:10091000110579F4F7018281882309F44DC00E9402 +:100920002A0A81E080931602109215021092D401D7 +:1009300050C1023E110559F4F70182818823E1F18B +:100940000E942A0A109216021092150242C1033E1A +:10095000110591F4F7018281882371F10E942A0A1E +:100960001092160281E0809315021092D30110922A +:10097000D2011092D1012DC10235110559F4F701B0 +:100980008281882309F425C18091000190910101A1 +:100990000A970DC00135110579F4F701828188238A +:1009A00009F417C180910001909101010A9690937A +:1009B0000101809300010DC14091040183E2EFE148 +:1009C000F1E0DE01119601900D928A95E1F7F701B1 +:1009D000808121E030E02C0F3D1F280F311DC9011F +:1009E0002091020130910301FC01E20FF31F6081AD +:1009F000772767FD7095640F711D882777FD8095B7 +:100A0000982F0E94B32920E030E040E451E40E9496 +:100A100018294B015C01F701218184E090E0821BE1 +:100A20009109BC01882777FD8095982F0E94B329F2 +:100A30009B01AC01C501B4010E94B0289B01AC012F +:100A400060E070E080E090E40E94262B20E030E03F +:100A50004CED50E40E94C32A4B015C01F7018281F6 +:100A60008823D1F04FE050E0C501B4010E94150E7B +:100A7000809116028823A1F08091D40124E0829F06 +:100A8000F0011124EB52FE4F80829182A282B38248 +:100A90008F5F8093D40104C0C501B4010E945D0A38 +:100AA0000F3F110508F02ECF94C08091D001811125 +:100AB0001FC0043130E5130709F051C00E949B03A9 +:100AC00081E08093D0010E94E8229093CF0180932F +:100AD000CE011092C7011092C9011092C801109264 +:100AE000CB011092CA011092CD011092CC0171C0BD +:100AF0008091CE019091CF010E94F422883C910513 +:100B000070F48091C701E82FF0E0EE0FFF1FE8536B +:100B1000FE4F118300838F5F8093C7015AC0043852 +:100B200080E5180721F00538104501F13AC0F701BA +:100B30008281882341F01092C50182E01EC00438F2 +:100B400030E5130759F58091C501811106C086E291 +:100B50000E94411886E20E94091982E01CC00438F4 +:100B6000F0E51F0741F305381045D9F4F7018281FC +:100B7000882331F01092C60180E20E94581929C0E2 +:100B80008091C601811106C087E20E94411887E268 +:100B90000E94091980E20E945F191BC005381045A8 +:100BA00029F381E08093C5018093C601C701A39614 +:100BB0000FB6F894DEBF0FBECDBFDF91CF911F916E +:100BC0000F91FF90EF90BF90AF909F908F900C94FB +:100BD000DE0280E0A3960FB6F894DEBF0FBECDBF55 +:100BE000DF91CF911F910F91FF90EF90BF90AF9049 +:100BF0009F908F90089508959CE0799FF0011124B3 +:100C000090E3899FE00DF11D1124E60FF11DEE0F19 +:100C1000FF1FE453FE4F859194910895880F991F0B +:100C2000FC01E45BFF4F859194910895880F991F13 +:100C3000FC01E453FE4F8591949108950F931F9307 +:100C4000CF93DF93EC01811521E39207A0F5C11545 +:100C500080E3D80708F0D7C0C83ED105D8F4C03E1D +:100C6000D10508F007C2C83AD10578F4C53AD105D4 +:100C700008F06AC0C130D10509F463C008F4F7C1B7 +:100C8000C430D10508F0F6C1F2C1CB3BD10508F460 +:100C900066C0EDC1C11590E2D90708F0AFC0C1151B +:100CA00021E0D20708F0E6C1C03FD10508F4DFC15A +:100CB0008E0110651FC2C03880E5D80700F5C03727 +:100CC00090E5D90708F0A3C0C11520E5D20709F4C3 +:100CD000ACC050F4CE01905480319F4008F0C7C1A1 +:100CE000DF708E01106A06C2C13080E5D80709F4B2 +:100CF000AEC0C43190E5D90708F4AFC0B8C1C3385D +:100D000020E5D20709F48EC050F4C13890E5D90728 +:100D100009F482C008F083C000E011EDEBC1C031DE +:100D200081E5D80708F4A3C1C11597E5D90708F4F0 +:100D300036C1CE0190578115904108F098C1DF70FF +:100D400093C101E010E0D6C1C53AD10509F494C1C0 +:100D5000C63AD10509F093C102E810E4CBC1C83A04 +:100D6000D10509F48FC1C93AD10509F48EC1CA3A37 +:100D7000D10509F48DC1CB3AD10509F48CC1CC3A27 +:100D8000D10509F48BC1CD3AD10509F48AC1C03B24 +:100D9000D10509F489C1CE3AD10509F488C1CF3A09 +:100DA000D10509F487C1C13BD10509F486C1C23B15 +:100DB000D10509F485C1C33BD10509F484C1C43B05 +:100DC000D10509F483C1C53BD10509F482C1C63BF5 +:100DD000D10509F481C1C73BD10509F480C1C83BE5 +:100DE000D10509F47FC1C93BD10509F47EC1CA3BD5 +:100DF000D10509F47DC100E014E47CC1CE019F70EF +:100E00000E94160678C1DD278E01106C73C1CF7069 +:100E1000DD278E01146D6EC100E010ED6BC100E0A6 +:100E200012ED68C100E013ED65C10E94EC1B0E9449 +:100E30002A0A0E94F1038FEF94E32CE08150904046 +:100E40002040E1F700C000000E94432353C180917D +:100E5000F20281608093F2024DC10E94A4238111AD +:100E600002C00E9480230E94B72390E090931D034C +:100E700080931C03C23080E5D80721F480911C03C5 +:100E8000816086C0C43090E5D90721F480911C03AD +:100E900082607EC0C63020E5D20721F480911C0319 +:100EA000846076C0C83080E5D80719F480911C03AF +:100EB00027C0CA3090E5D90721F480911C038061D6 +:100EC00067C0CC3020E5D20721F480911C038062FA +:100ED0005FC0CE3080E5D80721F480911C03806488 +:100EE00057C0C03190E5D90721F480911C03806878 +:100EF0004FC0C23120E5D20729F480911C038460E1 +:100F0000886046C0C33080E5D80721F480911C0377 +:100F10008E7F3EC0C53090E5D90721F480911C0337 +:100F20008D7F36C0C73020E5D20721F480911C03A5 +:100F30008B7F2EC0C93080E5D80719F480911C033F +:100F400026C0CB3090E5D90721F480911C038F7E19 +:100F50001FC0CD3020E5D20721F480911C038F7D86 +:100F600017C0CF3080E5D80721F480911C038F7B18 +:100F70000FC0C13190E5D90721F480911C038F7710 +:100F800007C0C331D04531F480911C038B7F877F2C +:100F900080931C0380911C030E94BB23ABC08D2F48 +:100FA00099278F70992781309105D9F49E0123707C +:100FB000332702C0880F991F2A95E2F79C688E019B +:100FC00044E0000F111F4A95E1F700271370802BB2 +:100FD000912B53E0CC0FDD1F5A95E1F7C076DD274A +:100FE0002FC08230910531F4DC2FCC278E01016FA8 +:100FF000106A80C08330910569F4CE01837099270F +:1010000001E010E002C0000F111F8A95E2F7C8014D +:101010009C680FC084309105B9F4CE018370992784 +:1010200001E010E002C0000F111F8A95E2F7C8012D +:101030009A6823E0CC0FDD1F2A95E1F7C07ED770B8 +:101040008C010C2B1D2B56C08530910531F4DC2F03 +:10105000CC278E01046F106A4DC0069709F04AC074 +:10106000CF71DD27DC2FCC278E01106243C000E05A +:1010700010E040C08E013EC001E810E43BC003E830 +:1010800010E438C002EE14E435C009EE14E432C0B6 +:101090000AEE14E42FC005EB14E42CC006EB14E4B4 +:1010A00029C007EB14E426C00CEC14E423C00DECBB +:1010B00014E420C003E815E41DC00AE815E41AC0D2 +:1010C00002E915E417C004E915E414C001E216E4CE +:1010D00011C003E216E40EC004E216E40BC005E200 +:1010E00016E408C006E216E405C007E216E402C0F2 +:1010F0000AE216E4C801DF91CF911F910F91089584 +:101100009CE0799FF001112490E3899FE00DF11D8F +:101110001124E60FF11DEE0FFF1FE453FE4F8591E2 +:101120009491803E9105E0F4803C910558F581331F +:10113000910509F46FC048F48932910509F463C040 +:101140008A32910509F46DC072C089339105E9F0C6 +:1011500082389105D1F08533910509F44DC067C0FF +:10116000833E910581F138F4803E9105B9F0823ECD +:101170009105D9F05CC0863E910561F1873E9105ED +:10118000A1F155C00E940E06089520911C0320FD78 +:1011900002C021FF4CC080EE90E049C080911C034A +:1011A00080FFF9CF89E390E042C080911C0382FF69 +:1011B0000EC080911C0384FF03C080E090E037C024 +:1011C00083EE90E034C080911C0382FFF2CF82EE68 +:1011D00090E02DC080911C0383FF0BC080911C0305 +:1011E00084FDEBCF87EE90E022C080911C0383FF4B +:1011F000F5CF86EE90E01BC080911C0385FF07C0F1 +:1012000089E290E014C080911C0385FFF9CF85E34B +:1012100090E00DC080911C0386FF07C08AE290E039 +:1012200006C080911C0386FFF9CF81E390E00E9405 +:101230001E0608950C94E002E82FF0E0E25BFE4FFA +:101240008081E82FEF70F0E082958F7021E030E030 +:10125000A90102C0440F551F8A95E2F740A30895E3 +:101260000F931F93CF93DF9385B7806885BF85B7B2 +:10127000806885BFC3E0D0E001E010E0FE01E25BE2 +:10128000FE4F8081E82FEF70F0E021A182958F70F2 +:10129000A80102C0440F551F8A95E2F7CA01822BAC +:1012A00081A38C2F0E941C09219740F78BE090E0CE +:1012B00061E070E0FC01EE5BFE4F2081E22FEF70F9 +:1012C000F0E042A122952F70DB0102C0AA0FBB1FE4 +:1012D0002A95E2F79D01242B22A3019758F7DF916D +:1012E000CF911F910F910C949C03EF92FF920F935B +:1012F0001F93CF93DF9300E212E0C3E0EE24E39468 +:10130000F12CD5E08C2F0E941C098BE090E040E08E +:1013100050E0FC01EE5BFE4F6081E62FEF70F0E0E5 +:1013200020A130E062956F7002C0359527956A95CF +:10133000E2F720FD09C09701082E02C0220F331FDB +:101340000A94E2F7422B532B019718F7F801929178 +:1013500082918F018417950721F051834083D093A8 +:1013600005018C2F0E941C09C15060F68091050177 +:1013700087FD2CC08150809305018F3F39F08FE9A4 +:101380009FE00197F1F700C0000020C080911E028D +:1013900090911F02909327028093260280911C0255 +:1013A00090911D02909325028093240280911A024D +:1013B00090911B0290932302809322028091180245 +:1013C0009091190290932102809320020E949E0323 +:1013D00081E0DF91CF911F910F91FF90EF900895E1 +:1013E000E82FF0E0EE0FFF1FE05EFD4F808191815E +:1013F000089508950F931F93CF9308E212E0C0E081 +:10140000F801929182918F010E946022C80FF2E050 +:1014100000321F07A9F78C2FCF911F910F910895CC +:101420000E94A423811102C00E9480230E94C9232C +:10143000809307033E9A809171008D7F80937100A5 +:1014400082E0809390008AE18093910081E0809314 +:101450002A02089580912A02811102C00E94100A76 +:1014600010927A0210927902809171008D7F8093A0 +:101470007100809190008F738093900010923C02D5 +:1014800010923B0210927302109274021092750235 +:10149000109276021092720210927102E1E5F2E06F +:1014A000A1E4B2E011921192119211921D921D923B +:1014B00082E0E137F807B1F70895CF92DF92EF921B +:1014C000FF920F931F93CF93DF9320913B02222330 +:1014D00009F484C06B017C0180912A02811102C051 +:1014E0000E94100A01E712E0C7E0D0E0A7019601D0 +:1014F000F80192918291729162918F010E94142958 +:10150000811131C0FE01EE0FFF1FEE0FFF1FEF5ADA +:10151000FD4F1082118212821382DE01AA0FBB1FBF +:10152000AF5BBD4F11961C921E92C730D105E9F0FA +:1015300021964481558166817781408351836283FE +:101540007383148215821682178212968D919C9154 +:10155000139711969C938E9313961C921E9212973A +:1015600034961296E2CF219708F6809179029091F5 +:101570007A02019797FD05C090937A0280937902D1 +:1015800004C010927A0210927902809179029091AF +:101590007A0220917702309178022817390724F0D7 +:1015A0001092780210927702892BC1F48091710019 +:1015B0008D7F80937100809190008F738093900055 +:1015C00010927302109274021092750210927602B9 +:1015D000109272021092710210923B02DF91CF9131 +:1015E0001F910F91FF90EF90DF90CF9008951F9281 +:1015F0000F920FB60F9211244F925F926F927F92CB +:101600008F929F92AF92BF92CF92DF92EF92FF9212 +:101610002F933F934F935F936F937F938F939F93FA +:10162000AF93BF93CF93DF93EF93FF9380913B02F0 +:10163000882309F49BC1C0917902D0917A021C16CB +:101640001D060CF093C140902B0250902C0260902C +:101650002D0270902E0220E030E0A901C301B201FA +:101660000E94BF2A18160CF065C0C130D10509F4DC +:1016700052C08091770290917802BE010E94912C15 +:101680007C01909378028093770280903D02909045 +:101690003E02A0903F02B090400220E030E040E8DF +:1016A0005FE3C501B4010E94B02860933D027093CE +:1016B0003E0280933F0290934002F701EE0FFF1F1E +:1016C000EE0FFF1FEF5AFD4FA30192016081718160 +:1016D000828193810E94182920E030E040E05EE39F +:1016E0000E94C32A9B01AC01C501B4010E94BF2A1C +:1016F00018168CF4C7010196BE010E94912C90939C +:1017000078028093770210923D0210923E0210926E +:101710003F0210924002E0917702F0917802EE0FC2 +:10172000FF1FEE0FFF1FEF5AFD4F60817181828115 +:101730009381D0C0C0907302D0907402E090750283 +:10174000F090760220E030E0A901C701B6010E94C6 +:1017500014292197882309F4A2C0FE01EE0FFF1F70 +:10176000EE0FFF1FEF5AFD4F80809180A280B38063 +:10177000A5019401C701B6010E94142987FF31C059 +:10178000A501940160E070E08CED93EC0E941829B3 +:1017900020E030E040E451E40E94182920E030E0ED +:1017A00040E05FE30E94C32A9B01AC0160E070E06F +:1017B00080E090E40E94262B9B01AC01C501B4019E +:1017C0000E94C32A9B01AC01C701B6010E941429E3 +:1017D00087FF07C0A701960160E070E08CED93E4FD +:1017E00039C0A5019401C701B6010E94BF2A18168D +:1017F0000CF055C0A501940160E070E08CED93E41D +:101800000E94182920E030E040E451E40E941829A9 +:1018100020E030E040E05FE30E94C32A9B01AC017E +:1018200060E070E080E090E40E94262B9B01AC0118 +:10183000C501B4010E94C32A9B01AC01C701B601D6 +:101840000E94BF2A18165CF5A701960160E070E0BF +:101850008CED93EC0E94182920E030E040E451E444 +:101860000E94182920E030E040E05FE30E94C32A94 +:101870009B01AC0160E070E080E090E40E94262BC8 +:101880009B01AC01C701B6010E94C32A6093730299 +:1018900070937402809375029093760213C0FE01D8 +:1018A000EE0FFF1FEE0FFF1FEF5AFD4F808191815A +:1018B000A281B3818093730290937402A093750206 +:1018C000B0937602609173027091740280917502F8 +:1018D0009091760220912802309129022F3F4FEFFC +:1018E000340731F02F5F3F4F3093290220932802B5 +:1018F0000E949F0E6B017C0120E034E244EF51E432 +:101900000E94142987FF08C086EFC82E88E2D82ECF +:1019100084EFE82E81E4F82E20E030E040E051E44E +:10192000C701B6010E94C32A9B01AC0160E074E2CA +:1019300084E79BE40E9418296B017C010E948529A1 +:1019400070939700609396002091060130910701F3 +:101950004091080150910901C701B6010E94C32AB4 +:101960000E948529709399006093980080913C02B1 +:10197000882309F433C1C0903702D0903802E09038 +:101980003902F0903A0220E030E0A901C701B60127 +:101990000E94BF2A1816D4F580912802909129023E +:1019A0008F3F2FEF920729F00196909329028093A1 +:1019B0002802C701B6010E949F0E20E030E040E0FF +:1019C00051E40E94C32A9B01AC0160E074E284E709 +:1019D0009BE40E9418296B017C010E948529709369 +:1019E0009700609396002091060130910701409185 +:1019F000080150910901C701B6010E94C32A0E9443 +:101A00008529709399006093980008C01092970000 +:101A100010929600109299001092980060913102F5 +:101A2000709132026F5F7F4F709332026093310288 +:101A3000209196003091970080E090E0232BF1F008 +:101A4000C0919600D09197000E94B1296B017C0152 +:101A5000BE0180E090E00E94B1299B01AC01609141 +:101A600033027091340280913502909136020E94C7 +:101A7000182920E03FEF4FE757E410C00E94B1293A +:101A80006B017C0120E030EE4FEF54E460913302B3 +:101A90007091340280913502909136020E94C32ADF +:101AA0009B01AC01C701B6010E94BF2A87FD96C009 +:101AB00080912F028F5F80932F0290E0209103038B +:101AC0003091040382179307A0F080910E038823BE +:101AD00019F010922F020DC0809171008D7F8093BC +:101AE0007100809190008F738093900010923C025F +:101AF0007DC080913002C0912F02811128C0C0901A +:101B00000803D0900903E0900A03F0900B0320E053 +:101B100030E0A901C701B6010E94BF2A1816BCF423 +:101B200081E08093300210923702109238021092B6 +:101B3000390210923A02C0923302D0923402E092FB +:101B40003502F0923602C150C0932F0243C010926A +:101B500030021092290210922802E0910503F091C0 +:101B6000060348E0C49FE00DF11D1124808191819E +:101B7000A281B3818093370290933802A0933902F7 +:101B8000B0933A0220E030E040E85EE36481758182 +:101B9000868197810E94C32A6B017C0180910A0192 +:101BA000682F70E080E090E00E94B12920E030E0F2 +:101BB00048EC52E40E9418299B01AC01C701B60110 +:101BC0000E94C32A609333027093340280933502DB +:101BD00090933602109232021092310280910703E4 +:101BE00080FD04C010923C0210923B02FF91EF91E5 +:101BF000DF91CF91BF91AF919F918F917F916F9125 +:101C00005F914F913F912F91FF90EF90DF90CF9098 +:101C1000BF90AF909F908F907F906F905F904F900C +:101C20000F900FBE0F901F901895CF92DF92EF92FA +:101C3000FF92CF93DF936B017C01EA0180912A022E +:101C4000811102C00E94100A8091070380FF46C0E4 +:101C50008091790290917A0208970CF03FC08091B0 +:101C600071008D7F8093710080913C0281110E94F0 +:101C70002A0A81E080933B021092290210922802E6 +:101C800020E030E0A901C701B6010E94BF2A181662 +:101C9000DCF48091790290917A02FC01EE0FFF1F33 +:101CA000EE0FFF1FEF5AFD4FC082D182E282F38216 +:101CB000FC01EE0FFF1FEF5BFD4FD183C083019648 +:101CC00090937A0280937902809171008260809370 +:101CD000710080919000806880939000DF91CF9197 +:101CE000FF90EF90DF90CF9008958091070381706F +:101CF0000895809107038160809307030E94CD239C +:101D00000C94F803809107038E7F809307030C9453 +:101D1000CD2380917B0290E0019666E070E00E9406 +:101D2000912C80937B02089580917B0290E0019733 +:101D300066E070E00E94912C80937B0208958F9260 +:101D40009F92AF92BF92CF92DF92EF92FF920F934A +:101D50001F93CF93DF936B017C01C0912802D09138 +:101D60002902BE0180E090E00E94B1294B015C0194 +:101D7000A701960160E070E08CE594E40E941829C8 +:101D80009B01AC01C501B4010E94C32A0E948529B0 +:101D900020917B02233009F473C028F4222351F0F0 +:101DA0002130E9F02CC1243009F4A0C0253009F419 +:101DB000E0C025C180E090E0A0E0BFE38093060191 +:101DC00090930701A0930801B093090110922B0290 +:101DD00010922C0210922D0210922E0210C110921D +:101DE0002B0210922C0210922D0210922E026431BE +:101DF000710540F46A30710560F520E030E040E89C +:101E00005EE32BC0693C710508F0AAC080E090E059 +:101E10000E94B12920E030E040EA51E40E94AF285E +:101E200020E030E044E353E40E9418299B01AC0118 +:101E30000E94C32A20E030E040E05EE30E94C32A13 +:101E40009B01AC0160E070E080E09EE30E94AF285F +:101E500044C020E030E040E05FE3C701B6010E94EB +:101E6000C32A6B017C0180E090E0A0E0BEE3809398 +:101E7000060190930701A0930801B0930901BFC028 +:101E800010922B0210922C0210922D0210922E0210 +:101E90004AE0469F9001479F300D1124C90168EB2D +:101EA0007BE00E947D2CBC016C5D754077FF03C018 +:101EB000719561957109882777FD8095982F0E940B +:101EC000B3292EE333EC4EE259E30E94C32A20E00B +:101ED00030E040EC5EE30E94B0286093060170930E +:101EE0000701809308019093090189C010922B0289 +:101EF00010922C0210922D0210922E02CE018370AD +:101F00009927892BE1F0BE016170772780E090E08E +:101F10000E94B12920E030E040E05EE30E94C32A45 +:101F200020E030E040E45FE30E94B02860930601C7 +:101F30007093070180930801909309010CC080E021 +:101F400090E0A0E0BFE38093060190930701A09387 +:101F50000801B0930901C770DD27CD2B09F04FC0F0 +:101F600010920601109207011092080110920901C7 +:101F700046C010922B0210922C0210922D02109249 +:101F80002E0200E010E020E03FE3009306011093F2 +:101F9000070120930801309309016739710578F131 +:101FA00080E090E00E94B12920E030E047E153E476 +:101FB0000E94AF2820E030E04AE754E40E9418294C +:101FC00020E030E048E452E40E94C32A20E030E000 +:101FD00040EA51E40E94F5290E948029660F771F8C +:101FE000660F771FFB01EE5AFE4F2081318142813F +:101FF0005381C701B6010E94C32A6B017C01C7014E +:10200000B601DF91CF911F910F91FF90EF90DF907C +:10201000CF90BF90AF909F908F90089580918C0249 +:102020000895CF93DF9300D01F92CDB7DEB79C0108 +:1020300080911303843019F593E099833B832A83BD +:102040009093E9008FEF9091E800815095FD06C0D4 +:1020500095ED9A95F1F700008111F5CF8091E80098 +:1020600085FF0DC040E050E063E070E0CE010196D6 +:102070000E9472128091E8008E778093E8000F90A2 +:102080000F900F90DF91CF910895CF93DF9300D001 +:102090001F92CDB7DEB720911303243021F522E043 +:1020A00029839B838A8383E08093E9008FEF90915B +:1020B000E800815095FD06C095ED9A95F1F7000076 +:1020C0008111F5CF8091E80085FF0DC040E050E020 +:1020D00063E070E0CE0101960E9472128091E800E8 +:1020E0008E778093E8000F900F900F90DF91CF9143 +:1020F0000895209113032430F1F422E02093E900A5 +:102100002FEF3091E800215035FD06C035ED3A95AE +:10211000F1F700002111F5CF2091E80025FF0BC059 +:1021200040E050E065E070E00E9472128091E800AB +:102130008E778093E8000895CF93DF93EC01909120 +:102140001303943009F046C0809115018823D9F01B +:10215000809116018823B9F09093E9008FEF909158 +:10216000E800815095FD06C095E19A95F1F70000D1 +:102170008111F5CF8091E80085FF2CC040E050E050 +:1021800060E170E017C081E08093E9008FEF9091EB +:10219000E800815095FD06C095ED9A95F1F7000095 +:1021A0008111F5CF8091E80085FF14C040E050E038 +:1021B00068E070E0CE010E9472128091E8008E7794 +:1021C0008093E80080E1FE01ACE7B2E001900D925F +:1021D0008A95E1F7DF91CF910895809112038111E3 +:1021E00009C00E9407140E9464148091E200846078 +:1021F0008093E200089510921203089508950895BF +:102200000C94AB2242E061EC81E00E94811342E039 +:1022100061EC82E00E94811342E061EC83E00E9465 +:10222000811342E161EC84E00C94811380911503E9 +:10223000833009F455C030F4813071F0823009F4F4 +:102240008EC008958A3009F47AC08B3009F460C0DA +:10225000893009F09CC020C080911403813A09F0B4 +:1022600096C08091E800877F8093E80080911803F2 +:1022700090911903892B21F460E18CE792E003C06F +:1022800060E080E090E070E00E94BD128091E80084 +:102290008B778093E800089580911403813209F0D0 +:1022A00076C08091180390911903009719F0039755 +:1022B00009F06DC08091E800877F8093E8008091ED +:1022C000E80082FD05C0809113038111F8CF5FC043 +:1022D0008091F10080938C028091E8008B7753C04D +:1022E00080911403813A09F052C0809118039091B3 +:1022F0001903892B09F04BC08091E800877F8093F8 +:10230000E8008091E80080FFFCCF8091150136C085 +:10231000809114038132D9F58091180390911903AB +:10232000892BA9F58091E800877F8093E8000E94BF +:10233000B61380911603809315010C94EC1B8091C9 +:102340001403813221F58091E800877F8093E800B3 +:102350000E94B6138091170380938D020895809197 +:102360001403813AA1F48091E800877F8093E8000C +:102370008091E80080FFFCCF80918D028093F10076 +:102380008091E8008E778093E8000C94B61308954E +:1023900084B7877F84BF88E10FB6F894809360008C +:1023A000109260000FBE90E080E80FB6F894809322 +:1023B0006100909361000FBE0E9459170E9407149C +:1023C0000E9464148091E20084608093E20078941B +:1023D0000E94EA160E945B178BE091E00E940517AD +:1023E00080911303853069F40E946C22809111035F +:1023F0008823B1F30E949A22882391F30E945C12F1 +:10240000EFCF0E946317ECCF292F332723303105FC +:10241000C9F064F42130310581F02230310509F032 +:1024200043C08DE690E028EA33E042C02132310516 +:10243000F1F02232310541F137C082E190E025E12F +:1024400034E036C099278130910541F08230910502 +:1024500041F0892B49F5E4EAF3E005C0E6E7F3E053 +:1024600002C0ECE4F3E0849190E09F0121C064306D +:10247000D8F4E62FF0E0EE0FFF1FE255FE4F20816B +:10248000318189E090E014C0643070F470E0FB01A9 +:10249000EE0FFF1FEA55FE4F20813181FB01EE5503 +:1024A000FE4F808190E004C080E090E020E030E0CA +:1024B000FA0131832083089580E189BD82E189BDDD +:1024C00009B400FEFDCF8091D8008F7D8093D800A5 +:1024D0008091E00082608093E0008091E00081FDC7 +:1024E000FCCF0895CF92DF92EF92FF920F931F934C +:1024F000CF93DF93EC018B016A010E94D513811108 +:1025000033C0C114D10439F0F60180819181081BD8 +:10251000190BC80FD91FE12CF12C0115110519F168 +:102520008091E80085FD16C08091E8008E77809349 +:10253000E800C114D10449F0F60180819181E80ED0 +:10254000F91EF182E08285E00FC00E94D513882336 +:1025500021F30AC089918093F10001501109FFEF26 +:10256000EF1AFF0ADACF80E0DF91CF911F910F9130 +:10257000FF90EF90DF90CF90089520911A03309153 +:102580001B032617370748F06115710539F42091B0 +:10259000E8002E772093E80001C0B90140E0611502 +:1025A0007105A9F120911303222309F443C02530BA +:1025B00009F442C02091E80023FD40C02091E800CA +:1025C00022FD32C02091E80020FFE9CF4091F300C6 +:1025D0002091F20030E0342BFC01CF016115710530 +:1025E00059F02830310540F481918093F100615019 +:1025F00071092F5F3F4FF1CF41E02830310509F0DD +:1026000040E02091E8002E772093E800C8CF4111E8 +:10261000C9CF0AC080911303882361F0853061F02F +:102620008091E80083FD0AC08091E80082FFF2CF2C +:1026300080E0089582E0089583E0089581E00895A0 +:1026400020911A0330911B032617370748F06115B4 +:10265000710539F42091E8002E772093E80001C03D +:10266000B901FC0120E06115710591F1809113031E +:10267000882309F440C0853009F43FC08091E80008 +:1026800083FD3DC08091E80082FD2FC08091E8006D +:1026900080FFE9CF2091F3008091F20090E0922B2F +:1026A0006115710559F08830910540F4249120930B +:1026B000F1003196615071090196F2CF21E008973F +:1026C00009F020E08091E8008E778093E800CBCF7E +:1026D0002111CCCF0AC080911303882361F085308B +:1026E00061F08091E80083FD0AC08091E80082FFDC +:1026F000F2CF80E0089582E0089583E0089581E0BC +:102700000895982F973058F59093E900981739F06D +:102710007091EC002091ED005091F00003C0242F47 +:10272000762F50E021FF19C03091EB003E7F3093AF +:10273000EB003091ED003D7F3093ED003091EB00E8 +:1027400031603093EB007093EC002093ED005093D8 +:10275000F0002091EE0027FF07C09F5FD3CF8F705E +:102760008093E90081E0089580E00895809114034A +:1027700087FF11C08091E80082FD05C0809113039E +:102780008111F8CF11C08091E8008B770BC0809148 +:102790001303882349F08091E80080FFF8CF8091EF +:1027A000E8008E778093E80008952091E40030914E +:1027B000E50095E64091EC00842F817040FF22C037 +:1027C0008091E80080FD1CC080911303882391F064 +:1027D000853091F08091EB0085FD10C04091E400C0 +:1027E0005091E5004217530729F39A01915011F7D0 +:1027F00084E0089582E0089583E0089581E00895DB +:1028000080E008954091E80042FFDECF08950E94E5 +:1028100075140E947D14E0EEF0E080818160808379 +:10282000E8EDF0E080818F77808319BCA7EDB0E000 +:102830008C918E7F8C9380818F7E80831092120387 +:1028400008950F931F93CF93DF930E9475140E94F6 +:102850007D14C8EDD0E088818F7788838881806877 +:10286000888388818F7D888319BC1092130310920E +:102870000F03109211031092100300EE10E0F80104 +:1028800080818B7F808388818160888342E060E0E3 +:1028900080E00E948113E1EEF0E080818E7F8083F2 +:1028A000E2EEF0E0808181608083808188608083B7 +:1028B000F80180818E7F8083888180618883DF91A9 +:1028C000CF911F910F910895E8EDF0E080818F7E08 +:1028D0008083E7EDF0E080818160808384E082BFC7 +:1028E00081E0809312030C942114E8EDF0E08081E4 +:1028F0008E7F80831092E20008951092DA00109289 +:10290000E10008951F920F920FB60F9211242F939A +:102910003F934F935F936F937F938F939F93AF9367 +:10292000BF93EF93FF938091E10082FF0BC08091F2 +:10293000E20082FF07C08091E1008B7F8093E1007D +:102940000E94E9168091DA0080FF1FC08091D800B4 +:1029500080FF1BC08091DA008E7F8093DA00809127 +:10296000D90080FF0DC080E189BD82E189BD09B435 +:1029700000FEFDCF81E0809313030E94ED1005C09F +:1029800019BC109213030E94FB108091E10080FF9C +:1029900019C08091E20080FF15C08091E2008E7F17 +:1029A0008093E2008091E20080618093E200809158 +:1029B000D80080628093D80019BC85E0809313030F +:1029C0000E94FF108091E10084FF30C08091E200FE +:1029D00084FF2CC080E189BD82E189BD09B400FE7D +:1029E000FDCF8091D8008F7D8093D8008091E10049 +:1029F0008F7E8093E1008091E2008F7E8093E200E1 +:102A00008091E20081608093E20080910F0388232F +:102A100011F084E007C08091E30087FD02C081E0EF +:102A200001C083E0809313030E9400118091E100B4 +:102A300083FF29C08091E20083FF25C08091E100DF +:102A4000877F8093E10082E08093130310920F034D +:102A50008091E1008E7F8093E1008091E2008E7F83 +:102A60008093E2008091E20080618093E20042E086 +:102A700060E080E00E9481138091F0008860809384 +:102A8000F0000E94FE10FF91EF91BF91AF919F91D6 +:102A90008F917F916F915F914F913F912F910F9007 +:102AA0000FBE0F901F9018951F920F920FB60F92A6 +:102AB00011242F933F934F935F936F937F938F9343 +:102AC0009F93AF93BF93CF93DF93EF93FF93C09107 +:102AD000E900CF708091EC00D82FD17080FDD0E854 +:102AE0001092E9008091F000877F8093F000789445 +:102AF0000E9498151092E9008091F0008860809300 +:102B0000F000CD2BCF70C093E900FF91EF91DF91E2 +:102B1000CF91BF91AF919F918F917F916F915F9175 +:102B20004F913F912F910F900FBE0F901F901895CE +:102B30001F93CF93DF93CDB7DEB7AA970FB6F89464 +:102B4000DEBF0FBECDBFE4E1F3E088E08E0F9091D1 +:102B5000F10091938E13FBCF0E9416118091E80033 +:102B600083FF1FC18091140390911503492F50E0FA +:102B70004A30510508F015C1FA01EA5AFF4F0C948A +:102B8000A52C803881F0823809F00BC180911803A0 +:102B90008F708093E9008091EB0085FB882780F996 +:102BA0001092E90006C080911003909111039111D9 +:102BB00082609091E800977F9093E8008093F10005 +:102BC0001092F100C8C0282F2D7F09F0EAC0882399 +:102BD00019F0823061F0E5C080911603813009F070 +:102BE000E0C0933009F080E0809311032BC0809106 +:102BF0001603811127C0809118038F7009F4D1C08A +:102C00008093E9002091EB0020FF1CC0933021F459 +:102C10008091EB00806214C09091EB0090619093E2 +:102C2000EB0021E030E0A90102C0440F551F8A9556 +:102C3000E2F74093EA001092EA008091EB0088608E +:102C40008093EB001092E9008091E800877F86C0B6 +:102C50008111A7C0109116031F778091E30080783F +:102C6000812B8093E3008091E800877F8093E800C8 +:102C70000E94B6138091E80080FFFCCF8091E300B2 +:102C800080688093E300111102C082E001C083E0FC +:102C90008093130386C08058823008F082C08091F0 +:102CA0001603909117038C3D53E0950779F583E067 +:102CB0008A838AE289834FB7F894DE01139620E075 +:102CC0003EE051E2E32FF0E050935700E49120FF03 +:102CD00003C0E295EF703F5FEF708E2F90E0EA3017 +:102CE00010F0C79601C0C0968D939D932F5F24313D +:102CF00049F74FBF8091E800877F8093E8006AE240 +:102D000070E0CE0101960E94BD1214C0AE014F5F6B +:102D10005F4F609118030E940412BC01009709F4F0 +:102D200040C09091E800977F9093E80089819A8154 +:102D30000E9420138091E8008B778093E80031C0D7 +:102D4000803879F58091E800877F8093E800809152 +:102D50000F038093F1008091E8008E778093E80064 +:102D60000E94B6131EC081111CC0909116039230B0 +:102D7000C0F48091E800877F8093E80090930F0370 +:102D80000E94B61380910F03811106C08091E30069 +:102D900087FD02C081E001C084E0809313030E949C +:102DA00002118091E80083FF0AC08091E800877FCC +:102DB0008093E8008091EB0080628093EB00AA96FC +:102DC0000FB6F894DEBF0FBECDBFDF91CF911F913C +:102DD00008950895CF93809113038823A1F0C091A3 +:102DE000E900CF709091EC00892F817090FD80E810 +:102DF000C82B1092E9008091E80083FD0E9498158D +:102E0000CF70C093E900CF9108959093930280937F +:102E100092020895E0919202F0919302309721F08E +:102E20000190F081E02D099480E00895E0919202F4 +:102E3000F0919302309721F00280F381E02D099404 +:102E40000895E0919202F0919302309721F004806E +:102E5000F581E02D0994089520919002309191021E +:102E60008217930771F09093910280939002E09102 +:102E70009202F0919302309721F00680F781E02DC5 +:102E80000994089520918E0230918F028217930742 +:102E900071F090938F0280938E02E0919202F091F4 +:102EA0009302309721F00084F185E02D0994089574 +:102EB00008950C9458170E94DF220E9430090E9446 +:102EC00065230C9414285F926F927F928F929F9249 +:102ED000AF92BF92CF92DF92EF92FF920F931F9328 +:102EE000CF93DF9300D000D01F92CDB7DEB70E9402 +:102EF00075099DE9C92E92E0D92E03E010E0AA24BD +:102F0000A394B12C502E802F0E94F0094C01F601A1 +:102F1000729062906F016826792661147104A1F4A1 +:102F20000150110978F78FEF89838A831B820E94F1 +:102F3000E8228160782F9D838C8349815A816B813F +:102F40008D810E94131838C08091F20281FD0E9489 +:102F5000F9092BE030E07501022E02C0EE0CFF1CD7 +:102F60000A94E2F7C70186219721892B09F1298369 +:102F70005A828E209F2091E0892809F490E09B835B +:102F80000E94E8228160782F9D838C8349815A8139 +:102F90006B818D810E941318000F111FF801EB56F1 +:102FA000FD4F80819181E826F926F182E08204C0FC +:102FB0002150310980F6B4CF0E944C251091940223 +:102FC0000E940A171817D1F00E940A1780939402E2 +:102FD0000F900F900F900F900F90DF91CF911F9156 +:102FE0000F91FF90EF90DF90CF90BF90AF909F90A8 +:102FF0008F907F906F905F900C941A090F900F90B4 +:103000000F900F900F90DF91CF911F910F91FF9034 +:10301000EF90DF90CF90BF90AF909F908F907F9078 +:103020006F905F900895CF93DF93CDB7DEB72B9766 +:103030000FB6F894DEBF0FBECDBF4F8358876987A8 +:103040007A878B87DE01119686E0FD0111928A95C1 +:10305000E9F785E0FE01379601900D928A95E1F738 +:1030600049815A816B817C818D819E810E948A1E5B +:103070002B960FB6F894DEBF0FBECDBFDF91CF9178 +:103080000895CF93882309F4C2C0C82F823859F419 +:103090000E940A1781FDBBC089E30E9464210E943F +:1030A000312289E30CC0833879F40E940A1780FD2D +:1030B000AEC083E50E9464210E94312283E50E9414 +:1030C000A621CF910C943122843859F40E940A171A +:1030D00082FD9DC087E40E9464210E94312287E422 +:1030E000EECF8CEF8C0F813A48F48C2F0E947C2716 +:1030F00081118DC08C2F0E946421E3CF80E28C0F60 +:10310000883048F4C77081E001C0880FCA95EAF79B +:103110000E94EA21D6CF8BE58C0F833078F4C53A34 +:1031200029F0C63A31F083E890E005C081E890E0EC +:1031300002C082E890E0CF910C942C1788E58C0FA8 +:10314000833108F064C0C83A39F1C93A41F1CA3A4A +:1031500049F1CB3A51F1CC3A59F1CD3A61F1C03B4A +:1031600069F1CE3A71F1CF3A79F1C13B81F1C23BBD +:1031700089F1C33B91F1C43B99F1C53BA1F1C63B39 +:10318000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B99 +:10319000C9F180E090E038C082EE90E035C089EE61 +:1031A00090E032C08AEE90E02FC085EB90E02CC01A +:1031B00086EB90E029C087EB90E026C08CEC90E095 +:1031C00023C08DEC90E020C083E891E01DC08AE828 +:1031D00091E01AC082E991E017C084E991E014C03F +:1031E00081E292E011C083E292E00EC084E292E0BC +:1031F0000BC085E292E008C086E292E005C087E25B +:1032000092E002C08AE292E0CF910C944217CF91F3 +:103210000895882309F44BC0823859F40E940A1794 +:1032200081FF45C089E30E9464210E94312289E325 +:103230000CC0833871F40E940A1780FF38C083E500 +:103240000E9464210E94312283E50E94A6210C94F1 +:103250003122843859F40E940A1782FF28C087E47B +:103260000E9464210E94312287E4EFCF9CEF980FE7 +:10327000913A58F390E2980F983050F4877091E0AB +:1032800001C0990F8A95EAF7892F0E94F021DFCFBC +:103290009BE5980F933020F480E090E00C942C177D +:1032A000885A833120F480E090E00C94421708950E +:1032B000882321F00E94EA210C943122089588236A +:1032C00021F00E94F0210C94312208957F928F9278 +:1032D0009F92AF92BF92CF92DF92EF92FF920F93A5 +:1032E0001F93CF93DF931F92CDB7DEB77C01C62E1D +:1032F000772EFC01058102950F70128111110E9439 +:1033000007220E945D21882379F0112369F080E271 +:103310008C0D883048F082E00E9446210E945D2199 +:1033200091E0D82ED92601C0D12CE72DE295EF707F +:10333000F0E0E05AFF4F0C94A52C872D807F072DDD +:103340000F70882311F00295007F112389F000236C +:1033500009F499C180E28C0D883020F4802F0E94FE +:10336000EA2103C0802F0E94FA210E9431228BC1E2 +:103370008C2D0E940919002309F4C3C180E28C0D31 +:10338000883020F4802F0E94F02103C0802F0E94FB +:1033900000220E943122B5C1872D807F972D9F701A +:1033A000803211F4892F03C0892F8295807FCC2031 +:1033B00021F0F1E0CF16A1F01DC0112339F0002358 +:1033C00019F1013009F50E941A229BC1002319F05E +:1033D000013009F496C189830E941D22898110C1A0 +:1033E000112321F0063008F08CC10EC0053008F022 +:1033F00088C106C1112359F0002331F0F7019581EE +:1034000090FF41C19F7095830E9458197AC1002393 +:1034100009F4F6C03EC1872D86958695837090E0AD +:10342000009719F0019761F06CC1112321F08C2DE8 +:10343000972D937002C080E090E00E942C1761C12C +:10344000112321F08C2D972D937002C080E090E025 +:103450000E94421756C18C2D112319F00E9454244A +:1034600002C00E94BC240E9441254BC1872D83705D +:1034700009F052C0111145C18C2D82958695877037 +:10348000880F880F9C2D9F70892E912CA12CB12C18 +:10349000082E04C0880C991CAA1CBB1C0A94D2F7E5 +:1034A000C4FE14C00FE010E020E030E0B901A80134 +:1034B00004C0440F551F661F771F8A95D2F7CB01B2 +:1034C000BA01609570958095909503C060E070E0BA +:1034D000CB01272D26952695237030E0223031052B +:1034E00069F02330310589F0682979298A299B29D7 +:1034F0002130310571F00E94D21F03C1682979295A +:103500008A299B290E94EE1FFCC00E94D21FC50180 +:10351000B4010E94B61FF5C0112319F0872D8170E8 +:1035200001C08695882309F4ECC08C2D8295869580 +:103530008770880F880F9C2D9F70892E912CA12C4D +:10354000B12C082E04C0880C991CAA1CBB1C0A9420 +:10355000D2F7C4FE14C00FE010E020E030E0B90163 +:10356000A80104C0440F551F661F771F8A95D2F724 +:10357000CB01BA01609570958095909503C060E08D +:1035800070E0CB01272D269526952370422F50E021 +:103590004230510569F04330510589F06829792995 +:1035A0008A299B294130510571F00E94AC20A9C0A5 +:1035B000682979298A299B290E94C820A2C00E94D3 +:1035C000AC20C501B4010E9490209BC08C2D90E0DE +:1035D000FC01E05EF109E531F10508F050C0E05969 +:1035E000FF4F0C94A52C0C2D0F70872D8F7111237C +:1035F00021F00E942920802F07CF0E944A20802F8F +:103600000E945F197EC0112341F0053008F079C097 +:10361000872D8F710E946F2074C0063008F071C032 +:10362000F7CF112339F0872D8F710E94292069C0AF +:103630001123C9F3872D8F710E944A2062C0112384 +:1036400029F0872D8F710E9414205BC00E940A20F0 +:1036500058C0112351F0172D1F71812F0E9429206E +:1036600063E0812F0E943D214CC081E00E944621F1 +:10367000023008F446C082E00E94462142C0112375 +:1036800031F0002381F28C2D0E9441183AC00023B2 +:1036900089F28C2D0E94091934C0472D4F706C2D72 +:1036A000C7010E9485030E942E1F2BC0111129C043 +:1036B000472D4F7050E042305105B9F04CF44115A0 +:1036C000510581F041305105E1F40E943C2819C0B8 +:1036D0004330510569F04430510599F48C2D0E9416 +:1036E0008E280FC00E9425280CC00E94582809C0AF +:1036F0000E946B2806C0472D4F706C2DC7010E9499 +:10370000FB05DD20F9F00E94392180FD1BC0F70187 +:1037100012820E9433210E942920C7010E94B11BFE +:103720000E9433210F90DF91CF911F910F91FF9055 +:10373000EF90DF90CF90BF90AF909F908F907F9051 +:103740000C944A200F90DF91CF911F910F91FF9021 +:10375000EF90DF90CF90BF90AF909F908F907F9031 +:1037600008950F931F93CF93DF93EC018881998184 +:103770002B813C81232BB9F09F3F11F48F3F99F0AF +:10378000CE010E94FA03882371F0688179818A81D1 +:103790000E942F218C010E94E4200E94AB1FB801DF +:1037A000CE010E946619DF91CF911F910F9108956C +:1037B0000E9407220E9417220E94DC210E943122CF +:1037C0000E94F2250E94412580E090E00E942C1783 +:1037D00080E090E00C9442170E94F7210C94D81BD3 +:1037E0000E942421292F22952F7030E02C303105A2 +:1037F0004CF42A3031056CF4225031092230310565 +:10380000A8F407C02C30310569F02F30310551F094 +:103810000DC0803F69F018F4803E40F409C0843F39 +:1038200029F406C093FB882780F9089580E0089565 +:1038300081E00895CF93DF9300D000D01F92CDB7E1 +:10384000DEB70F900F900F900F900F90DF91CF91F8 +:103850000895CF93DF9300D000D000D0CDB7DEB76E +:1038600026960FB6F894DEBF0FBECDBFDF91CF9185 +:1038700008951F93CF93DF93C0919D0216E080912E +:103880009E02C81799F0D0E01C9FF0011D9FF00D1B +:103890001124E156FD4F4081518162817381848101 +:1038A00095810E94291C2196C770E9CFDF91CF91A5 +:1038B0001F9108954091CF025091D0026091D102A2 +:1038C0007091D2028091D3029091D4020C94291C61 +:1038D0008091D40282958F7009F054C08091D102FA +:1038E000882309F44FC080919D02A0919E026091AF +:1038F000CF027091D0024091D2025091D302B6E033 +:103900008A1709F43FC090E041155105C1F17F3F8E +:1039100011F46F3FA1F1B89FF001B99FF00D112490 +:10392000E156FD4F218172132AC02081621327C006 +:103930002281211124C0238134812417350710F4FA +:1039400021503109241B350B283C3105C0F420914E +:10395000D4022F7020612093D40226E0289FF0012A +:10396000299FF00D1124EC55FD4F80818F708061EF +:1039700080838FEC92E00E94B11B0C94391C01965D +:103980008770BECF0895CF92DF92EF92FF920F9390 +:103990001F93CF93DF93CDB7DEB762970FB6F8943E +:1039A000DEBF0FBECDBF8C0185E0F801DE011D96A4 +:1039B00001900D928A95E1F7D8014C9111965C9196 +:1039C000119712966C9112971396CD90DC901497E4 +:1039D0003091CF027091D0028091D2029091D302A7 +:1039E000009709F46BC17F3F19F43F3F09F466C1AA +:1039F000E090D102EE2009F4C0C02091D402C81694 +:103A0000D90628F0F601E81BF90BCF0104C0809518 +:103A100090958C0D9D1DFF24F394883C910578F0C2 +:103A2000F12C207F09F0C6C07C2DD98AC88A8989EB +:103A30000E941A1C8FEC92E00E94B11BB1C0822F31 +:103A4000807F09F046C0751314C0341312C0611191 +:103A500010C02F7020612093D4020E945A1C8FEC5A +:103A600092E00E94B11B8091D402D80115968C93EC +:103A70002EC0CD2819F15F3F11F44F3FF9F0F62E1B +:103A800061111CC080919D0220919E0236E0821738 +:103A900009F45AC090E0389FF001399FF00D1124CD +:103AA000E156FD4F7181571306C07081471303C063 +:103AB0007281711103C001968770E9CFF62E6623DB +:103AC00009F418C18091D40281608093D402F12C52 +:103AD00011C1751308C0341306C0611104C0809170 +:103AE000D402D801C3C04D875E878D859E856A8BC1 +:103AF0000E94F01B6A898823E1F16623D1F12091AD +:103B0000D402822F82958F7090E0029774F080919A +:103B1000CF029091D00298878F831986DB86CA8660 +:103B20002C87CE0107960E94B11B86E0F801AFEC0E +:103B3000B2E001900D928A95E1F70E94681C0E9404 +:103B40005A1CFF24F394D6C04D875E878D859E85D1 +:103B50000E942421292F22952F7030E02230310538 +:103B60000CF0BCC09F7009F0B6C0805E883008F4CD +:103B7000C1C0C8010E94B11BE4CFC816D90608F421 +:103B800053C0F601E81BF90BCF01883C910508F4FE +:103B900050C0F12C7C2DD98AC88A89890E941A1CB0 +:103BA000EFECF2E086E0DF011D928A95E9F70E94D2 +:103BB0005A1CA0C0751314C0341312C0611110C078 +:103BC0008091D402F8018583C8010E94B11B86E070 +:103BD000EFECF2E0DF011D928A95E9F7FE2C8AC036 +:103BE0004D875E878D859E856A8B0E94F01B6A8952 +:103BF000882309F4BECF662309F4BBCF2091D402F9 +:103C0000822F82958F7090E002970CF48ECF809176 +:103C1000CF029091D0029A8389831B82DD82CC826D +:103C20002E83CE0101967FCF809590958C0D9D1DA2 +:103C3000ACCFF62E662309F49CCF75132EC0341337 +:103C40002CC02091D40220FD1FC0822F82958F703E +:103C5000D9F0D80115962C9315978F3049F08F5FC6 +:103C6000982F9295907F822F8F70892B15968C9329 +:103C7000C8010E94B11B86E0F801AFECB2E00190F0 +:103C80000D928A95E1F793CF86E0F801AFECB2E0B0 +:103C900001900D928A95E1F72DC04D875E878D8545 +:103CA0009E850E94F01B811140CF8091D4028160DB +:103CB0008093D402C8010E94B11B1CC0662309F482 +:103CC00058CF4D875E878D859E850E94F01B882387 +:103CD00009F44FCF2ACF811148CF0CC024303105D1 +:103CE0000CF047CF9F7009F440CFF8019581907F89 +:103CF00009F03BCF8F2D62960FB6F894DEBF0FBE52 +:103D0000CDBFDF91CF911F910F91FF90EF90DF908A +:103D1000CF9008951F93CF93DF93CDB7DEB72C9745 +:103D20000FB6F894DEBF0FBECDBF4F8358876987AB +:103D30007A878B879C87CE0107960E94C31C8823B5 +:103D400069F08F8198852A853B85232BF1F19F3F70 +:103D500009F063C08F3F09F060C037C086E0FE0104 +:103D60003796DE01119601900D928A95E1F76F81E9 +:103D70007885EA85FB85309741F17F3F11F46F3FED +:103D800021F120919E0230E0C901019687709927A8 +:103D900040919D0250E08417950709F447C069835C +:103DA0007A83FD83EC8396E0929FD001939FB00DC0 +:103DB0001124A156BD4FFE01319601900D929A95A6 +:103DC000E1F780939E020E94391C16E080919D02CB +:103DD00090919E028917C1F1189FC001112481564C +:103DE0009D4F0E94C31C882379F1E0919D021E9F84 +:103DF000F0011124E156FD4F4081518162817381B0 +:103E0000848195810E94291C80919D0290E00196F9 +:103E10008770992780939D02D9CF4F8158856985F6 +:103E20007A858B859C850E94291CCFCF0E94EC1B34 +:103E300010929E0210929D02EFECF2E086E0DF010C +:103E40001D928A95E9F7C1CF2C960FB6F894DEBF84 +:103E50000FBECDBFDF91CF911F910895EF92FF92DA +:103E60000F931F93CF93DF938C01009709F46CC0DD +:103E7000F12CEE24E394E8012196F8018491843733 +:103E800040F4843008F051C0813081F0823019F163 +:103E90005BC0853709F444C0A8F19CE7980F9037C0 +:103EA00008F052C08F770E94091941C00E5F1F4F62 +:103EB000FE01C49180E28C0F883048F4C7708E2DCB +:103EC00001C0880FCA95EAF70E940A2214C08C2FFD +:103ED0000E9441182DC00E5F1F4FFE01C49180E269 +:103EE0008C0F883058F4C7708E2D01C0880FCA958A +:103EF000EAF70E9410220E9431221AC08C2F0E94E1 +:103F0000091916C00E5F1F4FFE01C491CC2381F02A +:103F10008FE99FE00197F1F700C00000C150F6CF94 +:103F20000E5F1F4FFE01F49003C00E9441188E01E6 +:103F30008F2D882309F49FCFEFE9FFE03197F1F748 +:103F400000C000008150F5CFDF91CF911F910F91FC +:103F5000FF90EF90089508956093D9027093DA026C +:103F60008093DB029093DC020C94D81B0F931F9379 +:103F70000091D9021091DA022091DB023091DC022B +:103F8000DC01CB01802B912BA22BB32B8093D90288 +:103F90009093DA02A093DB02B093DC021F910F91A1 +:103FA0000C94D81B0F931F930091D9021091DA0241 +:103FB0002091DB023091DC02DC01CB0180239123D4 +:103FC000A223B3238093D9029093DA02A093DB0259 +:103FD000B093DC021F910F910C94D81B0F931F9389 +:103FE0000091D9021091DA022091DB023091DC02BB +:103FF000DC01CB0180279127A227B3278093D90228 +:104000009093DA02A093DB02B093DC021F910F9130 +:104010000C94D81B1092D5021092D6021092D7029F +:104020001092D8020C94D81B41E050E060E070E0A0 +:1040300004C0440F551F661F771F8A95D2F740931F +:10404000D5025093D6026093D7027093D8020C9495 +:10405000D81B41E050E060E070E004C0440F551F01 +:10406000661F771F8A95D2F78091D5029091D6026C +:10407000A091D702B091D802482B592B6A2B7B2BE9 +:104080004093D5025093D6026093D7027093D80222 +:104090000C94D81B41E050E060E070E004C0440F95 +:1040A000551F661F771F8A95D2F7409550956095EA +:1040B00070958091D5029091D602A091D702B091CF +:1040C000D802482359236A237B234093D502509377 +:1040D000D6026093D7027093D8020C94D81B41E0AB +:1040E00050E060E070E004C0440F551F661F771F6A +:1040F0008A95D2F78091D5029091D602A091D702ED +:10410000B091D802482759276A277B274093D502C8 +:104110005093D6026093D7027093D8020C94D81BA8 +:104120000F931F930091D5021091D6022091D702D0 +:104130003091D802DC01CB01802B912BA22BB32B29 +:104140008093D5029093D602A093D702B093D80261 +:104150001F910F910C94D81B0F931F930091D502C0 +:104160001091D6022091D7023091D802DC01CB0108 +:1041700080239123A223B3238093D5029093D60268 +:10418000A093D702B093D8021F910F910C94D81B23 +:104190000F931F930091D5021091D6022091D70260 +:1041A0003091D802DC01CB0180279127A227B327C9 +:1041B0008093D5029093D602A093D702B093D802F1 +:1041C0001F910F910C94D81B0895CF92DF92EF921C +:1041D000FF920F931F93CF93DF938C01C090D9026E +:1041E000D090DA02E090DB02F090DC028091D50200 +:1041F0009091D602A091D702B091D802C82AD92AAC +:10420000EA2AFB2ACFE1D0E0D701C6010C2E04C078 +:10421000B695A795979587950A94D2F780FF06C023 +:10422000B8018C2F0E948008019721F4219760F734 +:1042300080E001C08C2FDF91CF911F910F91FF90F3 +:10424000EF90DF90CF900895CF93DF93EC010E9421 +:10425000E520BE010E948008DF91CF910895CB0137 +:104260000E94242108958091DD028595859585958C +:1042700008958091DD028770089598E0899F9001EC +:104280001124262B2093DD020C9429202091DD029D +:10429000809582238093DD02982F977069F430E037 +:1042A000482F552747FD50952417350729F0859548 +:1042B000859585950C944A2008959091DD0297701C +:1042C00081E009F480E0089590911501992321F08F +:1042D00090911601911109C0209117013091180198 +:1042E000F90132969FEF40E01FC0982F9695969562 +:1042F00096959F3050F5E0911701F0911801E90F64 +:10430000F11D877021E030E0A90102C0440F551F64 +:104310008A95E2F7CA019181892B818308959F3F95 +:1043200039F04F5F4E3041F051915813F8CF0DC026 +:104330005111F7CF942FF5CF9F3F39F0F901E90FD5 +:10434000F11D97FDFA9582830895089590911501C6 +:10435000992321F090911601911109C02091170124 +:1043600030911801F9013296205F3F4F1FC0982FFE +:104370009695969596959F30F0F4E0911701F091FF +:104380001801E90FF11D877021E030E0A90102C09A +:10439000440F551F8A95E2F7CA01809591818923C0 +:1043A000818308953196E217F30729F090819813DD +:1043B000F9CF1082F7CF089581E090E0E0911701E6 +:1043C000F0911801E80FF91F1082019680319105D4 +:1043D000A9F708959091F102892B8093F102089535 +:1043E00080959091F10289238093F10208951092B3 +:1043F000F10208959091F002892B8093F0020895C4 +:1044000080959091F00289238093F0020895109294 +:10441000F00208959091EF02892B8093EF020895A6 +:1044200080959091EF0289238093EF020895109276 +:10443000EF0208958093DE0208951092DE0208953F +:104440008091170190911801FC0131969C01205F29 +:104450003F4F80E0919191118F5FE217F307D1F701 +:104460000895E0911701F09118018091F102808385 +:10447000E0911701F091180190818091F002892B51 +:104480008083E0911701F091180190818091EF02F3 +:10449000892B80838091DE02882361F0E0911701EF +:1044A000F09118019081892B80830E942022811134 +:1044B0001092DE0280911701909118010C9416174A +:1044C00020E0009739F0AC01415051098423952335 +:1044D0002F5FF7CF822F089580911303843039F135 +:1044E0001092F30220E488E190E00FB6F894A895CA +:1044F000809360000FBE2093600080E00E94EC0279 +:1045000080E00E941A0983B7817F846083BF83B7EC +:10451000816083BF7894889583B78E7F83BF88E15D +:104520000FB6F89480936000109260000FBE08955B +:104530000895089580E00E94EC020E9498220E9453 +:1045400075090E9499220E94FA0991E0811101C027 +:1045500090E0892F08950E94EC1B80E00E94EC02FD +:104560000E9414280E940A170C941A091F920F9295 +:104570000FB60F9211248F939F93AF93BF938091A7 +:10458000F302811113C08091F4029091F502A09181 +:10459000F602B091F7024196A11DB11D8093F4027D +:1045A0009093F502A093F602B093F702BF91AF91FA +:1045B0009F918F910F900FBE0F901F90189582E0E2 +:1045C00084BD93E095BD9AEF97BD80936E000895EA +:1045D0002FB7F8948091F4029091F502A091F60221 +:1045E000B091F7022FBF0895CF92DF92EF92FF9222 +:1045F0000F931F932FB7F8944091F4025091F50256 +:104600006091F6027091F7022FBF6A017B01EE24E0 +:10461000FF248C0120E030E0C016D106E206F3064C +:1046200010F4415051099A01281B390BC9011F91FF +:104630000F91FF90EF90DF90CF9008951F920F920F +:104640000FB60F9211248F939F93AF93BF938091D6 +:10465000F4029091F502A091F602B091F702019652 +:10466000A11DB11D8093F4029093F502A093F60270 +:10467000B093F702BF91AF919F918F910F900FBEB2 +:104680000F901F9018950E940714F8942FEF87EA57 +:1046900091E6215080409040E1F700C0000087E0A3 +:1046A00090EBDC0180931E0390931F03A0932003E3 +:1046B000B09321039CE088E10FB6F894A89580930D +:1046C00060000FBE90936000FFCF0E94A423811171 +:1046D00002C00E9480230E94AF238093F2020E94B6 +:1046E000B72380931C0387FB882780F980931601EA +:1046F0000E94B323682F70E080E090E00C94AC1F20 +:104700006DEE7EEF80E090E00E94CB2C60E082E0D6 +:1047100090E00E94B92C60E083E090E00E94B92C08 +:1047200060E084E090E00E94B92C60E085E090E0D9 +:104730000E94B92C60E086E090E00E94B92C6FEFF7 +:1047400087E090E00C94B92C80E090E00E94B32CBC +:1047500021E08D3E9E4F09F020E0822F089582E0F7 +:1047600090E00C94AB2C83E090E00C94AB2C84E0B4 +:1047700090E00C94AB2C682F84E090E00C94B92C62 +:1047800086E090E00C94AB2C682F86E090E00C94CF +:10479000B92C87E090E00C94AB2C682F87E090E078 +:1047A0000C94B92C8091FA0280FF0BC060911C011F +:1047B00085E0689FB001112475956795759567959B +:1047C0002BC081FF09C060911C0185E0689FB0018A +:1047D00011247595679520C082FF07C060911C0168 +:1047E00085E0689FB001112417C09091FB029923C6 +:1047F000D1F060911B01961788F720911C0185E08C +:10480000289F90011124929FA001939F500D112485 +:1048100070E0CA010E94912C6038710540F4611566 +:10482000710539F002C065E070E0862F08958FE7CA +:10483000089581E008958091FA0280FF08C0609198 +:104840001A0170E0759567957595679521C081FF90 +:1048500006C060911A0170E07595679519C082FFD6 +:1048600004C060911A0170E010C09091FB0299237E +:10487000C1F0609119019617A0F780911A01899FE4 +:10488000C001112470E00E94912C6038710528F459 +:104890006115710521F0862F08958FE7089581E055 +:1048A000089561E070E0F4CF803F21F40E94D223AC +:1048B000819504C0813F29F40E94D2238093FE0297 +:1048C0000895823F21F40E94D223819504C0833F42 +:1048D00029F40E94D2238093FD020895893F19F4A0 +:1048E0000E941B2405C08A3F31F40E941B2481953D +:1048F0008093FF0208958B3F21F40E941B24819531 +:1049000004C08C3F29F40E941B2480930003089567 +:10491000843F21F48091FC02816017C0853F21F41F +:104920008091FC02826011C0863F21F48091FC02DC +:1049300084600BC0873F21F48091FC02886005C031 +:10494000883F31F48091FC0280618093FC020895DD +:104950008D3F21F48091FA0281600BC08E3F21F4DB +:104960008091FA02826005C08F3F29F48091FA029B +:1049700084608093FA020895803F39F48091FE02AA +:1049800087FF6CC01092FE0269C0813F29F48091BC +:10499000FE021816BCF362C09091FD02823F29F41A +:1049A00097FF5CC01092FD0259C0833F19F419169D +:1049B000CCF354C0893F41F48091FF0218160CF0EB +:1049C0004DC01092FF024AC08A3F29F48091FF0235 +:1049D00087FF44C0F6CF8B3F39F48091000387FFF7 +:1049E0003DC0109200033AC08C3F29F4809100032F +:1049F0001816BCF333C0843F21F48091FC028E7FF3 +:104A000017C0853F21F48091FC028D7F11C0863F45 +:104A100021F48091FC028B7F0BC0873F21F48091B1 +:104A2000FC02877F05C0883F31F48091FC028F7EB5 +:104A30008093FC0213C08D3F21F48091FA028E7F97 +:104A40000BC08E3F21F48091FA028D7F05C08F3F0D +:104A500029F48091FA028B7F8093FA028091FD0203 +:104A600081110EC08091FE0281110AC08091FF0267 +:104A7000811106C080910003811102C01092FB02D7 +:104A800008958CEF92E00E9421170E94E8229093F3 +:104A9000F9028093F80208951F93CF93DF938091DA +:104AA000F8029091F9020E94F422AC019091FB026D +:104AB000992321F020911D0130E006C020911E01B4 +:104AC0008AE0289F900111244217530708F486C0FA +:104AD0008091FD02C091FE02D091FF02109100036F +:104AE000811107C0C11176C0D11174C0111172C0FB +:104AF00075C09F3F19F09F5F9093FB02181624F436 +:104B00000E94D2238093FD028091FD0287FF05C0A1 +:104B10000E94D22381958093FD021C1624F40E94EA +:104B2000D2238093FE028091FE0287FF05C00E947F +:104B3000D22381958093FE026091FD02662339F1B4 +:104B4000C091FE02CC2319F1772767FD7095872F5E +:104B5000972F0E94B32923E333E343E35FE30E94EB +:104B6000C32A0E9480296093FD026C2F772767FD7E +:104B70007095872F972F0E94B32923E333E343E3F4 +:104B80005FE30E94C32A0E9480296093FE021D16E3 +:104B900024F40E941B248093FF028091FF0287FF70 +:104BA00005C00E941B2481958093FF02111624F4F6 +:104BB0000E941B24809300038091000387FF05C09F +:104BC0000E941B24819580930003DF91CF911F9158 +:104BD0000C9441259F3F09F08ECF96CFDF91CF9166 +:104BE0001F910895ECEFF2E085E0DF011D928A95B8 +:104BF000E9F71092FB021092FA020895833081F1D6 +:104C000028F4813059F08230D1F00895853009F4CC +:104C100049C0B8F1863009F456C0089580911E014C +:104C2000262F30E0280F311D2F3F310524F4680F67 +:104C300060931E0108958FEF80931E010895809167 +:104C40001D01262F30E0280F311D2F3F310524F4A0 +:104C5000680F60931D0108958FEF80931D010895E3 +:104C600080911C01262F30E0280F311D2F3F310588 +:104C700024F4680F60931C0108958FEF80931C014A +:104C8000089580911B01262F30E0280F311D2F3F02 +:104C9000310524F4680F60931B0108958FEF809312 +:104CA0001B01089580911A01262F30E0280F311D35 +:104CB0002F3F310524F4680F60931A0108958FEF98 +:104CC00080931A01089580911901262F30E0280F52 +:104CD000311D2F3F310524F4680F609319010895A9 +:104CE0008FEF809319010895833011F128F48130FA +:104CF00049F0823091F00895853081F120F18630BD +:104D0000C1F1089580911E01681720F4861B8093DD +:104D10001E01089510921E01089580911D016817CB +:104D200020F4861B80931D01089510921D010895A3 +:104D300080911C01681720F4861B80931C01089544 +:104D400010921C01089580911B01681720F4861BA6 +:104D500080931B01089510921B01089580911A0100 +:104D6000681720F4861B80931A01089510921A0187 +:104D7000089580911901681720F4861B809319010A +:104D800008951092190108950F931F93873208F028 +:104D900048C08E3108F08DC0803109F477C008F525 +:104DA000873009F461C068F4863009F09DC08091B5 +:104DB000F202817F8E7F8093F20281E08093020372 +:104DC00094C08B3009F489C08E3009F08DC0809179 +:104DD000F20282FB222720F991E0922790FB82F9D0 +:104DE0005EC0863109F479C060F4813109F07CC07D +:104DF0000E94EC1B9091160181E089278093160197 +:104E00006CC0893109F469C08B3109F06DC08091A3 +:104E1000F20281FB222720F991E0922790FB81F991 +:104E20003EC0883309F459C050F4893209F457C0A0 +:104E3000853309F454C0873209F451C055C0833416 +:104E400009F44DC028F48A3308F44EC0895332C0A7 +:104E5000883409F049C00E94EC1B0E942A0A0E9473 +:104E6000F1030E94432339C09091F202892F80956B +:104E7000817080FB90F929F0966098609093F2021F +:104E800034C0997F977F9093F20227C08091F202FD +:104E900083FB222720F991E0922790FB83F98093EE +:104EA000F2029923D1F08091F20281608093F202A4 +:104EB00014C08D5141E050E060E070E08A019B0138 +:104EC00004C0000F111F221F331F8A95D2F7C9019A +:104ED000B8010E94AC1F0E94EC1B81E006C061E09B +:104EE00070E080E090E0F5CF80E01F910F91089591 +:104EF00080E0089580E00895CF93C82F8091020349 +:104F0000813069F018F08230C9F184C0E091170156 +:104F1000F09118018081823209F07EC007C0E091D3 +:104F20001701F09118018081823261F48C2F0E9468 +:104F30007827811104C08C2F0E94C4261DC081E0F7 +:104F400090E01AC08C2F0E947A27811114C0C431BE +:104F500079F048F4CB3079F0C03109F061C082E0DB +:104F60008093020308C0C93219F0C83321F058C039 +:104F70001092020355C081E0817054C0C93291F192 +:104F800020F5C43179F1B0F4C73009F047C08EE1A3 +:104F900080931E0182E380931D018AE080931C01AF +:104FA00084E180931B0188E080931A0188E280935A +:104FB000190134C0CE51C63088F5EC2FF0E0EA5428 +:104FC000FE4F80818093010329C0CE34E9F020F4A4 +:104FD000CB3421F56AE013C0C13579F0C235F1F464 +:104FE00061E00DC080910103882319F01092010344 +:104FF00015C081E08093020315C061E006C0809176 +:1050000001030E94FE250AC06AE0809101030E940C +:10501000742604C01092020380E004C081E002C044 +:1050200080E0AACFCF9108950E94A423811102C0ED +:105030000E9480230E94C02380931D0380FF02C032 +:10504000869501C080E00C94EC0280911D03982F9E +:105050009695292F30E0233031054CF49F5F990F4E +:105060008170892B816080931D030E94C4238091ED +:105070001D0386950C94EC0280911D03982F969544 +:1050800091F09158990F8170892B80931D038E7F29 +:1050900091E009F490E080911D0390FB80F98093EA +:1050A0001D030E94C42380911D0386950C94EC027D +:1050B00080911D03982F909590FB80F980931D039C +:1050C0000E94C42380911D0380FF02C0869501C009 +:1050D00080E00C94EC0290911D03892F86958F5FE0 +:1050E0008F779170843028F4880F892B80931D036B +:1050F00002C090931D0380911D038E7F91E009F4FF +:1051000090E080911D0390FB80F980931D030E9425 +:10511000C42380911D0386950C94EC0220911D03FD +:10512000922F96958927982F990F822F8170892B1E +:1051300080931D038E7F91E009F490E080911D0320 +:1051400090FB80F980931D030E94C42380911D036E +:1051500086950C94EC0280911D0386950895505815 +:10516000BB27AA270ED0D1C1C2D130F0C7D120F0C1 +:1051700031F49F3F11F41EF4B7C10EF4E095E7FB44 +:105180009FC1E92FD3D180F3BA1762077307840751 +:10519000950718F071F49EF5EBC10EF4E0950B2E17 +:1051A000BA2FA02D0B01B90190010C01CA01A00179 +:1051B0001124FF27591B99F0593F50F4503E68F1D4 +:1051C0001A16F040A22F232F342F4427585FF3CF15 +:1051D000469537952795A795F0405395C9F77EF4E6 +:1051E0001F16BA0B620B730B840BBAF09150A1F02F +:1051F000FF0FBB1F661F771F881FC2F70EC0BA0FB5 +:10520000621F731F841F48F4879577956795B7953C +:10521000F7959E3F08F0B3CF9395880F08F0992734 +:10522000EE0F97958795089527D108F481E00895AA +:105230000CD06BC163D140F05AD130F021F45F3F04 +:1052400019F03EC1511195C14FC170D198F3992306 +:10525000C9F35523B1F3951B550BBB27AA2762173A +:105260007307840738F09F5F5F4F220F331F441F7F +:10527000AA1FA9F333D00E2E3AF0E0E830D09150B7 +:105280005040E695001CCAF729D0FE2F27D0660FA4 +:10529000771F881FBB1F261737074807AB07B0E8E3 +:1052A00009F0BB0B802DBF01FF2793585F4F2AF0F9 +:1052B0009E3F510568F004C15CC15F3FECF3983E2E +:1052C000DCF3869577956795B795F7959F5FC9F756 +:1052D000880F911D9695879597F90895E1E0660FDF +:1052E000771F881FBB1F621773078407BA0720F058 +:1052F000621B730B840BBA0BEE1F88F7E0950895C1 +:1053000004D06894B11135C1089518D188F09F5721 +:1053100090F0B92F9927B751A0F0D1F0660F771F01 +:10532000881F991F1AF0BA95C9F712C0B13081F0E1 +:105330001FD1B1E008951CC1672F782F8827B85F6F +:1053400039F0B93FCCF3869577956795B395D9F742 +:105350003EF490958095709561957F4F8F4F9F4F4C +:105360000895E89409C097FB3EF490958095709558 +:1053700061957F4F8F4F9F4F9923A9F0F92F96E9A1 +:10538000BB279395F695879577956795B795F11116 +:10539000F8CFFAF4BB0F11F460FF1BC06F5F7F4FB3 +:1053A0008F4F9F4F16C0882311F096E911C07723C5 +:1053B00021F09EE8872F762F05C0662371F096E8CE +:1053C000862F70E060E02AF09A95660F771F881F9D +:1053D000DAF7880F9695879597F9089588D018F091 +:1053E00011F08CD038F480C0C4C0E92F9FD0B0F346 +:1053F0005523C9F3E7FB6217730784079507A8F1E4 +:1054000099F3E92FFF2788232AF03197660F771F3A +:10541000881FDAF7952F5527442332F091505040DA +:10542000220F331F441FD2F7BB27E91BF50B621B6A +:10543000730B840BB109C1F222F4620F731F841F36 +:10544000B11D31972AF0660F771F881FBB1FEFCF62 +:10545000915050405AF041F0882332F0660F771F88 +:10546000881F91505040C1F7939530C0869577952D +:1054700067959F5FD9F7F8CF990F0008550FAA0BD2 +:10548000E0E8FEEF16161706E807F907C0F0121657 +:105490001306E407F50798F0621B730B840B950B5A +:1054A00039F40A2661F0232B242B252B21F40895AF +:1054B0000A2609F4A140A6958FEF811D811D08954C +:1054C00097F99F6780E870E060E008959F3F31F0B2 +:1054D000915020F4879577956795B795880F911D22 +:1054E0009695879597F908959FEF80EC089500248D +:1054F0000A941616170618060906089500240A9439 +:1055000012161306140605060895092E0394000CBE +:1055100011F4882352F0BB0F40F4BF2B11F460FF4D +:1055200004C06F5F7F4F8F4F9F4F089557FD905876 +:10553000440F551F59F05F3F71F04795880F97FB57 +:10554000991F61F09F3F79F0879508951216130611 +:105550001406551FF2CF4695F1DF08C01616170640 +:105560001806991FF1CF8695710561050894089575 +:10557000E894BB2766277727CB0197F908957CDF4E +:1055800008F48FEF08950BD0C0CFB1DF28F0B6DF5D +:1055900018F0952309F094CFA7CF1124EACFC6DFE6 +:1055A000A0F3959FD1F3950F50E0551F629FF00136 +:1055B000729FBB27F00DB11D639FAA27F00DB11D8F +:1055C000AA1F649F6627B00DA11D661F829F222718 +:1055D000B00DA11D621F739FB00DA11D621F839F9F +:1055E000A00D611D221F749F3327A00D611D231F75 +:1055F000849F600D211D822F762F6A2F11249F57C3 +:1056000050408AF0E1F088234AF0EE0FFF1FBB1FE5 +:10561000661F771F881F91505040A9F79E3F510584 +:1056200070F04ECFA6CF5F3FECF3983EDCF386954B +:1056300077956795B795F795E7959F5FC1F7FE2B2F +:10564000880F911D9695879597F90895FA01EE0FA9 +:10565000FF1F30962105310599F16115710561F43F +:105660008038BFE39B0749F168949038810561F069 +:105670008038BFEF9B0741F0992342F5FF3FE105DA +:105680003105210511F1E8940894E795D901AA2381 +:1056900029F4AB2FBE2FF85FD0F310C0FF5F70F47A +:1056A000A695E0F7F73950F019F0FF3A38F49F77F4 +:1056B0009F930CD00F9007FC905808953EF014CFA4 +:1056C00060E070E080E89FE308954FE79F775F9385 +:1056D0004F933F932F939ED02F913F914F915F9186 +:1056E00052DF05C019F40EF0EBCE42CFFDCE26DF1F +:1056F000C8F39638C0F707F80F92E8942BE33AEA1C +:1057000048EB5FE74EDF0F920F920F924DB75EB7F7 +:105710000F92C0D0EAE0F1E016D04F915F91EF9187 +:10572000FF91E595EE1FFF1F49F0FE57E068442703 +:10573000EE0F441FFA95E1F74195550B32D00F90CB +:1057400007FE26C00895DF93CF931F930F93FF9218 +:10575000EF92DF927B018C01689405C0DA2EEF0195 +:105760001EDFFE01E894A591259135914591559153 +:10577000AEF3EF0106DDFE019701A801DA9479F797 +:10578000DF90EF90FF900F911F91CF91DF910895DF +:105790009B01AC0160E070E080E89FE349CD90CED2 +:1057A00095CECCDEE8F39923D9F3940F511DBBF3CA +:1057B0009150504094F059F0882332F0660F771FD3 +:1057C000881F91505040C1F79E3F510544F7880F04 +:1057D000911D9695879597F908955F3FACF0983E97 +:1057E0009CF0BB27869577956795B79508F4B160CF +:1057F0009395C1F7BB0F58F711F460FFE8CF6F5FC7 +:105800007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE65 +:10581000689456CE93DEC8F39923D1F3C6F3DF9391 +:10582000CF931F930F93FF92C92FDD2788232AF070 +:105830002197660F771F881FDAF720E030E040E8F5 +:105840005FEB9FE3883920F0803E30F021968F7720 +:1058500087DCE2E3F1E003C083DCEFE5F1E073DF36 +:105860008B01BE01EC01FB2E6F5771097595771FF7 +:10587000880B990B78DD28E132E741E35FE38FDEA7 +:10588000AF2D9801AE01FF900F911F91CF91DF9145 +:1058900078DC3BCEFA01DC01AA0FBB1F9B01AC01F7 +:1058A000BF5728F422273327442750781FC0B75109 +:1058B00088F4AB2F0024469537952795011CA395B6 +:1058C000D2F3002069F0220F331F441FB395DAF39F +:1058D0000DD045CC61307105A0E88A07B94630F497 +:1058E0009B01AC016627772788279078309621F0B6 +:1058F00020833183428353830895AA1BBB1B51E14C +:1059000007C0AA1FBB1FA617B70710F0A61BB70B2F +:10591000881F991F5A95A9F780959095BC01CD01D4 +:10592000089597FB072E16F4009407D077FD09D051 +:105930000E947D2C07FC05D03EF4909581959F4FE9 +:105940000895709561957F4F0895EE0FFF1F0590A4 +:10595000F491E02D0994F999FECF92BD81BDF89A9A +:10596000992780B50895A8E1B0E042E050E00C949A +:10597000D32C262FF999FECF92BD81BDF89A0197BD +:1059800000B4021639F01FBA20BD0FB6F894FA9A87 +:10599000F99A0FBE08950196272F0E94BA2C0C94F5 +:1059A000B92CDC01CB01FC01F999FECF06C0F2BD98 +:1059B000E1BDF89A319600B40D9241505040B8F7CD +:0659C0000895F894FFCFEA +:1059C600640007000CFF0000003F640E109C107975 +:1059D60010451011100101DF022808140A321E00BA +:1059E60002040507090B0C0E1011131517181A1CC3 +:1059F6001D1F2123242628292B2D2F3032343537FD +:105A0600393B1F0F03764F5F6F7F49694379095909 +:105A160053633149803F5D8B803FF8BF803FCAE1C9 +:105A2600803F73ED803FCAE1803FF8BF803F5D8BCA +:105A3600803F3149803F0000803FF16D7F3F75EA2E +:105A46007E3F4C827E3F833F7E3F84287E3F833F5E +:105A56007E3F4C827E3F75EA7E3FF16D7F3F0000C0 +:105A6600803F3F4D3639E304960460042704BA03A9 +:105A7600D303EC0305040102030405060708090025 +:00000001FF diff --git a/keyboard/planck/keymaps/brandon/compiled.hex b/keyboard/planck/keymaps/brandon/compiled.hex new file mode 100644 index 0000000000..2b6bb328df --- /dev/null +++ b/keyboard/planck/keymaps/brandon/compiled.hex @@ -0,0 +1,1456 @@ +:100000000C94C1020C9405030C9405030C94050395 +:100010000C9405030C9405030C9405030C94050340 +:100020000C9405030C9405030C94B2140C948415E1 +:100030000C94E6220C9405030C9405030C94050320 +:100040000C9405030C9467030C9405030C940503AE +:100050000C9405030C944E230C9405030C94050397 +:100060000C9405030C9405030C9405030C940503F0 +:100070000C9405030C9405030C9405030C940503E0 +:100080000C94270B0C9405030C9405030C940503A6 +:100090000C9405030C9405030C9405030C940503C0 +:1000A0000C9405030C9405030C940503F115131629 +:1000B00001171316011758167B160117D016E316F1 +:1000C000CD19CD19FC19FC193B1A5B1AB11BB11BD8 +:1000D000661AB11B161B161B7D1B861BB11BAB1BA7 +:1000E000231B231B231B231B231B231B231B231B20 +:1000F000231B231B231B231B231B231B231B231B10 +:10010000331B411B481B4F1B591B07634236B79BD0 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C00002010000000000000000000029001400EF +:1001D0001A000800150017001C0018000C0012007F +:1001E00013002A002B0004001600070009000A0073 +:1001F0000B000D000E000F0033003400E1001D0065 +:100200001B00060019000500110010003600370021 +:1002100038002872E000E200E300025403522C0090 +:100220002C0004525000510052004F0029001400CD +:100230001A00090013000A000D000F0018001C002E +:1002400033002A002B0004001500160017000700D9 +:100250000B00110008000C0012003400E1001D002A +:100260001B000600190005000E00100036003700C4 +:1002700038002872E000E200E300025403522C0030 +:100280002C0004525000510052004F000100420067 +:100290004300440045004B002202380024002500A2 +:1002A00026002A0001003E003F00400041004E00B1 +:1002B0004A002502210022002300310201003A00F9 +:1002C0003B003C003D004C004D0027001E001F007D +:1002D00020000100010001000100010001000100F7 +:1002E000010001005000510052004F0035021E0273 +:1002F0001F022002210222022302240225022602DA +:1003000027022A0001003A003B003C003D003E006D +:100310003F002D022E022F02300231020100400068 +:1003200041004200430044004500005301530030A7 +:100330000050010001000100010001000100010066 +:1003400001000100AB00AA00A900AE0035001E00AC +:100350001F00200021002200230024002500260089 +:1003600027002A0001003A003B003C003D003E000F +:100370003F002D002E002F00300031000100400012 +:100380004100420043004400450000530153003047 +:100390000050010001000100010001000100010006 +:1003A00001000100AB00AA00A900AE002803540020 +:1003B00068006500200050006C0061006E00630062 +:1003C0006B0020004B006500790062006F00610047 +:1003D0007200640000002C034F007200740068007B +:1003E0006F006C0069006E00650061007200200003 +:1003F0004B006500790062006F00610072006400CC +:10040000730000000403090409026D00040100A048 +:10041000FA09040000010301010009211101000192 +:10042000223F000705810308000A090401000103B7 +:10043000010200092111010001224D00070582037C +:1004400008000A090402000103000000092111014B +:1004500000012236000705830308000A090403008F +:1004600001030000000921110100012239000705E4 +:1004700084031000011201100100000008EDFE606D +:100480006001000102000105010906A1010507192B +:10049000E029E71500250195087501810205081975 +:1004A00001290595057501910295017503910105D5 +:1004B000071900297715002501957875018102C07B +:1004C00005010980A101850216010026B7001A0165 +:1004D000002AB700751095018100C0050C0901A123 +:1004E000018503160100269C021A01002A9C027550 +:1004F0001095018100C005010902A1010901A100B7 +:1005000005091901290515002501950575018102C7 +:100510009501750381010501093009311581257F98 +:1005200095027508810609381581257F95017508A2 +:100530008106050C0A38021581257F950175088111 +:1005400006C0C005010906A101050719E029E71544 +:100550000025019508750181029501750881010545 +:1005600008190129059505750191029501750391F9 +:10057000010507190029FF150025FF95067508815B +:1005800000C011241FBECFEFDAE0DEBFCDBF04B63E +:1005900003FE24C080911E0390911F03A0912003AD +:1005A000B09121038730904BA740B04BB9F4109223 +:1005B0001E0310921F03109220031092210314BEF9 +:1005C00084B7877F84BF88E10FB6F894809360007A +:1005D000109260000FBEE0E0F8E3099511E0A0E0A2 +:1005E000B1E0E6E2FAE502C005900D92A03CB10749 +:1005F000D9F713E0A0ECB1E001C01D92AE31B10714 +:10060000E1F70E94F8110C94112D0C94000008954C +:10061000089581E0089508950C9408030C9409034B +:100620000C940B030E94DB2823E030E0281B3109E7 +:10063000220F2093C4010895282F2F9880918000C5 +:10064000211108C0877F8093800010928D00109246 +:100650008C001BC0886080938000233019F48FEFDA +:100660009FEF0FC083E090E0821B9109880F991FD4 +:100670002FEF3FEFA90102C0569547958A95E2F703 +:10068000CA0190938D0080938C000C9412030E94F9 +:10069000120384E08093C3011092C0010895279A49 +:1006A0002F988FEF9FEF90938700809386008AE0CA +:1006B0008093800089E1809381000E9444280C94FB +:1006C00047030E944F036E9A769A0C9407031F9279 +:1006D0000F920FB60F9211242F933F938F939F93F6 +:1006E000EF93FF93E091C101F091C201CF01019618 +:1006F0009093C2018093C1010090C30102C0F6959E +:10070000E7950A94E2F7EF738091C001823019F403 +:10071000E03251F404C0813039F4EF3329F4809190 +:100720006F008D7F80936F00F0E0E457FE4FE491FF +:1007300021E031E0E29FC001E39F900D1124009081 +:10074000C40102C0969587950A94E2F790938D00B4 +:1007500080938C00FF91EF919F918F913F912F910A +:100760000F900FBE0F901F90189561110DC0FC01E6 +:100770008281882331F085EE0E9471180E949B28A7 +:1007800003C085EE0E94391980E090E0089581E071 +:1007900008950C94C70308950C9461038091150289 +:1007A000882309F448C08091D1019091D20100972B +:1007B00079F40E9418239093D2018093D101809103 +:1007C000D30190E0009771F48091D40190E00AC0C9 +:1007D0000E9424232091000130910101281739073C +:1007E00040F329C00197880F991F880F991FFC01BA +:1007F000EB52FE4F60817181828193810E948D0A4C +:10080000E091D30184E0E89FF0011124EB52FE4F08 +:1008100060817181828193814FE050E00E94450E9A +:100820008091D30190E001966091D40170E00E9424 +:10083000C12C8093D3010C940C03109217020C94DA +:100840005A0A0895089581E0809317020C942204B7 +:10085000089508958F929F92AF92BF92EF92FF9268 +:100860000F931F93CF93DF93CDB7DEB7A3970FB648 +:10087000F894DEBF0FBECDBF7C01FC010081118169 +:10088000C8010E941521B8010E942C068C01B701F5 +:100890000E94C903882309F4CCC10032F0E51F0788 +:1008A00041F4F7018281882309F458C00E94A90EFF +:1008B000C0C10132F0E51F0741F4F70182818823AE +:1008C00009F44CC00E94B20EB4C10232F0E51F0719 +:1008D00051F4F7018281882309F440C00E94A50EDB +:1008E0008111F0CFE3CF0332F0E51F0739F4F701B0 +:1008F0008281882399F10E9423049BC10432F0E590 +:100900001F0739F4F7018281882341F10E941D04F9 +:1009100090C10532F0E51F0749F4F7018281882371 +:10092000E9F0809117028111F1CFE5CF0632F0E5B1 +:100930001F0739F4F7018281882381F00E94B90EE4 +:100940000AC00732F0E51F0749F4F70182818823C6 +:1009500029F00E94C40E0E9429046BC180911702E5 +:10096000811105C0F70182818111CFC018C1003EFD +:10097000110579F4F7018281882309F44DC00E94A2 +:100980005A0A81E080931602109215021092D40147 +:1009900050C1023E110559F4F70182818823E1F12B +:1009A0000E945A0A109216021092150242C1033E8A +:1009B000110591F4F7018281882371F10E945A0A8E +:1009C0001092160281E0809315021092D3011092CA +:1009D000D2011092D1012DC10235110559F4F70150 +:1009E0008281882309F425C1809100019091010141 +:1009F0000A970DC00135110579F4F701828188232A +:100A000009F417C180910001909101010A96909319 +:100A10000101809300010DC14091040183E2EFE1E7 +:100A2000F1E0DE01119601900D928A95E1F7F70150 +:100A3000808121E030E02C0F3D1F280F311DC901BE +:100A40002091020130910301FC01E20FF31F60814C +:100A5000772767FD7095640F711D882777FD809556 +:100A6000982F0E94E32920E030E040E451E40E9406 +:100A700048294B015C01F701218184E090E0821B51 +:100A80009109BC01882777FD8095982F0E94E32962 +:100A90009B01AC01C501B4010E94E0289B01AC019F +:100AA00060E070E080E090E40E94562B20E030E0AF +:100AB0004CED50E40E94F32A4B015C01F701828166 +:100AC0008823D1F04FE050E0C501B4010E94450EEB +:100AD000809116028823A1F08091D40124E0829FA6 +:100AE000F0011124EB52FE4F80829182A282B382E8 +:100AF0008F5F8093D40104C0C501B4010E948D0AA8 +:100B00000F3F110508F02ECF94C08091D0018111C4 +:100B10001FC0043130E5130709F051C00E94CB0318 +:100B200081E08093D0010E9418239093CF0180939D +:100B3000CE011092C7011092C9011092C801109203 +:100B4000CB011092CA011092CD011092CC0171C05C +:100B50008091CE019091CF010E942423883C910581 +:100B600070F48091C701E82FF0E0EE0FFF1FE8530B +:100B7000FE4F118300838F5F8093C7015AC00438F2 +:100B800080E5180721F00538104501F13AC0F7015A +:100B90008281882341F01092C50182E01EC0043892 +:100BA00030E5130759F58091C501811106C086E231 +:100BB0000E94711886E20E94391982E01CC0043834 +:100BC000F0E51F0741F305381045D9F4F70182819C +:100BD000882331F01092C60180E20E94881929C052 +:100BE0008091C601811106C087E20E94711887E2D8 +:100BF0000E94391980E20E948F191BC005381045E8 +:100C000029F381E08093C5018093C601C701A396B3 +:100C10000FB6F894DEBF0FBECDBFDF91CF911F910D +:100C20000F91FF90EF90BF90AF909F908F900C949A +:100C30000E0380E0A3960FB6F894DEBF0FBECDBFC3 +:100C4000DF91CF911F910F91FF90EF90BF90AF90E8 +:100C50009F908F90089508959CE0799FF001112452 +:100C600090E3899FE00DF11D1124E60FF11DEE0FB9 +:100C7000FF1FE453FE4F859194910895880F991FAB +:100C8000FC01E45BFF4F859194910895880F991FB3 +:100C9000FC01E453FE4F8591949108950F931F93A7 +:100CA000CF93DF93EC01811521E39207A0F5C115E5 +:100CB00080E3D80708F0D7C0C83ED105D8F4C03EBD +:100CC000D10508F007C2C83AD10578F4C53AD10574 +:100CD00008F06AC0C130D10509F463C008F4F7C157 +:100CE000C430D10508F0F6C1F2C1CB3BD10508F400 +:100CF00066C0EDC1C11590E2D90708F0AFC0C115BB +:100D000021E0D20708F0E6C1C03FD10508F4DFC1F9 +:100D10008E0110651FC2C03880E5D80700F5C037C6 +:100D200090E5D90708F0A3C0C11520E5D20709F462 +:100D3000ACC050F4CE01905480319F4008F0C7C140 +:100D4000DF708E01106A06C2C13080E5D80709F451 +:100D5000AEC0C43190E5D90708F4AFC0B8C1C338FC +:100D600020E5D20709F48EC050F4C13890E5D907C8 +:100D700009F482C008F083C000E011EDEBC1C0317E +:100D800081E5D80708F4A3C1C11597E5D90708F490 +:100D900036C1CE0190578115904108F098C1DF709F +:100DA00093C101E010E0D6C1C53AD10509F494C160 +:100DB000C63AD10509F093C102E810E4CBC1C83AA4 +:100DC000D10509F48FC1C93AD10509F48EC1CA3AD7 +:100DD000D10509F48DC1CB3AD10509F48CC1CC3AC7 +:100DE000D10509F48BC1CD3AD10509F48AC1C03BC4 +:100DF000D10509F489C1CE3AD10509F488C1CF3AA9 +:100E0000D10509F487C1C13BD10509F486C1C23BB4 +:100E1000D10509F485C1C33BD10509F484C1C43BA4 +:100E2000D10509F483C1C53BD10509F482C1C63B94 +:100E3000D10509F481C1C73BD10509F480C1C83B84 +:100E4000D10509F47FC1C93BD10509F47EC1CA3B74 +:100E5000D10509F47DC100E014E47CC1CE019F708E +:100E60000E94460678C1DD278E01106C73C1CF70D9 +:100E7000DD278E01146D6EC100E010ED6BC100E046 +:100E800012ED68C100E013ED65C10E941C1C0E94B8 +:100E90005A0A0E9421048FEF94E32CE08150904085 +:100EA0002040E1F700C000000E94732353C18091ED +:100EB000F20281608093F2024DC10E94D42381111D +:100EC00002C00E94B0230E94E72390E090931D038C +:100ED00080931C03C23080E5D80721F480911C0365 +:100EE000816086C0C43090E5D90721F480911C034D +:100EF00082607EC0C63020E5D20721F480911C03B9 +:100F0000846076C0C83080E5D80719F480911C034E +:100F100027C0CA3090E5D90721F480911C03806175 +:100F200067C0CC3020E5D20721F480911C03806299 +:100F30005FC0CE3080E5D80721F480911C03806427 +:100F400057C0C03190E5D90721F480911C03806817 +:100F50004FC0C23120E5D20729F480911C03846080 +:100F6000886046C0C33080E5D80721F480911C0317 +:100F70008E7F3EC0C53090E5D90721F480911C03D7 +:100F80008D7F36C0C73020E5D20721F480911C0345 +:100F90008B7F2EC0C93080E5D80719F480911C03DF +:100FA00026C0CB3090E5D90721F480911C038F7EB9 +:100FB0001FC0CD3020E5D20721F480911C038F7D26 +:100FC00017C0CF3080E5D80721F480911C038F7BB8 +:100FD0000FC0C13190E5D90721F480911C038F77B0 +:100FE00007C0C331D04531F480911C038B7F877FCC +:100FF00080931C0380911C030E94EB23ABC08D2FB8 +:1010000099278F70992781309105D9F49E0123701B +:10101000332702C0880F991F2A95E2F79C688E013A +:1010200044E0000F111F4A95E1F700271370802B51 +:10103000912B53E0CC0FDD1F5A95E1F7C076DD27E9 +:101040002FC08230910531F4DC2FCC278E01016F47 +:10105000106A80C08330910569F4CE0183709927AE +:1010600001E010E002C0000F111F8A95E2F7C801ED +:101070009C680FC084309105B9F4CE018370992724 +:1010800001E010E002C0000F111F8A95E2F7C801CD +:101090009A6823E0CC0FDD1F2A95E1F7C07ED77058 +:1010A0008C010C2B1D2B56C08530910531F4DC2FA3 +:1010B000CC278E01046F106A4DC0069709F04AC014 +:1010C000CF71DD27DC2FCC278E01106243C000E0FA +:1010D00010E040C08E013EC001E810E43BC003E8D0 +:1010E00010E438C002EE14E435C009EE14E432C056 +:1010F0000AEE14E42FC005EB14E42CC006EB14E454 +:1011000029C007EB14E426C00CEC14E423C00DEC5A +:1011100014E420C003E815E41DC00AE815E41AC071 +:1011200002E915E417C004E915E414C001E216E46D +:1011300011C003E216E40EC004E216E40BC005E29F +:1011400016E408C006E216E405C007E216E402C091 +:101150000AE216E4C801DF91CF911F910F91089523 +:101160009CE0799FF001112490E3899FE00DF11D2F +:101170001124E60FF11DEE0FFF1FE453FE4F859182 +:101180009491803E9105E0F4803C910558F58133BF +:10119000910509F46FC048F48932910509F463C0E0 +:1011A0008A32910509F46DC072C089339105E9F066 +:1011B00082389105D1F08533910509F44DC067C09F +:1011C000833E910581F138F4803E9105B9F0823E6D +:1011D0009105D9F05CC0863E910561F1873E91058D +:1011E000A1F155C00E943E06089520911C0320FDE8 +:1011F00002C021FF4CC080EE90E049C080911C03EA +:1012000080FFF9CF89E390E042C080911C0382FF08 +:101210000EC080911C0384FF03C080E090E037C0C3 +:1012200083EE90E034C080911C0382FFF2CF82EE07 +:1012300090E02DC080911C0383FF0BC080911C03A4 +:1012400084FDEBCF87EE90E022C080911C0383FFEA +:10125000F5CF86EE90E01BC080911C0385FF07C090 +:1012600089E290E014C080911C0385FFF9CF85E3EB +:1012700090E00DC080911C0386FF07C08AE290E0D9 +:1012800006C080911C0386FFF9CF81E390E00E94A5 +:101290004E0608950C941003E82FF0E0E25BFE4F39 +:1012A0008081E82FEF70F0E082958F7021E030E0D0 +:1012B000A90102C0440F551F8A95E2F740A3089583 +:1012C0000F931F93CF93DF9385B7806885BF85B752 +:1012D000806885BFC3E0D0E001E010E0FE01E25B82 +:1012E000FE4F8081E82FEF70F0E021A182958F7092 +:1012F000A80102C0440F551F8A95E2F7CA01822B4C +:1013000081A38C2F0E944C09219740F78BE090E03D +:1013100061E070E0FC01EE5BFE4F2081E22FEF7098 +:10132000F0E042A122952F70DB0102C0AA0FBB1F83 +:101330002A95E2F79D01242B22A3019758F7DF910C +:10134000CF911F910F910C94CC03EF92FF920F93CA +:101350001F93CF93DF9300E212E0C3E0EE24E39407 +:10136000F12CD5E08C2F0E944C098BE090E040E0FE +:1013700050E0FC01EE5BFE4F6081E62FEF70F0E085 +:1013800020A130E062956F7002C0359527956A956F +:10139000E2F720FD09C09701082E02C0220F331F7B +:1013A0000A94E2F7422B532B019718F7F801929118 +:1013B00082918F018417950721F051834083D09348 +:1013C00005018C2F0E944C09C15060F680910501E7 +:1013D00087FD2CC08150809305018F3F39F08FE944 +:1013E0009FE00197F1F700C0000020C080911E022D +:1013F00090911F02909327028093260280911C02F5 +:1014000090911D02909325028093240280911A02EC +:1014100090911B02909323028093220280911802E4 +:101420009091190290932102809320020E94CE0392 +:1014300081E0DF91CF911F910F91FF90EF90089580 +:10144000E82FF0E0EE0FFF1FE05EFD4F80819181FD +:10145000089508950F931F93CF9308E212E0C0E020 +:10146000F801929182918F010E949022C80FF2E0C0 +:1014700000321F07A9F78C2FCF911F910F9108956C +:101480000E94D423811102C00E94B0230E94F9233C +:10149000809307033E9A809171008D7F8093710045 +:1014A00082E0809390008AE18093910081E08093B4 +:1014B0002A02089580912A02811102C00E94400AE6 +:1014C00010927A0210927902809171008D7F809340 +:1014D0007100809190008F738093900010923C0275 +:1014E00010923B02109273021092740210927502D5 +:1014F000109276021092720210927102E1E5F2E00F +:10150000A1E4B2E011921192119211921D921D92DA +:1015100082E0E137F807B1F70895CF92DF92EF92BA +:10152000FF920F931F93CF93DF9320913B022223CF +:1015300009F484C06B017C0180912A02811102C0F0 +:101540000E94400A01E712E0C7E0D0E0A70196013F +:10155000F80192918291729162918F010E944429C7 +:10156000811131C0FE01EE0FFF1FEE0FFF1FEF5A7A +:10157000FD4F1082118212821382DE01AA0FBB1F5F +:10158000AF5BBD4F11961C921E92C730D105E9F09A +:10159000219644815581668177814083518362839E +:1015A0007383148215821682178212968D919C91F4 +:1015B000139711969C938E9313961C921E921297DA +:1015C00034961296E2CF219708F680917902909195 +:1015D0007A02019797FD05C090937A028093790271 +:1015E00004C010927A02109279028091790290914F +:1015F0007A0220917702309178022817390724F077 +:101600001092780210927702892BC1F480917100B8 +:101610008D7F80937100809190008F7380939000F4 +:101620001092730210927402109275021092760258 +:10163000109272021092710210923B02DF91CF91D0 +:101640001F910F91FF90EF90DF90CF9008951F9220 +:101650000F920FB60F9211244F925F926F927F926A +:101660008F929F92AF92BF92CF92DF92EF92FF92B2 +:101670002F933F934F935F936F937F938F939F939A +:10168000AF93BF93CF93DF93EF93FF9380913B0290 +:10169000882309F49BC1C0917902D0917A021C166B +:1016A0001D060CF093C140902B0250902C026090CC +:1016B0002D0270902E0220E030E0A901C301B2019A +:1016C0000E94EF2A18160CF065C0C130D10509F44C +:1016D00052C08091770290917802BE010E94C12C85 +:1016E0007C01909378028093770280903D029090E5 +:1016F0003E02A0903F02B090400220E030E040E87F +:101700005FE3C501B4010E94E02860933D0270933D +:101710003E0280933F0290934002F701EE0FFF1FBD +:10172000EE0FFF1FEF5AFD4FA301920160817181FF +:10173000828193810E94482920E030E040E05EE30E +:101740000E94F32A9B01AC01C501B4010E94EF2A5B +:1017500018168CF4C7010196BE010E94C12C90930B +:1017600078028093770210923D0210923E0210920E +:101770003F0210924002E0917702F0917802EE0F62 +:10178000FF1FEE0FFF1FEF5AFD4F608171818281B5 +:101790009381D0C0C0907302D0907402E090750223 +:1017A000F090760220E030E0A901C701B6010E9466 +:1017B00044292197882309F4A2C0FE01EE0FFF1FE0 +:1017C000EE0FFF1FEF5AFD4F80809180A280B38003 +:1017D000A5019401C701B6010E94442987FF31C0C9 +:1017E000A501940160E070E08CED93EC0E94482923 +:1017F00020E030E040E451E40E94482920E030E05D +:1018000040E05FE30E94F32A9B01AC0160E070E0DE +:1018100080E090E40E94562B9B01AC01C501B4010D +:101820000E94F32A9B01AC01C701B6010E94442922 +:1018300087FF07C0A701960160E070E08CED93E49C +:1018400039C0A5019401C701B6010E94EF2A1816FC +:101850000CF055C0A501940160E070E08CED93E4BC +:101860000E94482920E030E040E451E40E944829E9 +:1018700020E030E040E05FE30E94F32A9B01AC01EE +:1018800060E070E080E090E40E94562B9B01AC0188 +:10189000C501B4010E94F32A9B01AC01C701B60146 +:1018A0000E94EF2A18165CF5A701960160E070E02F +:1018B0008CED93EC0E94482920E030E040E451E4B4 +:1018C0000E94482920E030E040E05FE30E94F32AD4 +:1018D0009B01AC0160E070E080E090E40E94562B38 +:1018E0009B01AC01C701B6010E94F32A6093730209 +:1018F00070937402809375029093760213C0FE0178 +:10190000EE0FFF1FEE0FFF1FEF5AFD4F80819181F9 +:10191000A281B3818093730290937402A0937502A5 +:10192000B093760260917302709174028091750297 +:101930009091760220912802309129022F3F4FEF9B +:10194000340731F02F5F3F4F309329022093280254 +:101950000E94CF0E6B017C0120E034E244EF51E4A1 +:101960000E94442987FF08C086EFC82E88E2D82E3F +:1019700084EFE82E81E4F82E20E030E040E051E4EE +:10198000C701B6010E94F32A9B01AC0160E074E23A +:1019900084E79BE40E9448296B017C010E94B529E1 +:1019A0007093970060939600209106013091070193 +:1019B0004091080150910901C701B6010E94F32A24 +:1019C0000E94B529709399006093980080913C0221 +:1019D000882309F433C1C0903702D0903802E090D8 +:1019E0003902F0903A0220E030E0A901C701B601C7 +:1019F0000E94EF2A1816D4F58091280290912902AE +:101A00008F3F2FEF920729F0019690932902809340 +:101A10002802C701B6010E94CF0E20E030E040E06E +:101A200051E40E94F32A9B01AC0160E074E284E778 +:101A30009BE40E9448296B017C010E94B5297093A8 +:101A40009700609396002091060130910701409124 +:101A5000080150910901C701B6010E94F32A0E94B2 +:101A6000B529709399006093980008C01092970070 +:101A70001092960010929900109298006091310295 +:101A8000709132026F5F7F4F709332026093310228 +:101A9000209196003091970080E090E0232BF1F0A8 +:101AA000C0919600D09197000E94E1296B017C01C2 +:101AB000BE0180E090E00E94E1299B01AC016091B1 +:101AC00033027091340280913502909136020E9467 +:101AD000482920E03FEF4FE757E410C00E94E1297A +:101AE0006B017C0120E030EE4FEF54E46091330253 +:101AF0007091340280913502909136020E94F32A4F +:101B00009B01AC01C701B6010E94EF2A87FD96C078 +:101B100080912F028F5F80932F0290E0209103032A +:101B20003091040382179307A0F080910E0388235D +:101B300019F010922F020DC0809171008D7F80935B +:101B40007100809190008F738093900010923C02FE +:101B50007DC080913002C0912F02811128C0C090B9 +:101B60000803D0900903E0900A03F0900B0320E0F3 +:101B700030E0A901C701B6010E94EF2A1816BCF493 +:101B800081E0809330021092370210923802109256 +:101B9000390210923A02C0923302D0923402E0929B +:101BA0003502F0923602C150C0932F0243C010920A +:101BB00030021092290210922802E0910503F09160 +:101BC000060348E0C49FE00DF11D1124808191813E +:101BD000A281B3818093370290933802A093390297 +:101BE000B0933A0220E030E040E85EE36481758122 +:101BF000868197810E94F32A6B017C0180910A0102 +:101C0000682F70E080E090E00E94E12920E030E061 +:101C100048EC52E40E9448299B01AC01C701B6017F +:101C20000E94F32A6093330270933402809335024A +:101C30009093360210923202109231028091070383 +:101C400080FD04C010923C0210923B02FF91EF9184 +:101C5000DF91CF91BF91AF919F918F917F916F91C4 +:101C60005F914F913F912F91FF90EF90DF90CF9038 +:101C7000BF90AF909F908F907F906F905F904F90AC +:101C80000F900FBE0F901F901895CF92DF92EF929A +:101C9000FF92CF93DF936B017C01EA0180912A02CE +:101CA000811102C00E94400A8091070380FF46C054 +:101CB0008091790290917A0208970CF03FC0809150 +:101CC00071008D7F8093710080913C0281110E9490 +:101CD0005A0A81E080933B02109229021092280256 +:101CE00020E030E0A901C701B6010E94EF2A1816D2 +:101CF000DCF48091790290917A02FC01EE0FFF1FD3 +:101D0000EE0FFF1FEF5AFD4FC082D182E282F382B5 +:101D1000FC01EE0FFF1FEF5BFD4FD183C0830196E7 +:101D200090937A028093790280917100826080930F +:101D3000710080919000806880939000DF91CF9136 +:101D4000FF90EF90DF90CF9008958091070381700E +:101D50000895809107038160809307030E94FD230B +:101D60000C942804809107038E7F809307030C94C2 +:101D7000FD2380917B0290E0019666E070E00E9476 +:101D8000C12C80937B02089580917B0290E00197A3 +:101D900066E070E00E94C12C80937B0208958F92D0 +:101DA0009F92AF92BF92CF92DF92EF92FF920F93EA +:101DB0001F93CF93DF936B017C01C0912802D091D8 +:101DC0002902BE0180E090E00E94E1294B015C0104 +:101DD000A701960160E070E08CE594E40E94482938 +:101DE0009B01AC01C501B4010E94F32A0E94B529F0 +:101DF00020917B02233009F473C028F4222351F090 +:101E00002130E9F02CC1243009F4A0C0253009F4B8 +:101E1000E0C025C180E090E0A0E0BFE38093060130 +:101E200090930701A0930801B093090110922B022F +:101E300010922C0210922D0210922E0210C11092BC +:101E40002B0210922C0210922D0210922E0264315D +:101E5000710540F46A30710560F520E030E040E83B +:101E60005EE32BC0693C710508F0AAC080E090E0F9 +:101E70000E94E12920E030E040EA51E40E94DF289E +:101E800020E030E044E353E40E9448299B01AC0188 +:101E90000E94F32A20E030E040E05EE30E94F32A53 +:101EA0009B01AC0160E070E080E09EE30E94DF28CF +:101EB00044C020E030E040E05FE3C701B6010E948B +:101EC000F32A6B017C0180E090E0A0E0BEE3809308 +:101ED000060190930701A0930801B0930901BFC0C8 +:101EE00010922B0210922C0210922D0210922E02B0 +:101EF0004AE0469F9001479F300D1124C90168EBCD +:101F00007BE00E94AD2CBC016C5D754077FF03C087 +:101F1000719561957109882777FD8095982F0E94AA +:101F2000E3292EE333EC4EE259E30E94F32A20E04A +:101F300030E040EC5EE30E94E0286093060170937D +:101F40000701809308019093090189C010922B0228 +:101F500010922C0210922D0210922E02CE0183704C +:101F60009927892BE1F0BE016170772780E090E02E +:101F70000E94E12920E030E040E05EE30E94F32A85 +:101F800020E030E040E45FE30E94E0286093060137 +:101F90007093070180930801909309010CC080E0C1 +:101FA00090E0A0E0BFE38093060190930701A09327 +:101FB0000801B0930901C770DD27CD2B09F04FC090 +:101FC0001092060110920701109208011092090167 +:101FD00046C010922B0210922C0210922D021092E9 +:101FE0002E0200E010E020E03FE300930601109392 +:101FF000070120930801309309016739710578F1D1 +:1020000080E090E00E94E12920E030E047E153E4E5 +:102010000E94DF2820E030E04AE754E40E9448298B +:1020200020E030E048E452E40E94F32A20E030E06F +:1020300040EA51E40E94252A0E94B029660F771FCA +:10204000660F771FFB01EE5AFE4F208131814281DE +:102050005381C701B6010E94F32A6B017C01C701BD +:10206000B601DF91CF911F910F91FF90EF90DF901C +:10207000CF90BF90AF909F908F90089580918C02E9 +:102080000895CF93DF9300D01F92CDB7DEB79C01A8 +:1020900080911303843019F593E099833B832A835D +:1020A0009093E9008FEF9091E800815095FD06C074 +:1020B00095ED9A95F1F700008111F5CF8091E80038 +:1020C00085FF0DC040E050E063E070E0CE01019676 +:1020D0000E94A2128091E8008E778093E8000F9012 +:1020E0000F900F90DF91CF910895CF93DF9300D0A1 +:1020F0001F92CDB7DEB720911303243021F522E0E3 +:1021000029839B838A8383E08093E9008FEF9091FA +:10211000E800815095FD06C095ED9A95F1F7000015 +:102120008111F5CF8091E80085FF0DC040E050E0BF +:1021300063E070E0CE0101960E94A2128091E80057 +:102140008E778093E8000F900F900F90DF91CF91E2 +:102150000895209113032430F1F422E02093E90044 +:102160002FEF3091E800215035FD06C035ED3A954E +:10217000F1F700002111F5CF2091E80025FF0BC0F9 +:1021800040E050E065E070E00E94A2128091E8001B +:102190008E778093E8000895CF93DF93EC019091C0 +:1021A0001303943009F046C0809115018823D9F0BB +:1021B000809116018823B9F09093E9008FEF9091F8 +:1021C000E800815095FD06C095E19A95F1F7000071 +:1021D0008111F5CF8091E80085FF2CC040E050E0F0 +:1021E00060E170E017C081E08093E9008FEF90918B +:1021F000E800815095FD06C095ED9A95F1F7000035 +:102200008111F5CF8091E80085FF14C040E050E0D7 +:1022100068E070E0CE010E94A2128091E8008E7703 +:102220008093E80080E1FE01ACE7B2E001900D92FE +:102230008A95E1F7DF91CF91089580911203811182 +:1022400009C00E9437140E9494148091E2008460B7 +:102250008093E2000895109212030895089508955E +:102260000C94DB2242E061EC81E00E94B11342E079 +:1022700061EC82E00E94B11342E061EC83E00E94D5 +:10228000B11342E161EC84E00C94B1138091150329 +:10229000833009F455C030F4813071F0823009F494 +:1022A0008EC008958A3009F47AC08B3009F460C07A +:1022B000893009F09CC020C080911403813A09F054 +:1022C00096C08091E800877F8093E8008091180392 +:1022D00090911903892B21F460E18CE792E003C00F +:1022E00060E080E090E070E00E94ED128091E800F4 +:1022F0008B778093E800089580911403813209F070 +:1023000076C08091180390911903009719F00397F4 +:1023100009F06DC08091E800877F8093E80080918C +:10232000E80082FD05C0809113038111F8CF5FC0E2 +:102330008091F10080938C028091E8008B7753C0EC +:1023400080911403813A09F052C080911803909152 +:102350001903892B09F04BC08091E800877F809397 +:10236000E8008091E80080FFFCCF8091150136C025 +:10237000809114038132D9F580911803909119034B +:10238000892BA9F58091E800877F8093E8000E945F +:10239000E61380911603809315010C941C1C809108 +:1023A0001403813221F58091E800877F8093E80053 +:1023B0000E94E6138091170380938D020895809107 +:1023C0001403813AA1F48091E800877F8093E800AC +:1023D0008091E80080FFFCCF80918D028093F10016 +:1023E0008091E8008E778093E8000C94E6130895BE +:1023F00084B7877F84BF88E10FB6F894809360002C +:10240000109260000FBE90E080E80FB6F8948093C1 +:102410006100909361000FBE0E9489170E943714DB +:102420000E9494148091E20084608093E20078948A +:102430000E941A170E948B178BE091E00E943517BB +:1024400080911303853069F40E949C2280911103CE +:102450008823B1F30E94CA22882391F30E948C1230 +:10246000EFCF0E949317ECCF292F3327233031056C +:10247000C9F064F42130310581F02230310509F0D2 +:1024800043C08DE690E028E034E042C021323105BF +:10249000F1F02232310541F137C082E190E025E7C9 +:1024A00034E036C099278130910541F082309105A2 +:1024B00041F0892B49F5E4E0F4E005C0E6EDF3E0F6 +:1024C00002C0ECEAF3E0849190E09F0121C0643007 +:1024D000D8F4E62FF0E0EE0FFF1FE255FE4F20810B +:1024E000318189E090E014C0643070F470E0FB0149 +:1024F000EE0FFF1FEA55FE4F20813181FB01EE55A3 +:10250000FE4F808190E004C080E090E020E030E069 +:10251000FA0131832083089580E189BD82E189BD7C +:1025200009B400FEFDCF8091D8008F7D8093D80044 +:102530008091E00082608093E0008091E00081FD66 +:10254000FCCF0895CF92DF92EF92FF920F931F93EB +:10255000CF93DF93EC018B016A010E940514811176 +:1025600033C0C114D10439F0F60180819181081B78 +:10257000190BC80FD91FE12CF12C0115110519F108 +:102580008091E80085FD16C08091E8008E778093E9 +:10259000E800C114D10449F0F60180819181E80E70 +:1025A000F91EF182E08285E00FC00E9405148823A5 +:1025B00021F30AC089918093F10001501109FFEFC6 +:1025C000EF1AFF0ADACF80E0DF91CF911F910F91D0 +:1025D000FF90EF90DF90CF90089520911A033091F3 +:1025E0001B032617370748F06115710539F4209150 +:1025F000E8002E772093E80001C0B90140E06115A2 +:102600007105A9F120911303222309F443C0253059 +:1026100009F442C02091E80023FD40C02091E80069 +:1026200022FD32C02091E80020FFE9CF4091F30065 +:102630002091F20030E0342BFC01CF0161157105CF +:1026400059F02830310540F481918093F1006150B8 +:1026500071092F5F3F4FF1CF41E02830310509F07C +:1026600040E02091E8002E772093E800C8CF411188 +:10267000C9CF0AC080911303882361F0853061F0CF +:102680008091E80083FD0AC08091E80082FFF2CFCC +:1026900080E0089582E0089583E0089581E0089540 +:1026A00020911A0330911B032617370748F0611554 +:1026B000710539F42091E8002E772093E80001C0DD +:1026C000B901FC0120E06115710591F180911303BE +:1026D000882309F440C0853009F43FC08091E800A8 +:1026E00083FD3DC08091E80082FD2FC08091E8000D +:1026F00080FFE9CF2091F3008091F20090E0922BCF +:102700006115710559F08830910540F424912093AA +:10271000F1003196615071090196F2CF21E00897DE +:1027200009F020E08091E8008E778093E800CBCF1D +:102730002111CCCF0AC080911303882361F085302A +:1027400061F08091E80083FD0AC08091E80082FF7B +:10275000F2CF80E0089582E0089583E0089581E05B +:102760000895982F973058F59093E900981739F00D +:102770007091EC002091ED005091F00003C0242FE7 +:10278000762F50E021FF19C03091EB003E7F30934F +:10279000EB003091ED003D7F3093ED003091EB0088 +:1027A00031603093EB007093EC002093ED00509378 +:1027B000F0002091EE0027FF07C09F5FD3CF8F70FE +:1027C0008093E90081E0089580E0089580911403EA +:1027D00087FF11C08091E80082FD05C0809113033E +:1027E0008111F8CF11C08091E8008B770BC08091E8 +:1027F0001303882349F08091E80080FFF8CF80918F +:10280000E8008E778093E80008952091E4003091ED +:10281000E50095E64091EC00842F817040FF22C0D6 +:102820008091E80080FD1CC080911303882391F003 +:10283000853091F08091EB0085FD10C04091E4005F +:102840005091E5004217530729F39A01915011F76F +:1028500084E0089582E0089583E0089581E008957A +:1028600080E008954091E80042FFDECF08950E9485 +:10287000A5140E94AD14E0EEF0E0808181608083B9 +:10288000E8EDF0E080818F77808319BCA7EDB0E0A0 +:102890008C918E7F8C9380818F7E80831092120327 +:1028A00008950F931F93CF93DF930E94A5140E9466 +:1028B000AD14C8EDD0E088818F77888388818068E7 +:1028C000888388818F7D888319BC109213031092AE +:1028D0000F03109211031092100300EE10E0F801A4 +:1028E00080818B7F808388818160888342E060E083 +:1028F00080E00E94B113E1EEF0E080818E7F808362 +:10290000E2EEF0E080818160808380818860808356 +:10291000F80180818E7F8083888180618883DF9148 +:10292000CF911F910F910895E8EDF0E080818F7EA7 +:102930008083E7EDF0E080818160808384E082BF66 +:1029400081E0809312030C945114E8EDF0E0808153 +:102950008E7F80831092E20008951092DA00109228 +:10296000E10008951F920F920FB60F9211242F933A +:102970003F934F935F936F937F938F939F93AF9307 +:10298000BF93EF93FF938091E10082FF0BC0809192 +:10299000E20082FF07C08091E1008B7F8093E1001D +:1029A0000E9419178091DA0080FF1FC08091D80023 +:1029B00080FF1BC08091DA008E7F8093DA008091C7 +:1029C000D90080FF0DC080E189BD82E189BD09B4D5 +:1029D00000FEFDCF81E0809313030E941D1105C00E +:1029E00019BC109213030E942B118091E10080FF0B +:1029F00019C08091E20080FF15C08091E2008E7FB7 +:102A00008093E2008091E20080618093E2008091F7 +:102A1000D80080628093D80019BC85E080931303AE +:102A20000E942F118091E10084FF30C08091E2006C +:102A300084FF2CC080E189BD82E189BD09B400FE1C +:102A4000FDCF8091D8008F7D8093D8008091E100E8 +:102A50008F7E8093E1008091E2008F7E8093E20080 +:102A60008091E20081608093E20080910F038823CF +:102A700011F084E007C08091E30087FD02C081E08F +:102A800001C083E0809313030E9430118091E10024 +:102A900083FF29C08091E20083FF25C08091E1007F +:102AA000877F8093E10082E08093130310920F03ED +:102AB0008091E1008E7F8093E1008091E2008E7F23 +:102AC0008093E2008091E20080618093E20042E026 +:102AD00060E080E00E94B1138091F00088608093F4 +:102AE000F0000E942E11FF91EF91BF91AF919F9145 +:102AF0008F917F916F915F914F913F912F910F90A7 +:102B00000FBE0F901F9018951F920F920FB60F9245 +:102B100011242F933F934F935F936F937F938F93E2 +:102B20009F93AF93BF93CF93DF93EF93FF93C091A6 +:102B3000E900CF708091EC00D82FD17080FDD0E8F3 +:102B40001092E9008091F000877F8093F0007894E4 +:102B50000E94C8151092E9008091F000886080936F +:102B6000F000CD2BCF70C093E900FF91EF91DF9182 +:102B7000CF91BF91AF919F918F917F916F915F9115 +:102B80004F913F912F910F900FBE0F901F9018956E +:102B90001F93CF93DF93CDB7DEB7AA970FB6F89404 +:102BA000DEBF0FBECDBFE4E1F3E088E08E0F909171 +:102BB000F10091938E13FBCF0E9446118091E800A3 +:102BC00083FF1FC18091140390911503492F50E09A +:102BD0004A30510508F015C1FA01EA5AFF4F0C942A +:102BE000D52C803881F0823809F00BC18091180310 +:102BF0008F708093E9008091EB0085FB882780F936 +:102C00001092E90006C08091100390911103911178 +:102C100082609091E800977F9093E8008093F100A4 +:102C20001092F100C8C0282F2D7F09F0EAC0882338 +:102C300019F0823061F0E5C080911603813009F00F +:102C4000E0C0933009F080E0809311032BC08091A5 +:102C50001603811127C0809118038F7009F4D1C029 +:102C60008093E9002091EB0020FF1CC0933021F4F9 +:102C70008091EB00806214C09091EB009061909382 +:102C8000EB0021E030E0A90102C0440F551F8A95F6 +:102C9000E2F74093EA001092EA008091EB0088602E +:102CA0008093EB001092E9008091E800877F86C056 +:102CB0008111A7C0109116031F778091E3008078DF +:102CC000812B8093E3008091E800877F8093E80068 +:102CD0000E94E6138091E80080FFFCCF8091E30022 +:102CE00080688093E300111102C082E001C083E09C +:102CF0008093130386C08058823008F082C0809190 +:102D00001603909117038C3D53E0950779F583E006 +:102D10008A838AE289834FB7F894DE01139620E014 +:102D20003EE051E2E32FF0E050935700E49120FFA2 +:102D300003C0E295EF703F5FEF708E2F90E0EA30B6 +:102D400010F0C79601C0C0968D939D932F5F2431DC +:102D500049F74FBF8091E800877F8093E8006AE2DF +:102D600070E0CE0101960E94ED1214C0AE014F5FDB +:102D70005F4F609118030E943412BC01009709F460 +:102D800040C09091E800977F9093E80089819A81F4 +:102D90000E9450138091E8008B778093E80031C047 +:102DA000803879F58091E800877F8093E8008091F2 +:102DB0000F038093F1008091E8008E778093E80004 +:102DC0000E94E6131EC081111CC090911603923020 +:102DD000C0F48091E800877F8093E80090930F0310 +:102DE0000E94E61380910F03811106C08091E300D9 +:102DF00087FD02C081E001C084E0809313030E943C +:102E000032118091E80083FF0AC08091E800877F3B +:102E10008093E8008091EB0080628093EB00AA969B +:102E20000FB6F894DEBF0FBECDBFDF91CF911F91DB +:102E300008950895CF93809113038823A1F0C09142 +:102E4000E900CF709091EC00892F817090FD80E8AF +:102E5000C82B1092E9008091E80083FD0E94C815FC +:102E6000CF70C093E900CF9108959093930280931F +:102E700092020895E0919202F0919302309721F02E +:102E80000190F081E02D099480E00895E091920294 +:102E9000F0919302309721F00280F381E02D0994A4 +:102EA0000895E0919202F0919302309721F004800E +:102EB000F581E02D099408952091900230919102BE +:102EC0008217930771F09093910280939002E091A2 +:102ED0009202F0919302309721F00680F781E02D65 +:102EE0000994089520918E0230918F0282179307E2 +:102EF00071F090938F0280938E02E0919202F09194 +:102F00009302309721F00084F185E02D0994089513 +:102F100008950C9488170E940F230E9460090E9454 +:102F200095230C9444285F926F927F928F929F9288 +:102F3000AF92BF92CF92DF92EF92FF920F931F93C7 +:102F4000CF93DF9300D000D01F92CDB7DEB70E94A1 +:102F5000A5099DE9C92E92E0D92E03E010E0AA242C +:102F6000A394B12C502E802F0E94200A4C01F60110 +:102F7000729062906F016826792661147104A1F441 +:102F80000150110978F78FEF89838A831B820E9491 +:102F900018238160782F9D838C8349815A816B81AE +:102FA0008D810E94431838C08091F20281FD0E94F9 +:102FB000290A2BE030E07501022E02C0EE0CFF1C46 +:102FC0000A94E2F7C70186219721892B09F1298309 +:102FD0005A828E209F2091E0892809F490E09B83FB +:102FE0000E9418238160782F9D838C8349815A81A8 +:102FF0006B818D810E944318000F111FF801EB5661 +:10300000FD4F80819181E826F926F182E08204C09B +:103010002150310980F6B4CF0E947C251091940292 +:103020000E943A171817D1F00E943A178093940221 +:103030000F900F900F900F900F90DF91CF911F91F5 +:103040000F91FF90EF90DF90CF90BF90AF909F9047 +:103050008F907F906F905F900C944A090F900F9023 +:103060000F900F900F90DF91CF911F910F91FF90D4 +:10307000EF90DF90CF90BF90AF909F908F907F9018 +:103080006F905F900895CF93DF93CDB7DEB72B9706 +:103090000FB6F894DEBF0FBECDBF4F835887698748 +:1030A0007A878B87DE01119686E0FD0111928A9561 +:1030B000E9F785E0FE01379601900D928A95E1F7D8 +:1030C00049815A816B817C818D819E810E94BA1ECB +:1030D0002B960FB6F894DEBF0FBECDBFDF91CF9118 +:1030E0000895CF93882309F4C2C0C82F823859F4B9 +:1030F0000E943A1781FDBBC089E30E9494210E947F +:10310000612289E30CC0833879F40E943A1780FD6C +:10311000AEC083E50E9494210E94612283E50E9453 +:10312000D621CF910C946122843859F40E943A1729 +:1031300082FD9DC087E40E9494210E94612287E461 +:10314000EECF8CEF8C0F813A48F48C2F0E94AC2785 +:1031500081118DC08C2F0E949421E3CF80E28C0FCF +:10316000883048F4C77081E001C0880FCA95EAF73B +:103170000E941A22D6CF8BE58C0F833078F4C53AA3 +:1031800029F0C63A31F083E890E005C081E890E08C +:1031900002C082E890E0CF910C945C1788E58C0F18 +:1031A000833108F064C0C83A39F1C93A41F1CA3AEA +:1031B00049F1CB3A51F1CC3A59F1CD3A61F1C03BEA +:1031C00069F1CE3A71F1CF3A79F1C13B81F1C23B5D +:1031D00089F1C33B91F1C43B99F1C53BA1F1C63BD9 +:1031E000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B39 +:1031F000C9F180E090E038C082EE90E035C089EE01 +:1032000090E032C08AEE90E02FC085EB90E02CC0B9 +:1032100086EB90E029C087EB90E026C08CEC90E034 +:1032200023C08DEC90E020C083E891E01DC08AE8C7 +:1032300091E01AC082E991E017C084E991E014C0DE +:1032400081E292E011C083E292E00EC084E292E05B +:103250000BC085E292E008C086E292E005C087E2FA +:1032600092E002C08AE292E0CF910C947217CF9163 +:103270000895882309F44BC0823859F40E943A1704 +:1032800081FF45C089E30E9494210E94612289E365 +:103290000CC0833871F40E943A1780FF38C083E570 +:1032A0000E9494210E94612283E50E94D6210C9401 +:1032B0006122843859F40E943A1782FF28C087E4BB +:1032C0000E9494210E94612287E4EFCF9CEF980F27 +:1032D000913A58F390E2980F983050F4877091E04B +:1032E00001C0990F8A95EAF7892F0E942022DFCF2B +:1032F0009BE5980F933020F480E090E00C945C17ED +:10330000885A833120F480E090E00C94721708957D +:10331000882321F00E941A220C94612208958823A8 +:1033200021F00E9420220C94612208957F928F92B6 +:103330009F92AF92BF92CF92DF92EF92FF920F9344 +:103340001F93CF93DF931F92CDB7DEB77C01C62EBC +:10335000772EFC01058102950F70128111110E94D8 +:1033600037220E948D21882379F0112369F080E2B1 +:103370008C0D883048F082E00E9476210E948D21D9 +:1033800091E0D82ED92601C0D12CE72DE295EF701F +:10339000F0E0E05AFF4F0C94D52C872D807F072D4D +:1033A0000F70882311F00295007F112389F000230C +:1033B00009F499C180E28C0D883020F4802F0E949E +:1033C0001A2203C0802F0E942A220E9461228BC1F0 +:1033D0008C2D0E943919002309F4C3C180E28C0DA1 +:1033E000883020F4802F0E94202203C0802F0E946A +:1033F00030220E946122B5C1872D807F972D9F705A +:10340000803211F4892F03C0892F8295807FCC20D0 +:1034100021F0F1E0CF16A1F01DC0112339F00023F7 +:1034200019F1013009F50E944A229BC1002319F0CD +:10343000013009F496C189830E944D22898110C10F +:10344000112321F0063008F08CC10EC0053008F0C1 +:1034500088C106C1112359F0002331F0F70195818D +:1034600090FF41C19F7095830E9488197AC1002303 +:1034700009F4F6C03EC1872D86958695837090E04D +:10348000009719F0019761F06CC1112321F08C2D88 +:10349000972D937002C080E090E00E945C1761C19C +:1034A000112321F08C2D972D937002C080E090E0C5 +:1034B0000E94721756C18C2D112319F00E9484248A +:1034C00002C00E94EC240E9471254BC1872D83709D +:1034D00009F052C0111145C18C2D829586958770D7 +:1034E000880F880F9C2D9F70892E912CA12CB12CB8 +:1034F000082E04C0880C991CAA1CBB1C0A94D2F785 +:10350000C4FE14C00FE010E020E030E0B901A801D3 +:1035100004C0440F551F661F771F8A95D2F7CB0151 +:10352000BA01609570958095909503C060E070E059 +:10353000CB01272D26952695237030E022303105CA +:1035400069F02330310589F0682979298A299B2976 +:103550002130310571F00E94022003C168297929C8 +:103560008A299B290E941E20FCC00E940220C501BE +:10357000B4010E94E61FF5C0112319F0872D817058 +:1035800001C08695882309F4ECC08C2D8295869520 +:103590008770880F880F9C2D9F70892E912CA12CED +:1035A000B12C082E04C0880C991CAA1CBB1C0A94C0 +:1035B000D2F7C4FE14C00FE010E020E030E0B90103 +:1035C000A80104C0440F551F661F771F8A95D2F7C4 +:1035D000CB01BA01609570958095909503C060E02D +:1035E00070E0CB01272D269526952370422F50E0C1 +:1035F0004230510569F04330510589F06829792935 +:103600008A299B294130510571F00E94DC20A9C014 +:10361000682979298A299B290E94F820A2C00E9442 +:10362000DC20C501B4010E94C0209BC08C2D90E01D +:10363000FC01E05EF109E531F10508F050C0E05908 +:10364000FF4F0C94D52C0C2D0F70872D8F711123EB +:1036500021F00E945920802F07CF0E947A20802FCE +:103660000E948F197EC0112341F0053008F079C007 +:10367000872D8F710E949F2074C0063008F071C0A2 +:10368000F7CF112339F0872D8F710E94592069C01F +:103690001123C9F3872D8F710E947A2062C01123F4 +:1036A00029F0872D8F710E9444205BC00E943A2030 +:1036B00058C0112351F0172D1F71812F0E945920DE +:1036C00063E0812F0E946D214CC081E00E94762131 +:1036D000023008F446C082E00E94762142C01123E5 +:1036E00031F0002381F28C2D0E9471183AC0002322 +:1036F00089F28C2D0E94391934C0472D4F706C2DE2 +:10370000C7010E94B5030E945E1F2BC0111129C082 +:10371000472D4F7050E042305105B9F04CF441153F +:10372000510581F041305105E1F40E946C2819C027 +:103730004330510569F04430510599F48C2D0E94B5 +:10374000BE280FC00E9455280CC00E94882809C0BE +:103750000E949B2806C0472D4F706C2DC7010E9408 +:103760002B06DD20F9F00E94692180FD1BC0F701C6 +:1037700012820E9463210E945920C7010E94E11B0E +:103780000E9463210F90DF91CF911F910F91FF90C5 +:10379000EF90DF90CF90BF90AF909F908F907F90F1 +:1037A0000C947A200F90DF91CF911F910F91FF9091 +:1037B000EF90DF90CF90BF90AF909F908F907F90D1 +:1037C00008950F931F93CF93DF93EC018881998124 +:1037D0002B813C81232BB9F09F3F11F48F3F99F04F +:1037E000CE010E942A04882371F0688179818A8140 +:1037F0000E945F218C010E9414210E94DB1FB801EE +:10380000CE010E949619DF91CF911F910F910895DB +:103810000E9437220E9447220E940C220E946122AD +:103820000E9422260E94712580E090E00E945C1791 +:1038300080E090E00C9472170E9427220C94081CE0 +:103840000E945421292F22952F7030E02C30310511 +:103850004CF42A3031056CF4225031092230310504 +:10386000A8F407C02C30310569F02F30310551F034 +:103870000DC0803F69F018F4803E40F409C0843FD9 +:1038800029F406C093FB882780F9089580E0089505 +:1038900081E00895CF93DF9300D000D01F92CDB781 +:1038A000DEB70F900F900F900F900F90DF91CF9198 +:1038B0000895CF93DF9300D000D000D0CDB7DEB70E +:1038C00026960FB6F894DEBF0FBECDBFDF91CF9125 +:1038D00008951F93CF93DF93C0919D0216E08091CE +:1038E0009E02C81799F0D0E01C9FF0011D9FF00DBB +:1038F0001124E156FD4F40815181628173818481A1 +:1039000095810E94591C2196C770E9CFDF91CF9114 +:103910001F9108954091CF025091D0026091D10241 +:103920007091D2028091D3029091D4020C94591CD0 +:103930008091D40282958F7009F054C08091D10299 +:10394000882309F44FC080919D02A0919E0260914E +:10395000CF027091D0024091D2025091D302B6E0D2 +:103960008A1709F43FC090E041155105C1F17F3F2E +:1039700011F46F3FA1F1B89FF001B99FF00D112430 +:10398000E156FD4F218172132AC02081621327C0A6 +:103990002281211124C0238134812417350710F49A +:1039A00021503109241B350B283C3105C0F42091EE +:1039B000D4022F7020612093D40226E0289FF001CA +:1039C000299FF00D1124EC55FD4F80818F7080618F +:1039D00080838FEC92E00E94E11B0C94691C01969D +:1039E0008770BECF0895CF92DF92EF92FF920F9330 +:1039F0001F93CF93DF93CDB7DEB762970FB6F894DE +:103A0000DEBF0FBECDBF8C0185E0F801DE011D9643 +:103A100001900D928A95E1F7D8014C9111965C9135 +:103A2000119712966C9112971396CD90DC90149783 +:103A30003091CF027091D0028091D2029091D30246 +:103A4000009709F46BC17F3F19F43F3F09F466C149 +:103A5000E090D102EE2009F4C0C02091D402C81633 +:103A6000D90628F0F601E81BF90BCF0104C08095B8 +:103A700090958C0D9D1DFF24F394883C910578F062 +:103A8000F12C207F09F0C6C07C2DD98AC88A89898B +:103A90000E944A1C8FEC92E00E94E11BB1C0822F71 +:103AA000807F09F046C0751314C0341312C0611131 +:103AB00010C02F7020612093D4020E948A1C8FECCA +:103AC00092E00E94E11B8091D402D80115968C935C +:103AD0002EC0CD2819F15F3F11F44F3FF9F0F62EBB +:103AE00061111CC080919D0220919E0236E08217D8 +:103AF00009F45AC090E0389FF001399FF00D11246D +:103B0000E156FD4F7181571306C07081471303C002 +:103B10007281711103C001968770E9CFF62E66237A +:103B200009F418C18091D40281608093D402F12CF1 +:103B300011C1751308C0341306C0611104C080910F +:103B4000D402D801C3C04D875E878D859E856A8B60 +:103B50000E94201C6A898823E1F16623D1F120911B +:103B6000D402822F82958F7090E0029774F080913A +:103B7000CF029091D00298878F831986DB86CA8600 +:103B80002C87CE0107960E94E11B86E0F801AFEC7E +:103B9000B2E001900D928A95E1F70E94981C0E9474 +:103BA0008A1CFF24F394D6C04D875E878D859E8541 +:103BB0000E945421292F22952F7030E022303105A8 +:103BC0000CF0BCC09F7009F0B6C0805E883008F46D +:103BD000C1C0C8010E94E11BE4CFC816D90608F491 +:103BE00053C0F601E81BF90BCF01883C910508F49E +:103BF00050C0F12C7C2DD98AC88A89890E944A1C20 +:103C0000EFECF2E086E0DF011D928A95E9F70E9471 +:103C10008A1CA0C0751314C0341312C0611110C0E7 +:103C20008091D402F8018583C8010E94E11B86E0DF +:103C3000EFECF2E0DF011D928A95E9F7FE2C8AC0D5 +:103C40004D875E878D859E856A8B0E94201C6A89C0 +:103C5000882309F4BECF662309F4BBCF2091D40298 +:103C6000822F82958F7090E002970CF48ECF809116 +:103C7000CF029091D0029A8389831B82DD82CC820D +:103C80002E83CE0101967FCF809590958C0D9D1D42 +:103C9000ACCFF62E662309F49CCF75132EC03413D7 +:103CA0002CC02091D40220FD1FC0822F82958F70DE +:103CB000D9F0D80115962C9315978F3049F08F5F66 +:103CC000982F9295907F822F8F70892B15968C93C9 +:103CD000C8010E94E11B86E0F801AFECB2E0019060 +:103CE0000D928A95E1F793CF86E0F801AFECB2E050 +:103CF00001900D928A95E1F72DC04D875E878D85E5 +:103D00009E850E94201C811140CF8091D402816049 +:103D10008093D402C8010E94E11B1CC0662309F4F1 +:103D200058CF4D875E878D859E850E94201C8823F5 +:103D300009F44FCF2ACF811148CF0CC02430310570 +:103D40000CF047CF9F7009F440CFF8019581907F28 +:103D500009F03BCF8F2D62960FB6F894DEBF0FBEF1 +:103D6000CDBFDF91CF911F910F91FF90EF90DF902A +:103D7000CF9008951F93CF93DF93CDB7DEB72C97E5 +:103D80000FB6F894DEBF0FBECDBF4F83588769874B +:103D90007A878B879C87CE0107960E94F31C882325 +:103DA00069F08F8198852A853B85232BF1F19F3F10 +:103DB00009F063C08F3F09F060C037C086E0FE01A4 +:103DC0003796DE01119601900D928A95E1F76F8189 +:103DD0007885EA85FB85309741F17F3F11F46F3F8D +:103DE00021F120919E0230E0C90101968770992748 +:103DF00040919D0250E08417950709F447C06983FC +:103E00007A83FD83EC8396E0929FD001939FB00D5F +:103E10001124A156BD4FFE01319601900D929A9545 +:103E2000E1F780939E020E94691C16E080919D023A +:103E300090919E028917C1F1189FC00111248156EB +:103E40009D4F0E94F31C882379F1E0919D021E9FF3 +:103E5000F0011124E156FD4F40815181628173814F +:103E6000848195810E94591C80919D0290E0019669 +:103E70008770992780939D02D9CF4F815885698596 +:103E80007A858B859C850E94591CCFCF0E941C1C73 +:103E900010929E0210929D02EFECF2E086E0DF01AC +:103EA0001D928A95E9F7C1CF2C960FB6F894DEBF24 +:103EB0000FBECDBFDF91CF911F910895EF92FF927A +:103EC0000F931F93CF93DF938C01009709F46CC07D +:103ED000F12CEE24E394E8012196F80184918437D3 +:103EE00040F4843008F051C0813081F0823019F103 +:103EF0005BC0853709F444C0A8F19CE7980F903760 +:103F000008F052C08F770E94391941C00E5F1F4FD1 +:103F1000FE01C49180E28C0F883048F4C7708E2D6A +:103F200001C0880FCA95EAF70E943A2214C08C2F6C +:103F30000E9471182DC00E5F1F4FFE01C49180E2D8 +:103F40008C0F883058F4C7708E2D01C0880FCA9529 +:103F5000EAF70E9440220E9461221AC08C2F0E9420 +:103F6000391916C00E5F1F4FFE01C491CC2381F09A +:103F70008FE99FE00197F1F700C00000C150F6CF34 +:103F80000E5F1F4FFE01F49003C00E9471188E0156 +:103F90008F2D882309F49FCFEFE9FFE03197F1F7E8 +:103FA00000C000008150F5CFDF91CF911F910F919C +:103FB000FF90EF90089508956093D9027093DA020C +:103FC0008093DB029093DC020C94081C0F931F93E8 +:103FD0000091D9021091DA022091DB023091DC02CB +:103FE000DC01CB01802B912BA22BB32B8093D90228 +:103FF0009093DA02A093DB02B093DC021F910F9141 +:104000000C94081C0F931F930091D9021091DA02AF +:104010002091DB023091DC02DC01CB018023912373 +:10402000A223B3238093D9029093DA02A093DB02F8 +:10403000B093DC021F910F910C94081C0F931F93F7 +:104040000091D9021091DA022091DB023091DC025A +:10405000DC01CB0180279127A227B3278093D902C7 +:104060009093DA02A093DB02B093DC021F910F91D0 +:104070000C94081C1092D5021092D6021092D7020E +:104080001092D8020C94081C41E050E060E070E00F +:1040900004C0440F551F661F771F8A95D2F74093BF +:1040A000D5025093D6026093D7027093D8020C9435 +:1040B000081C41E050E060E070E004C0440F551F70 +:1040C000661F771F8A95D2F78091D5029091D6020C +:1040D000A091D702B091D802482B592B6A2B7B2B89 +:1040E0004093D5025093D6026093D7027093D802C2 +:1040F0000C94081C41E050E060E070E004C0440F04 +:10410000551F661F771F8A95D2F740955095609589 +:1041100070958091D5029091D602A091D702B0916E +:10412000D802482359236A237B234093D502509316 +:10413000D6026093D7027093D8020C94081C41E019 +:1041400050E060E070E004C0440F551F661F771F09 +:104150008A95D2F78091D5029091D602A091D7028C +:10416000B091D802482759276A277B274093D50268 +:104170005093D6026093D7027093D8020C94081C17 +:104180000F931F930091D5021091D6022091D70270 +:104190003091D802DC01CB01802B912BA22BB32BC9 +:1041A0008093D5029093D602A093D702B093D80201 +:1041B0001F910F910C94081C0F931F930091D5022F +:1041C0001091D6022091D7023091D802DC01CB01A8 +:1041D00080239123A223B3238093D5029093D60208 +:1041E000A093D702B093D8021F910F910C94081C92 +:1041F0000F931F930091D5021091D6022091D70200 +:104200003091D802DC01CB0180279127A227B32768 +:104210008093D5029093D602A093D702B093D80290 +:104220001F910F910C94081C0895CF92DF92EF928A +:10423000FF920F931F93CF93DF938C01C090D9020D +:10424000D090DA02E090DB02F090DC028091D5029F +:104250009091D602A091D702B091D802C82AD92A4B +:10426000EA2AFB2ACFE1D0E0D701C6010C2E04C018 +:10427000B695A795979587950A94D2F780FF06C0C3 +:10428000B8018C2F0E94B008019721F4219760F7A4 +:1042900080E001C08C2FDF91CF911F910F91FF9093 +:1042A000EF90DF90CF900895CF93DF93EC010E94C1 +:1042B0001521BE010E94B008DF91CF910895CB0176 +:1042C0000E94542108958091DD02859585958595FC +:1042D00008958091DD028770089598E0899F90018C +:1042E0001124262B2093DD020C9459202091DD020D +:1042F000809582238093DD02982F977069F430E0D7 +:10430000482F552747FD50952417350729F08595E7 +:10431000859585950C947A2008959091DD0297708B +:1043200081E009F480E0089590911501992321F02E +:1043300090911601911109C0209117013091180137 +:10434000F90132969FEF40E01FC0982F9695969501 +:1043500096959F3050F5E0911701F0911801E90F03 +:10436000F11D877021E030E0A90102C0440F551F04 +:104370008A95E2F7CA019181892B818308959F3F35 +:1043800039F04F5F4E3041F051915813F8CF0DC0C6 +:104390005111F7CF942FF5CF9F3F39F0F901E90F75 +:1043A000F11D97FDFA958283089508959091150166 +:1043B000992321F090911601911109C020911701C4 +:1043C00030911801F9013296205F3F4F1FC0982F9E +:1043D0009695969596959F30F0F4E0911701F0919F +:1043E0001801E90FF11D877021E030E0A90102C03A +:1043F000440F551F8A95E2F7CA0180959181892360 +:10440000818308953196E217F30729F0908198137C +:10441000F9CF1082F7CF089581E090E0E091170185 +:10442000F0911801E80FF91F108201968031910573 +:10443000A9F708959091F102892B8093F1020895D4 +:1044400080959091F10289238093F1020895109252 +:10445000F10208959091F002892B8093F002089563 +:1044600080959091F00289238093F0020895109234 +:10447000F00208959091EF02892B8093EF02089546 +:1044800080959091EF0289238093EF020895109216 +:10449000EF0208958093DE0208951092DE020895DF +:1044A0008091170190911801FC0131969C01205FC9 +:1044B0003F4F80E0919191118F5FE217F307D1F7A1 +:1044C0000895E0911701F09118018091F102808325 +:1044D000E0911701F091180190818091F002892BF1 +:1044E0008083E0911701F091180190818091EF0293 +:1044F000892B80838091DE02882361F0E09117018F +:10450000F09118019081892B80830E9450228111A3 +:104510001092DE0280911701909118010C944617B9 +:1045200020E0009739F0AC014150510984239523D4 +:104530002F5FF7CF822F089580911303843039F1D4 +:104540001092F30220E488E190E00FB6F894A89569 +:10455000809360000FBE2093600080E00E941C03E7 +:1045600080E00E944A0983B7817F846083BF83B75C +:10457000816083BF7894889583B78E7F83BF88E1FD +:104580000FB6F89480936000109260000FBE0895FB +:104590000895089580E00E941C030E94C8220E9492 +:1045A000A5090E94C9220E942A0A91E0811101C036 +:1045B00090E0892F08950E941C1C80E00E941C033B +:1045C0000E9444280E943A170C944A091F920F92A5 +:1045D0000FB60F9211248F939F93AF93BF93809147 +:1045E000F302811113C08091F4029091F502A09121 +:1045F000F602B091F7024196A11DB11D8093F4021D +:104600009093F502A093F602B093F702BF91AF9199 +:104610009F918F910F900FBE0F901F90189582E081 +:1046200084BD93E095BD9AEF97BD80936E00089589 +:104630002FB7F8948091F4029091F502A091F602C0 +:10464000B091F7022FBF0895CF92DF92EF92FF92C1 +:104650000F931F932FB7F8944091F4025091F502F5 +:104660006091F6027091F7022FBF6A017B01EE2480 +:10467000FF248C0120E030E0C016D106E206F306EC +:1046800010F4415051099A01281B390BC9011F919F +:104690000F91FF90EF90DF90CF9008951F920F92AF +:1046A0000FB60F9211248F939F93AF93BF93809176 +:1046B000F4029091F502A091F602B091F7020196F2 +:1046C000A11DB11D8093F4029093F502A093F60210 +:1046D000B093F702BF91AF919F918F910F900FBE52 +:1046E0000F901F9018950E943714F8942FEF87EAC7 +:1046F00091E6215080409040E1F700C0000087E043 +:1047000090EBDC0180931E0390931F03A093200382 +:10471000B09321039CE088E10FB6F894A8958093AC +:1047200060000FBE90936000FFCF0E94D4238111E0 +:1047300002C00E94B0230E94DF238093F2020E94F5 +:10474000E72380931C0387FB882780F98093160159 +:104750000E94E323682F70E080E090E00C94DC1F5F +:104760006DEE7EEF80E090E00E94FB2C60E082E046 +:1047700090E00E94E92C60E083E090E00E94E92C48 +:1047800060E084E090E00E94E92C60E085E090E049 +:104790000E94E92C60E086E090E00E94E92C6FEF37 +:1047A00087E090E00C94E92C80E090E00E94E32CFC +:1047B00021E08D3E9E4F09F020E0822F089582E097 +:1047C00090E00C94DB2C83E090E00C94DB2C84E0F4 +:1047D00090E00C94DB2C682F84E090E00C94E92CA2 +:1047E00086E090E00C94DB2C682F86E090E00C943F +:1047F000E92C87E090E00C94DB2C682F87E090E0B8 +:104800000C94E92C8091FA0280FF0BC060911C018E +:1048100085E0689FB001112475956795759567953A +:104820002BC081FF09C060911C0185E0689FB00129 +:1048300011247595679520C082FF07C060911C0107 +:1048400085E0689FB001112417C09091FB02992365 +:10485000D1F060911B01961788F720911C0185E02B +:10486000289F90011124929FA001939F500D112425 +:1048700070E0CA010E94C12C6038710540F46115D6 +:10488000710539F002C065E070E0862F08958FE76A +:10489000089581E008958091FA0280FF08C0609138 +:1048A0001A0170E0759567957595679521C081FF30 +:1048B00006C060911A0170E07595679519C082FF76 +:1048C00004C060911A0170E010C09091FB0299231E +:1048D000C1F0609119019617A0F780911A01899F84 +:1048E000C001112470E00E94C12C6038710528F4C9 +:1048F0006115710521F0862F08958FE7089581E0F5 +:10490000089561E070E0F4CF803F21F40E9402241A +:10491000819504C0813F29F40E9402248093FE0205 +:104920000895823F21F40E940224819504C0833FB0 +:1049300029F40E9402248093FD020895893F19F40E +:104940000E944B2405C08A3F31F40E944B2481957C +:104950008093FF0208958B3F21F40E944B248195A0 +:1049600004C08C3F29F40E944B24809300030895D7 +:10497000843F21F48091FC02816017C0853F21F4BF +:104980008091FC02826011C0863F21F48091FC027C +:1049900084600BC0873F21F48091FC02886005C0D1 +:1049A000883F31F48091FC0280618093FC0208957D +:1049B0008D3F21F48091FA0281600BC08E3F21F47B +:1049C0008091FA02826005C08F3F29F48091FA023B +:1049D00084608093FA020895803F39F48091FE024A +:1049E00087FF6CC01092FE0269C0813F29F480915C +:1049F000FE021816BCF362C09091FD02823F29F4BA +:104A000097FF5CC01092FD0259C0833F19F419163C +:104A1000CCF354C0893F41F48091FF0218160CF08A +:104A20004DC01092FF024AC08A3F29F48091FF02D4 +:104A300087FF44C0F6CF8B3F39F48091000387FF96 +:104A40003DC0109200033AC08C3F29F480910003CE +:104A50001816BCF333C0843F21F48091FC028E7F92 +:104A600017C0853F21F48091FC028D7F11C0863FE5 +:104A700021F48091FC028B7F0BC0873F21F4809151 +:104A8000FC02877F05C0883F31F48091FC028F7E55 +:104A90008093FC0213C08D3F21F48091FA028E7F37 +:104AA0000BC08E3F21F48091FA028D7F05C08F3FAD +:104AB00029F48091FA028B7F8093FA028091FD02A3 +:104AC00081110EC08091FE0281110AC08091FF0207 +:104AD000811106C080910003811102C01092FB0277 +:104AE00008958CEF92E00E9451170E941823909332 +:104AF000F9028093F80208951F93CF93DF9380917A +:104B0000F8029091F9020E942423AC019091FB02DB +:104B1000992321F020911D0130E006C020911E0153 +:104B20008AE0289F900111244217530708F486C099 +:104B30008091FD02C091FE02D091FF02109100030E +:104B4000811107C0C11176C0D11174C0111172C09A +:104B500075C09F3F19F09F5F9093FB02181624F4D5 +:104B60000E9402248093FD028091FD0287FF05C010 +:104B70000E94022481958093FD021C1624F40E9459 +:104B800002248093FE028091FE0287FF05C00E94EE +:104B9000022481958093FE026091FD02662339F123 +:104BA000C091FE02CC2319F1772767FD7095872FFE +:104BB000972F0E94E32923E333E343E35FE30E945B +:104BC000F32A0E94B0296093FD026C2F772767FDBE +:104BD0007095872F972F0E94E32923E333E343E364 +:104BE0005FE30E94F32A0E94B0296093FE021D1623 +:104BF00024F40E944B248093FF028091FF0287FFE0 +:104C000005C00E944B2481958093FF02111624F465 +:104C10000E944B24809300038091000387FF05C00E +:104C20000E944B24819580930003DF91CF911F91C7 +:104C30000C9471259F3F09F08ECF96CFDF91CF91D5 +:104C40001F910895ECEFF2E085E0DF011D928A9557 +:104C5000E9F71092FB021092FA020895833081F175 +:104C600028F4813059F08230D1F00895853009F46C +:104C700049C0B8F1863009F456C0089580911E01EC +:104C8000262F30E0280F311D2F3F310524F4680F07 +:104C900060931E0108958FEF80931E010895809107 +:104CA0001D01262F30E0280F311D2F3F310524F440 +:104CB000680F60931D0108958FEF80931D01089583 +:104CC00080911C01262F30E0280F311D2F3F310528 +:104CD00024F4680F60931C0108958FEF80931C01EA +:104CE000089580911B01262F30E0280F311D2F3FA2 +:104CF000310524F4680F60931B0108958FEF8093B2 +:104D00001B01089580911A01262F30E0280F311DD4 +:104D10002F3F310524F4680F60931A0108958FEF37 +:104D200080931A01089580911901262F30E0280FF1 +:104D3000311D2F3F310524F4680F60931901089548 +:104D40008FEF809319010895833011F128F4813099 +:104D500049F0823091F00895853081F120F186305C +:104D6000C1F1089580911E01681720F4861B80937D +:104D70001E01089510921E01089580911D0168176B +:104D800020F4861B80931D01089510921D01089543 +:104D900080911C01681720F4861B80931C010895E4 +:104DA00010921C01089580911B01681720F4861B46 +:104DB00080931B01089510921B01089580911A01A0 +:104DC000681720F4861B80931A01089510921A0127 +:104DD000089580911901681720F4861B80931901AA +:104DE00008951092190108950F931F93873208F0C8 +:104DF00048C08E3108F08DC0803109F477C008F5C5 +:104E0000873009F461C068F4863009F09DC0809154 +:104E1000F202817F8E7F8093F20281E08093020311 +:104E200094C08B3009F489C08E3009F08DC0809118 +:104E3000F20282FB222720F991E0922790FB82F96F +:104E40005EC0863109F479C060F4813109F07CC01C +:104E50000E941C1C9091160181E089278093160105 +:104E60006CC0893109F469C08B3109F06DC0809143 +:104E7000F20281FB222720F991E0922790FB81F931 +:104E80003EC0883309F459C050F4893209F457C040 +:104E9000853309F454C0873209F451C055C08334B6 +:104EA00009F44DC028F48A3308F44EC0895332C047 +:104EB000883409F049C00E941C1C0E945A0A0E94B2 +:104EC00021040E94732339C09091F202892F8095AA +:104ED000817080FB90F929F0966098609093F202BF +:104EE00034C0997F977F9093F20227C08091F2029D +:104EF00083FB222720F991E0922790FB83F980938E +:104F0000F2029923D1F08091F20281608093F20243 +:104F100014C08D5141E050E060E070E08A019B01D7 +:104F200004C0000F111F221F331F8A95D2F7C90139 +:104F3000B8010E94DC1F0E941C1C81E006C061E0D9 +:104F400070E080E090E0F5CF80E01F910F91089530 +:104F500080E0089580E00895CF93C82F80910203E8 +:104F6000813069F018F08230C9F184C0E0911701F6 +:104F7000F09118018081823209F07EC007C0E09173 +:104F80001701F09118018081823261F48C2F0E9408 +:104F9000A827811104C08C2F0E94F4261DC081E037 +:104FA00090E01AC08C2F0E94AA27811114C0C4312E +:104FB00079F048F4CB3079F0C03109F061C082E07B +:104FC0008093020308C0C93219F0C83321F058C0D9 +:104FD0001092020355C081E0817054C0C93291F132 +:104FE00020F5C43179F1B0F4C73009F047C08EE143 +:104FF00080931E0182E380931D018AE080931C014F +:1050000084E180931B0188E080931A0188E28093F9 +:10501000190134C0CE51C63088F5EC2FF0E0EA54C7 +:10502000FE4F80818093010329C0CE34E9F020F443 +:10503000CB3421F56AE013C0C13579F0C235F1F403 +:1050400061E00DC080910103882319F010920103E3 +:1050500015C081E08093020315C061E006C0809115 +:1050600001030E942E260AC06AE0809101030E947B +:10507000A42604C01092020380E004C081E002C0B4 +:1050800080E0AACFCF9108950E94D423811102C05D +:105090000E94B0230E94F02380931D0380FF02C072 +:1050A000869501C080E00C941C0380911D03982F0D +:1050B0009695292F30E0233031054CF49F5F990FEE +:1050C0008170892B816080931D030E94F42380915D +:1050D0001D0386950C941C0380911D03982F9695B3 +:1050E00091F09158990F8170892B80931D038E7FC9 +:1050F00091E009F490E080911D0390FB80F980938A +:105100001D030E94F42380911D0386950C941C03BB +:1051100080911D03982F909590FB80F980931D033B +:105120000E94F42380911D0380FF02C0869501C078 +:1051300080E00C941C0390911D03892F86958F5F4E +:105140008F779170843028F4880F892B80931D030A +:1051500002C090931D0380911D038E7F91E009F49E +:1051600090E080911D0390FB80F980931D030E94C5 +:10517000F42380911D0386950C941C0320911D033C +:10518000922F96958927982F990F822F8170892BBE +:1051900080931D038E7F91E009F490E080911D03C0 +:1051A00090FB80F980931D030E94F42380911D03DE +:1051B00086950C941C0380911D0386950895505884 +:1051C000BB27AA270ED0D1C1C2D130F0C7D120F061 +:1051D00031F49F3F11F41EF4B7C10EF4E095E7FBE4 +:1051E0009FC1E92FD3D180F3BA17620773078407F1 +:1051F000950718F071F49EF5EBC10EF4E0950B2EB7 +:10520000BA2FA02D0B01B90190010C01CA01A00118 +:105210001124FF27591B99F0593F50F4503E68F173 +:105220001A16F040A22F232F342F4427585FF3CFB4 +:10523000469537952795A795F0405395C9F77EF485 +:105240001F16BA0B620B730B840BBAF09150A1F0CE +:10525000FF0FBB1F661F771F881FC2F70EC0BA0F54 +:10526000621F731F841F48F4879577956795B795DC +:10527000F7959E3F08F0B3CF9395880F08F09927D4 +:10528000EE0F97958795089527D108F481E008954A +:105290000CD06BC163D140F05AD130F021F45F3FA4 +:1052A00019F03EC1511195C14FC170D198F39923A6 +:1052B000C9F35523B1F3951B550BBB27AA276217DA +:1052C0007307840738F09F5F5F4F220F331F441F1F +:1052D000AA1FA9F333D00E2E3AF0E0E830D0915057 +:1052E0005040E695001CCAF729D0FE2F27D0660F44 +:1052F000771F881FBB1F261737074807AB07B0E883 +:1053000009F0BB0B802DBF01FF2793585F4F2AF098 +:105310009E3F510568F004C15CC15F3FECF3983ECD +:10532000DCF3869577956795B795F7959F5FC9F7F5 +:10533000880F911D9695879597F90895E1E0660F7E +:10534000771F881FBB1F621773078407BA0720F0F7 +:10535000621B730B840BBA0BEE1F88F7E095089560 +:1053600004D06894B11135C1089518D188F09F57C1 +:1053700090F0B92F9927B751A0F0D1F0660F771FA1 +:10538000881F991F1AF0BA95C9F712C0B13081F081 +:105390001FD1B1E008951CC1672F782F8827B85F0F +:1053A00039F0B93FCCF3869577956795B395D9F7E2 +:1053B0003EF490958095709561957F4F8F4F9F4FEC +:1053C0000895E89409C097FB3EF4909580957095F8 +:1053D00061957F4F8F4F9F4F9923A9F0F92F96E941 +:1053E000BB279395F695879577956795B795F111B6 +:1053F000F8CFFAF4BB0F11F460FF1BC06F5F7F4F53 +:105400008F4F9F4F16C0882311F096E911C0772364 +:1054100021F09EE8872F762F05C0662371F096E86D +:10542000862F70E060E02AF09A95660F771F881F3C +:10543000DAF7880F9695879597F9089588D018F030 +:1054400011F08CD038F480C0C4C0E92F9FD0B0F3E5 +:105450005523C9F3E7FB6217730784079507A8F183 +:1054600099F3E92FFF2788232AF03197660F771FDA +:10547000881FDAF7952F5527442332F0915050407A +:10548000220F331F441FD2F7BB27E91BF50B621B0A +:10549000730B840BB109C1F222F4620F731F841FD6 +:1054A000B11D31972AF0660F771F881FBB1FEFCF02 +:1054B000915050405AF041F0882332F0660F771F28 +:1054C000881F91505040C1F7939530C086957795CD +:1054D00067959F5FD9F7F8CF990F0008550FAA0B72 +:1054E000E0E8FEEF16161706E807F907C0F01216F7 +:1054F0001306E407F50798F0621B730B840B950BFA +:1055000039F40A2661F0232B242B252B21F408954E +:105510000A2609F4A140A6958FEF811D811D0895EB +:1055200097F99F6780E870E060E008959F3F31F051 +:10553000915020F4879577956795B795880F911DC1 +:105540009695879597F908959FEF80EC089500242C +:105550000A941616170618060906089500240A94D8 +:1055600012161306140605060895092E0394000C5E +:1055700011F4882352F0BB0F40F4BF2B11F460FFED +:1055800004C06F5F7F4F8F4F9F4F089557FD905816 +:10559000440F551F59F05F3F71F04795880F97FBF7 +:1055A000991F61F09F3F79F08795089512161306B1 +:1055B0001406551FF2CF4695F1DF08C016161706E0 +:1055C0001806991FF1CF8695710561050894089515 +:1055D000E894BB2766277727CB0197F908957CDFEE +:1055E00008F48FEF08950BD0C0CFB1DF28F0B6DFFD +:1055F00018F0952309F094CFA7CF1124EACFC6DF86 +:10560000A0F3959FD1F3950F50E0551F629FF001D5 +:10561000729FBB27F00DB11D639FAA27F00DB11D2E +:10562000AA1F649F6627B00DA11D661F829F2227B7 +:10563000B00DA11D621F739FB00DA11D621F839F3E +:10564000A00D611D221F749F3327A00D611D231F14 +:10565000849F600D211D822F762F6A2F11249F5762 +:1056600050408AF0E1F088234AF0EE0FFF1FBB1F85 +:10567000661F771F881F91505040A9F79E3F510524 +:1056800070F04ECFA6CF5F3FECF3983EDCF38695EB +:1056900077956795B795F795E7959F5FC1F7FE2BCF +:1056A000880F911D9695879597F90895FA01EE0F49 +:1056B000FF1F30962105310599F16115710561F4DF +:1056C0008038BFE39B0749F168949038810561F009 +:1056D0008038BFEF9B0741F0992342F5FF3FE1057A +:1056E0003105210511F1E8940894E795D901AA2321 +:1056F00029F4AB2FBE2FF85FD0F310C0FF5F70F41A +:10570000A695E0F7F73950F019F0FF3A38F49F7793 +:105710009F930CD00F9007FC905808953EF014CF43 +:1057200060E070E080E89FE308954FE79F775F9324 +:105730004F933F932F939ED02F913F914F915F9125 +:1057400052DF05C019F40EF0EBCE42CFFDCE26DFBE +:10575000C8F39638C0F707F80F92E8942BE33AEABB +:1057600048EB5FE74EDF0F920F920F924DB75EB797 +:105770000F92C0D0EAE0F1E016D04F915F91EF9127 +:10578000FF91E595EE1FFF1F49F0FE57E0684427A3 +:10579000EE0F441FFA95E1F74195550B32D00F906B +:1057A00007FE26C00895DF93CF931F930F93FF92B8 +:1057B000EF92DF927B018C01689405C0DA2EEF0135 +:1057C0001EDFFE01E894A5912591359145915591F3 +:1057D000AEF3EF0106DDFE019701A801DA9479F737 +:1057E000DF90EF90FF900F911F91CF91DF9108957F +:1057F0009B01AC0160E070E080E89FE349CD90CE72 +:1058000095CECCDEE8F39923D9F3940F511DBBF369 +:105810009150504094F059F0882332F0660F771F72 +:10582000881F91505040C1F79E3F510544F7880FA3 +:10583000911D9695879597F908955F3FACF0983E36 +:105840009CF0BB27869577956795B79508F4B1606E +:105850009395C1F7BB0F58F711F460FFE8CF6F5F66 +:105860007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE05 +:10587000689456CE93DEC8F39923D1F3C6F3DF9331 +:10588000CF931F930F93FF92C92FDD2788232AF010 +:105890002197660F771F881FDAF720E030E040E895 +:1058A0005FEB9FE3883920F0803E30F021968F77C0 +:1058B00087DCE2E3F1E003C083DCEFE5F1E073DFD6 +:1058C0008B01BE01EC01FB2E6F5771097595771F97 +:1058D000880B990B78DD28E132E741E35FE38FDE47 +:1058E000AF2D9801AE01FF900F911F91CF91DF91E5 +:1058F00078DC3BCEFA01DC01AA0FBB1F9B01AC0197 +:10590000BF5728F422273327442750781FC0B751A8 +:1059100088F4AB2F0024469537952795011CA39555 +:10592000D2F3002069F0220F331F441FB395DAF33E +:105930000DD045CC61307105A0E88A07B94630F436 +:105940009B01AC016627772788279078309621F055 +:1059500020833183428353830895AA1BBB1B51E1EB +:1059600007C0AA1FBB1FA617B70710F0A61BB70BCF +:10597000881F991F5A95A9F780959095BC01CD0174 +:10598000089597FB072E16F4009407D077FD09D0F1 +:105990000E94AD2C07FC05D03EF4909581959F4F59 +:1059A0000895709561957F4F0895EE0FFF1F059044 +:1059B000F491E02D0994F999FECF92BD81BDF89A3A +:1059C000992780B50895A8E1B0E042E050E00C943A +:1059D000032D262FF999FECF92BD81BDF89A01972C +:1059E00000B4021639F01FBA20BD0FB6F894FA9A27 +:1059F000F99A0FBE08950196272F0E94EA2C0C9465 +:105A0000E92CDC01CB01FC01F999FECF06C0F2BD07 +:105A1000E1BDF89A319600B40D9241505040B8F76C +:065A20000895F894FFCF89 +:105A2600640007000CFF0000003F643E10CC10A984 +:105A360010751041100101DF022808140A321E00F9 +:105A460002040507090B0C0E1011131517181A1C62 +:105A56001D1F2123242628292B2D2F30323435379C +:105A6600393B1F0F03764F5F6F7F496943790959A9 +:105A760053633149803F5D8B803FF8BF803FCAE169 +:105A8600803F73ED803FCAE1803FF8BF803F5D8B6A +:105A9600803F3149803F0000803FF16D7F3F75EACE +:105AA6007E3F4C827E3F833F7E3F84287E3F833FFE +:105AB6007E3F4C827E3F75EA7E3FF16D7F3F000060 +:105AC600803F3F4D36394305F604C00487041A0467 +:105AD60033044C04650401020304050607080900A3 +:00000001FF diff --git a/keyboard/planck/keymaps/charlie/compiled.hex b/keyboard/planck/keymaps/charlie/compiled.hex new file mode 100644 index 0000000000..335b49d898 --- /dev/null +++ b/keyboard/planck/keymaps/charlie/compiled.hex @@ -0,0 +1,1445 @@ +:100000000C947D020C94C1020C94C1020C94C102A8 +:100010000C94C1020C94C1020C94C1020C94C10254 +:100020000C94C1020C94C1020C945F140C94311511 +:100030000C9493220C94C1020C94C1020C94C10242 +:100040000C94C1020C9423030C94C1020C94C102C1 +:100050000C94C1020C94FB220C94C1020C94C102BA +:100060000C94C1020C94C1020C94C1020C94C10204 +:100070000C94C1020C94C1020C94C1020C94C102F4 +:100080000C94D40A0C94C1020C94C1020C94C102C9 +:100090000C94C1020C94C1020C94C1020C94C102D4 +:1000A0000C94C1020C94C1020C94C1029E15C0159F +:1000B000AE16C015AE1605162816AE167D1690168D +:1000C0007A197A19A919A919E819081A5E1B5E1B71 +:1000D000131A5E1BC31AC31A2A1B331B5E1B581B41 +:1000E000D01AD01AD01AD01AD01AD01AD01AD01AC0 +:1000F000D01AD01AD01AD01AD01AD01AD01AD01AB0 +:10010000E01AEE1AF51AFC1A061B07634236B79B73 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000018C9F +:1001D000028CF1A242070C0310022A041B074507F8 +:1001E0002D010B0116013E033B013B0327010B03CD +:1001F0001603400741071B032D022A032E021D018F +:100200001C011501290014001A0008001500170030 +:100210001C0018000C001200130002202A00040029 +:100220001600070009000A000B000D000E000F0069 +:10023000330034002B001D001B00060019000500D0 +:100240001100100036003700380028004C00E00094 +:100250000000E100E2002C000000500051005200BC +:100260004F0000004C0027001E001F00200021004E +:1002700022002300240025002600012012000A008D +:100280001600180017001B207000430044004000B7 +:10029000410042002B000420052006203A000720E0 +:1002A0006D006E0072006F0071000920360037008B +:1002B00015000B2003202C000C203B0008203C00E4 +:1002C00069000000290019201A2000000000000029 +:1002D000000000000000000000000000000000001E +:1002E00000000000000000000000000000001320DB +:1002F00014201520060000001620052000001720FD +:1003000000000000000000000D2000000E200F2063 +:100310001020112003202C00122000000000730088 +:100320000000000028035400680065002000500011 +:100330006C0061006E0063006B0020004B006500E4 +:10034000790062006F0061007200640000002C03FD +:100350004F007200740068006F006C0069006E004E +:1003600065006100720020004B00650079006200AA +:100370006F00610072006400730000000403090450 +:1003800009026D00040100A0FA0904000001030144 +:100390000100092111010001223F00070581030826 +:1003A000000A0904010001030102000921110100F2 +:1003B00001224D000705820308000A09040200011A +:1003C0000300000009211101000122360007058306 +:1003D0000308000A090403000103000000092111B9 +:1003E00001000122390007058403100001120110E9 +:1003F0000100000008EDFE6060010001020001053F +:10040000010906A101050719E029E7150025019555 +:1004100008750181020508190129059505750191E5 +:10042000029501750391010507190029771500252B +:1004300001957875018102C005010980A10185023D +:1004400016010026B7001A01002AB70075109501A1 +:100450008100C0050C0901A1018503160100269C3D +:10046000021A01002A9C02751095018100C0050145 +:100470000902A1010901A1000509190129051500B9 +:10048000250195057501810295017503810105011D +:10049000093009311581257F9502750881060938D3 +:1004A0001581257F950175088106050C0A3802150E +:1004B00081257F950175088106C0C005010906A147 +:1004C00001050719E029E715002501950875018147 +:1004D0000295017508810105081901290595057521 +:1004E0000191029501750391010507190029FF1576 +:1004F0000025FF950675088100C011241FBECFEFAF +:10050000DAE0DEBFCDBF04B603FE24C080911E0337 +:1005100090911F03A0912003B09121038730904B4D +:10052000A740B04BB9F410921E0310921F03109213 +:1005300020031092210314BE84B7877F84BF88E113 +:100540000FB6F89480936000109260000FBEE0E058 +:10055000F8E3099511E0A0E0B1E0E0E8F9E502C0B8 +:1005600005900D92A03CB107D9F713E0A0ECB1E0E3 +:1005700001C01D92AE31B107E1F70E94A5110C94A4 +:10058000BE2C0C9400000895089581E0089508950C +:100590000C94C4020C94C5020C94C7020E948828D3 +:1005A00023E030E0281B3109220F2093C401089575 +:1005B000282F2F9880918000211108C0877F809379 +:1005C000800010928D0010928C001BC08860809378 +:1005D0008000233019F48FEF9FEF0FC083E090E08D +:1005E000821B9109880F991F2FEF3FEFA90102C0CD +:1005F000569547958A95E2F7CA0190938D008093AE +:100600008C000C94CE020E94CE0284E08093C30141 +:100610001092C0010895279A2F988FEF9FEF909323 +:100620008700809386008AE08093800089E1809330 +:1006300081000E94F1270C9403030E940B036E9A21 +:10064000769A0C94C3021F920F920FB60F92112448 +:100650002F933F938F939F93EF93FF93E091C1016B +:10066000F091C201CF0101969093C2018093C10124 +:100670000090C30102C0F695E7950A94E2F7EF7384 +:100680008091C001823019F4E03251F404C081300D +:1006900039F4EF3329F480916F008D7F80936F00E0 +:1006A000F0E0E457FE4FE49121E031E0E29FC00129 +:1006B000E39F900D11240090C40102C09695879588 +:1006C0000A94E2F790938D0080938C00FF91EF9154 +:1006D0009F918F913F912F910F900FBE0F901F9080 +:1006E000189581E008950C94710308950C941D03EE +:1006F00080911502882309F448C08091D10190911E +:10070000D201009779F40E94C5229093D201809380 +:10071000D1018091D30190E0009771F48091D401D0 +:1007200090E00AC00E94D122209100013091010185 +:100730002817390740F329C00197880F991F880FA0 +:10074000991FFC01EB52FE4F608171818281938180 +:100750000E943A0AE091D30184E0E89FF00111245D +:10076000EB52FE4F60817181828193814FE050E0B6 +:100770000E94F20D8091D30190E001966091D40126 +:1007800070E00E946E2C8093D3010C94C8021092EA +:1007900017020C94070A0895089581E080931702C8 +:1007A0000C94CC03089508958F929F92AF92BF92BC +:1007B000EF92FF920F931F93CF93DF93CDB7DEB7E6 +:1007C000A3970FB6F894DEBF0FBECDBF7C01FC012E +:1007D00000811181C8010E94C220B8010E94D90580 +:1007E0008C01B7010E947303882309F4CCC1003245 +:1007F000F0E51F0741F4F7018281882309F458C00E +:100800000E94560EC0C10132F0E51F0741F4F70106 +:100810008281882309F44CC00E945F0EB4C1023269 +:10082000F0E51F0751F4F7018281882309F440C0E5 +:100830000E94520E8111F0CFE3CF0332F0E51F0783 +:1008400039F4F7018281882399F10E94CD039BC17D +:100850000432F0E51F0739F4F7018281882341F162 +:100860000E94C70390C10532F0E51F0749F4F70164 +:1008700082818823E9F0809117028111F1CFE5CFC1 +:100880000632F0E51F0739F4F7018281882381F0F1 +:100890000E94660E0AC00732F0E51F0749F4F7010F +:1008A0008281882329F00E94710E0E94D3036BC1BC +:1008B00080911702811105C0F70182818111CFC09B +:1008C00018C1003E110579F4F7018281882309F4EB +:1008D0004DC00E94070A81E0809316021092150213 +:1008E0001092D40150C1023E110559F4F7018281E2 +:1008F0008823E1F10E94070A109216021092150255 +:1009000042C1033E110591F4F7018281882371F100 +:100910000E94070A1092160281E08093150210923D +:10092000D3011092D2011092D1012DC102351105CF +:1009300059F4F7018281882309F425C180910001CF +:10094000909101010A970DC00135110579F4F70165 +:100950008281882309F417C18091000190910101DF +:100960000A9690930101809300010DC1409104010A +:1009700083E2EFE1F1E0DE01119601900D928A959C +:10098000E1F7F701808121E030E02C0F3D1F280FB7 +:10099000311DC9012091020130910301FC01E20FD8 +:1009A000F31F6081772767FD7095640F711D88279D +:1009B00077FD8095982F0E94902920E030E040E458 +:1009C00051E40E94F5284B015C01F701218184E08C +:1009D00090E0821B9109BC01882777FD8095982FB4 +:1009E0000E9490299B01AC01C501B4010E948D2891 +:1009F0009B01AC0160E070E080E090E40E94032B7A +:100A000020E030E04CED50E40E94A02A4B015C0154 +:100A1000F70182818823D1F04FE050E0C501B40195 +:100A20000E94F20D809116028823A1F08091D401DA +:100A300024E0829FF0011124EB52FE4F80829182CC +:100A4000A282B3828F5F8093D40104C0C501B40138 +:100A50000E943A0A0F3F110508F02ECF94C08091F2 +:100A6000D00181111FC0043130E5130709F051C0D6 +:100A70000E94750381E08093D0010E94C52290936B +:100A8000CF018093CE011092C7011092C90110923C +:100A9000C8011092CB011092CA011092CD011092A0 +:100AA000CC0171C08091CE019091CF010E94D122E2 +:100AB000883C910570F48091C701E82FF0E0EE0FBB +:100AC000FF1FE853FE4F118300838F5F8093C701A0 +:100AD0005AC0043880E5180721F00538104501F1A7 +:100AE0003AC0F7018281882341F01092C50182E06B +:100AF0001EC0043830E5130759F58091C5018111F6 +:100B000006C086E20E941E1886E20E94E61882E075 +:100B10001CC00438F0E51F0741F305381045D9F42F +:100B2000F7018281882331F01092C60180E20E9491 +:100B3000351929C08091C601811106C087E20E9443 +:100B40001E1887E20E94E61880E20E943C191BC032 +:100B50000538104529F381E08093C5018093C601D3 +:100B6000C701A3960FB6F894DEBF0FBECDBFDF91CD +:100B7000CF911F910F91FF90EF90BF90AF909F90FA +:100B80008F900C94CA0280E0A3960FB6F894DEBF53 +:100B90000FBECDBFDF91CF911F910F91FF90EF90CE +:100BA000BF90AF909F908F90089580E090E008955F +:100BB00008959CE0799FF001112490E3899FE00D56 +:100BC000F11D1124E60FF11DEE0FFF1FEC5FFD4F2D +:100BD000859194910895880F991FFC01E45BFF4F64 +:100BE000859194910895880F991FFC01E453FE4F5D +:100BF0008591949108950F931F93CF93DF93EC0108 +:100C0000811521E39207A0F5C11580E3D80708F00C +:100C1000D7C0C83ED105D8F4C03ED10508F007C200 +:100C2000C83AD10578F4C53AD10508F06AC0C13098 +:100C3000D10509F463C008F4F7C1C430D10508F048 +:100C4000F6C1F2C1CB3BD10508F466C0EDC1C115B8 +:100C500090E2D90708F0AFC0C11521E0D20708F033 +:100C6000E6C1C03FD10508F4DFC18E0110651FC287 +:100C7000C03880E5D80700F5C03790E5D90708F0FF +:100C8000A3C0C11520E5D20709F4ACC050F4CE01D1 +:100C9000905480319F4008F0C7C1DF708E01106A08 +:100CA00006C2C13080E5D80709F4AEC0C43190E572 +:100CB000D90708F4AFC0B8C1C33820E5D20709F49A +:100CC0008EC050F4C13890E5D90709F482C008F00D +:100CD00083C000E011EDEBC1C03181E5D80708F415 +:100CE000A3C1C11597E5D90708F436C1CE019057C5 +:100CF0008115904108F098C1DF7093C101E010E0C8 +:100D0000D6C1C53AD10509F494C1C63AD10509F056 +:100D100093C102E810E4CBC1C83AD10509F48FC1F0 +:100D2000C93AD10509F48EC1CA3AD10509F48DC179 +:100D3000CB3AD10509F48CC1CC3AD10509F48BC169 +:100D4000CD3AD10509F48AC1C03BD10509F489C166 +:100D5000CE3AD10509F488C1CF3AD10509F487C14B +:100D6000C13BD10509F486C1C23BD10509F485C157 +:100D7000C33BD10509F484C1C43BD10509F483C147 +:100D8000C53BD10509F482C1C63BD10509F481C137 +:100D9000C73BD10509F480C1C83BD10509F47FC127 +:100DA000C93BD10509F47EC1CA3BD10509F47DC117 +:100DB00000E014E47CC1CE019F700E94F30578C16D +:100DC000DD278E01106C73C1CF70DD278E01146D8D +:100DD0006EC100E010ED6BC100E012ED68C100E0F3 +:100DE00013ED65C10E94C91B0E94070A0E94CB0334 +:100DF0008FEF94E32CE0815090402040E1F700C059 +:100E000000000E94202353C18091F20281608093F0 +:100E1000F2024DC10E948123811102C00E945D2314 +:100E20000E94942390E090931D0380931C03C23092 +:100E300080E5D80721F480911C03816086C0C4300E +:100E400090E5D90721F480911C0382607EC0C630F2 +:100E500020E5D20721F480911C03846076C0C8305D +:100E600080E5D80719F480911C0327C0CA3090E5AB +:100E7000D90721F480911C03806167C0CC3020E544 +:100E8000D20721F480911C0380625FC0CE3080E5E0 +:100E9000D80721F480911C03806457C0C03190E5CD +:100EA000D90721F480911C0380684FC0C23120E52E +:100EB000D20729F480911C038460886046C0C33047 +:100EC00080E5D80721F480911C038E7F3EC0C53099 +:100ED00090E5D90721F480911C038D7F36C0C7307F +:100EE00020E5D20721F480911C038B7F2EC0C930EE +:100EF00080E5D80719F480911C0326C0CB3090E51B +:100F0000D90721F480911C038F7E1FC0CD3020E5CE +:100F1000D20721F480911C038F7D17C0CF3080E56C +:100F2000D80721F480911C038F7B0FC0C13190E55D +:100F3000D90721F480911C038F7707C0C331D045B6 +:100F400031F480911C038B7F877F80931C038091F9 +:100F50001C030E949823ABC08D2F99278F7099276F +:100F600081309105D9F49E012370332702C0880F88 +:100F7000991F2A95E2F79C688E0144E0000F111F2B +:100F80004A95E1F700271370802B912B53E0CC0F8B +:100F9000DD1F5A95E1F7C076DD272FC0823091051D +:100FA00031F4DC2FCC278E01016F106A80C08330B2 +:100FB000910569F4CE018370992701E010E002C029 +:100FC000000F111F8A95E2F7C8019C680FC084309A +:100FD0009105B9F4CE018370992701E010E002C0B9 +:100FE000000F111F8A95E2F7C8019A6823E0CC0F21 +:100FF000DD1F2A95E1F7C07ED7708C010C2B1D2BCD +:1010000056C08530910531F4DC2FCC278E01046F5A +:10101000106A4DC0069709F04AC0CF71DD27DC2F5A +:10102000CC278E01106243C000E010E040C08E016A +:101030003EC001E810E43BC003E810E438C002EE13 +:1010400014E435C009EE14E432C00AEE14E42FC0F3 +:1010500005EB14E42CC006EB14E429C007EB14E400 +:1010600026C00CEC14E423C00DEC14E420C003E80B +:1010700015E41DC00AE815E41AC002E915E417C01A +:1010800004E915E414C001E216E411C003E216E419 +:101090000EC004E216E40BC005E216E408C006E246 +:1010A00016E405C007E216E402C00AE216E4C8012D +:1010B000DF91CF911F910F9108959CE0799FF001EE +:1010C000112490E3899FE00DF11D1124E60FF11D1D +:1010D000EE0FFF1FEC5FFD4F85919491803E9105CF +:1010E000E0F4803C910558F58133910509F46FC017 +:1010F00048F48932910509F463C08A32910509F4F4 +:101100006DC072C089339105E9F082389105D1F044 +:101110008533910509F44DC067C0833E910581F187 +:1011200038F4803E9105B9F0823E9105D9F05CC05B +:10113000863E910561F1873E9105A1F155C00E945F +:10114000EB05089520911C0320FD02C021FF4CC037 +:1011500080EE90E049C080911C0380FFF9CF89E3C5 +:1011600090E042C080911C0382FF0EC080911C035E +:1011700084FF03C080E090E037C083EE90E034C08D +:1011800080911C0382FFF2CF82EE90E02DC080910F +:101190001C0383FF0BC080911C0384FDEBCF87EE03 +:1011A00090E022C080911C0383FFF5CF86EE90E093 +:1011B0001BC080911C0385FF07C089E290E014C02A +:1011C00080911C0385FFF9CF85E390E00DC08091ED +:1011D0001C0386FF07C08AE290E006C080911C03D2 +:1011E00086FFF9CF81E390E00E94FB0508950C94FF +:1011F000CC02E82FF0E0E25BFE4F8081E82FEF7039 +:10120000F0E082958F7021E030E0A90102C0440F28 +:10121000551F8A95E2F740A308950F931F93CF932C +:10122000DF9385B7806885BF85B7806885BFC3E0D9 +:10123000D0E001E010E0FE01E25BFE4F8081E82F8C +:10124000EF70F0E021A182958F70A80102C0440FD9 +:10125000551F8A95E2F7CA01822B81A38C2F0E9429 +:10126000F908219740F78BE090E061E070E0FC0125 +:10127000EE5BFE4F2081E22FEF70F0E042A122955D +:101280002F70DB0102C0AA0FBB1F2A95E2F79D0158 +:10129000242B22A3019758F7DF91CF911F910F9133 +:1012A0000C947603EF92FF920F931F93CF93DF93EB +:1012B00000E212E0C3E0EE24E394F12CD5E08C2FA1 +:1012C0000E94F9088BE090E040E050E0FC01EE5B0A +:1012D000FE4F6081E62FEF70F0E020A130E06295D4 +:1012E0006F7002C0359527956A95E2F720FD09C019 +:1012F0009701082E02C0220F331F0A94E2F7422BF7 +:10130000532B019718F7F801929182918F0184175E +:10131000950721F051834083D09305018C2F0E94C3 +:10132000F908C15060F68091050187FD2CC08150FD +:10133000809305018F3F39F08FE99FE00197F1F726 +:1013400000C0000020C080911E0290911F02909367 +:1013500027028093260280911C0290911D02909397 +:1013600025028093240280911A0290911B0290938F +:101370002302809322028091180290911902909387 +:101380002102809320020E94780381E0DF91CF91B7 +:101390001F910F91FF90EF900895E82FF0E0EE0F6E +:1013A000FF1FE05EFD4F80819181089508950F93A6 +:1013B0001F93CF9308E212E0C0E0F801929182916E +:1013C0008F010E943D22C80FF2E000321F07A9F7EB +:1013D0008C2FCF911F910F9108950E94812381112D +:1013E00002C00E945D230E94A623809307033E9AB9 +:1013F000809171008D7F8093710082E080939000D6 +:101400008AE18093910081E080932A02089580917F +:101410002A02811102C00E94ED0910927A021092F4 +:101420007902809171008D7F80937100809190008E +:101430008F738093900010923C0210923B021092A6 +:10144000730210927402109275021092760210923A +:10145000720210927102E1E5F2E0A1E4B2E01192B1 +:101460001192119211921D921D9282E0E137F807BC +:10147000B1F70895CF92DF92EF92FF920F931F93EF +:10148000CF93DF9320913B02222309F484C06B01A8 +:101490007C0180912A02811102C00E94ED0901E7BE +:1014A00012E0C7E0D0E0A7019601F8019291829185 +:1014B000729162918F010E94F128811131C0FE0169 +:1014C000EE0FFF1FEE0FFF1FEF5AFD4F108211822C +:1014D00012821382DE01AA0FBB1FAF5BBD4F1196B4 +:1014E0001C921E92C730D105E9F0219644815581A6 +:1014F000668177814083518362837383148215826E +:101500001682178212968D919C91139711969C9337 +:101510008E9313961C921E92129734961296E2CFD7 +:10152000219708F68091790290917A02019797FDB0 +:1015300005C090937A028093790204C010927A02D7 +:10154000109279028091790290917A02209177022B +:10155000309178022817390724F0109278021092FF +:101560007702892BC1F4809171008D7F8093710087 +:10157000809190008F73809390001092730210926C +:1015800074021092750210927602109272021092FA +:10159000710210923B02DF91CF911F910F91FF904A +:1015A000EF90DF90CF9008951F920F920FB60F9299 +:1015B00011244F925F926F927F928F929F92AF927F +:1015C000BF92CF92DF92EF92FF922F933F934F9370 +:1015D0005F936F937F938F939F93AF93BF93CF93BB +:1015E000DF93EF93FF9380913B02882309F49BC123 +:1015F000C0917902D0917A021C161D060CF093C19D +:1016000040902B0250902C0260902D0270902E0280 +:1016100020E030E0A901C301B2010E949C2A181603 +:101620000CF065C0C130D10509F452C08091770239 +:1016300090917802BE010E946E2C7C0190937802FA +:101640008093770280903D0290903E02A0903F02EE +:10165000B090400220E030E040E85FE3C501B40113 +:101660000E948D2860933D0270933E0280933F025A +:1016700090934002F701EE0FFF1FEE0FFF1FEF5A8E +:10168000FD4FA301920160817181828193810E944B +:10169000F52820E030E040E05EE30E94A02A9B01B4 +:1016A000AC01C501B4010E949C2A18168CF4C70134 +:1016B0000196BE010E946E2C90937802809377026F +:1016C00010923D0210923E0210923F021092400290 +:1016D000E0917702F0917802EE0FFF1FEE0FFF1FEF +:1016E000EF5AFD4F6081718182819381D0C0C0909B +:1016F0007302D0907402E0907502F090760220E0C0 +:1017000030E0A901C701B6010E94F1282197882382 +:1017100009F4A2C0FE01EE0FFF1FEE0FFF1FEF5AEC +:10172000FD4F80809180A280B380A5019401C70104 +:10173000B6010E94F12887FF31C0A501940160E045 +:1017400070E08CED93EC0E94F52820E030E040E45E +:1017500051E40E94F52820E030E040E05FE30E9481 +:10176000A02A9B01AC0160E070E080E090E40E9460 +:10177000032B9B01AC01C501B4010E94A02A9B016F +:10178000AC01C701B6010E94F12887FF07C0A7017D +:10179000960160E070E08CED93E439C0A5019401FE +:1017A000C701B6010E949C2A18160CF055C0A5016D +:1017B000940160E070E08CED93E40E94F52820E055 +:1017C00030E040E451E40E94F52820E030E040E0C1 +:1017D0005FE30E94A02A9B01AC0160E070E080E022 +:1017E00090E40E94032B9B01AC01C501B4010E944F +:1017F000A02A9B01AC01C701B6010E949C2A1816C1 +:101800005CF5A701960160E070E08CED93EC0E941E +:10181000F52820E030E040E451E40E94F52820E083 +:1018200030E040E05FE30E94A02A9B01AC0160E051 +:1018300070E080E090E40E94032B9B01AC01C701A3 +:10184000B6010E94A02A6093730270937402809381 +:1018500075029093760213C0FE01EE0FFF1FEE0F8C +:10186000FF1FEF5AFD4F80819181A281B381809348 +:10187000730290937402A0937502B0937602609104 +:10188000730270917402809175029091760220919A +:101890002802309129022F3F4FEF340731F02F5F9C +:1018A0003F4F30932902209328020E947C0E6B0147 +:1018B0007C0120E034E244EF51E40E94F12887FFEC +:1018C00008C086EFC82E88E2D82E84EFE82E81E487 +:1018D000F82E20E030E040E051E4C701B6010E945C +:1018E000A02A9B01AC0160E074E284E79BE40E94C3 +:1018F000F5286B017C010E94622970939700609328 +:101900009600209106013091070140910801509105 +:101910000901C701B6010E94A02A0E9462297093A2 +:1019200099006093980080913C02882309F433C1A8 +:10193000C0903702D0903802E0903902F0903A021D +:1019400020E030E0A901C701B6010E949C2A1816C8 +:10195000D4F580912802909129028F3F2FEF9207B2 +:1019600029F001969093290280932802C701B601BD +:101970000E947C0E20E030E040E051E40E94A02A6A +:101980009B01AC0160E074E284E79BE40E94F528CF +:101990006B017C010E94622970939700609396000E +:1019A00020910601309107014091080150910901F1 +:1019B000C701B6010E94A02A0E9462297093990073 +:1019C0006093980008C010929700109296001092B1 +:1019D00099001092980060913102709132026F5F0D +:1019E0007F4F7093320260933102209196003091C4 +:1019F000970080E090E0232BF1F0C0919600D09109 +:101A000097000E948E296B017C01BE0180E090E06E +:101A10000E948E299B01AC016091330270913402C7 +:101A200080913502909136020E94F52820E03FEF28 +:101A30004FE757E410C00E948E296B017C0120E023 +:101A400030EE4FEF54E46091330270913402809194 +:101A50003502909136020E94A02A9B01AC01C70179 +:101A6000B6010E949C2A87FD96C080912F028F5F4D +:101A700080932F0290E0209103033091040382179A +:101A80009307A0F080910E03882319F010922F0283 +:101A90000DC0809171008D7F8093710080919000C6 +:101AA0008F738093900010923C027DC08091300231 +:101AB000C0912F02811128C0C0900803D090090363 +:101AC000E0900A03F0900B0320E030E0A901C70189 +:101AD000B6010E949C2A1816BCF481E08093300263 +:101AE00010923702109238021092390210923A0284 +:101AF000C0923302D0923402E0923502F092360264 +:101B0000C150C0932F0243C010923002109229029C +:101B100010922802E0910503F091060348E0C49F6B +:101B2000E00DF11D112480819181A281B381809308 +:101B3000370290933802A0933902B0933A0220E022 +:101B400030E040E85EE364817581868197810E9480 +:101B5000A02A6B017C0180910A01682F70E080E06F +:101B600090E00E948E2920E030E048EC52E40E9490 +:101B7000F5289B01AC01C701B6010E94A02A609321 +:101B800033027093340280933502909336021092A0 +:101B90003202109231028091070380FD04C010923E +:101BA0003C0210923B02FF91EF91DF91CF91BF91E8 +:101BB000AF919F918F917F916F915F914F913F91E5 +:101BC0002F91FF90EF90DF90CF90BF90AF909F90BC +:101BD0008F907F906F905F904F900F900FBE0F90FF +:101BE0001F901895CF92DF92EF92FF92CF93DF93E1 +:101BF0006B017C01EA0180912A02811102C00E94DE +:101C0000ED098091070380FF46C080917902909191 +:101C10007A0208970CF03FC0809171008D7F80930D +:101C2000710080913C0281110E94070A81E080933B +:101C30003B02109229021092280220E030E0A90114 +:101C4000C701B6010E949C2A1816DCF48091790223 +:101C500090917A02FC01EE0FFF1FEE0FFF1FEF5A6B +:101C6000FD4FC082D182E282F382FC01EE0FFF1FA2 +:101C7000EF5BFD4FD183C083019690937A028093EE +:101C80007902809171008260809371008091900050 +:101C9000806880939000DF91CF91FF90EF90DF906C +:101CA000CF90089580910703817008958091070374 +:101CB0008160809307030E94AA230C94D203809131 +:101CC00007038E7F809307030C94AA2380917B02E5 +:101CD00090E0019666E070E00E946E2C80937B029B +:101CE000089580917B0290E0019766E070E00E9489 +:101CF0006E2C80937B0208958F929F92AF92BF9239 +:101D0000CF92DF92EF92FF920F931F93CF93DF93C7 +:101D10006B017C01C0912802D0912902BE0180E0B4 +:101D200090E00E948E294B015C01A701960160E0C2 +:101D300070E08CE594E40E94F5289B01AC01C5019C +:101D4000B4010E94A02A0E94622920917B022330C4 +:101D500009F473C028F4222351F02130E9F02CC19A +:101D6000243009F4A0C0253009F4E0C025C180E08A +:101D700090E0A0E0BFE38093060190930701A09359 +:101D80000801B093090110922B0210922C021092BC +:101D90002D0210922E0210C110922B0210922C02D2 +:101DA00010922D0210922E026431710540F46A30B7 +:101DB000710560F520E030E040E85EE32BC0693C4F +:101DC000710508F0AAC080E090E00E948E2920E012 +:101DD00030E040EA51E40E948C2820E030E044E307 +:101DE00053E40E94F5289B01AC010E94A02A20E048 +:101DF00030E040E05EE30E94A02A9B01AC0160E07D +:101E000070E080E09EE30E948C2844C020E030E037 +:101E100040E05FE3C701B6010E94A02A6B017C018C +:101E200080E090E0A0E0BEE380930601909307017C +:101E3000A0930801B0930901BFC010922B02109229 +:101E40002C0210922D0210922E024AE0469F900121 +:101E5000479F300D1124C90168EB7BE00E945A2C8A +:101E6000BC016C5D754077FF03C071956195710988 +:101E7000882777FD8095982F0E9490292EE333ECD8 +:101E80004EE259E30E94A02A20E030E040EC5EE3FD +:101E90000E948D28609306017093070180930801CA +:101EA0009093090189C010922B0210922C0210927B +:101EB0002D0210922E02CE0183709927892BE1F01A +:101EC000BE016170772780E090E00E948E2920E0BB +:101ED00030E040E05EE30E94A02A20E030E040E4F1 +:101EE0005FE30E948D286093060170930701809341 +:101EF0000801909309010CC080E090E0A0E0BFE3EE +:101F00008093060190930701A0930801B093090103 +:101F1000C770DD27CD2B09F04FC01092060110923B +:101F20000701109208011092090146C010922B027D +:101F300010922C0210922D0210922E0200E010E05E +:101F400020E03FE30093060110930701209308016E +:101F5000309309016739710578F180E090E00E94C3 +:101F60008E2920E030E047E153E40E948C2820E0F5 +:101F700030E04AE754E40E94F52820E030E048E4ED +:101F800052E40E94A02A20E030E040EA51E40E949E +:101F9000D2290E945D29660F771F660F771FFB010C +:101FA000EE5AFE4F2081318142815381C701B60133 +:101FB0000E94A02A6B017C01C701B601DF91CF917D +:101FC0001F910F91FF90EF90DF90CF90BF90AF9057 +:101FD0009F908F90089580918C020895CF93DF9306 +:101FE00000D01F92CDB7DEB79C01809113038430DF +:101FF00019F593E099833B832A839093E9008FEF4F +:102000009091E800815095FD06C095ED9A95F1F705 +:1020100000008111F5CF8091E80085FF0DC040E000 +:1020200050E063E070E0CE0101960E944F12809173 +:10203000E8008E778093E8000F900F900F90DF916B +:10204000CF910895CF93DF9300D01F92CDB7DEB725 +:1020500020911303243021F522E029839B838A8376 +:1020600083E08093E9008FEF9091E800815095FD27 +:1020700006C095ED9A95F1F700008111F5CF80919A +:10208000E80085FF0DC040E050E063E070E0CE0165 +:1020900001960E944F128091E8008E778093E800AD +:1020A0000F900F900F90DF91CF910895209113031F +:1020B0002430F1F422E02093E9002FEF3091E80082 +:1020C000215035FD06C035ED3A95F1F7000021119C +:1020D000F5CF2091E80025FF0BC040E050E065E01F +:1020E00070E00E944F128091E8008E778093E800A4 +:1020F0000895CF93DF93EC0190911303943009F08E +:1021000046C0809115018823D9F08091160188235B +:10211000B9F09093E9008FEF9091E800815095FD20 +:1021200006C095E19A95F1F700008111F5CF8091F5 +:10213000E80085FF2CC040E050E060E170E017C08F +:1021400081E08093E9008FEF9091E800815095FD48 +:1021500006C095ED9A95F1F700008111F5CF8091B9 +:10216000E80085FF14C040E050E068E070E0CE0178 +:102170000E944F128091E8008E778093E80080E102 +:10218000FE01ACE7B2E001900D928A95E1F7DF9194 +:10219000CF91089580911203811109C00E94E41328 +:1021A0000E9441148091E20084608093E2000895CF +:1021B000109212030895089508950C94882242E025 +:1021C00061EC81E00E945E1342E061EC82E00E94DB +:1021D0005E1342E061EC83E00E945E1342E161EC39 +:1021E00084E00C945E1380911503833009F455C08C +:1021F00030F4813071F0823009F48EC008958A3055 +:1022000009F47AC08B3009F460C0893009F09CC0B1 +:1022100020C080911403813A09F096C08091E800B3 +:10222000877F8093E8008091180390911903892B90 +:1022300021F460E18CE792E003C060E080E090E090 +:1022400070E00E949A128091E8008B778093E800FA +:10225000089580911403813209F076C080911803AB +:1022600090911903009719F0039709F06DC08091C0 +:10227000E800877F8093E8008091E80082FD05C038 +:10228000809113038111F8CF5FC08091F10080939A +:102290008C028091E8008B7753C080911403813ABF +:1022A00009F052C08091180390911903892B09F00D +:1022B0004BC08091E800877F8093E8008091E80020 +:1022C00080FFFCCF8091150136C0809114038132CC +:1022D000D9F58091180390911903892BA9F5809164 +:1022E000E800877F8093E8000E9493138091160393 +:1022F000809315010C94C91B80911403813221F540 +:102300008091E800877F8093E8000E94931380917A +:10231000170380938D02089580911403813AA1F4EC +:102320008091E800877F8093E8008091E80080FF3B +:10233000FCCF80918D028093F1008091E8008E7730 +:102340008093E8000C949313089584B7877F84BF2B +:1023500088E10FB6F89480936000109260000FBE81 +:1023600090E080E80FB6F89480936100909361004C +:102370000FBE0E9436170E94E4130E944114809100 +:10238000E20084608093E20078940E94C7160E9465 +:1023900038178BE091E00E94E2168091130385309C +:1023A00069F40E944922809111038823B1F30E94AD +:1023B0007722882391F30E943912EFCF0E944017B1 +:1023C000ECCF292F332723303105C9F064F42130B5 +:1023D000310581F02230310509F043C08DE690E0EF +:1023E00020E833E042C021323105F1F022323105DC +:1023F00041F137C082E190E02DEE33E036C09927FD +:102400008130910541F08230910541F0892B49F5E9 +:10241000ECE7F3E005C0EEE4F3E002C0E4E2F3E051 +:10242000849190E09F0121C06430D8F4E62FF0E061 +:10243000EE0FFF1FE255FE4F2081318189E090E0D1 +:1024400014C0643070F470E0FB01EE0FFF1FEA551A +:10245000FE4F20813181FB01EE55FE4F808190E0DF +:1024600004C080E090E020E030E0FA013183208376 +:10247000089580E189BD82E189BD09B400FEFDCFE8 +:102480008091D8008F7D8093D8008091E000826099 +:102490008093E0008091E00081FDFCCF0895CF9211 +:1024A000DF92EF92FF920F931F93CF93DF93EC0194 +:1024B0008B016A010E94B213811133C0C114D1048F +:1024C00039F0F60180819181081B190BC80FD91FC3 +:1024D000E12CF12C0115110519F18091E80085FD21 +:1024E00016C08091E8008E778093E800C114D10473 +:1024F00049F0F60180819181E80EF91EF182E082B7 +:1025000085E00FC00E94B213882321F30AC089918D +:102510008093F10001501109FFEFEF1AFF0ADACFA3 +:1025200080E0DF91CF911F910F91FF90EF90DF90AE +:10253000CF90089520911A0330911B032617370777 +:1025400048F06115710539F42091E8002E77209349 +:10255000E80001C0B90140E061157105A9F12091C1 +:102560001303222309F443C0253009F442C020910B +:10257000E80023FD40C02091E80022FD32C02091F8 +:10258000E80020FFE9CF4091F3002091F20030E015 +:10259000342BFC01CF016115710559F0283031054C +:1025A00040F481918093F100615071092F5F3F4F9A +:1025B000F1CF41E02830310509F040E02091E800FA +:1025C0002E772093E800C8CF4111C9CF0AC080916F +:1025D0001303882361F0853061F08091E80083FD6A +:1025E0000AC08091E80082FFF2CF80E0089582E087 +:1025F000089583E0089581E0089520911A033091B1 +:102600001B032617370748F06115710539F420912F +:10261000E8002E772093E80001C0B901FC0120E01A +:102620006115710591F180911303882309F440C06D +:10263000853009F43FC08091E80083FD3DC0809162 +:10264000E80082FD2FC08091E80080FFE9CF209153 +:10265000F3008091F20090E0922B6115710559F022 +:102660008830910540F424912093F1003196615017 +:1026700071090196F2CF21E0089709F020E08091DE +:10268000E8008E778093E800CBCF2111CCCF0AC031 +:1026900080911303882361F0853061F08091E80018 +:1026A00083FD0AC08091E80082FFF2CF80E00895A8 +:1026B00082E0089583E0089581E00895982F97308F +:1026C00058F59093E900981739F07091EC0020913B +:1026D000ED005091F00003C0242F762F50E021FF31 +:1026E00019C03091EB003E7F3093EB003091ED004C +:1026F0003D7F3093ED003091EB0031603093EB0083 +:102700007093EC002093ED005093F0002091EE00C8 +:1027100027FF07C09F5FD3CF8F708093E90081E0D0 +:10272000089580E008958091140387FF11C080917F +:10273000E80082FD05C0809113038111F8CF11C01C +:102740008091E8008B770BC080911303882349F0B8 +:102750008091E80080FFF8CF8091E8008E77809329 +:10276000E80008952091E4003091E50095E640915D +:10277000EC00842F817040FF22C08091E80080FD32 +:102780001CC080911303882391F0853091F08091D3 +:10279000EB0085FD10C04091E4005091E500421728 +:1027A000530729F39A01915011F784E0089582E0CC +:1027B000089583E0089581E0089580E008954091B0 +:1027C000E80042FFDECF08950E9452140E945A147E +:1027D000E0EEF0E0808181608083E8EDF0E08081D0 +:1027E0008F77808319BCA7EDB0E08C918E7F8C939E +:1027F00080818F7E80831092120308950F931F9320 +:10280000CF93DF930E9452140E945A14C8EDD0E077 +:1028100088818F77888388818068888388818F7D8D +:10282000888319BC1092130310920F0310921103A6 +:102830001092100300EE10E0F80180818B7F8083FE +:1028400088818160888342E060E080E00E945E13BE +:10285000E1EEF0E080818E7F8083E2EEF0E0808127 +:1028600081608083808188608083F80180818E7F91 +:102870008083888180618883DF91CF911F910F9140 +:102880000895E8EDF0E080818F7E8083E7EDF0E051 +:1028900080818160808384E082BF81E08093120325 +:1028A0000C94FE13E8EDF0E080818E7F808310921F +:1028B000E20008951092DA001092E10008951F924C +:1028C0000F920FB60F9211242F933F934F935F9364 +:1028D0006F937F938F939F93AF93BF93EF93FF93E8 +:1028E0008091E10082FF0BC08091E20082FF07C06F +:1028F0008091E1008B7F8093E1000E94C616809159 +:10290000DA0080FF1FC08091D80080FF1BC080913B +:10291000DA008E7F8093DA008091D90080FF0DC0AD +:1029200080E189BD82E189BD09B400FEFDCF81E06F +:10293000809313030E94CA1005C019BC10921303A0 +:102940000E94D8108091E10080FF19C08091E200C0 +:1029500080FF15C08091E2008E7F8093E20080911D +:10296000E20080618093E2008091D80080628093D1 +:10297000D80019BC85E0809313030E94DC1080917D +:10298000E10084FF30C08091E20084FF2CC080E130 +:1029900089BD82E189BD09B400FEFDCF8091D800D8 +:1029A0008F7D8093D8008091E1008F7E8093E1003D +:1029B0008091E2008F7E8093E2008091E20081604E +:1029C0008093E20080910F03882311F084E007C018 +:1029D0008091E30087FD02C081E001C083E0809325 +:1029E00013030E94DD108091E10083FF29C08091D4 +:1029F000E20083FF25C08091E100877F8093E100A2 +:102A000082E08093130310920F038091E1008E7F88 +:102A10008093E1008091E2008E7F8093E2008091BC +:102A2000E20080618093E20042E060E080E00E948A +:102A30005E138091F00088608093F0000E94DB10AC +:102A4000FF91EF91BF91AF919F918F917F916F9186 +:102A50005F914F913F912F910F900FBE0F901F905C +:102A600018951F920F920FB60F9211242F933F9338 +:102A70004F935F936F937F938F939F93AF93BF9386 +:102A8000CF93DF93EF93FF93C091E900CF708091D4 +:102A9000EC00D82FD17080FDD0E81092E900809131 +:102AA000F000877F8093F00078940E947515109253 +:102AB000E9008091F00088608093F000CD2BCF700A +:102AC000C093E900FF91EF91DF91CF91BF91AF915A +:102AD0009F918F917F916F915F914F913F912F9136 +:102AE0000F900FBE0F901F9018951F93CF93DF93F9 +:102AF000CDB7DEB7AA970FB6F894DEBF0FBECDBF35 +:102B0000E4E1F3E088E08E0F9091F10091938E1351 +:102B1000FBCF0E94F3108091E80083FF1FC18091DA +:102B2000140390911503492F50E04A30510508F0E5 +:102B300015C1FA01EA5AFF4F0C94822C803881F0BB +:102B4000823809F00BC1809118038F708093E900DF +:102B50008091EB0085FB882780F91092E90006C080 +:102B60008091100390911103911182609091E8007F +:102B7000977F9093E8008093F1001092F100C8C015 +:102B8000282F2D7F09F0EAC0882319F0823061F0E8 +:102B9000E5C080911603813009F0E0C0933009F060 +:102BA00080E0809311032BC080911603811127C010 +:102BB000809118038F7009F4D1C08093E9002091AF +:102BC000EB0020FF1CC0933021F48091EB00806269 +:102BD00014C09091EB0090619093EB0021E030E005 +:102BE000A90102C0440F551F8A95E2F74093EA00FD +:102BF0001092EA008091EB0088608093EB001092C5 +:102C0000E9008091E800877F86C08111A7C01091FC +:102C100016031F778091E3008078812B8093E30077 +:102C20008091E800877F8093E8000E949313809151 +:102C3000E80080FFFCCF8091E30080688093E30090 +:102C4000111102C082E001C083E08093130386C0AB +:102C50008058823008F082C080911603909117034B +:102C60008C3D53E0950779F583E08A838AE2898376 +:102C70004FB7F894DE01139620E03EE051E2E32FD7 +:102C8000F0E050935700E49120FF03C0E295EF700D +:102C90003F5FEF708E2F90E0EA3010F0C79601C0D2 +:102CA000C0968D939D932F5F243149F74FBF80913C +:102CB000E800877F8093E8006AE270E0CE01019629 +:102CC0000E949A1214C0AE014F5F5F4F60911803CB +:102CD0000E94E111BC01009709F440C09091E80006 +:102CE000977F9093E80089819A810E94FD128091DC +:102CF000E8008B778093E80031C0803879F58091C7 +:102D0000E800877F8093E80080910F038093F100B3 +:102D10008091E8008E778093E8000E9493131EC094 +:102D200081111CC0909116039230C0F48091E8008C +:102D3000877F8093E80090930F030E949313809104 +:102D40000F03811106C08091E30087FD02C081E07E +:102D500001C084E0809313030E94DF108091E8009B +:102D600083FF0AC08091E800877F8093E80080910C +:102D7000EB0080628093EB00AA960FB6F894DEBF5A +:102D80000FBECDBFDF91CF911F9108950895CF93CE +:102D9000809113038823A1F0C091E900CF70909136 +:102DA000EC00892F817090FD80E8C82B1092E9001B +:102DB0008091E80083FD0E947515CF70C093E900F3 +:102DC000CF91089590939302809392020895E09199 +:102DD0009202F0919302309721F00190F081E02D62 +:102DE000099480E00895E0919202F0919302309767 +:102DF00021F00280F381E02D09940895E091920280 +:102E0000F0919302309721F00480F581E02D099430 +:102E1000089520919002309191028217930771F0EA +:102E20009093910280939002E0919202F09193022C +:102E3000309721F00680F781E02D099408952091C4 +:102E40008E0230918F028217930771F090938F0258 +:102E500080938E02E0919202F0919302309721F0DC +:102E60000084F185E02D0994089508950C94351798 +:102E70000E94BC220E940D090E9442230C94F1275B +:102E80005F926F927F928F929F92AF92BF92CF92FA +:102E9000DF92EF92FF920F931F93CF93DF9300D0B7 +:102EA00000D01F92CDB7DEB70E9452099DE9C92E0E +:102EB00092E0D92E03E010E0AA24A394B12C502E66 +:102EC000802F0E94CD094C01F601729062906F0133 +:102ED0006826792661147104A1F40150110978F76C +:102EE0008FEF89838A831B820E94C5228160782F9D +:102EF0009D838C8349815A816B818D810E94F0175B +:102F000038C08091F20281FD0E94D6092BE030E0AA +:102F10007501022E02C0EE0CFF1C0A94E2F7C701F5 +:102F200086219721892B09F129835A828E209F209F +:102F300091E0892809F490E09B830E94C52281607A +:102F4000782F9D838C8349815A816B818D810E946A +:102F5000F017000F111FF801EB56FD4F8081918192 +:102F6000E826F926F182E08204C02150310980F67A +:102F7000B4CF0E942925109194020E94E7161817D9 +:102F8000D1F00E94E716809394020F900F900F905B +:102F90000F900F90DF91CF911F910F91FF90EF90C5 +:102FA000DF90CF90BF90AF909F908F907F906F9069 +:102FB0005F900C94F7080F900F900F900F900F9068 +:102FC000DF91CF911F910F91FF90EF90DF90CF9005 +:102FD000BF90AF909F908F907F906F905F9008957B +:102FE000CF93DF93CDB7DEB72B970FB6F894DEBF44 +:102FF0000FBECDBF4F83588769877A878B87DE01E5 +:10300000119686E0FD0111928A95E9F785E0FE01AF +:10301000379601900D928A95E1F749815A816B812B +:103020007C818D819E810E94671E2B960FB6F8943D +:10303000DEBF0FBECDBFDF91CF910895CF93882320 +:1030400009F4C2C0C82F823859F40E94E71681FDE6 +:10305000BBC089E30E9441210E940E2289E30CC07B +:10306000833879F40E94E71680FDAEC083E50E94A4 +:1030700041210E940E2283E50E948321CF910C946E +:103080000E22843859F40E94E71682FD9DC087E421 +:103090000E9441210E940E2287E4EECF8CEF8C0F1C +:1030A000813A48F48C2F0E94592781118DC08C2FB2 +:1030B0000E944121E3CF80E28C0F883048F4C77032 +:1030C00081E001C0880FCA95EAF70E94C721D6CFD8 +:1030D0008BE58C0F833078F4C53A29F0C63A31F08D +:1030E00083E890E005C081E890E002C082E890E0CB +:1030F000CF910C94091788E58C0F833108F064C0D8 +:10310000C83A39F1C93A41F1CA3A49F1CB3A51F1D9 +:10311000CC3A59F1CD3A61F1C03B69F1CE3A71F147 +:10312000CF3A79F1C13B81F1C23B89F1C33B91F1C7 +:10313000C43B99F1C53BA1F1C63BA9F1C73BB1F135 +:10314000C83BB9F1C93BC1F1CA3BC9F180E090E08D +:1031500038C082EE90E035C089EE90E032C08AEE51 +:1031600090E02FC085EB90E02CC086EB90E029C06A +:1031700087EB90E026C08CEC90E023C08DEC90E0D3 +:1031800020C083E891E01DC08AE891E01AC082E97E +:1031900091E017C084E991E014C081E292E011C08F +:1031A00083E292E00EC084E292E00BC085E292E0FE +:1031B00008C086E292E005C087E292E002C08AE29F +:1031C00092E0CF910C941F17CF910895882309F4B2 +:1031D0004BC0823859F40E94E71681FF45C089E34D +:1031E0000E9441210E940E2289E30CC0833871F4B1 +:1031F0000E94E71680FF38C083E50E9441210E94AB +:103200000E2283E50E9483210C940E22843859F407 +:103210000E94E71682FF28C087E40E9441210E9495 +:103220000E2287E4EFCF9CEF980F913A58F390E28B +:10323000980F983050F4877091E001C0990F8A95EB +:10324000EAF7892F0E94CD21DFCF9BE5980F9330BD +:1032500020F480E090E00C940917885A833120F420 +:1032600080E090E00C941F170895882321F00E94BD +:10327000C7210C940E220895882321F00E94CD21AD +:103280000C940E2208957F928F929F92AF92BF92DC +:10329000CF92DF92EF92FF920F931F93CF93DF9322 +:1032A0001F92CDB7DEB77C01C62E772EFC010581BB +:1032B00002950F70128111110E94E4210E943A219F +:1032C000882379F0112369F080E28C0D883048F072 +:1032D00082E00E9423210E943A2191E0D82ED92633 +:1032E00001C0D12CE72DE295EF70F0E0E05AFF4FDE +:1032F0000C94822C872D807F072D0F70882311F06E +:103300000295007F112389F0002309F499C180E21E +:103310008C0D883020F4802F0E94C72103C0802F9D +:103320000E94D7210E940E228BC18C2D0E94E6188C +:10333000002309F4C3C180E28C0D883020F4802F73 +:103340000E94CD2103C0802F0E94DD210E940E2209 +:10335000B5C1872D807F972D9F70803211F4892F02 +:1033600003C0892F8295807FCC2021F0F1E0CF1619 +:10337000A1F01DC0112339F0002319F1013009F526 +:103380000E94F7219BC1002319F0013009F496C176 +:1033900089830E94FA21898110C1112321F006300E +:1033A00008F08CC10EC0053008F088C106C1112399 +:1033B00059F0002331F0F701958190FF41C19F70D2 +:1033C00095830E9435197AC1002309F4F6C03EC1E5 +:1033D000872D86958695837090E0009719F0019768 +:1033E00061F06CC1112321F08C2D972D937002C0D8 +:1033F00080E090E00E94091761C1112321F08C2D1B +:10340000972D937002C080E090E00E941F1756C174 +:103410008C2D112319F00E94312402C00E9499249E +:103420000E941E254BC1872D837009F052C01111D7 +:1034300045C18C2D829586958770880F880F9C2DAD +:103440009F70892E912CA12CB12C082E04C0880CC1 +:10345000991CAA1CBB1C0A94D2F7C4FE14C00FE02E +:1034600010E020E030E0B901A80104C0440F551F6E +:10347000661F771F8A95D2F7CB01BA0160957095C8 +:103480008095909503C060E070E0CB01272D2695D4 +:103490002695237030E02230310569F02330310564 +:1034A00089F0682979298A299B292130310571F011 +:1034B0000E94AF1F03C1682979298A299B290E948C +:1034C000CB1FFCC00E94AF1FC501B4010E94931F17 +:1034D000F5C0112319F0872D817001C086958823CE +:1034E00009F4ECC08C2D829586958770880F880F23 +:1034F0009C2D9F70892E912CA12CB12C082E04C0DC +:10350000880C991CAA1CBB1C0A94D2F7C4FE14C0D8 +:103510000FE010E020E030E0B901A80104C0440F42 +:10352000551F661F771F8A95D2F7CB01BA016095A8 +:1035300070958095909503C060E070E0CB01272DD9 +:10354000269526952370422F50E04230510569F0B0 +:103550004330510589F0682979298A299B2941300E +:10356000510571F00E948920A9C0682979298A290A +:103570009B290E94A520A2C00E948920C501B401F8 +:103580000E946D209BC08C2D90E0FC01E05EF10953 +:10359000E531F10508F050C0E059FF4F0C94822C42 +:1035A0000C2D0F70872D8F71112321F00E940620A2 +:1035B000802F07CF0E942720802F0E943C197EC0B9 +:1035C000112341F0053008F079C0872D8F710E94DA +:1035D0004C2074C0063008F071C0F7CF112339F0C9 +:1035E000872D8F710E94062069C01123C9F3872D92 +:1035F0008F710E94272062C0112329F0872D8F71BF +:103600000E94F11F5BC00E94E71F58C0112351F0B8 +:10361000172D1F71812F0E94062063E0812F0E94C9 +:103620001A214CC081E00E942321023008F446C0D8 +:1036300082E00E94232142C0112331F0002381F255 +:103640008C2D0E941E183AC0002389F28C2D0E94F6 +:10365000E61834C0472D4F706C2DC7010E94D50568 +:103660000E940B1F2BC0111129C0472D4F7050E035 +:1036700042305105B9F04CF44115510581F041300B +:103680005105E1F40E94192819C04330510569F031 +:103690004430510599F48C2D0E946B280FC00E9474 +:1036A00002280CC00E94352809C00E94482806C084 +:1036B000472D4F706C2DC7010E94D805DD20F9F011 +:1036C0000E94162180FD1BC0F70112820E9410216A +:1036D0000E940620C7010E948E1B0E9410210F909D +:1036E000DF91CF911F910F91FF90EF90DF90CF90DE +:1036F000BF90AF909F908F907F900C9427200F9059 +:10370000DF91CF911F910F91FF90EF90DF90CF90BD +:10371000BF90AF909F908F907F9008950F931F93CD +:10372000CF93DF93EC01888199812B813C81232BFE +:10373000B9F09F3F11F48F3F99F0CE010E94D4035E +:10374000882371F0688179818A810E940C218C0123 +:103750000E94C1200E94881FB801CE010E94431917 +:10376000DF91CF911F910F9108950E94E4210E9453 +:10377000F4210E94B9210E940E220E94CF250E94AE +:103780001E2580E090E00E94091780E090E00C94F4 +:103790001F170E94D4210C94B51B0E940121292FD0 +:1037A00022952F7030E02C3031054CF42A30310551 +:1037B0006CF42250310922303105A8F407C02C30B6 +:1037C000310569F02F30310551F00DC0803F69F0AF +:1037D00018F4803E40F409C0843F29F406C093FBEE +:1037E000882780F9089580E0089581E00895CF93B7 +:1037F000DF9300D000D01F92CDB7DEB70F900F90AF +:103800000F900F900F90DF91CF910895CF93DF939A +:1038100000D000D000D0CDB7DEB726960FB6F89412 +:10382000DEBF0FBECDBFDF91CF9108951F93CF9321 +:10383000DF93C0919D0216E080919E02C81799F017 +:10384000D0E01C9FF0011D9FF00D1124E156FD4FAB +:103850004081518162817381848195810E94061C1F +:103860002196C770E9CFDF91CF911F9108954091C4 +:10387000CF025091D0026091D1027091D20280911A +:10388000D3029091D4020C94061C8091D4028295AC +:103890008F7009F054C08091D102882309F44FC081 +:1038A00080919D02A0919E026091CF027091D00202 +:1038B0004091D2025091D302B6E08A1709F43FC07A +:1038C00090E041155105C1F17F3F11F46F3FA1F127 +:1038D000B89FF001B99FF00D1124E156FD4F2181F1 +:1038E00072132AC02081621327C02281211124C0B3 +:1038F000238134812417350710F421503109241B0A +:10390000350B283C3105C0F42091D4022F70206182 +:103910002093D40226E0289FF001299FF00D112466 +:10392000EC55FD4F80818F70806180838FEC92E039 +:103930000E948E1B0C94161C01968770BECF0895B2 +:10394000CF92DF92EF92FF920F931F93CF93DF936B +:10395000CDB7DEB762970FB6F894DEBF0FBECDBF0E +:103960008C0185E0F801DE011D9601900D928A958B +:10397000E1F7D8014C9111965C91119712966C91D8 +:1039800012971396CD90DC9014973091CF027091DE +:10399000D0028091D2029091D302009709F46BC1BA +:1039A0007F3F19F43F3F09F466C1E090D102EE2059 +:1039B00009F4C0C02091D402C816D90628F0F60137 +:1039C000E81BF90BCF0104C0809590958C0D9D1DCF +:1039D000FF24F394883C910578F0F12C207F09F0C6 +:1039E000C6C07C2DD98AC88A89890E94F71B8FECB2 +:1039F00092E00E948E1BB1C0822F807F09F046C0EA +:103A0000751314C0341312C0611110C02F702061DF +:103A10002093D4020E94371C8FEC92E00E948E1BF0 +:103A20008091D402D80115968C932EC0CD2819F11F +:103A30005F3F11F44F3FF9F0F62E61111CC08091E9 +:103A40009D0220919E0236E0821709F45AC090E050 +:103A5000389FF001399FF00D1124E156FD4F71811F +:103A6000571306C07081471303C07281711103C0E0 +:103A700001968770E9CFF62E662309F418C180916C +:103A8000D40281608093D402F12C11C1751308C057 +:103A9000341306C0611104C08091D402D801C3C0A0 +:103AA0004D875E878D859E856A8B0E94CD1B6A89B6 +:103AB0008823E1F16623D1F12091D402822F8295EF +:103AC0008F7090E0029774F08091CF029091D002B5 +:103AD00098878F831986DB86CA862C87CE01079646 +:103AE0000E948E1B86E0F801AFECB2E001900D92CF +:103AF0008A95E1F70E94451C0E94371CFF24F3942D +:103B0000D6C04D875E878D859E850E940121292F15 +:103B100022952F7030E0223031050CF0BCC09F7030 +:103B200009F0B6C0805E883008F4C1C0C8010E94A8 +:103B30008E1BE4CFC816D90608F453C0F601E81B63 +:103B4000F90BCF01883C910508F450C0F12C7C2D75 +:103B5000D98AC88A89890E94F71BEFECF2E086E0D7 +:103B6000DF011D928A95E9F70E94371CA0C07513EA +:103B700014C0341312C0611110C08091D402F80136 +:103B80008583C8010E948E1B86E0EFECF2E0DF0126 +:103B90001D928A95E9F7FE2C8AC04D875E878D8538 +:103BA0009E856A8B0E94CD1B6A89882309F4BECF4B +:103BB000662309F4BBCF2091D402822F82958F70A7 +:103BC00090E002970CF48ECF8091CF029091D002BA +:103BD0009A8389831B82DD82CC822E83CE0101965B +:103BE0007FCF809590958C0D9D1DACCFF62E6623D2 +:103BF00009F49CCF75132EC034132CC02091D4022D +:103C000020FD1FC0822F82958F70D9F0D8011596A4 +:103C10002C9315978F3049F08F5F982F9295907F56 +:103C2000822F8F70892B15968C93C8010E948E1B52 +:103C300086E0F801AFECB2E001900D928A95E1F7D1 +:103C400093CF86E0F801AFECB2E001900D928A9537 +:103C5000E1F72DC04D875E878D859E850E94CD1B27 +:103C6000811140CF8091D40281608093D402C80139 +:103C70000E948E1B1CC0662309F458CF4D875E87B7 +:103C80008D859E850E94CD1B882309F44FCF2ACFB6 +:103C9000811148CF0CC0243031050CF047CF9F7004 +:103CA00009F440CFF8019581907F09F03BCF8F2D2B +:103CB00062960FB6F894DEBF0FBECDBFDF91CF91F5 +:103CC0001F910F91FF90EF90DF90CF9008951F9379 +:103CD000CF93DF93CDB7DEB72C970FB6F894DEBF46 +:103CE0000FBECDBF4F83588769877A878B879C87A4 +:103CF000CE0107960E94A01C882369F08F819885C9 +:103D00002A853B85232BF1F19F3F09F063C08F3F4C +:103D100009F060C037C086E0FE013796DE011196DB +:103D200001900D928A95E1F76F817885EA85FB8590 +:103D3000309741F17F3F11F46F3F21F120919E02B6 +:103D400030E0C90101968770992740919D0250E0AB +:103D50008417950709F447C069837A83FD83EC8350 +:103D600096E0929FD001939FB00D1124A156BD4FB4 +:103D7000FE01319601900D929A95E1F780939E0293 +:103D80000E94161C16E080919D0290919E02891758 +:103D9000C1F1189FC001112481569D4F0E94A01CA3 +:103DA000882379F1E0919D021E9FF0011124E156D4 +:103DB000FD4F4081518162817381848195810E9490 +:103DC000061C80919D0290E0019687709927809350 +:103DD0009D02D9CF4F81588569857A858B859C85D1 +:103DE0000E94061CCFCF0E94C91B10929E02109207 +:103DF0009D02EFECF2E086E0DF011D928A95E9F783 +:103E0000C1CF2C960FB6F894DEBF0FBECDBFDF91A9 +:103E1000CF911F910895EF92FF920F931F93CF932D +:103E2000DF938C01009709F46CC0F12CEE24E3942D +:103E3000E8012196F8018491843740F4843008F039 +:103E400051C0813081F0823019F15BC0853709F4AF +:103E500044C0A8F19CE7980F903708F052C08F77C4 +:103E60000E94E61841C00E5F1F4FFE01C49180E220 +:103E70008C0F883048F4C7708E2D01C0880FCA950A +:103E8000EAF70E94E72114C08C2F0E941E182DC053 +:103E90000E5F1F4FFE01C49180E28C0F883058F4F2 +:103EA000C7708E2D01C0880FCA95EAF70E94ED21D8 +:103EB0000E940E221AC08C2F0E94E61816C00E5FB8 +:103EC0001F4FFE01C491CC2381F08FE99FE0019741 +:103ED000F1F700C00000C150F6CF0E5F1F4FFE018A +:103EE000F49003C00E941E188E018F2D882309F4C0 +:103EF0009FCFEFE9FFE03197F1F700C0000081505C +:103F0000F5CFDF91CF911F910F91FF90EF90089522 +:103F100008956093D9027093DA028093DB02909344 +:103F2000DC020C94B51B0F931F930091D9021091E2 +:103F3000DA022091DB023091DC02DC01CB01802B24 +:103F4000912BA22BB32B8093D9029093DA02A093EA +:103F5000DB02B093DC021F910F910C94B51B0F9301 +:103F60001F930091D9021091DA022091DB02309167 +:103F7000DC02DC01CB0180239123A223B3238093B5 +:103F8000D9029093DA02A093DB02B093DC021F9176 +:103F90000F910C94B51B0F931F930091D9021091B0 +:103FA000DA022091DB023091DC02DC01CB018027B8 +:103FB0009127A227B3278093D9029093DA02A09386 +:103FC000DB02B093DC021F910F910C94B51B109291 +:103FD000D5021092D6021092D7021092D8020C94F9 +:103FE000B51B41E050E060E070E004C0440F551F95 +:103FF000661F771F8A95D2F74093D5025093D60259 +:104000006093D7027093D8020C94B51B41E050E046 +:1040100060E070E004C0440F551F661F771F8A954B +:10402000D2F78091D5029091D602A091D702B0919B +:10403000D802482B592B6A2B7B2B4093D5025093E7 +:10404000D6026093D7027093D8020C94B51B41E05E +:1040500050E060E070E004C0440F551F661F771FFA +:104060008A95D2F740955095609570958091D502CC +:104070009091D602A091D702B091D802482359233B +:104080006A237B234093D5025093D6026093D702D4 +:104090007093D8020C94B51B41E050E060E070E0F2 +:1040A00004C0440F551F661F771F8A95D2F7809171 +:1040B000D5029091D602A091D702B091D80248279C +:1040C00059276A277B274093D5025093D6026093E5 +:1040D000D7027093D8020C94B51B0F931F930091D5 +:1040E000D5021091D6022091D7023091D802DC017E +:1040F000CB01802B912BA22BB32B8093D5029093D5 +:10410000D602A093D702B093D8021F910F910C94BE +:10411000B51B0F931F930091D5021091D6022091E9 +:10412000D7023091D802DC01CB0180239123A22356 +:10413000B3238093D5029093D602A093D702B09375 +:10414000D8021F910F910C94B51B0F931F930091F0 +:10415000D5021091D6022091D7023091D802DC010D +:10416000CB0180279127A227B3278093D502909374 +:10417000D602A093D702B093D8021F910F910C944E +:10418000B51B0895CF92DF92EF92FF920F931F938A +:10419000CF93DF938C01C090D902D090DA02E090E7 +:1041A000DB02F090DC028091D5029091D602A091C2 +:1041B000D702B091D802C82AD92AEA2AFB2ACFE12D +:1041C000D0E0D701C6010C2E04C0B695A7959795EF +:1041D00087950A94D2F780FF06C0B8018C2F0E9401 +:1041E0005D08019721F4219760F780E001C08C2FD2 +:1041F000DF91CF911F910F91FF90EF90DF90CF90C3 +:104200000895CF93DF93EC010E94C220BE010E946B +:104210005D08DF91CF910895CB010E94012108959F +:104220008091DD0285958595859508958091DD02C3 +:104230008770089598E0899F90011124262B209380 +:10424000DD020C9406202091DD028095822380936C +:10425000DD02982F977069F430E0482F552747FD0D +:1042600050952417350729F08595859585950C94EB +:10427000272008959091DD02977081E009F480E095 +:10428000089590911501992321F0909116019111B3 +:1042900009C02091170130911801F90132969FEF62 +:1042A00040E01FC0982F9695969596959F3050F5B3 +:1042B000E0911701F0911801E90FF11D877021E0DD +:1042C00030E0A90102C0440F551F8A95E2F7CA01E8 +:1042D0009181892B818308959F3F39F04F5F4E3044 +:1042E00041F051915813F8CF0DC05111F7CF942FD1 +:1042F000F5CF9F3F39F0F901E90FF11D97FDFA95D0 +:1043000082830895089590911501992321F0909149 +:104310001601911109C02091170130911801F9017E +:104320003296205F3F4F1FC0982F96959695969591 +:104330009F30F0F4E0911701F0911801E90FF11DA1 +:10434000877021E030E0A90102C0440F551F8A9513 +:10435000E2F7CA018095918189238183089531967E +:10436000E217F30729F090819813F9CF1082F7CF65 +:10437000089581E090E0E0911701F0911801E80FB5 +:10438000F91F1082019680319105A9F70895909147 +:10439000F102892B8093F102089580959091F102AA +:1043A00089238093F10208951092F102089590916B +:1043B000F002892B8093F002089580959091F0028D +:1043C00089238093F00208951092F002089590914D +:1043D000EF02892B8093EF02089580959091EF0270 +:1043E00089238093EF0208951092EF02089580933D +:1043F000DE0208951092DE020895809117019091D7 +:104400001801FC0131969C01205F3F4F80E09191A3 +:1044100091118F5FE217F307D1F70895E09117012B +:10442000F09118018091F1028083E0911701F091E1 +:10443000180190818091F002892B8083E09117010F +:10444000F091180190818091EF02892B80838091F7 +:10445000DE02882361F0E0911701F091180190814C +:10446000892B80830E94FD2181111092DE028091B0 +:104470001701909118010C94F31620E0009739F081 +:10448000AC0141505109842395232F5FF7CF822F30 +:10449000089580911303843039F11092F30220E4DF +:1044A00088E190E00FB6F894A895809360000FBE65 +:1044B0002093600080E00E94D80280E00E94F7080C +:1044C00083B7817F846083BF83B7816083BF789423 +:1044D000889583B78E7F83BF88E10FB6F894809369 +:1044E0006000109260000FBE08950895089580E066 +:1044F0000E94D8020E9475220E9452090E947622D0 +:104500000E94D70991E0811101C090E0892F0895A0 +:104510000E94C91B80E00E94D8020E94F1270E94DD +:10452000E7160C94F7081F920F920FB60F92112402 +:104530008F939F93AF93BF938091F302811113C028 +:104540008091F4029091F502A091F602B091F702E9 +:104550004196A11DB11D8093F4029093F502A093A2 +:10456000F602B093F702BF91AF919F918F910F9098 +:104570000FBE0F901F90189582E084BD93E095BD0B +:104580009AEF97BD80936E0008952FB7F8948091AD +:10459000F4029091F502A091F602B091F7022FBFBC +:1045A0000895CF92DF92EF92FF920F931F932FB750 +:1045B000F8944091F4025091F5026091F6027091E6 +:1045C000F7022FBF6A017B01EE24FF248C0120E05B +:1045D00030E0C016D106E206F30610F4415051094E +:1045E0009A01281B390BC9011F910F91FF90EF9081 +:1045F000DF90CF9008951F920F920FB60F92112463 +:104600008F939F93AF93BF938091F4029091F502A3 +:10461000A091F602B091F7020196A11DB11D809301 +:10462000F4029093F502A093F602B093F702BF91C3 +:10463000AF919F918F910F900FBE0F901F90189583 +:104640000E94E413F8942FEF87EA91E6215080400E +:104650009040E1F700C0000087E090EBDC01809320 +:104660001E0390931F03A0932003B09321039CE0AB +:1046700088E10FB6F894A895809360000FBE9093E0 +:104680006000FFCF0E948123811102C00E945D2340 +:104690000E948C238093F2020E94942380931C0337 +:1046A00087FB882780F9809316010E949023682F4A +:1046B00070E080E090E00C94891F6DEE7EEF80E06A +:1046C00090E00E94A82C60E082E090E00E94962C8E +:1046D00060E083E090E00E94962C60E084E090E04F +:1046E0000E94962C60E085E090E00E94962C60E0AD +:1046F00086E090E00E94962C6FEF87E090E00C94AB +:10470000962C80E090E00E94902C21E08D3E9E4F00 +:1047100009F020E0822F089582E090E00C94882C2C +:1047200083E090E00C94882C84E090E00C94882C3A +:10473000682F84E090E00C94962C86E090E00C9436 +:10474000882C682F86E090E00C94962C87E090E00F +:104750000C94882C682F87E090E00C94962C809124 +:10476000FA0280FF0BC060911C0185E0689FB001D8 +:10477000112475956795759567952BC081FF09C0C4 +:1047800060911C0185E0689FB001112475956795C3 +:1047900020C082FF07C060911C0185E0689FB001C6 +:1047A000112417C09091FB029923D1F060911B0155 +:1047B000961788F720911C0185E0289F900111240D +:1047C000929FA001939F500D112470E0CA010E9496 +:1047D0006E2C6038710540F46115710539F002C026 +:1047E00065E070E0862F08958FE7089581E00895D1 +:1047F0008091FA0280FF08C060911A0170E07595FF +:1048000067957595679521C081FF06C060911A0173 +:1048100070E07595679519C082FF04C060911A0118 +:1048200070E010C09091FB029923C1F060911901D2 +:104830009617A0F780911A01899FC001112470E09A +:104840000E946E2C6038710528F46115710521F005 +:10485000862F08958FE7089581E0089561E070E064 +:10486000F4CF803F21F40E94AF23819504C0813FA3 +:1048700029F40E94AF238093FE020895823F21F421 +:104880000E94AF23819504C0833F29F40E94AF2387 +:104890008093FD020895893F19F40E94F82305C012 +:1048A0008A3F31F40E94F82381958093FF02089596 +:1048B0008B3F21F40E94F823819504C08C3F29F49A +:1048C0000E94F823809300030895843F21F480918F +:1048D000FC02816017C0853F21F48091FC02826058 +:1048E00011C0863F21F48091FC0284600BC0873F99 +:1048F00021F48091FC02886005C0883F31F48091EA +:10490000FC0280618093FC0208958D3F21F4809128 +:10491000FA0281600BC08E3F21F48091FA0282601E +:1049200005C08F3F29F48091FA0284608093FA02D7 +:104930000895803F39F48091FE0287FF6CC0109289 +:10494000FE0269C0813F29F48091FE021816BCF373 +:1049500062C09091FD02823F29F497FF5CC01092E3 +:10496000FD0259C0833F19F41916CCF354C0893F96 +:1049700041F48091FF0218160CF04DC01092FF0216 +:104980004AC08A3F29F48091FF0287FF44C0F6CFD6 +:104990008B3F39F48091000387FF3DC010920003E4 +:1049A0003AC08C3F29F4809100031816BCF333C041 +:1049B000843F21F48091FC028E7F17C0853F21F453 +:1049C0008091FC028D7F11C0863F21F48091FC0212 +:1049D0008B7F0BC0873F21F48091FC02877F05C04D +:1049E000883F31F48091FC028F7E8093FC0213C0DB +:1049F0008D3F21F48091FA028E7F0BC08E3F21F40F +:104A00008091FA028D7F05C08F3F29F48091FA02D0 +:104A10008B7F8093FA028091FD0281110EC08091FC +:104A2000FE0281110AC08091FF02811106C08091AF +:104A30000003811102C01092FB0208958CEF92E0F6 +:104A40000E94FE160E94C5229093F9028093F802FC +:104A500008951F93CF93DF938091F8029091F9020C +:104A60000E94D122AC019091FB02992321F0209168 +:104A70001D0130E006C020911E018AE0289F9001B0 +:104A800011244217530708F486C08091FD02C0919B +:104A9000FE02D091FF0210910003811107C0C111E5 +:104AA00076C0D11174C0111172C075C09F3F19F04A +:104AB0009F5F9093FB02181624F40E94AF2380930B +:104AC000FD028091FD0287FF05C00E94AF23819502 +:104AD0008093FD021C1624F40E94AF238093FE02F3 +:104AE0008091FE0287FF05C00E94AF2381958093CD +:104AF000FE026091FD02662339F1C091FE02CC23D3 +:104B000019F1772767FD7095872F972F0E949029BD +:104B100023E333E343E35FE30E94A02A0E945D297D +:104B20006093FD026C2F772767FD7095872F972F75 +:104B30000E94902923E333E343E35FE30E94A02A2A +:104B40000E945D296093FE021D1624F40E94F82342 +:104B50008093FF028091FF0287FF05C00E94F82327 +:104B600081958093FF02111624F40E94F82380930C +:104B700000038091000387FF05C00E94F823819500 +:104B800080930003DF91CF911F910C941E259F3FCE +:104B900009F08ECF96CFDF91CF911F910895ECEF62 +:104BA000F2E085E0DF011D928A95E9F71092FB02A1 +:104BB0001092FA020895833081F128F4813059F07F +:104BC0008230D1F00895853009F449C0B8F18630BB +:104BD00009F456C0089580911E01262F30E0280F59 +:104BE000311D2F3F310524F4680F60931E01089595 +:104BF0008FEF80931E01089580911D01262F30E0D4 +:104C0000280F311D2F3F310524F4680F60931D01DB +:104C100008958FEF80931D01089580911C01262F28 +:104C200030E0280F311D2F3F310524F4680F6093C9 +:104C30001C0108958FEF80931C01089580911B0142 +:104C4000262F30E0280F311D2F3F310524F4680F47 +:104C500060931B0108958FEF80931B01089580914D +:104C60001A01262F30E0280F311D2F3F310524F483 +:104C7000680F60931A0108958FEF80931A010895C9 +:104C800080911901262F30E0280F311D2F3F31056B +:104C900024F4680F6093190108958FEF8093190130 +:104CA0000895833011F128F4813049F0823091F079 +:104CB0000895853081F120F18630C1F10895809109 +:104CC0001E01681720F4861B80931E010895109220 +:104CD0001E01089580911D01681720F4861B8093A2 +:104CE0001D01089510921D01089580911C016817FF +:104CF00020F4861B80931C01089510921C010895D6 +:104D000080911B01681720F4861B80931B01089576 +:104D100010921B01089580911A01681720F4861BD8 +:104D200080931A01089510921A0108958091190133 +:104D3000681720F4861B80931901089510921901B9 +:104D400008950F931F93873208F048C08E3108F002 +:104D50008DC0803109F477C008F5873009F461C04F +:104D600068F4863009F09DC08091F202817F8E7FC9 +:104D70008093F20281E08093020394C08B3009F4A7 +:104D800089C08E3009F08DC08091F20282FB22270B +:104D900020F991E0922790FB82F95EC0863109F4F8 +:104DA00079C060F4813109F07CC00E94C91B9091E8 +:104DB000160181E08927809316016CC0893109F4BE +:104DC00069C08B3109F06DC08091F20281FB22270E +:104DD00020F991E0922790FB81F93EC0883309F4D5 +:104DE00059C050F4893209F457C0853309F454C0CE +:104DF000873209F451C055C0833409F44DC028F4FA +:104E00008A3308F44EC0895332C0883409F049C04F +:104E10000E94C91B0E94070A0E94CB030E94202304 +:104E200039C09091F202892F8095817080FB90F9B2 +:104E300029F0966098609093F20234C0997F977F32 +:104E40009093F20227C08091F20283FB222720F97F +:104E500091E0922790FB83F98093F2029923D1F09D +:104E60008091F20281608093F20214C08D5141E082 +:104E700050E060E070E08A019B0104C0000F111F48 +:104E8000221F331F8A95D2F7C901B8010E94891FDA +:104E90000E94C91B81E006C061E070E080E090E004 +:104EA000F5CF80E01F910F91089580E0089580E094 +:104EB0000895CF93C82F80910203813069F018F0D4 +:104EC0008230C9F184C0E0911701F091180180810E +:104ED000823209F07EC007C0E0911701F0911801FD +:104EE0008081823261F48C2F0E945527811104C089 +:104EF0008C2F0E94A1261DC081E090E01AC08C2F4B +:104F00000E945727811114C0C43179F048F4CB3086 +:104F100079F0C03109F061C082E08093020308C0DB +:104F2000C93219F0C83321F058C01092020355C09D +:104F300081E0817054C0C93291F120F5C43179F11A +:104F4000B0F4C73009F047C08EE180931E0182E3C0 +:104F500080931D018AE080931C0184E180931B01F2 +:104F600088E080931A0188E28093190134C0CE5101 +:104F7000C63088F5EC2FF0E0EA54FE4F8081809334 +:104F8000010329C0CE34E9F020F4CB3421F56AE0E6 +:104F900013C0C13579F0C235F1F461E00DC08091E4 +:104FA0000103882319F01092010315C081E080935A +:104FB000020315C061E006C0809101030E94DB2559 +:104FC0000AC06AE0809101030E94512604C0109239 +:104FD000020380E004C081E002C080E0AACFCF914C +:104FE00008950E948123811102C00E945D230E94C6 +:104FF0009D2380931D0380FF02C0869501C080E041 +:105000000C94D80280911D03982F9695292F30E09B +:10501000233031054CF49F5F990F8170892B81609B +:1050200080931D030E94A12380911D0386950C94FB +:10503000D80280911D03982F969591F09158990F61 +:105040008170892B80931D038E7F91E009F490E09D +:1050500080911D0390FB80F980931D030E94A12382 +:1050600080911D0386950C94D80280911D03982F82 +:10507000909590FB80F980931D030E94A12380915D +:105080001D0380FF02C0869501C080E00C94D80209 +:1050900090911D03892F86958F5F8F779170843053 +:1050A00028F4880F892B80931D0302C090931D0361 +:1050B00080911D038E7F91E009F490E080911D03A3 +:1050C00090FB80F980931D030E94A12380911D0312 +:1050D00086950C94D80220911D03922F96958927CE +:1050E000982F990F822F8170892B80931D038E7FBB +:1050F00091E009F490E080911D0390FB80F980938A +:105100001D030E94A12380911D0386950C94D80253 +:1051100080911D03869508955058BB27AA270ED06D +:10512000D1C1C2D130F0C7D120F031F49F3F11F48A +:105130001EF4B7C10EF4E095E7FB9FC1E92FD3D170 +:1051400080F3BA17620773078407950718F071F4A4 +:105150009EF5EBC10EF4E0950B2EBA2FA02D0B019E +:10516000B90190010C01CA01A0011124FF27591BAC +:1051700099F0593F50F4503E68F11A16F040A22FB2 +:10518000232F342F4427585FF3CF46953795279523 +:10519000A795F0405395C9F77EF41F16BA0B620B22 +:1051A000730B840BBAF09150A1F0FF0FBB1F661F69 +:1051B000771F881FC2F70EC0BA0F621F731F841FAC +:1051C00048F4879577956795B795F7959E3F08F0D2 +:1051D000B3CF9395880F08F09927EE0F9795879591 +:1051E000089527D108F481E008950CD06BC163D1F4 +:1051F00040F05AD130F021F45F3F19F03EC1511117 +:1052000095C14FC170D198F39923C9F35523B1F3D8 +:10521000951B550BBB27AA2762177307840738F025 +:105220009F5F5F4F220F331F441FAA1FA9F333D084 +:105230000E2E3AF0E0E830D091505040E695001C38 +:10524000CAF729D0FE2F27D0660F771F881FBB1FF4 +:10525000261737074807AB07B0E809F0BB0B802DCE +:10526000BF01FF2793585F4F2AF09E3F510568F01A +:1052700004C15CC15F3FECF3983EDCF38695779503 +:105280006795B795F7959F5FC9F7880F911D96951C +:10529000879597F90895E1E0660F771F881FBB1F78 +:1052A000621773078407BA0720F0621B730B840B25 +:1052B000BA0BEE1F88F7E095089504D06894B111F9 +:1052C00035C1089518D188F09F5790F0B92F9927CC +:1052D000B751A0F0D1F0660F771F881F991F1AF001 +:1052E000BA95C9F712C0B13081F01FD1B1E008956D +:1052F0001CC1672F782F8827B85F39F0B93FCCF3EE +:10530000869577956795B395D9F73EF490958095F6 +:10531000709561957F4F8F4F9F4F0895E89409C016 +:1053200097FB3EF490958095709561957F4F8F4FD8 +:105330009F4F9923A9F0F92F96E9BB279395F695EE +:10534000879577956795B795F111F8CFFAF4BB0F6C +:1053500011F460FF1BC06F5F7F4F8F4F9F4F16C0D0 +:10536000882311F096E911C0772321F09EE8872F5A +:10537000762F05C0662371F096E8862F70E060E016 +:105380002AF09A95660F771F881FDAF7880F96958F +:10539000879597F9089588D018F011F08CD038F4DB +:1053A00080C0C4C0E92F9FD0B0F35523C9F3E7FBF9 +:1053B0006217730784079507A8F199F3E92FFF2770 +:1053C00088232AF03197660F771F881FDAF7952F09 +:1053D0005527442332F091505040220F331F441F71 +:1053E000D2F7BB27E91BF50B621B730B840BB109CA +:1053F000C1F222F4620F731F841FB11D31972AF08E +:10540000660F771F881FBB1FEFCF915050405AF097 +:1054100041F0882332F0660F771F881F915050406B +:10542000C1F7939530C08695779567959F5FD9F7BB +:10543000F8CF990F0008550FAA0BE0E8FEEF1616FB +:105440001706E807F907C0F012161306E407F50778 +:1054500098F0621B730B840B950B39F40A2661F0EC +:10546000232B242B252B21F408950A2609F4A1408F +:10547000A6958FEF811D811D089597F99F6780E89C +:1054800070E060E008959F3F31F0915020F48795DF +:1054900077956795B795880F911D9695879597F99C +:1054A00008959FEF80EC089500240A9416161706BD +:1054B00018060906089500240A9412161306140605 +:1054C00005060895092E0394000C11F4882352F068 +:1054D000BB0F40F4BF2B11F460FF04C06F5F7F4F20 +:1054E0008F4F9F4F089557FD9058440F551F59F007 +:1054F0005F3F71F04795880F97FB991F61F09F3FC1 +:1055000079F087950895121613061406551FF2CFE9 +:105510004695F1DF08C0161617061806991FF1CF39 +:1055200086957105610508940895E894BB27662760 +:105530007727CB0197F908957CDF08F48FEF089562 +:105540000BD0C0CFB1DF28F0B6DF18F0952309F0FB +:1055500094CFA7CF1124EACFC6DFA0F3959FD1F354 +:10556000950F50E0551F629FF001729FBB27F00D11 +:10557000B11D639FAA27F00DB11DAA1F649F662766 +:10558000B00DA11D661F829F2227B00DA11D621FB5 +:10559000739FB00DA11D621F839FA00D611D221F6F +:1055A000749F3327A00D611D231F849F600D211D53 +:1055B000822F762F6A2F11249F5750408AF0E1F0F6 +:1055C00088234AF0EE0FFF1FBB1F661F771F881F3F +:1055D00091505040A9F79E3F510570F04ECFA6CF95 +:1055E0005F3FECF3983EDCF3869577956795B7952A +:1055F000F795E7959F5FC1F7FE2B880F911D969554 +:10560000879597F90895FA01EE0FFF1F309621054F +:10561000310599F16115710561F48038BFE39B078D +:1056200049F168949038810561F08038BFEF9B079D +:1056300041F0992342F5FF3FE1053105210511F1C4 +:10564000E8940894E795D901AA2329F4AB2FBE2F3B +:10565000F85FD0F310C0FF5F70F4A695E0F7F7395C +:1056600050F019F0FF3A38F49F779F930CD00F90C9 +:1056700007FC905808953EF014CF60E070E080E899 +:105680009FE308954FE79F775F934F933F932F9347 +:105690009ED02F913F914F915F9152DF05C019F439 +:1056A0000EF0EBCE42CFFDCE26DFC8F39638C0F722 +:1056B00007F80F92E8942BE33AEA48EB5FE74EDFF6 +:1056C0000F920F920F924DB75EB70F92C0D0EAE0E3 +:1056D000F1E016D04F915F91EF91FF91E595EE1FAC +:1056E000FF1F49F0FE57E0684427EE0F441FFA956C +:1056F000E1F74195550B32D00F9007FE26C0089573 +:10570000DF93CF931F930F93FF92EF92DF927B0172 +:105710008C01689405C0DA2EEF011EDFFE01E894CB +:10572000A5912591359145915591AEF3EF0106DD97 +:10573000FE019701A801DA9479F7DF90EF90FF90CE +:105740000F911F91CF91DF9108959B01AC0160E013 +:1057500070E080E89FE349CD90CE95CECCDEE8F3B3 +:105760009923D9F3940F511DBBF39150504094F0FD +:1057700059F0882332F0660F771F881F91505040F0 +:10578000C1F79E3F510544F7880F911D9695879567 +:1057900097F908955F3FACF0983E9CF0BB27869543 +:1057A00077956795B79508F4B1609395C1F7BB0FEE +:1057B00058F711F460FFE8CF6F5F7F4F8F4F9F4F17 +:1057C000E3CFB4CE0EF05FCE6CCE689456CE93DEAF +:1057D000C8F39923D1F3C6F3DF93CF931F930F93AD +:1057E000FF92C92FDD2788232AF02197660F771FA4 +:1057F000881FDAF720E030E040E85FEB9FE388396C +:1058000020F0803E30F021968F7787DCE2E3F1E0F4 +:1058100003C083DCEFE5F1E073DF8B01BE01EC0137 +:10582000FB2E6F5771097595771F880B990B78DDE3 +:1058300028E132E741E35FE38FDEAF2D9801AE014F +:10584000FF900F911F91CF91DF9178DC3BCEFA0151 +:10585000DC01AA0FBB1F9B01AC01BF5728F4222714 +:105860003327442750781FC0B75188F4AB2F00244A +:10587000469537952795011CA395D2F3002069F032 +:10588000220F331F441FB395DAF30DD045CC61309E +:105890007105A0E88A07B94630F49B01AC01662780 +:1058A000772788279078309621F0208331834283B0 +:1058B00053830895AA1BBB1B51E107C0AA1FBB1F3E +:1058C000A617B70710F0A61BB70B881F991F5A958C +:1058D000A9F780959095BC01CD01089597FB072EFF +:1058E00016F4009407D077FD09D00E945A2C07FCCB +:1058F00005D03EF4909581959F4F089570956195E0 +:105900007F4F0895EE0FFF1F0590F491E02D09944D +:10591000F999FECF92BD81BDF89A992780B5089577 +:10592000A8E1B0E042E050E00C94B02C262FF999A9 +:10593000FECF92BD81BDF89A019700B4021639F0EE +:105940001FBA20BD0FB6F894FA9AF99A0FBE0895BF +:105950000196272F0E94972C0C94962CDC01CB01EA +:10596000FC01F999FECF06C0F2BDE1BDF89A31966F +:1059700000B40D9241505040B8F70895F894FFCF0D +:10598000640007000CFF0000003F64EB0F79105625 +:10599000102210EE0F0101DF022808140A321E0047 +:1059A00002040507090B0C0E1011131517181A1C09 +:1059B0001D1F2123242628292B2D2F303234353743 +:1059C000393B1F0F03764F5F6F7F49694379095950 +:1059D00053633149803F5D8B803FF8BF803FCAE110 +:1059E000803F73ED803FCAE1803FF8BF803F5D8B11 +:1059F000803F3149803F0000803FF16D7F3F75EA75 +:105A00007E3F4C827E3F833F7E3F84287E3F833FA4 +:105A10007E3F4C827E3F75EA7E3FF16D7F3F000006 +:105A2000803F3F4D3639BB046E043804FF039203B8 +:105A3000AB03C403DD0301020304050607080900E4 +:00000001FF diff --git a/keyboard/planck/keymaps/daniel/compiled.hex b/keyboard/planck/keymaps/daniel/compiled.hex new file mode 100644 index 0000000000..d7e56a3e22 --- /dev/null +++ b/keyboard/planck/keymaps/daniel/compiled.hex @@ -0,0 +1,1448 @@ +:100000000C9495020C94D9020C94D9020C94D90248 +:100010000C94D9020C94D9020C94D9020C94D902F4 +:100020000C94D9020C94D9020C9477140C944915B1 +:100030000C94AB220C94D9020C94D9020C94D902E2 +:100040000C94D9020C943B030C94D9020C94D90261 +:100050000C94D9020C9413230C94D9020C94D90259 +:100060000C94D9020C94D9020C94D9020C94D902A4 +:100070000C94D9020C94D9020C94D9020C94D90294 +:100080000C94EC0A0C94D9020C94D9020C94D90269 +:100090000C94D9020C94D9020C94D9020C94D90274 +:1000A0000C94D9020C94D9020C94D902B615D81527 +:1000B000C616D815C6161D164016C6169516A816CD +:1000C00092199219C119C119001A201A761B761BB0 +:1000D0002B1A761BDB1ADB1A421B4B1B761B701B81 +:1000E000E81AE81AE81AE81AE81AE81AE81AE81A00 +:1000F000E81AE81AE81AE81AE81AE81AE81AE81AF0 +:10010000F81A061B0D1B141B1E1B07634236B79BF8 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A19A +:1001D000F1A2F1A3290014001A000800150017006D +:1001E0001C0018000C00120013002A002B00040051 +:1001F0001600070009000A000B000D000E000F009A +:1002000033003400E1001D001B000600190005004A +:1002100011001000360037003800E5000320E00030 +:10022000E200E30002202C002C00012050005100CD +:1002300052004F0035001E021F022002210222023E +:10024000230224022502260227022E0001000100BB +:100250000100010001000100010001000100010096 +:100260002F00300001000100010001000100010029 +:10027000010001002D002D023100010001000100EC +:10028000010001000100010001000120AB00AA00F3 +:10029000A900AE0035021E001F0020002100220030 +:1002A000230024002500260027002E023A003B00F0 +:1002B0003C003D003E003F00400041004200430042 +:1002C0004400450039003A003B003C003D003E0040 +:1002D0003F004000410042004300280001000100AF +:1002E000010001000220010001000100AB00AA0092 +:1002F000A900AE00290014001A000800150017001C +:100300001C0018000C00120013004C002B0004000D +:100310001600070009000A000B000D000E000F0078 +:1003200033003400E1001D001B0006001900050029 +:1003300011001000360037003800E5000100E00031 +:10034000E200E30002202C002C00012050005100AC +:1003500052004F0028035400680065002000500040 +:100360006C0061006E0063006B0020004B006500B4 +:10037000790062006F0061007200640000002C03CD +:100380004F007200740068006F006C0069006E001E +:1003900065006100720020004B006500790062007A +:1003A0006F00610072006400730000000403090420 +:1003B00009026D00040100A0FA0904000001030114 +:1003C0000100092111010001223F000705810308F6 +:1003D000000A0904010001030102000921110100C2 +:1003E00001224D000705820308000A0904020001EA +:1003F00003000000092111010001223600070583D6 +:100400000308000A09040300010300000009211188 +:1004100001000122390007058403100001120110B8 +:100420000100000008EDFE6060010001020001050E +:10043000010906A101050719E029E7150025019525 +:1004400008750181020508190129059505750191B5 +:1004500002950175039101050719002977150025FB +:1004600001957875018102C005010980A10185020D +:1004700016010026B7001A01002AB7007510950171 +:100480008100C0050C0901A1018503160100269C0D +:10049000021A01002A9C02751095018100C0050115 +:1004A0000902A1010901A100050919012905150089 +:1004B00025019505750181029501750381010501ED +:1004C000093009311581257F9502750881060938A3 +:1004D0001581257F950175088106050C0A380215DE +:1004E00081257F950175088106C0C005010906A117 +:1004F00001050719E029E715002501950875018117 +:1005000002950175088101050819012905950575F0 +:100510000191029501750391010507190029FF1545 +:100520000025FF950675088100C011241FBECFEF7E +:10053000DAE0DEBFCDBF04B603FE24C080911E0307 +:1005400090911F03A0912003B09121038730904B1D +:10055000A740B04BB9F410921E0310921F031092E3 +:1005600020031092210314BE84B7877F84BF88E1E3 +:100570000FB6F89480936000109260000FBEE0E028 +:10058000F8E3099511E0A0E0B1E0E0EBF9E502C085 +:1005900005900D92A03CB107D9F713E0A0ECB1E0B3 +:1005A00001C01D92AE31B107E1F70E94BD110C945C +:1005B000D62C0C9400000895089581E008950895C4 +:1005C0000C94DC020C94DD020C94DF020E94A02843 +:1005D00023E030E0281B3109220F2093C401089545 +:1005E000282F2F9880918000211108C0877F809349 +:1005F000800010928D0010928C001BC08860809348 +:100600008000233019F48FEF9FEF0FC083E090E05C +:10061000821B9109880F991F2FEF3FEFA90102C09C +:10062000569547958A95E2F7CA0190938D0080937D +:100630008C000C94E6020E94E60284E08093C301E1 +:100640001092C0010895279A2F988FEF9FEF9093F3 +:100650008700809386008AE08093800089E1809300 +:1006600081000E9409280C941B030E9423036E9AA8 +:10067000769A0C94DB021F920F920FB60F92112400 +:100680002F933F938F939F93EF93FF93E091C1013B +:10069000F091C201CF0101969093C2018093C101F4 +:1006A0000090C30102C0F695E7950A94E2F7EF7354 +:1006B0008091C001823019F4E03251F404C08130DD +:1006C00039F4EF3329F480916F008D7F80936F00B0 +:1006D000F0E0E457FE4FE49121E031E0E29FC001F9 +:1006E000E39F900D11240090C40102C09695879558 +:1006F0000A94E2F790938D0080938C00FF91EF9124 +:100700009F918F913F912F910F900FBE0F901F904F +:10071000189581E008950C94890308950C9435038D +:1007200080911502882309F448C08091D1019091ED +:10073000D201009779F40E94DD229093D201809338 +:10074000D1018091D30190E0009771F48091D401A0 +:1007500090E00AC00E94E92220910001309101013D +:100760002817390740F329C00197880F991F880F70 +:10077000991FFC01EB52FE4F608171818281938150 +:100780000E94520AE091D30184E0E89FF001112415 +:10079000EB52FE4F60817181828193814FE050E086 +:1007A0000E940A0E8091D30190E001966091D401DD +:1007B00070E00E94862C8093D3010C94E00210928A +:1007C00017020C941F0A0895089581E08093170280 +:1007D0000C94E403089508958F929F92AF92BF9274 +:1007E000EF92FF920F931F93CF93DF93CDB7DEB7B6 +:1007F000A3970FB6F894DEBF0FBECDBF7C01FC01FE +:1008000000811181C8010E94DA20B8010E94F1051F +:100810008C01B7010E948B03882309F4CCC10032FC +:10082000F0E51F0741F4F7018281882309F458C0DD +:100830000E946E0EC0C10132F0E51F0741F4F701BE +:100840008281882309F44CC00E94770EB4C1023221 +:10085000F0E51F0751F4F7018281882309F440C0B5 +:100860000E946A0E8111F0CFE3CF0332F0E51F073B +:1008700039F4F7018281882399F10E94E5039BC135 +:100880000432F0E51F0739F4F7018281882341F132 +:100890000E94DF0390C10532F0E51F0749F4F7011C +:1008A00082818823E9F0809117028111F1CFE5CF91 +:1008B0000632F0E51F0739F4F7018281882381F0C1 +:1008C0000E947E0E0AC00732F0E51F0749F4F701C7 +:1008D0008281882329F00E94890E0E94EB036BC15C +:1008E00080911702811105C0F70182818111CFC06B +:1008F00018C1003E110579F4F7018281882309F4BB +:100900004DC00E941F0A81E08093160210921502CA +:100910001092D40150C1023E110559F4F7018281B1 +:100920008823E1F10E941F0A10921602109215020C +:1009300042C1033E110591F4F7018281882371F1D0 +:100940000E941F0A1092160281E0809315021092F5 +:10095000D3011092D2011092D1012DC1023511059F +:1009600059F4F7018281882309F425C1809100019F +:10097000909101010A970DC00135110579F4F70135 +:100980008281882309F417C18091000190910101AF +:100990000A9690930101809300010DC140910401DA +:1009A00083E2EFE1F1E0DE01119601900D928A956C +:1009B000E1F7F701808121E030E02C0F3D1F280F87 +:1009C000311DC9012091020130910301FC01E20FA8 +:1009D000F31F6081772767FD7095640F711D88276D +:1009E00077FD8095982F0E94A82920E030E040E410 +:1009F00051E40E940D294B015C01F701218184E043 +:100A000090E0821B9109BC01882777FD8095982F83 +:100A10000E94A8299B01AC01C501B4010E94A52830 +:100A20009B01AC0160E070E080E090E40E941B2B31 +:100A300020E030E04CED50E40E94B82A4B015C010C +:100A4000F70182818823D1F04FE050E0C501B40165 +:100A50000E940A0E809116028823A1F08091D40191 +:100A600024E0829FF0011124EB52FE4F808291829C +:100A7000A282B3828F5F8093D40104C0C501B40108 +:100A80000E94520A0F3F110508F02ECF94C08091AA +:100A9000D00181111FC0043130E5130709F051C0A6 +:100AA0000E948D0381E08093D0010E94DD2290930B +:100AB000CF018093CE011092C7011092C90110920C +:100AC000C8011092CB011092CA011092CD01109270 +:100AD000CC0171C08091CE019091CF010E94E9229A +:100AE000883C910570F48091C701E82FF0E0EE0F8B +:100AF000FF1FE853FE4F118300838F5F8093C70170 +:100B00005AC0043880E5180721F00538104501F176 +:100B10003AC0F7018281882341F01092C50182E03A +:100B20001EC0043830E5130759F58091C5018111C5 +:100B300006C086E20E94361886E20E94FE1882E015 +:100B40001CC00438F0E51F0741F305381045D9F4FF +:100B5000F7018281882331F01092C60180E20E9461 +:100B60004D1929C08091C601811106C087E20E94FB +:100B7000361887E20E94FE1880E20E9454191BC0BA +:100B80000538104529F381E08093C5018093C601A3 +:100B9000C701A3960FB6F894DEBF0FBECDBFDF919D +:100BA000CF911F910F91FF90EF90BF90AF909F90CA +:100BB0008F900C94E20280E0A3960FB6F894DEBF0B +:100BC0000FBECDBFDF91CF911F910F91FF90EF909E +:100BD000BF90AF909F908F90089580E090E008952F +:100BE00008959CE0799FF001112490E3899FE00D26 +:100BF000F11D1124E60FF11DEE0FFF1FEC52FE4F09 +:100C0000859194910895880F991FFC01E45BFF4F33 +:100C1000859194910895880F991FFC01E453FE4F2C +:100C20008591949108950F931F93CF93DF93EC01D7 +:100C3000811521E39207A0F5C11580E3D80708F0DC +:100C4000D7C0C83ED105D8F4C03ED10508F007C2D0 +:100C5000C83AD10578F4C53AD10508F06AC0C13068 +:100C6000D10509F463C008F4F7C1C430D10508F018 +:100C7000F6C1F2C1CB3BD10508F466C0EDC1C11588 +:100C800090E2D90708F0AFC0C11521E0D20708F003 +:100C9000E6C1C03FD10508F4DFC18E0110651FC257 +:100CA000C03880E5D80700F5C03790E5D90708F0CF +:100CB000A3C0C11520E5D20709F4ACC050F4CE01A1 +:100CC000905480319F4008F0C7C1DF708E01106AD8 +:100CD00006C2C13080E5D80709F4AEC0C43190E542 +:100CE000D90708F4AFC0B8C1C33820E5D20709F46A +:100CF0008EC050F4C13890E5D90709F482C008F0DD +:100D000083C000E011EDEBC1C03181E5D80708F4E4 +:100D1000A3C1C11597E5D90708F436C1CE01905794 +:100D20008115904108F098C1DF7093C101E010E097 +:100D3000D6C1C53AD10509F494C1C63AD10509F026 +:100D400093C102E810E4CBC1C83AD10509F48FC1C0 +:100D5000C93AD10509F48EC1CA3AD10509F48DC149 +:100D6000CB3AD10509F48CC1CC3AD10509F48BC139 +:100D7000CD3AD10509F48AC1C03BD10509F489C136 +:100D8000CE3AD10509F488C1CF3AD10509F487C11B +:100D9000C13BD10509F486C1C23BD10509F485C127 +:100DA000C33BD10509F484C1C43BD10509F483C117 +:100DB000C53BD10509F482C1C63BD10509F481C107 +:100DC000C73BD10509F480C1C83BD10509F47FC1F7 +:100DD000C93BD10509F47EC1CA3BD10509F47DC1E7 +:100DE00000E014E47CC1CE019F700E940B0678C124 +:100DF000DD278E01106C73C1CF70DD278E01146D5D +:100E00006EC100E010ED6BC100E012ED68C100E0C2 +:100E100013ED65C10E94E11B0E941F0A0E94E303BB +:100E20008FEF94E32CE0815090402040E1F700C028 +:100E300000000E94382353C18091F20281608093A8 +:100E4000F2024DC10E949923811102C00E947523B4 +:100E50000E94AC2390E090931D0380931C03C2304A +:100E600080E5D80721F480911C03816086C0C430DE +:100E700090E5D90721F480911C0382607EC0C630C2 +:100E800020E5D20721F480911C03846076C0C8302D +:100E900080E5D80719F480911C0327C0CA3090E57B +:100EA000D90721F480911C03806167C0CC3020E514 +:100EB000D20721F480911C0380625FC0CE3080E5B0 +:100EC000D80721F480911C03806457C0C03190E59D +:100ED000D90721F480911C0380684FC0C23120E5FE +:100EE000D20729F480911C038460886046C0C33017 +:100EF00080E5D80721F480911C038E7F3EC0C53069 +:100F000090E5D90721F480911C038D7F36C0C7304E +:100F100020E5D20721F480911C038B7F2EC0C930BD +:100F200080E5D80719F480911C0326C0CB3090E5EA +:100F3000D90721F480911C038F7E1FC0CD3020E59E +:100F4000D20721F480911C038F7D17C0CF3080E53C +:100F5000D80721F480911C038F7B0FC0C13190E52D +:100F6000D90721F480911C038F7707C0C331D04586 +:100F700031F480911C038B7F877F80931C038091C9 +:100F80001C030E94B023ABC08D2F99278F70992727 +:100F900081309105D9F49E012370332702C0880F58 +:100FA000991F2A95E2F79C688E0144E0000F111FFB +:100FB0004A95E1F700271370802B912B53E0CC0F5B +:100FC000DD1F5A95E1F7C076DD272FC082309105ED +:100FD00031F4DC2FCC278E01016F106A80C0833082 +:100FE000910569F4CE018370992701E010E002C0F9 +:100FF000000F111F8A95E2F7C8019C680FC084306A +:101000009105B9F4CE018370992701E010E002C088 +:10101000000F111F8A95E2F7C8019A6823E0CC0FF0 +:10102000DD1F2A95E1F7C07ED7708C010C2B1D2B9C +:1010300056C08530910531F4DC2FCC278E01046F2A +:10104000106A4DC0069709F04AC0CF71DD27DC2F2A +:10105000CC278E01106243C000E010E040C08E013A +:101060003EC001E810E43BC003E810E438C002EEE3 +:1010700014E435C009EE14E432C00AEE14E42FC0C3 +:1010800005EB14E42CC006EB14E429C007EB14E4D0 +:1010900026C00CEC14E423C00DEC14E420C003E8DB +:1010A00015E41DC00AE815E41AC002E915E417C0EA +:1010B00004E915E414C001E216E411C003E216E4E9 +:1010C0000EC004E216E40BC005E216E408C006E216 +:1010D00016E405C007E216E402C00AE216E4C801FD +:1010E000DF91CF911F910F9108959CE0799FF001BE +:1010F000112490E3899FE00DF11D1124E60FF11DED +:10110000EE0FFF1FEC52FE4F85919491803E9105AA +:10111000E0F4803C910558F58133910509F46FC0E6 +:1011200048F48932910509F463C08A32910509F4C3 +:101130006DC072C089339105E9F082389105D1F014 +:101140008533910509F44DC067C0833E910581F157 +:1011500038F4803E9105B9F0823E9105D9F05CC02B +:10116000863E910561F1873E9105A1F155C00E942F +:101170000306089520911C0320FD02C021FF4CC0EE +:1011800080EE90E049C080911C0380FFF9CF89E395 +:1011900090E042C080911C0382FF0EC080911C032E +:1011A00084FF03C080E090E037C083EE90E034C05D +:1011B00080911C0382FFF2CF82EE90E02DC08091DF +:1011C0001C0383FF0BC080911C0384FDEBCF87EED3 +:1011D00090E022C080911C0383FFF5CF86EE90E063 +:1011E0001BC080911C0385FF07C089E290E014C0FA +:1011F00080911C0385FFF9CF85E390E00DC08091BD +:101200001C0386FF07C08AE290E006C080911C03A1 +:1012100086FFF9CF81E390E00E94130608950C94B5 +:10122000E402E82FF0E0E25BFE4F8081E82FEF70F0 +:10123000F0E082958F7021E030E0A90102C0440FF8 +:10124000551F8A95E2F740A308950F931F93CF93FC +:10125000DF9385B7806885BF85B7806885BFC3E0A9 +:10126000D0E001E010E0FE01E25BFE4F8081E82F5C +:10127000EF70F0E021A182958F70A80102C0440FA9 +:10128000551F8A95E2F7CA01822B81A38C2F0E94F9 +:101290001109219740F78BE090E061E070E0FC01DC +:1012A000EE5BFE4F2081E22FEF70F0E042A122952D +:1012B0002F70DB0102C0AA0FBB1F2A95E2F79D0128 +:1012C000242B22A3019758F7DF91CF911F910F9103 +:1012D0000C948E03EF92FF920F931F93CF93DF93A3 +:1012E00000E212E0C3E0EE24E394F12CD5E08C2F71 +:1012F0000E9411098BE090E040E050E0FC01EE5BC1 +:10130000FE4F6081E62FEF70F0E020A130E06295A3 +:101310006F7002C0359527956A95E2F720FD09C0E8 +:101320009701082E02C0220F331F0A94E2F7422BC6 +:10133000532B019718F7F801929182918F0184172E +:10134000950721F051834083D09305018C2F0E9493 +:101350001109C15060F68091050187FD2CC08150B4 +:10136000809305018F3F39F08FE99FE00197F1F7F6 +:1013700000C0000020C080911E0290911F02909337 +:1013800027028093260280911C0290911D02909367 +:1013900025028093240280911A0290911B0290935F +:1013A0002302809322028091180290911902909357 +:1013B0002102809320020E94900381E0DF91CF916F +:1013C0001F910F91FF90EF900895E82FF0E0EE0F3E +:1013D000FF1FE05EFD4F80819181089508950F9376 +:1013E0001F93CF9308E212E0C0E0F801929182913E +:1013F0008F010E945522C80FF2E000321F07A9F7A3 +:101400008C2FCF911F910F9108950E9499238111E4 +:1014100002C00E9475230E94BE23809307033E9A58 +:10142000809171008D7F8093710082E080939000A5 +:101430008AE18093910081E080932A02089580914F +:101440002A02811102C00E94050A10927A021092AB +:101450007902809171008D7F80937100809190005E +:101460008F738093900010923C0210923B02109276 +:10147000730210927402109275021092760210920A +:10148000720210927102E1E5F2E0A1E4B2E0119281 +:101490001192119211921D921D9282E0E137F8078C +:1014A000B1F70895CF92DF92EF92FF920F931F93BF +:1014B000CF93DF9320913B02222309F484C06B0178 +:1014C0007C0180912A02811102C00E94050A01E775 +:1014D00012E0C7E0D0E0A7019601F8019291829155 +:1014E000729162918F010E940929811131C0FE0120 +:1014F000EE0FFF1FEE0FFF1FEF5AFD4F10821182FC +:1015000012821382DE01AA0FBB1FAF5BBD4F119683 +:101510001C921E92C730D105E9F021964481558175 +:10152000668177814083518362837383148215823D +:101530001682178212968D919C91139711969C9307 +:101540008E9313961C921E92129734961296E2CFA7 +:10155000219708F68091790290917A02019797FD80 +:1015600005C090937A028093790204C010927A02A7 +:10157000109279028091790290917A0220917702FB +:10158000309178022817390724F0109278021092CF +:101590007702892BC1F4809171008D7F8093710057 +:1015A000809190008F73809390001092730210923C +:1015B00074021092750210927602109272021092CA +:1015C000710210923B02DF91CF911F910F91FF901A +:1015D000EF90DF90CF9008951F920F920FB60F9269 +:1015E00011244F925F926F927F928F929F92AF924F +:1015F000BF92CF92DF92EF92FF922F933F934F9340 +:101600005F936F937F938F939F93AF93BF93CF938A +:10161000DF93EF93FF9380913B02882309F49BC1F2 +:10162000C0917902D0917A021C161D060CF093C16C +:1016300040902B0250902C0260902D0270902E0250 +:1016400020E030E0A901C301B2010E94B42A1816BB +:101650000CF065C0C130D10509F452C08091770209 +:1016600090917802BE010E94862C7C0190937802B2 +:101670008093770280903D0290903E02A0903F02BE +:10168000B090400220E030E040E85FE3C501B401E3 +:101690000E94A52860933D0270933E0280933F0212 +:1016A00090934002F701EE0FFF1FEE0FFF1FEF5A5E +:1016B000FD4FA301920160817181828193810E941B +:1016C0000D2920E030E040E05EE30E94B82A9B0153 +:1016D000AC01C501B4010E94B42A18168CF4C701EC +:1016E0000196BE010E94862C909378028093770227 +:1016F00010923D0210923E0210923F021092400260 +:10170000E0917702F0917802EE0FFF1FEE0FFF1FBE +:10171000EF5AFD4F6081718182819381D0C0C0906A +:101720007302D0907402E0907502F090760220E08F +:1017300030E0A901C701B6010E9409292197882339 +:1017400009F4A2C0FE01EE0FFF1FEE0FFF1FEF5ABC +:10175000FD4F80809180A280B380A5019401C701D4 +:10176000B6010E94092987FF31C0A501940160E0FC +:1017700070E08CED93EC0E940D2920E030E040E415 +:1017800051E40E940D2920E030E040E05FE30E9438 +:10179000B82A9B01AC0160E070E080E090E40E9418 +:1017A0001B2B9B01AC01C501B4010E94B82A9B010F +:1017B000AC01C701B6010E94092987FF07C0A70134 +:1017C000960160E070E08CED93E439C0A5019401CE +:1017D000C701B6010E94B42A18160CF055C0A50125 +:1017E000940160E070E08CED93E40E940D2920E00C +:1017F00030E040E451E40E940D2920E030E040E078 +:101800005FE30E94B82A9B01AC0160E070E080E0D9 +:1018100090E40E941B2B9B01AC01C501B4010E9406 +:10182000B82A9B01AC01C701B6010E94B42A181660 +:101830005CF5A701960160E070E08CED93EC0E94EE +:101840000D2920E030E040E451E40E940D2920E021 +:1018500030E040E05FE30E94B82A9B01AC0160E009 +:1018600070E080E090E40E941B2B9B01AC01C7015B +:10187000B6010E94B82A6093730270937402809339 +:1018800075029093760213C0FE01EE0FFF1FEE0F5C +:10189000FF1FEF5AFD4F80819181A281B381809318 +:1018A000730290937402A0937502B09376026091D4 +:1018B000730270917402809175029091760220916A +:1018C0002802309129022F3F4FEF340731F02F5F6C +:1018D0003F4F30932902209328020E94940E6B01FF +:1018E0007C0120E034E244EF51E40E94092987FFA3 +:1018F00008C086EFC82E88E2D82E84EFE82E81E457 +:10190000F82E20E030E040E051E4C701B6010E942B +:10191000B82A9B01AC0160E074E284E79BE40E947A +:101920000D296B017C010E947A29709397006093C6 +:1019300096002091060130910701409108015091D5 +:101940000901C701B6010E94B82A0E947A29709342 +:1019500099006093980080913C02882309F433C178 +:10196000C0903702D0903802E0903902F0903A02ED +:1019700020E030E0A901C701B6010E94B42A181680 +:10198000D4F580912802909129028F3F2FEF920782 +:1019900029F001969093290280932802C701B6018D +:1019A0000E94940E20E030E040E051E40E94B82A0A +:1019B0009B01AC0160E074E284E79BE40E940D2986 +:1019C0006B017C010E947A297093970060939600C6 +:1019D00020910601309107014091080150910901C1 +:1019E000C701B6010E94B82A0E947A297093990013 +:1019F0006093980008C01092970010929600109281 +:101A000099001092980060913102709132026F5FDC +:101A10007F4F709332026093310220919600309193 +:101A2000970080E090E0232BF1F0C0919600D091D8 +:101A300097000E94A6296B017C01BE0180E090E026 +:101A40000E94A6299B01AC0160913302709134027F +:101A500080913502909136020E940D2920E03FEFDF +:101A60004FE757E410C00E94A6296B017C0120E0DB +:101A700030EE4FEF54E46091330270913402809164 +:101A80003502909136020E94B82A9B01AC01C70131 +:101A9000B6010E94B42A87FD96C080912F028F5F05 +:101AA00080932F0290E0209103033091040382176A +:101AB0009307A0F080910E03882319F010922F0253 +:101AC0000DC0809171008D7F809371008091900096 +:101AD0008F738093900010923C027DC08091300201 +:101AE000C0912F02811128C0C0900803D090090333 +:101AF000E0900A03F0900B0320E030E0A901C70159 +:101B0000B6010E94B42A1816BCF481E0809330021A +:101B100010923702109238021092390210923A0253 +:101B2000C0923302D0923402E0923502F092360233 +:101B3000C150C0932F0243C010923002109229026C +:101B400010922802E0910503F091060348E0C49F3B +:101B5000E00DF11D112480819181A281B3818093D8 +:101B6000370290933802A0933902B0933A0220E0F2 +:101B700030E040E85EE364817581868197810E9450 +:101B8000B82A6B017C0180910A01682F70E080E027 +:101B900090E00E94A62920E030E048EC52E40E9448 +:101BA0000D299B01AC01C701B6010E94B82A6093C0 +:101BB0003302709334028093350290933602109270 +:101BC0003202109231028091070380FD04C010920E +:101BD0003C0210923B02FF91EF91DF91CF91BF91B8 +:101BE000AF919F918F917F916F915F914F913F91B5 +:101BF0002F91FF90EF90DF90CF90BF90AF909F908C +:101C00008F907F906F905F904F900F900FBE0F90CE +:101C10001F901895CF92DF92EF92FF92CF93DF93B0 +:101C20006B017C01EA0180912A02811102C00E94AD +:101C3000050A8091070380FF46C080917902909148 +:101C40007A0208970CF03FC0809171008D7F8093DD +:101C5000710080913C0281110E941F0A81E08093F3 +:101C60003B02109229021092280220E030E0A901E4 +:101C7000C701B6010E94B42A1816DCF480917902DB +:101C800090917A02FC01EE0FFF1FEE0FFF1FEF5A3B +:101C9000FD4FC082D182E282F382FC01EE0FFF1F72 +:101CA000EF5BFD4FD183C083019690937A028093BE +:101CB0007902809171008260809371008091900020 +:101CC000806880939000DF91CF91FF90EF90DF903C +:101CD000CF90089580910703817008958091070344 +:101CE0008160809307030E94C2230C94EA038091D1 +:101CF00007038E7F809307030C94C22380917B029D +:101D000090E0019666E070E00E94862C80937B0252 +:101D1000089580917B0290E0019766E070E00E9458 +:101D2000862C80937B0208958F929F92AF92BF92F0 +:101D3000CF92DF92EF92FF920F931F93CF93DF9397 +:101D40006B017C01C0912802D0912902BE0180E084 +:101D500090E00E94A6294B015C01A701960160E07A +:101D600070E08CE594E40E940D299B01AC01C50153 +:101D7000B4010E94B82A0E947A2920917B02233064 +:101D800009F473C028F4222351F02130E9F02CC16A +:101D9000243009F4A0C0253009F4E0C025C180E05A +:101DA00090E0A0E0BFE38093060190930701A09329 +:101DB0000801B093090110922B0210922C0210928C +:101DC0002D0210922E0210C110922B0210922C02A2 +:101DD00010922D0210922E026431710540F46A3087 +:101DE000710560F520E030E040E85EE32BC0693C1F +:101DF000710508F0AAC080E090E00E94A62920E0CA +:101E000030E040EA51E40E94A42820E030E044E3BE +:101E100053E40E940D299B01AC010E94B82A20E0E6 +:101E200030E040E05EE30E94B82A9B01AC0160E034 +:101E300070E080E09EE30E94A42844C020E030E0EF +:101E400040E05FE3C701B6010E94B82A6B017C0144 +:101E500080E090E0A0E0BEE380930601909307014C +:101E6000A0930801B0930901BFC010922B021092F9 +:101E70002C0210922D0210922E024AE0469F9001F1 +:101E8000479F300D1124C90168EB7BE00E94722C42 +:101E9000BC016C5D754077FF03C071956195710958 +:101EA000882777FD8095982F0E94A8292EE333EC90 +:101EB0004EE259E30E94B82A20E030E040EC5EE3B5 +:101EC0000E94A52860930601709307018093080182 +:101ED0009093090189C010922B0210922C0210924B +:101EE0002D0210922E02CE0183709927892BE1F0EA +:101EF000BE016170772780E090E00E94A62920E073 +:101F000030E040E05EE30E94B82A20E030E040E4A8 +:101F10005FE30E94A52860930601709307018093F8 +:101F20000801909309010CC080E090E0A0E0BFE3BD +:101F30008093060190930701A0930801B0930901D3 +:101F4000C770DD27CD2B09F04FC01092060110920B +:101F50000701109208011092090146C010922B024D +:101F600010922C0210922D0210922E0200E010E02E +:101F700020E03FE30093060110930701209308013E +:101F8000309309016739710578F180E090E00E9493 +:101F9000A62920E030E047E153E40E94A42820E095 +:101FA00030E04AE754E40E940D2920E030E048E4A4 +:101FB00052E40E94B82A20E030E040EA51E40E9456 +:101FC000EA290E947529660F771F660F771FFB01AC +:101FD000EE5AFE4F2081318142815381C701B60103 +:101FE0000E94B82A6B017C01C701B601DF91CF9135 +:101FF0001F910F91FF90EF90DF90CF90BF90AF9027 +:102000009F908F90089580918C020895CF93DF93D5 +:1020100000D01F92CDB7DEB79C01809113038430AE +:1020200019F593E099833B832A839093E9008FEF1E +:102030009091E800815095FD06C095ED9A95F1F7D5 +:1020400000008111F5CF8091E80085FF0DC040E0D0 +:1020500050E063E070E0CE0101960E94671280912B +:10206000E8008E778093E8000F900F900F90DF913B +:10207000CF910895CF93DF9300D01F92CDB7DEB7F5 +:1020800020911303243021F522E029839B838A8346 +:1020900083E08093E9008FEF9091E800815095FDF7 +:1020A00006C095ED9A95F1F700008111F5CF80916A +:1020B000E80085FF0DC040E050E063E070E0CE0135 +:1020C00001960E9467128091E8008E778093E80065 +:1020D0000F900F900F90DF91CF91089520911303EF +:1020E0002430F1F422E02093E9002FEF3091E80052 +:1020F000215035FD06C035ED3A95F1F7000021116C +:10210000F5CF2091E80025FF0BC040E050E065E0EE +:1021100070E00E9467128091E8008E778093E8005B +:102120000895CF93DF93EC0190911303943009F05D +:1021300046C0809115018823D9F08091160188232B +:10214000B9F09093E9008FEF9091E800815095FDF0 +:1021500006C095E19A95F1F700008111F5CF8091C5 +:10216000E80085FF2CC040E050E060E170E017C05F +:1021700081E08093E9008FEF9091E800815095FD18 +:1021800006C095ED9A95F1F700008111F5CF809189 +:10219000E80085FF14C040E050E068E070E0CE0148 +:1021A0000E9467128091E8008E778093E80080E1BA +:1021B000FE01ACE7B2E001900D928A95E1F7DF9164 +:1021C000CF91089580911203811109C00E94FC13E0 +:1021D0000E9459148091E20084608093E200089587 +:1021E000109212030895089508950C94A02242E0DD +:1021F00061EC81E00E94761342E061EC82E00E9493 +:10220000761342E061EC83E00E94761342E161ECD8 +:1022100084E00C94761380911503833009F455C043 +:1022200030F4813071F0823009F48EC008958A3024 +:1022300009F47AC08B3009F460C0893009F09CC081 +:1022400020C080911403813A09F096C08091E80083 +:10225000877F8093E8008091180390911903892B60 +:1022600021F460E18CE792E003C060E080E090E060 +:1022700070E00E94B2128091E8008B778093E800B2 +:10228000089580911403813209F076C0809118037B +:1022900090911903009719F0039709F06DC0809190 +:1022A000E800877F8093E8008091E80082FD05C008 +:1022B000809113038111F8CF5FC08091F10080936A +:1022C0008C028091E8008B7753C080911403813A8F +:1022D00009F052C08091180390911903892B09F0DD +:1022E0004BC08091E800877F8093E8008091E800F0 +:1022F00080FFFCCF8091150136C08091140381329C +:10230000D9F58091180390911903892BA9F5809133 +:10231000E800877F8093E8000E94AB13809116034A +:10232000809315010C94E11B80911403813221F5F7 +:102330008091E800877F8093E8000E94AB13809132 +:10234000170380938D02089580911403813AA1F4BC +:102350008091E800877F8093E8008091E80080FF0B +:10236000FCCF80918D028093F1008091E8008E7700 +:102370008093E8000C94AB13089584B7877F84BFE3 +:1023800088E10FB6F89480936000109260000FBE51 +:1023900090E080E80FB6F89480936100909361001C +:1023A0000FBE0E944E170E94FC130E945914809188 +:1023B000E20084608093E20078940E94DF160E941D +:1023C00050178BE091E00E94FA168091130385303C +:1023D00069F40E946122809111038823B1F30E9465 +:1023E0008F22882391F30E945112EFCF0E94581739 +:1023F000ECCF292F332723303105C9F064F4213085 +:10240000310581F02230310509F043C08DE690E0BE +:1024100020EB33E042C021323105F1F022323105A8 +:1024200041F137C082E190E02DE134E036C09927D8 +:102430008130910541F08230910541F0892B49F5B9 +:10244000ECEAF3E005C0EEE7F3E002C0E4E5F3E018 +:10245000849190E09F0121C06430D8F4E62FF0E031 +:10246000EE0FFF1FE255FE4F2081318189E090E0A1 +:1024700014C0643070F470E0FB01EE0FFF1FEA55EA +:10248000FE4F20813181FB01EE55FE4F808190E0AF +:1024900004C080E090E020E030E0FA013183208346 +:1024A000089580E189BD82E189BD09B400FEFDCFB8 +:1024B0008091D8008F7D8093D8008091E000826069 +:1024C0008093E0008091E00081FDFCCF0895CF92E1 +:1024D000DF92EF92FF920F931F93CF93DF93EC0164 +:1024E0008B016A010E94CA13811133C0C114D10447 +:1024F00039F0F60180819181081B190BC80FD91F93 +:10250000E12CF12C0115110519F18091E80085FDF0 +:1025100016C08091E8008E778093E800C114D10442 +:1025200049F0F60180819181E80EF91EF182E08286 +:1025300085E00FC00E94CA13882321F30AC0899145 +:102540008093F10001501109FFEFEF1AFF0ADACF73 +:1025500080E0DF91CF911F910F91FF90EF90DF907E +:10256000CF90089520911A0330911B032617370747 +:1025700048F06115710539F42091E8002E77209319 +:10258000E80001C0B90140E061157105A9F1209191 +:102590001303222309F443C0253009F442C02091DB +:1025A000E80023FD40C02091E80022FD32C02091C8 +:1025B000E80020FFE9CF4091F3002091F20030E0E5 +:1025C000342BFC01CF016115710559F0283031051C +:1025D00040F481918093F100615071092F5F3F4F6A +:1025E000F1CF41E02830310509F040E02091E800CA +:1025F0002E772093E800C8CF4111C9CF0AC080913F +:102600001303882361F0853061F08091E80083FD39 +:102610000AC08091E80082FFF2CF80E0089582E056 +:10262000089583E0089581E0089520911A03309180 +:102630001B032617370748F06115710539F42091FF +:10264000E8002E772093E80001C0B901FC0120E0EA +:102650006115710591F180911303882309F440C03D +:10266000853009F43FC08091E80083FD3DC0809132 +:10267000E80082FD2FC08091E80080FFE9CF209123 +:10268000F3008091F20090E0922B6115710559F0F2 +:102690008830910540F424912093F10031966150E7 +:1026A00071090196F2CF21E0089709F020E08091AE +:1026B000E8008E778093E800CBCF2111CCCF0AC001 +:1026C00080911303882361F0853061F08091E800E8 +:1026D00083FD0AC08091E80082FFF2CF80E0089578 +:1026E00082E0089583E0089581E00895982F97305F +:1026F00058F59093E900981739F07091EC0020910B +:10270000ED005091F00003C0242F762F50E021FF00 +:1027100019C03091EB003E7F3093EB003091ED001B +:102720003D7F3093ED003091EB0031603093EB0052 +:102730007093EC002093ED005093F0002091EE0098 +:1027400027FF07C09F5FD3CF8F708093E90081E0A0 +:10275000089580E008958091140387FF11C080914F +:10276000E80082FD05C0809113038111F8CF11C0EC +:102770008091E8008B770BC080911303882349F088 +:102780008091E80080FFF8CF8091E8008E778093F9 +:10279000E80008952091E4003091E50095E640912D +:1027A000EC00842F817040FF22C08091E80080FD02 +:1027B0001CC080911303882391F0853091F08091A3 +:1027C000EB0085FD10C04091E4005091E5004217F8 +:1027D000530729F39A01915011F784E0089582E09C +:1027E000089583E0089581E0089580E00895409180 +:1027F000E80042FFDECF08950E946A140E9472141E +:10280000E0EEF0E0808181608083E8EDF0E080819F +:102810008F77808319BCA7EDB0E08C918E7F8C936D +:1028200080818F7E80831092120308950F931F93EF +:10283000CF93DF930E946A140E947214C8EDD0E017 +:1028400088818F77888388818068888388818F7D5D +:10285000888319BC1092130310920F031092110376 +:102860001092100300EE10E0F80180818B7F8083CE +:1028700088818160888342E060E080E00E94761376 +:10288000E1EEF0E080818E7F8083E2EEF0E08081F7 +:1028900081608083808188608083F80180818E7F61 +:1028A0008083888180618883DF91CF911F910F9110 +:1028B0000895E8EDF0E080818F7E8083E7EDF0E021 +:1028C00080818160808384E082BF81E080931203F5 +:1028D0000C941614E8EDF0E080818E7F80831092D6 +:1028E000E20008951092DA001092E10008951F921C +:1028F0000F920FB60F9211242F933F934F935F9334 +:102900006F937F938F939F93AF93BF93EF93FF93B7 +:102910008091E10082FF0BC08091E20082FF07C03E +:102920008091E1008B7F8093E1000E94DE16809110 +:10293000DA0080FF1FC08091D80080FF1BC080910B +:10294000DA008E7F8093DA008091D90080FF0DC07D +:1029500080E189BD82E189BD09B400FEFDCF81E03F +:10296000809313030E94E21005C019BC1092130358 +:102970000E94F0108091E10080FF19C08091E20078 +:1029800080FF15C08091E2008E7F8093E2008091ED +:10299000E20080618093E2008091D80080628093A1 +:1029A000D80019BC85E0809313030E94F410809135 +:1029B000E10084FF30C08091E20084FF2CC080E100 +:1029C00089BD82E189BD09B400FEFDCF8091D800A8 +:1029D0008F7D8093D8008091E1008F7E8093E1000D +:1029E0008091E2008F7E8093E2008091E20081601E +:1029F0008093E20080910F03882311F084E007C0E8 +:102A00008091E30087FD02C081E001C083E08093F4 +:102A100013030E94F5108091E10083FF29C080918B +:102A2000E20083FF25C08091E100877F8093E10071 +:102A300082E08093130310920F038091E1008E7F58 +:102A40008093E1008091E2008E7F8093E20080918C +:102A5000E20080618093E20042E060E080E00E945A +:102A600076138091F00088608093F0000E94F3104C +:102A7000FF91EF91BF91AF919F918F917F916F9156 +:102A80005F914F913F912F910F900FBE0F901F902C +:102A900018951F920F920FB60F9211242F933F9308 +:102AA0004F935F936F937F938F939F93AF93BF9356 +:102AB000CF93DF93EF93FF93C091E900CF708091A4 +:102AC000EC00D82FD17080FDD0E81092E900809101 +:102AD000F000877F8093F00078940E948D1510920B +:102AE000E9008091F00088608093F000CD2BCF70DA +:102AF000C093E900FF91EF91DF91CF91BF91AF912A +:102B00009F918F917F916F915F914F913F912F9105 +:102B10000F900FBE0F901F9018951F93CF93DF93C8 +:102B2000CDB7DEB7AA970FB6F894DEBF0FBECDBF04 +:102B3000E4E1F3E088E08E0F9091F10091938E1321 +:102B4000FBCF0E940B118091E80083FF1FC1809191 +:102B5000140390911503492F50E04A30510508F0B5 +:102B600015C1FA01EA5AFF4F0C949A2C803881F073 +:102B7000823809F00BC1809118038F708093E900AF +:102B80008091EB0085FB882780F91092E90006C050 +:102B90008091100390911103911182609091E8004F +:102BA000977F9093E8008093F1001092F100C8C0E5 +:102BB000282F2D7F09F0EAC0882319F0823061F0B8 +:102BC000E5C080911603813009F0E0C0933009F030 +:102BD00080E0809311032BC080911603811127C0E0 +:102BE000809118038F7009F4D1C08093E90020917F +:102BF000EB0020FF1CC0933021F48091EB00806239 +:102C000014C09091EB0090619093EB0021E030E0D4 +:102C1000A90102C0440F551F8A95E2F74093EA00CC +:102C20001092EA008091EB0088608093EB00109294 +:102C3000E9008091E800877F86C08111A7C01091CC +:102C400016031F778091E3008078812B8093E30047 +:102C50008091E800877F8093E8000E94AB13809109 +:102C6000E80080FFFCCF8091E30080688093E30060 +:102C7000111102C082E001C083E08093130386C07B +:102C80008058823008F082C080911603909117031B +:102C90008C3D53E0950779F583E08A838AE2898346 +:102CA0004FB7F894DE01139620E03EE051E2E32FA7 +:102CB000F0E050935700E49120FF03C0E295EF70DD +:102CC0003F5FEF708E2F90E0EA3010F0C79601C0A2 +:102CD000C0968D939D932F5F243149F74FBF80910C +:102CE000E800877F8093E8006AE270E0CE010196F9 +:102CF0000E94B21214C0AE014F5F5F4F6091180383 +:102D00000E94F911BC01009709F440C09091E800BD +:102D1000977F9093E80089819A810E941513809192 +:102D2000E8008B778093E80031C0803879F5809196 +:102D3000E800877F8093E80080910F038093F10083 +:102D40008091E8008E778093E8000E94AB131EC04C +:102D500081111CC0909116039230C0F48091E8005C +:102D6000877F8093E80090930F030E94AB138091BC +:102D70000F03811106C08091E30087FD02C081E04E +:102D800001C084E0809313030E94F7108091E80053 +:102D900083FF0AC08091E800877F8093E8008091DC +:102DA000EB0080628093EB00AA960FB6F894DEBF2A +:102DB0000FBECDBFDF91CF911F9108950895CF939E +:102DC000809113038823A1F0C091E900CF70909106 +:102DD000EC00892F817090FD80E8C82B1092E900EB +:102DE0008091E80083FD0E948D15CF70C093E900AB +:102DF000CF91089590939302809392020895E09169 +:102E00009202F0919302309721F00190F081E02D31 +:102E1000099480E00895E0919202F0919302309736 +:102E200021F00280F381E02D09940895E09192024F +:102E3000F0919302309721F00480F581E02D099400 +:102E4000089520919002309191028217930771F0BA +:102E50009093910280939002E0919202F0919302FC +:102E6000309721F00680F781E02D09940895209194 +:102E70008E0230918F028217930771F090938F0228 +:102E800080938E02E0919202F0919302309721F0AC +:102E90000084F185E02D0994089508950C944D1750 +:102EA0000E94D4220E9425090E945A230C940928CA +:102EB0005F926F927F928F929F92AF92BF92CF92CA +:102EC000DF92EF92FF920F931F93CF93DF9300D087 +:102ED00000D01F92CDB7DEB70E946A099DE9C92EC6 +:102EE00092E0D92E03E010E0AA24A394B12C502E36 +:102EF000802F0E94E5094C01F601729062906F01EB +:102F00006826792661147104A1F40150110978F73B +:102F10008FEF89838A831B820E94DD228160782F54 +:102F20009D838C8349815A816B818D810E94081811 +:102F300038C08091F20281FD0E94EE092BE030E062 +:102F40007501022E02C0EE0CFF1C0A94E2F7C701C5 +:102F500086219721892B09F129835A828E209F206F +:102F600091E0892809F490E09B830E94DD22816032 +:102F7000782F9D838C8349815A816B818D810E943A +:102F80000818000F111FF801EB56FD4F8081918149 +:102F9000E826F926F182E08204C02150310980F64A +:102FA000B4CF0E944125109194020E94FF16181779 +:102FB000D1F00E94FF16809394020F900F900F9013 +:102FC0000F900F90DF91CF911F910F91FF90EF9095 +:102FD000DF90CF90BF90AF909F908F907F906F9039 +:102FE0005F900C940F090F900F900F900F900F901F +:102FF000DF91CF911F910F91FF90EF90DF90CF90D5 +:10300000BF90AF909F908F907F906F905F9008954A +:10301000CF93DF93CDB7DEB72B970FB6F894DEBF13 +:103020000FBECDBF4F83588769877A878B87DE01B4 +:10303000119686E0FD0111928A95E9F785E0FE017F +:10304000379601900D928A95E1F749815A816B81FB +:103050007C818D819E810E947F1E2B960FB6F894F5 +:10306000DEBF0FBECDBFDF91CF910895CF938823F0 +:1030700009F4C2C0C82F823859F40E94FF1681FD9E +:10308000BBC089E30E9459210E94262289E30CC01B +:10309000833879F40E94FF1680FDAEC083E50E945C +:1030A00059210E94262283E50E949B21CF910C94F6 +:1030B0002622843859F40E94FF1682FD9DC087E4C1 +:1030C0000E9459210E94262287E4EECF8CEF8C0FBC +:1030D000813A48F48C2F0E94712781118DC08C2F6A +:1030E0000E945921E3CF80E28C0F883048F4C770EA +:1030F00081E001C0880FCA95EAF70E94DF21D6CF90 +:103100008BE58C0F833078F4C53A29F0C63A31F05C +:1031100083E890E005C081E890E002C082E890E09A +:10312000CF910C94211788E58C0F833108F064C08F +:10313000C83A39F1C93A41F1CA3A49F1CB3A51F1A9 +:10314000CC3A59F1CD3A61F1C03B69F1CE3A71F117 +:10315000CF3A79F1C13B81F1C23B89F1C33B91F197 +:10316000C43B99F1C53BA1F1C63BA9F1C73BB1F105 +:10317000C83BB9F1C93BC1F1CA3BC9F180E090E05D +:1031800038C082EE90E035C089EE90E032C08AEE21 +:1031900090E02FC085EB90E02CC086EB90E029C03A +:1031A00087EB90E026C08CEC90E023C08DEC90E0A3 +:1031B00020C083E891E01DC08AE891E01AC082E94E +:1031C00091E017C084E991E014C081E292E011C05F +:1031D00083E292E00EC084E292E00BC085E292E0CE +:1031E00008C086E292E005C087E292E002C08AE26F +:1031F00092E0CF910C943717CF910895882309F46A +:103200004BC0823859F40E94FF1681FF45C089E304 +:103210000E9459210E94262289E30CC0833871F450 +:103220000E94FF1680FF38C083E50E9459210E944A +:10323000262283E50E949B210C942622843859F48F +:103240000E94FF1682FF28C087E40E9459210E9435 +:10325000262287E4EFCF9CEF980F913A58F390E243 +:10326000980F983050F4877091E001C0990F8A95BB +:10327000EAF7892F0E94E521DFCF9BE5980F933075 +:1032800020F480E090E00C942117885A833120F4D8 +:1032900080E090E00C9437170895882321F00E9475 +:1032A000DF210C9426220895882321F00E94E52135 +:1032B0000C94262208957F928F929F92AF92BF9294 +:1032C000CF92DF92EF92FF920F931F93CF93DF93F2 +:1032D0001F92CDB7DEB77C01C62E772EFC0105818B +:1032E00002950F70128111110E94FC210E9452213F +:1032F000882379F0112369F080E28C0D883048F042 +:1033000082E00E943B210E94522191E0D82ED926D2 +:1033100001C0D12CE72DE295EF70F0E0E05AFF4FAD +:103320000C949A2C872D807F072D0F70882311F025 +:103330000295007F112389F0002309F499C180E2EE +:103340008C0D883020F4802F0E94DF2103C0802F55 +:103350000E94EF210E9426228BC18C2D0E94FE1814 +:10336000002309F4C3C180E28C0D883020F4802F43 +:103370000E94E52103C0802F0E94F5210E94262291 +:10338000B5C1872D807F972D9F70803211F4892FD2 +:1033900003C0892F8295807FCC2021F0F1E0CF16E9 +:1033A000A1F01DC0112339F0002319F1013009F5F6 +:1033B0000E940F229BC1002319F0013009F496C12D +:1033C00089830E941222898110C1112321F00630C5 +:1033D00008F08CC10EC0053008F088C106C1112369 +:1033E00059F0002331F0F701958190FF41C19F70A2 +:1033F00095830E944D197AC1002309F4F6C03EC19D +:10340000872D86958695837090E0009719F0019737 +:1034100061F06CC1112321F08C2D972D937002C0A7 +:1034200080E090E00E94211761C1112321F08C2DD2 +:10343000972D937002C080E090E00E94371756C12C +:103440008C2D112319F00E94492402C00E94B1243E +:103450000E9436254BC1872D837009F052C011118F +:1034600045C18C2D829586958770880F880F9C2D7D +:103470009F70892E912CA12CB12C082E04C0880C91 +:10348000991CAA1CBB1C0A94D2F7C4FE14C00FE0FE +:1034900010E020E030E0B901A80104C0440F551F3E +:1034A000661F771F8A95D2F7CB01BA016095709598 +:1034B0008095909503C060E070E0CB01272D2695A4 +:1034C0002695237030E02230310569F02330310534 +:1034D00089F0682979298A299B292130310571F0E1 +:1034E0000E94C71F03C1682979298A299B290E9444 +:1034F000E31FFCC00E94C71FC501B4010E94AB1F9F +:10350000F5C0112319F0872D817001C0869588239D +:1035100009F4ECC08C2D829586958770880F880FF2 +:103520009C2D9F70892E912CA12CB12C082E04C0AB +:10353000880C991CAA1CBB1C0A94D2F7C4FE14C0A8 +:103540000FE010E020E030E0B901A80104C0440F12 +:10355000551F661F771F8A95D2F7CB01BA01609578 +:1035600070958095909503C060E070E0CB01272DA9 +:10357000269526952370422F50E04230510569F080 +:103580004330510589F0682979298A299B294130DE +:10359000510571F00E94A120A9C0682979298A29C2 +:1035A0009B290E94BD20A2C00E94A120C501B40198 +:1035B0000E9485209BC08C2D90E0FC01E05EF1090B +:1035C000E531F10508F050C0E059FF4F0C949A2CFA +:1035D0000C2D0F70872D8F71112321F00E941E205A +:1035E000802F07CF0E943F20802F0E9454197EC059 +:1035F000112341F0053008F079C0872D8F710E94AA +:10360000642074C0063008F071C0F7CF112339F080 +:10361000872D8F710E941E2069C01123C9F3872D49 +:103620008F710E943F2062C0112329F0872D8F7176 +:103630000E9409205BC00E94FF1F58C0112351F057 +:10364000172D1F71812F0E941E2063E0812F0E9481 +:1036500032214CC081E00E943B21023008F446C078 +:1036600082E00E943B2142C0112331F0002381F20D +:103670008C2D0E9436183AC0002389F28C2D0E94AE +:10368000FE1834C0472D4F706C2DC7010E94ED0508 +:103690000E94231F2BC0111129C0472D4F7050E0ED +:1036A00042305105B9F04CF44115510581F04130DB +:1036B0005105E1F40E94312819C04330510569F0E9 +:1036C0004430510599F48C2D0E9483280FC00E942C +:1036D0001A280CC00E944D2809C00E94602806C00C +:1036E000472D4F706C2DC7010E94F005DD20F9F0C9 +:1036F0000E942E2180FD1BC0F70112820E9428210A +:103700000E941E20C7010E94A61B0E9428210F9024 +:10371000DF91CF911F910F91FF90EF90DF90CF90AD +:10372000BF90AF909F908F907F900C943F200F9010 +:10373000DF91CF911F910F91FF90EF90DF90CF908D +:10374000BF90AF909F908F907F9008950F931F939D +:10375000CF93DF93EC01888199812B813C81232BCE +:10376000B9F09F3F11F48F3F99F0CE010E94EC0316 +:10377000882371F0688179818A810E9424218C01DB +:103780000E94D9200E94A01FB801CE010E945B199F +:10379000DF91CF911F910F9108950E94FC210E940B +:1037A0000C220E94D1210E9426220E94E7250E941D +:1037B000362580E090E00E94211780E090E00C9494 +:1037C00037170E94EC210C94CD1B0E941921292F40 +:1037D00022952F7030E02C3031054CF42A30310521 +:1037E0006CF42250310922303105A8F407C02C3086 +:1037F000310569F02F30310551F00DC0803F69F07F +:1038000018F4803E40F409C0843F29F406C093FBBD +:10381000882780F9089580E0089581E00895CF9386 +:10382000DF9300D000D01F92CDB7DEB70F900F907E +:103830000F900F900F90DF91CF910895CF93DF936A +:1038400000D000D000D0CDB7DEB726960FB6F894E2 +:10385000DEBF0FBECDBFDF91CF9108951F93CF93F1 +:10386000DF93C0919D0216E080919E02C81799F0E7 +:10387000D0E01C9FF0011D9FF00D1124E156FD4F7B +:103880004081518162817381848195810E941E1CD7 +:103890002196C770E9CFDF91CF911F910895409194 +:1038A000CF025091D0026091D1027091D2028091EA +:1038B000D3029091D4020C941E1C8091D402829564 +:1038C0008F7009F054C08091D102882309F44FC051 +:1038D00080919D02A0919E026091CF027091D002D2 +:1038E0004091D2025091D302B6E08A1709F43FC04A +:1038F00090E041155105C1F17F3F11F46F3FA1F1F7 +:10390000B89FF001B99FF00D1124E156FD4F2181C0 +:1039100072132AC02081621327C02281211124C082 +:10392000238134812417350710F421503109241BD9 +:10393000350B283C3105C0F42091D4022F70206152 +:103940002093D40226E0289FF001299FF00D112436 +:10395000EC55FD4F80818F70806180838FEC92E009 +:103960000E94A61B0C942E1C01968770BECF089552 +:10397000CF92DF92EF92FF920F931F93CF93DF933B +:10398000CDB7DEB762970FB6F894DEBF0FBECDBFDE +:103990008C0185E0F801DE011D9601900D928A955B +:1039A000E1F7D8014C9111965C91119712966C91A8 +:1039B00012971396CD90DC9014973091CF027091AE +:1039C000D0028091D2029091D302009709F46BC18A +:1039D0007F3F19F43F3F09F466C1E090D102EE2029 +:1039E00009F4C0C02091D402C816D90628F0F60107 +:1039F000E81BF90BCF0104C0809590958C0D9D1D9F +:103A0000FF24F394883C910578F0F12C207F09F095 +:103A1000C6C07C2DD98AC88A89890E940F1C8FEC68 +:103A200092E00E94A61BB1C0822F807F09F046C0A1 +:103A3000751314C0341312C0611110C02F702061AF +:103A40002093D4020E944F1C8FEC92E00E94A61B90 +:103A50008091D402D80115968C932EC0CD2819F1EF +:103A60005F3F11F44F3FF9F0F62E61111CC08091B9 +:103A70009D0220919E0236E0821709F45AC090E020 +:103A8000389FF001399FF00D1124E156FD4F7181EF +:103A9000571306C07081471303C07281711103C0B0 +:103AA00001968770E9CFF62E662309F418C180913C +:103AB000D40281608093D402F12C11C1751308C027 +:103AC000341306C0611104C08091D402D801C3C070 +:103AD0004D875E878D859E856A8B0E94E51B6A896E +:103AE0008823E1F16623D1F12091D402822F8295BF +:103AF0008F7090E0029774F08091CF029091D00285 +:103B000098878F831986DB86CA862C87CE01079615 +:103B10000E94A61B86E0F801AFECB2E001900D9286 +:103B20008A95E1F70E945D1C0E944F1CFF24F394CC +:103B3000D6C04D875E878D859E850E941921292FCD +:103B400022952F7030E0223031050CF0BCC09F7000 +:103B500009F0B6C0805E883008F4C1C0C8010E9478 +:103B6000A61BE4CFC816D90608F453C0F601E81B1B +:103B7000F90BCF01883C910508F450C0F12C7C2D45 +:103B8000D98AC88A89890E940F1CEFECF2E086E08E +:103B9000DF011D928A95E9F70E944F1CA0C07513A2 +:103BA00014C0341312C0611110C08091D402F80106 +:103BB0008583C8010E94A61B86E0EFECF2E0DF01DE +:103BC0001D928A95E9F7FE2C8AC04D875E878D8508 +:103BD0009E856A8B0E94E51B6A89882309F4BECF03 +:103BE000662309F4BBCF2091D402822F82958F7077 +:103BF00090E002970CF48ECF8091CF029091D0028A +:103C00009A8389831B82DD82CC822E83CE0101962A +:103C10007FCF809590958C0D9D1DACCFF62E6623A1 +:103C200009F49CCF75132EC034132CC02091D402FC +:103C300020FD1FC0822F82958F70D9F0D801159674 +:103C40002C9315978F3049F08F5F982F9295907F26 +:103C5000822F8F70892B15968C93C8010E94A61B0A +:103C600086E0F801AFECB2E001900D928A95E1F7A1 +:103C700093CF86E0F801AFECB2E001900D928A9507 +:103C8000E1F72DC04D875E878D859E850E94E51BDF +:103C9000811140CF8091D40281608093D402C80109 +:103CA0000E94A61B1CC0662309F458CF4D875E876F +:103CB0008D859E850E94E51B882309F44FCF2ACF6E +:103CC000811148CF0CC0243031050CF047CF9F70D4 +:103CD00009F440CFF8019581907F09F03BCF8F2DFB +:103CE00062960FB6F894DEBF0FBECDBFDF91CF91C5 +:103CF0001F910F91FF90EF90DF90CF9008951F9349 +:103D0000CF93DF93CDB7DEB72C970FB6F894DEBF15 +:103D10000FBECDBF4F83588769877A878B879C8773 +:103D2000CE0107960E94B81C882369F08F81988580 +:103D30002A853B85232BF1F19F3F09F063C08F3F1C +:103D400009F060C037C086E0FE013796DE011196AB +:103D500001900D928A95E1F76F817885EA85FB8560 +:103D6000309741F17F3F11F46F3F21F120919E0286 +:103D700030E0C90101968770992740919D0250E07B +:103D80008417950709F447C069837A83FD83EC8320 +:103D900096E0929FD001939FB00D1124A156BD4F84 +:103DA000FE01319601900D929A95E1F780939E0263 +:103DB0000E942E1C16E080919D0290919E02891710 +:103DC000C1F1189FC001112481569D4F0E94B81C5B +:103DD000882379F1E0919D021E9FF0011124E156A4 +:103DE000FD4F4081518162817381848195810E9460 +:103DF0001E1C80919D0290E0019687709927809308 +:103E00009D02D9CF4F81588569857A858B859C85A0 +:103E10000E941E1CCFCF0E94E11B10929E021092A6 +:103E20009D02EFECF2E086E0DF011D928A95E9F752 +:103E3000C1CF2C960FB6F894DEBF0FBECDBFDF9179 +:103E4000CF911F910895EF92FF920F931F93CF93FD +:103E5000DF938C01009709F46CC0F12CEE24E394FD +:103E6000E8012196F8018491843740F4843008F009 +:103E700051C0813081F0823019F15BC0853709F47F +:103E800044C0A8F19CE7980F903708F052C08F7794 +:103E90000E94FE1841C00E5F1F4FFE01C49180E2D8 +:103EA0008C0F883048F4C7708E2D01C0880FCA95DA +:103EB000EAF70E94FF2114C08C2F0E9436182DC0F3 +:103EC0000E5F1F4FFE01C49180E28C0F883058F4C2 +:103ED000C7708E2D01C0880FCA95EAF70E9405228F +:103EE0000E9426221AC08C2F0E94FE1816C00E5F58 +:103EF0001F4FFE01C491CC2381F08FE99FE0019711 +:103F0000F1F700C00000C150F6CF0E5F1F4FFE0159 +:103F1000F49003C00E9436188E018F2D882309F477 +:103F20009FCFEFE9FFE03197F1F700C0000081502B +:103F3000F5CFDF91CF911F910F91FF90EF900895F2 +:103F400008956093D9027093DA028093DB02909314 +:103F5000DC020C94CD1B0F931F930091D90210919A +:103F6000DA022091DB023091DC02DC01CB01802BF4 +:103F7000912BA22BB32B8093D9029093DA02A093BA +:103F8000DB02B093DC021F910F910C94CD1B0F93B9 +:103F90001F930091D9021091DA022091DB02309137 +:103FA000DC02DC01CB0180239123A223B323809385 +:103FB000D9029093DA02A093DB02B093DC021F9146 +:103FC0000F910C94CD1B0F931F930091D902109168 +:103FD000DA022091DB023091DC02DC01CB01802788 +:103FE0009127A227B3278093D9029093DA02A09356 +:103FF000DB02B093DC021F910F910C94CD1B109249 +:10400000D5021092D6021092D7021092D8020C94C8 +:10401000CD1B41E050E060E070E004C0440F551F4C +:10402000661F771F8A95D2F74093D5025093D60228 +:104030006093D7027093D8020C94CD1B41E050E0FE +:1040400060E070E004C0440F551F661F771F8A951B +:10405000D2F78091D5029091D602A091D702B0916B +:10406000D802482B592B6A2B7B2B4093D5025093B7 +:10407000D6026093D7027093D8020C94CD1B41E016 +:1040800050E060E070E004C0440F551F661F771FCA +:104090008A95D2F740955095609570958091D5029C +:1040A0009091D602A091D702B091D802482359230B +:1040B0006A237B234093D5025093D6026093D702A4 +:1040C0007093D8020C94CD1B41E050E060E070E0AA +:1040D00004C0440F551F661F771F8A95D2F7809141 +:1040E000D5029091D602A091D702B091D80248276C +:1040F00059276A277B274093D5025093D6026093B5 +:10410000D7027093D8020C94CD1B0F931F9300918C +:10411000D5021091D6022091D7023091D802DC014D +:10412000CB01802B912BA22BB32B8093D5029093A4 +:10413000D602A093D702B093D8021F910F910C948E +:10414000CD1B0F931F930091D5021091D6022091A1 +:10415000D7023091D802DC01CB0180239123A22326 +:10416000B3238093D5029093D602A093D702B09345 +:10417000D8021F910F910C94CD1B0F931F930091A8 +:10418000D5021091D6022091D7023091D802DC01DD +:10419000CB0180279127A227B3278093D502909344 +:1041A000D602A093D702B093D8021F910F910C941E +:1041B000CD1B0895CF92DF92EF92FF920F931F9342 +:1041C000CF93DF938C01C090D902D090DA02E090B7 +:1041D000DB02F090DC028091D5029091D602A09192 +:1041E000D702B091D802C82AD92AEA2AFB2ACFE1FD +:1041F000D0E0D701C6010C2E04C0B695A7959795BF +:1042000087950A94D2F780FF06C0B8018C2F0E94D0 +:104210007508019721F4219760F780E001C08C2F89 +:10422000DF91CF911F910F91FF90EF90DF90CF9092 +:104230000895CF93DF93EC010E94DA20BE010E9423 +:104240007508DF91CF910895CB010E94192108953F +:104250008091DD0285958595859508958091DD0293 +:104260008770089598E0899F90011124262B209350 +:10427000DD020C941E202091DD0280958223809324 +:10428000DD02982F977069F430E0482F552747FDDD +:1042900050952417350729F08595859585950C94BB +:1042A0003F2008959091DD02977081E009F480E04D +:1042B000089590911501992321F090911601911183 +:1042C00009C02091170130911801F90132969FEF32 +:1042D00040E01FC0982F9695969596959F3050F583 +:1042E000E0911701F0911801E90FF11D877021E0AD +:1042F00030E0A90102C0440F551F8A95E2F7CA01B8 +:104300009181892B818308959F3F39F04F5F4E3013 +:1043100041F051915813F8CF0DC05111F7CF942FA0 +:10432000F5CF9F3F39F0F901E90FF11D97FDFA959F +:1043300082830895089590911501992321F0909119 +:104340001601911109C02091170130911801F9014E +:104350003296205F3F4F1FC0982F96959695969561 +:104360009F30F0F4E0911701F0911801E90FF11D71 +:10437000877021E030E0A90102C0440F551F8A95E3 +:10438000E2F7CA018095918189238183089531964E +:10439000E217F30729F090819813F9CF1082F7CF35 +:1043A000089581E090E0E0911701F0911801E80F85 +:1043B000F91F1082019680319105A9F70895909117 +:1043C000F102892B8093F102089580959091F1027A +:1043D00089238093F10208951092F102089590913B +:1043E000F002892B8093F002089580959091F0025D +:1043F00089238093F00208951092F002089590911D +:10440000EF02892B8093EF02089580959091EF023F +:1044100089238093EF0208951092EF02089580930C +:10442000DE0208951092DE020895809117019091A6 +:104430001801FC0131969C01205F3F4F80E0919173 +:1044400091118F5FE217F307D1F70895E0911701FB +:10445000F09118018091F1028083E0911701F091B1 +:10446000180190818091F002892B8083E0911701DF +:10447000F091180190818091EF02892B80838091C7 +:10448000DE02882361F0E0911701F091180190811C +:10449000892B80830E94152281111092DE02809167 +:1044A0001701909118010C940B1720E0009739F038 +:1044B000AC0141505109842395232F5FF7CF822F00 +:1044C000089580911303843039F11092F30220E4AF +:1044D00088E190E00FB6F894A895809360000FBE35 +:1044E0002093600080E00E94F00280E00E940F09AB +:1044F00083B7817F846083BF83B7816083BF7894F3 +:10450000889583B78E7F83BF88E10FB6F894809338 +:104510006000109260000FBE08950895089580E035 +:104520000E94F0020E948D220E946A090E948E223F +:104530000E94EF0991E0811101C090E0892F089558 +:104540000E94E11B80E00E94F0020E9409280E9464 +:10455000FF160C940F091F920F920FB60F921124A1 +:104560008F939F93AF93BF938091F302811113C0F8 +:104570008091F4029091F502A091F602B091F702B9 +:104580004196A11DB11D8093F4029093F502A09372 +:10459000F602B093F702BF91AF919F918F910F9068 +:1045A0000FBE0F901F90189582E084BD93E095BDDB +:1045B0009AEF97BD80936E0008952FB7F89480917D +:1045C000F4029091F502A091F602B091F7022FBF8C +:1045D0000895CF92DF92EF92FF920F931F932FB720 +:1045E000F8944091F4025091F5026091F6027091B6 +:1045F000F7022FBF6A017B01EE24FF248C0120E02B +:1046000030E0C016D106E206F30610F4415051091D +:104610009A01281B390BC9011F910F91FF90EF9050 +:10462000DF90CF9008951F920F920FB60F92112432 +:104630008F939F93AF93BF938091F4029091F50273 +:10464000A091F602B091F7020196A11DB11D8093D1 +:10465000F4029093F502A093F602B093F702BF9193 +:10466000AF919F918F910F900FBE0F901F90189553 +:104670000E94FC13F8942FEF87EA91E621508040C6 +:104680009040E1F700C0000087E090EBDC018093F0 +:104690001E0390931F03A0932003B09321039CE07B +:1046A00088E10FB6F894A895809360000FBE9093B0 +:1046B0006000FFCF0E949923811102C00E947523E0 +:1046C0000E94A4238093F2020E94AC2380931C03D7 +:1046D00087FB882780F9809316010E94A823682F02 +:1046E00070E080E090E00C94A11F6DEE7EEF80E022 +:1046F00090E00E94C02C60E082E090E00E94AE2C2E +:1047000060E083E090E00E94AE2C60E084E090E006 +:104710000E94AE2C60E085E090E00E94AE2C60E04C +:1047200086E090E00E94AE2C6FEF87E090E00C9462 +:10473000AE2C80E090E00E94A82C21E08D3E9E4FA0 +:1047400009F020E0822F089582E090E00C94A02CE4 +:1047500083E090E00C94A02C84E090E00C94A02CDA +:10476000682F84E090E00C94AE2C86E090E00C94EE +:10477000A02C682F86E090E00C94AE2C87E090E0AF +:104780000C94A02C682F87E090E00C94AE2C8091C4 +:10479000FA0280FF0BC060911C0185E0689FB001A8 +:1047A000112475956795759567952BC081FF09C094 +:1047B00060911C0185E0689FB00111247595679593 +:1047C00020C082FF07C060911C0185E0689FB00196 +:1047D000112417C09091FB029923D1F060911B0125 +:1047E000961788F720911C0185E0289F90011124DD +:1047F000929FA001939F500D112470E0CA010E9466 +:10480000862C6038710540F46115710539F002C0DD +:1048100065E070E0862F08958FE7089581E00895A0 +:104820008091FA0280FF08C060911A0170E07595CE +:1048300067957595679521C081FF06C060911A0143 +:1048400070E07595679519C082FF04C060911A01E8 +:1048500070E010C09091FB029923C1F060911901A2 +:104860009617A0F780911A01899FC001112470E06A +:104870000E94862C6038710528F46115710521F0BD +:10488000862F08958FE7089581E0089561E070E034 +:10489000F4CF803F21F40E94C723819504C0813F5B +:1048A00029F40E94C7238093FE020895823F21F4D9 +:1048B0000E94C723819504C0833F29F40E94C72327 +:1048C0008093FD020895893F19F40E94102405C0C9 +:1048D0008A3F31F40E94102481958093FF0208954D +:1048E0008B3F21F40E941024819504C08C3F29F451 +:1048F0000E941024809300030895843F21F4809146 +:10490000FC02816017C0853F21F48091FC02826027 +:1049100011C0863F21F48091FC0284600BC0873F68 +:1049200021F48091FC02886005C0883F31F48091B9 +:10493000FC0280618093FC0208958D3F21F48091F8 +:10494000FA0281600BC08E3F21F48091FA028260EE +:1049500005C08F3F29F48091FA0284608093FA02A7 +:104960000895803F39F48091FE0287FF6CC0109259 +:10497000FE0269C0813F29F48091FE021816BCF343 +:1049800062C09091FD02823F29F497FF5CC01092B3 +:10499000FD0259C0833F19F41916CCF354C0893F66 +:1049A00041F48091FF0218160CF04DC01092FF02E6 +:1049B0004AC08A3F29F48091FF0287FF44C0F6CFA6 +:1049C0008B3F39F48091000387FF3DC010920003B4 +:1049D0003AC08C3F29F4809100031816BCF333C011 +:1049E000843F21F48091FC028E7F17C0853F21F423 +:1049F0008091FC028D7F11C0863F21F48091FC02E2 +:104A00008B7F0BC0873F21F48091FC02877F05C01C +:104A1000883F31F48091FC028F7E8093FC0213C0AA +:104A20008D3F21F48091FA028E7F0BC08E3F21F4DE +:104A30008091FA028D7F05C08F3F29F48091FA02A0 +:104A40008B7F8093FA028091FD0281110EC08091CC +:104A5000FE0281110AC08091FF02811106C080917F +:104A60000003811102C01092FB0208958CEF92E0C6 +:104A70000E9416170E94DD229093F9028093F8029B +:104A800008951F93CF93DF938091F8029091F902DC +:104A90000E94E922AC019091FB02992321F0209120 +:104AA0001D0130E006C020911E018AE0289F900180 +:104AB00011244217530708F486C08091FD02C0916B +:104AC000FE02D091FF0210910003811107C0C111B5 +:104AD00076C0D11174C0111172C075C09F3F19F01A +:104AE0009F5F9093FB02181624F40E94C7238093C3 +:104AF000FD028091FD0287FF05C00E94C7238195BA +:104B00008093FD021C1624F40E94C7238093FE02AA +:104B10008091FE0287FF05C00E94C7238195809384 +:104B2000FE026091FD02662339F1C091FE02CC23A2 +:104B300019F1772767FD7095872F972F0E94A82975 +:104B400023E333E343E35FE30E94B82A0E9475291D +:104B50006093FD026C2F772767FD7095872F972F45 +:104B60000E94A82923E333E343E35FE30E94B82ACA +:104B70000E9475296093FE021D1624F40E941024E1 +:104B80008093FF028091FF0287FF05C00E941024DE +:104B900081958093FF02111624F40E9410248093C3 +:104BA00000038091000387FF05C00E9410248195B7 +:104BB00080930003DF91CF911F910C9436259F3F86 +:104BC00009F08ECF96CFDF91CF911F910895ECEF32 +:104BD000F2E085E0DF011D928A95E9F71092FB0271 +:104BE0001092FA020895833081F128F4813059F04F +:104BF0008230D1F00895853009F449C0B8F186308B +:104C000009F456C0089580911E01262F30E0280F28 +:104C1000311D2F3F310524F4680F60931E01089564 +:104C20008FEF80931E01089580911D01262F30E0A3 +:104C3000280F311D2F3F310524F4680F60931D01AB +:104C400008958FEF80931D01089580911C01262FF8 +:104C500030E0280F311D2F3F310524F4680F609399 +:104C60001C0108958FEF80931C01089580911B0112 +:104C7000262F30E0280F311D2F3F310524F4680F17 +:104C800060931B0108958FEF80931B01089580911D +:104C90001A01262F30E0280F311D2F3F310524F453 +:104CA000680F60931A0108958FEF80931A01089599 +:104CB00080911901262F30E0280F311D2F3F31053B +:104CC00024F4680F6093190108958FEF8093190100 +:104CD0000895833011F128F4813049F0823091F049 +:104CE0000895853081F120F18630C1F108958091D9 +:104CF0001E01681720F4861B80931E0108951092F0 +:104D00001E01089580911D01681720F4861B809371 +:104D10001D01089510921D01089580911C016817CE +:104D200020F4861B80931C01089510921C010895A5 +:104D300080911B01681720F4861B80931B01089546 +:104D400010921B01089580911A01681720F4861BA8 +:104D500080931A01089510921A0108958091190103 +:104D6000681720F4861B8093190108951092190189 +:104D700008950F931F93873208F048C08E3108F0D2 +:104D80008DC0803109F477C008F5873009F461C01F +:104D900068F4863009F09DC08091F202817F8E7F99 +:104DA0008093F20281E08093020394C08B3009F477 +:104DB00089C08E3009F08DC08091F20282FB2227DB +:104DC00020F991E0922790FB82F95EC0863109F4C8 +:104DD00079C060F4813109F07CC00E94E11B9091A0 +:104DE000160181E08927809316016CC0893109F48E +:104DF00069C08B3109F06DC08091F20281FB2227DE +:104E000020F991E0922790FB81F93EC0883309F4A4 +:104E100059C050F4893209F457C0853309F454C09D +:104E2000873209F451C055C0833409F44DC028F4C9 +:104E30008A3308F44EC0895332C0883409F049C01F +:104E40000E94E11B0E941F0A0E94E3030E94382374 +:104E500039C09091F202892F8095817080FB90F982 +:104E600029F0966098609093F20234C0997F977F02 +:104E70009093F20227C08091F20283FB222720F94F +:104E800091E0922790FB83F98093F2029923D1F06D +:104E90008091F20281608093F20214C08D5141E052 +:104EA00050E060E070E08A019B0104C0000F111F18 +:104EB000221F331F8A95D2F7C901B8010E94A11F92 +:104EC0000E94E11B81E006C061E070E080E090E0BC +:104ED000F5CF80E01F910F91089580E0089580E064 +:104EE0000895CF93C82F80910203813069F018F0A4 +:104EF0008230C9F184C0E0911701F09118018081DE +:104F0000823209F07EC007C0E0911701F0911801CC +:104F10008081823261F48C2F0E946D27811104C040 +:104F20008C2F0E94B9261DC081E090E01AC08C2F02 +:104F30000E946F27811114C0C43179F048F4CB303E +:104F400079F0C03109F061C082E08093020308C0AB +:104F5000C93219F0C83321F058C01092020355C06D +:104F600081E0817054C0C93291F120F5C43179F1EA +:104F7000B0F4C73009F047C08EE180931E0182E390 +:104F800080931D018AE080931C0184E180931B01C2 +:104F900088E080931A0188E28093190134C0CE51D1 +:104FA000C63088F5EC2FF0E0EA54FE4F8081809304 +:104FB000010329C0CE34E9F020F4CB3421F56AE0B6 +:104FC00013C0C13579F0C235F1F461E00DC08091B4 +:104FD0000103882319F01092010315C081E080932A +:104FE000020315C061E006C0809101030E94F32511 +:104FF0000AC06AE0809101030E94692604C01092F1 +:10500000020380E004C081E002C080E0AACFCF911B +:1050100008950E949923811102C00E9475230E9465 +:10502000B52380931D0380FF02C0869501C080E0F8 +:105030000C94F00280911D03982F9695292F30E053 +:10504000233031054CF49F5F990F8170892B81606B +:1050500080931D030E94B92380911D0386950C94B3 +:10506000F00280911D03982F969591F09158990F19 +:105070008170892B80931D038E7F91E009F490E06D +:1050800080911D0390FB80F980931D030E94B9233A +:1050900080911D0386950C94F00280911D03982F3A +:1050A000909590FB80F980931D030E94B923809115 +:1050B0001D0380FF02C0869501C080E00C94F002C1 +:1050C00090911D03892F86958F5F8F779170843023 +:1050D00028F4880F892B80931D0302C090931D0331 +:1050E00080911D038E7F91E009F490E080911D0373 +:1050F00090FB80F980931D030E94B92380911D03CA +:1051000086950C94F00220911D03922F9695892785 +:10511000982F990F822F8170892B80931D038E7F8A +:1051200091E009F490E080911D0390FB80F9809359 +:105130001D030E94B92380911D0386950C94F002F3 +:1051400080911D03869508955058BB27AA270ED03D +:10515000D1C1C2D130F0C7D120F031F49F3F11F45A +:105160001EF4B7C10EF4E095E7FB9FC1E92FD3D140 +:1051700080F3BA17620773078407950718F071F474 +:105180009EF5EBC10EF4E0950B2EBA2FA02D0B016E +:10519000B90190010C01CA01A0011124FF27591B7C +:1051A00099F0593F50F4503E68F11A16F040A22F82 +:1051B000232F342F4427585FF3CF469537952795F3 +:1051C000A795F0405395C9F77EF41F16BA0B620BF2 +:1051D000730B840BBAF09150A1F0FF0FBB1F661F39 +:1051E000771F881FC2F70EC0BA0F621F731F841F7C +:1051F00048F4879577956795B795F7959E3F08F0A2 +:10520000B3CF9395880F08F09927EE0F9795879560 +:10521000089527D108F481E008950CD06BC163D1C3 +:1052200040F05AD130F021F45F3F19F03EC15111E6 +:1052300095C14FC170D198F39923C9F35523B1F3A8 +:10524000951B550BBB27AA2762177307840738F0F5 +:105250009F5F5F4F220F331F441FAA1FA9F333D054 +:105260000E2E3AF0E0E830D091505040E695001C08 +:10527000CAF729D0FE2F27D0660F771F881FBB1FC4 +:10528000261737074807AB07B0E809F0BB0B802D9E +:10529000BF01FF2793585F4F2AF09E3F510568F0EA +:1052A00004C15CC15F3FECF3983EDCF386957795D3 +:1052B0006795B795F7959F5FC9F7880F911D9695EC +:1052C000879597F90895E1E0660F771F881FBB1F48 +:1052D000621773078407BA0720F0621B730B840BF5 +:1052E000BA0BEE1F88F7E095089504D06894B111C9 +:1052F00035C1089518D188F09F5790F0B92F99279C +:10530000B751A0F0D1F0660F771F881F991F1AF0D0 +:10531000BA95C9F712C0B13081F01FD1B1E008953C +:105320001CC1672F782F8827B85F39F0B93FCCF3BD +:10533000869577956795B395D9F73EF490958095C6 +:10534000709561957F4F8F4F9F4F0895E89409C0E6 +:1053500097FB3EF490958095709561957F4F8F4FA8 +:105360009F4F9923A9F0F92F96E9BB279395F695BE +:10537000879577956795B795F111F8CFFAF4BB0F3C +:1053800011F460FF1BC06F5F7F4F8F4F9F4F16C0A0 +:10539000882311F096E911C0772321F09EE8872F2A +:1053A000762F05C0662371F096E8862F70E060E0E6 +:1053B0002AF09A95660F771F881FDAF7880F96955F +:1053C000879597F9089588D018F011F08CD038F4AB +:1053D00080C0C4C0E92F9FD0B0F35523C9F3E7FBC9 +:1053E0006217730784079507A8F199F3E92FFF2740 +:1053F00088232AF03197660F771F881FDAF7952FD9 +:105400005527442332F091505040220F331F441F40 +:10541000D2F7BB27E91BF50B621B730B840BB10999 +:10542000C1F222F4620F731F841FB11D31972AF05D +:10543000660F771F881FBB1FEFCF915050405AF067 +:1054400041F0882332F0660F771F881F915050403B +:10545000C1F7939530C08695779567959F5FD9F78B +:10546000F8CF990F0008550FAA0BE0E8FEEF1616CB +:105470001706E807F907C0F012161306E407F50748 +:1054800098F0621B730B840B950B39F40A2661F0BC +:10549000232B242B252B21F408950A2609F4A1405F +:1054A000A6958FEF811D811D089597F99F6780E86C +:1054B00070E060E008959F3F31F0915020F48795AF +:1054C00077956795B795880F911D9695879597F96C +:1054D00008959FEF80EC089500240A94161617068D +:1054E00018060906089500240A94121613061406D5 +:1054F00005060895092E0394000C11F4882352F038 +:10550000BB0F40F4BF2B11F460FF04C06F5F7F4FEF +:105510008F4F9F4F089557FD9058440F551F59F0D6 +:105520005F3F71F04795880F97FB991F61F09F3F90 +:1055300079F087950895121613061406551FF2CFB9 +:105540004695F1DF08C0161617061806991FF1CF09 +:1055500086957105610508940895E894BB27662730 +:105560007727CB0197F908957CDF08F48FEF089532 +:105570000BD0C0CFB1DF28F0B6DF18F0952309F0CB +:1055800094CFA7CF1124EACFC6DFA0F3959FD1F324 +:10559000950F50E0551F629FF001729FBB27F00DE1 +:1055A000B11D639FAA27F00DB11DAA1F649F662736 +:1055B000B00DA11D661F829F2227B00DA11D621F85 +:1055C000739FB00DA11D621F839FA00D611D221F3F +:1055D000749F3327A00D611D231F849F600D211D23 +:1055E000822F762F6A2F11249F5750408AF0E1F0C6 +:1055F00088234AF0EE0FFF1FBB1F661F771F881F0F +:1056000091505040A9F79E3F510570F04ECFA6CF64 +:105610005F3FECF3983EDCF3869577956795B795F9 +:10562000F795E7959F5FC1F7FE2B880F911D969523 +:10563000879597F90895FA01EE0FFF1F309621051F +:10564000310599F16115710561F48038BFE39B075D +:1056500049F168949038810561F08038BFEF9B076D +:1056600041F0992342F5FF3FE1053105210511F194 +:10567000E8940894E795D901AA2329F4AB2FBE2F0B +:10568000F85FD0F310C0FF5F70F4A695E0F7F7392C +:1056900050F019F0FF3A38F49F779F930CD00F9099 +:1056A00007FC905808953EF014CF60E070E080E869 +:1056B0009FE308954FE79F775F934F933F932F9317 +:1056C0009ED02F913F914F915F9152DF05C019F409 +:1056D0000EF0EBCE42CFFDCE26DFC8F39638C0F7F2 +:1056E00007F80F92E8942BE33AEA48EB5FE74EDFC6 +:1056F0000F920F920F924DB75EB70F92C0D0EAE0B3 +:10570000F1E016D04F915F91EF91FF91E595EE1F7B +:10571000FF1F49F0FE57E0684427EE0F441FFA953B +:10572000E1F74195550B32D00F9007FE26C0089542 +:10573000DF93CF931F930F93FF92EF92DF927B0142 +:105740008C01689405C0DA2EEF011EDFFE01E8949B +:10575000A5912591359145915591AEF3EF0106DD67 +:10576000FE019701A801DA9479F7DF90EF90FF909E +:105770000F911F91CF91DF9108959B01AC0160E0E3 +:1057800070E080E89FE349CD90CE95CECCDEE8F383 +:105790009923D9F3940F511DBBF39150504094F0CD +:1057A00059F0882332F0660F771F881F91505040C0 +:1057B000C1F79E3F510544F7880F911D9695879537 +:1057C00097F908955F3FACF0983E9CF0BB27869513 +:1057D00077956795B79508F4B1609395C1F7BB0FBE +:1057E00058F711F460FFE8CF6F5F7F4F8F4F9F4FE7 +:1057F000E3CFB4CE0EF05FCE6CCE689456CE93DE7F +:10580000C8F39923D1F3C6F3DF93CF931F930F937C +:10581000FF92C92FDD2788232AF02197660F771F73 +:10582000881FDAF720E030E040E85FEB9FE388393B +:1058300020F0803E30F021968F7787DCE2E3F1E0C4 +:1058400003C083DCEFE5F1E073DF8B01BE01EC0107 +:10585000FB2E6F5771097595771F880B990B78DDB3 +:1058600028E132E741E35FE38FDEAF2D9801AE011F +:10587000FF900F911F91CF91DF9178DC3BCEFA0121 +:10588000DC01AA0FBB1F9B01AC01BF5728F42227E4 +:105890003327442750781FC0B75188F4AB2F00241A +:1058A000469537952795011CA395D2F3002069F002 +:1058B000220F331F441FB395DAF30DD045CC61306E +:1058C0007105A0E88A07B94630F49B01AC01662750 +:1058D000772788279078309621F020833183428380 +:1058E00053830895AA1BBB1B51E107C0AA1FBB1F0E +:1058F000A617B70710F0A61BB70B881F991F5A955C +:10590000A9F780959095BC01CD01089597FB072ECE +:1059100016F4009407D077FD09D00E94722C07FC82 +:1059200005D03EF4909581959F4F089570956195AF +:105930007F4F0895EE0FFF1F0590F491E02D09941D +:10594000F999FECF92BD81BDF89A992780B5089547 +:10595000A8E1B0E042E050E00C94C82C262FF99961 +:10596000FECF92BD81BDF89A019700B4021639F0BE +:105970001FBA20BD0FB6F894FA9AF99A0FBE08958F +:105980000196272F0E94AF2C0C94AE2CDC01CB018A +:10599000FC01F999FECF06C0F2BDE1BDF89A31963F +:1059A00000B40D9241505040B8F70895F894FFCFDD +:1059B000640007000CFF0000003F64031091106EAC +:1059C000103A1006100101DF022808140A321E00E6 +:1059D00002040507090B0C0E1011131517181A1CD9 +:1059E0001D1F2123242628292B2D2F303234353713 +:1059F000393B1F0F03764F5F6F7F49694379095920 +:105A000053633149803F5D8B803FF8BF803FCAE1DF +:105A1000803F73ED803FCAE1803FF8BF803F5D8BE0 +:105A2000803F3149803F0000803FF16D7F3F75EA44 +:105A30007E3F4C827E3F833F7E3F84287E3F833F74 +:105A40007E3F4C827E3F75EA7E3FF16D7F3F0000D6 +:105A5000803F3F4D3639EB049E0468042F04C20397 +:105A6000DB03F4030D040102030405060708090023 +:00000001FF diff --git a/keyboard/planck/keymaps/david/compiled.hex b/keyboard/planck/keymaps/david/compiled.hex new file mode 100644 index 0000000000..c78779128e --- /dev/null +++ b/keyboard/planck/keymaps/david/compiled.hex @@ -0,0 +1,1449 @@ +:100000000C9496020C94DA020C94DA020C94DA0244 +:100010000C94DA020C94DA020C94DA020C94DA02F0 +:100020000C94DA020C94DA020C9478140C944A15AD +:100030000C94AC220C94DA020C94DA020C94DA02DE +:100040000C94DA020C943C030C94DA020C94DA025D +:100050000C94DA020C9414230C94DA020C94DA0255 +:100060000C94DA020C94DA020C94DA020C94DA02A0 +:100070000C94DA020C94DA020C94DA020C94DA0290 +:100080000C94ED0A0C94DA020C94DA020C94DA0265 +:100090000C94DA020C94DA020C94DA020C94DA0270 +:1000A0000C94DA020C94DA020C94DA02B715D91522 +:1000B000C716D915C7161E164116C7169616A916C5 +:1000C00093199319C219C219011A211A771B771BA8 +:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 +:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 +:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 +:10010000F91A071B0E1B151B1F1B07634236B79BF3 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A299 +:1001D000F1A3018C028C14001A000800150017000E +:1001E0002A001C0018000C00120013002A00040052 +:1001F0001600070009000A0028000B000D000E0081 +:100200000F00330034001D001B000600190005001C +:1002100029001100100036003700380028000A308D +:10022000E000E200E30002202C002C00012050003E +:10023000510052004F002B0014001A000900130057 +:100240000A000D000F0018001C0033002A002900CE +:10025000040015001600170007000B00110008002D +:100260000C0012003400E1001D001B000600190004 +:1002700005000E0010003600370038002800C300CB +:10028000E000E200E30002202C002C0001205000DE +:10029000510052004F0035001E001F0020002100B9 +:1002A0002200230024002500260027002A00010048 +:1002B0000320042000500030013002302D002E00B9 +:1002C0002F003000310001004400450000300130B3 +:1002D00002300330043005300630073001000100E1 +:1002E0000100010001000100010001000120AB003C +:1002F000AA00A900AE0035021E021F022002210240 +:100300002202230224022502260227022A000100DB +:100310000320042000500030013002302D022E0254 +:100320002F023002310201003A003B003C003D0048 +:100330003E003F0040004100420043000100010038 +:100340000100010001000220010001000100AB00DA +:10035000AA00A900AE002803540068006500200030 +:1003600050006C0061006E0063006B0020004B00C9 +:100370006500790062006F00610072006400000097 +:100380002C034F007200740068006F006C0069005D +:100390006E0065006100720020004B00650079006E +:1003A00062006F00610072006400730000000403CB +:1003B000090409026D00040100A0FA09040000010B +:1003C00003010100092111010001223F00070581FD +:1003D0000308000A090401000103010200092111B8 +:1003E000010001224D000705820308000A090402EA +:1003F000000103000000092111010001223600075D +:1004000005830308000A0904030001030000000932 +:100410002111010001223900070584031000011297 +:1004200001100100000008EDFE6060010001020003 +:100430000105010906A101050719E029E7150025B5 +:1004400001950875018102050819012905950575B1 +:10045000019102950175039101050719002977158E +:10046000002501957875018102C005010980A1016F +:10047000850216010026B7001A01002AB700751080 +:1004800095018100C0050C0901A101850316010039 +:10049000269C021A01002A9C02751095018100C059 +:1004A00005010902A1010901A10005091901290598 +:1004B00015002501950575018102950175038101DE +:1004C0000501093009311581257F950275088106DE +:1004D00009381581257F950175088106050C0A38B4 +:1004E000021581257F950175088106C0C0050109A7 +:1004F00006A101050719E029E715002501950875F2 +:1005000001810295017508810105081901290595E8 +:1005100005750191029501750391010507190029DF +:10052000FF150025FF950675088100C011241FBE28 +:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A +:100540001E0390911F03A0912003B09121038730D7 +:10055000904BA740B04BB9F410921E0310921F03AA +:10056000109220031092210314BE84B7877F84BFAA +:1005700088E10FB6F89480936000109260000FBE7F +:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 +:1005900002C005900D92A03CB107D9F713E0A0EC82 +:1005A000B1E001C01D92AE31B107E1F70E94BE116A +:1005B0000C94D72C0C9400000895089581E00895C0 +:1005C00008950C94DD020C94DE020C94E0020E946B +:1005D000A12823E030E0281B3109220F2093C40119 +:1005E0000895282F2F9880918000211108C0877FBF +:1005F0008093800010928D0010928C001BC0886048 +:1006000080938000233019F48FEF9FEF0FC083E0B9 +:1006100090E0821B9109880F991F2FEF3FEFA901EE +:1006200002C0569547958A95E2F7CA0190938D00CE +:1006300080938C000C94E7020E94E70284E0809390 +:10064000C3011092C0010895279A2F988FEF9FEF52 +:1006500090938700809386008AE08093800089E1F0 +:10066000809381000E940A280C941C030E9424039A +:100670006E9A769A0C94DC021F920F920FB60F922C +:1006800011242F933F938F939F93EF93FF93E091C8 +:10069000C101F091C201CF0101969093C2018093F4 +:1006A000C1010090C30102C0F695E7950A94E2F7F4 +:1006B000EF738091C001823019F4E03251F404C02C +:1006C000813039F4EF3329F480916F008D7F80936E +:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B +:1006E000C001E39F900D11240090C40102C09695B3 +:1006F00087950A94E2F790938D0080938C00FF9188 +:10070000EF919F918F913F912F910F900FBE0F907E +:100710001F90189581E008950C948A0308950C9415 +:10072000360380911502882309F448C08091D101D5 +:100730009091D201009779F40E94DE229093D20129 +:100740008093D1018091D30190E0009771F4809162 +:10075000D40190E00AC00E94EA2220910001309169 +:1007600001012817390740F329C00197880F991F05 +:10077000880F991FFC01EB52FE4F608171818281CD +:1007800093810E94530AE091D30184E0E89FF00135 +:100790001124EB52FE4F60817181828193814FE081 +:1007A00050E00E940B0E8091D30190E00196609181 +:1007B000D40170E00E94872C8093D3010C94E10255 +:1007C000109217020C94200A0895089581E08093F6 +:1007D00017020C94E503089508958F929F92AF92AB +:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA +:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 +:10080000FC0100811181C8010E94DB20B8010E9417 +:10081000F2058C01B7010E948C03882309F4CCC136 +:100820000032F0E51F0741F4F7018281882309F4C3 +:1008300058C00E946F0EC0C10132F0E51F0741F49D +:10084000F7018281882309F44CC00E94780EB4C15C +:100850000232F0E51F0751F4F7018281882309F481 +:1008600040C00E946B0E8111F0CFE3CF0332F0E560 +:100870001F0739F4F7018281882399F10E94E6036A +:100880009BC10432F0E51F0739F4F7018281882308 +:1008900041F10E94E00390C10532F0E51F0749F4E1 +:1008A000F70182818823E9F0809117028111F1CF4D +:1008B000E5CF0632F0E51F0739F4F701828188237E +:1008C00081F00E947F0E0AC00732F0E51F0749F44D +:1008D000F7018281882329F00E948A0E0E94EC038E +:1008E0006BC180911702811105C0F70182818111CE +:1008F000CFC018C1003E110579F4F7018281882329 +:1009000009F44DC00E94200A81E0809316021092E3 +:1009100015021092D40150C1023E110559F4F7019D +:1009200082818823E1F10E94200A1092160210921F +:10093000150242C1033E110591F4F701828188231B +:1009400071F10E94200A1092160281E08093150234 +:100950001092D3011092D2011092D1012DC1023513 +:10096000110559F4F7018281882309F425C180918A +:100970000001909101010A970DC00135110579F42C +:10098000F7018281882309F417C1809100019091B9 +:1009900001010A9690930101809300010DC14091DD +:1009A000040183E2EFE1F1E0DE01119601900D9286 +:1009B0008A95E1F7F701808121E030E02C0F3D1F9F +:1009C000280F311DC9012091020130910301FC0162 +:1009D000E20FF31F6081772767FD7095640F711D2B +:1009E000882777FD8095982F0E94A92920E030E084 +:1009F00040E451E40E940E294B015C01F701218182 +:100A000084E090E0821B9109BC01882777FD8095E6 +:100A1000982F0E94A9299B01AC01C501B4010E9435 +:100A2000A6289B01AC0160E070E080E090E40E94A9 +:100A30001C2B20E030E04CED50E40E94B92A4B0121 +:100A40005C01F70182818823D1F04FE050E0C501BD +:100A5000B4010E940B0E809116028823A1F08091B0 +:100A6000D40124E0829FF0011124EB52FE4F8082DA +:100A70009182A282B3828F5F8093D40104C0C501AA +:100A8000B4010E94530A0F3F110508F02ECF94C005 +:100A90008091D00181111FC0043130E5130709F0A6 +:100AA00051C00E948E0381E08093D0010E94DE221B +:100AB0009093CF018093CE011092C7011092C9018B +:100AC0001092C8011092CB011092CA011092CD0170 +:100AD0001092CC0171C08091CE019091CF010E9403 +:100AE000EA22883C910570F48091C701E82FF0E07C +:100AF000EE0FFF1FE853FE4F118300838F5F80933B +:100B0000C7015AC0043880E5180721F005381045A0 +:100B100001F13AC0F7018281882341F01092C501AA +:100B200082E01EC0043830E5130759F58091C501F5 +:100B3000811106C086E20E94371886E20E94FF18E3 +:100B400082E01CC00438F0E51F0741F3053810456A +:100B5000D9F4F7018281882331F01092C60180E236 +:100B60000E944E1929C08091C601811106C087E2FA +:100B70000E94371887E20E94FF1880E20E945519F0 +:100B80001BC00538104529F381E08093C50180938F +:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 +:100BA000DF91CF911F910F91FF90EF90BF90AF9089 +:100BB0009F908F900C94E30280E0A3960FB6F89478 +:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 +:100BD000EF90BF90AF909F908F90089580E090E04D +:100BE000089508959CE0799FF001112490E3899F76 +:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B +:100C0000FE4F859194910895880F991FFC01E45B34 +:100C1000FF4F859194910895880F991FFC01E4532B +:100C2000FE4F8591949108950F931F93CF93DF9377 +:100C3000EC01811521E39207A0F5C11580E3D807E7 +:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 +:100C500007C2C83AD10578F4C53AD10508F06AC090 +:100C6000C130D10509F463C008F4F7C1C430D1051F +:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 +:100C8000C11590E2D90708F0AFC0C11521E0D20725 +:100C900008F0E6C1C03FD10508F4DFC18E01106540 +:100CA0001FC2C03880E5D80700F5C03790E5D907E6 +:100CB00008F0A3C0C11520E5D20709F4ACC050F478 +:100CC000CE01905480319F4008F0C7C1DF708E0183 +:100CD000106A06C2C13080E5D80709F4AEC0C4313D +:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 +:100CF00009F48EC050F4C13890E5D90709F482C0D8 +:100D000008F083C000E011EDEBC1C03181E5D807E8 +:100D100008F4A3C1C11597E5D90708F436C1CE017F +:100D200090578115904108F098C1DF7093C101E0A0 +:100D300010E0D6C1C53AD10509F494C1C63AD1052F +:100D400009F093C102E810E4CBC1C83AD10509F417 +:100D50008FC1C93AD10509F48EC1CA3AD10509F447 +:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 +:100D70008BC1CD3AD10509F48AC1C03BD10509F434 +:100D800089C1CE3AD10509F488C1CF3AD10509F419 +:100D900087C1C13BD10509F486C1C23BD10509F425 +:100DA00085C1C33BD10509F484C1C43BD10509F415 +:100DB00083C1C53BD10509F482C1C63BD10509F405 +:100DC00081C1C73BD10509F480C1C83BD10509F4F5 +:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 +:100DE0007DC100E014E47CC1CE019F700E940C061E +:100DF00078C1DD278E01106C73C1CF70DD278E01A5 +:100E0000146D6EC100E010ED6BC100E012ED68C121 +:100E100000E013ED65C10E94E21B0E94200A0E94BF +:100E2000E4038FEF94E32CE0815090402040E1F701 +:100E300000C000000E94392353C18091F2028160FA +:100E40008093F2024DC10E949A23811102C00E9438 +:100E500076230E94AD2390E090931D0380931C03A2 +:100E6000C23080E5D80721F480911C03816086C0E0 +:100E7000C43090E5D90721F480911C0382607EC0C4 +:100E8000C63020E5D20721F480911C03846076C02F +:100E9000C83080E5D80719F480911C0327C0CA30F8 +:100EA00090E5D90721F480911C03806167C0CC30A4 +:100EB00020E5D20721F480911C0380625FC0CE3010 +:100EC00080E5D80721F480911C03806457C0C031AD +:100ED00090E5D90721F480911C0380684FC0C2318E +:100EE00020E5D20729F480911C038460886046C005 +:100EF000C33080E5D80721F480911C038E7F3EC06B +:100F0000C53090E5D90721F480911C038D7F36C050 +:100F1000C73020E5D20721F480911C038B7F2EC0BF +:100F2000C93080E5D80719F480911C0326C0CB3066 +:100F300090E5D90721F480911C038F7E1FC0CD302E +:100F400020E5D20721F480911C038F7D17C0CF309C +:100F500080E5D80721F480911C038F7B0FC0C1313D +:100F600090E5D90721F480911C038F7707C0C33126 +:100F7000D04531F480911C038B7F877F80931C03C5 +:100F800080911C030E94B123ABC08D2F99278F70D5 +:100F9000992781309105D9F49E012370332702C02F +:100FA000880F991F2A95E2F79C688E0144E0000F94 +:100FB000111F4A95E1F700271370802B912B53E006 +:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 +:100FD000910531F4DC2FCC278E01016F106A80C09F +:100FE0008330910569F4CE018370992701E010E008 +:100FF00002C0000F111F8A95E2F7C8019C680FC05C +:1010000084309105B9F4CE018370992701E010E096 +:1010100002C0000F111F8A95E2F7C8019A6823E009 +:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 +:101030001D2B56C08530910531F4DC2FCC278E0155 +:10104000046F106A4DC0069709F04AC0CF71DD27C2 +:10105000DC2FCC278E01106243C000E010E040C0BE +:101060008E013EC001E810E43BC003E810E438C044 +:1010700002EE14E435C009EE14E432C00AEE14E4C2 +:101080002FC005EB14E42CC006EB14E429C007EBD9 +:1010900014E426C00CEC14E423C00DEC14E420C0CE +:1010A00003E815E41DC00AE815E41AC002E915E4D6 +:1010B00017C004E915E414C001E216E411C003E20C +:1010C00016E40EC004E216E40BC005E216E408C004 +:1010D00006E216E405C007E216E402C00AE216E4DE +:1010E000C801DF91CF911F910F9108959CE0799FE6 +:1010F000F001112490E3899FE00DF11D1124E60F0A +:10110000F11DEE0FFF1FEA52FE4F85919491803E34 +:101110009105E0F4803C910558F58133910509F47F +:101120006FC048F48932910509F463C08A32910591 +:1011300009F46DC072C089339105E9F082389105D8 +:10114000D1F08533910509F44DC067C0833E910508 +:1011500081F138F4803E9105B9F0823E9105D9F0D5 +:101160005CC0863E910561F1873E9105A1F155C0B5 +:101170000E940406089520911C0320FD02C021FF57 +:101180004CC080EE90E049C080911C0380FFF9CFF5 +:1011900089E390E042C080911C0382FF0EC08091E1 +:1011A0001C0384FF03C080E090E037C083EE90E032 +:1011B00034C080911C0382FFF2CF82EE90E02DC0FC +:1011C00080911C0383FF0BC080911C0384FDEBCF37 +:1011D00087EE90E022C080911C0383FFF5CF86EE5E +:1011E00090E01BC080911C0385FF07C089E290E05E +:1011F00014C080911C0385FFF9CF85E390E00DC0FA +:1012000080911C0386FF07C08AE290E006C08091AF +:101210001C0386FFF9CF81E390E00E941406089535 +:101220000C94E502E82FF0E0E25BFE4F8081E82FAE +:10123000EF70F0E082958F7021E030E0A90102C0EC +:10124000440F551F8A95E2F740A308950F931F930B +:10125000CF93DF9385B7806885BF85B7806885BFEA +:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 +:10127000E82FEF70F0E021A182958F70A80102C0E5 +:10128000440F551F8A95E2F7CA01822B81A38C2F48 +:101290000E941209219740F78BE090E061E070E036 +:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 +:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F +:1012C0009D01242B22A3019758F7DF91CF911F9105 +:1012D0000F910C948F03EF92FF920F931F93CF9374 +:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA +:1012F0008C2F0E9412098BE090E040E050E0FC014E +:10130000EE5BFE4F6081E62FEF70F0E020A130E051 +:1013100062956F7002C0359527956A95E2F720FDBA +:1013200009C09701082E02C0220F331F0A94E2F76A +:10133000422B532B019718F7F801929182918F015C +:101340008417950721F051834083D09305018C2F9A +:101350000E941209C15060F68091050187FD2CC0E2 +:101360008150809305018F3F39F08FE99FE001970D +:10137000F1F700C0000020C080911E0290911F0272 +:10138000909327028093260280911C0290911D0267 +:10139000909325028093240280911A0290911B025F +:1013A0009093230280932202809118029091190257 +:1013B00090932102809320020E94910381E0DF91AB +:1013C000CF911F910F91FF90EF900895E82FF0E0DB +:1013D000EE0FFF1FE05EFD4F80819181089508951B +:1013E0000F931F93CF9308E212E0C0E0F8019291AF +:1013F00082918F010E945622C80FF2E000321F072F +:10140000A9F78C2FCF911F910F9108950E949A23D5 +:10141000811102C00E9476230E94BF23809307039C +:101420003E9A809171008D7F8093710082E080935D +:1014300090008AE18093910081E080932A020895D0 +:1014400080912A02811102C00E94060A10927A023B +:1014500010927902809171008D7F8093710080914C +:1014600090008F738093900010923C0210923B0288 +:10147000109273021092740210927502109276020A +:101480001092720210927102E1E5F2E0A1E4B2E082 +:1014900011921192119211921D921D9282E0E137E8 +:1014A000F807B1F70895CF92DF92EF92FF920F9372 +:1014B0001F93CF93DF9320913B02222309F484C032 +:1014C0006B017C0180912A02811102C00E94060AF0 +:1014D00001E712E0C7E0D0E0A7019601F801929180 +:1014E0008291729162918F010E940A29811131C00B +:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 +:10150000118212821382DE01AA0FBB1FAF5BBD4F97 +:1015100011961C921E92C730D105E9F021964481A4 +:1015200055816681778140835183628373831482FE +:1015300015821682178212968D919C91139711969F +:101540009C938E9313961C921E9212973496129629 +:10155000E2CF219708F68091790290917A02019763 +:1015600097FD05C090937A028093790204C010928F +:101570007A02109279028091790290917A022091F8 +:101580007702309178022817390724F010927802F8 +:1015900010927702892BC1F4809171008D7F809326 +:1015A0007100809190008F7380939000109273026D +:1015B00010927402109275021092760210927202CA +:1015C0001092710210923B02DF91CF911F910F9107 +:1015D000FF90EF90DF90CF9008951F920F920FB67B +:1015E0000F9211244F925F926F927F928F929F92EF +:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 +:101600004F935F936F937F938F939F93AF93BF930A +:10161000CF93DF93EF93FF9380913B02882309F4EC +:101620009BC1C0917902D0917A021C161D060CF064 +:1016300093C140902B0250902C0260902D0270902C +:101640002E0220E030E0A901C301B2010E94B52AB8 +:1016500018160CF065C0C130D10509F452C0809154 +:10166000770290917802BE010E94872C7C019093B2 +:1016700078028093770280903D0290903E02A09085 +:101680003F02B090400220E030E040E85FE3C50157 +:10169000B4010E94A62860933D0270933E0280939D +:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 +:1016B000EF5AFD4FA3019201608171818281938174 +:1016C0000E940E2920E030E040E05EE30E94B92A4B +:1016D0009B01AC01C501B4010E94B52A18168CF417 +:1016E000C7010196BE010E94872C909378028093D7 +:1016F000770210923D0210923E0210923F02109229 +:101700004002E0917702F0917802EE0FFF1FEE0F9A +:10171000FF1FEF5AFD4F6081718182819381D0C09C +:10172000C0907302D0907402E0907502F09076023F +:1017300020E030E0A901C701B6010E940A292197E3 +:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A +:10175000EF5AFD4F80809180A280B380A501940153 +:10176000C701B6010E940A2987FF31C0A501940173 +:1017700060E070E08CED93EC0E940E2920E030E0F8 +:1017800040E451E40E940E2920E030E040E05FE3B5 +:101790000E94B92A9B01AC0160E070E080E090E417 +:1017A0000E941C2B9B01AC01C501B4010E94B92A07 +:1017B0009B01AC01C701B6010E940A2987FF07C03F +:1017C000A701960160E070E08CED93E439C0A501BB +:1017D0009401C701B6010E94B52A18160CF055C035 +:1017E000A501940160E070E08CED93E40E940E2965 +:1017F00020E030E040E451E40E940E2920E030E097 +:1018000040E05FE30E94B92A9B01AC0160E070E018 +:1018100080E090E40E941C2B9B01AC01C501B40147 +:101820000E94B92A9B01AC01C701B6010E94B52AEA +:1018300018165CF5A701960160E070E08CED93EC62 +:101840000E940E2920E030E040E451E40E940E297D +:1018500020E030E040E05FE30E94B92A9B01AC0148 +:1018600060E070E080E090E40E941C2B9B01AC01E2 +:10187000C701B6010E94B92A609373027093740283 +:10188000809375029093760213C0FE01EE0FFF1F46 +:10189000EE0FFF1FEF5AFD4F80819181A281B3812E +:1018A0008093730290937402A0937502B0937602B2 +:1018B000609173027091740280917502909176022A +:1018C00020912802309129022F3F4FEF340731F049 +:1018D0002F5F3F4F30932902209328020E94950EDC +:1018E0006B017C0120E034E244EF51E40E940A29BC +:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 +:1019000081E4F82E20E030E040E051E4C701B60168 +:101910000E94B92A9B01AC0160E074E284E79BE479 +:101920000E940E296B017C010E947B297093970015 +:1019300060939600209106013091070140910801C3 +:1019400050910901C701B6010E94B92A0E947B2962 +:10195000709399006093980080913C02882309F469 +:1019600033C1C0903702D0903802E0903902F09035 +:101970003A0220E030E0A901C701B6010E94B52A71 +:101980001816D4F580912802909129028F3F2FEFED +:10199000920729F001969093290280932802C701AB +:1019A000B6010E94950E20E030E040E051E40E9434 +:1019B000B92A9B01AC0160E074E284E79BE40E94D9 +:1019C0000E296B017C010E947B2970939700609324 +:1019D0009600209106013091070140910801509135 +:1019E0000901C701B6010E94B92A0E947B297093A0 +:1019F00099006093980008C010929700109296008A +:101A00001092990010929800609131027091320208 +:101A10006F5F7F4F70933202609331022091960086 +:101A20003091970080E090E0232BF1F0C091960078 +:101A3000D09197000E94A7296B017C01BE0180E034 +:101A400090E00E94A7299B01AC0160913302709144 +:101A5000340280913502909136020E940E2920E0D6 +:101A60003FEF4FE757E410C00E94A7296B017C01AC +:101A700020E030EE4FEF54E4609133027091340275 +:101A800080913502909136020E94B92A9B01AC01E7 +:101A9000C701B6010E94B52A87FD96C080912F022A +:101AA0008F5F80932F0290E0209103033091040315 +:101AB00082179307A0F080910E03882319F01092EB +:101AC0002F020DC0809171008D7F809371008091F5 +:101AD00090008F738093900010923C027DC08091A3 +:101AE0003002C0912F02811128C0C0900803D0900D +:101AF0000903E0900A03F0900B0320E030E0A90115 +:101B0000C701B6010E94B52A1816BCF481E0809383 +:101B1000300210923702109238021092390210925D +:101B20003A02C0923302D0923402E0923502F0922F +:101B30003602C150C0932F0243C01092300210925F +:101B4000290210922802E0910503F091060348E073 +:101B5000C49FE00DF11D112480819181A281B38188 +:101B60008093370290933802A0933902B0933A02DF +:101B700020E030E040E85EE36481758186819781F2 +:101B80000E94B92A6B017C0180910A01682F70E0E4 +:101B900080E090E00E94A72920E030E048EC52E489 +:101BA0000E940E299B01AC01C701B6010E94B92A0F +:101BB000609333027093340280933502909336021F +:101BC00010923202109231028091070380FD04C00E +:101BD00010923C0210923B02FF91EF91DF91CF9166 +:101BE000BF91AF919F918F917F916F915F914F9135 +:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB +:101C00009F908F907F906F905F904F900F900FBE3E +:101C10000F901F901895CF92DF92EF92FF92CF9383 +:101C2000DF936B017C01EA0180912A02811102C0DD +:101C30000E94060A8091070380FF46C080917902C6 +:101C400090917A0208970CF03FC0809171008D7FCF +:101C50008093710080913C0281110E94200A81E0F2 +:101C600080933B02109229021092280220E030E07B +:101C7000A901C701B6010E94B52A1816DCF48091AB +:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 +:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 +:101CA000FF1FEF5BFD4FD183C083019690937A02B3 +:101CB000809379028091710082608093710080919D +:101CC0009000806880939000DF91CF91FF90EF901B +:101CD000DF90CF90089580910703817008958091DF +:101CE00007038160809307030E94C3230C94EB03D6 +:101CF000809107038E7F809307030C94C323809108 +:101D00007B0290E0019666E070E00E94872C809351 +:101D10007B02089580917B0290E0019766E070E07D +:101D20000E94872C80937B0208958F929F92AF929E +:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 +:101D4000DF936B017C01C0912802D0912902BE0172 +:101D500080E090E00E94A7294B015C01A701960159 +:101D600060E070E08CE594E40E940E299B01AC01D8 +:101D7000C501B4010E94B92A0E947B2920917B02EF +:101D8000233009F473C028F4222351F02130E9F004 +:101D90002CC1243009F4A0C0253009F4E0C025C1CD +:101DA00080E090E0A0E0BFE38093060190930701FC +:101DB000A0930801B093090110922B0210922C02FB +:101DC00010922D0210922E0210C110922B0210922E +:101DD0002C0210922D0210922E026431710540F4F3 +:101DE0006A30710560F520E030E040E85EE32BC02A +:101DF000693C710508F0AAC080E090E00E94A72924 +:101E000020E030E040EA51E40E94A52820E030E0E4 +:101E100044E353E40E940E299B01AC010E94B92ABD +:101E200020E030E040E05EE30E94B92A9B01AC0173 +:101E300060E070E080E09EE30E94A52844C020E0BE +:101E400030E040E05FE3C701B6010E94B92A6B01B0 +:101E50007C0180E090E0A0E0BEE3809306019093D7 +:101E60000701A0930801B0930901BFC010922B0293 +:101E700010922C0210922D0210922E024AE0469FE0 +:101E80009001479F300D1124C90168EB7BE00E944F +:101E9000732CBC016C5D754077FF03C07195619533 +:101EA0007109882777FD8095982F0E94A9292EE334 +:101EB00033EC4EE259E30E94B92A20E030E040ECD6 +:101EC0005EE30E94A6286093060170930701809349 +:101ED00008019093090189C010922B0210922C02E4 +:101EE00010922D0210922E02CE0183709927892B19 +:101EF000E1F0BE016170772780E090E00E94A729A1 +:101F000020E030E040E05EE30E94B92A20E030E0CB +:101F100040E45FE30E94A6286093060170930701E6 +:101F200080930801909309010CC080E090E0A0E04C +:101F3000BFE38093060190930701A0930801B0933B +:101F40000901C770DD27CD2B09F04FC010920601A3 +:101F500010920701109208011092090146C01092D8 +:101F60002B0210922C0210922D0210922E0200E0F1 +:101F700010E020E03FE30093060110930701209357 +:101F80000801309309016739710578F180E090E02C +:101F90000E94A72920E030E047E153E40E94A528F1 +:101FA00020E030E04AE754E40E940E2920E030E0CF +:101FB00048E452E40E94B92A20E030E040EA51E4CB +:101FC0000E94EB290E947629660F771F660F771F04 +:101FD000FB01EE5AFE4F2081318142815381C701BE +:101FE000B6010E94B92A6B017C01C701B601DF91DD +:101FF000CF911F910F91FF90EF90DF90CF90BF9006 +:10200000AF909F908F90089580918C020895CF9308 +:10201000DF9300D01F92CDB7DEB79C0180911303F0 +:10202000843019F593E099833B832A839093E900E8 +:102030008FEF9091E800815095FD06C095ED9A953F +:10204000F1F700008111F5CF8091E80085FF0DC008 +:1020500040E050E063E070E0CE0101960E9468121B +:102060008091E8008E778093E8000F900F900F909A +:10207000DF91CF910895CF93DF9300D01F92CDB71A +:10208000DEB720911303243021F522E029839B83BE +:102090008A8383E08093E9008FEF9091E80081507C +:1020A00095FD06C095ED9A95F1F700008111F5CFE9 +:1020B0008091E80085FF0DC040E050E063E070E0F3 +:1020C000CE0101960E9468128091E8008E7780937D +:1020D000E8000F900F900F90DF91CF91089520911D +:1020E00013032430F1F422E02093E9002FEF309124 +:1020F000E800215035FD06C035ED3A95F1F70000B6 +:102100002111F5CF2091E80025FF0BC040E050E001 +:1021100065E070E00E9468128091E8008E778093FD +:10212000E8000895CF93DF93EC019091130394306E +:1021300009F046C0809115018823D9F080911601DD +:102140008823B9F09093E9008FEF9091E8008150D7 +:1021500095FD06C095E19A95F1F700008111F5CF44 +:102160008091E80085FF2CC040E050E060E170E025 +:1021700017C081E08093E9008FEF9091E8008150D3 +:1021800095FD06C095ED9A95F1F700008111F5CF08 +:102190008091E80085FF14C040E050E068E070E006 +:1021A000CE010E9468128091E8008E778093E8004B +:1021B00080E1FE01ACE7B2E001900D928A95E1F773 +:1021C000DF91CF91089580911203811109C00E947F +:1021D000FD130E945A148091E20084608093E20013 +:1021E0000895109212030895089508950C94A12261 +:1021F00042E061EC81E00E94771342E061EC82E012 +:102200000E94771342E061EC83E00E94771342E181 +:1022100061EC84E00C94771380911503833009F40A +:1022200055C030F4813071F0823009F48EC00895C9 +:102230008A3009F47AC08B3009F460C0893009F023 +:102240009CC020C080911403813A09F096C080910F +:10225000E800877F8093E80080911803909119032C +:10226000892B21F460E18CE792E003C060E080E01C +:1022700090E070E00E94B3128091E8008B77809329 +:10228000E800089580911403813209F076C08091AE +:10229000180390911903009719F0039709F06DC086 +:1022A0008091E800877F8093E8008091E80082FDBC +:1022B00005C0809113038111F8CF5FC08091F100B8 +:1022C00080938C028091E8008B7753C08091140337 +:1022D000813A09F052C08091180390911903892B1B +:1022E00009F04BC08091E800877F8093E8008091DF +:1022F000E80080FFFCCF8091150136C08091140367 +:102300008132D9F58091180390911903892BA9F591 +:102310008091E800877F8093E8000E94AC13809151 +:102320001603809315010C94E21B809114038132F3 +:1023300021F58091E800877F8093E8000E94AC132C +:102340008091170380938D02089580911403813A40 +:10235000A1F48091E800877F8093E8008091E800F5 +:1023600080FFFCCF80918D028093F1008091E80086 +:102370008E778093E8000C94AC13089584B7877F20 +:1023800084BF88E10FB6F8948093600010926000DB +:102390000FBE90E080E80FB6F894809361009093B0 +:1023A00061000FBE0E944F170E94FD130E945A1435 +:1023B0008091E20084608093E20078940E94E016AD +:1023C0000E9451178BE091E00E94FB16809113034D +:1023D000853069F40E946222809111038823B1F351 +:1023E0000E949022882391F30E945212EFCF0E9404 +:1023F0005917ECCF292F332723303105C9F064F466 +:102400002130310581F02230310509F043C08DE6DD +:1024100090E022EB33E042C021323105F1F022326C +:10242000310541F137C082E190E02FE134E036C060 +:1024300099278130910541F08230910541F0892B37 +:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 +:10245000F3E0849190E09F0121C06430D8F4E62F2E +:10246000F0E0EE0FFF1FE255FE4F2081318189E041 +:1024700090E014C0643070F470E0FB01EE0FFF1FB9 +:10248000EA55FE4F20813181FB01EE55FE4F8081E0 +:1024900090E004C080E090E020E030E0FA01318379 +:1024A0002083089580E189BD82E189BD09B400FEE1 +:1024B000FDCF8091D8008F7D8093D8008091E0007F +:1024C00082608093E0008091E00081FDFCCF089560 +:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 +:1024E000EC018B016A010E94CB13811133C0C1142E +:1024F000D10439F0F60180819181081B190BC80FB6 +:10250000D91FE12CF12C0115110519F18091E8007A +:1025100085FD16C08091E8008E778093E800C11495 +:10252000D10449F0F60180819181E80EF91EF18213 +:10253000E08285E00FC00E94CB13882321F30AC0FC +:1025400089918093F10001501109FFEFEF1AFF0A02 +:10255000DACF80E0DF91CF911F910F91FF90EF9044 +:10256000DF90CF90089520911A0330911B03261716 +:10257000370748F06115710539F42091E8002E778E +:102580002093E80001C0B90140E061157105A9F18F +:1025900020911303222309F443C0253009F442C0DB +:1025A0002091E80023FD40C02091E80022FD32C0C8 +:1025B0002091E80020FFE9CF4091F3002091F20044 +:1025C00030E0342BFC01CF016115710559F0283042 +:1025D000310540F481918093F100615071092F5FC2 +:1025E0003F4FF1CF41E02830310509F040E0209124 +:1025F000E8002E772093E800C8CF4111C9CF0AC068 +:1026000080911303882361F0853061F08091E800A8 +:1026100083FD0AC08091E80082FFF2CF80E0089538 +:1026200082E0089583E0089581E0089520911A03DF +:1026300030911B032617370748F06115710539F4EF +:102640002091E8002E772093E80001C0B901FC0139 +:1026500020E06115710591F180911303882309F43D +:1026600040C0853009F43FC08091E80083FD3DC043 +:102670008091E80082FD2FC08091E80080FFE9CFC3 +:102680002091F3008091F20090E0922B611571058A +:1026900059F08830910540F424912093F10031964F +:1026A000615071090196F2CF21E0089709F020E00E +:1026B0008091E8008E778093E800CBCF2111CCCFBA +:1026C0000AC080911303882361F0853061F0809106 +:1026D000E80083FD0AC08091E80082FFF2CF80E02D +:1026E000089582E0089583E0089581E00895982F89 +:1026F000973058F59093E900981739F07091EC00F5 +:102700002091ED005091F00003C0242F762F50E06F +:1027100021FF19C03091EB003E7F3093EB003091E8 +:10272000ED003D7F3093ED003091EB003160309350 +:10273000EB007093EC002093ED005093F00020919B +:10274000EE0027FF07C09F5FD3CF8F708093E90013 +:1027500081E0089580E008958091140387FF11C0FF +:102760008091E80082FD05C0809113038111F8CFAC +:1027700011C08091E8008B770BC0809113038823F0 +:1027800049F08091E80080FFF8CF8091E8008E77D3 +:102790008093E80008952091E4003091E50095E6EB +:1027A0004091EC00842F817040FF22C08091E800AE +:1027B00080FD1CC080911303882391F0853091F037 +:1027C0008091EB0085FD10C04091E4005091E50040 +:1027D0004217530729F39A01915011F784E00895A5 +:1027E00082E0089583E0089581E0089580E00895EF +:1027F0004091E80042FFDECF08950E946B140E94D2 +:102800007314E0EEF0E0808181608083E8EDF0E019 +:1028100080818F77808319BCA7EDB0E08C918E7F8B +:102820008C9380818F7E80831092120308950F9382 +:102830001F93CF93DF930E946B140E947314C8ED13 +:10284000D0E088818F7788838881806888838881B9 +:102850008F7D888319BC1092130310920F0310927E +:1028600011031092100300EE10E0F80180818B7FBD +:10287000808388818160888342E060E080E00E94FC +:102880007713E1EEF0E080818E7F8083E2EEF0E06E +:10289000808181608083808188608083F80180816D +:1028A0008E7F8083888180618883DF91CF911F91A3 +:1028B0000F910895E8EDF0E080818F7E8083E7ED51 +:1028C000F0E080818160808384E082BF81E080933A +:1028D00012030C941714E8EDF0E080818E7F808362 +:1028E0001092E20008951092DA001092E10008952B +:1028F0001F920F920FB60F9211242F933F934F9375 +:102900005F936F937F938F939F93AF93BF93EF9357 +:10291000FF938091E10082FF0BC08091E20082FF73 +:1029200007C08091E1008B7F8093E1000E94DF1659 +:102930008091DA0080FF1FC08091D80080FF1BC00B +:102940008091DA008E7F8093DA008091D90080FF39 +:102950000DC080E189BD82E189BD09B400FEFDCFD3 +:1029600081E0809313030E94E31005C019BC10920C +:1029700013030E94F1108091E10080FF19C0809143 +:10298000E20080FF15C08091E2008E7F8093E2001C +:102990008091E20080618093E2008091D8008062A3 +:1029A0008093D80019BC85E0809313030E94F51032 +:1029B0008091E10084FF30C08091E20084FF2CC050 +:1029C00080E189BD82E189BD09B400FEFDCF80911F +:1029D000D8008F7D8093D8008091E1008F7E809316 +:1029E000E1008091E2008F7E8093E2008091E2001E +:1029F00081608093E20080910F03882311F084E0CE +:102A000007C08091E30087FD02C081E001C083E040 +:102A1000809313030E94F6108091E10083FF29C088 +:102A20008091E20083FF25C08091E100877F809341 +:102A3000E10082E08093130310920F038091E10084 +:102A40008E7F8093E1008091E2008E7F8093E20090 +:102A50008091E20080618093E20042E060E080E0EB +:102A60000E9477138091F00088608093F0000E94AC +:102A7000F410FF91EF91BF91AF919F918F917F9152 +:102A80006F915F914F913F912F910F900FBE0F90DB +:102A90001F9018951F920F920FB60F9211242F932B +:102AA0003F934F935F936F937F938F939F93AF93D6 +:102AB000BF93CF93DF93EF93FF93C091E900CF7063 +:102AC0008091EC00D82FD17080FDD0E81092E90001 +:102AD0008091F000877F8093F00078940E948E159B +:102AE0001092E9008091F00088608093F000CD2B77 +:102AF000CF70C093E900FF91EF91DF91CF91BF912B +:102B0000AF919F918F917F916F915F914F913F9185 +:102B10002F910F900FBE0F901F9018951F93CF937A +:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E +:102B3000CDBFE4E1F3E088E08E0F9091F100919336 +:102B40008E13FBCF0E940C118091E80083FF1FC100 +:102B50008091140390911503492F50E04A3051059C +:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB +:102B700081F0823809F00BC1809118038F70809327 +:102B8000E9008091EB0085FB882780F91092E9002D +:102B900006C0809110039091110391118260909171 +:102BA000E800977F9093E8008093F1001092F10085 +:102BB000C8C0282F2D7F09F0EAC0882319F0823081 +:102BC00061F0E5C080911603813009F0E0C09330D8 +:102BD00009F080E0809311032BC0809116038111CE +:102BE00027C0809118038F7009F4D1C08093E90049 +:102BF0002091EB0020FF1CC0933021F48091EB006A +:102C0000806214C09091EB0090619093EB0021E002 +:102C100030E0A90102C0440F551F8A95E2F74093A6 +:102C2000EA001092EA008091EB0088608093EB004C +:102C30001092E9008091E800877F86C08111A7C0CB +:102C4000109116031F778091E3008078812B809389 +:102C5000E3008091E800877F8093E8000E94AC1336 +:102C60008091E80080FFFCCF8091E3008068809332 +:102C7000E300111102C082E001C083E080931303DE +:102C800086C08058823008F082C0809116039091EF +:102C900017038C3D53E0950779F583E08A838AE238 +:102CA00089834FB7F894DE01139620E03EE051E2AD +:102CB000E32FF0E050935700E49120FF03C0E2952A +:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 +:102CD00001C0C0968D939D932F5F243149F74FBF5C +:102CE0008091E800877F8093E8006AE270E0CE017F +:102CF00001960E94B31214C0AE014F5F5F4F609106 +:102D000018030E94FA11BC01009709F440C0909189 +:102D1000E800977F9093E80089819A810E941613BA +:102D20008091E8008B778093E80031C0803879F596 +:102D30008091E800877F8093E80080910F03809363 +:102D4000F1008091E8008E778093E8000E94AC1338 +:102D50001EC081111CC0909116039230C0F4809166 +:102D6000E800877F8093E80090930F030E94AC13E4 +:102D700080910F03811106C08091E30087FD02C09E +:102D800081E001C084E0809313030E94F8108091D9 +:102D9000E80083FF0AC08091E800877F8093E80005 +:102DA0008091EB0080628093EB00AA960FB6F894B6 +:102DB000DEBF0FBECDBFDF91CF911F910895089563 +:102DC000CF93809113038823A1F0C091E900CF70C5 +:102DD0009091EC00892F817090FD80E8C82B1092B3 +:102DE000E9008091E80083FD0E948E15CF70C093AA +:102DF000E900CF91089590939302809392020895F1 +:102E0000E0919202F0919302309721F00190F081CD +:102E1000E02D099480E00895E0919202F0919302F0 +:102E2000309721F00280F381E02D09940895E0911C +:102E30009202F0919302309721F00480F581E02D09 +:102E4000099408952091900230919102821793077E +:102E500071F09093910280939002E0919202F09130 +:102E60009302309721F00680F781E02D09940895B0 +:102E700020918E0230918F028217930771F0909308 +:102E80008F0280938E02E0919202F091930230972C +:102E900021F00084F185E02D0994089508950C94A3 +:102EA0004E170E94D5220E9426090E945B230C9493 +:102EB0000A285F926F927F928F929F92AF92BF92F9 +:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 +:102ED00000D000D01F92CDB7DEB70E946B099DE9EC +:102EE000C92E92E0D92E03E010E0AA24A394B12CBD +:102EF000502E802F0E94E6094C01F60172906290DC +:102F00006F016826792661147104A1F4015011093A +:102F100078F78FEF89838A831B820E94DE2281608B +:102F2000782F9D838C8349815A816B818D810E948A +:102F3000091838C08091F20281FD0E94EF092BE050 +:102F400030E07501022E02C0EE0CFF1C0A94E2F77D +:102F5000C70186219721892B09F129835A828E2066 +:102F60009F2091E0892809F490E09B830E94DE2253 +:102F70008160782F9D838C8349815A816B818D81FB +:102F80000E940918000F111FF801EB56FD4F8081B8 +:102F90009181E826F926F182E08204C021503109AE +:102FA00080F6B4CF0E944225109194020E9400172F +:102FB0001817D1F00E940017809394020F900F9081 +:102FC0000F900F900F90DF91CF911F910F91FF9075 +:102FD000EF90DF90CF90BF90AF909F908F907F90B9 +:102FE0006F905F900C9410090F900F900F900F90BE +:102FF0000F90DF91CF911F910F91FF90EF90DF9095 +:10300000CF90BF90AF909F908F907F906F905F9088 +:103010000895CF93DF93CDB7DEB72B970FB6F89413 +:10302000DEBF0FBECDBF4F83588769877A878B87F6 +:10303000DE01119686E0FD0111928A95E9F785E09F +:10304000FE01379601900D928A95E1F749815A81E8 +:103050006B817C818D819E810E94801E2B960FB694 +:10306000F894DEBF0FBECDBFDF91CF910895CF930F +:10307000882309F4C2C0C82F823859F40E9400176F +:1030800081FDBBC089E30E945A210E94272289E367 +:103090000CC0833879F40E94001780FDAEC083E530 +:1030A0000E945A210E94272283E50E949C21CF91F1 +:1030B0000C942722843859F40E94001782FD9DC089 +:1030C00087E40E945A210E94272287E4EECF8CEFEA +:1030D0008C0F813A48F48C2F0E94722781118DC089 +:1030E0008C2F0E945A21E3CF80E28C0F883048F465 +:1030F000C77081E001C0880FCA95EAF70E94E021FD +:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 +:1031100031F083E890E005C081E890E002C082E8E9 +:1031200090E0CF910C94221788E58C0F833108F042 +:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 +:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 +:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 +:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 +:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B +:1031800090E038C082EE90E035C089EE90E032C029 +:103190008AEE90E02FC085EB90E02CC086EB90E0AB +:1031A00029C087EB90E026C08CEC90E023C08DEC2A +:1031B00090E020C083E891E01DC08AE891E01AC049 +:1031C00082E991E017C084E991E014C081E292E0C5 +:1031D00011C083E292E00EC084E292E00BC085E26F +:1031E00092E008C086E292E005C087E292E002C069 +:1031F0008AE292E0CF910C943817CF9108958823FA +:1032000009F44BC0823859F40E94001781FF45C071 +:1032100089E30E945A210E94272289E30CC0833847 +:1032200071F40E94001780FF38C083E50E945A2184 +:103230000E94272283E50E949C210C942722843837 +:1032400059F40E94001782FF28C087E40E945A2187 +:103250000E94272287E4EFCF9CEF980F913A58F312 +:1032600090E2980F983050F4877091E001C0990F68 +:103270008A95EAF7892F0E94E621DFCF9BE5980F18 +:10328000933020F480E090E00C942217885A833128 +:1032900020F480E090E00C9438170895882321F002 +:1032A0000E94E0210C9427220895882321F00E9497 +:1032B000E6210C94272208957F928F929F92AF92DD +:1032C000BF92CF92DF92EF92FF920F931F93CF9313 +:1032D000DF931F92CDB7DEB77C01C62E772EFC019F +:1032E000058102950F70128111110E94FD210E942B +:1032F0005321882379F0112369F080E28C0D883006 +:1033000048F082E00E943C210E94532191E0D82E97 +:10331000D92601C0D12CE72DE295EF70F0E0E05AFC +:10332000FF4F0C949B2C872D807F072D0F708823D7 +:1033300011F00295007F112389F0002309F499C14F +:1033400080E28C0D883020F4802F0E94E02103C0A1 +:10335000802F0E94F0210E9427228BC18C2D0E9479 +:10336000FF18002309F4C3C180E28C0D883020F4DB +:10337000802F0E94E62103C0802F0E94F6210E9428 +:103380002722B5C1872D807F972D9F70803211F441 +:10339000892F03C0892F8295807FCC2021F0F1E016 +:1033A000CF16A1F01DC0112339F0002319F101300F +:1033B00009F50E9410229BC1002319F0013009F485 +:1033C00096C189830E941322898110C1112321F0A3 +:1033D000063008F08CC10EC0053008F088C106C167 +:1033E000112359F0002331F0F701958190FF41C17D +:1033F0009F7095830E944E197AC1002309F4F6C08C +:103400003EC1872D86958695837090E0009719F0D0 +:10341000019761F06CC1112321F08C2D972D9370D1 +:1034200002C080E090E00E94221761C1112321F0C8 +:103430008C2D972D937002C080E090E00E94381789 +:1034400056C18C2D112319F00E944A2402C00E94FB +:10345000B2240E9437254BC1872D837009F052C0DA +:10346000111145C18C2D829586958770880F880F24 +:103470009C2D9F70892E912CA12CB12C082E04C05C +:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 +:103490000FE010E020E030E0B901A80104C0440FC3 +:1034A000551F661F771F8A95D2F7CB01BA01609529 +:1034B00070958095909503C060E070E0CB01272D5A +:1034C00026952695237030E02230310569F02330AF +:1034D000310589F0682979298A299B29213031050C +:1034E00071F00E94C81F03C1682979298A299B2984 +:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 +:10350000AC1FF5C0112319F0872D817001C086957D +:10351000882309F4ECC08C2D829586958770880FDE +:10352000880F9C2D9F70892E912CA12CB12C082ED8 +:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 +:1035400014C00FE010E020E030E0B901A80104C091 +:10355000440F551F661F771F8A95D2F7CB01BA011A +:10356000609570958095909503C060E070E0CB0108 +:10357000272D269526952370422F50E04230510585 +:1035800069F04330510589F0682979298A299B29F6 +:103590004130510571F00E94A220A9C06829792903 +:1035A0008A299B290E94BE20A2C00E94A220C50198 +:1035B000B4010E9486209BC08C2D90E0FC01E05E4F +:1035C000F109E531F10508F050C0E059FF4F0C94C6 +:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 +:1035E0001F20802F07CF0E944020802F0E94551956 +:1035F0007EC0112341F0053008F079C0872D8F710E +:103600000E94652074C0063008F071C0F7CF112306 +:1036100039F0872D8F710E941F2069C01123C9F3D3 +:10362000872D8F710E94402062C0112329F0872DC1 +:103630008F710E940A205BC00E94002058C0112395 +:1036400051F0172D1F71812F0E941F2063E0812FE1 +:103650000E9433214CC081E00E943C21023008F4DA +:1036600046C082E00E943C2142C0112331F0002379 +:1036700081F28C2D0E9437183AC0002389F28C2DDC +:103680000E94FF1834C0472D4F706C2DC7010E9457 +:10369000EE050E94241F2BC0111129C0472D4F7029 +:1036A00050E042305105B9F04CF44115510581F01C +:1036B00041305105E1F40E94322819C043305105D0 +:1036C00069F04430510599F48C2D0E9484280FC074 +:1036D0000E941B280CC00E944E2809C00E9461282D +:1036E00006C0472D4F706C2DC7010E94F105DD20EB +:1036F000F9F00E942F2180FD1BC0F70112820E9469 +:1037000029210E941F20C7010E94A71B0E94292176 +:103710000F90DF91CF911F910F91FF90EF90DF906D +:10372000CF90BF90AF909F908F907F900C9440204F +:103730000F90DF91CF911F910F91FF90EF90DF904D +:10374000CF90BF90AF909F908F907F9008950F93F0 +:103750001F93CF93DF93EC01888199812B813C816A +:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 +:10377000ED03882371F0688179818A810E94252177 +:103780008C010E94DA200E94A11FB801CE010E9484 +:103790005C19DF91CF911F910F9108950E94FD2137 +:1037A0000E940D220E94D2210E9427220E94E82519 +:1037B0000E94372580E090E00E94221780E090E090 +:1037C0000C9438170E94ED210C94CE1B0E941A21F4 +:1037D000292F22952F7030E02C3031054CF42A30FF +:1037E00031056CF42250310922303105A8F407C0AC +:1037F0002C30310569F02F30310551F00DC0803F7C +:1038000069F018F4803E40F409C0843F29F406C0F2 +:1038100093FB882780F9089580E0089581E008955A +:10382000CF93DF9300D000D01F92CDB7DEB70F90BB +:103830000F900F900F900F90DF91CF910895CF933D +:10384000DF9300D000D000D0CDB7DEB726960FB6FC +:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 +:10386000CF93DF93C0919D0216E080919E02C8170E +:1038700099F0D0E01C9FF0011D9FF00D1124E1563E +:10388000FD4F4081518162817381848195810E94C5 +:103890001F1C2196C770E9CFDF91CF911F9108952A +:1038A0004091CF025091D0026091D1027091D2022A +:1038B0008091D3029091D4020C941F1C8091D40269 +:1038C00082958F7009F054C08091D102882309F449 +:1038D0004FC080919D02A0919E026091CF02709195 +:1038E000D0024091D2025091D302B6E08A1709F477 +:1038F0003FC090E041155105C1F17F3F11F46F3F8A +:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 +:10391000218172132AC02081621327C022812111C4 +:1039200024C0238134812417350710F42150310934 +:10393000241B350B283C3105C0F42091D4022F7094 +:1039400020612093D40226E0289FF001299FF00DEA +:103950001124EC55FD4F80818F70806180838FEC46 +:1039600092E00E94A71B0C942F1C01968770BECF7B +:103970000895CF92DF92EF92FF920F931F93CF9310 +:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 +:10399000CDBF8C0185E0F801DE011D9601900D92EE +:1039A0008A95E1F7D8014C9111965C911197129686 +:1039B0006C9112971396CD90DC9014973091CF02B2 +:1039C0007091D0028091D2029091D302009709F4B5 +:1039D0006BC17F3F19F43F3F09F466C1E090D1020B +:1039E000EE2009F4C0C02091D402C816D90628F0F0 +:1039F000F601E81BF90BCF0104C0809590958C0D62 +:103A00009D1DFF24F394883C910578F0F12C207FD4 +:103A100009F0C6C07C2DD98AC88A89890E94101CE9 +:103A20008FEC92E00E94A71BB1C0822F807F09F02B +:103A300046C0751314C0341312C0611110C02F702A +:103A400020612093D4020E94501C8FEC92E00E94CF +:103A5000A71B8091D402D80115968C932EC0CD2837 +:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 +:103A700080919D0220919E0236E0821709F45AC07F +:103A800090E0389FF001399FF00D1124E156FD4F71 +:103A90007181571306C07081471303C07281711181 +:103AA00003C001968770E9CFF62E662309F418C18A +:103AB0008091D40281608093D402F12C11C17513DE +:103AC00008C0341306C0611104C08091D402D8012B +:103AD000C3C04D875E878D859E856A8B0E94E61BDD +:103AE0006A898823E1F16623D1F12091D402822FE3 +:103AF00082958F7090E0029774F08091CF02909140 +:103B0000D00298878F831986DB86CA862C87CE01E0 +:103B100007960E94A71B86E0F801AFECB2E0019087 +:103B20000D928A95E1F70E945E1C0E94501CFF24B2 +:103B3000F394D6C04D875E878D859E850E941A219D +:103B4000292F22952F7030E0223031050CF0BCC0B7 +:103B50009F7009F0B6C0805E883008F4C1C0C8010B +:103B60000E94A71BE4CFC816D90608F453C0F6017B +:103B7000E81BF90BCF01883C910508F450C0F12CEB +:103B80007C2DD98AC88A89890E94101CEFECF2E04A +:103B900086E0DF011D928A95E9F70E94501CA0C0C3 +:103BA000751314C0341312C0611110C08091D40277 +:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 +:103BC000DF011D928A95E9F7FE2C8AC04D875E873A +:103BD0008D859E856A8B0E94E61B6A89882309F47D +:103BE000BECF662309F4BBCF2091D402822F8295E9 +:103BF0008F7090E002970CF48ECF8091CF0290915D +:103C0000D0029A8389831B82DD82CC822E83CE01EF +:103C100001967FCF809590958C0D9D1DACCFF62E93 +:103C2000662309F49CCF75132EC034132CC0209149 +:103C3000D40220FD1FC0822F82958F70D9F0D80149 +:103C400015962C9315978F3049F08F5F982F92958A +:103C5000907F822F8F70892B15968C93C8010E94BC +:103C6000A71B86E0F801AFECB2E001900D928A95B7 +:103C7000E1F793CF86E0F801AFECB2E001900D924E +:103C80008A95E1F72DC04D875E878D859E850E94C0 +:103C9000E61B811140CF8091D40281608093D402D1 +:103CA000C8010E94A71B1CC0662309F458CF4D878A +:103CB0005E878D859E850E94E61B882309F44FCF81 +:103CC0002ACF811148CF0CC0243031050CF047CFEA +:103CD0009F7009F440CFF8019581907F09F03BCFA8 +:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 +:103CF000CF911F910F91FF90EF90DF90CF9008959B +:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 +:103D1000DEBF0FBECDBF4F83588769877A878B87F9 +:103D20009C87CE0107960E94B91C882369F08F8179 +:103D300098852A853B85232BF1F19F3F09F063C0CD +:103D40008F3F09F060C037C086E0FE013796DE0184 +:103D5000119601900D928A95E1F76F817885EA8539 +:103D6000FB85309741F17F3F11F46F3F21F12091A6 +:103D70009E0230E0C90101968770992740919D020B +:103D800050E08417950709F447C069837A83FD835F +:103D9000EC8396E0929FD001939FB00D1124A15621 +:103DA000BD4FFE01319601900D929A95E1F78093F7 +:103DB0009E020E942F1C16E080919D0290919E020F +:103DC0008917C1F1189FC001112481569D4F0E948F +:103DD000B91C882379F1E0919D021E9FF001112406 +:103DE000E156FD4F408151816281738184819581CB +:103DF0000E941F1C80919D0290E001968770992778 +:103E000080939D02D9CF4F81588569857A858B85AE +:103E10009C850E941F1CCFCF0E94E21B10929E0225 +:103E200010929D02EFECF2E086E0DF011D928A9590 +:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 +:103E4000DF91CF911F910895EF92FF920F931F93EF +:103E5000CF93DF938C01009709F46CC0F12CEE2412 +:103E6000E394E8012196F8018491843740F484308A +:103E700008F051C0813081F0823019F15BC0853784 +:103E800009F444C0A8F19CE7980F903708F052C09D +:103E90008F770E94FF1841C00E5F1F4FFE01C49133 +:103EA00080E28C0F883048F4C7708E2D01C0880FD7 +:103EB000CA95EAF70E94002214C08C2F0E9437187E +:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 +:103ED00058F4C7708E2D01C0880FCA95EAF70E946A +:103EE00006220E9427221AC08C2F0E94FF1816C09B +:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C +:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 +:103F1000FE01F49003C00E9437188E018F2D882374 +:103F200009F49FCFEFE9FFE03197F1F700C00000FF +:103F30008150F5CFDF91CF911F910F91FF90EF90BE +:103F4000089508956093D9027093DA028093DB029A +:103F50009093DC020C94CE1B0F931F930091D90217 +:103F60001091DA022091DB023091DC02DC01CB01FE +:103F7000802B912BA22BB32B8093D9029093DA0242 +:103F8000A093DB02B093DC021F910F910C94CE1B27 +:103F90000F931F930091D9021091DA022091DB0256 +:103FA0003091DC02DC01CB0180239123A223B323D7 +:103FB0008093D9029093DA02A093DB02B093DC02E3 +:103FC0001F910F910C94CE1B0F931F930091D90258 +:103FD0001091DA022091DB023091DC02DC01CB018E +:103FE00080279127A227B3278093D9029093DA02E2 +:103FF000A093DB02B093DC021F910F910C94CE1BB7 +:104000001092D5021092D6021092D7021092D802C6 +:104010000C94CE1B41E050E060E070E004C0440F1F +:10402000551F661F771F8A95D2F74093D50250938C +:10403000D6026093D7027093D8020C94CE1B41E055 +:1040400050E060E070E004C0440F551F661F771F0A +:104050008A95D2F78091D5029091D602A091D7028D +:10406000B091D802482B592B6A2B7B2B4093D50259 +:104070005093D6026093D7027093D8020C94CE1B53 +:1040800041E050E060E070E004C0440F551F661F3F +:10409000771F8A95D2F740955095609570958091DD +:1040A000D5029091D602A091D702B091D8024823B0 +:1040B00059236A237B234093D5025093D602609301 +:1040C000D7027093D8020C94CE1B41E050E060E020 +:1040D00070E004C0440F551F661F771F8A95D2F702 +:1040E0008091D5029091D602A091D702B091D802CA +:1040F000482759276A277B274093D5025093D60239 +:104100006093D7027093D8020C94CE1B0F931F9329 +:104110000091D5021091D6022091D7023091D80299 +:10412000DC01CB01802B912BA22BB32B8093D502EA +:104130009093D602A093D702B093D8021F910F910B +:104140000C94CE1B0F931F930091D5021091D602B1 +:104150002091D7023091D802DC01CB01802391233A +:10416000A223B3238093D5029093D602A093D702C3 +:10417000B093D8021F910F910C94CE1B0F931F93F5 +:104180000091D5021091D6022091D7023091D80229 +:10419000DC01CB0180279127A227B3278093D5028A +:1041A0009093D602A093D702B093D8021F910F919B +:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 +:1041C0001F93CF93DF938C01C090D902D090DA0275 +:1041D000E090DB02F090DC028091D5029091D60253 +:1041E000A091D702B091D802C82AD92AEA2AFB2A7C +:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B +:10420000979587950A94D2F780FF06C0B8018C2F46 +:104210000E947608019721F4219760F780E001C0A1 +:104220008C2FDF91CF911F910F91FF90EF90DF9036 +:10423000CF900895CF93DF93EC010E94DB20BE0165 +:104240000E947608DF91CF910895CB010E941A2138 +:1042500008958091DD0285958595859508958091D5 +:10426000DD028770089598E0899F90011124262B24 +:104270002093DD020C941F202091DD028095822383 +:104280008093DD02982F977069F430E0482F55270E +:1042900047FD50952417350729F085958595859517 +:1042A0000C94402008959091DD02977081E009F40C +:1042B00080E0089590911501992321F090911601C5 +:1042C000911109C02091170130911801F90132961E +:1042D0009FEF40E01FC0982F9695969596959F303A +:1042E00050F5E0911701F0911801E90FF11D877069 +:1042F00021E030E0A90102C0440F551F8A95E2F782 +:10430000CA019181892B818308959F3F39F04F5FC6 +:104310004E3041F051915813F8CF0DC05111F7CFE5 +:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B +:10433000FA9582830895089590911501992321F0AB +:1043400090911601911109C0209117013091180127 +:10435000F9013296205F3F4F1FC0982F9695969592 +:1043600096959F30F0F4E0911701F0911801E90F54 +:10437000F11D877021E030E0A90102C0440F551FF4 +:104380008A95E2F7CA0180959181892381830895F6 +:104390003196E217F30729F090819813F9CF108234 +:1043A000F7CF089581E090E0E0911701F0911801B6 +:1043B000E80FF91F1082019680319105A9F7089541 +:1043C0009091F102892B8093F1020895809590914C +:1043D000F10289238093F10208951092F102089569 +:1043E0009091F002892B8093F0020895809590912E +:1043F000F00289238093F00208951092F00208954C +:104400009091EF02892B8093EF020895809590910F +:10441000EF0289238093EF0208951092EF0208952E +:104420008093DE0208951092DE02089580911701B4 +:1044300090911801FC0131969C01205F3F4F80E074 +:10444000919191118F5FE217F307D1F70895E091F1 +:104450001701F09118018091F1028083E09117011A +:10446000F091180190818091F002892B8083E09176 +:104470001701F091180190818091EF02892B8083C0 +:104480008091DE02882361F0E0911701F09118011C +:104490009081892B80830E94162281111092DE0266 +:1044A00080911701909118010C940C1720E000974F +:1044B00039F0AC0141505109842395232F5FF7CF88 +:1044C000822F089580911303843039F11092F30202 +:1044D00020E488E190E00FB6F894A89580936000FE +:1044E0000FBE2093600080E00E94F10280E00E94F5 +:1044F000100983B7817F846083BF83B7816083BFE6 +:104500007894889583B78E7F83BF88E10FB6F8943F +:1045100080936000109260000FBE08950895089582 +:1045200080E00E94F1020E948E220E946B090E948C +:104530008F220E94F00991E0811101C090E0892F43 +:1045400008950E94E21B80E00E94F1020E940A2866 +:104550000E9400170C9410091F920F920FB60F9231 +:1045600011248F939F93AF93BF938091F302811196 +:1045700013C08091F4029091F502A091F602B091DF +:10458000F7024196A11DB11D8093F4029093F502AC +:10459000A093F602B093F702BF91AF919F918F91D4 +:1045A0000F900FBE0F901F90189582E084BD93E08E +:1045B00095BD9AEF97BD80936E0008952FB7F8943C +:1045C0008091F4029091F502A091F602B091F70269 +:1045D0002FBF0895CF92DF92EF92FF920F931F9318 +:1045E0002FB7F8944091F4025091F5026091F602D1 +:1045F0007091F7022FBF6A017B01EE24FF248C012A +:1046000020E030E0C016D106E206F30610F4415077 +:1046100051099A01281B390BC9011F910F91FF9075 +:10462000EF90DF90CF9008951F920F920FB60F92E8 +:1046300011248F939F93AF93BF938091F402909135 +:10464000F502A091F602B091F7020196A11DB11DED +:104650008093F4029093F502A093F602B093F702D0 +:10466000BF91AF919F918F910F900FBE0F901F90B0 +:1046700018950E94FD13F8942FEF87EA91E62150D8 +:1046800080409040E1F700C0000087E090EBDC0143 +:1046900080931E0390931F03A0932003B0932103E4 +:1046A0009CE088E10FB6F894A895809360000FBE57 +:1046B00090936000FFCF0E949A23811102C00E9454 +:1046C00076230E94A5238093F2020E94AD2380935B +:1046D0001C0387FB882780F9809316010E94A92379 +:1046E000682F70E080E090E00C94A21F6DEE7EEFEA +:1046F00080E090E00E94C12C60E082E090E00E94A7 +:10470000AF2C60E083E090E00E94AF2C60E084E09A +:1047100090E00E94AF2C60E085E090E00E94AF2C1A +:1047200060E086E090E00E94AF2C6FEF87E090E0C1 +:104730000C94AF2C80E090E00E94A92C21E08D3EEB +:104740009E4F09F020E0822F089582E090E00C94C3 +:10475000A12C83E090E00C94A12C84E090E00C94D8 +:10476000A12C682F84E090E00C94AF2C86E090E0C0 +:104770000C94A12C682F86E090E00C94AF2C87E07D +:1047800090E00C94A12C682F87E090E00C94AF2C63 +:104790008091FA0280FF0BC060911C0185E0689F48 +:1047A000B001112475956795759567952BC081FFAC +:1047B00009C060911C0185E0689FB00111247595C6 +:1047C000679520C082FF07C060911C0185E0689F4B +:1047D000B001112417C09091FB029923D1F0609190 +:1047E0001B01961788F720911C0185E0289F9001F6 +:1047F0001124929FA001939F500D112470E0CA01D3 +:104800000E94872C6038710540F46115710539F0FC +:1048100002C065E070E0862F08958FE7089581E07B +:1048200008958091FA0280FF08C060911A0170E03B +:10483000759567957595679521C081FF06C0609154 +:104840001A0170E07595679519C082FF04C06091E8 +:104850001A0170E010C09091FB029923C1F06091A1 +:1048600019019617A0F780911A01899FC0011124A0 +:1048700070E00E94872C6038710528F4611571057D +:1048800021F0862F08958FE7089581E0089561E073 +:1048900070E0F4CF803F21F40E94C823819504C0CA +:1048A000813F29F40E94C8238093FE020895823F2D +:1048B00021F40E94C823819504C0833F29F40E94FB +:1048C000C8238093FD020895893F19F40E941124A2 +:1048D00005C08A3F31F40E94112481958093FF0224 +:1048E00008958B3F21F40E941124819504C08C3FD0 +:1048F00029F40E941124809300030895843F21F439 +:104900008091FC02816017C0853F21F48091FC02F8 +:10491000826011C0863F21F48091FC0284600BC04C +:10492000873F21F48091FC02886005C0883F31F404 +:104930008091FC0280618093FC0208958D3F21F4F8 +:104940008091FA0281600BC08E3F21F48091FA02BF +:10495000826005C08F3F29F48091FA0284608093C1 +:10496000FA020895803F39F48091FE0287FF6CC0FF +:104970001092FE0269C0813F29F48091FE02181650 +:10498000BCF362C09091FD02823F29F497FF5CC0A6 +:104990001092FD0259C0833F19F41916CCF354C08C +:1049A000893F41F48091FF0218160CF04DC010921F +:1049B000FF024AC08A3F29F48091FF0287FF44C06A +:1049C000F6CF8B3F39F48091000387FF3DC01092F2 +:1049D00000033AC08C3F29F4809100031816BCF301 +:1049E00033C0843F21F48091FC028E7F17C0853F45 +:1049F00021F48091FC028D7F11C0863F21F48091CB +:104A0000FC028B7F0BC0873F21F48091FC02877FE3 +:104A100005C0883F31F48091FC028F7E8093FC02B8 +:104A200013C08D3F21F48091FA028E7F0BC08E3F20 +:104A300021F48091FA028D7F05C08F3F29F4809187 +:104A4000FA028B7F8093FA028091FD0281110EC0E1 +:104A50008091FE0281110AC08091FF02811106C07F +:104A600080910003811102C01092FB0208958CEF27 +:104A700092E00E9417170E94DE229093F902809321 +:104A8000F80208951F93CF93DF938091F8029091DD +:104A9000F9020E94EA22AC019091FB02992321F0D5 +:104AA00020911D0130E006C020911E018AE0289F60 +:104AB000900111244217530708F486C08091FD022B +:104AC000C091FE02D091FF0210910003811107C036 +:104AD000C11176C0D11174C0111172C075C09F3F51 +:104AE00019F09F5F9093FB02181624F40E94C823CC +:104AF0008093FD028091FD0287FF05C00E94C823BC +:104B000081958093FD021C1624F40E94C823809393 +:104B1000FE028091FE0287FF05C00E94C823819596 +:104B20008093FE026091FD02662339F1C091FE027E +:104B3000CC2319F1772767FD7095872F972F0E9457 +:104B4000A92923E333E343E35FE30E94B92A0E94E8 +:104B500076296093FD026C2F772767FD7095872F6C +:104B6000972F0E94A92923E333E343E35FE30E94E5 +:104B7000B92A0E9476296093FE021D1624F40E9431 +:104B800011248093FF028091FF0287FF05C00E94DD +:104B9000112481958093FF02111624F40E941124A0 +:104BA000809300038091000387FF05C00E941124B9 +:104BB000819580930003DF91CF911F910C9437254D +:104BC0009F3F09F08ECF96CFDF91CF911F9108952F +:104BD000ECEFF2E085E0DF011D928A95E9F7109293 +:104BE000FB021092FA020895833081F128F481309B +:104BF00059F08230D1F00895853009F449C0B8F1F8 +:104C0000863009F456C0089580911E01262F30E0A9 +:104C1000280F311D2F3F310524F4680F60931E01CA +:104C200008958FEF80931E01089580911D01262F16 +:104C300030E0280F311D2F3F310524F4680F6093B9 +:104C40001D0108958FEF80931D01089580911C012F +:104C5000262F30E0280F311D2F3F310524F4680F37 +:104C600060931C0108958FEF80931C01089580913B +:104C70001B01262F30E0280F311D2F3F310524F472 +:104C8000680F60931B0108958FEF80931B010895B7 +:104C900080911A01262F30E0280F311D2F3F31055A +:104CA00024F4680F60931A0108958FEF80931A011E +:104CB000089580911901262F30E0280F311D2F3FD4 +:104CC000310524F4680F6093190108958FEF8093E4 +:104CD00019010895833011F128F4813049F08230B0 +:104CE00091F00895853081F120F18630C1F1089569 +:104CF00080911E01681720F4861B80931E01089581 +:104D000010921E01089580911D01681720F4861BE2 +:104D100080931D01089510921D01089580911C013A +:104D2000681720F4861B80931C01089510921C01C3 +:104D3000089580911B01681720F4861B80931B0146 +:104D4000089510921B01089580911A01681720F4AC +:104D5000861B80931A01089510921A01089580917C +:104D60001901681720F4861B809319010895109289 +:104D7000190108950F931F93873208F048C08E31B0 +:104D800008F08DC0803109F477C008F5873009F448 +:104D900061C068F4863009F09DC08091F202817F85 +:104DA0008E7F8093F20281E08093020394C08B3067 +:104DB00009F489C08E3009F08DC08091F20282FB27 +:104DC000222720F991E0922790FB82F95EC086317C +:104DD00009F479C060F4813109F07CC00E94E21BC3 +:104DE0009091160181E08927809316016CC089316A +:104DF00009F469C08B3109F06DC08091F20281FB2A +:104E0000222720F991E0922790FB81F93EC0883358 +:104E100009F459C050F4893209F457C0853309F4B4 +:104E200054C0873209F451C055C0833409F44DC0D1 +:104E300028F48A3308F44EC0895332C0883409F00C +:104E400049C00E94E21B0E94200A0E94E4030E94C3 +:104E5000392339C09091F202892F8095817080FBAF +:104E600090F929F0966098609093F20234C0997F8F +:104E7000977F9093F20227C08091F20283FB222752 +:104E800020F991E0922790FB83F98093F202992315 +:104E9000D1F08091F20281608093F20214C08D51B2 +:104EA00041E050E060E070E08A019B0104C0000F27 +:104EB000111F221F331F8A95D2F7C901B8010E9422 +:104EC000A21F0E94E21B81E006C061E070E080E06A +:104ED00090E0F5CF80E01F910F91089580E0089554 +:104EE00080E00895CF93C82F80910203813069F04C +:104EF00018F08230C9F184C0E0911701F0911801D7 +:104F00008081823209F07EC007C0E0911701F091E4 +:104F100018018081823261F48C2F0E946E278111EA +:104F200004C08C2F0E94BA261DC081E090E01AC0F8 +:104F30008C2F0E947027811114C0C43179F048F47D +:104F4000CB3079F0C03109F061C082E08093020378 +:104F500008C0C93219F0C83321F058C010920203BA +:104F600055C081E0817054C0C93291F120F5C4313F +:104F700079F1B0F4C73009F047C08EE180931E018B +:104F800082E380931D018AE080931C0184E1809379 +:104F90001B0188E080931A0188E28093190134C0D4 +:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 +:104FB0008093010329C0CE34E9F020F4CB3421F5ED +:104FC0006AE013C0C13579F0C235F1F461E00DC07B +:104FD00080910103882319F01092010315C081E02C +:104FE0008093020315C061E006C0809101030E9416 +:104FF000F4250AC06AE0809101030E946A2604C079 +:105000001092020380E004C081E002C080E0AACFD9 +:10501000CF9108950E949A23811102C00E947623A5 +:105020000E94B62380931D0380FF02C0869501C0B5 +:1050300080E00C94F10280911D03982F9695292F02 +:1050400030E0233031054CF49F5F990F8170892B3C +:10505000816080931D030E94BA2380911D03869571 +:105060000C94F10280911D03982F969591F0915820 +:10507000990F8170892B80931D038E7F91E009F435 +:1050800090E080911D0390FB80F980931D030E94A6 +:10509000BA2380911D0386950C94F10280911D0323 +:1050A000982F909590FB80F980931D030E94BA235E +:1050B00080911D0380FF02C0869501C080E00C94A2 +:1050C000F10290911D03892F86958F5F8F779170E4 +:1050D000843028F4880F892B80931D0302C090939D +:1050E0001D0380911D038E7F91E009F490E0809173 +:1050F0001D0390FB80F980931D030E94BA238091C9 +:105100001D0386950C94F10220911D03922F969514 +:105110008927982F990F822F8170892B80931D03E7 +:105120008E7F91E009F490E080911D0390FB80F95F +:1051300080931D030E94BA2380911D0386950C94D1 +:10514000F10280911D03869508955058BB27AA2728 +:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 +:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF +:10517000D3D180F3BA17620773078407950718F035 +:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 +:105190000B01B90190010C01CA01A0011124FF27E4 +:1051A000591B99F0593F50F4503E68F11A16F040DF +:1051B000A22F232F342F4427585FF3CF46953795DE +:1051C0002795A795F0405395C9F77EF41F16BA0BA3 +:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 +:1051E000661F771F881FC2F70EC0BA0F621F731F9A +:1051F000841F48F4879577956795B795F7959E3FF7 +:1052000008F0B3CF9395880F08F09927EE0F979584 +:105210008795089527D108F481E008950CD06BC1DB +:1052200063D140F05AD130F021F45F3F19F03EC114 +:10523000511195C14FC170D198F39923C9F35523EA +:10524000B1F3951B550BBB27AA2762177307840779 +:1052500038F09F5F5F4F220F331F441FAA1FA9F32F +:1052600033D00E2E3AF0E0E830D091505040E69521 +:10527000001CCAF729D0FE2F27D0660F771F881F82 +:10528000BB1F261737074807AB07B0E809F0BB0B71 +:10529000802DBF01FF2793585F4F2AF09E3F510595 +:1052A00068F004C15CC15F3FECF3983EDCF3869587 +:1052B00077956795B795F7959F5FC9F7880F911D0B +:1052C0009695879597F90895E1E0660F771F881FF7 +:1052D000BB1F621773078407BA0720F0621B730BAA +:1052E000840BBA0BEE1F88F7E095089504D06894FC +:1052F000B11135C1089518D188F09F5790F0B92F9A +:105300009927B751A0F0D1F0660F771F881F991F1A +:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF +:1053200008951CC1672F782F8827B85F39F0B93FDF +:10533000CCF3869577956795B395D9F73EF490951C +:105340008095709561957F4F8F4F9F4F0895E8949A +:1053500009C097FB3EF490958095709561957F4FBD +:105360008F4F9F4F9923A9F0F92F96E9BB2793956B +:10537000F695879577956795B795F111F8CFFAF47B +:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC +:1053900016C0882311F096E911C0772321F09EE80A +:1053A000872F762F05C0662371F096E8862F70E070 +:1053B00060E02AF09A95660F771F881FDAF7880F4A +:1053C0009695879597F9089588D018F011F08CD0AC +:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F +:1053E000E7FB6217730784079507A8F199F3E92F84 +:1053F000FF2788232AF03197660F771F881FDAF777 +:10540000952F5527442332F091505040220F331FDF +:10541000441FD2F7BB27E91BF50B621B730B840BF0 +:10542000B109C1F222F4620F731F841FB11D3197BD +:105430002AF0660F771F881FBB1FEFCF9150504097 +:105440005AF041F0882332F0660F771F881F915081 +:105450005040C1F7939530C08695779567959F5FCB +:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 +:1054700016161706E807F907C0F012161306E40718 +:10548000F50798F0621B730B840B950B39F40A2611 +:1054900061F0232B242B252B21F408950A2609F4EF +:1054A000A140A6958FEF811D811D089597F99F67F3 +:1054B00080E870E060E008959F3F31F0915020F463 +:1054C000879577956795B795880F911D96958795E0 +:1054D00097F908959FEF80EC089500240A9416161A +:1054E000170618060906089500240A9412161306D2 +:1054F000140605060895092E0394000C11F4882360 +:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B +:105510007F4F8F4F9F4F089557FD9058440F551F51 +:1055200059F05F3F71F04795880F97FB991F61F025 +:105530009F3F79F087950895121613061406551F9C +:10554000F2CF4695F1DF08C0161617061806991F08 +:10555000F1CF86957105610508940895E894BB27FD +:1055600066277727CB0197F908957CDF08F48FEF42 +:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 +:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF +:10559000D1F3950F50E0551F629FF001729FBB271A +:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 +:1055B0006627B00DA11D661F829F2227B00DA11D79 +:1055C000621F739FB00DA11D621F839FA00D611DFF +:1055D000221F749F3327A00D611D231F849F600D20 +:1055E000211D822F762F6A2F11249F5750408AF059 +:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 +:10560000881F91505040A9F79E3F510570F04ECF32 +:10561000A6CF5F3FECF3983EDCF3869577956795D0 +:10562000B795F795E7959F5FC1F7FE2B880F911D02 +:105630009695879597F90895FA01EE0FFF1F30961A +:105640002105310599F16115710561F48038BFE3D9 +:105650009B0749F168949038810561F08038BFEF6D +:105660009B0741F0992342F5FF3FE10531052105F4 +:1056700011F1E8940894E795D901AA2329F4AB2FF6 +:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F +:10569000F73950F019F0FF3A38F49F779F930CD008 +:1056A0000F9007FC905808953EF014CF60E070E032 +:1056B00080E89FE308954FE79F775F934F933F9371 +:1056C0002F939ED02F913F914F915F9152DF05C054 +:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C +:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C +:1056F0004EDF0F920F920F924DB75EB70F92C0D050 +:10570000EAE0F1E016D04F915F91EF91FF91E595BE +:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD +:10572000FA95E1F74195550B32D00F9007FE26C050 +:105730000895DF93CF931F930F93FF92EF92DF9221 +:105740007B018C01689405C0DA2EEF011EDFFE019B +:10575000E894A5912591359145915591AEF3EF01CE +:1057600006DDFE019701A801DA9479F7DF90EF904A +:10577000FF900F911F91CF91DF9108959B01AC0194 +:1057800060E070E080E89FE349CD90CE95CECCDE1E +:10579000E8F39923D9F3940F511DBBF39150504076 +:1057A00094F059F0882332F0660F771F881F9150CC +:1057B0005040C1F79E3F510544F7880F911D9695C3 +:1057C000879597F908955F3FACF0983E9CF0BB2712 +:1057D000869577956795B79508F4B1609395C1F76D +:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B +:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 +:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD +:105810000F93FF92C92FDD2788232AF02197660F67 +:10582000771F881FDAF720E030E040E85FEB9FE366 +:10583000883920F0803E30F021968F7787DCE2E3D4 +:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 +:10585000EC01FB2E6F5771097595771F880B990B1B +:1058600078DD28E132E741E35FE38FDEAF2D980179 +:10587000AE01FF900F911F91CF91DF9178DC3BCE6D +:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 +:1058900022273327442750781FC0B75188F4AB2FF5 +:1058A0000024469537952795011CA395D2F3002037 +:1058B00069F0220F331F441FB395DAF30DD045CCA6 +:1058C00061307105A0E88A07B94630F49B01AC014C +:1058D0006627772788279078309621F020833183B8 +:1058E000428353830895AA1BBB1B51E107C0AA1F23 +:1058F000BB1FA617B70710F0A61BB70B881F991F71 +:105900005A95A9F780959095BC01CD01089597FB14 +:10591000072E16F4009407D077FD09D00E94732C4F +:1059200007FC05D03EF4909581959F4F08957095A2 +:1059300061957F4F0895EE0FFF1F0590F491E02DC4 +:105940000994F999FECF92BD81BDF89A992780B547 +:105950000895A8E1B0E042E050E00C94C92C262F55 +:10596000F999FECF92BD81BDF89A019700B4021655 +:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 +:1059800008950196272F0E94B02C0C94AF2CDC01B7 +:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A +:1059A000319600B40D9241505040B8F70895F894E4 +:0259B000FFCF27 +:1059B200640007000CFF0000003F64041092106FA7 +:1059C200103B1007100101DF022808140A321E00E2 +:1059D20002040507090B0C0E1011131517181A1CD7 +:1059E2001D1F2123242628292B2D2F303234353711 +:1059F200393B1F0F03764F5F6F7F4969437909591E +:105A020053633149803F5D8B803FF8BF803FCAE1DD +:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE +:105A2200803F3149803F0000803FF16D7F3F75EA42 +:105A32007E3F4C827E3F833F7E3F84287E3F833F72 +:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 +:105A5200803F3F4D3639ED04A0046A043104C4038B +:105A6200DD03F6030F04010203040506070809001B +:00000001FF diff --git a/keyboard/planck/keymaps/default/compiled.hex b/keyboard/planck/keymaps/default/compiled.hex new file mode 100644 index 0000000000..a4d69eaa9f --- /dev/null +++ b/keyboard/planck/keymaps/default/compiled.hex @@ -0,0 +1,1611 @@ +:100000000C941D050C9461050C9461050C9461051C +:100010000C9461050C9461050C9461050C946105C8 +:100020000C9461050C9461050C94D2180C94A419DD +:100030000C9406270C9461050C9461050C946105E1 +:100040000C9461050C94C2050C9461050C94610537 +:100050000C9461050C946E270C9461050C94610559 +:100060000C9461050C9461050C9461050C94610578 +:100070000C9461050C9461050C9461050C94610568 +:100080000C94B80E0C9461050C9461050C946105F8 +:100090000C9461050C9461050C9461050C94610548 +:1000A0000C9461050C9461050C9461052A063C06CC +:1000B0005006620671067B06CF06CF06CF06CF0636 +:1000C000CF06CF068906B906CB06111A331A211BB3 +:1000D000331A211B781A9B1A211BF01A031BED1DE2 +:1000E000ED1D1C1E1C1E5B1E7B1ED11FD11F861EFC +:1000F000D11F361F361F9D1FA61FD11FCB1F431FA9 +:10010000431F431F431F431F431F431F431F431FDF +:10011000431F431F431F431F431F431F431F531FBF +:10012000611F681F6F1F791F07634236B79BD8A7EF +:100130001A39685618AEBAAB558C1D3CB7CC57630C +:10014000BD6DEDFD753EF6177231BF000000803FBA +:1001500008000000BE922449123EABAAAA2ABECDD6 +:10016000CCCC4C3E00000080BEABAAAAAA3E000048 +:100170000000BF000000803F000000000008417840 +:10018000D3BB4387D1133D190E3CC3BD4282AD2B77 +:100190003E68EC8276BED98FE1A93E4C80EFFFBE6F +:1001A00001C4FF7F3F0000000000000000000000CD +:1001B0000000000000010204060A0F17202C3A4A32 +:1001C0005D71879DB3C7DAE9F5FCFFFCF5E9DAC795 +:1001D000B39D87715D4A3A2C20170F0A060402016D +:1001E00000000000000000000000010801150109E6 +:1001F00001190112010F0208021502090219021267 +:10020000020F002B0014001A000800150017001C34 +:100210000018000C00120013002A00290004001628 +:1002200000070009000A000B000D000E000F00334C +:10023000003400E1001D001B00060019000500113C +:1002400000100036003700380028000530E000E2DA +:1002500000E30003302C002C000430500051005209 +:10026000004F002B0014001A00090013000A000DB3 +:10027000000F0018001C0033002A0029000400159C +:10028000001600170007000B00110008000C0012F8 +:10029000003400E1001D001B000600190005000EDF +:1002A00000100036003700380028000530E000E27A +:1002B00000E30003302C002C0004305000510052A9 +:1002C000004F002B0034003600370013001C0009DB +:1002D000000A00060015000F002A00290004001281 +:1002E00000080018000C0007000B00170011001692 +:1002F000003800E100330014000D000E001B000563 +:100300000010001A0019001D0028000530E000E26E +:1003100000E30003302C002C000430500051005248 +:10032000004F0035021E021F02200221022202237A +:100330000224022502260227022A004C003A003B32 +:10034000003C003D003E003F002D022E022F0230F7 +:1003500002310201004000410042004300440045D8 +:1003600000320264020100010001000100010001ED +:100370000001000100010001000100AB00AA00A97A +:1003800000AE0035001E001F0020002100220023C7 +:100390000024002500260027002A004C003A003BDC +:1003A000003C003D003E003F002D002E002F00309D +:1003B000003100010040004100420043004400457C +:1003C0000032006400010001000100010001000191 +:1003D0000001000100010001000100AB00AA00A91A +:1003E00000AE001E001E001E001E001E001E001E8D +:1003F000001E001E001E001E001E00000014001A39 +:10040000000800150017001C0018000C0012001353 +:10041000002F000E3004001600070009000A000B30 +:10042000000D000E000F00330034000D30000000FE +:10043000000600190000000000110010000000007C +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:10048000000000000000000000000000000000006C +:10049000000000000000000000000000000000005C +:1004A000000000000000000000000000000000004C +:1004B000000000000000000000000000000000003C +:1004C000000000000000000000000000000000002C +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000000000000000000000FC +:1005000000000000000000000000000000000000EB +:1005100000000000000000000000000000000000DB +:1005200000000000000000000000000000000000CB +:1005300000000000000000000000000000000000BB +:1005400000000000000000000000000000000000AB +:10055000000000000000000000000000000000009B +:10056000000000000000000000000000000000008B +:10057000000000000000000000000000000000007B +:10058000000000000000000000000000000000006B +:10059000000000000000000000000000000000005B +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000000000000000001B +:1005E000000000000000000000000000000000000B +:1005F00000000000000000000000000000000000FB +:1006000000000000000000000000000000000000EA +:1006100000000000000000000000000000000000DA +:1006200000000000000000000000000000000000CA +:1006300000000000000000000000000000000000BA +:1006400000000000000000000000000000000000AA +:10065000000000000000000000000000000000009A +:10066000000000000000000000000000000000008A +:10067000000000000000000000000000000000007A +:10068000000000000000000000000000000000006A +:10069000000000000000000000000000000000005A +:1006A000000000000000000000000000000000004A +:1006B000000000000000000000000000000000003A +:1006C000000000000000000000000000000000002A +:1006D000000000000000000000000000000000001A +:1006E000000000000000000000000000000000000A +:1006F00000000000000000000000000000000000FA +:1007000000000000000000000000000000000000E9 +:1007100000000000000000000000000000000000D9 +:1007200000000000000000000000000000000000C9 +:1007300000000000000000000000000000000000B9 +:1007400000000000000000000000000000000000A9 +:100750000000000000000000000000000000000099 +:100760000000000000000000000000000000000089 +:100770000000000000000000000000000000000079 +:100780000000000000000000000000000000000069 +:100790000000000000000000000000000000000059 +:1007A0000000000000000000000000000000000049 +:1007B0000000000000000000000000000000000039 +:1007C0000000000000000000000000000000000029 +:1007D0000000000000000000000000000000000019 +:1007E0000000000000000000000000000000000009 +:1007F00000000000000000000000000000000000F9 +:100800000000000100005001000100010001000192 +:100810000001000100010001004C00010001000185 +:100820000020502150135012500030013002300C83 +:100830003001000100275026502350245028502911 +:100840005001000100010001000100010001000150 +:100850000001000100010001000100010001000190 +:100860000001002803540068006500200050006C5F +:100870000061006E0063006B0020004B0065007992 +:100880000062006F0061007200640000002C034FE2 +:10089000007200740068006F006C0069006E0065F3 +:1008A000006100720020004B006500790062006F5B +:1008B0000061007200640073000000040309040971 +:1008C000026D00040100A0FA090400000103010107 +:1008D00000092111010001224000070581030800E1 +:1008E0000A090401000103010200092111010001AC +:1008F000224D000705820308000A090402000103D3 +:1009000000000009211101000122360007058303C0 +:1009100008000A0904030001030000000921110175 +:1009200000012239000705840310000112011001A3 +:1009300000000008EDFE60600100010200010501F9 +:100940000906A101050719E029E715002501950809 +:1009500075018102050819012905950575019102A6 +:1009600095017503910105071900297715002501E7 +:10097000957875018102C005010980A101850216E3 +:10098000010026B7001A01002AB7007510950181F1 +:1009900000C0050C0901A1018503160100269C0277 +:1009A0001A01002A9C02751095018100C0050109F9 +:1009B00002A1010901A10005091901290515002558 +:1009C00001950575018102950175038101050109F4 +:1009D0003009311581257F95027508810609381582 +:1009E00081257F950175088106050C0A380215815D +:1009F000257F950175088106C0C005010906A10182 +:100A0000050719E029E71500250195087501810200 +:100A100095017508810105081901290595057501DC +:100A200091029501750391010507190029FF150031 +:100A300026FF00950675088100C011241FBECFEF68 +:100A4000DAE0DEBFCDBF04B603FE24C080918E0481 +:100A500090918F04A0919004B09191048730904BB5 +:100A6000A740B04BB9F410928E0410928F041092EC +:100A700090041092910414BE84B7877F84BF88E1EC +:100A80000FB6F89480936000109260000FBEE0E013 +:100A9000F8E3099513E0A0E0B1E0E0E7F2E602C078 +:100AA00005900D92A033B107D9F714E0A0E3B3E0AD +:100AB00001C01D92AE38B107E1F70E941C160C94DC +:100AC00036310C940000089581E0089508950C9447 +:100AD00063050C9464050C9466050E94002D23E0C8 +:100AE00030E0281B3109220F209334030895282F6A +:100AF0002F9880918000211108C0877F809380000B +:100B000010928D0010928C001BC088608093800032 +:100B1000233019F48FEF9FEF0FC083E090E0821B2A +:100B20009109880F991F2FEF3FEFA90102C0569539 +:100B300047958A95E2F7CA0190938D0080938C00C7 +:100B40000C946D050E946D0584E080933303109230 +:100B500030030895279A2F988FEF9FEF9093870087 +:100B6000809386008AE08093800089E180938100F1 +:100B70000E94692C0C94A2050E94AA056E9A769A8E +:100B80000C94EF061F920F920FB60F9211242F9321 +:100B90003F938F939F93EF93FF93E0913103F091F5 +:100BA0003203CF010196909332038093310300907A +:100BB000330302C0F695E7950A94E2F7EF7380914C +:100BC0003003823019F4E03251F404C0813039F43A +:100BD000EF3329F480916F008D7F80936F00F0E0F8 +:100BE000E655FE4FE49121E031E0E29FC001E39F32 +:100BF000900D11240090340302C0969587950A94B5 +:100C0000E2F790938D0080938C00FF91EF919F917C +:100C10008F913F912F910F900FBE0F901F901895BD +:100C2000CF93DF93EC010E940728BE0180E090E0A3 +:100C3000DF91CF910C94FC230F931F93462F50E02C +:100C40004F30510508F0ABC0DC01FA01EA5AFF4F02 +:100C50000C94FA3012968C91882309F4A0C000E01D +:100C600010E0980140E064E070E088E292E00E94C9 +:100C7000361281E090E011C012968C91882309F41D +:100C80008EC000E010E0980140E066E070E088EB84 +:100C900091E00E94361282E090E00E9410067FC030 +:100CA00012968C91882309F47AC000E010E0980134 +:100CB00040E068E070E088EE91E00E94361284E047 +:100CC00090E0EBCF12968C91882311F083E00EC058 +:100CD00083E00E949A2440E164E083E00E949B0C40 +:100CE0005EC012968C91882321F084E00E947924C2 +:100CF000F2CF84E0EECF12968C91882331F085EE0E +:100D00000E94911C0E94C02C4AC085EE0E94591D71 +:100D100046C012968C91882309F441C00E94EB0DC5 +:100D200000E010E0980140E066E070E088E891E0C3 +:100D30000E94361284E00E949A2483E00E949A2442 +:100D400080E10E949A2485E00E9479240E94F42781 +:100D5000811102C00E94D0270E940C2890E090933D +:100D60008D0480938C04806880938C040E941028EA +:100D700016C012968C91882391F000E010E0980143 +:100D800040E066E070E088E591E00E94361285E080 +:100D90000E949A2404C012968C91811103C080E0B5 +:100DA00090E002C08AEE91E01F910F9108950F9399 +:100DB0001F932FEF89EF90E0215080409040E1F7A2 +:100DC00000C0000000E010E0980140E065E070E045 +:100DD00088E492E00E9436121F910F9108950C94BE +:100DE000D7060F931F9300E010E0980140E063E006 +:100DF00070E080E091E00E9436122FEF82E597E0EC +:100E0000215080409040E1F700C000001F910F91F9 +:100E10000C94EB0D0F931F9300E010E0980140E05D +:100E200068E070E088E191E00E9436121F910F9116 +:100E300008950C940A0781E008950C941B07089507 +:100E40000C94BC0580918503882309F448C08091E7 +:100E5000410390914203009779F40E9438279093C0 +:100E60004203809341038091430390E0009771F423 +:100E70008091440390E00AC00E94442720917002B0 +:100E8000309171022817390740F329C00197880F64 +:100E9000991F880F991FFC01EB5BFC4F60817181EA +:100EA000828193810E941E0EE091430384E0E89FBB +:100EB000F0011124EB5BFC4F608171818281938191 +:100EC0004FE050E00E94D6118091430390E00196DC +:100ED0006091440370E00E94E630809343030C94D9 +:100EE0006705109287030C94EB0D81E080938703D4 +:100EF0000C94190708958F929F92AF92BF92EF9230 +:100F0000FF920F931F93CF93DF93CDB7DEB7A397D5 +:100F10000FB6F894DEBF0FBECDBF7C01FC0100818F +:100F20001181C8010E943525B8010E947D098C01FC +:100F3000B7010E941D07882309F4CCC10032F0E5F7 +:100F40001F0741F4F7018281882309F458C00E94E9 +:100F5000CD12C0C10132F0E51F0741F4F7018281D3 +:100F6000882309F44CC00E94D612B4C10232F0E5C5 +:100F70001F0751F4F7018281882309F440C00E94C1 +:100F8000C9128111F0CFE3CF0332F0E51F0739F426 +:100F9000F7018281882399F10E9475079BC1043271 +:100FA000F0E51F0739F4F7018281882341F10E949F +:100FB000710790C10532F0E51F0749F4F7018281FE +:100FC0008823E9F0809187038111F1CFE5CF0632C4 +:100FD000F0E51F0739F4F7018281882381F00E9430 +:100FE000DD120AC00732F0E51F0749F4F7018281DC +:100FF000882329F00E94E8120E940A076BC18091A1 +:101000008703811105C0F70182818111CFC018C10A +:10101000003E110579F4F7018281882309F44DC05F +:101020000E94EB0D81E0809386031092850310925D +:10103000440350C1023E110559F4F701828188230F +:10104000E1F10E94EB0D109286031092850342C1DC +:10105000033E110591F4F7018281882371F10E940A +:10106000EB0D1092860381E0809385031092430379 +:1010700010924203109241032DC10235110559F41B +:10108000F7018281882309F425C180917002909133 +:1010900071020A970DC00135110579F4F7018281BB +:1010A000882309F417C180917002909171020A9609 +:1010B00090937102809370020DC14091740283E29B +:1010C000EFE8F2E0DE01119601900D928A95E1F7CA +:1010D000F701808121E030E02C0F3D1F280F311DEA +:1010E000C9012091720230917302FC01E20FF31FDB +:1010F0006081772767FD7095640F711D882777FDE4 +:101100008095982F0E94082E20E030E040E451E4C2 +:101110000E946D2D4B015C01F701218184E090E07C +:10112000821B9109BC01882777FD8095982F0E942A +:10113000082E9B01AC01C501B4010E94052D9B0145 +:10114000AC0160E070E080E090E40E947B2F20E042 +:1011500030E04CED50E40E94182F4B015C01F70188 +:1011600082818823D1F04FE050E0C501B4010E9494 +:10117000D611809186038823A1F08091440324E056 +:10118000829FF0011124EB5BFC4F80829182A2824E +:10119000B3828F5F8093440304C0C501B4010E94F1 +:1011A0001E0E0F3F110508F02ECF94C08091400312 +:1011B00081111FC0043130E5130709F051C00E94AE +:1011C0001F0781E0809340030E94382790933F03DC +:1011D00080933E0310923703109239031092380324 +:1011E00010923B0310923A0310923D0310923C037D +:1011F00071C080913E0390913F030E944427883C38 +:10120000910570F480913703E82FF0E0EE0FFF1F97 +:10121000E85CFC4F118300838F5F809337035AC0D3 +:10122000043880E5180721F00538104501F13AC06F +:10123000F7018281882341F01092350382E01EC0BD +:10124000043830E5130759F580913503811106C044 +:1012500086E20E94911C86E20E94591D82E01CC019 +:101260000438F0E51F0741F305381045D9F4F701BC +:101270008281882331F01092360380E20E94A81DFB +:1012800029C080913603811106C087E20E94911C1B +:1012900087E20E94591D80E20E94AF1D1BC00538E5 +:1012A000104529F381E08093350380933603C7010D +:1012B000A3960FB6F894DEBF0FBECDBFDF91CF91DE +:1012C0001F910F91FF90EF90BF90AF909F908F90E4 +:1012D0000C94690580E0A3960FB6F894DEBF0FBEAC +:1012E000CDBFDF91CF911F910F91FF90EF90BF90F5 +:1012F000AF909F908F90089508959CE0799FF001A2 +:10130000112490E3899FE00DF11D1124E60FF11DDA +:10131000EE0FFF1FED5FFD4F859194910895880FAB +:10132000991FFC01ED57FF4F859194910895880F07 +:10133000991FFC01ED5FFD4F8591949108950F93E6 +:101340001F93CF93DF93EC01811521E39207A0F562 +:10135000C11580E3D80708F0D7C0C83ED105D8F43E +:10136000C03ED10508F007C2C83AD10578F4C53AA5 +:10137000D10508F06AC0C130D10509F463C008F492 +:10138000F7C1C430D10508F0F6C1F2C1CB3BD1059D +:1013900008F466C0EDC1C11590E2D90708F0AFC0EE +:1013A000C11521E0D20708F0E6C1C03FD10508F41D +:1013B000DFC18E0110651FC2C03880E5D80700F577 +:1013C000C03790E5D90708F0A3C0C11520E5D207C2 +:1013D00009F4ACC050F4CE01905480319F4008F025 +:1013E000C7C1DF708E01106A06C2C13080E5D80720 +:1013F00009F4AEC0C43190E5D90708F4AFC0B8C154 +:10140000C33820E5D20709F48EC050F4C13890E506 +:10141000D90709F482C008F083C000E011EDEBC1E8 +:10142000C03181E5D80708F4A3C1C11597E5D907F4 +:1014300008F436C1CE0190578115904108F098C14B +:10144000DF7093C101E010E0D6C1C53AD10509F4BF +:1014500094C1C63AD10509F093C102E810E4CBC1AA +:10146000C83AD10509F48FC1C93AD10509F48EC132 +:10147000CA3AD10509F48DC1CB3AD10509F48CC122 +:10148000CC3AD10509F48BC1CD3AD10509F48AC112 +:10149000C03BD10509F489C1CE3AD10509F488C110 +:1014A000CF3AD10509F487C1C13BD10509F486C102 +:1014B000C23BD10509F485C1C33BD10509F484C100 +:1014C000C43BD10509F483C1C53BD10509F482C1F0 +:1014D000C63BD10509F481C1C73BD10509F480C1E0 +:1014E000C83BD10509F47FC1C93BD10509F47EC1D0 +:1014F000CA3BD10509F47DC100E014E47CC1CE01F2 +:101500009F700E94970978C1DD278E01106C73C10E +:10151000CF70DD278E01146D6EC100E010ED6BC140 +:1015200000E012ED68C100E013ED65C10E943C20AF +:101530000E94EB0D0E94F1068FEF94E32CE08150A6 +:1015400090402040E1F700C000000E94932753C163 +:10155000809162048160809362044DC10E94F427EF +:10156000811102C00E94D0270E940C2890E0909325 +:101570008D0480938C04C23080E5D80721F48091DB +:101580008C04816086C0C43090E5D90721F4809135 +:101590008C0482607EC0C63020E5D20721F48091A1 +:1015A0008C04846076C0C83080E5D80719F4809137 +:1015B0008C0427C0CA3090E5D90721F480918C04AF +:1015C000806167C0CC3020E5D20721F480918C0483 +:1015D00080625FC0CE3080E5D80721F480918C0412 +:1015E000806457C0C03190E5D90721F480918C0404 +:1015F00080684FC0C23120E5D20729F480918C0465 +:101600008460886046C0C33080E5D80721F48091AB +:101610008C048E7F3EC0C53090E5D90721F48091BF +:101620008C048D7F36C0C73020E5D20721F480912D +:101630008C048B7F2EC0C93080E5D80719F48091C7 +:101640008C0426C0CB3090E5D90721F480918C041E +:101650008F7E1FC0CD3020E5D20721F480918C040D +:101660008F7D17C0CF3080E5D80721F480918C049E +:101670008F7B0FC0C13190E5D90721F480918C0494 +:101680008F7707C0C331D04531F480918C048B7FB4 +:10169000877F80938C0480918C040E941028ABC0BB +:1016A0008D2F99278F70992781309105D9F49E014C +:1016B0002370332702C0880F991F2A95E2F79C6890 +:1016C0008E0144E0000F111F4A95E1F700271370C7 +:1016D000802B912B53E0CC0FDD1F5A95E1F7C0769C +:1016E000DD272FC08230910531F4DC2FCC278E010D +:1016F000016F106A80C08330910569F4CE01837058 +:10170000992701E010E002C0000F111F8A95E2F74F +:10171000C8019C680FC084309105B9F4CE01837074 +:10172000992701E010E002C0000F111F8A95E2F72F +:10173000C8019A6823E0CC0FDD1F2A95E1F7C07E2F +:10174000D7708C010C2B1D2B56C08530910531F4C0 +:10175000DC2FCC278E01046F106A4DC0069709F06C +:101760004AC0CF71DD27DC2FCC278E01106243C029 +:1017700000E010E040C08E013EC001E810E43BC034 +:1017800003E810E438C002EE14E435C009EE14E4B6 +:1017900032C00AEE14E42FC005EB14E42CC006EBB3 +:1017A00014E429C007EB14E426C00CEC14E423C0B5 +:1017B0000DEC14E420C003E815E41DC00AE815E4AC +:1017C0001AC002E915E417C004E915E414C001E2E7 +:1017D00016E411C003E216E40EC004E216E40BC0E6 +:1017E00005E216E408C006E216E405C007E216E4C6 +:1017F00002C00AE216E4C801DF91CF911F910F9158 +:1018000008959CE0799FF001112490E3899FE00DF9 +:10181000F11D1124E60FF11DEE0FFF1FED5FFD4FCF +:1018200085919491803E9105E0F4803C910558F5B6 +:101830008133910509F46FC048F48932910509F4A8 +:1018400063C08A32910509F46DC072C08933910575 +:10185000E9F082389105D1F08533910509F44DC046 +:1018600067C0833E910581F138F4803E9105B9F05F +:10187000823E9105D9F05CC0863E910561F1873EBC +:101880009105A1F155C00E948F09089520918C0403 +:1018900020FD02C021FF4CC080EE90E049C0809145 +:1018A0008C0480FFF9CF89E390E042C080918C04E2 +:1018B00082FF0EC080918C0484FF03C080E090E022 +:1018C00037C083EE90E034C080918C0482FFF2CF69 +:1018D00082EE90E02DC080918C0483FF0BC080913C +:1018E0008C0484FDEBCF87EE90E022C080918C04C5 +:1018F00083FFF5CF86EE90E01BC080918C0485FFBE +:1019000007C089E290E014C080918C0485FFF9CF74 +:1019100085E390E00DC080918C0486FF07C08AE2C9 +:1019200090E006C080918C0486FFF9CF81E390E0BF +:101930000E949F090895CF92DF92EF92FF920F933A +:101940001F9301E010E020E030E06801790104C05D +:10195000CC0CDD1CEE1CFF1C8A95D2F704C0000FD6 +:10196000111F221F331F6A95D2F70C291D292E291A +:101970003F29C0904504D0904604E0904704F09081 +:101980004804C022D122E222F322842FC016D106BD +:10199000E206F30641F41F910F91FF90EF90DF9064 +:1019A000CF900C9479241F910F91FF90EF90DF90CE +:1019B000CF900C949A240C946B05E82FF0E0E2543D +:1019C000FD4F8081E82FEF70F0E082958F7021E06D +:1019D00030E0A90102C0440F551F8A95E2F740A3E9 +:1019E00008950F931F93CF93DF9385B7806885BFCA +:1019F00085B7806885BFC3E0D0E001E010E0FE015C +:101A0000E254FD4F8081E82FEF70F0E021A1829534 +:101A10008F70A80102C0440F551F8A95E2F7CA01D2 +:101A2000822B81A38C2F0E94DD0C219740F78BE045 +:101A300090E061E070E0FC01EE54FD4F2081E22F68 +:101A4000EF70F0E042A122952F70DB0102C0AA0FD7 +:101A5000BB1F2A95E2F79D01242B22A3019758F77B +:101A6000DF91CF911F910F910C942007EF92FF927D +:101A70000F931F93CF93DF9300E913E0C3E0EE24AD +:101A8000E394F12CD5E08C2F0E94DD0C8BE090E0EC +:101A900040E050E0FC01EE54FD4F6081E62FEF7016 +:101AA000F0E020A130E062956F7002C03595279577 +:101AB0006A95E2F720FD09C09701082E02C0220FA7 +:101AC000331F0A94E2F7422B532B019718F7F801C2 +:101AD000929182918F018417950721F05183408361 +:101AE000D09375028C2F0E94DD0CC15060F680915E +:101AF000750287FD2CC08150809375028F3F39F0AD +:101B00008FE99FE00197F1F700C0000020C08091AD +:101B10008E0390918F039093970380939603809107 +:101B20008C0390918D0390939503809394038091FF +:101B30008A0390918B0390939303809392038091F7 +:101B400088039091890390939103809390030E945E +:101B5000220781E0DF91CF911F910F91FF90EF90CD +:101B60000895E82FF0E0EE0FFF1FE057FC4F808153 +:101B70009181089508950F931F93CF9308E913E07F +:101B8000C0E0F801929182918F010E94B026C80FA7 +:101B9000F3E000391F07A9F78C2FCF911F910F9108 +:101BA00008950E94F427811102C00E94D0270E944C +:101BB0001E28809377043E9A809171008D7F8093D8 +:101BC000710082E0809390008AE18093910081E02F +:101BD00080939A03089580919A03811102C00E9414 +:101BE000D10D1092EA031092E903809171008D7F6C +:101BF00080937100809190008F7380939000109279 +:101C0000AC031092AB031092E3031092E403109222 +:101C1000E5031092E6031092E2031092E103E1EC77 +:101C2000F3E0A1EBB3E011921192119211921D9287 +:101C30001D9283E0E13EF807B1F70895CF92DF925D +:101C4000EF92FF920F931F93CF93DF932091AB03FB +:101C5000222309F484C06B017C0180919A038111D5 +:101C600002C00E94D10D01EE13E0C7E0D0E0A70151 +:101C70009601F80192918291729162918F010E9476 +:101C8000692D811131C0FE01EE0FFF1FEE0FFF1F06 +:101C9000EF53FC4F1082118212821382DE01AA0FD1 +:101CA000BB1FAF54BC4F11961C921E92C730D1057A +:101CB000E9F0219644815581668177814083518383 +:101CC00062837383148215821682178212968D9115 +:101CD0009C91139711969C938E9313961C921E922F +:101CE000129734961296E2CF219708F68091E90375 +:101CF0009091EA03019797FD05C09093EA038093C2 +:101D0000E90304C01092EA031092E9038091E90309 +:101D10009091EA032091E7033091E80328173907EF +:101D200024F01092E8031092E703892BC1F480910C +:101D300071008D7F80937100809190008F738093EC +:101D400090001092E3031092E4031092E5031092C6 +:101D5000E6031092E2031092E1031092AB03DF91CD +:101D6000CF911F910F91FF90EF90DF90CF9008954A +:101D70001F920F920FB60F9211244F925F926F92A3 +:101D80007F928F929F92AF92BF92CF92DF92EF920B +:101D9000FF922F933F934F935F936F937F938F9314 +:101DA0009F93AF93BF93CF93DF93EF93FF93809174 +:101DB000AB03882309F49BC1C091E903D091EA03E6 +:101DC0001C161D060CF093C140909B0350909C0381 +:101DD00060909D0370909E0320E030E0A901C30154 +:101DE000B2010E94142F18160CF065C0C130D10545 +:101DF00009F452C08091E7039091E803BE010E946C +:101E0000E6307C019093E8038093E7038090AD0374 +:101E10009090AE03A090AF03B090B00320E030E00C +:101E200040E85FE3C501B4010E94052D6093AD0356 +:101E30007093AE038093AF039093B003F701EE0F5E +:101E4000FF1FEE0FFF1FEF53FC4FA30192016081B4 +:101E50007181828193810E946D2D20E030E040E00D +:101E60005EE30E94182F9B01AC01C501B4010E94E2 +:101E7000142F18168CF4C7010196BE010E94E6309B +:101E80009093E8038093E7031092AD031092AE03A2 +:101E90001092AF031092B003E091E703F091E803D2 +:101EA000EE0FFF1FEE0FFF1FEF53FC4F608171819C +:101EB00082819381D0C0C090E303D090E403E0908E +:101EC000E503F090E60320E030E0A901C701B60188 +:101ED0000E94692D2197882309F4A2C0FE01EE0F0C +:101EE000FF1FEE0FFF1FEF53FC4F80809180A280F9 +:101EF000B380A5019401C701B6010E94692D87FF37 +:101F000031C0A501940160E070E08CED93EC0E947B +:101F10006D2D20E030E040E451E40E946D2D20E082 +:101F200030E040E05FE30E94182F9B01AC0160E0CD +:101F300070E080E090E40E947B2F9B01AC01C50122 +:101F4000B4010E94182F9B01AC01C701B6010E9489 +:101F5000692D87FF07C0A701960160E070E08CED56 +:101F600093E439C0A5019401C701B6010E94142F62 +:101F700018160CF055C0A501940160E070E08CEDDE +:101F800093E40E946D2D20E030E040E451E40E9493 +:101F90006D2D20E030E040E05FE30E94182F9B01B0 +:101FA000AC0160E070E080E090E40E947B2F9B0138 +:101FB000AC01C501B4010E94182F9B01AC01C701FF +:101FC000B6010E94142F18165CF5A701960160E077 +:101FD00070E08CED93EC0E946D2D20E030E040E449 +:101FE00051E40E946D2D20E030E040E05FE30E946C +:101FF000182F9B01AC0160E070E080E090E40E944B +:102000007B2F9B01AC01C701B6010E94182F609382 +:10201000E3037093E4038093E5039093E60313C016 +:10202000FE01EE0FFF1FEE0FFF1FEF53FC4F8081ED +:102030009181A281B3818093E3039093E403A09301 +:10204000E503B093E6036091E3037091E4038091AC +:10205000E5039091E60320919803309199032F3F77 +:102060004FEF340731F02F5F3F4F309399032093A8 +:1020700098030E94F3126B017C0120E034E244EFEC +:1020800051E40E94692D87FF08C086EFC82E88E2C0 +:10209000D82E84EFE82E81E4F82E20E030E040E0F6 +:1020A00051E4C701B6010E94182F9B01AC0160E00A +:1020B00074E284E79BE40E946D2D6B017C010E9419 +:1020C000DA2D7093970060939600209176023091FC +:1020D00077024091780250917902C701B6010E94BF +:1020E000182F0E94DA2D70939900609398008091C8 +:1020F000AC03882309F433C1C090A703D090A80390 +:10210000E090A903F090AA0320E030E0A901C70104 +:10211000B6010E94142F1816D4F58091980390915F +:1021200099038F3F2FEF920729F00196909399031F +:1021300080939803C701B6010E94F31220E030E0BB +:1021400040E051E40E94182F9B01AC0160E074E272 +:1021500084E79BE40E946D2D6B017C010E94DA2DC7 +:1021600070939700609396002091760230917702E9 +:102170004091780250917902C701B6010E94182F50 +:102180000E94DA2D709399006093980008C0109215 +:10219000970010929600109299001092980060910A +:1021A000A1037091A2036F5F7F4F7093A2036093AE +:1021B000A103209196003091970080E090E0232BBE +:1021C000F1F0C0919600D09197000E94062E6B010D +:1021D0007C01BE0180E090E00E94062E9B01AC01D4 +:1021E0006091A3037091A4038091A5039091A6032D +:1021F0000E946D2D20E03FEF4FE757E410C00E9492 +:10220000062E6B017C0120E030EE4FEF54E460912C +:10221000A3037091A4038091A5039091A6030E944B +:10222000182F9B01AC01C701B6010E94142F87FD36 +:1022300096C080919F038F5F80939F0390E02091D1 +:1022400073043091740482179307A0F080917E0488 +:10225000882319F010929F030DC0809171008D7F2B +:1022600080937100809190008F7380939000109202 +:10227000AC037DC08091A003C0919F03811128C051 +:10228000C0907804D0907904E0907A04F0907B04B8 +:1022900020E030E0A901C701B6010E94142F1816F2 +:1022A000BCF481E08093A0031092A7031092A803CE +:1022B0001092A9031092AA03C092A303D092A40380 +:1022C000E092A503F092A603C150C0939F0343C0C0 +:1022D0001092A0031092990310929803E091750454 +:1022E000F091760448E0C49FE00DF11D1124808137 +:1022F0009181A281B3818093A7039093A803A093B7 +:10230000A903B093AA0320E030E040E85EE36481D3 +:102310007581868197810E94182F6B017C018091C5 +:102320007A02682F70E080E090E00E94062E20E0A4 +:1023300030E048EC52E40E946D2D9B01AC01C701D6 +:10234000B6010E94182F6093A3037093A403809397 +:10235000A5039093A6031092A2031092A10380916B +:10236000770480FD04C01092AC031092AB03FF9180 +:10237000EF91DF91CF91BF91AF919F918F917F911D +:102380006F915F914F913F912F91FF90EF90DF9070 +:10239000CF90BF90AF909F908F907F906F905F9005 +:1023A0004F900F900FBE0F901F901895CF92DF9215 +:1023B000EF92FF92CF93DF936B017C01EA01809152 +:1023C0009A03811102C00E94D10D8091770480FF91 +:1023D00046C08091E9039091EA0308970CF03FC052 +:1023E000809171008D7F809371008091AC03811189 +:1023F0000E94EB0D81E08093AB0310929903109241 +:10240000980320E030E0A901C701B6010E94142F13 +:102410001816DCF48091E9039091EA03FC01EE0FB9 +:10242000FF1FEE0FFF1FEF53FC4FC082D182E282ED +:10243000F382FC01EE0FFF1FEF54FC4FD183C083EA +:1024400001969093EA038093E90380917100826082 +:102450008093710080919000806880939000DF915C +:10246000CF91FF90EF90DF90CF9008958F929F9241 +:10247000AF92BF92CF92DF92EF92FF920F931F9392 +:10248000CF93DF93EC017B01D42E48015901809159 +:102490009A03811102C00E94D10D8091770480FFC0 +:1024A0006BC0809171008D7F809371008091AB0330 +:1024B00081110E94EB0D81E08093AC03D0937604F0 +:1024C000C0937504F0927404E0927304D0927E0479 +:1024D0008092780490927904A0927A04B0927B045E +:1024E0001092AD031092AE031092AF031092B0039E +:1024F00010929F0388819981AA81BB818093A70351 +:102500009093A803A093A903B093AA0320E030E01E +:1025100040E85EE36C817D818E819F810E94182F4F +:102520006B017C0180917A02682F70E080E090E07E +:102530000E94062E20E030E048EC52E40E946D2D0F +:102540009B01AC01C701B6010E94182F6093A30341 +:102550007093A4038093A5039093A6031092A20303 +:102560001092A1038091710082608093710080912C +:102570009000806880939000DF91CF911F910F9120 +:10258000FF90EF90DF90CF90BF90AF909F908F9093 +:102590000895809177048170089580917704816017 +:1025A000809377040E9422280C947A078091770404 +:1025B0008E7F809377040C9422288091EB0390E027 +:1025C000019666E070E00E94E6308093EB03089588 +:1025D0008091EB0390E0019766E070E00E94E630A6 +:1025E0008093EB0308958F929F92AF92BF92CF9208 +:1025F000DF92EF92FF920F931F93CF93DF936B01C4 +:102600007C01C0919803D0919903BE0180E090E0D5 +:102610000E94062E4B015C01A701960160E070E06C +:102620008CE594E40E946D2D9B01AC01C501B401C1 +:102630000E94182F0E94DA2D2091EB03233009F419 +:1026400073C028F4222351F02130E9F02CC124304A +:1026500009F4A0C0253009F4E0C025C180E090E075 +:10266000A0E0BFE38093760290937702A093780274 +:10267000B093790210929B0310929C0310929D03D9 +:1026800010929E0310C110929B0310929C03109213 +:102690009D0310929E036431710540F46A30710508 +:1026A00060F520E030E040E85EE32BC0693C710556 +:1026B00008F0AAC080E090E00E94062E20E030E002 +:1026C00040EA51E40E94042D20E030E044E353E46A +:1026D0000E946D2D9B01AC010E94182F20E030E07C +:1026E00040E05EE30E94182F9B01AC0160E070E0C7 +:1026F00080E09EE30E94042D44C020E030E040E0F2 +:102700005FE3C701B6010E94182F6B017C0180E0D6 +:1027100090E0A0E0BEE38093760290937702A093CE +:102720007802B0937902BFC010929B0310929C0371 +:1027300010929D0310929E034AE0469F9001479F8E +:10274000300D1124C90168EB7BE00E94D230BC013E +:102750006C5D754077FF03C071956195710988279D +:1027600077FD8095982F0E94082E2EE333EC4EE2E1 +:1027700059E30E94182F20E030E040EC5EE30E9415 +:10278000052D609376027093770280937802909380 +:10279000790289C010929B0310929C0310929D03B2 +:1027A00010929E03CE0183709927892BE1F0BE0120 +:1027B0006170772780E090E00E94062E20E030E0F4 +:1027C00040E05EE30E94182F20E030E040E45FE349 +:1027D0000E94052D609376027093770280937802B1 +:1027E000909379020CC080E090E0A0E0BFE380937A +:1027F000760290937702A0937802B0937902C77023 +:10280000DD27CD2B09F04FC010927602109277028F +:10281000109278021092790246C010929B03109297 +:102820009C0310929D0310929E0300E010E020E0B4 +:102830003FE300937602109377022093780230935F +:1028400079026739710578F180E090E00E94062EE8 +:1028500020E030E047E153E40E94042D20E030E026 +:102860004AE754E40E946D2D20E030E048E452E451 +:102870000E94182F20E030E040EA51E40E944A2EE6 +:102880000E94D52D660F771F660F771FFB01EE5351 +:10289000FD4F2081318142815381C701B6010E94E1 +:1028A000182F6B017C01C701B601DF91CF911F91F9 +:1028B0000F91FF90EF90DF90CF90BF90AF909F90DF +:1028C0008F9008958091FC030895CF93DF9300D0FB +:1028D0001F92CDB7DEB79C0180918304843019F537 +:1028E00093E099833B832A839093E9008FEF909143 +:1028F000E800815095FD06C095ED9A95F1F700002E +:102900008111F5CF8091E80085FF0DC040E050E0D7 +:1029100063E070E0CE0101960E94C2168091E8004B +:102920008E778093E8000F900F900F90DF91CF91FA +:102930000895CF93DF9300D01F92CDB7DEB72091DB +:102940008304243021F522E029839B838A8383E05A +:102950008093E9008FEF9091E800815095FD06C0CB +:1029600095ED9A95F1F700008111F5CF8091E8007F +:1029700085FF0DC040E050E063E070E0CE010196BD +:102980000E94C2168091E8008E778093E8000F9035 +:102990000F900F90DF91CF91089520918304243000 +:1029A000F1F422E02093E9002FEF3091E80021506C +:1029B00035FD06C035ED3A95F1F700002111F5CF50 +:1029C0002091E80025FF0BC040E050E065E070E09A +:1029D0000E94C2168091E8008E778093E8000895E7 +:1029E000CF93DF93EC0190918304943009F046C0BB +:1029F000809185028823D9F0809186028823B9F0DE +:102A00009093E9008FEF9091E800815095FD06C00A +:102A100095E19A95F1F700008111F5CF8091E800DA +:102A200085FF2CC040E050E060E170E017C081E01D +:102A30008093E9008FEF9091E800815095FD06C0EA +:102A400095ED9A95F1F700008111F5CF8091E8009E +:102A500085FF14C040E050E068E070E0CE010E94C5 +:102A6000C2168091E8008E778093E80080E1FE0135 +:102A7000ACEEB3E001900D928A95E1F7DF91CF9132 +:102A8000089580918204811109C00E9457180E9404 +:102A9000B4188091E20084608093E200089510925F +:102AA00082040895089508950C94FB2642E061EC99 +:102AB00081E00E94D11742E061EC82E00E94D117D0 +:102AC00042E061EC83E00E94D11742E161EC84E0D6 +:102AD0000C94D11780918504833009F455C030F4EB +:102AE000813071F0823009F48EC008958A3009F483 +:102AF0007AC08B3009F460C0893009F09CC020C0D6 +:102B000080918404813A09F096C08091E800877F23 +:102B10008093E8008091880490918904892B21F4A6 +:102B200060E18CEE93E003C060E080E090E070E054 +:102B30000E940D178091E8008B778093E80008953C +:102B400080918404813209F076C08091880490914C +:102B50008904009719F0039709F06DC08091E8008F +:102B6000877F8093E8008091E80082FD05C0809116 +:102B700083048111F8CF5FC08091F1008093FC0342 +:102B80008091E8008B7753C080918404813A09F0EA +:102B900052C08091880490918904892B09F04BC020 +:102BA0008091E800877F8093E8008091E80080FFB3 +:102BB000FCCF8091850236C0809184048132D9F5A2 +:102BC0008091880490918904892BA9F58091E8006F +:102BD000877F8093E8000E94061880918604809386 +:102BE00085020C943C2080918404813221F58091EF +:102BF000E800877F8093E8000E9406188091870490 +:102C00008093FD03089580918404813AA1F480911A +:102C1000E800877F8093E8008091E80080FFFCCF88 +:102C20008091FD038093F1008091E8008E7780937E +:102C3000E8000C940618089584B7877F84BF88E164 +:102C40000FB6F89480936000109260000FBE80E889 +:102C500080936100109261000E94A91B0E94571886 +:102C60000E94B4188091E20084608093E20078941E +:102C70000E943A1B0E94AB1B8BE792E00E94551BFF +:102C800080918304853069F40E94BC268091810480 +:102C90008823B1F30E94EA26882391F30E94AC16A0 +:102CA000EFCF0E94B31BECCF292F33272330310500 +:102CB000C9F064F42130310581F02230310509F08A +:102CC00043C08DE690E02FEB38E042C02132310561 +:102CD000F1F02232310541F137C082E190E02CE27F +:102CE00039E036C099278130910541F08230910555 +:102CF00041F0892B49F5EBEBF8E005C0EDE8F8E091 +:102D000002C0E3E6F8E0849190E09F0121C06430C6 +:102D1000D8F4E62FF0E0EE0FFF1FE25EFC4F2081BB +:102D2000318189E090E014C0643070F470E0FB0100 +:102D3000EE0FFF1FEA5EFC4F20813181FB01EE5E4A +:102D4000FC4F808190E004C080E090E020E030E023 +:102D5000FA0131832083089580E189BD82E189BD34 +:102D600009B400FEFDCF8091D8008F7D8093D800FC +:102D70008091E00082608093E0008091E00081FD1E +:102D8000FCCF0895CF92DF92EF92FF920F931F93A3 +:102D9000CF93DF93EC018B016A010E94251881110A +:102DA00033C0C114D10439F0F60180819181081B30 +:102DB000190BC80FD91FE12CF12C0115110519F1C0 +:102DC0008091E80085FD16C08091E8008E778093A1 +:102DD000E800C114D10449F0F60180819181E80E28 +:102DE000F91EF182E08285E00FC00E942518882339 +:102DF00021F30AC089918093F10001501109FFEF7E +:102E0000EF1AFF0ADACF80E0DF91CF911F910F9187 +:102E1000FF90EF90DF90CF90089520918A04309139 +:102E20008B042617370748F06115710539F4209196 +:102E3000E8002E772093E80001C0B90140E0611559 +:102E40007105A9F120918304222309F443C02530A0 +:102E500009F442C02091E80023FD40C02091E80021 +:102E600022FD32C02091E80020FFE9CF4091F3001D +:102E70002091F20030E0342BFC01CF016115710587 +:102E800059F02830310540F481918093F100615070 +:102E900071092F5F3F4FF1CF41E02830310509F034 +:102EA00040E02091E8002E772093E800C8CF411140 +:102EB000C9CF0AC080918304882361F0853061F016 +:102EC0008091E80083FD0AC08091E80082FFF2CF84 +:102ED00080E0089582E0089583E0089581E00895F8 +:102EE00020918A0430918B042617370748F061152A +:102EF000710539F42091E8002E772093E80001C095 +:102F0000B901FC0120E06115710591F18091830404 +:102F1000882309F440C0853009F43FC08091E8005F +:102F200083FD3DC08091E80082FD2FC08091E800C4 +:102F300080FFE9CF2091F3008091F20090E0922B86 +:102F40006115710559F08830910540F42491209362 +:102F5000F1003196615071090196F2CF21E0089796 +:102F600009F020E08091E8008E778093E800CBCFD5 +:102F70002111CCCF0AC080918304882361F0853071 +:102F800061F08091E80083FD0AC08091E80082FF33 +:102F9000F2CF80E0089582E0089583E0089581E013 +:102FA0000895982F973058F59093E900981739F0C5 +:102FB0007091EC002091ED005091F00003C0242F9F +:102FC000762F50E021FF19C03091EB003E7F309307 +:102FD000EB003091ED003D7F3093ED003091EB0040 +:102FE00031603093EB007093EC002093ED00509330 +:102FF000F0002091EE0027FF07C09F5FD3CF8F70B6 +:103000008093E90081E0089580E008958091840430 +:1030100087FF11C08091E80082FD05C08091830484 +:103020008111F8CF11C08091E8008B770BC080919F +:103030008304882349F08091E80080FFF8CF8091D5 +:10304000E8008E778093E80008952091E4003091A5 +:10305000E50095E64091EC00842F817040FF22C08E +:103060008091E80080FD1CC080918304882391F04A +:10307000853091F08091EB0085FD10C04091E40017 +:103080005091E5004217530729F39A01915011F727 +:1030900084E0089582E0089583E0089581E0089532 +:1030A00080E008954091E80042FFDECF08950E943D +:1030B000C5180E94CD18E0EEF0E080818160808329 +:1030C000E8EDF0E080818F77808319BCA7EDB0E058 +:1030D0008C918E7F8C9380818F7E8083109282046E +:1030E00008950F931F93CF93DF930E94C5180E94FA +:1030F000CD18C8EDD0E088818F778883888180687B +:10310000888388818F7D888319BC109283041092F4 +:103110007F04109281041092800400EE10E0F80108 +:1031200080818B7F808388818160888342E060E03A +:1031300080E00E94D117E1EEF0E080818E7F8083F5 +:10314000E2EEF0E08081816080838081886080830E +:10315000F80180818E7F8083888180618883DF9100 +:10316000CF911F910F910895E8EDF0E080818F7E5F +:103170008083E7EDF0E080818160808384E082BF1E +:1031800081E0809382040C947118E8EDF0E0808176 +:103190008E7F80831092E20008951092DA001092E0 +:1031A000E10008951F920F920FB60F9211242F93F2 +:1031B0003F934F935F936F937F938F939F93AF93BF +:1031C000BF93EF93FF938091E10082FF0BC080914A +:1031D000E20082FF07C08091E1008B7F8093E100D5 +:1031E0000E94391B8091DA0080FF1FC08091D800B7 +:1031F00080FF1BC08091DA008E7F8093DA0080917F +:10320000D90080FF0DC080E189BD82E189BD09B48C +:1032100000FEFDCF81E0809383040E94411505C02C +:1032200019BC109283040E944F158091E10080FF29 +:1032300019C08091E20080FF15C08091E2008E7F6E +:103240008093E2008091E20080618093E2008091AF +:10325000D80080628093D80019BC85E080938304F5 +:103260000E9453158091E10084FF30C08091E200FC +:1032700084FF2CC080E189BD82E189BD09B400FED4 +:10328000FDCF8091D8008F7D8093D8008091E100A0 +:103290008F7E8093E1008091E2008F7E8093E20038 +:1032A0008091E20081608093E20080917F04882316 +:1032B00011F084E007C08091E30087FD02C081E047 +:1032C00001C083E0809383040E9454158091E10043 +:1032D00083FF29C08091E20083FF25C08091E10037 +:1032E000877F8093E10082E08093830410927F04C3 +:1032F0008091E1008E7F8093E1008091E2008E7FDB +:103300008093E2008091E20080618093E20042E0DD +:1033100060E080E00E94D1178091F0008860809387 +:10332000F0000E945215FF91EF91BF91AF919F91D4 +:103330008F917F916F915F914F913F912F910F905E +:103340000FBE0F901F9018951F920F920FB60F92FD +:1033500011242F933F934F935F936F937F938F939A +:103360009F93AF93BF93CF93DF93EF93FF93C0915E +:10337000E900CF708091EC00D82FD17080FDD0E8AB +:103380001092E9008091F000877F8093F00078949C +:103390000E94E8191092E9008091F0008860809303 +:1033A000F000CD2BCF70C093E900FF91EF91DF913A +:1033B000CF91BF91AF919F918F917F916F915F91CD +:1033C0004F913F912F910F900FBE0F901F90189526 +:1033D0001F93CF93DF93CDB7DEB7AA970FB6F894BC +:1033E000DEBF0FBECDBFE4E8F4E088E08E0F909121 +:1033F000F10091938E13FBCF0E946A158091E80033 +:1034000083FF1FC18091840490918504492F50E06F +:103410004A30510508F015C1FA01EB59FF4F0C94E1 +:10342000FA30803881F0823809F00BC1809188042D +:103430008F708093E9008091EB0085FB882780F9ED +:103440001092E90006C0809180049091810491114E +:1034500082609091E800977F9093E8008093F1005C +:103460001092F100C8C0282F2D7F09F0EAC08823F0 +:1034700019F0823061F0E5C080918604813009F056 +:10348000E0C0933009F080E0809381042BC08091EC +:103490008604811127C0809188048F7009F4D1C0FF +:1034A0008093E9002091EB0020FF1CC0933021F4B1 +:1034B0008091EB00806214C09091EB00906190933A +:1034C000EB0021E030E0A90102C0440F551F8A95AE +:1034D000E2F74093EA001092EA008091EB008860E6 +:1034E0008093EB001092E9008091E800877F86C00E +:1034F0008111A7C0109186041F778091E300807826 +:10350000812B8093E3008091E800877F8093E8001F +:103510000E9406188091E80080FFFCCF8091E300B4 +:1035200080688093E300111102C082E001C083E053 +:103530008093830486C08058823008F082C08091D6 +:103540008604909187048C3D53E0950779F583E0DC +:103550008A838AE289834FB7F894DE01139620E0CC +:103560003EE051E2E32FF0E050935700E49120FF5A +:1035700003C0E295EF703F5FEF708E2F90E0EA306E +:1035800010F0C79601C0C0968D939D932F5F243194 +:1035900049F74FBF8091E800877F8093E8006AE297 +:1035A00070E0CE0101960E940D1714C0AE014F5F6E +:1035B0005F4F609188040E945416BC01009709F483 +:1035C00040C09091E800977F9093E80089819A81AC +:1035D0000E9470178091E8008B778093E80031C0DB +:1035E000803879F58091E800877F8093E8008091AA +:1035F0007F048093F1008091E8008E778093E8004B +:103600000E9406181EC081111CC090918604923041 +:10361000C0F48091E800877F8093E80090937F0456 +:103620000E94061880917F04811106C08091E300FA +:1036300087FD02C081E001C084E0809383040E9482 +:1036400056158091E80083FF0AC08091E800877FCB +:103650008093E8008091EB0080628093EB00AA9653 +:103660000FB6F894DEBF0FBECDBFDF91CF911F9193 +:1036700008950895CF93809183048823A1F0C09189 +:10368000E900CF709091EC00892F817090FD80E867 +:10369000C82B1092E9008091E80083FD0E94E81990 +:1036A000CF70C093E900CF91089590930304809365 +:1036B00002040895E0910204F0910304309721F090 +:1036C0000190F081E02D099480E00895E0910204DA +:1036D000F0910304309721F00280F381E02D0994EA +:1036E0000895E0910204F0910304309721F00480E2 +:1036F000F581E02D09940895209100043091010492 +:103700008217930771F09093010480930004E09175 +:103710000204F0910304309721F00680F781E02D38 +:10372000099408952091FE033091FF0382179307B7 +:1037300071F09093FF038093FE03E0910204F091F7 +:103740000304309721F00084F185E02D0994089559 +:1037500008950C94A81B0E942F270E94F10C0E9430 +:10376000B5270C94692C5F926F927F928F929F92F3 +:10377000AF92BF92CF92DF92EF92FF920F931F937F +:10378000CF93DF9300D000D01F92CDB7DEB70E9459 +:10379000360D9DE0C92E94E0D92E03E010E0AA2456 +:1037A000A394B12C502E802F0E94B10D4C01F60134 +:1037B000729062906F016826792661147104A1F4F9 +:1037C0000150110978F78FEF89838A831B820E9449 +:1037D00038278160782F9D838C8349815A816B8142 +:1037E0008D810E94631C38C08091620481FD0E941B +:1037F000BA0D2BE030E07501022E02C0EE0CFF1C6A +:103800000A94E2F7C70186219721892B09F12983C0 +:103810005A828E209F2091E0892809F490E09B83B2 +:103820000E9438278160782F9D838C8349815A813B +:103830006B818D810E94631C000F111FF801EB5FEB +:10384000FB4F80819181E826F926F182E08204C055 +:103850002150310980F6B4CF0E94A12910910404AF +:103860000E945A1B1817D1F00E945A1B809304041F +:103870000F900F900F900F900F90DF91CF911F91AD +:103880000F91FF90EF90DF90CF90BF90AF909F90FF +:103890008F907F906F905F900C94DB0C0F900F9047 +:1038A0000F900F900F90DF91CF911F910F91FF908C +:1038B000EF90DF90CF90BF90AF909F908F907F90D0 +:1038C0006F905F900895CF93DF93CDB7DEB72B97BE +:1038D0000FB6F894DEBF0FBECDBF4F835887698700 +:1038E0007A878B87DE01119686E0FD0111928A9519 +:1038F000E9F785E0FE01379601900D928A95E1F790 +:1039000049815A816B817C818D819E810E94DA225E +:103910002B960FB6F894DEBF0FBECDBFDF91CF91CF +:103920000895CF93882309F4C2C0C82F823859F470 +:103930000E945A1B81FDBBC089E30E94B4250E94EE +:10394000812689E30CC0833879F40E945A1B80FDDC +:10395000AEC083E50E94B4250E94812683E50E94C3 +:10396000F625CF910C948126843859F40E945A1B75 +:1039700082FD9DC087E40E94B4250E94812687E4D1 +:10398000EECF8CEF8C0F813A48F48C2F0E94D12B14 +:1039900081118DC08C2F0E94B425E3CF80E28C0F63 +:1039A000883048F4C77081E001C0880FCA95EAF7F3 +:1039B0000E943A26D6CF8BE58C0F833078F4C53A37 +:1039C00029F0C63A31F083E890E005C081E890E044 +:1039D00002C082E890E0CF910C947C1B88E58C0FAC +:1039E000833108F064C0C83A39F1C93A41F1CA3AA2 +:1039F00049F1CB3A51F1CC3A59F1CD3A61F1C03BA2 +:103A000069F1CE3A71F1CF3A79F1C13B81F1C23B14 +:103A100089F1C33B91F1C43B99F1C53BA1F1C63B90 +:103A2000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BF0 +:103A3000C9F180E090E038C082EE90E035C089EEB8 +:103A400090E032C08AEE90E02FC085EB90E02CC071 +:103A500086EB90E029C087EB90E026C08CEC90E0EC +:103A600023C08DEC90E020C083E891E01DC08AE87F +:103A700091E01AC082E991E017C084E991E014C096 +:103A800081E292E011C083E292E00EC084E292E013 +:103A90000BC085E292E008C086E292E005C087E2B2 +:103AA00092E002C08AE292E0CF910C94921BCF91F7 +:103AB0000895882309F44BC0823859F40E945A1B98 +:103AC00081FF45C089E30E94B4250E94812689E3D5 +:103AD0000CC0833871F40E945A1B80FF38C083E504 +:103AE0000E94B4250E94812683E50E94F6250C944D +:103AF0008126843859F40E945A1B82FF28C087E42B +:103B00000E94B4250E94812687E4EFCF9CEF980F96 +:103B1000913A58F390E2980F983050F4877091E002 +:103B200001C0990F8A95EAF7892F0E944026DFCFBE +:103B30009BE5980F933020F480E090E00C947C1B80 +:103B4000885A833120F480E090E00C94921B089511 +:103B5000882321F00E943A260C9481260895882318 +:103B600021F00E9440260C94812608957F928F9226 +:103B70009F92AF92BF92CF92DF92EF92FF920F93FC +:103B80001F93CF93DF931F92CDB7DEB77C01C62E74 +:103B9000772EFC01058102950F70128111110E9490 +:103BA00057260E94AD25882379F0112369F080E221 +:103BB0008C0D883048F082E00E9496250E94AD2549 +:103BC00091E0D82ED92601C0D12CE72DE295EF70D7 +:103BD000F0E0E159FF4F0C94FA30872D807F072DDC +:103BE0000F70882311F00295007F112389F00023C4 +:103BF00009F499C180E28C0D883020F4802F0E9456 +:103C00003A2603C0802F0E944A260E9481268BC13B +:103C10008C2D0E94591D002309F4C3C180E28C0D34 +:103C2000883020F4802F0E94402603C0802F0E94FD +:103C300050260E948126B5C1872D807F972D9F70C9 +:103C4000803211F4892F03C0892F8295807FCC2088 +:103C500021F0F1E0CF16A1F01DC0112339F00023AF +:103C600019F1013009F50E946A269BC1002319F061 +:103C7000013009F496C189830E946D26898110C1A3 +:103C8000112321F0063008F08CC10EC0053008F079 +:103C900088C106C1112359F0002331F0F701958145 +:103CA00090FF41C19F7095830E94A81D7AC1002397 +:103CB00009F4F6C03EC1872D86958695837090E005 +:103CC000009719F0019761F06CC1112321F08C2D40 +:103CD000972D937002C080E090E00E947C1B61C130 +:103CE000112321F08C2D972D937002C080E090E07D +:103CF0000E94921B56C18C2D112319F00E94A928F5 +:103D000002C00E9411290E9496294BC1872D837001 +:103D100009F052C0111145C18C2D8295869587708E +:103D2000880F880F9C2D9F70892E912CA12CB12C6F +:103D3000082E04C0880C991CAA1CBB1C0A94D2F73C +:103D4000C4FE14C00FE010E020E030E0B901A8018B +:103D500004C0440F551F661F771F8A95D2F7CB0109 +:103D6000BA01609570958095909503C060E070E011 +:103D7000CB01272D26952695237030E02230310582 +:103D800069F02330310589F0682979298A299B292E +:103D90002130310571F00E94222403C1682979295C +:103DA0008A299B290E943E24FCC00E942224C5012E +:103DB000B4010E940624F5C0112319F0872D8170EB +:103DC00001C08695882309F4ECC08C2D82958695D8 +:103DD0008770880F880F9C2D9F70892E912CA12CA5 +:103DE000B12C082E04C0880C991CAA1CBB1C0A9478 +:103DF000D2F7C4FE14C00FE010E020E030E0B901BB +:103E0000A80104C0440F551F661F771F8A95D2F77B +:103E1000CB01BA01609570958095909503C060E0E4 +:103E200070E0CB01272D269526952370422F50E078 +:103E30004230510569F04330510589F068297929EC +:103E40008A299B294130510571F00E94FC24A9C0A8 +:103E5000682979298A299B290E941825A2C00E94D5 +:103E6000FC24C501B4010E94E0249BC08C2D90E08D +:103E7000FC01E05EF109E531F10508F050C0E158C0 +:103E8000FF4F0C94FA300C2D0F70872D8F7111237A +:103E900021F00E947924802F07CF0E949A24802F3E +:103EA0000E94AF1D7EC0112341F0053008F079C09B +:103EB000872D8F710E94BF2474C0063008F071C036 +:103EC000F7CF112339F0872D8F710E94792469C0B3 +:103ED0001123C9F3872D8F710E949A2462C0112388 +:103EE00029F0872D8F710E9464245BC00E945A24A0 +:103EF00058C0112351F0172D1F71812F0E94792472 +:103F000063E0812F0E948D254CC081E00E949625A0 +:103F1000023008F446C082E00E94962542C0112378 +:103F200031F0002381F28C2D0E94911C3AC00023B5 +:103F300089F28C2D0E94591D34C0472D4F706C2D75 +:103F4000C7010E941C060E947E232BC0111129C0AC +:103F5000472D4F7050E042305105B9F04CF44115F7 +:103F6000510581F041305105E1F40E94912C19C0B6 +:103F70004330510569F04430510599F48C2D0E946D +:103F8000E32C0FC00E947A2C0CC00E94AD2C09C0FB +:103F90000E94C02C06C0472D4F706C2DC7010E9497 +:103FA0007C09DD20F9F00E94892580FD1BC0F70106 +:103FB00012820E9483250E947924C7010E94012059 +:103FC0000E9483250F90DF91CF911F910F91FF9059 +:103FD000EF90DF90CF90BF90AF909F908F907F90A9 +:103FE0000C949A240F90DF91CF911F910F91FF9025 +:103FF000EF90DF90CF90BF90AF909F908F907F9089 +:1040000008950F931F93CF93DF93EC0188819981DB +:104010002B813C81232BB9F09F3F11F48F3F99F006 +:10402000CE010E947B07882371F0688179818A81A3 +:104030000E947F258C010E9434250E94FB23B80139 +:10404000CE010E94B61DDF91CF911F910F9108956F +:104050000E9457260E9467260E942C260E948126D5 +:104060000E94472A0E94962980E090E00E947C1BD3 +:1040700080E090E00C94921B0E9447260C9428202C +:104080000E947425292F22952F7030E02C303105A5 +:104090004CF42A3031056CF42250310922303105BC +:1040A000A8F407C02C30310569F02F30310551F0EC +:1040B0000DC0803F69F018F4803E40F409C0843F91 +:1040C00029F406C093FB882780F9089580E00895BD +:1040D00081E00895CF93DF9300D000D01F92CDB739 +:1040E000DEB70F900F900F900F900F90DF91CF9150 +:1040F0000895CF93DF9300D000D000D0CDB7DEB7C6 +:1041000026960FB6F894DEBF0FBECDBFDF91CF91DC +:1041100008951F93CF93DF93C0910D0416E0809113 +:104120000E04C81799F0D0E01C9FF0011D9FF00D00 +:104130001124E15FFB4F4081518162817381848151 +:1041400095810E9479202196C770E9CFDF91CF91A8 +:104150001F91089540913F045091400460914104A3 +:104160007091420480914304909144040C9479200E +:104170008091440482958F7009F054C0809141046D +:10418000882309F44FC080910D04A0910E04609122 +:104190003F04709140044091420450914304B6E0C2 +:1041A0008A1709F43FC090E041155105C1F17F3FE6 +:1041B00011F46F3FA1F1B89FF001B99FF00D1124E8 +:1041C000E15FFB4F218172132AC02081621327C057 +:1041D0002281211124C0238134812417350710F452 +:1041E00021503109241B350B283C3105C0F42091A6 +:1041F00044042F7020612093440426E0289FF0019E +:10420000299FF00D1124EC5EFB4F80818F7080613F +:1042100080838FE394E00E9401200C948920019612 +:104220008770BECF0895CF92DF92EF92FF920F93E7 +:104230001F93CF93DF93CDB7DEB762970FB6F89495 +:10424000DEBF0FBECDBF8C0185E0F801DE011D96FB +:1042500001900D928A95E1F7D8014C9111965C91ED +:10426000119712966C9112971396CD90DC9014973B +:1042700030913F0470914004809142049091430436 +:10428000009709F46BC17F3F19F43F3F09F466C101 +:10429000E0904104EE2009F4C0C020914404C81607 +:1042A000D90628F0F601E81BF90BCF0104C0809570 +:1042B00090958C0D9D1DFF24F394883C910578F01A +:1042C000F12C207F09F0C6C07C2DD98AC88A898943 +:1042D0000E946A208FE394E00E940120B1C0822FE7 +:1042E000807F09F046C0751314C0341312C06111E9 +:1042F00010C02F702061209344040E94AA208FE3F5 +:1043000094E00E94012080914404D80115968C937A +:104310002EC0CD2819F15F3F11F44F3FF9F0F62E72 +:1043200061111CC080910D0420910E0436E08217AB +:1043300009F45AC090E0389FF001399FF00D112424 +:10434000E15FFB4F7181571306C07081471303C0B3 +:104350007281711103C001968770E9CFF62E662332 +:1043600009F418C180914404816080934404F12CC5 +:1043700011C1751308C0341306C0611104C08091C7 +:104380004404D801C3C04D875E878D859E856A8BA6 +:104390000E9440206A898823E1F16623D1F12091AF +:1043A0004404822F82958F7090E0029774F0809180 +:1043B0003F049091400498878F831986DB86CA86D4 +:1043C0002C87CE0107960E94012086E0F801AFE31A +:1043D000B4E001900D928A95E1F70E94B8200E9406 +:1043E000AA20FF24F394D6C04D875E878D859E85D5 +:1043F0000E947425292F22952F7030E0223031053C +:104400000CF0BCC09F7009F0B6C0805E883008F424 +:10441000C1C0C8010E940120E4CFC816D90608F423 +:1044200053C0F601E81BF90BCF01883C910508F455 +:1044300050C0F12C7C2DD98AC88A89890E946A20B3 +:10444000EFE3F4E086E0DF011D928A95E9F70E9430 +:10445000AA20A0C0751314C0341312C0611110C07B +:1044600080914404F8018583C8010E94012086E000 +:10447000EFE3F4E0DF011D928A95E9F7FE2C8AC094 +:104480004D875E878D859E856A8B0E9440206A8954 +:10449000882309F4BECF662309F4BBCF20914404DE +:1044A000822F82958F7090E002970CF48ECF8091CE +:1044B0003F04909140049A8389831B82DD82CC82E1 +:1044C0002E83CE0101967FCF809590958C0D9D1DFA +:1044D000ACCFF62E662309F49CCF75132EC034138F +:1044E0002CC02091440420FD1FC0822F82958F7024 +:1044F000D9F0D80115962C9315978F3049F08F5F1E +:10450000982F9295907F822F8F70892B15968C9380 +:10451000C8010E94012086E0F801AFE3B4E00190F9 +:104520000D928A95E1F793CF86E0F801AFE3B4E00E +:1045300001900D928A95E1F72DC04D875E878D859C +:104540009E850E944020811140CF8091440481606B +:1045500080934404C8010E9401201CC0662309F412 +:1045600058CF4D875E878D859E850E944020882389 +:1045700009F44FCF2ACF811148CF0CC02430310528 +:104580000CF047CF9F7009F440CFF8019581907FE0 +:1045900009F03BCF8F2D62960FB6F894DEBF0FBEA9 +:1045A000CDBFDF91CF911F910F91FF90EF90DF90E2 +:1045B000CF9008951F93CF93DF93CDB7DEB72C979D +:1045C0000FB6F894DEBF0FBECDBF4F835887698703 +:1045D0007A878B879C87CE0107960E9413218823B8 +:1045E00069F08F8198852A853B85232BF1F19F3FC8 +:1045F00009F063C08F3F09F060C037C086E0FE015C +:104600003796DE01119601900D928A95E1F76F8140 +:104610007885EA85FB85309741F17F3F11F46F3F44 +:1046200021F120910E0430E0C9010196877099278D +:1046300040910D0450E08417950709F447C0698341 +:104640007A83FD83EC8396E0929FD001939FB00D17 +:104650001124A15FBB4FFE01319601900D929A95F6 +:10466000E1F780930E040E94892016E080910D04EA +:1046700090910E048917C1F1189FC0011124815F28 +:104680009B4F0E941321882379F1E0910D041E9F16 +:10469000F0011124E15FFB4F408151816281738100 +:1046A000848195810E94792080910D0490E001968B +:1046B0008770992780930D04D9CF4F8158856985DC +:1046C0007A858B859C850E947920CFCF0E943C20E3 +:1046D00010920E0410920D04EFE3F4E086E0DF0187 +:1046E0001D928A95E9F7C1CF2C960FB6F894DEBFDC +:1046F0000FBECDBFDF91CF911F910895EF92FF9232 +:104700000F931F93CF93DF938C01009709F46CC034 +:10471000F12CEE24E394E8012196F801849184378A +:1047200040F4843008F051C0813081F0823019F1BA +:104730005BC0853709F444C0A8F19CE7980F903717 +:1047400008F052C08F770E94591D41C00E5F1F4F65 +:10475000FE01C49180E28C0F883048F4C7708E2D22 +:1047600001C0880FCA95EAF70E945A2614C08C2F00 +:104770000E94911C2DC00E5F1F4FFE01C49180E26C +:104780008C0F883058F4C7708E2D01C0880FCA95E1 +:10479000EAF70E9460260E9481261AC08C2F0E9490 +:1047A000591D16C00E5F1F4FFE01C491CC2381F02E +:1047B0008FE99FE00197F1F700C00000C150F6CFEC +:1047C0000E5F1F4FFE01F49003C00E94911C8E01EA +:1047D0008F2D882309F49FCFEFE9FFE03197F1F7A0 +:1047E00000C000008150F5CFDF91CF911F910F9154 +:1047F000FF90EF90089508956093490470934A04E0 +:1048000080934B0490934C040C9428200F931F9397 +:104810000091490410914A0420914B0430914C04BA +:10482000DC01CB01802B912BA22BB32B809349046D +:1048300090934A04A0934B04B0934C041F910F91A2 +:104840000C9428200F931F930091490410914A045F +:1048500020914B0430914C04DC01CB018023912347 +:10486000A223B3238093490490934A04A0934B045A +:10487000B0934C041F910F910C9428200F931F9319 +:104880000091490410914A0420914B0430914C044A +:10489000DC01CB0180279127A227B327809349040D +:1048A00090934A04A0934B04B0934C041F910F9132 +:1048B0000C9428201092450410924604109247044C +:1048C000109248040C94282041E050E060E070E031 +:1048D00004C0440F551F661F771F8A95D2F7409377 +:1048E00045045093460460934704709348040C9425 +:1048F000282041E050E060E070E004C0440F551F04 +:10490000661F771F8A95D2F78091450490914604DF +:10491000A0914704B0914804482B592B6A2B7B2B5C +:1049200040934504509346046093470470934804B1 +:104930000C94282041E050E060E070E004C0440F97 +:10494000551F661F771F8A95D2F740955095609541 +:1049500070958091450490914604A0914704B091D0 +:104960004804482359236A237B23409345045093EA +:10497000460460934704709348040C94282041E057 +:1049800050E060E070E004C0440F551F661F771FC1 +:104990008A95D2F78091450490914604A0914704EE +:1049A000B0914804482759276A277B27409345043C +:1049B0005093460460934704709348040C94282055 +:1049C0000F931F93009145041091460420914704D2 +:1049D00030914804DC01CB01802B912BA22BB32B0F +:1049E0008093450490934604A0934704B0934804F1 +:1049F0001F910F910C9428200F931F930091450451 +:104A0000109146042091470430914804DC01CB0109 +:104A100080239123A223B3238093450490934604DB +:104A2000A0934704B09348041F910F910C94282041 +:104A30000F931F9300914504109146042091470461 +:104A400030914804DC01CB0180279127A227B327AE +:104A50008093450490934604A0934704B093480480 +:104A60001F910F910C9428200895CF92DF92EF921E +:104A7000FF920F931F93CF93DF938C01C090490453 +:104A8000D0904A04E0904B04F0904C04809145048F +:104A900090914604A0914704B0914804C82AD92AAD +:104AA000EA2AFB2ACFE1D0E0D701C6010C2E04C0D0 +:104AB000B695A795979587950A94D2F780FF06C07B +:104AC000B8018C2F0E94010C019721F4219760F707 +:104AD00080E001C08C2FDF91CF911F910F91FF904B +:104AE000EF90DF90CF900895CF93DF93EC010E9479 +:104AF0003525BE010E94010CDF91CF910895CB01B5 +:104B00000E947425089580914D048595859585951D +:104B1000089580914D048770089598E0899F9001D1 +:104B20001124262B20934D040C94792420914D04BC +:104B30008095822380934D04982F977069F430E01C +:104B4000482F552747FD50952417350729F085959F +:104B5000859585950C949A24089590914D049770AD +:104B600081E009F480E0089590918502992321F075 +:104B700090918602911109C020918702309188029C +:104B8000F90132969FEF40E01FC0982F96959695B9 +:104B900096959F3050F5E0918702F0918802E90FD9 +:104BA000F11D877021E030E0A90102C0440F551FBC +:104BB0008A95E2F7CA019181892B818308959F3FED +:104BC00039F04F5F4E3041F051915813F8CF0DC07E +:104BD0005111F7CF942FF5CF9F3F39F0F901E90F2D +:104BE000F11D97FDFA9582830895089590918502AD +:104BF000992321F090918602911109C0209187029A +:104C000030918802F9013296205F3F4F1FC0982FE4 +:104C10009695969596959F30F0F4E0918702F091E5 +:104C20008802E90FF11D877021E030E0A90102C080 +:104C3000440F551F8A95E2F7CA0180959181892317 +:104C4000818308953196E217F30729F09081981334 +:104C5000F9CF1082F7CF089581E090E0E0918702CC +:104C6000F0918802E80FF91F1082019680319105BA +:104C7000A9F7089590916104892B809361040895A8 +:104C80008095909161048923809361040895109226 +:104C90006104089590916004892B809360040895C5 +:104CA0008095909160048923809360040895109208 +:104CB0006004089590915F04892B80935F040895A8 +:104CC000809590915F04892380935F0408951092EA +:104CD0005F04089580934E04089510924E04089541 +:104CE0008091870290918802FC0131969C01205F9F +:104CF0003F4F80E0919191118F5FE217F307D1F759 +:104D00000895E0918702F091880280916104808388 +:104D1000E0918702F0918802908180916004892B54 +:104D20008083E0918702F0918802908180915F04F6 +:104D3000892B808380914E04882361F0E091870263 +:104D4000F09188029081892B80830E9470268111C6 +:104D500010924E0480918702909188020C94661BF9 +:104D600020E0009739F0AC0141505109842395238C +:104D70002F5FF7CF822F089580918304843039F11B +:104D80001092630420E488E190E00FB6F894A895AF +:104D9000809360000FBE2093600080E00E94770542 +:104DA00080E00E94DB0C83B7817F846083BF83B780 +:104DB000816083BF7894889583B78E7F83BF88E1B5 +:104DC0000FB6F89480936000109260000FBE0895B3 +:104DD0000895089580E00E9477050E94E8260E94C9 +:104DE000360D0E94E9260E94BB0D91E0811101C0A1 +:104DF00090E0892F08950E943C2080E00E94770572 +:104E00000E94692C0E945A1B0C94DB0C1F920F927B +:104E10000FB60F9211248F939F93AF93BF938091FE +:104E20006304811113C08091640490916504A09182 +:104E30006604B09167044196A11DB11D809364047E +:104E400090936504A0936604B0936704BF91AF91FB +:104E50009F918F910F900FBE0F901F90189582E039 +:104E600084BD93E095BD9AEF97BD80936E00089541 +:104E70002FB7F8948091640490916504A091660422 +:104E8000B09167042FBF0895CF92DF92EF92FF9207 +:104E90000F931F932FB7F8944091640450916504C9 +:104EA00060916604709167042FBF6A017B01EE2454 +:104EB000FF248C0120E030E0C016D106E206F306A4 +:104EC00010F4415051099A01281B390BC9011F9157 +:104ED0000F91FF90EF90DF90CF9008951F920F9267 +:104EE0000FB60F9211248F939F93AF93BF9380912E +:104EF000640490916504A0916604B09167040196E2 +:104F0000A11DB11D8093640490936504A093660471 +:104F1000B0936704BF91AF919F918F910F900FBE97 +:104F20000F901F9018950E945718F8942FEF87EA5A +:104F300091E6215080409040E1F700C0000087E0FA +:104F400090EBDC0180938E0490938F04A0939004E7 +:104F5000B09391049CE088E10FB6F894A8958093F3 +:104F600060000FBE90936000FFCF0E94F427811174 +:104F700002C00E94D0270E94FF27809362040E94F3 +:104F80000C2880938C0487FB882780F98093860205 +:104F90000E940328682F70E080E090E00C94FC23CE +:104FA0006DEE7EEF80E090E00E94203160E082E0D4 +:104FB00090E00E940E3160E083E090E00E940E31AC +:104FC00060E084E090E00E940E3160E085E090E0D7 +:104FD0000E940E3160E086E090E00E940E316FEF9B +:104FE00087E090E00C940E3180E090E00E94083160 +:104FF00021E08D3E9E4F09F020E0822F089582E04F +:1050000090E00C94003183E090E00C940031682F24 +:1050100083E090E00C940E3184E090E00C94003139 +:10502000682F84E090E00C940E3186E090E00C94C0 +:105030000031682F86E090E00C940E3187E090E01C +:105040000C940031682F87E090E00C940E31809131 +:105050006A0480FF0BC060918C0285E0689FB001FC +:10506000112475956795759567952BC081FF09C0CB +:1050700060918C0285E0689FB00111247595679559 +:1050800020C082FF07C060918C0285E0689FB0015C +:10509000112417C090916B049923D1F060918B0279 +:1050A000961788F720918C0285E0289F90011124A3 +:1050B000929FA001939F500D112470E0CA010E949D +:1050C000E6306038710540F46115710539F002C0B1 +:1050D00065E070E0862F08958FE7089581E00895D8 +:1050E00080916A0480FF08C060918A0270E0759523 +:1050F00067957595679521C081FF06C060918A020A +:1051000070E07595679519C082FF04C060918A02AE +:1051100070E010C090916B049923C1F060918902F6 +:105120009617A0F780918A02899FC001112470E030 +:105130000E94E6306038710528F46115710521F090 +:10514000862F08958FE7089581E0089561E070E06B +:10515000F4CF803F21F40E942728819504C0813F2D +:1051600029F40E94272880936E040895823F21F439 +:105170000E942728819504C0833F29F40E94272894 +:1051800080936D040895893F19F40E94702805C02A +:105190008A3F31F40E947028819580936F040895AE +:1051A0008B3F21F40E947028819504C08C3F29F424 +:1051B0000E947028809370040895843F21F48091A8 +:1051C0006C04816017C0853F21F480916C0482607B +:1051D00011C0863F21F480916C0484600BC0873F2E +:1051E00021F480916C04886005C0883F31F480917F +:1051F0006C04806180936C0408958D3F21F480914C +:105200006A0481600BC08E3F21F480916A04826041 +:1052100005C08F3F29F480916A04846080936A04FA +:105220000895803F39F480916E0487FF6CC010921E +:105230006E0469C0813F29F480916E041816BCF396 +:1052400062C090916D04823F29F497FF5CC0109278 +:105250006D0459C0833F19F41916CCF354C0893F2B +:1052600041F480916F0418160CF04DC010926F0439 +:105270004AC08A3F29F480916F0487FF44C0F6CF6B +:105280008B3F39F48091700487FF3DC01092700409 +:105290003AC08C3F29F4809170041816BCF333C0D7 +:1052A000843F21F480916C048E7F17C0853F21F4E8 +:1052B00080916C048D7F11C0863F21F480916C0435 +:1052C0008B7F0BC0873F21F480916C04877F05C0E2 +:1052D000883F31F480916C048F7E80936C0413C0FE +:1052E0008D3F21F480916A048E7F0BC08E3F21F4A4 +:1052F00080916A048D7F05C08F3F29F480916A04F4 +:105300008B7F80936A0480916D0481110EC080911F +:105310006E0481110AC080916F04811106C08091D2 +:105320007004811102C010926B0408958CE694E021 +:105330000E94711B0E94382790936904809368042F +:1053400008951F93CF93DF9380916804909169042F +:105350000E944427AC0190916B04992321F0209185 +:105360008D0230E006C020918E028AE0289F9001D5 +:1053700011244217530708F486C080916D04C09130 +:105380006E04D0916F0410917004811107C0C11197 +:1053900076C0D11174C0111172C075C09F3F19F051 +:1053A0009F5F90936B04181624F40E942728809323 +:1053B0006D0480916D0487FF05C00E9427288195A8 +:1053C00080936D041C1624F40E94272880936E0499 +:1053D00080916E0487FF05C00E94272881958093E5 +:1053E0006E0460916D04662339F1C0916E04CC2384 +:1053F00019F1772767FD7095872F972F0E94082E48 +:1054000023E333E343E35FE30E94182F0E94D52D8B +:1054100060936D046C2F772767FD7095872F972F0A +:105420000E94082E23E333E343E35FE30E94182F37 +:105430000E94D52D60936E041D1624F40E947028DE +:1054400080936F0480916F0487FF05C00E947028CD +:10545000819580936F04111624F40E947028809324 +:1054600070048091700487FF05C00E9470288195A8 +:1054700080937004DF91CF911F910C9496299F3FE8 +:1054800009F08ECF96CFDF91CF911F910895ECE672 +:10549000F4E085E0DF011D928A95E9F710926B0434 +:1054A00010926A040895833081F128F4813059F014 +:1054B0008230D1F00895853009F449C0B8F18630C2 +:1054C00009F456C0089580918E02262F30E0280FEF +:1054D000311D2F3F310524F4680F60938E0208952B +:1054E0008FEF80938E02089580918D02262F30E0F9 +:1054F000280F311D2F3F310524F4680F60938D0272 +:1055000008958FEF80938D02089580918C02262F4D +:1055100030E0280F311D2F3F310524F4680F6093D0 +:105520008C0208958FEF80938C02089580918B02F6 +:10553000262F30E0280F311D2F3F310524F4680F4E +:1055400060938B0208958FEF80938B020895809172 +:105550008A02262F30E0280F311D2F3F310524F419 +:10556000680F60938A0208958FEF80938A020895EE +:1055700080918902262F30E0280F311D2F3F310501 +:1055800024F4680F6093890208958FEF8093890255 +:105590000895833011F128F4813049F0823091F080 +:1055A0000895853081F120F18630C1F10895809110 +:1055B0008E02681720F4861B80938E020895109245 +:1055C0008E02089580918D02681720F4861B8093C7 +:1055D0008D02089510928D02089580918C026817B3 +:1055E00020F4861B80938C02089510928C020895FB +:1055F00080918B02681720F4861B80938B0208959C +:1056000010928B02089580918A02681720F4861BFD +:1056100080938A02089510928A02089580918902E7 +:10562000681720F4861B80938902089510928902DE +:1056300008950F931F93873208F048C08E3108F009 +:105640008DC0803109F477C008F5873009F461C056 +:1056500068F4863009F09DC080916204817F8E7F5E +:105660008093620481E08093720494C08B3009F4CB +:1056700089C08E3009F08DC08091620482FB2227A0 +:1056800020F991E0922790FB82F95EC0863109F4FF +:1056900079C060F4813109F07CC00E943C20909177 +:1056A000860281E08927809386026CC0893109F4E3 +:1056B00069C08B3109F06DC08091620481FB2227A3 +:1056C00020F991E0922790FB81F93EC0883309F4DC +:1056D00059C050F4893209F457C0853309F454C0D5 +:1056E000873209F451C055C0833409F44DC028F401 +:1056F0008A3308F44EC0895332C0883409F049C057 +:105700000E943C200E94EB0D0E94F1060E9493270C +:1057100039C090916204892F8095817080FB90F947 +:1057200029F0966098609093620434C0997F977FC7 +:105730009093620427C08091620483FB222720F9A2 +:1057400091E0922790FB83F9809362049923D1F032 +:105750008091620481608093620414C08D5141E0A5 +:1057600050E060E070E08A019B0104C0000F111F4F +:10577000221F331F8A95D2F7C901B8010E94FC236A +:105780000E943C2081E006C061E070E080E090E093 +:10579000F5CF80E01F910F91089580E0089580E09B +:1057A0000895CF93C82F80917204813069F018F06A +:1057B0008230C9F184C0E0918702F0918802808133 +:1057C000823209F07EC007C0E0918702F091880222 +:1057D0008081823261F48C2F0E94CD2B811104C014 +:1057E0008C2F0E94192B1DC081E090E01AC08C2FD5 +:1057F0000E94CF2B811114C0C43179F048F4CB3012 +:1058000079F0C03109F061C082E08093720408C071 +:10581000C93219F0C83321F058C01092720455C033 +:1058200081E0817054C0C93291F120F5C43179F121 +:10583000B0F4C73009F047C08EE180938E0282E356 +:1058400080938D028AE080938C0284E180938B02A6 +:1058500088E080938A0288E28093890234C0CE5126 +:10586000C63088F5EC2FF0E0EA5DFC4F8081809334 +:10587000710429C0CE34E9F020F4CB3421F56AE07C +:1058800013C0C13579F0C235F1F461E00DC08091EB +:105890007104882319F01092710415C081E080937F +:1058A000720415C061E006C0809171040E94532A01 +:1058B0000AC06AE0809171040E94C92A04C0109253 +:1058C000720480E004C081E002C080E0AACFCF91E2 +:1058D00008950E94F427811102C00E94D0270E94DF +:1058E000152880938D0480FF02C0869501C080E05A +:1058F0000C94770580918D04982F9695292F30E090 +:10590000233031054CF49F5F990F8170892B8160A2 +:1059100080938D040E94192880918D0486950C94A3 +:10592000770580918D04982F969591F09158990F55 +:105930008170892B80938D048E7F91E009F490E033 +:1059400080918D0490FB80F980938D040E9419282A +:1059500080918D0486950C94770580918D04982F05 +:10596000909590FB80F980938D040E941928809176 +:105970008D0480FF02C0869501C080E00C947705FD +:1059800090918D04892F86958F5F8F7791708430E9 +:1059900028F4880F892B80938D0402C090938D0486 +:1059A00080918D048E7F91E009F490E080918D04C8 +:1059B00090FB80F980938D040E94192880918D04BA +:1059C00086950C94770520918D04922F96958927C2 +:1059D000982F990F822F8170892B80938D048E7F51 +:1059E00091E009F490E080918D0490FB80F9809320 +:1059F0008D040E94192880918D0486950C9477055A +:105A000080918D04869508955058BB27AA270ED003 +:105A1000D1C1C2D130F0C7D120F031F49F3F11F491 +:105A20001EF4B7C10EF4E095E7FB9FC1E92FD3D177 +:105A300080F3BA17620773078407950718F071F4AB +:105A40009EF5EBC10EF4E0950B2EBA2FA02D0B01A5 +:105A5000B90190010C01CA01A0011124FF27591BB3 +:105A600099F0593F50F4503E68F11A16F040A22FB9 +:105A7000232F342F4427585FF3CF4695379527952A +:105A8000A795F0405395C9F77EF41F16BA0B620B29 +:105A9000730B840BBAF09150A1F0FF0FBB1F661F70 +:105AA000771F881FC2F70EC0BA0F621F731F841FB3 +:105AB00048F4879577956795B795F7959E3F08F0D9 +:105AC000B3CF9395880F08F09927EE0F9795879598 +:105AD000089527D108F481E008950CD06BC163D1FB +:105AE00040F05AD130F021F45F3F19F03EC151111E +:105AF00095C14FC170D198F39923C9F35523B1F3E0 +:105B0000951B550BBB27AA2762177307840738F02C +:105B10009F5F5F4F220F331F441FAA1FA9F333D08B +:105B20000E2E3AF0E0E830D091505040E695001C3F +:105B3000CAF729D0FE2F27D0660F771F881FBB1FFB +:105B4000261737074807AB07B0E809F0BB0B802DD5 +:105B5000BF01FF2793585F4F2AF09E3F510568F021 +:105B600004C15CC15F3FECF3983EDCF3869577950A +:105B70006795B795F7959F5FC9F7880F911D969523 +:105B8000879597F90895E1E0660F771F881FBB1F7F +:105B9000621773078407BA0720F0621B730B840B2C +:105BA000BA0BEE1F88F7E095089504D06894B11100 +:105BB00035C1089518D188F09F5790F0B92F9927D3 +:105BC000B751A0F0D1F0660F771F881F991F1AF008 +:105BD000BA95C9F712C0B13081F01FD1B1E0089574 +:105BE0001CC1672F782F8827B85F39F0B93FCCF3F5 +:105BF000869577956795B395D9F73EF490958095FE +:105C0000709561957F4F8F4F9F4F0895E89409C01D +:105C100097FB3EF490958095709561957F4F8F4FDF +:105C20009F4F9923A9F0F92F96E9BB279395F695F5 +:105C3000879577956795B795F111F8CFFAF4BB0F73 +:105C400011F460FF1BC06F5F7F4F8F4F9F4F16C0D7 +:105C5000882311F096E911C0772321F09EE8872F61 +:105C6000762F05C0662371F096E8862F70E060E01D +:105C70002AF09A95660F771F881FDAF7880F969596 +:105C8000879597F9089588D018F011F08CD038F4E2 +:105C900080C0C4C0E92F9FD0B0F35523C9F3E7FB00 +:105CA0006217730784079507A8F199F3E92FFF2777 +:105CB00088232AF03197660F771F881FDAF7952F10 +:105CC0005527442332F091505040220F331F441F78 +:105CD000D2F7BB27E91BF50B621B730B840BB109D1 +:105CE000C1F222F4620F731F841FB11D31972AF095 +:105CF000660F771F881FBB1FEFCF915050405AF09F +:105D000041F0882332F0660F771F881F9150504072 +:105D1000C1F7939530C08695779567959F5FD9F7C2 +:105D2000F8CF990F0008550FAA0BE0E8FEEF161602 +:105D30001706E807F907C0F012161306E407F5077F +:105D400098F0621B730B840B950B39F40A2661F0F3 +:105D5000232B242B252B21F408950A2609F4A14096 +:105D6000A6958FEF811D811D089597F99F6780E8A3 +:105D700070E060E008959F3F31F0915020F48795E6 +:105D800077956795B795880F911D9695879597F9A3 +:105D900008959FEF80EC089500240A9416161706C4 +:105DA00018060906089500240A941216130614060C +:105DB00005060895092E0394000C11F4882352F06F +:105DC000BB0F40F4BF2B11F460FF04C06F5F7F4F27 +:105DD0008F4F9F4F089557FD9058440F551F59F00E +:105DE0005F3F71F04795880F97FB991F61F09F3FC8 +:105DF00079F087950895121613061406551FF2CFF1 +:105E00004695F1DF08C0161617061806991FF1CF40 +:105E100086957105610508940895E894BB27662767 +:105E20007727CB0197F908957CDF08F48FEF089569 +:105E30000BD0C0CFB1DF28F0B6DF18F0952309F002 +:105E400094CFA7CF1124EACFC6DFA0F3959FD1F35B +:105E5000950F50E0551F629FF001729FBB27F00D18 +:105E6000B11D639FAA27F00DB11DAA1F649F66276D +:105E7000B00DA11D661F829F2227B00DA11D621FBC +:105E8000739FB00DA11D621F839FA00D611D221F76 +:105E9000749F3327A00D611D231F849F600D211D5A +:105EA000822F762F6A2F11249F5750408AF0E1F0FD +:105EB00088234AF0EE0FFF1FBB1F661F771F881F46 +:105EC00091505040A9F79E3F510570F04ECFA6CF9C +:105ED0005F3FECF3983EDCF3869577956795B79531 +:105EE000F795E7959F5FC1F7FE2B880F911D96955B +:105EF000879597F90895FA01EE0FFF1F3096210557 +:105F0000310599F16115710561F48038BFE39B0794 +:105F100049F168949038810561F08038BFEF9B07A4 +:105F200041F0992342F5FF3FE1053105210511F1CB +:105F3000E8940894E795D901AA2329F4AB2FBE2F42 +:105F4000F85FD0F310C0FF5F70F4A695E0F7F73963 +:105F500050F019F0FF3A38F49F779F930CD00F90D0 +:105F600007FC905808953EF014CF60E070E080E8A0 +:105F70009FE308954FE79F775F934F933F932F934E +:105F80009ED02F913F914F915F9152DF05C019F440 +:105F90000EF0EBCE42CFFDCE26DFC8F39638C0F729 +:105FA00007F80F92E8942BE33AEA48EB5FE74EDFFD +:105FB0000F920F920F924DB75EB70F92C0D0E8E2EA +:105FC000F1E016D04F915F91EF91FF91E595EE1FB3 +:105FD000FF1F49F0FE57E0684427EE0F441FFA9573 +:105FE000E1F74195550B32D00F9007FE26C008957A +:105FF000DF93CF931F930F93FF92EF92DF927B017A +:106000008C01689405C0DA2EEF011EDFFE01E894D2 +:10601000A5912591359145915591AEF3EF0106DD9E +:10602000FE019701A801DA9479F7DF90EF90FF90D5 +:106030000F911F91CF91DF9108959B01AC0160E01A +:1060400070E080E89FE349CD90CE95CECCDEE8F3BA +:106050009923D9F3940F511DBBF39150504094F004 +:1060600059F0882332F0660F771F881F91505040F7 +:10607000C1F79E3F510544F7880F911D969587956E +:1060800097F908955F3FACF0983E9CF0BB2786954A +:1060900077956795B79508F4B1609395C1F7BB0FF5 +:1060A00058F711F460FFE8CF6F5F7F4F8F4F9F4F1E +:1060B000E3CFB4CE0EF05FCE6CCE689456CE93DEB6 +:1060C000C8F39923D1F3C6F3DF93CF931F930F93B4 +:1060D000FF92C92FDD2788232AF02197660F771FAB +:1060E000881FDAF720E030E040E85FEB9FE3883973 +:1060F00020F0803E30F021968F7787DCE0E5F1E0FC +:1061000003C083DCEDE7F1E073DF8B01BE01EC013E +:10611000FB2E6F5771097595771F880B990B78DDEA +:1061200028E132E741E35FE38FDEAF2D9801AE0156 +:10613000FF900F911F91CF91DF9178DC3BCEFA0158 +:10614000DC01AA0FBB1F9B01AC01BF5728F422271B +:106150003327442750781FC0B75188F4AB2F002451 +:10616000469537952795011CA395D2F3002069F039 +:10617000220F331F441FB395DAF30DD045CC6130A5 +:106180007105A0E88A07B94630F49B01AC01662787 +:10619000772788279078309621F0208331834283B7 +:1061A00053830895AA1BBB1B51E107C0AA1FBB1F45 +:1061B000A617B70710F0A61BB70B881F991F5A9593 +:1061C000A9F780959095BC01CD01089597FB072E06 +:1061D00016F4009407D077FD09D00E94D23007FC56 +:1061E00005D03EF4909581959F4F089570956195E7 +:1061F0007F4F0895EE0FFF1F0590F491E02D099455 +:10620000F999FECF92BD81BDF89A992780B508957E +:10621000A8E1B0E042E050E00C942831262FF99933 +:10622000FECF92BD81BDF89A019700B4021639F0F5 +:106230001FBA20BD0FB6F894FA9AF99A0FBE0895C6 +:106240000196272F0E940F310C940E31DC01CB01F7 +:10625000FC01F999FECF06C0F2BDE1BDF89A319676 +:1062600000B40D9241505040B8F70895F894FFCF14 +:1062700052D02445000000410000DC4400000041F1 +:1062800052D0A4440000404100005C4400000041A2 +:1062900048F17644000000415C978A4400000041C8 +:1062A0001FD592440000004152D0A4440000004198 +:1062B0005CFFB844000000410AA7CF440000004141 +:1062C0000000DC44000000410AA7CF440000004168 +:1062D0000000DC440000004100000000000080409D +:1062E00000005C45000040410000000000008040CC +:1062F00052D02445000040410AA7CF44000000418D +:106300000000DC440000004100000000000080406C +:1063100052D02445000040410000000000008040B1 +:1063200000005C45000040410AA7CF440000004146 +:106330000000DC440000004100000000000080403C +:1063400052D0244500004041000000000000804081 +:106350000AA74F45000040410AA7CF440000004172 +:106360000000DC440000004100000000000080400C +:1063700052D0244500000041000000000000804091 +:106380005CFF384500000041000000000000804034 +:1063900052D02445000000410AA7CF44000000412C +:1063A0000000DC44000000410000000000008040CC +:1063B00052D024450000804152D024450000404185 +:1063C0005C970A450000004152D0A44400000041FF +:1063D0000000DC44000000415C970A450000A04139 +:1063E000640007000CFF0000003F646214F014CD4D +:1063F000149914651401014F042808140A321E0070 +:1064000002040507090B0C0E1011131517181A1C9E +:106410001D1F2123242628292B2D2F3032343537D8 +:10642000393B1F0F03764F5F6F7F496943790959E5 +:1064300053633149803F5D8B803FF8BF803FCAE1A5 +:10644000803F73ED803FCAE1803FF8BF803F5D8BA6 +:10645000803F3149803F0000803FF16D7F3F75EA0A +:106460007E3F4C827E3F833F7E3F84287E3F833F3A +:106470007E3F4C827E3F75EA7E3FF16D7F3F00009C +:10648000803F404D3639FA09AD0977093E09D108F8 +:10649000EA0803091C0901020304050607080900AC +:00000001FF diff --git a/keyboard/planck/keymaps/dzobert/compiled.hex b/keyboard/planck/keymaps/dzobert/compiled.hex new file mode 100644 index 0000000000..cb3972bc01 --- /dev/null +++ b/keyboard/planck/keymaps/dzobert/compiled.hex @@ -0,0 +1,1449 @@ +:100000000C9496020C94DA020C94DA020C94DA0244 +:100010000C94DA020C94DA020C94DA020C94DA02F0 +:100020000C94DA020C94DA020C9478140C944A15AD +:100030000C94AC220C94DA020C94DA020C94DA02DE +:100040000C94DA020C943C030C94DA020C94DA025D +:100050000C94DA020C9414230C94DA020C94DA0255 +:100060000C94DA020C94DA020C94DA020C94DA02A0 +:100070000C94DA020C94DA020C94DA020C94DA0290 +:100080000C94ED0A0C94DA020C94DA020C94DA0265 +:100090000C94DA020C94DA020C94DA020C94DA0270 +:1000A0000C94DA020C94DA020C94DA02B715D91522 +:1000B000C716D915C7161E164116C7169616A916C5 +:1000C00093199319C219C219011A211A771B771BA8 +:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 +:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 +:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 +:10010000F91A071B0E1B151B1F1B07634236B79BF3 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A299 +:1001D000F1A3018C028C290014001A0008001500FC +:1001E00017001C0018000C00120013002B00E00088 +:1001F00004001600070009000A000B000D000E00A5 +:100200000F0033002A00E2001D001B000600190049 +:100210000500110010003600370038002800C40027 +:10022000E500E300E10002202C002C00012050003A +:10023000510052004F002B0014001A000900130057 +:100240000A000D000F0018001C0033002B002900CD +:10025000040015001600170007000B00110008002D +:100260000C0012002A00E2001D001B00060019000D +:1002700005000E0010003600370038002800C300CB +:10028000E500E300E10002202C002C0001205000DA +:10029000510052004F003A003B003C003D003E0040 +:1002A0003F0040004100420043004400450001007F +:1002B0001E001F0020002100220023002400250032 +:1002C00026004C000000010035002D002E003400F7 +:1002D00034022F0230022F003000310001000100F3 +:1002E00001000100010001000100010001204A009D +:1002F0004B004E004D00660046004700480053008A +:1003000074007600650024002500260054000100DA +:10031000AA00A900A80039009B007A0079002100FA +:10032000220023005500010049007B007C007D0075 +:100330003100260027001E001F002000560001008B +:10034000010001000100022001000100010027005E +:10035000630058005700280354006800650020001F +:1003600050006C0061006E0063006B0020004B00C9 +:100370006500790062006F00610072006400000097 +:100380002C034F007200740068006F006C0069005D +:100390006E0065006100720020004B00650079006E +:1003A00062006F00610072006400730000000403CB +:1003B000090409026D00040100A0FA09040000010B +:1003C00003010100092111010001223F00070581FD +:1003D0000308000A090401000103010200092111B8 +:1003E000010001224D000705820308000A090402EA +:1003F000000103000000092111010001223600075D +:1004000005830308000A0904030001030000000932 +:100410002111010001223900070584031000011297 +:1004200001100100000008EDFE6060010001020003 +:100430000105010906A101050719E029E7150025B5 +:1004400001950875018102050819012905950575B1 +:10045000019102950175039101050719002977158E +:10046000002501957875018102C005010980A1016F +:10047000850216010026B7001A01002AB700751080 +:1004800095018100C0050C0901A101850316010039 +:10049000269C021A01002A9C02751095018100C059 +:1004A00005010902A1010901A10005091901290598 +:1004B00015002501950575018102950175038101DE +:1004C0000501093009311581257F950275088106DE +:1004D00009381581257F950175088106050C0A38B4 +:1004E000021581257F950175088106C0C0050109A7 +:1004F00006A101050719E029E715002501950875F2 +:1005000001810295017508810105081901290595E8 +:1005100005750191029501750391010507190029DF +:10052000FF150025FF950675088100C011241FBE28 +:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A +:100540001E0390911F03A0912003B09121038730D7 +:10055000904BA740B04BB9F410921E0310921F03AA +:10056000109220031092210314BE84B7877F84BFAA +:1005700088E10FB6F89480936000109260000FBE7F +:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 +:1005900002C005900D92A03CB107D9F713E0A0EC82 +:1005A000B1E001C01D92AE31B107E1F70E94BE116A +:1005B0000C94D72C0C9400000895089581E00895C0 +:1005C00008950C94DD020C94DE020C94E0020E946B +:1005D000A12823E030E0281B3109220F2093C40119 +:1005E0000895282F2F9880918000211108C0877FBF +:1005F0008093800010928D0010928C001BC0886048 +:1006000080938000233019F48FEF9FEF0FC083E0B9 +:1006100090E0821B9109880F991F2FEF3FEFA901EE +:1006200002C0569547958A95E2F7CA0190938D00CE +:1006300080938C000C94E7020E94E70284E0809390 +:10064000C3011092C0010895279A2F988FEF9FEF52 +:1006500090938700809386008AE08093800089E1F0 +:10066000809381000E940A280C941C030E9424039A +:100670006E9A769A0C94DC021F920F920FB60F922C +:1006800011242F933F938F939F93EF93FF93E091C8 +:10069000C101F091C201CF0101969093C2018093F4 +:1006A000C1010090C30102C0F695E7950A94E2F7F4 +:1006B000EF738091C001823019F4E03251F404C02C +:1006C000813039F4EF3329F480916F008D7F80936E +:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B +:1006E000C001E39F900D11240090C40102C09695B3 +:1006F00087950A94E2F790938D0080938C00FF9188 +:10070000EF919F918F913F912F910F900FBE0F907E +:100710001F90189581E008950C948A0308950C9415 +:10072000360380911502882309F448C08091D101D5 +:100730009091D201009779F40E94DE229093D20129 +:100740008093D1018091D30190E0009771F4809162 +:10075000D40190E00AC00E94EA2220910001309169 +:1007600001012817390740F329C00197880F991F05 +:10077000880F991FFC01EB52FE4F608171818281CD +:1007800093810E94530AE091D30184E0E89FF00135 +:100790001124EB52FE4F60817181828193814FE081 +:1007A00050E00E940B0E8091D30190E00196609181 +:1007B000D40170E00E94872C8093D3010C94E10255 +:1007C000109217020C94200A0895089581E08093F6 +:1007D00017020C94E503089508958F929F92AF92AB +:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA +:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 +:10080000FC0100811181C8010E94DB20B8010E9417 +:10081000F2058C01B7010E948C03882309F4CCC136 +:100820000032F0E51F0741F4F7018281882309F4C3 +:1008300058C00E946F0EC0C10132F0E51F0741F49D +:10084000F7018281882309F44CC00E94780EB4C15C +:100850000232F0E51F0751F4F7018281882309F481 +:1008600040C00E946B0E8111F0CFE3CF0332F0E560 +:100870001F0739F4F7018281882399F10E94E6036A +:100880009BC10432F0E51F0739F4F7018281882308 +:1008900041F10E94E00390C10532F0E51F0749F4E1 +:1008A000F70182818823E9F0809117028111F1CF4D +:1008B000E5CF0632F0E51F0739F4F701828188237E +:1008C00081F00E947F0E0AC00732F0E51F0749F44D +:1008D000F7018281882329F00E948A0E0E94EC038E +:1008E0006BC180911702811105C0F70182818111CE +:1008F000CFC018C1003E110579F4F7018281882329 +:1009000009F44DC00E94200A81E0809316021092E3 +:1009100015021092D40150C1023E110559F4F7019D +:1009200082818823E1F10E94200A1092160210921F +:10093000150242C1033E110591F4F701828188231B +:1009400071F10E94200A1092160281E08093150234 +:100950001092D3011092D2011092D1012DC1023513 +:10096000110559F4F7018281882309F425C180918A +:100970000001909101010A970DC00135110579F42C +:10098000F7018281882309F417C1809100019091B9 +:1009900001010A9690930101809300010DC14091DD +:1009A000040183E2EFE1F1E0DE01119601900D9286 +:1009B0008A95E1F7F701808121E030E02C0F3D1F9F +:1009C000280F311DC9012091020130910301FC0162 +:1009D000E20FF31F6081772767FD7095640F711D2B +:1009E000882777FD8095982F0E94A92920E030E084 +:1009F00040E451E40E940E294B015C01F701218182 +:100A000084E090E0821B9109BC01882777FD8095E6 +:100A1000982F0E94A9299B01AC01C501B4010E9435 +:100A2000A6289B01AC0160E070E080E090E40E94A9 +:100A30001C2B20E030E04CED50E40E94B92A4B0121 +:100A40005C01F70182818823D1F04FE050E0C501BD +:100A5000B4010E940B0E809116028823A1F08091B0 +:100A6000D40124E0829FF0011124EB52FE4F8082DA +:100A70009182A282B3828F5F8093D40104C0C501AA +:100A8000B4010E94530A0F3F110508F02ECF94C005 +:100A90008091D00181111FC0043130E5130709F0A6 +:100AA00051C00E948E0381E08093D0010E94DE221B +:100AB0009093CF018093CE011092C7011092C9018B +:100AC0001092C8011092CB011092CA011092CD0170 +:100AD0001092CC0171C08091CE019091CF010E9403 +:100AE000EA22883C910570F48091C701E82FF0E07C +:100AF000EE0FFF1FE853FE4F118300838F5F80933B +:100B0000C7015AC0043880E5180721F005381045A0 +:100B100001F13AC0F7018281882341F01092C501AA +:100B200082E01EC0043830E5130759F58091C501F5 +:100B3000811106C086E20E94371886E20E94FF18E3 +:100B400082E01CC00438F0E51F0741F3053810456A +:100B5000D9F4F7018281882331F01092C60180E236 +:100B60000E944E1929C08091C601811106C087E2FA +:100B70000E94371887E20E94FF1880E20E945519F0 +:100B80001BC00538104529F381E08093C50180938F +:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 +:100BA000DF91CF911F910F91FF90EF90BF90AF9089 +:100BB0009F908F900C94E30280E0A3960FB6F89478 +:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 +:100BD000EF90BF90AF909F908F90089580E090E04D +:100BE000089508959CE0799FF001112490E3899F76 +:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B +:100C0000FE4F859194910895880F991FFC01E45B34 +:100C1000FF4F859194910895880F991FFC01E4532B +:100C2000FE4F8591949108950F931F93CF93DF9377 +:100C3000EC01811521E39207A0F5C11580E3D807E7 +:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 +:100C500007C2C83AD10578F4C53AD10508F06AC090 +:100C6000C130D10509F463C008F4F7C1C430D1051F +:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 +:100C8000C11590E2D90708F0AFC0C11521E0D20725 +:100C900008F0E6C1C03FD10508F4DFC18E01106540 +:100CA0001FC2C03880E5D80700F5C03790E5D907E6 +:100CB00008F0A3C0C11520E5D20709F4ACC050F478 +:100CC000CE01905480319F4008F0C7C1DF708E0183 +:100CD000106A06C2C13080E5D80709F4AEC0C4313D +:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 +:100CF00009F48EC050F4C13890E5D90709F482C0D8 +:100D000008F083C000E011EDEBC1C03181E5D807E8 +:100D100008F4A3C1C11597E5D90708F436C1CE017F +:100D200090578115904108F098C1DF7093C101E0A0 +:100D300010E0D6C1C53AD10509F494C1C63AD1052F +:100D400009F093C102E810E4CBC1C83AD10509F417 +:100D50008FC1C93AD10509F48EC1CA3AD10509F447 +:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 +:100D70008BC1CD3AD10509F48AC1C03BD10509F434 +:100D800089C1CE3AD10509F488C1CF3AD10509F419 +:100D900087C1C13BD10509F486C1C23BD10509F425 +:100DA00085C1C33BD10509F484C1C43BD10509F415 +:100DB00083C1C53BD10509F482C1C63BD10509F405 +:100DC00081C1C73BD10509F480C1C83BD10509F4F5 +:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 +:100DE0007DC100E014E47CC1CE019F700E940C061E +:100DF00078C1DD278E01106C73C1CF70DD278E01A5 +:100E0000146D6EC100E010ED6BC100E012ED68C121 +:100E100000E013ED65C10E94E21B0E94200A0E94BF +:100E2000E4038FEF94E32CE0815090402040E1F701 +:100E300000C000000E94392353C18091F2028160FA +:100E40008093F2024DC10E949A23811102C00E9438 +:100E500076230E94AD2390E090931D0380931C03A2 +:100E6000C23080E5D80721F480911C03816086C0E0 +:100E7000C43090E5D90721F480911C0382607EC0C4 +:100E8000C63020E5D20721F480911C03846076C02F +:100E9000C83080E5D80719F480911C0327C0CA30F8 +:100EA00090E5D90721F480911C03806167C0CC30A4 +:100EB00020E5D20721F480911C0380625FC0CE3010 +:100EC00080E5D80721F480911C03806457C0C031AD +:100ED00090E5D90721F480911C0380684FC0C2318E +:100EE00020E5D20729F480911C038460886046C005 +:100EF000C33080E5D80721F480911C038E7F3EC06B +:100F0000C53090E5D90721F480911C038D7F36C050 +:100F1000C73020E5D20721F480911C038B7F2EC0BF +:100F2000C93080E5D80719F480911C0326C0CB3066 +:100F300090E5D90721F480911C038F7E1FC0CD302E +:100F400020E5D20721F480911C038F7D17C0CF309C +:100F500080E5D80721F480911C038F7B0FC0C1313D +:100F600090E5D90721F480911C038F7707C0C33126 +:100F7000D04531F480911C038B7F877F80931C03C5 +:100F800080911C030E94B123ABC08D2F99278F70D5 +:100F9000992781309105D9F49E012370332702C02F +:100FA000880F991F2A95E2F79C688E0144E0000F94 +:100FB000111F4A95E1F700271370802B912B53E006 +:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 +:100FD000910531F4DC2FCC278E01016F106A80C09F +:100FE0008330910569F4CE018370992701E010E008 +:100FF00002C0000F111F8A95E2F7C8019C680FC05C +:1010000084309105B9F4CE018370992701E010E096 +:1010100002C0000F111F8A95E2F7C8019A6823E009 +:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 +:101030001D2B56C08530910531F4DC2FCC278E0155 +:10104000046F106A4DC0069709F04AC0CF71DD27C2 +:10105000DC2FCC278E01106243C000E010E040C0BE +:101060008E013EC001E810E43BC003E810E438C044 +:1010700002EE14E435C009EE14E432C00AEE14E4C2 +:101080002FC005EB14E42CC006EB14E429C007EBD9 +:1010900014E426C00CEC14E423C00DEC14E420C0CE +:1010A00003E815E41DC00AE815E41AC002E915E4D6 +:1010B00017C004E915E414C001E216E411C003E20C +:1010C00016E40EC004E216E40BC005E216E408C004 +:1010D00006E216E405C007E216E402C00AE216E4DE +:1010E000C801DF91CF911F910F9108959CE0799FE6 +:1010F000F001112490E3899FE00DF11D1124E60F0A +:10110000F11DEE0FFF1FEA52FE4F85919491803E34 +:101110009105E0F4803C910558F58133910509F47F +:101120006FC048F48932910509F463C08A32910591 +:1011300009F46DC072C089339105E9F082389105D8 +:10114000D1F08533910509F44DC067C0833E910508 +:1011500081F138F4803E9105B9F0823E9105D9F0D5 +:101160005CC0863E910561F1873E9105A1F155C0B5 +:101170000E940406089520911C0320FD02C021FF57 +:101180004CC080EE90E049C080911C0380FFF9CFF5 +:1011900089E390E042C080911C0382FF0EC08091E1 +:1011A0001C0384FF03C080E090E037C083EE90E032 +:1011B00034C080911C0382FFF2CF82EE90E02DC0FC +:1011C00080911C0383FF0BC080911C0384FDEBCF37 +:1011D00087EE90E022C080911C0383FFF5CF86EE5E +:1011E00090E01BC080911C0385FF07C089E290E05E +:1011F00014C080911C0385FFF9CF85E390E00DC0FA +:1012000080911C0386FF07C08AE290E006C08091AF +:101210001C0386FFF9CF81E390E00E941406089535 +:101220000C94E502E82FF0E0E25BFE4F8081E82FAE +:10123000EF70F0E082958F7021E030E0A90102C0EC +:10124000440F551F8A95E2F740A308950F931F930B +:10125000CF93DF9385B7806885BF85B7806885BFEA +:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 +:10127000E82FEF70F0E021A182958F70A80102C0E5 +:10128000440F551F8A95E2F7CA01822B81A38C2F48 +:101290000E941209219740F78BE090E061E070E036 +:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 +:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F +:1012C0009D01242B22A3019758F7DF91CF911F9105 +:1012D0000F910C948F03EF92FF920F931F93CF9374 +:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA +:1012F0008C2F0E9412098BE090E040E050E0FC014E +:10130000EE5BFE4F6081E62FEF70F0E020A130E051 +:1013100062956F7002C0359527956A95E2F720FDBA +:1013200009C09701082E02C0220F331F0A94E2F76A +:10133000422B532B019718F7F801929182918F015C +:101340008417950721F051834083D09305018C2F9A +:101350000E941209C15060F68091050187FD2CC0E2 +:101360008150809305018F3F39F08FE99FE001970D +:10137000F1F700C0000020C080911E0290911F0272 +:10138000909327028093260280911C0290911D0267 +:10139000909325028093240280911A0290911B025F +:1013A0009093230280932202809118029091190257 +:1013B00090932102809320020E94910381E0DF91AB +:1013C000CF911F910F91FF90EF900895E82FF0E0DB +:1013D000EE0FFF1FE05EFD4F80819181089508951B +:1013E0000F931F93CF9308E212E0C0E0F8019291AF +:1013F00082918F010E945622C80FF2E000321F072F +:10140000A9F78C2FCF911F910F9108950E949A23D5 +:10141000811102C00E9476230E94BF23809307039C +:101420003E9A809171008D7F8093710082E080935D +:1014300090008AE18093910081E080932A020895D0 +:1014400080912A02811102C00E94060A10927A023B +:1014500010927902809171008D7F8093710080914C +:1014600090008F738093900010923C0210923B0288 +:10147000109273021092740210927502109276020A +:101480001092720210927102E1E5F2E0A1E4B2E082 +:1014900011921192119211921D921D9282E0E137E8 +:1014A000F807B1F70895CF92DF92EF92FF920F9372 +:1014B0001F93CF93DF9320913B02222309F484C032 +:1014C0006B017C0180912A02811102C00E94060AF0 +:1014D00001E712E0C7E0D0E0A7019601F801929180 +:1014E0008291729162918F010E940A29811131C00B +:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 +:10150000118212821382DE01AA0FBB1FAF5BBD4F97 +:1015100011961C921E92C730D105E9F021964481A4 +:1015200055816681778140835183628373831482FE +:1015300015821682178212968D919C91139711969F +:101540009C938E9313961C921E9212973496129629 +:10155000E2CF219708F68091790290917A02019763 +:1015600097FD05C090937A028093790204C010928F +:101570007A02109279028091790290917A022091F8 +:101580007702309178022817390724F010927802F8 +:1015900010927702892BC1F4809171008D7F809326 +:1015A0007100809190008F7380939000109273026D +:1015B00010927402109275021092760210927202CA +:1015C0001092710210923B02DF91CF911F910F9107 +:1015D000FF90EF90DF90CF9008951F920F920FB67B +:1015E0000F9211244F925F926F927F928F929F92EF +:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 +:101600004F935F936F937F938F939F93AF93BF930A +:10161000CF93DF93EF93FF9380913B02882309F4EC +:101620009BC1C0917902D0917A021C161D060CF064 +:1016300093C140902B0250902C0260902D0270902C +:101640002E0220E030E0A901C301B2010E94B52AB8 +:1016500018160CF065C0C130D10509F452C0809154 +:10166000770290917802BE010E94872C7C019093B2 +:1016700078028093770280903D0290903E02A09085 +:101680003F02B090400220E030E040E85FE3C50157 +:10169000B4010E94A62860933D0270933E0280939D +:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 +:1016B000EF5AFD4FA3019201608171818281938174 +:1016C0000E940E2920E030E040E05EE30E94B92A4B +:1016D0009B01AC01C501B4010E94B52A18168CF417 +:1016E000C7010196BE010E94872C909378028093D7 +:1016F000770210923D0210923E0210923F02109229 +:101700004002E0917702F0917802EE0FFF1FEE0F9A +:10171000FF1FEF5AFD4F6081718182819381D0C09C +:10172000C0907302D0907402E0907502F09076023F +:1017300020E030E0A901C701B6010E940A292197E3 +:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A +:10175000EF5AFD4F80809180A280B380A501940153 +:10176000C701B6010E940A2987FF31C0A501940173 +:1017700060E070E08CED93EC0E940E2920E030E0F8 +:1017800040E451E40E940E2920E030E040E05FE3B5 +:101790000E94B92A9B01AC0160E070E080E090E417 +:1017A0000E941C2B9B01AC01C501B4010E94B92A07 +:1017B0009B01AC01C701B6010E940A2987FF07C03F +:1017C000A701960160E070E08CED93E439C0A501BB +:1017D0009401C701B6010E94B52A18160CF055C035 +:1017E000A501940160E070E08CED93E40E940E2965 +:1017F00020E030E040E451E40E940E2920E030E097 +:1018000040E05FE30E94B92A9B01AC0160E070E018 +:1018100080E090E40E941C2B9B01AC01C501B40147 +:101820000E94B92A9B01AC01C701B6010E94B52AEA +:1018300018165CF5A701960160E070E08CED93EC62 +:101840000E940E2920E030E040E451E40E940E297D +:1018500020E030E040E05FE30E94B92A9B01AC0148 +:1018600060E070E080E090E40E941C2B9B01AC01E2 +:10187000C701B6010E94B92A609373027093740283 +:10188000809375029093760213C0FE01EE0FFF1F46 +:10189000EE0FFF1FEF5AFD4F80819181A281B3812E +:1018A0008093730290937402A0937502B0937602B2 +:1018B000609173027091740280917502909176022A +:1018C00020912802309129022F3F4FEF340731F049 +:1018D0002F5F3F4F30932902209328020E94950EDC +:1018E0006B017C0120E034E244EF51E40E940A29BC +:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 +:1019000081E4F82E20E030E040E051E4C701B60168 +:101910000E94B92A9B01AC0160E074E284E79BE479 +:101920000E940E296B017C010E947B297093970015 +:1019300060939600209106013091070140910801C3 +:1019400050910901C701B6010E94B92A0E947B2962 +:10195000709399006093980080913C02882309F469 +:1019600033C1C0903702D0903802E0903902F09035 +:101970003A0220E030E0A901C701B6010E94B52A71 +:101980001816D4F580912802909129028F3F2FEFED +:10199000920729F001969093290280932802C701AB +:1019A000B6010E94950E20E030E040E051E40E9434 +:1019B000B92A9B01AC0160E074E284E79BE40E94D9 +:1019C0000E296B017C010E947B2970939700609324 +:1019D0009600209106013091070140910801509135 +:1019E0000901C701B6010E94B92A0E947B297093A0 +:1019F00099006093980008C010929700109296008A +:101A00001092990010929800609131027091320208 +:101A10006F5F7F4F70933202609331022091960086 +:101A20003091970080E090E0232BF1F0C091960078 +:101A3000D09197000E94A7296B017C01BE0180E034 +:101A400090E00E94A7299B01AC0160913302709144 +:101A5000340280913502909136020E940E2920E0D6 +:101A60003FEF4FE757E410C00E94A7296B017C01AC +:101A700020E030EE4FEF54E4609133027091340275 +:101A800080913502909136020E94B92A9B01AC01E7 +:101A9000C701B6010E94B52A87FD96C080912F022A +:101AA0008F5F80932F0290E0209103033091040315 +:101AB00082179307A0F080910E03882319F01092EB +:101AC0002F020DC0809171008D7F809371008091F5 +:101AD00090008F738093900010923C027DC08091A3 +:101AE0003002C0912F02811128C0C0900803D0900D +:101AF0000903E0900A03F0900B0320E030E0A90115 +:101B0000C701B6010E94B52A1816BCF481E0809383 +:101B1000300210923702109238021092390210925D +:101B20003A02C0923302D0923402E0923502F0922F +:101B30003602C150C0932F0243C01092300210925F +:101B4000290210922802E0910503F091060348E073 +:101B5000C49FE00DF11D112480819181A281B38188 +:101B60008093370290933802A0933902B0933A02DF +:101B700020E030E040E85EE36481758186819781F2 +:101B80000E94B92A6B017C0180910A01682F70E0E4 +:101B900080E090E00E94A72920E030E048EC52E489 +:101BA0000E940E299B01AC01C701B6010E94B92A0F +:101BB000609333027093340280933502909336021F +:101BC00010923202109231028091070380FD04C00E +:101BD00010923C0210923B02FF91EF91DF91CF9166 +:101BE000BF91AF919F918F917F916F915F914F9135 +:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB +:101C00009F908F907F906F905F904F900F900FBE3E +:101C10000F901F901895CF92DF92EF92FF92CF9383 +:101C2000DF936B017C01EA0180912A02811102C0DD +:101C30000E94060A8091070380FF46C080917902C6 +:101C400090917A0208970CF03FC0809171008D7FCF +:101C50008093710080913C0281110E94200A81E0F2 +:101C600080933B02109229021092280220E030E07B +:101C7000A901C701B6010E94B52A1816DCF48091AB +:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 +:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 +:101CA000FF1FEF5BFD4FD183C083019690937A02B3 +:101CB000809379028091710082608093710080919D +:101CC0009000806880939000DF91CF91FF90EF901B +:101CD000DF90CF90089580910703817008958091DF +:101CE00007038160809307030E94C3230C94EB03D6 +:101CF000809107038E7F809307030C94C323809108 +:101D00007B0290E0019666E070E00E94872C809351 +:101D10007B02089580917B0290E0019766E070E07D +:101D20000E94872C80937B0208958F929F92AF929E +:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 +:101D4000DF936B017C01C0912802D0912902BE0172 +:101D500080E090E00E94A7294B015C01A701960159 +:101D600060E070E08CE594E40E940E299B01AC01D8 +:101D7000C501B4010E94B92A0E947B2920917B02EF +:101D8000233009F473C028F4222351F02130E9F004 +:101D90002CC1243009F4A0C0253009F4E0C025C1CD +:101DA00080E090E0A0E0BFE38093060190930701FC +:101DB000A0930801B093090110922B0210922C02FB +:101DC00010922D0210922E0210C110922B0210922E +:101DD0002C0210922D0210922E026431710540F4F3 +:101DE0006A30710560F520E030E040E85EE32BC02A +:101DF000693C710508F0AAC080E090E00E94A72924 +:101E000020E030E040EA51E40E94A52820E030E0E4 +:101E100044E353E40E940E299B01AC010E94B92ABD +:101E200020E030E040E05EE30E94B92A9B01AC0173 +:101E300060E070E080E09EE30E94A52844C020E0BE +:101E400030E040E05FE3C701B6010E94B92A6B01B0 +:101E50007C0180E090E0A0E0BEE3809306019093D7 +:101E60000701A0930801B0930901BFC010922B0293 +:101E700010922C0210922D0210922E024AE0469FE0 +:101E80009001479F300D1124C90168EB7BE00E944F +:101E9000732CBC016C5D754077FF03C07195619533 +:101EA0007109882777FD8095982F0E94A9292EE334 +:101EB00033EC4EE259E30E94B92A20E030E040ECD6 +:101EC0005EE30E94A6286093060170930701809349 +:101ED00008019093090189C010922B0210922C02E4 +:101EE00010922D0210922E02CE0183709927892B19 +:101EF000E1F0BE016170772780E090E00E94A729A1 +:101F000020E030E040E05EE30E94B92A20E030E0CB +:101F100040E45FE30E94A6286093060170930701E6 +:101F200080930801909309010CC080E090E0A0E04C +:101F3000BFE38093060190930701A0930801B0933B +:101F40000901C770DD27CD2B09F04FC010920601A3 +:101F500010920701109208011092090146C01092D8 +:101F60002B0210922C0210922D0210922E0200E0F1 +:101F700010E020E03FE30093060110930701209357 +:101F80000801309309016739710578F180E090E02C +:101F90000E94A72920E030E047E153E40E94A528F1 +:101FA00020E030E04AE754E40E940E2920E030E0CF +:101FB00048E452E40E94B92A20E030E040EA51E4CB +:101FC0000E94EB290E947629660F771F660F771F04 +:101FD000FB01EE5AFE4F2081318142815381C701BE +:101FE000B6010E94B92A6B017C01C701B601DF91DD +:101FF000CF911F910F91FF90EF90DF90CF90BF9006 +:10200000AF909F908F90089580918C020895CF9308 +:10201000DF9300D01F92CDB7DEB79C0180911303F0 +:10202000843019F593E099833B832A839093E900E8 +:102030008FEF9091E800815095FD06C095ED9A953F +:10204000F1F700008111F5CF8091E80085FF0DC008 +:1020500040E050E063E070E0CE0101960E9468121B +:102060008091E8008E778093E8000F900F900F909A +:10207000DF91CF910895CF93DF9300D01F92CDB71A +:10208000DEB720911303243021F522E029839B83BE +:102090008A8383E08093E9008FEF9091E80081507C +:1020A00095FD06C095ED9A95F1F700008111F5CFE9 +:1020B0008091E80085FF0DC040E050E063E070E0F3 +:1020C000CE0101960E9468128091E8008E7780937D +:1020D000E8000F900F900F90DF91CF91089520911D +:1020E00013032430F1F422E02093E9002FEF309124 +:1020F000E800215035FD06C035ED3A95F1F70000B6 +:102100002111F5CF2091E80025FF0BC040E050E001 +:1021100065E070E00E9468128091E8008E778093FD +:10212000E8000895CF93DF93EC019091130394306E +:1021300009F046C0809115018823D9F080911601DD +:102140008823B9F09093E9008FEF9091E8008150D7 +:1021500095FD06C095E19A95F1F700008111F5CF44 +:102160008091E80085FF2CC040E050E060E170E025 +:1021700017C081E08093E9008FEF9091E8008150D3 +:1021800095FD06C095ED9A95F1F700008111F5CF08 +:102190008091E80085FF14C040E050E068E070E006 +:1021A000CE010E9468128091E8008E778093E8004B +:1021B00080E1FE01ACE7B2E001900D928A95E1F773 +:1021C000DF91CF91089580911203811109C00E947F +:1021D000FD130E945A148091E20084608093E20013 +:1021E0000895109212030895089508950C94A12261 +:1021F00042E061EC81E00E94771342E061EC82E012 +:102200000E94771342E061EC83E00E94771342E181 +:1022100061EC84E00C94771380911503833009F40A +:1022200055C030F4813071F0823009F48EC00895C9 +:102230008A3009F47AC08B3009F460C0893009F023 +:102240009CC020C080911403813A09F096C080910F +:10225000E800877F8093E80080911803909119032C +:10226000892B21F460E18CE792E003C060E080E01C +:1022700090E070E00E94B3128091E8008B77809329 +:10228000E800089580911403813209F076C08091AE +:10229000180390911903009719F0039709F06DC086 +:1022A0008091E800877F8093E8008091E80082FDBC +:1022B00005C0809113038111F8CF5FC08091F100B8 +:1022C00080938C028091E8008B7753C08091140337 +:1022D000813A09F052C08091180390911903892B1B +:1022E00009F04BC08091E800877F8093E8008091DF +:1022F000E80080FFFCCF8091150136C08091140367 +:102300008132D9F58091180390911903892BA9F591 +:102310008091E800877F8093E8000E94AC13809151 +:102320001603809315010C94E21B809114038132F3 +:1023300021F58091E800877F8093E8000E94AC132C +:102340008091170380938D02089580911403813A40 +:10235000A1F48091E800877F8093E8008091E800F5 +:1023600080FFFCCF80918D028093F1008091E80086 +:102370008E778093E8000C94AC13089584B7877F20 +:1023800084BF88E10FB6F8948093600010926000DB +:102390000FBE90E080E80FB6F894809361009093B0 +:1023A00061000FBE0E944F170E94FD130E945A1435 +:1023B0008091E20084608093E20078940E94E016AD +:1023C0000E9451178BE091E00E94FB16809113034D +:1023D000853069F40E946222809111038823B1F351 +:1023E0000E949022882391F30E945212EFCF0E9404 +:1023F0005917ECCF292F332723303105C9F064F466 +:102400002130310581F02230310509F043C08DE6DD +:1024100090E022EB33E042C021323105F1F022326C +:10242000310541F137C082E190E02FE134E036C060 +:1024300099278130910541F08230910541F0892B37 +:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 +:10245000F3E0849190E09F0121C06430D8F4E62F2E +:10246000F0E0EE0FFF1FE255FE4F2081318189E041 +:1024700090E014C0643070F470E0FB01EE0FFF1FB9 +:10248000EA55FE4F20813181FB01EE55FE4F8081E0 +:1024900090E004C080E090E020E030E0FA01318379 +:1024A0002083089580E189BD82E189BD09B400FEE1 +:1024B000FDCF8091D8008F7D8093D8008091E0007F +:1024C00082608093E0008091E00081FDFCCF089560 +:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 +:1024E000EC018B016A010E94CB13811133C0C1142E +:1024F000D10439F0F60180819181081B190BC80FB6 +:10250000D91FE12CF12C0115110519F18091E8007A +:1025100085FD16C08091E8008E778093E800C11495 +:10252000D10449F0F60180819181E80EF91EF18213 +:10253000E08285E00FC00E94CB13882321F30AC0FC +:1025400089918093F10001501109FFEFEF1AFF0A02 +:10255000DACF80E0DF91CF911F910F91FF90EF9044 +:10256000DF90CF90089520911A0330911B03261716 +:10257000370748F06115710539F42091E8002E778E +:102580002093E80001C0B90140E061157105A9F18F +:1025900020911303222309F443C0253009F442C0DB +:1025A0002091E80023FD40C02091E80022FD32C0C8 +:1025B0002091E80020FFE9CF4091F3002091F20044 +:1025C00030E0342BFC01CF016115710559F0283042 +:1025D000310540F481918093F100615071092F5FC2 +:1025E0003F4FF1CF41E02830310509F040E0209124 +:1025F000E8002E772093E800C8CF4111C9CF0AC068 +:1026000080911303882361F0853061F08091E800A8 +:1026100083FD0AC08091E80082FFF2CF80E0089538 +:1026200082E0089583E0089581E0089520911A03DF +:1026300030911B032617370748F06115710539F4EF +:102640002091E8002E772093E80001C0B901FC0139 +:1026500020E06115710591F180911303882309F43D +:1026600040C0853009F43FC08091E80083FD3DC043 +:102670008091E80082FD2FC08091E80080FFE9CFC3 +:102680002091F3008091F20090E0922B611571058A +:1026900059F08830910540F424912093F10031964F +:1026A000615071090196F2CF21E0089709F020E00E +:1026B0008091E8008E778093E800CBCF2111CCCFBA +:1026C0000AC080911303882361F0853061F0809106 +:1026D000E80083FD0AC08091E80082FFF2CF80E02D +:1026E000089582E0089583E0089581E00895982F89 +:1026F000973058F59093E900981739F07091EC00F5 +:102700002091ED005091F00003C0242F762F50E06F +:1027100021FF19C03091EB003E7F3093EB003091E8 +:10272000ED003D7F3093ED003091EB003160309350 +:10273000EB007093EC002093ED005093F00020919B +:10274000EE0027FF07C09F5FD3CF8F708093E90013 +:1027500081E0089580E008958091140387FF11C0FF +:102760008091E80082FD05C0809113038111F8CFAC +:1027700011C08091E8008B770BC0809113038823F0 +:1027800049F08091E80080FFF8CF8091E8008E77D3 +:102790008093E80008952091E4003091E50095E6EB +:1027A0004091EC00842F817040FF22C08091E800AE +:1027B00080FD1CC080911303882391F0853091F037 +:1027C0008091EB0085FD10C04091E4005091E50040 +:1027D0004217530729F39A01915011F784E00895A5 +:1027E00082E0089583E0089581E0089580E00895EF +:1027F0004091E80042FFDECF08950E946B140E94D2 +:102800007314E0EEF0E0808181608083E8EDF0E019 +:1028100080818F77808319BCA7EDB0E08C918E7F8B +:102820008C9380818F7E80831092120308950F9382 +:102830001F93CF93DF930E946B140E947314C8ED13 +:10284000D0E088818F7788838881806888838881B9 +:102850008F7D888319BC1092130310920F0310927E +:1028600011031092100300EE10E0F80180818B7FBD +:10287000808388818160888342E060E080E00E94FC +:102880007713E1EEF0E080818E7F8083E2EEF0E06E +:10289000808181608083808188608083F80180816D +:1028A0008E7F8083888180618883DF91CF911F91A3 +:1028B0000F910895E8EDF0E080818F7E8083E7ED51 +:1028C000F0E080818160808384E082BF81E080933A +:1028D00012030C941714E8EDF0E080818E7F808362 +:1028E0001092E20008951092DA001092E10008952B +:1028F0001F920F920FB60F9211242F933F934F9375 +:102900005F936F937F938F939F93AF93BF93EF9357 +:10291000FF938091E10082FF0BC08091E20082FF73 +:1029200007C08091E1008B7F8093E1000E94DF1659 +:102930008091DA0080FF1FC08091D80080FF1BC00B +:102940008091DA008E7F8093DA008091D90080FF39 +:102950000DC080E189BD82E189BD09B400FEFDCFD3 +:1029600081E0809313030E94E31005C019BC10920C +:1029700013030E94F1108091E10080FF19C0809143 +:10298000E20080FF15C08091E2008E7F8093E2001C +:102990008091E20080618093E2008091D8008062A3 +:1029A0008093D80019BC85E0809313030E94F51032 +:1029B0008091E10084FF30C08091E20084FF2CC050 +:1029C00080E189BD82E189BD09B400FEFDCF80911F +:1029D000D8008F7D8093D8008091E1008F7E809316 +:1029E000E1008091E2008F7E8093E2008091E2001E +:1029F00081608093E20080910F03882311F084E0CE +:102A000007C08091E30087FD02C081E001C083E040 +:102A1000809313030E94F6108091E10083FF29C088 +:102A20008091E20083FF25C08091E100877F809341 +:102A3000E10082E08093130310920F038091E10084 +:102A40008E7F8093E1008091E2008E7F8093E20090 +:102A50008091E20080618093E20042E060E080E0EB +:102A60000E9477138091F00088608093F0000E94AC +:102A7000F410FF91EF91BF91AF919F918F917F9152 +:102A80006F915F914F913F912F910F900FBE0F90DB +:102A90001F9018951F920F920FB60F9211242F932B +:102AA0003F934F935F936F937F938F939F93AF93D6 +:102AB000BF93CF93DF93EF93FF93C091E900CF7063 +:102AC0008091EC00D82FD17080FDD0E81092E90001 +:102AD0008091F000877F8093F00078940E948E159B +:102AE0001092E9008091F00088608093F000CD2B77 +:102AF000CF70C093E900FF91EF91DF91CF91BF912B +:102B0000AF919F918F917F916F915F914F913F9185 +:102B10002F910F900FBE0F901F9018951F93CF937A +:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E +:102B3000CDBFE4E1F3E088E08E0F9091F100919336 +:102B40008E13FBCF0E940C118091E80083FF1FC100 +:102B50008091140390911503492F50E04A3051059C +:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB +:102B700081F0823809F00BC1809118038F70809327 +:102B8000E9008091EB0085FB882780F91092E9002D +:102B900006C0809110039091110391118260909171 +:102BA000E800977F9093E8008093F1001092F10085 +:102BB000C8C0282F2D7F09F0EAC0882319F0823081 +:102BC00061F0E5C080911603813009F0E0C09330D8 +:102BD00009F080E0809311032BC0809116038111CE +:102BE00027C0809118038F7009F4D1C08093E90049 +:102BF0002091EB0020FF1CC0933021F48091EB006A +:102C0000806214C09091EB0090619093EB0021E002 +:102C100030E0A90102C0440F551F8A95E2F74093A6 +:102C2000EA001092EA008091EB0088608093EB004C +:102C30001092E9008091E800877F86C08111A7C0CB +:102C4000109116031F778091E3008078812B809389 +:102C5000E3008091E800877F8093E8000E94AC1336 +:102C60008091E80080FFFCCF8091E3008068809332 +:102C7000E300111102C082E001C083E080931303DE +:102C800086C08058823008F082C0809116039091EF +:102C900017038C3D53E0950779F583E08A838AE238 +:102CA00089834FB7F894DE01139620E03EE051E2AD +:102CB000E32FF0E050935700E49120FF03C0E2952A +:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 +:102CD00001C0C0968D939D932F5F243149F74FBF5C +:102CE0008091E800877F8093E8006AE270E0CE017F +:102CF00001960E94B31214C0AE014F5F5F4F609106 +:102D000018030E94FA11BC01009709F440C0909189 +:102D1000E800977F9093E80089819A810E941613BA +:102D20008091E8008B778093E80031C0803879F596 +:102D30008091E800877F8093E80080910F03809363 +:102D4000F1008091E8008E778093E8000E94AC1338 +:102D50001EC081111CC0909116039230C0F4809166 +:102D6000E800877F8093E80090930F030E94AC13E4 +:102D700080910F03811106C08091E30087FD02C09E +:102D800081E001C084E0809313030E94F8108091D9 +:102D9000E80083FF0AC08091E800877F8093E80005 +:102DA0008091EB0080628093EB00AA960FB6F894B6 +:102DB000DEBF0FBECDBFDF91CF911F910895089563 +:102DC000CF93809113038823A1F0C091E900CF70C5 +:102DD0009091EC00892F817090FD80E8C82B1092B3 +:102DE000E9008091E80083FD0E948E15CF70C093AA +:102DF000E900CF91089590939302809392020895F1 +:102E0000E0919202F0919302309721F00190F081CD +:102E1000E02D099480E00895E0919202F0919302F0 +:102E2000309721F00280F381E02D09940895E0911C +:102E30009202F0919302309721F00480F581E02D09 +:102E4000099408952091900230919102821793077E +:102E500071F09093910280939002E0919202F09130 +:102E60009302309721F00680F781E02D09940895B0 +:102E700020918E0230918F028217930771F0909308 +:102E80008F0280938E02E0919202F091930230972C +:102E900021F00084F185E02D0994089508950C94A3 +:102EA0004E170E94D5220E9426090E945B230C9493 +:102EB0000A285F926F927F928F929F92AF92BF92F9 +:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 +:102ED00000D000D01F92CDB7DEB70E946B099DE9EC +:102EE000C92E92E0D92E03E010E0AA24A394B12CBD +:102EF000502E802F0E94E6094C01F60172906290DC +:102F00006F016826792661147104A1F4015011093A +:102F100078F78FEF89838A831B820E94DE2281608B +:102F2000782F9D838C8349815A816B818D810E948A +:102F3000091838C08091F20281FD0E94EF092BE050 +:102F400030E07501022E02C0EE0CFF1C0A94E2F77D +:102F5000C70186219721892B09F129835A828E2066 +:102F60009F2091E0892809F490E09B830E94DE2253 +:102F70008160782F9D838C8349815A816B818D81FB +:102F80000E940918000F111FF801EB56FD4F8081B8 +:102F90009181E826F926F182E08204C021503109AE +:102FA00080F6B4CF0E944225109194020E9400172F +:102FB0001817D1F00E940017809394020F900F9081 +:102FC0000F900F900F90DF91CF911F910F91FF9075 +:102FD000EF90DF90CF90BF90AF909F908F907F90B9 +:102FE0006F905F900C9410090F900F900F900F90BE +:102FF0000F90DF91CF911F910F91FF90EF90DF9095 +:10300000CF90BF90AF909F908F907F906F905F9088 +:103010000895CF93DF93CDB7DEB72B970FB6F89413 +:10302000DEBF0FBECDBF4F83588769877A878B87F6 +:10303000DE01119686E0FD0111928A95E9F785E09F +:10304000FE01379601900D928A95E1F749815A81E8 +:103050006B817C818D819E810E94801E2B960FB694 +:10306000F894DEBF0FBECDBFDF91CF910895CF930F +:10307000882309F4C2C0C82F823859F40E9400176F +:1030800081FDBBC089E30E945A210E94272289E367 +:103090000CC0833879F40E94001780FDAEC083E530 +:1030A0000E945A210E94272283E50E949C21CF91F1 +:1030B0000C942722843859F40E94001782FD9DC089 +:1030C00087E40E945A210E94272287E4EECF8CEFEA +:1030D0008C0F813A48F48C2F0E94722781118DC089 +:1030E0008C2F0E945A21E3CF80E28C0F883048F465 +:1030F000C77081E001C0880FCA95EAF70E94E021FD +:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 +:1031100031F083E890E005C081E890E002C082E8E9 +:1031200090E0CF910C94221788E58C0F833108F042 +:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 +:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 +:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 +:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 +:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B +:1031800090E038C082EE90E035C089EE90E032C029 +:103190008AEE90E02FC085EB90E02CC086EB90E0AB +:1031A00029C087EB90E026C08CEC90E023C08DEC2A +:1031B00090E020C083E891E01DC08AE891E01AC049 +:1031C00082E991E017C084E991E014C081E292E0C5 +:1031D00011C083E292E00EC084E292E00BC085E26F +:1031E00092E008C086E292E005C087E292E002C069 +:1031F0008AE292E0CF910C943817CF9108958823FA +:1032000009F44BC0823859F40E94001781FF45C071 +:1032100089E30E945A210E94272289E30CC0833847 +:1032200071F40E94001780FF38C083E50E945A2184 +:103230000E94272283E50E949C210C942722843837 +:1032400059F40E94001782FF28C087E40E945A2187 +:103250000E94272287E4EFCF9CEF980F913A58F312 +:1032600090E2980F983050F4877091E001C0990F68 +:103270008A95EAF7892F0E94E621DFCF9BE5980F18 +:10328000933020F480E090E00C942217885A833128 +:1032900020F480E090E00C9438170895882321F002 +:1032A0000E94E0210C9427220895882321F00E9497 +:1032B000E6210C94272208957F928F929F92AF92DD +:1032C000BF92CF92DF92EF92FF920F931F93CF9313 +:1032D000DF931F92CDB7DEB77C01C62E772EFC019F +:1032E000058102950F70128111110E94FD210E942B +:1032F0005321882379F0112369F080E28C0D883006 +:1033000048F082E00E943C210E94532191E0D82E97 +:10331000D92601C0D12CE72DE295EF70F0E0E05AFC +:10332000FF4F0C949B2C872D807F072D0F708823D7 +:1033300011F00295007F112389F0002309F499C14F +:1033400080E28C0D883020F4802F0E94E02103C0A1 +:10335000802F0E94F0210E9427228BC18C2D0E9479 +:10336000FF18002309F4C3C180E28C0D883020F4DB +:10337000802F0E94E62103C0802F0E94F6210E9428 +:103380002722B5C1872D807F972D9F70803211F441 +:10339000892F03C0892F8295807FCC2021F0F1E016 +:1033A000CF16A1F01DC0112339F0002319F101300F +:1033B00009F50E9410229BC1002319F0013009F485 +:1033C00096C189830E941322898110C1112321F0A3 +:1033D000063008F08CC10EC0053008F088C106C167 +:1033E000112359F0002331F0F701958190FF41C17D +:1033F0009F7095830E944E197AC1002309F4F6C08C +:103400003EC1872D86958695837090E0009719F0D0 +:10341000019761F06CC1112321F08C2D972D9370D1 +:1034200002C080E090E00E94221761C1112321F0C8 +:103430008C2D972D937002C080E090E00E94381789 +:1034400056C18C2D112319F00E944A2402C00E94FB +:10345000B2240E9437254BC1872D837009F052C0DA +:10346000111145C18C2D829586958770880F880F24 +:103470009C2D9F70892E912CA12CB12C082E04C05C +:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 +:103490000FE010E020E030E0B901A80104C0440FC3 +:1034A000551F661F771F8A95D2F7CB01BA01609529 +:1034B00070958095909503C060E070E0CB01272D5A +:1034C00026952695237030E02230310569F02330AF +:1034D000310589F0682979298A299B29213031050C +:1034E00071F00E94C81F03C1682979298A299B2984 +:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 +:10350000AC1FF5C0112319F0872D817001C086957D +:10351000882309F4ECC08C2D829586958770880FDE +:10352000880F9C2D9F70892E912CA12CB12C082ED8 +:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 +:1035400014C00FE010E020E030E0B901A80104C091 +:10355000440F551F661F771F8A95D2F7CB01BA011A +:10356000609570958095909503C060E070E0CB0108 +:10357000272D269526952370422F50E04230510585 +:1035800069F04330510589F0682979298A299B29F6 +:103590004130510571F00E94A220A9C06829792903 +:1035A0008A299B290E94BE20A2C00E94A220C50198 +:1035B000B4010E9486209BC08C2D90E0FC01E05E4F +:1035C000F109E531F10508F050C0E059FF4F0C94C6 +:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 +:1035E0001F20802F07CF0E944020802F0E94551956 +:1035F0007EC0112341F0053008F079C0872D8F710E +:103600000E94652074C0063008F071C0F7CF112306 +:1036100039F0872D8F710E941F2069C01123C9F3D3 +:10362000872D8F710E94402062C0112329F0872DC1 +:103630008F710E940A205BC00E94002058C0112395 +:1036400051F0172D1F71812F0E941F2063E0812FE1 +:103650000E9433214CC081E00E943C21023008F4DA +:1036600046C082E00E943C2142C0112331F0002379 +:1036700081F28C2D0E9437183AC0002389F28C2DDC +:103680000E94FF1834C0472D4F706C2DC7010E9457 +:10369000EE050E94241F2BC0111129C0472D4F7029 +:1036A00050E042305105B9F04CF44115510581F01C +:1036B00041305105E1F40E94322819C043305105D0 +:1036C00069F04430510599F48C2D0E9484280FC074 +:1036D0000E941B280CC00E944E2809C00E9461282D +:1036E00006C0472D4F706C2DC7010E94F105DD20EB +:1036F000F9F00E942F2180FD1BC0F70112820E9469 +:1037000029210E941F20C7010E94A71B0E94292176 +:103710000F90DF91CF911F910F91FF90EF90DF906D +:10372000CF90BF90AF909F908F907F900C9440204F +:103730000F90DF91CF911F910F91FF90EF90DF904D +:10374000CF90BF90AF909F908F907F9008950F93F0 +:103750001F93CF93DF93EC01888199812B813C816A +:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 +:10377000ED03882371F0688179818A810E94252177 +:103780008C010E94DA200E94A11FB801CE010E9484 +:103790005C19DF91CF911F910F9108950E94FD2137 +:1037A0000E940D220E94D2210E9427220E94E82519 +:1037B0000E94372580E090E00E94221780E090E090 +:1037C0000C9438170E94ED210C94CE1B0E941A21F4 +:1037D000292F22952F7030E02C3031054CF42A30FF +:1037E00031056CF42250310922303105A8F407C0AC +:1037F0002C30310569F02F30310551F00DC0803F7C +:1038000069F018F4803E40F409C0843F29F406C0F2 +:1038100093FB882780F9089580E0089581E008955A +:10382000CF93DF9300D000D01F92CDB7DEB70F90BB +:103830000F900F900F900F90DF91CF910895CF933D +:10384000DF9300D000D000D0CDB7DEB726960FB6FC +:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 +:10386000CF93DF93C0919D0216E080919E02C8170E +:1038700099F0D0E01C9FF0011D9FF00D1124E1563E +:10388000FD4F4081518162817381848195810E94C5 +:103890001F1C2196C770E9CFDF91CF911F9108952A +:1038A0004091CF025091D0026091D1027091D2022A +:1038B0008091D3029091D4020C941F1C8091D40269 +:1038C00082958F7009F054C08091D102882309F449 +:1038D0004FC080919D02A0919E026091CF02709195 +:1038E000D0024091D2025091D302B6E08A1709F477 +:1038F0003FC090E041155105C1F17F3F11F46F3F8A +:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 +:10391000218172132AC02081621327C022812111C4 +:1039200024C0238134812417350710F42150310934 +:10393000241B350B283C3105C0F42091D4022F7094 +:1039400020612093D40226E0289FF001299FF00DEA +:103950001124EC55FD4F80818F70806180838FEC46 +:1039600092E00E94A71B0C942F1C01968770BECF7B +:103970000895CF92DF92EF92FF920F931F93CF9310 +:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 +:10399000CDBF8C0185E0F801DE011D9601900D92EE +:1039A0008A95E1F7D8014C9111965C911197129686 +:1039B0006C9112971396CD90DC9014973091CF02B2 +:1039C0007091D0028091D2029091D302009709F4B5 +:1039D0006BC17F3F19F43F3F09F466C1E090D1020B +:1039E000EE2009F4C0C02091D402C816D90628F0F0 +:1039F000F601E81BF90BCF0104C0809590958C0D62 +:103A00009D1DFF24F394883C910578F0F12C207FD4 +:103A100009F0C6C07C2DD98AC88A89890E94101CE9 +:103A20008FEC92E00E94A71BB1C0822F807F09F02B +:103A300046C0751314C0341312C0611110C02F702A +:103A400020612093D4020E94501C8FEC92E00E94CF +:103A5000A71B8091D402D80115968C932EC0CD2837 +:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 +:103A700080919D0220919E0236E0821709F45AC07F +:103A800090E0389FF001399FF00D1124E156FD4F71 +:103A90007181571306C07081471303C07281711181 +:103AA00003C001968770E9CFF62E662309F418C18A +:103AB0008091D40281608093D402F12C11C17513DE +:103AC00008C0341306C0611104C08091D402D8012B +:103AD000C3C04D875E878D859E856A8B0E94E61BDD +:103AE0006A898823E1F16623D1F12091D402822FE3 +:103AF00082958F7090E0029774F08091CF02909140 +:103B0000D00298878F831986DB86CA862C87CE01E0 +:103B100007960E94A71B86E0F801AFECB2E0019087 +:103B20000D928A95E1F70E945E1C0E94501CFF24B2 +:103B3000F394D6C04D875E878D859E850E941A219D +:103B4000292F22952F7030E0223031050CF0BCC0B7 +:103B50009F7009F0B6C0805E883008F4C1C0C8010B +:103B60000E94A71BE4CFC816D90608F453C0F6017B +:103B7000E81BF90BCF01883C910508F450C0F12CEB +:103B80007C2DD98AC88A89890E94101CEFECF2E04A +:103B900086E0DF011D928A95E9F70E94501CA0C0C3 +:103BA000751314C0341312C0611110C08091D40277 +:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 +:103BC000DF011D928A95E9F7FE2C8AC04D875E873A +:103BD0008D859E856A8B0E94E61B6A89882309F47D +:103BE000BECF662309F4BBCF2091D402822F8295E9 +:103BF0008F7090E002970CF48ECF8091CF0290915D +:103C0000D0029A8389831B82DD82CC822E83CE01EF +:103C100001967FCF809590958C0D9D1DACCFF62E93 +:103C2000662309F49CCF75132EC034132CC0209149 +:103C3000D40220FD1FC0822F82958F70D9F0D80149 +:103C400015962C9315978F3049F08F5F982F92958A +:103C5000907F822F8F70892B15968C93C8010E94BC +:103C6000A71B86E0F801AFECB2E001900D928A95B7 +:103C7000E1F793CF86E0F801AFECB2E001900D924E +:103C80008A95E1F72DC04D875E878D859E850E94C0 +:103C9000E61B811140CF8091D40281608093D402D1 +:103CA000C8010E94A71B1CC0662309F458CF4D878A +:103CB0005E878D859E850E94E61B882309F44FCF81 +:103CC0002ACF811148CF0CC0243031050CF047CFEA +:103CD0009F7009F440CFF8019581907F09F03BCFA8 +:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 +:103CF000CF911F910F91FF90EF90DF90CF9008959B +:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 +:103D1000DEBF0FBECDBF4F83588769877A878B87F9 +:103D20009C87CE0107960E94B91C882369F08F8179 +:103D300098852A853B85232BF1F19F3F09F063C0CD +:103D40008F3F09F060C037C086E0FE013796DE0184 +:103D5000119601900D928A95E1F76F817885EA8539 +:103D6000FB85309741F17F3F11F46F3F21F12091A6 +:103D70009E0230E0C90101968770992740919D020B +:103D800050E08417950709F447C069837A83FD835F +:103D9000EC8396E0929FD001939FB00D1124A15621 +:103DA000BD4FFE01319601900D929A95E1F78093F7 +:103DB0009E020E942F1C16E080919D0290919E020F +:103DC0008917C1F1189FC001112481569D4F0E948F +:103DD000B91C882379F1E0919D021E9FF001112406 +:103DE000E156FD4F408151816281738184819581CB +:103DF0000E941F1C80919D0290E001968770992778 +:103E000080939D02D9CF4F81588569857A858B85AE +:103E10009C850E941F1CCFCF0E94E21B10929E0225 +:103E200010929D02EFECF2E086E0DF011D928A9590 +:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 +:103E4000DF91CF911F910895EF92FF920F931F93EF +:103E5000CF93DF938C01009709F46CC0F12CEE2412 +:103E6000E394E8012196F8018491843740F484308A +:103E700008F051C0813081F0823019F15BC0853784 +:103E800009F444C0A8F19CE7980F903708F052C09D +:103E90008F770E94FF1841C00E5F1F4FFE01C49133 +:103EA00080E28C0F883048F4C7708E2D01C0880FD7 +:103EB000CA95EAF70E94002214C08C2F0E9437187E +:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 +:103ED00058F4C7708E2D01C0880FCA95EAF70E946A +:103EE00006220E9427221AC08C2F0E94FF1816C09B +:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C +:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 +:103F1000FE01F49003C00E9437188E018F2D882374 +:103F200009F49FCFEFE9FFE03197F1F700C00000FF +:103F30008150F5CFDF91CF911F910F91FF90EF90BE +:103F4000089508956093D9027093DA028093DB029A +:103F50009093DC020C94CE1B0F931F930091D90217 +:103F60001091DA022091DB023091DC02DC01CB01FE +:103F7000802B912BA22BB32B8093D9029093DA0242 +:103F8000A093DB02B093DC021F910F910C94CE1B27 +:103F90000F931F930091D9021091DA022091DB0256 +:103FA0003091DC02DC01CB0180239123A223B323D7 +:103FB0008093D9029093DA02A093DB02B093DC02E3 +:103FC0001F910F910C94CE1B0F931F930091D90258 +:103FD0001091DA022091DB023091DC02DC01CB018E +:103FE00080279127A227B3278093D9029093DA02E2 +:103FF000A093DB02B093DC021F910F910C94CE1BB7 +:104000001092D5021092D6021092D7021092D802C6 +:104010000C94CE1B41E050E060E070E004C0440F1F +:10402000551F661F771F8A95D2F74093D50250938C +:10403000D6026093D7027093D8020C94CE1B41E055 +:1040400050E060E070E004C0440F551F661F771F0A +:104050008A95D2F78091D5029091D602A091D7028D +:10406000B091D802482B592B6A2B7B2B4093D50259 +:104070005093D6026093D7027093D8020C94CE1B53 +:1040800041E050E060E070E004C0440F551F661F3F +:10409000771F8A95D2F740955095609570958091DD +:1040A000D5029091D602A091D702B091D8024823B0 +:1040B00059236A237B234093D5025093D602609301 +:1040C000D7027093D8020C94CE1B41E050E060E020 +:1040D00070E004C0440F551F661F771F8A95D2F702 +:1040E0008091D5029091D602A091D702B091D802CA +:1040F000482759276A277B274093D5025093D60239 +:104100006093D7027093D8020C94CE1B0F931F9329 +:104110000091D5021091D6022091D7023091D80299 +:10412000DC01CB01802B912BA22BB32B8093D502EA +:104130009093D602A093D702B093D8021F910F910B +:104140000C94CE1B0F931F930091D5021091D602B1 +:104150002091D7023091D802DC01CB01802391233A +:10416000A223B3238093D5029093D602A093D702C3 +:10417000B093D8021F910F910C94CE1B0F931F93F5 +:104180000091D5021091D6022091D7023091D80229 +:10419000DC01CB0180279127A227B3278093D5028A +:1041A0009093D602A093D702B093D8021F910F919B +:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 +:1041C0001F93CF93DF938C01C090D902D090DA0275 +:1041D000E090DB02F090DC028091D5029091D60253 +:1041E000A091D702B091D802C82AD92AEA2AFB2A7C +:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B +:10420000979587950A94D2F780FF06C0B8018C2F46 +:104210000E947608019721F4219760F780E001C0A1 +:104220008C2FDF91CF911F910F91FF90EF90DF9036 +:10423000CF900895CF93DF93EC010E94DB20BE0165 +:104240000E947608DF91CF910895CB010E941A2138 +:1042500008958091DD0285958595859508958091D5 +:10426000DD028770089598E0899F90011124262B24 +:104270002093DD020C941F202091DD028095822383 +:104280008093DD02982F977069F430E0482F55270E +:1042900047FD50952417350729F085958595859517 +:1042A0000C94402008959091DD02977081E009F40C +:1042B00080E0089590911501992321F090911601C5 +:1042C000911109C02091170130911801F90132961E +:1042D0009FEF40E01FC0982F9695969596959F303A +:1042E00050F5E0911701F0911801E90FF11D877069 +:1042F00021E030E0A90102C0440F551F8A95E2F782 +:10430000CA019181892B818308959F3F39F04F5FC6 +:104310004E3041F051915813F8CF0DC05111F7CFE5 +:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B +:10433000FA9582830895089590911501992321F0AB +:1043400090911601911109C0209117013091180127 +:10435000F9013296205F3F4F1FC0982F9695969592 +:1043600096959F30F0F4E0911701F0911801E90F54 +:10437000F11D877021E030E0A90102C0440F551FF4 +:104380008A95E2F7CA0180959181892381830895F6 +:104390003196E217F30729F090819813F9CF108234 +:1043A000F7CF089581E090E0E0911701F0911801B6 +:1043B000E80FF91F1082019680319105A9F7089541 +:1043C0009091F102892B8093F1020895809590914C +:1043D000F10289238093F10208951092F102089569 +:1043E0009091F002892B8093F0020895809590912E +:1043F000F00289238093F00208951092F00208954C +:104400009091EF02892B8093EF020895809590910F +:10441000EF0289238093EF0208951092EF0208952E +:104420008093DE0208951092DE02089580911701B4 +:1044300090911801FC0131969C01205F3F4F80E074 +:10444000919191118F5FE217F307D1F70895E091F1 +:104450001701F09118018091F1028083E09117011A +:10446000F091180190818091F002892B8083E09176 +:104470001701F091180190818091EF02892B8083C0 +:104480008091DE02882361F0E0911701F09118011C +:104490009081892B80830E94162281111092DE0266 +:1044A00080911701909118010C940C1720E000974F +:1044B00039F0AC0141505109842395232F5FF7CF88 +:1044C000822F089580911303843039F11092F30202 +:1044D00020E488E190E00FB6F894A89580936000FE +:1044E0000FBE2093600080E00E94F10280E00E94F5 +:1044F000100983B7817F846083BF83B7816083BFE6 +:104500007894889583B78E7F83BF88E10FB6F8943F +:1045100080936000109260000FBE08950895089582 +:1045200080E00E94F1020E948E220E946B090E948C +:104530008F220E94F00991E0811101C090E0892F43 +:1045400008950E94E21B80E00E94F1020E940A2866 +:104550000E9400170C9410091F920F920FB60F9231 +:1045600011248F939F93AF93BF938091F302811196 +:1045700013C08091F4029091F502A091F602B091DF +:10458000F7024196A11DB11D8093F4029093F502AC +:10459000A093F602B093F702BF91AF919F918F91D4 +:1045A0000F900FBE0F901F90189582E084BD93E08E +:1045B00095BD9AEF97BD80936E0008952FB7F8943C +:1045C0008091F4029091F502A091F602B091F70269 +:1045D0002FBF0895CF92DF92EF92FF920F931F9318 +:1045E0002FB7F8944091F4025091F5026091F602D1 +:1045F0007091F7022FBF6A017B01EE24FF248C012A +:1046000020E030E0C016D106E206F30610F4415077 +:1046100051099A01281B390BC9011F910F91FF9075 +:10462000EF90DF90CF9008951F920F920FB60F92E8 +:1046300011248F939F93AF93BF938091F402909135 +:10464000F502A091F602B091F7020196A11DB11DED +:104650008093F4029093F502A093F602B093F702D0 +:10466000BF91AF919F918F910F900FBE0F901F90B0 +:1046700018950E94FD13F8942FEF87EA91E62150D8 +:1046800080409040E1F700C0000087E090EBDC0143 +:1046900080931E0390931F03A0932003B0932103E4 +:1046A0009CE088E10FB6F894A895809360000FBE57 +:1046B00090936000FFCF0E949A23811102C00E9454 +:1046C00076230E94A5238093F2020E94AD2380935B +:1046D0001C0387FB882780F9809316010E94A92379 +:1046E000682F70E080E090E00C94A21F6DEE7EEFEA +:1046F00080E090E00E94C12C60E082E090E00E94A7 +:10470000AF2C60E083E090E00E94AF2C60E084E09A +:1047100090E00E94AF2C60E085E090E00E94AF2C1A +:1047200060E086E090E00E94AF2C6FEF87E090E0C1 +:104730000C94AF2C80E090E00E94A92C21E08D3EEB +:104740009E4F09F020E0822F089582E090E00C94C3 +:10475000A12C83E090E00C94A12C84E090E00C94D8 +:10476000A12C682F84E090E00C94AF2C86E090E0C0 +:104770000C94A12C682F86E090E00C94AF2C87E07D +:1047800090E00C94A12C682F87E090E00C94AF2C63 +:104790008091FA0280FF0BC060911C0185E0689F48 +:1047A000B001112475956795759567952BC081FFAC +:1047B00009C060911C0185E0689FB00111247595C6 +:1047C000679520C082FF07C060911C0185E0689F4B +:1047D000B001112417C09091FB029923D1F0609190 +:1047E0001B01961788F720911C0185E0289F9001F6 +:1047F0001124929FA001939F500D112470E0CA01D3 +:104800000E94872C6038710540F46115710539F0FC +:1048100002C065E070E0862F08958FE7089581E07B +:1048200008958091FA0280FF08C060911A0170E03B +:10483000759567957595679521C081FF06C0609154 +:104840001A0170E07595679519C082FF04C06091E8 +:104850001A0170E010C09091FB029923C1F06091A1 +:1048600019019617A0F780911A01899FC0011124A0 +:1048700070E00E94872C6038710528F4611571057D +:1048800021F0862F08958FE7089581E0089561E073 +:1048900070E0F4CF803F21F40E94C823819504C0CA +:1048A000813F29F40E94C8238093FE020895823F2D +:1048B00021F40E94C823819504C0833F29F40E94FB +:1048C000C8238093FD020895893F19F40E941124A2 +:1048D00005C08A3F31F40E94112481958093FF0224 +:1048E00008958B3F21F40E941124819504C08C3FD0 +:1048F00029F40E941124809300030895843F21F439 +:104900008091FC02816017C0853F21F48091FC02F8 +:10491000826011C0863F21F48091FC0284600BC04C +:10492000873F21F48091FC02886005C0883F31F404 +:104930008091FC0280618093FC0208958D3F21F4F8 +:104940008091FA0281600BC08E3F21F48091FA02BF +:10495000826005C08F3F29F48091FA0284608093C1 +:10496000FA020895803F39F48091FE0287FF6CC0FF +:104970001092FE0269C0813F29F48091FE02181650 +:10498000BCF362C09091FD02823F29F497FF5CC0A6 +:104990001092FD0259C0833F19F41916CCF354C08C +:1049A000893F41F48091FF0218160CF04DC010921F +:1049B000FF024AC08A3F29F48091FF0287FF44C06A +:1049C000F6CF8B3F39F48091000387FF3DC01092F2 +:1049D00000033AC08C3F29F4809100031816BCF301 +:1049E00033C0843F21F48091FC028E7F17C0853F45 +:1049F00021F48091FC028D7F11C0863F21F48091CB +:104A0000FC028B7F0BC0873F21F48091FC02877FE3 +:104A100005C0883F31F48091FC028F7E8093FC02B8 +:104A200013C08D3F21F48091FA028E7F0BC08E3F20 +:104A300021F48091FA028D7F05C08F3F29F4809187 +:104A4000FA028B7F8093FA028091FD0281110EC0E1 +:104A50008091FE0281110AC08091FF02811106C07F +:104A600080910003811102C01092FB0208958CEF27 +:104A700092E00E9417170E94DE229093F902809321 +:104A8000F80208951F93CF93DF938091F8029091DD +:104A9000F9020E94EA22AC019091FB02992321F0D5 +:104AA00020911D0130E006C020911E018AE0289F60 +:104AB000900111244217530708F486C08091FD022B +:104AC000C091FE02D091FF0210910003811107C036 +:104AD000C11176C0D11174C0111172C075C09F3F51 +:104AE00019F09F5F9093FB02181624F40E94C823CC +:104AF0008093FD028091FD0287FF05C00E94C823BC +:104B000081958093FD021C1624F40E94C823809393 +:104B1000FE028091FE0287FF05C00E94C823819596 +:104B20008093FE026091FD02662339F1C091FE027E +:104B3000CC2319F1772767FD7095872F972F0E9457 +:104B4000A92923E333E343E35FE30E94B92A0E94E8 +:104B500076296093FD026C2F772767FD7095872F6C +:104B6000972F0E94A92923E333E343E35FE30E94E5 +:104B7000B92A0E9476296093FE021D1624F40E9431 +:104B800011248093FF028091FF0287FF05C00E94DD +:104B9000112481958093FF02111624F40E941124A0 +:104BA000809300038091000387FF05C00E941124B9 +:104BB000819580930003DF91CF911F910C9437254D +:104BC0009F3F09F08ECF96CFDF91CF911F9108952F +:104BD000ECEFF2E085E0DF011D928A95E9F7109293 +:104BE000FB021092FA020895833081F128F481309B +:104BF00059F08230D1F00895853009F449C0B8F1F8 +:104C0000863009F456C0089580911E01262F30E0A9 +:104C1000280F311D2F3F310524F4680F60931E01CA +:104C200008958FEF80931E01089580911D01262F16 +:104C300030E0280F311D2F3F310524F4680F6093B9 +:104C40001D0108958FEF80931D01089580911C012F +:104C5000262F30E0280F311D2F3F310524F4680F37 +:104C600060931C0108958FEF80931C01089580913B +:104C70001B01262F30E0280F311D2F3F310524F472 +:104C8000680F60931B0108958FEF80931B010895B7 +:104C900080911A01262F30E0280F311D2F3F31055A +:104CA00024F4680F60931A0108958FEF80931A011E +:104CB000089580911901262F30E0280F311D2F3FD4 +:104CC000310524F4680F6093190108958FEF8093E4 +:104CD00019010895833011F128F4813049F08230B0 +:104CE00091F00895853081F120F18630C1F1089569 +:104CF00080911E01681720F4861B80931E01089581 +:104D000010921E01089580911D01681720F4861BE2 +:104D100080931D01089510921D01089580911C013A +:104D2000681720F4861B80931C01089510921C01C3 +:104D3000089580911B01681720F4861B80931B0146 +:104D4000089510921B01089580911A01681720F4AC +:104D5000861B80931A01089510921A01089580917C +:104D60001901681720F4861B809319010895109289 +:104D7000190108950F931F93873208F048C08E31B0 +:104D800008F08DC0803109F477C008F5873009F448 +:104D900061C068F4863009F09DC08091F202817F85 +:104DA0008E7F8093F20281E08093020394C08B3067 +:104DB00009F489C08E3009F08DC08091F20282FB27 +:104DC000222720F991E0922790FB82F95EC086317C +:104DD00009F479C060F4813109F07CC00E94E21BC3 +:104DE0009091160181E08927809316016CC089316A +:104DF00009F469C08B3109F06DC08091F20281FB2A +:104E0000222720F991E0922790FB81F93EC0883358 +:104E100009F459C050F4893209F457C0853309F4B4 +:104E200054C0873209F451C055C0833409F44DC0D1 +:104E300028F48A3308F44EC0895332C0883409F00C +:104E400049C00E94E21B0E94200A0E94E4030E94C3 +:104E5000392339C09091F202892F8095817080FBAF +:104E600090F929F0966098609093F20234C0997F8F +:104E7000977F9093F20227C08091F20283FB222752 +:104E800020F991E0922790FB83F98093F202992315 +:104E9000D1F08091F20281608093F20214C08D51B2 +:104EA00041E050E060E070E08A019B0104C0000F27 +:104EB000111F221F331F8A95D2F7C901B8010E9422 +:104EC000A21F0E94E21B81E006C061E070E080E06A +:104ED00090E0F5CF80E01F910F91089580E0089554 +:104EE00080E00895CF93C82F80910203813069F04C +:104EF00018F08230C9F184C0E0911701F0911801D7 +:104F00008081823209F07EC007C0E0911701F091E4 +:104F100018018081823261F48C2F0E946E278111EA +:104F200004C08C2F0E94BA261DC081E090E01AC0F8 +:104F30008C2F0E947027811114C0C43179F048F47D +:104F4000CB3079F0C03109F061C082E08093020378 +:104F500008C0C93219F0C83321F058C010920203BA +:104F600055C081E0817054C0C93291F120F5C4313F +:104F700079F1B0F4C73009F047C08EE180931E018B +:104F800082E380931D018AE080931C0184E1809379 +:104F90001B0188E080931A0188E28093190134C0D4 +:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 +:104FB0008093010329C0CE34E9F020F4CB3421F5ED +:104FC0006AE013C0C13579F0C235F1F461E00DC07B +:104FD00080910103882319F01092010315C081E02C +:104FE0008093020315C061E006C0809101030E9416 +:104FF000F4250AC06AE0809101030E946A2604C079 +:105000001092020380E004C081E002C080E0AACFD9 +:10501000CF9108950E949A23811102C00E947623A5 +:105020000E94B62380931D0380FF02C0869501C0B5 +:1050300080E00C94F10280911D03982F9695292F02 +:1050400030E0233031054CF49F5F990F8170892B3C +:10505000816080931D030E94BA2380911D03869571 +:105060000C94F10280911D03982F969591F0915820 +:10507000990F8170892B80931D038E7F91E009F435 +:1050800090E080911D0390FB80F980931D030E94A6 +:10509000BA2380911D0386950C94F10280911D0323 +:1050A000982F909590FB80F980931D030E94BA235E +:1050B00080911D0380FF02C0869501C080E00C94A2 +:1050C000F10290911D03892F86958F5F8F779170E4 +:1050D000843028F4880F892B80931D0302C090939D +:1050E0001D0380911D038E7F91E009F490E0809173 +:1050F0001D0390FB80F980931D030E94BA238091C9 +:105100001D0386950C94F10220911D03922F969514 +:105110008927982F990F822F8170892B80931D03E7 +:105120008E7F91E009F490E080911D0390FB80F95F +:1051300080931D030E94BA2380911D0386950C94D1 +:10514000F10280911D03869508955058BB27AA2728 +:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 +:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF +:10517000D3D180F3BA17620773078407950718F035 +:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 +:105190000B01B90190010C01CA01A0011124FF27E4 +:1051A000591B99F0593F50F4503E68F11A16F040DF +:1051B000A22F232F342F4427585FF3CF46953795DE +:1051C0002795A795F0405395C9F77EF41F16BA0BA3 +:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 +:1051E000661F771F881FC2F70EC0BA0F621F731F9A +:1051F000841F48F4879577956795B795F7959E3FF7 +:1052000008F0B3CF9395880F08F09927EE0F979584 +:105210008795089527D108F481E008950CD06BC1DB +:1052200063D140F05AD130F021F45F3F19F03EC114 +:10523000511195C14FC170D198F39923C9F35523EA +:10524000B1F3951B550BBB27AA2762177307840779 +:1052500038F09F5F5F4F220F331F441FAA1FA9F32F +:1052600033D00E2E3AF0E0E830D091505040E69521 +:10527000001CCAF729D0FE2F27D0660F771F881F82 +:10528000BB1F261737074807AB07B0E809F0BB0B71 +:10529000802DBF01FF2793585F4F2AF09E3F510595 +:1052A00068F004C15CC15F3FECF3983EDCF3869587 +:1052B00077956795B795F7959F5FC9F7880F911D0B +:1052C0009695879597F90895E1E0660F771F881FF7 +:1052D000BB1F621773078407BA0720F0621B730BAA +:1052E000840BBA0BEE1F88F7E095089504D06894FC +:1052F000B11135C1089518D188F09F5790F0B92F9A +:105300009927B751A0F0D1F0660F771F881F991F1A +:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF +:1053200008951CC1672F782F8827B85F39F0B93FDF +:10533000CCF3869577956795B395D9F73EF490951C +:105340008095709561957F4F8F4F9F4F0895E8949A +:1053500009C097FB3EF490958095709561957F4FBD +:105360008F4F9F4F9923A9F0F92F96E9BB2793956B +:10537000F695879577956795B795F111F8CFFAF47B +:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC +:1053900016C0882311F096E911C0772321F09EE80A +:1053A000872F762F05C0662371F096E8862F70E070 +:1053B00060E02AF09A95660F771F881FDAF7880F4A +:1053C0009695879597F9089588D018F011F08CD0AC +:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F +:1053E000E7FB6217730784079507A8F199F3E92F84 +:1053F000FF2788232AF03197660F771F881FDAF777 +:10540000952F5527442332F091505040220F331FDF +:10541000441FD2F7BB27E91BF50B621B730B840BF0 +:10542000B109C1F222F4620F731F841FB11D3197BD +:105430002AF0660F771F881FBB1FEFCF9150504097 +:105440005AF041F0882332F0660F771F881F915081 +:105450005040C1F7939530C08695779567959F5FCB +:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 +:1054700016161706E807F907C0F012161306E40718 +:10548000F50798F0621B730B840B950B39F40A2611 +:1054900061F0232B242B252B21F408950A2609F4EF +:1054A000A140A6958FEF811D811D089597F99F67F3 +:1054B00080E870E060E008959F3F31F0915020F463 +:1054C000879577956795B795880F911D96958795E0 +:1054D00097F908959FEF80EC089500240A9416161A +:1054E000170618060906089500240A9412161306D2 +:1054F000140605060895092E0394000C11F4882360 +:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B +:105510007F4F8F4F9F4F089557FD9058440F551F51 +:1055200059F05F3F71F04795880F97FB991F61F025 +:105530009F3F79F087950895121613061406551F9C +:10554000F2CF4695F1DF08C0161617061806991F08 +:10555000F1CF86957105610508940895E894BB27FD +:1055600066277727CB0197F908957CDF08F48FEF42 +:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 +:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF +:10559000D1F3950F50E0551F629FF001729FBB271A +:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 +:1055B0006627B00DA11D661F829F2227B00DA11D79 +:1055C000621F739FB00DA11D621F839FA00D611DFF +:1055D000221F749F3327A00D611D231F849F600D20 +:1055E000211D822F762F6A2F11249F5750408AF059 +:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 +:10560000881F91505040A9F79E3F510570F04ECF32 +:10561000A6CF5F3FECF3983EDCF3869577956795D0 +:10562000B795F795E7959F5FC1F7FE2B880F911D02 +:105630009695879597F90895FA01EE0FFF1F30961A +:105640002105310599F16115710561F48038BFE3D9 +:105650009B0749F168949038810561F08038BFEF6D +:105660009B0741F0992342F5FF3FE10531052105F4 +:1056700011F1E8940894E795D901AA2329F4AB2FF6 +:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F +:10569000F73950F019F0FF3A38F49F779F930CD008 +:1056A0000F9007FC905808953EF014CF60E070E032 +:1056B00080E89FE308954FE79F775F934F933F9371 +:1056C0002F939ED02F913F914F915F9152DF05C054 +:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C +:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C +:1056F0004EDF0F920F920F924DB75EB70F92C0D050 +:10570000EAE0F1E016D04F915F91EF91FF91E595BE +:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD +:10572000FA95E1F74195550B32D00F9007FE26C050 +:105730000895DF93CF931F930F93FF92EF92DF9221 +:105740007B018C01689405C0DA2EEF011EDFFE019B +:10575000E894A5912591359145915591AEF3EF01CE +:1057600006DDFE019701A801DA9479F7DF90EF904A +:10577000FF900F911F91CF91DF9108959B01AC0194 +:1057800060E070E080E89FE349CD90CE95CECCDE1E +:10579000E8F39923D9F3940F511DBBF39150504076 +:1057A00094F059F0882332F0660F771F881F9150CC +:1057B0005040C1F79E3F510544F7880F911D9695C3 +:1057C000879597F908955F3FACF0983E9CF0BB2712 +:1057D000869577956795B79508F4B1609395C1F76D +:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B +:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 +:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD +:105810000F93FF92C92FDD2788232AF02197660F67 +:10582000771F881FDAF720E030E040E85FEB9FE366 +:10583000883920F0803E30F021968F7787DCE2E3D4 +:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 +:10585000EC01FB2E6F5771097595771F880B990B1B +:1058600078DD28E132E741E35FE38FDEAF2D980179 +:10587000AE01FF900F911F91CF91DF9178DC3BCE6D +:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 +:1058900022273327442750781FC0B75188F4AB2FF5 +:1058A0000024469537952795011CA395D2F3002037 +:1058B00069F0220F331F441FB395DAF30DD045CCA6 +:1058C00061307105A0E88A07B94630F49B01AC014C +:1058D0006627772788279078309621F020833183B8 +:1058E000428353830895AA1BBB1B51E107C0AA1F23 +:1058F000BB1FA617B70710F0A61BB70B881F991F71 +:105900005A95A9F780959095BC01CD01089597FB14 +:10591000072E16F4009407D077FD09D00E94732C4F +:1059200007FC05D03EF4909581959F4F08957095A2 +:1059300061957F4F0895EE0FFF1F0590F491E02DC4 +:105940000994F999FECF92BD81BDF89A992780B547 +:105950000895A8E1B0E042E050E00C94C92C262F55 +:10596000F999FECF92BD81BDF89A019700B4021655 +:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 +:1059800008950196272F0E94B02C0C94AF2CDC01B7 +:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A +:1059A000319600B40D9241505040B8F70895F894E4 +:0259B000FFCF27 +:1059B200640007000CFF0000003F64041092106FA7 +:1059C200103B1007100101DF022808140A321E00E2 +:1059D20002040507090B0C0E1011131517181A1CD7 +:1059E2001D1F2123242628292B2D2F303234353711 +:1059F200393B1F0F03764F5F6F7F4969437909591E +:105A020053633149803F5D8B803FF8BF803FCAE1DD +:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE +:105A2200803F3149803F0000803FF16D7F3F75EA42 +:105A32007E3F4C827E3F833F7E3F84287E3F833F72 +:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 +:105A5200803F3F4D3639ED04A0046A043104C4038B +:105A6200DD03F6030F04010203040506070809001B +:00000001FF diff --git a/keyboard/planck/keymaps/experimental/compiled.hex b/keyboard/planck/keymaps/experimental/compiled.hex new file mode 100644 index 0000000000..76984a07cc --- /dev/null +++ b/keyboard/planck/keymaps/experimental/compiled.hex @@ -0,0 +1,1645 @@ +:100000000C948F050C94D3050C94D3050C94D30554 +:100010000C94D3050C94D3050C94D3050C94D30500 +:100020000C94D3050C94D3050C94F9190C94CB1AA9 +:100030000C942D280C94D3050C94D3050C94D30563 +:100040000C94D3050C9486060C94D3050C94D3051C +:100050000C94D3050C9495280C94D3050C94D305DB +:100060000C94D3050C94D3050C94D3050C94D305B0 +:100070000C94D3050C94D3050C94D3050C94D305A0 +:100080000C94DB0F0C94D3050C94D3050C94D3057E +:100090000C94D3050C94D3050C94D3050C94D30580 +:1000A0000C94D3050C94D3050C94D305EE060007ED +:1000B000140726072E074407920792079207920714 +:1000C0009207920752078107381B5A1B481C5A1B7C +:1000D000481C9F1BC21B481C171C2A1C141F141FE2 +:1000E000431F431F821FA21FF820F820AD1FF820D6 +:1000F0005D205D20C420CD20F820F2206A206A20F7 +:100100006A206A206A206A206A206A206A206A209F +:100110006A206A206A206A206A206A207A20882061 +:100120008F209620A02007634236B79BD8A71A39A4 +:10013000685618AEBAAB558C1D3CB7CC5763BD6D35 +:10014000EDFD753EF6177231BF000000803F0800DC +:100150000000BE922449123EABAAAA2ABECDCCCC46 +:100160004C3E00000080BEABAAAAAA3E00000000E0 +:10017000BF000000803F0000000000084178D3BBB2 +:100180004387D1133D190E3CC3BD4282AD2B3E685F +:10019000EC8276BED98FE1A93E4C80EFFFBE01C450 +:1001A000FF7F3F0000000000000000000000000092 +:1001B000000000010204060A0F17202C3A4A5D7164 +:1001C000879DB3C7DAE9F5FCFFFCF5E9DAC7B39D13 +:1001D00087715D4A3A2C20170F0A060402010000BD +:1001E00000000000000000002B0014001A000800AE +:1001F000150017001C0018000C00120013002A0044 +:10020000290004001600070009000A000B000D0079 +:100210000E000F0033003400E1001D001B0006003B +:1002200019000500110010003600370038002800C2 +:100230000530E000E200E30003302C002C00043025 +:100240005000510052004F002B0014001A0009000A +:1002500013000A000D000F0018001C0033002A00D4 +:100260002900040015001600170007000B001100FC +:1002700008000C0012003400E1001D001B00060005 +:10028000190005000E001000360037003800280065 +:100290001450E000E200E30003302C002C00043096 +:1002A0005000510052004F002B0034003600370040 +:1002B00013001C0009000A00060015000F002A00A8 +:1002C000290004001200080018000C0007000B00B1 +:1002D0001700110016003800E100330014000D0073 +:1002E0000E001B00050010001A0019001D00280058 +:1002F0000530E000E200E30003302C002C00043065 +:100300005000510052004F0035021E021F02200211 +:1003100021022202230224022502260227022A00A9 +:100320004C003A003B003C003D003E003F002D02E7 +:100330002E022F0230023102010040004100420033 +:100340004300440045003202640201000100010044 +:100350000100010001000100010001000100010095 +:10036000AB00AA00A900AE0035001E001F0020004F +:1003700021002200230024002500260027002A0057 +:100380004C003A003B003C003D003E003F002D0089 +:100390002E002F00300031000100400041004200DB +:1003A000430044004500320032000100010001001A +:1003B0000100010001000100010001000100010035 +:1003C000AB00AA00A900AE001E001E001E001E0009 +:1003D0001E001E001E001E001E001E001E001E002D +:1003E000000014001A000800150017001C00180077 +:1003F0000C00120013002F0000000400160007007C +:1004000009000A000B000D000E000F00330034003D +:100410000D3000000000060019000000000011006F +:1004200010000000000000000000000000000000BC +:1004300000000000000000000000000000000000BC +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:10048000000000000000000000000000000000006C +:10049000000000000000000000000000000000005C +:1004A000000000000000000000000000000000004C +:1004B000000000000000000000000000000000003C +:1004C000000000000000000000000000000000002C +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000000000000000000000FC +:1005000000000000000000000000000000000000EB +:1005100000000000000000000000000000000000DB +:1005200000000000000000000000000000000000CB +:1005300000000000000000000000000000000000BB +:1005400000000000000000000000000000000000AB +:10055000000000000000000000000000000000009B +:10056000000000000000000000000000000000008B +:10057000000000000000000000000000000000007B +:10058000000000000000000000000000000000006B +:10059000000000000000000000000000000000005B +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000000000000000001B +:1005E000000000000000000000000000000000000B +:1005F00000000000000000000000000000000000FB +:1006000000000000000000000000000000000000EA +:1006100000000000000000000000000000000000DA +:1006200000000000000000000000000000000000CA +:1006300000000000000000000000000000000000BA +:1006400000000000000000000000000000000000AA +:10065000000000000000000000000000000000009A +:10066000000000000000000000000000000000008A +:10067000000000000000000000000000000000007A +:10068000000000000000000000000000000000006A +:10069000000000000000000000000000000000005A +:1006A000000000000000000000000000000000004A +:1006B000000000000000000000000000000000003A +:1006C000000000000000000000000000000000002A +:1006D000000000000000000000000000000000001A +:1006E000000000000000000000000000000000000A +:1006F00000000000000000000000000000000000FA +:1007000000000000000000000000000000000000E9 +:1007100000000000000000000000000000000000D9 +:1007200000000000000000000000000000000000C9 +:1007300000000000000000000000000000000000B9 +:1007400000000000000000000000000000000000A9 +:100750000000000000000000000000000000000099 +:100760000000000000000000000000000000000089 +:100770000000000000000000000000000000000079 +:100780000000000000000000000000000000000069 +:100790000000000000000000000000000000000059 +:1007A0000000000000000000000000000000000049 +:1007B0000000000000000000000000000000000039 +:1007C0000000000000000000000000000000000029 +:1007D0000000000000000000000000000000000019 +:1007E00000000000000000000100005001000100B6 +:1007F00001000100010001000100010001004C00A6 +:10080000010001000100205021501350125000300F +:10081000013002300C3001000100275026502350D7 +:10082000245028502950010001000100010001005E +:1008300001000100010001000100010001000100B0 +:1008400001000100010001000000000000000000A4 +:100850002A2B28000000000000000000000000001B +:1008600000000029000000002C1E34202122243426 +:100870002627252E362D3738271E1F2021222324F8 +:1008800025263333362E37381F0405060708090A94 +:100890000B0C0D0E0F101112131415161718191A30 +:1008A0001B1C1D2F3130232D350405060708090AAE +:1008B0000B0C0D0E0F101112131415161718191A10 +:1008C0001B1C1D2F3130354C0000000000000000C3 +:1008D0000000000000000000000000000000000018 +:1008E0000000000000000000000101010101010002 +:1008F00001010101000000000000000000000000F4 +:1009000000000100010001010101010101010101DB +:1009100001010101010101010101010101010101C7 +:1009200001010100000001010000000000000000C2 +:1009300000000000000000000000000000000000B7 +:100940000000000101010100280354006800650057 +:10095000200050006C0061006E0063006B002000FE +:100960004B006500790062006F0061007200640056 +:1009700000002C034F007200740068006F006C00D0 +:1009800069006E0065006100720020004B00650088 +:10099000790062006F006100720064007300000063 +:1009A0000403090409026D00040100A0FA0904000F +:1009B000000103010100092111010001223F00078C +:1009C00005810308000A090401000103010200096E +:1009D0002111010001224D000705820308000A09C8 +:1009E0000402000103000000092111010001223668 +:1009F000000705830308000A09040300010300003F +:100A000000092111010001223900070584031000AB +:100A1000011201100100000008EDFE6060010001FC +:100A200002000105010906A101050719E029E715E2 +:100A30000025019508750181020508190129059510 +:100A400005750191029501750391010507190029AA +:100A50007715002501957875018102C0050109808F +:100A6000A101850216010026B7001A01002AB7006D +:100A7000751095018100C0050C0901A101850316BF +:100A80000100269C021A01002A9C02751095018122 +:100A900000C005010902A1010901A1000509190110 +:100AA000290515002501950575018102950175033C +:100AB00081010501093009311581257F95027508ED +:100AC000810609381581257F950175088106050C79 +:100AD0000A38021581257F950175088106C0C00579 +:100AE000010906A101050719E029E715002501956F +:100AF0000875018102950175088101050819012910 +:100B00000595057501910295017503910105071978 +:100B10000029FF150025FF950675088100C01124E6 +:100B20001FBECFEFDAE0DEBFCDBF04B603FE24C0A8 +:100B300080915E0490915F04A0916004B091610483 +:100B40008730904BA740B04BB9F410925E041092DE +:100B50005F04109260041092610414BE84B7877F12 +:100B600084BF88E10FB6F894809360001092600013 +:100B70000FBEE0E0F8E3099513E0A0E0B1E0EEEB92 +:100B8000F4E602C005900D92A030B107D9F714E049 +:100B9000A0E0B3E001C01D92AE35B107E1F70E94BD +:100BA0003F170C945D320C94000081E00895089585 +:100BB0000C94AF070C94D5050C94D7050E94272EF2 +:100BC000811105C010920203109201030DC081E251 +:100BD00090E00090030302C0880F991F0A94E2F787 +:100BE000909302038093010382E08093000380913D +:100BF0006F00826080936F00089590916F0081E094 +:100C0000911101C080E008950E94272E23E030E07A +:100C1000281B3109220F209304030895282F2F98B1 +:100C200080918000211108C0877F809380001092FE +:100C30008D0010928C001BC0886080938000233050 +:100C400019F48FEF9FEF0FC083E090E0821B9109B2 +:100C5000880F991F2FEF3FEFA90102C056954795C6 +:100C60008A95E2F7CA0190938D0080938C000C94D2 +:100C70000406CF93C82F0E94FD05409103038823EB +:100C800029F090916F009D7F90936F00C0930303B4 +:100C90008823D1F0209101033091020302C03695E0 +:100CA00027954A95E2F72F733327C90102C0880FB1 +:100CB000991FCA95E2F790930203809301038091F4 +:100CC0006F00826080936F00CF9108950E940406A8 +:100CD00084E080930303109200030895279A2F98CD +:100CE0008FEF9FEF90938700809386008AE0809338 +:100CF000800089E1809381000E94902D0C9466060B +:100D00000E946E066E9A769A0C9497071F920F9225 +:100D10000FB60F9211242F933F938F939F93EF93CE +:100D2000FF93E0910103F0910203CF0101969093AC +:100D30000203809301030090030302C0F695E79538 +:100D40000A94E2F7EF7380910003823019F4E032E5 +:100D500051F404C0813039F4EF3329F480916F00ED +:100D60008D7F80936F00F0E0E855FE4FE49121E025 +:100D700031E0E29FC001E39F900D11240090040335 +:100D800002C0969587950A94E2F790938D00809320 +:100D90008C00FF91EF919F918F913F912F910F9038 +:100DA0000FBE0F901F901895CF93DF93EC010E9418 +:100DB0002E29BE0180E090E0DF91CF910C94232595 +:100DC0000F931F93462F50E04E30510508F0AAC0F4 +:100DD000DC01FA01EA5AFF4F0C94213212968C91F1 +:100DE000882309F49FC000E010E0980140E064E02F +:100DF00070E080ED91E00E94591381E090E011C015 +:100E000012968C91882309F48DC000E010E09801BF +:100E100040E066E070E080E691E00E94591382E0D5 +:100E200090E00E94D4067EC012968C91882309F42B +:100E300079C000E010E0980140E068E070E080E9EF +:100E400091E00E94591384E090E0EBCF12968C91D0 +:100E5000882311F083E007C083E013C012968C91C1 +:100E6000882371F084E00E94A02582E00E94390668 +:100E70000E94DE0540E164E083E00E94BE0D52C0A6 +:100E800084E00E94C125F6CF12968C91882331F020 +:100E900085EE0E94B81D0E94E72D44C085EE0E9499 +:100EA000801E40C012968C918823E1F10E940E0FA3 +:100EB00000E010E0980140E066E070E080E391E03F +:100EC0000E94591384E00E94C12583E00E94C1253D +:100ED00080E10E94C12585E00E94A0250E941B2977 +:100EE000811102C00E94F7280E94332990E090935C +:100EF0005D0480935C04806880935C040E943729C1 +:100F000011C012968C91882369F000E010E09801DE +:100F100040E066E070E080E091E00E94591385E0D7 +:100F20000E94C12580E090E01F910F9108950F93DA +:100F30001F932FEF89EF90E0215080409040E1F720 +:100F400000C0000000E010E0980140E065E070E0C3 +:100F500080EF91E00E9459131F910F9108958091A5 +:100F60001003882309F45AC080910E0390910F0357 +:100F70000E946B288D3291400CF450C010921003E7 +:100F80000E9414088091080390910903099781F445 +:100F900080910A0390910B03892B51F480910C03EB +:100FA00090910D03892B21F48AE592E00E941508A7 +:100FB0008091080390910903049791F480910A03AA +:100FC00090910B03469761F480910C0390910D036F +:100FD000892B31F48BE00E94B81D8BE00E94801EAB +:100FE00080910803909109030497C1F480910A034A +:100FF00090910B03469791F480910C0390910D030F +:10100000079761F483EE0E94B81D86E10E94B81D27 +:1010100086E10E94801E83EE0C94801E089581E07C +:1010200008950C940F08089508950F931F93CF937C +:101030008C01F80124912223F9F030E0F901E85BFA +:10104000F74FC491F901E853F74F2491222359F047 +:1010500081EE0E94B81D8C2F0E94B81D8C2F0E941B +:10106000801E81EE04C08C2F0E94B81D8C2F0E9420 +:10107000801E0F5F1F4FDDCFCF911F910F910895FD +:101080000C94800680915503882309F448C0809110 +:10109000110390911203009779F40E945F289093B6 +:1010A0001203809311038091130390E0009771F471 +:1010B0008091140390E00AC00E946B2820911802CE +:1010C000309119022817390740F329C00197880F7A +:1010D000991F880F991FFC01EB5EFC4F60817181A5 +:1010E000828193810E94410FE091130384E0E89F85 +:1010F000F0011124EB5EFC4F60817181828193814C +:101100004FE050E00E94F9128091130390E00196A5 +:101110006091140370E00E940D32809313030C94CD +:10112000D805109257030C940E0F0895089581E08E +:10113000809357030C949608089508958F929F9278 +:10114000AF92BF92EF92FF920F931F93CF93DF93D3 +:10115000CDB7DEB7A3970FB6F894DEBF0FBECDBFF5 +:101160007C01FC0100811181C8010E945C26B8014C +:101170000E94A00A8C01B7010E941108882309F47B +:10118000CCC10032F0E51F0741F4F70182818823CA +:1011900009F458C00E94F013C0C10132F0E51F07E6 +:1011A00041F4F7018281882309F44CC00E94F913AD +:1011B000B4C10232F0E51F0751F4F70182818823A0 +:1011C00009F440C00E94EC138111F0CFE3CF033249 +:1011D000F0E51F0739F4F7018281882399F10E9415 +:1011E00097089BC10432F0E51F0739F4F7018281AB +:1011F000882341F10E94910890C10532F0E51F0754 +:1012000049F4F70182818823E9F080915703811125 +:10121000F1CFE5CF0632F0E51F0739F4F7018281FF +:10122000882381F00E9400140AC00732F0E51F07EE +:1012300049F4F7018281882329F00E940B140E944F +:101240009D086BC180915703811105C0F701828110 +:101250008111CFC018C1003E110579F4F7018281D8 +:10126000882309F44DC00E940E0F81E0809356033D +:10127000109255031092140350C1023E110559F407 +:10128000F70182818823E1F10E940E0F109256032C +:101290001092550342C1033E110591F4F70182817A +:1012A000882371F10E940E0F1092560381E0809303 +:1012B00055031092130310921203109211032DC1C3 +:1012C0000235110559F4F7018281882309F425C1FB +:1012D00080911802909119020A970DC001351105ED +:1012E00079F4F7018281882309F417C180911802EB +:1012F000909119020A9690931902809318020DC1D9 +:1013000040911C0283E2E7E3F2E0DE0111960190D6 +:101310000D928A95E1F7F701808121E030E02C0FF2 +:101320003D1F280F311DC90120911A0230911B0267 +:10133000FC01E20FF31F6081772767FD7095640F52 +:10134000711D882777FD8095982F0E942F2F20E010 +:1013500030E040E451E40E94942E4B015C01F7011F +:10136000218184E090E0821B9109BC01882777FDF0 +:101370008095982F0E942F2F9B01AC01C501B401CD +:101380000E942C2E9B01AC0160E070E080E090E4B4 +:101390000E94A23020E030E04CED50E40E943F304B +:1013A0004B015C01F70182818823D1F04FE050E0CE +:1013B000C501B4010E94F912809156038823A1F05F +:1013C0008091140324E0829FF0011124EB5EFC4F16 +:1013D00080829182A282B3828F5F8093140304C0C3 +:1013E000C501B4010E94410F0F3F110508F02ECF37 +:1013F00094C08091100381111FC0043130E51307A0 +:1014000009F051C00E94130881E0809310030E94EC +:101410005F2890930F0380930E031092070310929E +:1014200009031092080310920B0310920A03109202 +:101430000D0310920C0371C080910E0390910F0365 +:101440000E946B28883C910570F480910703E82F77 +:10145000F0E0EE0FFF1FE85FFC4F118300838F5F0A +:10146000809307035AC0043880E5180721F0053837 +:10147000104501F13AC0F7018281882341F01092B2 +:10148000050382E01EC0043830E5130759F580914A +:101490000503811106C086E20E94B81D86E20E9403 +:1014A000801E82E01CC00438F0E51F0741F30538B8 +:1014B0001045D9F4F7018281882331F01092060398 +:1014C00080E20E94CF1E29C080910603811106C0D0 +:1014D00087E20E94B81D87E20E94801E80E20E947F +:1014E000D61E1BC00538104529F381E08093050303 +:1014F00080930603C701A3960FB6F894DEBF0FBE14 +:10150000CDBFDF91CF911F910F91FF90EF90BF90D2 +:10151000AF909F908F900C94DA0580E0A3960FB661 +:10152000F894DEBF0FBECDBFDF91CF911F910F9119 +:10153000FF90EF90BF90AF909F908F900895089587 +:101540009CE0799FF001112490E3899FE00DF11D4B +:101550001124E60FF11DEE0FFF1FE851FE4F85919C +:1015600094910895880F991FFC01E859FF4F8591C8 +:1015700094910895880F991FFC01E851FE4F8591C1 +:10158000949108950F931F93CF93DF93EC018115EE +:1015900021E39207A0F5C11580E3D80708F0D7C072 +:1015A000C83ED105D8F4C03ED10508F007C2C83AFC +:1015B000D10578F4C53AD10508F06AC0C130D1052B +:1015C00009F463C008F4F7C1C430D10508F0F6C1CE +:1015D000F2C1CB3BD10508F466C0EDC1C11590E264 +:1015E000D90708F0AFC0C11521E0D20708F0E6C165 +:1015F000C03FD10508F4DFC18E0110651FC2C0389D +:1016000080E5D80700F5C03790E5D90708F0A3C0FA +:10161000C11520E5D20709F4ACC050F4CE019054B6 +:1016200080319F4008F0C7C1DF708E01106A06C28A +:10163000C13080E5D80709F4AEC0C43190E5D907C0 +:1016400008F4AFC0B8C1C33820E5D20709F48EC092 +:1016500050F4C13890E5D90709F482C008F083C07E +:1016600000E011EDEBC1C03181E5D80708F4A3C15A +:10167000C11597E5D90708F436C1CE0190578115F9 +:10168000904108F098C1DF7093C101E010E0D6C12D +:10169000C53AD10509F494C1C63AD10509F093C100 +:1016A00002E810E4CBC1C83AD10509F48FC1C93AA8 +:1016B000D10509F48EC1CA3AD10509F48DC1CB3ADE +:1016C000D10509F48CC1CC3AD10509F48BC1CD3ACE +:1016D000D10509F48AC1C03BD10509F489C1CE3ACC +:1016E000D10509F488C1CF3AD10509F487C1C13BBE +:1016F000D10509F486C1C23BD10509F485C1C33BBC +:10170000D10509F484C1C43BD10509F483C1C53BAB +:10171000D10509F482C1C63BD10509F481C1C73B9B +:10172000D10509F480C1C83BD10509F47FC1C93B8B +:10173000D10509F47EC1CA3BD10509F47DC100E0A1 +:1017400014E47CC1CE019F700E94BA0A78C1DD27E3 +:101750008E01106C73C1CF70DD278E01146D6EC1C8 +:1017600000E010ED6BC100E012ED68C100E013ED88 +:1017700065C10E9463210E940E0F0E9495088FEFA1 +:1017800094E32CE0815090402040E1F700C000003D +:101790000E94BA2853C18091320481608093320440 +:1017A0004DC10E941B29811102C00E94F7280E948E +:1017B000332990E090935D0480935C04C23080E50F +:1017C000D80721F480915C04816086C0C43090E524 +:1017D000D90721F480915C0482607EC0C63020E588 +:1017E000D20721F480915C04846076C0C83080E523 +:1017F000D80719F480915C0427C0CA3090E5D90756 +:1018000021F480915C04806167C0CC3020E5D20770 +:1018100021F480915C0480625FC0CE3080E5D807FF +:1018200021F480915C04806457C0C03190E5D907F1 +:1018300021F480915C0480684FC0C23120E5D2075A +:1018400029F480915C048460886046C0C33080E5E0 +:10185000D80721F480915C048E7F3EC0C53090E5AE +:10186000D90721F480915C048D7F36C0C73020E514 +:10187000D20721F480915C048B7F2EC0C93080E5B3 +:10188000D80719F480915C0426C0CB3090E5D907C5 +:1018900021F480915C048F7E1FC0CD3020E5D207FB +:1018A00021F480915C048F7D17C0CF3080E5D8078C +:1018B00021F480915C048F7B0FC0C13190E5D90782 +:1018C00021F480915C048F7707C0C331D04531F497 +:1018D00080915C048B7F877F80935C0480915C04A3 +:1018E0000E943729ABC08D2F99278F70992781309F +:1018F0009105D9F49E012370332702C0880F991FE8 +:101900002A95E2F79C688E0144E0000F111F4A956A +:10191000E1F700271370802B912B53E0CC0FDD1FD4 +:101920005A95E1F7C076DD272FC08230910531F45A +:10193000DC2FCC278E01016F106A80C083309105A7 +:1019400069F4CE018370992701E010E002C0000F16 +:10195000111F8A95E2F7C8019C680FC08430910579 +:10196000B9F4CE018370992701E010E002C0000FA6 +:10197000111F8A95E2F7C8019A6823E0CC0FDD1F9A +:101980002A95E1F7C07ED7708C010C2B1D2B56C019 +:101990008530910531F4DC2FCC278E01046F106A5D +:1019A0004DC0069709F04AC0CF71DD27DC2FCC2748 +:1019B0008E01106243C000E010E040C08E013EC0C6 +:1019C00001E810E43BC003E810E438C002EE14E480 +:1019D00035C009EE14E432C00AEE14E42FC005EB62 +:1019E00014E42CC006EB14E429C007EB14E426C071 +:1019F0000CEC14E423C00DEC14E420C003E815E45F +:101A00001DC00AE815E41AC002E915E417C004E98C +:101A100015E414C001E216E411C003E216E40EC09E +:101A200004E216E40BC005E216E408C006E216E480 +:101A300005C007E216E402C00AE216E4C801DF911D +:101A4000CF911F910F9108959CE0799FF00111248F +:101A500090E3899FE00DF11D1124E60FF11DEE0FBB +:101A6000FF1FE851FE4F85919491803E9105E0F46F +:101A7000803C910558F58133910509F46FC048F415 +:101A80008932910509F463C08A32910509F46DC069 +:101A900072C089339105E9F082389105D1F0853320 +:101AA000910509F44DC067C0833E910581F138F47A +:101AB000803E9105B9F0823E9105D9F05CC0863E2A +:101AC000910561F1873E9105A1F155C00E94B20ACE +:101AD000089520915C0420FD02C021FF4CC080EEDF +:101AE00090E049C080915C0480FFF9CF89E390E0E9 +:101AF00042C080915C0482FF0EC080915C0484FF30 +:101B000003C080E090E037C083EE90E034C0809165 +:101B10005C0482FFF2CF82EE90E02DC080915C04E5 +:101B200083FF0BC080915C0484FDEBCF87EE90E0D7 +:101B300022C080915C0483FFF5CF86EE90E01BC04D +:101B400080915C0485FF07C089E290E014C0809119 +:101B50005C0485FFF9CF85E390E00DC080915C04C3 +:101B600086FF07C08AE290E006C080915C0486FF91 +:101B7000F9CF81E390E00E94C20A0895CF92DF92EC +:101B8000EF92FF920F931F9301E010E020E030E00E +:101B90006801790104C0CC0CDD1CEE1CFF1C8A9589 +:101BA000D2F704C0000F111F221F331F6A95D2F70E +:101BB0000C291D292E293F29C0901504D090160408 +:101BC000E0901704F0901804C022D122E222F32200 +:101BD000842FC016D106E206F30641F41F910F913F +:101BE000FF90EF90DF90CF900C94A0251F910F9164 +:101BF000FF90EF90DF90CF900C94C1250C94DC0502 +:101C0000E82FF0E0E257FD4F8081E82FEF70F0E021 +:101C100082958F7021E030E0A90102C0440F551F6A +:101C20008A95E2F740A308950F931F93CF93DF9314 +:101C300085B7806885BF85B7806885BFC3E0D0E081 +:101C400001E010E0FE01E257FD4F8081E82FEF70C8 +:101C5000F0E021A182958F70A80102C0440F551FAA +:101C60008A95E2F7CA01822B81A38C2F0E94000E75 +:101C7000219740F78BE090E061E070E0FC01EE57C7 +:101C8000FD4F2081E22FEF70F0E042A122952F70EE +:101C9000DB0102C0AA0FBB1F2A95E2F79D01242B8E +:101CA00022A3019758F7DF91CF911F910F910C94C8 +:101CB0004008EF92FF920F931F93CF93DF9300E6BC +:101CC00013E0C3E0EE24E394F12CD5E08C2F0E94C6 +:101CD000000E8BE090E040E050E0FC01EE57FD4F3D +:101CE0006081E62FEF70F0E020A130E062956F7028 +:101CF00002C0359527956A95E2F720FD09C0970146 +:101D0000082E02C0220F331F0A94E2F7422B532BF6 +:101D1000019718F7F801929182918F018417950726 +:101D200021F051834083D0931D028C2F0E94000E1E +:101D3000C15060F680911D0287FD2CC081508093B8 +:101D40001D028F3F39F08FE99FE00197F1F700C046 +:101D5000000020C080915E0390915F039093670321 +:101D60008093660380915C0390915D03909365037B +:101D70008093640380915A0390915B039093630373 +:101D8000809362038091580390915903909361036B +:101D9000809360030E94420881E0DF91CF911F9100 +:101DA0000F91FF90EF900895E82FF0E0EE0FFF1FE6 +:101DB000E05AFC4F80819181089508950F931F93FD +:101DC000CF9308E613E0C0E0F801929182918F0171 +:101DD0000E94D727C80FF3E000361F07A9F78C2F02 +:101DE000CF911F910F9108950E941B29811102C06C +:101DF0000E94F7280E944529809347043E9A8091CB +:101E000071008D7F8093710082E0809390008AE161 +:101E10008093910081E080936A03089580916A0322 +:101E2000811102C00E94F40E1092BA031092B903FD +:101E3000809171008D7F80937100809190008F73ED +:101E40008093900010927C0310927B031092B30356 +:101E50001092B4031092B5031092B6031092B2031D +:101E60001092B103E1E9F3E0A1E8B3E0119211921D +:101E7000119211921D921D9283E0E13BF807B1F798 +:101E80000895CF92DF92EF92FF920F931F93CF931B +:101E9000DF9320917B03222309F484C06B017C0132 +:101EA00080916A03811102C00E94F40E01EB13E0DD +:101EB000C7E0D0E0A7019601F8019291829172915A +:101EC00062918F010E94902E811131C0FE01EE0FB0 +:101ED000FF1FEE0FFF1FEF56FC4F10821182128280 +:101EE0001382DE01AA0FBB1FAF57BC4F11961C9285 +:101EF0001E92C730D105E9F0219644815581668153 +:101F000077814083518362837383148215821682A2 +:101F1000178212968D919C91139711969C938E9394 +:101F200013961C921E92129734961296E2CF219726 +:101F300008F68091B9039091BA03019797FD05C007 +:101F40009093BA038093B90304C01092BA0310921D +:101F5000B9038091B9039091BA032091B7033091EE +:101F6000B8032817390724F01092B8031092B7036A +:101F7000892BC1F4809171008D7F809371008091D5 +:101F800090008F73809390001092B3031092B4036B +:101F90001092B5031092B6031092B2031092B103DF +:101FA00010927B03DF91CF911F910F91FF90EF90E3 +:101FB000DF90CF9008951F920F920FB60F921124C9 +:101FC0004F925F926F927F928F929F92AF92BF9249 +:101FD000CF92DF92EF92FF922F933F934F935F93B5 +:101FE0006F937F938F939F93AF93BF93CF93DF9321 +:101FF000EF93FF9380917B03882309F49BC1C091E9 +:10200000B903D091BA031C161D060CF093C1409081 +:102010006B0350906C0360906D0370906E0320E032 +:1020200030E0A901C301B2010E943B3018160CF048 +:1020300065C0C130D10509F452C08091B7039091B9 +:10204000B803BE010E940D327C019093B8038093C7 +:10205000B70380907D0390907E03A0907F03B090A3 +:10206000800320E030E040E85FE3C501B4010E9456 +:102070002C2E60937D0370937E0380937F03909357 +:102080008003F701EE0FFF1FEE0FFF1FEF56FC4F0F +:10209000A301920160817181828193810E94942EBB +:1020A00020E030E040E05EE30E943F309B01AC0165 +:1020B000C501B4010E943B3018168CF4C70101968B +:1020C000BE010E940D329093B8038093B703109223 +:1020D0007D0310927E0310927F0310928003E091A3 +:1020E000B703F091B803EE0FFF1FEE0FFF1FEF567F +:1020F000FC4F6081718182819381D0C0C090B30315 +:10210000D090B403E090B503F090B60320E030E047 +:10211000A901C701B6010E94902E2197882309F4D6 +:10212000A2C0FE01EE0FFF1FEE0FFF1FEF56FC4F88 +:1021300080809180A280B380A5019401C701B6017F +:102140000E94902E87FF31C0A501940160E070E0ED +:102150008CED93EC0E94942E20E030E040E451E4BA +:102160000E94942E20E030E040E05FE30E943F3088 +:102170009B01AC0160E070E080E090E40E94A2303E +:102180009B01AC01C501B4010E943F309B01AC0131 +:10219000C701B6010E94902E87FF07C0A7019601D4 +:1021A00060E070E08CED93E439C0A5019401C701B3 +:1021B000B6010E943B3018160CF055C0A5019401E1 +:1021C00060E070E08CED93E40E94942E20E030E01B +:1021D00040E451E40E94942E20E030E040E05FE3D0 +:1021E0000E943F309B01AC0160E070E080E090E431 +:1021F0000E94A2309B01AC01C501B4010E943F3096 +:102200009B01AC01C701B6010E943B3018165CF57A +:10221000A701960160E070E08CED93EC0E94942E93 +:1022200020E030E040E451E40E94942E20E030E0D1 +:1022300040E05FE30E943F309B01AC0160E070E052 +:1022400080E090E40E94A2309B01AC01C701B6017E +:102250000E943F306093B3037093B4038093B5033F +:102260009093B60313C0FE01EE0FFF1FEE0FFF1F8A +:10227000EF56FC4F80819181A281B3818093B3039B +:102280009093B403A093B503B093B6036091B303E6 +:102290007091B4038091B5039091B60320916803C7 +:1022A000309169032F3F4FEF340731F02F5F3F4FDD +:1022B00030936903209368030E9416146B017C011C +:1022C00020E034E244EF51E40E94902E87FF08C0E2 +:1022D00086EFC82E88E2D82E84EFE82E81E4F82E0F +:1022E00020E030E040E051E4C701B6010E943F30F9 +:1022F0009B01AC0160E074E284E79BE40E94942EB1 +:102300006B017C010E94012F7093970060939600EF +:1023100020911E0230911F02409120025091210213 +:10232000C701B6010E943F300E94012F70939900AF +:102330006093980080917C03882309F433C1C09096 +:102340007703D0907803E0907903F0907A0320E04F +:1023500030E0A901C701B6010E943B301816D4F540 +:1023600080916803909169038F3F2FEF920729F0C6 +:1023700001969093690380936803C701B6010E9498 +:10238000161420E030E040E051E40E943F309B0111 +:10239000AC0160E074E284E79BE40E94942E6B0140 +:1023A0007C010E94012F709397006093960020910A +:1023B0001E0230911F024091200250912102C7015C +:1023C000B6010E943F300E94012F709399006093E4 +:1023D000980008C0109297001092960010929900F1 +:1023E0001092980060917103709172036F5F7F4F3C +:1023F000709372036093710320919600309197005F +:1024000080E090E0232BF1F0C0919600D0919700EE +:102410000E942D2F6B017C01BE0180E090E00E94A4 +:102420002D2F9B01AC016091730370917403809117 +:102430007503909176030E94942E20E03FEF4FE7C2 +:1024400057E410C00E942D2F6B017C0120E030EE7C +:102450004FEF54E46091730370917403809175039E +:10246000909176030E943F309B01AC01C701B601F9 +:102470000E943B3087FD96C080916F038F5F8093F1 +:102480006F0390E020914304309144048217930736 +:10249000A0F080914E04882319F010926F030DC0B4 +:1024A000809171008D7F80937100809190008F7377 +:1024B0008093900010927C037DC080917003C09146 +:1024C0006F03811128C0C0904804D0904904E09067 +:1024D0004A04F0904B0420E030E0A901C701B601A6 +:1024E0000E943B301816BCF481E080937003109278 +:1024F0007703109278031092790310927A03C092B6 +:102500007303D0927403E0927503F0927603C15086 +:10251000C0936F0343C0109270031092690310922E +:102520006803E0914504F091460448E0C49FE00D43 +:10253000F11D112480819181A281B3818093770361 +:1025400090937803A0937903B0937A0320E030E06E +:1025500040E85EE364817581868197810E943F3007 +:102560006B017C0180912202682F70E080E090E096 +:102570000E942D2F20E030E048EC52E40E94942E7F +:102580009B01AC01C701B6010E943F306093730309 +:102590007093740380937503909376031092720383 +:1025A000109271038091470480FD04C010927C0357 +:1025B00010927B03FF91EF91DF91CF91BF91AF918B +:1025C0009F918F917F916F915F914F913F912F914B +:1025D000FF90EF90DF90CF90BF90AF909F908F9043 +:1025E0007F906F905F904F900F900FBE0F901F9055 +:1025F0001895CF92DF92EF92FF92CF93DF936B010A +:102600007C01EA0180916A03811102C00E94F40EEC +:102610008091470480FF46C08091B9039091BA032E +:1026200008970CF03FC0809171008D7F80937100FE +:1026300080917C0381110E940E0F81E080937B03C7 +:10264000109269031092680320E030E0A901C701ED +:10265000B6010E943B301816DCF48091B9039091CA +:10266000BA03FC01EE0FFF1FEE0FFF1FEF56FC4FEA +:10267000C082D182E282F382FC01EE0FFF1FEF578E +:10268000FC4FD183C08301969093BA038093B90322 +:1026900080917100826080937100809190008068C9 +:1026A00080939000DF91CF91FF90EF90DF90CF90DB +:1026B00008958F929F92AF92BF92CF92DF92EF9246 +:1026C000FF920F931F93CF93DF93EC017B01D42EE6 +:1026D0004801590180916A03811102C00E94F40EE1 +:1026E0008091470480FF6BC0809171008D7F809343 +:1026F000710080917B0381110E940E0F81E0809315 +:102700007C03D0934604C0934504F0924404E092C5 +:102710004304D0924E048092480490924904A092BF +:102720004A04B0924B0410927D0310927E031092E3 +:102730007F031092800310926F0388819981AA8190 +:10274000BB818093770390937803A0937903B09330 +:102750007A0320E030E040E85EE36C817D818E8189 +:102760009F810E943F306B017C0180912202682F83 +:1027700070E080E090E00E942D2F20E030E048ECF7 +:1027800052E40E94942E9B01AC01C701B6010E9445 +:102790003F30609373037093740380937503909339 +:1027A000760310927203109271038091710082601F +:1027B0008093710080919000806880939000DF91F9 +:1027C000CF911F910F91FF90EF90DF90CF90BF902E +:1027D000AF909F908F9008958091470481700895E5 +:1027E000809147048160809347040E9449290C949A +:1027F0009C08809147048E7F809347040C9449295C +:102800008091BB0390E0019666E070E00E940D327B +:102810008093BB0308958091BB0390E0019766E02D +:1028200070E00E940D328093BB0308958F929F92B7 +:10283000AF92BF92CF92DF92EF92FF920F931F93CE +:10284000CF93DF936B017C01C0916803D091690342 +:10285000BE0180E090E00E942D2F4B015C01A7019A +:10286000960160E070E08CE594E40E94942E9B0158 +:10287000AC01C501B4010E943F300E94012F20919C +:10288000BB03233009F473C028F4222351F0213014 +:10289000E9F02CC1243009F4A0C0253009F4E0C0CF +:1028A00025C180E090E0A0E0BFE380931E029093FA +:1028B0001F02A0932002B093210210926B0310928A +:1028C0006C0310926D0310926E0310C110926B0393 +:1028D00010926C0310926D0310926E0364317105B7 +:1028E00040F46A30710560F520E030E040E85EE3D6 +:1028F0002BC0693C710508F0AAC080E090E00E94FE +:102900002D2F20E030E040EA51E40E942B2E20E001 +:1029100030E044E353E40E94942E9B01AC010E94FA +:102920003F3020E030E040E05EE30E943F309B011A +:10293000AC0160E070E080E09EE30E942B2E44C07A +:1029400020E030E040E05FE3C701B6010E943F3085 +:102950006B017C0180E090E0A0E0BEE380931E026A +:1029600090931F02A0932002B0932102BFC0109247 +:102970006B0310926C0310926D0310926E034AE089 +:10298000469F9001479F300D1124C90168EB7BE001 +:102990000E94F931BC016C5D754077FF03C07195F1 +:1029A00061957109882777FD8095982F0E942F2FB8 +:1029B0002EE333EC4EE259E30E943F3020E030E05A +:1029C00040EC5EE30E942C2E60931E0270931F0267 +:1029D000809320029093210289C010926B03109281 +:1029E0006C0310926D0310926E03CE0183709927D1 +:1029F000892BE1F0BE016170772780E090E00E94B2 +:102A00002D2F20E030E040E05EE30E943F3020E0E8 +:102A100030E040E45FE30E942C2E60931E0270932E +:102A20001F0280932002909321020CC080E090E06E +:102A3000A0E0BFE380931E0290931F02A0932002A8 +:102A4000B0932102C770DD27CD2B09F04FC0109243 +:102A50001E0210921F02109220021092210246C004 +:102A600010926B0310926C0310926D0310926E0320 +:102A700000E010E020E03FE300931E0210931F02ED +:102A800020932002309321026739710578F180E0AC +:102A900090E00E942D2F20E030E047E153E40E94B7 +:102AA0002B2E20E030E04AE754E40E94942E20E0F0 +:102AB00030E048E452E40E943F3020E030E040EA59 +:102AC00051E40E94712F0E94FC2E660F771F660F43 +:102AD000771FFB01EE56FD4F2081318142815381EA +:102AE000C701B6010E943F306B017C01C701B601EE +:102AF000DF91CF911F910F91FF90EF90DF90CF90DA +:102B0000BF90AF909F908F9008958091CC030895CF +:102B1000CF93DF9300D01F92CDB7DEB79C01809199 +:102B20005304843019F593E099833B832A8390936F +:102B3000E9008FEF9091E800815095FD06C095ED7A +:102B40009A95F1F700008111F5CF8091E80085FF9B +:102B50000DC040E050E063E070E0CE0101960E94BD +:102B6000E9178091E8008E778093E8000F900F902E +:102B70000F90DF91CF910895CF93DF9300D01F92F4 +:102B8000CDB7DEB720915304243021F522E029830C +:102B90009B838A8383E08093E9008FEF9091E80024 +:102BA000815095FD06C095ED9A95F1F700008111D1 +:102BB000F5CF8091E80085FF0DC040E050E063E074 +:102BC00070E0CE0101960E94E9178091E8008E77AF +:102BD0008093E8000F900F900F90DF91CF910895B0 +:102BE000209153042430F1F422E02093E9002FEFE8 +:102BF0003091E800215035FD06C035ED3A95F1F7EA +:102C000000002111F5CF2091E80025FF0BC040E026 +:102C100050E065E070E00E94E9178091E8008E774F +:102C20008093E8000895CF93DF93EC0190915304D3 +:102C3000943009F046C080912D028823D9F080910C +:102C40002E028823B9F09093E9008FEF9091E8006D +:102C5000815095FD06C095E19A95F1F7000081112C +:102C6000F5CF8091E80085FF2CC040E050E060E1A6 +:102C700070E017C081E08093E9008FEF9091E80049 +:102C8000815095FD06C095ED9A95F1F700008111F0 +:102C9000F5CF8091E80085FF14C040E050E068E087 +:102CA00070E0CE010E94E9178091E8008E77809352 +:102CB000E80080E1FE01ACEBB3E001900D928A9553 +:102CC000E1F7DF91CF91089580915204811109C0FD +:102CD0000E947E190E94DB198091E200846080933B +:102CE000E2000895109252040895089508950C94F6 +:102CF000222842E061EC81E00E94F81842E061EC99 +:102D000082E00E94F81842E061EC83E00E94F8182B +:102D100042E161EC84E00C94F81880915504833012 +:102D200009F455C030F4813071F0823009F48EC05E +:102D300008958A3009F47AC08B3009F460C0893074 +:102D400009F09CC020C080915404813A09F096C0DB +:102D50008091E800877F8093E800809158049091EB +:102D60005904892B21F460E18CEB93E003C060E00F +:102D700080E090E070E00E9434188091E8008B774A +:102D80008093E800089580915404813209F076C060 +:102D90008091580490915904009719F0039709F015 +:102DA0006DC08091E800877F8093E8008091E80003 +:102DB00082FD05C0809153048111F8CF5FC08091DE +:102DC000F1008093CC038091E8008B7753C0809111 +:102DD0005404813A09F052C08091580490915904EA +:102DE000892B09F04BC08091E800877F8093E80031 +:102DF0008091E80080FFFCCF80912D0236C0809149 +:102E000054048132D9F58091580490915904892B4A +:102E1000A9F58091E800877F8093E8000E942D1932 +:102E20008091560480932D020C9463218091540468 +:102E3000813221F58091E800877F8093E8000E942D +:102E40002D19809157048093CD03089580915404E7 +:102E5000813AA1F48091E800877F8093E800809117 +:102E6000E80080FFFCCF8091CD038093F10080913A +:102E7000E8008E778093E8000C942D19089584B7AC +:102E8000877F84BF88E10FB6F8948093600010922A +:102E900060000FBE90E080E80FB6F8948093610068 +:102EA000909361000FBE0E94D01C0E947E190E9468 +:102EB000DB198091E20084608093E20078940E94A4 +:102EC000611C0E94D21C83E292E00E947C1C8091D3 +:102ED0005304853069F40E94E327809151048823CC +:102EE000B1F30E941128882391F30E94D317EFCFEA +:102EF0000E94DA1CECCF292F332723303105C9F08B +:102F000064F42130310581F02230310509F043C0ED +:102F10008DE690E024EA39E042C021323105F1F03B +:102F20002232310541F137C082E190E021E13AE0FF +:102F300036C099278130910541F08230910541F0EA +:102F4000892B49F5E0EAF9E005C0E2E7F9E002C0C3 +:102F5000E8E4F9E0849190E09F0121C06430D8F466 +:102F6000E62FF0E0EE0FFF1FE251FD4F208131818F +:102F700089E090E014C0643070F470E0FB01EE0F63 +:102F8000FF1FEA51FD4F20813181FB01EE51FD4FC2 +:102F9000808190E004C080E090E020E030E0FA0121 +:102FA00031832083089580E189BD82E189BD09B420 +:102FB00000FEFDCF8091D8008F7D8093D800809156 +:102FC000E00082608093E0008091E00081FDFCCF12 +:102FD0000895CF92DF92EF92FF920F931F93CF93BA +:102FE000DF93EC018B016A010E944C19811133C0FF +:102FF000C114D10439F0F60180819181081B190BAD +:10300000C80FD91FE12CF12C0115110519F1809180 +:10301000E80085FD16C08091E8008E778093E80077 +:10302000C114D10449F0F60180819181E80EF91EA6 +:10303000F182E08285E00FC00E944C19882321F3C1 +:103040000AC089918093F10001501109FFEFEF1A36 +:10305000FF0ADACF80E0DF91CF911F910F91FF90AF +:10306000EF90DF90CF90089520915A0430915B0447 +:103070002617370748F06115710539F42091E800EB +:103080002E772093E80001C0B90140E06115710579 +:10309000A9F120915304222309F443C0253009F4F7 +:1030A00042C02091E80023FD40C02091E80022FDAD +:1030B00032C02091E80020FFE9CF4091F300209139 +:1030C000F20030E0342BFC01CF016115710559F09D +:1030D0002830310540F481918093F10061507109ED +:1030E0002F5F3F4FF1CF41E02830310509F040E03C +:1030F0002091E8002E772093E800C8CF4111C9CF76 +:103100000AC080915304882361F0853061F080917A +:10311000E80083FD0AC08091E80082FFF2CF80E0E2 +:10312000089582E0089583E0089581E00895209154 +:103130005A0430915B042617370748F06115710572 +:1031400039F42091E8002E772093E80001C0B901FE +:10315000FC0120E06115710591F1809153048823F1 +:1031600009F440C0853009F43FC08091E80083FD38 +:103170003DC08091E80082FD2FC08091E80080FF73 +:10318000E9CF2091F3008091F20090E0922B61153D +:10319000710559F08830910540F424912093F10095 +:1031A0003196615071090196F2CF21E0089709F03C +:1031B00020E08091E8008E778093E800CBCF21114A +:1031C000CCCF0AC080915304882361F0853061F030 +:1031D0008091E80083FD0AC08091E80082FFF2CF71 +:1031E00080E0089582E0089583E0089581E00895E5 +:1031F000982F973058F59093E900981739F070910F +:10320000EC002091ED005091F00003C0242F762FA8 +:1032100050E021FF19C03091EB003E7F3093EB006E +:103220003091ED003D7F3093ED003091EB00316047 +:103230003093EB007093EC002093ED005093F0007E +:103240002091EE0027FF07C09F5FD3CF8F70809340 +:10325000E90081E0089580E008958091540487FF9B +:1032600011C08091E80082FD05C080915304811156 +:10327000F8CF11C08091E8008B770BC08091530488 +:10328000882349F08091E80080FFF8CF8091E80022 +:103290008E778093E80008952091E4003091E50056 +:1032A00095E64091EC00842F817040FF22C0809110 +:1032B000E80080FD1CC080915304882391F0853084 +:1032C00091F08091EB0085FD10C04091E400509199 +:1032D000E5004217530729F39A01915011F784E052 +:1032E000089582E0089583E0089581E0089580E0E4 +:1032F00008954091E80042FFDECF08950E94EC1946 +:103300000E94F419E0EEF0E0808181608083E8EDB6 +:10331000F0E080818F77808319BCA7EDB0E08C91BD +:103320008E7F8C9380818F7E8083109252040895CB +:103330000F931F93CF93DF930E94EC190E94F4190F +:10334000C8EDD0E088818F77888388818068888302 +:1033500088818F7D888319BC1092530410924F048A +:10336000109251041092500400EE10E0F801808198 +:103370008B7F808388818160888342E060E080E089 +:103380000E94F818E1EEF0E080818E7F8083E2EE0B +:10339000F0E0808181608083808188608083F80193 +:1033A00080818E7F8083888180618883DF91CF9147 +:1033B0001F910F910895E8EDF0E080818F7E80836A +:1033C000E7EDF0E080818160808384E082BF81E06E +:1033D000809352040C949819E8EDF0E080818E7F80 +:1033E00080831092E20008951092DA001092E100BA +:1033F00008951F920F920FB60F9211242F933F93AF +:103400004F935F936F937F938F939F93AF93BF93EC +:10341000EF93FF938091E10082FF0BC08091E20067 +:1034200082FF07C08091E1008B7F8093E1000E94C2 +:10343000601C8091DA0080FF1FC08091D80080FF5F +:103440001BC08091DA008E7F8093DA008091D900D2 +:1034500080FF0DC080E189BD82E189BD09B400FE15 +:10346000FDCF81E0809353040E94641605C019BC0F +:10347000109253040E9472168091E10080FF19C0DF +:103480008091E20080FF15C08091E2008E7F8093E2 +:10349000E2008091E20080618093E2008091D80098 +:1034A00080628093D80019BC85E0809353040E9409 +:1034B00076168091E10084FF30C08091E20084FFA5 +:1034C0002CC080E189BD82E189BD09B400FEFDCF39 +:1034D0008091D8008F7D8093D8008091E1008F7E0D +:1034E0008093E1008091E2008F7E8093E2008091E2 +:1034F000E20081608093E20080914F04882311F004 +:1035000084E007C08091E30087FD02C081E001C034 +:1035100083E0809353040E9477168091E10083FF3B +:1035200029C08091E20083FF25C08091E100877F60 +:103530008093E10082E08093530410924F048091C5 +:10354000E1008E7F8093E1008091E2008E7F809386 +:10355000E2008091E20080618093E20042E060E05E +:1035600080E00E94F8188091F00088608093F0005D +:103570000E947516FF91EF91BF91AF919F918F912E +:103580007F916F915F914F913F912F910F900FBE5F +:103590000F901F9018951F920F920FB60F92112443 +:1035A0002F933F934F935F936F937F938F939F934B +:1035B000AF93BF93CF93DF93EF93FF93C091E90055 +:1035C000CF708091EC00D82FD17080FDD0E81092A0 +:1035D000E9008091F000877F8093F00078940E944A +:1035E0000F1B1092E9008091F00088608093F0003A +:1035F000CD2BCF70C093E900FF91EF91DF91CF9178 +:10360000BF91AF919F918F917F916F915F914F91FA +:103610003F912F910F900FBE0F901F9018951F9301 +:10362000CF93DF93CDB7DEB7AA970FB6F894DEBF7E +:103630000FBECDBFE4E5F4E088E08E0F9091F1007D +:1036400091938E13FBCF0E948D168091E80083FF2B +:103650001FC18091540490915504492F50E04A3085 +:10366000510508F015C1FA01EC59FF4F0C942132B5 +:10367000803881F0823809F00BC1809158048F7036 +:103680008093E9008091EB0085FB882780F91092F8 +:10369000E90006C08091500490915104911182601C +:1036A0009091E800977F9093E8008093F10010924A +:1036B000F100C8C0282F2D7F09F0EAC0882319F037 +:1036C000823061F0E5C080915604813009F0E0C09D +:1036D000933009F080E0809351042BC08091560410 +:1036E000811127C0809158048F7009F4D1C0809354 +:1036F000E9002091EB0020FF1CC0933021F4809161 +:10370000EB00806214C09091EB0090619093EB000D +:1037100021E030E0A90102C0440F551F8A95E2F76D +:103720004093EA001092EA008091EB008860809359 +:10373000EB001092E9008091E800877F86C081113C +:10374000A7C0109156041F778091E3008078812BE9 +:103750008093E3008091E800877F8093E8000E94D7 +:103760002D198091E80080FFFCCF8091E3008068F4 +:103770008093E300111102C082E001C083E08093D6 +:10378000530486C08058823008F082C0809156046D +:10379000909157048C3D53E0950779F583E08A8337 +:1037A0008AE289834FB7F894DE01139620E03EE069 +:1037B00051E2E32FF0E050935700E49120FF03C063 +:1037C000E295EF703F5FEF708E2F90E0EA3010F0DF +:1037D000C79601C0C0968D939D932F5F243149F702 +:1037E0004FBF8091E800877F8093E8006AE270E035 +:1037F000CE0101960E94341814C0AE014F5F5F4F96 +:10380000609158040E947B17BC01009709F440C0E6 +:103810009091E800977F9093E80089819A810E94B7 +:1038200097188091E8008B778093E80031C080384A +:1038300079F58091E800877F8093E80080914F04BC +:103840008093F1008091E8008E778093E8000E94D9 +:103850002D191EC081111CC0909156049230C0F4E5 +:103860008091E800877F8093E80090934F040E9446 +:103870002D1980914F04811106C08091E30087FDCE +:1038800002C081E001C084E0809353040E94791655 +:103890008091E80083FF0AC08091E800877F8093D1 +:1038A000E8008091EB0080628093EB00AA960FB64F +:1038B000F894DEBF0FBECDBFDF91CF911F91089569 +:1038C0000895CF93809153048823A1F0C091E9001B +:1038D000CF709091EC00892F817090FD80E8C82B0B +:1038E0001092E9008091E80083FD0E940F1BCF70C9 +:1038F000C093E900CF9108959093D3038093D203AE +:103900000895E091D203F091D303309721F0019014 +:10391000F081E02D099480E00895E091D203F091C8 +:10392000D303309721F00280F381E02D09940895AC +:10393000E091D203F091D303309721F00480F58118 +:10394000E02D099408952091D0033091D10382177E +:10395000930771F09093D1038093D003E091D20349 +:10396000F091D303309721F00680F781E02D099480 +:1039700008952091CE033091CF038217930771F001 +:103980009093CF038093CE03E091D203F091D303C1 +:10399000309721F00084F185E02D09940895089571 +:1039A0000C94CF1C0E9456280E94140E0E94DC2802 +:1039B0000C94902D5F926F927F928F929F92AF9214 +:1039C000BF92CF92DF92EF92FF920F931F93CF930C +:1039D000DF9300D000D01F92CDB7DEB70E94590E02 +:1039E0009DEDC92E93E0D92E03E010E0AA24A39404 +:1039F000B12C502E802F0E94D40E4C01F6017290F3 +:103A000062906F016826792661147104A1F4015057 +:103A1000110978F78FEF89838A831B820E945F28C0 +:103A20008160782F9D838C8349815A816B818D8140 +:103A30000E948A1D38C08091320481FD0E94DD0EF3 +:103A40002BE030E07501022E02C0EE0CFF1C0A9440 +:103A5000E2F7C70186219721892B09F129835A8230 +:103A60008E209F2091E0892809F490E09B830E949A +:103A70005F288160782F9D838C8349815A816B8177 +:103A80008D810E948A1D000F111FF801EB52FC4F1F +:103A900080819181E826F926F182E08204C02150DC +:103AA000310980F6B4CF0E94C82A1091D4030E9435 +:103AB000811C1817D1F00E94811C8093D4030F90B1 +:103AC0000F900F900F900F90DF91CF911F910F915A +:103AD000FF90EF90DF90CF90BF90AF909F908F902E +:103AE0007F906F905F900C94FE0D0F900F900F9051 +:103AF0000F900F90DF91CF911F910F91FF90EF905A +:103B0000DF90CF90BF90AF909F908F907F906F90FD +:103B10005F900895CF93DF93CDB7DEB72B970FB6A5 +:103B2000F894DEBF0FBECDBF4F83588769877A8771 +:103B30008B87DE01119686E0FD0111928A95E9F7E7 +:103B400085E0FE01379601900D928A95E1F7498153 +:103B50005A816B817C818D819E810E9401242B96EC +:103B60000FB6F894DEBF0FBECDBFDF91CF910895A1 +:103B7000CF93882309F4C2C0C82F823859F40E9419 +:103B8000811C81FDBBC089E30E94DB260E94A8271F +:103B900089E30CC0833879F40E94811C80FDAEC09B +:103BA00083E50E94DB260E94A82783E50E941D274B +:103BB000CF910C94A827843859F40E94811C82FD6F +:103BC0009DC087E40E94DB260E94A82787E4EECFF1 +:103BD0008CEF8C0F813A48F48C2F0E94F82C8111C5 +:103BE0008DC08C2F0E94DB26E3CF80E28C0F8830C3 +:103BF00048F4C77081E001C0880FCA95EAF70E94B7 +:103C00006127D6CF8BE58C0F833078F4C53A29F045 +:103C1000C63A31F083E890E005C081E890E002C048 +:103C200082E890E0CF910C94A31C88E58C0F83313F +:103C300008F064C0C83A39F1C93A41F1CA3A49F1C9 +:103C4000CB3A51F1CC3A59F1CD3A61F1C03B69F12F +:103C5000CE3A71F1CF3A79F1C13B81F1C23B89F1A2 +:103C6000C33B91F1C43B99F1C53BA1F1C63BA9F11E +:103C7000C73BB1F1C83BB9F1C93BC1F1CA3BC9F17E +:103C800080E090E038C082EE90E035C089EE90E0B0 +:103C900032C08AEE90E02FC085EB90E02CC086EB1E +:103CA00090E029C087EB90E026C08CEC90E023C028 +:103CB0008DEC90E020C083E891E01DC08AE891E09F +:103CC0001AC082E991E017C084E991E014C081E252 +:103CD00092E011C083E292E00EC084E292E00BC059 +:103CE00085E292E008C086E292E005C087E292E0B9 +:103CF00002C08AE292E0CF910C94B91CCF91089552 +:103D0000882309F44BC0823859F40E94811C81FF3A +:103D100045C089E30E94DB260E94A82789E30CC0E6 +:103D2000833871F40E94811C80FF38C083E50E94B3 +:103D3000DB260E94A82783E50E941D270C94A82754 +:103D4000843859F40E94811C82FF28C087E40E94B5 +:103D5000DB260E94A82787E4EFCF9CEF980F913ACB +:103D600058F390E2980F983050F4877091E001C0BA +:103D7000990F8A95EAF7892F0E946727DFCF9BE585 +:103D8000980F933020F480E090E00C94A31C885AA4 +:103D9000833120F480E090E00C94B91C08958823CE +:103DA00021F00E9461270C94A8270895882321F010 +:103DB0000E9467270C94A82708957F928F929F9264 +:103DC000AF92BF92CF92DF92EF92FF920F931F9329 +:103DD000CF93DF931F92CDB7DEB77C01C62E772E2F +:103DE000FC01058102950F70128111110E947E273E +:103DF0000E94D426882379F0112369F080E28C0D8B +:103E0000883048F082E00E94BD260E94D42691E0CE +:103E1000D82ED92601C0D12CE72DE295EF70F0E025 +:103E2000E259FF4F0C942132872D807F072D0F70B0 +:103E3000882311F00295007F112389F0002309F4F3 +:103E400099C180E28C0D883020F4802F0E94612778 +:103E500003C0802F0E9471270E94A8278BC18C2D40 +:103E60000E94801E002309F4C3C180E28C0D8830BB +:103E700020F4802F0E94672703C0802F0E9477279D +:103E80000E94A827B5C1872D807F972D9F70803213 +:103E900011F4892F03C0892F8295807FCC2021F0D7 +:103EA000F1E0CF16A1F01DC0112339F0002319F164 +:103EB000013009F50E9491279BC1002319F00130C0 +:103EC00009F496C189830E949427898110C1112326 +:103ED00021F0063008F08CC10EC0053008F088C112 +:103EE00006C1112359F0002331F0F701958190FFAD +:103EF00041C19F7095830E94CF1E7AC1002309F4AF +:103F0000F6C03EC1872D86958695837090E0009718 +:103F100019F0019761F06CC1112321F08C2D972DC0 +:103F2000937002C080E090E00E94A31C61C1112345 +:103F300021F08C2D972D937002C080E090E00E94BC +:103F4000B91C56C18C2D112319F00E94D02902C032 +:103F50000E94382A0E94BD2A4BC1872D837009F028 +:103F600052C0111145C18C2D829586958770880F9E +:103F7000880F9C2D9F70892E912CA12CB12C082E7E +:103F800004C0880C991CAA1CBB1C0A94D2F7C4FE5E +:103F900014C00FE010E020E030E0B901A80104C037 +:103FA000440F551F661F771F8A95D2F7CB01BA01C0 +:103FB000609570958095909503C060E070E0CB01AE +:103FC000272D26952695237030E02230310569F0A3 +:103FD0002330310589F0682979298A299B292130E4 +:103FE000310571F00E94492503C1682979298A2980 +:103FF0009B290E946525FCC00E944925C501B4018A +:104000000E942D25F5C0112319F0872D817001C064 +:104010008695882309F4ECC08C2D8295869587704F +:10402000880F880F9C2D9F70892E912CA12CB12C6C +:10403000082E04C0880C991CAA1CBB1C0A94D2F739 +:10404000C4FE14C00FE010E020E030E0B901A80188 +:1040500004C0440F551F661F771F8A95D2F7CB0106 +:10406000BA01609570958095909503C060E070E00E +:10407000CB01272D269526952370422F50E0423004 +:10408000510569F04330510589F0682979298A2959 +:104090009B294130510571F00E942326A9C068294F +:1040A00079298A299B290E943F26A2C00E942326A3 +:1040B000C501B4010E9407269BC08C2D90E0FC0135 +:1040C000E05EF109E531F10508F050C0E258FF4F1C +:1040D0000C9421320C2D0F70872D8F71112321F03C +:1040E0000E94A025802F07CF0E94C125802F0E940B +:1040F000D61E7EC0112341F0053008F079C0872D0F +:104100008F710E94E62574C0063008F071C0F7CFA9 +:10411000112339F0872D8F710E94A02569C01123CA +:10412000C9F3872D8F710E94C12562C0112329F028 +:10413000872D8F710E948B255BC00E94812558C0FE +:10414000112351F0172D1F71812F0E94A02563E0CC +:10415000812F0E94B4264CC081E00E94BD2602300F +:1041600008F446C082E00E94BD2642C0112331F00F +:10417000002381F28C2D0E94B81D3AC0002389F2E1 +:104180008C2D0E94801E34C0472D4F706C2DC701AE +:104190000E94E0060E94A5242BC0111129C0472DC2 +:1041A0004F7050E042305105B9F04CF441155105C3 +:1041B00081F041305105E1F40E94B82D19C043301F +:1041C000510569F04430510599F48C2D0E940A2E56 +:1041D0000FC00E94A12D0CC00E94D42D09C00E94C6 +:1041E000E72D06C0472D4F706C2DC7010E949F0A16 +:1041F000DD20F9F00E94B02680FD1BC0F70112827D +:104200000E94AA260E94A025C7010E9428210E9480 +:10421000AA260F90DF91CF911F910F91FF90EF9001 +:10422000DF90CF90BF90AF909F908F907F900C9435 +:10423000C1250F90DF91CF911F910F91FF90EF90CB +:10424000DF90CF90BF90AF909F908F907F90089518 +:104250000F931F93CF93DF93EC01888199812B817A +:104260003C81232BB9F09F3F11F48F3F99F0CE0191 +:104270000E949E08882371F0688179818A810E945A +:10428000A6268C010E945B260E942225B801CE0141 +:104290000E94DD1EDF91CF911F910F9108950E9422 +:1042A0007E270E948E270E9453270E94A8270E94E3 +:1042B0006E2B0E94BD2A80E090E00E94A31C80E04B +:1042C00090E00C94B91C0E946E270C944F210E9420 +:1042D0009B26292F22952F7030E02C3031054CF48D +:1042E0002A3031056CF42250310922303105A8F40E +:1042F00007C02C30310569F02F30310551F00DC069 +:10430000803F69F018F4803E40F409C0843F29F4EE +:1043100006C093FB882780F9089580E0089581E026 +:104320000895CF93DF9300D000D01F92CDB7DEB7B2 +:104330000F900F900F900F900F90DF91CF910895F5 +:10434000CF93DF9300D000D000D0CDB7DEB7269654 +:104350000FB6F894DEBF0FBECDBFDF91CF910895A9 +:104360001F93CF93DF93C091DD0316E08091DE03AE +:10437000C81799F0D0E01C9FF0011D9FF00D11248B +:10438000E152FC4F4081518162817381848195812A +:104390000E94A0212196C770E9CFDF91CF911F9194 +:1043A000089540910F045091100460911104709190 +:1043B000120480911304909114040C94A021809114 +:1043C000140482958F7009F054C0809111048823E1 +:1043D00009F44FC08091DD03A091DE0360910F04CA +:1043E000709110044091120450911304B6E08A17A2 +:1043F00009F43FC090E041155105C1F17F3F11F430 +:104400006F3FA1F1B89FF001B99FF00D1124E15267 +:10441000FC4F218172132AC02081621327C02281A0 +:10442000211124C0238134812417350710F4215031 +:104430003109241B350B283C3105C0F420911404AC +:104440002F7020612093140426E0289FF001299FFB +:10445000F00D1124EC51FC4F80818F7080618083BE +:104460008FE094E00E9428210C94B021019687707F +:10447000BECF0895CF92DF92EF92FF920F931F93DA +:10448000CF93DF93CDB7DEB762970FB6F894DEBF58 +:104490000FBECDBF8C0185E0F801DE011D960190B5 +:1044A0000D928A95E1F7D8014C9111965C91119784 +:1044B00012966C9112971396CD90DC9014973091D0 +:1044C0000F047091100480911204909113040097CE +:1044D00009F46BC17F3F19F43F3F09F466C1E090D6 +:1044E0001104EE2009F4C0C020911404C816D906A6 +:1044F00028F0F601E81BF90BCF0104C080959095D8 +:104500008C0D9D1DFF24F394883C910578F0F12CCF +:10451000207F09F0C6C07C2DD98AC88A89890E946B +:1045200091218FE094E00E942821B1C0822F807FEA +:1045300009F046C0751314C0341312C0611110C0C5 +:104540002F702061209314040E94D1218FE094E009 +:104550000E94282180911404D80115968C932EC0B6 +:10456000CD2819F15F3F11F44F3FF9F0F62E61119C +:104570001CC08091DD032091DE0336E0821709F430 +:104580005AC090E0389FF001399FF00D1124E1529C +:10459000FC4F7181571306C07081471303C07281AD +:1045A000711103C001968770E9CFF62E662309F4D6 +:1045B00018C180911404816080931404F12C11C1FE +:1045C000751308C0341306C0611104C0809114042F +:1045D000D801C3C04D875E878D859E856A8B0E94FA +:1045E00067216A898823E1F16623D1F120911404BF +:1045F000822F82958F7090E0029774F080910F0463 +:104600009091100498878F831986DB86CA862C8741 +:10461000CE0107960E94282186E0F801AFE0B4E0C1 +:1046200001900D928A95E1F70E94DF210E94D1212D +:10463000FF24F394D6C04D875E878D859E850E94AA +:104640009B26292F22952F7030E0223031050CF067 +:10465000BCC09F7009F0B6C0805E883008F4C1C04D +:10466000C8010E942821E4CFC816D90608F453C017 +:10467000F601E81BF90BCF01883C910508F450C006 +:10468000F12C7C2DD98AC88A89890E949121EFE07A +:10469000F4E086E0DF011D928A95E9F70E94D121BE +:1046A000A0C0751314C0341312C0611110C08091E2 +:1046B0001404F8018583C8010E94282186E0EFE0F8 +:1046C000F4E0DF011D928A95E9F7FE2C8AC04D8740 +:1046D0005E878D859E856A8B0E9467216A89882303 +:1046E00009F4BECF662309F4BBCF20911404822FB6 +:1046F00082958F7090E002970CF48ECF80910F041A +:10470000909110049A8389831B82DD82CC822E8350 +:10471000CE0101967FCF809590958C0D9D1DACCFDD +:10472000F62E662309F49CCF75132EC034132CC0CB +:104730002091140420FD1FC0822F82958F70D9F024 +:10474000D80115962C9315978F3049F08F5F982FCD +:104750009295907F822F8F70892B15968C93C8012C +:104760000E94282186E0F801AFE0B4E001900D92AC +:104770008A95E1F793CF86E0F801AFE0B4E00190CD +:104780000D928A95E1F72DC04D875E878D859E85B8 +:104790000E946721811140CF809114048160809331 +:1047A0001404C8010E9428211CC0662309F458CFB4 +:1047B0004D875E878D859E850E946721882309F439 +:1047C0004FCF2ACF811148CF0CC0243031050CF0D7 +:1047D00047CF9F7009F440CFF8019581907F09F091 +:1047E0003BCF8F2D62960FB6F894DEBF0FBECDBFC4 +:1047F000DF91CF911F910F91FF90EF90DF90CF90BD +:1048000008951F93CF93DF93CDB7DEB72C970FB6E4 +:10481000F894DEBF0FBECDBF4F83588769877A8774 +:104820008B879C87CE0107960E943A22882369F0E5 +:104830008F8198852A853B85232BF1F19F3F09F0D5 +:1048400063C08F3F09F060C037C086E0FE01379635 +:10485000DE01119601900D928A95E1F76F817885BE +:10486000EA85FB85309741F17F3F11F46F3F21F1DD +:104870002091DE0330E0C9010196877099274091AD +:10488000DD0350E08417950709F447C069837A83F4 +:10489000FD83EC8396E0929FD001939FB00D11248D +:1048A000A152BC4FFE01319601900D929A95E1F70D +:1048B0008093DE030E94B02116E08091DD03909189 +:1048C000DE038917C1F1189FC001112481529C4F4A +:1048D0000E943A22882379F1E091DD031E9FF001C6 +:1048E0001124E152FC4F40815181628173818481A6 +:1048F00095810E94A0218091DD0390E00196877050 +:1049000099278093DD03D9CF4F81588569857A85B2 +:104910008B859C850E94A021CFCF0E94632110929D +:10492000DE031092DD03EFE0F4E086E0DF011D928C +:104930008A95E9F7C1CF2C960FB6F894DEBF0FBE6B +:10494000CDBFDF91CF911F910895EF92FF920F930A +:104950001F93CF93DF938C01009709F46CC0F12C67 +:10496000EE24E394E8012196F8018491843740F421 +:10497000843008F051C0813081F0823019F15BC081 +:10498000853709F444C0A8F19CE7980F903708F0E8 +:1049900052C08F770E94801E41C00E5F1F4FFE01E4 +:1049A000C49180E28C0F883048F4C7708E2D01C00E +:1049B000880FCA95EAF70E94812714C08C2F0E94A5 +:1049C000B81D2DC00E5F1F4FFE01C49180E28C0FF9 +:1049D000883058F4C7708E2D01C0880FCA95EAF749 +:1049E0000E9487270E94A8271AC08C2F0E94801E31 +:1049F00016C00E5F1F4FFE01C491CC2381F08FE9DA +:104A00009FE00197F1F700C00000C150F6CF0E5FA4 +:104A10001F4FFE01F49003C00E94B81D8E018F2D20 +:104A2000882309F49FCFEFE9FFE03197F1F700C049 +:104A300000008150F5CFDF91CF911F910F91FF9032 +:104A4000EF90089508956093190470931A04809369 +:104A50001B0490931C040C944F210F931F930091FF +:104A6000190410911A0420911B0430911C04DC01DC +:104A7000CB01802B912BA22BB32B80931904909305 +:104A80001A04A0931B04B0931C041F910F910C9463 +:104A90004F210F931F930091190410911A04209134 +:104AA0001B0430911C04DC01CB0180239123A22341 +:104AB000B3238093190490931A04A0931B04B0931A +:104AC0001C041F910F910C944F210F931F93009181 +:104AD000190410911A0420911B0430911C04DC016C +:104AE000CB0180279127A227B327809319049093A5 +:104AF0001A04A0931B04B0931C041F910F910C94F3 +:104B00004F2110921504109216041092170410925F +:104B100018040C944F2141E050E060E070E004C0C4 +:104B2000440F551F661F771F8A95D2F740931504CF +:104B30005093160460931704709318040C944F213B +:104B400041E050E060E070E004C0440F551F661F74 +:104B5000771F8A95D2F78091150490911604A09141 +:104B60001704B0911804482B592B6A2B7B2B4093C8 +:104B700015045093160460931704709318040C9452 +:104B80004F2141E050E060E070E004C0440F551F49 +:104B9000661F771F8A95D2F740955095609570955E +:104BA0008091150490911604A0911704B0911804F7 +:104BB000482359236A237B234093150450931604FA +:104BC00060931704709318040C944F2141E050E057 +:104BD00060E070E004C0440F551F661F771F8A9580 +:104BE000D2F78091150490911604A0911704B0910A +:104BF0001804482759276A277B27409315045093A8 +:104C0000160460931704709318040C944F210F93AB +:104C10001F930091150410911604209117043091F0 +:104C20001804DC01CB01802B912BA22BB32B80939A +:104C3000150490931604A0931704B09318041F91C1 +:104C40000F910C944F210F931F9300911504109115 +:104C500016042091170430911804DC01CB01802345 +:104C60009123A223B3238093150490931604A09359 +:104C70001704B09318041F910F910C944F210F93B8 +:104C80001F93009115041091160420911704309180 +:104C90001804DC01CB0180279127A227B32780933A +:104CA000150490931604A0931704B09318041F9151 +:104CB0000F910C944F210895CF92DF92EF92FF92C3 +:104CC0000F931F93CF93DF938C01C0901904D09062 +:104CD0001A04E0901B04F0901C048091150490913C +:104CE0001604A0911704B0911804C82AD92AEA2AF8 +:104CF000FB2ACFE1D0E0D701C6010C2E04C0B69547 +:104D0000A795979587950A94D2F780FF06C0B801BA +:104D10008C2F0E94240D019721F4219760F780E0E9 +:104D200001C08C2FDF91CF911F910F91FF90EF90D9 +:104D3000DF90CF900895CF93DF93EC010E945C2623 +:104D4000BE010E94240DDF91CF910895CB010E94F6 +:104D50009B26089580911D048595859585950895D8 +:104D600080911D048770089598E0899F9001112417 +:104D7000262B20931D040C94A02520911D048095C2 +:104D8000822380931D04982F977069F430E0482F98 +:104D9000552747FD50952417350729F085958595AA +:104DA00085950C94C125089590911D04977081E01C +:104DB00009F480E0089590912D02992321F09091BB +:104DC0002E02911109C020912F0230913002F90179 +:104DD00032969FEF40E01FC0982F96959695969536 +:104DE0009F3050F5E0912F02F0913002E90FF11D54 +:104DF000877021E030E0A90102C0440F551F8A9559 +:104E0000E2F7CA019181892B818308959F3F39F090 +:104E10004F5F4E3041F051915813F8CF0DC05111F2 +:104E2000F7CF942FF5CF9F3F39F0F901E90FF11D2E +:104E300097FDFA9582830895089590912D02992304 +:104E400021F090912E02911109C020912F023091F2 +:104E50003002F9013296205F3F4F1FC0982F969580 +:104E6000969596959F30F0F4E0912F02F0913002E4 +:104E7000E90FF11D877021E030E0A90102C0440F65 +:104E8000551F8A95E2F7CA01809591818923818314 +:104E900008953196E217F30729F090819813F9CF1E +:104EA0001082F7CF089581E090E0E0912F02F09119 +:104EB0003002E80FF91F1082019680319105A9F7A1 +:104EC000089590913104892B809331040895809541 +:104ED0009091310489238093310408951092310414 +:104EE000089590913004892B809330040895809523 +:104EF00090913004892380933004089510923004F7 +:104F0000089590912F04892B80932F040895809504 +:104F100090912F04892380932F04089510922F04D9 +:104F2000089580931E04089510921E0408958091A0 +:104F30002F0290913002FC0131969C01205F3F4F7F +:104F400080E0919191118F5FE217F307D1F70895F7 +:104F5000E0912F02F0913002809131048083E09142 +:104F60002F02F0913002908180913004892B808350 +:104F7000E0912F02F0913002908180912F04892BD3 +:104F8000808380911E04882361F0E0912F02F091CC +:104F900030029081892B80830E9497278111109283 +:104FA0001E0480912F02909130020C948D1C20E001 +:104FB000009739F0AC0141505109842395232F5FAC +:104FC000F7CF822F089580915304843039F11092E5 +:104FD000330420E488E190E00FB6F894A89580931C +:104FE00060000FBE2093600080E00E940E0680E00B +:104FF0000E94FE0D83B7817F846083BF83B7816089 +:1050000083BF7894889583B78E7F83BF88E10FB67E +:10501000F89480936000109260000FBE0895089588 +:10502000089580E00E940E060E940F280E94590EEB +:105030000E9410280E94DE0E91E0811101C090E0D4 +:10504000892F08950E94632180E00E940E060E942D +:10505000902D0E94811C0C94FE0D1F920F920FB692 +:105060000F9211248F939F93AF93BF93809133043A +:10507000811113C08091340490913504A0913604BD +:10508000B09137044196A11DB11D809334049093D3 +:105090003504A0933604B0933704BF91AF919F912C +:1050A0008F910F900FBE0F901F90189582E084BDD6 +:1050B00093E095BD9AEF97BD80936E0008952FB74A +:1050C000F8948091340490913504A0913604B09105 +:1050D00037042FBF0895CF92DF92EF92FF920F9384 +:1050E0001F932FB7F8944091340450913504609188 +:1050F0003604709137042FBF6A017B01EE24FF2430 +:105100008C0120E030E0C016D106E206F30610F470 +:10511000415051099A01281B390BC9011F910F9168 +:10512000FF90EF90DF90CF9008951F920F920FB6EF +:105130000F9211248F939F93AF93BF938091340468 +:1051400090913504A0913604B09137040196A11DC9 +:10515000B11D8093340490933504A0933604B0932A +:105160003704BF91AF919F918F910F900FBE0F9019 +:105170001F9018950E947E19F8942FEF87EA91E608 +:10518000215080409040E1F700C0000087E090EBA4 +:10519000DC0180935E0490935F04A0936004B0935D +:1051A00061049CE088E10FB6F894A89580936000B4 +:1051B0000FBE90936000FFCF0E941B29811102C097 +:1051C0000E94F7280E942629809332040E943329E6 +:1051D00080935C0487FB882780F980932E020E94CD +:1051E0002A29682F70E080E090E00C9423256DEE72 +:1051F0007EEF80E090E00E94473260E082E090E045 +:105200000E94353260E083E090E00E94353260E039 +:1052100084E090E00E94353260E085E090E00E94FA +:10522000353260E086E090E00E9435326FEF87E033 +:1052300090E00C94353280E090E00E942F3221E023 +:105240008D3E9E4F09F020E0822F089582E090E08D +:105250000C94273283E090E00C942732682F83E08F +:1052600090E00C94353284E090E00C942732682F63 +:1052700084E090E00C94353286E090E00C94273284 +:10528000682F86E090E00C94353287E090E00C9433 +:105290002732682F87E090E00C94353280913A04F1 +:1052A00080FF0BC06091340285E0689FB00111243B +:1052B00075956795759567952BC081FF09C06091BD +:1052C000340285E0689FB00111247595679520C070 +:1052D00082FF07C06091340285E0689FB00111240D +:1052E00017C090913B049923D1F060913302961737 +:1052F00088F72091340285E0289F90011124929F25 +:10530000A001939F500D112470E0CA010E940D323C +:105310006038710540F46115710539F002C065E02F +:1053200070E0862F08958FE7089581E008958091B9 +:105330003A0480FF08C06091320270E0759567956D +:105340007595679521C081FF06C06091320270E0BB +:105350007595679519C082FF04C06091320270E0B4 +:1053600010C090913B049923C1F0609131029617CF +:10537000A0F780913202899FC001112470E00E9441 +:105380000D326038710528F46115710521F0862F02 +:1053900008958FE7089581E0089561E070E0F4CF0B +:1053A000803F21F40E944E29819504C0813F29F459 +:1053B0000E944E2980933E040895823F21F40E946A +:1053C0004E29819504C0833F29F40E944E29809381 +:1053D0003D040895893F19F40E94972905C08A3F2A +:1053E00031F40E949729819580933F0408958B3F63 +:1053F00021F40E949729819504C08C3F29F40E94D2 +:105400009729809340040895843F21F480913C04BF +:10541000816017C0853F21F480913C04826011C0F7 +:10542000863F21F480913C0484600BC0873F21F4C7 +:1054300080913C04886005C0883F31F480913C0431 +:10544000806180933C0408958D3F21F480913A045B +:1054500081600BC08E3F21F480913A04826005C0C8 +:105460008F3F29F480913A04846080933A04089530 +:10547000803F39F480913E0487FF6CC010923E0457 +:1054800069C0813F29F480913E041816BCF362C0C4 +:1054900090913D04823F29F497FF5CC010923D0437 +:1054A00059C0833F19F41916CCF354C0893F41F415 +:1054B00080913F0418160CF04DC010923F044AC072 +:1054C0008A3F29F480913F0487FF44C0F6CF8B3F89 +:1054D00039F48091400487FF3DC0109240043AC0E7 +:1054E0008C3F29F4809140041816BCF333C0843FEC +:1054F00021F480913C048E7F17C0853F21F4809178 +:105500003C048D7F11C0863F21F480913C048B7F49 +:105510000BC0873F21F480913C04877F05C0883F02 +:1055200031F480913C048F7E80933C0413C08D3F06 +:1055300021F480913A048E7F0BC08E3F21F480913C +:105540003A048D7F05C08F3F29F480913A048B7F08 +:1055500080933A0480913D0481110EC080913E04F5 +:1055600081110AC080913F04811106C080914004DE +:10557000811102C010923B0408958CE394E00E94D4 +:10558000981C0E945F2890933904809338040895F2 +:105590001F93CF93DF9380913804909139040E9438 +:1055A0006B28AC0190913B04992321F020913502A6 +:1055B00030E006C0209136028AE0289F9001112435 +:1055C0004217530708F486C080913D04C0913E0401 +:1055D000D0913F0410914004811107C0C11176C0E1 +:1055E000D11174C0111172C075C09F3F19F09F5F37 +:1055F00090933B04181624F40E944E2980933D0496 +:1056000080913D0487FF05C00E944E2981958093BB +:105610003D041C1624F40E944E2980933E04809180 +:105620003E0487FF05C00E944E29819580933E0469 +:1056300060913D04662339F1C0913E04CC2319F1F9 +:10564000772767FD7095872F972F0E942F2F23E3D1 +:1056500033E343E35FE30E943F300E94FC2E6093FC +:105660003D046C2F772767FD7095872F972F0E9439 +:105670002F2F23E333E343E35FE30E943F300E9495 +:10568000FC2E60933E041D1624F40E9497298093FB +:105690003F0480913F0487FF05C00E9497298195B0 +:1056A00080933F04111624F40E94972980934004AC +:1056B0008091400487FF05C00E94972981958093BF +:1056C0004004DF91CF911F910C94BD2A9F3F09F0B8 +:1056D0008ECF96CFDF91CF911F910895ECE3F4E048 +:1056E00085E0DF011D928A95E9F710923B04109244 +:1056F0003A040895833081F128F4813059F08230E2 +:10570000D1F00895853009F449C0B8F1863009F424 +:1057100056C0089580913602262F30E0280F311DA3 +:105720002F3F310524F4680F6093360208958FEF00 +:1057300080933602089580913502262F30E0280F9D +:10574000311D2F3F310524F4680F60933502089511 +:105750008FEF80933502089580913402262F30E038 +:10576000280F311D2F3F310524F4680F6093340258 +:1057700008958FEF80933402089580913302262F8D +:1057800030E0280F311D2F3F310524F4680F60935E +:10579000330208958FEF809333020895809132028F +:1057A000262F30E0280F311D2F3F310524F4680FDC +:1057B0006093320208958FEF8093320208958091B2 +:1057C0003102262F30E0280F311D2F3F310524F400 +:1057D000680F6093310208958FEF8093310208952E +:1057E000833011F128F4813049F0823091F008952E +:1057F000853081F120F18630C1F108958091360223 +:10580000681720F4861B80933602089510923602A2 +:10581000089580913502681720F4861B8093350225 +:10582000089510923502089580913402681720F48B +:10583000861B80933402089510923402089580915B +:105840003302681720F4861B809333020895109268 +:105850003302089580913202681720F4861B8093EA +:105860003202089510923202089580913102681731 +:1058700020F4861B8093310208951092310208951E +:105880000F931F93873208F048C08E3108F08DC007 +:10589000803109F477C008F5873009F461C068F4F5 +:1058A000863009F09DC080913204817F8E7F809385 +:1058B000320481E08093420494C08B3009F489C0A3 +:1058C0008E3009F08DC08091320482FB222720F9AE +:1058D00091E0922790FB82F95EC0863109F479C08D +:1058E00060F4813109F07CC00E94632190912E0206 +:1058F00081E0892780932E026CC0893109F469C048 +:105900008B3109F06DC08091320481FB222720F990 +:1059100091E0922790FB81F93EC0883309F459C089 +:1059200050F4893209F457C0853309F454C08732E2 +:1059300009F451C055C0833409F44DC028F48A33AA +:1059400008F44EC0895332C0883409F049C00E941F +:1059500063210E940E0F0E9495080E94BA2839C048 +:1059600090913204892F8095817080FB90F929F005 +:10597000966098609093320434C0997F977F90939B +:10598000320427C08091320483FB222720F991E062 +:10599000922790FB83F9809332049923D1F0809170 +:1059A000320481608093320414C08D5141E050E094 +:1059B00060E070E08A019B0104C0000F111F221FEC +:1059C000331F8A95D2F7C901B8010E9423250E948E +:1059D000632181E006C061E070E080E090E0F5CFF7 +:1059E00080E01F910F91089580E0089580E0089570 +:1059F000CF93C82F80914204813069F018F0823033 +:105A0000C9F184C0E0912F02F0913002808182328E +:105A100009F07EC007C0E0912F02F0913002808132 +:105A2000823261F48C2F0E94F42C811104C08C2FDF +:105A30000E94402C1DC081E090E01AC08C2F0E9473 +:105A4000F62C811114C0C43179F048F4CB3079F0D0 +:105A5000C03109F061C082E08093420408C0C932BD +:105A600019F0C83321F058C01092420455C081E0AB +:105A7000817054C0C93291F120F5C43179F1B0F48C +:105A8000C73009F047C08EE18093360282E38093ED +:105A900035028AE08093340284E18093330288E007 +:105AA0008093320288E28093310234C0CE51C630F6 +:105AB00088F5EC2FF0E0EA50FD4F8081809341049F +:105AC00029C0CE34E9F020F4CB3421F56AE013C0CC +:105AD000C13579F0C235F1F461E00DC08091410427 +:105AE000882319F01092410415C081E0809342048C +:105AF00015C061E006C0809141040E947A2B0AC063 +:105B00006AE0809141040E94F02B04C0109242048C +:105B100080E004C081E002C080E0AACFCF91089568 +:105B20000E941B29811102C00E94F7280E943C2973 +:105B300080935D0480FF02C0869501C080E00C94D4 +:105B40000E0680915D04982F9695292F30E0233022 +:105B500031054CF49F5F990F8170892B8160809390 +:105B60005D040E94402980915D0486950C940E0688 +:105B700080915D04982F969591F09158990F8170BE +:105B8000892B80935D048E7F91E009F490E08091F1 +:105B90005D0490FB80F980935D040E944029809110 +:105BA0005D0486950C940E0680915D04982F909567 +:105BB00090FB80F980935D040E94402980915D04F0 +:105BC00080FF02C0869501C080E00C940E06909183 +:105BD0005D04892F86958F5F8F779170843028F4CC +:105BE000880F892B80935D0402C090935D0480919F +:105BF0005D048E7F91E009F490E080915D0490FB5C +:105C000080F980935D040E94402980915D0486950F +:105C10000C940E0620915D04922F96958927982F5B +:105C2000990F822F8170892B80935D048E7F91E084 +:105C300009F490E080915D0490FB80F980935D040D +:105C40000E94402980915D0486950C940E068091F7 +:105C50005D04869508955058BB27AA270ED0D1C160 +:105C6000C2D130F0C7D120F031F49F3F11F41EF4BF +:105C7000B7C10EF4E095E7FB9FC1E92FD3D180F3C4 +:105C8000BA17620773078407950718F071F49EF539 +:105C9000EBC10EF4E0950B2EBA2FA02D0B01B9012C +:105CA00090010C01CA01A0011124FF27591B99F092 +:105CB000593F50F4503E68F11A16F040A22F232F9E +:105CC000342F4427585FF3CF469537952795A795EE +:105CD000F0405395C9F77EF41F16BA0B620B730B95 +:105CE000840BBAF09150A1F0FF0FBB1F661F771F06 +:105CF000881FC2F70EC0BA0F621F731F841F48F4BB +:105D0000879577956795B795F7959E3F08F0B3CF40 +:105D10009395880F08F09927EE0F9795879508952A +:105D200027D108F481E008950CD06BC163D140F015 +:105D30005AD130F021F45F3F19F03EC1511195C1A5 +:105D40004FC170D198F39923C9F35523B1F3951B33 +:105D5000550BBB27AA2762177307840738F09F5F8C +:105D60005F4F220F331F441FAA1FA9F333D00E2EFB +:105D70003AF0E0E830D091505040E695001CCAF768 +:105D800029D0FE2F27D0660F771F881FBB1F26172D +:105D900037074807AB07B0E809F0BB0B802DBF0100 +:105DA000FF2793585F4F2AF09E3F510568F004C1CA +:105DB0005CC15F3FECF3983EDCF386957795679581 +:105DC000B795F7959F5FC9F7880F911D96958795B1 +:105DD00097F90895E1E0660F771F881FBB1F6217D0 +:105DE00073078407BA0720F0621B730B840BBA0B8E +:105DF000EE1F88F7E095089504D06894B11135C17D +:105E0000089518D188F09F5790F0B92F9927B7516E +:105E1000A0F0D1F0660F771F881F991F1AF0BA956E +:105E2000C9F712C0B13081F01FD1B1E008951CC193 +:105E3000672F782F8827B85F39F0B93FCCF3869564 +:105E400077956795B395D9F73EF4909580957095C1 +:105E500061957F4F8F4F9F4F0895E89409C097FB3E +:105E60003EF490958095709561957F4F8F4F9F4F31 +:105E70009923A9F0F92F96E9BB279395F695879575 +:105E800077956795B795F111F8CFFAF4BB0F11F438 +:105E900060FF1BC06F5F7F4F8F4F9F4F16C08823DF +:105EA00011F096E911C0772321F09EE8872F762F15 +:105EB00005C0662371F096E8862F70E060E02AF056 +:105EC0009A95660F771F881FDAF7880F9695879542 +:105ED00097F9089588D018F011F08CD038F480C06C +:105EE000C4C0E92F9FD0B0F35523C9F3E7FB621775 +:105EF000730784079507A8F199F3E92FFF278823F3 +:105F00002AF03197660F771F881FDAF7952F5527EC +:105F1000442332F091505040220F331F441FD2F7D8 +:105F2000BB27E91BF50B621B730B840BB109C1F294 +:105F300022F4620F731F841FB11D31972AF0660F80 +:105F4000771F881FBB1FEFCF915050405AF041F090 +:105F5000882332F0660F771F881F91505040C1F799 +:105F6000939530C08695779567959F5FD9F7F8CF61 +:105F7000990F0008550FAA0BE0E8FEEF161617065A +:105F8000E807F907C0F012161306E407F50798F0C2 +:105F9000621B730B840B950B39F40A2661F0232BDB +:105FA000242B252B21F408950A2609F4A140A69557 +:105FB0008FEF811D811D089597F99F6780E870E03C +:105FC00060E008959F3F31F0915020F487957795D8 +:105FD0006795B795880F911D9695879597F90895C0 +:105FE0009FEF80EC089500240A94161617061806F1 +:105FF0000906089500240A941216130614060506CD +:106000000895092E0394000C11F4882352F0BB0F5D +:1060100040F4BF2B11F460FF04C06F5F7F4F8F4FC0 +:106020009F4F089557FD9058440F551F59F05F3FFB +:1060300071F04795880F97FB991F61F09F3F79F0AA +:1060400087950895121613061406551FF2CF46952C +:10605000F1DF08C0161617061806991FF1CF8695AE +:106060007105610508940895E894BB276627772792 +:10607000CB0197F908957CDF08F48FEF08950BD0DA +:10608000C0CFB1DF28F0B6DF18F0952309F094CF28 +:10609000A7CF1124EACFC6DFA0F3959FD1F3950FC8 +:1060A00050E0551F629FF001729FBB27F00DB11D9C +:1060B000639FAA27F00DB11DAA1F649F6627B00D2C +:1060C000A11D661F829F2227B00DA11D621F739F15 +:1060D000B00DA11D621F839FA00D611D221F749F23 +:1060E0003327A00D611D231F849F600D211D822F6A +:1060F000762F6A2F11249F5750408AF0E1F08823B1 +:106100004AF0EE0FFF1FBB1F661F771F881F9150BD +:106110005040A9F79E3F510570F04ECFA6CF5F3F8C +:10612000ECF3983EDCF3869577956795B795F795F0 +:10613000E7959F5FC1F7FE2B880F911D9695879578 +:1061400097F90895FA01EE0FFF1F309621053105EA +:1061500099F16115710561F48038BFE39B0749F13E +:1061600068949038810561F08038BFEF9B0741F05B +:10617000992342F5FF3FE1053105210511F1E8942E +:106180000894E795D901AA2329F4AB2FBE2FF85F15 +:10619000D0F310C0FF5F70F4A695E0F7F73950F028 +:1061A00019F0FF3A38F49F779F930CD00F9007FCBB +:1061B000905808953EF014CF60E070E080E89FE3CF +:1061C00008954FE79F775F934F933F932F939ED010 +:1061D0002F913F914F915F9152DF05C019F40EF05E +:1061E000EBCE42CFFDCE26DFC8F39638C0F707F8D6 +:1061F0000F92E8942BE33AEA48EB5FE74EDF0F9209 +:106200000F920F924DB75EB70F92C0D0E6E2F1E069 +:1062100016D04F915F91EF91FF91E595EE1FFF1F13 +:1062200049F0FE57E0684427EE0F441FFA95E1F766 +:106230004195550B32D00F9007FE26C00895DF938D +:10624000CF931F930F93FF92EF92DF927B018C010C +:10625000689405C0DA2EEF011EDFFE01E894A591D7 +:106260002591359145915591AEF3EF0106DDFE0183 +:106270009701A801DA9479F7DF90EF90FF900F91E2 +:106280001F91CF91DF9108959B01AC0160E070E018 +:1062900080E89FE349CD90CE95CECCDEE8F39923FC +:1062A000D9F3940F511DBBF39150504094F059F025 +:1062B000882332F0660F771F881F91505040C1F736 +:1062C0009E3F510544F7880F911D9695879597F944 +:1062D00008955F3FACF0983E9CF0BB27869577957C +:1062E0006795B79508F4B1609395C1F7BB0F58F760 +:1062F00011F460FFE8CF6F5F7F4F8F4F9F4FE3CF69 +:10630000B4CE0EF05FCE6CCE689456CE93DEC8F35A +:106310009923D1F3C6F3DF93CF931F930F93FF928B +:10632000C92FDD2788232AF02197660F771F881F42 +:10633000DAF720E030E040E85FEB9FE3883920F0B7 +:10634000803E30F021968F7787DCEEE4F1E003C0E9 +:1063500083DCEBE7F1E073DF8B01BE01EC01FB2E88 +:106360006F5771097595771F880B990B78DD28E1B8 +:1063700032E741E35FE38FDEAF2D9801AE01FF907E +:106380000F911F91CF91DF9178DC3BCEFA01DC01B8 +:10639000AA0FBB1F9B01AC01BF5728F4222733274C +:1063A000442750781FC0B75188F4AB2F002446957E +:1063B00037952795011CA395D2F3002069F0220F91 +:1063C000331F441FB395DAF30DD045CC613071050E +:1063D000A0E88A07B94630F49B01AC01662777270D +:1063E00088279078309621F020833183428353832D +:1063F0000895AA1BBB1B51E107C0AA1FBB1FA6170C +:10640000B70710F0A61BB70B881F991F5A95A9F75D +:1064100080959095BC01CD01089597FB072E16F449 +:10642000009407D077FD09D00E94F93107FC05D010 +:106430003EF4909581959F4F0895709561957F4F9B +:106440000895EE0FFF1F0590F491E02D0994F9993E +:10645000FECF92BD81BDF89A992780B50895A8E135 +:10646000B0E042E050E00C944F32262FF999FECF75 +:1064700092BD81BDF89A019700B4021639F01FBA97 +:1064800020BD0FB6F894FA9AF99A0FBE08950196B6 +:10649000272F0E9436320C943532DC01CB01FC01EF +:1064A000F999FECF06C0F2BDE1BDF89A319600B46D +:0E64B0000D9241505040B8F70895F894FFCF78 +:1064BE000AA7CF44000000410000DC440000004168 +:1064CE00000000000000804000005C4500004041DC +:1064DE00000000000000804052D0244500004041E2 +:1064EE000AA7CF44000000410000DC440000004138 +:1064FE00000000000000804052D0244500004041C2 +:10650E00000000000000804000005C45000040419B +:10651E000AA7CF44000000410000DC440000004107 +:10652E00000000000000804052D024450000404191 +:10653E0000000000000080400AA74F4500004041C7 +:10654E000AA7CF44000000410000DC4400000041D7 +:10655E00000000000000804052D0244500000041A1 +:10656E0000000000000080405CFF38450000004144 +:10657E00000000000000804052D024450000004181 +:10658E000AA7CF44000000410000DC440000004197 +:10659E00000000000000804052D0244500008041E1 +:1065AE0053D024450000404160970A450000004149 +:1065BE0054D0A444000000410000DC44000000411F +:1065CE0060970A450000A041640007000CFF000020 +:1065DE00003F6485151316F015BC15881501011FB3 +:1065EE00042808140A321E0002040507090B0C0EBB +:1065FE001011131517181A1C1D1F212324262829C4 +:10660E002B2D2F3032343537393B6966207965733F +:10661E000A097065616E7574206275747465720A0C +:10662E00656C73650A097269636520736E61636BCD +:10663E0073001F0F03764F5F6F7F496943790959C6 +:10664E0053633149803F5D8B803FF8BF803FCAE185 +:10665E00803F73ED803FCAE1803FF8BF803F5D8B86 +:10666E00803F3149803F0000803FF16D7F3F75EAEA +:10667E007E3F4C827E3F833F7E3F84287E3F833F1A +:10668E007E3F4C827E3F75EA7E3FF16D7F3F00007C +:10669E00803F3F4D3639DF0A920A5C0A230AB6095B +:1066AE00CF09E809010A01020304050607080900DB +:00000001FF diff --git a/keyboard/planck/keymaps/experimental/planck_experimental.hex b/keyboard/planck/keymaps/experimental/planck_experimental.hex new file mode 100644 index 0000000000..76984a07cc --- /dev/null +++ b/keyboard/planck/keymaps/experimental/planck_experimental.hex @@ -0,0 +1,1645 @@ +:100000000C948F050C94D3050C94D3050C94D30554 +:100010000C94D3050C94D3050C94D3050C94D30500 +:100020000C94D3050C94D3050C94F9190C94CB1AA9 +:100030000C942D280C94D3050C94D3050C94D30563 +:100040000C94D3050C9486060C94D3050C94D3051C +:100050000C94D3050C9495280C94D3050C94D305DB +:100060000C94D3050C94D3050C94D3050C94D305B0 +:100070000C94D3050C94D3050C94D3050C94D305A0 +:100080000C94DB0F0C94D3050C94D3050C94D3057E +:100090000C94D3050C94D3050C94D3050C94D30580 +:1000A0000C94D3050C94D3050C94D305EE060007ED +:1000B000140726072E074407920792079207920714 +:1000C0009207920752078107381B5A1B481C5A1B7C +:1000D000481C9F1BC21B481C171C2A1C141F141FE2 +:1000E000431F431F821FA21FF820F820AD1FF820D6 +:1000F0005D205D20C420CD20F820F2206A206A20F7 +:100100006A206A206A206A206A206A206A206A209F +:100110006A206A206A206A206A206A207A20882061 +:100120008F209620A02007634236B79BD8A71A39A4 +:10013000685618AEBAAB558C1D3CB7CC5763BD6D35 +:10014000EDFD753EF6177231BF000000803F0800DC +:100150000000BE922449123EABAAAA2ABECDCCCC46 +:100160004C3E00000080BEABAAAAAA3E00000000E0 +:10017000BF000000803F0000000000084178D3BBB2 +:100180004387D1133D190E3CC3BD4282AD2B3E685F +:10019000EC8276BED98FE1A93E4C80EFFFBE01C450 +:1001A000FF7F3F0000000000000000000000000092 +:1001B000000000010204060A0F17202C3A4A5D7164 +:1001C000879DB3C7DAE9F5FCFFFCF5E9DAC7B39D13 +:1001D00087715D4A3A2C20170F0A060402010000BD +:1001E00000000000000000002B0014001A000800AE +:1001F000150017001C0018000C00120013002A0044 +:10020000290004001600070009000A000B000D0079 +:100210000E000F0033003400E1001D001B0006003B +:1002200019000500110010003600370038002800C2 +:100230000530E000E200E30003302C002C00043025 +:100240005000510052004F002B0014001A0009000A +:1002500013000A000D000F0018001C0033002A00D4 +:100260002900040015001600170007000B001100FC +:1002700008000C0012003400E1001D001B00060005 +:10028000190005000E001000360037003800280065 +:100290001450E000E200E30003302C002C00043096 +:1002A0005000510052004F002B0034003600370040 +:1002B00013001C0009000A00060015000F002A00A8 +:1002C000290004001200080018000C0007000B00B1 +:1002D0001700110016003800E100330014000D0073 +:1002E0000E001B00050010001A0019001D00280058 +:1002F0000530E000E200E30003302C002C00043065 +:100300005000510052004F0035021E021F02200211 +:1003100021022202230224022502260227022A00A9 +:100320004C003A003B003C003D003E003F002D02E7 +:100330002E022F0230023102010040004100420033 +:100340004300440045003202640201000100010044 +:100350000100010001000100010001000100010095 +:10036000AB00AA00A900AE0035001E001F0020004F +:1003700021002200230024002500260027002A0057 +:100380004C003A003B003C003D003E003F002D0089 +:100390002E002F00300031000100400041004200DB +:1003A000430044004500320032000100010001001A +:1003B0000100010001000100010001000100010035 +:1003C000AB00AA00A900AE001E001E001E001E0009 +:1003D0001E001E001E001E001E001E001E001E002D +:1003E000000014001A000800150017001C00180077 +:1003F0000C00120013002F0000000400160007007C +:1004000009000A000B000D000E000F00330034003D +:100410000D3000000000060019000000000011006F +:1004200010000000000000000000000000000000BC +:1004300000000000000000000000000000000000BC +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:10048000000000000000000000000000000000006C +:10049000000000000000000000000000000000005C +:1004A000000000000000000000000000000000004C +:1004B000000000000000000000000000000000003C +:1004C000000000000000000000000000000000002C +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000000000000000000000FC +:1005000000000000000000000000000000000000EB +:1005100000000000000000000000000000000000DB +:1005200000000000000000000000000000000000CB +:1005300000000000000000000000000000000000BB +:1005400000000000000000000000000000000000AB +:10055000000000000000000000000000000000009B +:10056000000000000000000000000000000000008B +:10057000000000000000000000000000000000007B +:10058000000000000000000000000000000000006B +:10059000000000000000000000000000000000005B +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000000000000000001B +:1005E000000000000000000000000000000000000B +:1005F00000000000000000000000000000000000FB +:1006000000000000000000000000000000000000EA +:1006100000000000000000000000000000000000DA +:1006200000000000000000000000000000000000CA +:1006300000000000000000000000000000000000BA +:1006400000000000000000000000000000000000AA +:10065000000000000000000000000000000000009A +:10066000000000000000000000000000000000008A +:10067000000000000000000000000000000000007A +:10068000000000000000000000000000000000006A +:10069000000000000000000000000000000000005A +:1006A000000000000000000000000000000000004A +:1006B000000000000000000000000000000000003A +:1006C000000000000000000000000000000000002A +:1006D000000000000000000000000000000000001A +:1006E000000000000000000000000000000000000A +:1006F00000000000000000000000000000000000FA +:1007000000000000000000000000000000000000E9 +:1007100000000000000000000000000000000000D9 +:1007200000000000000000000000000000000000C9 +:1007300000000000000000000000000000000000B9 +:1007400000000000000000000000000000000000A9 +:100750000000000000000000000000000000000099 +:100760000000000000000000000000000000000089 +:100770000000000000000000000000000000000079 +:100780000000000000000000000000000000000069 +:100790000000000000000000000000000000000059 +:1007A0000000000000000000000000000000000049 +:1007B0000000000000000000000000000000000039 +:1007C0000000000000000000000000000000000029 +:1007D0000000000000000000000000000000000019 +:1007E00000000000000000000100005001000100B6 +:1007F00001000100010001000100010001004C00A6 +:10080000010001000100205021501350125000300F +:10081000013002300C3001000100275026502350D7 +:10082000245028502950010001000100010001005E +:1008300001000100010001000100010001000100B0 +:1008400001000100010001000000000000000000A4 +:100850002A2B28000000000000000000000000001B +:1008600000000029000000002C1E34202122243426 +:100870002627252E362D3738271E1F2021222324F8 +:1008800025263333362E37381F0405060708090A94 +:100890000B0C0D0E0F101112131415161718191A30 +:1008A0001B1C1D2F3130232D350405060708090AAE +:1008B0000B0C0D0E0F101112131415161718191A10 +:1008C0001B1C1D2F3130354C0000000000000000C3 +:1008D0000000000000000000000000000000000018 +:1008E0000000000000000000000101010101010002 +:1008F00001010101000000000000000000000000F4 +:1009000000000100010001010101010101010101DB +:1009100001010101010101010101010101010101C7 +:1009200001010100000001010000000000000000C2 +:1009300000000000000000000000000000000000B7 +:100940000000000101010100280354006800650057 +:10095000200050006C0061006E0063006B002000FE +:100960004B006500790062006F0061007200640056 +:1009700000002C034F007200740068006F006C00D0 +:1009800069006E0065006100720020004B00650088 +:10099000790062006F006100720064007300000063 +:1009A0000403090409026D00040100A0FA0904000F +:1009B000000103010100092111010001223F00078C +:1009C00005810308000A090401000103010200096E +:1009D0002111010001224D000705820308000A09C8 +:1009E0000402000103000000092111010001223668 +:1009F000000705830308000A09040300010300003F +:100A000000092111010001223900070584031000AB +:100A1000011201100100000008EDFE6060010001FC +:100A200002000105010906A101050719E029E715E2 +:100A30000025019508750181020508190129059510 +:100A400005750191029501750391010507190029AA +:100A50007715002501957875018102C0050109808F +:100A6000A101850216010026B7001A01002AB7006D +:100A7000751095018100C0050C0901A101850316BF +:100A80000100269C021A01002A9C02751095018122 +:100A900000C005010902A1010901A1000509190110 +:100AA000290515002501950575018102950175033C +:100AB00081010501093009311581257F95027508ED +:100AC000810609381581257F950175088106050C79 +:100AD0000A38021581257F950175088106C0C00579 +:100AE000010906A101050719E029E715002501956F +:100AF0000875018102950175088101050819012910 +:100B00000595057501910295017503910105071978 +:100B10000029FF150025FF950675088100C01124E6 +:100B20001FBECFEFDAE0DEBFCDBF04B603FE24C0A8 +:100B300080915E0490915F04A0916004B091610483 +:100B40008730904BA740B04BB9F410925E041092DE +:100B50005F04109260041092610414BE84B7877F12 +:100B600084BF88E10FB6F894809360001092600013 +:100B70000FBEE0E0F8E3099513E0A0E0B1E0EEEB92 +:100B8000F4E602C005900D92A030B107D9F714E049 +:100B9000A0E0B3E001C01D92AE35B107E1F70E94BD +:100BA0003F170C945D320C94000081E00895089585 +:100BB0000C94AF070C94D5050C94D7050E94272EF2 +:100BC000811105C010920203109201030DC081E251 +:100BD00090E00090030302C0880F991F0A94E2F787 +:100BE000909302038093010382E08093000380913D +:100BF0006F00826080936F00089590916F0081E094 +:100C0000911101C080E008950E94272E23E030E07A +:100C1000281B3109220F209304030895282F2F98B1 +:100C200080918000211108C0877F809380001092FE +:100C30008D0010928C001BC0886080938000233050 +:100C400019F48FEF9FEF0FC083E090E0821B9109B2 +:100C5000880F991F2FEF3FEFA90102C056954795C6 +:100C60008A95E2F7CA0190938D0080938C000C94D2 +:100C70000406CF93C82F0E94FD05409103038823EB +:100C800029F090916F009D7F90936F00C0930303B4 +:100C90008823D1F0209101033091020302C03695E0 +:100CA00027954A95E2F72F733327C90102C0880FB1 +:100CB000991FCA95E2F790930203809301038091F4 +:100CC0006F00826080936F00CF9108950E940406A8 +:100CD00084E080930303109200030895279A2F98CD +:100CE0008FEF9FEF90938700809386008AE0809338 +:100CF000800089E1809381000E94902D0C9466060B +:100D00000E946E066E9A769A0C9497071F920F9225 +:100D10000FB60F9211242F933F938F939F93EF93CE +:100D2000FF93E0910103F0910203CF0101969093AC +:100D30000203809301030090030302C0F695E79538 +:100D40000A94E2F7EF7380910003823019F4E032E5 +:100D500051F404C0813039F4EF3329F480916F00ED +:100D60008D7F80936F00F0E0E855FE4FE49121E025 +:100D700031E0E29FC001E39F900D11240090040335 +:100D800002C0969587950A94E2F790938D00809320 +:100D90008C00FF91EF919F918F913F912F910F9038 +:100DA0000FBE0F901F901895CF93DF93EC010E9418 +:100DB0002E29BE0180E090E0DF91CF910C94232595 +:100DC0000F931F93462F50E04E30510508F0AAC0F4 +:100DD000DC01FA01EA5AFF4F0C94213212968C91F1 +:100DE000882309F49FC000E010E0980140E064E02F +:100DF00070E080ED91E00E94591381E090E011C015 +:100E000012968C91882309F48DC000E010E09801BF +:100E100040E066E070E080E691E00E94591382E0D5 +:100E200090E00E94D4067EC012968C91882309F42B +:100E300079C000E010E0980140E068E070E080E9EF +:100E400091E00E94591384E090E0EBCF12968C91D0 +:100E5000882311F083E007C083E013C012968C91C1 +:100E6000882371F084E00E94A02582E00E94390668 +:100E70000E94DE0540E164E083E00E94BE0D52C0A6 +:100E800084E00E94C125F6CF12968C91882331F020 +:100E900085EE0E94B81D0E94E72D44C085EE0E9499 +:100EA000801E40C012968C918823E1F10E940E0FA3 +:100EB00000E010E0980140E066E070E080E391E03F +:100EC0000E94591384E00E94C12583E00E94C1253D +:100ED00080E10E94C12585E00E94A0250E941B2977 +:100EE000811102C00E94F7280E94332990E090935C +:100EF0005D0480935C04806880935C040E943729C1 +:100F000011C012968C91882369F000E010E09801DE +:100F100040E066E070E080E091E00E94591385E0D7 +:100F20000E94C12580E090E01F910F9108950F93DA +:100F30001F932FEF89EF90E0215080409040E1F720 +:100F400000C0000000E010E0980140E065E070E0C3 +:100F500080EF91E00E9459131F910F9108958091A5 +:100F60001003882309F45AC080910E0390910F0357 +:100F70000E946B288D3291400CF450C010921003E7 +:100F80000E9414088091080390910903099781F445 +:100F900080910A0390910B03892B51F480910C03EB +:100FA00090910D03892B21F48AE592E00E941508A7 +:100FB0008091080390910903049791F480910A03AA +:100FC00090910B03469761F480910C0390910D036F +:100FD000892B31F48BE00E94B81D8BE00E94801EAB +:100FE00080910803909109030497C1F480910A034A +:100FF00090910B03469791F480910C0390910D030F +:10100000079761F483EE0E94B81D86E10E94B81D27 +:1010100086E10E94801E83EE0C94801E089581E07C +:1010200008950C940F08089508950F931F93CF937C +:101030008C01F80124912223F9F030E0F901E85BFA +:10104000F74FC491F901E853F74F2491222359F047 +:1010500081EE0E94B81D8C2F0E94B81D8C2F0E941B +:10106000801E81EE04C08C2F0E94B81D8C2F0E9420 +:10107000801E0F5F1F4FDDCFCF911F910F910895FD +:101080000C94800680915503882309F448C0809110 +:10109000110390911203009779F40E945F289093B6 +:1010A0001203809311038091130390E0009771F471 +:1010B0008091140390E00AC00E946B2820911802CE +:1010C000309119022817390740F329C00197880F7A +:1010D000991F880F991FFC01EB5EFC4F60817181A5 +:1010E000828193810E94410FE091130384E0E89F85 +:1010F000F0011124EB5EFC4F60817181828193814C +:101100004FE050E00E94F9128091130390E00196A5 +:101110006091140370E00E940D32809313030C94CD +:10112000D805109257030C940E0F0895089581E08E +:10113000809357030C949608089508958F929F9278 +:10114000AF92BF92EF92FF920F931F93CF93DF93D3 +:10115000CDB7DEB7A3970FB6F894DEBF0FBECDBFF5 +:101160007C01FC0100811181C8010E945C26B8014C +:101170000E94A00A8C01B7010E941108882309F47B +:10118000CCC10032F0E51F0741F4F70182818823CA +:1011900009F458C00E94F013C0C10132F0E51F07E6 +:1011A00041F4F7018281882309F44CC00E94F913AD +:1011B000B4C10232F0E51F0751F4F70182818823A0 +:1011C00009F440C00E94EC138111F0CFE3CF033249 +:1011D000F0E51F0739F4F7018281882399F10E9415 +:1011E00097089BC10432F0E51F0739F4F7018281AB +:1011F000882341F10E94910890C10532F0E51F0754 +:1012000049F4F70182818823E9F080915703811125 +:10121000F1CFE5CF0632F0E51F0739F4F7018281FF +:10122000882381F00E9400140AC00732F0E51F07EE +:1012300049F4F7018281882329F00E940B140E944F +:101240009D086BC180915703811105C0F701828110 +:101250008111CFC018C1003E110579F4F7018281D8 +:10126000882309F44DC00E940E0F81E0809356033D +:10127000109255031092140350C1023E110559F407 +:10128000F70182818823E1F10E940E0F109256032C +:101290001092550342C1033E110591F4F70182817A +:1012A000882371F10E940E0F1092560381E0809303 +:1012B00055031092130310921203109211032DC1C3 +:1012C0000235110559F4F7018281882309F425C1FB +:1012D00080911802909119020A970DC001351105ED +:1012E00079F4F7018281882309F417C180911802EB +:1012F000909119020A9690931902809318020DC1D9 +:1013000040911C0283E2E7E3F2E0DE0111960190D6 +:101310000D928A95E1F7F701808121E030E02C0FF2 +:101320003D1F280F311DC90120911A0230911B0267 +:10133000FC01E20FF31F6081772767FD7095640F52 +:10134000711D882777FD8095982F0E942F2F20E010 +:1013500030E040E451E40E94942E4B015C01F7011F +:10136000218184E090E0821B9109BC01882777FDF0 +:101370008095982F0E942F2F9B01AC01C501B401CD +:101380000E942C2E9B01AC0160E070E080E090E4B4 +:101390000E94A23020E030E04CED50E40E943F304B +:1013A0004B015C01F70182818823D1F04FE050E0CE +:1013B000C501B4010E94F912809156038823A1F05F +:1013C0008091140324E0829FF0011124EB5EFC4F16 +:1013D00080829182A282B3828F5F8093140304C0C3 +:1013E000C501B4010E94410F0F3F110508F02ECF37 +:1013F00094C08091100381111FC0043130E51307A0 +:1014000009F051C00E94130881E0809310030E94EC +:101410005F2890930F0380930E031092070310929E +:1014200009031092080310920B0310920A03109202 +:101430000D0310920C0371C080910E0390910F0365 +:101440000E946B28883C910570F480910703E82F77 +:10145000F0E0EE0FFF1FE85FFC4F118300838F5F0A +:10146000809307035AC0043880E5180721F0053837 +:10147000104501F13AC0F7018281882341F01092B2 +:10148000050382E01EC0043830E5130759F580914A +:101490000503811106C086E20E94B81D86E20E9403 +:1014A000801E82E01CC00438F0E51F0741F30538B8 +:1014B0001045D9F4F7018281882331F01092060398 +:1014C00080E20E94CF1E29C080910603811106C0D0 +:1014D00087E20E94B81D87E20E94801E80E20E947F +:1014E000D61E1BC00538104529F381E08093050303 +:1014F00080930603C701A3960FB6F894DEBF0FBE14 +:10150000CDBFDF91CF911F910F91FF90EF90BF90D2 +:10151000AF909F908F900C94DA0580E0A3960FB661 +:10152000F894DEBF0FBECDBFDF91CF911F910F9119 +:10153000FF90EF90BF90AF909F908F900895089587 +:101540009CE0799FF001112490E3899FE00DF11D4B +:101550001124E60FF11DEE0FFF1FE851FE4F85919C +:1015600094910895880F991FFC01E859FF4F8591C8 +:1015700094910895880F991FFC01E851FE4F8591C1 +:10158000949108950F931F93CF93DF93EC018115EE +:1015900021E39207A0F5C11580E3D80708F0D7C072 +:1015A000C83ED105D8F4C03ED10508F007C2C83AFC +:1015B000D10578F4C53AD10508F06AC0C130D1052B +:1015C00009F463C008F4F7C1C430D10508F0F6C1CE +:1015D000F2C1CB3BD10508F466C0EDC1C11590E264 +:1015E000D90708F0AFC0C11521E0D20708F0E6C165 +:1015F000C03FD10508F4DFC18E0110651FC2C0389D +:1016000080E5D80700F5C03790E5D90708F0A3C0FA +:10161000C11520E5D20709F4ACC050F4CE019054B6 +:1016200080319F4008F0C7C1DF708E01106A06C28A +:10163000C13080E5D80709F4AEC0C43190E5D907C0 +:1016400008F4AFC0B8C1C33820E5D20709F48EC092 +:1016500050F4C13890E5D90709F482C008F083C07E +:1016600000E011EDEBC1C03181E5D80708F4A3C15A +:10167000C11597E5D90708F436C1CE0190578115F9 +:10168000904108F098C1DF7093C101E010E0D6C12D +:10169000C53AD10509F494C1C63AD10509F093C100 +:1016A00002E810E4CBC1C83AD10509F48FC1C93AA8 +:1016B000D10509F48EC1CA3AD10509F48DC1CB3ADE +:1016C000D10509F48CC1CC3AD10509F48BC1CD3ACE +:1016D000D10509F48AC1C03BD10509F489C1CE3ACC +:1016E000D10509F488C1CF3AD10509F487C1C13BBE +:1016F000D10509F486C1C23BD10509F485C1C33BBC +:10170000D10509F484C1C43BD10509F483C1C53BAB +:10171000D10509F482C1C63BD10509F481C1C73B9B +:10172000D10509F480C1C83BD10509F47FC1C93B8B +:10173000D10509F47EC1CA3BD10509F47DC100E0A1 +:1017400014E47CC1CE019F700E94BA0A78C1DD27E3 +:101750008E01106C73C1CF70DD278E01146D6EC1C8 +:1017600000E010ED6BC100E012ED68C100E013ED88 +:1017700065C10E9463210E940E0F0E9495088FEFA1 +:1017800094E32CE0815090402040E1F700C000003D +:101790000E94BA2853C18091320481608093320440 +:1017A0004DC10E941B29811102C00E94F7280E948E +:1017B000332990E090935D0480935C04C23080E50F +:1017C000D80721F480915C04816086C0C43090E524 +:1017D000D90721F480915C0482607EC0C63020E588 +:1017E000D20721F480915C04846076C0C83080E523 +:1017F000D80719F480915C0427C0CA3090E5D90756 +:1018000021F480915C04806167C0CC3020E5D20770 +:1018100021F480915C0480625FC0CE3080E5D807FF +:1018200021F480915C04806457C0C03190E5D907F1 +:1018300021F480915C0480684FC0C23120E5D2075A +:1018400029F480915C048460886046C0C33080E5E0 +:10185000D80721F480915C048E7F3EC0C53090E5AE +:10186000D90721F480915C048D7F36C0C73020E514 +:10187000D20721F480915C048B7F2EC0C93080E5B3 +:10188000D80719F480915C0426C0CB3090E5D907C5 +:1018900021F480915C048F7E1FC0CD3020E5D207FB +:1018A00021F480915C048F7D17C0CF3080E5D8078C +:1018B00021F480915C048F7B0FC0C13190E5D90782 +:1018C00021F480915C048F7707C0C331D04531F497 +:1018D00080915C048B7F877F80935C0480915C04A3 +:1018E0000E943729ABC08D2F99278F70992781309F +:1018F0009105D9F49E012370332702C0880F991FE8 +:101900002A95E2F79C688E0144E0000F111F4A956A +:10191000E1F700271370802B912B53E0CC0FDD1FD4 +:101920005A95E1F7C076DD272FC08230910531F45A +:10193000DC2FCC278E01016F106A80C083309105A7 +:1019400069F4CE018370992701E010E002C0000F16 +:10195000111F8A95E2F7C8019C680FC08430910579 +:10196000B9F4CE018370992701E010E002C0000FA6 +:10197000111F8A95E2F7C8019A6823E0CC0FDD1F9A +:101980002A95E1F7C07ED7708C010C2B1D2B56C019 +:101990008530910531F4DC2FCC278E01046F106A5D +:1019A0004DC0069709F04AC0CF71DD27DC2FCC2748 +:1019B0008E01106243C000E010E040C08E013EC0C6 +:1019C00001E810E43BC003E810E438C002EE14E480 +:1019D00035C009EE14E432C00AEE14E42FC005EB62 +:1019E00014E42CC006EB14E429C007EB14E426C071 +:1019F0000CEC14E423C00DEC14E420C003E815E45F +:101A00001DC00AE815E41AC002E915E417C004E98C +:101A100015E414C001E216E411C003E216E40EC09E +:101A200004E216E40BC005E216E408C006E216E480 +:101A300005C007E216E402C00AE216E4C801DF911D +:101A4000CF911F910F9108959CE0799FF00111248F +:101A500090E3899FE00DF11D1124E60FF11DEE0FBB +:101A6000FF1FE851FE4F85919491803E9105E0F46F +:101A7000803C910558F58133910509F46FC048F415 +:101A80008932910509F463C08A32910509F46DC069 +:101A900072C089339105E9F082389105D1F0853320 +:101AA000910509F44DC067C0833E910581F138F47A +:101AB000803E9105B9F0823E9105D9F05CC0863E2A +:101AC000910561F1873E9105A1F155C00E94B20ACE +:101AD000089520915C0420FD02C021FF4CC080EEDF +:101AE00090E049C080915C0480FFF9CF89E390E0E9 +:101AF00042C080915C0482FF0EC080915C0484FF30 +:101B000003C080E090E037C083EE90E034C0809165 +:101B10005C0482FFF2CF82EE90E02DC080915C04E5 +:101B200083FF0BC080915C0484FDEBCF87EE90E0D7 +:101B300022C080915C0483FFF5CF86EE90E01BC04D +:101B400080915C0485FF07C089E290E014C0809119 +:101B50005C0485FFF9CF85E390E00DC080915C04C3 +:101B600086FF07C08AE290E006C080915C0486FF91 +:101B7000F9CF81E390E00E94C20A0895CF92DF92EC +:101B8000EF92FF920F931F9301E010E020E030E00E +:101B90006801790104C0CC0CDD1CEE1CFF1C8A9589 +:101BA000D2F704C0000F111F221F331F6A95D2F70E +:101BB0000C291D292E293F29C0901504D090160408 +:101BC000E0901704F0901804C022D122E222F32200 +:101BD000842FC016D106E206F30641F41F910F913F +:101BE000FF90EF90DF90CF900C94A0251F910F9164 +:101BF000FF90EF90DF90CF900C94C1250C94DC0502 +:101C0000E82FF0E0E257FD4F8081E82FEF70F0E021 +:101C100082958F7021E030E0A90102C0440F551F6A +:101C20008A95E2F740A308950F931F93CF93DF9314 +:101C300085B7806885BF85B7806885BFC3E0D0E081 +:101C400001E010E0FE01E257FD4F8081E82FEF70C8 +:101C5000F0E021A182958F70A80102C0440F551FAA +:101C60008A95E2F7CA01822B81A38C2F0E94000E75 +:101C7000219740F78BE090E061E070E0FC01EE57C7 +:101C8000FD4F2081E22FEF70F0E042A122952F70EE +:101C9000DB0102C0AA0FBB1F2A95E2F79D01242B8E +:101CA00022A3019758F7DF91CF911F910F910C94C8 +:101CB0004008EF92FF920F931F93CF93DF9300E6BC +:101CC00013E0C3E0EE24E394F12CD5E08C2F0E94C6 +:101CD000000E8BE090E040E050E0FC01EE57FD4F3D +:101CE0006081E62FEF70F0E020A130E062956F7028 +:101CF00002C0359527956A95E2F720FD09C0970146 +:101D0000082E02C0220F331F0A94E2F7422B532BF6 +:101D1000019718F7F801929182918F018417950726 +:101D200021F051834083D0931D028C2F0E94000E1E +:101D3000C15060F680911D0287FD2CC081508093B8 +:101D40001D028F3F39F08FE99FE00197F1F700C046 +:101D5000000020C080915E0390915F039093670321 +:101D60008093660380915C0390915D03909365037B +:101D70008093640380915A0390915B039093630373 +:101D8000809362038091580390915903909361036B +:101D9000809360030E94420881E0DF91CF911F9100 +:101DA0000F91FF90EF900895E82FF0E0EE0FFF1FE6 +:101DB000E05AFC4F80819181089508950F931F93FD +:101DC000CF9308E613E0C0E0F801929182918F0171 +:101DD0000E94D727C80FF3E000361F07A9F78C2F02 +:101DE000CF911F910F9108950E941B29811102C06C +:101DF0000E94F7280E944529809347043E9A8091CB +:101E000071008D7F8093710082E0809390008AE161 +:101E10008093910081E080936A03089580916A0322 +:101E2000811102C00E94F40E1092BA031092B903FD +:101E3000809171008D7F80937100809190008F73ED +:101E40008093900010927C0310927B031092B30356 +:101E50001092B4031092B5031092B6031092B2031D +:101E60001092B103E1E9F3E0A1E8B3E0119211921D +:101E7000119211921D921D9283E0E13BF807B1F798 +:101E80000895CF92DF92EF92FF920F931F93CF931B +:101E9000DF9320917B03222309F484C06B017C0132 +:101EA00080916A03811102C00E94F40E01EB13E0DD +:101EB000C7E0D0E0A7019601F8019291829172915A +:101EC00062918F010E94902E811131C0FE01EE0FB0 +:101ED000FF1FEE0FFF1FEF56FC4F10821182128280 +:101EE0001382DE01AA0FBB1FAF57BC4F11961C9285 +:101EF0001E92C730D105E9F0219644815581668153 +:101F000077814083518362837383148215821682A2 +:101F1000178212968D919C91139711969C938E9394 +:101F200013961C921E92129734961296E2CF219726 +:101F300008F68091B9039091BA03019797FD05C007 +:101F40009093BA038093B90304C01092BA0310921D +:101F5000B9038091B9039091BA032091B7033091EE +:101F6000B8032817390724F01092B8031092B7036A +:101F7000892BC1F4809171008D7F809371008091D5 +:101F800090008F73809390001092B3031092B4036B +:101F90001092B5031092B6031092B2031092B103DF +:101FA00010927B03DF91CF911F910F91FF90EF90E3 +:101FB000DF90CF9008951F920F920FB60F921124C9 +:101FC0004F925F926F927F928F929F92AF92BF9249 +:101FD000CF92DF92EF92FF922F933F934F935F93B5 +:101FE0006F937F938F939F93AF93BF93CF93DF9321 +:101FF000EF93FF9380917B03882309F49BC1C091E9 +:10200000B903D091BA031C161D060CF093C1409081 +:102010006B0350906C0360906D0370906E0320E032 +:1020200030E0A901C301B2010E943B3018160CF048 +:1020300065C0C130D10509F452C08091B7039091B9 +:10204000B803BE010E940D327C019093B8038093C7 +:10205000B70380907D0390907E03A0907F03B090A3 +:10206000800320E030E040E85FE3C501B4010E9456 +:102070002C2E60937D0370937E0380937F03909357 +:102080008003F701EE0FFF1FEE0FFF1FEF56FC4F0F +:10209000A301920160817181828193810E94942EBB +:1020A00020E030E040E05EE30E943F309B01AC0165 +:1020B000C501B4010E943B3018168CF4C70101968B +:1020C000BE010E940D329093B8038093B703109223 +:1020D0007D0310927E0310927F0310928003E091A3 +:1020E000B703F091B803EE0FFF1FEE0FFF1FEF567F +:1020F000FC4F6081718182819381D0C0C090B30315 +:10210000D090B403E090B503F090B60320E030E047 +:10211000A901C701B6010E94902E2197882309F4D6 +:10212000A2C0FE01EE0FFF1FEE0FFF1FEF56FC4F88 +:1021300080809180A280B380A5019401C701B6017F +:102140000E94902E87FF31C0A501940160E070E0ED +:102150008CED93EC0E94942E20E030E040E451E4BA +:102160000E94942E20E030E040E05FE30E943F3088 +:102170009B01AC0160E070E080E090E40E94A2303E +:102180009B01AC01C501B4010E943F309B01AC0131 +:10219000C701B6010E94902E87FF07C0A7019601D4 +:1021A00060E070E08CED93E439C0A5019401C701B3 +:1021B000B6010E943B3018160CF055C0A5019401E1 +:1021C00060E070E08CED93E40E94942E20E030E01B +:1021D00040E451E40E94942E20E030E040E05FE3D0 +:1021E0000E943F309B01AC0160E070E080E090E431 +:1021F0000E94A2309B01AC01C501B4010E943F3096 +:102200009B01AC01C701B6010E943B3018165CF57A +:10221000A701960160E070E08CED93EC0E94942E93 +:1022200020E030E040E451E40E94942E20E030E0D1 +:1022300040E05FE30E943F309B01AC0160E070E052 +:1022400080E090E40E94A2309B01AC01C701B6017E +:102250000E943F306093B3037093B4038093B5033F +:102260009093B60313C0FE01EE0FFF1FEE0FFF1F8A +:10227000EF56FC4F80819181A281B3818093B3039B +:102280009093B403A093B503B093B6036091B303E6 +:102290007091B4038091B5039091B60320916803C7 +:1022A000309169032F3F4FEF340731F02F5F3F4FDD +:1022B00030936903209368030E9416146B017C011C +:1022C00020E034E244EF51E40E94902E87FF08C0E2 +:1022D00086EFC82E88E2D82E84EFE82E81E4F82E0F +:1022E00020E030E040E051E4C701B6010E943F30F9 +:1022F0009B01AC0160E074E284E79BE40E94942EB1 +:102300006B017C010E94012F7093970060939600EF +:1023100020911E0230911F02409120025091210213 +:10232000C701B6010E943F300E94012F70939900AF +:102330006093980080917C03882309F433C1C09096 +:102340007703D0907803E0907903F0907A0320E04F +:1023500030E0A901C701B6010E943B301816D4F540 +:1023600080916803909169038F3F2FEF920729F0C6 +:1023700001969093690380936803C701B6010E9498 +:10238000161420E030E040E051E40E943F309B0111 +:10239000AC0160E074E284E79BE40E94942E6B0140 +:1023A0007C010E94012F709397006093960020910A +:1023B0001E0230911F024091200250912102C7015C +:1023C000B6010E943F300E94012F709399006093E4 +:1023D000980008C0109297001092960010929900F1 +:1023E0001092980060917103709172036F5F7F4F3C +:1023F000709372036093710320919600309197005F +:1024000080E090E0232BF1F0C0919600D0919700EE +:102410000E942D2F6B017C01BE0180E090E00E94A4 +:102420002D2F9B01AC016091730370917403809117 +:102430007503909176030E94942E20E03FEF4FE7C2 +:1024400057E410C00E942D2F6B017C0120E030EE7C +:102450004FEF54E46091730370917403809175039E +:10246000909176030E943F309B01AC01C701B601F9 +:102470000E943B3087FD96C080916F038F5F8093F1 +:102480006F0390E020914304309144048217930736 +:10249000A0F080914E04882319F010926F030DC0B4 +:1024A000809171008D7F80937100809190008F7377 +:1024B0008093900010927C037DC080917003C09146 +:1024C0006F03811128C0C0904804D0904904E09067 +:1024D0004A04F0904B0420E030E0A901C701B601A6 +:1024E0000E943B301816BCF481E080937003109278 +:1024F0007703109278031092790310927A03C092B6 +:102500007303D0927403E0927503F0927603C15086 +:10251000C0936F0343C0109270031092690310922E +:102520006803E0914504F091460448E0C49FE00D43 +:10253000F11D112480819181A281B3818093770361 +:1025400090937803A0937903B0937A0320E030E06E +:1025500040E85EE364817581868197810E943F3007 +:102560006B017C0180912202682F70E080E090E096 +:102570000E942D2F20E030E048EC52E40E94942E7F +:102580009B01AC01C701B6010E943F306093730309 +:102590007093740380937503909376031092720383 +:1025A000109271038091470480FD04C010927C0357 +:1025B00010927B03FF91EF91DF91CF91BF91AF918B +:1025C0009F918F917F916F915F914F913F912F914B +:1025D000FF90EF90DF90CF90BF90AF909F908F9043 +:1025E0007F906F905F904F900F900FBE0F901F9055 +:1025F0001895CF92DF92EF92FF92CF93DF936B010A +:102600007C01EA0180916A03811102C00E94F40EEC +:102610008091470480FF46C08091B9039091BA032E +:1026200008970CF03FC0809171008D7F80937100FE +:1026300080917C0381110E940E0F81E080937B03C7 +:10264000109269031092680320E030E0A901C701ED +:10265000B6010E943B301816DCF48091B9039091CA +:10266000BA03FC01EE0FFF1FEE0FFF1FEF56FC4FEA +:10267000C082D182E282F382FC01EE0FFF1FEF578E +:10268000FC4FD183C08301969093BA038093B90322 +:1026900080917100826080937100809190008068C9 +:1026A00080939000DF91CF91FF90EF90DF90CF90DB +:1026B00008958F929F92AF92BF92CF92DF92EF9246 +:1026C000FF920F931F93CF93DF93EC017B01D42EE6 +:1026D0004801590180916A03811102C00E94F40EE1 +:1026E0008091470480FF6BC0809171008D7F809343 +:1026F000710080917B0381110E940E0F81E0809315 +:102700007C03D0934604C0934504F0924404E092C5 +:102710004304D0924E048092480490924904A092BF +:102720004A04B0924B0410927D0310927E031092E3 +:102730007F031092800310926F0388819981AA8190 +:10274000BB818093770390937803A0937903B09330 +:102750007A0320E030E040E85EE36C817D818E8189 +:102760009F810E943F306B017C0180912202682F83 +:1027700070E080E090E00E942D2F20E030E048ECF7 +:1027800052E40E94942E9B01AC01C701B6010E9445 +:102790003F30609373037093740380937503909339 +:1027A000760310927203109271038091710082601F +:1027B0008093710080919000806880939000DF91F9 +:1027C000CF911F910F91FF90EF90DF90CF90BF902E +:1027D000AF909F908F9008958091470481700895E5 +:1027E000809147048160809347040E9449290C949A +:1027F0009C08809147048E7F809347040C9449295C +:102800008091BB0390E0019666E070E00E940D327B +:102810008093BB0308958091BB0390E0019766E02D +:1028200070E00E940D328093BB0308958F929F92B7 +:10283000AF92BF92CF92DF92EF92FF920F931F93CE +:10284000CF93DF936B017C01C0916803D091690342 +:10285000BE0180E090E00E942D2F4B015C01A7019A +:10286000960160E070E08CE594E40E94942E9B0158 +:10287000AC01C501B4010E943F300E94012F20919C +:10288000BB03233009F473C028F4222351F0213014 +:10289000E9F02CC1243009F4A0C0253009F4E0C0CF +:1028A00025C180E090E0A0E0BFE380931E029093FA +:1028B0001F02A0932002B093210210926B0310928A +:1028C0006C0310926D0310926E0310C110926B0393 +:1028D00010926C0310926D0310926E0364317105B7 +:1028E00040F46A30710560F520E030E040E85EE3D6 +:1028F0002BC0693C710508F0AAC080E090E00E94FE +:102900002D2F20E030E040EA51E40E942B2E20E001 +:1029100030E044E353E40E94942E9B01AC010E94FA +:102920003F3020E030E040E05EE30E943F309B011A +:10293000AC0160E070E080E09EE30E942B2E44C07A +:1029400020E030E040E05FE3C701B6010E943F3085 +:102950006B017C0180E090E0A0E0BEE380931E026A +:1029600090931F02A0932002B0932102BFC0109247 +:102970006B0310926C0310926D0310926E034AE089 +:10298000469F9001479F300D1124C90168EB7BE001 +:102990000E94F931BC016C5D754077FF03C07195F1 +:1029A00061957109882777FD8095982F0E942F2FB8 +:1029B0002EE333EC4EE259E30E943F3020E030E05A +:1029C00040EC5EE30E942C2E60931E0270931F0267 +:1029D000809320029093210289C010926B03109281 +:1029E0006C0310926D0310926E03CE0183709927D1 +:1029F000892BE1F0BE016170772780E090E00E94B2 +:102A00002D2F20E030E040E05EE30E943F3020E0E8 +:102A100030E040E45FE30E942C2E60931E0270932E +:102A20001F0280932002909321020CC080E090E06E +:102A3000A0E0BFE380931E0290931F02A0932002A8 +:102A4000B0932102C770DD27CD2B09F04FC0109243 +:102A50001E0210921F02109220021092210246C004 +:102A600010926B0310926C0310926D0310926E0320 +:102A700000E010E020E03FE300931E0210931F02ED +:102A800020932002309321026739710578F180E0AC +:102A900090E00E942D2F20E030E047E153E40E94B7 +:102AA0002B2E20E030E04AE754E40E94942E20E0F0 +:102AB00030E048E452E40E943F3020E030E040EA59 +:102AC00051E40E94712F0E94FC2E660F771F660F43 +:102AD000771FFB01EE56FD4F2081318142815381EA +:102AE000C701B6010E943F306B017C01C701B601EE +:102AF000DF91CF911F910F91FF90EF90DF90CF90DA +:102B0000BF90AF909F908F9008958091CC030895CF +:102B1000CF93DF9300D01F92CDB7DEB79C01809199 +:102B20005304843019F593E099833B832A8390936F +:102B3000E9008FEF9091E800815095FD06C095ED7A +:102B40009A95F1F700008111F5CF8091E80085FF9B +:102B50000DC040E050E063E070E0CE0101960E94BD +:102B6000E9178091E8008E778093E8000F900F902E +:102B70000F90DF91CF910895CF93DF9300D01F92F4 +:102B8000CDB7DEB720915304243021F522E029830C +:102B90009B838A8383E08093E9008FEF9091E80024 +:102BA000815095FD06C095ED9A95F1F700008111D1 +:102BB000F5CF8091E80085FF0DC040E050E063E074 +:102BC00070E0CE0101960E94E9178091E8008E77AF +:102BD0008093E8000F900F900F90DF91CF910895B0 +:102BE000209153042430F1F422E02093E9002FEFE8 +:102BF0003091E800215035FD06C035ED3A95F1F7EA +:102C000000002111F5CF2091E80025FF0BC040E026 +:102C100050E065E070E00E94E9178091E8008E774F +:102C20008093E8000895CF93DF93EC0190915304D3 +:102C3000943009F046C080912D028823D9F080910C +:102C40002E028823B9F09093E9008FEF9091E8006D +:102C5000815095FD06C095E19A95F1F7000081112C +:102C6000F5CF8091E80085FF2CC040E050E060E1A6 +:102C700070E017C081E08093E9008FEF9091E80049 +:102C8000815095FD06C095ED9A95F1F700008111F0 +:102C9000F5CF8091E80085FF14C040E050E068E087 +:102CA00070E0CE010E94E9178091E8008E77809352 +:102CB000E80080E1FE01ACEBB3E001900D928A9553 +:102CC000E1F7DF91CF91089580915204811109C0FD +:102CD0000E947E190E94DB198091E200846080933B +:102CE000E2000895109252040895089508950C94F6 +:102CF000222842E061EC81E00E94F81842E061EC99 +:102D000082E00E94F81842E061EC83E00E94F8182B +:102D100042E161EC84E00C94F81880915504833012 +:102D200009F455C030F4813071F0823009F48EC05E +:102D300008958A3009F47AC08B3009F460C0893074 +:102D400009F09CC020C080915404813A09F096C0DB +:102D50008091E800877F8093E800809158049091EB +:102D60005904892B21F460E18CEB93E003C060E00F +:102D700080E090E070E00E9434188091E8008B774A +:102D80008093E800089580915404813209F076C060 +:102D90008091580490915904009719F0039709F015 +:102DA0006DC08091E800877F8093E8008091E80003 +:102DB00082FD05C0809153048111F8CF5FC08091DE +:102DC000F1008093CC038091E8008B7753C0809111 +:102DD0005404813A09F052C08091580490915904EA +:102DE000892B09F04BC08091E800877F8093E80031 +:102DF0008091E80080FFFCCF80912D0236C0809149 +:102E000054048132D9F58091580490915904892B4A +:102E1000A9F58091E800877F8093E8000E942D1932 +:102E20008091560480932D020C9463218091540468 +:102E3000813221F58091E800877F8093E8000E942D +:102E40002D19809157048093CD03089580915404E7 +:102E5000813AA1F48091E800877F8093E800809117 +:102E6000E80080FFFCCF8091CD038093F10080913A +:102E7000E8008E778093E8000C942D19089584B7AC +:102E8000877F84BF88E10FB6F8948093600010922A +:102E900060000FBE90E080E80FB6F8948093610068 +:102EA000909361000FBE0E94D01C0E947E190E9468 +:102EB000DB198091E20084608093E20078940E94A4 +:102EC000611C0E94D21C83E292E00E947C1C8091D3 +:102ED0005304853069F40E94E327809151048823CC +:102EE000B1F30E941128882391F30E94D317EFCFEA +:102EF0000E94DA1CECCF292F332723303105C9F08B +:102F000064F42130310581F02230310509F043C0ED +:102F10008DE690E024EA39E042C021323105F1F03B +:102F20002232310541F137C082E190E021E13AE0FF +:102F300036C099278130910541F08230910541F0EA +:102F4000892B49F5E0EAF9E005C0E2E7F9E002C0C3 +:102F5000E8E4F9E0849190E09F0121C06430D8F466 +:102F6000E62FF0E0EE0FFF1FE251FD4F208131818F +:102F700089E090E014C0643070F470E0FB01EE0F63 +:102F8000FF1FEA51FD4F20813181FB01EE51FD4FC2 +:102F9000808190E004C080E090E020E030E0FA0121 +:102FA00031832083089580E189BD82E189BD09B420 +:102FB00000FEFDCF8091D8008F7D8093D800809156 +:102FC000E00082608093E0008091E00081FDFCCF12 +:102FD0000895CF92DF92EF92FF920F931F93CF93BA +:102FE000DF93EC018B016A010E944C19811133C0FF +:102FF000C114D10439F0F60180819181081B190BAD +:10300000C80FD91FE12CF12C0115110519F1809180 +:10301000E80085FD16C08091E8008E778093E80077 +:10302000C114D10449F0F60180819181E80EF91EA6 +:10303000F182E08285E00FC00E944C19882321F3C1 +:103040000AC089918093F10001501109FFEFEF1A36 +:10305000FF0ADACF80E0DF91CF911F910F91FF90AF +:10306000EF90DF90CF90089520915A0430915B0447 +:103070002617370748F06115710539F42091E800EB +:103080002E772093E80001C0B90140E06115710579 +:10309000A9F120915304222309F443C0253009F4F7 +:1030A00042C02091E80023FD40C02091E80022FDAD +:1030B00032C02091E80020FFE9CF4091F300209139 +:1030C000F20030E0342BFC01CF016115710559F09D +:1030D0002830310540F481918093F10061507109ED +:1030E0002F5F3F4FF1CF41E02830310509F040E03C +:1030F0002091E8002E772093E800C8CF4111C9CF76 +:103100000AC080915304882361F0853061F080917A +:10311000E80083FD0AC08091E80082FFF2CF80E0E2 +:10312000089582E0089583E0089581E00895209154 +:103130005A0430915B042617370748F06115710572 +:1031400039F42091E8002E772093E80001C0B901FE +:10315000FC0120E06115710591F1809153048823F1 +:1031600009F440C0853009F43FC08091E80083FD38 +:103170003DC08091E80082FD2FC08091E80080FF73 +:10318000E9CF2091F3008091F20090E0922B61153D +:10319000710559F08830910540F424912093F10095 +:1031A0003196615071090196F2CF21E0089709F03C +:1031B00020E08091E8008E778093E800CBCF21114A +:1031C000CCCF0AC080915304882361F0853061F030 +:1031D0008091E80083FD0AC08091E80082FFF2CF71 +:1031E00080E0089582E0089583E0089581E00895E5 +:1031F000982F973058F59093E900981739F070910F +:10320000EC002091ED005091F00003C0242F762FA8 +:1032100050E021FF19C03091EB003E7F3093EB006E +:103220003091ED003D7F3093ED003091EB00316047 +:103230003093EB007093EC002093ED005093F0007E +:103240002091EE0027FF07C09F5FD3CF8F70809340 +:10325000E90081E0089580E008958091540487FF9B +:1032600011C08091E80082FD05C080915304811156 +:10327000F8CF11C08091E8008B770BC08091530488 +:10328000882349F08091E80080FFF8CF8091E80022 +:103290008E778093E80008952091E4003091E50056 +:1032A00095E64091EC00842F817040FF22C0809110 +:1032B000E80080FD1CC080915304882391F0853084 +:1032C00091F08091EB0085FD10C04091E400509199 +:1032D000E5004217530729F39A01915011F784E052 +:1032E000089582E0089583E0089581E0089580E0E4 +:1032F00008954091E80042FFDECF08950E94EC1946 +:103300000E94F419E0EEF0E0808181608083E8EDB6 +:10331000F0E080818F77808319BCA7EDB0E08C91BD +:103320008E7F8C9380818F7E8083109252040895CB +:103330000F931F93CF93DF930E94EC190E94F4190F +:10334000C8EDD0E088818F77888388818068888302 +:1033500088818F7D888319BC1092530410924F048A +:10336000109251041092500400EE10E0F801808198 +:103370008B7F808388818160888342E060E080E089 +:103380000E94F818E1EEF0E080818E7F8083E2EE0B +:10339000F0E0808181608083808188608083F80193 +:1033A00080818E7F8083888180618883DF91CF9147 +:1033B0001F910F910895E8EDF0E080818F7E80836A +:1033C000E7EDF0E080818160808384E082BF81E06E +:1033D000809352040C949819E8EDF0E080818E7F80 +:1033E00080831092E20008951092DA001092E100BA +:1033F00008951F920F920FB60F9211242F933F93AF +:103400004F935F936F937F938F939F93AF93BF93EC +:10341000EF93FF938091E10082FF0BC08091E20067 +:1034200082FF07C08091E1008B7F8093E1000E94C2 +:10343000601C8091DA0080FF1FC08091D80080FF5F +:103440001BC08091DA008E7F8093DA008091D900D2 +:1034500080FF0DC080E189BD82E189BD09B400FE15 +:10346000FDCF81E0809353040E94641605C019BC0F +:10347000109253040E9472168091E10080FF19C0DF +:103480008091E20080FF15C08091E2008E7F8093E2 +:10349000E2008091E20080618093E2008091D80098 +:1034A00080628093D80019BC85E0809353040E9409 +:1034B00076168091E10084FF30C08091E20084FFA5 +:1034C0002CC080E189BD82E189BD09B400FEFDCF39 +:1034D0008091D8008F7D8093D8008091E1008F7E0D +:1034E0008093E1008091E2008F7E8093E2008091E2 +:1034F000E20081608093E20080914F04882311F004 +:1035000084E007C08091E30087FD02C081E001C034 +:1035100083E0809353040E9477168091E10083FF3B +:1035200029C08091E20083FF25C08091E100877F60 +:103530008093E10082E08093530410924F048091C5 +:10354000E1008E7F8093E1008091E2008E7F809386 +:10355000E2008091E20080618093E20042E060E05E +:1035600080E00E94F8188091F00088608093F0005D +:103570000E947516FF91EF91BF91AF919F918F912E +:103580007F916F915F914F913F912F910F900FBE5F +:103590000F901F9018951F920F920FB60F92112443 +:1035A0002F933F934F935F936F937F938F939F934B +:1035B000AF93BF93CF93DF93EF93FF93C091E90055 +:1035C000CF708091EC00D82FD17080FDD0E81092A0 +:1035D000E9008091F000877F8093F00078940E944A +:1035E0000F1B1092E9008091F00088608093F0003A +:1035F000CD2BCF70C093E900FF91EF91DF91CF9178 +:10360000BF91AF919F918F917F916F915F914F91FA +:103610003F912F910F900FBE0F901F9018951F9301 +:10362000CF93DF93CDB7DEB7AA970FB6F894DEBF7E +:103630000FBECDBFE4E5F4E088E08E0F9091F1007D +:1036400091938E13FBCF0E948D168091E80083FF2B +:103650001FC18091540490915504492F50E04A3085 +:10366000510508F015C1FA01EC59FF4F0C942132B5 +:10367000803881F0823809F00BC1809158048F7036 +:103680008093E9008091EB0085FB882780F91092F8 +:10369000E90006C08091500490915104911182601C +:1036A0009091E800977F9093E8008093F10010924A +:1036B000F100C8C0282F2D7F09F0EAC0882319F037 +:1036C000823061F0E5C080915604813009F0E0C09D +:1036D000933009F080E0809351042BC08091560410 +:1036E000811127C0809158048F7009F4D1C0809354 +:1036F000E9002091EB0020FF1CC0933021F4809161 +:10370000EB00806214C09091EB0090619093EB000D +:1037100021E030E0A90102C0440F551F8A95E2F76D +:103720004093EA001092EA008091EB008860809359 +:10373000EB001092E9008091E800877F86C081113C +:10374000A7C0109156041F778091E3008078812BE9 +:103750008093E3008091E800877F8093E8000E94D7 +:103760002D198091E80080FFFCCF8091E3008068F4 +:103770008093E300111102C082E001C083E08093D6 +:10378000530486C08058823008F082C0809156046D +:10379000909157048C3D53E0950779F583E08A8337 +:1037A0008AE289834FB7F894DE01139620E03EE069 +:1037B00051E2E32FF0E050935700E49120FF03C063 +:1037C000E295EF703F5FEF708E2F90E0EA3010F0DF +:1037D000C79601C0C0968D939D932F5F243149F702 +:1037E0004FBF8091E800877F8093E8006AE270E035 +:1037F000CE0101960E94341814C0AE014F5F5F4F96 +:10380000609158040E947B17BC01009709F440C0E6 +:103810009091E800977F9093E80089819A810E94B7 +:1038200097188091E8008B778093E80031C080384A +:1038300079F58091E800877F8093E80080914F04BC +:103840008093F1008091E8008E778093E8000E94D9 +:103850002D191EC081111CC0909156049230C0F4E5 +:103860008091E800877F8093E80090934F040E9446 +:103870002D1980914F04811106C08091E30087FDCE +:1038800002C081E001C084E0809353040E94791655 +:103890008091E80083FF0AC08091E800877F8093D1 +:1038A000E8008091EB0080628093EB00AA960FB64F +:1038B000F894DEBF0FBECDBFDF91CF911F91089569 +:1038C0000895CF93809153048823A1F0C091E9001B +:1038D000CF709091EC00892F817090FD80E8C82B0B +:1038E0001092E9008091E80083FD0E940F1BCF70C9 +:1038F000C093E900CF9108959093D3038093D203AE +:103900000895E091D203F091D303309721F0019014 +:10391000F081E02D099480E00895E091D203F091C8 +:10392000D303309721F00280F381E02D09940895AC +:10393000E091D203F091D303309721F00480F58118 +:10394000E02D099408952091D0033091D10382177E +:10395000930771F09093D1038093D003E091D20349 +:10396000F091D303309721F00680F781E02D099480 +:1039700008952091CE033091CF038217930771F001 +:103980009093CF038093CE03E091D203F091D303C1 +:10399000309721F00084F185E02D09940895089571 +:1039A0000C94CF1C0E9456280E94140E0E94DC2802 +:1039B0000C94902D5F926F927F928F929F92AF9214 +:1039C000BF92CF92DF92EF92FF920F931F93CF930C +:1039D000DF9300D000D01F92CDB7DEB70E94590E02 +:1039E0009DEDC92E93E0D92E03E010E0AA24A39404 +:1039F000B12C502E802F0E94D40E4C01F6017290F3 +:103A000062906F016826792661147104A1F4015057 +:103A1000110978F78FEF89838A831B820E945F28C0 +:103A20008160782F9D838C8349815A816B818D8140 +:103A30000E948A1D38C08091320481FD0E94DD0EF3 +:103A40002BE030E07501022E02C0EE0CFF1C0A9440 +:103A5000E2F7C70186219721892B09F129835A8230 +:103A60008E209F2091E0892809F490E09B830E949A +:103A70005F288160782F9D838C8349815A816B8177 +:103A80008D810E948A1D000F111FF801EB52FC4F1F +:103A900080819181E826F926F182E08204C02150DC +:103AA000310980F6B4CF0E94C82A1091D4030E9435 +:103AB000811C1817D1F00E94811C8093D4030F90B1 +:103AC0000F900F900F900F90DF91CF911F910F915A +:103AD000FF90EF90DF90CF90BF90AF909F908F902E +:103AE0007F906F905F900C94FE0D0F900F900F9051 +:103AF0000F900F90DF91CF911F910F91FF90EF905A +:103B0000DF90CF90BF90AF909F908F907F906F90FD +:103B10005F900895CF93DF93CDB7DEB72B970FB6A5 +:103B2000F894DEBF0FBECDBF4F83588769877A8771 +:103B30008B87DE01119686E0FD0111928A95E9F7E7 +:103B400085E0FE01379601900D928A95E1F7498153 +:103B50005A816B817C818D819E810E9401242B96EC +:103B60000FB6F894DEBF0FBECDBFDF91CF910895A1 +:103B7000CF93882309F4C2C0C82F823859F40E9419 +:103B8000811C81FDBBC089E30E94DB260E94A8271F +:103B900089E30CC0833879F40E94811C80FDAEC09B +:103BA00083E50E94DB260E94A82783E50E941D274B +:103BB000CF910C94A827843859F40E94811C82FD6F +:103BC0009DC087E40E94DB260E94A82787E4EECFF1 +:103BD0008CEF8C0F813A48F48C2F0E94F82C8111C5 +:103BE0008DC08C2F0E94DB26E3CF80E28C0F8830C3 +:103BF00048F4C77081E001C0880FCA95EAF70E94B7 +:103C00006127D6CF8BE58C0F833078F4C53A29F045 +:103C1000C63A31F083E890E005C081E890E002C048 +:103C200082E890E0CF910C94A31C88E58C0F83313F +:103C300008F064C0C83A39F1C93A41F1CA3A49F1C9 +:103C4000CB3A51F1CC3A59F1CD3A61F1C03B69F12F +:103C5000CE3A71F1CF3A79F1C13B81F1C23B89F1A2 +:103C6000C33B91F1C43B99F1C53BA1F1C63BA9F11E +:103C7000C73BB1F1C83BB9F1C93BC1F1CA3BC9F17E +:103C800080E090E038C082EE90E035C089EE90E0B0 +:103C900032C08AEE90E02FC085EB90E02CC086EB1E +:103CA00090E029C087EB90E026C08CEC90E023C028 +:103CB0008DEC90E020C083E891E01DC08AE891E09F +:103CC0001AC082E991E017C084E991E014C081E252 +:103CD00092E011C083E292E00EC084E292E00BC059 +:103CE00085E292E008C086E292E005C087E292E0B9 +:103CF00002C08AE292E0CF910C94B91CCF91089552 +:103D0000882309F44BC0823859F40E94811C81FF3A +:103D100045C089E30E94DB260E94A82789E30CC0E6 +:103D2000833871F40E94811C80FF38C083E50E94B3 +:103D3000DB260E94A82783E50E941D270C94A82754 +:103D4000843859F40E94811C82FF28C087E40E94B5 +:103D5000DB260E94A82787E4EFCF9CEF980F913ACB +:103D600058F390E2980F983050F4877091E001C0BA +:103D7000990F8A95EAF7892F0E946727DFCF9BE585 +:103D8000980F933020F480E090E00C94A31C885AA4 +:103D9000833120F480E090E00C94B91C08958823CE +:103DA00021F00E9461270C94A8270895882321F010 +:103DB0000E9467270C94A82708957F928F929F9264 +:103DC000AF92BF92CF92DF92EF92FF920F931F9329 +:103DD000CF93DF931F92CDB7DEB77C01C62E772E2F +:103DE000FC01058102950F70128111110E947E273E +:103DF0000E94D426882379F0112369F080E28C0D8B +:103E0000883048F082E00E94BD260E94D42691E0CE +:103E1000D82ED92601C0D12CE72DE295EF70F0E025 +:103E2000E259FF4F0C942132872D807F072D0F70B0 +:103E3000882311F00295007F112389F0002309F4F3 +:103E400099C180E28C0D883020F4802F0E94612778 +:103E500003C0802F0E9471270E94A8278BC18C2D40 +:103E60000E94801E002309F4C3C180E28C0D8830BB +:103E700020F4802F0E94672703C0802F0E9477279D +:103E80000E94A827B5C1872D807F972D9F70803213 +:103E900011F4892F03C0892F8295807FCC2021F0D7 +:103EA000F1E0CF16A1F01DC0112339F0002319F164 +:103EB000013009F50E9491279BC1002319F00130C0 +:103EC00009F496C189830E949427898110C1112326 +:103ED00021F0063008F08CC10EC0053008F088C112 +:103EE00006C1112359F0002331F0F701958190FFAD +:103EF00041C19F7095830E94CF1E7AC1002309F4AF +:103F0000F6C03EC1872D86958695837090E0009718 +:103F100019F0019761F06CC1112321F08C2D972DC0 +:103F2000937002C080E090E00E94A31C61C1112345 +:103F300021F08C2D972D937002C080E090E00E94BC +:103F4000B91C56C18C2D112319F00E94D02902C032 +:103F50000E94382A0E94BD2A4BC1872D837009F028 +:103F600052C0111145C18C2D829586958770880F9E +:103F7000880F9C2D9F70892E912CA12CB12C082E7E +:103F800004C0880C991CAA1CBB1C0A94D2F7C4FE5E +:103F900014C00FE010E020E030E0B901A80104C037 +:103FA000440F551F661F771F8A95D2F7CB01BA01C0 +:103FB000609570958095909503C060E070E0CB01AE +:103FC000272D26952695237030E02230310569F0A3 +:103FD0002330310589F0682979298A299B292130E4 +:103FE000310571F00E94492503C1682979298A2980 +:103FF0009B290E946525FCC00E944925C501B4018A +:104000000E942D25F5C0112319F0872D817001C064 +:104010008695882309F4ECC08C2D8295869587704F +:10402000880F880F9C2D9F70892E912CA12CB12C6C +:10403000082E04C0880C991CAA1CBB1C0A94D2F739 +:10404000C4FE14C00FE010E020E030E0B901A80188 +:1040500004C0440F551F661F771F8A95D2F7CB0106 +:10406000BA01609570958095909503C060E070E00E +:10407000CB01272D269526952370422F50E0423004 +:10408000510569F04330510589F0682979298A2959 +:104090009B294130510571F00E942326A9C068294F +:1040A00079298A299B290E943F26A2C00E942326A3 +:1040B000C501B4010E9407269BC08C2D90E0FC0135 +:1040C000E05EF109E531F10508F050C0E258FF4F1C +:1040D0000C9421320C2D0F70872D8F71112321F03C +:1040E0000E94A025802F07CF0E94C125802F0E940B +:1040F000D61E7EC0112341F0053008F079C0872D0F +:104100008F710E94E62574C0063008F071C0F7CFA9 +:10411000112339F0872D8F710E94A02569C01123CA +:10412000C9F3872D8F710E94C12562C0112329F028 +:10413000872D8F710E948B255BC00E94812558C0FE +:10414000112351F0172D1F71812F0E94A02563E0CC +:10415000812F0E94B4264CC081E00E94BD2602300F +:1041600008F446C082E00E94BD2642C0112331F00F +:10417000002381F28C2D0E94B81D3AC0002389F2E1 +:104180008C2D0E94801E34C0472D4F706C2DC701AE +:104190000E94E0060E94A5242BC0111129C0472DC2 +:1041A0004F7050E042305105B9F04CF441155105C3 +:1041B00081F041305105E1F40E94B82D19C043301F +:1041C000510569F04430510599F48C2D0E940A2E56 +:1041D0000FC00E94A12D0CC00E94D42D09C00E94C6 +:1041E000E72D06C0472D4F706C2DC7010E949F0A16 +:1041F000DD20F9F00E94B02680FD1BC0F70112827D +:104200000E94AA260E94A025C7010E9428210E9480 +:10421000AA260F90DF91CF911F910F91FF90EF9001 +:10422000DF90CF90BF90AF909F908F907F900C9435 +:10423000C1250F90DF91CF911F910F91FF90EF90CB +:10424000DF90CF90BF90AF909F908F907F90089518 +:104250000F931F93CF93DF93EC01888199812B817A +:104260003C81232BB9F09F3F11F48F3F99F0CE0191 +:104270000E949E08882371F0688179818A810E945A +:10428000A6268C010E945B260E942225B801CE0141 +:104290000E94DD1EDF91CF911F910F9108950E9422 +:1042A0007E270E948E270E9453270E94A8270E94E3 +:1042B0006E2B0E94BD2A80E090E00E94A31C80E04B +:1042C00090E00C94B91C0E946E270C944F210E9420 +:1042D0009B26292F22952F7030E02C3031054CF48D +:1042E0002A3031056CF42250310922303105A8F40E +:1042F00007C02C30310569F02F30310551F00DC069 +:10430000803F69F018F4803E40F409C0843F29F4EE +:1043100006C093FB882780F9089580E0089581E026 +:104320000895CF93DF9300D000D01F92CDB7DEB7B2 +:104330000F900F900F900F900F90DF91CF910895F5 +:10434000CF93DF9300D000D000D0CDB7DEB7269654 +:104350000FB6F894DEBF0FBECDBFDF91CF910895A9 +:104360001F93CF93DF93C091DD0316E08091DE03AE +:10437000C81799F0D0E01C9FF0011D9FF00D11248B +:10438000E152FC4F4081518162817381848195812A +:104390000E94A0212196C770E9CFDF91CF911F9194 +:1043A000089540910F045091100460911104709190 +:1043B000120480911304909114040C94A021809114 +:1043C000140482958F7009F054C0809111048823E1 +:1043D00009F44FC08091DD03A091DE0360910F04CA +:1043E000709110044091120450911304B6E08A17A2 +:1043F00009F43FC090E041155105C1F17F3F11F430 +:104400006F3FA1F1B89FF001B99FF00D1124E15267 +:10441000FC4F218172132AC02081621327C02281A0 +:10442000211124C0238134812417350710F4215031 +:104430003109241B350B283C3105C0F420911404AC +:104440002F7020612093140426E0289FF001299FFB +:10445000F00D1124EC51FC4F80818F7080618083BE +:104460008FE094E00E9428210C94B021019687707F +:10447000BECF0895CF92DF92EF92FF920F931F93DA +:10448000CF93DF93CDB7DEB762970FB6F894DEBF58 +:104490000FBECDBF8C0185E0F801DE011D960190B5 +:1044A0000D928A95E1F7D8014C9111965C91119784 +:1044B00012966C9112971396CD90DC9014973091D0 +:1044C0000F047091100480911204909113040097CE +:1044D00009F46BC17F3F19F43F3F09F466C1E090D6 +:1044E0001104EE2009F4C0C020911404C816D906A6 +:1044F00028F0F601E81BF90BCF0104C080959095D8 +:104500008C0D9D1DFF24F394883C910578F0F12CCF +:10451000207F09F0C6C07C2DD98AC88A89890E946B +:1045200091218FE094E00E942821B1C0822F807FEA +:1045300009F046C0751314C0341312C0611110C0C5 +:104540002F702061209314040E94D1218FE094E009 +:104550000E94282180911404D80115968C932EC0B6 +:10456000CD2819F15F3F11F44F3FF9F0F62E61119C +:104570001CC08091DD032091DE0336E0821709F430 +:104580005AC090E0389FF001399FF00D1124E1529C +:10459000FC4F7181571306C07081471303C07281AD +:1045A000711103C001968770E9CFF62E662309F4D6 +:1045B00018C180911404816080931404F12C11C1FE +:1045C000751308C0341306C0611104C0809114042F +:1045D000D801C3C04D875E878D859E856A8B0E94FA +:1045E00067216A898823E1F16623D1F120911404BF +:1045F000822F82958F7090E0029774F080910F0463 +:104600009091100498878F831986DB86CA862C8741 +:10461000CE0107960E94282186E0F801AFE0B4E0C1 +:1046200001900D928A95E1F70E94DF210E94D1212D +:10463000FF24F394D6C04D875E878D859E850E94AA +:104640009B26292F22952F7030E0223031050CF067 +:10465000BCC09F7009F0B6C0805E883008F4C1C04D +:10466000C8010E942821E4CFC816D90608F453C017 +:10467000F601E81BF90BCF01883C910508F450C006 +:10468000F12C7C2DD98AC88A89890E949121EFE07A +:10469000F4E086E0DF011D928A95E9F70E94D121BE +:1046A000A0C0751314C0341312C0611110C08091E2 +:1046B0001404F8018583C8010E94282186E0EFE0F8 +:1046C000F4E0DF011D928A95E9F7FE2C8AC04D8740 +:1046D0005E878D859E856A8B0E9467216A89882303 +:1046E00009F4BECF662309F4BBCF20911404822FB6 +:1046F00082958F7090E002970CF48ECF80910F041A +:10470000909110049A8389831B82DD82CC822E8350 +:10471000CE0101967FCF809590958C0D9D1DACCFDD +:10472000F62E662309F49CCF75132EC034132CC0CB +:104730002091140420FD1FC0822F82958F70D9F024 +:10474000D80115962C9315978F3049F08F5F982FCD +:104750009295907F822F8F70892B15968C93C8012C +:104760000E94282186E0F801AFE0B4E001900D92AC +:104770008A95E1F793CF86E0F801AFE0B4E00190CD +:104780000D928A95E1F72DC04D875E878D859E85B8 +:104790000E946721811140CF809114048160809331 +:1047A0001404C8010E9428211CC0662309F458CFB4 +:1047B0004D875E878D859E850E946721882309F439 +:1047C0004FCF2ACF811148CF0CC0243031050CF0D7 +:1047D00047CF9F7009F440CFF8019581907F09F091 +:1047E0003BCF8F2D62960FB6F894DEBF0FBECDBFC4 +:1047F000DF91CF911F910F91FF90EF90DF90CF90BD +:1048000008951F93CF93DF93CDB7DEB72C970FB6E4 +:10481000F894DEBF0FBECDBF4F83588769877A8774 +:104820008B879C87CE0107960E943A22882369F0E5 +:104830008F8198852A853B85232BF1F19F3F09F0D5 +:1048400063C08F3F09F060C037C086E0FE01379635 +:10485000DE01119601900D928A95E1F76F817885BE +:10486000EA85FB85309741F17F3F11F46F3F21F1DD +:104870002091DE0330E0C9010196877099274091AD +:10488000DD0350E08417950709F447C069837A83F4 +:10489000FD83EC8396E0929FD001939FB00D11248D +:1048A000A152BC4FFE01319601900D929A95E1F70D +:1048B0008093DE030E94B02116E08091DD03909189 +:1048C000DE038917C1F1189FC001112481529C4F4A +:1048D0000E943A22882379F1E091DD031E9FF001C6 +:1048E0001124E152FC4F40815181628173818481A6 +:1048F00095810E94A0218091DD0390E00196877050 +:1049000099278093DD03D9CF4F81588569857A85B2 +:104910008B859C850E94A021CFCF0E94632110929D +:10492000DE031092DD03EFE0F4E086E0DF011D928C +:104930008A95E9F7C1CF2C960FB6F894DEBF0FBE6B +:10494000CDBFDF91CF911F910895EF92FF920F930A +:104950001F93CF93DF938C01009709F46CC0F12C67 +:10496000EE24E394E8012196F8018491843740F421 +:10497000843008F051C0813081F0823019F15BC081 +:10498000853709F444C0A8F19CE7980F903708F0E8 +:1049900052C08F770E94801E41C00E5F1F4FFE01E4 +:1049A000C49180E28C0F883048F4C7708E2D01C00E +:1049B000880FCA95EAF70E94812714C08C2F0E94A5 +:1049C000B81D2DC00E5F1F4FFE01C49180E28C0FF9 +:1049D000883058F4C7708E2D01C0880FCA95EAF749 +:1049E0000E9487270E94A8271AC08C2F0E94801E31 +:1049F00016C00E5F1F4FFE01C491CC2381F08FE9DA +:104A00009FE00197F1F700C00000C150F6CF0E5FA4 +:104A10001F4FFE01F49003C00E94B81D8E018F2D20 +:104A2000882309F49FCFEFE9FFE03197F1F700C049 +:104A300000008150F5CFDF91CF911F910F91FF9032 +:104A4000EF90089508956093190470931A04809369 +:104A50001B0490931C040C944F210F931F930091FF +:104A6000190410911A0420911B0430911C04DC01DC +:104A7000CB01802B912BA22BB32B80931904909305 +:104A80001A04A0931B04B0931C041F910F910C9463 +:104A90004F210F931F930091190410911A04209134 +:104AA0001B0430911C04DC01CB0180239123A22341 +:104AB000B3238093190490931A04A0931B04B0931A +:104AC0001C041F910F910C944F210F931F93009181 +:104AD000190410911A0420911B0430911C04DC016C +:104AE000CB0180279127A227B327809319049093A5 +:104AF0001A04A0931B04B0931C041F910F910C94F3 +:104B00004F2110921504109216041092170410925F +:104B100018040C944F2141E050E060E070E004C0C4 +:104B2000440F551F661F771F8A95D2F740931504CF +:104B30005093160460931704709318040C944F213B +:104B400041E050E060E070E004C0440F551F661F74 +:104B5000771F8A95D2F78091150490911604A09141 +:104B60001704B0911804482B592B6A2B7B2B4093C8 +:104B700015045093160460931704709318040C9452 +:104B80004F2141E050E060E070E004C0440F551F49 +:104B9000661F771F8A95D2F740955095609570955E +:104BA0008091150490911604A0911704B0911804F7 +:104BB000482359236A237B234093150450931604FA +:104BC00060931704709318040C944F2141E050E057 +:104BD00060E070E004C0440F551F661F771F8A9580 +:104BE000D2F78091150490911604A0911704B0910A +:104BF0001804482759276A277B27409315045093A8 +:104C0000160460931704709318040C944F210F93AB +:104C10001F930091150410911604209117043091F0 +:104C20001804DC01CB01802B912BA22BB32B80939A +:104C3000150490931604A0931704B09318041F91C1 +:104C40000F910C944F210F931F9300911504109115 +:104C500016042091170430911804DC01CB01802345 +:104C60009123A223B3238093150490931604A09359 +:104C70001704B09318041F910F910C944F210F93B8 +:104C80001F93009115041091160420911704309180 +:104C90001804DC01CB0180279127A227B32780933A +:104CA000150490931604A0931704B09318041F9151 +:104CB0000F910C944F210895CF92DF92EF92FF92C3 +:104CC0000F931F93CF93DF938C01C0901904D09062 +:104CD0001A04E0901B04F0901C048091150490913C +:104CE0001604A0911704B0911804C82AD92AEA2AF8 +:104CF000FB2ACFE1D0E0D701C6010C2E04C0B69547 +:104D0000A795979587950A94D2F780FF06C0B801BA +:104D10008C2F0E94240D019721F4219760F780E0E9 +:104D200001C08C2FDF91CF911F910F91FF90EF90D9 +:104D3000DF90CF900895CF93DF93EC010E945C2623 +:104D4000BE010E94240DDF91CF910895CB010E94F6 +:104D50009B26089580911D048595859585950895D8 +:104D600080911D048770089598E0899F9001112417 +:104D7000262B20931D040C94A02520911D048095C2 +:104D8000822380931D04982F977069F430E0482F98 +:104D9000552747FD50952417350729F085958595AA +:104DA00085950C94C125089590911D04977081E01C +:104DB00009F480E0089590912D02992321F09091BB +:104DC0002E02911109C020912F0230913002F90179 +:104DD00032969FEF40E01FC0982F96959695969536 +:104DE0009F3050F5E0912F02F0913002E90FF11D54 +:104DF000877021E030E0A90102C0440F551F8A9559 +:104E0000E2F7CA019181892B818308959F3F39F090 +:104E10004F5F4E3041F051915813F8CF0DC05111F2 +:104E2000F7CF942FF5CF9F3F39F0F901E90FF11D2E +:104E300097FDFA9582830895089590912D02992304 +:104E400021F090912E02911109C020912F023091F2 +:104E50003002F9013296205F3F4F1FC0982F969580 +:104E6000969596959F30F0F4E0912F02F0913002E4 +:104E7000E90FF11D877021E030E0A90102C0440F65 +:104E8000551F8A95E2F7CA01809591818923818314 +:104E900008953196E217F30729F090819813F9CF1E +:104EA0001082F7CF089581E090E0E0912F02F09119 +:104EB0003002E80FF91F1082019680319105A9F7A1 +:104EC000089590913104892B809331040895809541 +:104ED0009091310489238093310408951092310414 +:104EE000089590913004892B809330040895809523 +:104EF00090913004892380933004089510923004F7 +:104F0000089590912F04892B80932F040895809504 +:104F100090912F04892380932F04089510922F04D9 +:104F2000089580931E04089510921E0408958091A0 +:104F30002F0290913002FC0131969C01205F3F4F7F +:104F400080E0919191118F5FE217F307D1F70895F7 +:104F5000E0912F02F0913002809131048083E09142 +:104F60002F02F0913002908180913004892B808350 +:104F7000E0912F02F0913002908180912F04892BD3 +:104F8000808380911E04882361F0E0912F02F091CC +:104F900030029081892B80830E9497278111109283 +:104FA0001E0480912F02909130020C948D1C20E001 +:104FB000009739F0AC0141505109842395232F5FAC +:104FC000F7CF822F089580915304843039F11092E5 +:104FD000330420E488E190E00FB6F894A89580931C +:104FE00060000FBE2093600080E00E940E0680E00B +:104FF0000E94FE0D83B7817F846083BF83B7816089 +:1050000083BF7894889583B78E7F83BF88E10FB67E +:10501000F89480936000109260000FBE0895089588 +:10502000089580E00E940E060E940F280E94590EEB +:105030000E9410280E94DE0E91E0811101C090E0D4 +:10504000892F08950E94632180E00E940E060E942D +:10505000902D0E94811C0C94FE0D1F920F920FB692 +:105060000F9211248F939F93AF93BF93809133043A +:10507000811113C08091340490913504A0913604BD +:10508000B09137044196A11DB11D809334049093D3 +:105090003504A0933604B0933704BF91AF919F912C +:1050A0008F910F900FBE0F901F90189582E084BDD6 +:1050B00093E095BD9AEF97BD80936E0008952FB74A +:1050C000F8948091340490913504A0913604B09105 +:1050D00037042FBF0895CF92DF92EF92FF920F9384 +:1050E0001F932FB7F8944091340450913504609188 +:1050F0003604709137042FBF6A017B01EE24FF2430 +:105100008C0120E030E0C016D106E206F30610F470 +:10511000415051099A01281B390BC9011F910F9168 +:10512000FF90EF90DF90CF9008951F920F920FB6EF +:105130000F9211248F939F93AF93BF938091340468 +:1051400090913504A0913604B09137040196A11DC9 +:10515000B11D8093340490933504A0933604B0932A +:105160003704BF91AF919F918F910F900FBE0F9019 +:105170001F9018950E947E19F8942FEF87EA91E608 +:10518000215080409040E1F700C0000087E090EBA4 +:10519000DC0180935E0490935F04A0936004B0935D +:1051A00061049CE088E10FB6F894A89580936000B4 +:1051B0000FBE90936000FFCF0E941B29811102C097 +:1051C0000E94F7280E942629809332040E943329E6 +:1051D00080935C0487FB882780F980932E020E94CD +:1051E0002A29682F70E080E090E00C9423256DEE72 +:1051F0007EEF80E090E00E94473260E082E090E045 +:105200000E94353260E083E090E00E94353260E039 +:1052100084E090E00E94353260E085E090E00E94FA +:10522000353260E086E090E00E9435326FEF87E033 +:1052300090E00C94353280E090E00E942F3221E023 +:105240008D3E9E4F09F020E0822F089582E090E08D +:105250000C94273283E090E00C942732682F83E08F +:1052600090E00C94353284E090E00C942732682F63 +:1052700084E090E00C94353286E090E00C94273284 +:10528000682F86E090E00C94353287E090E00C9433 +:105290002732682F87E090E00C94353280913A04F1 +:1052A00080FF0BC06091340285E0689FB00111243B +:1052B00075956795759567952BC081FF09C06091BD +:1052C000340285E0689FB00111247595679520C070 +:1052D00082FF07C06091340285E0689FB00111240D +:1052E00017C090913B049923D1F060913302961737 +:1052F00088F72091340285E0289F90011124929F25 +:10530000A001939F500D112470E0CA010E940D323C +:105310006038710540F46115710539F002C065E02F +:1053200070E0862F08958FE7089581E008958091B9 +:105330003A0480FF08C06091320270E0759567956D +:105340007595679521C081FF06C06091320270E0BB +:105350007595679519C082FF04C06091320270E0B4 +:1053600010C090913B049923C1F0609131029617CF +:10537000A0F780913202899FC001112470E00E9441 +:105380000D326038710528F46115710521F0862F02 +:1053900008958FE7089581E0089561E070E0F4CF0B +:1053A000803F21F40E944E29819504C0813F29F459 +:1053B0000E944E2980933E040895823F21F40E946A +:1053C0004E29819504C0833F29F40E944E29809381 +:1053D0003D040895893F19F40E94972905C08A3F2A +:1053E00031F40E949729819580933F0408958B3F63 +:1053F00021F40E949729819504C08C3F29F40E94D2 +:105400009729809340040895843F21F480913C04BF +:10541000816017C0853F21F480913C04826011C0F7 +:10542000863F21F480913C0484600BC0873F21F4C7 +:1054300080913C04886005C0883F31F480913C0431 +:10544000806180933C0408958D3F21F480913A045B +:1054500081600BC08E3F21F480913A04826005C0C8 +:105460008F3F29F480913A04846080933A04089530 +:10547000803F39F480913E0487FF6CC010923E0457 +:1054800069C0813F29F480913E041816BCF362C0C4 +:1054900090913D04823F29F497FF5CC010923D0437 +:1054A00059C0833F19F41916CCF354C0893F41F415 +:1054B00080913F0418160CF04DC010923F044AC072 +:1054C0008A3F29F480913F0487FF44C0F6CF8B3F89 +:1054D00039F48091400487FF3DC0109240043AC0E7 +:1054E0008C3F29F4809140041816BCF333C0843FEC +:1054F00021F480913C048E7F17C0853F21F4809178 +:105500003C048D7F11C0863F21F480913C048B7F49 +:105510000BC0873F21F480913C04877F05C0883F02 +:1055200031F480913C048F7E80933C0413C08D3F06 +:1055300021F480913A048E7F0BC08E3F21F480913C +:105540003A048D7F05C08F3F29F480913A048B7F08 +:1055500080933A0480913D0481110EC080913E04F5 +:1055600081110AC080913F04811106C080914004DE +:10557000811102C010923B0408958CE394E00E94D4 +:10558000981C0E945F2890933904809338040895F2 +:105590001F93CF93DF9380913804909139040E9438 +:1055A0006B28AC0190913B04992321F020913502A6 +:1055B00030E006C0209136028AE0289F9001112435 +:1055C0004217530708F486C080913D04C0913E0401 +:1055D000D0913F0410914004811107C0C11176C0E1 +:1055E000D11174C0111172C075C09F3F19F09F5F37 +:1055F00090933B04181624F40E944E2980933D0496 +:1056000080913D0487FF05C00E944E2981958093BB +:105610003D041C1624F40E944E2980933E04809180 +:105620003E0487FF05C00E944E29819580933E0469 +:1056300060913D04662339F1C0913E04CC2319F1F9 +:10564000772767FD7095872F972F0E942F2F23E3D1 +:1056500033E343E35FE30E943F300E94FC2E6093FC +:105660003D046C2F772767FD7095872F972F0E9439 +:105670002F2F23E333E343E35FE30E943F300E9495 +:10568000FC2E60933E041D1624F40E9497298093FB +:105690003F0480913F0487FF05C00E9497298195B0 +:1056A00080933F04111624F40E94972980934004AC +:1056B0008091400487FF05C00E94972981958093BF +:1056C0004004DF91CF911F910C94BD2A9F3F09F0B8 +:1056D0008ECF96CFDF91CF911F910895ECE3F4E048 +:1056E00085E0DF011D928A95E9F710923B04109244 +:1056F0003A040895833081F128F4813059F08230E2 +:10570000D1F00895853009F449C0B8F1863009F424 +:1057100056C0089580913602262F30E0280F311DA3 +:105720002F3F310524F4680F6093360208958FEF00 +:1057300080933602089580913502262F30E0280F9D +:10574000311D2F3F310524F4680F60933502089511 +:105750008FEF80933502089580913402262F30E038 +:10576000280F311D2F3F310524F4680F6093340258 +:1057700008958FEF80933402089580913302262F8D +:1057800030E0280F311D2F3F310524F4680F60935E +:10579000330208958FEF809333020895809132028F +:1057A000262F30E0280F311D2F3F310524F4680FDC +:1057B0006093320208958FEF8093320208958091B2 +:1057C0003102262F30E0280F311D2F3F310524F400 +:1057D000680F6093310208958FEF8093310208952E +:1057E000833011F128F4813049F0823091F008952E +:1057F000853081F120F18630C1F108958091360223 +:10580000681720F4861B80933602089510923602A2 +:10581000089580913502681720F4861B8093350225 +:10582000089510923502089580913402681720F48B +:10583000861B80933402089510923402089580915B +:105840003302681720F4861B809333020895109268 +:105850003302089580913202681720F4861B8093EA +:105860003202089510923202089580913102681731 +:1058700020F4861B8093310208951092310208951E +:105880000F931F93873208F048C08E3108F08DC007 +:10589000803109F477C008F5873009F461C068F4F5 +:1058A000863009F09DC080913204817F8E7F809385 +:1058B000320481E08093420494C08B3009F489C0A3 +:1058C0008E3009F08DC08091320482FB222720F9AE +:1058D00091E0922790FB82F95EC0863109F479C08D +:1058E00060F4813109F07CC00E94632190912E0206 +:1058F00081E0892780932E026CC0893109F469C048 +:105900008B3109F06DC08091320481FB222720F990 +:1059100091E0922790FB81F93EC0883309F459C089 +:1059200050F4893209F457C0853309F454C08732E2 +:1059300009F451C055C0833409F44DC028F48A33AA +:1059400008F44EC0895332C0883409F049C00E941F +:1059500063210E940E0F0E9495080E94BA2839C048 +:1059600090913204892F8095817080FB90F929F005 +:10597000966098609093320434C0997F977F90939B +:10598000320427C08091320483FB222720F991E062 +:10599000922790FB83F9809332049923D1F0809170 +:1059A000320481608093320414C08D5141E050E094 +:1059B00060E070E08A019B0104C0000F111F221FEC +:1059C000331F8A95D2F7C901B8010E9423250E948E +:1059D000632181E006C061E070E080E090E0F5CFF7 +:1059E00080E01F910F91089580E0089580E0089570 +:1059F000CF93C82F80914204813069F018F0823033 +:105A0000C9F184C0E0912F02F0913002808182328E +:105A100009F07EC007C0E0912F02F0913002808132 +:105A2000823261F48C2F0E94F42C811104C08C2FDF +:105A30000E94402C1DC081E090E01AC08C2F0E9473 +:105A4000F62C811114C0C43179F048F4CB3079F0D0 +:105A5000C03109F061C082E08093420408C0C932BD +:105A600019F0C83321F058C01092420455C081E0AB +:105A7000817054C0C93291F120F5C43179F1B0F48C +:105A8000C73009F047C08EE18093360282E38093ED +:105A900035028AE08093340284E18093330288E007 +:105AA0008093320288E28093310234C0CE51C630F6 +:105AB00088F5EC2FF0E0EA50FD4F8081809341049F +:105AC00029C0CE34E9F020F4CB3421F56AE013C0CC +:105AD000C13579F0C235F1F461E00DC08091410427 +:105AE000882319F01092410415C081E0809342048C +:105AF00015C061E006C0809141040E947A2B0AC063 +:105B00006AE0809141040E94F02B04C0109242048C +:105B100080E004C081E002C080E0AACFCF91089568 +:105B20000E941B29811102C00E94F7280E943C2973 +:105B300080935D0480FF02C0869501C080E00C94D4 +:105B40000E0680915D04982F9695292F30E0233022 +:105B500031054CF49F5F990F8170892B8160809390 +:105B60005D040E94402980915D0486950C940E0688 +:105B700080915D04982F969591F09158990F8170BE +:105B8000892B80935D048E7F91E009F490E08091F1 +:105B90005D0490FB80F980935D040E944029809110 +:105BA0005D0486950C940E0680915D04982F909567 +:105BB00090FB80F980935D040E94402980915D04F0 +:105BC00080FF02C0869501C080E00C940E06909183 +:105BD0005D04892F86958F5F8F779170843028F4CC +:105BE000880F892B80935D0402C090935D0480919F +:105BF0005D048E7F91E009F490E080915D0490FB5C +:105C000080F980935D040E94402980915D0486950F +:105C10000C940E0620915D04922F96958927982F5B +:105C2000990F822F8170892B80935D048E7F91E084 +:105C300009F490E080915D0490FB80F980935D040D +:105C40000E94402980915D0486950C940E068091F7 +:105C50005D04869508955058BB27AA270ED0D1C160 +:105C6000C2D130F0C7D120F031F49F3F11F41EF4BF +:105C7000B7C10EF4E095E7FB9FC1E92FD3D180F3C4 +:105C8000BA17620773078407950718F071F49EF539 +:105C9000EBC10EF4E0950B2EBA2FA02D0B01B9012C +:105CA00090010C01CA01A0011124FF27591B99F092 +:105CB000593F50F4503E68F11A16F040A22F232F9E +:105CC000342F4427585FF3CF469537952795A795EE +:105CD000F0405395C9F77EF41F16BA0B620B730B95 +:105CE000840BBAF09150A1F0FF0FBB1F661F771F06 +:105CF000881FC2F70EC0BA0F621F731F841F48F4BB +:105D0000879577956795B795F7959E3F08F0B3CF40 +:105D10009395880F08F09927EE0F9795879508952A +:105D200027D108F481E008950CD06BC163D140F015 +:105D30005AD130F021F45F3F19F03EC1511195C1A5 +:105D40004FC170D198F39923C9F35523B1F3951B33 +:105D5000550BBB27AA2762177307840738F09F5F8C +:105D60005F4F220F331F441FAA1FA9F333D00E2EFB +:105D70003AF0E0E830D091505040E695001CCAF768 +:105D800029D0FE2F27D0660F771F881FBB1F26172D +:105D900037074807AB07B0E809F0BB0B802DBF0100 +:105DA000FF2793585F4F2AF09E3F510568F004C1CA +:105DB0005CC15F3FECF3983EDCF386957795679581 +:105DC000B795F7959F5FC9F7880F911D96958795B1 +:105DD00097F90895E1E0660F771F881FBB1F6217D0 +:105DE00073078407BA0720F0621B730B840BBA0B8E +:105DF000EE1F88F7E095089504D06894B11135C17D +:105E0000089518D188F09F5790F0B92F9927B7516E +:105E1000A0F0D1F0660F771F881F991F1AF0BA956E +:105E2000C9F712C0B13081F01FD1B1E008951CC193 +:105E3000672F782F8827B85F39F0B93FCCF3869564 +:105E400077956795B395D9F73EF4909580957095C1 +:105E500061957F4F8F4F9F4F0895E89409C097FB3E +:105E60003EF490958095709561957F4F8F4F9F4F31 +:105E70009923A9F0F92F96E9BB279395F695879575 +:105E800077956795B795F111F8CFFAF4BB0F11F438 +:105E900060FF1BC06F5F7F4F8F4F9F4F16C08823DF +:105EA00011F096E911C0772321F09EE8872F762F15 +:105EB00005C0662371F096E8862F70E060E02AF056 +:105EC0009A95660F771F881FDAF7880F9695879542 +:105ED00097F9089588D018F011F08CD038F480C06C +:105EE000C4C0E92F9FD0B0F35523C9F3E7FB621775 +:105EF000730784079507A8F199F3E92FFF278823F3 +:105F00002AF03197660F771F881FDAF7952F5527EC +:105F1000442332F091505040220F331F441FD2F7D8 +:105F2000BB27E91BF50B621B730B840BB109C1F294 +:105F300022F4620F731F841FB11D31972AF0660F80 +:105F4000771F881FBB1FEFCF915050405AF041F090 +:105F5000882332F0660F771F881F91505040C1F799 +:105F6000939530C08695779567959F5FD9F7F8CF61 +:105F7000990F0008550FAA0BE0E8FEEF161617065A +:105F8000E807F907C0F012161306E407F50798F0C2 +:105F9000621B730B840B950B39F40A2661F0232BDB +:105FA000242B252B21F408950A2609F4A140A69557 +:105FB0008FEF811D811D089597F99F6780E870E03C +:105FC00060E008959F3F31F0915020F487957795D8 +:105FD0006795B795880F911D9695879597F90895C0 +:105FE0009FEF80EC089500240A94161617061806F1 +:105FF0000906089500240A941216130614060506CD +:106000000895092E0394000C11F4882352F0BB0F5D +:1060100040F4BF2B11F460FF04C06F5F7F4F8F4FC0 +:106020009F4F089557FD9058440F551F59F05F3FFB +:1060300071F04795880F97FB991F61F09F3F79F0AA +:1060400087950895121613061406551FF2CF46952C +:10605000F1DF08C0161617061806991FF1CF8695AE +:106060007105610508940895E894BB276627772792 +:10607000CB0197F908957CDF08F48FEF08950BD0DA +:10608000C0CFB1DF28F0B6DF18F0952309F094CF28 +:10609000A7CF1124EACFC6DFA0F3959FD1F3950FC8 +:1060A00050E0551F629FF001729FBB27F00DB11D9C +:1060B000639FAA27F00DB11DAA1F649F6627B00D2C +:1060C000A11D661F829F2227B00DA11D621F739F15 +:1060D000B00DA11D621F839FA00D611D221F749F23 +:1060E0003327A00D611D231F849F600D211D822F6A +:1060F000762F6A2F11249F5750408AF0E1F08823B1 +:106100004AF0EE0FFF1FBB1F661F771F881F9150BD +:106110005040A9F79E3F510570F04ECFA6CF5F3F8C +:10612000ECF3983EDCF3869577956795B795F795F0 +:10613000E7959F5FC1F7FE2B880F911D9695879578 +:1061400097F90895FA01EE0FFF1F309621053105EA +:1061500099F16115710561F48038BFE39B0749F13E +:1061600068949038810561F08038BFEF9B0741F05B +:10617000992342F5FF3FE1053105210511F1E8942E +:106180000894E795D901AA2329F4AB2FBE2FF85F15 +:10619000D0F310C0FF5F70F4A695E0F7F73950F028 +:1061A00019F0FF3A38F49F779F930CD00F9007FCBB +:1061B000905808953EF014CF60E070E080E89FE3CF +:1061C00008954FE79F775F934F933F932F939ED010 +:1061D0002F913F914F915F9152DF05C019F40EF05E +:1061E000EBCE42CFFDCE26DFC8F39638C0F707F8D6 +:1061F0000F92E8942BE33AEA48EB5FE74EDF0F9209 +:106200000F920F924DB75EB70F92C0D0E6E2F1E069 +:1062100016D04F915F91EF91FF91E595EE1FFF1F13 +:1062200049F0FE57E0684427EE0F441FFA95E1F766 +:106230004195550B32D00F9007FE26C00895DF938D +:10624000CF931F930F93FF92EF92DF927B018C010C +:10625000689405C0DA2EEF011EDFFE01E894A591D7 +:106260002591359145915591AEF3EF0106DDFE0183 +:106270009701A801DA9479F7DF90EF90FF900F91E2 +:106280001F91CF91DF9108959B01AC0160E070E018 +:1062900080E89FE349CD90CE95CECCDEE8F39923FC +:1062A000D9F3940F511DBBF39150504094F059F025 +:1062B000882332F0660F771F881F91505040C1F736 +:1062C0009E3F510544F7880F911D9695879597F944 +:1062D00008955F3FACF0983E9CF0BB27869577957C +:1062E0006795B79508F4B1609395C1F7BB0F58F760 +:1062F00011F460FFE8CF6F5F7F4F8F4F9F4FE3CF69 +:10630000B4CE0EF05FCE6CCE689456CE93DEC8F35A +:106310009923D1F3C6F3DF93CF931F930F93FF928B +:10632000C92FDD2788232AF02197660F771F881F42 +:10633000DAF720E030E040E85FEB9FE3883920F0B7 +:10634000803E30F021968F7787DCEEE4F1E003C0E9 +:1063500083DCEBE7F1E073DF8B01BE01EC01FB2E88 +:106360006F5771097595771F880B990B78DD28E1B8 +:1063700032E741E35FE38FDEAF2D9801AE01FF907E +:106380000F911F91CF91DF9178DC3BCEFA01DC01B8 +:10639000AA0FBB1F9B01AC01BF5728F4222733274C +:1063A000442750781FC0B75188F4AB2F002446957E +:1063B00037952795011CA395D2F3002069F0220F91 +:1063C000331F441FB395DAF30DD045CC613071050E +:1063D000A0E88A07B94630F49B01AC01662777270D +:1063E00088279078309621F020833183428353832D +:1063F0000895AA1BBB1B51E107C0AA1FBB1FA6170C +:10640000B70710F0A61BB70B881F991F5A95A9F75D +:1064100080959095BC01CD01089597FB072E16F449 +:10642000009407D077FD09D00E94F93107FC05D010 +:106430003EF4909581959F4F0895709561957F4F9B +:106440000895EE0FFF1F0590F491E02D0994F9993E +:10645000FECF92BD81BDF89A992780B50895A8E135 +:10646000B0E042E050E00C944F32262FF999FECF75 +:1064700092BD81BDF89A019700B4021639F01FBA97 +:1064800020BD0FB6F894FA9AF99A0FBE08950196B6 +:10649000272F0E9436320C943532DC01CB01FC01EF +:1064A000F999FECF06C0F2BDE1BDF89A319600B46D +:0E64B0000D9241505040B8F70895F894FFCF78 +:1064BE000AA7CF44000000410000DC440000004168 +:1064CE00000000000000804000005C4500004041DC +:1064DE00000000000000804052D0244500004041E2 +:1064EE000AA7CF44000000410000DC440000004138 +:1064FE00000000000000804052D0244500004041C2 +:10650E00000000000000804000005C45000040419B +:10651E000AA7CF44000000410000DC440000004107 +:10652E00000000000000804052D024450000404191 +:10653E0000000000000080400AA74F4500004041C7 +:10654E000AA7CF44000000410000DC4400000041D7 +:10655E00000000000000804052D0244500000041A1 +:10656E0000000000000080405CFF38450000004144 +:10657E00000000000000804052D024450000004181 +:10658E000AA7CF44000000410000DC440000004197 +:10659E00000000000000804052D0244500008041E1 +:1065AE0053D024450000404160970A450000004149 +:1065BE0054D0A444000000410000DC44000000411F +:1065CE0060970A450000A041640007000CFF000020 +:1065DE00003F6485151316F015BC15881501011FB3 +:1065EE00042808140A321E0002040507090B0C0EBB +:1065FE001011131517181A1C1D1F212324262829C4 +:10660E002B2D2F3032343537393B6966207965733F +:10661E000A097065616E7574206275747465720A0C +:10662E00656C73650A097269636520736E61636BCD +:10663E0073001F0F03764F5F6F7F496943790959C6 +:10664E0053633149803F5D8B803FF8BF803FCAE185 +:10665E00803F73ED803FCAE1803FF8BF803F5D8B86 +:10666E00803F3149803F0000803FF16D7F3F75EAEA +:10667E007E3F4C827E3F833F7E3F84287E3F833F1A +:10668E007E3F4C827E3F75EA7E3FF16D7F3F00007C +:10669E00803F3F4D3639DF0A920A5C0A230AB6095B +:1066AE00CF09E809010A01020304050607080900DB +:00000001FF diff --git a/keyboard/planck/keymaps/gabriel/compiled.hex b/keyboard/planck/keymaps/gabriel/compiled.hex new file mode 100644 index 0000000000..93d8502845 --- /dev/null +++ b/keyboard/planck/keymaps/gabriel/compiled.hex @@ -0,0 +1,1450 @@ +:100000000C9491020C94D5020C94D5020C94D50258 +:100010000C94D5020C94D5020C94D5020C94D50204 +:100020000C94D5020C94D5020C9482140C945415A3 +:100030000C94B6220C94D5020C94D5020C94D502E3 +:100040000C94D5020C9437030C94D5020C94D50271 +:100050000C94D5020C941E230C94D5020C94D5025A +:100060000C94D5020C94D5020C94D5020C94D502B4 +:100070000C94D5020C94D5020C94D5020C94D502A4 +:100080000C94F70A0C94D5020C94D5020C94D5026A +:100090000C94D5020C94D5020C94D5020C94D50284 +:1000A0000C94D5020C94D5020C94D502C115E3151D +:1000B000D116E315D11628164B16D116A016B31675 +:1000C0009D199D19CC19CC190B1A2B1A811B811B58 +:1000D000361A811BE61AE61A4D1B561B811B7B1B29 +:1000E000F31AF31AF31AF31AF31AF31AF31AF31AA8 +:1000F000F31AF31AF31AF31AF31AF31AF31AF31A98 +:10010000031B111B181B1F1B291B07634236B79BC0 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C00002010000000000000000000029001400EF +:1001D0001A000800150017001C0018000C0012007F +:1001E00013002A002B0004001600070009000A0073 +:1001F0000B000D000E000F0033003400E1001D0065 +:100200001B00060019000500110010003600370021 +:10021000380028000352E000E200E30001522C0005 +:100220002C0002525000510052004F0035021E02B5 +:100230001F0220022102220223022402250226029A +:1002400027022A0001003A003B003C003D003E002E +:100250003F002D022E002F0230023100010040002D +:10026000410042004300440045000100010001003C +:100270000100010001000100010001000100010076 +:1002800001000100010001000100010035001E0015 +:100290001F0020002100220023002400250026004A +:1002A00027002A0001003A003B003C003D003E00D0 +:1002B0003F002D002E022F003000310201004000CF +:1002C00041004200430044004500010001000100DC +:1002D0000100010001000100010001000100010016 +:1002E0000100010001000100010001000100010006 +:1002F00001000100010001000100010001000100F6 +:1003000001004C000100010001000100010001009A +:1003100001000100010001000100010001000100D5 +:1003200001000100010001000100010001000100C5 +:1003300001000100010001000100010001000100B5 +:10034000010001004A004E004B004D0028035400FC +:1003500068006500200050006C0061006E006300C2 +:100360006B0020004B006500790062006F006100A7 +:100370007200640000002C034F00720074006800DB +:100380006F006C0069006E00650061007200200063 +:100390004B006500790062006F006100720064002C +:1003A000730000000403090409026D00040100A0A9 +:1003B000FA090400000103010100092111010001F3 +:1003C000223F000705810308000A09040100010318 +:1003D000010200092111010001224D0007058203DD +:1003E00008000A09040200010300000009211101AC +:1003F00000012236000705830308000A09040300F0 +:100400000103000000092111010001223900070544 +:1004100084031000011201100100000008EDFE60CD +:100420006001000102000105010906A1010507198B +:10043000E029E715002501950875018102050819D5 +:100440000129059505750191029501750391010535 +:10045000071900297715002501957875018102C0DB +:1004600005010980A101850216010026B7001A01C5 +:10047000002AB700751095018100C0050C0901A183 +:10048000018503160100269C021A01002A9C0275B0 +:100490001095018100C005010902A1010901A10017 +:1004A0000509190129051500250195057501810228 +:1004B0009501750381010501093009311581257FF9 +:1004C00095027508810609381581257F9501750803 +:1004D0008106050C0A38021581257F950175088172 +:1004E00006C0C005010906A101050719E029E715A5 +:1004F00000250195087501810295017508810105A6 +:100500000819012905950575019102950175039159 +:10051000010507190029FF150025FF9506750881BB +:1005200000C011241FBECFEFDAE0DEBFCDBF04B69E +:1005300003FE24C080911E0390911F03A09120030D +:10054000B09121038730904BA740B04BB9F4109283 +:100550001E0310921F03109220031092210314BE59 +:1005600084B7877F84BF88E10FB6F89480936000DA +:10057000109260000FBEE0E0F8E3099511E0A0E002 +:10058000B1E0E6ECF9E502C005900D92A03CB107A0 +:10059000D9F713E0A0ECB1E001C01D92AE31B10774 +:1005A000E1F70E94C8110C94E12C0C94000008950E +:1005B000089581E0089508950C94D8020C94D9020E +:1005C0000C94DB020E94AB2823E030E0281B3109A9 +:1005D000220F2093C4010895282F2F988091800026 +:1005E000211108C0877F8093800010928D001092A7 +:1005F0008C001BC0886080938000233019F48FEF3B +:100600009FEF0FC083E090E0821B9109880F991F34 +:100610002FEF3FEFA90102C0569547958A95E2F763 +:10062000CA0190938D0080938C000C94E2020E948A +:10063000E20284E08093C3011092C0010895279ADA +:100640002F988FEF9FEF90938700809386008AE02A +:100650008093800089E1809381000E9414280C948B +:1006600017030E941F036E9A769A0C94D7021F926A +:100670000F920FB60F9211242F933F938F939F9356 +:10068000EF93FF93E091C101F091C201CF01019678 +:100690009093C2018093C1010090C30102C0F695FE +:1006A000E7950A94E2F7EF738091C001823019F464 +:1006B000E03251F404C0813039F4EF3329F48091F1 +:1006C0006F008D7F80936F00F0E0E457FE4FE49160 +:1006D00021E031E0E29FC001E39F900D11240090E2 +:1006E000C40102C0969587950A94E2F790938D0015 +:1006F00080938C00FF91EF919F918F913F912F916B +:100700000F900FBE0F901F90189561110DC0FC0146 +:100710008281882331F085EE0E9441180E946B2867 +:1007200003C085EE0E94091980E090E0089581E001 +:1007300008950C94970308950C9431038091150249 +:10074000882309F448C08091D1019091D20100978B +:1007500079F40E94E8229093D2018093D101809194 +:10076000D30190E0009771F48091D40190E00AC029 +:100770000E94F422209100013091010128173907CD +:1007800040F329C00197880F991F880F991FFC011A +:10079000EB52FE4F60817181828193810E945D0ADC +:1007A000E091D30184E0E89FF0011124EB52FE4F69 +:1007B00060817181828193814FE050E00E94150E2B +:1007C0008091D30190E001966091D40170E00E9485 +:1007D000912C8093D3010C94DC02109217020C949C +:1007E0002A0A0895089581E0809317020C94F20379 +:1007F000089508958F929F92AF92BF92EF92FF92C9 +:100800000F931F93CF93DF93CDB7DEB7A3970FB6A8 +:10081000F894DEBF0FBECDBF7C01FC0100811181C9 +:10082000C8010E94E520B8010E94FC058C01B701B7 +:100830000E949903882309F4CCC10032F0E51F0718 +:1008400041F4F7018281882309F458C00E94790E8F +:10085000C0C10132F0E51F0741F4F701828188230E +:1008600009F44CC00E94820EB4C10232F0E51F07A9 +:1008700051F4F7018281882309F440C00E94750E6B +:100880008111F0CFE3CF0332F0E51F0739F4F70110 +:100890008281882399F10E94F3039BC10432F0E521 +:1008A0001F0739F4F7018281882341F10E94ED038B +:1008B00090C10532F0E51F0749F4F70182818823D2 +:1008C000E9F0809117028111F1CFE5CF0632F0E512 +:1008D0001F0739F4F7018281882381F00E94890E75 +:1008E0000AC00732F0E51F0749F4F7018281882327 +:1008F00029F00E94940E0E94F9036BC180911702A7 +:10090000811105C0F70182818111CFC018C1003E5D +:10091000110579F4F7018281882309F44DC00E9402 +:100920002A0A81E080931602109215021092D401D7 +:1009300050C1023E110559F4F70182818823E1F18B +:100940000E942A0A109216021092150242C1033E1A +:10095000110591F4F7018281882371F10E942A0A1E +:100960001092160281E0809315021092D30110922A +:10097000D2011092D1012DC10235110559F4F701B0 +:100980008281882309F425C18091000190910101A1 +:100990000A970DC00135110579F4F701828188238A +:1009A00009F417C180910001909101010A9690937A +:1009B0000101809300010DC14091040183E2EFE148 +:1009C000F1E0DE01119601900D928A95E1F7F701B1 +:1009D000808121E030E02C0F3D1F280F311DC9011F +:1009E0002091020130910301FC01E20FF31F6081AD +:1009F000772767FD7095640F711D882777FD8095B7 +:100A0000982F0E94B32920E030E040E451E40E9496 +:100A100018294B015C01F701218184E090E0821BE1 +:100A20009109BC01882777FD8095982F0E94B329F2 +:100A30009B01AC01C501B4010E94B0289B01AC012F +:100A400060E070E080E090E40E94262B20E030E03F +:100A50004CED50E40E94C32A4B015C01F7018281F6 +:100A60008823D1F04FE050E0C501B4010E94150E7B +:100A7000809116028823A1F08091D40124E0829F06 +:100A8000F0011124EB52FE4F80829182A282B38248 +:100A90008F5F8093D40104C0C501B4010E945D0A38 +:100AA0000F3F110508F02ECF94C08091D001811125 +:100AB0001FC0043130E5130709F051C00E949B03A9 +:100AC00081E08093D0010E94E8229093CF0180932F +:100AD000CE011092C7011092C9011092C801109264 +:100AE000CB011092CA011092CD011092CC0171C0BD +:100AF0008091CE019091CF010E94F422883C910513 +:100B000070F48091C701E82FF0E0EE0FFF1FE8536B +:100B1000FE4F118300838F5F8093C7015AC0043852 +:100B200080E5180721F00538104501F13AC0F701BA +:100B30008281882341F01092C50182E01EC00438F2 +:100B400030E5130759F58091C501811106C086E291 +:100B50000E94411886E20E94091982E01CC00438F4 +:100B6000F0E51F0741F305381045D9F4F7018281FC +:100B7000882331F01092C60180E20E94581929C0E2 +:100B80008091C601811106C087E20E94411887E268 +:100B90000E94091980E20E945F191BC005381045A8 +:100BA00029F381E08093C5018093C601C701A39614 +:100BB0000FB6F894DEBF0FBECDBFDF91CF911F916E +:100BC0000F91FF90EF90BF90AF909F908F900C94FB +:100BD000DE0280E0A3960FB6F894DEBF0FBECDBF55 +:100BE000DF91CF911F910F91FF90EF90BF90AF9049 +:100BF0009F908F90089508959CE0799FF0011124B3 +:100C000090E3899FE00DF11D1124E60FF11DEE0F19 +:100C1000FF1FE453FE4F859194910895880F991F0B +:100C2000FC01E45BFF4F859194910895880F991F13 +:100C3000FC01E453FE4F8591949108950F931F9307 +:100C4000CF93DF93EC01811521E39207A0F5C11545 +:100C500080E3D80708F0D7C0C83ED105D8F4C03E1D +:100C6000D10508F007C2C83AD10578F4C53AD105D4 +:100C700008F06AC0C130D10509F463C008F4F7C1B7 +:100C8000C430D10508F0F6C1F2C1CB3BD10508F460 +:100C900066C0EDC1C11590E2D90708F0AFC0C1151B +:100CA00021E0D20708F0E6C1C03FD10508F4DFC15A +:100CB0008E0110651FC2C03880E5D80700F5C03727 +:100CC00090E5D90708F0A3C0C11520E5D20709F4C3 +:100CD000ACC050F4CE01905480319F4008F0C7C1A1 +:100CE000DF708E01106A06C2C13080E5D80709F4B2 +:100CF000AEC0C43190E5D90708F4AFC0B8C1C3385D +:100D000020E5D20709F48EC050F4C13890E5D90728 +:100D100009F482C008F083C000E011EDEBC1C031DE +:100D200081E5D80708F4A3C1C11597E5D90708F4F0 +:100D300036C1CE0190578115904108F098C1DF70FF +:100D400093C101E010E0D6C1C53AD10509F494C1C0 +:100D5000C63AD10509F093C102E810E4CBC1C83A04 +:100D6000D10509F48FC1C93AD10509F48EC1CA3A37 +:100D7000D10509F48DC1CB3AD10509F48CC1CC3A27 +:100D8000D10509F48BC1CD3AD10509F48AC1C03B24 +:100D9000D10509F489C1CE3AD10509F488C1CF3A09 +:100DA000D10509F487C1C13BD10509F486C1C23B15 +:100DB000D10509F485C1C33BD10509F484C1C43B05 +:100DC000D10509F483C1C53BD10509F482C1C63BF5 +:100DD000D10509F481C1C73BD10509F480C1C83BE5 +:100DE000D10509F47FC1C93BD10509F47EC1CA3BD5 +:100DF000D10509F47DC100E014E47CC1CE019F70EF +:100E00000E94160678C1DD278E01106C73C1CF7069 +:100E1000DD278E01146D6EC100E010ED6BC100E0A6 +:100E200012ED68C100E013ED65C10E94EC1B0E9449 +:100E30002A0A0E94F1038FEF94E32CE08150904046 +:100E40002040E1F700C000000E94432353C180917D +:100E5000F20281608093F2024DC10E94A4238111AD +:100E600002C00E9480230E94B72390E090931D034C +:100E700080931C03C23080E5D80721F480911C03C5 +:100E8000816086C0C43090E5D90721F480911C03AD +:100E900082607EC0C63020E5D20721F480911C0319 +:100EA000846076C0C83080E5D80719F480911C03AF +:100EB00027C0CA3090E5D90721F480911C038061D6 +:100EC00067C0CC3020E5D20721F480911C038062FA +:100ED0005FC0CE3080E5D80721F480911C03806488 +:100EE00057C0C03190E5D90721F480911C03806878 +:100EF0004FC0C23120E5D20729F480911C038460E1 +:100F0000886046C0C33080E5D80721F480911C0377 +:100F10008E7F3EC0C53090E5D90721F480911C0337 +:100F20008D7F36C0C73020E5D20721F480911C03A5 +:100F30008B7F2EC0C93080E5D80719F480911C033F +:100F400026C0CB3090E5D90721F480911C038F7E19 +:100F50001FC0CD3020E5D20721F480911C038F7D86 +:100F600017C0CF3080E5D80721F480911C038F7B18 +:100F70000FC0C13190E5D90721F480911C038F7710 +:100F800007C0C331D04531F480911C038B7F877F2C +:100F900080931C0380911C030E94BB23ABC08D2F48 +:100FA00099278F70992781309105D9F49E0123707C +:100FB000332702C0880F991F2A95E2F79C688E019B +:100FC00044E0000F111F4A95E1F700271370802BB2 +:100FD000912B53E0CC0FDD1F5A95E1F7C076DD274A +:100FE0002FC08230910531F4DC2FCC278E01016FA8 +:100FF000106A80C08330910569F4CE01837099270F +:1010000001E010E002C0000F111F8A95E2F7C8014D +:101010009C680FC084309105B9F4CE018370992784 +:1010200001E010E002C0000F111F8A95E2F7C8012D +:101030009A6823E0CC0FDD1F2A95E1F7C07ED770B8 +:101040008C010C2B1D2B56C08530910531F4DC2F03 +:10105000CC278E01046F106A4DC0069709F04AC074 +:10106000CF71DD27DC2FCC278E01106243C000E05A +:1010700010E040C08E013EC001E810E43BC003E830 +:1010800010E438C002EE14E435C009EE14E432C0B6 +:101090000AEE14E42FC005EB14E42CC006EB14E4B4 +:1010A00029C007EB14E426C00CEC14E423C00DECBB +:1010B00014E420C003E815E41DC00AE815E41AC0D2 +:1010C00002E915E417C004E915E414C001E216E4CE +:1010D00011C003E216E40EC004E216E40BC005E200 +:1010E00016E408C006E216E405C007E216E402C0F2 +:1010F0000AE216E4C801DF91CF911F910F91089584 +:101100009CE0799FF001112490E3899FE00DF11D8F +:101110001124E60FF11DEE0FFF1FE453FE4F8591E2 +:101120009491803E9105E0F4803C910558F581331F +:10113000910509F46FC048F48932910509F463C040 +:101140008A32910509F46DC072C089339105E9F0C6 +:1011500082389105D1F08533910509F44DC067C0FF +:10116000833E910581F138F4803E9105B9F0823ECD +:101170009105D9F05CC0863E910561F1873E9105ED +:10118000A1F155C00E940E06089520911C0320FD78 +:1011900002C021FF4CC080EE90E049C080911C034A +:1011A00080FFF9CF89E390E042C080911C0382FF69 +:1011B0000EC080911C0384FF03C080E090E037C024 +:1011C00083EE90E034C080911C0382FFF2CF82EE68 +:1011D00090E02DC080911C0383FF0BC080911C0305 +:1011E00084FDEBCF87EE90E022C080911C0383FF4B +:1011F000F5CF86EE90E01BC080911C0385FF07C0F1 +:1012000089E290E014C080911C0385FFF9CF85E34B +:1012100090E00DC080911C0386FF07C08AE290E039 +:1012200006C080911C0386FFF9CF81E390E00E9405 +:101230001E0608950C94E002E82FF0E0E25BFE4FFA +:101240008081E82FEF70F0E082958F7021E030E030 +:10125000A90102C0440F551F8A95E2F740A30895E3 +:101260000F931F93CF93DF9385B7806885BF85B7B2 +:10127000806885BFC3E0D0E001E010E0FE01E25BE2 +:10128000FE4F8081E82FEF70F0E021A182958F70F2 +:10129000A80102C0440F551F8A95E2F7CA01822BAC +:1012A00081A38C2F0E941C09219740F78BE090E0CE +:1012B00061E070E0FC01EE5BFE4F2081E22FEF70F9 +:1012C000F0E042A122952F70DB0102C0AA0FBB1FE4 +:1012D0002A95E2F79D01242B22A3019758F7DF916D +:1012E000CF911F910F910C949C03EF92FF920F935B +:1012F0001F93CF93DF9300E212E0C3E0EE24E39468 +:10130000F12CD5E08C2F0E941C098BE090E040E08E +:1013100050E0FC01EE5BFE4F6081E62FEF70F0E0E5 +:1013200020A130E062956F7002C0359527956A95CF +:10133000E2F720FD09C09701082E02C0220F331FDB +:101340000A94E2F7422B532B019718F7F801929178 +:1013500082918F018417950721F051834083D093A8 +:1013600005018C2F0E941C09C15060F68091050177 +:1013700087FD2CC08150809305018F3F39F08FE9A4 +:101380009FE00197F1F700C0000020C080911E028D +:1013900090911F02909327028093260280911C0255 +:1013A00090911D02909325028093240280911A024D +:1013B00090911B0290932302809322028091180245 +:1013C0009091190290932102809320020E949E0323 +:1013D00081E0DF91CF911F910F91FF90EF900895E1 +:1013E000E82FF0E0EE0FFF1FE05EFD4F808191815E +:1013F000089508950F931F93CF9308E212E0C0E081 +:10140000F801929182918F010E946022C80FF2E050 +:1014100000321F07A9F78C2FCF911F910F910895CC +:101420000E94A423811102C00E9480230E94C9232C +:10143000809307033E9A809171008D7F80937100A5 +:1014400082E0809390008AE18093910081E0809314 +:101450002A02089580912A02811102C00E94100A76 +:1014600010927A0210927902809171008D7F8093A0 +:101470007100809190008F738093900010923C02D5 +:1014800010923B0210927302109274021092750235 +:10149000109276021092720210927102E1E5F2E06F +:1014A000A1E4B2E011921192119211921D921D923B +:1014B00082E0E137F807B1F70895CF92DF92EF921B +:1014C000FF920F931F93CF93DF9320913B02222330 +:1014D00009F484C06B017C0180912A02811102C051 +:1014E0000E94100A01E712E0C7E0D0E0A7019601D0 +:1014F000F80192918291729162918F010E94142958 +:10150000811131C0FE01EE0FFF1FEE0FFF1FEF5ADA +:10151000FD4F1082118212821382DE01AA0FBB1FBF +:10152000AF5BBD4F11961C921E92C730D105E9F0FA +:1015300021964481558166817781408351836283FE +:101540007383148215821682178212968D919C9154 +:10155000139711969C938E9313961C921E9212973A +:1015600034961296E2CF219708F6809179029091F5 +:101570007A02019797FD05C090937A0280937902D1 +:1015800004C010927A0210927902809179029091AF +:101590007A0220917702309178022817390724F0D7 +:1015A0001092780210927702892BC1F48091710019 +:1015B0008D7F80937100809190008F738093900055 +:1015C00010927302109274021092750210927602B9 +:1015D000109272021092710210923B02DF91CF9131 +:1015E0001F910F91FF90EF90DF90CF9008951F9281 +:1015F0000F920FB60F9211244F925F926F927F92CB +:101600008F929F92AF92BF92CF92DF92EF92FF9212 +:101610002F933F934F935F936F937F938F939F93FA +:10162000AF93BF93CF93DF93EF93FF9380913B02F0 +:10163000882309F49BC1C0917902D0917A021C16CB +:101640001D060CF093C140902B0250902C0260902C +:101650002D0270902E0220E030E0A901C301B201FA +:101660000E94BF2A18160CF065C0C130D10509F4DC +:1016700052C08091770290917802BE010E94912C15 +:101680007C01909378028093770280903D02909045 +:101690003E02A0903F02B090400220E030E040E8DF +:1016A0005FE3C501B4010E94B02860933D027093CE +:1016B0003E0280933F0290934002F701EE0FFF1F1E +:1016C000EE0FFF1FEF5AFD4FA30192016081718160 +:1016D000828193810E94182920E030E040E05EE39F +:1016E0000E94C32A9B01AC01C501B4010E94BF2A1C +:1016F00018168CF4C7010196BE010E94912C90939C +:1017000078028093770210923D0210923E0210926E +:101710003F0210924002E0917702F0917802EE0FC2 +:10172000FF1FEE0FFF1FEF5AFD4F60817181828115 +:101730009381D0C0C0907302D0907402E090750283 +:10174000F090760220E030E0A901C701B6010E94C6 +:1017500014292197882309F4A2C0FE01EE0FFF1F70 +:10176000EE0FFF1FEF5AFD4F80809180A280B38063 +:10177000A5019401C701B6010E94142987FF31C059 +:10178000A501940160E070E08CED93EC0E941829B3 +:1017900020E030E040E451E40E94182920E030E0ED +:1017A00040E05FE30E94C32A9B01AC0160E070E06F +:1017B00080E090E40E94262B9B01AC01C501B4019E +:1017C0000E94C32A9B01AC01C701B6010E941429E3 +:1017D00087FF07C0A701960160E070E08CED93E4FD +:1017E00039C0A5019401C701B6010E94BF2A18168D +:1017F0000CF055C0A501940160E070E08CED93E41D +:101800000E94182920E030E040E451E40E941829A9 +:1018100020E030E040E05FE30E94C32A9B01AC017E +:1018200060E070E080E090E40E94262B9B01AC0118 +:10183000C501B4010E94C32A9B01AC01C701B601D6 +:101840000E94BF2A18165CF5A701960160E070E0BF +:101850008CED93EC0E94182920E030E040E451E444 +:101860000E94182920E030E040E05FE30E94C32A94 +:101870009B01AC0160E070E080E090E40E94262BC8 +:101880009B01AC01C701B6010E94C32A6093730299 +:1018900070937402809375029093760213C0FE01D8 +:1018A000EE0FFF1FEE0FFF1FEF5AFD4F808191815A +:1018B000A281B3818093730290937402A093750206 +:1018C000B0937602609173027091740280917502F8 +:1018D0009091760220912802309129022F3F4FEFFC +:1018E000340731F02F5F3F4F3093290220932802B5 +:1018F0000E949F0E6B017C0120E034E244EF51E432 +:101900000E94142987FF08C086EFC82E88E2D82ECF +:1019100084EFE82E81E4F82E20E030E040E051E44E +:10192000C701B6010E94C32A9B01AC0160E074E2CA +:1019300084E79BE40E9418296B017C010E948529A1 +:1019400070939700609396002091060130910701F3 +:101950004091080150910901C701B6010E94C32AB4 +:101960000E948529709399006093980080913C02B1 +:10197000882309F433C1C0903702D0903802E09038 +:101980003902F0903A0220E030E0A901C701B60127 +:101990000E94BF2A1816D4F580912802909129023E +:1019A0008F3F2FEF920729F00196909329028093A1 +:1019B0002802C701B6010E949F0E20E030E040E0FF +:1019C00051E40E94C32A9B01AC0160E074E284E709 +:1019D0009BE40E9418296B017C010E948529709369 +:1019E0009700609396002091060130910701409185 +:1019F000080150910901C701B6010E94C32A0E9443 +:101A00008529709399006093980008C01092970000 +:101A100010929600109299001092980060913102F5 +:101A2000709132026F5F7F4F709332026093310288 +:101A3000209196003091970080E090E0232BF1F008 +:101A4000C0919600D09197000E94B1296B017C0152 +:101A5000BE0180E090E00E94B1299B01AC01609141 +:101A600033027091340280913502909136020E94C7 +:101A7000182920E03FEF4FE757E410C00E94B1293A +:101A80006B017C0120E030EE4FEF54E460913302B3 +:101A90007091340280913502909136020E94C32ADF +:101AA0009B01AC01C701B6010E94BF2A87FD96C009 +:101AB00080912F028F5F80932F0290E0209103038B +:101AC0003091040382179307A0F080910E038823BE +:101AD00019F010922F020DC0809171008D7F8093BC +:101AE0007100809190008F738093900010923C025F +:101AF0007DC080913002C0912F02811128C0C0901A +:101B00000803D0900903E0900A03F0900B0320E053 +:101B100030E0A901C701B6010E94BF2A1816BCF423 +:101B200081E08093300210923702109238021092B6 +:101B3000390210923A02C0923302D0923402E092FB +:101B40003502F0923602C150C0932F0243C010926A +:101B500030021092290210922802E0910503F091C0 +:101B6000060348E0C49FE00DF11D1124808191819E +:101B7000A281B3818093370290933802A0933902F7 +:101B8000B0933A0220E030E040E85EE36481758182 +:101B9000868197810E94C32A6B017C0180910A0192 +:101BA000682F70E080E090E00E94B12920E030E0F2 +:101BB00048EC52E40E9418299B01AC01C701B60110 +:101BC0000E94C32A609333027093340280933502DB +:101BD00090933602109232021092310280910703E4 +:101BE00080FD04C010923C0210923B02FF91EF91E5 +:101BF000DF91CF91BF91AF919F918F917F916F9125 +:101C00005F914F913F912F91FF90EF90DF90CF9098 +:101C1000BF90AF909F908F907F906F905F904F900C +:101C20000F900FBE0F901F901895CF92DF92EF92FA +:101C3000FF92CF93DF936B017C01EA0180912A022E +:101C4000811102C00E94100A8091070380FF46C0E4 +:101C50008091790290917A0208970CF03FC08091B0 +:101C600071008D7F8093710080913C0281110E94F0 +:101C70002A0A81E080933B021092290210922802E6 +:101C800020E030E0A901C701B6010E94BF2A181662 +:101C9000DCF48091790290917A02FC01EE0FFF1F33 +:101CA000EE0FFF1FEF5AFD4FC082D182E282F38216 +:101CB000FC01EE0FFF1FEF5BFD4FD183C083019648 +:101CC00090937A0280937902809171008260809370 +:101CD000710080919000806880939000DF91CF9197 +:101CE000FF90EF90DF90CF9008958091070381706F +:101CF0000895809107038160809307030E94CD239C +:101D00000C94F803809107038E7F809307030C9453 +:101D1000CD2380917B0290E0019666E070E00E9406 +:101D2000912C80937B02089580917B0290E0019733 +:101D300066E070E00E94912C80937B0208958F9260 +:101D40009F92AF92BF92CF92DF92EF92FF920F934A +:101D50001F93CF93DF936B017C01C0912802D09138 +:101D60002902BE0180E090E00E94B1294B015C0194 +:101D7000A701960160E070E08CE594E40E941829C8 +:101D80009B01AC01C501B4010E94C32A0E948529B0 +:101D900020917B02233009F473C028F4222351F0F0 +:101DA0002130E9F02CC1243009F4A0C0253009F419 +:101DB000E0C025C180E090E0A0E0BFE38093060191 +:101DC00090930701A0930801B093090110922B0290 +:101DD00010922C0210922D0210922E0210C110921D +:101DE0002B0210922C0210922D0210922E026431BE +:101DF000710540F46A30710560F520E030E040E89C +:101E00005EE32BC0693C710508F0AAC080E090E059 +:101E10000E94B12920E030E040EA51E40E94AF285E +:101E200020E030E044E353E40E9418299B01AC0118 +:101E30000E94C32A20E030E040E05EE30E94C32A13 +:101E40009B01AC0160E070E080E09EE30E94AF285F +:101E500044C020E030E040E05FE3C701B6010E94EB +:101E6000C32A6B017C0180E090E0A0E0BEE3809398 +:101E7000060190930701A0930801B0930901BFC028 +:101E800010922B0210922C0210922D0210922E0210 +:101E90004AE0469F9001479F300D1124C90168EB2D +:101EA0007BE00E947D2CBC016C5D754077FF03C018 +:101EB000719561957109882777FD8095982F0E940B +:101EC000B3292EE333EC4EE259E30E94C32A20E00B +:101ED00030E040EC5EE30E94B0286093060170930E +:101EE0000701809308019093090189C010922B0289 +:101EF00010922C0210922D0210922E02CE018370AD +:101F00009927892BE1F0BE016170772780E090E08E +:101F10000E94B12920E030E040E05EE30E94C32A45 +:101F200020E030E040E45FE30E94B02860930601C7 +:101F30007093070180930801909309010CC080E021 +:101F400090E0A0E0BFE38093060190930701A09387 +:101F50000801B0930901C770DD27CD2B09F04FC0F0 +:101F600010920601109207011092080110920901C7 +:101F700046C010922B0210922C0210922D02109249 +:101F80002E0200E010E020E03FE3009306011093F2 +:101F9000070120930801309309016739710578F131 +:101FA00080E090E00E94B12920E030E047E153E476 +:101FB0000E94AF2820E030E04AE754E40E9418294C +:101FC00020E030E048E452E40E94C32A20E030E000 +:101FD00040EA51E40E94F5290E948029660F771F8C +:101FE000660F771FFB01EE5AFE4F2081318142813F +:101FF0005381C701B6010E94C32A6B017C01C7014E +:10200000B601DF91CF911F910F91FF90EF90DF907C +:10201000CF90BF90AF909F908F90089580918C0249 +:102020000895CF93DF9300D01F92CDB7DEB79C0108 +:1020300080911303843019F593E099833B832A83BD +:102040009093E9008FEF9091E800815095FD06C0D4 +:1020500095ED9A95F1F700008111F5CF8091E80098 +:1020600085FF0DC040E050E063E070E0CE010196D6 +:102070000E9472128091E8008E778093E8000F90A2 +:102080000F900F90DF91CF910895CF93DF9300D001 +:102090001F92CDB7DEB720911303243021F522E043 +:1020A00029839B838A8383E08093E9008FEF90915B +:1020B000E800815095FD06C095ED9A95F1F7000076 +:1020C0008111F5CF8091E80085FF0DC040E050E020 +:1020D00063E070E0CE0101960E9472128091E800E8 +:1020E0008E778093E8000F900F900F90DF91CF9143 +:1020F0000895209113032430F1F422E02093E900A5 +:102100002FEF3091E800215035FD06C035ED3A95AE +:10211000F1F700002111F5CF2091E80025FF0BC059 +:1021200040E050E065E070E00E9472128091E800AB +:102130008E778093E8000895CF93DF93EC01909120 +:102140001303943009F046C0809115018823D9F01B +:10215000809116018823B9F09093E9008FEF909158 +:10216000E800815095FD06C095E19A95F1F70000D1 +:102170008111F5CF8091E80085FF2CC040E050E050 +:1021800060E170E017C081E08093E9008FEF9091EB +:10219000E800815095FD06C095ED9A95F1F7000095 +:1021A0008111F5CF8091E80085FF14C040E050E038 +:1021B00068E070E0CE010E9472128091E8008E7794 +:1021C0008093E80080E1FE01ACE7B2E001900D925F +:1021D0008A95E1F7DF91CF910895809112038111E3 +:1021E00009C00E9407140E9464148091E200846078 +:1021F0008093E200089510921203089508950895BF +:102200000C94AB2242E061EC81E00E94811342E039 +:1022100061EC82E00E94811342E061EC83E00E9465 +:10222000811342E161EC84E00C94811380911503E9 +:10223000833009F455C030F4813071F0823009F4F4 +:102240008EC008958A3009F47AC08B3009F460C0DA +:10225000893009F09CC020C080911403813A09F0B4 +:1022600096C08091E800877F8093E80080911803F2 +:1022700090911903892B21F460E18CE792E003C06F +:1022800060E080E090E070E00E94BD128091E80084 +:102290008B778093E800089580911403813209F0D0 +:1022A00076C08091180390911903009719F0039755 +:1022B00009F06DC08091E800877F8093E8008091ED +:1022C000E80082FD05C0809113038111F8CF5FC043 +:1022D0008091F10080938C028091E8008B7753C04D +:1022E00080911403813A09F052C0809118039091B3 +:1022F0001903892B09F04BC08091E800877F8093F8 +:10230000E8008091E80080FFFCCF8091150136C085 +:10231000809114038132D9F58091180390911903AB +:10232000892BA9F58091E800877F8093E8000E94BF +:10233000B61380911603809315010C94EC1B8091C9 +:102340001403813221F58091E800877F8093E800B3 +:102350000E94B6138091170380938D020895809197 +:102360001403813AA1F48091E800877F8093E8000C +:102370008091E80080FFFCCF80918D028093F10076 +:102380008091E8008E778093E8000C94B61308954E +:1023900084B7877F84BF88E10FB6F894809360008C +:1023A000109260000FBE90E080E80FB6F894809322 +:1023B0006100909361000FBE0E9459170E9407149C +:1023C0000E9464148091E20084608093E20078941B +:1023D0000E94EA160E945B178BE091E00E940517AD +:1023E00080911303853069F40E946C22809111035F +:1023F0008823B1F30E949A22882391F30E945C12F1 +:10240000EFCF0E946317ECCF292F332723303105FC +:10241000C9F064F42130310581F02230310509F032 +:1024200043C08DE690E028EA33E042C02132310516 +:10243000F1F02232310541F137C082E190E025E12F +:1024400034E036C099278130910541F08230910502 +:1024500041F0892B49F5E4EAF3E005C0E6E7F3E053 +:1024600002C0ECE4F3E0849190E09F0121C064306D +:10247000D8F4E62FF0E0EE0FFF1FE255FE4F20816B +:10248000318189E090E014C0643070F470E0FB01A9 +:10249000EE0FFF1FEA55FE4F20813181FB01EE5503 +:1024A000FE4F808190E004C080E090E020E030E0CA +:1024B000FA0131832083089580E189BD82E189BDDD +:1024C00009B400FEFDCF8091D8008F7D8093D800A5 +:1024D0008091E00082608093E0008091E00081FDC7 +:1024E000FCCF0895CF92DF92EF92FF920F931F934C +:1024F000CF93DF93EC018B016A010E94D513811108 +:1025000033C0C114D10439F0F60180819181081BD8 +:10251000190BC80FD91FE12CF12C0115110519F168 +:102520008091E80085FD16C08091E8008E77809349 +:10253000E800C114D10449F0F60180819181E80ED0 +:10254000F91EF182E08285E00FC00E94D513882336 +:1025500021F30AC089918093F10001501109FFEF26 +:10256000EF1AFF0ADACF80E0DF91CF911F910F9130 +:10257000FF90EF90DF90CF90089520911A03309153 +:102580001B032617370748F06115710539F42091B0 +:10259000E8002E772093E80001C0B90140E0611502 +:1025A0007105A9F120911303222309F443C02530BA +:1025B00009F442C02091E80023FD40C02091E800CA +:1025C00022FD32C02091E80020FFE9CF4091F300C6 +:1025D0002091F20030E0342BFC01CF016115710530 +:1025E00059F02830310540F481918093F100615019 +:1025F00071092F5F3F4FF1CF41E02830310509F0DD +:1026000040E02091E8002E772093E800C8CF4111E8 +:10261000C9CF0AC080911303882361F0853061F02F +:102620008091E80083FD0AC08091E80082FFF2CF2C +:1026300080E0089582E0089583E0089581E00895A0 +:1026400020911A0330911B032617370748F06115B4 +:10265000710539F42091E8002E772093E80001C03D +:10266000B901FC0120E06115710591F1809113031E +:10267000882309F440C0853009F43FC08091E80008 +:1026800083FD3DC08091E80082FD2FC08091E8006D +:1026900080FFE9CF2091F3008091F20090E0922B2F +:1026A0006115710559F08830910540F4249120930B +:1026B000F1003196615071090196F2CF21E008973F +:1026C00009F020E08091E8008E778093E800CBCF7E +:1026D0002111CCCF0AC080911303882361F085308B +:1026E00061F08091E80083FD0AC08091E80082FFDC +:1026F000F2CF80E0089582E0089583E0089581E0BC +:102700000895982F973058F59093E900981739F06D +:102710007091EC002091ED005091F00003C0242F47 +:10272000762F50E021FF19C03091EB003E7F3093AF +:10273000EB003091ED003D7F3093ED003091EB00E8 +:1027400031603093EB007093EC002093ED005093D8 +:10275000F0002091EE0027FF07C09F5FD3CF8F705E +:102760008093E90081E0089580E00895809114034A +:1027700087FF11C08091E80082FD05C0809113039E +:102780008111F8CF11C08091E8008B770BC0809148 +:102790001303882349F08091E80080FFF8CF8091EF +:1027A000E8008E778093E80008952091E40030914E +:1027B000E50095E64091EC00842F817040FF22C037 +:1027C0008091E80080FD1CC080911303882391F064 +:1027D000853091F08091EB0085FD10C04091E400C0 +:1027E0005091E5004217530729F39A01915011F7D0 +:1027F00084E0089582E0089583E0089581E00895DB +:1028000080E008954091E80042FFDECF08950E94E5 +:1028100075140E947D14E0EEF0E080818160808379 +:10282000E8EDF0E080818F77808319BCA7EDB0E000 +:102830008C918E7F8C9380818F7E80831092120387 +:1028400008950F931F93CF93DF930E9475140E94F6 +:102850007D14C8EDD0E088818F7788838881806877 +:10286000888388818F7D888319BC1092130310920E +:102870000F03109211031092100300EE10E0F80104 +:1028800080818B7F808388818160888342E060E0E3 +:1028900080E00E948113E1EEF0E080818E7F8083F2 +:1028A000E2EEF0E0808181608083808188608083B7 +:1028B000F80180818E7F8083888180618883DF91A9 +:1028C000CF911F910F910895E8EDF0E080818F7E08 +:1028D0008083E7EDF0E080818160808384E082BFC7 +:1028E00081E0809312030C942114E8EDF0E08081E4 +:1028F0008E7F80831092E20008951092DA00109289 +:10290000E10008951F920F920FB60F9211242F939A +:102910003F934F935F936F937F938F939F93AF9367 +:10292000BF93EF93FF938091E10082FF0BC08091F2 +:10293000E20082FF07C08091E1008B7F8093E1007D +:102940000E94E9168091DA0080FF1FC08091D800B4 +:1029500080FF1BC08091DA008E7F8093DA00809127 +:10296000D90080FF0DC080E189BD82E189BD09B435 +:1029700000FEFDCF81E0809313030E94ED1005C09F +:1029800019BC109213030E94FB108091E10080FF9C +:1029900019C08091E20080FF15C08091E2008E7F17 +:1029A0008093E2008091E20080618093E200809158 +:1029B000D80080628093D80019BC85E0809313030F +:1029C0000E94FF108091E10084FF30C08091E200FE +:1029D00084FF2CC080E189BD82E189BD09B400FE7D +:1029E000FDCF8091D8008F7D8093D8008091E10049 +:1029F0008F7E8093E1008091E2008F7E8093E200E1 +:102A00008091E20081608093E20080910F0388232F +:102A100011F084E007C08091E30087FD02C081E0EF +:102A200001C083E0809313030E9400118091E100B4 +:102A300083FF29C08091E20083FF25C08091E100DF +:102A4000877F8093E10082E08093130310920F034D +:102A50008091E1008E7F8093E1008091E2008E7F83 +:102A60008093E2008091E20080618093E20042E086 +:102A700060E080E00E9481138091F0008860809384 +:102A8000F0000E94FE10FF91EF91BF91AF919F91D6 +:102A90008F917F916F915F914F913F912F910F9007 +:102AA0000FBE0F901F9018951F920F920FB60F92A6 +:102AB00011242F933F934F935F936F937F938F9343 +:102AC0009F93AF93BF93CF93DF93EF93FF93C09107 +:102AD000E900CF708091EC00D82FD17080FDD0E854 +:102AE0001092E9008091F000877F8093F000789445 +:102AF0000E9498151092E9008091F0008860809300 +:102B0000F000CD2BCF70C093E900FF91EF91DF91E2 +:102B1000CF91BF91AF919F918F917F916F915F9175 +:102B20004F913F912F910F900FBE0F901F901895CE +:102B30001F93CF93DF93CDB7DEB7AA970FB6F89464 +:102B4000DEBF0FBECDBFE4E1F3E088E08E0F9091D1 +:102B5000F10091938E13FBCF0E9416118091E80033 +:102B600083FF1FC18091140390911503492F50E0FA +:102B70004A30510508F015C1FA01EA5AFF4F0C948A +:102B8000A52C803881F0823809F00BC180911803A0 +:102B90008F708093E9008091EB0085FB882780F996 +:102BA0001092E90006C080911003909111039111D9 +:102BB00082609091E800977F9093E8008093F10005 +:102BC0001092F100C8C0282F2D7F09F0EAC0882399 +:102BD00019F0823061F0E5C080911603813009F070 +:102BE000E0C0933009F080E0809311032BC0809106 +:102BF0001603811127C0809118038F7009F4D1C08A +:102C00008093E9002091EB0020FF1CC0933021F459 +:102C10008091EB00806214C09091EB0090619093E2 +:102C2000EB0021E030E0A90102C0440F551F8A9556 +:102C3000E2F74093EA001092EA008091EB0088608E +:102C40008093EB001092E9008091E800877F86C0B6 +:102C50008111A7C0109116031F778091E30080783F +:102C6000812B8093E3008091E800877F8093E800C8 +:102C70000E94B6138091E80080FFFCCF8091E300B2 +:102C800080688093E300111102C082E001C083E0FC +:102C90008093130386C08058823008F082C08091F0 +:102CA0001603909117038C3D53E0950779F583E067 +:102CB0008A838AE289834FB7F894DE01139620E075 +:102CC0003EE051E2E32FF0E050935700E49120FF03 +:102CD00003C0E295EF703F5FEF708E2F90E0EA3017 +:102CE00010F0C79601C0C0968D939D932F5F24313D +:102CF00049F74FBF8091E800877F8093E8006AE240 +:102D000070E0CE0101960E94BD1214C0AE014F5F6B +:102D10005F4F609118030E940412BC01009709F4F0 +:102D200040C09091E800977F9093E80089819A8154 +:102D30000E9420138091E8008B778093E80031C0D7 +:102D4000803879F58091E800877F8093E800809152 +:102D50000F038093F1008091E8008E778093E80064 +:102D60000E94B6131EC081111CC0909116039230B0 +:102D7000C0F48091E800877F8093E80090930F0370 +:102D80000E94B61380910F03811106C08091E30069 +:102D900087FD02C081E001C084E0809313030E949C +:102DA00002118091E80083FF0AC08091E800877FCC +:102DB0008093E8008091EB0080628093EB00AA96FC +:102DC0000FB6F894DEBF0FBECDBFDF91CF911F913C +:102DD00008950895CF93809113038823A1F0C091A3 +:102DE000E900CF709091EC00892F817090FD80E810 +:102DF000C82B1092E9008091E80083FD0E9498158D +:102E0000CF70C093E900CF9108959093930280937F +:102E100092020895E0919202F0919302309721F08E +:102E20000190F081E02D099480E00895E0919202F4 +:102E3000F0919302309721F00280F381E02D099404 +:102E40000895E0919202F0919302309721F004806E +:102E5000F581E02D0994089520919002309191021E +:102E60008217930771F09093910280939002E09102 +:102E70009202F0919302309721F00680F781E02DC5 +:102E80000994089520918E0230918F028217930742 +:102E900071F090938F0280938E02E0919202F091F4 +:102EA0009302309721F00084F185E02D0994089574 +:102EB00008950C9458170E94DF220E9430090E9446 +:102EC00065230C9414285F926F927F928F929F9249 +:102ED000AF92BF92CF92DF92EF92FF920F931F9328 +:102EE000CF93DF9300D000D01F92CDB7DEB70E9402 +:102EF00075099DE9C92E92E0D92E03E010E0AA24BD +:102F0000A394B12C502E802F0E94F0094C01F601A1 +:102F1000729062906F016826792661147104A1F4A1 +:102F20000150110978F78FEF89838A831B820E94F1 +:102F3000E8228160782F9D838C8349815A816B813F +:102F40008D810E94131838C08091F20281FD0E9489 +:102F5000F9092BE030E07501022E02C0EE0CFF1CD7 +:102F60000A94E2F7C70186219721892B09F1298369 +:102F70005A828E209F2091E0892809F490E09B835B +:102F80000E94E8228160782F9D838C8349815A8139 +:102F90006B818D810E941318000F111FF801EB56F1 +:102FA000FD4F80819181E826F926F182E08204C0FC +:102FB0002150310980F6B4CF0E944C251091940223 +:102FC0000E940A171817D1F00E940A1780939402E2 +:102FD0000F900F900F900F900F90DF91CF911F9156 +:102FE0000F91FF90EF90DF90CF90BF90AF909F90A8 +:102FF0008F907F906F905F900C941A090F900F90B4 +:103000000F900F900F90DF91CF911F910F91FF9034 +:10301000EF90DF90CF90BF90AF909F908F907F9078 +:103020006F905F900895CF93DF93CDB7DEB72B9766 +:103030000FB6F894DEBF0FBECDBF4F8358876987A8 +:103040007A878B87DE01119686E0FD0111928A95C1 +:10305000E9F785E0FE01379601900D928A95E1F738 +:1030600049815A816B817C818D819E810E948A1E5B +:103070002B960FB6F894DEBF0FBECDBFDF91CF9178 +:103080000895CF93882309F4C2C0C82F823859F419 +:103090000E940A1781FDBBC089E30E9464210E943F +:1030A000312289E30CC0833879F40E940A1780FD2D +:1030B000AEC083E50E9464210E94312283E50E9414 +:1030C000A621CF910C943122843859F40E940A171A +:1030D00082FD9DC087E40E9464210E94312287E422 +:1030E000EECF8CEF8C0F813A48F48C2F0E947C2716 +:1030F00081118DC08C2F0E946421E3CF80E28C0F60 +:10310000883048F4C77081E001C0880FCA95EAF79B +:103110000E94EA21D6CF8BE58C0F833078F4C53A34 +:1031200029F0C63A31F083E890E005C081E890E0EC +:1031300002C082E890E0CF910C942C1788E58C0FA8 +:10314000833108F064C0C83A39F1C93A41F1CA3A4A +:1031500049F1CB3A51F1CC3A59F1CD3A61F1C03B4A +:1031600069F1CE3A71F1CF3A79F1C13B81F1C23BBD +:1031700089F1C33B91F1C43B99F1C53BA1F1C63B39 +:10318000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B99 +:10319000C9F180E090E038C082EE90E035C089EE61 +:1031A00090E032C08AEE90E02FC085EB90E02CC01A +:1031B00086EB90E029C087EB90E026C08CEC90E095 +:1031C00023C08DEC90E020C083E891E01DC08AE828 +:1031D00091E01AC082E991E017C084E991E014C03F +:1031E00081E292E011C083E292E00EC084E292E0BC +:1031F0000BC085E292E008C086E292E005C087E25B +:1032000092E002C08AE292E0CF910C944217CF91F3 +:103210000895882309F44BC0823859F40E940A1794 +:1032200081FF45C089E30E9464210E94312289E325 +:103230000CC0833871F40E940A1780FF38C083E500 +:103240000E9464210E94312283E50E94A6210C94F1 +:103250003122843859F40E940A1782FF28C087E47B +:103260000E9464210E94312287E4EFCF9CEF980FE7 +:10327000913A58F390E2980F983050F4877091E0AB +:1032800001C0990F8A95EAF7892F0E94F021DFCFBC +:103290009BE5980F933020F480E090E00C942C177D +:1032A000885A833120F480E090E00C94421708950E +:1032B000882321F00E94EA210C943122089588236A +:1032C00021F00E94F0210C94312208957F928F9278 +:1032D0009F92AF92BF92CF92DF92EF92FF920F93A5 +:1032E0001F93CF93DF931F92CDB7DEB77C01C62E1D +:1032F000772EFC01058102950F70128111110E9439 +:1033000007220E945D21882379F0112369F080E271 +:103310008C0D883048F082E00E9446210E945D2199 +:1033200091E0D82ED92601C0D12CE72DE295EF707F +:10333000F0E0E05AFF4F0C94A52C872D807F072DDD +:103340000F70882311F00295007F112389F000236C +:1033500009F499C180E28C0D883020F4802F0E94FE +:10336000EA2103C0802F0E94FA210E9431228BC1E2 +:103370008C2D0E940919002309F4C3C180E28C0D31 +:10338000883020F4802F0E94F02103C0802F0E94FB +:1033900000220E943122B5C1872D807F972D9F701A +:1033A000803211F4892F03C0892F8295807FCC2031 +:1033B00021F0F1E0CF16A1F01DC0112339F0002358 +:1033C00019F1013009F50E941A229BC1002319F05E +:1033D000013009F496C189830E941D22898110C1A0 +:1033E000112321F0063008F08CC10EC0053008F022 +:1033F00088C106C1112359F0002331F0F7019581EE +:1034000090FF41C19F7095830E9458197AC1002393 +:1034100009F4F6C03EC1872D86958695837090E0AD +:10342000009719F0019761F06CC1112321F08C2DE8 +:10343000972D937002C080E090E00E942C1761C12C +:10344000112321F08C2D972D937002C080E090E025 +:103450000E94421756C18C2D112319F00E9454244A +:1034600002C00E94BC240E9441254BC1872D83705D +:1034700009F052C0111145C18C2D82958695877037 +:10348000880F880F9C2D9F70892E912CA12CB12C18 +:10349000082E04C0880C991CAA1CBB1C0A94D2F7E5 +:1034A000C4FE14C00FE010E020E030E0B901A80134 +:1034B00004C0440F551F661F771F8A95D2F7CB01B2 +:1034C000BA01609570958095909503C060E070E0BA +:1034D000CB01272D26952695237030E0223031052B +:1034E00069F02330310589F0682979298A299B29D7 +:1034F0002130310571F00E94D21F03C1682979295A +:103500008A299B290E94EE1FFCC00E94D21FC50180 +:10351000B4010E94B61FF5C0112319F0872D8170E8 +:1035200001C08695882309F4ECC08C2D8295869580 +:103530008770880F880F9C2D9F70892E912CA12C4D +:10354000B12C082E04C0880C991CAA1CBB1C0A9420 +:10355000D2F7C4FE14C00FE010E020E030E0B90163 +:10356000A80104C0440F551F661F771F8A95D2F724 +:10357000CB01BA01609570958095909503C060E08D +:1035800070E0CB01272D269526952370422F50E021 +:103590004230510569F04330510589F06829792995 +:1035A0008A299B294130510571F00E94AC20A9C0A5 +:1035B000682979298A299B290E94C820A2C00E94D3 +:1035C000AC20C501B4010E9490209BC08C2D90E0DE +:1035D000FC01E05EF109E531F10508F050C0E05969 +:1035E000FF4F0C94A52C0C2D0F70872D8F7111237C +:1035F00021F00E942920802F07CF0E944A20802F8F +:103600000E945F197EC0112341F0053008F079C097 +:10361000872D8F710E946F2074C0063008F071C032 +:10362000F7CF112339F0872D8F710E94292069C0AF +:103630001123C9F3872D8F710E944A2062C0112384 +:1036400029F0872D8F710E9414205BC00E940A20F0 +:1036500058C0112351F0172D1F71812F0E9429206E +:1036600063E0812F0E943D214CC081E00E944621F1 +:10367000023008F446C082E00E94462142C0112375 +:1036800031F0002381F28C2D0E9441183AC00023B2 +:1036900089F28C2D0E94091934C0472D4F706C2D72 +:1036A000C7010E9485030E942E1F2BC0111129C043 +:1036B000472D4F7050E042305105B9F04CF44115A0 +:1036C000510581F041305105E1F40E943C2819C0B8 +:1036D0004330510569F04430510599F48C2D0E9416 +:1036E0008E280FC00E9425280CC00E94582809C0AF +:1036F0000E946B2806C0472D4F706C2DC7010E9499 +:10370000FB05DD20F9F00E94392180FD1BC0F70187 +:1037100012820E9433210E942920C7010E94B11BFE +:103720000E9433210F90DF91CF911F910F91FF9055 +:10373000EF90DF90CF90BF90AF909F908F907F9051 +:103740000C944A200F90DF91CF911F910F91FF9021 +:10375000EF90DF90CF90BF90AF909F908F907F9031 +:1037600008950F931F93CF93DF93EC018881998184 +:103770002B813C81232BB9F09F3F11F48F3F99F0AF +:10378000CE010E94FA03882371F0688179818A81D1 +:103790000E942F218C010E94E4200E94AB1FB801DF +:1037A000CE010E946619DF91CF911F910F9108956C +:1037B0000E9407220E9417220E94DC210E943122CF +:1037C0000E94F2250E94412580E090E00E942C1783 +:1037D00080E090E00C9442170E94F7210C94D81BD3 +:1037E0000E942421292F22952F7030E02C303105A2 +:1037F0004CF42A3031056CF4225031092230310565 +:10380000A8F407C02C30310569F02F30310551F094 +:103810000DC0803F69F018F4803E40F409C0843F39 +:1038200029F406C093FB882780F9089580E0089565 +:1038300081E00895CF93DF9300D000D01F92CDB7E1 +:10384000DEB70F900F900F900F900F90DF91CF91F8 +:103850000895CF93DF9300D000D000D0CDB7DEB76E +:1038600026960FB6F894DEBF0FBECDBFDF91CF9185 +:1038700008951F93CF93DF93C0919D0216E080912E +:103880009E02C81799F0D0E01C9FF0011D9FF00D1B +:103890001124E156FD4F4081518162817381848101 +:1038A00095810E94291C2196C770E9CFDF91CF91A5 +:1038B0001F9108954091CF025091D0026091D102A2 +:1038C0007091D2028091D3029091D4020C94291C61 +:1038D0008091D40282958F7009F054C08091D102FA +:1038E000882309F44FC080919D02A0919E026091AF +:1038F000CF027091D0024091D2025091D302B6E033 +:103900008A1709F43FC090E041155105C1F17F3F8E +:1039100011F46F3FA1F1B89FF001B99FF00D112490 +:10392000E156FD4F218172132AC02081621327C006 +:103930002281211124C0238134812417350710F4FA +:1039400021503109241B350B283C3105C0F420914E +:10395000D4022F7020612093D40226E0289FF0012A +:10396000299FF00D1124EC55FD4F80818F708061EF +:1039700080838FEC92E00E94B11B0C94391C01965D +:103980008770BECF0895CF92DF92EF92FF920F9390 +:103990001F93CF93DF93CDB7DEB762970FB6F8943E +:1039A000DEBF0FBECDBF8C0185E0F801DE011D96A4 +:1039B00001900D928A95E1F7D8014C9111965C9196 +:1039C000119712966C9112971396CD90DC901497E4 +:1039D0003091CF027091D0028091D2029091D302A7 +:1039E000009709F46BC17F3F19F43F3F09F466C1AA +:1039F000E090D102EE2009F4C0C02091D402C81694 +:103A0000D90628F0F601E81BF90BCF0104C0809518 +:103A100090958C0D9D1DFF24F394883C910578F0C2 +:103A2000F12C207F09F0C6C07C2DD98AC88A8989EB +:103A30000E941A1C8FEC92E00E94B11BB1C0822F31 +:103A4000807F09F046C0751314C0341312C0611191 +:103A500010C02F7020612093D4020E945A1C8FEC5A +:103A600092E00E94B11B8091D402D80115968C93EC +:103A70002EC0CD2819F15F3F11F44F3FF9F0F62E1B +:103A800061111CC080919D0220919E0236E0821738 +:103A900009F45AC090E0389FF001399FF00D1124CD +:103AA000E156FD4F7181571306C07081471303C063 +:103AB0007281711103C001968770E9CFF62E6623DB +:103AC00009F418C18091D40281608093D402F12C52 +:103AD00011C1751308C0341306C0611104C0809170 +:103AE000D402D801C3C04D875E878D859E856A8BC1 +:103AF0000E94F01B6A898823E1F16623D1F12091AD +:103B0000D402822F82958F7090E0029774F080919A +:103B1000CF029091D00298878F831986DB86CA8660 +:103B20002C87CE0107960E94B11B86E0F801AFEC0E +:103B3000B2E001900D928A95E1F70E94681C0E9404 +:103B40005A1CFF24F394D6C04D875E878D859E85D1 +:103B50000E942421292F22952F7030E02230310538 +:103B60000CF0BCC09F7009F0B6C0805E883008F4CD +:103B7000C1C0C8010E94B11BE4CFC816D90608F421 +:103B800053C0F601E81BF90BCF01883C910508F4FE +:103B900050C0F12C7C2DD98AC88A89890E941A1CB0 +:103BA000EFECF2E086E0DF011D928A95E9F70E94D2 +:103BB0005A1CA0C0751314C0341312C0611110C078 +:103BC0008091D402F8018583C8010E94B11B86E070 +:103BD000EFECF2E0DF011D928A95E9F7FE2C8AC036 +:103BE0004D875E878D859E856A8B0E94F01B6A8952 +:103BF000882309F4BECF662309F4BBCF2091D402F9 +:103C0000822F82958F7090E002970CF48ECF809176 +:103C1000CF029091D0029A8389831B82DD82CC826D +:103C20002E83CE0101967FCF809590958C0D9D1DA2 +:103C3000ACCFF62E662309F49CCF75132EC0341337 +:103C40002CC02091D40220FD1FC0822F82958F703E +:103C5000D9F0D80115962C9315978F3049F08F5FC6 +:103C6000982F9295907F822F8F70892B15968C9329 +:103C7000C8010E94B11B86E0F801AFECB2E00190F0 +:103C80000D928A95E1F793CF86E0F801AFECB2E0B0 +:103C900001900D928A95E1F72DC04D875E878D8545 +:103CA0009E850E94F01B811140CF8091D4028160DB +:103CB0008093D402C8010E94B11B1CC0662309F482 +:103CC00058CF4D875E878D859E850E94F01B882387 +:103CD00009F44FCF2ACF811148CF0CC024303105D1 +:103CE0000CF047CF9F7009F440CFF8019581907F89 +:103CF00009F03BCF8F2D62960FB6F894DEBF0FBE52 +:103D0000CDBFDF91CF911F910F91FF90EF90DF908A +:103D1000CF9008951F93CF93DF93CDB7DEB72C9745 +:103D20000FB6F894DEBF0FBECDBF4F8358876987AB +:103D30007A878B879C87CE0107960E94C31C8823B5 +:103D400069F08F8198852A853B85232BF1F19F3F70 +:103D500009F063C08F3F09F060C037C086E0FE0104 +:103D60003796DE01119601900D928A95E1F76F81E9 +:103D70007885EA85FB85309741F17F3F11F46F3FED +:103D800021F120919E0230E0C901019687709927A8 +:103D900040919D0250E08417950709F447C069835C +:103DA0007A83FD83EC8396E0929FD001939FB00DC0 +:103DB0001124A156BD4FFE01319601900D929A95A6 +:103DC000E1F780939E020E94391C16E080919D02CB +:103DD00090919E028917C1F1189FC001112481564C +:103DE0009D4F0E94C31C882379F1E0919D021E9F84 +:103DF000F0011124E156FD4F4081518162817381B0 +:103E0000848195810E94291C80919D0290E00196F9 +:103E10008770992780939D02D9CF4F8158856985F6 +:103E20007A858B859C850E94291CCFCF0E94EC1B34 +:103E300010929E0210929D02EFECF2E086E0DF010C +:103E40001D928A95E9F7C1CF2C960FB6F894DEBF84 +:103E50000FBECDBFDF91CF911F910895EF92FF92DA +:103E60000F931F93CF93DF938C01009709F46CC0DD +:103E7000F12CEE24E394E8012196F8018491843733 +:103E800040F4843008F051C0813081F0823019F163 +:103E90005BC0853709F444C0A8F19CE7980F9037C0 +:103EA00008F052C08F770E94091941C00E5F1F4F62 +:103EB000FE01C49180E28C0F883048F4C7708E2DCB +:103EC00001C0880FCA95EAF70E940A2214C08C2FFD +:103ED0000E9441182DC00E5F1F4FFE01C49180E269 +:103EE0008C0F883058F4C7708E2D01C0880FCA958A +:103EF000EAF70E9410220E9431221AC08C2F0E94E1 +:103F0000091916C00E5F1F4FFE01C491CC2381F02A +:103F10008FE99FE00197F1F700C00000C150F6CF94 +:103F20000E5F1F4FFE01F49003C00E9441188E01E6 +:103F30008F2D882309F49FCFEFE9FFE03197F1F748 +:103F400000C000008150F5CFDF91CF911F910F91FC +:103F5000FF90EF90089508956093D9027093DA026C +:103F60008093DB029093DC020C94D81B0F931F9379 +:103F70000091D9021091DA022091DB023091DC022B +:103F8000DC01CB01802B912BA22BB32B8093D90288 +:103F90009093DA02A093DB02B093DC021F910F91A1 +:103FA0000C94D81B0F931F930091D9021091DA0241 +:103FB0002091DB023091DC02DC01CB0180239123D4 +:103FC000A223B3238093D9029093DA02A093DB0259 +:103FD000B093DC021F910F910C94D81B0F931F9389 +:103FE0000091D9021091DA022091DB023091DC02BB +:103FF000DC01CB0180279127A227B3278093D90228 +:104000009093DA02A093DB02B093DC021F910F9130 +:104010000C94D81B1092D5021092D6021092D7029F +:104020001092D8020C94D81B41E050E060E070E0A0 +:1040300004C0440F551F661F771F8A95D2F740931F +:10404000D5025093D6026093D7027093D8020C9495 +:10405000D81B41E050E060E070E004C0440F551F01 +:10406000661F771F8A95D2F78091D5029091D6026C +:10407000A091D702B091D802482B592B6A2B7B2BE9 +:104080004093D5025093D6026093D7027093D80222 +:104090000C94D81B41E050E060E070E004C0440F95 +:1040A000551F661F771F8A95D2F7409550956095EA +:1040B00070958091D5029091D602A091D702B091CF +:1040C000D802482359236A237B234093D502509377 +:1040D000D6026093D7027093D8020C94D81B41E0AB +:1040E00050E060E070E004C0440F551F661F771F6A +:1040F0008A95D2F78091D5029091D602A091D702ED +:10410000B091D802482759276A277B274093D502C8 +:104110005093D6026093D7027093D8020C94D81BA8 +:104120000F931F930091D5021091D6022091D702D0 +:104130003091D802DC01CB01802B912BA22BB32B29 +:104140008093D5029093D602A093D702B093D80261 +:104150001F910F910C94D81B0F931F930091D502C0 +:104160001091D6022091D7023091D802DC01CB0108 +:1041700080239123A223B3238093D5029093D60268 +:10418000A093D702B093D8021F910F910C94D81B23 +:104190000F931F930091D5021091D6022091D70260 +:1041A0003091D802DC01CB0180279127A227B327C9 +:1041B0008093D5029093D602A093D702B093D802F1 +:1041C0001F910F910C94D81B0895CF92DF92EF921C +:1041D000FF920F931F93CF93DF938C01C090D9026E +:1041E000D090DA02E090DB02F090DC028091D50200 +:1041F0009091D602A091D702B091D802C82AD92AAC +:10420000EA2AFB2ACFE1D0E0D701C6010C2E04C078 +:10421000B695A795979587950A94D2F780FF06C023 +:10422000B8018C2F0E948008019721F4219760F734 +:1042300080E001C08C2FDF91CF911F910F91FF90F3 +:10424000EF90DF90CF900895CF93DF93EC010E9421 +:10425000E520BE010E948008DF91CF910895CB0137 +:104260000E94242108958091DD028595859585958C +:1042700008958091DD028770089598E0899F9001EC +:104280001124262B2093DD020C9429202091DD029D +:10429000809582238093DD02982F977069F430E037 +:1042A000482F552747FD50952417350729F0859548 +:1042B000859585950C944A2008959091DD0297701C +:1042C00081E009F480E0089590911501992321F08F +:1042D00090911601911109C0209117013091180198 +:1042E000F90132969FEF40E01FC0982F9695969562 +:1042F00096959F3050F5E0911701F0911801E90F64 +:10430000F11D877021E030E0A90102C0440F551F64 +:104310008A95E2F7CA019181892B818308959F3F95 +:1043200039F04F5F4E3041F051915813F8CF0DC026 +:104330005111F7CF942FF5CF9F3F39F0F901E90FD5 +:10434000F11D97FDFA9582830895089590911501C6 +:10435000992321F090911601911109C02091170124 +:1043600030911801F9013296205F3F4F1FC0982FFE +:104370009695969596959F30F0F4E0911701F091FF +:104380001801E90FF11D877021E030E0A90102C09A +:10439000440F551F8A95E2F7CA01809591818923C0 +:1043A000818308953196E217F30729F090819813DD +:1043B000F9CF1082F7CF089581E090E0E0911701E6 +:1043C000F0911801E80FF91F1082019680319105D4 +:1043D000A9F708959091F102892B8093F102089535 +:1043E00080959091F10289238093F10208951092B3 +:1043F000F10208959091F002892B8093F0020895C4 +:1044000080959091F00289238093F0020895109294 +:10441000F00208959091EF02892B8093EF020895A6 +:1044200080959091EF0289238093EF020895109276 +:10443000EF0208958093DE0208951092DE0208953F +:104440008091170190911801FC0131969C01205F29 +:104450003F4F80E0919191118F5FE217F307D1F701 +:104460000895E0911701F09118018091F102808385 +:10447000E0911701F091180190818091F002892B51 +:104480008083E0911701F091180190818091EF02F3 +:10449000892B80838091DE02882361F0E0911701EF +:1044A000F09118019081892B80830E942022811134 +:1044B0001092DE0280911701909118010C9416174A +:1044C00020E0009739F0AC01415051098423952335 +:1044D0002F5FF7CF822F089580911303843039F135 +:1044E0001092F30220E488E190E00FB6F894A895CA +:1044F000809360000FBE2093600080E00E94EC0279 +:1045000080E00E941A0983B7817F846083BF83B7EC +:10451000816083BF7894889583B78E7F83BF88E15D +:104520000FB6F89480936000109260000FBE08955B +:104530000895089580E00E94EC020E9498220E9453 +:1045400075090E9499220E94FA0991E0811101C027 +:1045500090E0892F08950E94EC1B80E00E94EC02FD +:104560000E9414280E940A170C941A091F920F9295 +:104570000FB60F9211248F939F93AF93BF938091A7 +:10458000F302811113C08091F4029091F502A09181 +:10459000F602B091F7024196A11DB11D8093F4027D +:1045A0009093F502A093F602B093F702BF91AF91FA +:1045B0009F918F910F900FBE0F901F90189582E0E2 +:1045C00084BD93E095BD9AEF97BD80936E000895EA +:1045D0002FB7F8948091F4029091F502A091F60221 +:1045E000B091F7022FBF0895CF92DF92EF92FF9222 +:1045F0000F931F932FB7F8944091F4025091F50256 +:104600006091F6027091F7022FBF6A017B01EE24E0 +:10461000FF248C0120E030E0C016D106E206F3064C +:1046200010F4415051099A01281B390BC9011F91FF +:104630000F91FF90EF90DF90CF9008951F920F920F +:104640000FB60F9211248F939F93AF93BF938091D6 +:10465000F4029091F502A091F602B091F702019652 +:10466000A11DB11D8093F4029093F502A093F60270 +:10467000B093F702BF91AF919F918F910F900FBEB2 +:104680000F901F9018950E940714F8942FEF87EA57 +:1046900091E6215080409040E1F700C0000087E0A3 +:1046A00090EBDC0180931E0390931F03A0932003E3 +:1046B000B09321039CE088E10FB6F894A89580930D +:1046C00060000FBE90936000FFCF0E94A423811171 +:1046D00002C00E9480230E94AF238093F2020E94B6 +:1046E000B72380931C0387FB882780F980931601EA +:1046F0000E94B323682F70E080E090E00C94AC1F20 +:104700006DEE7EEF80E090E00E94CB2C60E082E0D6 +:1047100090E00E94B92C60E083E090E00E94B92C08 +:1047200060E084E090E00E94B92C60E085E090E0D9 +:104730000E94B92C60E086E090E00E94B92C6FEFF7 +:1047400087E090E00C94B92C80E090E00E94B32CBC +:1047500021E08D3E9E4F09F020E0822F089582E0F7 +:1047600090E00C94AB2C83E090E00C94AB2C84E0B4 +:1047700090E00C94AB2C682F84E090E00C94B92C62 +:1047800086E090E00C94AB2C682F86E090E00C94CF +:10479000B92C87E090E00C94AB2C682F87E090E078 +:1047A0000C94B92C8091FA0280FF0BC060911C011F +:1047B00085E0689FB001112475956795759567959B +:1047C0002BC081FF09C060911C0185E0689FB0018A +:1047D00011247595679520C082FF07C060911C0168 +:1047E00085E0689FB001112417C09091FB029923C6 +:1047F000D1F060911B01961788F720911C0185E08C +:10480000289F90011124929FA001939F500D112485 +:1048100070E0CA010E94912C6038710540F4611566 +:10482000710539F002C065E070E0862F08958FE7CA +:10483000089581E008958091FA0280FF08C0609198 +:104840001A0170E0759567957595679521C081FF90 +:1048500006C060911A0170E07595679519C082FFD6 +:1048600004C060911A0170E010C09091FB0299237E +:10487000C1F0609119019617A0F780911A01899FE4 +:10488000C001112470E00E94912C6038710528F459 +:104890006115710521F0862F08958FE7089581E055 +:1048A000089561E070E0F4CF803F21F40E94D223AC +:1048B000819504C0813F29F40E94D2238093FE0297 +:1048C0000895823F21F40E94D223819504C0833F42 +:1048D00029F40E94D2238093FD020895893F19F4A0 +:1048E0000E941B2405C08A3F31F40E941B2481953D +:1048F0008093FF0208958B3F21F40E941B24819531 +:1049000004C08C3F29F40E941B2480930003089567 +:10491000843F21F48091FC02816017C0853F21F41F +:104920008091FC02826011C0863F21F48091FC02DC +:1049300084600BC0873F21F48091FC02886005C031 +:10494000883F31F48091FC0280618093FC020895DD +:104950008D3F21F48091FA0281600BC08E3F21F4DB +:104960008091FA02826005C08F3F29F48091FA029B +:1049700084608093FA020895803F39F48091FE02AA +:1049800087FF6CC01092FE0269C0813F29F48091BC +:10499000FE021816BCF362C09091FD02823F29F41A +:1049A00097FF5CC01092FD0259C0833F19F419169D +:1049B000CCF354C0893F41F48091FF0218160CF0EB +:1049C0004DC01092FF024AC08A3F29F48091FF0235 +:1049D00087FF44C0F6CF8B3F39F48091000387FFF7 +:1049E0003DC0109200033AC08C3F29F4809100032F +:1049F0001816BCF333C0843F21F48091FC028E7FF3 +:104A000017C0853F21F48091FC028D7F11C0863F45 +:104A100021F48091FC028B7F0BC0873F21F48091B1 +:104A2000FC02877F05C0883F31F48091FC028F7EB5 +:104A30008093FC0213C08D3F21F48091FA028E7F97 +:104A40000BC08E3F21F48091FA028D7F05C08F3F0D +:104A500029F48091FA028B7F8093FA028091FD0203 +:104A600081110EC08091FE0281110AC08091FF0267 +:104A7000811106C080910003811102C01092FB02D7 +:104A800008958CEF92E00E9421170E94E8229093F3 +:104A9000F9028093F80208951F93CF93DF938091DA +:104AA000F8029091F9020E94F422AC019091FB026D +:104AB000992321F020911D0130E006C020911E01B4 +:104AC0008AE0289F900111244217530708F486C0FA +:104AD0008091FD02C091FE02D091FF02109100036F +:104AE000811107C0C11176C0D11174C0111172C0FB +:104AF00075C09F3F19F09F5F9093FB02181624F436 +:104B00000E94D2238093FD028091FD0287FF05C0A1 +:104B10000E94D22381958093FD021C1624F40E94EA +:104B2000D2238093FE028091FE0287FF05C00E947F +:104B3000D22381958093FE026091FD02662339F1B4 +:104B4000C091FE02CC2319F1772767FD7095872F5E +:104B5000972F0E94B32923E333E343E35FE30E94EB +:104B6000C32A0E9480296093FD026C2F772767FD7E +:104B70007095872F972F0E94B32923E333E343E3F4 +:104B80005FE30E94C32A0E9480296093FE021D16E3 +:104B900024F40E941B248093FF028091FF0287FF70 +:104BA00005C00E941B2481958093FF02111624F4F6 +:104BB0000E941B24809300038091000387FF05C09F +:104BC0000E941B24819580930003DF91CF911F9158 +:104BD0000C9441259F3F09F08ECF96CFDF91CF9166 +:104BE0001F910895ECEFF2E085E0DF011D928A95B8 +:104BF000E9F71092FB021092FA020895833081F1D6 +:104C000028F4813059F08230D1F00895853009F4CC +:104C100049C0B8F1863009F456C0089580911E014C +:104C2000262F30E0280F311D2F3F310524F4680F67 +:104C300060931E0108958FEF80931E010895809167 +:104C40001D01262F30E0280F311D2F3F310524F4A0 +:104C5000680F60931D0108958FEF80931D010895E3 +:104C600080911C01262F30E0280F311D2F3F310588 +:104C700024F4680F60931C0108958FEF80931C014A +:104C8000089580911B01262F30E0280F311D2F3F02 +:104C9000310524F4680F60931B0108958FEF809312 +:104CA0001B01089580911A01262F30E0280F311D35 +:104CB0002F3F310524F4680F60931A0108958FEF98 +:104CC00080931A01089580911901262F30E0280F52 +:104CD000311D2F3F310524F4680F609319010895A9 +:104CE0008FEF809319010895833011F128F48130FA +:104CF00049F0823091F00895853081F120F18630BD +:104D0000C1F1089580911E01681720F4861B8093DD +:104D10001E01089510921E01089580911D016817CB +:104D200020F4861B80931D01089510921D010895A3 +:104D300080911C01681720F4861B80931C01089544 +:104D400010921C01089580911B01681720F4861BA6 +:104D500080931B01089510921B01089580911A0100 +:104D6000681720F4861B80931A01089510921A0187 +:104D7000089580911901681720F4861B809319010A +:104D800008951092190108950F931F93873208F028 +:104D900048C08E3108F08DC0803109F477C008F525 +:104DA000873009F461C068F4863009F09DC08091B5 +:104DB000F202817F8E7F8093F20281E08093020372 +:104DC00094C08B3009F489C08E3009F08DC0809179 +:104DD000F20282FB222720F991E0922790FB82F9D0 +:104DE0005EC0863109F479C060F4813109F07CC07D +:104DF0000E94EC1B9091160181E089278093160197 +:104E00006CC0893109F469C08B3109F06DC08091A3 +:104E1000F20281FB222720F991E0922790FB81F991 +:104E20003EC0883309F459C050F4893209F457C0A0 +:104E3000853309F454C0873209F451C055C0833416 +:104E400009F44DC028F48A3308F44EC0895332C0A7 +:104E5000883409F049C00E94EC1B0E942A0A0E9473 +:104E6000F1030E94432339C09091F202892F80956B +:104E7000817080FB90F929F0966098609093F2021F +:104E800034C0997F977F9093F20227C08091F202FD +:104E900083FB222720F991E0922790FB83F98093EE +:104EA000F2029923D1F08091F20281608093F202A4 +:104EB00014C08D5141E050E060E070E08A019B0138 +:104EC00004C0000F111F221F331F8A95D2F7C9019A +:104ED000B8010E94AC1F0E94EC1B81E006C061E09B +:104EE00070E080E090E0F5CF80E01F910F91089591 +:104EF00080E0089580E00895CF93C82F8091020349 +:104F0000813069F018F08230C9F184C0E091170156 +:104F1000F09118018081823209F07EC007C0E091D3 +:104F20001701F09118018081823261F48C2F0E9468 +:104F30007827811104C08C2F0E94C4261DC081E0F7 +:104F400090E01AC08C2F0E947A27811114C0C431BE +:104F500079F048F4CB3079F0C03109F061C082E0DB +:104F60008093020308C0C93219F0C83321F058C039 +:104F70001092020355C081E0817054C0C93291F192 +:104F800020F5C43179F1B0F4C73009F047C08EE1A3 +:104F900080931E0182E380931D018AE080931C01AF +:104FA00084E180931B0188E080931A0188E280935A +:104FB000190134C0CE51C63088F5EC2FF0E0EA5428 +:104FC000FE4F80818093010329C0CE34E9F020F4A4 +:104FD000CB3421F56AE013C0C13579F0C235F1F464 +:104FE00061E00DC080910103882319F01092010344 +:104FF00015C081E08093020315C061E006C0809176 +:1050000001030E94FE250AC06AE0809101030E940C +:10501000742604C01092020380E004C081E002C044 +:1050200080E0AACFCF9108950E94A423811102C0ED +:105030000E9480230E94C02380931D0380FF02C032 +:10504000869501C080E00C94EC0280911D03982F9E +:105050009695292F30E0233031054CF49F5F990F4E +:105060008170892B816080931D030E94C4238091ED +:105070001D0386950C94EC0280911D03982F969544 +:1050800091F09158990F8170892B80931D038E7F29 +:1050900091E009F490E080911D0390FB80F98093EA +:1050A0001D030E94C42380911D0386950C94EC027D +:1050B00080911D03982F909590FB80F980931D039C +:1050C0000E94C42380911D0380FF02C0869501C009 +:1050D00080E00C94EC0290911D03892F86958F5FE0 +:1050E0008F779170843028F4880F892B80931D036B +:1050F00002C090931D0380911D038E7F91E009F4FF +:1051000090E080911D0390FB80F980931D030E9425 +:10511000C42380911D0386950C94EC0220911D03FD +:10512000922F96958927982F990F822F8170892B1E +:1051300080931D038E7F91E009F490E080911D0320 +:1051400090FB80F980931D030E94C42380911D036E +:1051500086950C94EC0280911D0386950895505815 +:10516000BB27AA270ED0D1C1C2D130F0C7D120F0C1 +:1051700031F49F3F11F41EF4B7C10EF4E095E7FB44 +:105180009FC1E92FD3D180F3BA1762077307840751 +:10519000950718F071F49EF5EBC10EF4E0950B2E17 +:1051A000BA2FA02D0B01B90190010C01CA01A00179 +:1051B0001124FF27591B99F0593F50F4503E68F1D4 +:1051C0001A16F040A22F232F342F4427585FF3CF15 +:1051D000469537952795A795F0405395C9F77EF4E6 +:1051E0001F16BA0B620B730B840BBAF09150A1F02F +:1051F000FF0FBB1F661F771F881FC2F70EC0BA0FB5 +:10520000621F731F841F48F4879577956795B7953C +:10521000F7959E3F08F0B3CF9395880F08F0992734 +:10522000EE0F97958795089527D108F481E00895AA +:105230000CD06BC163D140F05AD130F021F45F3F04 +:1052400019F03EC1511195C14FC170D198F3992306 +:10525000C9F35523B1F3951B550BBB27AA2762173A +:105260007307840738F09F5F5F4F220F331F441F7F +:10527000AA1FA9F333D00E2E3AF0E0E830D09150B7 +:105280005040E695001CCAF729D0FE2F27D0660FA4 +:10529000771F881FBB1F261737074807AB07B0E8E3 +:1052A00009F0BB0B802DBF01FF2793585F4F2AF0F9 +:1052B0009E3F510568F004C15CC15F3FECF3983E2E +:1052C000DCF3869577956795B795F7959F5FC9F756 +:1052D000880F911D9695879597F90895E1E0660FDF +:1052E000771F881FBB1F621773078407BA0720F058 +:1052F000621B730B840BBA0BEE1F88F7E0950895C1 +:1053000004D06894B11135C1089518D188F09F5721 +:1053100090F0B92F9927B751A0F0D1F0660F771F01 +:10532000881F991F1AF0BA95C9F712C0B13081F0E1 +:105330001FD1B1E008951CC1672F782F8827B85F6F +:1053400039F0B93FCCF3869577956795B395D9F742 +:105350003EF490958095709561957F4F8F4F9F4F4C +:105360000895E89409C097FB3EF490958095709558 +:1053700061957F4F8F4F9F4F9923A9F0F92F96E9A1 +:10538000BB279395F695879577956795B795F11116 +:10539000F8CFFAF4BB0F11F460FF1BC06F5F7F4FB3 +:1053A0008F4F9F4F16C0882311F096E911C07723C5 +:1053B00021F09EE8872F762F05C0662371F096E8CE +:1053C000862F70E060E02AF09A95660F771F881F9D +:1053D000DAF7880F9695879597F9089588D018F091 +:1053E00011F08CD038F480C0C4C0E92F9FD0B0F346 +:1053F0005523C9F3E7FB6217730784079507A8F1E4 +:1054000099F3E92FFF2788232AF03197660F771F3A +:10541000881FDAF7952F5527442332F091505040DA +:10542000220F331F441FD2F7BB27E91BF50B621B6A +:10543000730B840BB109C1F222F4620F731F841F36 +:10544000B11D31972AF0660F771F881FBB1FEFCF62 +:10545000915050405AF041F0882332F0660F771F88 +:10546000881F91505040C1F7939530C0869577952D +:1054700067959F5FD9F7F8CF990F0008550FAA0BD2 +:10548000E0E8FEEF16161706E807F907C0F0121657 +:105490001306E407F50798F0621B730B840B950B5A +:1054A00039F40A2661F0232B242B252B21F40895AF +:1054B0000A2609F4A140A6958FEF811D811D08954C +:1054C00097F99F6780E870E060E008959F3F31F0B2 +:1054D000915020F4879577956795B795880F911D22 +:1054E0009695879597F908959FEF80EC089500248D +:1054F0000A941616170618060906089500240A9439 +:1055000012161306140605060895092E0394000CBE +:1055100011F4882352F0BB0F40F4BF2B11F460FF4D +:1055200004C06F5F7F4F8F4F9F4F089557FD905876 +:10553000440F551F59F05F3F71F04795880F97FB57 +:10554000991F61F09F3F79F0879508951216130611 +:105550001406551FF2CF4695F1DF08C01616170640 +:105560001806991FF1CF8695710561050894089575 +:10557000E894BB2766277727CB0197F908957CDF4E +:1055800008F48FEF08950BD0C0CFB1DF28F0B6DF5D +:1055900018F0952309F094CFA7CF1124EACFC6DFE6 +:1055A000A0F3959FD1F3950F50E0551F629FF00136 +:1055B000729FBB27F00DB11D639FAA27F00DB11D8F +:1055C000AA1F649F6627B00DA11D661F829F222718 +:1055D000B00DA11D621F739FB00DA11D621F839F9F +:1055E000A00D611D221F749F3327A00D611D231F75 +:1055F000849F600D211D822F762F6A2F11249F57C3 +:1056000050408AF0E1F088234AF0EE0FFF1FBB1FE5 +:10561000661F771F881F91505040A9F79E3F510584 +:1056200070F04ECFA6CF5F3FECF3983EDCF386954B +:1056300077956795B795F795E7959F5FC1F7FE2B2F +:10564000880F911D9695879597F90895FA01EE0FA9 +:10565000FF1F30962105310599F16115710561F43F +:105660008038BFE39B0749F168949038810561F069 +:105670008038BFEF9B0741F0992342F5FF3FE105DA +:105680003105210511F1E8940894E795D901AA2381 +:1056900029F4AB2FBE2FF85FD0F310C0FF5F70F47A +:1056A000A695E0F7F73950F019F0FF3A38F49F77F4 +:1056B0009F930CD00F9007FC905808953EF014CFA4 +:1056C00060E070E080E89FE308954FE79F775F9385 +:1056D0004F933F932F939ED02F913F914F915F9186 +:1056E00052DF05C019F40EF0EBCE42CFFDCE26DF1F +:1056F000C8F39638C0F707F80F92E8942BE33AEA1C +:1057000048EB5FE74EDF0F920F920F924DB75EB7F7 +:105710000F92C0D0EAE0F1E016D04F915F91EF9187 +:10572000FF91E595EE1FFF1F49F0FE57E068442703 +:10573000EE0F441FFA95E1F74195550B32D00F90CB +:1057400007FE26C00895DF93CF931F930F93FF9218 +:10575000EF92DF927B018C01689405C0DA2EEF0195 +:105760001EDFFE01E894A591259135914591559153 +:10577000AEF3EF0106DDFE019701A801DA9479F797 +:10578000DF90EF90FF900F911F91CF91DF910895DF +:105790009B01AC0160E070E080E89FE349CD90CED2 +:1057A00095CECCDEE8F39923D9F3940F511DBBF3CA +:1057B0009150504094F059F0882332F0660F771FD3 +:1057C000881F91505040C1F79E3F510544F7880F04 +:1057D000911D9695879597F908955F3FACF0983E97 +:1057E0009CF0BB27869577956795B79508F4B160CF +:1057F0009395C1F7BB0F58F711F460FFE8CF6F5FC7 +:105800007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE65 +:10581000689456CE93DEC8F39923D1F3C6F3DF9391 +:10582000CF931F930F93FF92C92FDD2788232AF070 +:105830002197660F771F881FDAF720E030E040E8F5 +:105840005FEB9FE3883920F0803E30F021968F7720 +:1058500087DCE2E3F1E003C083DCEFE5F1E073DF36 +:105860008B01BE01EC01FB2E6F5771097595771FF7 +:10587000880B990B78DD28E132E741E35FE38FDEA7 +:10588000AF2D9801AE01FF900F911F91CF91DF9145 +:1058900078DC3BCEFA01DC01AA0FBB1F9B01AC01F7 +:1058A000BF5728F422273327442750781FC0B75109 +:1058B00088F4AB2F0024469537952795011CA395B6 +:1058C000D2F3002069F0220F331F441FB395DAF39F +:1058D0000DD045CC61307105A0E88A07B94630F497 +:1058E0009B01AC016627772788279078309621F0B6 +:1058F00020833183428353830895AA1BBB1B51E14C +:1059000007C0AA1FBB1FA617B70710F0A61BB70B2F +:10591000881F991F5A95A9F780959095BC01CD01D4 +:10592000089597FB072E16F4009407D077FD09D051 +:105930000E947D2C07FC05D03EF4909581959F4FE9 +:105940000895709561957F4F0895EE0FFF1F0590A4 +:10595000F491E02D0994F999FECF92BD81BDF89A9A +:10596000992780B50895A8E1B0E042E050E00C949A +:10597000D32C262FF999FECF92BD81BDF89A0197BD +:1059800000B4021639F01FBA20BD0FB6F894FA9A87 +:10599000F99A0FBE08950196272F0E94BA2C0C94F5 +:1059A000B92CDC01CB01FC01F999FECF06C0F2BD98 +:1059B000E1BDF89A319600B40D9241505040B8F7CD +:0659C0000895F894FFCFEA +:1059C600640007000CFF0000003F640E109C107975 +:1059D60010451011100101DF022808140A321E00BA +:1059E60002040507090B0C0E1011131517181A1CC3 +:1059F6001D1F2123242628292B2D2F3032343537FD +:105A0600393B1F0F03764F5F6F7F49694379095909 +:105A160053633149803F5D8B803FF8BF803FCAE1C9 +:105A2600803F73ED803FCAE1803FF8BF803F5D8BCA +:105A3600803F3149803F0000803FF16D7F3F75EA2E +:105A46007E3F4C827E3F833F7E3F84287E3F833F5E +:105A56007E3F4C827E3F75EA7E3FF16D7F3F0000C0 +:105A6600803F3F4D3639E304960460042704BA03A9 +:105A7600D303EC0305040102030405060708090025 +:00000001FF diff --git a/keyboard/planck/keymaps/jacob/compiled.hex b/keyboard/planck/keymaps/jacob/compiled.hex new file mode 100644 index 0000000000..b823d6da9e --- /dev/null +++ b/keyboard/planck/keymaps/jacob/compiled.hex @@ -0,0 +1,1444 @@ +:100000000C9461020C94A5020C94A5020C94A50218 +:100010000C94A5020C94A5020C94A5020C94A502C4 +:100020000C94A5020C94A5020C9452140C94241563 +:100030000C9486220C94A5020C94A5020C94A502A3 +:100040000C94A5020C9407030C94A5020C94A50231 +:100050000C94A5020C94EE220C94A5020C94A5021B +:100060000C94A5020C94A5020C94A5020C94A50274 +:100070000C94A5020C94A5020C94A5020C94A50264 +:100080000C94C70A0C94A5020C94A5020C94A5022A +:100090000C94A5020C94A5020C94A5020C94A50244 +:1000A0000C94A5020C94A5020C94A5029115B3150D +:1000B000A116B315A116F8151B16A11670168316F6 +:1000C0006D196D199C199C19DB19FB19511B511BDA +:1000D000061A511BB61AB61A1D1B261B511B4B1BA9 +:1000E000C31AC31AC31AC31AC31AC31AC31AC31A28 +:1000F000C31AC31AC31AC31AC31AC31AC31AC31A18 +:10010000D31AE11AE81AEF1AF91A07634236B79BB5 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000002B001400ED +:1001D0001A000800150017001C0018000C0012007F +:1001E00013002A00290004001600070009000A0075 +:1001F0000B000D000E000F0033003400E1001D0065 +:100200001B00060019000500110010003600370021 +:1002100038002872E000E300E200003001522C00B8 +:100220002C0002525000510052004F0035021E02B5 +:100230001F0220022102220223022402250226029A +:1002400027024C0001000100010001000100010033 +:1002500001002D022E022F023002310201000100A6 +:1002600001000100010001000100010001002F0058 +:100270003000010001000100010001000100010047 +:1002800001000100010001000100010035001E0015 +:100290001F0020002100220023002400250026004A +:1002A00027004C0001003A003B003C003D003E00AE +:1002B0003F002D002E002F003000310001004000D3 +:1002C00041004200430044004500010001000100DC +:1002D0000100010001000100010001000100010016 +:1002E0000100010001000100010001002803540089 +:1002F00068006500200050006C0061006E00630023 +:100300006B0020004B006500790062006F00610007 +:100310007200640000002C034F007200740068003B +:100320006F006C0069006E006500610072002000C3 +:100330004B006500790062006F006100720064008C +:10034000730000000403090409026D00040100A009 +:10035000FA09040000010301010009211101000153 +:10036000223F000705810308000A09040100010378 +:10037000010200092111010001224D00070582033D +:1003800008000A090402000103000000092111010C +:1003900000012236000705830308000A0904030050 +:1003A00001030000000921110100012239000705A5 +:1003B00084031000011201100100000008EDFE602E +:1003C0006001000102000105010906A101050719EC +:1003D000E029E71500250195087501810205081936 +:1003E0000129059505750191029501750391010596 +:1003F000071900297715002501957875018102C03C +:1004000005010980A101850216010026B7001A0125 +:10041000002AB700751095018100C0050C0901A1E3 +:10042000018503160100269C021A01002A9C027510 +:100430001095018100C005010902A1010901A10077 +:100440000509190129051500250195057501810288 +:100450009501750381010501093009311581257F59 +:1004600095027508810609381581257F9501750863 +:100470008106050C0A38021581257F9501750881D2 +:1004800006C0C005010906A101050719E029E71505 +:100490000025019508750181029501750881010506 +:1004A00008190129059505750191029501750391BA +:1004B000010507190029FF150025FF95067508811C +:1004C00000C011241FBECFEFDAE0DEBFCDBF04B6FF +:1004D00003FE24C080911E0390911F03A09120036E +:1004E000B09121038730904BA740B04BB9F41092E4 +:1004F0001E0310921F03109220031092210314BEBA +:1005000084B7877F84BF88E10FB6F894809360003A +:10051000109260000FBEE0E0F8E3099511E0A0E062 +:10052000B1E0E6E6F9E502C005900D92A03CB10706 +:10053000D9F713E0A0ECB1E001C01D92AE31B107D4 +:10054000E1F70E9498110C94B12C0C9400000895CE +:10055000089581E0089508950C94A8020C94A902CE +:100560000C94AB020E947B2823E030E0281B310969 +:10057000220F2093C4010895282F2F988091800086 +:10058000211108C0877F8093800010928D00109207 +:100590008C001BC0886080938000233019F48FEF9B +:1005A0009FEF0FC083E090E0821B9109880F991F95 +:1005B0002FEF3FEFA90102C0569547958A95E2F7C4 +:1005C000CA0190938D0080938C000C94B2020E941B +:1005D000B20284E08093C3011092C0010895279A6B +:1005E0002F988FEF9FEF90938700809386008AE08B +:1005F0008093800089E1809381000E94E4270C941D +:10060000E7020E94EF026E9A769A0C94A7021F925C +:100610000F920FB60F9211242F933F938F939F93B6 +:10062000EF93FF93E091C101F091C201CF010196D8 +:100630009093C2018093C1010090C30102C0F6955E +:10064000E7950A94E2F7EF738091C001823019F4C4 +:10065000E03251F404C0813039F4EF3329F4809151 +:100660006F008D7F80936F00F0E0E457FE4FE491C0 +:1006700021E031E0E29FC001E39F900D1124009042 +:10068000C40102C0969587950A94E2F790938D0075 +:1006900080938C00FF91EF919F918F913F912F91CB +:1006A0000F900FBE0F901F90189561110DC0FC01A7 +:1006B0008281882331F085EE0E9411180E943B2828 +:1006C00003C085EE0E94D91880E090E0089581E093 +:1006D00008950C94670308950C940103809115020A +:1006E000882309F448C08091D1019091D2010097EC +:1006F00079F40E94B8229093D2018093D101809125 +:10070000D30190E0009771F48091D40190E00AC089 +:100710000E94C4222091000130910101281739075D +:1007200040F329C00197880F991F880F991FFC017A +:10073000EB52FE4F60817181828193810E942D0A6C +:10074000E091D30184E0E89FF0011124EB52FE4FC9 +:1007500060817181828193814FE050E00E94E50DBC +:100760008091D30190E001966091D40170E00E94E5 +:10077000612C8093D3010C94AC02109217020C945C +:10078000FA090895089581E0809317020C94C2033A +:10079000089508958F929F92AF92BF92EF92FF9229 +:1007A0000F931F93CF93DF93CDB7DEB7A3970FB609 +:1007B000F894DEBF0FBECDBF7C01FC01008111812A +:1007C000C8010E94B520B8010E94CC058C01B70178 +:1007D0000E946903882309F4CCC10032F0E51F07A9 +:1007E00041F4F7018281882309F458C00E94490E20 +:1007F000C0C10132F0E51F0741F4F701828188236F +:1008000009F44CC00E94520EB4C10232F0E51F0739 +:1008100051F4F7018281882309F440C00E94450EFB +:100820008111F0CFE3CF0332F0E51F0739F4F70170 +:100830008281882399F10E94C3039BC10432F0E5B1 +:100840001F0739F4F7018281882341F10E94BD031B +:1008500090C10532F0E51F0749F4F7018281882332 +:10086000E9F0809117028111F1CFE5CF0632F0E572 +:100870001F0739F4F7018281882381F00E94590E05 +:100880000AC00732F0E51F0749F4F7018281882387 +:1008900029F00E94640E0E94C9036BC18091170267 +:1008A000811105C0F70182818111CFC018C1003EBE +:1008B000110579F4F7018281882309F44DC00E9463 +:1008C000FA0981E080931602109215021092D40169 +:1008D00050C1023E110559F4F70182818823E1F1EC +:1008E0000E94FA09109216021092150242C1033EAC +:1008F000110591F4F7018281882371F10E94FA09B0 +:100900001092160281E0809315021092D30110928A +:10091000D2011092D1012DC10235110559F4F70110 +:100920008281882309F425C1809100019091010101 +:100930000A970DC00135110579F4F70182818823EA +:1009400009F417C180910001909101010A969093DA +:100950000101809300010DC14091040183E2EFE1A8 +:10096000F1E0DE01119601900D928A95E1F7F70111 +:10097000808121E030E02C0F3D1F280F311DC9017F +:100980002091020130910301FC01E20FF31F60810D +:10099000772767FD7095640F711D882777FD809517 +:1009A000982F0E94832920E030E040E451E40E9427 +:1009B000E8284B015C01F701218184E090E0821B73 +:1009C0009109BC01882777FD8095982F0E94832983 +:1009D0009B01AC01C501B4010E9480289B01AC01C0 +:1009E00060E070E080E090E40E94F62A20E030E0D1 +:1009F0004CED50E40E94932A4B015C01F701828187 +:100A00008823D1F04FE050E0C501B4010E94E50D0C +:100A1000809116028823A1F08091D40124E0829F66 +:100A2000F0011124EB52FE4F80829182A282B382A8 +:100A30008F5F8093D40104C0C501B4010E942D0AC8 +:100A40000F3F110508F02ECF94C08091D001811185 +:100A50001FC0043130E5130709F051C00E946B0339 +:100A600081E08093D0010E94B8229093CF018093BF +:100A7000CE011092C7011092C9011092C8011092C4 +:100A8000CB011092CA011092CD011092CC0171C01D +:100A90008091CE019091CF010E94C422883C9105A3 +:100AA00070F48091C701E82FF0E0EE0FFF1FE853CC +:100AB000FE4F118300838F5F8093C7015AC00438B3 +:100AC00080E5180721F00538104501F13AC0F7011B +:100AD0008281882341F01092C50182E01EC0043853 +:100AE00030E5130759F58091C501811106C086E2F2 +:100AF0000E94111886E20E94D91882E01CC00438B6 +:100B0000F0E51F0741F305381045D9F4F70182815C +:100B1000882331F01092C60180E20E94281929C072 +:100B20008091C601811106C087E20E94111887E2F8 +:100B30000E94D91880E20E942F191BC00538104569 +:100B400029F381E08093C5018093C601C701A39674 +:100B50000FB6F894DEBF0FBECDBFDF91CF911F91CE +:100B60000F91FF90EF90BF90AF909F908F900C945B +:100B7000AE0280E0A3960FB6F894DEBF0FBECDBFE5 +:100B8000DF91CF911F910F91FF90EF90BF90AF90A9 +:100B90009F908F90089508959CE0799FF001112413 +:100BA00090E3899FE00DF11D1124E60FF11DEE0F7A +:100BB000FF1FE453FE4F859194910895880F991F6C +:100BC000FC01E45BFF4F859194910895880F991F74 +:100BD000FC01E453FE4F8591949108950F931F9368 +:100BE000CF93DF93EC01811521E39207A0F5C115A6 +:100BF00080E3D80708F0D7C0C83ED105D8F4C03E7E +:100C0000D10508F007C2C83AD10578F4C53AD10534 +:100C100008F06AC0C130D10509F463C008F4F7C117 +:100C2000C430D10508F0F6C1F2C1CB3BD10508F4C0 +:100C300066C0EDC1C11590E2D90708F0AFC0C1157B +:100C400021E0D20708F0E6C1C03FD10508F4DFC1BA +:100C50008E0110651FC2C03880E5D80700F5C03787 +:100C600090E5D90708F0A3C0C11520E5D20709F423 +:100C7000ACC050F4CE01905480319F4008F0C7C101 +:100C8000DF708E01106A06C2C13080E5D80709F412 +:100C9000AEC0C43190E5D90708F4AFC0B8C1C338BD +:100CA00020E5D20709F48EC050F4C13890E5D90789 +:100CB00009F482C008F083C000E011EDEBC1C0313F +:100CC00081E5D80708F4A3C1C11597E5D90708F451 +:100CD00036C1CE0190578115904108F098C1DF7060 +:100CE00093C101E010E0D6C1C53AD10509F494C121 +:100CF000C63AD10509F093C102E810E4CBC1C83A65 +:100D0000D10509F48FC1C93AD10509F48EC1CA3A97 +:100D1000D10509F48DC1CB3AD10509F48CC1CC3A87 +:100D2000D10509F48BC1CD3AD10509F48AC1C03B84 +:100D3000D10509F489C1CE3AD10509F488C1CF3A69 +:100D4000D10509F487C1C13BD10509F486C1C23B75 +:100D5000D10509F485C1C33BD10509F484C1C43B65 +:100D6000D10509F483C1C53BD10509F482C1C63B55 +:100D7000D10509F481C1C73BD10509F480C1C83B45 +:100D8000D10509F47FC1C93BD10509F47EC1CA3B35 +:100D9000D10509F47DC100E014E47CC1CE019F704F +:100DA0000E94E60578C1DD278E01106C73C1CF70FB +:100DB000DD278E01146D6EC100E010ED6BC100E007 +:100DC00012ED68C100E013ED65C10E94BC1B0E94DA +:100DD000FA090E94C1038FEF94E32CE08150904008 +:100DE0002040E1F700C000000E94132353C180910E +:100DF000F20281608093F2024DC10E94742381113E +:100E000002C00E9450230E94872390E090931D030C +:100E100080931C03C23080E5D80721F480911C0325 +:100E2000816086C0C43090E5D90721F480911C030D +:100E300082607EC0C63020E5D20721F480911C0379 +:100E4000846076C0C83080E5D80719F480911C030F +:100E500027C0CA3090E5D90721F480911C03806136 +:100E600067C0CC3020E5D20721F480911C0380625A +:100E70005FC0CE3080E5D80721F480911C038064E8 +:100E800057C0C03190E5D90721F480911C038068D8 +:100E90004FC0C23120E5D20729F480911C03846041 +:100EA000886046C0C33080E5D80721F480911C03D8 +:100EB0008E7F3EC0C53090E5D90721F480911C0398 +:100EC0008D7F36C0C73020E5D20721F480911C0306 +:100ED0008B7F2EC0C93080E5D80719F480911C03A0 +:100EE00026C0CB3090E5D90721F480911C038F7E7A +:100EF0001FC0CD3020E5D20721F480911C038F7DE7 +:100F000017C0CF3080E5D80721F480911C038F7B78 +:100F10000FC0C13190E5D90721F480911C038F7770 +:100F200007C0C331D04531F480911C038B7F877F8C +:100F300080931C0380911C030E948B23ABC08D2FD8 +:100F400099278F70992781309105D9F49E012370DC +:100F5000332702C0880F991F2A95E2F79C688E01FB +:100F600044E0000F111F4A95E1F700271370802B12 +:100F7000912B53E0CC0FDD1F5A95E1F7C076DD27AA +:100F80002FC08230910531F4DC2FCC278E01016F08 +:100F9000106A80C08330910569F4CE01837099276F +:100FA00001E010E002C0000F111F8A95E2F7C801AE +:100FB0009C680FC084309105B9F4CE0183709927E5 +:100FC00001E010E002C0000F111F8A95E2F7C8018E +:100FD0009A6823E0CC0FDD1F2A95E1F7C07ED77019 +:100FE0008C010C2B1D2B56C08530910531F4DC2F64 +:100FF000CC278E01046F106A4DC0069709F04AC0D5 +:10100000CF71DD27DC2FCC278E01106243C000E0BA +:1010100010E040C08E013EC001E810E43BC003E890 +:1010200010E438C002EE14E435C009EE14E432C016 +:101030000AEE14E42FC005EB14E42CC006EB14E414 +:1010400029C007EB14E426C00CEC14E423C00DEC1B +:1010500014E420C003E815E41DC00AE815E41AC032 +:1010600002E915E417C004E915E414C001E216E42E +:1010700011C003E216E40EC004E216E40BC005E260 +:1010800016E408C006E216E405C007E216E402C052 +:101090000AE216E4C801DF91CF911F910F910895E4 +:1010A0009CE0799FF001112490E3899FE00DF11DF0 +:1010B0001124E60FF11DEE0FFF1FE453FE4F859143 +:1010C0009491803E9105E0F4803C910558F5813380 +:1010D000910509F46FC048F48932910509F463C0A1 +:1010E0008A32910509F46DC072C089339105E9F027 +:1010F00082389105D1F08533910509F44DC067C060 +:10110000833E910581F138F4803E9105B9F0823E2D +:101110009105D9F05CC0863E910561F1873E91054D +:10112000A1F155C00E94DE05089520911C0320FD09 +:1011300002C021FF4CC080EE90E049C080911C03AA +:1011400080FFF9CF89E390E042C080911C0382FFC9 +:101150000EC080911C0384FF03C080E090E037C084 +:1011600083EE90E034C080911C0382FFF2CF82EEC8 +:1011700090E02DC080911C0383FF0BC080911C0365 +:1011800084FDEBCF87EE90E022C080911C0383FFAB +:10119000F5CF86EE90E01BC080911C0385FF07C051 +:1011A00089E290E014C080911C0385FFF9CF85E3AC +:1011B00090E00DC080911C0386FF07C08AE290E09A +:1011C00006C080911C0386FFF9CF81E390E00E9466 +:1011D000EE0508950C94B002E82FF0E0E25BFE4FBC +:1011E0008081E82FEF70F0E082958F7021E030E091 +:1011F000A90102C0440F551F8A95E2F740A3089544 +:101200000F931F93CF93DF9385B7806885BF85B712 +:10121000806885BFC3E0D0E001E010E0FE01E25B42 +:10122000FE4F8081E82FEF70F0E021A182958F7052 +:10123000A80102C0440F551F8A95E2F7CA01822B0C +:1012400081A38C2F0E94EC08219740F78BE090E05F +:1012500061E070E0FC01EE5BFE4F2081E22FEF7059 +:10126000F0E042A122952F70DB0102C0AA0FBB1F44 +:101270002A95E2F79D01242B22A3019758F7DF91CD +:10128000CF911F910F910C946C03EF92FF920F93EB +:101290001F93CF93DF9300E212E0C3E0EE24E394C8 +:1012A000F12CD5E08C2F0E94EC088BE090E040E020 +:1012B00050E0FC01EE5BFE4F6081E62FEF70F0E046 +:1012C00020A130E062956F7002C0359527956A9530 +:1012D000E2F720FD09C09701082E02C0220F331F3C +:1012E0000A94E2F7422B532B019718F7F8019291D9 +:1012F00082918F018417950721F051834083D09309 +:1013000005018C2F0E94EC08C15060F68091050108 +:1013100087FD2CC08150809305018F3F39F08FE904 +:101320009FE00197F1F700C0000020C080911E02ED +:1013300090911F02909327028093260280911C02B5 +:1013400090911D02909325028093240280911A02AD +:1013500090911B02909323028093220280911802A5 +:101360009091190290932102809320020E946E03B3 +:1013700081E0DF91CF911F910F91FF90EF90089541 +:10138000E82FF0E0EE0FFF1FE05EFD4F80819181BE +:10139000089508950F931F93CF9308E212E0C0E0E1 +:1013A000F801929182918F010E943022C80FF2E0E1 +:1013B00000321F07A9F78C2FCF911F910F9108952D +:1013C0000E947423811102C00E9450230E9499231D +:1013D000809307033E9A809171008D7F8093710006 +:1013E00082E0809390008AE18093910081E0809375 +:1013F0002A02089580912A02811102C00E94E00908 +:1014000010927A0210927902809171008D7F809300 +:101410007100809190008F738093900010923C0235 +:1014200010923B0210927302109274021092750295 +:10143000109276021092720210927102E1E5F2E0CF +:10144000A1E4B2E011921192119211921D921D929B +:1014500082E0E137F807B1F70895CF92DF92EF927B +:10146000FF920F931F93CF93DF9320913B02222390 +:1014700009F484C06B017C0180912A02811102C0B1 +:101480000E94E00901E712E0C7E0D0E0A701960161 +:10149000F80192918291729162918F010E94E428E9 +:1014A000811131C0FE01EE0FFF1FEE0FFF1FEF5A3B +:1014B000FD4F1082118212821382DE01AA0FBB1F20 +:1014C000AF5BBD4F11961C921E92C730D105E9F05B +:1014D000219644815581668177814083518362835F +:1014E0007383148215821682178212968D919C91B5 +:1014F000139711969C938E9313961C921E9212979B +:1015000034961296E2CF219708F680917902909155 +:101510007A02019797FD05C090937A028093790231 +:1015200004C010927A02109279028091790290910F +:101530007A0220917702309178022817390724F037 +:101540001092780210927702892BC1F48091710079 +:101550008D7F80937100809190008F7380939000B5 +:101560001092730210927402109275021092760219 +:10157000109272021092710210923B02DF91CF9191 +:101580001F910F91FF90EF90DF90CF9008951F92E1 +:101590000F920FB60F9211244F925F926F927F922B +:1015A0008F929F92AF92BF92CF92DF92EF92FF9273 +:1015B0002F933F934F935F936F937F938F939F935B +:1015C000AF93BF93CF93DF93EF93FF9380913B0251 +:1015D000882309F49BC1C0917902D0917A021C162C +:1015E0001D060CF093C140902B0250902C0260908D +:1015F0002D0270902E0220E030E0A901C301B2015B +:101600000E948F2A18160CF065C0C130D10509F46C +:1016100052C08091770290917802BE010E94612CA5 +:101620007C01909378028093770280903D029090A5 +:101630003E02A0903F02B090400220E030E040E83F +:101640005FE3C501B4010E94802860933D0270935E +:101650003E0280933F0290934002F701EE0FFF1F7E +:10166000EE0FFF1FEF5AFD4FA301920160817181C0 +:10167000828193810E94E82820E030E040E05EE330 +:101680000E94932A9B01AC01C501B4010E948F2ADC +:1016900018168CF4C7010196BE010E94612C90932C +:1016A00078028093770210923D0210923E021092CF +:1016B0003F0210924002E0917702F0917802EE0F23 +:1016C000FF1FEE0FFF1FEF5AFD4F60817181828176 +:1016D0009381D0C0C0907302D0907402E0907502E4 +:1016E000F090760220E030E0A901C701B6010E9427 +:1016F000E4282197882309F4A2C0FE01EE0FFF1F02 +:10170000EE0FFF1FEF5AFD4F80809180A280B380C3 +:10171000A5019401C701B6010E94E42887FF31C0EA +:10172000A501940160E070E08CED93EC0E94E82844 +:1017300020E030E040E451E40E94E82820E030E07E +:1017400040E05FE30E94932A9B01AC0160E070E0FF +:1017500080E090E40E94F62A9B01AC01C501B4012F +:101760000E94932A9B01AC01C701B6010E94E428A4 +:1017700087FF07C0A701960160E070E08CED93E45D +:1017800039C0A5019401C701B6010E948F2A18161D +:101790000CF055C0A501940160E070E08CED93E47D +:1017A0000E94E82820E030E040E451E40E94E8286C +:1017B00020E030E040E05FE30E94932A9B01AC010F +:1017C00060E070E080E090E40E94F62A9B01AC01AA +:1017D000C501B4010E94932A9B01AC01C701B60167 +:1017E0000E948F2A18165CF5A701960160E070E050 +:1017F0008CED93EC0E94E82820E030E040E451E4D6 +:101800000E94E82820E030E040E05FE30E94932A55 +:101810009B01AC0160E070E080E090E40E94F62A59 +:101820009B01AC01C701B6010E94932A6093730229 +:1018300070937402809375029093760213C0FE0138 +:10184000EE0FFF1FEE0FFF1FEF5AFD4F80819181BA +:10185000A281B3818093730290937402A093750266 +:10186000B093760260917302709174028091750258 +:101870009091760220912802309129022F3F4FEF5C +:10188000340731F02F5F3F4F309329022093280215 +:101890000E946F0E6B017C0120E034E244EF51E4C2 +:1018A0000E94E42887FF08C086EFC82E88E2D82E61 +:1018B00084EFE82E81E4F82E20E030E040E051E4AF +:1018C000C701B6010E94932A9B01AC0160E074E25B +:1018D00084E79BE40E94E8286B017C010E94552963 +:1018E0007093970060939600209106013091070154 +:1018F0004091080150910901C701B6010E94932A45 +:101900000E945529709399006093980080913C0241 +:10191000882309F433C1C0903702D0903802E09098 +:101920003902F0903A0220E030E0A901C701B60187 +:101930000E948F2A1816D4F58091280290912902CE +:101940008F3F2FEF920729F0019690932902809301 +:101950002802C701B6010E946F0E20E030E040E08F +:1019600051E40E94932A9B01AC0160E074E284E799 +:101970009BE40E94E8286B017C010E94552970932A +:1019800097006093960020910601309107014091E5 +:10199000080150910901C701B6010E94932A0E94D3 +:1019A0005529709399006093980008C01092970091 +:1019B0001092960010929900109298006091310256 +:1019C000709132026F5F7F4F7093320260933102E9 +:1019D000209196003091970080E090E0232BF1F069 +:1019E000C0919600D09197000E9481296B017C01E3 +:1019F000BE0180E090E00E9481299B01AC016091D2 +:101A000033027091340280913502909136020E9427 +:101A1000E82820E03FEF4FE757E410C00E948129FB +:101A20006B017C0120E030EE4FEF54E46091330213 +:101A30007091340280913502909136020E94932A6F +:101A40009B01AC01C701B6010E948F2A87FD96C099 +:101A500080912F028F5F80932F0290E020910303EB +:101A60003091040382179307A0F080910E0388231E +:101A700019F010922F020DC0809171008D7F80931C +:101A80007100809190008F738093900010923C02BF +:101A90007DC080913002C0912F02811128C0C0907A +:101AA0000803D0900903E0900A03F0900B0320E0B4 +:101AB00030E0A901C701B6010E948F2A1816BCF4B4 +:101AC00081E0809330021092370210923802109217 +:101AD000390210923A02C0923302D0923402E0925C +:101AE0003502F0923602C150C0932F0243C01092CB +:101AF00030021092290210922802E0910503F09121 +:101B0000060348E0C49FE00DF11D112480819181FE +:101B1000A281B3818093370290933802A093390257 +:101B2000B0933A0220E030E040E85EE364817581E2 +:101B3000868197810E94932A6B017C0180910A0122 +:101B4000682F70E080E090E00E94812920E030E082 +:101B500048EC52E40E94E8289B01AC01C701B601A1 +:101B60000E94932A6093330270933402809335026B +:101B70009093360210923202109231028091070344 +:101B800080FD04C010923C0210923B02FF91EF9145 +:101B9000DF91CF91BF91AF919F918F917F916F9185 +:101BA0005F914F913F912F91FF90EF90DF90CF90F9 +:101BB000BF90AF909F908F907F906F905F904F906D +:101BC0000F900FBE0F901F901895CF92DF92EF925B +:101BD000FF92CF93DF936B017C01EA0180912A028F +:101BE000811102C00E94E0098091070380FF46C076 +:101BF0008091790290917A0208970CF03FC0809111 +:101C000071008D7F8093710080913C0281110E9450 +:101C1000FA0981E080933B02109229021092280277 +:101C200020E030E0A901C701B6010E948F2A1816F2 +:101C3000DCF48091790290917A02FC01EE0FFF1F93 +:101C4000EE0FFF1FEF5AFD4FC082D182E282F38276 +:101C5000FC01EE0FFF1FEF5BFD4FD183C0830196A8 +:101C600090937A02809379028091710082608093D0 +:101C7000710080919000806880939000DF91CF91F7 +:101C8000FF90EF90DF90CF900895809107038170CF +:101C90000895809107038160809307030E949D232C +:101CA0000C94C803809107038E7F809307030C94E4 +:101CB0009D2380917B0290E0019666E070E00E9497 +:101CC000612C80937B02089580917B0290E00197C4 +:101CD00066E070E00E94612C80937B0208958F92F1 +:101CE0009F92AF92BF92CF92DF92EF92FF920F93AB +:101CF0001F93CF93DF936B017C01C0912802D09199 +:101D00002902BE0180E090E00E9481294B015C0124 +:101D1000A701960160E070E08CE594E40E94E82859 +:101D20009B01AC01C501B4010E94932A0E94552970 +:101D300020917B02233009F473C028F4222351F050 +:101D40002130E9F02CC1243009F4A0C0253009F479 +:101D5000E0C025C180E090E0A0E0BFE380930601F1 +:101D600090930701A0930801B093090110922B02F0 +:101D700010922C0210922D0210922E0210C110927D +:101D80002B0210922C0210922D0210922E0264311E +:101D9000710540F46A30710560F520E030E040E8FC +:101DA0005EE32BC0693C710508F0AAC080E090E0BA +:101DB0000E94812920E030E040EA51E40E947F281F +:101DC00020E030E044E353E40E94E8289B01AC01AA +:101DD0000E94932A20E030E040E05EE30E94932AD4 +:101DE0009B01AC0160E070E080E09EE30E947F28F0 +:101DF00044C020E030E040E05FE3C701B6010E944C +:101E0000932A6B017C0180E090E0A0E0BEE3809328 +:101E1000060190930701A0930801B0930901BFC088 +:101E200010922B0210922C0210922D0210922E0270 +:101E30004AE0469F9001479F300D1124C90168EB8D +:101E40007BE00E944D2CBC016C5D754077FF03C0A8 +:101E5000719561957109882777FD8095982F0E946B +:101E600083292EE333EC4EE259E30E94932A20E0CB +:101E700030E040EC5EE30E9480286093060170939E +:101E80000701809308019093090189C010922B02E9 +:101E900010922C0210922D0210922E02CE0183700D +:101EA0009927892BE1F0BE016170772780E090E0EF +:101EB0000E94812920E030E040E05EE30E94932A06 +:101EC00020E030E040E45FE30E9480286093060158 +:101ED0007093070180930801909309010CC080E082 +:101EE00090E0A0E0BFE38093060190930701A093E8 +:101EF0000801B0930901C770DD27CD2B09F04FC051 +:101F00001092060110920701109208011092090127 +:101F100046C010922B0210922C0210922D021092A9 +:101F20002E0200E010E020E03FE300930601109352 +:101F3000070120930801309309016739710578F191 +:101F400080E090E00E94812920E030E047E153E406 +:101F50000E947F2820E030E04AE754E40E94E8280D +:101F600020E030E048E452E40E94932A20E030E090 +:101F700040EA51E40E94C5290E945029660F771F4C +:101F8000660F771FFB01EE5AFE4F2081318142819F +:101F90005381C701B6010E94932A6B017C01C701DE +:101FA000B601DF91CF911F910F91FF90EF90DF90DD +:101FB000CF90BF90AF909F908F90089580918C02AA +:101FC0000895CF93DF9300D01F92CDB7DEB79C0169 +:101FD00080911303843019F593E099833B832A831E +:101FE0009093E9008FEF9091E800815095FD06C035 +:101FF00095ED9A95F1F700008111F5CF8091E800F9 +:1020000085FF0DC040E050E063E070E0CE01019636 +:102010000E9442128091E8008E778093E8000F9032 +:102020000F900F90DF91CF910895CF93DF9300D061 +:102030001F92CDB7DEB720911303243021F522E0A3 +:1020400029839B838A8383E08093E9008FEF9091BB +:10205000E800815095FD06C095ED9A95F1F70000D6 +:102060008111F5CF8091E80085FF0DC040E050E080 +:1020700063E070E0CE0101960E9442128091E80078 +:102080008E778093E8000F900F900F90DF91CF91A3 +:102090000895209113032430F1F422E02093E90005 +:1020A0002FEF3091E800215035FD06C035ED3A950F +:1020B000F1F700002111F5CF2091E80025FF0BC0BA +:1020C00040E050E065E070E00E9442128091E8003C +:1020D0008E778093E8000895CF93DF93EC01909181 +:1020E0001303943009F046C0809115018823D9F07C +:1020F000809116018823B9F09093E9008FEF9091B9 +:10210000E800815095FD06C095E19A95F1F7000031 +:102110008111F5CF8091E80085FF2CC040E050E0B0 +:1021200060E170E017C081E08093E9008FEF90914B +:10213000E800815095FD06C095ED9A95F1F70000F5 +:102140008111F5CF8091E80085FF14C040E050E098 +:1021500068E070E0CE010E9442128091E8008E7724 +:102160008093E80080E1FE01ACE7B2E001900D92BF +:102170008A95E1F7DF91CF91089580911203811143 +:1021800009C00E94D7130E9434148091E200846039 +:102190008093E2000895109212030895089508951F +:1021A0000C947B2242E061EC81E00E94511342E0FA +:1021B00061EC82E00E94511342E061EC83E00E94F6 +:1021C000511342E161EC84E00C94511380911503AA +:1021D000833009F455C030F4813071F0823009F455 +:1021E0008EC008958A3009F47AC08B3009F460C03B +:1021F000893009F09CC020C080911403813A09F015 +:1022000096C08091E800877F8093E8008091180352 +:1022100090911903892B21F460E18CE792E003C0CF +:1022200060E080E090E070E00E948D128091E80014 +:102230008B778093E800089580911403813209F030 +:1022400076C08091180390911903009719F00397B5 +:1022500009F06DC08091E800877F8093E80080914D +:10226000E80082FD05C0809113038111F8CF5FC0A3 +:102270008091F10080938C028091E8008B7753C0AD +:1022800080911403813A09F052C080911803909113 +:102290001903892B09F04BC08091E800877F809358 +:1022A000E8008091E80080FFFCCF8091150136C0E6 +:1022B000809114038132D9F580911803909119030C +:1022C000892BA9F58091E800877F8093E8000E9420 +:1022D000861380911603809315010C94BC1B80918A +:1022E0001403813221F58091E800877F8093E80014 +:1022F0000E9486138091170380938D020895809128 +:102300001403813AA1F48091E800877F8093E8006C +:102310008091E80080FFFCCF80918D028093F100D6 +:102320008091E8008E778093E8000C9486130895DE +:1023300084B7877F84BF88E10FB6F89480936000EC +:10234000109260000FBE90E080E80FB6F894809382 +:102350006100909361000FBE0E9429170E94D7135D +:102360000E9434148091E20084608093E2007894AB +:102370000E94BA160E942B178BE091E00E94D5169E +:1023800080911303853069F40E943C2280911103EF +:102390008823B1F30E946A22882391F30E942C12B1 +:1023A000EFCF0E943317ECCF292F3327233031058D +:1023B000C9F064F42130310581F02230310509F093 +:1023C00043C08DE690E028E433E042C0213231057D +:1023D000F1F02232310541F137C082E190E025EB86 +:1023E00033E036C099278130910541F08230910564 +:1023F00041F0892B49F5E4E4F3E005C0E6E1F3E0C0 +:1024000002C0ECEEF2E0849190E09F0121C06430C4 +:10241000D8F4E62FF0E0EE0FFF1FE255FE4F2081CB +:10242000318189E090E014C0643070F470E0FB0109 +:10243000EE0FFF1FEA55FE4F20813181FB01EE5563 +:10244000FE4F808190E004C080E090E020E030E02A +:10245000FA0131832083089580E189BD82E189BD3D +:1024600009B400FEFDCF8091D8008F7D8093D80005 +:102470008091E00082608093E0008091E00081FD27 +:10248000FCCF0895CF92DF92EF92FF920F931F93AC +:10249000CF93DF93EC018B016A010E94A513811198 +:1024A00033C0C114D10439F0F60180819181081B39 +:1024B000190BC80FD91FE12CF12C0115110519F1C9 +:1024C0008091E80085FD16C08091E8008E778093AA +:1024D000E800C114D10449F0F60180819181E80E31 +:1024E000F91EF182E08285E00FC00E94A5138823C7 +:1024F00021F30AC089918093F10001501109FFEF87 +:10250000EF1AFF0ADACF80E0DF91CF911F910F9190 +:10251000FF90EF90DF90CF90089520911A033091B3 +:102520001B032617370748F06115710539F4209110 +:10253000E8002E772093E80001C0B90140E0611562 +:102540007105A9F120911303222309F443C025301A +:1025500009F442C02091E80023FD40C02091E8002A +:1025600022FD32C02091E80020FFE9CF4091F30026 +:102570002091F20030E0342BFC01CF016115710590 +:1025800059F02830310540F481918093F100615079 +:1025900071092F5F3F4FF1CF41E02830310509F03D +:1025A00040E02091E8002E772093E800C8CF411149 +:1025B000C9CF0AC080911303882361F0853061F090 +:1025C0008091E80083FD0AC08091E80082FFF2CF8D +:1025D00080E0089582E0089583E0089581E0089501 +:1025E00020911A0330911B032617370748F0611515 +:1025F000710539F42091E8002E772093E80001C09E +:10260000B901FC0120E06115710591F1809113037E +:10261000882309F440C0853009F43FC08091E80068 +:1026200083FD3DC08091E80082FD2FC08091E800CD +:1026300080FFE9CF2091F3008091F20090E0922B8F +:102640006115710559F08830910540F4249120936B +:10265000F1003196615071090196F2CF21E008979F +:1026600009F020E08091E8008E778093E800CBCFDE +:102670002111CCCF0AC080911303882361F08530EB +:1026800061F08091E80083FD0AC08091E80082FF3C +:10269000F2CF80E0089582E0089583E0089581E01C +:1026A0000895982F973058F59093E900981739F0CE +:1026B0007091EC002091ED005091F00003C0242FA8 +:1026C000762F50E021FF19C03091EB003E7F309310 +:1026D000EB003091ED003D7F3093ED003091EB0049 +:1026E00031603093EB007093EC002093ED00509339 +:1026F000F0002091EE0027FF07C09F5FD3CF8F70BF +:102700008093E90081E0089580E0089580911403AA +:1027100087FF11C08091E80082FD05C080911303FE +:102720008111F8CF11C08091E8008B770BC08091A8 +:102730001303882349F08091E80080FFF8CF80914F +:10274000E8008E778093E80008952091E4003091AE +:10275000E50095E64091EC00842F817040FF22C097 +:102760008091E80080FD1CC080911303882391F0C4 +:10277000853091F08091EB0085FD10C04091E40020 +:102780005091E5004217530729F39A01915011F730 +:1027900084E0089582E0089583E0089581E008953B +:1027A00080E008954091E80042FFDECF08950E9446 +:1027B00045140E944D14E0EEF0E08081816080833A +:1027C000E8EDF0E080818F77808319BCA7EDB0E061 +:1027D0008C918E7F8C9380818F7E808310921203E8 +:1027E00008950F931F93CF93DF930E9445140E9487 +:1027F0004D14C8EDD0E088818F7788838881806808 +:10280000888388818F7D888319BC1092130310926E +:102810000F03109211031092100300EE10E0F80164 +:1028200080818B7F808388818160888342E060E043 +:1028300080E00E945113E1EEF0E080818E7F808382 +:10284000E2EEF0E080818160808380818860808317 +:10285000F80180818E7F8083888180618883DF9109 +:10286000CF911F910F910895E8EDF0E080818F7E68 +:102870008083E7EDF0E080818160808384E082BF27 +:1028800081E0809312030C94F113E8EDF0E0808175 +:102890008E7F80831092E20008951092DA001092E9 +:1028A000E10008951F920F920FB60F9211242F93FB +:1028B0003F934F935F936F937F938F939F93AF93C8 +:1028C000BF93EF93FF938091E10082FF0BC0809153 +:1028D000E20082FF07C08091E1008B7F8093E100DE +:1028E0000E94B9168091DA0080FF1FC08091D80045 +:1028F00080FF1BC08091DA008E7F8093DA00809188 +:10290000D90080FF0DC080E189BD82E189BD09B495 +:1029100000FEFDCF81E0809313030E94BD1005C02F +:1029200019BC109213030E94CB108091E10080FF2C +:1029300019C08091E20080FF15C08091E2008E7F77 +:102940008093E2008091E20080618093E2008091B8 +:10295000D80080628093D80019BC85E0809313036F +:102960000E94CF108091E10084FF30C08091E2008E +:1029700084FF2CC080E189BD82E189BD09B400FEDD +:10298000FDCF8091D8008F7D8093D8008091E100A9 +:102990008F7E8093E1008091E2008F7E8093E20041 +:1029A0008091E20081608093E20080910F03882390 +:1029B00011F084E007C08091E30087FD02C081E050 +:1029C00001C083E0809313030E94D0108091E10046 +:1029D00083FF29C08091E20083FF25C08091E10040 +:1029E000877F8093E10082E08093130310920F03AE +:1029F0008091E1008E7F8093E1008091E2008E7FE4 +:102A00008093E2008091E20080618093E20042E0E6 +:102A100060E080E00E9451138091F0008860809314 +:102A2000F0000E94CE10FF91EF91BF91AF919F9166 +:102A30008F917F916F915F914F913F912F910F9067 +:102A40000FBE0F901F9018951F920F920FB60F9206 +:102A500011242F933F934F935F936F937F938F93A3 +:102A60009F93AF93BF93CF93DF93EF93FF93C09167 +:102A7000E900CF708091EC00D82FD17080FDD0E8B4 +:102A80001092E9008091F000877F8093F0007894A5 +:102A90000E9468151092E9008091F0008860809390 +:102AA000F000CD2BCF70C093E900FF91EF91DF9143 +:102AB000CF91BF91AF919F918F917F916F915F91D6 +:102AC0004F913F912F910F900FBE0F901F9018952F +:102AD0001F93CF93DF93CDB7DEB7AA970FB6F894C5 +:102AE000DEBF0FBECDBFE4E1F3E088E08E0F909132 +:102AF000F10091938E13FBCF0E94E6108091E800C5 +:102B000083FF1FC18091140390911503492F50E05A +:102B10004A30510508F015C1FA01EA5AFF4F0C94EA +:102B2000752C803881F0823809F00BC18091180330 +:102B30008F708093E9008091EB0085FB882780F9F6 +:102B40001092E90006C08091100390911103911139 +:102B500082609091E800977F9093E8008093F10065 +:102B60001092F100C8C0282F2D7F09F0EAC08823F9 +:102B700019F0823061F0E5C080911603813009F0D0 +:102B8000E0C0933009F080E0809311032BC0809166 +:102B90001603811127C0809118038F7009F4D1C0EA +:102BA0008093E9002091EB0020FF1CC0933021F4BA +:102BB0008091EB00806214C09091EB009061909343 +:102BC000EB0021E030E0A90102C0440F551F8A95B7 +:102BD000E2F74093EA001092EA008091EB008860EF +:102BE0008093EB001092E9008091E800877F86C017 +:102BF0008111A7C0109116031F778091E3008078A0 +:102C0000812B8093E3008091E800877F8093E80028 +:102C10000E9486138091E80080FFFCCF8091E30042 +:102C200080688093E300111102C082E001C083E05C +:102C30008093130386C08058823008F082C0809150 +:102C40001603909117038C3D53E0950779F583E0C7 +:102C50008A838AE289834FB7F894DE01139620E0D5 +:102C60003EE051E2E32FF0E050935700E49120FF63 +:102C700003C0E295EF703F5FEF708E2F90E0EA3077 +:102C800010F0C79601C0C0968D939D932F5F24319D +:102C900049F74FBF8091E800877F8093E8006AE2A0 +:102CA00070E0CE0101960E948D1214C0AE014F5FFC +:102CB0005F4F609118030E94D411BC01009709F482 +:102CC00040C09091E800977F9093E80089819A81B5 +:102CD0000E94F0128091E8008B778093E80031C069 +:102CE000803879F58091E800877F8093E8008091B3 +:102CF0000F038093F1008091E8008E778093E800C5 +:102D00000E9486131EC081111CC090911603923040 +:102D1000C0F48091E800877F8093E80090930F03D0 +:102D20000E94861380910F03811106C08091E300F9 +:102D300087FD02C081E001C084E0809313030E94FC +:102D4000D2108091E80083FF0AC08091E800877F5D +:102D50008093E8008091EB0080628093EB00AA965C +:102D60000FB6F894DEBF0FBECDBFDF91CF911F919C +:102D700008950895CF93809113038823A1F0C09103 +:102D8000E900CF709091EC00892F817090FD80E870 +:102D9000C82B1092E9008091E80083FD0E9468151D +:102DA000CF70C093E900CF910895909393028093E0 +:102DB00092020895E0919202F0919302309721F0EF +:102DC0000190F081E02D099480E00895E091920255 +:102DD000F0919302309721F00280F381E02D099465 +:102DE0000895E0919202F0919302309721F00480CF +:102DF000F581E02D0994089520919002309191027F +:102E00008217930771F09093910280939002E09162 +:102E10009202F0919302309721F00680F781E02D25 +:102E20000994089520918E0230918F0282179307A2 +:102E300071F090938F0280938E02E0919202F09154 +:102E40009302309721F00084F185E02D09940895D4 +:102E500008950C9428170E94AF220E9400090E9436 +:102E600035230C94E4275F926F927F928F929F920A +:102E7000AF92BF92CF92DF92EF92FF920F931F9388 +:102E8000CF93DF9300D000D01F92CDB7DEB70E9462 +:102E900045099DE9C92E92E0D92E03E010E0AA244D +:102EA000A394B12C502E802F0E94C0094C01F60132 +:102EB000729062906F016826792661147104A1F402 +:102EC0000150110978F78FEF89838A831B820E9452 +:102ED000B8228160782F9D838C8349815A816B81D0 +:102EE0008D810E94E31738C08091F20281FD0E941B +:102EF000C9092BE030E07501022E02C0EE0CFF1C68 +:102F00000A94E2F7C70186219721892B09F12983C9 +:102F10005A828E209F2091E0892809F490E09B83BB +:102F20000E94B8228160782F9D838C8349815A81C9 +:102F30006B818D810E94E317000F111FF801EB5682 +:102F4000FD4F80819181E826F926F182E08204C05C +:102F50002150310980F6B4CF0E941C2510919402B3 +:102F60000E94DA161817D1F00E94DA1680939402A4 +:102F70000F900F900F900F900F90DF91CF911F91B6 +:102F80000F91FF90EF90DF90CF90BF90AF909F9008 +:102F90008F907F906F905F900C94EA080F900F9045 +:102FA0000F900F900F90DF91CF911F910F91FF9095 +:102FB000EF90DF90CF90BF90AF909F908F907F90D9 +:102FC0006F905F900895CF93DF93CDB7DEB72B97C7 +:102FD0000FB6F894DEBF0FBECDBF4F835887698709 +:102FE0007A878B87DE01119686E0FD0111928A9522 +:102FF000E9F785E0FE01379601900D928A95E1F799 +:1030000049815A816B817C818D819E810E945A1EEB +:103010002B960FB6F894DEBF0FBECDBFDF91CF91D8 +:103020000895CF93882309F4C2C0C82F823859F479 +:103030000E94DA1681FDBBC089E30E9434210E9400 +:10304000012289E30CC0833879F40E94DA1680FDEE +:10305000AEC083E50E9434210E94012283E50E94D4 +:103060007621CF910C940122843859F40E94DA160B +:1030700082FD9DC087E40E9434210E94012287E4E2 +:10308000EECF8CEF8C0F813A48F48C2F0E944C27A6 +:1030900081118DC08C2F0E943421E3CF80E28C0FF0 +:1030A000883048F4C77081E001C0880FCA95EAF7FC +:1030B0000E94BA21D6CF8BE58C0F833078F4C53AC5 +:1030C00029F0C63A31F083E890E005C081E890E04D +:1030D00002C082E890E0CF910C94FC1688E58C0F3A +:1030E000833108F064C0C83A39F1C93A41F1CA3AAB +:1030F00049F1CB3A51F1CC3A59F1CD3A61F1C03BAB +:1031000069F1CE3A71F1CF3A79F1C13B81F1C23B1D +:1031100089F1C33B91F1C43B99F1C53BA1F1C63B99 +:10312000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BF9 +:10313000C9F180E090E038C082EE90E035C089EEC1 +:1031400090E032C08AEE90E02FC085EB90E02CC07A +:1031500086EB90E029C087EB90E026C08CEC90E0F5 +:1031600023C08DEC90E020C083E891E01DC08AE888 +:1031700091E01AC082E991E017C084E991E014C09F +:1031800081E292E011C083E292E00EC084E292E01C +:103190000BC085E292E008C086E292E005C087E2BB +:1031A00092E002C08AE292E0CF910C941217CF9184 +:1031B0000895882309F44BC0823859F40E94DA1626 +:1031C00081FF45C089E30E9434210E94012289E3E6 +:1031D0000CC0833871F40E94DA1680FF38C083E592 +:1031E0000E9434210E94012283E50E9476210C94E2 +:1031F0000122843859F40E94DA1682FF28C087E43D +:103200000E9434210E94012287E4EFCF9CEF980FA7 +:10321000913A58F390E2980F983050F4877091E00B +:1032200001C0990F8A95EAF7892F0E94C021DFCF4C +:103230009BE5980F933020F480E090E00C94FC160E +:10324000885A833120F480E090E00C94121708959E +:10325000882321F00E94BA210C940122089588232A +:1032600021F00E94C0210C94012208957F928F9238 +:103270009F92AF92BF92CF92DF92EF92FF920F9305 +:103280001F93CF93DF931F92CDB7DEB77C01C62E7D +:10329000772EFC01058102950F70128111110E9499 +:1032A000D7210E942D21882379F0112369F080E233 +:1032B0008C0D883048F082E00E9416210E942D215A +:1032C00091E0D82ED92601C0D12CE72DE295EF70E0 +:1032D000F0E0E05AFF4F0C94752C872D807F072D6E +:1032E0000F70882311F00295007F112389F00023CD +:1032F00009F499C180E28C0D883020F4802F0E945F +:10330000BA2103C0802F0E94CA210E9401228BC1D2 +:103310008C2D0E94D918002309F4C3C180E28C0DC2 +:10332000883020F4802F0E94C02103C0802F0E948B +:10333000D0210E940122B5C1872D807F972D9F70DB +:10334000803211F4892F03C0892F8295807FCC2091 +:1033500021F0F1E0CF16A1F01DC0112339F00023B8 +:1033600019F1013009F50E94EA219BC1002319F0EF +:10337000013009F496C189830E94ED21898110C131 +:10338000112321F0063008F08CC10EC0053008F082 +:1033900088C106C1112359F0002331F0F70195814E +:1033A00090FF41C19F7095830E9428197AC1002324 +:1033B00009F4F6C03EC1872D86958695837090E00E +:1033C000009719F0019761F06CC1112321F08C2D49 +:1033D000972D937002C080E090E00E94FC1661C1BE +:1033E000112321F08C2D972D937002C080E090E086 +:1033F0000E94121756C18C2D112319F00E9424240B +:1034000002C00E948C240E9411254BC1872D83701D +:1034100009F052C0111145C18C2D82958695877097 +:10342000880F880F9C2D9F70892E912CA12CB12C78 +:10343000082E04C0880C991CAA1CBB1C0A94D2F745 +:10344000C4FE14C00FE010E020E030E0B901A80194 +:1034500004C0440F551F661F771F8A95D2F7CB0112 +:10346000BA01609570958095909503C060E070E01A +:10347000CB01272D26952695237030E0223031058B +:1034800069F02330310589F0682979298A299B2937 +:103490002130310571F00E94A21F03C168297929EA +:1034A0008A299B290E94BE1FFCC00E94A21FC50141 +:1034B000B4010E94861FF5C0112319F0872D817079 +:1034C00001C08695882309F4ECC08C2D82958695E1 +:1034D0008770880F880F9C2D9F70892E912CA12CAE +:1034E000B12C082E04C0880C991CAA1CBB1C0A9481 +:1034F000D2F7C4FE14C00FE010E020E030E0B901C4 +:10350000A80104C0440F551F661F771F8A95D2F784 +:10351000CB01BA01609570958095909503C060E0ED +:1035200070E0CB01272D269526952370422F50E081 +:103530004230510569F04330510589F068297929F5 +:103540008A299B294130510571F00E947C20A9C035 +:10355000682979298A299B290E949820A2C00E9463 +:103560007C20C501B4010E9460209BC08C2D90E09E +:10357000FC01E05EF109E531F10508F050C0E059C9 +:10358000FF4F0C94752C0C2D0F70872D8F7111230C +:1035900021F00E94F91F802F07CF0E941A20802F50 +:1035A0000E942F197EC0112341F0053008F079C028 +:1035B000872D8F710E943F2074C0063008F071C0C3 +:1035C000F7CF112339F0872D8F710E94F91F69C041 +:1035D0001123C9F3872D8F710E941A2062C0112315 +:1035E00029F0872D8F710E94E41F5BC00E94DA1FB3 +:1035F00058C0112351F0172D1F71812F0E94F91F00 +:1036000063E0812F0E940D214CC081E00E941621B1 +:10361000023008F446C082E00E94162142C0112305 +:1036200031F0002381F28C2D0E9411183AC0002342 +:1036300089F28C2D0E94D91834C0472D4F706C2D03 +:10364000C7010E9455030E94FE1E2BC0111129C004 +:10365000472D4F7050E042305105B9F04CF4411500 +:10366000510581F041305105E1F40E940C2819C048 +:103670004330510569F04430510599F48C2D0E9476 +:103680005E280FC00E94F5270CC00E94282809C0A0 +:103690000E943B2806C0472D4F706C2DC7010E9429 +:1036A000CB05DD20F9F00E94092180FD1BC0F70148 +:1036B00012820E9403210E94F91FC7010E94811BF0 +:1036C0000E9403210F90DF91CF911F910F91FF90E6 +:1036D000EF90DF90CF90BF90AF909F908F907F90B2 +:1036E0000C941A200F90DF91CF911F910F91FF90B2 +:1036F000EF90DF90CF90BF90AF909F908F907F9092 +:1037000008950F931F93CF93DF93EC0188819981E4 +:103710002B813C81232BB9F09F3F11F48F3F99F00F +:10372000CE010E94CA03882371F0688179818A8161 +:103730000E94FF208C010E94B4200E947B1FB801D0 +:10374000CE010E943619DF91CF911F910F910895FC +:103750000E94D7210E94E7210E94AC210E940122F1 +:103760000E94C2250E94112580E090E00E94FC1674 +:1037700080E090E00C9412170E94C7210C94A81BC3 +:103780000E94F420292F22952F7030E02C30310533 +:103790004CF42A3031056CF42250310922303105C5 +:1037A000A8F407C02C30310569F02F30310551F0F5 +:1037B0000DC0803F69F018F4803E40F409C0843F9A +:1037C00029F406C093FB882780F9089580E00895C6 +:1037D00081E00895CF93DF9300D000D01F92CDB742 +:1037E000DEB70F900F900F900F900F90DF91CF9159 +:1037F0000895CF93DF9300D000D000D0CDB7DEB7CF +:1038000026960FB6F894DEBF0FBECDBFDF91CF91E5 +:1038100008951F93CF93DF93C0919D0216E080918E +:103820009E02C81799F0D0E01C9FF0011D9FF00D7B +:103830001124E156FD4F4081518162817381848161 +:1038400095810E94F91B2196C770E9CFDF91CF9136 +:103850001F9108954091CF025091D0026091D10202 +:103860007091D2028091D3029091D4020C94F91BF2 +:103870008091D40282958F7009F054C08091D1025A +:10388000882309F44FC080919D02A0919E0260910F +:10389000CF027091D0024091D2025091D302B6E093 +:1038A0008A1709F43FC090E041155105C1F17F3FEF +:1038B00011F46F3FA1F1B89FF001B99FF00D1124F1 +:1038C000E156FD4F218172132AC02081621327C067 +:1038D0002281211124C0238134812417350710F45B +:1038E00021503109241B350B283C3105C0F42091AF +:1038F000D4022F7020612093D40226E0289FF0018B +:10390000299FF00D1124EC55FD4F80818F7080614F +:1039100080838FEC92E00E94811B0C94091C01961D +:103920008770BECF0895CF92DF92EF92FF920F93F0 +:103930001F93CF93DF93CDB7DEB762970FB6F8949E +:10394000DEBF0FBECDBF8C0185E0F801DE011D9604 +:1039500001900D928A95E1F7D8014C9111965C91F6 +:10396000119712966C9112971396CD90DC90149744 +:103970003091CF027091D0028091D2029091D30207 +:10398000009709F46BC17F3F19F43F3F09F466C10A +:10399000E090D102EE2009F4C0C02091D402C816F4 +:1039A000D90628F0F601E81BF90BCF0104C0809579 +:1039B00090958C0D9D1DFF24F394883C910578F023 +:1039C000F12C207F09F0C6C07C2DD98AC88A89894C +:1039D0000E94EA1B8FEC92E00E94811BB1C0822FF3 +:1039E000807F09F046C0751314C0341312C06111F2 +:1039F00010C02F7020612093D4020E942A1C8FECEB +:103A000092E00E94811B8091D402D80115968C937C +:103A10002EC0CD2819F15F3F11F44F3FF9F0F62E7B +:103A200061111CC080919D0220919E0236E0821798 +:103A300009F45AC090E0389FF001399FF00D11242D +:103A4000E156FD4F7181571306C07081471303C0C3 +:103A50007281711103C001968770E9CFF62E66233B +:103A600009F418C18091D40281608093D402F12CB2 +:103A700011C1751308C0341306C0611104C08091D0 +:103A8000D402D801C3C04D875E878D859E856A8B21 +:103A90000E94C01B6A898823E1F16623D1F120913D +:103AA000D402822F82958F7090E0029774F08091FB +:103AB000CF029091D00298878F831986DB86CA86C1 +:103AC0002C87CE0107960E94811B86E0F801AFEC9F +:103AD000B2E001900D928A95E1F70E94381C0E9495 +:103AE0002A1CFF24F394D6C04D875E878D859E8562 +:103AF0000E94F420292F22952F7030E022303105CA +:103B00000CF0BCC09F7009F0B6C0805E883008F42D +:103B1000C1C0C8010E94811BE4CFC816D90608F4B1 +:103B200053C0F601E81BF90BCF01883C910508F45E +:103B300050C0F12C7C2DD98AC88A89890E94EA1B41 +:103B4000EFECF2E086E0DF011D928A95E9F70E9432 +:103B50002A1CA0C0751314C0341312C0611110C008 +:103B60008091D402F8018583C8010E94811B86E000 +:103B7000EFECF2E0DF011D928A95E9F7FE2C8AC096 +:103B80004D875E878D859E856A8B0E94C01B6A89E2 +:103B9000882309F4BECF662309F4BBCF2091D40259 +:103BA000822F82958F7090E002970CF48ECF8091D7 +:103BB000CF029091D0029A8389831B82DD82CC82CE +:103BC0002E83CE0101967FCF809590958C0D9D1D03 +:103BD000ACCFF62E662309F49CCF75132EC0341398 +:103BE0002CC02091D40220FD1FC0822F82958F709F +:103BF000D9F0D80115962C9315978F3049F08F5F27 +:103C0000982F9295907F822F8F70892B15968C9389 +:103C1000C8010E94811B86E0F801AFECB2E0019080 +:103C20000D928A95E1F793CF86E0F801AFECB2E010 +:103C300001900D928A95E1F72DC04D875E878D85A5 +:103C40009E850E94C01B811140CF8091D40281606B +:103C50008093D402C8010E94811B1CC0662309F412 +:103C600058CF4D875E878D859E850E94C01B882317 +:103C700009F44FCF2ACF811148CF0CC02430310531 +:103C80000CF047CF9F7009F440CFF8019581907FE9 +:103C900009F03BCF8F2D62960FB6F894DEBF0FBEB2 +:103CA000CDBFDF91CF911F910F91FF90EF90DF90EB +:103CB000CF9008951F93CF93DF93CDB7DEB72C97A6 +:103CC0000FB6F894DEBF0FBECDBF4F83588769870C +:103CD0007A878B879C87CE0107960E94931C882346 +:103CE00069F08F8198852A853B85232BF1F19F3FD1 +:103CF00009F063C08F3F09F060C037C086E0FE0165 +:103D00003796DE01119601900D928A95E1F76F8149 +:103D10007885EA85FB85309741F17F3F11F46F3F4D +:103D200021F120919E0230E0C90101968770992708 +:103D300040919D0250E08417950709F447C06983BC +:103D40007A83FD83EC8396E0929FD001939FB00D20 +:103D50001124A156BD4FFE01319601900D929A9506 +:103D6000E1F780939E020E94091C16E080919D025B +:103D700090919E028917C1F1189FC00111248156AC +:103D80009D4F0E94931C882379F1E0919D021E9F14 +:103D9000F0011124E156FD4F408151816281738110 +:103DA000848195810E94F91B80919D0290E001968B +:103DB0008770992780939D02D9CF4F815885698557 +:103DC0007A858B859C850E94F91BCFCF0E94BC1BF6 +:103DD00010929E0210929D02EFECF2E086E0DF016D +:103DE0001D928A95E9F7C1CF2C960FB6F894DEBFE5 +:103DF0000FBECDBFDF91CF911F910895EF92FF923B +:103E00000F931F93CF93DF938C01009709F46CC03D +:103E1000F12CEE24E394E8012196F8018491843793 +:103E200040F4843008F051C0813081F0823019F1C3 +:103E30005BC0853709F444C0A8F19CE7980F903720 +:103E400008F052C08F770E94D91841C00E5F1F4FF3 +:103E5000FE01C49180E28C0F883048F4C7708E2D2B +:103E600001C0880FCA95EAF70E94DA2114C08C2F8E +:103E70000E9411182DC00E5F1F4FFE01C49180E2F9 +:103E80008C0F883058F4C7708E2D01C0880FCA95EA +:103E9000EAF70E94E0210E9401221AC08C2F0E94A2 +:103EA000D91816C00E5F1F4FFE01C491CC2381F0BC +:103EB0008FE99FE00197F1F700C00000C150F6CFF5 +:103EC0000E5F1F4FFE01F49003C00E9411188E0177 +:103ED0008F2D882309F49FCFEFE9FFE03197F1F7A9 +:103EE00000C000008150F5CFDF91CF911F910F915D +:103EF000FF90EF90089508956093D9027093DA02CD +:103F00008093DB029093DC020C94A81B0F931F9309 +:103F10000091D9021091DA022091DB023091DC028B +:103F2000DC01CB01802B912BA22BB32B8093D902E8 +:103F30009093DA02A093DB02B093DC021F910F9101 +:103F40000C94A81B0F931F930091D9021091DA02D1 +:103F50002091DB023091DC02DC01CB018023912334 +:103F6000A223B3238093D9029093DA02A093DB02B9 +:103F7000B093DC021F910F910C94A81B0F931F9319 +:103F80000091D9021091DA022091DB023091DC021B +:103F9000DC01CB0180279127A227B3278093D90288 +:103FA0009093DA02A093DB02B093DC021F910F9191 +:103FB0000C94A81B1092D5021092D6021092D70230 +:103FC0001092D8020C94A81B41E050E060E070E031 +:103FD00004C0440F551F661F771F8A95D2F7409380 +:103FE000D5025093D6026093D7027093D8020C94F6 +:103FF000A81B41E050E060E070E004C0440F551F92 +:10400000661F771F8A95D2F78091D5029091D602CC +:10401000A091D702B091D802482B592B6A2B7B2B49 +:104020004093D5025093D6026093D7027093D80282 +:104030000C94A81B41E050E060E070E004C0440F25 +:10404000551F661F771F8A95D2F74095509560954A +:1040500070958091D5029091D602A091D702B0912F +:10406000D802482359236A237B234093D5025093D7 +:10407000D6026093D7027093D8020C94A81B41E03B +:1040800050E060E070E004C0440F551F661F771FCA +:104090008A95D2F78091D5029091D602A091D7024D +:1040A000B091D802482759276A277B274093D50229 +:1040B0005093D6026093D7027093D8020C94A81B39 +:1040C0000F931F930091D5021091D6022091D70231 +:1040D0003091D802DC01CB01802B912BA22BB32B8A +:1040E0008093D5029093D602A093D702B093D802C2 +:1040F0001F910F910C94A81B0F931F930091D50251 +:104100001091D6022091D7023091D802DC01CB0168 +:1041100080239123A223B3238093D5029093D602C8 +:10412000A093D702B093D8021F910F910C94A81BB3 +:104130000F931F930091D5021091D6022091D702C0 +:104140003091D802DC01CB0180279127A227B32729 +:104150008093D5029093D602A093D702B093D80251 +:104160001F910F910C94A81B0895CF92DF92EF92AC +:10417000FF920F931F93CF93DF938C01C090D902CE +:10418000D090DA02E090DB02F090DC028091D50260 +:104190009091D602A091D702B091D802C82AD92A0C +:1041A000EA2AFB2ACFE1D0E0D701C6010C2E04C0D9 +:1041B000B695A795979587950A94D2F780FF06C084 +:1041C000B8018C2F0E945008019721F4219760F7C5 +:1041D00080E001C08C2FDF91CF911F910F91FF9054 +:1041E000EF90DF90CF900895CF93DF93EC010E9482 +:1041F000B520BE010E945008DF91CF910895CB01F8 +:104200000E94F42008958091DD028595859585951D +:1042100008958091DD028770089598E0899F90014C +:104220001124262B2093DD020C94F91F2091DD022E +:10423000809582238093DD02982F977069F430E097 +:10424000482F552747FD50952417350729F08595A8 +:10425000859585950C941A2008959091DD029770AC +:1042600081E009F480E0089590911501992321F0EF +:1042700090911601911109C02091170130911801F8 +:10428000F90132969FEF40E01FC0982F96959695C2 +:1042900096959F3050F5E0911701F0911801E90FC4 +:1042A000F11D877021E030E0A90102C0440F551FC5 +:1042B0008A95E2F7CA019181892B818308959F3FF6 +:1042C00039F04F5F4E3041F051915813F8CF0DC087 +:1042D0005111F7CF942FF5CF9F3F39F0F901E90F36 +:1042E000F11D97FDFA958283089508959091150127 +:1042F000992321F090911601911109C02091170185 +:1043000030911801F9013296205F3F4F1FC0982F5E +:104310009695969596959F30F0F4E0911701F0915F +:104320001801E90FF11D877021E030E0A90102C0FA +:10433000440F551F8A95E2F7CA0180959181892320 +:10434000818308953196E217F30729F0908198133D +:10435000F9CF1082F7CF089581E090E0E091170146 +:10436000F0911801E80FF91F108201968031910534 +:10437000A9F708959091F102892B8093F102089595 +:1043800080959091F10289238093F1020895109213 +:10439000F10208959091F002892B8093F002089524 +:1043A00080959091F00289238093F00208951092F5 +:1043B000F00208959091EF02892B8093EF02089507 +:1043C00080959091EF0289238093EF0208951092D7 +:1043D000EF0208958093DE0208951092DE020895A0 +:1043E0008091170190911801FC0131969C01205F8A +:1043F0003F4F80E0919191118F5FE217F307D1F762 +:104400000895E0911701F09118018091F1028083E5 +:10441000E0911701F091180190818091F002892BB1 +:104420008083E0911701F091180190818091EF0253 +:10443000892B80838091DE02882361F0E09117014F +:10444000F09118019081892B80830E94F0218111C5 +:104450001092DE0280911701909118010C94E616DB +:1044600020E0009739F0AC01415051098423952395 +:104470002F5FF7CF822F089580911303843039F195 +:104480001092F30220E488E190E00FB6F894A8952A +:10449000809360000FBE2093600080E00E94BC0209 +:1044A00080E00E94EA0883B7817F846083BF83B77E +:1044B000816083BF7894889583B78E7F83BF88E1BE +:1044C0000FB6F89480936000109260000FBE0895BC +:1044D0000895089580E00E94BC020E9468220E9414 +:1044E00045090E9469220E94CA0991E0811101C018 +:1044F00090E0892F08950E94BC1B80E00E94BC02BE +:104500000E94E4270E94DA160C94EA081F920F9288 +:104510000FB60F9211248F939F93AF93BF93809107 +:10452000F302811113C08091F4029091F502A091E1 +:10453000F602B091F7024196A11DB11D8093F402DD +:104540009093F502A093F602B093F702BF91AF915A +:104550009F918F910F900FBE0F901F90189582E042 +:1045600084BD93E095BD9AEF97BD80936E0008954A +:104570002FB7F8948091F4029091F502A091F60281 +:10458000B091F7022FBF0895CF92DF92EF92FF9282 +:104590000F931F932FB7F8944091F4025091F502B6 +:1045A0006091F6027091F7022FBF6A017B01EE2441 +:1045B000FF248C0120E030E0C016D106E206F306AD +:1045C00010F4415051099A01281B390BC9011F9160 +:1045D0000F91FF90EF90DF90CF9008951F920F9270 +:1045E0000FB60F9211248F939F93AF93BF93809137 +:1045F000F4029091F502A091F602B091F7020196B3 +:10460000A11DB11D8093F4029093F502A093F602D0 +:10461000B093F702BF91AF919F918F910F900FBE12 +:104620000F901F9018950E94D713F8942FEF87EAE8 +:1046300091E6215080409040E1F700C0000087E003 +:1046400090EBDC0180931E0390931F03A093200343 +:10465000B09321039CE088E10FB6F894A89580936D +:1046600060000FBE90936000FFCF0E947423811101 +:1046700002C00E9450230E947F238093F2020E9476 +:10468000872380931C0387FB882780F9809316017A +:104690000E948323682F70E080E090E00C947C1FE0 +:1046A0006DEE7EEF80E090E00E949B2C60E082E067 +:1046B00090E00E94892C60E083E090E00E94892CC9 +:1046C00060E084E090E00E94892C60E085E090E06A +:1046D0000E94892C60E086E090E00E94892C6FEFB8 +:1046E00087E090E00C94892C80E090E00E94832C7D +:1046F00021E08D3E9E4F09F020E0822F089582E058 +:1047000090E00C947B2C83E090E00C947B2C84E074 +:1047100090E00C947B2C682F84E090E00C94892C22 +:1047200086E090E00C947B2C682F86E090E00C945F +:10473000892C87E090E00C947B2C682F87E090E038 +:104740000C94892C8091FA0280FF0BC060911C01AF +:1047500085E0689FB00111247595679575956795FB +:104760002BC081FF09C060911C0185E0689FB001EA +:1047700011247595679520C082FF07C060911C01C8 +:1047800085E0689FB001112417C09091FB02992326 +:10479000D1F060911B01961788F720911C0185E0EC +:1047A000289F90011124929FA001939F500D1124E6 +:1047B00070E0CA010E94612C6038710540F46115F7 +:1047C000710539F002C065E070E0862F08958FE72B +:1047D000089581E008958091FA0280FF08C06091F9 +:1047E0001A0170E0759567957595679521C081FFF1 +:1047F00006C060911A0170E07595679519C082FF37 +:1048000004C060911A0170E010C09091FB029923DE +:10481000C1F0609119019617A0F780911A01899F44 +:10482000C001112470E00E94612C6038710528F4E9 +:104830006115710521F0862F08958FE7089581E0B5 +:10484000089561E070E0F4CF803F21F40E94A2233C +:10485000819504C0813F29F40E94A2238093FE0227 +:104860000895823F21F40E94A223819504C0833FD2 +:1048700029F40E94A2238093FD020895893F19F430 +:104880000E94EB2305C08A3F31F40E94EB238195FF +:104890008093FF0208958B3F21F40E94EB238195C2 +:1048A00004C08C3F29F40E94EB23809300030895F9 +:1048B000843F21F48091FC02816017C0853F21F480 +:1048C0008091FC02826011C0863F21F48091FC023D +:1048D00084600BC0873F21F48091FC02886005C092 +:1048E000883F31F48091FC0280618093FC0208953E +:1048F0008D3F21F48091FA0281600BC08E3F21F43C +:104900008091FA02826005C08F3F29F48091FA02FB +:1049100084608093FA020895803F39F48091FE020A +:1049200087FF6CC01092FE0269C0813F29F480911C +:10493000FE021816BCF362C09091FD02823F29F47A +:1049400097FF5CC01092FD0259C0833F19F41916FD +:10495000CCF354C0893F41F48091FF0218160CF04B +:104960004DC01092FF024AC08A3F29F48091FF0295 +:1049700087FF44C0F6CF8B3F39F48091000387FF57 +:104980003DC0109200033AC08C3F29F4809100038F +:104990001816BCF333C0843F21F48091FC028E7F53 +:1049A00017C0853F21F48091FC028D7F11C0863FA6 +:1049B00021F48091FC028B7F0BC0873F21F4809112 +:1049C000FC02877F05C0883F31F48091FC028F7E16 +:1049D0008093FC0213C08D3F21F48091FA028E7FF8 +:1049E0000BC08E3F21F48091FA028D7F05C08F3F6E +:1049F00029F48091FA028B7F8093FA028091FD0264 +:104A000081110EC08091FE0281110AC08091FF02C7 +:104A1000811106C080910003811102C01092FB0237 +:104A200008958CEF92E00E94F1160E94B8229093B4 +:104A3000F9028093F80208951F93CF93DF9380913A +:104A4000F8029091F9020E94C422AC019091FB02FD +:104A5000992321F020911D0130E006C020911E0114 +:104A60008AE0289F900111244217530708F486C05A +:104A70008091FD02C091FE02D091FF0210910003CF +:104A8000811107C0C11176C0D11174C0111172C05B +:104A900075C09F3F19F09F5F9093FB02181624F496 +:104AA0000E94A2238093FD028091FD0287FF05C032 +:104AB0000E94A22381958093FD021C1624F40E947B +:104AC000A2238093FE028091FE0287FF05C00E9410 +:104AD000A22381958093FE026091FD02662339F145 +:104AE000C091FE02CC2319F1772767FD7095872FBF +:104AF000972F0E94832923E333E343E35FE30E947C +:104B0000932A0E9450296093FD026C2F772767FD3E +:104B10007095872F972F0E94832923E333E343E384 +:104B20005FE30E94932A0E9450296093FE021D16A3 +:104B300024F40E94EB238093FF028091FF0287FF01 +:104B400005C00E94EB2381958093FF02111624F487 +:104B50000E94EB23809300038091000387FF05C030 +:104B60000E94EB23819580930003DF91CF911F91E9 +:104B70000C9411259F3F09F08ECF96CFDF91CF91F6 +:104B80001F910895ECEFF2E085E0DF011D928A9518 +:104B9000E9F71092FB021092FA020895833081F136 +:104BA00028F4813059F08230D1F00895853009F42D +:104BB00049C0B8F1863009F456C0089580911E01AD +:104BC000262F30E0280F311D2F3F310524F4680FC8 +:104BD00060931E0108958FEF80931E0108958091C8 +:104BE0001D01262F30E0280F311D2F3F310524F401 +:104BF000680F60931D0108958FEF80931D01089544 +:104C000080911C01262F30E0280F311D2F3F3105E8 +:104C100024F4680F60931C0108958FEF80931C01AA +:104C2000089580911B01262F30E0280F311D2F3F62 +:104C3000310524F4680F60931B0108958FEF809372 +:104C40001B01089580911A01262F30E0280F311D95 +:104C50002F3F310524F4680F60931A0108958FEFF8 +:104C600080931A01089580911901262F30E0280FB2 +:104C7000311D2F3F310524F4680F60931901089509 +:104C80008FEF809319010895833011F128F481305A +:104C900049F0823091F00895853081F120F186301D +:104CA000C1F1089580911E01681720F4861B80933E +:104CB0001E01089510921E01089580911D0168172C +:104CC00020F4861B80931D01089510921D01089504 +:104CD00080911C01681720F4861B80931C010895A5 +:104CE00010921C01089580911B01681720F4861B07 +:104CF00080931B01089510921B01089580911A0161 +:104D0000681720F4861B80931A01089510921A01E7 +:104D1000089580911901681720F4861B809319016A +:104D200008951092190108950F931F93873208F088 +:104D300048C08E3108F08DC0803109F477C008F585 +:104D4000873009F461C068F4863009F09DC0809115 +:104D5000F202817F8E7F8093F20281E080930203D2 +:104D600094C08B3009F489C08E3009F08DC08091D9 +:104D7000F20282FB222720F991E0922790FB82F930 +:104D80005EC0863109F479C060F4813109F07CC0DD +:104D90000E94BC1B9091160181E089278093160127 +:104DA0006CC0893109F469C08B3109F06DC0809104 +:104DB000F20281FB222720F991E0922790FB81F9F2 +:104DC0003EC0883309F459C050F4893209F457C001 +:104DD000853309F454C0873209F451C055C0833477 +:104DE00009F44DC028F48A3308F44EC0895332C008 +:104DF000883409F049C00E94BC1B0E94FA090E9435 +:104E0000C1030E94132339C09091F202892F80952B +:104E1000817080FB90F929F0966098609093F2027F +:104E200034C0997F977F9093F20227C08091F2025D +:104E300083FB222720F991E0922790FB83F980934E +:104E4000F2029923D1F08091F20281608093F20204 +:104E500014C08D5141E050E060E070E08A019B0198 +:104E600004C0000F111F221F331F8A95D2F7C901FA +:104E7000B8010E947C1F0E94BC1B81E006C061E05B +:104E800070E080E090E0F5CF80E01F910F910895F1 +:104E900080E0089580E00895CF93C82F80910203A9 +:104EA000813069F018F08230C9F184C0E0911701B7 +:104EB000F09118018081823209F07EC007C0E09134 +:104EC0001701F09118018081823261F48C2F0E94C9 +:104ED0004827811104C08C2F0E9494261DC081E0B8 +:104EE00090E01AC08C2F0E944A27811114C0C4314F +:104EF00079F048F4CB3079F0C03109F061C082E03C +:104F00008093020308C0C93219F0C83321F058C099 +:104F10001092020355C081E0817054C0C93291F1F2 +:104F200020F5C43179F1B0F4C73009F047C08EE103 +:104F300080931E0182E380931D018AE080931C010F +:104F400084E180931B0188E080931A0188E28093BA +:104F5000190134C0CE51C63088F5EC2FF0E0EA5488 +:104F6000FE4F80818093010329C0CE34E9F020F404 +:104F7000CB3421F56AE013C0C13579F0C235F1F4C4 +:104F800061E00DC080910103882319F010920103A4 +:104F900015C081E08093020315C061E006C08091D6 +:104FA00001030E94CE250AC06AE0809101030E949D +:104FB000442604C01092020380E004C081E002C0D5 +:104FC00080E0AACFCF9108950E947423811102C07E +:104FD0000E9450230E94902380931D0380FF02C0F3 +:104FE000869501C080E00C94BC0280911D03982F2F +:104FF0009695292F30E0233031054CF49F5F990FAF +:105000008170892B816080931D030E94942380917D +:105010001D0386950C94BC0280911D03982F9695D4 +:1050200091F09158990F8170892B80931D038E7F89 +:1050300091E009F490E080911D0390FB80F980934A +:105040001D030E94942380911D0386950C94BC023D +:1050500080911D03982F909590FB80F980931D03FC +:105060000E94942380911D0380FF02C0869501C099 +:1050700080E00C94BC0290911D03892F86958F5F70 +:105080008F779170843028F4880F892B80931D03CB +:1050900002C090931D0380911D038E7F91E009F45F +:1050A00090E080911D0390FB80F980931D030E9486 +:1050B000942380911D0386950C94BC0220911D03BE +:1050C000922F96958927982F990F822F8170892B7F +:1050D00080931D038E7F91E009F490E080911D0381 +:1050E00090FB80F980931D030E94942380911D03FF +:1050F00086950C94BC0280911D03869508955058A6 +:10510000BB27AA270ED0D1C1C2D130F0C7D120F021 +:1051100031F49F3F11F41EF4B7C10EF4E095E7FBA4 +:105120009FC1E92FD3D180F3BA17620773078407B1 +:10513000950718F071F49EF5EBC10EF4E0950B2E77 +:10514000BA2FA02D0B01B90190010C01CA01A001D9 +:105150001124FF27591B99F0593F50F4503E68F134 +:105160001A16F040A22F232F342F4427585FF3CF75 +:10517000469537952795A795F0405395C9F77EF446 +:105180001F16BA0B620B730B840BBAF09150A1F08F +:10519000FF0FBB1F661F771F881FC2F70EC0BA0F15 +:1051A000621F731F841F48F4879577956795B7959D +:1051B000F7959E3F08F0B3CF9395880F08F0992795 +:1051C000EE0F97958795089527D108F481E008950B +:1051D0000CD06BC163D140F05AD130F021F45F3F65 +:1051E00019F03EC1511195C14FC170D198F3992367 +:1051F000C9F35523B1F3951B550BBB27AA2762179B +:105200007307840738F09F5F5F4F220F331F441FDF +:10521000AA1FA9F333D00E2E3AF0E0E830D0915017 +:105220005040E695001CCAF729D0FE2F27D0660F04 +:10523000771F881FBB1F261737074807AB07B0E843 +:1052400009F0BB0B802DBF01FF2793585F4F2AF059 +:105250009E3F510568F004C15CC15F3FECF3983E8E +:10526000DCF3869577956795B795F7959F5FC9F7B6 +:10527000880F911D9695879597F90895E1E0660F3F +:10528000771F881FBB1F621773078407BA0720F0B8 +:10529000621B730B840BBA0BEE1F88F7E095089521 +:1052A00004D06894B11135C1089518D188F09F5782 +:1052B00090F0B92F9927B751A0F0D1F0660F771F62 +:1052C000881F991F1AF0BA95C9F712C0B13081F042 +:1052D0001FD1B1E008951CC1672F782F8827B85FD0 +:1052E00039F0B93FCCF3869577956795B395D9F7A3 +:1052F0003EF490958095709561957F4F8F4F9F4FAD +:105300000895E89409C097FB3EF4909580957095B8 +:1053100061957F4F8F4F9F4F9923A9F0F92F96E901 +:10532000BB279395F695879577956795B795F11176 +:10533000F8CFFAF4BB0F11F460FF1BC06F5F7F4F13 +:105340008F4F9F4F16C0882311F096E911C0772325 +:1053500021F09EE8872F762F05C0662371F096E82E +:10536000862F70E060E02AF09A95660F771F881FFD +:10537000DAF7880F9695879597F9089588D018F0F1 +:1053800011F08CD038F480C0C4C0E92F9FD0B0F3A6 +:105390005523C9F3E7FB6217730784079507A8F144 +:1053A00099F3E92FFF2788232AF03197660F771F9B +:1053B000881FDAF7952F5527442332F0915050403B +:1053C000220F331F441FD2F7BB27E91BF50B621BCB +:1053D000730B840BB109C1F222F4620F731F841F97 +:1053E000B11D31972AF0660F771F881FBB1FEFCFC3 +:1053F000915050405AF041F0882332F0660F771FE9 +:10540000881F91505040C1F7939530C0869577958D +:1054100067959F5FD9F7F8CF990F0008550FAA0B32 +:10542000E0E8FEEF16161706E807F907C0F01216B7 +:105430001306E407F50798F0621B730B840B950BBA +:1054400039F40A2661F0232B242B252B21F408950F +:105450000A2609F4A140A6958FEF811D811D0895AC +:1054600097F99F6780E870E060E008959F3F31F012 +:10547000915020F4879577956795B795880F911D82 +:105480009695879597F908959FEF80EC08950024ED +:105490000A941616170618060906089500240A9499 +:1054A00012161306140605060895092E0394000C1F +:1054B00011F4882352F0BB0F40F4BF2B11F460FFAE +:1054C00004C06F5F7F4F8F4F9F4F089557FD9058D7 +:1054D000440F551F59F05F3F71F04795880F97FBB8 +:1054E000991F61F09F3F79F0879508951216130672 +:1054F0001406551FF2CF4695F1DF08C016161706A1 +:105500001806991FF1CF86957105610508940895D5 +:10551000E894BB2766277727CB0197F908957CDFAE +:1055200008F48FEF08950BD0C0CFB1DF28F0B6DFBD +:1055300018F0952309F094CFA7CF1124EACFC6DF46 +:10554000A0F3959FD1F3950F50E0551F629FF00196 +:10555000729FBB27F00DB11D639FAA27F00DB11DEF +:10556000AA1F649F6627B00DA11D661F829F222778 +:10557000B00DA11D621F739FB00DA11D621F839FFF +:10558000A00D611D221F749F3327A00D611D231FD5 +:10559000849F600D211D822F762F6A2F11249F5723 +:1055A00050408AF0E1F088234AF0EE0FFF1FBB1F46 +:1055B000661F771F881F91505040A9F79E3F5105E5 +:1055C00070F04ECFA6CF5F3FECF3983EDCF38695AC +:1055D00077956795B795F795E7959F5FC1F7FE2B90 +:1055E000880F911D9695879597F90895FA01EE0F0A +:1055F000FF1F30962105310599F16115710561F4A0 +:105600008038BFE39B0749F168949038810561F0C9 +:105610008038BFEF9B0741F0992342F5FF3FE1053A +:105620003105210511F1E8940894E795D901AA23E1 +:1056300029F4AB2FBE2FF85FD0F310C0FF5F70F4DA +:10564000A695E0F7F73950F019F0FF3A38F49F7754 +:105650009F930CD00F9007FC905808953EF014CF04 +:1056600060E070E080E89FE308954FE79F775F93E5 +:105670004F933F932F939ED02F913F914F915F91E6 +:1056800052DF05C019F40EF0EBCE42CFFDCE26DF7F +:10569000C8F39638C0F707F80F92E8942BE33AEA7C +:1056A00048EB5FE74EDF0F920F920F924DB75EB758 +:1056B0000F92C0D0EAE0F1E016D04F915F91EF91E8 +:1056C000FF91E595EE1FFF1F49F0FE57E068442764 +:1056D000EE0F441FFA95E1F74195550B32D00F902C +:1056E00007FE26C00895DF93CF931F930F93FF9279 +:1056F000EF92DF927B018C01689405C0DA2EEF01F6 +:105700001EDFFE01E894A5912591359145915591B3 +:10571000AEF3EF0106DDFE019701A801DA9479F7F7 +:10572000DF90EF90FF900F911F91CF91DF9108953F +:105730009B01AC0160E070E080E89FE349CD90CE32 +:1057400095CECCDEE8F39923D9F3940F511DBBF32A +:105750009150504094F059F0882332F0660F771F33 +:10576000881F91505040C1F79E3F510544F7880F64 +:10577000911D9695879597F908955F3FACF0983EF7 +:105780009CF0BB27869577956795B79508F4B1602F +:105790009395C1F7BB0F58F711F460FFE8CF6F5F27 +:1057A0007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCEC6 +:1057B000689456CE93DEC8F39923D1F3C6F3DF93F2 +:1057C000CF931F930F93FF92C92FDD2788232AF0D1 +:1057D0002197660F771F881FDAF720E030E040E856 +:1057E0005FEB9FE3883920F0803E30F021968F7781 +:1057F00087DCE2E3F1E003C083DCEFE5F1E073DF97 +:105800008B01BE01EC01FB2E6F5771097595771F57 +:10581000880B990B78DD28E132E741E35FE38FDE07 +:10582000AF2D9801AE01FF900F911F91CF91DF91A5 +:1058300078DC3BCEFA01DC01AA0FBB1F9B01AC0157 +:10584000BF5728F422273327442750781FC0B75169 +:1058500088F4AB2F0024469537952795011CA39516 +:10586000D2F3002069F0220F331F441FB395DAF3FF +:105870000DD045CC61307105A0E88A07B94630F4F7 +:105880009B01AC016627772788279078309621F016 +:1058900020833183428353830895AA1BBB1B51E1AC +:1058A00007C0AA1FBB1FA617B70710F0A61BB70B90 +:1058B000881F991F5A95A9F780959095BC01CD0135 +:1058C000089597FB072E16F4009407D077FD09D0B2 +:1058D0000E944D2C07FC05D03EF4909581959F4F7A +:1058E0000895709561957F4F0895EE0FFF1F059005 +:1058F000F491E02D0994F999FECF92BD81BDF89AFB +:10590000992780B50895A8E1B0E042E050E00C94FA +:10591000A32C262FF999FECF92BD81BDF89A01974D +:1059200000B4021639F01FBA20BD0FB6F894FA9AE7 +:10593000F99A0FBE08950196272F0E948A2C0C9485 +:10594000892CDC01CB01FC01F999FECF06C0F2BD28 +:10595000E1BDF89A319600B40D9241505040B8F72D +:065960000895F894FFCF4A +:10596600640007000CFF0000003F64DE0F6C104966 +:10597600101510E10F0101DF022808140A321E007B +:1059860002040507090B0C0E1011131517181A1C23 +:105996001D1F2123242628292B2D2F30323435375D +:1059A600393B1F0F03764F5F6F7F4969437909596A +:1059B60053633149803F5D8B803FF8BF803FCAE12A +:1059C600803F73ED803FCAE1803FF8BF803F5D8B2B +:1059D600803F3149803F0000803FF16D7F3F75EA8F +:1059E6007E3F4C827E3F833F7E3F84287E3F833FBF +:1059F6007E3F4C827E3F75EA7E3FF16D7F3F000021 +:105A0600803F3F4D3639830436040004C7035A03EA +:105A160073038C03A50301020304050607080900A6 +:00000001FF diff --git a/keyboard/planck/keymaps/joe/compiled.hex b/keyboard/planck/keymaps/joe/compiled.hex new file mode 100644 index 0000000000..865ed2ce99 --- /dev/null +++ b/keyboard/planck/keymaps/joe/compiled.hex @@ -0,0 +1,1479 @@ +:100000000C9467030C94AB030C94AB030C94AB03FC +:100010000C94AB030C94AB030C94AB030C94AB03A8 +:100020000C94AB030C94AB030C946A150C943C1623 +:100030000C949E230C94AB030C94AB030C94AB0375 +:100040000C94AB030C940D040C94AB030C94AB0315 +:100050000C94AB030C9406240C94AB030C94AB03EC +:100060000C94AB030C94AB030C94AB030C94AB0358 +:100070000C94AB030C94AB030C94AB030C94AB0348 +:100080000C94DF0B0C94AB030C94AB030C94AB03FC +:100090000C94AB030C94AB030C94AB030C94AB0328 +:1000A0000C94AB030C94AB030C94AB03A916CB16C6 +:1000B000B917CB16B91710173317B91788179B172D +:1000C000851A851AB41AB41AF31A131B691C691C11 +:1000D0001E1B691CCE1BCE1B351C3E1C691C631CE1 +:1000E000DB1BDB1BDB1BDB1BDB1BDB1BDB1BDB1B60 +:1000F000DB1BDB1BDB1BDB1BDB1BDB1BDB1BDB1B50 +:10010000EB1BF91B001C071C111C07634236B79B35 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C00002010000000000000000000001E1013316 +:1001D000023301260226012C022C012C022C0127BD +:1001E00002270133023302E1015002500150025054 +:1001F000015002500001E1012602260133023301C1 +:100200002C022C012C022C0133023301270227027D +:10021000E10150025001500250015002500001E132 +:10022000013302330126022602E10001E10133021B +:10023000330127022702E1000000F1A4F1A529A65D +:1002400000000000018C028C048C088C000000006F +:100250000000000000002B22032014001A000900F7 +:1002600013000A000D000F0018001C0033002D00C1 +:100270002A00040015001600170007000B001100EB +:1002800008000C00120028000F201D001B000600B3 +:10029000190005000E00100036003700520034002F +:1002A000E000E300E200E10001202C002C0002202D +:1002B0003800500051004F00032014001A000800BD +:1002C000150017001C0018000C00120013002D0070 +:1002D0002A0004001600070009000A000B000D00A8 +:1002E0000E000F00330028000F201D001B00060029 +:1002F00019000500110010003600370052003400CC +:10030000E000E300E200E10001202C002C000220CC +:100310003800500051004F00032000005200000040 +:10032000000000002602270254005F006000610008 +:100330002A00500051004F00000000002202670018 +:1003400055005C005D005E000F2000000000000012 +:100350000000000000008500560059005A005B00B4 +:10036000E000E300E200E1000120010001000220C2 +:100370005700620063005800032014001A000900AF +:10038000130023000D000F0018001C0033002D0087 +:100390002A00210015002200240007000B00110094 +:1003A00020001E00270028000F201D001B00060053 +:1003B000190005000E00100036003700520034000E +:1003C000E000E300E200E10001202C002C0002200C +:1003D0003800500051004F003500000000000000C0 +:1003E0000000000000000000033002300130003047 +:1003F0002A001E001F0020002100220023002400EC +:100400002500260027000100310000000000000048 +:1004100000000000000000002F0030004B002E0004 +:100420000100010001000100012001000100022083 +:1004300000004A004E004D003A003B003C003D00E9 +:100440003E003F00400041004200430044004500A0 +:100450004C00F400F000F500F600F900F700500041 +:10046000510052004F0000000100F200F100F300C3 +:10047000FB00FA00FC00000000004B0152054E0199 +:100480000100010001000100012000000000022025 +:100490000000500551054F050100A800AA00A90061 +:1004A000000000000000000000000000000000004C +:1004B0000000AE00AC00AB00000000000000000037 +:1004C00000000000000000500000000000000000DC +:1004D000000000000000000000000000000000001C +:1004E0000620072008200920012001000100022029 +:1004F0006600A700A6000F052803540068006500E9 +:10050000200050006C0061006E0063006B00200052 +:100510004B006500790062006F00610072006400AA +:1005200000002C034F007200740068006F006C0024 +:1005300069006E0065006100720020004B006500DC +:10054000790062006F0061007200640073000000B7 +:100550000403090409026D00040100A0FA09040063 +:10056000000103010100092111010001223F0007E0 +:1005700005810308000A09040100010301020009C2 +:100580002111010001224D000705820308000A091C +:1005900004020001030000000921110100012236BC +:1005A000000705830308000A090403000103000093 +:1005B0000009211101000122390007058403100000 +:1005C000011201100100000008EDFE606001000151 +:1005D00002000105010906A101050719E029E71537 +:1005E0000025019508750181020508190129059565 +:1005F00005750191029501750391010507190029FF +:100600007715002501957875018102C005010980E3 +:10061000A101850216010026B7001A01002AB700C1 +:10062000751095018100C0050C0901A10185031613 +:100630000100269C021A01002A9C02751095018176 +:1006400000C005010902A1010901A1000509190164 +:100650002905150025019505750181029501750390 +:1006600081010501093009311581257F9502750841 +:10067000810609381581257F950175088106050CCD +:100680000A38021581257F950175088106C0C005CD +:10069000010906A101050719E029E71500250195C3 +:1006A0000875018102950175088101050819012964 +:1006B00005950575019102950175039101050719CD +:1006C0000029FF150025FF950675088100C011243B +:1006D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FD +:1006E00080911E0390911F03A0912003B0912103DC +:1006F0008730904BA740B04BB9F410921E03109274 +:100700001F03109220031092210314BE84B7877F29 +:1007100084BF88E10FB6F894809360001092600067 +:100720000FBEE0E0F8E3099511E0A0E0B1E0E6E9F2 +:10073000FBE502C005900D92A03CB107D9F713E08C +:10074000A0ECB1E001C01D92AE31B107E1F70E940B +:10075000B0120C94C92D0C9400000895089581E006 +:10076000089508950C94AE030C94AF030C94B10358 +:100770000E94932923E030E0281B3109220F2093A7 +:10078000C4010895282F2F9880918000211108C05E +:10079000877F8093800010928D0010928C001BC088 +:1007A000886080938000233019F48FEF9FEF0FC093 +:1007B00083E090E0821B9109880F991F2FEF3FEF94 +:1007C000A90102C0569547958A95E2F7CA01909310 +:1007D0008D0080938C000C94B8030E94B80384E0D1 +:1007E0008093C3011092C0010895279A2F988FEF2C +:1007F0009FEF90938700809386008AE0809380002B +:1008000089E1809381000E94FC280C94ED030E94F2 +:10081000F5036E9A769A0C94AD031F920F920FB661 +:100820000F9211242F933F938F939F93EF93FF93F6 +:10083000E091C101F091C201CF0101969093C201F4 +:100840008093C1010090C30102C0F695E7950A9418 +:10085000E2F7EF738091C001823019F4E03251F475 +:1008600004C0813039F4EF3329F480916F008D7F1B +:1008700080936F00F0E0E457FE4FE49121E031E017 +:10088000E29FC001E39F900D11240090C40102C0BB +:10089000969587950A94E2F790938D0080938C004B +:1008A000FF91EF919F918F913F912F910F900FBEEC +:1008B0000F901F901895FC01613061F028F06230B4 +:1008C00079F0633099F018C082818823A9F08BE217 +:1008D00092E008958281882379F08EE192E0089574 +:1008E0008281882349F085EF91E0089582818823F1 +:1008F00019F08CEC91E0089580E090E0089581E09B +:1009000008950C947F0408950C94070480911502B7 +:10091000882309F448C08091D1019091D2010097B9 +:1009200079F40E94D0239093D2018093D1018091D9 +:10093000D30190E0009771F48091D40190E00AC057 +:100940000E94DC2320910001309101012817390712 +:1009500040F329C00197880F991F880F991FFC0148 +:10096000EB52FE4F60817181828193810E94450B21 +:10097000E091D30184E0E89FF0011124EB52FE4F97 +:1009800060817181828193814FE050E00E94FD0E71 +:100990008091D30190E001966091D40170E00E94B3 +:1009A000792D8093D3010C94B203109217020C940A +:1009B000120B0895089581E0809317020C94DA04D5 +:1009C000089508958F929F92AF92BF92EF92FF92F7 +:1009D0000F931F93CF93DF93CDB7DEB7A3970FB6D7 +:1009E000F894DEBF0FBECDBF7C01FC0100811181F8 +:1009F000C8010E94CD21B8010E94E4068C01B70114 +:100A00000E948104882309F4CCC10032F0E51F075D +:100A100041F4F7018281882309F458C00E94610FD4 +:100A2000C0C10132F0E51F0741F4F701828188233C +:100A300009F44CC00E946A0FB4C10232F0E51F07EE +:100A400051F4F7018281882309F440C00E945D0FB0 +:100A50008111F0CFE3CF0332F0E51F0739F4F7013E +:100A60008281882399F10E94DB049BC10432F0E566 +:100A70001F0739F4F7018281882341F10E94D504D0 +:100A800090C10532F0E51F0749F4F7018281882300 +:100A9000E9F0809117028111F1CFE5CF0632F0E540 +:100AA0001F0739F4F7018281882381F00E94710FBA +:100AB0000AC00732F0E51F0749F4F7018281882355 +:100AC00029F00E947C0F0E94E1046BC18091170203 +:100AD000811105C0F70182818111CFC018C1003E8C +:100AE000110579F4F7018281882309F44DC00E9431 +:100AF000120B81E080931602109215021092D4011D +:100B000050C1023E110559F4F70182818823E1F1B9 +:100B10000E94120B109216021092150242C1033E5F +:100B2000110591F4F7018281882371F10E94120B63 +:100B30001092160281E0809315021092D301109258 +:100B4000D2011092D1012DC10235110559F4F701DE +:100B50008281882309F425C18091000190910101CF +:100B60000A970DC00135110579F4F70182818823B8 +:100B700009F417C180910001909101010A969093A8 +:100B80000101809300010DC14091040183E2EFE176 +:100B9000F1E0DE01119601900D928A95E1F7F701DF +:100BA000808121E030E02C0F3D1F280F311DC9014D +:100BB0002091020130910301FC01E20FF31F6081DB +:100BC000772767FD7095640F711D882777FD8095E5 +:100BD000982F0E949B2A20E030E040E451E40E94DC +:100BE000002A4B015C01F701218184E090E0821B27 +:100BF0009109BC01882777FD8095982F0E949B2A38 +:100C00009B01AC01C501B4010E9498299B01AC0174 +:100C100060E070E080E090E40E940E2C20E030E084 +:100C20004CED50E40E94AB2B4B015C01F70182813B +:100C30008823D1F04FE050E0C501B4010E94FD0EC1 +:100C4000809116028823A1F08091D40124E0829F34 +:100C5000F0011124EB52FE4F80829182A282B38276 +:100C60008F5F8093D40104C0C501B4010E94450B7D +:100C70000F3F110508F02ECF94C08091D001811153 +:100C80001FC0043130E5130709F051C00E948304EE +:100C900081E08093D0010E94D0239093CF01809374 +:100CA000CE011092C7011092C9011092C801109292 +:100CB000CB011092CA011092CD011092CC0171C0EB +:100CC0008091CE019091CF010E94DC23883C910558 +:100CD00070F48091C701E82FF0E0EE0FFF1FE8539A +:100CE000FE4F118300838F5F8093C7015AC0043881 +:100CF00080E5180721F00538104501F13AC0F701E9 +:100D00008281882341F01092C50182E01EC0043820 +:100D100030E5130759F58091C501811106C086E2BF +:100D20000E94291986E20E94F11982E01CC0043851 +:100D3000F0E51F0741F305381045D9F4F70182812A +:100D4000882331F01092C60180E20E94401A29C027 +:100D50008091C601811106C087E20E94291987E2AD +:100D60000E94F11980E20E94471A1BC00538104505 +:100D700029F381E08093C5018093C601C701A39642 +:100D80000FB6F894DEBF0FBECDBFDF91CF911F919C +:100D90000F91FF90EF90BF90AF909F908F900C9429 +:100DA000B40380E0A3960FB6F894DEBF0FBECDBFAC +:100DB000DF91CF911F910F91FF90EF90BF90AF9077 +:100DC0009F908F90089508959CE0799FF0011124E1 +:100DD00090E3899FE00DF11D1124E60FF11DEE0F48 +:100DE000FF1FE85AFD4F859194910895880F991F30 +:100DF000FC01E854FF4F859194910895880F991F45 +:100E0000FC01E85CFD4F8591949108950F931F9329 +:100E1000CF93DF93EC01811521E39207A0F5C11573 +:100E200080E3D80708F0D7C0C83ED105D8F4C03E4B +:100E3000D10508F007C2C83AD10578F4C53AD10502 +:100E400008F06AC0C130D10509F463C008F4F7C1E5 +:100E5000C430D10508F0F6C1F2C1CB3BD10508F48E +:100E600066C0EDC1C11590E2D90708F0AFC0C11549 +:100E700021E0D20708F0E6C1C03FD10508F4DFC188 +:100E80008E0110651FC2C03880E5D80700F5C03755 +:100E900090E5D90708F0A3C0C11520E5D20709F4F1 +:100EA000ACC050F4CE01905480319F4008F0C7C1CF +:100EB000DF708E01106A06C2C13080E5D80709F4E0 +:100EC000AEC0C43190E5D90708F4AFC0B8C1C3388B +:100ED00020E5D20709F48EC050F4C13890E5D90757 +:100EE00009F482C008F083C000E011EDEBC1C0310D +:100EF00081E5D80708F4A3C1C11597E5D90708F41F +:100F000036C1CE0190578115904108F098C1DF702D +:100F100093C101E010E0D6C1C53AD10509F494C1EE +:100F2000C63AD10509F093C102E810E4CBC1C83A32 +:100F3000D10509F48FC1C93AD10509F48EC1CA3A65 +:100F4000D10509F48DC1CB3AD10509F48CC1CC3A55 +:100F5000D10509F48BC1CD3AD10509F48AC1C03B52 +:100F6000D10509F489C1CE3AD10509F488C1CF3A37 +:100F7000D10509F487C1C13BD10509F486C1C23B43 +:100F8000D10509F485C1C33BD10509F484C1C43B33 +:100F9000D10509F483C1C53BD10509F482C1C63B23 +:100FA000D10509F481C1C73BD10509F480C1C83B13 +:100FB000D10509F47FC1C93BD10509F47EC1CA3B03 +:100FC000D10509F47DC100E014E47CC1CE019F701D +:100FD0000E94FE0678C1DD278E01106C73C1CF70B0 +:100FE000DD278E01146D6EC100E010ED6BC100E0D5 +:100FF00012ED68C100E013ED65C10E94D41C0E948F +:10100000120B0E94D9048FEF94E32CE081509040A2 +:101010002040E1F700C000000E942B2453C18091C2 +:10102000F20281608093F2024DC10E948C248111F2 +:1010300002C00E9468240E949F2490E090931D03A8 +:1010400080931C03C23080E5D80721F480911C03F3 +:10105000816086C0C43090E5D90721F480911C03DB +:1010600082607EC0C63020E5D20721F480911C0347 +:10107000846076C0C83080E5D80719F480911C03DD +:1010800027C0CA3090E5D90721F480911C03806104 +:1010900067C0CC3020E5D20721F480911C03806228 +:1010A0005FC0CE3080E5D80721F480911C038064B6 +:1010B00057C0C03190E5D90721F480911C038068A6 +:1010C0004FC0C23120E5D20729F480911C0384600F +:1010D000886046C0C33080E5D80721F480911C03A6 +:1010E0008E7F3EC0C53090E5D90721F480911C0366 +:1010F0008D7F36C0C73020E5D20721F480911C03D4 +:101100008B7F2EC0C93080E5D80719F480911C036D +:1011100026C0CB3090E5D90721F480911C038F7E47 +:101120001FC0CD3020E5D20721F480911C038F7DB4 +:1011300017C0CF3080E5D80721F480911C038F7B46 +:101140000FC0C13190E5D90721F480911C038F773E +:1011500007C0C331D04531F480911C038B7F877F5A +:1011600080931C0380911C030E94A324ABC08D2F8D +:1011700099278F70992781309105D9F49E012370AA +:10118000332702C0880F991F2A95E2F79C688E01C9 +:1011900044E0000F111F4A95E1F700271370802BE0 +:1011A000912B53E0CC0FDD1F5A95E1F7C076DD2778 +:1011B0002FC08230910531F4DC2FCC278E01016FD6 +:1011C000106A80C08330910569F4CE01837099273D +:1011D00001E010E002C0000F111F8A95E2F7C8017C +:1011E0009C680FC084309105B9F4CE0183709927B3 +:1011F00001E010E002C0000F111F8A95E2F7C8015C +:101200009A6823E0CC0FDD1F2A95E1F7C07ED770E6 +:101210008C010C2B1D2B56C08530910531F4DC2F31 +:10122000CC278E01046F106A4DC0069709F04AC0A2 +:10123000CF71DD27DC2FCC278E01106243C000E088 +:1012400010E040C08E013EC001E810E43BC003E85E +:1012500010E438C002EE14E435C009EE14E432C0E4 +:101260000AEE14E42FC005EB14E42CC006EB14E4E2 +:1012700029C007EB14E426C00CEC14E423C00DECE9 +:1012800014E420C003E815E41DC00AE815E41AC000 +:1012900002E915E417C004E915E414C001E216E4FC +:1012A00011C003E216E40EC004E216E40BC005E22E +:1012B00016E408C006E216E405C007E216E402C020 +:1012C0000AE216E4C801DF91CF911F910F910895B2 +:1012D0009CE0799FF001112490E3899FE00DF11DBE +:1012E0001124E60FF11DEE0FFF1FE85AFD4F859107 +:1012F0009491803E9105E0F4803C910558F581334E +:10130000910509F46FC048F48932910509F463C06E +:101310008A32910509F46DC072C089339105E9F0F4 +:1013200082389105D1F08533910509F44DC067C02D +:10133000833E910581F138F4803E9105B9F0823EFB +:101340009105D9F05CC0863E910561F1873E91051B +:10135000A1F155C00E94F606089520911C0320FDBE +:1013600002C021FF4CC080EE90E049C080911C0378 +:1013700080FFF9CF89E390E042C080911C0382FF97 +:101380000EC080911C0384FF03C080E090E037C052 +:1013900083EE90E034C080911C0382FFF2CF82EE96 +:1013A00090E02DC080911C0383FF0BC080911C0333 +:1013B00084FDEBCF87EE90E022C080911C0383FF79 +:1013C000F5CF86EE90E01BC080911C0385FF07C01F +:1013D00089E290E014C080911C0385FFF9CF85E37A +:1013E00090E00DC080911C0386FF07C08AE290E068 +:1013F00006C080911C0386FFF9CF81E390E00E9434 +:10140000060708950C94B603E82FF0E0E25BFE4F68 +:101410008081E82FEF70F0E082958F7021E030E05E +:10142000A90102C0440F551F8A95E2F740A3089511 +:101430000F931F93CF93DF9385B7806885BF85B7E0 +:10144000806885BFC3E0D0E001E010E0FE01E25B10 +:10145000FE4F8081E82FEF70F0E021A182958F7020 +:10146000A80102C0440F551F8A95E2F7CA01822BDA +:1014700081A38C2F0E94040A219740F78BE090E013 +:1014800061E070E0FC01EE5BFE4F2081E22FEF7027 +:10149000F0E042A122952F70DB0102C0AA0FBB1F12 +:1014A0002A95E2F79D01242B22A3019758F7DF919B +:1014B000CF911F910F910C948404EF92FF920F93A0 +:1014C0001F93CF93DF9300E212E0C3E0EE24E39496 +:1014D000F12CD5E08C2F0E94040A8BE090E040E0D4 +:1014E00050E0FC01EE5BFE4F6081E62FEF70F0E014 +:1014F00020A130E062956F7002C0359527956A95FE +:10150000E2F720FD09C09701082E02C0220F331F09 +:101510000A94E2F7422B532B019718F7F8019291A6 +:1015200082918F018417950721F051834083D093D6 +:1015300005018C2F0E94040AC15060F680910501BC +:1015400087FD2CC08150809305018F3F39F08FE9D2 +:101550009FE00197F1F700C0000020C080911E02BB +:1015600090911F02909327028093260280911C0283 +:1015700090911D02909325028093240280911A027B +:1015800090911B0290932302809322028091180273 +:101590009091190290932102809320020E94860468 +:1015A00081E0DF91CF911F910F91FF90EF9008950F +:1015B000E82FF0E0EE0FFF1FE05EFD4F808191818C +:1015C000089508950F931F93CF9308E212E0C0E0AF +:1015D000F801929182918F010E944823C80FF2E096 +:1015E00000321F07A9F78C2FCF911F910F910895FB +:1015F0000E948C24811102C00E9468240E94B124A0 +:10160000809307033E9A809171008D7F80937100D3 +:1016100082E0809390008AE18093910081E0809342 +:101620002A02089580912A02811102C00E94F80ABC +:1016300010927A0210927902809171008D7F8093CE +:101640007100809190008F738093900010923C0203 +:1016500010923B0210927302109274021092750263 +:10166000109276021092720210927102E1E5F2E09D +:10167000A1E4B2E011921192119211921D921D9269 +:1016800082E0E137F807B1F70895CF92DF92EF9249 +:10169000FF920F931F93CF93DF9320913B0222235E +:1016A00009F484C06B017C0180912A02811102C07F +:1016B0000E94F80A01E712E0C7E0D0E0A701960116 +:1016C000F80192918291729162918F010E94FC299E +:1016D000811131C0FE01EE0FFF1FEE0FFF1FEF5A09 +:1016E000FD4F1082118212821382DE01AA0FBB1FEE +:1016F000AF5BBD4F11961C921E92C730D105E9F029 +:10170000219644815581668177814083518362832C +:101710007383148215821682178212968D919C9182 +:10172000139711969C938E9313961C921E92129768 +:1017300034961296E2CF219708F680917902909123 +:101740007A02019797FD05C090937A0280937902FF +:1017500004C010927A0210927902809179029091DD +:101760007A0220917702309178022817390724F005 +:101770001092780210927702892BC1F48091710047 +:101780008D7F80937100809190008F738093900083 +:1017900010927302109274021092750210927602E7 +:1017A000109272021092710210923B02DF91CF915F +:1017B0001F910F91FF90EF90DF90CF9008951F92AF +:1017C0000F920FB60F9211244F925F926F927F92F9 +:1017D0008F929F92AF92BF92CF92DF92EF92FF9241 +:1017E0002F933F934F935F936F937F938F939F9329 +:1017F000AF93BF93CF93DF93EF93FF9380913B021F +:10180000882309F49BC1C0917902D0917A021C16F9 +:101810001D060CF093C140902B0250902C0260905A +:101820002D0270902E0220E030E0A901C301B20128 +:101830000E94A72B18160CF065C0C130D10509F421 +:1018400052C08091770290917802BE010E94792D5A +:101850007C01909378028093770280903D02909073 +:101860003E02A0903F02B090400220E030E040E80D +:101870005FE3C501B4010E94982960933D02709313 +:101880003E0280933F0290934002F701EE0FFF1F4C +:10189000EE0FFF1FEF5AFD4FA3019201608171818E +:1018A000828193810E94002A20E030E040E05EE3E4 +:1018B0000E94AB2B9B01AC01C501B4010E94A72B78 +:1018C00018168CF4C7010196BE010E94792D9093E1 +:1018D00078028093770210923D0210923E0210929D +:1018E0003F0210924002E0917702F0917802EE0FF1 +:1018F000FF1FEE0FFF1FEF5AFD4F60817181828144 +:101900009381D0C0C0907302D0907402E0907502B1 +:10191000F090760220E030E0A901C701B6010E94F4 +:10192000FC292197882309F4A2C0FE01EE0FFF1FB6 +:10193000EE0FFF1FEF5AFD4F80809180A280B38091 +:10194000A5019401C701B6010E94FC2987FF31C09F +:10195000A501940160E070E08CED93EC0E94002AF8 +:1019600020E030E040E451E40E94002A20E030E032 +:1019700040E05FE30E94AB2B9B01AC0160E070E0B4 +:1019800080E090E40E940E2C9B01AC01C501B401E3 +:101990000E94AB2B9B01AC01C701B6010E94FC2940 +:1019A00087FF07C0A701960160E070E08CED93E42B +:1019B00039C0A5019401C701B6010E94A72B1816D2 +:1019C0000CF055C0A501940160E070E08CED93E44B +:1019D0000E94002A20E030E040E451E40E94002A06 +:1019E00020E030E040E05FE30E94AB2B9B01AC01C4 +:1019F00060E070E080E090E40E940E2C9B01AC015E +:101A0000C501B4010E94AB2B9B01AC01C701B6011B +:101A10000E94A72B18165CF5A701960160E070E004 +:101A20008CED93EC0E94002A20E030E040E451E489 +:101A30000E94002A20E030E040E05FE30E94AB2BF0 +:101A40009B01AC0160E070E080E090E40E940E2C0D +:101A50009B01AC01C701B6010E94AB2B60937302DE +:101A600070937402809375029093760213C0FE0106 +:101A7000EE0FFF1FEE0FFF1FEF5AFD4F8081918188 +:101A8000A281B3818093730290937402A093750234 +:101A9000B093760260917302709174028091750226 +:101AA0009091760220912802309129022F3F4FEF2A +:101AB000340731F02F5F3F4F3093290220932802E3 +:101AC0000E94870F6B017C0120E034E244EF51E477 +:101AD0000E94FC2987FF08C086EFC82E88E2D82E16 +:101AE00084EFE82E81E4F82E20E030E040E051E47D +:101AF000C701B6010E94AB2B9B01AC0160E074E210 +:101B000084E79BE40E94002A6B017C010E946D2AFD +:101B10007093970060939600209106013091070121 +:101B20004091080150910901C701B6010E94AB2BF9 +:101B30000E946D2A709399006093980080913C02F6 +:101B4000882309F433C1C0903702D0903802E09066 +:101B50003902F0903A0220E030E0A901C701B60155 +:101B60000E94A72B1816D4F5809128029091290283 +:101B70008F3F2FEF920729F00196909329028093CF +:101B80002802C701B6010E94870F20E030E040E044 +:101B900051E40E94AB2B9B01AC0160E074E284E74E +:101BA0009BE40E94002A6B017C010E946D2A7093C5 +:101BB00097006093960020910601309107014091B3 +:101BC000080150910901C701B6010E94AB2B0E9488 +:101BD0006D2A709399006093980008C01092970046 +:101BE0001092960010929900109298006091310224 +:101BF000709132026F5F7F4F7093320260933102B7 +:101C0000209196003091970080E090E0232BF1F036 +:101C1000C0919600D09197000E94992A6B017C0197 +:101C2000BE0180E090E00E94992A9B01AC01609186 +:101C300033027091340280913502909136020E94F5 +:101C4000002A20E03FEF4FE757E410C00E94992A96 +:101C50006B017C0120E030EE4FEF54E460913302E1 +:101C60007091340280913502909136020E94AB2B24 +:101C70009B01AC01C701B6010E94A72B87FD96C04E +:101C800080912F028F5F80932F0290E020910303B9 +:101C90003091040382179307A0F080910E038823EC +:101CA00019F010922F020DC0809171008D7F8093EA +:101CB0007100809190008F738093900010923C028D +:101CC0007DC080913002C0912F02811128C0C09048 +:101CD0000803D0900903E0900A03F0900B0320E082 +:101CE00030E0A901C701B6010E94A72B1816BCF469 +:101CF00081E08093300210923702109238021092E5 +:101D0000390210923A02C0923302D0923402E09229 +:101D10003502F0923602C150C0932F0243C0109298 +:101D200030021092290210922802E0910503F091EE +:101D3000060348E0C49FE00DF11D112480819181CC +:101D4000A281B3818093370290933802A093390225 +:101D5000B0933A0220E030E040E85EE364817581B0 +:101D6000868197810E94AB2B6B017C0180910A01D7 +:101D7000682F70E080E090E00E94992A20E030E037 +:101D800048EC52E40E94002A9B01AC01C701B60155 +:101D90000E94AB2B60933302709334028093350220 +:101DA0009093360210923202109231028091070312 +:101DB00080FD04C010923C0210923B02FF91EF9113 +:101DC000DF91CF91BF91AF919F918F917F916F9153 +:101DD0005F914F913F912F91FF90EF90DF90CF90C7 +:101DE000BF90AF909F908F907F906F905F904F903B +:101DF0000F900FBE0F901F901895CF92DF92EF9229 +:101E0000FF92CF93DF936B017C01EA0180912A025C +:101E1000811102C00E94F80A8091070380FF46C02A +:101E20008091790290917A0208970CF03FC08091DE +:101E300071008D7F8093710080913C0281110E941E +:101E4000120B81E080933B0210922902109228022B +:101E500020E030E0A901C701B6010E94A72B1816A7 +:101E6000DCF48091790290917A02FC01EE0FFF1F61 +:101E7000EE0FFF1FEF5AFD4FC082D182E282F38244 +:101E8000FC01EE0FFF1FEF5BFD4FD183C083019676 +:101E900090937A028093790280917100826080939E +:101EA000710080919000806880939000DF91CF91C5 +:101EB000FF90EF90DF90CF9008958091070381709D +:101EC0000895809107038160809307030E94B524E1 +:101ED0000C94E004809107038E7F809307030C9499 +:101EE000B52480917B0290E0019666E070E00E944C +:101EF000792D80937B02089580917B0290E0019779 +:101F000066E070E00E94792D80937B0208958F92A5 +:101F10009F92AF92BF92CF92DF92EF92FF920F9378 +:101F20001F93CF93DF936B017C01C0912802D09166 +:101F30002902BE0180E090E00E94992A4B015C01D9 +:101F4000A701960160E070E08CE594E40E94002A0D +:101F50009B01AC01C501B4010E94AB2B0E946D2A0C +:101F600020917B02233009F473C028F4222351F01E +:101F70002130E9F02CC1243009F4A0C0253009F447 +:101F8000E0C025C180E090E0A0E0BFE380930601BF +:101F900090930701A0930801B093090110922B02BE +:101FA00010922C0210922D0210922E0210C110924B +:101FB0002B0210922C0210922D0210922E026431EC +:101FC000710540F46A30710560F520E030E040E8CA +:101FD0005EE32BC0693C710508F0AAC080E090E088 +:101FE0000E94992A20E030E040EA51E40E949729BB +:101FF00020E030E044E353E40E94002A9B01AC015E +:102000000E94AB2B20E030E040E05EE30E94AB2B6F +:102010009B01AC0160E070E080E09EE30E949729A4 +:1020200044C020E030E040E05FE3C701B6010E9419 +:10203000AB2B6B017C0180E090E0A0E0BEE38093DD +:10204000060190930701A0930801B0930901BFC056 +:1020500010922B0210922C0210922D0210922E023E +:102060004AE0469F9001479F300D1124C90168EB5B +:102070007BE00E94652DBC016C5D754077FF03C05D +:10208000719561957109882777FD8095982F0E9439 +:102090009B2A2EE333EC4EE259E30E94AB2B20E067 +:1020A00030E040EC5EE30E94982960930601709353 +:1020B0000701809308019093090189C010922B02B7 +:1020C00010922C0210922D0210922E02CE018370DB +:1020D0009927892BE1F0BE016170772780E090E0BD +:1020E0000E94992A20E030E040E05EE30E94AB2BA2 +:1020F00020E030E040E45FE30E949829609306010D +:102100007093070180930801909309010CC080E04F +:1021100090E0A0E0BFE38093060190930701A093B5 +:102120000801B0930901C770DD27CD2B09F04FC01E +:1021300010920601109207011092080110920901F5 +:1021400046C010922B0210922C0210922D02109277 +:102150002E0200E010E020E03FE300930601109320 +:10216000070120930801309309016739710578F15F +:1021700080E090E00E94992A20E030E047E153E4BB +:102180000E94972920E030E04AE754E40E94002AA8 +:1021900020E030E048E452E40E94AB2B20E030E045 +:1021A00040EA51E40E94DD2A0E94682A660F771FE8 +:1021B000660F771FFB01EE5AFE4F2081318142816D +:1021C0005381C701B6010E94AB2B6B017C01C70193 +:1021D000B601DF91CF911F910F91FF90EF90DF90AB +:1021E000CF90BF90AF909F908F90089580918C0278 +:1021F0000895CF93DF9300D01F92CDB7DEB79C0137 +:1022000080911303843019F593E099833B832A83EB +:102210009093E9008FEF9091E800815095FD06C002 +:1022200095ED9A95F1F700008111F5CF8091E800C6 +:1022300085FF0DC040E050E063E070E0CE01019604 +:102240000E945A138091E8008E778093E8000F90E7 +:102250000F900F90DF91CF910895CF93DF9300D02F +:102260001F92CDB7DEB720911303243021F522E071 +:1022700029839B838A8383E08093E9008FEF909189 +:10228000E800815095FD06C095ED9A95F1F70000A4 +:102290008111F5CF8091E80085FF0DC040E050E04E +:1022A00063E070E0CE0101960E945A138091E8002D +:1022B0008E778093E8000F900F900F90DF91CF9171 +:1022C0000895209113032430F1F422E02093E900D3 +:1022D0002FEF3091E800215035FD06C035ED3A95DD +:1022E000F1F700002111F5CF2091E80025FF0BC088 +:1022F00040E050E065E070E00E945A138091E800F1 +:102300008E778093E8000895CF93DF93EC0190914E +:102310001303943009F046C0809115018823D9F049 +:10232000809116018823B9F09093E9008FEF909186 +:10233000E800815095FD06C095E19A95F1F70000FF +:102340008111F5CF8091E80085FF2CC040E050E07E +:1023500060E170E017C081E08093E9008FEF909119 +:10236000E800815095FD06C095ED9A95F1F70000C3 +:102370008111F5CF8091E80085FF14C040E050E066 +:1023800068E070E0CE010E945A138091E8008E77D9 +:102390008093E80080E1FE01ACE7B2E001900D928D +:1023A0008A95E1F7DF91CF91089580911203811111 +:1023B00009C00E94EF140E944C158091E2008460D5 +:1023C0008093E200089510921203089508950895ED +:1023D0000C94932342E061EC81E00E94691442E096 +:1023E00061EC82E00E94691442E061EC83E00E94AB +:1023F000691442E161EC84E00C9469148091150346 +:10240000833009F455C030F4813071F0823009F422 +:102410008EC008958A3009F47AC08B3009F460C008 +:10242000893009F09CC020C080911403813A09F0E2 +:1024300096C08091E800877F8093E8008091180320 +:1024400090911903892B21F460E18CE792E003C09D +:1024500060E080E090E070E00E94A5138091E800C9 +:102460008B778093E800089580911403813209F0FE +:1024700076C08091180390911903009719F0039783 +:1024800009F06DC08091E800877F8093E80080911B +:10249000E80082FD05C0809113038111F8CF5FC071 +:1024A0008091F10080938C028091E8008B7753C07B +:1024B00080911403813A09F052C0809118039091E1 +:1024C0001903892B09F04BC08091E800877F809326 +:1024D000E8008091E80080FFFCCF8091150136C0B4 +:1024E000809114038132D9F58091180390911903DA +:1024F000892BA9F58091E800877F8093E8000E94EE +:102500009E1480911603809315010C94D41C809125 +:102510001403813221F58091E800877F8093E800E1 +:102520000E949E148091170380938D0208958091DC +:102530001403813AA1F48091E800877F8093E8003A +:102540008091E80080FFFCCF80918D028093F100A4 +:102550008091E8008E778093E8000C949E14089593 +:1025600084B7877F84BF88E10FB6F89480936000BA +:10257000109260000FBE90E080E80FB6F894809350 +:102580006100909361000FBE0E9441180E94EF14F9 +:102590000E944C158091E20084608093E200789460 +:1025A0000E94D2170E9443188BE091E00E94ED1721 +:1025B00080911303853069F40E94542380911103A4 +:1025C0008823B1F30E948223882391F30E9444134D +:1025D000EFCF0E944B18ECCF292F33272330310542 +:1025E000C9F064F42130310581F02230310509F061 +:1025F00043C08DE690E024E535E042C0213231054C +:10260000F1F02232310541F137C082E190E021EC56 +:1026100035E036C099278130910541F0823091052F +:1026200041F0892B49F5E0E5F5E005C0E2E2F5E08F +:1026300002C0E8EFF4E0849190E09F0121C0643093 +:10264000D8F4E62FF0E0EE0FFF1FE255FE4F208199 +:10265000318189E090E014C0643070F470E0FB01D7 +:10266000EE0FFF1FEA55FE4F20813181FB01EE5531 +:10267000FE4F808190E004C080E090E020E030E0F8 +:10268000FA0131832083089580E189BD82E189BD0B +:1026900009B400FEFDCF8091D8008F7D8093D800D3 +:1026A0008091E00082608093E0008091E00081FDF5 +:1026B000FCCF0895CF92DF92EF92FF920F931F937A +:1026C000CF93DF93EC018B016A010E94BD1481114D +:1026D00033C0C114D10439F0F60180819181081B07 +:1026E000190BC80FD91FE12CF12C0115110519F197 +:1026F0008091E80085FD16C08091E8008E77809378 +:10270000E800C114D10449F0F60180819181E80EFE +:10271000F91EF182E08285E00FC00E94BD1488237B +:1027200021F30AC089918093F10001501109FFEF54 +:10273000EF1AFF0ADACF80E0DF91CF911F910F915E +:10274000FF90EF90DF90CF90089520911A03309181 +:102750001B032617370748F06115710539F42091DE +:10276000E8002E772093E80001C0B90140E0611530 +:102770007105A9F120911303222309F443C02530E8 +:1027800009F442C02091E80023FD40C02091E800F8 +:1027900022FD32C02091E80020FFE9CF4091F300F4 +:1027A0002091F20030E0342BFC01CF01611571055E +:1027B00059F02830310540F481918093F100615047 +:1027C00071092F5F3F4FF1CF41E02830310509F00B +:1027D00040E02091E8002E772093E800C8CF411117 +:1027E000C9CF0AC080911303882361F0853061F05E +:1027F0008091E80083FD0AC08091E80082FFF2CF5B +:1028000080E0089582E0089583E0089581E00895CE +:1028100020911A0330911B032617370748F06115E2 +:10282000710539F42091E8002E772093E80001C06B +:10283000B901FC0120E06115710591F1809113034C +:10284000882309F440C0853009F43FC08091E80036 +:1028500083FD3DC08091E80082FD2FC08091E8009B +:1028600080FFE9CF2091F3008091F20090E0922B5D +:102870006115710559F08830910540F42491209339 +:10288000F1003196615071090196F2CF21E008976D +:1028900009F020E08091E8008E778093E800CBCFAC +:1028A0002111CCCF0AC080911303882361F08530B9 +:1028B00061F08091E80083FD0AC08091E80082FF0A +:1028C000F2CF80E0089582E0089583E0089581E0EA +:1028D0000895982F973058F59093E900981739F09C +:1028E0007091EC002091ED005091F00003C0242F76 +:1028F000762F50E021FF19C03091EB003E7F3093DE +:10290000EB003091ED003D7F3093ED003091EB0016 +:1029100031603093EB007093EC002093ED00509306 +:10292000F0002091EE0027FF07C09F5FD3CF8F708C +:102930008093E90081E0089580E008958091140378 +:1029400087FF11C08091E80082FD05C080911303CC +:102950008111F8CF11C08091E8008B770BC0809176 +:102960001303882349F08091E80080FFF8CF80911D +:10297000E8008E778093E80008952091E40030917C +:10298000E50095E64091EC00842F817040FF22C065 +:102990008091E80080FD1CC080911303882391F092 +:1029A000853091F08091EB0085FD10C04091E400EE +:1029B0005091E5004217530729F39A01915011F7FE +:1029C00084E0089582E0089583E0089581E0089509 +:1029D00080E008954091E80042FFDECF08950E9414 +:1029E0005D150E946515E0EEF0E0808181608083D6 +:1029F000E8EDF0E080818F77808319BCA7EDB0E02F +:102A00008C918E7F8C9380818F7E808310921203B5 +:102A100008950F931F93CF93DF930E945D150E943B +:102A20006515C8EDD0E088818F77888388818068BC +:102A3000888388818F7D888319BC1092130310923C +:102A40000F03109211031092100300EE10E0F80132 +:102A500080818B7F808388818160888342E060E011 +:102A600080E00E946914E1EEF0E080818E7F808337 +:102A7000E2EEF0E0808181608083808188608083E5 +:102A8000F80180818E7F8083888180618883DF91D7 +:102A9000CF911F910F910895E8EDF0E080818F7E36 +:102AA0008083E7EDF0E080818160808384E082BFF5 +:102AB00081E0809312030C940915E8EDF0E0808129 +:102AC0008E7F80831092E20008951092DA001092B7 +:102AD000E10008951F920F920FB60F9211242F93C9 +:102AE0003F934F935F936F937F938F939F93AF9396 +:102AF000BF93EF93FF938091E10082FF0BC0809121 +:102B0000E20082FF07C08091E1008B7F8093E100AB +:102B10000E94D1178091DA0080FF1FC08091D800F9 +:102B200080FF1BC08091DA008E7F8093DA00809155 +:102B3000D90080FF0DC080E189BD82E189BD09B463 +:102B400000FEFDCF81E0809313030E94D51105C0E4 +:102B500019BC109213030E94E3118091E10080FFE1 +:102B600019C08091E20080FF15C08091E2008E7F45 +:102B70008093E2008091E20080618093E200809186 +:102B8000D80080628093D80019BC85E0809313033D +:102B90000E94E7118091E10084FF30C08091E20043 +:102BA00084FF2CC080E189BD82E189BD09B400FEAB +:102BB000FDCF8091D8008F7D8093D8008091E10077 +:102BC0008F7E8093E1008091E2008F7E8093E2000F +:102BD0008091E20081608093E20080910F0388235E +:102BE00011F084E007C08091E30087FD02C081E01E +:102BF00001C083E0809313030E94E8118091E100FB +:102C000083FF29C08091E20083FF25C08091E1000D +:102C1000877F8093E10082E08093130310920F037B +:102C20008091E1008E7F8093E1008091E2008E7FB1 +:102C30008093E2008091E20080618093E20042E0B4 +:102C400060E080E00E9469148091F00088608093C9 +:102C5000F0000E94E611FF91EF91BF91AF919F911B +:102C60008F917F916F915F914F913F912F910F9035 +:102C70000FBE0F901F9018951F920F920FB60F92D4 +:102C800011242F933F934F935F936F937F938F9371 +:102C90009F93AF93BF93CF93DF93EF93FF93C09135 +:102CA000E900CF708091EC00D82FD17080FDD0E882 +:102CB0001092E9008091F000877F8093F000789473 +:102CC0000E9480161092E9008091F0008860809345 +:102CD000F000CD2BCF70C093E900FF91EF91DF9111 +:102CE000CF91BF91AF919F918F917F916F915F91A4 +:102CF0004F913F912F910F900FBE0F901F901895FD +:102D00001F93CF93DF93CDB7DEB7AA970FB6F89492 +:102D1000DEBF0FBECDBFE4E1F3E088E08E0F9091FF +:102D2000F10091938E13FBCF0E94FE118091E80079 +:102D300083FF1FC18091140390911503492F50E028 +:102D40004A30510508F015C1FA01EA5AFF4F0C94B8 +:102D50008D2D803881F0823809F00BC180911803E5 +:102D60008F708093E9008091EB0085FB882780F9C4 +:102D70001092E90006C08091100390911103911107 +:102D800082609091E800977F9093E8008093F10033 +:102D90001092F100C8C0282F2D7F09F0EAC08823C7 +:102DA00019F0823061F0E5C080911603813009F09E +:102DB000E0C0933009F080E0809311032BC0809134 +:102DC0001603811127C0809118038F7009F4D1C0B8 +:102DD0008093E9002091EB0020FF1CC0933021F488 +:102DE0008091EB00806214C09091EB009061909311 +:102DF000EB0021E030E0A90102C0440F551F8A9585 +:102E0000E2F74093EA001092EA008091EB008860BC +:102E10008093EB001092E9008091E800877F86C0E4 +:102E20008111A7C0109116031F778091E30080786D +:102E3000812B8093E3008091E800877F8093E800F6 +:102E40000E949E148091E80080FFFCCF8091E300F7 +:102E500080688093E300111102C082E001C083E02A +:102E60008093130386C08058823008F082C080911E +:102E70001603909117038C3D53E0950779F583E095 +:102E80008A838AE289834FB7F894DE01139620E0A3 +:102E90003EE051E2E32FF0E050935700E49120FF31 +:102EA00003C0E295EF703F5FEF708E2F90E0EA3045 +:102EB00010F0C79601C0C0968D939D932F5F24316B +:102EC00049F74FBF8091E800877F8093E8006AE26E +:102ED00070E0CE0101960E94A51314C0AE014F5FB1 +:102EE0005F4F609118030E94EC12BC01009709F437 +:102EF00040C09091E800977F9093E80089819A8183 +:102F00000E9408148091E8008B778093E80031C01C +:102F1000803879F58091E800877F8093E800809180 +:102F20000F038093F1008091E8008E778093E80092 +:102F30000E949E141EC081111CC0909116039230F5 +:102F4000C0F48091E800877F8093E80090930F039E +:102F50000E949E1480910F03811106C08091E300AE +:102F600087FD02C081E001C084E0809313030E94CA +:102F7000EA118091E80083FF0AC08091E800877F12 +:102F80008093E8008091EB0080628093EB00AA962A +:102F90000FB6F894DEBF0FBECDBFDF91CF911F916A +:102FA00008950895CF93809113038823A1F0C091D1 +:102FB000E900CF709091EC00892F817090FD80E83E +:102FC000C82B1092E9008091E80083FD0E948016D2 +:102FD000CF70C093E900CF910895909393028093AE +:102FE00092020895E0919202F0919302309721F0BD +:102FF0000190F081E02D099480E00895E091920223 +:10300000F0919302309721F00280F381E02D099432 +:103010000895E0919202F0919302309721F004809C +:10302000F581E02D0994089520919002309191024C +:103030008217930771F09093910280939002E09130 +:103040009202F0919302309721F00680F781E02DF3 +:103050000994089520918E0230918F028217930770 +:1030600071F090938F0280938E02E0919202F09122 +:103070009302309721F00084F185E02D09940895A2 +:1030800008950C9440180E94C7230E94180A0E94B9 +:103090004D240C94FC285F926F927F928F929F92A6 +:1030A000AF92BF92CF92DF92EF92FF920F931F9356 +:1030B000CF93DF9300D000D01F92CDB7DEB70E9430 +:1030C0005D0A9DE9C92E92E0D92E03E010E0AA2402 +:1030D000A394B12C502E802F0E94D80A4C01F601E7 +:1030E000729062906F016826792661147104A1F4D0 +:1030F0000150110978F78FEF89838A831B820E9420 +:10310000D0238160782F9D838C8349815A816B8184 +:103110008D810E94FB1838C08091F20281FD0E94CF +:10312000E10A2BE030E07501022E02C0EE0CFF1C1C +:103130000A94E2F7C70186219721892B09F1298397 +:103140005A828E209F2091E0892809F490E09B8389 +:103150000E94D0238160782F9D838C8349815A817E +:103160006B818D810E94FB18000F111FF801EB5637 +:10317000FD4F80819181E826F926F182E08204C02A +:103180002150310980F6B4CF0E9434261091940268 +:103190000E94F2171817D1F00E94F2178093940240 +:1031A0000F900F900F900F900F90DF91CF911F9184 +:1031B0000F91FF90EF90DF90CF90BF90AF909F90D6 +:1031C0008F907F906F905F900C94020A0F900F90F9 +:1031D0000F900F900F90DF91CF911F910F91FF9063 +:1031E000EF90DF90CF90BF90AF909F908F907F90A7 +:1031F0006F905F900895CF93DF93CDB7DEB72B9795 +:103200000FB6F894DEBF0FBECDBF4F8358876987D6 +:103210007A878B87DE01119686E0FD0111928A95EF +:10322000E9F785E0FE01379601900D928A95E1F766 +:1032300049815A816B817C818D819E810E94721FA0 +:103240002B960FB6F894DEBF0FBECDBFDF91CF91A6 +:103250000895CF93882309F4C2C0C82F823859F447 +:103260000E94F21781FDBBC089E30E944C220E949C +:10327000192389E30CC0833879F40E94F21780FD8A +:10328000AEC083E50E944C220E94192383E50E9470 +:103290008E22CF910C941923843859F40E94F2178E +:1032A00082FD9DC087E40E944C220E94192387E47E +:1032B000EECF8CEF8C0F813A48F48C2F0E9464285B +:1032C00081118DC08C2F0E944C22E3CF80E28C0FA5 +:1032D000883048F4C77081E001C0880FCA95EAF7CA +:1032E0000E94D222D6CF8BE58C0F833078F4C53A7A +:1032F00029F0C63A31F083E890E005C081E890E01B +:1033000002C082E890E0CF910C94141888E58C0FED +:10331000833108F064C0C83A39F1C93A41F1CA3A78 +:1033200049F1CB3A51F1CC3A59F1CD3A61F1C03B78 +:1033300069F1CE3A71F1CF3A79F1C13B81F1C23BEB +:1033400089F1C33B91F1C43B99F1C53BA1F1C63B67 +:10335000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BC7 +:10336000C9F180E090E038C082EE90E035C089EE8F +:1033700090E032C08AEE90E02FC085EB90E02CC048 +:1033800086EB90E029C087EB90E026C08CEC90E0C3 +:1033900023C08DEC90E020C083E891E01DC08AE856 +:1033A00091E01AC082E991E017C084E991E014C06D +:1033B00081E292E011C083E292E00EC084E292E0EA +:1033C0000BC085E292E008C086E292E005C087E289 +:1033D00092E002C08AE292E0CF910C942A18CF9139 +:1033E0000895882309F44BC0823859F40E94F217DB +:1033F00081FF45C089E30E944C220E94192389E382 +:103400000CC0833871F40E94F21780FF38C083E546 +:103410000E944C220E94192383E50E948E220C9464 +:103420001923843859F40E94F21782FF28C087E4D8 +:103430000E944C220E94192387E4EFCF9CEF980F43 +:10344000913A58F390E2980F983050F4877091E0D9 +:1034500001C0990F8A95EAF7892F0E94D822DFCF01 +:103460009BE5980F933020F480E090E00C941418C2 +:10347000885A833120F480E090E00C942A18089553 +:10348000882321F00E94D2220C94192308958823C6 +:1034900021F00E94D8220C94192308957F928F92D4 +:1034A0009F92AF92BF92CF92DF92EF92FF920F93D3 +:1034B0001F93CF93DF931F92CDB7DEB77C01C62E4B +:1034C000772EFC01058102950F70128111110E9467 +:1034D000EF220E944522882379F0112369F080E2CF +:1034E0008C0D883048F082E00E942E220E944522F6 +:1034F00091E0D82ED92601C0D12CE72DE295EF70AE +:10350000F0E0E05AFF4F0C948D2D872D807F072D22 +:103510000F70882311F00295007F112389F000239A +:1035200009F499C180E28C0D883020F4802F0E942C +:10353000D22203C0802F0E94E2220E9419238BC155 +:103540008C2D0E94F119002309F4C3C180E28C0D77 +:10355000883020F4802F0E94D82203C0802F0E9440 +:10356000E8220E941923B5C1872D807F972D9F7077 +:10357000803211F4892F03C0892F8295807FCC205F +:1035800021F0F1E0CF16A1F01DC0112339F0002386 +:1035900019F1013009F50E9402239BC1002319F0A3 +:1035A000013009F496C189830E940523898110C1E5 +:1035B000112321F0063008F08CC10EC0053008F050 +:1035C00088C106C1112359F0002331F0F70195811C +:1035D00090FF41C19F7095830E94401A7AC10023D9 +:1035E00009F4F6C03EC1872D86958695837090E0DC +:1035F000009719F0019761F06CC1112321F08C2D17 +:10360000972D937002C080E090E00E94141861C171 +:10361000112321F08C2D972D937002C080E090E053 +:103620000E942A1856C18C2D112319F00E943C25A6 +:1036300002C00E94A4250E9429264BC1872D8370B9 +:1036400009F052C0111145C18C2D82958695877065 +:10365000880F880F9C2D9F70892E912CA12CB12C46 +:10366000082E04C0880C991CAA1CBB1C0A94D2F713 +:10367000C4FE14C00FE010E020E030E0B901A80162 +:1036800004C0440F551F661F771F8A95D2F7CB01E0 +:10369000BA01609570958095909503C060E070E0E8 +:1036A000CB01272D26952695237030E02230310559 +:1036B00069F02330310589F0682979298A299B2905 +:1036C0002130310571F00E94BA2003C1682979299F +:1036D0008A299B290E94D620FCC00E94BA20C501DD +:1036E000B4010E949E20F5C0112319F0872D81702E +:1036F00001C08695882309F4ECC08C2D82958695AF +:103700008770880F880F9C2D9F70892E912CA12C7B +:10371000B12C082E04C0880C991CAA1CBB1C0A944E +:10372000D2F7C4FE14C00FE010E020E030E0B90191 +:10373000A80104C0440F551F661F771F8A95D2F752 +:10374000CB01BA01609570958095909503C060E0BB +:1037500070E0CB01272D269526952370422F50E04F +:103760004230510569F04330510589F068297929C3 +:103770008A299B294130510571F00E949421A9C0EA +:10378000682979298A299B290E94B021A2C00E9418 +:103790009421C501B4010E9478219BC08C2D90E03A +:1037A000FC01E05EF109E531F10508F050C0E05997 +:1037B000FF4F0C948D2D0C2D0F70872D8F711123C1 +:1037C00021F00E941121802F07CF0E943221802FEB +:1037D0000E94471A7EC0112341F0053008F079C0DD +:1037E000872D8F710E94572174C0063008F071C078 +:1037F000F7CF112339F0872D8F710E94112169C0F5 +:103800001123C9F3872D8F710E94322162C01123C9 +:1038100029F0872D8F710E94FC205BC00E94F2204E +:1038200058C0112351F0172D1F71812F0E941121B3 +:1038300063E0812F0E9425224CC081E00E942E224D +:10384000023008F446C082E00E942E2242C01123BA +:1038500031F0002381F28C2D0E9429193AC00023F7 +:1038600089F28C2D0E94F11934C0472D4F706C2DB8 +:10387000C7010E945B040E9416202BC0111129C0B1 +:10388000472D4F7050E042305105B9F04CF44115CE +:10389000510581F041305105E1F40E94242919C0FD +:1038A0004330510569F04430510599F48C2D0E9444 +:1038B00076290FC00E940D290CC00E94402909C022 +:1038C0000E94532906C0472D4F706C2DC7010E94DE +:1038D000E306DD20F9F00E94212280FD1BC0F701E4 +:1038E00012820E941B220E941121C7010E94991C72 +:1038F0000E941B220F90DF91CF911F910F91FF909B +:10390000EF90DF90CF90BF90AF909F908F907F907F +:103910000C9432210F90DF91CF911F910F91FF9066 +:10392000EF90DF90CF90BF90AF909F908F907F905F +:1039300008950F931F93CF93DF93EC0188819981B2 +:103940002B813C81232BB9F09F3F11F48F3F99F0DD +:10395000CE010E94E204882371F0688179818A8116 +:103960000E9417228C010E94CC210E949320B80152 +:10397000CE010E944E1ADF91CF911F910F910895B1 +:103980000E94EF220E94FF220E94C4220E9419235B +:103990000E94DA260E94292680E090E00E941418F6 +:1039A00080E090E00C942A180E94DF220C94C01C46 +:1039B0000E940C22292F22952F7030E02C303105E7 +:1039C0004CF42A3031056CF4225031092230310593 +:1039D000A8F407C02C30310569F02F30310551F0C3 +:1039E0000DC0803F69F018F4803E40F409C0843F68 +:1039F00029F406C093FB882780F9089580E0089594 +:103A000081E00895CF93DF9300D000D01F92CDB70F +:103A1000DEB70F900F900F900F900F90DF91CF9126 +:103A20000895CF93DF9300D000D000D0CDB7DEB79C +:103A300026960FB6F894DEBF0FBECDBFDF91CF91B3 +:103A400008951F93CF93DF93C0919D0216E080915C +:103A50009E02C81799F0D0E01C9FF0011D9FF00D49 +:103A60001124E156FD4F408151816281738184812F +:103A700095810E94111D2196C770E9CFDF91CF91EA +:103A80001F9108954091CF025091D0026091D102D0 +:103A90007091D2028091D3029091D4020C94111DA6 +:103AA0008091D40282958F7009F054C08091D10228 +:103AB000882309F44FC080919D02A0919E026091DD +:103AC000CF027091D0024091D2025091D302B6E061 +:103AD0008A1709F43FC090E041155105C1F17F3FBD +:103AE00011F46F3FA1F1B89FF001B99FF00D1124BF +:103AF000E156FD4F218172132AC02081621327C035 +:103B00002281211124C0238134812417350710F428 +:103B100021503109241B350B283C3105C0F420917C +:103B2000D4022F7020612093D40226E0289FF00158 +:103B3000299FF00D1124EC55FD4F80818F7080611D +:103B400080838FEC92E00E94991C0C94211D0196B9 +:103B50008770BECF0895CF92DF92EF92FF920F93BE +:103B60001F93CF93DF93CDB7DEB762970FB6F8946C +:103B7000DEBF0FBECDBF8C0185E0F801DE011D96D2 +:103B800001900D928A95E1F7D8014C9111965C91C4 +:103B9000119712966C9112971396CD90DC90149712 +:103BA0003091CF027091D0028091D2029091D302D5 +:103BB000009709F46BC17F3F19F43F3F09F466C1D8 +:103BC000E090D102EE2009F4C0C02091D402C816C2 +:103BD000D90628F0F601E81BF90BCF0104C0809547 +:103BE00090958C0D9D1DFF24F394883C910578F0F1 +:103BF000F12C207F09F0C6C07C2DD98AC88A89891A +:103C00000E94021D8FEC92E00E94991CB1C0822F8D +:103C1000807F09F046C0751314C0341312C06111BF +:103C200010C02F7020612093D4020E94421D8FEC9F +:103C300092E00E94991C8091D402D80115968C9331 +:103C40002EC0CD2819F15F3F11F44F3FF9F0F62E49 +:103C500061111CC080919D0220919E0236E0821766 +:103C600009F45AC090E0389FF001399FF00D1124FB +:103C7000E156FD4F7181571306C07081471303C091 +:103C80007281711103C001968770E9CFF62E662309 +:103C900009F418C18091D40281608093D402F12C80 +:103CA00011C1751308C0341306C0611104C080919E +:103CB000D402D801C3C04D875E878D859E856A8BEF +:103CC0000E94D81C6A898823E1F16623D1F12091F2 +:103CD000D402822F82958F7090E0029774F08091C9 +:103CE000CF029091D00298878F831986DB86CA868F +:103CF0002C87CE0107960E94991C86E0F801AFEC54 +:103D0000B2E001900D928A95E1F70E94501D0E9449 +:103D1000421DFF24F394D6C04D875E878D859E8516 +:103D20000E940C22292F22952F7030E0223031057D +:103D30000CF0BCC09F7009F0B6C0805E883008F4FB +:103D4000C1C0C8010E94991CE4CFC816D90608F466 +:103D500053C0F601E81BF90BCF01883C910508F42C +:103D600050C0F12C7C2DD98AC88A89890E94021DF5 +:103D7000EFECF2E086E0DF011D928A95E9F70E9400 +:103D8000421DA0C0751314C0341312C0611110C0BD +:103D90008091D402F8018583C8010E94991C86E0B5 +:103DA000EFECF2E0DF011D928A95E9F7FE2C8AC064 +:103DB0004D875E878D859E856A8B0E94D81C6A8997 +:103DC000882309F4BECF662309F4BBCF2091D40227 +:103DD000822F82958F7090E002970CF48ECF8091A5 +:103DE000CF029091D0029A8389831B82DD82CC829C +:103DF0002E83CE0101967FCF809590958C0D9D1DD1 +:103E0000ACCFF62E662309F49CCF75132EC0341365 +:103E10002CC02091D40220FD1FC0822F82958F706C +:103E2000D9F0D80115962C9315978F3049F08F5FF4 +:103E3000982F9295907F822F8F70892B15968C9357 +:103E4000C8010E94991C86E0F801AFECB2E0019035 +:103E50000D928A95E1F793CF86E0F801AFECB2E0DE +:103E600001900D928A95E1F72DC04D875E878D8573 +:103E70009E850E94D81C811140CF8091D402816020 +:103E80008093D402C8010E94991C1CC0662309F4C7 +:103E900058CF4D875E878D859E850E94D81C8823CC +:103EA00009F44FCF2ACF811148CF0CC024303105FF +:103EB0000CF047CF9F7009F440CFF8019581907FB7 +:103EC00009F03BCF8F2D62960FB6F894DEBF0FBE80 +:103ED000CDBFDF91CF911F910F91FF90EF90DF90B9 +:103EE000CF9008951F93CF93DF93CDB7DEB72C9774 +:103EF0000FB6F894DEBF0FBECDBF4F8358876987DA +:103F00007A878B879C87CE0107960E94AB1D8823FA +:103F100069F08F8198852A853B85232BF1F19F3F9E +:103F200009F063C08F3F09F060C037C086E0FE0132 +:103F30003796DE01119601900D928A95E1F76F8117 +:103F40007885EA85FB85309741F17F3F11F46F3F1B +:103F500021F120919E0230E0C901019687709927D6 +:103F600040919D0250E08417950709F447C069838A +:103F70007A83FD83EC8396E0929FD001939FB00DEE +:103F80001124A156BD4FFE01319601900D929A95D4 +:103F9000E1F780939E020E94211D16E080919D0210 +:103FA00090919E028917C1F1189FC001112481567A +:103FB0009D4F0E94AB1D882379F1E0919D021E9FC9 +:103FC000F0011124E156FD4F4081518162817381DE +:103FD000848195810E94111D80919D0290E001963F +:103FE0008770992780939D02D9CF4F815885698525 +:103FF0007A858B859C850E94111DCFCF0E94D41C91 +:1040000010929E0210929D02EFECF2E086E0DF013A +:104010001D928A95E9F7C1CF2C960FB6F894DEBFB2 +:104020000FBECDBFDF91CF911F910895EF92FF9208 +:104030000F931F93CF93DF938C01009709F46CC00B +:10404000F12CEE24E394E8012196F8018491843761 +:1040500040F4843008F051C0813081F0823019F191 +:104060005BC0853709F444C0A8F19CE7980F9037EE +:1040700008F052C08F770E94F11941C00E5F1F4FA8 +:10408000FE01C49180E28C0F883048F4C7708E2DF9 +:1040900001C0880FCA95EAF70E94F22214C08C2F43 +:1040A0000E9429192DC00E5F1F4FFE01C49180E2AE +:1040B0008C0F883058F4C7708E2D01C0880FCA95B8 +:1040C000EAF70E94F8220E9419231AC08C2F0E943E +:1040D000F11916C00E5F1F4FFE01C491CC2381F071 +:1040E0008FE99FE00197F1F700C00000C150F6CFC3 +:1040F0000E5F1F4FFE01F49003C00E9429198E012C +:104100008F2D882309F49FCFEFE9FFE03197F1F776 +:1041100000C000008150F5CFDF91CF911F910F912A +:10412000FF90EF90089508956093D9027093DA029A +:104130008093DB029093DC020C94C01C0F931F93BE +:104140000091D9021091DA022091DB023091DC0259 +:10415000DC01CB01802B912BA22BB32B8093D902B6 +:104160009093DA02A093DB02B093DC021F910F91CF +:104170000C94C01C0F931F930091D9021091DA0286 +:104180002091DB023091DC02DC01CB018023912302 +:10419000A223B3238093D9029093DA02A093DB0287 +:1041A000B093DC021F910F910C94C01C0F931F93CE +:1041B0000091D9021091DA022091DB023091DC02E9 +:1041C000DC01CB0180279127A227B3278093D90256 +:1041D0009093DA02A093DB02B093DC021F910F915F +:1041E0000C94C01C1092D5021092D6021092D702E5 +:1041F0001092D8020C94C01C41E050E060E070E0E6 +:1042000004C0440F551F661F771F8A95D2F740934D +:10421000D5025093D6026093D7027093D8020C94C3 +:10422000C01C41E050E060E070E004C0440F551F46 +:10423000661F771F8A95D2F78091D5029091D6029A +:10424000A091D702B091D802482B592B6A2B7B2B17 +:104250004093D5025093D6026093D7027093D80250 +:104260000C94C01C41E050E060E070E004C0440FDA +:10427000551F661F771F8A95D2F740955095609518 +:1042800070958091D5029091D602A091D702B091FD +:10429000D802482359236A237B234093D5025093A5 +:1042A000D6026093D7027093D8020C94C01C41E0F0 +:1042B00050E060E070E004C0440F551F661F771F98 +:1042C0008A95D2F78091D5029091D602A091D7021B +:1042D000B091D802482759276A277B274093D502F7 +:1042E0005093D6026093D7027093D8020C94C01CEE +:1042F0000F931F930091D5021091D6022091D702FF +:104300003091D802DC01CB01802B912BA22BB32B57 +:104310008093D5029093D602A093D702B093D8028F +:104320001F910F910C94C01C0F931F930091D50205 +:104330001091D6022091D7023091D802DC01CB0136 +:1043400080239123A223B3238093D5029093D60296 +:10435000A093D702B093D8021F910F910C94C01C68 +:104360000F931F930091D5021091D6022091D7028E +:104370003091D802DC01CB0180279127A227B327F7 +:104380008093D5029093D602A093D702B093D8021F +:104390001F910F910C94C01C0895CF92DF92EF9261 +:1043A000FF920F931F93CF93DF938C01C090D9029C +:1043B000D090DA02E090DB02F090DC028091D5022E +:1043C0009091D602A091D702B091D802C82AD92ADA +:1043D000EA2AFB2ACFE1D0E0D701C6010C2E04C0A7 +:1043E000B695A795979587950A94D2F780FF06C052 +:1043F000B8018C2F0E946809019721F4219760F77A +:1044000080E001C08C2FDF91CF911F910F91FF9021 +:10441000EF90DF90CF900895CF93DF93EC010E944F +:10442000CD21BE010E946809DF91CF910895CB0193 +:104430000E940C2208958091DD02859585958595D1 +:1044400008958091DD028770089598E0899F90011A +:104450001124262B2093DD020C9411212091DD02E2 +:10446000809582238093DD02982F977069F430E065 +:10447000482F552747FD50952417350729F0859576 +:10448000859585950C94322108959091DD02977061 +:1044900081E009F480E0089590911501992321F0BD +:1044A00090911601911109C02091170130911801C6 +:1044B000F90132969FEF40E01FC0982F9695969590 +:1044C00096959F3050F5E0911701F0911801E90F92 +:1044D000F11D877021E030E0A90102C0440F551F93 +:1044E0008A95E2F7CA019181892B818308959F3FC4 +:1044F00039F04F5F4E3041F051915813F8CF0DC055 +:104500005111F7CF942FF5CF9F3F39F0F901E90F03 +:10451000F11D97FDFA9582830895089590911501F4 +:10452000992321F090911601911109C02091170152 +:1045300030911801F9013296205F3F4F1FC0982F2C +:104540009695969596959F30F0F4E0911701F0912D +:104550001801E90FF11D877021E030E0A90102C0C8 +:10456000440F551F8A95E2F7CA01809591818923EE +:10457000818308953196E217F30729F0908198130B +:10458000F9CF1082F7CF089581E090E0E091170114 +:10459000F0911801E80FF91F108201968031910502 +:1045A000A9F708959091F102892B8093F102089563 +:1045B00080959091F10289238093F10208951092E1 +:1045C000F10208959091F002892B8093F0020895F2 +:1045D00080959091F00289238093F00208951092C3 +:1045E000F00208959091EF02892B8093EF020895D5 +:1045F00080959091EF0289238093EF0208951092A5 +:10460000EF0208958093DE0208951092DE0208956D +:104610008091170190911801FC0131969C01205F57 +:104620003F4F80E0919191118F5FE217F307D1F72F +:104630000895E0911701F09118018091F1028083B3 +:10464000E0911701F091180190818091F002892B7F +:104650008083E0911701F091180190818091EF0221 +:10466000892B80838091DE02882361F0E09117011D +:10467000F09118019081892B80830E940823811179 +:104680001092DE0280911701909118010C94FE1790 +:1046900020E0009739F0AC01415051098423952363 +:1046A0002F5FF7CF822F089580911303843039F163 +:1046B0001092F30220E488E190E00FB6F894A895F8 +:1046C000809360000FBE2093600080E00E94C203D0 +:1046D00080E00E94020A83B7817F846083BF83B732 +:1046E000816083BF7894889583B78E7F83BF88E18C +:1046F0000FB6F89480936000109260000FBE08958A +:104700000895089580E00E94C2030E9480230E94C1 +:104710005D0A0E9481230E94E20A91E0811101C09A +:1047200090E0892F08950E94D41C80E00E94C2036B +:104730000E94FC280E94F2170C94020A1F920F920A +:104740000FB60F9211248F939F93AF93BF938091D5 +:10475000F302811113C08091F4029091F502A091AF +:10476000F602B091F7024196A11DB11D8093F402AB +:104770009093F502A093F602B093F702BF91AF9128 +:104780009F918F910F900FBE0F901F90189582E010 +:1047900084BD93E095BD9AEF97BD80936E00089518 +:1047A0002FB7F8948091F4029091F502A091F6024F +:1047B000B091F7022FBF0895CF92DF92EF92FF9250 +:1047C0000F931F932FB7F8944091F4025091F50284 +:1047D0006091F6027091F7022FBF6A017B01EE240F +:1047E000FF248C0120E030E0C016D106E206F3067B +:1047F00010F4415051099A01281B390BC9011F912E +:104800000F91FF90EF90DF90CF9008951F920F923D +:104810000FB60F9211248F939F93AF93BF93809104 +:10482000F4029091F502A091F602B091F702019680 +:10483000A11DB11D8093F4029093F502A093F6029E +:10484000B093F702BF91AF919F918F910F900FBEE0 +:104850000F901F9018950E94EF14F8942FEF87EA9D +:1048600091E6215080409040E1F700C0000087E0D1 +:1048700090EBDC0180931E0390931F03A093200311 +:10488000B09321039CE088E10FB6F894A89580933B +:1048900060000FBE90936000FFCF0E948C248111B6 +:1048A00002C00E9468240E9497248093F2020E9412 +:1048B0009F2480931C0387FB882780F9809316012F +:1048C0000E949B24682F70E080E090E00C9494207C +:1048D0006DEE7EEF80E090E00E94B32D60E082E01C +:1048E00090E00E94A12D60E083E090E00E94A12D65 +:1048F00060E084E090E00E94A12D60E085E090E01F +:104900000E94A12D60E086E090E00E94A12D6FEF53 +:1049100087E090E00C94A12D80E090E00E949B2D18 +:1049200021E08D3E9E4F09F020E0822F089582E025 +:1049300090E00C94932D83E090E00C94932D84E010 +:1049400090E00C94932D682F84E090E00C94A12DBE +:1049500086E090E00C94932D682F86E090E00C9414 +:10496000A12D87E090E00C94932D682F87E090E0D4 +:104970000C94A12D8091FA0280FF0BC060911C0164 +:1049800085E0689FB00111247595679575956795C9 +:104990002BC081FF09C060911C0185E0689FB001B8 +:1049A00011247595679520C082FF07C060911C0196 +:1049B00085E0689FB001112417C09091FB029923F4 +:1049C000D1F060911B01961788F720911C0185E0BA +:1049D000289F90011124929FA001939F500D1124B4 +:1049E00070E0CA010E94792D6038710540F46115AC +:1049F000710539F002C065E070E0862F08958FE7F9 +:104A0000089581E008958091FA0280FF08C06091C6 +:104A10001A0170E0759567957595679521C081FFBE +:104A200006C060911A0170E07595679519C082FF04 +:104A300004C060911A0170E010C09091FB029923AC +:104A4000C1F0609119019617A0F780911A01899F12 +:104A5000C001112470E00E94792D6038710528F49E +:104A60006115710521F0862F08958FE7089581E083 +:104A7000089561E070E0F4CF803F21F40E94BA24F1 +:104A8000819504C0813F29F40E94BA248093FE02DC +:104A90000895823F21F40E94BA24819504C0833F87 +:104AA00029F40E94BA248093FD020895893F19F4E5 +:104AB0000E94032505C08A3F31F40E940325819599 +:104AC0008093FF0208958B3F21F40E940325819576 +:104AD00004C08C3F29F40E940325809300030895AD +:104AE000843F21F48091FC02816017C0853F21F44E +:104AF0008091FC02826011C0863F21F48091FC020B +:104B000084600BC0873F21F48091FC02886005C05F +:104B1000883F31F48091FC0280618093FC0208950B +:104B20008D3F21F48091FA0281600BC08E3F21F409 +:104B30008091FA02826005C08F3F29F48091FA02C9 +:104B400084608093FA020895803F39F48091FE02D8 +:104B500087FF6CC01092FE0269C0813F29F48091EA +:104B6000FE021816BCF362C09091FD02823F29F448 +:104B700097FF5CC01092FD0259C0833F19F41916CB +:104B8000CCF354C0893F41F48091FF0218160CF019 +:104B90004DC01092FF024AC08A3F29F48091FF0263 +:104BA00087FF44C0F6CF8B3F39F48091000387FF25 +:104BB0003DC0109200033AC08C3F29F4809100035D +:104BC0001816BCF333C0843F21F48091FC028E7F21 +:104BD00017C0853F21F48091FC028D7F11C0863F74 +:104BE00021F48091FC028B7F0BC0873F21F48091E0 +:104BF000FC02877F05C0883F31F48091FC028F7EE4 +:104C00008093FC0213C08D3F21F48091FA028E7FC5 +:104C10000BC08E3F21F48091FA028D7F05C08F3F3B +:104C200029F48091FA028B7F8093FA028091FD0231 +:104C300081110EC08091FE0281110AC08091FF0295 +:104C4000811106C080910003811102C01092FB0205 +:104C500008958CEF92E00E9409180E94D02390934F +:104C6000F9028093F80208951F93CF93DF93809108 +:104C7000F8029091F9020E94DC23AC019091FB02B2 +:104C8000992321F020911D0130E006C020911E01E2 +:104C90008AE0289F900111244217530708F486C028 +:104CA0008091FD02C091FE02D091FF02109100039D +:104CB000811107C0C11176C0D11174C0111172C029 +:104CC00075C09F3F19F09F5F9093FB02181624F464 +:104CD0000E94BA248093FD028091FD0287FF05C0E7 +:104CE0000E94BA2481958093FD021C1624F40E9430 +:104CF000BA248093FE028091FE0287FF05C00E94C5 +:104D0000BA2481958093FE026091FD02662339F1F9 +:104D1000C091FE02CC2319F1772767FD7095872F8C +:104D2000972F0E949B2A23E333E343E35FE30E9430 +:104D3000AB2B0E94682A6093FD026C2F772767FDDA +:104D40007095872F972F0E949B2A23E333E343E339 +:104D50005FE30E94AB2B0E94682A6093FE021D163F +:104D600024F40E9403258093FF028091FF0287FFB5 +:104D700005C00E94032581958093FF02111624F43B +:104D80000E940325809300038091000387FF05C0E4 +:104D90000E940325819580930003DF91CF911F919D +:104DA0000C9429269F3F09F08ECF96CFDF91CF91AB +:104DB0001F910895ECEFF2E085E0DF011D928A95E6 +:104DC000E9F71092FB021092FA020895833081F104 +:104DD00028F4813059F08230D1F00895853009F4FB +:104DE00049C0B8F1863009F456C0089580911E017B +:104DF000262F30E0280F311D2F3F310524F4680F96 +:104E000060931E0108958FEF80931E010895809195 +:104E10001D01262F30E0280F311D2F3F310524F4CE +:104E2000680F60931D0108958FEF80931D01089511 +:104E300080911C01262F30E0280F311D2F3F3105B6 +:104E400024F4680F60931C0108958FEF80931C0178 +:104E5000089580911B01262F30E0280F311D2F3F30 +:104E6000310524F4680F60931B0108958FEF809340 +:104E70001B01089580911A01262F30E0280F311D63 +:104E80002F3F310524F4680F60931A0108958FEFC6 +:104E900080931A01089580911901262F30E0280F80 +:104EA000311D2F3F310524F4680F609319010895D7 +:104EB0008FEF809319010895833011F128F4813028 +:104EC00049F0823091F00895853081F120F18630EB +:104ED000C1F1089580911E01681720F4861B80930C +:104EE0001E01089510921E01089580911D016817FA +:104EF00020F4861B80931D01089510921D010895D2 +:104F000080911C01681720F4861B80931C01089572 +:104F100010921C01089580911B01681720F4861BD4 +:104F200080931B01089510921B01089580911A012E +:104F3000681720F4861B80931A01089510921A01B5 +:104F4000089580911901681720F4861B8093190138 +:104F500008951092190108950F931F93873208F056 +:104F600048C08E3108F08DC0803109F477C008F553 +:104F7000873009F461C068F4863009F09DC08091E3 +:104F8000F202817F8E7F8093F20281E080930203A0 +:104F900094C08B3009F489C08E3009F08DC08091A7 +:104FA000F20282FB222720F991E0922790FB82F9FE +:104FB0005EC0863109F479C060F4813109F07CC0AB +:104FC0000E94D41C9091160181E0892780931601DC +:104FD0006CC0893109F469C08B3109F06DC08091D2 +:104FE000F20281FB222720F991E0922790FB81F9C0 +:104FF0003EC0883309F459C050F4893209F457C0CF +:10500000853309F454C0873209F451C055C0833444 +:1050100009F44DC028F48A3308F44EC0895332C0D5 +:10502000883409F049C00E94D41C0E94120B0E94CF +:10503000D9040E942B2439C09091F202892F8095C7 +:10504000817080FB90F929F0966098609093F2024D +:1050500034C0997F977F9093F20227C08091F2022B +:1050600083FB222720F991E0922790FB83F980931C +:10507000F2029923D1F08091F20281608093F202D2 +:1050800014C08D5141E050E060E070E08A019B0166 +:1050900004C0000F111F221F331F8A95D2F7C901C8 +:1050A000B8010E9494200E94D41C81E006C061E0F7 +:1050B00070E080E090E0F5CF80E01F910F910895BF +:1050C00080E0089580E00895CF93C82F8091020377 +:1050D000813069F018F08230C9F184C0E091170185 +:1050E000F09118018081823209F07EC007C0E09102 +:1050F0001701F09118018081823261F48C2F0E9497 +:105100006028811104C08C2F0E94AC271DC081E053 +:1051100090E01AC08C2F0E946228811114C0C43103 +:1051200079F048F4CB3079F0C03109F061C082E009 +:105130008093020308C0C93219F0C83321F058C067 +:105140001092020355C081E0817054C0C93291F1C0 +:1051500020F5C43179F1B0F4C73009F047C08EE1D1 +:1051600080931E0182E380931D018AE080931C01DD +:1051700084E180931B0188E080931A0188E2809388 +:10518000190134C0CE51C63088F5EC2FF0E0EA5456 +:10519000FE4F80818093010329C0CE34E9F020F4D2 +:1051A000CB3421F56AE013C0C13579F0C235F1F492 +:1051B00061E00DC080910103882319F01092010372 +:1051C00015C081E08093020315C061E006C08091A4 +:1051D00001030E94E6260AC06AE0809101030E9452 +:1051E0005C2704C01092020380E004C081E002C08A +:1051F00080E0AACFCF9108950E948C24811102C033 +:105200000E9468240E94A82480931D0380FF02C08E +:10521000869501C080E00C94C20380911D03982FF5 +:105220009695292F30E0233031054CF49F5F990F7C +:105230008170892B816080931D030E94AC24809132 +:105240001D0386950C94C20380911D03982F96959B +:1052500091F09158990F8170892B80931D038E7F57 +:1052600091E009F490E080911D0390FB80F9809318 +:105270001D030E94AC2480911D0386950C94C203EB +:1052800080911D03982F909590FB80F980931D03CA +:105290000E94AC2480911D0380FF02C0869501C04E +:1052A00080E00C94C20390911D03892F86958F5F37 +:1052B0008F779170843028F4880F892B80931D0399 +:1052C00002C090931D0380911D038E7F91E009F42D +:1052D00090E080911D0390FB80F980931D030E9454 +:1052E000AC2480911D0386950C94C20320911D036C +:1052F000922F96958927982F990F822F8170892B4D +:1053000080931D038E7F91E009F490E080911D034E +:1053100090FB80F980931D030E94AC2480911D03B3 +:1053200086950C94C20380911D038695089550586C +:10533000BB27AA270ED0D1C1C2D130F0C7D120F0EF +:1053400031F49F3F11F41EF4B7C10EF4E095E7FB72 +:105350009FC1E92FD3D180F3BA176207730784077F +:10536000950718F071F49EF5EBC10EF4E0950B2E45 +:10537000BA2FA02D0B01B90190010C01CA01A001A7 +:105380001124FF27591B99F0593F50F4503E68F102 +:105390001A16F040A22F232F342F4427585FF3CF43 +:1053A000469537952795A795F0405395C9F77EF414 +:1053B0001F16BA0B620B730B840BBAF09150A1F05D +:1053C000FF0FBB1F661F771F881FC2F70EC0BA0FE3 +:1053D000621F731F841F48F4879577956795B7956B +:1053E000F7959E3F08F0B3CF9395880F08F0992763 +:1053F000EE0F97958795089527D108F481E00895D9 +:105400000CD06BC163D140F05AD130F021F45F3F32 +:1054100019F03EC1511195C14FC170D198F3992334 +:10542000C9F35523B1F3951B550BBB27AA27621768 +:105430007307840738F09F5F5F4F220F331F441FAD +:10544000AA1FA9F333D00E2E3AF0E0E830D09150E5 +:105450005040E695001CCAF729D0FE2F27D0660FD2 +:10546000771F881FBB1F261737074807AB07B0E811 +:1054700009F0BB0B802DBF01FF2793585F4F2AF027 +:105480009E3F510568F004C15CC15F3FECF3983E5C +:10549000DCF3869577956795B795F7959F5FC9F784 +:1054A000880F911D9695879597F90895E1E0660F0D +:1054B000771F881FBB1F621773078407BA0720F086 +:1054C000621B730B840BBA0BEE1F88F7E0950895EF +:1054D00004D06894B11135C1089518D188F09F5750 +:1054E00090F0B92F9927B751A0F0D1F0660F771F30 +:1054F000881F991F1AF0BA95C9F712C0B13081F010 +:105500001FD1B1E008951CC1672F782F8827B85F9D +:1055100039F0B93FCCF3869577956795B395D9F770 +:105520003EF490958095709561957F4F8F4F9F4F7A +:105530000895E89409C097FB3EF490958095709586 +:1055400061957F4F8F4F9F4F9923A9F0F92F96E9CF +:10555000BB279395F695879577956795B795F11144 +:10556000F8CFFAF4BB0F11F460FF1BC06F5F7F4FE1 +:105570008F4F9F4F16C0882311F096E911C07723F3 +:1055800021F09EE8872F762F05C0662371F096E8FC +:10559000862F70E060E02AF09A95660F771F881FCB +:1055A000DAF7880F9695879597F9089588D018F0BF +:1055B00011F08CD038F480C0C4C0E92F9FD0B0F374 +:1055C0005523C9F3E7FB6217730784079507A8F112 +:1055D00099F3E92FFF2788232AF03197660F771F69 +:1055E000881FDAF7952F5527442332F09150504009 +:1055F000220F331F441FD2F7BB27E91BF50B621B99 +:10560000730B840BB109C1F222F4620F731F841F64 +:10561000B11D31972AF0660F771F881FBB1FEFCF90 +:10562000915050405AF041F0882332F0660F771FB6 +:10563000881F91505040C1F7939530C0869577955B +:1056400067959F5FD9F7F8CF990F0008550FAA0B00 +:10565000E0E8FEEF16161706E807F907C0F0121685 +:105660001306E407F50798F0621B730B840B950B88 +:1056700039F40A2661F0232B242B252B21F40895DD +:105680000A2609F4A140A6958FEF811D811D08957A +:1056900097F99F6780E870E060E008959F3F31F0E0 +:1056A000915020F4879577956795B795880F911D50 +:1056B0009695879597F908959FEF80EC08950024BB +:1056C0000A941616170618060906089500240A9467 +:1056D00012161306140605060895092E0394000CED +:1056E00011F4882352F0BB0F40F4BF2B11F460FF7C +:1056F00004C06F5F7F4F8F4F9F4F089557FD9058A5 +:10570000440F551F59F05F3F71F04795880F97FB85 +:10571000991F61F09F3F79F087950895121613063F +:105720001406551FF2CF4695F1DF08C0161617066E +:105730001806991FF1CF86957105610508940895A3 +:10574000E894BB2766277727CB0197F908957CDF7C +:1057500008F48FEF08950BD0C0CFB1DF28F0B6DF8B +:1057600018F0952309F094CFA7CF1124EACFC6DF14 +:10577000A0F3959FD1F3950F50E0551F629FF00164 +:10578000729FBB27F00DB11D639FAA27F00DB11DBD +:10579000AA1F649F6627B00DA11D661F829F222746 +:1057A000B00DA11D621F739FB00DA11D621F839FCD +:1057B000A00D611D221F749F3327A00D611D231FA3 +:1057C000849F600D211D822F762F6A2F11249F57F1 +:1057D00050408AF0E1F088234AF0EE0FFF1FBB1F14 +:1057E000661F771F881F91505040A9F79E3F5105B3 +:1057F00070F04ECFA6CF5F3FECF3983EDCF386957A +:1058000077956795B795F795E7959F5FC1F7FE2B5D +:10581000880F911D9695879597F90895FA01EE0FD7 +:10582000FF1F30962105310599F16115710561F46D +:105830008038BFE39B0749F168949038810561F097 +:105840008038BFEF9B0741F0992342F5FF3FE10508 +:105850003105210511F1E8940894E795D901AA23AF +:1058600029F4AB2FBE2FF85FD0F310C0FF5F70F4A8 +:10587000A695E0F7F73950F019F0FF3A38F49F7722 +:105880009F930CD00F9007FC905808953EF014CFD2 +:1058900060E070E080E89FE308954FE79F775F93B3 +:1058A0004F933F932F939ED02F913F914F915F91B4 +:1058B00052DF05C019F40EF0EBCE42CFFDCE26DF4D +:1058C000C8F39638C0F707F80F92E8942BE33AEA4A +:1058D00048EB5FE74EDF0F920F920F924DB75EB726 +:1058E0000F92C0D0EAE0F1E016D04F915F91EF91B6 +:1058F000FF91E595EE1FFF1F49F0FE57E068442732 +:10590000EE0F441FFA95E1F74195550B32D00F90F9 +:1059100007FE26C00895DF93CF931F930F93FF9246 +:10592000EF92DF927B018C01689405C0DA2EEF01C3 +:105930001EDFFE01E894A591259135914591559181 +:10594000AEF3EF0106DDFE019701A801DA9479F7C5 +:10595000DF90EF90FF900F911F91CF91DF9108950D +:105960009B01AC0160E070E080E89FE349CD90CE00 +:1059700095CECCDEE8F39923D9F3940F511DBBF3F8 +:105980009150504094F059F0882332F0660F771F01 +:10599000881F91505040C1F79E3F510544F7880F32 +:1059A000911D9695879597F908955F3FACF0983EC5 +:1059B0009CF0BB27869577956795B79508F4B160FD +:1059C0009395C1F7BB0F58F711F460FFE8CF6F5FF5 +:1059D0007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE94 +:1059E000689456CE93DEC8F39923D1F3C6F3DF93C0 +:1059F000CF931F930F93FF92C92FDD2788232AF09F +:105A00002197660F771F881FDAF720E030E040E823 +:105A10005FEB9FE3883920F0803E30F021968F774E +:105A200087DCE2E3F1E003C083DCEFE5F1E073DF64 +:105A30008B01BE01EC01FB2E6F5771097595771F25 +:105A4000880B990B78DD28E132E741E35FE38FDED5 +:105A5000AF2D9801AE01FF900F911F91CF91DF9173 +:105A600078DC3BCEFA01DC01AA0FBB1F9B01AC0125 +:105A7000BF5728F422273327442750781FC0B75137 +:105A800088F4AB2F0024469537952795011CA395E4 +:105A9000D2F3002069F0220F331F441FB395DAF3CD +:105AA0000DD045CC61307105A0E88A07B94630F4C5 +:105AB0009B01AC016627772788279078309621F0E4 +:105AC00020833183428353830895AA1BBB1B51E17A +:105AD00007C0AA1FBB1FA617B70710F0A61BB70B5E +:105AE000881F991F5A95A9F780959095BC01CD0103 +:105AF000089597FB072E16F4009407D077FD09D080 +:105B00000E94652D07FC05D03EF4909581959F4F2E +:105B10000895709561957F4F0895EE0FFF1F0590D2 +:105B2000F491E02D0994F999FECF92BD81BDF89AC8 +:105B3000992780B50895A8E1B0E042E050E00C94C8 +:105B4000BB2D262FF999FECF92BD81BDF89A019702 +:105B500000B4021639F01FBA20BD0FB6F894FA9AB5 +:105B6000F99A0FBE08950196272F0E94A22D0C943A +:105B7000A12DDC01CB01FC01F999FECF06C0F2BDDD +:105B8000E1BDF89A319600B40D9241505040B8F7FB +:065B90000895F894FFCF18 +:105B9600640007000CFF0000003F64F610841161EA +:105BA600112D11F9100101DF022808140A321E0016 +:105BB60002040507090B0C0E1011131517181A1CF1 +:105BC6001D1F2123242628292B2D2F30323435372B +:105BD600393B1F0F03764F5F6F7F49694379095938 +:105BE60053633149803F5D8B803FF8BF803FCAE1F8 +:105BF600803F73ED803FCAE1803FF8BF803F5D8BF9 +:105C0600803F3149803F0000803FF16D7F3F75EA5C +:105C16007E3F4C827E3F833F7E3F84287E3F833F8C +:105C26007E3F4C827E3F75EA7E3FF16D7F3F0000EE +:105C3600803F3F4D36398F0642060C06D305660572 +:105C46007F059805B105010203040506070809004A +:00000001FF diff --git a/keyboard/planck/keymaps/kyle/compiled.hex b/keyboard/planck/keymaps/kyle/compiled.hex new file mode 100644 index 0000000000..9226d4c19b --- /dev/null +++ b/keyboard/planck/keymaps/kyle/compiled.hex @@ -0,0 +1,1449 @@ +:100000000C9496020C94DA020C94DA020C94DA0244 +:100010000C94DA020C94DA020C94DA020C94DA02F0 +:100020000C94DA020C94DA020C9478140C944A15AD +:100030000C94AC220C94DA020C94DA020C94DA02DE +:100040000C94DA020C943C030C94DA020C94DA025D +:100050000C94DA020C9414230C94DA020C94DA0255 +:100060000C94DA020C94DA020C94DA020C94DA02A0 +:100070000C94DA020C94DA020C94DA020C94DA0290 +:100080000C94ED0A0C94DA020C94DA020C94DA0265 +:100090000C94DA020C94DA020C94DA020C94DA0270 +:1000A0000C94DA020C94DA020C94DA02B715D91522 +:1000B000C716D915C7161E164116C7169616A916C5 +:1000C00093199319C219C219011A211A771B771BA8 +:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 +:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 +:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 +:10010000F91A071B0E1B151B1F1B07634236B79BF3 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A299 +:1001D000F1A3018C028C290014001A0008001500FC +:1001E00017001C0018000C00120013002A002B003E +:1001F00004001600070009000A000B000D000E00A5 +:100200000F0033003400E1001D001B000600190040 +:100210000500110010003600370038002800E40007 +:10022000E000E200E30002202C002C00012050003E +:10023000510052004F00290014001A000900130059 +:100240000A000D000F0018001C0033002A002B00CC +:10025000040015001600170007000B00110008002D +:100260000C0012003400E1001D001B000600190004 +:1002700005000E0010003600370038002800C300CB +:10028000E000E200E30002202C002C0001205000DE +:10029000510052004F0035001E001F0020002100B9 +:1002A0002200230024002500260027002A00010048 +:1002B0000320042048120100010001002D002E003F +:1002C0002F00300031000100440045006800690043 +:1002D0006A006B006C006D006E006F000100010091 +:1002E0000100010001000100010001000120AB003C +:1002F000AA00A900AE0035021E021F022002210240 +:100300002202230224022502260227022A000100DB +:100310000320042048120712010001002D022E02C2 +:100320002F023002310201003A003B003C003D0048 +:100330003E003F0040004100420043000100835066 +:100340000100010001000220010001000100AB00DA +:10035000AA00A900AE002803540068006500200030 +:1003600050006C0061006E0063006B0020004B00C9 +:100370006500790062006F00610072006400000097 +:100380002C034F007200740068006F006C0069005D +:100390006E0065006100720020004B00650079006E +:1003A00062006F00610072006400730000000403CB +:1003B000090409026D00040100A0FA09040000010B +:1003C00003010100092111010001223F00070581FD +:1003D0000308000A090401000103010200092111B8 +:1003E000010001224D000705820308000A090402EA +:1003F000000103000000092111010001223600075D +:1004000005830308000A0904030001030000000932 +:100410002111010001223900070584031000011297 +:1004200001100100000008EDFE6060010001020003 +:100430000105010906A101050719E029E7150025B5 +:1004400001950875018102050819012905950575B1 +:10045000019102950175039101050719002977158E +:10046000002501957875018102C005010980A1016F +:10047000850216010026B7001A01002AB700751080 +:1004800095018100C0050C0901A101850316010039 +:10049000269C021A01002A9C02751095018100C059 +:1004A00005010902A1010901A10005091901290598 +:1004B00015002501950575018102950175038101DE +:1004C0000501093009311581257F950275088106DE +:1004D00009381581257F950175088106050C0A38B4 +:1004E000021581257F950175088106C0C0050109A7 +:1004F00006A101050719E029E715002501950875F2 +:1005000001810295017508810105081901290595E8 +:1005100005750191029501750391010507190029DF +:10052000FF150025FF950675088100C011241FBE28 +:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A +:100540001E0390911F03A0912003B09121038730D7 +:10055000904BA740B04BB9F410921E0310921F03AA +:10056000109220031092210314BE84B7877F84BFAA +:1005700088E10FB6F89480936000109260000FBE7F +:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 +:1005900002C005900D92A03CB107D9F713E0A0EC82 +:1005A000B1E001C01D92AE31B107E1F70E94BE116A +:1005B0000C94D72C0C9400000895089581E00895C0 +:1005C00008950C94DD020C94DE020C94E0020E946B +:1005D000A12823E030E0281B3109220F2093C40119 +:1005E0000895282F2F9880918000211108C0877FBF +:1005F0008093800010928D0010928C001BC0886048 +:1006000080938000233019F48FEF9FEF0FC083E0B9 +:1006100090E0821B9109880F991F2FEF3FEFA901EE +:1006200002C0569547958A95E2F7CA0190938D00CE +:1006300080938C000C94E7020E94E70284E0809390 +:10064000C3011092C0010895279A2F988FEF9FEF52 +:1006500090938700809386008AE08093800089E1F0 +:10066000809381000E940A280C941C030E9424039A +:100670006E9A769A0C94DC021F920F920FB60F922C +:1006800011242F933F938F939F93EF93FF93E091C8 +:10069000C101F091C201CF0101969093C2018093F4 +:1006A000C1010090C30102C0F695E7950A94E2F7F4 +:1006B000EF738091C001823019F4E03251F404C02C +:1006C000813039F4EF3329F480916F008D7F80936E +:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B +:1006E000C001E39F900D11240090C40102C09695B3 +:1006F00087950A94E2F790938D0080938C00FF9188 +:10070000EF919F918F913F912F910F900FBE0F907E +:100710001F90189581E008950C948A0308950C9415 +:10072000360380911502882309F448C08091D101D5 +:100730009091D201009779F40E94DE229093D20129 +:100740008093D1018091D30190E0009771F4809162 +:10075000D40190E00AC00E94EA2220910001309169 +:1007600001012817390740F329C00197880F991F05 +:10077000880F991FFC01EB52FE4F608171818281CD +:1007800093810E94530AE091D30184E0E89FF00135 +:100790001124EB52FE4F60817181828193814FE081 +:1007A00050E00E940B0E8091D30190E00196609181 +:1007B000D40170E00E94872C8093D3010C94E10255 +:1007C000109217020C94200A0895089581E08093F6 +:1007D00017020C94E503089508958F929F92AF92AB +:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA +:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 +:10080000FC0100811181C8010E94DB20B8010E9417 +:10081000F2058C01B7010E948C03882309F4CCC136 +:100820000032F0E51F0741F4F7018281882309F4C3 +:1008300058C00E946F0EC0C10132F0E51F0741F49D +:10084000F7018281882309F44CC00E94780EB4C15C +:100850000232F0E51F0751F4F7018281882309F481 +:1008600040C00E946B0E8111F0CFE3CF0332F0E560 +:100870001F0739F4F7018281882399F10E94E6036A +:100880009BC10432F0E51F0739F4F7018281882308 +:1008900041F10E94E00390C10532F0E51F0749F4E1 +:1008A000F70182818823E9F0809117028111F1CF4D +:1008B000E5CF0632F0E51F0739F4F701828188237E +:1008C00081F00E947F0E0AC00732F0E51F0749F44D +:1008D000F7018281882329F00E948A0E0E94EC038E +:1008E0006BC180911702811105C0F70182818111CE +:1008F000CFC018C1003E110579F4F7018281882329 +:1009000009F44DC00E94200A81E0809316021092E3 +:1009100015021092D40150C1023E110559F4F7019D +:1009200082818823E1F10E94200A1092160210921F +:10093000150242C1033E110591F4F701828188231B +:1009400071F10E94200A1092160281E08093150234 +:100950001092D3011092D2011092D1012DC1023513 +:10096000110559F4F7018281882309F425C180918A +:100970000001909101010A970DC00135110579F42C +:10098000F7018281882309F417C1809100019091B9 +:1009900001010A9690930101809300010DC14091DD +:1009A000040183E2EFE1F1E0DE01119601900D9286 +:1009B0008A95E1F7F701808121E030E02C0F3D1F9F +:1009C000280F311DC9012091020130910301FC0162 +:1009D000E20FF31F6081772767FD7095640F711D2B +:1009E000882777FD8095982F0E94A92920E030E084 +:1009F00040E451E40E940E294B015C01F701218182 +:100A000084E090E0821B9109BC01882777FD8095E6 +:100A1000982F0E94A9299B01AC01C501B4010E9435 +:100A2000A6289B01AC0160E070E080E090E40E94A9 +:100A30001C2B20E030E04CED50E40E94B92A4B0121 +:100A40005C01F70182818823D1F04FE050E0C501BD +:100A5000B4010E940B0E809116028823A1F08091B0 +:100A6000D40124E0829FF0011124EB52FE4F8082DA +:100A70009182A282B3828F5F8093D40104C0C501AA +:100A8000B4010E94530A0F3F110508F02ECF94C005 +:100A90008091D00181111FC0043130E5130709F0A6 +:100AA00051C00E948E0381E08093D0010E94DE221B +:100AB0009093CF018093CE011092C7011092C9018B +:100AC0001092C8011092CB011092CA011092CD0170 +:100AD0001092CC0171C08091CE019091CF010E9403 +:100AE000EA22883C910570F48091C701E82FF0E07C +:100AF000EE0FFF1FE853FE4F118300838F5F80933B +:100B0000C7015AC0043880E5180721F005381045A0 +:100B100001F13AC0F7018281882341F01092C501AA +:100B200082E01EC0043830E5130759F58091C501F5 +:100B3000811106C086E20E94371886E20E94FF18E3 +:100B400082E01CC00438F0E51F0741F3053810456A +:100B5000D9F4F7018281882331F01092C60180E236 +:100B60000E944E1929C08091C601811106C087E2FA +:100B70000E94371887E20E94FF1880E20E945519F0 +:100B80001BC00538104529F381E08093C50180938F +:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 +:100BA000DF91CF911F910F91FF90EF90BF90AF9089 +:100BB0009F908F900C94E30280E0A3960FB6F89478 +:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 +:100BD000EF90BF90AF909F908F90089580E090E04D +:100BE000089508959CE0799FF001112490E3899F76 +:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B +:100C0000FE4F859194910895880F991FFC01E45B34 +:100C1000FF4F859194910895880F991FFC01E4532B +:100C2000FE4F8591949108950F931F93CF93DF9377 +:100C3000EC01811521E39207A0F5C11580E3D807E7 +:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 +:100C500007C2C83AD10578F4C53AD10508F06AC090 +:100C6000C130D10509F463C008F4F7C1C430D1051F +:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 +:100C8000C11590E2D90708F0AFC0C11521E0D20725 +:100C900008F0E6C1C03FD10508F4DFC18E01106540 +:100CA0001FC2C03880E5D80700F5C03790E5D907E6 +:100CB00008F0A3C0C11520E5D20709F4ACC050F478 +:100CC000CE01905480319F4008F0C7C1DF708E0183 +:100CD000106A06C2C13080E5D80709F4AEC0C4313D +:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 +:100CF00009F48EC050F4C13890E5D90709F482C0D8 +:100D000008F083C000E011EDEBC1C03181E5D807E8 +:100D100008F4A3C1C11597E5D90708F436C1CE017F +:100D200090578115904108F098C1DF7093C101E0A0 +:100D300010E0D6C1C53AD10509F494C1C63AD1052F +:100D400009F093C102E810E4CBC1C83AD10509F417 +:100D50008FC1C93AD10509F48EC1CA3AD10509F447 +:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 +:100D70008BC1CD3AD10509F48AC1C03BD10509F434 +:100D800089C1CE3AD10509F488C1CF3AD10509F419 +:100D900087C1C13BD10509F486C1C23BD10509F425 +:100DA00085C1C33BD10509F484C1C43BD10509F415 +:100DB00083C1C53BD10509F482C1C63BD10509F405 +:100DC00081C1C73BD10509F480C1C83BD10509F4F5 +:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 +:100DE0007DC100E014E47CC1CE019F700E940C061E +:100DF00078C1DD278E01106C73C1CF70DD278E01A5 +:100E0000146D6EC100E010ED6BC100E012ED68C121 +:100E100000E013ED65C10E94E21B0E94200A0E94BF +:100E2000E4038FEF94E32CE0815090402040E1F701 +:100E300000C000000E94392353C18091F2028160FA +:100E40008093F2024DC10E949A23811102C00E9438 +:100E500076230E94AD2390E090931D0380931C03A2 +:100E6000C23080E5D80721F480911C03816086C0E0 +:100E7000C43090E5D90721F480911C0382607EC0C4 +:100E8000C63020E5D20721F480911C03846076C02F +:100E9000C83080E5D80719F480911C0327C0CA30F8 +:100EA00090E5D90721F480911C03806167C0CC30A4 +:100EB00020E5D20721F480911C0380625FC0CE3010 +:100EC00080E5D80721F480911C03806457C0C031AD +:100ED00090E5D90721F480911C0380684FC0C2318E +:100EE00020E5D20729F480911C038460886046C005 +:100EF000C33080E5D80721F480911C038E7F3EC06B +:100F0000C53090E5D90721F480911C038D7F36C050 +:100F1000C73020E5D20721F480911C038B7F2EC0BF +:100F2000C93080E5D80719F480911C0326C0CB3066 +:100F300090E5D90721F480911C038F7E1FC0CD302E +:100F400020E5D20721F480911C038F7D17C0CF309C +:100F500080E5D80721F480911C038F7B0FC0C1313D +:100F600090E5D90721F480911C038F7707C0C33126 +:100F7000D04531F480911C038B7F877F80931C03C5 +:100F800080911C030E94B123ABC08D2F99278F70D5 +:100F9000992781309105D9F49E012370332702C02F +:100FA000880F991F2A95E2F79C688E0144E0000F94 +:100FB000111F4A95E1F700271370802B912B53E006 +:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 +:100FD000910531F4DC2FCC278E01016F106A80C09F +:100FE0008330910569F4CE018370992701E010E008 +:100FF00002C0000F111F8A95E2F7C8019C680FC05C +:1010000084309105B9F4CE018370992701E010E096 +:1010100002C0000F111F8A95E2F7C8019A6823E009 +:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 +:101030001D2B56C08530910531F4DC2FCC278E0155 +:10104000046F106A4DC0069709F04AC0CF71DD27C2 +:10105000DC2FCC278E01106243C000E010E040C0BE +:101060008E013EC001E810E43BC003E810E438C044 +:1010700002EE14E435C009EE14E432C00AEE14E4C2 +:101080002FC005EB14E42CC006EB14E429C007EBD9 +:1010900014E426C00CEC14E423C00DEC14E420C0CE +:1010A00003E815E41DC00AE815E41AC002E915E4D6 +:1010B00017C004E915E414C001E216E411C003E20C +:1010C00016E40EC004E216E40BC005E216E408C004 +:1010D00006E216E405C007E216E402C00AE216E4DE +:1010E000C801DF91CF911F910F9108959CE0799FE6 +:1010F000F001112490E3899FE00DF11D1124E60F0A +:10110000F11DEE0FFF1FEA52FE4F85919491803E34 +:101110009105E0F4803C910558F58133910509F47F +:101120006FC048F48932910509F463C08A32910591 +:1011300009F46DC072C089339105E9F082389105D8 +:10114000D1F08533910509F44DC067C0833E910508 +:1011500081F138F4803E9105B9F0823E9105D9F0D5 +:101160005CC0863E910561F1873E9105A1F155C0B5 +:101170000E940406089520911C0320FD02C021FF57 +:101180004CC080EE90E049C080911C0380FFF9CFF5 +:1011900089E390E042C080911C0382FF0EC08091E1 +:1011A0001C0384FF03C080E090E037C083EE90E032 +:1011B00034C080911C0382FFF2CF82EE90E02DC0FC +:1011C00080911C0383FF0BC080911C0384FDEBCF37 +:1011D00087EE90E022C080911C0383FFF5CF86EE5E +:1011E00090E01BC080911C0385FF07C089E290E05E +:1011F00014C080911C0385FFF9CF85E390E00DC0FA +:1012000080911C0386FF07C08AE290E006C08091AF +:101210001C0386FFF9CF81E390E00E941406089535 +:101220000C94E502E82FF0E0E25BFE4F8081E82FAE +:10123000EF70F0E082958F7021E030E0A90102C0EC +:10124000440F551F8A95E2F740A308950F931F930B +:10125000CF93DF9385B7806885BF85B7806885BFEA +:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 +:10127000E82FEF70F0E021A182958F70A80102C0E5 +:10128000440F551F8A95E2F7CA01822B81A38C2F48 +:101290000E941209219740F78BE090E061E070E036 +:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 +:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F +:1012C0009D01242B22A3019758F7DF91CF911F9105 +:1012D0000F910C948F03EF92FF920F931F93CF9374 +:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA +:1012F0008C2F0E9412098BE090E040E050E0FC014E +:10130000EE5BFE4F6081E62FEF70F0E020A130E051 +:1013100062956F7002C0359527956A95E2F720FDBA +:1013200009C09701082E02C0220F331F0A94E2F76A +:10133000422B532B019718F7F801929182918F015C +:101340008417950721F051834083D09305018C2F9A +:101350000E941209C15060F68091050187FD2CC0E2 +:101360008150809305018F3F39F08FE99FE001970D +:10137000F1F700C0000020C080911E0290911F0272 +:10138000909327028093260280911C0290911D0267 +:10139000909325028093240280911A0290911B025F +:1013A0009093230280932202809118029091190257 +:1013B00090932102809320020E94910381E0DF91AB +:1013C000CF911F910F91FF90EF900895E82FF0E0DB +:1013D000EE0FFF1FE05EFD4F80819181089508951B +:1013E0000F931F93CF9308E212E0C0E0F8019291AF +:1013F00082918F010E945622C80FF2E000321F072F +:10140000A9F78C2FCF911F910F9108950E949A23D5 +:10141000811102C00E9476230E94BF23809307039C +:101420003E9A809171008D7F8093710082E080935D +:1014300090008AE18093910081E080932A020895D0 +:1014400080912A02811102C00E94060A10927A023B +:1014500010927902809171008D7F8093710080914C +:1014600090008F738093900010923C0210923B0288 +:10147000109273021092740210927502109276020A +:101480001092720210927102E1E5F2E0A1E4B2E082 +:1014900011921192119211921D921D9282E0E137E8 +:1014A000F807B1F70895CF92DF92EF92FF920F9372 +:1014B0001F93CF93DF9320913B02222309F484C032 +:1014C0006B017C0180912A02811102C00E94060AF0 +:1014D00001E712E0C7E0D0E0A7019601F801929180 +:1014E0008291729162918F010E940A29811131C00B +:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 +:10150000118212821382DE01AA0FBB1FAF5BBD4F97 +:1015100011961C921E92C730D105E9F021964481A4 +:1015200055816681778140835183628373831482FE +:1015300015821682178212968D919C91139711969F +:101540009C938E9313961C921E9212973496129629 +:10155000E2CF219708F68091790290917A02019763 +:1015600097FD05C090937A028093790204C010928F +:101570007A02109279028091790290917A022091F8 +:101580007702309178022817390724F010927802F8 +:1015900010927702892BC1F4809171008D7F809326 +:1015A0007100809190008F7380939000109273026D +:1015B00010927402109275021092760210927202CA +:1015C0001092710210923B02DF91CF911F910F9107 +:1015D000FF90EF90DF90CF9008951F920F920FB67B +:1015E0000F9211244F925F926F927F928F929F92EF +:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 +:101600004F935F936F937F938F939F93AF93BF930A +:10161000CF93DF93EF93FF9380913B02882309F4EC +:101620009BC1C0917902D0917A021C161D060CF064 +:1016300093C140902B0250902C0260902D0270902C +:101640002E0220E030E0A901C301B2010E94B52AB8 +:1016500018160CF065C0C130D10509F452C0809154 +:10166000770290917802BE010E94872C7C019093B2 +:1016700078028093770280903D0290903E02A09085 +:101680003F02B090400220E030E040E85FE3C50157 +:10169000B4010E94A62860933D0270933E0280939D +:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 +:1016B000EF5AFD4FA3019201608171818281938174 +:1016C0000E940E2920E030E040E05EE30E94B92A4B +:1016D0009B01AC01C501B4010E94B52A18168CF417 +:1016E000C7010196BE010E94872C909378028093D7 +:1016F000770210923D0210923E0210923F02109229 +:101700004002E0917702F0917802EE0FFF1FEE0F9A +:10171000FF1FEF5AFD4F6081718182819381D0C09C +:10172000C0907302D0907402E0907502F09076023F +:1017300020E030E0A901C701B6010E940A292197E3 +:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A +:10175000EF5AFD4F80809180A280B380A501940153 +:10176000C701B6010E940A2987FF31C0A501940173 +:1017700060E070E08CED93EC0E940E2920E030E0F8 +:1017800040E451E40E940E2920E030E040E05FE3B5 +:101790000E94B92A9B01AC0160E070E080E090E417 +:1017A0000E941C2B9B01AC01C501B4010E94B92A07 +:1017B0009B01AC01C701B6010E940A2987FF07C03F +:1017C000A701960160E070E08CED93E439C0A501BB +:1017D0009401C701B6010E94B52A18160CF055C035 +:1017E000A501940160E070E08CED93E40E940E2965 +:1017F00020E030E040E451E40E940E2920E030E097 +:1018000040E05FE30E94B92A9B01AC0160E070E018 +:1018100080E090E40E941C2B9B01AC01C501B40147 +:101820000E94B92A9B01AC01C701B6010E94B52AEA +:1018300018165CF5A701960160E070E08CED93EC62 +:101840000E940E2920E030E040E451E40E940E297D +:1018500020E030E040E05FE30E94B92A9B01AC0148 +:1018600060E070E080E090E40E941C2B9B01AC01E2 +:10187000C701B6010E94B92A609373027093740283 +:10188000809375029093760213C0FE01EE0FFF1F46 +:10189000EE0FFF1FEF5AFD4F80819181A281B3812E +:1018A0008093730290937402A0937502B0937602B2 +:1018B000609173027091740280917502909176022A +:1018C00020912802309129022F3F4FEF340731F049 +:1018D0002F5F3F4F30932902209328020E94950EDC +:1018E0006B017C0120E034E244EF51E40E940A29BC +:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 +:1019000081E4F82E20E030E040E051E4C701B60168 +:101910000E94B92A9B01AC0160E074E284E79BE479 +:101920000E940E296B017C010E947B297093970015 +:1019300060939600209106013091070140910801C3 +:1019400050910901C701B6010E94B92A0E947B2962 +:10195000709399006093980080913C02882309F469 +:1019600033C1C0903702D0903802E0903902F09035 +:101970003A0220E030E0A901C701B6010E94B52A71 +:101980001816D4F580912802909129028F3F2FEFED +:10199000920729F001969093290280932802C701AB +:1019A000B6010E94950E20E030E040E051E40E9434 +:1019B000B92A9B01AC0160E074E284E79BE40E94D9 +:1019C0000E296B017C010E947B2970939700609324 +:1019D0009600209106013091070140910801509135 +:1019E0000901C701B6010E94B92A0E947B297093A0 +:1019F00099006093980008C010929700109296008A +:101A00001092990010929800609131027091320208 +:101A10006F5F7F4F70933202609331022091960086 +:101A20003091970080E090E0232BF1F0C091960078 +:101A3000D09197000E94A7296B017C01BE0180E034 +:101A400090E00E94A7299B01AC0160913302709144 +:101A5000340280913502909136020E940E2920E0D6 +:101A60003FEF4FE757E410C00E94A7296B017C01AC +:101A700020E030EE4FEF54E4609133027091340275 +:101A800080913502909136020E94B92A9B01AC01E7 +:101A9000C701B6010E94B52A87FD96C080912F022A +:101AA0008F5F80932F0290E0209103033091040315 +:101AB00082179307A0F080910E03882319F01092EB +:101AC0002F020DC0809171008D7F809371008091F5 +:101AD00090008F738093900010923C027DC08091A3 +:101AE0003002C0912F02811128C0C0900803D0900D +:101AF0000903E0900A03F0900B0320E030E0A90115 +:101B0000C701B6010E94B52A1816BCF481E0809383 +:101B1000300210923702109238021092390210925D +:101B20003A02C0923302D0923402E0923502F0922F +:101B30003602C150C0932F0243C01092300210925F +:101B4000290210922802E0910503F091060348E073 +:101B5000C49FE00DF11D112480819181A281B38188 +:101B60008093370290933802A0933902B0933A02DF +:101B700020E030E040E85EE36481758186819781F2 +:101B80000E94B92A6B017C0180910A01682F70E0E4 +:101B900080E090E00E94A72920E030E048EC52E489 +:101BA0000E940E299B01AC01C701B6010E94B92A0F +:101BB000609333027093340280933502909336021F +:101BC00010923202109231028091070380FD04C00E +:101BD00010923C0210923B02FF91EF91DF91CF9166 +:101BE000BF91AF919F918F917F916F915F914F9135 +:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB +:101C00009F908F907F906F905F904F900F900FBE3E +:101C10000F901F901895CF92DF92EF92FF92CF9383 +:101C2000DF936B017C01EA0180912A02811102C0DD +:101C30000E94060A8091070380FF46C080917902C6 +:101C400090917A0208970CF03FC0809171008D7FCF +:101C50008093710080913C0281110E94200A81E0F2 +:101C600080933B02109229021092280220E030E07B +:101C7000A901C701B6010E94B52A1816DCF48091AB +:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 +:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 +:101CA000FF1FEF5BFD4FD183C083019690937A02B3 +:101CB000809379028091710082608093710080919D +:101CC0009000806880939000DF91CF91FF90EF901B +:101CD000DF90CF90089580910703817008958091DF +:101CE00007038160809307030E94C3230C94EB03D6 +:101CF000809107038E7F809307030C94C323809108 +:101D00007B0290E0019666E070E00E94872C809351 +:101D10007B02089580917B0290E0019766E070E07D +:101D20000E94872C80937B0208958F929F92AF929E +:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 +:101D4000DF936B017C01C0912802D0912902BE0172 +:101D500080E090E00E94A7294B015C01A701960159 +:101D600060E070E08CE594E40E940E299B01AC01D8 +:101D7000C501B4010E94B92A0E947B2920917B02EF +:101D8000233009F473C028F4222351F02130E9F004 +:101D90002CC1243009F4A0C0253009F4E0C025C1CD +:101DA00080E090E0A0E0BFE38093060190930701FC +:101DB000A0930801B093090110922B0210922C02FB +:101DC00010922D0210922E0210C110922B0210922E +:101DD0002C0210922D0210922E026431710540F4F3 +:101DE0006A30710560F520E030E040E85EE32BC02A +:101DF000693C710508F0AAC080E090E00E94A72924 +:101E000020E030E040EA51E40E94A52820E030E0E4 +:101E100044E353E40E940E299B01AC010E94B92ABD +:101E200020E030E040E05EE30E94B92A9B01AC0173 +:101E300060E070E080E09EE30E94A52844C020E0BE +:101E400030E040E05FE3C701B6010E94B92A6B01B0 +:101E50007C0180E090E0A0E0BEE3809306019093D7 +:101E60000701A0930801B0930901BFC010922B0293 +:101E700010922C0210922D0210922E024AE0469FE0 +:101E80009001479F300D1124C90168EB7BE00E944F +:101E9000732CBC016C5D754077FF03C07195619533 +:101EA0007109882777FD8095982F0E94A9292EE334 +:101EB00033EC4EE259E30E94B92A20E030E040ECD6 +:101EC0005EE30E94A6286093060170930701809349 +:101ED00008019093090189C010922B0210922C02E4 +:101EE00010922D0210922E02CE0183709927892B19 +:101EF000E1F0BE016170772780E090E00E94A729A1 +:101F000020E030E040E05EE30E94B92A20E030E0CB +:101F100040E45FE30E94A6286093060170930701E6 +:101F200080930801909309010CC080E090E0A0E04C +:101F3000BFE38093060190930701A0930801B0933B +:101F40000901C770DD27CD2B09F04FC010920601A3 +:101F500010920701109208011092090146C01092D8 +:101F60002B0210922C0210922D0210922E0200E0F1 +:101F700010E020E03FE30093060110930701209357 +:101F80000801309309016739710578F180E090E02C +:101F90000E94A72920E030E047E153E40E94A528F1 +:101FA00020E030E04AE754E40E940E2920E030E0CF +:101FB00048E452E40E94B92A20E030E040EA51E4CB +:101FC0000E94EB290E947629660F771F660F771F04 +:101FD000FB01EE5AFE4F2081318142815381C701BE +:101FE000B6010E94B92A6B017C01C701B601DF91DD +:101FF000CF911F910F91FF90EF90DF90CF90BF9006 +:10200000AF909F908F90089580918C020895CF9308 +:10201000DF9300D01F92CDB7DEB79C0180911303F0 +:10202000843019F593E099833B832A839093E900E8 +:102030008FEF9091E800815095FD06C095ED9A953F +:10204000F1F700008111F5CF8091E80085FF0DC008 +:1020500040E050E063E070E0CE0101960E9468121B +:102060008091E8008E778093E8000F900F900F909A +:10207000DF91CF910895CF93DF9300D01F92CDB71A +:10208000DEB720911303243021F522E029839B83BE +:102090008A8383E08093E9008FEF9091E80081507C +:1020A00095FD06C095ED9A95F1F700008111F5CFE9 +:1020B0008091E80085FF0DC040E050E063E070E0F3 +:1020C000CE0101960E9468128091E8008E7780937D +:1020D000E8000F900F900F90DF91CF91089520911D +:1020E00013032430F1F422E02093E9002FEF309124 +:1020F000E800215035FD06C035ED3A95F1F70000B6 +:102100002111F5CF2091E80025FF0BC040E050E001 +:1021100065E070E00E9468128091E8008E778093FD +:10212000E8000895CF93DF93EC019091130394306E +:1021300009F046C0809115018823D9F080911601DD +:102140008823B9F09093E9008FEF9091E8008150D7 +:1021500095FD06C095E19A95F1F700008111F5CF44 +:102160008091E80085FF2CC040E050E060E170E025 +:1021700017C081E08093E9008FEF9091E8008150D3 +:1021800095FD06C095ED9A95F1F700008111F5CF08 +:102190008091E80085FF14C040E050E068E070E006 +:1021A000CE010E9468128091E8008E778093E8004B +:1021B00080E1FE01ACE7B2E001900D928A95E1F773 +:1021C000DF91CF91089580911203811109C00E947F +:1021D000FD130E945A148091E20084608093E20013 +:1021E0000895109212030895089508950C94A12261 +:1021F00042E061EC81E00E94771342E061EC82E012 +:102200000E94771342E061EC83E00E94771342E181 +:1022100061EC84E00C94771380911503833009F40A +:1022200055C030F4813071F0823009F48EC00895C9 +:102230008A3009F47AC08B3009F460C0893009F023 +:102240009CC020C080911403813A09F096C080910F +:10225000E800877F8093E80080911803909119032C +:10226000892B21F460E18CE792E003C060E080E01C +:1022700090E070E00E94B3128091E8008B77809329 +:10228000E800089580911403813209F076C08091AE +:10229000180390911903009719F0039709F06DC086 +:1022A0008091E800877F8093E8008091E80082FDBC +:1022B00005C0809113038111F8CF5FC08091F100B8 +:1022C00080938C028091E8008B7753C08091140337 +:1022D000813A09F052C08091180390911903892B1B +:1022E00009F04BC08091E800877F8093E8008091DF +:1022F000E80080FFFCCF8091150136C08091140367 +:102300008132D9F58091180390911903892BA9F591 +:102310008091E800877F8093E8000E94AC13809151 +:102320001603809315010C94E21B809114038132F3 +:1023300021F58091E800877F8093E8000E94AC132C +:102340008091170380938D02089580911403813A40 +:10235000A1F48091E800877F8093E8008091E800F5 +:1023600080FFFCCF80918D028093F1008091E80086 +:102370008E778093E8000C94AC13089584B7877F20 +:1023800084BF88E10FB6F8948093600010926000DB +:102390000FBE90E080E80FB6F894809361009093B0 +:1023A00061000FBE0E944F170E94FD130E945A1435 +:1023B0008091E20084608093E20078940E94E016AD +:1023C0000E9451178BE091E00E94FB16809113034D +:1023D000853069F40E946222809111038823B1F351 +:1023E0000E949022882391F30E945212EFCF0E9404 +:1023F0005917ECCF292F332723303105C9F064F466 +:102400002130310581F02230310509F043C08DE6DD +:1024100090E022EB33E042C021323105F1F022326C +:10242000310541F137C082E190E02FE134E036C060 +:1024300099278130910541F08230910541F0892B37 +:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 +:10245000F3E0849190E09F0121C06430D8F4E62F2E +:10246000F0E0EE0FFF1FE255FE4F2081318189E041 +:1024700090E014C0643070F470E0FB01EE0FFF1FB9 +:10248000EA55FE4F20813181FB01EE55FE4F8081E0 +:1024900090E004C080E090E020E030E0FA01318379 +:1024A0002083089580E189BD82E189BD09B400FEE1 +:1024B000FDCF8091D8008F7D8093D8008091E0007F +:1024C00082608093E0008091E00081FDFCCF089560 +:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 +:1024E000EC018B016A010E94CB13811133C0C1142E +:1024F000D10439F0F60180819181081B190BC80FB6 +:10250000D91FE12CF12C0115110519F18091E8007A +:1025100085FD16C08091E8008E778093E800C11495 +:10252000D10449F0F60180819181E80EF91EF18213 +:10253000E08285E00FC00E94CB13882321F30AC0FC +:1025400089918093F10001501109FFEFEF1AFF0A02 +:10255000DACF80E0DF91CF911F910F91FF90EF9044 +:10256000DF90CF90089520911A0330911B03261716 +:10257000370748F06115710539F42091E8002E778E +:102580002093E80001C0B90140E061157105A9F18F +:1025900020911303222309F443C0253009F442C0DB +:1025A0002091E80023FD40C02091E80022FD32C0C8 +:1025B0002091E80020FFE9CF4091F3002091F20044 +:1025C00030E0342BFC01CF016115710559F0283042 +:1025D000310540F481918093F100615071092F5FC2 +:1025E0003F4FF1CF41E02830310509F040E0209124 +:1025F000E8002E772093E800C8CF4111C9CF0AC068 +:1026000080911303882361F0853061F08091E800A8 +:1026100083FD0AC08091E80082FFF2CF80E0089538 +:1026200082E0089583E0089581E0089520911A03DF +:1026300030911B032617370748F06115710539F4EF +:102640002091E8002E772093E80001C0B901FC0139 +:1026500020E06115710591F180911303882309F43D +:1026600040C0853009F43FC08091E80083FD3DC043 +:102670008091E80082FD2FC08091E80080FFE9CFC3 +:102680002091F3008091F20090E0922B611571058A +:1026900059F08830910540F424912093F10031964F +:1026A000615071090196F2CF21E0089709F020E00E +:1026B0008091E8008E778093E800CBCF2111CCCFBA +:1026C0000AC080911303882361F0853061F0809106 +:1026D000E80083FD0AC08091E80082FFF2CF80E02D +:1026E000089582E0089583E0089581E00895982F89 +:1026F000973058F59093E900981739F07091EC00F5 +:102700002091ED005091F00003C0242F762F50E06F +:1027100021FF19C03091EB003E7F3093EB003091E8 +:10272000ED003D7F3093ED003091EB003160309350 +:10273000EB007093EC002093ED005093F00020919B +:10274000EE0027FF07C09F5FD3CF8F708093E90013 +:1027500081E0089580E008958091140387FF11C0FF +:102760008091E80082FD05C0809113038111F8CFAC +:1027700011C08091E8008B770BC0809113038823F0 +:1027800049F08091E80080FFF8CF8091E8008E77D3 +:102790008093E80008952091E4003091E50095E6EB +:1027A0004091EC00842F817040FF22C08091E800AE +:1027B00080FD1CC080911303882391F0853091F037 +:1027C0008091EB0085FD10C04091E4005091E50040 +:1027D0004217530729F39A01915011F784E00895A5 +:1027E00082E0089583E0089581E0089580E00895EF +:1027F0004091E80042FFDECF08950E946B140E94D2 +:102800007314E0EEF0E0808181608083E8EDF0E019 +:1028100080818F77808319BCA7EDB0E08C918E7F8B +:102820008C9380818F7E80831092120308950F9382 +:102830001F93CF93DF930E946B140E947314C8ED13 +:10284000D0E088818F7788838881806888838881B9 +:102850008F7D888319BC1092130310920F0310927E +:1028600011031092100300EE10E0F80180818B7FBD +:10287000808388818160888342E060E080E00E94FC +:102880007713E1EEF0E080818E7F8083E2EEF0E06E +:10289000808181608083808188608083F80180816D +:1028A0008E7F8083888180618883DF91CF911F91A3 +:1028B0000F910895E8EDF0E080818F7E8083E7ED51 +:1028C000F0E080818160808384E082BF81E080933A +:1028D00012030C941714E8EDF0E080818E7F808362 +:1028E0001092E20008951092DA001092E10008952B +:1028F0001F920F920FB60F9211242F933F934F9375 +:102900005F936F937F938F939F93AF93BF93EF9357 +:10291000FF938091E10082FF0BC08091E20082FF73 +:1029200007C08091E1008B7F8093E1000E94DF1659 +:102930008091DA0080FF1FC08091D80080FF1BC00B +:102940008091DA008E7F8093DA008091D90080FF39 +:102950000DC080E189BD82E189BD09B400FEFDCFD3 +:1029600081E0809313030E94E31005C019BC10920C +:1029700013030E94F1108091E10080FF19C0809143 +:10298000E20080FF15C08091E2008E7F8093E2001C +:102990008091E20080618093E2008091D8008062A3 +:1029A0008093D80019BC85E0809313030E94F51032 +:1029B0008091E10084FF30C08091E20084FF2CC050 +:1029C00080E189BD82E189BD09B400FEFDCF80911F +:1029D000D8008F7D8093D8008091E1008F7E809316 +:1029E000E1008091E2008F7E8093E2008091E2001E +:1029F00081608093E20080910F03882311F084E0CE +:102A000007C08091E30087FD02C081E001C083E040 +:102A1000809313030E94F6108091E10083FF29C088 +:102A20008091E20083FF25C08091E100877F809341 +:102A3000E10082E08093130310920F038091E10084 +:102A40008E7F8093E1008091E2008E7F8093E20090 +:102A50008091E20080618093E20042E060E080E0EB +:102A60000E9477138091F00088608093F0000E94AC +:102A7000F410FF91EF91BF91AF919F918F917F9152 +:102A80006F915F914F913F912F910F900FBE0F90DB +:102A90001F9018951F920F920FB60F9211242F932B +:102AA0003F934F935F936F937F938F939F93AF93D6 +:102AB000BF93CF93DF93EF93FF93C091E900CF7063 +:102AC0008091EC00D82FD17080FDD0E81092E90001 +:102AD0008091F000877F8093F00078940E948E159B +:102AE0001092E9008091F00088608093F000CD2B77 +:102AF000CF70C093E900FF91EF91DF91CF91BF912B +:102B0000AF919F918F917F916F915F914F913F9185 +:102B10002F910F900FBE0F901F9018951F93CF937A +:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E +:102B3000CDBFE4E1F3E088E08E0F9091F100919336 +:102B40008E13FBCF0E940C118091E80083FF1FC100 +:102B50008091140390911503492F50E04A3051059C +:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB +:102B700081F0823809F00BC1809118038F70809327 +:102B8000E9008091EB0085FB882780F91092E9002D +:102B900006C0809110039091110391118260909171 +:102BA000E800977F9093E8008093F1001092F10085 +:102BB000C8C0282F2D7F09F0EAC0882319F0823081 +:102BC00061F0E5C080911603813009F0E0C09330D8 +:102BD00009F080E0809311032BC0809116038111CE +:102BE00027C0809118038F7009F4D1C08093E90049 +:102BF0002091EB0020FF1CC0933021F48091EB006A +:102C0000806214C09091EB0090619093EB0021E002 +:102C100030E0A90102C0440F551F8A95E2F74093A6 +:102C2000EA001092EA008091EB0088608093EB004C +:102C30001092E9008091E800877F86C08111A7C0CB +:102C4000109116031F778091E3008078812B809389 +:102C5000E3008091E800877F8093E8000E94AC1336 +:102C60008091E80080FFFCCF8091E3008068809332 +:102C7000E300111102C082E001C083E080931303DE +:102C800086C08058823008F082C0809116039091EF +:102C900017038C3D53E0950779F583E08A838AE238 +:102CA00089834FB7F894DE01139620E03EE051E2AD +:102CB000E32FF0E050935700E49120FF03C0E2952A +:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 +:102CD00001C0C0968D939D932F5F243149F74FBF5C +:102CE0008091E800877F8093E8006AE270E0CE017F +:102CF00001960E94B31214C0AE014F5F5F4F609106 +:102D000018030E94FA11BC01009709F440C0909189 +:102D1000E800977F9093E80089819A810E941613BA +:102D20008091E8008B778093E80031C0803879F596 +:102D30008091E800877F8093E80080910F03809363 +:102D4000F1008091E8008E778093E8000E94AC1338 +:102D50001EC081111CC0909116039230C0F4809166 +:102D6000E800877F8093E80090930F030E94AC13E4 +:102D700080910F03811106C08091E30087FD02C09E +:102D800081E001C084E0809313030E94F8108091D9 +:102D9000E80083FF0AC08091E800877F8093E80005 +:102DA0008091EB0080628093EB00AA960FB6F894B6 +:102DB000DEBF0FBECDBFDF91CF911F910895089563 +:102DC000CF93809113038823A1F0C091E900CF70C5 +:102DD0009091EC00892F817090FD80E8C82B1092B3 +:102DE000E9008091E80083FD0E948E15CF70C093AA +:102DF000E900CF91089590939302809392020895F1 +:102E0000E0919202F0919302309721F00190F081CD +:102E1000E02D099480E00895E0919202F0919302F0 +:102E2000309721F00280F381E02D09940895E0911C +:102E30009202F0919302309721F00480F581E02D09 +:102E4000099408952091900230919102821793077E +:102E500071F09093910280939002E0919202F09130 +:102E60009302309721F00680F781E02D09940895B0 +:102E700020918E0230918F028217930771F0909308 +:102E80008F0280938E02E0919202F091930230972C +:102E900021F00084F185E02D0994089508950C94A3 +:102EA0004E170E94D5220E9426090E945B230C9493 +:102EB0000A285F926F927F928F929F92AF92BF92F9 +:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 +:102ED00000D000D01F92CDB7DEB70E946B099DE9EC +:102EE000C92E92E0D92E03E010E0AA24A394B12CBD +:102EF000502E802F0E94E6094C01F60172906290DC +:102F00006F016826792661147104A1F4015011093A +:102F100078F78FEF89838A831B820E94DE2281608B +:102F2000782F9D838C8349815A816B818D810E948A +:102F3000091838C08091F20281FD0E94EF092BE050 +:102F400030E07501022E02C0EE0CFF1C0A94E2F77D +:102F5000C70186219721892B09F129835A828E2066 +:102F60009F2091E0892809F490E09B830E94DE2253 +:102F70008160782F9D838C8349815A816B818D81FB +:102F80000E940918000F111FF801EB56FD4F8081B8 +:102F90009181E826F926F182E08204C021503109AE +:102FA00080F6B4CF0E944225109194020E9400172F +:102FB0001817D1F00E940017809394020F900F9081 +:102FC0000F900F900F90DF91CF911F910F91FF9075 +:102FD000EF90DF90CF90BF90AF909F908F907F90B9 +:102FE0006F905F900C9410090F900F900F900F90BE +:102FF0000F90DF91CF911F910F91FF90EF90DF9095 +:10300000CF90BF90AF909F908F907F906F905F9088 +:103010000895CF93DF93CDB7DEB72B970FB6F89413 +:10302000DEBF0FBECDBF4F83588769877A878B87F6 +:10303000DE01119686E0FD0111928A95E9F785E09F +:10304000FE01379601900D928A95E1F749815A81E8 +:103050006B817C818D819E810E94801E2B960FB694 +:10306000F894DEBF0FBECDBFDF91CF910895CF930F +:10307000882309F4C2C0C82F823859F40E9400176F +:1030800081FDBBC089E30E945A210E94272289E367 +:103090000CC0833879F40E94001780FDAEC083E530 +:1030A0000E945A210E94272283E50E949C21CF91F1 +:1030B0000C942722843859F40E94001782FD9DC089 +:1030C00087E40E945A210E94272287E4EECF8CEFEA +:1030D0008C0F813A48F48C2F0E94722781118DC089 +:1030E0008C2F0E945A21E3CF80E28C0F883048F465 +:1030F000C77081E001C0880FCA95EAF70E94E021FD +:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 +:1031100031F083E890E005C081E890E002C082E8E9 +:1031200090E0CF910C94221788E58C0F833108F042 +:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 +:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 +:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 +:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 +:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B +:1031800090E038C082EE90E035C089EE90E032C029 +:103190008AEE90E02FC085EB90E02CC086EB90E0AB +:1031A00029C087EB90E026C08CEC90E023C08DEC2A +:1031B00090E020C083E891E01DC08AE891E01AC049 +:1031C00082E991E017C084E991E014C081E292E0C5 +:1031D00011C083E292E00EC084E292E00BC085E26F +:1031E00092E008C086E292E005C087E292E002C069 +:1031F0008AE292E0CF910C943817CF9108958823FA +:1032000009F44BC0823859F40E94001781FF45C071 +:1032100089E30E945A210E94272289E30CC0833847 +:1032200071F40E94001780FF38C083E50E945A2184 +:103230000E94272283E50E949C210C942722843837 +:1032400059F40E94001782FF28C087E40E945A2187 +:103250000E94272287E4EFCF9CEF980F913A58F312 +:1032600090E2980F983050F4877091E001C0990F68 +:103270008A95EAF7892F0E94E621DFCF9BE5980F18 +:10328000933020F480E090E00C942217885A833128 +:1032900020F480E090E00C9438170895882321F002 +:1032A0000E94E0210C9427220895882321F00E9497 +:1032B000E6210C94272208957F928F929F92AF92DD +:1032C000BF92CF92DF92EF92FF920F931F93CF9313 +:1032D000DF931F92CDB7DEB77C01C62E772EFC019F +:1032E000058102950F70128111110E94FD210E942B +:1032F0005321882379F0112369F080E28C0D883006 +:1033000048F082E00E943C210E94532191E0D82E97 +:10331000D92601C0D12CE72DE295EF70F0E0E05AFC +:10332000FF4F0C949B2C872D807F072D0F708823D7 +:1033300011F00295007F112389F0002309F499C14F +:1033400080E28C0D883020F4802F0E94E02103C0A1 +:10335000802F0E94F0210E9427228BC18C2D0E9479 +:10336000FF18002309F4C3C180E28C0D883020F4DB +:10337000802F0E94E62103C0802F0E94F6210E9428 +:103380002722B5C1872D807F972D9F70803211F441 +:10339000892F03C0892F8295807FCC2021F0F1E016 +:1033A000CF16A1F01DC0112339F0002319F101300F +:1033B00009F50E9410229BC1002319F0013009F485 +:1033C00096C189830E941322898110C1112321F0A3 +:1033D000063008F08CC10EC0053008F088C106C167 +:1033E000112359F0002331F0F701958190FF41C17D +:1033F0009F7095830E944E197AC1002309F4F6C08C +:103400003EC1872D86958695837090E0009719F0D0 +:10341000019761F06CC1112321F08C2D972D9370D1 +:1034200002C080E090E00E94221761C1112321F0C8 +:103430008C2D972D937002C080E090E00E94381789 +:1034400056C18C2D112319F00E944A2402C00E94FB +:10345000B2240E9437254BC1872D837009F052C0DA +:10346000111145C18C2D829586958770880F880F24 +:103470009C2D9F70892E912CA12CB12C082E04C05C +:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 +:103490000FE010E020E030E0B901A80104C0440FC3 +:1034A000551F661F771F8A95D2F7CB01BA01609529 +:1034B00070958095909503C060E070E0CB01272D5A +:1034C00026952695237030E02230310569F02330AF +:1034D000310589F0682979298A299B29213031050C +:1034E00071F00E94C81F03C1682979298A299B2984 +:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 +:10350000AC1FF5C0112319F0872D817001C086957D +:10351000882309F4ECC08C2D829586958770880FDE +:10352000880F9C2D9F70892E912CA12CB12C082ED8 +:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 +:1035400014C00FE010E020E030E0B901A80104C091 +:10355000440F551F661F771F8A95D2F7CB01BA011A +:10356000609570958095909503C060E070E0CB0108 +:10357000272D269526952370422F50E04230510585 +:1035800069F04330510589F0682979298A299B29F6 +:103590004130510571F00E94A220A9C06829792903 +:1035A0008A299B290E94BE20A2C00E94A220C50198 +:1035B000B4010E9486209BC08C2D90E0FC01E05E4F +:1035C000F109E531F10508F050C0E059FF4F0C94C6 +:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 +:1035E0001F20802F07CF0E944020802F0E94551956 +:1035F0007EC0112341F0053008F079C0872D8F710E +:103600000E94652074C0063008F071C0F7CF112306 +:1036100039F0872D8F710E941F2069C01123C9F3D3 +:10362000872D8F710E94402062C0112329F0872DC1 +:103630008F710E940A205BC00E94002058C0112395 +:1036400051F0172D1F71812F0E941F2063E0812FE1 +:103650000E9433214CC081E00E943C21023008F4DA +:1036600046C082E00E943C2142C0112331F0002379 +:1036700081F28C2D0E9437183AC0002389F28C2DDC +:103680000E94FF1834C0472D4F706C2DC7010E9457 +:10369000EE050E94241F2BC0111129C0472D4F7029 +:1036A00050E042305105B9F04CF44115510581F01C +:1036B00041305105E1F40E94322819C043305105D0 +:1036C00069F04430510599F48C2D0E9484280FC074 +:1036D0000E941B280CC00E944E2809C00E9461282D +:1036E00006C0472D4F706C2DC7010E94F105DD20EB +:1036F000F9F00E942F2180FD1BC0F70112820E9469 +:1037000029210E941F20C7010E94A71B0E94292176 +:103710000F90DF91CF911F910F91FF90EF90DF906D +:10372000CF90BF90AF909F908F907F900C9440204F +:103730000F90DF91CF911F910F91FF90EF90DF904D +:10374000CF90BF90AF909F908F907F9008950F93F0 +:103750001F93CF93DF93EC01888199812B813C816A +:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 +:10377000ED03882371F0688179818A810E94252177 +:103780008C010E94DA200E94A11FB801CE010E9484 +:103790005C19DF91CF911F910F9108950E94FD2137 +:1037A0000E940D220E94D2210E9427220E94E82519 +:1037B0000E94372580E090E00E94221780E090E090 +:1037C0000C9438170E94ED210C94CE1B0E941A21F4 +:1037D000292F22952F7030E02C3031054CF42A30FF +:1037E00031056CF42250310922303105A8F407C0AC +:1037F0002C30310569F02F30310551F00DC0803F7C +:1038000069F018F4803E40F409C0843F29F406C0F2 +:1038100093FB882780F9089580E0089581E008955A +:10382000CF93DF9300D000D01F92CDB7DEB70F90BB +:103830000F900F900F900F90DF91CF910895CF933D +:10384000DF9300D000D000D0CDB7DEB726960FB6FC +:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 +:10386000CF93DF93C0919D0216E080919E02C8170E +:1038700099F0D0E01C9FF0011D9FF00D1124E1563E +:10388000FD4F4081518162817381848195810E94C5 +:103890001F1C2196C770E9CFDF91CF911F9108952A +:1038A0004091CF025091D0026091D1027091D2022A +:1038B0008091D3029091D4020C941F1C8091D40269 +:1038C00082958F7009F054C08091D102882309F449 +:1038D0004FC080919D02A0919E026091CF02709195 +:1038E000D0024091D2025091D302B6E08A1709F477 +:1038F0003FC090E041155105C1F17F3F11F46F3F8A +:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 +:10391000218172132AC02081621327C022812111C4 +:1039200024C0238134812417350710F42150310934 +:10393000241B350B283C3105C0F42091D4022F7094 +:1039400020612093D40226E0289FF001299FF00DEA +:103950001124EC55FD4F80818F70806180838FEC46 +:1039600092E00E94A71B0C942F1C01968770BECF7B +:103970000895CF92DF92EF92FF920F931F93CF9310 +:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 +:10399000CDBF8C0185E0F801DE011D9601900D92EE +:1039A0008A95E1F7D8014C9111965C911197129686 +:1039B0006C9112971396CD90DC9014973091CF02B2 +:1039C0007091D0028091D2029091D302009709F4B5 +:1039D0006BC17F3F19F43F3F09F466C1E090D1020B +:1039E000EE2009F4C0C02091D402C816D90628F0F0 +:1039F000F601E81BF90BCF0104C0809590958C0D62 +:103A00009D1DFF24F394883C910578F0F12C207FD4 +:103A100009F0C6C07C2DD98AC88A89890E94101CE9 +:103A20008FEC92E00E94A71BB1C0822F807F09F02B +:103A300046C0751314C0341312C0611110C02F702A +:103A400020612093D4020E94501C8FEC92E00E94CF +:103A5000A71B8091D402D80115968C932EC0CD2837 +:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 +:103A700080919D0220919E0236E0821709F45AC07F +:103A800090E0389FF001399FF00D1124E156FD4F71 +:103A90007181571306C07081471303C07281711181 +:103AA00003C001968770E9CFF62E662309F418C18A +:103AB0008091D40281608093D402F12C11C17513DE +:103AC00008C0341306C0611104C08091D402D8012B +:103AD000C3C04D875E878D859E856A8B0E94E61BDD +:103AE0006A898823E1F16623D1F12091D402822FE3 +:103AF00082958F7090E0029774F08091CF02909140 +:103B0000D00298878F831986DB86CA862C87CE01E0 +:103B100007960E94A71B86E0F801AFECB2E0019087 +:103B20000D928A95E1F70E945E1C0E94501CFF24B2 +:103B3000F394D6C04D875E878D859E850E941A219D +:103B4000292F22952F7030E0223031050CF0BCC0B7 +:103B50009F7009F0B6C0805E883008F4C1C0C8010B +:103B60000E94A71BE4CFC816D90608F453C0F6017B +:103B7000E81BF90BCF01883C910508F450C0F12CEB +:103B80007C2DD98AC88A89890E94101CEFECF2E04A +:103B900086E0DF011D928A95E9F70E94501CA0C0C3 +:103BA000751314C0341312C0611110C08091D40277 +:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 +:103BC000DF011D928A95E9F7FE2C8AC04D875E873A +:103BD0008D859E856A8B0E94E61B6A89882309F47D +:103BE000BECF662309F4BBCF2091D402822F8295E9 +:103BF0008F7090E002970CF48ECF8091CF0290915D +:103C0000D0029A8389831B82DD82CC822E83CE01EF +:103C100001967FCF809590958C0D9D1DACCFF62E93 +:103C2000662309F49CCF75132EC034132CC0209149 +:103C3000D40220FD1FC0822F82958F70D9F0D80149 +:103C400015962C9315978F3049F08F5F982F92958A +:103C5000907F822F8F70892B15968C93C8010E94BC +:103C6000A71B86E0F801AFECB2E001900D928A95B7 +:103C7000E1F793CF86E0F801AFECB2E001900D924E +:103C80008A95E1F72DC04D875E878D859E850E94C0 +:103C9000E61B811140CF8091D40281608093D402D1 +:103CA000C8010E94A71B1CC0662309F458CF4D878A +:103CB0005E878D859E850E94E61B882309F44FCF81 +:103CC0002ACF811148CF0CC0243031050CF047CFEA +:103CD0009F7009F440CFF8019581907F09F03BCFA8 +:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 +:103CF000CF911F910F91FF90EF90DF90CF9008959B +:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 +:103D1000DEBF0FBECDBF4F83588769877A878B87F9 +:103D20009C87CE0107960E94B91C882369F08F8179 +:103D300098852A853B85232BF1F19F3F09F063C0CD +:103D40008F3F09F060C037C086E0FE013796DE0184 +:103D5000119601900D928A95E1F76F817885EA8539 +:103D6000FB85309741F17F3F11F46F3F21F12091A6 +:103D70009E0230E0C90101968770992740919D020B +:103D800050E08417950709F447C069837A83FD835F +:103D9000EC8396E0929FD001939FB00D1124A15621 +:103DA000BD4FFE01319601900D929A95E1F78093F7 +:103DB0009E020E942F1C16E080919D0290919E020F +:103DC0008917C1F1189FC001112481569D4F0E948F +:103DD000B91C882379F1E0919D021E9FF001112406 +:103DE000E156FD4F408151816281738184819581CB +:103DF0000E941F1C80919D0290E001968770992778 +:103E000080939D02D9CF4F81588569857A858B85AE +:103E10009C850E941F1CCFCF0E94E21B10929E0225 +:103E200010929D02EFECF2E086E0DF011D928A9590 +:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 +:103E4000DF91CF911F910895EF92FF920F931F93EF +:103E5000CF93DF938C01009709F46CC0F12CEE2412 +:103E6000E394E8012196F8018491843740F484308A +:103E700008F051C0813081F0823019F15BC0853784 +:103E800009F444C0A8F19CE7980F903708F052C09D +:103E90008F770E94FF1841C00E5F1F4FFE01C49133 +:103EA00080E28C0F883048F4C7708E2D01C0880FD7 +:103EB000CA95EAF70E94002214C08C2F0E9437187E +:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 +:103ED00058F4C7708E2D01C0880FCA95EAF70E946A +:103EE00006220E9427221AC08C2F0E94FF1816C09B +:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C +:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 +:103F1000FE01F49003C00E9437188E018F2D882374 +:103F200009F49FCFEFE9FFE03197F1F700C00000FF +:103F30008150F5CFDF91CF911F910F91FF90EF90BE +:103F4000089508956093D9027093DA028093DB029A +:103F50009093DC020C94CE1B0F931F930091D90217 +:103F60001091DA022091DB023091DC02DC01CB01FE +:103F7000802B912BA22BB32B8093D9029093DA0242 +:103F8000A093DB02B093DC021F910F910C94CE1B27 +:103F90000F931F930091D9021091DA022091DB0256 +:103FA0003091DC02DC01CB0180239123A223B323D7 +:103FB0008093D9029093DA02A093DB02B093DC02E3 +:103FC0001F910F910C94CE1B0F931F930091D90258 +:103FD0001091DA022091DB023091DC02DC01CB018E +:103FE00080279127A227B3278093D9029093DA02E2 +:103FF000A093DB02B093DC021F910F910C94CE1BB7 +:104000001092D5021092D6021092D7021092D802C6 +:104010000C94CE1B41E050E060E070E004C0440F1F +:10402000551F661F771F8A95D2F74093D50250938C +:10403000D6026093D7027093D8020C94CE1B41E055 +:1040400050E060E070E004C0440F551F661F771F0A +:104050008A95D2F78091D5029091D602A091D7028D +:10406000B091D802482B592B6A2B7B2B4093D50259 +:104070005093D6026093D7027093D8020C94CE1B53 +:1040800041E050E060E070E004C0440F551F661F3F +:10409000771F8A95D2F740955095609570958091DD +:1040A000D5029091D602A091D702B091D8024823B0 +:1040B00059236A237B234093D5025093D602609301 +:1040C000D7027093D8020C94CE1B41E050E060E020 +:1040D00070E004C0440F551F661F771F8A95D2F702 +:1040E0008091D5029091D602A091D702B091D802CA +:1040F000482759276A277B274093D5025093D60239 +:104100006093D7027093D8020C94CE1B0F931F9329 +:104110000091D5021091D6022091D7023091D80299 +:10412000DC01CB01802B912BA22BB32B8093D502EA +:104130009093D602A093D702B093D8021F910F910B +:104140000C94CE1B0F931F930091D5021091D602B1 +:104150002091D7023091D802DC01CB01802391233A +:10416000A223B3238093D5029093D602A093D702C3 +:10417000B093D8021F910F910C94CE1B0F931F93F5 +:104180000091D5021091D6022091D7023091D80229 +:10419000DC01CB0180279127A227B3278093D5028A +:1041A0009093D602A093D702B093D8021F910F919B +:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 +:1041C0001F93CF93DF938C01C090D902D090DA0275 +:1041D000E090DB02F090DC028091D5029091D60253 +:1041E000A091D702B091D802C82AD92AEA2AFB2A7C +:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B +:10420000979587950A94D2F780FF06C0B8018C2F46 +:104210000E947608019721F4219760F780E001C0A1 +:104220008C2FDF91CF911F910F91FF90EF90DF9036 +:10423000CF900895CF93DF93EC010E94DB20BE0165 +:104240000E947608DF91CF910895CB010E941A2138 +:1042500008958091DD0285958595859508958091D5 +:10426000DD028770089598E0899F90011124262B24 +:104270002093DD020C941F202091DD028095822383 +:104280008093DD02982F977069F430E0482F55270E +:1042900047FD50952417350729F085958595859517 +:1042A0000C94402008959091DD02977081E009F40C +:1042B00080E0089590911501992321F090911601C5 +:1042C000911109C02091170130911801F90132961E +:1042D0009FEF40E01FC0982F9695969596959F303A +:1042E00050F5E0911701F0911801E90FF11D877069 +:1042F00021E030E0A90102C0440F551F8A95E2F782 +:10430000CA019181892B818308959F3F39F04F5FC6 +:104310004E3041F051915813F8CF0DC05111F7CFE5 +:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B +:10433000FA9582830895089590911501992321F0AB +:1043400090911601911109C0209117013091180127 +:10435000F9013296205F3F4F1FC0982F9695969592 +:1043600096959F30F0F4E0911701F0911801E90F54 +:10437000F11D877021E030E0A90102C0440F551FF4 +:104380008A95E2F7CA0180959181892381830895F6 +:104390003196E217F30729F090819813F9CF108234 +:1043A000F7CF089581E090E0E0911701F0911801B6 +:1043B000E80FF91F1082019680319105A9F7089541 +:1043C0009091F102892B8093F1020895809590914C +:1043D000F10289238093F10208951092F102089569 +:1043E0009091F002892B8093F0020895809590912E +:1043F000F00289238093F00208951092F00208954C +:104400009091EF02892B8093EF020895809590910F +:10441000EF0289238093EF0208951092EF0208952E +:104420008093DE0208951092DE02089580911701B4 +:1044300090911801FC0131969C01205F3F4F80E074 +:10444000919191118F5FE217F307D1F70895E091F1 +:104450001701F09118018091F1028083E09117011A +:10446000F091180190818091F002892B8083E09176 +:104470001701F091180190818091EF02892B8083C0 +:104480008091DE02882361F0E0911701F09118011C +:104490009081892B80830E94162281111092DE0266 +:1044A00080911701909118010C940C1720E000974F +:1044B00039F0AC0141505109842395232F5FF7CF88 +:1044C000822F089580911303843039F11092F30202 +:1044D00020E488E190E00FB6F894A89580936000FE +:1044E0000FBE2093600080E00E94F10280E00E94F5 +:1044F000100983B7817F846083BF83B7816083BFE6 +:104500007894889583B78E7F83BF88E10FB6F8943F +:1045100080936000109260000FBE08950895089582 +:1045200080E00E94F1020E948E220E946B090E948C +:104530008F220E94F00991E0811101C090E0892F43 +:1045400008950E94E21B80E00E94F1020E940A2866 +:104550000E9400170C9410091F920F920FB60F9231 +:1045600011248F939F93AF93BF938091F302811196 +:1045700013C08091F4029091F502A091F602B091DF +:10458000F7024196A11DB11D8093F4029093F502AC +:10459000A093F602B093F702BF91AF919F918F91D4 +:1045A0000F900FBE0F901F90189582E084BD93E08E +:1045B00095BD9AEF97BD80936E0008952FB7F8943C +:1045C0008091F4029091F502A091F602B091F70269 +:1045D0002FBF0895CF92DF92EF92FF920F931F9318 +:1045E0002FB7F8944091F4025091F5026091F602D1 +:1045F0007091F7022FBF6A017B01EE24FF248C012A +:1046000020E030E0C016D106E206F30610F4415077 +:1046100051099A01281B390BC9011F910F91FF9075 +:10462000EF90DF90CF9008951F920F920FB60F92E8 +:1046300011248F939F93AF93BF938091F402909135 +:10464000F502A091F602B091F7020196A11DB11DED +:104650008093F4029093F502A093F602B093F702D0 +:10466000BF91AF919F918F910F900FBE0F901F90B0 +:1046700018950E94FD13F8942FEF87EA91E62150D8 +:1046800080409040E1F700C0000087E090EBDC0143 +:1046900080931E0390931F03A0932003B0932103E4 +:1046A0009CE088E10FB6F894A895809360000FBE57 +:1046B00090936000FFCF0E949A23811102C00E9454 +:1046C00076230E94A5238093F2020E94AD2380935B +:1046D0001C0387FB882780F9809316010E94A92379 +:1046E000682F70E080E090E00C94A21F6DEE7EEFEA +:1046F00080E090E00E94C12C60E082E090E00E94A7 +:10470000AF2C60E083E090E00E94AF2C60E084E09A +:1047100090E00E94AF2C60E085E090E00E94AF2C1A +:1047200060E086E090E00E94AF2C6FEF87E090E0C1 +:104730000C94AF2C80E090E00E94A92C21E08D3EEB +:104740009E4F09F020E0822F089582E090E00C94C3 +:10475000A12C83E090E00C94A12C84E090E00C94D8 +:10476000A12C682F84E090E00C94AF2C86E090E0C0 +:104770000C94A12C682F86E090E00C94AF2C87E07D +:1047800090E00C94A12C682F87E090E00C94AF2C63 +:104790008091FA0280FF0BC060911C0185E0689F48 +:1047A000B001112475956795759567952BC081FFAC +:1047B00009C060911C0185E0689FB00111247595C6 +:1047C000679520C082FF07C060911C0185E0689F4B +:1047D000B001112417C09091FB029923D1F0609190 +:1047E0001B01961788F720911C0185E0289F9001F6 +:1047F0001124929FA001939F500D112470E0CA01D3 +:104800000E94872C6038710540F46115710539F0FC +:1048100002C065E070E0862F08958FE7089581E07B +:1048200008958091FA0280FF08C060911A0170E03B +:10483000759567957595679521C081FF06C0609154 +:104840001A0170E07595679519C082FF04C06091E8 +:104850001A0170E010C09091FB029923C1F06091A1 +:1048600019019617A0F780911A01899FC0011124A0 +:1048700070E00E94872C6038710528F4611571057D +:1048800021F0862F08958FE7089581E0089561E073 +:1048900070E0F4CF803F21F40E94C823819504C0CA +:1048A000813F29F40E94C8238093FE020895823F2D +:1048B00021F40E94C823819504C0833F29F40E94FB +:1048C000C8238093FD020895893F19F40E941124A2 +:1048D00005C08A3F31F40E94112481958093FF0224 +:1048E00008958B3F21F40E941124819504C08C3FD0 +:1048F00029F40E941124809300030895843F21F439 +:104900008091FC02816017C0853F21F48091FC02F8 +:10491000826011C0863F21F48091FC0284600BC04C +:10492000873F21F48091FC02886005C0883F31F404 +:104930008091FC0280618093FC0208958D3F21F4F8 +:104940008091FA0281600BC08E3F21F48091FA02BF +:10495000826005C08F3F29F48091FA0284608093C1 +:10496000FA020895803F39F48091FE0287FF6CC0FF +:104970001092FE0269C0813F29F48091FE02181650 +:10498000BCF362C09091FD02823F29F497FF5CC0A6 +:104990001092FD0259C0833F19F41916CCF354C08C +:1049A000893F41F48091FF0218160CF04DC010921F +:1049B000FF024AC08A3F29F48091FF0287FF44C06A +:1049C000F6CF8B3F39F48091000387FF3DC01092F2 +:1049D00000033AC08C3F29F4809100031816BCF301 +:1049E00033C0843F21F48091FC028E7F17C0853F45 +:1049F00021F48091FC028D7F11C0863F21F48091CB +:104A0000FC028B7F0BC0873F21F48091FC02877FE3 +:104A100005C0883F31F48091FC028F7E8093FC02B8 +:104A200013C08D3F21F48091FA028E7F0BC08E3F20 +:104A300021F48091FA028D7F05C08F3F29F4809187 +:104A4000FA028B7F8093FA028091FD0281110EC0E1 +:104A50008091FE0281110AC08091FF02811106C07F +:104A600080910003811102C01092FB0208958CEF27 +:104A700092E00E9417170E94DE229093F902809321 +:104A8000F80208951F93CF93DF938091F8029091DD +:104A9000F9020E94EA22AC019091FB02992321F0D5 +:104AA00020911D0130E006C020911E018AE0289F60 +:104AB000900111244217530708F486C08091FD022B +:104AC000C091FE02D091FF0210910003811107C036 +:104AD000C11176C0D11174C0111172C075C09F3F51 +:104AE00019F09F5F9093FB02181624F40E94C823CC +:104AF0008093FD028091FD0287FF05C00E94C823BC +:104B000081958093FD021C1624F40E94C823809393 +:104B1000FE028091FE0287FF05C00E94C823819596 +:104B20008093FE026091FD02662339F1C091FE027E +:104B3000CC2319F1772767FD7095872F972F0E9457 +:104B4000A92923E333E343E35FE30E94B92A0E94E8 +:104B500076296093FD026C2F772767FD7095872F6C +:104B6000972F0E94A92923E333E343E35FE30E94E5 +:104B7000B92A0E9476296093FE021D1624F40E9431 +:104B800011248093FF028091FF0287FF05C00E94DD +:104B9000112481958093FF02111624F40E941124A0 +:104BA000809300038091000387FF05C00E941124B9 +:104BB000819580930003DF91CF911F910C9437254D +:104BC0009F3F09F08ECF96CFDF91CF911F9108952F +:104BD000ECEFF2E085E0DF011D928A95E9F7109293 +:104BE000FB021092FA020895833081F128F481309B +:104BF00059F08230D1F00895853009F449C0B8F1F8 +:104C0000863009F456C0089580911E01262F30E0A9 +:104C1000280F311D2F3F310524F4680F60931E01CA +:104C200008958FEF80931E01089580911D01262F16 +:104C300030E0280F311D2F3F310524F4680F6093B9 +:104C40001D0108958FEF80931D01089580911C012F +:104C5000262F30E0280F311D2F3F310524F4680F37 +:104C600060931C0108958FEF80931C01089580913B +:104C70001B01262F30E0280F311D2F3F310524F472 +:104C8000680F60931B0108958FEF80931B010895B7 +:104C900080911A01262F30E0280F311D2F3F31055A +:104CA00024F4680F60931A0108958FEF80931A011E +:104CB000089580911901262F30E0280F311D2F3FD4 +:104CC000310524F4680F6093190108958FEF8093E4 +:104CD00019010895833011F128F4813049F08230B0 +:104CE00091F00895853081F120F18630C1F1089569 +:104CF00080911E01681720F4861B80931E01089581 +:104D000010921E01089580911D01681720F4861BE2 +:104D100080931D01089510921D01089580911C013A +:104D2000681720F4861B80931C01089510921C01C3 +:104D3000089580911B01681720F4861B80931B0146 +:104D4000089510921B01089580911A01681720F4AC +:104D5000861B80931A01089510921A01089580917C +:104D60001901681720F4861B809319010895109289 +:104D7000190108950F931F93873208F048C08E31B0 +:104D800008F08DC0803109F477C008F5873009F448 +:104D900061C068F4863009F09DC08091F202817F85 +:104DA0008E7F8093F20281E08093020394C08B3067 +:104DB00009F489C08E3009F08DC08091F20282FB27 +:104DC000222720F991E0922790FB82F95EC086317C +:104DD00009F479C060F4813109F07CC00E94E21BC3 +:104DE0009091160181E08927809316016CC089316A +:104DF00009F469C08B3109F06DC08091F20281FB2A +:104E0000222720F991E0922790FB81F93EC0883358 +:104E100009F459C050F4893209F457C0853309F4B4 +:104E200054C0873209F451C055C0833409F44DC0D1 +:104E300028F48A3308F44EC0895332C0883409F00C +:104E400049C00E94E21B0E94200A0E94E4030E94C3 +:104E5000392339C09091F202892F8095817080FBAF +:104E600090F929F0966098609093F20234C0997F8F +:104E7000977F9093F20227C08091F20283FB222752 +:104E800020F991E0922790FB83F98093F202992315 +:104E9000D1F08091F20281608093F20214C08D51B2 +:104EA00041E050E060E070E08A019B0104C0000F27 +:104EB000111F221F331F8A95D2F7C901B8010E9422 +:104EC000A21F0E94E21B81E006C061E070E080E06A +:104ED00090E0F5CF80E01F910F91089580E0089554 +:104EE00080E00895CF93C82F80910203813069F04C +:104EF00018F08230C9F184C0E0911701F0911801D7 +:104F00008081823209F07EC007C0E0911701F091E4 +:104F100018018081823261F48C2F0E946E278111EA +:104F200004C08C2F0E94BA261DC081E090E01AC0F8 +:104F30008C2F0E947027811114C0C43179F048F47D +:104F4000CB3079F0C03109F061C082E08093020378 +:104F500008C0C93219F0C83321F058C010920203BA +:104F600055C081E0817054C0C93291F120F5C4313F +:104F700079F1B0F4C73009F047C08EE180931E018B +:104F800082E380931D018AE080931C0184E1809379 +:104F90001B0188E080931A0188E28093190134C0D4 +:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 +:104FB0008093010329C0CE34E9F020F4CB3421F5ED +:104FC0006AE013C0C13579F0C235F1F461E00DC07B +:104FD00080910103882319F01092010315C081E02C +:104FE0008093020315C061E006C0809101030E9416 +:104FF000F4250AC06AE0809101030E946A2604C079 +:105000001092020380E004C081E002C080E0AACFD9 +:10501000CF9108950E949A23811102C00E947623A5 +:105020000E94B62380931D0380FF02C0869501C0B5 +:1050300080E00C94F10280911D03982F9695292F02 +:1050400030E0233031054CF49F5F990F8170892B3C +:10505000816080931D030E94BA2380911D03869571 +:105060000C94F10280911D03982F969591F0915820 +:10507000990F8170892B80931D038E7F91E009F435 +:1050800090E080911D0390FB80F980931D030E94A6 +:10509000BA2380911D0386950C94F10280911D0323 +:1050A000982F909590FB80F980931D030E94BA235E +:1050B00080911D0380FF02C0869501C080E00C94A2 +:1050C000F10290911D03892F86958F5F8F779170E4 +:1050D000843028F4880F892B80931D0302C090939D +:1050E0001D0380911D038E7F91E009F490E0809173 +:1050F0001D0390FB80F980931D030E94BA238091C9 +:105100001D0386950C94F10220911D03922F969514 +:105110008927982F990F822F8170892B80931D03E7 +:105120008E7F91E009F490E080911D0390FB80F95F +:1051300080931D030E94BA2380911D0386950C94D1 +:10514000F10280911D03869508955058BB27AA2728 +:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 +:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF +:10517000D3D180F3BA17620773078407950718F035 +:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 +:105190000B01B90190010C01CA01A0011124FF27E4 +:1051A000591B99F0593F50F4503E68F11A16F040DF +:1051B000A22F232F342F4427585FF3CF46953795DE +:1051C0002795A795F0405395C9F77EF41F16BA0BA3 +:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 +:1051E000661F771F881FC2F70EC0BA0F621F731F9A +:1051F000841F48F4879577956795B795F7959E3FF7 +:1052000008F0B3CF9395880F08F09927EE0F979584 +:105210008795089527D108F481E008950CD06BC1DB +:1052200063D140F05AD130F021F45F3F19F03EC114 +:10523000511195C14FC170D198F39923C9F35523EA +:10524000B1F3951B550BBB27AA2762177307840779 +:1052500038F09F5F5F4F220F331F441FAA1FA9F32F +:1052600033D00E2E3AF0E0E830D091505040E69521 +:10527000001CCAF729D0FE2F27D0660F771F881F82 +:10528000BB1F261737074807AB07B0E809F0BB0B71 +:10529000802DBF01FF2793585F4F2AF09E3F510595 +:1052A00068F004C15CC15F3FECF3983EDCF3869587 +:1052B00077956795B795F7959F5FC9F7880F911D0B +:1052C0009695879597F90895E1E0660F771F881FF7 +:1052D000BB1F621773078407BA0720F0621B730BAA +:1052E000840BBA0BEE1F88F7E095089504D06894FC +:1052F000B11135C1089518D188F09F5790F0B92F9A +:105300009927B751A0F0D1F0660F771F881F991F1A +:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF +:1053200008951CC1672F782F8827B85F39F0B93FDF +:10533000CCF3869577956795B395D9F73EF490951C +:105340008095709561957F4F8F4F9F4F0895E8949A +:1053500009C097FB3EF490958095709561957F4FBD +:105360008F4F9F4F9923A9F0F92F96E9BB2793956B +:10537000F695879577956795B795F111F8CFFAF47B +:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC +:1053900016C0882311F096E911C0772321F09EE80A +:1053A000872F762F05C0662371F096E8862F70E070 +:1053B00060E02AF09A95660F771F881FDAF7880F4A +:1053C0009695879597F9089588D018F011F08CD0AC +:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F +:1053E000E7FB6217730784079507A8F199F3E92F84 +:1053F000FF2788232AF03197660F771F881FDAF777 +:10540000952F5527442332F091505040220F331FDF +:10541000441FD2F7BB27E91BF50B621B730B840BF0 +:10542000B109C1F222F4620F731F841FB11D3197BD +:105430002AF0660F771F881FBB1FEFCF9150504097 +:105440005AF041F0882332F0660F771F881F915081 +:105450005040C1F7939530C08695779567959F5FCB +:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 +:1054700016161706E807F907C0F012161306E40718 +:10548000F50798F0621B730B840B950B39F40A2611 +:1054900061F0232B242B252B21F408950A2609F4EF +:1054A000A140A6958FEF811D811D089597F99F67F3 +:1054B00080E870E060E008959F3F31F0915020F463 +:1054C000879577956795B795880F911D96958795E0 +:1054D00097F908959FEF80EC089500240A9416161A +:1054E000170618060906089500240A9412161306D2 +:1054F000140605060895092E0394000C11F4882360 +:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B +:105510007F4F8F4F9F4F089557FD9058440F551F51 +:1055200059F05F3F71F04795880F97FB991F61F025 +:105530009F3F79F087950895121613061406551F9C +:10554000F2CF4695F1DF08C0161617061806991F08 +:10555000F1CF86957105610508940895E894BB27FD +:1055600066277727CB0197F908957CDF08F48FEF42 +:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 +:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF +:10559000D1F3950F50E0551F629FF001729FBB271A +:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 +:1055B0006627B00DA11D661F829F2227B00DA11D79 +:1055C000621F739FB00DA11D621F839FA00D611DFF +:1055D000221F749F3327A00D611D231F849F600D20 +:1055E000211D822F762F6A2F11249F5750408AF059 +:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 +:10560000881F91505040A9F79E3F510570F04ECF32 +:10561000A6CF5F3FECF3983EDCF3869577956795D0 +:10562000B795F795E7959F5FC1F7FE2B880F911D02 +:105630009695879597F90895FA01EE0FFF1F30961A +:105640002105310599F16115710561F48038BFE3D9 +:105650009B0749F168949038810561F08038BFEF6D +:105660009B0741F0992342F5FF3FE10531052105F4 +:1056700011F1E8940894E795D901AA2329F4AB2FF6 +:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F +:10569000F73950F019F0FF3A38F49F779F930CD008 +:1056A0000F9007FC905808953EF014CF60E070E032 +:1056B00080E89FE308954FE79F775F934F933F9371 +:1056C0002F939ED02F913F914F915F9152DF05C054 +:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C +:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C +:1056F0004EDF0F920F920F924DB75EB70F92C0D050 +:10570000EAE0F1E016D04F915F91EF91FF91E595BE +:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD +:10572000FA95E1F74195550B32D00F9007FE26C050 +:105730000895DF93CF931F930F93FF92EF92DF9221 +:105740007B018C01689405C0DA2EEF011EDFFE019B +:10575000E894A5912591359145915591AEF3EF01CE +:1057600006DDFE019701A801DA9479F7DF90EF904A +:10577000FF900F911F91CF91DF9108959B01AC0194 +:1057800060E070E080E89FE349CD90CE95CECCDE1E +:10579000E8F39923D9F3940F511DBBF39150504076 +:1057A00094F059F0882332F0660F771F881F9150CC +:1057B0005040C1F79E3F510544F7880F911D9695C3 +:1057C000879597F908955F3FACF0983E9CF0BB2712 +:1057D000869577956795B79508F4B1609395C1F76D +:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B +:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 +:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD +:105810000F93FF92C92FDD2788232AF02197660F67 +:10582000771F881FDAF720E030E040E85FEB9FE366 +:10583000883920F0803E30F021968F7787DCE2E3D4 +:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 +:10585000EC01FB2E6F5771097595771F880B990B1B +:1058600078DD28E132E741E35FE38FDEAF2D980179 +:10587000AE01FF900F911F91CF91DF9178DC3BCE6D +:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 +:1058900022273327442750781FC0B75188F4AB2FF5 +:1058A0000024469537952795011CA395D2F3002037 +:1058B00069F0220F331F441FB395DAF30DD045CCA6 +:1058C00061307105A0E88A07B94630F49B01AC014C +:1058D0006627772788279078309621F020833183B8 +:1058E000428353830895AA1BBB1B51E107C0AA1F23 +:1058F000BB1FA617B70710F0A61BB70B881F991F71 +:105900005A95A9F780959095BC01CD01089597FB14 +:10591000072E16F4009407D077FD09D00E94732C4F +:1059200007FC05D03EF4909581959F4F08957095A2 +:1059300061957F4F0895EE0FFF1F0590F491E02DC4 +:105940000994F999FECF92BD81BDF89A992780B547 +:105950000895A8E1B0E042E050E00C94C92C262F55 +:10596000F999FECF92BD81BDF89A019700B4021655 +:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 +:1059800008950196272F0E94B02C0C94AF2CDC01B7 +:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A +:1059A000319600B40D9241505040B8F70895F894E4 +:0259B000FFCF27 +:1059B200640007000CFF0000003F64041092106FA7 +:1059C200103B1007100101DF022808140A321E00E2 +:1059D20002040507090B0C0E1011131517181A1CD7 +:1059E2001D1F2123242628292B2D2F303234353711 +:1059F200393B1F0F03764F5F6F7F4969437909591E +:105A020053633149803F5D8B803FF8BF803FCAE1DD +:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE +:105A2200803F3149803F0000803FF16D7F3F75EA42 +:105A32007E3F4C827E3F833F7E3F84287E3F833F72 +:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 +:105A5200803F3F4D3639ED04A0046A043104C4038B +:105A6200DD03F6030F04010203040506070809001B +:00000001FF diff --git a/keyboard/planck/keymaps/leo/compiled.hex b/keyboard/planck/keymaps/leo/compiled.hex new file mode 100644 index 0000000000..4bfe15bd09 --- /dev/null +++ b/keyboard/planck/keymaps/leo/compiled.hex @@ -0,0 +1,1454 @@ +:100000000C94C5020C9409030C9409030C94090385 +:100010000C9409030C9409030C9409030C94090330 +:100020000C9409030C9409030C94A7140C947915EF +:100030000C94DB220C9409030C9409030C9409031F +:100040000C9409030C946B030C9409030C9409039E +:100050000C9409030C9443230C9409030C94090396 +:100060000C9409030C9409030C9409030C940903E0 +:100070000C9409030C9409030C9409030C940903D0 +:100080000C941C0B0C9409030C9409030C940903A5 +:100090000C9409030C9409030C9409030C940903B0 +:1000A0000C9409030C9409030C940903E615081633 +:1000B000F6160816F6164D167016F616C516D8164C +:1000C000C219C219F119F119301A501AA61BA61B30 +:1000D0005B1AA61B0B1B0B1B721B7B1BA61BA01BFF +:1000E000181B181B181B181B181B181B181B181B78 +:1000F000181B181B181B181B181B181B181B181B68 +:10010000281B361B3D1B441B4E1B07634236B79B07 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A299 +:1001D000F1A3F1A429002F003400330013001C0008 +:1001E00009000A00060015000F002A002B00040079 +:1001F0001200080018000C0007000B001700110087 +:1002000016002800E100370014000D000E001B004E +:10021000050010001A0019001D003600E000E20081 +:10022000E300032002202C002C0001200320E70023 +:10023000E600E400000000000000000000000000F4 +:1002400000000000000000000000000000000000AE +:10025000000000000000000000000000000000009E +:10026000000000000000000000000000000000008E +:10027000000000000000000000000000000000007E +:10028000000000000000000000000000000000006E +:100290000000000030141E001F002000210022007A +:1002A0002300240025002600270030023A003B00EE +:1002B0003C003D003E003F00400041004200430042 +:1002C000440045000100010001000100010001009F +:1002D0000100010001000100010001000100010016 +:1002E0000100010001000100010001000100010006 +:1002F000010001002E021E021F022002221422020F +:10030000230224022414271427022D0001001F14A5 +:100310003802640064022D1464143200250226029F +:100320002D02380001000100010001000100010060 +:100330000100010025142614010001000100010044 +:1003400001000100010001000100010001000100A5 +:100350000100010001004A0052004D0001000100AF +:1003600001004A0052004D0001004C0001004F0006 +:10037000510050004B0001004B00500051004F0055 +:100380000100010001000100010001004E00010018 +:100390004E000100AA00A9000100010001000100B7 +:1003A0000100010001000100010001000100010045 +:1003B000010001002803540068006500200050007F +:1003C0006C0061006E0063006B0020004B00650054 +:1003D000790062006F0061007200640000002C036D +:1003E0004F007200740068006F006C0069006E00BE +:1003F00065006100720020004B006500790062001A +:100400006F006100720064007300000004030904BF +:1004100009026D00040100A0FA09040000010301B3 +:100420000100092111010001223F00070581030895 +:10043000000A090401000103010200092111010061 +:1004400001224D000705820308000A090402000189 +:100450000300000009211101000122360007058375 +:100460000308000A09040300010300000009211128 +:100470000100012239000705840310000112011058 +:100480000100000008EDFE606001000102000105AE +:10049000010906A101050719E029E71500250195C5 +:1004A0000875018102050819012905950575019155 +:1004B000029501750391010507190029771500259B +:1004C00001957875018102C005010980A1018502AD +:1004D00016010026B7001A01002AB7007510950111 +:1004E0008100C0050C0901A1018503160100269CAD +:1004F000021A01002A9C02751095018100C00501B5 +:100500000902A1010901A100050919012905150028 +:10051000250195057501810295017503810105018C +:10052000093009311581257F950275088106093842 +:100530001581257F950175088106050C0A3802157D +:1005400081257F950175088106C0C005010906A1B6 +:1005500001050719E029E7150025019508750181B6 +:100560000295017508810105081901290595057590 +:100570000191029501750391010507190029FF15E5 +:100580000025FF950675088100C011241FBECFEF1E +:10059000DAE0DEBFCDBF04B603FE24C080911E03A7 +:1005A00090911F03A0912003B09121038730904BBD +:1005B000A740B04BB9F410921E0310921F03109283 +:1005C00020031092210314BE84B7877F84BF88E183 +:1005D0000FB6F89480936000109260000FBEE0E0C8 +:1005E000F8E3099511E0A0E0B1E0E0E1FAE502C02E +:1005F00005900D92A03CB107D9F713E0A0ECB1E053 +:1006000001C01D92AE31B107E1F70E94ED110C94CB +:10061000062D0C9400000895089581E00895089532 +:100620000C940C030C940D030C940F030E94D0281F +:1006300023E030E0281B3109220F2093C4010895E4 +:10064000282F2F9880918000211108C0877F8093E8 +:10065000800010928D0010928C001BC088608093E7 +:100660008000233019F48FEF9FEF0FC083E090E0FC +:10067000821B9109880F991F2FEF3FEFA90102C03C +:10068000569547958A95E2F7CA0190938D0080931D +:100690008C000C9416030E94160384E08093C3011F +:1006A0001092C0010895279A2F988FEF9FEF909393 +:1006B0008700809386008AE08093800089E18093A0 +:1006C00081000E9439280C944B030E9453036E9AB8 +:1006D000769A0C940B031F920F920FB60F9211246F +:1006E0002F933F938F939F93EF93FF93E091C101DB +:1006F000F091C201CF0101969093C2018093C10194 +:100700000090C30102C0F695E7950A94E2F7EF73F3 +:100710008091C001823019F4E03251F404C081307C +:1007200039F4EF3329F480916F008D7F80936F004F +:10073000F0E0E457FE4FE49121E031E0E29FC00198 +:10074000E39F900D11240090C40102C096958795F7 +:100750000A94E2F790938D0080938C00FF91EF91C3 +:100760009F918F913F912F910F900FBE0F901F90EF +:10077000189581E008950C94B90308950C946503CD +:1007800080911502882309F448C08091D10190918D +:10079000D201009779F40E940D239093D2018093A7 +:1007A000D1018091D30190E0009771F48091D40140 +:1007B00090E00AC00E9419232091000130910101AC +:1007C0002817390740F329C00197880F991F880F10 +:1007D000991FFC01EB52FE4F6081718182819381F0 +:1007E0000E94820AE091D30184E0E89FF001112485 +:1007F000EB52FE4F60817181828193814FE050E026 +:100800000E943A0E8091D30190E001966091D4014C +:1008100070E00E94B62C8093D3010C9410031092C8 +:1008200017020C944F0A0895089581E080931702EF +:100830000C941404089508958F929F92AF92BF92E2 +:10084000EF92FF920F931F93CF93DF93CDB7DEB755 +:10085000A3970FB6F894DEBF0FBECDBF7C01FC019D +:1008600000811181C8010E940A21B8010E9421065D +:100870008C01B7010E94BB03882309F4CCC100326C +:10088000F0E51F0741F4F7018281882309F458C07D +:100890000E949E0EC0C10132F0E51F0741F4F7012E +:1008A0008281882309F44CC00E94A70EB4C1023291 +:1008B000F0E51F0751F4F7018281882309F440C055 +:1008C0000E949A0E8111F0CFE3CF0332F0E51F07AB +:1008D00039F4F7018281882399F10E9415049BC1A4 +:1008E0000432F0E51F0739F4F7018281882341F1D2 +:1008F0000E940F0490C10532F0E51F0749F4F7018B +:1009000082818823E9F0809117028111F1CFE5CF30 +:100910000632F0E51F0739F4F7018281882381F060 +:100920000E94AE0E0AC00732F0E51F0749F4F70136 +:100930008281882329F00E94B90E0E941B046BC19A +:1009400080911702811105C0F70182818111CFC00A +:1009500018C1003E110579F4F7018281882309F45A +:100960004DC00E944F0A81E080931602109215023A +:100970001092D40150C1023E110559F4F701828151 +:100980008823E1F10E944F0A10921602109215027C +:1009900042C1033E110591F4F7018281882371F170 +:1009A0000E944F0A1092160281E080931502109265 +:1009B000D3011092D2011092D1012DC1023511053F +:1009C00059F4F7018281882309F425C1809100013F +:1009D000909101010A970DC00135110579F4F701D5 +:1009E0008281882309F417C180910001909101014F +:1009F0000A9690930101809300010DC1409104017A +:100A000083E2EFE1F1E0DE01119601900D928A950B +:100A1000E1F7F701808121E030E02C0F3D1F280F26 +:100A2000311DC9012091020130910301FC01E20F47 +:100A3000F31F6081772767FD7095640F711D88270C +:100A400077FD8095982F0E94D82920E030E040E47F +:100A500051E40E943D294B015C01F701218184E0B2 +:100A600090E0821B9109BC01882777FD8095982F23 +:100A70000E94D8299B01AC01C501B4010E94D52870 +:100A80009B01AC0160E070E080E090E40E944B2BA1 +:100A900020E030E04CED50E40E94E82A4B015C017C +:100AA000F70182818823D1F04FE050E0C501B40105 +:100AB0000E943A0E809116028823A1F08091D40101 +:100AC00024E0829FF0011124EB52FE4F808291823C +:100AD000A282B3828F5F8093D40104C0C501B401A8 +:100AE0000E94820A0F3F110508F02ECF94C080911A +:100AF000D00181111FC0043130E5130709F051C046 +:100B00000E94BD0381E08093D0010E940D23909349 +:100B1000CF018093CE011092C7011092C9011092AB +:100B2000C8011092CB011092CA011092CD0110920F +:100B3000CC0171C08091CE019091CF010E94192308 +:100B4000883C910570F48091C701E82FF0E0EE0F2A +:100B5000FF1FE853FE4F118300838F5F8093C7010F +:100B60005AC0043880E5180721F00538104501F116 +:100B70003AC0F7018281882341F01092C50182E0DA +:100B80001EC0043830E5130759F58091C501811165 +:100B900006C086E20E94661886E20E942E1982E054 +:100BA0001CC00438F0E51F0741F305381045D9F49F +:100BB000F7018281882331F01092C60180E20E9401 +:100BC0007D1929C08091C601811106C087E20E946B +:100BD000661887E20E942E1980E20E9484191BC0C9 +:100BE0000538104529F381E08093C5018093C60143 +:100BF000C701A3960FB6F894DEBF0FBECDBFDF913D +:100C0000CF911F910F91FF90EF90BF90AF909F9069 +:100C10008F900C94120380E0A3960FB6F894DEBF79 +:100C20000FBECDBFDF91CF911F910F91FF90EF903D +:100C3000BF90AF909F908F90089580E090E00895CE +:100C400008959CE0799FF001112490E3899FE00DC5 +:100C5000F11D1124E60FF11DEE0FFF1FEC52FE4FA8 +:100C6000859194910895880F991FFC01E45BFF4FD3 +:100C7000859194910895880F991FFC01E453FE4FCC +:100C80008591949108950F931F93CF93DF93EC0177 +:100C9000811521E39207A0F5C11580E3D80708F07C +:100CA000D7C0C83ED105D8F4C03ED10508F007C270 +:100CB000C83AD10578F4C53AD10508F06AC0C13008 +:100CC000D10509F463C008F4F7C1C430D10508F0B8 +:100CD000F6C1F2C1CB3BD10508F466C0EDC1C11528 +:100CE00090E2D90708F0AFC0C11521E0D20708F0A3 +:100CF000E6C1C03FD10508F4DFC18E0110651FC2F7 +:100D0000C03880E5D80700F5C03790E5D90708F06E +:100D1000A3C0C11520E5D20709F4ACC050F4CE0140 +:100D2000905480319F4008F0C7C1DF708E01106A77 +:100D300006C2C13080E5D80709F4AEC0C43190E5E1 +:100D4000D90708F4AFC0B8C1C33820E5D20709F409 +:100D50008EC050F4C13890E5D90709F482C008F07C +:100D600083C000E011EDEBC1C03181E5D80708F484 +:100D7000A3C1C11597E5D90708F436C1CE01905734 +:100D80008115904108F098C1DF7093C101E010E037 +:100D9000D6C1C53AD10509F494C1C63AD10509F0C6 +:100DA00093C102E810E4CBC1C83AD10509F48FC160 +:100DB000C93AD10509F48EC1CA3AD10509F48DC1E9 +:100DC000CB3AD10509F48CC1CC3AD10509F48BC1D9 +:100DD000CD3AD10509F48AC1C03BD10509F489C1D6 +:100DE000CE3AD10509F488C1CF3AD10509F487C1BB +:100DF000C13BD10509F486C1C23BD10509F485C1C7 +:100E0000C33BD10509F484C1C43BD10509F483C1B6 +:100E1000C53BD10509F482C1C63BD10509F481C1A6 +:100E2000C73BD10509F480C1C83BD10509F47FC196 +:100E3000C93BD10509F47EC1CA3BD10509F47DC186 +:100E400000E014E47CC1CE019F700E943B0678C193 +:100E5000DD278E01106C73C1CF70DD278E01146DFC +:100E60006EC100E010ED6BC100E012ED68C100E062 +:100E700013ED65C10E94111C0E944F0A0E941304C9 +:100E80008FEF94E32CE0815090402040E1F700C0C8 +:100E900000000E94682353C18091F2028160809318 +:100EA000F2024DC10E94C923811102C00E94A523F4 +:100EB0000E94DC2390E090931D0380931C03C230BA +:100EC00080E5D80721F480911C03816086C0C4307E +:100ED00090E5D90721F480911C0382607EC0C63062 +:100EE00020E5D20721F480911C03846076C0C830CD +:100EF00080E5D80719F480911C0327C0CA3090E51B +:100F0000D90721F480911C03806167C0CC3020E5B3 +:100F1000D20721F480911C0380625FC0CE3080E54F +:100F2000D80721F480911C03806457C0C03190E53C +:100F3000D90721F480911C0380684FC0C23120E59D +:100F4000D20729F480911C038460886046C0C330B6 +:100F500080E5D80721F480911C038E7F3EC0C53008 +:100F600090E5D90721F480911C038D7F36C0C730EE +:100F700020E5D20721F480911C038B7F2EC0C9305D +:100F800080E5D80719F480911C0326C0CB3090E58A +:100F9000D90721F480911C038F7E1FC0CD3020E53E +:100FA000D20721F480911C038F7D17C0CF3080E5DC +:100FB000D80721F480911C038F7B0FC0C13190E5CD +:100FC000D90721F480911C038F7707C0C331D04526 +:100FD00031F480911C038B7F877F80931C03809169 +:100FE0001C030E94E023ABC08D2F99278F70992797 +:100FF00081309105D9F49E012370332702C0880FF8 +:10100000991F2A95E2F79C688E0144E0000F111F9A +:101010004A95E1F700271370802B912B53E0CC0FFA +:10102000DD1F5A95E1F7C076DD272FC0823091058C +:1010300031F4DC2FCC278E01016F106A80C0833021 +:10104000910569F4CE018370992701E010E002C098 +:10105000000F111F8A95E2F7C8019C680FC0843009 +:101060009105B9F4CE018370992701E010E002C028 +:10107000000F111F8A95E2F7C8019A6823E0CC0F90 +:10108000DD1F2A95E1F7C07ED7708C010C2B1D2B3C +:1010900056C08530910531F4DC2FCC278E01046FCA +:1010A000106A4DC0069709F04AC0CF71DD27DC2FCA +:1010B000CC278E01106243C000E010E040C08E01DA +:1010C0003EC001E810E43BC003E810E438C002EE83 +:1010D00014E435C009EE14E432C00AEE14E42FC063 +:1010E00005EB14E42CC006EB14E429C007EB14E470 +:1010F00026C00CEC14E423C00DEC14E420C003E87B +:1011000015E41DC00AE815E41AC002E915E417C089 +:1011100004E915E414C001E216E411C003E216E488 +:101120000EC004E216E40BC005E216E408C006E2B5 +:1011300016E405C007E216E402C00AE216E4C8019C +:10114000DF91CF911F910F9108959CE0799FF0015D +:10115000112490E3899FE00DF11D1124E60FF11D8C +:10116000EE0FFF1FEC52FE4F85919491803E91054A +:10117000E0F4803C910558F58133910509F46FC086 +:1011800048F48932910509F463C08A32910509F463 +:101190006DC072C089339105E9F082389105D1F0B4 +:1011A0008533910509F44DC067C0833E910581F1F7 +:1011B00038F4803E9105B9F0823E9105D9F05CC0CB +:1011C000863E910561F1873E9105A1F155C00E94CF +:1011D0003306089520911C0320FD02C021FF4CC05E +:1011E00080EE90E049C080911C0380FFF9CF89E335 +:1011F00090E042C080911C0382FF0EC080911C03CE +:1012000084FF03C080E090E037C083EE90E034C0FC +:1012100080911C0382FFF2CF82EE90E02DC080917E +:101220001C0383FF0BC080911C0384FDEBCF87EE72 +:1012300090E022C080911C0383FFF5CF86EE90E002 +:101240001BC080911C0385FF07C089E290E014C099 +:1012500080911C0385FFF9CF85E390E00DC080915C +:101260001C0386FF07C08AE290E006C080911C0341 +:1012700086FFF9CF81E390E00E94430608950C9425 +:101280001403E82FF0E0E25BFE4F8081E82FEF705F +:10129000F0E082958F7021E030E0A90102C0440F98 +:1012A000551F8A95E2F740A308950F931F93CF939C +:1012B000DF9385B7806885BF85B7806885BFC3E049 +:1012C000D0E001E010E0FE01E25BFE4F8081E82FFC +:1012D000EF70F0E021A182958F70A80102C0440F49 +:1012E000551F8A95E2F7CA01822B81A38C2F0E9499 +:1012F0004109219740F78BE090E061E070E0FC014C +:10130000EE5BFE4F2081E22FEF70F0E042A12295CC +:101310002F70DB0102C0AA0FBB1F2A95E2F79D01C7 +:10132000242B22A3019758F7DF91CF911F910F91A2 +:101330000C94BE03EF92FF920F931F93CF93DF9312 +:1013400000E212E0C3E0EE24E394F12CD5E08C2F10 +:101350000E9441098BE090E040E050E0FC01EE5B30 +:10136000FE4F6081E62FEF70F0E020A130E0629543 +:101370006F7002C0359527956A95E2F720FD09C088 +:101380009701082E02C0220F331F0A94E2F7422B66 +:10139000532B019718F7F801929182918F018417CE +:1013A000950721F051834083D09305018C2F0E9433 +:1013B0004109C15060F68091050187FD2CC0815024 +:1013C000809305018F3F39F08FE99FE00197F1F796 +:1013D00000C0000020C080911E0290911F029093D7 +:1013E00027028093260280911C0290911D02909307 +:1013F00025028093240280911A0290911B029093FF +:1014000023028093220280911802909119029093F6 +:101410002102809320020E94C00381E0DF91CF91DE +:101420001F910F91FF90EF900895E82FF0E0EE0FDD +:10143000FF1FE05EFD4F80819181089508950F9315 +:101440001F93CF9308E212E0C0E0F80192918291DD +:101450008F010E948522C80FF2E000321F07A9F712 +:101460008C2FCF911F910F9108950E94C923811154 +:1014700002C00E94A5230E94EE23809307033E9A98 +:10148000809171008D7F8093710082E08093900045 +:101490008AE18093910081E080932A0208958091EF +:1014A0002A02811102C00E94350A10927A0210921B +:1014B0007902809171008D7F8093710080919000FE +:1014C0008F738093900010923C0210923B02109216 +:1014D00073021092740210927502109276021092AA +:1014E000720210927102E1E5F2E0A1E4B2E0119221 +:1014F0001192119211921D921D9282E0E137F8072C +:10150000B1F70895CF92DF92EF92FF920F931F935E +:10151000CF93DF9320913B02222309F484C06B0117 +:101520007C0180912A02811102C00E94350A01E7E4 +:1015300012E0C7E0D0E0A7019601F80192918291F4 +:10154000729162918F010E943929811131C0FE018F +:10155000EE0FFF1FEE0FFF1FEF5AFD4F108211829B +:1015600012821382DE01AA0FBB1FAF5BBD4F119623 +:101570001C921E92C730D105E9F021964481558115 +:1015800066817781408351836283738314821582DD +:101590001682178212968D919C91139711969C93A7 +:1015A0008E9313961C921E92129734961296E2CF47 +:1015B000219708F68091790290917A02019797FD20 +:1015C00005C090937A028093790204C010927A0247 +:1015D000109279028091790290917A02209177029B +:1015E000309178022817390724F01092780210926F +:1015F0007702892BC1F4809171008D7F80937100F7 +:10160000809190008F7380939000109273021092DB +:101610007402109275021092760210927202109269 +:10162000710210923B02DF91CF911F910F91FF90B9 +:10163000EF90DF90CF9008951F920F920FB60F9208 +:1016400011244F925F926F927F928F929F92AF92EE +:10165000BF92CF92DF92EF92FF922F933F934F93DF +:101660005F936F937F938F939F93AF93BF93CF932A +:10167000DF93EF93FF9380913B02882309F49BC192 +:10168000C0917902D0917A021C161D060CF093C10C +:1016900040902B0250902C0260902D0270902E02F0 +:1016A00020E030E0A901C301B2010E94E42A18162B +:1016B0000CF065C0C130D10509F452C080917702A9 +:1016C00090917802BE010E94B62C7C019093780222 +:1016D0008093770280903D0290903E02A0903F025E +:1016E000B090400220E030E040E85FE3C501B40183 +:1016F0000E94D52860933D0270933E0280933F0282 +:1017000090934002F701EE0FFF1FEE0FFF1FEF5AFD +:10171000FD4FA301920160817181828193810E94BA +:101720003D2920E030E040E05EE30E94E82A9B0192 +:10173000AC01C501B4010E94E42A18168CF4C7015B +:101740000196BE010E94B62C909378028093770296 +:1017500010923D0210923E0210923F0210924002FF +:10176000E0917702F0917802EE0FFF1FEE0FFF1F5E +:10177000EF5AFD4F6081718182819381D0C0C0900A +:101780007302D0907402E0907502F090760220E02F +:1017900030E0A901C701B6010E94392921978823A9 +:1017A00009F4A2C0FE01EE0FFF1FEE0FFF1FEF5A5C +:1017B000FD4F80809180A280B380A5019401C70174 +:1017C000B6010E94392987FF31C0A501940160E06C +:1017D00070E08CED93EC0E943D2920E030E040E485 +:1017E00051E40E943D2920E030E040E05FE30E94A8 +:1017F000E82A9B01AC0160E070E080E090E40E9488 +:101800004B2B9B01AC01C501B4010E94E82A9B014E +:10181000AC01C701B6010E94392987FF07C0A701A3 +:10182000960160E070E08CED93E439C0A50194016D +:10183000C701B6010E94E42A18160CF055C0A50194 +:10184000940160E070E08CED93E40E943D2920E07B +:1018500030E040E451E40E943D2920E030E040E0E7 +:101860005FE30E94E82A9B01AC0160E070E080E049 +:1018700090E40E944B2B9B01AC01C501B4010E9476 +:10188000E82A9B01AC01C701B6010E94E42A1816A0 +:101890005CF5A701960160E070E08CED93EC0E948E +:1018A0003D2920E030E040E451E40E943D2920E061 +:1018B00030E040E05FE30E94E82A9B01AC0160E079 +:1018C00070E080E090E40E944B2B9B01AC01C701CB +:1018D000B6010E94E82A60937302709374028093A9 +:1018E00075029093760213C0FE01EE0FFF1FEE0FFC +:1018F000FF1FEF5AFD4F80819181A281B3818093B8 +:10190000730290937402A0937502B0937602609173 +:101910007302709174028091750290917602209109 +:101920002802309129022F3F4FEF340731F02F5F0B +:101930003F4F30932902209328020E94C40E6B016E +:101940007C0120E034E244EF51E40E94392987FF12 +:1019500008C086EFC82E88E2D82E84EFE82E81E4F6 +:10196000F82E20E030E040E051E4C701B6010E94CB +:10197000E82A9B01AC0160E074E284E79BE40E94EA +:101980003D296B017C010E94AA2970939700609306 +:101990009600209106013091070140910801509175 +:1019A0000901C701B6010E94E82A0E94AA29709382 +:1019B00099006093980080913C02882309F433C118 +:1019C000C0903702D0903802E0903902F0903A028D +:1019D00020E030E0A901C701B6010E94E42A1816F0 +:1019E000D4F580912802909129028F3F2FEF920722 +:1019F00029F001969093290280932802C701B6012D +:101A00000E94C40E20E030E040E051E40E94E82A49 +:101A10009B01AC0160E074E284E79BE40E943D29F5 +:101A20006B017C010E94AA29709397006093960035 +:101A30002091060130910701409108015091090160 +:101A4000C701B6010E94E82A0E94AA297093990052 +:101A50006093980008C01092970010929600109220 +:101A600099001092980060913102709132026F5F7C +:101A70007F4F709332026093310220919600309133 +:101A8000970080E090E0232BF1F0C0919600D09178 +:101A900097000E94D6296B017C01BE0180E090E096 +:101AA0000E94D6299B01AC016091330270913402EF +:101AB00080913502909136020E943D2920E03FEF4F +:101AC0004FE757E410C00E94D6296B017C0120E04B +:101AD00030EE4FEF54E46091330270913402809104 +:101AE0003502909136020E94E82A9B01AC01C701A1 +:101AF000B6010E94E42A87FD96C080912F028F5F75 +:101B000080932F0290E02091030330910403821709 +:101B10009307A0F080910E03882319F010922F02F2 +:101B20000DC0809171008D7F809371008091900035 +:101B30008F738093900010923C027DC080913002A0 +:101B4000C0912F02811128C0C0900803D0900903D2 +:101B5000E0900A03F0900B0320E030E0A901C701F8 +:101B6000B6010E94E42A1816BCF481E0809330028A +:101B700010923702109238021092390210923A02F3 +:101B8000C0923302D0923402E0923502F0923602D3 +:101B9000C150C0932F0243C010923002109229020C +:101BA00010922802E0910503F091060348E0C49FDB +:101BB000E00DF11D112480819181A281B381809378 +:101BC000370290933802A0933902B0933A0220E092 +:101BD00030E040E85EE364817581868197810E94F0 +:101BE000E82A6B017C0180910A01682F70E080E097 +:101BF00090E00E94D62920E030E048EC52E40E94B8 +:101C00003D299B01AC01C701B6010E94E82A6093FF +:101C1000330270933402809335029093360210920F +:101C20003202109231028091070380FD04C01092AD +:101C30003C0210923B02FF91EF91DF91CF91BF9157 +:101C4000AF919F918F917F916F915F914F913F9154 +:101C50002F91FF90EF90DF90CF90BF90AF909F902B +:101C60008F907F906F905F904F900F900FBE0F906E +:101C70001F901895CF92DF92EF92FF92CF93DF9350 +:101C80006B017C01EA0180912A02811102C00E944D +:101C9000350A8091070380FF46C0809179029091B8 +:101CA0007A0208970CF03FC0809171008D7F80937D +:101CB000710080913C0281110E944F0A81E0809363 +:101CC0003B02109229021092280220E030E0A90184 +:101CD000C701B6010E94E42A1816DCF4809179024B +:101CE00090917A02FC01EE0FFF1FEE0FFF1FEF5ADB +:101CF000FD4FC082D182E282F382FC01EE0FFF1F12 +:101D0000EF5BFD4FD183C083019690937A0280935D +:101D100079028091710082608093710080919000BF +:101D2000806880939000DF91CF91FF90EF90DF90DB +:101D3000CF900895809107038170089580910703E3 +:101D40008160809307030E94F2230C941A0480910F +:101D500007038E7F809307030C94F22380917B020C +:101D600090E0019666E070E00E94B62C80937B02C2 +:101D7000089580917B0290E0019766E070E00E94F8 +:101D8000B62C80937B0208958F929F92AF92BF9260 +:101D9000CF92DF92EF92FF920F931F93CF93DF9337 +:101DA0006B017C01C0912802D0912902BE0180E024 +:101DB00090E00E94D6294B015C01A701960160E0EA +:101DC00070E08CE594E40E943D299B01AC01C501C3 +:101DD000B4010E94E82A0E94AA2920917B022330A4 +:101DE00009F473C028F4222351F02130E9F02CC10A +:101DF000243009F4A0C0253009F4E0C025C180E0FA +:101E000090E0A0E0BFE38093060190930701A093C8 +:101E10000801B093090110922B0210922C0210922B +:101E20002D0210922E0210C110922B0210922C0241 +:101E300010922D0210922E026431710540F46A3026 +:101E4000710560F520E030E040E85EE32BC0693CBE +:101E5000710508F0AAC080E090E00E94D62920E039 +:101E600030E040EA51E40E94D42820E030E044E32E +:101E700053E40E943D299B01AC010E94E82A20E026 +:101E800030E040E05EE30E94E82A9B01AC0160E0A4 +:101E900070E080E09EE30E94D42844C020E030E05F +:101EA00040E05FE3C701B6010E94E82A6B017C01B4 +:101EB00080E090E0A0E0BEE38093060190930701EC +:101EC000A0930801B0930901BFC010922B02109299 +:101ED0002C0210922D0210922E024AE0469F900191 +:101EE000479F300D1124C90168EB7BE00E94A22CB2 +:101EF000BC016C5D754077FF03C0719561957109F8 +:101F0000882777FD8095982F0E94D8292EE333ECFF +:101F10004EE259E30E94E82A20E030E040EC5EE324 +:101F20000E94D528609306017093070180930801F1 +:101F30009093090189C010922B0210922C021092EA +:101F40002D0210922E02CE0183709927892BE1F089 +:101F5000BE016170772780E090E00E94D62920E0E2 +:101F600030E040E05EE30E94E82A20E030E040E418 +:101F70005FE30E94D5286093060170930701809368 +:101F80000801909309010CC080E090E0A0E0BFE35D +:101F90008093060190930701A0930801B093090173 +:101FA000C770DD27CD2B09F04FC0109206011092AB +:101FB0000701109208011092090146C010922B02ED +:101FC00010922C0210922D0210922E0200E010E0CE +:101FD00020E03FE3009306011093070120930801DE +:101FE000309309016739710578F180E090E00E9433 +:101FF000D62920E030E047E153E40E94D42820E0D5 +:1020000030E04AE754E40E943D2920E030E048E413 +:1020100052E40E94E82A20E030E040EA51E40E94C5 +:102020001A2A0E94A529660F771F660F771FFB01EA +:10203000EE5AFE4F2081318142815381C701B601A2 +:102040000E94E82A6B017C01C701B601DF91CF91A4 +:102050001F910F91FF90EF90DF90CF90BF90AF90C6 +:102060009F908F90089580918C020895CF93DF9375 +:1020700000D01F92CDB7DEB79C018091130384304E +:1020800019F593E099833B832A839093E9008FEFBE +:102090009091E800815095FD06C095ED9A95F1F775 +:1020A00000008111F5CF8091E80085FF0DC040E070 +:1020B00050E063E070E0CE0101960E94971280919B +:1020C000E8008E778093E8000F900F900F90DF91DB +:1020D000CF910895CF93DF9300D01F92CDB7DEB795 +:1020E00020911303243021F522E029839B838A83E6 +:1020F00083E08093E9008FEF9091E800815095FD97 +:1021000006C095ED9A95F1F700008111F5CF809109 +:10211000E80085FF0DC040E050E063E070E0CE01D4 +:1021200001960E9497128091E8008E778093E800D4 +:102130000F900F900F90DF91CF910895209113038E +:102140002430F1F422E02093E9002FEF3091E800F1 +:10215000215035FD06C035ED3A95F1F7000021110B +:10216000F5CF2091E80025FF0BC040E050E065E08E +:1021700070E00E9497128091E8008E778093E800CB +:102180000895CF93DF93EC0190911303943009F0FD +:1021900046C0809115018823D9F0809116018823CB +:1021A000B9F09093E9008FEF9091E800815095FD90 +:1021B00006C095E19A95F1F700008111F5CF809165 +:1021C000E80085FF2CC040E050E060E170E017C0FF +:1021D00081E08093E9008FEF9091E800815095FDB8 +:1021E00006C095ED9A95F1F700008111F5CF809129 +:1021F000E80085FF14C040E050E068E070E0CE01E8 +:102200000E9497128091E8008E778093E80080E129 +:10221000FE01ACE7B2E001900D928A95E1F7DF9103 +:10222000CF91089580911203811109C00E942C144E +:102230000E9489148091E20084608093E2000895F6 +:10224000109212030895089508950C94D02242E04C +:1022500061EC81E00E94A61342E061EC82E00E9402 +:10226000A61342E061EC83E00E94A61342E161EC18 +:1022700084E00C94A61380911503833009F455C0B3 +:1022800030F4813071F0823009F48EC008958A30C4 +:1022900009F47AC08B3009F460C0893009F09CC021 +:1022A00020C080911403813A09F096C08091E80023 +:1022B000877F8093E8008091180390911903892B00 +:1022C00021F460E18CE792E003C060E080E090E000 +:1022D00070E00E94E2128091E8008B778093E80022 +:1022E000089580911403813209F076C0809118031B +:1022F00090911903009719F0039709F06DC0809130 +:10230000E800877F8093E8008091E80082FD05C0A7 +:10231000809113038111F8CF5FC08091F100809309 +:102320008C028091E8008B7753C080911403813A2E +:1023300009F052C08091180390911903892B09F07C +:102340004BC08091E800877F8093E8008091E8008F +:1023500080FFFCCF8091150136C08091140381323B +:10236000D9F58091180390911903892BA9F58091D3 +:10237000E800877F8093E8000E94DB1380911603BA +:10238000809315010C94111C80911403813221F566 +:102390008091E800877F8093E8000E94DB138091A2 +:1023A000170380938D02089580911403813AA1F45C +:1023B0008091E800877F8093E8008091E80080FFAB +:1023C000FCCF80918D028093F1008091E8008E77A0 +:1023D0008093E8000C94DB13089584B7877F84BF53 +:1023E00088E10FB6F89480936000109260000FBEF1 +:1023F00090E080E80FB6F8948093610090936100BC +:102400000FBE0E947E170E942C140E948914809196 +:10241000E20084608093E20078940E940F170E948B +:1024200080178BE091E00E942A178091130385307A +:1024300069F40E949122809111038823B1F30E94D4 +:10244000BF22882391F30E948112EFCF0E94881748 +:10245000ECCF292F332723303105C9F064F4213024 +:10246000310581F02230310509F043C08DE690E05E +:1024700020E134E042C021323105F1F02232310551 +:1024800041F137C082E190E02DE734E036C0992772 +:102490008130910541F08230910541F0892B49F559 +:1024A000ECE0F4E005C0EEEDF3E002C0E4EBF3E0B5 +:1024B000849190E09F0121C06430D8F4E62FF0E0D1 +:1024C000EE0FFF1FE255FE4F2081318189E090E041 +:1024D00014C0643070F470E0FB01EE0FFF1FEA558A +:1024E000FE4F20813181FB01EE55FE4F808190E04F +:1024F00004C080E090E020E030E0FA0131832083E6 +:10250000089580E189BD82E189BD09B400FEFDCF57 +:102510008091D8008F7D8093D8008091E000826008 +:102520008093E0008091E00081FDFCCF0895CF9280 +:10253000DF92EF92FF920F931F93CF93DF93EC0103 +:102540008B016A010E94FA13811133C0C114D104B6 +:1025500039F0F60180819181081B190BC80FD91F32 +:10256000E12CF12C0115110519F18091E80085FD90 +:1025700016C08091E8008E778093E800C114D104E2 +:1025800049F0F60180819181E80EF91EF182E08226 +:1025900085E00FC00E94FA13882321F30AC08991B5 +:1025A0008093F10001501109FFEFEF1AFF0ADACF13 +:1025B00080E0DF91CF911F910F91FF90EF90DF901E +:1025C000CF90089520911A0330911B0326173707E7 +:1025D00048F06115710539F42091E8002E772093B9 +:1025E000E80001C0B90140E061157105A9F1209131 +:1025F0001303222309F443C0253009F442C020917B +:10260000E80023FD40C02091E80022FD32C0209167 +:10261000E80020FFE9CF4091F3002091F20030E084 +:10262000342BFC01CF016115710559F028303105BB +:1026300040F481918093F100615071092F5F3F4F09 +:10264000F1CF41E02830310509F040E02091E80069 +:102650002E772093E800C8CF4111C9CF0AC08091DE +:102660001303882361F0853061F08091E80083FDD9 +:102670000AC08091E80082FFF2CF80E0089582E0F6 +:10268000089583E0089581E0089520911A03309120 +:102690001B032617370748F06115710539F420919F +:1026A000E8002E772093E80001C0B901FC0120E08A +:1026B0006115710591F180911303882309F440C0DD +:1026C000853009F43FC08091E80083FD3DC08091D2 +:1026D000E80082FD2FC08091E80080FFE9CF2091C3 +:1026E000F3008091F20090E0922B6115710559F092 +:1026F0008830910540F424912093F1003196615087 +:1027000071090196F2CF21E0089709F020E080914D +:10271000E8008E778093E800CBCF2111CCCF0AC0A0 +:1027200080911303882361F0853061F08091E80087 +:1027300083FD0AC08091E80082FFF2CF80E0089517 +:1027400082E0089583E0089581E00895982F9730FE +:1027500058F59093E900981739F07091EC002091AA +:10276000ED005091F00003C0242F762F50E021FFA0 +:1027700019C03091EB003E7F3093EB003091ED00BB +:102780003D7F3093ED003091EB0031603093EB00F2 +:102790007093EC002093ED005093F0002091EE0038 +:1027A00027FF07C09F5FD3CF8F708093E90081E040 +:1027B000089580E008958091140387FF11C08091EF +:1027C000E80082FD05C0809113038111F8CF11C08C +:1027D0008091E8008B770BC080911303882349F028 +:1027E0008091E80080FFF8CF8091E8008E77809399 +:1027F000E80008952091E4003091E50095E64091CD +:10280000EC00842F817040FF22C08091E80080FDA1 +:102810001CC080911303882391F0853091F0809142 +:10282000EB0085FD10C04091E4005091E500421797 +:10283000530729F39A01915011F784E0089582E03B +:10284000089583E0089581E0089580E0089540911F +:10285000E80042FFDECF08950E949A140E94A2145D +:10286000E0EEF0E0808181608083E8EDF0E080813F +:102870008F77808319BCA7EDB0E08C918E7F8C930D +:1028800080818F7E80831092120308950F931F938F +:10289000CF93DF930E949A140E94A214C8EDD0E057 +:1028A00088818F77888388818068888388818F7DFD +:1028B000888319BC1092130310920F031092110316 +:1028C0001092100300EE10E0F80180818B7F80836E +:1028D00088818160888342E060E080E00E94A613E6 +:1028E000E1EEF0E080818E7F8083E2EEF0E0808197 +:1028F00081608083808188608083F80180818E7F01 +:102900008083888180618883DF91CF911F910F91AF +:102910000895E8EDF0E080818F7E8083E7EDF0E0C0 +:1029200080818160808384E082BF81E08093120394 +:102930000C944614E8EDF0E080818E7F8083109245 +:10294000E20008951092DA001092E10008951F92BB +:102950000F920FB60F9211242F933F934F935F93D3 +:102960006F937F938F939F93AF93BF93EF93FF9357 +:102970008091E10082FF0BC08091E20082FF07C0DE +:102980008091E1008B7F8093E1000E940E1780917F +:10299000DA0080FF1FC08091D80080FF1BC08091AB +:1029A000DA008E7F8093DA008091D90080FF0DC01D +:1029B00080E189BD82E189BD09B400FEFDCF81E0DF +:1029C000809313030E94121105C019BC10921303C7 +:1029D0000E9420118091E10080FF19C08091E200E7 +:1029E00080FF15C08091E2008E7F8093E20080918D +:1029F000E20080618093E2008091D8008062809341 +:102A0000D80019BC85E0809313030E9424118091A3 +:102A1000E10084FF30C08091E20084FF2CC080E19F +:102A200089BD82E189BD09B400FEFDCF8091D80047 +:102A30008F7D8093D8008091E1008F7E8093E100AC +:102A40008091E2008F7E8093E2008091E2008160BD +:102A50008093E20080910F03882311F084E007C087 +:102A60008091E30087FD02C081E001C083E0809394 +:102A700013030E9425118091E10083FF29C08091FA +:102A8000E20083FF25C08091E100877F8093E10011 +:102A900082E08093130310920F038091E1008E7FF8 +:102AA0008093E1008091E2008E7F8093E20080912C +:102AB000E20080618093E20042E060E080E00E94FA +:102AC000A6138091F00088608093F0000E9423118B +:102AD000FF91EF91BF91AF919F918F917F916F91F6 +:102AE0005F914F913F912F910F900FBE0F901F90CC +:102AF00018951F920F920FB60F9211242F933F93A8 +:102B00004F935F936F937F938F939F93AF93BF93F5 +:102B1000CF93DF93EF93FF93C091E900CF70809143 +:102B2000EC00D82FD17080FDD0E81092E9008091A0 +:102B3000F000877F8093F00078940E94BD1510927A +:102B4000E9008091F00088608093F000CD2BCF7079 +:102B5000C093E900FF91EF91DF91CF91BF91AF91C9 +:102B60009F918F917F916F915F914F913F912F91A5 +:102B70000F900FBE0F901F9018951F93CF93DF9368 +:102B8000CDB7DEB7AA970FB6F894DEBF0FBECDBFA4 +:102B9000E4E1F3E088E08E0F9091F10091938E13C1 +:102BA000FBCF0E943B118091E80083FF1FC1809101 +:102BB000140390911503492F50E04A30510508F055 +:102BC00015C1FA01EA5AFF4F0C94CA2C803881F0E3 +:102BD000823809F00BC1809118038F708093E9004F +:102BE0008091EB0085FB882780F91092E90006C0F0 +:102BF0008091100390911103911182609091E800EF +:102C0000977F9093E8008093F1001092F100C8C084 +:102C1000282F2D7F09F0EAC0882319F0823061F057 +:102C2000E5C080911603813009F0E0C0933009F0CF +:102C300080E0809311032BC080911603811127C07F +:102C4000809118038F7009F4D1C08093E90020911E +:102C5000EB0020FF1CC0933021F48091EB008062D8 +:102C600014C09091EB0090619093EB0021E030E074 +:102C7000A90102C0440F551F8A95E2F74093EA006C +:102C80001092EA008091EB0088608093EB00109234 +:102C9000E9008091E800877F86C08111A7C010916C +:102CA00016031F778091E3008078812B8093E300E7 +:102CB0008091E800877F8093E8000E94DB13809179 +:102CC000E80080FFFCCF8091E30080688093E30000 +:102CD000111102C082E001C083E08093130386C01B +:102CE0008058823008F082C08091160390911703BB +:102CF0008C3D53E0950779F583E08A838AE28983E6 +:102D00004FB7F894DE01139620E03EE051E2E32F46 +:102D1000F0E050935700E49120FF03C0E295EF707C +:102D20003F5FEF708E2F90E0EA3010F0C79601C041 +:102D3000C0968D939D932F5F243149F74FBF8091AB +:102D4000E800877F8093E8006AE270E0CE01019698 +:102D50000E94E21214C0AE014F5F5F4F60911803F2 +:102D60000E942912BC01009709F440C09091E8002C +:102D7000977F9093E80089819A810E944513809102 +:102D8000E8008B778093E80031C0803879F5809136 +:102D9000E800877F8093E80080910F038093F10023 +:102DA0008091E8008E778093E8000E94DB131EC0BC +:102DB00081111CC0909116039230C0F48091E800FC +:102DC000877F8093E80090930F030E94DB1380912C +:102DD0000F03811106C08091E30087FD02C081E0EE +:102DE00001C084E0809313030E9427118091E800C2 +:102DF00083FF0AC08091E800877F8093E80080917C +:102E0000EB0080628093EB00AA960FB6F894DEBFC9 +:102E10000FBECDBFDF91CF911F9108950895CF933D +:102E2000809113038823A1F0C091E900CF709091A5 +:102E3000EC00892F817090FD80E8C82B1092E9008A +:102E40008091E80083FD0E94BD15CF70C093E9001A +:102E5000CF91089590939302809392020895E09108 +:102E60009202F0919302309721F00190F081E02DD1 +:102E7000099480E00895E0919202F09193023097D6 +:102E800021F00280F381E02D09940895E0919202EF +:102E9000F0919302309721F00480F581E02D0994A0 +:102EA000089520919002309191028217930771F05A +:102EB0009093910280939002E0919202F09193029C +:102EC000309721F00680F781E02D09940895209134 +:102ED0008E0230918F028217930771F090938F02C8 +:102EE00080938E02E0919202F0919302309721F04C +:102EF0000084F185E02D0994089508950C947D17C0 +:102F00000E9404230E9455090E948A230C943928A8 +:102F10005F926F927F928F929F92AF92BF92CF9269 +:102F2000DF92EF92FF920F931F93CF93DF9300D026 +:102F300000D01F92CDB7DEB70E949A099DE9C92E35 +:102F400092E0D92E03E010E0AA24A394B12C502ED5 +:102F5000802F0E94150A4C01F601729062906F0159 +:102F60006826792661147104A1F40150110978F7DB +:102F70008FEF89838A831B820E940D238160782FC3 +:102F80009D838C8349815A816B818D810E94381881 +:102F900038C08091F20281FD0E941E0A2BE030E0D1 +:102FA0007501022E02C0EE0CFF1C0A94E2F7C70165 +:102FB00086219721892B09F129835A828E209F200F +:102FC00091E0892809F490E09B830E940D238160A1 +:102FD000782F9D838C8349815A816B818D810E94DA +:102FE0003818000F111FF801EB56FD4F80819181B9 +:102FF000E826F926F182E08204C02150310980F6EA +:10300000B4CF0E947125109194020E942F171817B7 +:10301000D1F00E942F17809394020F900F900F9081 +:103020000F900F90DF91CF911F910F91FF90EF9034 +:10303000DF90CF90BF90AF909F908F907F906F90D8 +:103040005F900C943F090F900F900F900F900F908E +:10305000DF91CF911F910F91FF90EF90DF90CF9074 +:10306000BF90AF909F908F907F906F905F900895EA +:10307000CF93DF93CDB7DEB72B970FB6F894DEBFB3 +:103080000FBECDBF4F83588769877A878B87DE0154 +:10309000119686E0FD0111928A95E9F785E0FE011F +:1030A000379601900D928A95E1F749815A816B819B +:1030B0007C818D819E810E94AF1E2B960FB6F89465 +:1030C000DEBF0FBECDBFDF91CF910895CF93882390 +:1030D00009F4C2C0C82F823859F40E942F1781FD0D +:1030E000BBC089E30E9489210E94562289E30CC05B +:1030F000833879F40E942F1780FDAEC083E50E94CB +:1031000089210E94562283E50E94CB21CF910C9405 +:103110005622843859F40E942F1782FD9DC087E4FF +:103120000E9489210E94562287E4EECF8CEF8C0FFB +:10313000813A48F48C2F0E94A12781118DC08C2FD9 +:103140000E948921E3CF80E28C0F883048F4C77059 +:1031500081E001C0880FCA95EAF70E940F22D6CFFE +:103160008BE58C0F833078F4C53A29F0C63A31F0FC +:1031700083E890E005C081E890E002C082E890E03A +:10318000CF910C94511788E58C0F833108F064C0FF +:10319000C83A39F1C93A41F1CA3A49F1CB3A51F149 +:1031A000CC3A59F1CD3A61F1C03B69F1CE3A71F1B7 +:1031B000CF3A79F1C13B81F1C23B89F1C33B91F137 +:1031C000C43B99F1C53BA1F1C63BA9F1C73BB1F1A5 +:1031D000C83BB9F1C93BC1F1CA3BC9F180E090E0FD +:1031E00038C082EE90E035C089EE90E032C08AEEC1 +:1031F00090E02FC085EB90E02CC086EB90E029C0DA +:1032000087EB90E026C08CEC90E023C08DEC90E042 +:1032100020C083E891E01DC08AE891E01AC082E9ED +:1032200091E017C084E991E014C081E292E011C0FE +:1032300083E292E00EC084E292E00BC085E292E06D +:1032400008C086E292E005C087E292E002C08AE20E +:1032500092E0CF910C946717CF910895882309F4D9 +:103260004BC0823859F40E942F1781FF45C089E373 +:103270000E9489210E94562289E30CC0833871F490 +:103280000E942F1780FF38C083E50E9489210E9489 +:10329000562283E50E94CB210C945622843859F49F +:1032A0000E942F1782FF28C087E40E9489210E9474 +:1032B000562287E4EFCF9CEF980F913A58F390E2B3 +:1032C000980F983050F4877091E001C0990F8A955B +:1032D000EAF7892F0E941522DFCF9BE5980F9330E4 +:1032E00020F480E090E00C945117885A833120F448 +:1032F00080E090E00C9467170895882321F00E94E5 +:103300000F220C9456220895882321F00E94152242 +:103310000C94562208957F928F929F92AF92BF9203 +:10332000CF92DF92EF92FF920F931F93CF93DF9391 +:103330001F92CDB7DEB77C01C62E772EFC0105812A +:1033400002950F70128111110E942C220E9482217D +:10335000882379F0112369F080E28C0D883048F0E1 +:1033600082E00E946B210E94822191E0D82ED92612 +:1033700001C0D12CE72DE295EF70F0E0E05AFF4F4D +:103380000C94CA2C872D807F072D0F70882311F095 +:103390000295007F112389F0002309F499C180E28E +:1033A0008C0D883020F4802F0E940F2203C0802FC4 +:1033B0000E941F220E9456228BC18C2D0E942E1922 +:1033C000002309F4C3C180E28C0D883020F4802FE3 +:1033D0000E94152203C0802F0E9425220E9456229F +:1033E000B5C1872D807F972D9F70803211F4892F72 +:1033F00003C0892F8295807FCC2021F0F1E0CF1689 +:10340000A1F01DC0112339F0002319F1013009F595 +:103410000E943F229BC1002319F0013009F496C19C +:1034200089830E944222898110C1112321F0063034 +:1034300008F08CC10EC0053008F088C106C1112308 +:1034400059F0002331F0F701958190FF41C19F7041 +:1034500095830E947D197AC1002309F4F6C03EC10C +:10346000872D86958695837090E0009719F00197D7 +:1034700061F06CC1112321F08C2D972D937002C047 +:1034800080E090E00E94511761C1112321F08C2D42 +:10349000972D937002C080E090E00E94671756C19C +:1034A0008C2D112319F00E94792402C00E94E1247E +:1034B0000E9466254BC1872D837009F052C01111FF +:1034C00045C18C2D829586958770880F880F9C2D1D +:1034D0009F70892E912CA12CB12C082E04C0880C31 +:1034E000991CAA1CBB1C0A94D2F7C4FE14C00FE09E +:1034F00010E020E030E0B901A80104C0440F551FDE +:10350000661F771F8A95D2F7CB01BA016095709537 +:103510008095909503C060E070E0CB01272D269543 +:103520002695237030E02230310569F023303105D3 +:1035300089F0682979298A299B292130310571F080 +:103540000E94F71F03C1682979298A299B290E94B3 +:103550001320FCC00E94F71FC501B4010E94DB1FAD +:10356000F5C0112319F0872D817001C0869588233D +:1035700009F4ECC08C2D829586958770880F880F92 +:103580009C2D9F70892E912CA12CB12C082E04C04B +:10359000880C991CAA1CBB1C0A94D2F7C4FE14C048 +:1035A0000FE010E020E030E0B901A80104C0440FB2 +:1035B000551F661F771F8A95D2F7CB01BA01609518 +:1035C00070958095909503C060E070E0CB01272D49 +:1035D000269526952370422F50E04230510569F020 +:1035E0004330510589F0682979298A299B2941307E +:1035F000510571F00E94D120A9C0682979298A2932 +:103600009B290E94ED20A2C00E94D120C501B401D7 +:103610000E94B5209BC08C2D90E0FC01E05EF1097A +:10362000E531F10508F050C0E059FF4F0C94CA2C69 +:103630000C2D0F70872D8F71112321F00E944E20C9 +:10364000802F07CF0E946F20802F0E9484197EC098 +:10365000112341F0053008F079C0872D8F710E9449 +:10366000942074C0063008F071C0F7CF112339F0F0 +:10367000872D8F710E944E2069C01123C9F3872DB9 +:103680008F710E946F2062C0112329F0872D8F71E6 +:103690000E9439205BC00E942F2058C0112351F096 +:1036A000172D1F71812F0E944E2063E0812F0E94F1 +:1036B00062214CC081E00E946B21023008F446C0B8 +:1036C00082E00E946B2142C0112331F0002381F27D +:1036D0008C2D0E9466183AC0002389F28C2D0E941E +:1036E0002E1934C0472D4F706C2DC7010E941D0646 +:1036F0000E94531F2BC0111129C0472D4F7050E05D +:1037000042305105B9F04CF44115510581F041307A +:103710005105E1F40E94612819C04330510569F058 +:103720004430510599F48C2D0E94B3280FC00E949B +:103730004A280CC00E947D2809C00E94902806C01B +:10374000472D4F706C2DC7010E942006DD20F9F037 +:103750000E945E2180FD1BC0F70112820E94582149 +:103760000E944E20C7010E94D61B0E9458210F9034 +:10377000DF91CF911F910F91FF90EF90DF90CF904D +:10378000BF90AF909F908F907F900C946F200F9080 +:10379000DF91CF911F910F91FF90EF90DF90CF902D +:1037A000BF90AF909F908F907F9008950F931F933D +:1037B000CF93DF93EC01888199812B813C81232B6E +:1037C000B9F09F3F11F48F3F99F0CE010E941C0485 +:1037D000882371F0688179818A810E9454218C014B +:1037E0000E9409210E94D01FB801CE010E948B19AE +:1037F000DF91CF911F910F9108950E942C220E947A +:103800003C220E9401220E9456220E9417260E94FA +:10381000662580E090E00E94511780E090E00C94D3 +:1038200067170E941C220C94FD1B0E944921292F1E +:1038300022952F7030E02C3031054CF42A303105C0 +:103840006CF42250310922303105A8F407C02C3025 +:10385000310569F02F30310551F00DC0803F69F01E +:1038600018F4803E40F409C0843F29F406C093FB5D +:10387000882780F9089580E0089581E00895CF9326 +:10388000DF9300D000D01F92CDB7DEB70F900F901E +:103890000F900F900F90DF91CF910895CF93DF930A +:1038A00000D000D000D0CDB7DEB726960FB6F89482 +:1038B000DEBF0FBECDBFDF91CF9108951F93CF9391 +:1038C000DF93C0919D0216E080919E02C81799F087 +:1038D000D0E01C9FF0011D9FF00D1124E156FD4F1B +:1038E0004081518162817381848195810E944E1C47 +:1038F0002196C770E9CFDF91CF911F910895409134 +:10390000CF025091D0026091D1027091D202809189 +:10391000D3029091D4020C944E1C8091D4028295D3 +:103920008F7009F054C08091D102882309F44FC0F0 +:1039300080919D02A0919E026091CF027091D00271 +:103940004091D2025091D302B6E08A1709F43FC0E9 +:1039500090E041155105C1F17F3F11F46F3FA1F196 +:10396000B89FF001B99FF00D1124E156FD4F218160 +:1039700072132AC02081621327C02281211124C022 +:10398000238134812417350710F421503109241B79 +:10399000350B283C3105C0F42091D4022F702061F2 +:1039A0002093D40226E0289FF001299FF00D1124D6 +:1039B000EC55FD4F80818F70806180838FEC92E0A9 +:1039C0000E94D61B0C945E1C01968770BECF089592 +:1039D000CF92DF92EF92FF920F931F93CF93DF93DB +:1039E000CDB7DEB762970FB6F894DEBF0FBECDBF7E +:1039F0008C0185E0F801DE011D9601900D928A95FB +:103A0000E1F7D8014C9111965C91119712966C9147 +:103A100012971396CD90DC9014973091CF0270914D +:103A2000D0028091D2029091D302009709F46BC129 +:103A30007F3F19F43F3F09F466C1E090D102EE20C8 +:103A400009F4C0C02091D402C816D90628F0F601A6 +:103A5000E81BF90BCF0104C0809590958C0D9D1D3E +:103A6000FF24F394883C910578F0F12C207F09F035 +:103A7000C6C07C2DD98AC88A89890E943F1C8FECD8 +:103A800092E00E94D61BB1C0822F807F09F046C011 +:103A9000751314C0341312C0611110C02F7020614F +:103AA0002093D4020E947F1C8FEC92E00E94D61BD0 +:103AB0008091D402D80115968C932EC0CD2819F18F +:103AC0005F3F11F44F3FF9F0F62E61111CC0809159 +:103AD0009D0220919E0236E0821709F45AC090E0C0 +:103AE000389FF001399FF00D1124E156FD4F71818F +:103AF000571306C07081471303C07281711103C050 +:103B000001968770E9CFF62E662309F418C18091DB +:103B1000D40281608093D402F12C11C1751308C0C6 +:103B2000341306C0611104C08091D402D801C3C00F +:103B30004D875E878D859E856A8B0E94151C6A89DC +:103B40008823E1F16623D1F12091D402822F82955E +:103B50008F7090E0029774F08091CF029091D00224 +:103B600098878F831986DB86CA862C87CE010796B5 +:103B70000E94D61B86E0F801AFECB2E001900D92F6 +:103B80008A95E1F70E948D1C0E947F1CFF24F3940C +:103B9000D6C04D875E878D859E850E944921292F3D +:103BA00022952F7030E0223031050CF0BCC09F70A0 +:103BB00009F0B6C0805E883008F4C1C0C8010E9418 +:103BC000D61BE4CFC816D90608F453C0F601E81B8B +:103BD000F90BCF01883C910508F450C0F12C7C2DE5 +:103BE000D98AC88A89890E943F1CEFECF2E086E0FE +:103BF000DF011D928A95E9F70E947F1CA0C0751312 +:103C000014C0341312C0611110C08091D402F801A5 +:103C10008583C8010E94D61B86E0EFECF2E0DF014D +:103C20001D928A95E9F7FE2C8AC04D875E878D85A7 +:103C30009E856A8B0E94151C6A89882309F4BECF71 +:103C4000662309F4BBCF2091D402822F82958F7016 +:103C500090E002970CF48ECF8091CF029091D00229 +:103C60009A8389831B82DD82CC822E83CE010196CA +:103C70007FCF809590958C0D9D1DACCFF62E662341 +:103C800009F49CCF75132EC034132CC02091D4029C +:103C900020FD1FC0822F82958F70D9F0D801159614 +:103CA0002C9315978F3049F08F5F982F9295907FC6 +:103CB000822F8F70892B15968C93C8010E94D61B7A +:103CC00086E0F801AFECB2E001900D928A95E1F741 +:103CD00093CF86E0F801AFECB2E001900D928A95A7 +:103CE000E1F72DC04D875E878D859E850E94151C4E +:103CF000811140CF8091D40281608093D402C801A9 +:103D00000E94D61B1CC0662309F458CF4D875E87DE +:103D10008D859E850E94151C882309F44FCF2ACFDC +:103D2000811148CF0CC0243031050CF047CF9F7073 +:103D300009F440CFF8019581907F09F03BCF8F2D9A +:103D400062960FB6F894DEBF0FBECDBFDF91CF9164 +:103D50001F910F91FF90EF90DF90CF9008951F93E8 +:103D6000CF93DF93CDB7DEB72C970FB6F894DEBFB5 +:103D70000FBECDBF4F83588769877A878B879C8713 +:103D8000CE0107960E94E81C882369F08F819885F0 +:103D90002A853B85232BF1F19F3F09F063C08F3FBC +:103DA00009F060C037C086E0FE013796DE0111964B +:103DB00001900D928A95E1F76F817885EA85FB8500 +:103DC000309741F17F3F11F46F3F21F120919E0226 +:103DD00030E0C90101968770992740919D0250E01B +:103DE0008417950709F447C069837A83FD83EC83C0 +:103DF00096E0929FD001939FB00D1124A156BD4F24 +:103E0000FE01319601900D929A95E1F780939E0202 +:103E10000E945E1C16E080919D0290919E0289177F +:103E2000C1F1189FC001112481569D4F0E94E81CCA +:103E3000882379F1E0919D021E9FF0011124E15643 +:103E4000FD4F4081518162817381848195810E94FF +:103E50004E1C80919D0290E0019687709927809377 +:103E60009D02D9CF4F81588569857A858B859C8540 +:103E70000E944E1CCFCF0E94111C10929E021092E5 +:103E80009D02EFECF2E086E0DF011D928A95E9F7F2 +:103E9000C1CF2C960FB6F894DEBF0FBECDBFDF9119 +:103EA000CF911F910895EF92FF920F931F93CF939D +:103EB000DF938C01009709F46CC0F12CEE24E3949D +:103EC000E8012196F8018491843740F4843008F0A9 +:103ED00051C0813081F0823019F15BC0853709F41F +:103EE00044C0A8F19CE7980F903708F052C08F7734 +:103EF0000E942E1941C00E5F1F4FFE01C49180E247 +:103F00008C0F883048F4C7708E2D01C0880FCA9579 +:103F1000EAF70E942F2214C08C2F0E9466182DC031 +:103F20000E5F1F4FFE01C49180E28C0F883058F461 +:103F3000C7708E2D01C0880FCA95EAF70E943522FE +:103F40000E9456221AC08C2F0E942E1916C00E5F96 +:103F50001F4FFE01C491CC2381F08FE99FE00197B0 +:103F6000F1F700C00000C150F6CF0E5F1F4FFE01F9 +:103F7000F49003C00E9466188E018F2D882309F4E7 +:103F80009FCFEFE9FFE03197F1F700C000008150CB +:103F9000F5CFDF91CF911F910F91FF90EF90089592 +:103FA00008956093D9027093DA028093DB029093B4 +:103FB000DC020C94FD1B0F931F930091D90210910A +:103FC000DA022091DB023091DC02DC01CB01802B94 +:103FD000912BA22BB32B8093D9029093DA02A0935A +:103FE000DB02B093DC021F910F910C94FD1B0F9329 +:103FF0001F930091D9021091DA022091DB023091D7 +:10400000DC02DC01CB0180239123A223B323809324 +:10401000D9029093DA02A093DB02B093DC021F91E5 +:104020000F910C94FD1B0F931F930091D9021091D7 +:10403000DA022091DB023091DC02DC01CB01802727 +:104040009127A227B3278093D9029093DA02A093F5 +:10405000DB02B093DC021F910F910C94FD1B1092B8 +:10406000D5021092D6021092D7021092D8020C9468 +:10407000FD1B41E050E060E070E004C0440F551FBC +:10408000661F771F8A95D2F74093D5025093D602C8 +:104090006093D7027093D8020C94FD1B41E050E06E +:1040A00060E070E004C0440F551F661F771F8A95BB +:1040B000D2F78091D5029091D602A091D702B0910B +:1040C000D802482B592B6A2B7B2B4093D502509357 +:1040D000D6026093D7027093D8020C94FD1B41E086 +:1040E00050E060E070E004C0440F551F661F771F6A +:1040F0008A95D2F740955095609570958091D5023C +:104100009091D602A091D702B091D80248235923AA +:104110006A237B234093D5025093D6026093D70243 +:104120007093D8020C94FD1B41E050E060E070E019 +:1041300004C0440F551F661F771F8A95D2F78091E0 +:10414000D5029091D602A091D702B091D80248270B +:1041500059276A277B274093D5025093D602609354 +:10416000D7027093D8020C94FD1B0F931F930091FC +:10417000D5021091D6022091D7023091D802DC01ED +:10418000CB01802B912BA22BB32B8093D502909344 +:10419000D602A093D702B093D8021F910F910C942E +:1041A000FD1B0F931F930091D5021091D602209111 +:1041B000D7023091D802DC01CB0180239123A223C6 +:1041C000B3238093D5029093D602A093D702B093E5 +:1041D000D8021F910F910C94FD1B0F931F93009118 +:1041E000D5021091D6022091D7023091D802DC017D +:1041F000CB0180279127A227B3278093D5029093E4 +:10420000D602A093D702B093D8021F910F910C94BD +:10421000FD1B0895CF92DF92EF92FF920F931F93B1 +:10422000CF93DF938C01C090D902D090DA02E09056 +:10423000DB02F090DC028091D5029091D602A09131 +:10424000D702B091D802C82AD92AEA2AFB2ACFE19C +:10425000D0E0D701C6010C2E04C0B695A79597955E +:1042600087950A94D2F780FF06C0B8018C2F0E9470 +:10427000A508019721F4219760F780E001C08C2FF9 +:10428000DF91CF911F910F91FF90EF90DF90CF9032 +:104290000895CF93DF93EC010E940A21BE010E9492 +:1042A000A508DF91CF910895CB010E94492108957F +:1042B0008091DD0285958595859508958091DD0233 +:1042C0008770089598E0899F90011124262B2093F0 +:1042D000DD020C944E202091DD0280958223809394 +:1042E000DD02982F977069F430E0482F552747FD7D +:1042F00050952417350729F08595859585950C945B +:104300006F2008959091DD02977081E009F480E0BC +:10431000089590911501992321F090911601911122 +:1043200009C02091170130911801F90132969FEFD1 +:1043300040E01FC0982F9695969596959F3050F522 +:10434000E0911701F0911801E90FF11D877021E04C +:1043500030E0A90102C0440F551F8A95E2F7CA0157 +:104360009181892B818308959F3F39F04F5F4E30B3 +:1043700041F051915813F8CF0DC05111F7CF942F40 +:10438000F5CF9F3F39F0F901E90FF11D97FDFA953F +:1043900082830895089590911501992321F09091B9 +:1043A0001601911109C02091170130911801F901EE +:1043B0003296205F3F4F1FC0982F96959695969501 +:1043C0009F30F0F4E0911701F0911801E90FF11D11 +:1043D000877021E030E0A90102C0440F551F8A9583 +:1043E000E2F7CA01809591818923818308953196EE +:1043F000E217F30729F090819813F9CF1082F7CFD5 +:10440000089581E090E0E0911701F0911801E80F24 +:10441000F91F1082019680319105A9F708959091B6 +:10442000F102892B8093F102089580959091F10219 +:1044300089238093F10208951092F10208959091DA +:10444000F002892B8093F002089580959091F002FC +:1044500089238093F00208951092F00208959091BC +:10446000EF02892B8093EF02089580959091EF02DF +:1044700089238093EF0208951092EF0208958093AC +:10448000DE0208951092DE02089580911701909146 +:104490001801FC0131969C01205F3F4F80E0919113 +:1044A00091118F5FE217F307D1F70895E09117019B +:1044B000F09118018091F1028083E0911701F09151 +:1044C000180190818091F002892B8083E09117017F +:1044D000F091180190818091EF02892B8083809167 +:1044E000DE02882361F0E0911701F09118019081BC +:1044F000892B80830E94452281111092DE028091D7 +:104500001701909118010C943B1720E0009739F0A7 +:10451000AC0141505109842395232F5FF7CF822F9F +:10452000089580911303843039F11092F30220E44E +:1045300088E190E00FB6F894A895809360000FBED4 +:104540002093600080E00E94200380E00E943F09E9 +:1045500083B7817F846083BF83B7816083BF789492 +:10456000889583B78E7F83BF88E10FB6F8948093D8 +:104570006000109260000FBE08950895089580E0D5 +:104580000E9420030E94BD220E949A090E94BE221E +:104590000E941F0A91E0811101C090E0892F0895C7 +:1045A0000E94111C80E00E9420030E9439280E9472 +:1045B0002F170C943F091F920F920FB60F921124E0 +:1045C0008F939F93AF93BF938091F302811113C098 +:1045D0008091F4029091F502A091F602B091F70259 +:1045E0004196A11DB11D8093F4029093F502A09312 +:1045F000F602B093F702BF91AF919F918F910F9008 +:104600000FBE0F901F90189582E084BD93E095BD7A +:104610009AEF97BD80936E0008952FB7F89480911C +:10462000F4029091F502A091F602B091F7022FBF2B +:104630000895CF92DF92EF92FF920F931F932FB7BF +:10464000F8944091F4025091F5026091F602709155 +:10465000F7022FBF6A017B01EE24FF248C0120E0CA +:1046600030E0C016D106E206F30610F441505109BD +:104670009A01281B390BC9011F910F91FF90EF90F0 +:10468000DF90CF9008951F920F920FB60F921124D2 +:104690008F939F93AF93BF938091F4029091F50213 +:1046A000A091F602B091F7020196A11DB11D809371 +:1046B000F4029093F502A093F602B093F702BF9133 +:1046C000AF919F918F910F900FBE0F901F901895F3 +:1046D0000E942C14F8942FEF87EA91E62150804035 +:1046E0009040E1F700C0000087E090EBDC01809390 +:1046F0001E0390931F03A0932003B09321039CE01B +:1047000088E10FB6F894A895809360000FBE90934F +:104710006000FFCF0E94C923811102C00E94A5231F +:104720000E94D4238093F2020E94DC2380931C0316 +:1047300087FB882780F9809316010E94D823682F71 +:1047400070E080E090E00C94D11F6DEE7EEF80E091 +:1047500090E00E94F02C60E082E090E00E94DE2C6D +:1047600060E083E090E00E94DE2C60E084E090E076 +:104770000E94DE2C60E085E090E00E94DE2C60E08C +:1047800086E090E00E94DE2C6FEF87E090E00C94D2 +:10479000DE2C80E090E00E94D82C21E08D3E9E4FE0 +:1047A00009F020E0822F089582E090E00C94D02C54 +:1047B00083E090E00C94D02C84E090E00C94D02C1A +:1047C000682F84E090E00C94DE2C86E090E00C945E +:1047D000D02C682F86E090E00C94DE2C87E090E0EF +:1047E0000C94D02C682F87E090E00C94DE2C809104 +:1047F000FA0280FF0BC060911C0185E0689FB00148 +:10480000112475956795759567952BC081FF09C033 +:1048100060911C0185E0689FB00111247595679532 +:1048200020C082FF07C060911C0185E0689FB00135 +:10483000112417C09091FB029923D1F060911B01C4 +:10484000961788F720911C0185E0289F900111247C +:10485000929FA001939F500D112470E0CA010E9405 +:10486000B62C6038710540F46115710539F002C04D +:1048700065E070E0862F08958FE7089581E0089540 +:104880008091FA0280FF08C060911A0170E075956E +:1048900067957595679521C081FF06C060911A01E3 +:1048A00070E07595679519C082FF04C060911A0188 +:1048B00070E010C09091FB029923C1F06091190142 +:1048C0009617A0F780911A01899FC001112470E00A +:1048D0000E94B62C6038710528F46115710521F02D +:1048E000862F08958FE7089581E0089561E070E0D4 +:1048F000F4CF803F21F40E94F723819504C0813FCB +:1049000029F40E94F7238093FE020895823F21F448 +:104910000E94F723819504C0833F29F40E94F72366 +:104920008093FD020895893F19F40E94402405C038 +:104930008A3F31F40E94402481958093FF020895BC +:104940008B3F21F40E944024819504C08C3F29F4C0 +:104950000E944024809300030895843F21F48091B5 +:10496000FC02816017C0853F21F48091FC028260C7 +:1049700011C0863F21F48091FC0284600BC0873F08 +:1049800021F48091FC02886005C0883F31F4809159 +:10499000FC0280618093FC0208958D3F21F4809198 +:1049A000FA0281600BC08E3F21F48091FA0282608E +:1049B00005C08F3F29F48091FA0284608093FA0247 +:1049C0000895803F39F48091FE0287FF6CC01092F9 +:1049D000FE0269C0813F29F48091FE021816BCF3E3 +:1049E00062C09091FD02823F29F497FF5CC0109253 +:1049F000FD0259C0833F19F41916CCF354C0893F06 +:104A000041F48091FF0218160CF04DC01092FF0285 +:104A10004AC08A3F29F48091FF0287FF44C0F6CF45 +:104A20008B3F39F48091000387FF3DC01092000353 +:104A30003AC08C3F29F4809100031816BCF333C0B0 +:104A4000843F21F48091FC028E7F17C0853F21F4C2 +:104A50008091FC028D7F11C0863F21F48091FC0281 +:104A60008B7F0BC0873F21F48091FC02877F05C0BC +:104A7000883F31F48091FC028F7E8093FC0213C04A +:104A80008D3F21F48091FA028E7F0BC08E3F21F47E +:104A90008091FA028D7F05C08F3F29F48091FA0240 +:104AA0008B7F8093FA028091FD0281110EC080916C +:104AB000FE0281110AC08091FF02811106C080911F +:104AC0000003811102C01092FB0208958CEF92E066 +:104AD0000E9446170E940D239093F9028093F802DA +:104AE00008951F93CF93DF938091F8029091F9027C +:104AF0000E941923AC019091FB02992321F020918F +:104B00001D0130E006C020911E018AE0289F90011F +:104B100011244217530708F486C08091FD02C0910A +:104B2000FE02D091FF0210910003811107C0C11154 +:104B300076C0D11174C0111172C075C09F3F19F0B9 +:104B40009F5F9093FB02181624F40E94F723809332 +:104B5000FD028091FD0287FF05C00E94F723819529 +:104B60008093FD021C1624F40E94F7238093FE021A +:104B70008091FE0287FF05C00E94F72381958093F4 +:104B8000FE026091FD02662339F1C091FE02CC2342 +:104B900019F1772767FD7095872F972F0E94D829E5 +:104BA00023E333E343E35FE30E94E82A0E94A5295D +:104BB0006093FD026C2F772767FD7095872F972FE5 +:104BC0000E94D82923E333E343E35FE30E94E82A0A +:104BD0000E94A5296093FE021D1624F40E94402421 +:104BE0008093FF028091FF0287FF05C00E9440244E +:104BF00081958093FF02111624F40E944024809333 +:104C000000038091000387FF05C00E944024819526 +:104C100080930003DF91CF911F910C9466259F3FF5 +:104C200009F08ECF96CFDF91CF911F910895ECEFD1 +:104C3000F2E085E0DF011D928A95E9F71092FB0210 +:104C40001092FA020895833081F128F4813059F0EE +:104C50008230D1F00895853009F449C0B8F186302A +:104C600009F456C0089580911E01262F30E0280FC8 +:104C7000311D2F3F310524F4680F60931E01089504 +:104C80008FEF80931E01089580911D01262F30E043 +:104C9000280F311D2F3F310524F4680F60931D014B +:104CA00008958FEF80931D01089580911C01262F98 +:104CB00030E0280F311D2F3F310524F4680F609339 +:104CC0001C0108958FEF80931C01089580911B01B2 +:104CD000262F30E0280F311D2F3F310524F4680FB7 +:104CE00060931B0108958FEF80931B0108958091BD +:104CF0001A01262F30E0280F311D2F3F310524F4F3 +:104D0000680F60931A0108958FEF80931A01089538 +:104D100080911901262F30E0280F311D2F3F3105DA +:104D200024F4680F6093190108958FEF809319019F +:104D30000895833011F128F4813049F0823091F0E8 +:104D40000895853081F120F18630C1F10895809178 +:104D50001E01681720F4861B80931E01089510928F +:104D60001E01089580911D01681720F4861B809311 +:104D70001D01089510921D01089580911C0168176E +:104D800020F4861B80931C01089510921C01089545 +:104D900080911B01681720F4861B80931B010895E6 +:104DA00010921B01089580911A01681720F4861B48 +:104DB00080931A01089510921A01089580911901A3 +:104DC000681720F4861B8093190108951092190129 +:104DD00008950F931F93873208F048C08E3108F072 +:104DE0008DC0803109F477C008F5873009F461C0BF +:104DF00068F4863009F09DC08091F202817F8E7F39 +:104E00008093F20281E08093020394C08B3009F416 +:104E100089C08E3009F08DC08091F20282FB22277A +:104E200020F991E0922790FB82F95EC0863109F467 +:104E300079C060F4813109F07CC00E94111C90910E +:104E4000160181E08927809316016CC0893109F42D +:104E500069C08B3109F06DC08091F20281FB22277D +:104E600020F991E0922790FB81F93EC0883309F444 +:104E700059C050F4893209F457C0853309F454C03D +:104E8000873209F451C055C0833409F44DC028F469 +:104E90008A3308F44EC0895332C0883409F049C0BF +:104EA0000E94111C0E944F0A0E9413040E94682352 +:104EB00039C09091F202892F8095817080FB90F922 +:104EC00029F0966098609093F20234C0997F977FA2 +:104ED0009093F20227C08091F20283FB222720F9EF +:104EE00091E0922790FB83F98093F2029923D1F00D +:104EF0008091F20281608093F20214C08D5141E0F2 +:104F000050E060E070E08A019B0104C0000F111FB7 +:104F1000221F331F8A95D2F7C901B8010E94D11F01 +:104F20000E94111C81E006C061E070E080E090E02A +:104F3000F5CF80E01F910F91089580E0089580E003 +:104F40000895CF93C82F80910203813069F018F043 +:104F50008230C9F184C0E0911701F091180180817D +:104F6000823209F07EC007C0E0911701F09118016C +:104F70008081823261F48C2F0E949D27811104C0B0 +:104F80008C2F0E94E9261DC081E090E01AC08C2F72 +:104F90000E949F27811114C0C43179F048F4CB30AE +:104FA00079F0C03109F061C082E08093020308C04B +:104FB000C93219F0C83321F058C01092020355C00D +:104FC00081E0817054C0C93291F120F5C43179F18A +:104FD000B0F4C73009F047C08EE180931E0182E330 +:104FE00080931D018AE080931C0184E180931B0162 +:104FF00088E080931A0188E28093190134C0CE5171 +:10500000C63088F5EC2FF0E0EA54FE4F80818093A3 +:10501000010329C0CE34E9F020F4CB3421F56AE055 +:1050200013C0C13579F0C235F1F461E00DC0809153 +:105030000103882319F01092010315C081E08093C9 +:10504000020315C061E006C0809101030E9423267F +:105050000AC06AE0809101030E94992604C0109260 +:10506000020380E004C081E002C080E0AACFCF91BB +:1050700008950E94C923811102C00E94A5230E94A5 +:10508000E52380931D0380FF02C0869501C080E068 +:105090000C94200380911D03982F9695292F30E0C2 +:1050A000233031054CF49F5F990F8170892B81600B +:1050B00080931D030E94E92380911D0386950C9423 +:1050C000200380911D03982F969591F09158990F88 +:1050D0008170892B80931D038E7F91E009F490E00D +:1050E00080911D0390FB80F980931D030E94E923AA +:1050F00080911D0386950C94200380911D03982FA9 +:10510000909590FB80F980931D030E94E923809184 +:105110001D0380FF02C0869501C080E00C9420032F +:1051200090911D03892F86958F5F8F7791708430C2 +:1051300028F4880F892B80931D0302C090931D03D0 +:1051400080911D038E7F91E009F490E080911D0312 +:1051500090FB80F980931D030E94E92380911D0339 +:1051600086950C94200320911D03922F96958927F4 +:10517000982F990F822F8170892B80931D038E7F2A +:1051800091E009F490E080911D0390FB80F98093F9 +:105190001D030E94E92380911D0386950C94200332 +:1051A00080911D03869508955058BB27AA270ED0DD +:1051B000D1C1C2D130F0C7D120F031F49F3F11F4FA +:1051C0001EF4B7C10EF4E095E7FB9FC1E92FD3D1E0 +:1051D00080F3BA17620773078407950718F071F414 +:1051E0009EF5EBC10EF4E0950B2EBA2FA02D0B010E +:1051F000B90190010C01CA01A0011124FF27591B1C +:1052000099F0593F50F4503E68F11A16F040A22F21 +:10521000232F342F4427585FF3CF46953795279592 +:10522000A795F0405395C9F77EF41F16BA0B620B91 +:10523000730B840BBAF09150A1F0FF0FBB1F661FD8 +:10524000771F881FC2F70EC0BA0F621F731F841F1B +:1052500048F4879577956795B795F7959E3F08F041 +:10526000B3CF9395880F08F09927EE0F9795879500 +:10527000089527D108F481E008950CD06BC163D163 +:1052800040F05AD130F021F45F3F19F03EC1511186 +:1052900095C14FC170D198F39923C9F35523B1F348 +:1052A000951B550BBB27AA2762177307840738F095 +:1052B0009F5F5F4F220F331F441FAA1FA9F333D0F4 +:1052C0000E2E3AF0E0E830D091505040E695001CA8 +:1052D000CAF729D0FE2F27D0660F771F881FBB1F64 +:1052E000261737074807AB07B0E809F0BB0B802D3E +:1052F000BF01FF2793585F4F2AF09E3F510568F08A +:1053000004C15CC15F3FECF3983EDCF38695779572 +:105310006795B795F7959F5FC9F7880F911D96958B +:10532000879597F90895E1E0660F771F881FBB1FE7 +:10533000621773078407BA0720F0621B730B840B94 +:10534000BA0BEE1F88F7E095089504D06894B11168 +:1053500035C1089518D188F09F5790F0B92F99273B +:10536000B751A0F0D1F0660F771F881F991F1AF070 +:10537000BA95C9F712C0B13081F01FD1B1E00895DC +:105380001CC1672F782F8827B85F39F0B93FCCF35D +:10539000869577956795B395D9F73EF49095809566 +:1053A000709561957F4F8F4F9F4F0895E89409C086 +:1053B00097FB3EF490958095709561957F4F8F4F48 +:1053C0009F4F9923A9F0F92F96E9BB279395F6955E +:1053D000879577956795B795F111F8CFFAF4BB0FDC +:1053E00011F460FF1BC06F5F7F4F8F4F9F4F16C040 +:1053F000882311F096E911C0772321F09EE8872FCA +:10540000762F05C0662371F096E8862F70E060E085 +:105410002AF09A95660F771F881FDAF7880F9695FE +:10542000879597F9089588D018F011F08CD038F44A +:1054300080C0C4C0E92F9FD0B0F35523C9F3E7FB68 +:105440006217730784079507A8F199F3E92FFF27DF +:1054500088232AF03197660F771F881FDAF7952F78 +:105460005527442332F091505040220F331F441FE0 +:10547000D2F7BB27E91BF50B621B730B840BB10939 +:10548000C1F222F4620F731F841FB11D31972AF0FD +:10549000660F771F881FBB1FEFCF915050405AF007 +:1054A00041F0882332F0660F771F881F91505040DB +:1054B000C1F7939530C08695779567959F5FD9F72B +:1054C000F8CF990F0008550FAA0BE0E8FEEF16166B +:1054D0001706E807F907C0F012161306E407F507E8 +:1054E00098F0621B730B840B950B39F40A2661F05C +:1054F000232B242B252B21F408950A2609F4A140FF +:10550000A6958FEF811D811D089597F99F6780E80B +:1055100070E060E008959F3F31F0915020F487954E +:1055200077956795B795880F911D9695879597F90B +:1055300008959FEF80EC089500240A94161617062C +:1055400018060906089500240A9412161306140674 +:1055500005060895092E0394000C11F4882352F0D7 +:10556000BB0F40F4BF2B11F460FF04C06F5F7F4F8F +:105570008F4F9F4F089557FD9058440F551F59F076 +:105580005F3F71F04795880F97FB991F61F09F3F30 +:1055900079F087950895121613061406551FF2CF59 +:1055A0004695F1DF08C0161617061806991FF1CFA9 +:1055B00086957105610508940895E894BB276627D0 +:1055C0007727CB0197F908957CDF08F48FEF0895D2 +:1055D0000BD0C0CFB1DF28F0B6DF18F0952309F06B +:1055E00094CFA7CF1124EACFC6DFA0F3959FD1F3C4 +:1055F000950F50E0551F629FF001729FBB27F00D81 +:10560000B11D639FAA27F00DB11DAA1F649F6627D5 +:10561000B00DA11D661F829F2227B00DA11D621F24 +:10562000739FB00DA11D621F839FA00D611D221FDE +:10563000749F3327A00D611D231F849F600D211DC2 +:10564000822F762F6A2F11249F5750408AF0E1F065 +:1056500088234AF0EE0FFF1FBB1F661F771F881FAE +:1056600091505040A9F79E3F510570F04ECFA6CF04 +:105670005F3FECF3983EDCF3869577956795B79599 +:10568000F795E7959F5FC1F7FE2B880F911D9695C3 +:10569000879597F90895FA01EE0FFF1F30962105BF +:1056A000310599F16115710561F48038BFE39B07FD +:1056B00049F168949038810561F08038BFEF9B070D +:1056C00041F0992342F5FF3FE1053105210511F134 +:1056D000E8940894E795D901AA2329F4AB2FBE2FAB +:1056E000F85FD0F310C0FF5F70F4A695E0F7F739CC +:1056F00050F019F0FF3A38F49F779F930CD00F9039 +:1057000007FC905808953EF014CF60E070E080E808 +:105710009FE308954FE79F775F934F933F932F93B6 +:105720009ED02F913F914F915F9152DF05C019F4A8 +:105730000EF0EBCE42CFFDCE26DFC8F39638C0F791 +:1057400007F80F92E8942BE33AEA48EB5FE74EDF65 +:105750000F920F920F924DB75EB70F92C0D0EAE052 +:10576000F1E016D04F915F91EF91FF91E595EE1F1B +:10577000FF1F49F0FE57E0684427EE0F441FFA95DB +:10578000E1F74195550B32D00F9007FE26C00895E2 +:10579000DF93CF931F930F93FF92EF92DF927B01E2 +:1057A0008C01689405C0DA2EEF011EDFFE01E8943B +:1057B000A5912591359145915591AEF3EF0106DD07 +:1057C000FE019701A801DA9479F7DF90EF90FF903E +:1057D0000F911F91CF91DF9108959B01AC0160E083 +:1057E00070E080E89FE349CD90CE95CECCDEE8F323 +:1057F0009923D9F3940F511DBBF39150504094F06D +:1058000059F0882332F0660F771F881F915050405F +:10581000C1F79E3F510544F7880F911D96958795D6 +:1058200097F908955F3FACF0983E9CF0BB278695B2 +:1058300077956795B79508F4B1609395C1F7BB0F5D +:1058400058F711F460FFE8CF6F5F7F4F8F4F9F4F86 +:10585000E3CFB4CE0EF05FCE6CCE689456CE93DE1E +:10586000C8F39923D1F3C6F3DF93CF931F930F931C +:10587000FF92C92FDD2788232AF02197660F771F13 +:10588000881FDAF720E030E040E85FEB9FE38839DB +:1058900020F0803E30F021968F7787DCE2E3F1E064 +:1058A00003C083DCEFE5F1E073DF8B01BE01EC01A7 +:1058B000FB2E6F5771097595771F880B990B78DD53 +:1058C00028E132E741E35FE38FDEAF2D9801AE01BF +:1058D000FF900F911F91CF91DF9178DC3BCEFA01C1 +:1058E000DC01AA0FBB1F9B01AC01BF5728F4222784 +:1058F0003327442750781FC0B75188F4AB2F0024BA +:10590000469537952795011CA395D2F3002069F0A1 +:10591000220F331F441FB395DAF30DD045CC61300D +:105920007105A0E88A07B94630F49B01AC016627EF +:10593000772788279078309621F02083318342831F +:1059400053830895AA1BBB1B51E107C0AA1FBB1FAD +:10595000A617B70710F0A61BB70B881F991F5A95FB +:10596000A9F780959095BC01CD01089597FB072E6E +:1059700016F4009407D077FD09D00E94A22C07FCF2 +:1059800005D03EF4909581959F4F0895709561954F +:105990007F4F0895EE0FFF1F0590F491E02D0994BD +:1059A000F999FECF92BD81BDF89A992780B50895E7 +:1059B000A8E1B0E042E050E00C94F82C262FF999D1 +:1059C000FECF92BD81BDF89A019700B4021639F05E +:1059D0001FBA20BD0FB6F894FA9AF99A0FBE08952F +:1059E0000196272F0E94DF2C0C94DE2CDC01CB01CA +:1059F000FC01F999FECF06C0F2BDE1BDF89A3196DF +:105A000000B40D9241505040B8F70895F894FFCF7C +:105A1000640007000CFF0000003F643310C1109EBB +:105A2000106A1036100101DF022808140A321E0025 +:105A300002040507090B0C0E1011131517181A1C78 +:105A40001D1F2123242628292B2D2F3032343537B2 +:105A5000393B1F0F03764F5F6F7F496943790959BF +:105A600053633149803F5D8B803FF8BF803FCAE17F +:105A7000803F73ED803FCAE1803FF8BF803F5D8B80 +:105A8000803F3149803F0000803FF16D7F3F75EAE4 +:105A90007E3F4C827E3F833F7E3F84287E3F833F14 +:105AA0007E3F4C827E3F75EA7E3FF16D7F3F000076 +:105AB000803F3F4D36394B05FE04C8048F04220455 +:105AC0003B0454046D0401020304050607080900A1 +:00000001FF diff --git a/keyboard/planck/keymaps/lucas/compiled.hex b/keyboard/planck/keymaps/lucas/compiled.hex new file mode 100644 index 0000000000..26fc8ee0cd --- /dev/null +++ b/keyboard/planck/keymaps/lucas/compiled.hex @@ -0,0 +1,1471 @@ +:100000000C9427030C946B030C946B030C946B03FC +:100010000C946B030C946B030C946B030C946B03A8 +:100020000C946B030C946B030C942E150C9400161B +:100030000C9462230C946B030C946B030C946B0371 +:100040000C946B030C94CD030C946B030C946B0316 +:100050000C946B030C94CA230C946B030C946B03E9 +:100060000C946B030C946B030C946B030C946B0358 +:100070000C946B030C946B030C946B030C946B0348 +:100080000C94A30B0C946B030C946B030C946B03F8 +:100090000C946B030C946B030C946B030C946B0328 +:1000A0000C946B030C946B030C946B036D168F16FE +:1000B0007D178F167D17D416F7167D174C175F170F +:1000C000491A491A781A781AB71AD71A2D1C2D1CF2 +:1000D000E21A2D1C921B921BF91B021C2D1C271CC3 +:1000E0009F1B9F1B9F1B9F1B9F1B9F1B9F1B9F1B40 +:1000F0009F1B9F1B9F1B9F1B9F1B9F1B9F1B9F1B30 +:10010000AF1BBD1BC41BCB1BD51B07634236B79B64 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A299 +:1001D000F1A32CA4228A3921290014001A00090055 +:1001E00013000A000D000F0018001D003602380031 +:1001F0002A00040015001600170007000B0011006C +:1002000008000C001200310200301C001B00060028 +:10021000190005000E0010003600370024022800E7 +:10022000E000E3002B00E200022003200320012075 +:100230005000510052004F00010001000100010078 +:100240000100010001000100010001003700010070 +:100250000100010001000100010001000100010096 +:100260000100010001001F02010001000100010066 +:100270000100010001000100013064022D020100B3 +:100280000100010001000100010001000100010066 +:100290000100010001000100000034020000000024 +:1002A00000000000000000002F02330200000420C4 +:1002B0004C00340000002D00000000000000000091 +:1002C0002F00330000004514000000000000000073 +:1002D0000000000000000000AD00AC00AB004414C2 +:1002E0000100010001000100010001000100010006 +:1002F000A800AA00A900AE0030141E021414310098 +:10030000210222023500230230022502260230009B +:100310002E021E001F0020002100220023002400C6 +:1003200025002600270027020000000000006414BA +:100330002514261424142714081400002D14280052 +:1003400001000100010001000100010001000100A5 +:100350004A004E004B004D00680069006A006B00C7 +:100360006C006D006E006F00700071007200730011 +:100370003A003B003C003D003E003F004000410091 +:10038000420043004400450000000000000000005F +:100390000000560057000000000000000050000060 +:1003A00000008250805081500220010001000100B5 +:1003B000A800AA00A900AE000652290014001A00E5 +:1003C0000800150017001D0018000C001200042082 +:1003D00028002A0004001600070009000A000B008C +:1003E0000D000E000F003602E000E1001C001B00B3 +:1003F0000600190005001100100037005200240209 +:10040000000000002B00E20000002C002C002C015A +:10041000E300500051004F000100000014001A00DA +:10042000090013000A000D005F0060006100000079 +:100430002A000000040015001600170007000B003A +:100440005C005D005E004D00E000E1001C001B0050 +:100450000600190005000E0059005A005B004E000E +:10046000000000002B00E20000002C002C002C01FA +:100470000000620063005800280354006800650013 +:10048000200050006C0061006E0063006B002000D3 +:100490004B006500790062006F006100720064002B +:1004A00000002C034F007200740068006F006C00A5 +:1004B00069006E0065006100720020004B0065005D +:1004C000790062006F006100720064007300000038 +:1004D0000403090409026D00040100A0FA090400E4 +:1004E000000103010100092111010001223F000761 +:1004F00005810308000A0904010001030102000943 +:100500002111010001224D000705820308000A099C +:10051000040200010300000009211101000122363C +:10052000000705830308000A090403000103000013 +:100530000009211101000122390007058403100080 +:10054000011201100100000008EDFE6060010001D1 +:1005500002000105010906A101050719E029E715B7 +:1005600000250195087501810205081901290595E5 +:10057000057501910295017503910105071900297F +:100580007715002501957875018102C00501098064 +:10059000A101850216010026B7001A01002AB70042 +:1005A000751095018100C0050C0901A10185031694 +:1005B0000100269C021A01002A9C027510950181F7 +:1005C00000C005010902A1010901A10005091901E5 +:1005D0002905150025019505750181029501750311 +:1005E00081010501093009311581257F95027508C2 +:1005F000810609381581257F950175088106050C4E +:100600000A38021581257F950175088106C0C0054D +:10061000010906A101050719E029E7150025019543 +:1006200008750181029501750881010508190129E4 +:10063000059505750191029501750391010507194D +:100640000029FF150025FF950675088100C01124BB +:100650001FBECFEFDAE0DEBFCDBF04B603FE24C07D +:1006600080911E0390911F03A0912003B09121035C +:100670008730904BA740B04BB9F410921E031092F4 +:100680001F03109220031092210314BE84B7877FAA +:1006900084BF88E10FB6F8948093600010926000E8 +:1006A0000FBEE0E0F8E3099511E0A0E0B1E0EEE173 +:1006B000FBE502C005900D92A03CB107D9F713E00D +:1006C000A0ECB1E001C01D92AE31B107E1F70E948C +:1006D00074120C948D2D0C9400000895089581E0FF +:1006E000089508950C946E030C946F030C94710399 +:1006F0000E94572923E030E0281B3109220F209364 +:10070000C4010895282F2F9880918000211108C0DE +:10071000877F8093800010928D0010928C001BC008 +:10072000886080938000233019F48FEF9FEF0FC013 +:1007300083E090E0821B9109880F991F2FEF3FEF14 +:10074000A90102C0569547958A95E2F7CA01909390 +:100750008D0080938C000C9478030E94780384E0D1 +:100760008093C3011092C0010895279A2F988FEFAC +:100770009FEF90938700809386008AE080938000AB +:1007800089E1809381000E94C0280C94AD030E94EF +:10079000B5036E9A769A0C946D031F920F920FB662 +:1007A0000F9211242F933F938F939F93EF93FF9377 +:1007B000E091C101F091C201CF0101969093C20175 +:1007C0008093C1010090C30102C0F695E7950A9499 +:1007D000E2F7EF738091C001823019F4E03251F4F6 +:1007E00004C0813039F4EF3329F480916F008D7F9C +:1007F00080936F00F0E0E457FE4FE49121E031E098 +:10080000E29FC001E39F900D11240090C40102C03B +:10081000969587950A94E2F790938D0080938C00CB +:10082000FF91EF919F918F913F912F910F900FBE6C +:100830000F901F901895662319F0613099F020C031 +:10084000FC018281882341F081EE0E94ED1881E055 +:1008500090E00E94D52014C081E090E00E94F62034 +:1008600081EE0CC0FC018281882339F081EE0E9468 +:10087000B51984E60E94ED1803C084E60E94B519FC +:1008800080E090E0089581E008950C944304089579 +:100890000C94C70380911502882309F448C0809105 +:1008A000D1019091D201009779F40E949423909302 +:1008B000D2018093D1018091D30190E0009771F42F +:1008C0008091D40190E00AC00E94A02320910001F1 +:1008D000309101012817390740F329C00197880F8B +:1008E000991F880F991FFC01EB52FE4F60817181A7 +:1008F000828193810E94090BE091D30184E0E89FFB +:10090000F0011124EB52FE4F60817181828193814D +:100910004FE050E00E94C10E8091D30190E001961B +:100920006091D40170E00E943D2D8093D3010C941E +:100930007203109217020C94D60A0895089581E06C +:10094000809317020C949E04089508958F929F92AD +:10095000AF92BF92EF92FF920F931F93CF93DF93CB +:10096000CDB7DEB7A3970FB6F894DEBF0FBECDBFED +:100970007C01FC0100811181C8010E949121B80114 +:100980000E94A8068C01B7010E944504882309F43F +:10099000CCC10032F0E51F0741F4F70182818823C2 +:1009A00009F458C00E94250FC0C10132F0E51F07AD +:1009B00041F4F7018281882309F44CC00E942E0F74 +:1009C000B4C10232F0E51F0751F4F7018281882398 +:1009D00009F440C00E94210F8111F0CFE3CF033210 +:1009E000F0E51F0739F4F7018281882399F10E940D +:1009F0009F049BC10432F0E51F0739F4F70182819F +:100A0000882341F10E94990490C10532F0E51F0747 +:100A100049F4F70182818823E9F08091170281115E +:100A2000F1CFE5CF0632F0E51F0739F4F7018281F7 +:100A3000882381F00E94350F0AC00732F0E51F07B6 +:100A400049F4F7018281882329F00E94400F0E9417 +:100A5000A5046BC180911702811105C0F701828145 +:100A60008111CFC018C1003E110579F4F7018281D0 +:100A7000882309F44DC00E94D60A81E080931602B3 +:100A8000109215021092D40150C1023E110559F482 +:100A9000F70182818823E1F10E94D60A10921602A2 +:100AA0001092150242C1033E110591F4F7018281B3 +:100AB000882371F10E94D60A1092160281E0809379 +:100AC00015021092D3011092D2011092D1012DC1C2 +:100AD0000235110559F4F7018281882309F425C1F3 +:100AE00080910001909101010A970DC00135110517 +:100AF00079F4F7018281882309F417C180910001FC +:100B0000909101010A9690930101809300010DC11B +:100B10004091040183E2EFE1F1E0DE0111960190E2 +:100B20000D928A95E1F7F701808121E030E02C0FEA +:100B30003D1F280F311DC901209102013091030191 +:100B4000FC01E20FF31F6081772767FD7095640F4A +:100B5000711D882777FD8095982F0E945F2A20E0DD +:100B600030E040E451E40E94C4294B015C01F701EC +:100B7000218184E090E0821B9109BC01882777FDE8 +:100B80008095982F0E945F2A9B01AC01C501B4019A +:100B90000E945C299B01AC0160E070E080E090E481 +:100BA0000E94D22B20E030E04CED50E40E946F2BED +:100BB0004B015C01F70182818823D1F04FE050E0C6 +:100BC000C501B4010E94C10E809116028823A1F0D4 +:100BD0008091D40124E0829FF0011124EB52FE4F5A +:100BE00080829182A282B3828F5F8093D40104C0FD +:100BF000C501B4010E94090B0F3F110508F02ECF6B +:100C000094C08091D00181111FC0043130E51307D9 +:100C100009F051C00E94470481E08093D0010E94F6 +:100C200094239093CF018093CE011092C70110922C +:100C3000C9011092C8011092CB011092CA01109202 +:100C4000CD011092CC0171C08091CE019091CF0165 +:100C50000E94A023883C910570F48091C701E82F81 +:100C6000F0E0EE0FFF1FE853FE4F118300838F5F0C +:100C70008093C7015AC0043880E5180721F0053871 +:100C8000104501F13AC0F7018281882341F01092AA +:100C9000C50182E01EC0043830E5130759F5809184 +:100CA000C501811106C086E20E94ED1886E20E940D +:100CB000B51982E01CC00438F0E51F0741F3053880 +:100CC0001045D9F4F7018281882331F01092C601D2 +:100CD00080E20E94041A29C08091C601811106C0D9 +:100CE00087E20E94ED1887E20E94B51980E20E9417 +:100CF0000B1A1BC00538104529F381E08093C5010C +:100D00008093C601C701A3960FB6F894DEBF0FBE4D +:100D1000CDBFDF91CF911F910F91FF90EF90BF90CA +:100D2000AF909F908F900C94740380E0A3960FB6C1 +:100D3000F894DEBF0FBECDBFDF91CF911F910F9111 +:100D4000FF90EF90BF90AF909F908F90089508957F +:100D50009CE0799FF001112490E3899FE00DF11D43 +:100D60001124E60FF11DEE0FFF1FE852FE4F859193 +:100D700094910895880F991FFC01E45BFF4F8591C2 +:100D800094910895880F991FFC01E453FE4F8591BB +:100D9000949108950F931F93CF93DF93EC018115E6 +:100DA00021E39207A0F5C11580E3D80708F0D7C06A +:100DB000C83ED105D8F4C03ED10508F007C2C83AF4 +:100DC000D10578F4C53AD10508F06AC0C130D10523 +:100DD00009F463C008F4F7C1C430D10508F0F6C1C6 +:100DE000F2C1CB3BD10508F466C0EDC1C11590E25C +:100DF000D90708F0AFC0C11521E0D20708F0E6C15D +:100E0000C03FD10508F4DFC18E0110651FC2C03894 +:100E100080E5D80700F5C03790E5D90708F0A3C0F2 +:100E2000C11520E5D20709F4ACC050F4CE019054AE +:100E300080319F4008F0C7C1DF708E01106A06C282 +:100E4000C13080E5D80709F4AEC0C43190E5D907B8 +:100E500008F4AFC0B8C1C33820E5D20709F48EC08A +:100E600050F4C13890E5D90709F482C008F083C076 +:100E700000E011EDEBC1C03181E5D80708F4A3C152 +:100E8000C11597E5D90708F436C1CE0190578115F1 +:100E9000904108F098C1DF7093C101E010E0D6C125 +:100EA000C53AD10509F494C1C63AD10509F093C1F8 +:100EB00002E810E4CBC1C83AD10509F48FC1C93AA0 +:100EC000D10509F48EC1CA3AD10509F48DC1CB3AD6 +:100ED000D10509F48CC1CC3AD10509F48BC1CD3AC6 +:100EE000D10509F48AC1C03BD10509F489C1CE3AC4 +:100EF000D10509F488C1CF3AD10509F487C1C13BB6 +:100F0000D10509F486C1C23BD10509F485C1C33BB3 +:100F1000D10509F484C1C43BD10509F483C1C53BA3 +:100F2000D10509F482C1C63BD10509F481C1C73B93 +:100F3000D10509F480C1C83BD10509F47FC1C93B83 +:100F4000D10509F47EC1CA3BD10509F47DC100E099 +:100F500014E47CC1CE019F700E94C20678C1DD27D7 +:100F60008E01106C73C1CF70DD278E01146D6EC1C0 +:100F700000E010ED6BC100E012ED68C100E013ED80 +:100F800065C10E94981C0E94D60A0E949D048FEFA2 +:100F900094E32CE0815090402040E1F700C0000035 +:100FA0000E94EF2353C18091F20281608093F2028C +:100FB0004DC10E945024811102C00E942C240E9425 +:100FC000632490E090931D0380931C03C23080E55E +:100FD000D80721F480911C03816086C0C43090E55D +:100FE000D90721F480911C0382607EC0C63020E5C1 +:100FF000D20721F480911C03846076C0C83080E55C +:10100000D80719F480911C0327C0CA3090E5D9078E +:1010100021F480911C03806167C0CC3020E5D207A9 +:1010200021F480911C0380625FC0CE3080E5D80738 +:1010300021F480911C03806457C0C03190E5D9072A +:1010400021F480911C0380684FC0C23120E5D20793 +:1010500029F480911C038460886046C0C33080E519 +:10106000D80721F480911C038E7F3EC0C53090E5E7 +:10107000D90721F480911C038D7F36C0C73020E54D +:10108000D20721F480911C038B7F2EC0C93080E5EC +:10109000D80719F480911C0326C0CB3090E5D907FE +:1010A00021F480911C038F7E1FC0CD3020E5D20734 +:1010B00021F480911C038F7D17C0CF3080E5D807C5 +:1010C00021F480911C038F7B0FC0C13190E5D907BB +:1010D00021F480911C038F7707C0C331D04531F4D0 +:1010E00080911C038B7F877F80931C0380911C035E +:1010F0000E946724ABC08D2F99278F70992781306C +:101100009105D9F49E012370332702C0880F991FDF +:101110002A95E2F79C688E0144E0000F111F4A9562 +:10112000E1F700271370802B912B53E0CC0FDD1FCC +:101130005A95E1F7C076DD272FC08230910531F452 +:10114000DC2FCC278E01016F106A80C0833091059F +:1011500069F4CE018370992701E010E002C0000F0E +:10116000111F8A95E2F7C8019C680FC08430910571 +:10117000B9F4CE018370992701E010E002C0000F9E +:10118000111F8A95E2F7C8019A6823E0CC0FDD1F92 +:101190002A95E1F7C07ED7708C010C2B1D2B56C011 +:1011A0008530910531F4DC2FCC278E01046F106A55 +:1011B0004DC0069709F04AC0CF71DD27DC2FCC2740 +:1011C0008E01106243C000E010E040C08E013EC0BE +:1011D00001E810E43BC003E810E438C002EE14E478 +:1011E00035C009EE14E432C00AEE14E42FC005EB5A +:1011F00014E42CC006EB14E429C007EB14E426C069 +:101200000CEC14E423C00DEC14E420C003E815E456 +:101210001DC00AE815E41AC002E915E417C004E984 +:1012200015E414C001E216E411C003E216E40EC096 +:1012300004E216E40BC005E216E408C006E216E478 +:1012400005C007E216E402C00AE216E4C801DF9115 +:10125000CF911F910F9108959CE0799FF001112487 +:1012600090E3899FE00DF11D1124E60FF11DEE0FB3 +:10127000FF1FE852FE4F85919491803E9105E0F466 +:10128000803C910558F58133910509F46FC048F40D +:101290008932910509F463C08A32910509F46DC061 +:1012A00072C089339105E9F082389105D1F0853318 +:1012B000910509F44DC067C0833E910581F138F472 +:1012C000803E9105B9F0823E9105D9F05CC0863E22 +:1012D000910561F1873E9105A1F155C00E94BA06C2 +:1012E000089520911C0320FD02C021FF4CC080EE18 +:1012F00090E049C080911C0380FFF9CF89E390E022 +:1013000042C080911C0382FF0EC080911C0384FFA9 +:1013100003C080E090E037C083EE90E034C080915D +:101320001C0382FFF2CF82EE90E02DC080911C035F +:1013300083FF0BC080911C0384FDEBCF87EE90E010 +:1013400022C080911C0383FFF5CF86EE90E01BC086 +:1013500080911C0385FF07C089E290E014C0809152 +:101360001C0385FFF9CF85E390E00DC080911C033D +:1013700086FF07C08AE290E006C080911C0386FFCA +:10138000F9CF81E390E00E94CA0608950C94760399 +:10139000E82FF0E0E25BFE4F8081E82FEF70F0E095 +:1013A00082958F7021E030E0A90102C0440F551FE3 +:1013B0008A95E2F740A308950F931F93CF93DF938D +:1013C00085B7806885BF85B7806885BFC3E0D0E0FA +:1013D00001E010E0FE01E25BFE4F8081E82FEF703C +:1013E000F0E021A182958F70A80102C0440F551F23 +:1013F0008A95E2F7CA01822B81A38C2F0E94C8092B +:10140000219740F78BE090E061E070E0FC01EE5B3B +:10141000FE4F2081E22FEF70F0E042A122952F7065 +:10142000DB0102C0AA0FBB1F2A95E2F79D01242B06 +:1014300022A3019758F7DF91CF911F910F910C9440 +:101440004804EF92FF920F931F93CF93DF9300E234 +:1014500012E0C3E0EE24E394F12CD5E08C2F0E943F +:10146000C8098BE090E040E050E0FC01EE5BFE4FED +:101470006081E62FEF70F0E020A130E062956F70A0 +:1014800002C0359527956A95E2F720FD09C09701BE +:10149000082E02C0220F331F0A94E2F7422B532B6F +:1014A000019718F7F801929182918F01841795079F +:1014B00021F051834083D09305018C2F0E94C809ED +:1014C000C15060F68091050187FD2CC0815080934A +:1014D00005018F3F39F08FE99FE00197F1F700C0D8 +:1014E000000020C080911E0290911F02909327025D +:1014F0008093260280911C0290911D0290932502F8 +:101500008093240280911A0290911B0290932302EF +:1015100080932202809118029091190290932102E7 +:10152000809320020E944A0481E0DF91CF911F91B5 +:101530000F91FF90EF900895E82FF0E0EE0FFF1F5E +:10154000E05EFD4F80819181089508950F931F9370 +:10155000CF9308E212E0C0E0F801929182918F01EE +:101560000E940C23C80FF2E000321F07A9F78C2F4E +:10157000CF911F910F9108950E945024811102C0B4 +:101580000E942C240E947524809307033E9A809128 +:1015900071008D7F8093710082E0809390008AE1DA +:1015A0008093910081E080932A02089580912A021D +:1015B000811102C00E94BC0A10927A021092790234 +:1015C000809171008D7F80937100809190008F7366 +:1015D0008093900010923C0210923B021092730292 +:1015E000109274021092750210927602109272029A +:1015F00010927102E1E5F2E0A1E4B2E011921192E1 +:10160000119211921D921D9282E0E137F807B1F715 +:101610000895CF92DF92EF92FF920F931F93CF9393 +:10162000DF9320913B02222309F484C06B017C01EB +:1016300080912A02811102C00E94BC0A01E712E0D7 +:10164000C7E0D0E0A7019601F801929182917291D2 +:1016500062918F010E94C029811131C0FE01EE0FFD +:10166000FF1FEE0FFF1FEF5AFD4F108211821282F3 +:101670001382DE01AA0FBB1FAF5BBD4F11961C92F8 +:101680001E92C730D105E9F02196448155816681CB +:10169000778140835183628373831482158216821B +:1016A000178212968D919C91139711969C938E930D +:1016B00013961C921E92129734961296E2CF21979F +:1016C00008F68091790290917A02019797FD05C002 +:1016D00090937A028093790204C010927A02109259 +:1016E00079028091790290917A022091770230916B +:1016F00078022817390724F01092780210927702A6 +:10170000892BC1F4809171008D7F8093710080914D +:1017100090008F7380939000109273021092740265 +:10172000109275021092760210927202109271025B +:1017300010923B02DF91CF911F910F91FF90EF909C +:10174000DF90CF9008951F920F920FB60F92112441 +:101750004F925F926F927F928F929F92AF92BF92C1 +:10176000CF92DF92EF92FF922F933F934F935F932D +:101770006F937F938F939F93AF93BF93CF93DF9399 +:10178000EF93FF9380913B02882309F49BC1C091A2 +:101790007902D0917A021C161D060CF093C140907C +:1017A0002B0250902C0260902D0270902E0220E0AF +:1017B00030E0A901C301B2010E946B2B18160CF096 +:1017C00065C0C130D10509F452C080917702909173 +:1017D0007802BE010E943D2D7C0190937802809397 +:1017E000770280903D0290903E02A0903F02B09020 +:1017F000400220E030E040E85FE3C501B4010E9410 +:101800005C2960933D0270933E0280933F02909367 +:101810004002F701EE0FFF1FEE0FFF1FEF5AFD4FC3 +:10182000A301920160817181828193810E94C42908 +:1018300020E030E040E05EE30E946F2B9B01AC01B2 +:10184000C501B4010E946B2B18168CF4C7010196D8 +:10185000BE010E943D2D90937802809377021092F2 +:101860003D0210923E0210923F0210924002E0911F +:101870007702F0917802EE0FFF1FEE0FFF1FEF5A75 +:10188000FD4F6081718182819381D0C0C0907302CD +:10189000D0907402E0907502F090760220E030E083 +:1018A000A901C701B6010E94C0292197882309F424 +:1018B000A2C0FE01EE0FFF1FEE0FFF1FEF5AFD4FFC +:1018C00080809180A280B380A5019401C701B601F8 +:1018D0000E94C02987FF31C0A501940160E070E03B +:1018E0008CED93EC0E94C42920E030E040E451E408 +:1018F0000E94C42920E030E040E05FE30E946F2BAB +:101900009B01AC0160E070E080E090E40E94D22B8B +:101910009B01AC01C501B4010E946F2B9B01AC017E +:10192000C701B6010E94C02987FF07C0A701960121 +:1019300060E070E08CED93E439C0A5019401C7012B +:10194000B6010E946B2B18160CF055C0A50194012E +:1019500060E070E08CED93E40E94C42920E030E068 +:1019600040E451E40E94C42920E030E040E05FE31D +:101970000E946F2B9B01AC0160E070E080E090E47E +:101980000E94D22B9B01AC01C501B4010E946F2BB8 +:101990009B01AC01C701B6010E946B2B18165CF5C8 +:1019A000A701960160E070E08CED93EC0E94C429E1 +:1019B00020E030E040E451E40E94C42920E030E01F +:1019C00040E05FE30E946F2B9B01AC0160E070E0A0 +:1019D00080E090E40E94D22B9B01AC01C701B601CC +:1019E0000E946F2B60937302709374028093750250 +:1019F0009093760213C0FE01EE0FFF1FEE0FFF1F44 +:101A0000EF5AFD4F80819181A281B381809373024F +:101A100090937402A0937502B09376026091730262 +:101A20007091740280917502909176022091280243 +:101A3000309129022F3F4FEF340731F02F5F3F4F96 +:101A400030932902209328020E944B0F6B017C01E6 +:101A500020E034E244EF51E40E94C02987FF08C02F +:101A600086EFC82E88E2D82E84EFE82E81E4F82E87 +:101A700020E030E040E051E4C701B6010E946F2B46 +:101A80009B01AC0160E074E284E79BE40E94C429FE +:101A90006B017C010E94312A70939700609396003D +:101AA00020910601309107014091080150910901F0 +:101AB000C701B6010E946F2B0E94312A70939900D2 +:101AC0006093980080913C02882309F433C1C09050 +:101AD0003702D0903802E0903902F0903A0220E0CC +:101AE00030E0A901C701B6010E946B2B1816D4F58E +:101AF00080912802909129028F3F2FEF920729F0C1 +:101B000001969093290280932802C701B6010E9492 +:101B10004B0F20E030E040E051E40E946F2B9B012E +:101B2000AC0160E074E284E79BE40E94C4296B018D +:101B30007C010E94312A7093970060939600209157 +:101B40000601309107014091080150910901C70138 +:101B5000B6010E946F2B0E94312A70939900609306 +:101B6000980008C010929700109296001092990069 +:101B70001092980060913102709132026F5F7F4F36 +:101B80007093320260933102209196003091970059 +:101B900080E090E0232BF1F0C0919600D091970067 +:101BA0000E945D2A6B017C01BE0180E090E00E94F2 +:101BB0005D2A9B01AC0160913302709134028091E7 +:101BC0003502909136020E94C42920E03FEF4FE792 +:101BD00057E410C00E945D2A6B017C0120E030EECA +:101BE0004FEF54E4609133027091340280913502DA +:101BF000909136020E946F2B9B01AC01C701B60188 +:101C00000E946B2B87FD96C080912F028F5F80937F +:101C10002F0290E020910303309104038217930771 +:101C2000A0F080910E03882319F010922F020DC0AE +:101C3000809171008D7F80937100809190008F73EF +:101C40008093900010923C027DC080913002C09140 +:101C50002F02811128C0C0900803D0900903E090A2 +:101C60000A03F0900B0320E030E0A901C701B601A0 +:101C70000E946B2B1816BCF481E080933002109206 +:101C80003702109238021092390210923A02C09232 +:101C90003302D0923402E0923502F0923602C15003 +:101CA000C0932F0243C0109230021092290210926A +:101CB0002802E0910503F091060348E0C49FE00D7F +:101CC000F11D112480819181A281B381809337021B +:101CD00090933802A0933902B0933A0220E030E0AA +:101CE00040E85EE364817581868197810E946F2B55 +:101CF0006B017C0180910A01682F70E080E090E028 +:101D00000E945D2A20E030E048EC52E40E94C429A1 +:101D10009B01AC01C701B6010E946F2B6093330297 +:101D200070933402809335029093360210923202FF +:101D3000109231028091070380FD04C010923C0292 +:101D400010923B02FF91EF91DF91CF91BF91AF9144 +:101D50009F918F917F916F915F914F913F912F91C3 +:101D6000FF90EF90DF90CF90BF90AF909F908F90BB +:101D70007F906F905F904F900F900FBE0F901F90CD +:101D80001895CF92DF92EF92FF92CF93DF936B0182 +:101D90007C01EA0180912A02811102C00E94BC0AE2 +:101DA0008091070380FF46C08091790290917A026A +:101DB00008970CF03FC0809171008D7F8093710077 +:101DC00080913C0281110E94D60A81E080933B02FF +:101DD000109229021092280220E030E0A901C701E8 +:101DE000B6010E946B2B1816DCF480917902909159 +:101DF0007A02FC01EE0FFF1FEE0FFF1FEF5AFD4F9F +:101E0000C082D182E282F382FC01EE0FFF1FEF5B02 +:101E1000FD4FD183C083019690937A02809379021B +:101E20008091710082608093710080919000806841 +:101E300080939000DF91CF91FF90EF90DF90CF9053 +:101E40000895809107038170089580910703816050 +:101E5000809307030E9479240C94A40480910703C3 +:101E60008E7F809307030C94792480917B0290E00D +:101E7000019666E070E00E943D2D80937B020895FC +:101E800080917B0290E0019766E070E00E943D2D1A +:101E900080937B0208958F929F92AF92BF92CF92D0 +:101EA000DF92EF92FF920F931F93CF93DF936B011B +:101EB0007C01C0912802D0912902BE0180E090E00F +:101EC0000E945D2A4B015C01A701960160E070E071 +:101ED0008CE594E40E94C4299B01AC01C501B401C6 +:101EE0000E946F2B0E94312A20917B02233009F43B +:101EF00073C028F4222351F02130E9F02CC12430A2 +:101F000009F4A0C0253009F4E0C025C180E090E0CC +:101F1000A0E0BFE38093060190930701A09308011E +:101F2000B093090110922B0210922C0210922D02F4 +:101F300010922E0210C110922B0210922C021092BD +:101F40002D0210922E026431710540F46A30710541 +:101F500060F520E030E040E85EE32BC0693C7105AD +:101F600008F0AAC080E090E00E945D2A20E030E006 +:101F700040EA51E40E945B2920E030E044E353E46E +:101F80000E94C4299B01AC010E946F2B20E030E02D +:101F900040E05EE30E946F2B9B01AC0160E070E0CB +:101FA00080E09EE30E945B2944C020E030E040E0F6 +:101FB0005FE3C701B6010E946F2B6B017C0180E0DB +:101FC00090E0A0E0BEE38093060190930701A09308 +:101FD0000801B0930901BFC010922B0210922C028D +:101FE00010922D0210922E024AE0469F9001479FC8 +:101FF000300D1124C90168EB7BE00E94292DBC0142 +:102000006C5D754077FF03C07195619571098827F4 +:1020100077FD8095982F0E945F2A2EE333EC4EE2E5 +:1020200059E30E946F2B20E030E040EC5EE30E9419 +:102030005C296093060170930701809308019093D7 +:10204000090189C010922B0210922C0210922D02CD +:1020500010922E02CE0183709927892BE1F0BE01E8 +:102060006170772780E090E00E945D2A20E030E0F8 +:1020700040E05EE30E946F2B20E030E040E45FE34D +:102080000E945C2960930601709307018093080108 +:10209000909309010CC080E090E0A0E0BFE3809342 +:1020A000060190930701A0930801B0930901C7703E +:1020B000DD27CD2B09F04FC01092060110920701C9 +:1020C000109208011092090146C010922B02109242 +:1020D0002C0210922D0210922E0200E010E020E05F +:1020E0003FE300930601109307012093080130930A +:1020F00009016739710578F180E090E00E945D2A5E +:1021000020E030E047E153E40E945B2920E030E02A +:102110004AE754E40E94C42920E030E048E452E455 +:102120000E946F2B20E030E040EA51E40E94A12A97 +:102130000E942C2A660F771F660F771FFB01EE5A4D +:10214000FE4F2081318142815381C701B6010E9437 +:102150006F2B6B017C01C701B601DF91CF911F91FD +:102160000F91FF90EF90DF90CF90BF90AF909F9036 +:102170008F90089580918C020895CF93DF9300D0C3 +:102180001F92CDB7DEB79C0180911303843019F5FF +:1021900093E099833B832A839093E9008FEF90919A +:1021A000E800815095FD06C095ED9A95F1F7000085 +:1021B0008111F5CF8091E80085FF0DC040E050E02F +:1021C00063E070E0CE0101960E941E138091E8004A +:1021D0008E778093E8000F900F900F90DF91CF9152 +:1021E0000895CF93DF9300D01F92CDB7DEB7209133 +:1021F0001303243021F522E029839B838A8383E023 +:102200008093E9008FEF9091E800815095FD06C022 +:1022100095ED9A95F1F700008111F5CF8091E800D6 +:1022200085FF0DC040E050E063E070E0CE01019614 +:102230000E941E138091E8008E778093E8000F9033 +:102240000F900F90DF91CF910895209113032430C8 +:10225000F1F422E02093E9002FEF3091E8002150C3 +:1022600035FD06C035ED3A95F1F700002111F5CFA7 +:102270002091E80025FF0BC040E050E065E070E0F1 +:102280000E941E138091E8008E778093E8000895E5 +:10229000CF93DF93EC0190911303943009F046C083 +:1022A000809115018823D9F0809116018823B9F017 +:1022B0009093E9008FEF9091E800815095FD06C062 +:1022C00095E19A95F1F700008111F5CF8091E80032 +:1022D00085FF2CC040E050E060E170E017C081E075 +:1022E0008093E9008FEF9091E800815095FD06C042 +:1022F00095ED9A95F1F700008111F5CF8091E800F6 +:1023000085FF14C040E050E068E070E0CE010E941C +:102310001E138091E8008E778093E80080E1FE0133 +:10232000ACE7B2E001900D928A95E1F7DF91CF9191 +:10233000089580911203811109C00E94B3140E9474 +:1023400010158091E20084608093E200089510925D +:1023500012030895089508950C94572342E061EC08 +:1023600081E00E942D1442E061EC82E00E942D1475 +:1023700042E061EC83E00E942D1442E161EC84E0D4 +:102380000C942D1480911503833009F455C030F45A +:10239000813071F0823009F48EC008958A3009F4DA +:1023A0007AC08B3009F460C0893009F09CC020C02D +:1023B00080911403813A09F096C08091E800877FEC +:1023C0008093E8008091180390911903892B21F4E0 +:1023D00060E18CE792E003C060E080E090E070E0B4 +:1023E0000E9469138091E8008B778093E80008953C +:1023F00080911403813209F076C080911803909186 +:102400001903009719F0039709F06DC08091E80057 +:10241000877F8093E8008091E80082FD05C080916D +:1024200013038111F8CF5FC08091F10080938C027B +:102430008091E8008B7753C080911403813A09F0B2 +:1024400052C08091180390911903892B09F04BC059 +:102450008091E800877F8093E8008091E80080FF0A +:10246000FCCF8091150136C0809114038132D9F5DB +:102470008091180390911903892BA9F58091E800A8 +:10248000877F8093E8000E946214809116038093F6 +:1024900015010C94981C80911403813221F58091D0 +:1024A000E800877F8093E8000E9462148091170300 +:1024B00080938D02089580911403813AA1F4809154 +:1024C000E800877F8093E8008091E80080FFFCCFE0 +:1024D00080918D028093F1008091E8008E77809347 +:1024E000E8000C946214089584B7877F84BF88E164 +:1024F0000FB6F89480936000109260000FBE90E0D9 +:1025000080E80FB6F89480936100909361000FBE4D +:102510000E9405180E94B3140E9410158091E200D9 +:1025200084608093E20078940E9496170E940718B6 +:102530008BE091E00E94B11780911303853069F41C +:102540000E941823809111038823B1F30E9446232F +:10255000882391F30E940813EFCF0E940F18ECCF4D +:10256000292F332723303105C9F064F42130310598 +:1025700081F02230310509F043C08DE690E024ED72 +:1025800034E042C021323105F1F02232310541F10F +:1025900037C082E190E021E435E036C099278130F0 +:1025A000910541F08230910541F0892B49F5E0ED2C +:1025B000F4E005C0E2EAF4E002C0E8E7F4E0849168 +:1025C00090E09F0121C06430D8F4E62FF0E0EE0FD8 +:1025D000FF1FE255FE4F2081318189E090E014C059 +:1025E000643070F470E0FB01EE0FFF1FEA55FE4F00 +:1025F00020813181FB01EE55FE4F808190E004C0C7 +:1026000080E090E020E030E0FA01318320830895FB +:1026100080E189BD82E189BD09B400FEFDCF8091D2 +:10262000D8008F7D8093D8008091E00082608093F5 +:10263000E0008091E00081FDFCCF0895CF92DF9211 +:10264000EF92FF920F931F93CF93DF93EC018B01D7 +:102650006A010E948114811133C0C114D10439F080 +:10266000F60180819181081B190BC80FD91FE12C3D +:10267000F12C0115110519F18091E80085FD16C0B6 +:102680008091E8008E778093E800C114D10449F06E +:10269000F60180819181E80EF91EF182E08285E0E9 +:1026A0000FC00E948114882321F30AC0899180936E +:1026B000F10001501109FFEFEF1AFF0ADACF80E0B5 +:1026C000DF91CF911F910F91FF90EF90DF90CF900E +:1026D000089520911A0330911B032617370748F0FD +:1026E0006115710539F42091E8002E772093E800F8 +:1026F00001C0B90140E061157105A9F120911303F2 +:10270000222309F443C0253009F442C02091E80097 +:1027100023FD40C02091E80022FD32C02091E80056 +:1027200020FFE9CF4091F3002091F20030E0342BFC +:10273000FC01CF016115710559F02830310540F4D5 +:1027400081918093F100615071092F5F3F4FF1CF6C +:1027500041E02830310509F040E02091E8002E7773 +:102760002093E800C8CF4111C9CF0AC0809113035C +:10277000882361F0853061F08091E80083FD0AC014 +:102780008091E80082FFF2CF80E0089582E0089512 +:1027900083E0089581E0089520911A0330911B038E +:1027A0002617370748F06115710539F42091E800C4 +:1027B0002E772093E80001C0B901FC0120E06115EB +:1027C000710591F180911303882309F440C085308D +:1027D00009F43FC08091E80083FD3DC08091E8008E +:1027E00082FD2FC08091E80080FFE9CF2091F300A7 +:1027F0008091F20090E0922B6115710559F08830BC +:10280000910540F424912093F100319661507109B3 +:102810000196F2CF21E0089709F020E08091E800CE +:102820008E778093E800CBCF2111CCCF0AC0809166 +:102830001303882361F0853061F08091E80083FD07 +:102840000AC08091E80082FFF2CF80E0089582E024 +:10285000089583E0089581E00895982F973058F502 +:102860009093E900981739F07091EC002091ED00F9 +:102870005091F00003C0242F762F50E021FF19C0A3 +:102880003091EB003E7F3093EB003091ED003D7FC7 +:102890003093ED003091EB0031603093EB0070939A +:1028A000EC002093ED005093F0002091EE0027FF04 +:1028B00007C09F5FD3CF8F708093E90081E00895B8 +:1028C00080E008958091140387FF11C08091E80093 +:1028D00082FD05C0809113038111F8CF11C0809152 +:1028E000E8008B770BC080911303882349F0809117 +:1028F000E80080FFF8CF8091E8008E778093E800B1 +:1029000008952091E4003091E50095E64091EC00B7 +:10291000842F817040FF22C08091E80080FD1CC0A0 +:1029200080911303882391F0853091F08091EB0022 +:1029300085FD10C04091E4005091E5004217530717 +:1029400029F39A01915011F784E0089582E00895E7 +:1029500083E0089581E0089580E008954091E800C3 +:1029600042FFDECF08950E9421150E942915E0EE56 +:10297000F0E0808181608083E8EDF0E080818F77F6 +:10298000808319BCA7EDB0E08C918E7F8C93808101 +:102990008F7E80831092120308950F931F93CF931D +:1029A000DF930E9421150E942915C8EDD0E088818F +:1029B0008F77888388818068888388818F7D8883EA +:1029C00019BC1092130310920F031092110310926E +:1029D000100300EE10E0F80180818B7F80838881F6 +:1029E0008160888342E060E080E00E942D14E1EE87 +:1029F000F0E080818E7F8083E2EEF0E08081816074 +:102A00008083808188608083F80180818E7F8083CD +:102A1000888180618883DF91CF911F910F91089504 +:102A2000E8EDF0E080818F7E8083E7EDF0E080814B +:102A30008160808384E082BF81E0809312030C94E4 +:102A4000CD14E8EDF0E080818E7F80831092E2006B +:102A500008951092DA001092E10008951F920F92EB +:102A60000FB60F9211242F933F934F935F936F9361 +:102A70007F938F939F93AF93BF93EF93FF93809137 +:102A8000E10082FF0BC08091E20082FF07C08091CD +:102A9000E1008B7F8093E1000E9495178091DA001E +:102AA00080FF1FC08091D80080FF1BC08091DA009A +:102AB0008E7F8093DA008091D90080FF0DC080E185 +:102AC00089BD82E189BD09B400FEFDCF81E080931C +:102AD00013030E94991105C019BC109213030E94A0 +:102AE000A7118091E10080FF19C08091E20080FF72 +:102AF00015C08091E2008E7F8093E2008091E20019 +:102B000080618093E2008091D80080628093D80039 +:102B100019BC85E0809313030E94AB118091E10002 +:102B200084FF30C08091E20084FF2CC080E189BD29 +:102B300082E189BD09B400FEFDCF8091D8008F7D70 +:102B40008093D8008091E1008F7E8093E100809196 +:102B5000E2008F7E8093E2008091E20081608093AA +:102B6000E20080910F03882311F084E007C0809178 +:102B7000E30087FD02C081E001C083E0809313037E +:102B80000E94AC118091E10083FF29C08091E20096 +:102B900083FF25C08091E100877F8093E10082E080 +:102BA0008093130310920F038091E1008E7F809336 +:102BB000E1008091E2008E7F8093E2008091E2004C +:102BC00080618093E20042E060E080E00E942D148A +:102BD0008091F00088608093F0000E94AA11FF911C +:102BE000EF91BF91AF919F918F917F916F915F9185 +:102BF0004F913F912F910F900FBE0F901F901895FE +:102C00001F920F920FB60F9211242F933F934F9361 +:102C10005F936F937F938F939F93AF93BF93CF9364 +:102C2000DF93EF93FF93C091E900CF708091EC00A8 +:102C3000D82FD17080FDD0E81092E9008091F0008B +:102C4000877F8093F00078940E9444161092E900E8 +:102C50008091F00088608093F000CD2BCF70C093FE +:102C6000E900FF91EF91DF91CF91BF91AF919F91DB +:102C70008F917F916F915F914F913F912F910F9025 +:102C80000FBE0F901F9018951F93CF93DF93CDB772 +:102C9000DEB7AA970FB6F894DEBF0FBECDBFE4E152 +:102CA000F3E088E08E0F9091F10091938E13FBCFAB +:102CB0000E94C2118091E80083FF1FC1809114031C +:102CC00090911503492F50E04A30510508F015C185 +:102CD000FA01EA5AFF4F0C94512D803881F0823866 +:102CE00009F00BC1809118038F708093E9008091E7 +:102CF000EB0085FB882780F91092E90006C08091DF +:102D0000100390911103911182609091E800977FD8 +:102D10009093E8008093F1001092F100C8C0282F32 +:102D20002D7F09F0EAC0882319F0823061F0E5C0F8 +:102D300080911603813009F0E0C0933009F080E003 +:102D4000809311032BC080911603811127C08091BD +:102D500018038F7009F4D1C08093E9002091EB0033 +:102D600020FF1CC0933021F48091EB00806214C0DE +:102D70009091EB0090619093EB0021E030E0A9018D +:102D800002C0440F551F8A95E2F74093EA00109263 +:102D9000EA008091EB0088608093EB001092E900DC +:102DA0008091E800877F86C08111A7C0109116032B +:102DB0001F778091E3008078812B8093E3008091DE +:102DC000E800877F8093E8000E9462148091E80009 +:102DD00080FFFCCF8091E30080688093E3001111B5 +:102DE00002C082E001C083E08093130386C0805854 +:102DF000823008F082C080911603909117038C3DB9 +:102E000053E0950779F583E08A838AE289834FB797 +:102E1000F894DE01139620E03EE051E2E32FF0E06B +:102E200050935700E49120FF03C0E295EF703F5F9D +:102E3000EF708E2F90E0EA3010F0C79601C0C09678 +:102E40008D939D932F5F243149F74FBF8091E80008 +:102E5000877F8093E8006AE270E0CE0101960E94CD +:102E6000691314C0AE014F5F5F4F609118030E9459 +:102E7000B012BC01009709F440C09091E800977F20 +:102E80009093E80089819A810E94CC138091E80098 +:102E90008B778093E80031C0803879F58091E80025 +:102EA000877F8093E80080910F038093F1008091E9 +:102EB000E8008E778093E8000E9462141EC08111A2 +:102EC0001CC0909116039230C0F48091E800877F77 +:102ED0008093E80090930F030E94621480910F0387 +:102EE000811106C08091E30087FD02C081E001C02E +:102EF00084E0809313030E94AE118091E80083FF69 +:102F00000AC08091E800877F8093E8008091EB0001 +:102F100080628093EB00AA960FB6F894DEBF0FBED6 +:102F2000CDBFDF91CF911F9108950895CF938091E8 +:102F300013038823A1F0C091E900CF709091EC00B9 +:102F4000892F817090FD80E8C82B1092E900809154 +:102F5000E80083FD0E944416CF70C093E900CF9132 +:102F6000089590939302809392020895E0919202C3 +:102F7000F0919302309721F00190F081E02D0994B7 +:102F800080E00895E0919202F0919302309721F051 +:102F90000280F381E02D09940895E0919202F0916E +:102FA0009302309721F00480F581E02D0994089573 +:102FB00020919002309191028217930771F09093C3 +:102FC000910280939002E0919202F09193023097E7 +:102FD00021F00680F781E02D0994089520918E025A +:102FE00030918F028217930771F090938F02809334 +:102FF0008E02E0919202F0919302309721F00084CA +:10300000F185E02D0994089508950C9404180E9408 +:103010008B230E94DC090E9411240C94C0285F922B +:103020006F927F928F929F92AF92BF92CF92DF92D8 +:10303000EF92FF920F931F93CF93DF9300D000D0B6 +:103040001F92CDB7DEB70E94210A9DE9C92E92E0FA +:10305000D92E03E010E0AA24A394B12C502E802F87 +:103060000E949C0A4C01F601729062906F016826E2 +:10307000792661147104A1F40150110978F78FEFDA +:1030800089838A831B820E9494238160782F9D8389 +:103090008C8349815A816B818D810E94BF1838C011 +:1030A0008091F20281FD0E94A50A2BE030E07501BB +:1030B000022E02C0EE0CFF1C0A94E2F7C701862123 +:1030C0009721892B09F129835A828E209F2091E034 +:1030D000892809F490E09B830E9494238160782FD3 +:1030E0009D838C8349815A816B818D810E94BF1899 +:1030F000000F111FF801EB56FD4F80819181E826EA +:10310000F926F182E08204C02150310980F6B4CF63 +:103110000E94F825109194020E94B6171817D1F05A +:103120000E94B617809394020F900F900F900F900B +:103130000F90DF91CF911F910F91FF90EF90DF9053 +:10314000CF90BF90AF909F908F907F906F905F9047 +:103150000C94C6090F900F900F900F900F90DF9175 +:10316000CF911F910F91FF90EF90DF90CF90BF9084 +:10317000AF909F908F907F906F905F900895CF93C6 +:10318000DF93CDB7DEB72B970FB6F894DEBF0FBE37 +:10319000CDBF4F83588769877A878B87DE01119669 +:1031A00086E0FD0111928A95E9F785E0FE013796E8 +:1031B00001900D928A95E1F749815A816B817C815A +:1031C0008D819E810E94361F2B960FB6F894DEBF2C +:1031D0000FBECDBFDF91CF910895CF93882309F41F +:1031E000C2C0C82F823859F40E94B61781FDBBC0F7 +:1031F00089E30E9410220E94DD2289E30CC08338FB +:1032000079F40E94B61780FDAEC083E50E941022BB +:103210000E94DD2283E50E945222CF910C94DD2290 +:10322000843859F40E94B61782FD9DC087E40E943D +:1032300010220E94DD2287E4EECF8CEF8C0F813AC2 +:1032400048F48C2F0E94282881118DC08C2F0E9459 +:103250001022E3CF80E28C0F883048F4C77081E001 +:1032600001C0880FCA95EAF70E949622D6CF8BE557 +:103270008C0F833078F4C53A29F0C63A31F083E8F0 +:1032800090E005C081E890E002C082E890E0CF9134 +:103290000C94D81788E58C0F833108F064C0C83AC5 +:1032A00039F1C93A41F1CA3A49F1CB3A51F1CC3A34 +:1032B00059F1CD3A61F1C03B69F1CE3A71F1CF3AA3 +:1032C00079F1C13B81F1C23B89F1C33B91F1C43B30 +:1032D00099F1C53BA1F1C63BA9F1C73BB1F1C83B90 +:1032E000B9F1C93BC1F1CA3BC9F180E090E038C0F7 +:1032F00082EE90E035C089EE90E032C08AEE90E038 +:103300002FC085EB90E02CC086EB90E029C087EBC6 +:1033100090E026C08CEC90E023C08DEC90E020C0C3 +:1033200083E891E01DC08AE891E01AC082E991E04B +:1033300017C084E991E014C081E292E011C083E2F9 +:1033400092E00EC084E292E00BC085E292E008C0F9 +:1033500086E292E005C087E292E002C08AE292E053 +:10336000CF910C94EE17CF910895882309F44BC0A8 +:10337000823859F40E94B61781FF45C089E30E9444 +:1033800010220E94DD2289E30CC0833871F40E9470 +:10339000B61780FF38C083E50E9410220E94DD220C +:1033A00083E50E9452220C94DD22843859F40E9455 +:1033B000B61782FF28C087E40E9410220E94DD22F7 +:1033C00087E4EFCF9CEF980F913A58F390E2980F73 +:1033D000983050F4877091E001C0990F8A95EAF710 +:1033E000892F0E949C22DFCF9BE5980F933020F419 +:1033F00080E090E00C94D817885A833120F480E064 +:1034000090E00C94EE170895882321F00E949622F4 +:103410000C94DD220895882321F00E949C220C94B4 +:10342000DD2208957F928F929F92AF92BF92CF92AA +:10343000DF92EF92FF920F931F93CF93DF931F9230 +:10344000CDB7DEB77C01C62E772EFC010581029533 +:103450000F70128111110E94B3220E940922882349 +:1034600079F0112369F080E28C0D883048F082E019 +:103470000E94F2210E94092291E0D82ED92601C093 +:10348000D12CE72DE295EF70F0E0E05AFF4F0C945D +:10349000512D872D807F072D0F70882311F0029505 +:1034A000007F112389F0002309F499C180E28C0D7B +:1034B000883020F4802F0E94962203C0802F0E9423 +:1034C000A6220E94DD228BC18C2D0E94B5190023FB +:1034D00009F4C3C180E28C0D883020F4802F0E9453 +:1034E0009C2203C0802F0E94AC220E94DD22B5C125 +:1034F000872D807F972D9F70803211F4892F03C014 +:10350000892F8295807FCC2021F0F1E0CF16A1F0A9 +:103510001DC0112339F0002319F1013009F50E9473 +:10352000C6229BC1002319F0013009F496C189839A +:103530000E94C922898110C1112321F0063008F0B0 +:103540008CC10EC0053008F088C106C1112359F0A6 +:10355000002331F0F701958190FF41C19F70958361 +:103560000E94041A7AC1002309F4F6C03EC1872DD7 +:1035700086958695837090E0009719F0019761F029 +:103580006CC1112321F08C2D972D937002C080E027 +:1035900090E00E94D81761C1112321F08C2D972D46 +:1035A000937002C080E090E00E94EE1756C18C2D0F +:1035B000112319F00E94002502C00E9468250E9474 +:1035C000ED254BC1872D837009F052C0111145C103 +:1035D0008C2D829586958770880F880F9C2D9F7003 +:1035E000892E912CA12CB12C082E04C0880C991C7A +:1035F000AA1CBB1C0A94D2F7C4FE14C00FE010E052 +:1036000020E030E0B901A80104C0440F551F661F37 +:10361000771F8A95D2F7CB01BA0160957095809596 +:10362000909503C060E070E0CB01272D269526958C +:10363000237030E02230310569F02330310589F004 +:10364000682979298A299B292130310571F00E9446 +:103650007E2003C1682979298A299B290E949A2002 +:10366000FCC00E947E20C501B4010E946220F5C00A +:10367000112319F0872D817001C08695882309F4E4 +:10368000ECC08C2D829586958770880F880F9C2DB5 +:103690009F70892E912CA12CB12C082E04C0880C6F +:1036A000991CAA1CBB1C0A94D2F7C4FE14C00FE0DC +:1036B00010E020E030E0B901A80104C0440F551F1C +:1036C000661F771F8A95D2F7CB01BA016095709576 +:1036D0008095909503C060E070E0CB01272D269582 +:1036E00026952370422F50E04230510569F0433057 +:1036F000510589F0682979298A299B29413051058A +:1037000071F00E945821A9C0682979298A299B292A +:103710000E947421A2C00E945821C501B4010E94D8 +:103720003C219BC08C2D90E0FC01E05EF109E5316D +:10373000F10508F050C0E059FF4F0C94512D0C2DAD +:103740000F70872D8F71112321F00E94D520802FBB +:1037500007CF0E94F620802F0E940B1A7EC01123F3 +:1037600041F0053008F079C0872D8F710E941B2130 +:1037700074C0063008F071C0F7CF112339F0872DDF +:103780008F710E94D52069C01123C9F3872D8F71D5 +:103790000E94F62062C0112329F0872D8F710E94AC +:1037A000C0205BC00E94B62058C0112351F0172DD5 +:1037B0001F71812F0E94D52063E0812F0E94E92193 +:1037C0004CC081E00E94F221023008F446C082E041 +:1037D0000E94F22142C0112331F0002381F28C2D8E +:1037E0000E94ED183AC0002389F28C2D0E94B51971 +:1037F00034C0472D4F706C2DC7010E941B040E94DE +:10380000DA1F2BC0111129C0472D4F7050E04230F4 +:103810005105B9F04CF44115510581F04130510585 +:10382000E1F40E94E82819C04330510569F04430A2 +:10383000510599F48C2D0E943A290FC00E94D1287D +:103840000CC00E94042909C00E94172906C0472DF8 +:103850004F706C2DC7010E94A706DD20F9F00E9471 +:10386000E52180FD1BC0F70112820E94DF210E942A +:10387000D520C7010E945D1C0E94DF210F90DF91BF +:10388000CF911F910F91FF90EF90DF90CF90BF905D +:10389000AF909F908F907F900C94F6200F90DF91C7 +:1038A000CF911F910F91FF90EF90DF90CF90BF903D +:1038B000AF909F908F907F9008950F931F93CF9319 +:1038C000DF93EC01888199812B813C81232BB9F016 +:1038D0009F3F11F48F3F99F0CE010E94A6048823E8 +:1038E00071F0688179818A810E94DB218C010E94BC +:1038F00090210E945720B801CE010E94121ADF9138 +:10390000CF911F910F9108950E94B3220E94C3226C +:103910000E9488220E94DD220E949E260E94ED25A0 +:1039200080E090E00E94D81780E090E00C94EE17C1 +:103930000E94A3220C94841C0E94D021292F22953E +:103940002F7030E02C3031054CF42A3031056CF406 +:103950002250310922303105A8F407C02C3031053E +:1039600069F02F30310551F00DC0803F69F018F437 +:10397000803E40F409C0843F29F406C093FB8827A9 +:1039800080F9089580E0089581E00895CF93DF9352 +:1039900000D000D01F92CDB7DEB70F900F900F90E0 +:1039A0000F900F90DF91CF910895CF93DF9300D0C8 +:1039B00000D000D0CDB7DEB726960FB6F894DEBFA4 +:1039C0000FBECDBFDF91CF9108951F93CF93DF93AB +:1039D000C0919D0216E080919E02C81799F0D0E038 +:1039E0001C9FF0011D9FF00D1124E156FD4F4081F9 +:1039F000518162817381848195810E94D51C2196B9 +:103A0000C770E9CFDF91CF911F9108954091CF0208 +:103A10005091D0026091D1027091D2028091D30274 +:103A20009091D4020C94D51C8091D40282958F7011 +:103A300009F054C08091D102882309F44FC08091CD +:103A40009D02A0919E026091CF027091D0024091A0 +:103A5000D2025091D302B6E08A1709F43FC090E039 +:103A600041155105C1F17F3F11F46F3FA1F1B89F9E +:103A7000F001B99FF00D1124E156FD4F2181721321 +:103A80002AC02081621327C02281211124C02381F2 +:103A900034812417350710F421503109241B350BCC +:103AA000283C3105C0F42091D4022F70206120936E +:103AB000D40226E0289FF001299FF00D1124EC5537 +:103AC000FD4F80818F70806180838FEC92E00E9437 +:103AD0005D1C0C94E51C01968770BECF0895CF92B3 +:103AE000DF92EF92FF920F931F93CF93DF93CDB7A7 +:103AF000DEB762970FB6F894DEBF0FBECDBF8C0164 +:103B000085E0F801DE011D9601900D928A95E1F79E +:103B1000D8014C9111965C91119712966C91129765 +:103B20001396CD90DC9014973091CF027091D00213 +:103B30008091D2029091D302009709F46BC17F3F2C +:103B400019F43F3F09F466C1E090D102EE2009F478 +:103B5000C0C02091D402C816D90628F0F601E81B8F +:103B6000F90BCF0104C0809590958C0D9D1DFF240D +:103B7000F394883C910578F0F12C207F09F0C6C0C1 +:103B80007C2DD98AC88A89890E94C61C8FEC92E054 +:103B90000E945D1CB1C0822F807F09F046C0751362 +:103BA00014C0341312C0611110C02F702061209313 +:103BB000D4020E94061D8FEC92E00E945D1C809151 +:103BC000D402D80115968C932EC0CD2819F15F3FF1 +:103BD00011F44F3FF9F0F62E61111CC080919D0247 +:103BE00020919E0236E0821709F45AC090E0389F77 +:103BF000F001399FF00D1124E156FD4F71815713EB +:103C000006C07081471303C07281711103C0019611 +:103C10008770E9CFF62E662309F418C18091D4028B +:103C200081608093D402F12C11C1751308C0341344 +:103C300006C0611104C08091D402D801C3C04D8771 +:103C40005E878D859E856A8B0E949C1C6A8988236D +:103C5000E1F16623D1F12091D402822F82958F70F9 +:103C600090E0029774F08091CF029091D0029887F3 +:103C70008F831986DB86CA862C87CE0107960E9421 +:103C80005D1C86E0F801AFECB2E001900D928A95E0 +:103C9000E1F70E94141D0E94061DFF24F394D6C074 +:103CA0004D875E878D859E850E94D021292F229584 +:103CB0002F7030E0223031050CF0BCC09F7009F04D +:103CC000B6C0805E883008F4C1C0C8010E945D1C87 +:103CD000E4CFC816D90608F453C0F601E81BF90B67 +:103CE000CF01883C910508F450C0F12C7C2DD98A75 +:103CF000C88A89890E94C61CEFECF2E086E0DF01E9 +:103D00001D928A95E9F70E94061DA0C0751314C084 +:103D1000341312C0611110C08091D402F801858360 +:103D2000C8010E945D1C86E0EFECF2E0DF011D920D +:103D30008A95E9F7FE2C8AC04D875E878D859E8522 +:103D40006A8B0E949C1C6A89882309F4BECF662373 +:103D500009F4BBCF2091D402822F82958F7090E01E +:103D600002970CF48ECF8091CF029091D0029A836B +:103D700089831B82DD82CC822E83CE0101967FCF88 +:103D8000809590958C0D9D1DACCFF62E662309F481 +:103D90009CCF75132EC034132CC02091D40220FD6B +:103DA0001FC0822F82958F70D9F0D80115962C9361 +:103DB00015978F3049F08F5F982F9295907F822FC3 +:103DC0008F70892B15968C93C8010E945D1C86E02C +:103DD000F801AFECB2E001900D928A95E1F793CF34 +:103DE00086E0F801AFECB2E001900D928A95E1F720 +:103DF0002DC04D875E878D859E850E949C1C8111FC +:103E000040CF8091D40281608093D402C8010E9487 +:103E10005D1C1CC0662309F458CF4D875E878D85D5 +:103E20009E850E949C1C882309F44FCF2ACF8111C4 +:103E300048CF0CC0243031050CF047CF9F7009F4F7 +:103E400040CFF8019581907F09F03BCF8F2D62968E +:103E50000FB6F894DEBF0FBECDBFDF91CF911F919B +:103E60000F91FF90EF90DF90CF9008951F93CF9325 +:103E7000DF93CDB7DEB72C970FB6F894DEBF0FBE39 +:103E8000CDBF4F83588769877A878B879C87CE0100 +:103E900007960E946F1D882369F08F8198852A8577 +:103EA0003B85232BF1F19F3F09F063C08F3F09F061 +:103EB00060C037C086E0FE013796DE0111960190A2 +:103EC0000D928A95E1F76F817885EA85FB853097B9 +:103ED00041F17F3F11F46F3F21F120919E0230E0CC +:103EE000C90101968770992740919D0250E084177F +:103EF000950709F447C069837A83FD83EC8396E0D4 +:103F0000929FD001939FB00D1124A156BD4FFE0189 +:103F1000319601900D929A95E1F780939E020E944E +:103F2000E51C16E080919D0290919E028917C1F1D7 +:103F3000189FC001112481569D4F0E946F1D882338 +:103F400079F1E0919D021E9FF0011124E156FD4F91 +:103F50004081518162817381848195810E94D51C49 +:103F600080919D0290E001968770992780939D0231 +:103F7000D9CF4F81588569857A858B859C850E942C +:103F8000D51CCFCF0E94981C10929E0210929D02C9 +:103F9000EFECF2E086E0DF011D928A95E9F7C1CFF0 +:103FA0002C960FB6F894DEBF0FBECDBFDF91CF9138 +:103FB0001F910895EF92FF920F931F93CF93DF937A +:103FC0008C01009709F46CC0F12CEE24E394E80115 +:103FD0002196F8018491843740F4843008F051C070 +:103FE000813081F0823019F15BC0853709F444C01B +:103FF000A8F19CE7980F903708F052C08F770E9485 +:10400000B51941C00E5F1F4FFE01C49180E28C0FB5 +:10401000883048F4C7708E2D01C0880FCA95EAF722 +:104020000E94B62214C08C2F0E94ED182DC00E5F86 +:104030001F4FFE01C49180E28C0F883058F4C77086 +:104040008E2D01C0880FCA95EAF70E94BC220E94FB +:10405000DD221AC08C2F0E94B51916C00E5F1F4FAB +:10406000FE01C491CC2381F08FE99FE00197F1F725 +:1040700000C00000C150F6CF0E5F1F4FFE01F4904C +:1040800003C00E94ED188E018F2D882309F49FCF65 +:10409000EFE9FFE03197F1F700C000008150F5CF64 +:1040A000DF91CF911F910F91FF90EF9008950895A8 +:1040B0006093D9027093DA028093DB029093DC0262 +:1040C0000C94841C0F931F930091D9021091DA0273 +:1040D0002091DB023091DC02DC01CB01802B912BA3 +:1040E000A22BB32B8093D9029093DA02A093DB0228 +:1040F000B093DC021F910F910C94841C0F931F93BB +:104100000091D9021091DA022091DB023091DC0299 +:10411000DC01CB0180239123A223B3238093D90216 +:104120009093DA02A093DB02B093DC021F910F910F +:104130000C94841C0F931F930091D9021091DA0202 +:104140002091DB023091DC02DC01CB01802791273A +:10415000A227B3278093D9029093DA02A093DB02BF +:10416000B093DC021F910F910C94841C1092D50225 +:104170001092D6021092D7021092D8020C94841C8E +:1041800041E050E060E070E004C0440F551F661F3E +:10419000771F8A95D2F74093D5025093D602609349 +:1041A000D7027093D8020C94841C41E050E060E088 +:1041B00070E004C0440F551F661F771F8A95D2F721 +:1041C0008091D5029091D602A091D702B091D802E9 +:1041D000482B592B6A2B7B2B4093D5025093D60248 +:1041E0006093D7027093D8020C94841C41E050E095 +:1041F00060E070E004C0440F551F661F771F8A956A +:10420000D2F740955095609570958091D502909128 +:10421000D602A091D702B091D802482359236A232D +:104220007B234093D5025093D6026093D7027093BC +:10423000D8020C94841C41E050E060E070E004C0BF +:10424000440F551F661F771F8A95D2F78091D502BC +:104250009091D602A091D702B091D8024827592751 +:104260006A277B274093D5025093D6026093D702EA +:104270007093D8020C94841C0F931F930091D50265 +:104280001091D6022091D7023091D802DC01CB01E7 +:10429000802B912BA22BB32B8093D5029093D60227 +:1042A000A093D702B093D8021F910F910C94841C55 +:1042B0000F931F930091D5021091D6022091D7023F +:1042C0003091D802DC01CB0180239123A223B323B8 +:1042D0008093D5029093D602A093D702B093D802D0 +:1042E0001F910F910C94841C0F931F930091D50282 +:1042F0001091D6022091D7023091D802DC01CB0177 +:1043000080279127A227B3278093D5029093D602C6 +:10431000A093D702B093D8021F910F910C94841CE4 +:104320000895CF92DF92EF92FF920F931F93CF9356 +:10433000DF938C01C090D902D090DA02E090DB02CA +:10434000F090DC028091D5029091D602A091D70224 +:10435000B091D802C82AD92AEA2AFB2ACFE1D0E0B4 +:10436000D701C6010C2E04C0B695A79597958795E1 +:104370000A94D2F780FF06C0B8018C2F0E942C0946 +:10438000019721F4219760F780E001C08C2FDF9125 +:10439000CF911F910F91FF90EF90DF90CF900895F4 +:1043A000CF93DF93EC010E949121BE010E942C0962 +:1043B000DF91CF910895CB010E94D0210895809183 +:1043C000DD0285958595859508958091DD0287703C +:1043D000089598E0899F90011124262B2093DD02F7 +:1043E0000C94D5202091DD02809582238093DD02FC +:1043F000982F977069F430E0482F552747FD509566 +:104400002417350729F08595859585950C94F62018 +:1044100008959091DD02977081E009F480E008959D +:1044200090911501992321F090911601911109C0E5 +:104430002091170130911801F90132969FEF40E069 +:104440001FC0982F9695969596959F3050F5E091C0 +:104450001701F0911801E90FF11D877021E030E09C +:10446000A90102C0440F551F8A95E2F7CA01918144 +:10447000892B818308959F3F39F04F5F4E3041F083 +:1044800051915813F8CF0DC05111F7CF942FF5CF9C +:104490009F3F39F0F901E90FF11D97FDFA958283ED +:1044A0000895089590911501992321F09091160196 +:1044B000911109C02091170130911801F90132962C +:1044C000205F3F4F1FC0982F9695969596959F30E9 +:1044D000F0F4E0911701F0911801E90FF11D8770D8 +:1044E00021E030E0A90102C0440F551F8A95E2F790 +:1044F000CA01809591818923818308953196E217BD +:10450000F30729F090819813F9CF1082F7CF08951F +:1045100081E090E0E0911701F0911801E80FF91F98 +:104520001082019680319105A9F708959091F102CA +:10453000892B8093F102089580959091F10289234F +:104540008093F10208951092F10208959091F00283 +:10455000892B8093F002089580959091F002892331 +:104560008093F00208951092F00208959091EF0266 +:10457000892B8093EF02089580959091EF02892313 +:104580008093EF0208951092EF0208958093DE0267 +:1045900008951092DE0208958091170190911801FC +:1045A000FC0131969C01205F3F4F80E09191911179 +:1045B0008F5FE217F307D1F70895E0911701F091AB +:1045C00018018091F1028083E0911701F0911801A8 +:1045D00090818091F002892B8083E0911701F09106 +:1045E000180190818091EF02892B80838091DE02F7 +:1045F000882361F0E0911701F09118019081892BD7 +:1046000080830E94CC2281111092DE0280911701DA +:10461000909118010C94C21720E0009739F0AC017A +:1046200041505109842395232F5FF7CF822F08959E +:1046300080911303843039F11092F30220E488E171 +:1046400090E00FB6F894A895809360000FBE209379 +:10465000600080E00E94820380E00E94C60983B768 +:10466000817F846083BF83B7816083BF789488959E +:1046700083B78E7F83BF88E10FB6F8948093600084 +:10468000109260000FBE08950895089580E00E9482 +:1046900082030E9444230E94210A0E9445230E9413 +:1046A000A60A91E0811101C090E0892F08950E942F +:1046B000981C80E00E9482030E94C0280E94B617C6 +:1046C0000C94C6091F920F920FB60F9211248F936C +:1046D0009F93AF93BF938091F302811113C0809198 +:1046E000F4029091F502A091F602B091F702419682 +:1046F000A11DB11D8093F4029093F502A093F602E0 +:10470000B093F702BF91AF919F918F910F900FBE21 +:104710000F901F90189582E084BD93E095BD9AEFAD +:1047200097BD80936E0008952FB7F8948091F4029E +:104730009091F502A091F602B091F7022FBF089573 +:10474000CF92DF92EF92FF920F931F932FB7F894BF +:104750004091F4025091F5026091F6027091F702D7 +:104760002FBF6A017B01EE24FF248C0120E030E0A2 +:10477000C016D106E206F30610F4415051099A0121 +:10478000281B390BC9011F910F91FF90EF90DF900B +:10479000CF9008951F920F920FB60F9211248F930E +:1047A0009F93AF93BF938091F4029091F502A091F3 +:1047B000F602B091F7020196A11DB11D8093F4029B +:1047C0009093F502A093F602B093F702BF91AF91D8 +:1047D0009F918F910F900FBE0F901F9018950E9480 +:1047E000B314F8942FEF87EA91E62150804090406F +:1047F000E1F700C0000087E090EBDC0180931E032E +:1048000090931F03A0932003B09321039CE088E1C1 +:104810000FB6F894A895809360000FBE9093600047 +:10482000FFCF0E945024811102C00E942C240E94BC +:104830005B248093F2020E94632480931C0387FB15 +:10484000882780F9809316010E945F24682F70E00A +:1048500080E090E00C9458206DEE7EEF80E090E0D8 +:104860000E94772D60E082E090E00E94652D60E07C +:1048700083E090E00E94652D60E084E090E00E947B +:10488000652D60E085E090E00E94652D60E086E0A7 +:1048900090E00E94652D6FEF87E090E00C94652D0D +:1048A00080E090E00E945F2D21E08D3E9E4F09F058 +:1048B00020E0822F089582E090E00C94572D83E051 +:1048C00090E00C94572D84E090E00C94572D682FC5 +:1048D00084E090E00C94652D86E090E00C94572DD8 +:1048E000682F86E090E00C94652D87E090E00C94B2 +:1048F000572D682F87E090E00C94652D8091FA0287 +:1049000080FF0BC060911C0185E0689FB0011124FD +:1049100075956795759567952BC081FF09C0609166 +:104920001C0185E0689FB00111247595679520C032 +:1049300082FF07C060911C0185E0689FB0011124CF +:1049400017C09091FB029923D1F060911B0196173B +:1049500088F720911C0185E0289F90011124929FE7 +:10496000A001939F500D112470E0CA010E943D2DBB +:104970006038710540F46115710539F002C065E0D9 +:1049800070E0862F08958FE7089581E00895809163 +:10499000FA0280FF08C060911A0170E07595679572 +:1049A0007595679521C081FF06C060911A0170E07E +:1049B0007595679519C082FF04C060911A0170E077 +:1049C00010C09091FB029923C1F0609119019617D4 +:1049D000A0F780911A01899FC001112470E00E9404 +:1049E0003D2D6038710528F46115710521F0862F81 +:1049F00008958FE7089581E0089561E070E0F4CFB5 +:104A0000803F21F40E947E24819504C0813F29F4D7 +:104A10000E947E248093FE020895823F21F40E942A +:104A20007E24819504C0833F29F40E947E248093D4 +:104A3000FD020895893F19F40E94C72405C08A3FEA +:104A400031F40E94C72481958093FF0208958B3F23 +:104A500021F40E94C724819504C08C3F29F40E9450 +:104A6000C724809300030895843F21F48091FC02C1 +:104A7000816017C0853F21F48091FC02826011C0E3 +:104A8000863F21F48091FC0284600BC0873F21F4B3 +:104A90008091FC02886005C0883F31F48091FC025F +:104AA00080618093FC0208958D3F21F48091FA0289 +:104AB00081600BC08E3F21F48091FA02826005C0B4 +:104AC0008F3F29F48091FA0284608093FA0208955E +:104AD000803F39F48091FE0287FF6CC01092FE0285 +:104AE00069C0813F29F48091FE021816BCF362C0B0 +:104AF0009091FD02823F29F497FF5CC01092FD0265 +:104B000059C0833F19F41916CCF354C0893F41F4BE +:104B10008091FF0218160CF04DC01092FF024AC09F +:104B20008A3F29F48091FF0287FF44C0F6CF8B3F74 +:104B300039F48091000387FF3DC0109200033AC012 +:104B40008C3F29F4809100031816BCF333C0843FD6 +:104B500021F48091FC028E7F17C0853F21F4809163 +:104B6000FC028D7F11C0863F21F48091FC028B7F77 +:104B70000BC0873F21F48091FC02877F05C0883FEE +:104B800031F48091FC028F7E8093FC0213C08D3F34 +:104B900021F48091FA028E7F0BC08E3F21F4809128 +:104BA000FA028D7F05C08F3F29F48091FA028B7F36 +:104BB0008093FA028091FD0281110EC08091FE0265 +:104BC00081110AC08091FF02811106C0809100030B +:104BD000811102C01092FB0208958CEF92E00E94B6 +:104BE000CD170E9494239093F9028093F8020895C0 +:104BF0001F93CF93DF938091F8029091F9020E9466 +:104C0000A023AC019091FB02992321F020911D017A +:104C100030E006C020911E018AE0289F90011124F7 +:104C20004217530708F486C08091FD02C091FE022E +:104C3000D091FF0210910003811107C0C11176C00D +:104C4000D11174C0111172C075C09F3F19F09F5FE0 +:104C50009093FB02181624F40E947E248093FD0298 +:104C60008091FD0287FF05C00E947E24819580937C +:104C7000FD021C1624F40E947E248093FE02809183 +:104C8000FE0287FF05C00E947E2481958093FE026C +:104C90006091FD02662339F1C091FE02CC2319F127 +:104CA000772767FD7095872F972F0E945F2A23E350 +:104CB00033E343E35FE30E946F2B0E942C2A60934F +:104CC000FD026C2F772767FD7095872F972F0E9425 +:104CD0005F2A23E333E343E35FE30E946F2B0E94E9 +:104CE0002C2A6093FE021D1624F40E94C724809390 +:104CF000FF028091FF0287FF05C00E94C7248195B3 +:104D00008093FF02111624F40E94C72480930003AD +:104D10008091000387FF05C00E94C724819580937E +:104D20000003DF91CF911F910C94ED259F3F09F077 +:104D30008ECF96CFDF91CF911F910895ECEFF2E0E7 +:104D400085E0DF011D928A95E9F71092FB0210922F +:104D5000FA020895833081F128F4813059F08230CD +:104D6000D1F00895853009F449C0B8F1863009F4CE +:104D700056C0089580911E01262F30E0280F311D66 +:104D80002F3F310524F4680F60931E0108958FEFC3 +:104D900080931E01089580911D01262F30E0280F79 +:104DA000311D2F3F310524F4680F60931D010895D4 +:104DB0008FEF80931D01089580911C01262F30E014 +:104DC000280F311D2F3F310524F4680F60931C011B +:104DD00008958FEF80931C01089580911B01262F69 +:104DE00030E0280F311D2F3F310524F4680F609308 +:104DF0001B0108958FEF80931B01089580911A0184 +:104E0000262F30E0280F311D2F3F310524F4680F85 +:104E100060931A0108958FEF80931A01089580918D +:104E20001901262F30E0280F311D2F3F310524F4C2 +:104E3000680F6093190108958FEF80931901089509 +:104E4000833011F128F4813049F0823091F00895D7 +:104E5000853081F120F18630C1F1089580911E01E5 +:104E6000681720F4861B80931E01089510921E017E +:104E7000089580911D01681720F4861B80931D0101 +:104E8000089510921D01089580911C01681720F467 +:104E9000861B80931C01089510921C010895809137 +:104EA0001B01681720F4861B80931B010895109244 +:104EB0001B01089580911A01681720F4861B8093C6 +:104EC0001A01089510921A01089580911901681726 +:104ED00020F4861B809319010895109219010895FA +:104EE0000F931F93873208F048C08E3108F08DC0B1 +:104EF000803109F477C008F5873009F461C068F49F +:104F0000863009F09DC08091F202817F8E7F809370 +:104F1000F20281E08093020394C08B3009F489C0CF +:104F20008E3009F08DC08091F20282FB222720F999 +:104F300091E0922790FB82F95EC0863109F479C036 +:104F400060F4813109F07CC00E94981C9091160198 +:104F500081E08927809316016CC0893109F469C00A +:104F60008B3109F06DC08091F20281FB222720F97C +:104F700091E0922790FB81F93EC0883309F459C033 +:104F800050F4893209F457C0853309F454C087328C +:104F900009F451C055C0833409F44DC028F48A3354 +:104FA00008F44EC0895332C0883409F049C00E94C9 +:104FB000981C0E94D60A0E949D040E94EF2339C0CB +:104FC0009091F202892F8095817080FB90F929F0F1 +:104FD000966098609093F20234C0997F977F909387 +:104FE000F20227C08091F20283FB222720F991E090 +:104FF000922790FB83F98093F2029923D1F080915C +:10500000F20281608093F20214C08D5141E050E0C1 +:1050100060E070E08A019B0104C0000F111F221F95 +:10502000331F8A95D2F7C901B8010E9458200E9407 +:10503000981C81E006C061E070E080E090E0F5CF70 +:1050400080E01F910F91089580E0089580E0089519 +:10505000CF93C82F80910203813069F018F082301D +:10506000C9F184C0E0911701F0911801808182326A +:1050700009F07EC007C0E0911701F091180180810E +:10508000823261F48C2F0E942428811104C08C2F5D +:105090000E9470271DC081E090E01AC08C2F0E94F2 +:1050A0002628811114C0C43179F048F4CB3079F04E +:1050B000C03109F061C082E08093020308C0C932A8 +:1050C00019F0C83321F058C01092020355C081E096 +:1050D000817054C0C93291F120F5C43179F1B0F436 +:1050E000C73009F047C08EE180931E0182E38093B0 +:1050F0001D018AE080931C0184E180931B0188E0FC +:1051000080931A0188E28093190134C0CE51C630D1 +:1051100088F5EC2FF0E0EA54FE4F80818093010384 +:1051200029C0CE34E9F020F4CB3421F56AE013C075 +:10513000C13579F0C235F1F461E00DC08091010311 +:10514000882319F01092010315C081E080930203B7 +:1051500015C061E006C0809101030E94AA260AC022 +:105160006AE0809101030E94202704C0109202038C +:1051700080E004C081E002C080E0AACFCF91089512 +:105180000E945024811102C00E942C240E946C2491 +:1051900080931D0380FF02C0869501C080E00C94BF +:1051A000820380911D03982F9695292F30E023309C +:1051B00031054CF49F5F990F8170892B816080933A +:1051C0001D030E94702480911D0386950C94820318 +:1051D00080911D03982F969591F09158990F8170A9 +:1051E000892B80931D038E7F91E009F490E08091DC +:1051F0001D0390FB80F980931D030E947024809111 +:105200001D0386950C94820380911D03982F909521 +:1052100090FB80F980931D030E94702480911D03F0 +:1052200080FF02C0869501C080E00C9482039091BB +:105230001D03892F86958F5F8F779170843028F4B6 +:10524000880F892B80931D0302C090931D038091CA +:105250001D038E7F91E009F490E080911D0390FB87 +:1052600080F980931D030E94702480911D03869510 +:105270000C94820320911D03922F96958927982FD5 +:10528000990F822F8170892B80931D038E7F91E06F +:1052900009F490E080911D0390FB80F980931D0339 +:1052A0000E94702480911D0386950C948203809146 +:1052B0001D03869508955058BB27AA270ED0D1C14B +:1052C000C2D130F0C7D120F031F49F3F11F41EF469 +:1052D000B7C10EF4E095E7FB9FC1E92FD3D180F36E +:1052E000BA17620773078407950718F071F49EF5E3 +:1052F000EBC10EF4E0950B2EBA2FA02D0B01B901D6 +:1053000090010C01CA01A0011124FF27591B99F03B +:10531000593F50F4503E68F11A16F040A22F232F47 +:10532000342F4427585FF3CF469537952795A79597 +:10533000F0405395C9F77EF41F16BA0B620B730B3E +:10534000840BBAF09150A1F0FF0FBB1F661F771FAF +:10535000881FC2F70EC0BA0F621F731F841F48F464 +:10536000879577956795B795F7959E3F08F0B3CFEA +:105370009395880F08F09927EE0F979587950895D4 +:1053800027D108F481E008950CD06BC163D140F0BF +:105390005AD130F021F45F3F19F03EC1511195C14F +:1053A0004FC170D198F39923C9F35523B1F3951BDD +:1053B000550BBB27AA2762177307840738F09F5F36 +:1053C0005F4F220F331F441FAA1FA9F333D00E2EA5 +:1053D0003AF0E0E830D091505040E695001CCAF712 +:1053E00029D0FE2F27D0660F771F881FBB1F2617D7 +:1053F00037074807AB07B0E809F0BB0B802DBF01AA +:10540000FF2793585F4F2AF09E3F510568F004C173 +:105410005CC15F3FECF3983EDCF38695779567952A +:10542000B795F7959F5FC9F7880F911D969587955A +:1054300097F90895E1E0660F771F881FBB1F621779 +:1054400073078407BA0720F0621B730B840BBA0B37 +:10545000EE1F88F7E095089504D06894B11135C126 +:10546000089518D188F09F5790F0B92F9927B75118 +:10547000A0F0D1F0660F771F881F991F1AF0BA9518 +:10548000C9F712C0B13081F01FD1B1E008951CC13D +:10549000672F782F8827B85F39F0B93FCCF386950E +:1054A00077956795B395D9F73EF49095809570956B +:1054B00061957F4F8F4F9F4F0895E89409C097FBE8 +:1054C0003EF490958095709561957F4F8F4F9F4FDB +:1054D0009923A9F0F92F96E9BB279395F69587951F +:1054E00077956795B795F111F8CFFAF4BB0F11F4E2 +:1054F00060FF1BC06F5F7F4F8F4F9F4F16C0882389 +:1055000011F096E911C0772321F09EE8872F762FBE +:1055100005C0662371F096E8862F70E060E02AF0FF +:105520009A95660F771F881FDAF7880F96958795EB +:1055300097F9089588D018F011F08CD038F480C015 +:10554000C4C0E92F9FD0B0F35523C9F3E7FB62171E +:10555000730784079507A8F199F3E92FFF2788239C +:105560002AF03197660F771F881FDAF7952F552796 +:10557000442332F091505040220F331F441FD2F782 +:10558000BB27E91BF50B621B730B840BB109C1F23E +:1055900022F4620F731F841FB11D31972AF0660F2A +:1055A000771F881FBB1FEFCF915050405AF041F03A +:1055B000882332F0660F771F881F91505040C1F743 +:1055C000939530C08695779567959F5FD9F7F8CF0B +:1055D000990F0008550FAA0BE0E8FEEF1616170604 +:1055E000E807F907C0F012161306E407F50798F06C +:1055F000621B730B840B950B39F40A2661F0232B85 +:10560000242B252B21F408950A2609F4A140A69500 +:105610008FEF811D811D089597F99F6780E870E0E5 +:1056200060E008959F3F31F0915020F48795779581 +:105630006795B795880F911D9695879597F9089569 +:105640009FEF80EC089500240A941616170618069A +:105650000906089500240A94121613061406050676 +:105660000895092E0394000C11F4882352F0BB0F07 +:1056700040F4BF2B11F460FF04C06F5F7F4F8F4F6A +:105680009F4F089557FD9058440F551F59F05F3FA5 +:1056900071F04795880F97FB991F61F09F3F79F054 +:1056A00087950895121613061406551FF2CF4695D6 +:1056B000F1DF08C0161617061806991FF1CF869558 +:1056C0007105610508940895E894BB27662777273C +:1056D000CB0197F908957CDF08F48FEF08950BD084 +:1056E000C0CFB1DF28F0B6DF18F0952309F094CFD2 +:1056F000A7CF1124EACFC6DFA0F3959FD1F3950F72 +:1057000050E0551F629FF001729FBB27F00DB11D45 +:10571000639FAA27F00DB11DAA1F649F6627B00DD5 +:10572000A11D661F829F2227B00DA11D621F739FBE +:10573000B00DA11D621F839FA00D611D221F749FCC +:105740003327A00D611D231F849F600D211D822F13 +:10575000762F6A2F11249F5750408AF0E1F088235A +:105760004AF0EE0FFF1FBB1F661F771F881F915067 +:105770005040A9F79E3F510570F04ECFA6CF5F3F36 +:10578000ECF3983EDCF3869577956795B795F7959A +:10579000E7959F5FC1F7FE2B880F911D9695879522 +:1057A00097F90895FA01EE0FFF1F30962105310594 +:1057B00099F16115710561F48038BFE39B0749F1E8 +:1057C00068949038810561F08038BFEF9B0741F005 +:1057D000992342F5FF3FE1053105210511F1E894D8 +:1057E0000894E795D901AA2329F4AB2FBE2FF85FBF +:1057F000D0F310C0FF5F70F4A695E0F7F73950F0D2 +:1058000019F0FF3A38F49F779F930CD00F9007FC64 +:10581000905808953EF014CF60E070E080E89FE378 +:1058200008954FE79F775F934F933F932F939ED0B9 +:105830002F913F914F915F9152DF05C019F40EF007 +:10584000EBCE42CFFDCE26DFC8F39638C0F707F87F +:105850000F92E8942BE33AEA48EB5FE74EDF0F92B2 +:105860000F920F924DB75EB70F92C0D0EAE0F1E011 +:1058700016D04F915F91EF91FF91E595EE1FFF1FBD +:1058800049F0FE57E0684427EE0F441FFA95E1F710 +:105890004195550B32D00F9007FE26C00895DF9337 +:1058A000CF931F930F93FF92EF92DF927B018C01B6 +:1058B000689405C0DA2EEF011EDFFE01E894A59181 +:1058C0002591359145915591AEF3EF0106DDFE012D +:1058D0009701A801DA9479F7DF90EF90FF900F918C +:1058E0001F91CF91DF9108959B01AC0160E070E0C2 +:1058F00080E89FE349CD90CE95CECCDEE8F39923A6 +:10590000D9F3940F511DBBF39150504094F059F0CE +:10591000882332F0660F771F881F91505040C1F7DF +:105920009E3F510544F7880F911D9695879597F9ED +:1059300008955F3FACF0983E9CF0BB278695779525 +:105940006795B79508F4B1609395C1F7BB0F58F709 +:1059500011F460FFE8CF6F5F7F4F8F4F9F4FE3CF12 +:10596000B4CE0EF05FCE6CCE689456CE93DEC8F304 +:105970009923D1F3C6F3DF93CF931F930F93FF9235 +:10598000C92FDD2788232AF02197660F771F881FEC +:10599000DAF720E030E040E85FEB9FE3883920F061 +:1059A000803E30F021968F7787DCE2E3F1E003C0A0 +:1059B00083DCEFE5F1E073DF8B01BE01EC01FB2E30 +:1059C0006F5771097595771F880B990B78DD28E162 +:1059D00032E741E35FE38FDEAF2D9801AE01FF9028 +:1059E0000F911F91CF91DF9178DC3BCEFA01DC0162 +:1059F000AA0FBB1F9B01AC01BF5728F422273327F6 +:105A0000442750781FC0B75188F4AB2F0024469527 +:105A100037952795011CA395D2F3002069F0220F3A +:105A2000331F441FB395DAF30DD045CC61307105B7 +:105A3000A0E88A07B94630F49B01AC0166277727B6 +:105A400088279078309621F02083318342835383D6 +:105A50000895AA1BBB1B51E107C0AA1FBB1FA617B5 +:105A6000B70710F0A61BB70B881F991F5A95A9F707 +:105A700080959095BC01CD01089597FB072E16F4F3 +:105A8000009407D077FD09D00E94292D07FC05D08E +:105A90003EF4909581959F4F0895709561957F4F45 +:105AA0000895EE0FFF1F0590F491E02D0994F999E8 +:105AB000FECF92BD81BDF89A992780B50895A8E1DF +:105AC000B0E042E050E00C947F2D262FF999FECFF4 +:105AD00092BD81BDF89A019700B4021639F01FBA41 +:105AE00020BD0FB6F894FA9AF99A0FBE0895019660 +:105AF000272F0E94662D0C94652DDC01CB01FC0143 +:105B0000F999FECF06C0F2BDE1BDF89A319600B416 +:0E5B10000D9241505040B8F70895F894FFCF21 +:105B1E00640007000CFF0000003F64BA1048112516 +:105B2E0011F110BD100101DF022808140A321E0007 +:105B3E0002040507090B0C0E1011131517181A1C69 +:105B4E001D1F2123242628292B2D2F3032343537A3 +:105B5E00393B1F0F03764F5F6F7F496943790959B0 +:105B6E0053633149803F5D8B803FF8BF803FCAE170 +:105B7E00803F73ED803FCAE1803FF8BF803F5D8B71 +:105B8E00803F3149803F0000803FF16D7F3F75EAD5 +:105B9E007E3F4C827E3F833F7E3F84287E3F833F05 +:105BAE007E3F4C827E3F75EA7E3FF16D7F3F000067 +:105BBE00803F3F4D36390F06C2058C055305E6046E +:105BCE00FF04180531050102030405060708090044 +:00000001FF diff --git a/keyboard/planck/keymaps/lukas/compiled.hex b/keyboard/planck/keymaps/lukas/compiled.hex new file mode 100644 index 0000000000..2cd3bc5228 --- /dev/null +++ b/keyboard/planck/keymaps/lukas/compiled.hex @@ -0,0 +1,1446 @@ +:100000000C9461020C94A5020C94A5020C94A50218 +:100010000C94A5020C94A5020C94A5020C94A502C4 +:100020000C94A5020C94A5020C9467140C94391539 +:100030000C949B220C94A5020C94A5020C94A5028E +:100040000C94A5020C9407030C94A5020C94A50231 +:100050000C94A5020C9403230C94A5020C94A50205 +:100060000C94A5020C94A5020C94A5020C94A50274 +:100070000C94A5020C94A5020C94A5020C94A50264 +:100080000C94DC0A0C94A5020C94A5020C94A50215 +:100090000C94A5020C94A5020C94A5020C94A50244 +:1000A0000C94A5020C94A5020C94A502A615C815E3 +:1000B000B616C815B6160D163016B616851698164D +:1000C00082198219B119B119F019101A661B661B31 +:1000D0001B1A661BCB1ACB1A321B3B1B661B601B01 +:1000E000D81AD81AD81AD81AD81AD81AD81AD81A80 +:1000F000D81AD81AD81AD81AD81AD81AD81AD81A70 +:10010000E81AF61AFD1A041B0E1B07634236B79B4A +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000002B001400ED +:1001D0001A000800150017001C0018000C0012007F +:1001E00013002A00290004001600070009000A0075 +:1001F0000B000D000E000F0033003400E1001D0065 +:100200001B00060019000500110010003600370021 +:1002100038002800E000E200E300013001522C0029 +:100220002C0002525000510052004F0035021E02B5 +:100230001F0220022102220223022402250226029A +:1002400027022A0001000100010001000100010055 +:1002500001002D022E022F023002310201000100A6 +:1002600001000100010001000100010001002F0058 +:100270003000010001000100010001000100010047 +:1002800001000100010001000100010035001E0015 +:100290001F0020002100220023002400250026004A +:1002A00027004C00010001000100010001000100D5 +:1002B00001002D002E002F00300031000100010050 +:1002C0000100010001000100010001000100010026 +:1002D0000100010001000100010001000100010016 +:1002E0000100010001000100010001002803540089 +:1002F00068006500200050006C0061006E00630023 +:100300006B0020004B006500790062006F00610007 +:100310007200640000002C034F007200740068003B +:100320006F006C0069006E006500610072002000C3 +:100330004B006500790062006F006100720064008C +:10034000730000000403090409026D00040100A009 +:10035000FA09040000010301010009211101000153 +:10036000223F000705810308000A09040100010378 +:10037000010200092111010001224D00070582033D +:1003800008000A090402000103000000092111010C +:1003900000012236000705830308000A0904030050 +:1003A00001030000000921110100012239000705A5 +:1003B00084031000011201100100000008EDFE602E +:1003C0006001000102000105010906A101050719EC +:1003D000E029E71500250195087501810205081936 +:1003E0000129059505750191029501750391010596 +:1003F000071900297715002501957875018102C03C +:1004000005010980A101850216010026B7001A0125 +:10041000002AB700751095018100C0050C0901A1E3 +:10042000018503160100269C021A01002A9C027510 +:100430001095018100C005010902A1010901A10077 +:100440000509190129051500250195057501810288 +:100450009501750381010501093009311581257F59 +:1004600095027508810609381581257F9501750863 +:100470008106050C0A38021581257F9501750881D2 +:1004800006C0C005010906A101050719E029E71505 +:100490000025019508750181029501750881010506 +:1004A00008190129059505750191029501750391BA +:1004B000010507190029FF150025FF95067508811C +:1004C00000C011241FBECFEFDAE0DEBFCDBF04B6FF +:1004D00003FE24C080911E0390911F03A09120036E +:1004E000B09121038730904BA740B04BB9F41092E4 +:1004F0001E0310921F03109220031092210314BEBA +:1005000084B7877F84BF88E10FB6F894809360003A +:10051000109260000FBEE0E0F8E3099511E0A0E062 +:10052000B1E0E0E9F9E502C005900D92A03CB10709 +:10053000D9F713E0A0ECB1E001C01D92AE31B107D4 +:10054000E1F70E94AD110C94C62C0C9400000895A4 +:10055000089581E0089508950C94A8020C94A902CE +:100560000C94AB020E94902823E030E0281B310954 +:10057000220F2093C4010895282F2F988091800086 +:10058000211108C0877F8093800010928D00109207 +:100590008C001BC0886080938000233019F48FEF9B +:1005A0009FEF0FC083E090E0821B9109880F991F95 +:1005B0002FEF3FEFA90102C0569547958A95E2F7C4 +:1005C000CA0190938D0080938C000C94B2020E941B +:1005D000B20284E08093C3011092C0010895279A6B +:1005E0002F988FEF9FEF90938700809386008AE08B +:1005F0008093800089E1809381000E94F9270C9408 +:10060000E7020E94EF026E9A769A0C94A7021F925C +:100610000F920FB60F9211242F933F938F939F93B6 +:10062000EF93FF93E091C101F091C201CF010196D8 +:100630009093C2018093C1010090C30102C0F6955E +:10064000E7950A94E2F7EF738091C001823019F4C4 +:10065000E03251F404C0813039F4EF3329F4809151 +:100660006F008D7F80936F00F0E0E457FE4FE491C0 +:1006700021E031E0E29FC001E39F900D1124009042 +:10068000C40102C0969587950A94E2F790938D0075 +:1006900080938C00FF91EF919F918F913F912F91CB +:1006A0000F900FBE0F901F901895662319F06130C0 +:1006B00079F01FC0FC018281882331F085EE0E9411 +:1006C00026180E94502815C085EE0E94EE1811C011 +:1006D000FC018281882339F083EE0E94261882E093 +:1006E0000E940E2006C083EE0E94EE1882E00E9457 +:1006F0002F2080E090E0089581E008950C947C0321 +:1007000008950C94010380911502882309F448C0D0 +:100710008091D1019091D201009779F40E94CD226D +:100720009093D2018093D1018091D30190E0009702 +:1007300071F48091D40190E00AC00E94D9222091E6 +:100740000001309101012817390740F329C00197B2 +:10075000880F991F880F991FFC01EB52FE4F608193 +:100760007181828193810E94420AE091D30184E0E9 +:10077000E89FF0011124EB52FE4F6081718182816C +:1007800093814FE050E00E94FA0D8091D30190E0F8 +:1007900001966091D40170E00E94762C8093D30181 +:1007A0000C94AC02109217020C940F0A089508954D +:1007B00081E0809317020C94D703089508958F92D7 +:1007C0009F92AF92BF92EF92FF920F931F93CF939E +:1007D000DF93CDB7DEB7A3970FB6F894DEBF0FBE99 +:1007E000CDBF7C01FC0100811181C8010E94CA209B +:1007F000B8010E94E1058C01B7010E947E038823A5 +:1008000009F4CCC10032F0E51F0741F4F701828101 +:10081000882309F458C00E945E0EC0C10132F0E581 +:100820001F0741F4F7018281882309F44CC00E941C +:10083000670EB4C10232F0E51F0751F4F70182815F +:10084000882309F440C00E945A0E8111F0CFE3CFF3 +:100850000332F0E51F0739F4F7018281882399F10B +:100860000E94D8039BC10432F0E51F0739F4F70159 +:100870008281882341F10E94D20390C10532F0E5C4 +:100880001F0749F4F70182818823E9F0809117025C +:100890008111F1CFE5CF0632F0E51F0739F4F701FA +:1008A0008281882381F00E946E0E0AC00732F0E533 +:1008B0001F0749F4F7018281882329F00E94790EED +:1008C0000E94DE036BC180911702811105C0F70100 +:1008D00082818111CFC018C1003E110579F4F70162 +:1008E0008281882309F44DC00E940F0A81E0809321 +:1008F0001602109215021092D40150C1023E110549 +:1009000059F4F70182818823E1F10E940F0A1092C5 +:1009100016021092150242C1033E110591F4F7012F +:100920008281882371F10E940F0A1092160281E0E1 +:10093000809315021092D3011092D2011092D1012E +:100940002DC10235110559F4F7018281882309F47C +:1009500025C180910001909101010A970DC00135D8 +:10096000110579F4F7018281882309F417C1809178 +:100970000001909101010A9690930101809300017A +:100980000DC14091040183E2EFE1F1E0DE01119637 +:1009900001900D928A95E1F7F701808121E030E026 +:1009A0002C0F3D1F280F311DC901209102013091EC +:1009B0000301FC01E20FF31F6081772767FD70954B +:1009C000640F711D882777FD8095982F0E949829C4 +:1009D00020E030E040E451E40E94FD284B015C013E +:1009E000F701218184E090E0821B9109BC018827F6 +:1009F00077FD8095982F0E9498299B01AC01C50135 +:100A0000B4010E9495289B01AC0160E070E080E099 +:100A100090E40E940B2B20E030E04CED50E40E946B +:100A2000A82A4B015C01F70182818823D1F04FE0B5 +:100A300050E0C501B4010E94FA0D8091160288238E +:100A4000A1F08091D40124E0829FF0011124EB52A7 +:100A5000FE4F80829182A282B3828F5F8093D40105 +:100A600004C0C501B4010E94420A0F3F110508F0FD +:100A70002ECF94C08091D00181111FC0043130E588 +:100A8000130709F051C00E94800381E08093D001D8 +:100A90000E94CD229093CF018093CE011092C70186 +:100AA0001092C9011092C8011092CB011092CA0194 +:100AB0001092CD011092CC0171C08091CE01909125 +:100AC000CF010E94D922883C910570F48091C70122 +:100AD000E82FF0E0EE0FFF1FE853FE4F1183008375 +:100AE0008F5F8093C7015AC0043880E5180721F052 +:100AF0000538104501F13AC0F7018281882341F0A1 +:100B00001092C50182E01EC0043830E5130759F584 +:100B10008091C501811106C086E20E94261886E2F6 +:100B20000E94EE1882E01CC00438F0E51F0741F374 +:100B300005381045D9F4F7018281882331F01092ED +:100B4000C60180E20E943D1929C08091C601811131 +:100B500006C087E20E94261887E20E94EE1880E213 +:100B60000E9444191BC00538104529F381E0809389 +:100B7000C5018093C601C701A3960FB6F894DEBFE6 +:100B80000FBECDBFDF91CF911F910F91FF90EF90DE +:100B9000BF90AF909F908F900C94AE0280E0A39690 +:100BA0000FB6F894DEBF0FBECDBFDF91CF911F917E +:100BB0000F91FF90EF90BF90AF909F908F9008950E +:100BC00008959CE0799FF001112490E3899FE00D46 +:100BD000F11D1124E60FF11DEE0FFF1FE453FE4F30 +:100BE000859194910895880F991FFC01E45BFF4F54 +:100BF000859194910895880F991FFC01E453FE4F4D +:100C00008591949108950F931F93CF93DF93EC01F7 +:100C1000811521E39207A0F5C11580E3D80708F0FC +:100C2000D7C0C83ED105D8F4C03ED10508F007C2F0 +:100C3000C83AD10578F4C53AD10508F06AC0C13088 +:100C4000D10509F463C008F4F7C1C430D10508F038 +:100C5000F6C1F2C1CB3BD10508F466C0EDC1C115A8 +:100C600090E2D90708F0AFC0C11521E0D20708F023 +:100C7000E6C1C03FD10508F4DFC18E0110651FC277 +:100C8000C03880E5D80700F5C03790E5D90708F0EF +:100C9000A3C0C11520E5D20709F4ACC050F4CE01C1 +:100CA000905480319F4008F0C7C1DF708E01106AF8 +:100CB00006C2C13080E5D80709F4AEC0C43190E562 +:100CC000D90708F4AFC0B8C1C33820E5D20709F48A +:100CD0008EC050F4C13890E5D90709F482C008F0FD +:100CE00083C000E011EDEBC1C03181E5D80708F405 +:100CF000A3C1C11597E5D90708F436C1CE019057B5 +:100D00008115904108F098C1DF7093C101E010E0B7 +:100D1000D6C1C53AD10509F494C1C63AD10509F046 +:100D200093C102E810E4CBC1C83AD10509F48FC1E0 +:100D3000C93AD10509F48EC1CA3AD10509F48DC169 +:100D4000CB3AD10509F48CC1CC3AD10509F48BC159 +:100D5000CD3AD10509F48AC1C03BD10509F489C156 +:100D6000CE3AD10509F488C1CF3AD10509F487C13B +:100D7000C13BD10509F486C1C23BD10509F485C147 +:100D8000C33BD10509F484C1C43BD10509F483C137 +:100D9000C53BD10509F482C1C63BD10509F481C127 +:100DA000C73BD10509F480C1C83BD10509F47FC117 +:100DB000C93BD10509F47EC1CA3BD10509F47DC107 +:100DC00000E014E47CC1CE019F700E94FB0578C155 +:100DD000DD278E01106C73C1CF70DD278E01146D7D +:100DE0006EC100E010ED6BC100E012ED68C100E0E3 +:100DF00013ED65C10E94D11B0E940F0A0E94D60309 +:100E00008FEF94E32CE0815090402040E1F700C048 +:100E100000000E94282353C18091F20281608093D8 +:100E2000F2024DC10E948923811102C00E946523F4 +:100E30000E949C2390E090931D0380931C03C2307A +:100E400080E5D80721F480911C03816086C0C430FE +:100E500090E5D90721F480911C0382607EC0C630E2 +:100E600020E5D20721F480911C03846076C0C8304D +:100E700080E5D80719F480911C0327C0CA3090E59B +:100E8000D90721F480911C03806167C0CC3020E534 +:100E9000D20721F480911C0380625FC0CE3080E5D0 +:100EA000D80721F480911C03806457C0C03190E5BD +:100EB000D90721F480911C0380684FC0C23120E51E +:100EC000D20729F480911C038460886046C0C33037 +:100ED00080E5D80721F480911C038E7F3EC0C53089 +:100EE00090E5D90721F480911C038D7F36C0C7306F +:100EF00020E5D20721F480911C038B7F2EC0C930DE +:100F000080E5D80719F480911C0326C0CB3090E50A +:100F1000D90721F480911C038F7E1FC0CD3020E5BE +:100F2000D20721F480911C038F7D17C0CF3080E55C +:100F3000D80721F480911C038F7B0FC0C13190E54D +:100F4000D90721F480911C038F7707C0C331D045A6 +:100F500031F480911C038B7F877F80931C038091E9 +:100F60001C030E94A023ABC08D2F99278F70992757 +:100F700081309105D9F49E012370332702C0880F78 +:100F8000991F2A95E2F79C688E0144E0000F111F1B +:100F90004A95E1F700271370802B912B53E0CC0F7B +:100FA000DD1F5A95E1F7C076DD272FC0823091050D +:100FB00031F4DC2FCC278E01016F106A80C08330A2 +:100FC000910569F4CE018370992701E010E002C019 +:100FD000000F111F8A95E2F7C8019C680FC084308A +:100FE0009105B9F4CE018370992701E010E002C0A9 +:100FF000000F111F8A95E2F7C8019A6823E0CC0F11 +:10100000DD1F2A95E1F7C07ED7708C010C2B1D2BBC +:1010100056C08530910531F4DC2FCC278E01046F4A +:10102000106A4DC0069709F04AC0CF71DD27DC2F4A +:10103000CC278E01106243C000E010E040C08E015A +:101040003EC001E810E43BC003E810E438C002EE03 +:1010500014E435C009EE14E432C00AEE14E42FC0E3 +:1010600005EB14E42CC006EB14E429C007EB14E4F0 +:1010700026C00CEC14E423C00DEC14E420C003E8FB +:1010800015E41DC00AE815E41AC002E915E417C00A +:1010900004E915E414C001E216E411C003E216E409 +:1010A0000EC004E216E40BC005E216E408C006E236 +:1010B00016E405C007E216E402C00AE216E4C8011D +:1010C000DF91CF911F910F9108959CE0799FF001DE +:1010D000112490E3899FE00DF11D1124E60FF11D0D +:1010E000EE0FFF1FE453FE4F85919491803E9105D2 +:1010F000E0F4803C910558F58133910509F46FC007 +:1011000048F48932910509F463C08A32910509F4E3 +:101110006DC072C089339105E9F082389105D1F034 +:101120008533910509F44DC067C0833E910581F177 +:1011300038F4803E9105B9F0823E9105D9F05CC04B +:10114000863E910561F1873E9105A1F155C00E944F +:10115000F305089520911C0320FD02C021FF4CC01F +:1011600080EE90E049C080911C0380FFF9CF89E3B5 +:1011700090E042C080911C0382FF0EC080911C034E +:1011800084FF03C080E090E037C083EE90E034C07D +:1011900080911C0382FFF2CF82EE90E02DC08091FF +:1011A0001C0383FF0BC080911C0384FDEBCF87EEF3 +:1011B00090E022C080911C0383FFF5CF86EE90E083 +:1011C0001BC080911C0385FF07C089E290E014C01A +:1011D00080911C0385FFF9CF85E390E00DC08091DD +:1011E0001C0386FF07C08AE290E006C080911C03C2 +:1011F00086FFF9CF81E390E00E94030608950C94E6 +:10120000B002E82FF0E0E25BFE4F8081E82FEF7044 +:10121000F0E082958F7021E030E0A90102C0440F18 +:10122000551F8A95E2F740A308950F931F93CF931C +:10123000DF9385B7806885BF85B7806885BFC3E0C9 +:10124000D0E001E010E0FE01E25BFE4F8081E82F7C +:10125000EF70F0E021A182958F70A80102C0440FC9 +:10126000551F8A95E2F7CA01822B81A38C2F0E9419 +:101270000109219740F78BE090E061E070E0FC010C +:10128000EE5BFE4F2081E22FEF70F0E042A122954D +:101290002F70DB0102C0AA0FBB1F2A95E2F79D0148 +:1012A000242B22A3019758F7DF91CF911F910F9123 +:1012B0000C948103EF92FF920F931F93CF93DF93D0 +:1012C00000E212E0C3E0EE24E394F12CD5E08C2F91 +:1012D0000E9401098BE090E040E050E0FC01EE5BF1 +:1012E000FE4F6081E62FEF70F0E020A130E06295C4 +:1012F0006F7002C0359527956A95E2F720FD09C009 +:101300009701082E02C0220F331F0A94E2F7422BE6 +:10131000532B019718F7F801929182918F0184174E +:10132000950721F051834083D09305018C2F0E94B3 +:101330000109C15060F68091050187FD2CC08150E4 +:10134000809305018F3F39F08FE99FE00197F1F716 +:1013500000C0000020C080911E0290911F02909357 +:1013600027028093260280911C0290911D02909387 +:1013700025028093240280911A0290911B0290937F +:101380002302809322028091180290911902909377 +:101390002102809320020E94830381E0DF91CF919C +:1013A0001F910F91FF90EF900895E82FF0E0EE0F5E +:1013B000FF1FE05EFD4F80819181089508950F9396 +:1013C0001F93CF9308E212E0C0E0F801929182915E +:1013D0008F010E944522C80FF2E000321F07A9F7D3 +:1013E0008C2FCF911F910F9108950E948923811115 +:1013F00002C00E9465230E94AE23809307033E9A99 +:10140000809171008D7F8093710082E080939000C5 +:101410008AE18093910081E080932A02089580916F +:101420002A02811102C00E94F50910927A021092DC +:101430007902809171008D7F80937100809190007E +:101440008F738093900010923C0210923B02109296 +:10145000730210927402109275021092760210922A +:10146000720210927102E1E5F2E0A1E4B2E01192A1 +:101470001192119211921D921D9282E0E137F807AC +:10148000B1F70895CF92DF92EF92FF920F931F93DF +:10149000CF93DF9320913B02222309F484C06B0198 +:1014A0007C0180912A02811102C00E94F50901E7A6 +:1014B00012E0C7E0D0E0A7019601F8019291829175 +:1014C000729162918F010E94F928811131C0FE0151 +:1014D000EE0FFF1FEE0FFF1FEF5AFD4F108211821C +:1014E00012821382DE01AA0FBB1FAF5BBD4F1196A4 +:1014F0001C921E92C730D105E9F021964481558196 +:10150000668177814083518362837383148215825D +:101510001682178212968D919C91139711969C9327 +:101520008E9313961C921E92129734961296E2CFC7 +:10153000219708F68091790290917A02019797FDA0 +:1015400005C090937A028093790204C010927A02C7 +:10155000109279028091790290917A02209177021B +:10156000309178022817390724F0109278021092EF +:101570007702892BC1F4809171008D7F8093710077 +:10158000809190008F73809390001092730210925C +:1015900074021092750210927602109272021092EA +:1015A000710210923B02DF91CF911F910F91FF903A +:1015B000EF90DF90CF9008951F920F920FB60F9289 +:1015C00011244F925F926F927F928F929F92AF926F +:1015D000BF92CF92DF92EF92FF922F933F934F9360 +:1015E0005F936F937F938F939F93AF93BF93CF93AB +:1015F000DF93EF93FF9380913B02882309F49BC113 +:10160000C0917902D0917A021C161D060CF093C18C +:1016100040902B0250902C0260902D0270902E0270 +:1016200020E030E0A901C301B2010E94A42A1816EB +:101630000CF065C0C130D10509F452C08091770229 +:1016400090917802BE010E94762C7C0190937802E2 +:101650008093770280903D0290903E02A0903F02DE +:10166000B090400220E030E040E85FE3C501B40103 +:101670000E94952860933D0270933E0280933F0242 +:1016800090934002F701EE0FFF1FEE0FFF1FEF5A7E +:10169000FD4FA301920160817181828193810E943B +:1016A000FD2820E030E040E05EE30E94A82A9B0194 +:1016B000AC01C501B4010E94A42A18168CF4C7011C +:1016C0000196BE010E94762C909378028093770257 +:1016D00010923D0210923E0210923F021092400280 +:1016E000E0917702F0917802EE0FFF1FEE0FFF1FDF +:1016F000EF5AFD4F6081718182819381D0C0C0908B +:101700007302D0907402E0907502F090760220E0AF +:1017100030E0A901C701B6010E94F928219788236A +:1017200009F4A2C0FE01EE0FFF1FEE0FFF1FEF5ADC +:10173000FD4F80809180A280B380A5019401C701F4 +:10174000B6010E94F92887FF31C0A501940160E02D +:1017500070E08CED93EC0E94FD2820E030E040E446 +:1017600051E40E94FD2820E030E040E05FE30E9469 +:10177000A82A9B01AC0160E070E080E090E40E9448 +:101780000B2B9B01AC01C501B4010E94A82A9B014F +:10179000AC01C701B6010E94F92887FF07C0A70165 +:1017A000960160E070E08CED93E439C0A5019401EE +:1017B000C701B6010E94A42A18160CF055C0A50155 +:1017C000940160E070E08CED93E40E94FD2820E03D +:1017D00030E040E451E40E94FD2820E030E040E0A9 +:1017E0005FE30E94A82A9B01AC0160E070E080E00A +:1017F00090E40E940B2B9B01AC01C501B4010E9437 +:10180000A82A9B01AC01C701B6010E94A42A1816A0 +:101810005CF5A701960160E070E08CED93EC0E940E +:10182000FD2820E030E040E451E40E94FD2820E063 +:1018300030E040E05FE30E94A82A9B01AC0160E039 +:1018400070E080E090E40E940B2B9B01AC01C7018B +:10185000B6010E94A82A6093730270937402809369 +:1018600075029093760213C0FE01EE0FFF1FEE0F7C +:10187000FF1FEF5AFD4F80819181A281B381809338 +:10188000730290937402A0937502B09376026091F4 +:10189000730270917402809175029091760220918A +:1018A0002802309129022F3F4FEF340731F02F5F8C +:1018B0003F4F30932902209328020E94840E6B012F +:1018C0007C0120E034E244EF51E40E94F92887FFD4 +:1018D00008C086EFC82E88E2D82E84EFE82E81E477 +:1018E000F82E20E030E040E051E4C701B6010E944C +:1018F000A82A9B01AC0160E074E284E79BE40E94AB +:10190000FD286B017C010E946A2970939700609307 +:1019100096002091060130910701409108015091F5 +:101920000901C701B6010E94A82A0E946A29709382 +:1019300099006093980080913C02882309F433C198 +:10194000C0903702D0903802E0903902F0903A020D +:1019500020E030E0A901C701B6010E94A42A1816B0 +:10196000D4F580912802909129028F3F2FEF9207A2 +:1019700029F001969093290280932802C701B601AD +:101980000E94840E20E030E040E051E40E94A82A4A +:101990009B01AC0160E074E284E79BE40E94FD28B7 +:1019A0006B017C010E946A297093970060939600F6 +:1019B00020910601309107014091080150910901E1 +:1019C000C701B6010E94A82A0E946A297093990053 +:1019D0006093980008C010929700109296001092A1 +:1019E00099001092980060913102709132026F5FFD +:1019F0007F4F7093320260933102209196003091B4 +:101A0000970080E090E0232BF1F0C0919600D091F8 +:101A100097000E9496296B017C01BE0180E090E056 +:101A20000E9496299B01AC016091330270913402AF +:101A300080913502909136020E94FD2820E03FEF10 +:101A40004FE757E410C00E9496296B017C0120E00B +:101A500030EE4FEF54E46091330270913402809184 +:101A60003502909136020E94A82A9B01AC01C70161 +:101A7000B6010E94A42A87FD96C080912F028F5F35 +:101A800080932F0290E0209103033091040382178A +:101A90009307A0F080910E03882319F010922F0273 +:101AA0000DC0809171008D7F8093710080919000B6 +:101AB0008F738093900010923C027DC08091300221 +:101AC000C0912F02811128C0C0900803D090090353 +:101AD000E0900A03F0900B0320E030E0A901C70179 +:101AE000B6010E94A42A1816BCF481E0809330024B +:101AF00010923702109238021092390210923A0274 +:101B0000C0923302D0923402E0923502F092360253 +:101B1000C150C0932F0243C010923002109229028C +:101B200010922802E0910503F091060348E0C49F5B +:101B3000E00DF11D112480819181A281B3818093F8 +:101B4000370290933802A0933902B0933A0220E012 +:101B500030E040E85EE364817581868197810E9470 +:101B6000A82A6B017C0180910A01682F70E080E057 +:101B700090E00E94962920E030E048EC52E40E9478 +:101B8000FD289B01AC01C701B6010E94A82A609301 +:101B90003302709334028093350290933602109290 +:101BA0003202109231028091070380FD04C010922E +:101BB0003C0210923B02FF91EF91DF91CF91BF91D8 +:101BC000AF919F918F917F916F915F914F913F91D5 +:101BD0002F91FF90EF90DF90CF90BF90AF909F90AC +:101BE0008F907F906F905F904F900F900FBE0F90EF +:101BF0001F901895CF92DF92EF92FF92CF93DF93D1 +:101C00006B017C01EA0180912A02811102C00E94CD +:101C1000F5098091070380FF46C080917902909179 +:101C20007A0208970CF03FC0809171008D7F8093FD +:101C3000710080913C0281110E940F0A81E0809323 +:101C40003B02109229021092280220E030E0A90104 +:101C5000C701B6010E94A42A1816DCF4809179020B +:101C600090917A02FC01EE0FFF1FEE0FFF1FEF5A5B +:101C7000FD4FC082D182E282F382FC01EE0FFF1F92 +:101C8000EF5BFD4FD183C083019690937A028093DE +:101C90007902809171008260809371008091900040 +:101CA000806880939000DF91CF91FF90EF90DF905C +:101CB000CF90089580910703817008958091070364 +:101CC0008160809307030E94B2230C94DD0380910E +:101CD00007038E7F809307030C94B22380917B02CD +:101CE00090E0019666E070E00E94762C80937B0283 +:101CF000089580917B0290E0019766E070E00E9479 +:101D0000762C80937B0208958F929F92AF92BF9220 +:101D1000CF92DF92EF92FF920F931F93CF93DF93B7 +:101D20006B017C01C0912802D0912902BE0180E0A4 +:101D300090E00E9496294B015C01A701960160E0AA +:101D400070E08CE594E40E94FD289B01AC01C50184 +:101D5000B4010E94A82A0E946A2920917B022330A4 +:101D600009F473C028F4222351F02130E9F02CC18A +:101D7000243009F4A0C0253009F4E0C025C180E07A +:101D800090E0A0E0BFE38093060190930701A09349 +:101D90000801B093090110922B0210922C021092AC +:101DA0002D0210922E0210C110922B0210922C02C2 +:101DB00010922D0210922E026431710540F46A30A7 +:101DC000710560F520E030E040E85EE32BC0693C3F +:101DD000710508F0AAC080E090E00E94962920E0FA +:101DE00030E040EA51E40E94942820E030E044E3EF +:101DF00053E40E94FD289B01AC010E94A82A20E028 +:101E000030E040E05EE30E94A82A9B01AC0160E064 +:101E100070E080E09EE30E94942844C020E030E01F +:101E200040E05FE3C701B6010E94A82A6B017C0174 +:101E300080E090E0A0E0BEE380930601909307016C +:101E4000A0930801B0930901BFC010922B02109219 +:101E50002C0210922D0210922E024AE0469F900111 +:101E6000479F300D1124C90168EB7BE00E94622C72 +:101E7000BC016C5D754077FF03C071956195710978 +:101E8000882777FD8095982F0E9498292EE333ECC0 +:101E90004EE259E30E94A82A20E030E040EC5EE3E5 +:101EA0000E949528609306017093070180930801B2 +:101EB0009093090189C010922B0210922C0210926B +:101EC0002D0210922E02CE0183709927892BE1F00A +:101ED000BE016170772780E090E00E94962920E0A3 +:101EE00030E040E05EE30E94A82A20E030E040E4D9 +:101EF0005FE30E9495286093060170930701809329 +:101F00000801909309010CC080E090E0A0E0BFE3DD +:101F10008093060190930701A0930801B0930901F3 +:101F2000C770DD27CD2B09F04FC01092060110922B +:101F30000701109208011092090146C010922B026D +:101F400010922C0210922D0210922E0200E010E04E +:101F500020E03FE30093060110930701209308015E +:101F6000309309016739710578F180E090E00E94B3 +:101F7000962920E030E047E153E40E94942820E0D5 +:101F800030E04AE754E40E94FD2820E030E048E4D5 +:101F900052E40E94A82A20E030E040EA51E40E9486 +:101FA000DA290E946529660F771F660F771FFB01EC +:101FB000EE5AFE4F2081318142815381C701B60123 +:101FC0000E94A82A6B017C01C701B601DF91CF9165 +:101FD0001F910F91FF90EF90DF90CF90BF90AF9047 +:101FE0009F908F90089580918C020895CF93DF93F6 +:101FF00000D01F92CDB7DEB79C01809113038430CF +:1020000019F593E099833B832A839093E9008FEF3E +:102010009091E800815095FD06C095ED9A95F1F7F5 +:1020200000008111F5CF8091E80085FF0DC040E0F0 +:1020300050E063E070E0CE0101960E94571280915B +:10204000E8008E778093E8000F900F900F90DF915B +:10205000CF910895CF93DF9300D01F92CDB7DEB715 +:1020600020911303243021F522E029839B838A8366 +:1020700083E08093E9008FEF9091E800815095FD17 +:1020800006C095ED9A95F1F700008111F5CF80918A +:10209000E80085FF0DC040E050E063E070E0CE0155 +:1020A00001960E9457128091E8008E778093E80095 +:1020B0000F900F900F90DF91CF910895209113030F +:1020C0002430F1F422E02093E9002FEF3091E80072 +:1020D000215035FD06C035ED3A95F1F7000021118C +:1020E000F5CF2091E80025FF0BC040E050E065E00F +:1020F00070E00E9457128091E8008E778093E8008C +:102100000895CF93DF93EC0190911303943009F07D +:1021100046C0809115018823D9F08091160188234B +:10212000B9F09093E9008FEF9091E800815095FD10 +:1021300006C095E19A95F1F700008111F5CF8091E5 +:10214000E80085FF2CC040E050E060E170E017C07F +:1021500081E08093E9008FEF9091E800815095FD38 +:1021600006C095ED9A95F1F700008111F5CF8091A9 +:10217000E80085FF14C040E050E068E070E0CE0168 +:102180000E9457128091E8008E778093E80080E1EA +:10219000FE01ACE7B2E001900D928A95E1F7DF9184 +:1021A000CF91089580911203811109C00E94EC1310 +:1021B0000E9449148091E20084608093E2000895B7 +:1021C000109212030895089508950C94902242E00D +:1021D00061EC81E00E94661342E061EC82E00E94C3 +:1021E000661342E061EC83E00E94661342E161EC19 +:1021F00084E00C94661380911503833009F455C074 +:1022000030F4813071F0823009F48EC008958A3044 +:1022100009F47AC08B3009F460C0893009F09CC0A1 +:1022200020C080911403813A09F096C08091E800A3 +:10223000877F8093E8008091180390911903892B80 +:1022400021F460E18CE792E003C060E080E090E080 +:1022500070E00E94A2128091E8008B778093E800E2 +:10226000089580911403813209F076C0809118039B +:1022700090911903009719F0039709F06DC08091B0 +:10228000E800877F8093E8008091E80082FD05C028 +:10229000809113038111F8CF5FC08091F10080938A +:1022A0008C028091E8008B7753C080911403813AAF +:1022B00009F052C08091180390911903892B09F0FD +:1022C0004BC08091E800877F8093E8008091E80010 +:1022D00080FFFCCF8091150136C0809114038132BC +:1022E000D9F58091180390911903892BA9F5809154 +:1022F000E800877F8093E8000E949B13809116037B +:10230000809315010C94D11B80911403813221F527 +:102310008091E800877F8093E8000E949B13809162 +:10232000170380938D02089580911403813AA1F4DC +:102330008091E800877F8093E8008091E80080FF2B +:10234000FCCF80918D028093F1008091E8008E7720 +:102350008093E8000C949B13089584B7877F84BF13 +:1023600088E10FB6F89480936000109260000FBE71 +:1023700090E080E80FB6F89480936100909361003C +:102380000FBE0E943E170E94EC130E9449148091D8 +:10239000E20084608093E20078940E94CF160E944D +:1023A00040178BE091E00E94EA168091130385307C +:1023B00069F40E945122809111038823B1F30E9495 +:1023C0007F22882391F30E944112EFCF0E94481789 +:1023D000ECCF292F332723303105C9F064F42130A5 +:1023E000310581F02230310509F043C08DE690E0DF +:1023F00028E433E042C021323105F1F022323105C8 +:1024000041F137C082E190E025EB33E036C09927F7 +:102410008130910541F08230910541F0892B49F5D9 +:10242000E4E4F3E005C0E6E1F3E002C0ECEEF2E044 +:10243000849190E09F0121C06430D8F4E62FF0E051 +:10244000EE0FFF1FE255FE4F2081318189E090E0C1 +:1024500014C0643070F470E0FB01EE0FFF1FEA550A +:10246000FE4F20813181FB01EE55FE4F808190E0CF +:1024700004C080E090E020E030E0FA013183208366 +:10248000089580E189BD82E189BD09B400FEFDCFD8 +:102490008091D8008F7D8093D8008091E000826089 +:1024A0008093E0008091E00081FDFCCF0895CF9201 +:1024B000DF92EF92FF920F931F93CF93DF93EC0184 +:1024C0008B016A010E94BA13811133C0C114D10477 +:1024D00039F0F60180819181081B190BC80FD91FB3 +:1024E000E12CF12C0115110519F18091E80085FD11 +:1024F00016C08091E8008E778093E800C114D10463 +:1025000049F0F60180819181E80EF91EF182E082A6 +:1025100085E00FC00E94BA13882321F30AC0899175 +:102520008093F10001501109FFEFEF1AFF0ADACF93 +:1025300080E0DF91CF911F910F91FF90EF90DF909E +:10254000CF90089520911A0330911B032617370767 +:1025500048F06115710539F42091E8002E77209339 +:10256000E80001C0B90140E061157105A9F12091B1 +:102570001303222309F443C0253009F442C02091FB +:10258000E80023FD40C02091E80022FD32C02091E8 +:10259000E80020FFE9CF4091F3002091F20030E005 +:1025A000342BFC01CF016115710559F0283031053C +:1025B00040F481918093F100615071092F5F3F4F8A +:1025C000F1CF41E02830310509F040E02091E800EA +:1025D0002E772093E800C8CF4111C9CF0AC080915F +:1025E0001303882361F0853061F08091E80083FD5A +:1025F0000AC08091E80082FFF2CF80E0089582E077 +:10260000089583E0089581E0089520911A033091A0 +:102610001B032617370748F06115710539F420911F +:10262000E8002E772093E80001C0B901FC0120E00A +:102630006115710591F180911303882309F440C05D +:10264000853009F43FC08091E80083FD3DC0809152 +:10265000E80082FD2FC08091E80080FFE9CF209143 +:10266000F3008091F20090E0922B6115710559F012 +:102670008830910540F424912093F1003196615007 +:1026800071090196F2CF21E0089709F020E08091CE +:10269000E8008E778093E800CBCF2111CCCF0AC021 +:1026A00080911303882361F0853061F08091E80008 +:1026B00083FD0AC08091E80082FFF2CF80E0089598 +:1026C00082E0089583E0089581E00895982F97307F +:1026D00058F59093E900981739F07091EC0020912B +:1026E000ED005091F00003C0242F762F50E021FF21 +:1026F00019C03091EB003E7F3093EB003091ED003C +:102700003D7F3093ED003091EB0031603093EB0072 +:102710007093EC002093ED005093F0002091EE00B8 +:1027200027FF07C09F5FD3CF8F708093E90081E0C0 +:10273000089580E008958091140387FF11C080916F +:10274000E80082FD05C0809113038111F8CF11C00C +:102750008091E8008B770BC080911303882349F0A8 +:102760008091E80080FFF8CF8091E8008E77809319 +:10277000E80008952091E4003091E50095E640914D +:10278000EC00842F817040FF22C08091E80080FD22 +:102790001CC080911303882391F0853091F08091C3 +:1027A000EB0085FD10C04091E4005091E500421718 +:1027B000530729F39A01915011F784E0089582E0BC +:1027C000089583E0089581E0089580E008954091A0 +:1027D000E80042FFDECF08950E945A140E9462145E +:1027E000E0EEF0E0808181608083E8EDF0E08081C0 +:1027F0008F77808319BCA7EDB0E08C918E7F8C938E +:1028000080818F7E80831092120308950F931F930F +:10281000CF93DF930E945A140E946214C8EDD0E057 +:1028200088818F77888388818068888388818F7D7D +:10283000888319BC1092130310920F031092110396 +:102840001092100300EE10E0F80180818B7F8083EE +:1028500088818160888342E060E080E00E946613A6 +:10286000E1EEF0E080818E7F8083E2EEF0E0808117 +:1028700081608083808188608083F80180818E7F81 +:102880008083888180618883DF91CF911F910F9130 +:102890000895E8EDF0E080818F7E8083E7EDF0E041 +:1028A00080818160808384E082BF81E08093120315 +:1028B0000C940614E8EDF0E080818E7F8083109206 +:1028C000E20008951092DA001092E10008951F923C +:1028D0000F920FB60F9211242F933F934F935F9354 +:1028E0006F937F938F939F93AF93BF93EF93FF93D8 +:1028F0008091E10082FF0BC08091E20082FF07C05F +:102900008091E1008B7F8093E1000E94CE16809140 +:10291000DA0080FF1FC08091D80080FF1BC080912B +:10292000DA008E7F8093DA008091D90080FF0DC09D +:1029300080E189BD82E189BD09B400FEFDCF81E05F +:10294000809313030E94D21005C019BC1092130388 +:102950000E94E0108091E10080FF19C08091E200A8 +:1029600080FF15C08091E2008E7F8093E20080910D +:10297000E20080618093E2008091D80080628093C1 +:10298000D80019BC85E0809313030E94E410809165 +:10299000E10084FF30C08091E20084FF2CC080E120 +:1029A00089BD82E189BD09B400FEFDCF8091D800C8 +:1029B0008F7D8093D8008091E1008F7E8093E1002D +:1029C0008091E2008F7E8093E2008091E20081603E +:1029D0008093E20080910F03882311F084E007C008 +:1029E0008091E30087FD02C081E001C083E0809315 +:1029F00013030E94E5108091E10083FF29C08091BC +:102A0000E20083FF25C08091E100877F8093E10091 +:102A100082E08093130310920F038091E1008E7F78 +:102A20008093E1008091E2008E7F8093E2008091AC +:102A3000E20080618093E20042E060E080E00E947A +:102A400066138091F00088608093F0000E94E3108C +:102A5000FF91EF91BF91AF919F918F917F916F9176 +:102A60005F914F913F912F910F900FBE0F901F904C +:102A700018951F920F920FB60F9211242F933F9328 +:102A80004F935F936F937F938F939F93AF93BF9376 +:102A9000CF93DF93EF93FF93C091E900CF708091C4 +:102AA000EC00D82FD17080FDD0E81092E900809121 +:102AB000F000877F8093F00078940E947D1510923B +:102AC000E9008091F00088608093F000CD2BCF70FA +:102AD000C093E900FF91EF91DF91CF91BF91AF914A +:102AE0009F918F917F916F915F914F913F912F9126 +:102AF0000F900FBE0F901F9018951F93CF93DF93E9 +:102B0000CDB7DEB7AA970FB6F894DEBF0FBECDBF24 +:102B1000E4E1F3E088E08E0F9091F10091938E1341 +:102B2000FBCF0E94FB108091E80083FF1FC18091C2 +:102B3000140390911503492F50E04A30510508F0D5 +:102B400015C1FA01EA5AFF4F0C948A2C803881F0A3 +:102B5000823809F00BC1809118038F708093E900CF +:102B60008091EB0085FB882780F91092E90006C070 +:102B70008091100390911103911182609091E8006F +:102B8000977F9093E8008093F1001092F100C8C005 +:102B9000282F2D7F09F0EAC0882319F0823061F0D8 +:102BA000E5C080911603813009F0E0C0933009F050 +:102BB00080E0809311032BC080911603811127C000 +:102BC000809118038F7009F4D1C08093E90020919F +:102BD000EB0020FF1CC0933021F48091EB00806259 +:102BE00014C09091EB0090619093EB0021E030E0F5 +:102BF000A90102C0440F551F8A95E2F74093EA00ED +:102C00001092EA008091EB0088608093EB001092B4 +:102C1000E9008091E800877F86C08111A7C01091EC +:102C200016031F778091E3008078812B8093E30067 +:102C30008091E800877F8093E8000E949B13809139 +:102C4000E80080FFFCCF8091E30080688093E30080 +:102C5000111102C082E001C083E08093130386C09B +:102C60008058823008F082C080911603909117033B +:102C70008C3D53E0950779F583E08A838AE2898366 +:102C80004FB7F894DE01139620E03EE051E2E32FC7 +:102C9000F0E050935700E49120FF03C0E295EF70FD +:102CA0003F5FEF708E2F90E0EA3010F0C79601C0C2 +:102CB000C0968D939D932F5F243149F74FBF80912C +:102CC000E800877F8093E8006AE270E0CE01019619 +:102CD0000E94A21214C0AE014F5F5F4F60911803B3 +:102CE0000E94E911BC01009709F440C09091E800EE +:102CF000977F9093E80089819A810E9405138091C3 +:102D0000E8008B778093E80031C0803879F58091B6 +:102D1000E800877F8093E80080910F038093F100A3 +:102D20008091E8008E778093E8000E949B131EC07C +:102D300081111CC0909116039230C0F48091E8007C +:102D4000877F8093E80090930F030E949B138091EC +:102D50000F03811106C08091E30087FD02C081E06E +:102D600001C084E0809313030E94E7108091E80083 +:102D700083FF0AC08091E800877F8093E8008091FC +:102D8000EB0080628093EB00AA960FB6F894DEBF4A +:102D90000FBECDBFDF91CF911F9108950895CF93BE +:102DA000809113038823A1F0C091E900CF70909126 +:102DB000EC00892F817090FD80E8C82B1092E9000B +:102DC0008091E80083FD0E947D15CF70C093E900DB +:102DD000CF91089590939302809392020895E09189 +:102DE0009202F0919302309721F00190F081E02D52 +:102DF000099480E00895E0919202F0919302309757 +:102E000021F00280F381E02D09940895E09192026F +:102E1000F0919302309721F00480F581E02D099420 +:102E2000089520919002309191028217930771F0DA +:102E30009093910280939002E0919202F09193021C +:102E4000309721F00680F781E02D099408952091B4 +:102E50008E0230918F028217930771F090938F0248 +:102E600080938E02E0919202F0919302309721F0CC +:102E70000084F185E02D0994089508950C943D1780 +:102E80000E94C4220E9415090E944A230C94F9272B +:102E90005F926F927F928F929F92AF92BF92CF92EA +:102EA000DF92EF92FF920F931F93CF93DF9300D0A7 +:102EB00000D01F92CDB7DEB70E945A099DE9C92EF6 +:102EC00092E0D92E03E010E0AA24A394B12C502E56 +:102ED000802F0E94D5094C01F601729062906F011B +:102EE0006826792661147104A1F40150110978F75C +:102EF0008FEF89838A831B820E94CD228160782F85 +:102F00009D838C8349815A816B818D810E94F81742 +:102F100038C08091F20281FD0E94DE092BE030E092 +:102F20007501022E02C0EE0CFF1C0A94E2F7C701E5 +:102F300086219721892B09F129835A828E209F208F +:102F400091E0892809F490E09B830E94CD22816062 +:102F5000782F9D838C8349815A816B818D810E945A +:102F6000F817000F111FF801EB56FD4F808191817A +:102F7000E826F926F182E08204C02150310980F66A +:102F8000B4CF0E943125109194020E94EF161817B9 +:102F9000D1F00E94EF16809394020F900F900F9043 +:102FA0000F900F90DF91CF911F910F91FF90EF90B5 +:102FB000DF90CF90BF90AF909F908F907F906F9059 +:102FC0005F900C94FF080F900F900F900F900F9050 +:102FD000DF91CF911F910F91FF90EF90DF90CF90F5 +:102FE000BF90AF909F908F907F906F905F9008956B +:102FF000CF93DF93CDB7DEB72B970FB6F894DEBF34 +:103000000FBECDBF4F83588769877A878B87DE01D4 +:10301000119686E0FD0111928A95E9F785E0FE019F +:10302000379601900D928A95E1F749815A816B811B +:103030007C818D819E810E946F1E2B960FB6F89425 +:10304000DEBF0FBECDBFDF91CF910895CF93882310 +:1030500009F4C2C0C82F823859F40E94EF1681FDCE +:10306000BBC089E30E9449210E94162289E30CC05B +:10307000833879F40E94EF1680FDAEC083E50E948C +:1030800049210E94162283E50E948B21CF910C9446 +:103090001622843859F40E94EF1682FD9DC087E401 +:1030A0000E9449210E94162287E4EECF8CEF8C0FFC +:1030B000813A48F48C2F0E94612781118DC08C2F9A +:1030C0000E944921E3CF80E28C0F883048F4C7701A +:1030D00081E001C0880FCA95EAF70E94CF21D6CFC0 +:1030E0008BE58C0F833078F4C53A29F0C63A31F07D +:1030F00083E890E005C081E890E002C082E890E0BB +:10310000CF910C94111788E58C0F833108F064C0BF +:10311000C83A39F1C93A41F1CA3A49F1CB3A51F1C9 +:10312000CC3A59F1CD3A61F1C03B69F1CE3A71F137 +:10313000CF3A79F1C13B81F1C23B89F1C33B91F1B7 +:10314000C43B99F1C53BA1F1C63BA9F1C73BB1F125 +:10315000C83BB9F1C93BC1F1CA3BC9F180E090E07D +:1031600038C082EE90E035C089EE90E032C08AEE41 +:1031700090E02FC085EB90E02CC086EB90E029C05A +:1031800087EB90E026C08CEC90E023C08DEC90E0C3 +:1031900020C083E891E01DC08AE891E01AC082E96E +:1031A00091E017C084E991E014C081E292E011C07F +:1031B00083E292E00EC084E292E00BC085E292E0EE +:1031C00008C086E292E005C087E292E002C08AE28F +:1031D00092E0CF910C942717CF910895882309F49A +:1031E0004BC0823859F40E94EF1681FF45C089E335 +:1031F0000E9449210E94162289E30CC0833871F491 +:103200000E94EF1680FF38C083E50E9449210E948A +:10321000162283E50E948B210C941622843859F4DF +:103220000E94EF1682FF28C087E40E9449210E9475 +:10323000162287E4EFCF9CEF980F913A58F390E273 +:10324000980F983050F4877091E001C0990F8A95DB +:10325000EAF7892F0E94D521DFCF9BE5980F9330A5 +:1032600020F480E090E00C941117885A833120F408 +:1032700080E090E00C9427170895882321F00E94A5 +:10328000CF210C9416220895882321F00E94D52185 +:103290000C94162208957F928F929F92AF92BF92C4 +:1032A000CF92DF92EF92FF920F931F93CF93DF9312 +:1032B0001F92CDB7DEB77C01C62E772EFC010581AB +:1032C00002950F70128111110E94EC210E9442217F +:1032D000882379F0112369F080E28C0D883048F062 +:1032E00082E00E942B210E94422191E0D82ED92613 +:1032F00001C0D12CE72DE295EF70F0E0E05AFF4FCE +:103300000C948A2C872D807F072D0F70882311F055 +:103310000295007F112389F0002309F499C180E20E +:103320008C0D883020F4802F0E94CF2103C0802F85 +:103330000E94DF210E9416228BC18C2D0E94EE1864 +:10334000002309F4C3C180E28C0D883020F4802F63 +:103350000E94D52103C0802F0E94E5210E941622E1 +:10336000B5C1872D807F972D9F70803211F4892FF2 +:1033700003C0892F8295807FCC2021F0F1E0CF1609 +:10338000A1F01DC0112339F0002319F1013009F516 +:103390000E94FF219BC1002319F0013009F496C15E +:1033A00089830E940222898110C1112321F00630F5 +:1033B00008F08CC10EC0053008F088C106C1112389 +:1033C00059F0002331F0F701958190FF41C19F70C2 +:1033D00095830E943D197AC1002309F4F6C03EC1CD +:1033E000872D86958695837090E0009719F0019758 +:1033F00061F06CC1112321F08C2D972D937002C0C8 +:1034000080E090E00E94111761C1112321F08C2D02 +:10341000972D937002C080E090E00E94271756C15C +:103420008C2D112319F00E94392402C00E94A1247E +:103430000E9426254BC1872D837009F052C01111BF +:1034400045C18C2D829586958770880F880F9C2D9D +:103450009F70892E912CA12CB12C082E04C0880CB1 +:10346000991CAA1CBB1C0A94D2F7C4FE14C00FE01E +:1034700010E020E030E0B901A80104C0440F551F5E +:10348000661F771F8A95D2F7CB01BA0160957095B8 +:103490008095909503C060E070E0CB01272D2695C4 +:1034A0002695237030E02230310569F02330310554 +:1034B00089F0682979298A299B292130310571F001 +:1034C0000E94B71F03C1682979298A299B290E9474 +:1034D000D31FFCC00E94B71FC501B4010E949B1FEF +:1034E000F5C0112319F0872D817001C086958823BE +:1034F00009F4ECC08C2D829586958770880F880F13 +:103500009C2D9F70892E912CA12CB12C082E04C0CB +:10351000880C991CAA1CBB1C0A94D2F7C4FE14C0C8 +:103520000FE010E020E030E0B901A80104C0440F32 +:10353000551F661F771F8A95D2F7CB01BA01609598 +:1035400070958095909503C060E070E0CB01272DC9 +:10355000269526952370422F50E04230510569F0A0 +:103560004330510589F0682979298A299B294130FE +:10357000510571F00E949120A9C0682979298A29F2 +:103580009B290E94AD20A2C00E949120C501B401D8 +:103590000E9475209BC08C2D90E0FC01E05EF1093B +:1035A000E531F10508F050C0E059FF4F0C948A2C2A +:1035B0000C2D0F70872D8F71112321F00E940E208A +:1035C000802F07CF0E942F20802F0E9444197EC099 +:1035D000112341F0053008F079C0872D8F710E94CA +:1035E000542074C0063008F071C0F7CF112339F0B1 +:1035F000872D8F710E940E2069C01123C9F3872D7A +:103600008F710E942F2062C0112329F0872D8F71A6 +:103610000E94F91F5BC00E94EF1F58C0112351F098 +:10362000172D1F71812F0E940E2063E0812F0E94B1 +:1036300022214CC081E00E942B21023008F446C0B8 +:1036400082E00E942B2142C0112331F0002381F23D +:103650008C2D0E9426183AC0002389F28C2D0E94DE +:10366000EE1834C0472D4F706C2DC7010E945503D2 +:103670000E94131F2BC0111129C0472D4F7050E01D +:1036800042305105B9F04CF44115510581F04130FB +:103690005105E1F40E94212819C04330510569F019 +:1036A0004430510599F48C2D0E9473280FC00E945C +:1036B0000A280CC00E943D2809C00E94502806C05C +:1036C000472D4F706C2DC7010E94E005DD20F9F0F9 +:1036D0000E941E2180FD1BC0F70112820E9418214A +:1036E0000E940E20C7010E94961B0E9418210F9075 +:1036F000DF91CF911F910F91FF90EF90DF90CF90CE +:10370000BF90AF909F908F907F900C942F200F9040 +:10371000DF91CF911F910F91FF90EF90DF90CF90AD +:10372000BF90AF909F908F907F9008950F931F93BD +:10373000CF93DF93EC01888199812B813C81232BEE +:10374000B9F09F3F11F48F3F99F0CE010E94DF0343 +:10375000882371F0688179818A810E9414218C010B +:103760000E94C9200E94901FB801CE010E944B19EF +:10377000DF91CF911F910F9108950E94EC210E943B +:10378000FC210E94C1210E9416220E94D7250E947E +:10379000262580E090E00E94111780E090E00C94D4 +:1037A00027170E94DC210C94BD1B0E940921292FA0 +:1037B00022952F7030E02C3031054CF42A30310541 +:1037C0006CF42250310922303105A8F407C02C30A6 +:1037D000310569F02F30310551F00DC0803F69F09F +:1037E00018F4803E40F409C0843F29F406C093FBDE +:1037F000882780F9089580E0089581E00895CF93A7 +:10380000DF9300D000D01F92CDB7DEB70F900F909E +:103810000F900F900F90DF91CF910895CF93DF938A +:1038200000D000D000D0CDB7DEB726960FB6F89402 +:10383000DEBF0FBECDBFDF91CF9108951F93CF9311 +:10384000DF93C0919D0216E080919E02C81799F007 +:10385000D0E01C9FF0011D9FF00D1124E156FD4F9B +:103860004081518162817381848195810E940E1C07 +:103870002196C770E9CFDF91CF911F9108954091B4 +:10388000CF025091D0026091D1027091D20280910A +:10389000D3029091D4020C940E1C8091D402829594 +:1038A0008F7009F054C08091D102882309F44FC071 +:1038B00080919D02A0919E026091CF027091D002F2 +:1038C0004091D2025091D302B6E08A1709F43FC06A +:1038D00090E041155105C1F17F3F11F46F3FA1F117 +:1038E000B89FF001B99FF00D1124E156FD4F2181E1 +:1038F00072132AC02081621327C02281211124C0A3 +:10390000238134812417350710F421503109241BF9 +:10391000350B283C3105C0F42091D4022F70206172 +:103920002093D40226E0289FF001299FF00D112456 +:10393000EC55FD4F80818F70806180838FEC92E029 +:103940000E94961B0C941E1C01968770BECF089592 +:10395000CF92DF92EF92FF920F931F93CF93DF935B +:10396000CDB7DEB762970FB6F894DEBF0FBECDBFFE +:103970008C0185E0F801DE011D9601900D928A957B +:10398000E1F7D8014C9111965C91119712966C91C8 +:1039900012971396CD90DC9014973091CF027091CE +:1039A000D0028091D2029091D302009709F46BC1AA +:1039B0007F3F19F43F3F09F466C1E090D102EE2049 +:1039C00009F4C0C02091D402C816D90628F0F60127 +:1039D000E81BF90BCF0104C0809590958C0D9D1DBF +:1039E000FF24F394883C910578F0F12C207F09F0B6 +:1039F000C6C07C2DD98AC88A89890E94FF1B8FEC9A +:103A000092E00E94961BB1C0822F807F09F046C0D1 +:103A1000751314C0341312C0611110C02F702061CF +:103A20002093D4020E943F1C8FEC92E00E94961BD0 +:103A30008091D402D80115968C932EC0CD2819F10F +:103A40005F3F11F44F3FF9F0F62E61111CC08091D9 +:103A50009D0220919E0236E0821709F45AC090E040 +:103A6000389FF001399FF00D1124E156FD4F71810F +:103A7000571306C07081471303C07281711103C0D0 +:103A800001968770E9CFF62E662309F418C180915C +:103A9000D40281608093D402F12C11C1751308C047 +:103AA000341306C0611104C08091D402D801C3C090 +:103AB0004D875E878D859E856A8B0E94D51B6A899E +:103AC0008823E1F16623D1F12091D402822F8295DF +:103AD0008F7090E0029774F08091CF029091D002A5 +:103AE00098878F831986DB86CA862C87CE01079636 +:103AF0000E94961B86E0F801AFECB2E001900D92B7 +:103B00008A95E1F70E944D1C0E943F1CFF24F3940C +:103B1000D6C04D875E878D859E850E940921292FFD +:103B200022952F7030E0223031050CF0BCC09F7020 +:103B300009F0B6C0805E883008F4C1C0C8010E9498 +:103B4000961BE4CFC816D90608F453C0F601E81B4B +:103B5000F90BCF01883C910508F450C0F12C7C2D65 +:103B6000D98AC88A89890E94FF1BEFECF2E086E0BF +:103B7000DF011D928A95E9F70E943F1CA0C07513D2 +:103B800014C0341312C0611110C08091D402F80126 +:103B90008583C8010E94961B86E0EFECF2E0DF010E +:103BA0001D928A95E9F7FE2C8AC04D875E878D8528 +:103BB0009E856A8B0E94D51B6A89882309F4BECF33 +:103BC000662309F4BBCF2091D402822F82958F7097 +:103BD00090E002970CF48ECF8091CF029091D002AA +:103BE0009A8389831B82DD82CC822E83CE0101964B +:103BF0007FCF809590958C0D9D1DACCFF62E6623C2 +:103C000009F49CCF75132EC034132CC02091D4021C +:103C100020FD1FC0822F82958F70D9F0D801159694 +:103C20002C9315978F3049F08F5F982F9295907F46 +:103C3000822F8F70892B15968C93C8010E94961B3A +:103C400086E0F801AFECB2E001900D928A95E1F7C1 +:103C500093CF86E0F801AFECB2E001900D928A9527 +:103C6000E1F72DC04D875E878D859E850E94D51B0F +:103C7000811140CF8091D40281608093D402C80129 +:103C80000E94961B1CC0662309F458CF4D875E879F +:103C90008D859E850E94D51B882309F44FCF2ACF9E +:103CA000811148CF0CC0243031050CF047CF9F70F4 +:103CB00009F440CFF8019581907F09F03BCF8F2D1B +:103CC00062960FB6F894DEBF0FBECDBFDF91CF91E5 +:103CD0001F910F91FF90EF90DF90CF9008951F9369 +:103CE000CF93DF93CDB7DEB72C970FB6F894DEBF36 +:103CF0000FBECDBF4F83588769877A878B879C8794 +:103D0000CE0107960E94A81C882369F08F819885B0 +:103D10002A853B85232BF1F19F3F09F063C08F3F3C +:103D200009F060C037C086E0FE013796DE011196CB +:103D300001900D928A95E1F76F817885EA85FB8580 +:103D4000309741F17F3F11F46F3F21F120919E02A6 +:103D500030E0C90101968770992740919D0250E09B +:103D60008417950709F447C069837A83FD83EC8340 +:103D700096E0929FD001939FB00D1124A156BD4FA4 +:103D8000FE01319601900D929A95E1F780939E0283 +:103D90000E941E1C16E080919D0290919E02891740 +:103DA000C1F1189FC001112481569D4F0E94A81C8B +:103DB000882379F1E0919D021E9FF0011124E156C4 +:103DC000FD4F4081518162817381848195810E9480 +:103DD0000E1C80919D0290E0019687709927809338 +:103DE0009D02D9CF4F81588569857A858B859C85C1 +:103DF0000E940E1CCFCF0E94D11B10929E021092E7 +:103E00009D02EFECF2E086E0DF011D928A95E9F772 +:103E1000C1CF2C960FB6F894DEBF0FBECDBFDF9199 +:103E2000CF911F910895EF92FF920F931F93CF931D +:103E3000DF938C01009709F46CC0F12CEE24E3941D +:103E4000E8012196F8018491843740F4843008F029 +:103E500051C0813081F0823019F15BC0853709F49F +:103E600044C0A8F19CE7980F903708F052C08F77B4 +:103E70000E94EE1841C00E5F1F4FFE01C49180E208 +:103E80008C0F883048F4C7708E2D01C0880FCA95FA +:103E9000EAF70E94EF2114C08C2F0E9426182DC033 +:103EA0000E5F1F4FFE01C49180E28C0F883058F4E2 +:103EB000C7708E2D01C0880FCA95EAF70E94F521C0 +:103EC0000E9416221AC08C2F0E94EE1816C00E5F98 +:103ED0001F4FFE01C491CC2381F08FE99FE0019731 +:103EE000F1F700C00000C150F6CF0E5F1F4FFE017A +:103EF000F49003C00E9426188E018F2D882309F4A8 +:103F00009FCFEFE9FFE03197F1F700C0000081504B +:103F1000F5CFDF91CF911F910F91FF90EF90089512 +:103F200008956093D9027093DA028093DB02909334 +:103F3000DC020C94BD1B0F931F930091D9021091CA +:103F4000DA022091DB023091DC02DC01CB01802B14 +:103F5000912BA22BB32B8093D9029093DA02A093DA +:103F6000DB02B093DC021F910F910C94BD1B0F93E9 +:103F70001F930091D9021091DA022091DB02309157 +:103F8000DC02DC01CB0180239123A223B3238093A5 +:103F9000D9029093DA02A093DB02B093DC021F9166 +:103FA0000F910C94BD1B0F931F930091D902109198 +:103FB000DA022091DB023091DC02DC01CB018027A8 +:103FC0009127A227B3278093D9029093DA02A09376 +:103FD000DB02B093DC021F910F910C94BD1B109279 +:103FE000D5021092D6021092D7021092D8020C94E9 +:103FF000BD1B41E050E060E070E004C0440F551F7D +:10400000661F771F8A95D2F74093D5025093D60248 +:104010006093D7027093D8020C94BD1B41E050E02E +:1040200060E070E004C0440F551F661F771F8A953B +:10403000D2F78091D5029091D602A091D702B0918B +:10404000D802482B592B6A2B7B2B4093D5025093D7 +:10405000D6026093D7027093D8020C94BD1B41E046 +:1040600050E060E070E004C0440F551F661F771FEA +:104070008A95D2F740955095609570958091D502BC +:104080009091D602A091D702B091D802482359232B +:104090006A237B234093D5025093D6026093D702C4 +:1040A0007093D8020C94BD1B41E050E060E070E0DA +:1040B00004C0440F551F661F771F8A95D2F7809161 +:1040C000D5029091D602A091D702B091D80248278C +:1040D00059276A277B274093D5025093D6026093D5 +:1040E000D7027093D8020C94BD1B0F931F930091BD +:1040F000D5021091D6022091D7023091D802DC016E +:10410000CB01802B912BA22BB32B8093D5029093C4 +:10411000D602A093D702B093D8021F910F910C94AE +:10412000BD1B0F931F930091D5021091D6022091D1 +:10413000D7023091D802DC01CB0180239123A22346 +:10414000B3238093D5029093D602A093D702B09365 +:10415000D8021F910F910C94BD1B0F931F930091D8 +:10416000D5021091D6022091D7023091D802DC01FD +:10417000CB0180279127A227B3278093D502909364 +:10418000D602A093D702B093D8021F910F910C943E +:10419000BD1B0895CF92DF92EF92FF920F931F9372 +:1041A000CF93DF938C01C090D902D090DA02E090D7 +:1041B000DB02F090DC028091D5029091D602A091B2 +:1041C000D702B091D802C82AD92AEA2AFB2ACFE11D +:1041D000D0E0D701C6010C2E04C0B695A7959795DF +:1041E00087950A94D2F780FF06C0B8018C2F0E94F1 +:1041F0006508019721F4219760F780E001C08C2FBA +:10420000DF91CF911F910F91FF90EF90DF90CF90B2 +:104210000895CF93DF93EC010E94CA20BE010E9453 +:104220006508DF91CF910895CB010E94092108957F +:104230008091DD0285958595859508958091DD02B3 +:104240008770089598E0899F90011124262B209370 +:10425000DD020C940E202091DD0280958223809354 +:10426000DD02982F977069F430E0482F552747FDFD +:1042700050952417350729F08595859585950C94DB +:104280002F2008959091DD02977081E009F480E07D +:10429000089590911501992321F0909116019111A3 +:1042A00009C02091170130911801F90132969FEF52 +:1042B00040E01FC0982F9695969596959F3050F5A3 +:1042C000E0911701F0911801E90FF11D877021E0CD +:1042D00030E0A90102C0440F551F8A95E2F7CA01D8 +:1042E0009181892B818308959F3F39F04F5F4E3034 +:1042F00041F051915813F8CF0DC05111F7CF942FC1 +:10430000F5CF9F3F39F0F901E90FF11D97FDFA95BF +:1043100082830895089590911501992321F0909139 +:104320001601911109C02091170130911801F9016E +:104330003296205F3F4F1FC0982F96959695969581 +:104340009F30F0F4E0911701F0911801E90FF11D91 +:10435000877021E030E0A90102C0440F551F8A9503 +:10436000E2F7CA018095918189238183089531966E +:10437000E217F30729F090819813F9CF1082F7CF55 +:10438000089581E090E0E0911701F0911801E80FA5 +:10439000F91F1082019680319105A9F70895909137 +:1043A000F102892B8093F102089580959091F1029A +:1043B00089238093F10208951092F102089590915B +:1043C000F002892B8093F002089580959091F0027D +:1043D00089238093F00208951092F002089590913D +:1043E000EF02892B8093EF02089580959091EF0260 +:1043F00089238093EF0208951092EF02089580932D +:10440000DE0208951092DE020895809117019091C6 +:104410001801FC0131969C01205F3F4F80E0919193 +:1044200091118F5FE217F307D1F70895E09117011B +:10443000F09118018091F1028083E0911701F091D1 +:10444000180190818091F002892B8083E0911701FF +:10445000F091180190818091EF02892B80838091E7 +:10446000DE02882361F0E0911701F091180190813C +:10447000892B80830E94052281111092DE02809197 +:104480001701909118010C94FB1620E0009739F069 +:10449000AC0141505109842395232F5FF7CF822F20 +:1044A000089580911303843039F11092F30220E4CF +:1044B00088E190E00FB6F894A895809360000FBE55 +:1044C0002093600080E00E94BC0280E00E94FF0810 +:1044D00083B7817F846083BF83B7816083BF789413 +:1044E000889583B78E7F83BF88E10FB6F894809359 +:1044F0006000109260000FBE08950895089580E056 +:104500000E94BC020E947D220E945A090E947E22C3 +:104510000E94DF0991E0811101C090E0892F089588 +:104520000E94D11B80E00E94BC020E94F9270E94D9 +:10453000EF160C94FF081F920F920FB60F921124E2 +:104540008F939F93AF93BF938091F302811113C018 +:104550008091F4029091F502A091F602B091F702D9 +:104560004196A11DB11D8093F4029093F502A09392 +:10457000F602B093F702BF91AF919F918F910F9088 +:104580000FBE0F901F90189582E084BD93E095BDFB +:104590009AEF97BD80936E0008952FB7F89480919D +:1045A000F4029091F502A091F602B091F7022FBFAC +:1045B0000895CF92DF92EF92FF920F931F932FB740 +:1045C000F8944091F4025091F5026091F6027091D6 +:1045D000F7022FBF6A017B01EE24FF248C0120E04B +:1045E00030E0C016D106E206F30610F4415051093E +:1045F0009A01281B390BC9011F910F91FF90EF9071 +:10460000DF90CF9008951F920F920FB60F92112452 +:104610008F939F93AF93BF938091F4029091F50293 +:10462000A091F602B091F7020196A11DB11D8093F1 +:10463000F4029093F502A093F602B093F702BF91B3 +:10464000AF919F918F910F900FBE0F901F90189573 +:104650000E94EC13F8942FEF87EA91E621508040F6 +:104660009040E1F700C0000087E090EBDC01809310 +:104670001E0390931F03A0932003B09321039CE09B +:1046800088E10FB6F894A895809360000FBE9093D0 +:104690006000FFCF0E948923811102C00E94652320 +:1046A0000E9494238093F2020E949C2380931C0317 +:1046B00087FB882780F9809316010E949823682F32 +:1046C00070E080E090E00C94911F6DEE7EEF80E052 +:1046D00090E00E94B02C60E082E090E00E949E2C6E +:1046E00060E083E090E00E949E2C60E084E090E037 +:1046F0000E949E2C60E085E090E00E949E2C60E08D +:1047000086E090E00E949E2C6FEF87E090E00C9492 +:104710009E2C80E090E00E94982C21E08D3E9E4FE0 +:1047200009F020E0822F089582E090E00C94902C14 +:1047300083E090E00C94902C84E090E00C94902C1A +:10474000682F84E090E00C949E2C86E090E00C941E +:10475000902C682F86E090E00C949E2C87E090E0EF +:104760000C94902C682F87E090E00C949E2C809104 +:10477000FA0280FF0BC060911C0185E0689FB001C8 +:10478000112475956795759567952BC081FF09C0B4 +:1047900060911C0185E0689FB001112475956795B3 +:1047A00020C082FF07C060911C0185E0689FB001B6 +:1047B000112417C09091FB029923D1F060911B0145 +:1047C000961788F720911C0185E0289F90011124FD +:1047D000929FA001939F500D112470E0CA010E9486 +:1047E000762C6038710540F46115710539F002C00E +:1047F00065E070E0862F08958FE7089581E00895C1 +:104800008091FA0280FF08C060911A0170E07595EE +:1048100067957595679521C081FF06C060911A0163 +:1048200070E07595679519C082FF04C060911A0108 +:1048300070E010C09091FB029923C1F060911901C2 +:104840009617A0F780911A01899FC001112470E08A +:104850000E94762C6038710528F46115710521F0ED +:10486000862F08958FE7089581E0089561E070E054 +:10487000F4CF803F21F40E94B723819504C0813F8B +:1048800029F40E94B7238093FE020895823F21F409 +:104890000E94B723819504C0833F29F40E94B72367 +:1048A0008093FD020895893F19F40E94002405C0F9 +:1048B0008A3F31F40E94002481958093FF0208957D +:1048C0008B3F21F40E940024819504C08C3F29F481 +:1048D0000E940024809300030895843F21F4809176 +:1048E000FC02816017C0853F21F48091FC02826048 +:1048F00011C0863F21F48091FC0284600BC0873F89 +:1049000021F48091FC02886005C0883F31F48091D9 +:10491000FC0280618093FC0208958D3F21F4809118 +:10492000FA0281600BC08E3F21F48091FA0282600E +:1049300005C08F3F29F48091FA0284608093FA02C7 +:104940000895803F39F48091FE0287FF6CC0109279 +:10495000FE0269C0813F29F48091FE021816BCF363 +:1049600062C09091FD02823F29F497FF5CC01092D3 +:10497000FD0259C0833F19F41916CCF354C0893F86 +:1049800041F48091FF0218160CF04DC01092FF0206 +:104990004AC08A3F29F48091FF0287FF44C0F6CFC6 +:1049A0008B3F39F48091000387FF3DC010920003D4 +:1049B0003AC08C3F29F4809100031816BCF333C031 +:1049C000843F21F48091FC028E7F17C0853F21F443 +:1049D0008091FC028D7F11C0863F21F48091FC0202 +:1049E0008B7F0BC0873F21F48091FC02877F05C03D +:1049F000883F31F48091FC028F7E8093FC0213C0CB +:104A00008D3F21F48091FA028E7F0BC08E3F21F4FE +:104A10008091FA028D7F05C08F3F29F48091FA02C0 +:104A20008B7F8093FA028091FD0281110EC08091EC +:104A3000FE0281110AC08091FF02811106C080919F +:104A40000003811102C01092FB0208958CEF92E0E6 +:104A50000E9406170E94CD229093F9028093F802DB +:104A600008951F93CF93DF938091F8029091F902FC +:104A70000E94D922AC019091FB02992321F0209150 +:104A80001D0130E006C020911E018AE0289F9001A0 +:104A900011244217530708F486C08091FD02C0918B +:104AA000FE02D091FF0210910003811107C0C111D5 +:104AB00076C0D11174C0111172C075C09F3F19F03A +:104AC0009F5F9093FB02181624F40E94B7238093F3 +:104AD000FD028091FD0287FF05C00E94B7238195EA +:104AE0008093FD021C1624F40E94B7238093FE02DB +:104AF0008091FE0287FF05C00E94B72381958093B5 +:104B0000FE026091FD02662339F1C091FE02CC23C2 +:104B100019F1772767FD7095872F972F0E949829A5 +:104B200023E333E343E35FE30E94A82A0E9465295D +:104B30006093FD026C2F772767FD7095872F972F65 +:104B40000E94982923E333E343E35FE30E94A82A0A +:104B50000E9465296093FE021D1624F40E94002421 +:104B60008093FF028091FF0287FF05C00E9400240E +:104B700081958093FF02111624F40E9400248093F3 +:104B800000038091000387FF05C00E9400248195E7 +:104B900080930003DF91CF911F910C9426259F3FB6 +:104BA00009F08ECF96CFDF91CF911F910895ECEF52 +:104BB000F2E085E0DF011D928A95E9F71092FB0291 +:104BC0001092FA020895833081F128F4813059F06F +:104BD0008230D1F00895853009F449C0B8F18630AB +:104BE00009F456C0089580911E01262F30E0280F49 +:104BF000311D2F3F310524F4680F60931E01089585 +:104C00008FEF80931E01089580911D01262F30E0C3 +:104C1000280F311D2F3F310524F4680F60931D01CB +:104C200008958FEF80931D01089580911C01262F18 +:104C300030E0280F311D2F3F310524F4680F6093B9 +:104C40001C0108958FEF80931C01089580911B0132 +:104C5000262F30E0280F311D2F3F310524F4680F37 +:104C600060931B0108958FEF80931B01089580913D +:104C70001A01262F30E0280F311D2F3F310524F473 +:104C8000680F60931A0108958FEF80931A010895B9 +:104C900080911901262F30E0280F311D2F3F31055B +:104CA00024F4680F6093190108958FEF8093190120 +:104CB0000895833011F128F4813049F0823091F069 +:104CC0000895853081F120F18630C1F108958091F9 +:104CD0001E01681720F4861B80931E010895109210 +:104CE0001E01089580911D01681720F4861B809392 +:104CF0001D01089510921D01089580911C016817EF +:104D000020F4861B80931C01089510921C010895C5 +:104D100080911B01681720F4861B80931B01089566 +:104D200010921B01089580911A01681720F4861BC8 +:104D300080931A01089510921A0108958091190123 +:104D4000681720F4861B80931901089510921901A9 +:104D500008950F931F93873208F048C08E3108F0F2 +:104D60008DC0803109F477C008F5873009F461C03F +:104D700068F4863009F09DC08091F202817F8E7FB9 +:104D80008093F20281E08093020394C08B3009F497 +:104D900089C08E3009F08DC08091F20282FB2227FB +:104DA00020F991E0922790FB82F95EC0863109F4E8 +:104DB00079C060F4813109F07CC00E94D11B9091D0 +:104DC000160181E08927809316016CC0893109F4AE +:104DD00069C08B3109F06DC08091F20281FB2227FE +:104DE00020F991E0922790FB81F93EC0883309F4C5 +:104DF00059C050F4893209F457C0853309F454C0BE +:104E0000873209F451C055C0833409F44DC028F4E9 +:104E10008A3308F44EC0895332C0883409F049C03F +:104E20000E94D11B0E940F0A0E94D6030E942823D1 +:104E300039C09091F202892F8095817080FB90F9A2 +:104E400029F0966098609093F20234C0997F977F22 +:104E50009093F20227C08091F20283FB222720F96F +:104E600091E0922790FB83F98093F2029923D1F08D +:104E70008091F20281608093F20214C08D5141E072 +:104E800050E060E070E08A019B0104C0000F111F38 +:104E9000221F331F8A95D2F7C901B8010E94911FC2 +:104EA0000E94D11B81E006C061E070E080E090E0EC +:104EB000F5CF80E01F910F91089580E0089580E084 +:104EC0000895CF93C82F80910203813069F018F0C4 +:104ED0008230C9F184C0E0911701F09118018081FE +:104EE000823209F07EC007C0E0911701F0911801ED +:104EF0008081823261F48C2F0E945D27811104C071 +:104F00008C2F0E94A9261DC081E090E01AC08C2F32 +:104F10000E945F27811114C0C43179F048F4CB306E +:104F200079F0C03109F061C082E08093020308C0CB +:104F3000C93219F0C83321F058C01092020355C08D +:104F400081E0817054C0C93291F120F5C43179F10A +:104F5000B0F4C73009F047C08EE180931E0182E3B0 +:104F600080931D018AE080931C0184E180931B01E2 +:104F700088E080931A0188E28093190134C0CE51F1 +:104F8000C63088F5EC2FF0E0EA54FE4F8081809324 +:104F9000010329C0CE34E9F020F4CB3421F56AE0D6 +:104FA00013C0C13579F0C235F1F461E00DC08091D4 +:104FB0000103882319F01092010315C081E080934A +:104FC000020315C061E006C0809101030E94E32541 +:104FD0000AC06AE0809101030E94592604C0109221 +:104FE000020380E004C081E002C080E0AACFCF913C +:104FF00008950E948923811102C00E9465230E94A6 +:10500000A52380931D0380FF02C0869501C080E028 +:105010000C94BC0280911D03982F9695292F30E0A7 +:10502000233031054CF49F5F990F8170892B81608B +:1050300080931D030E94A92380911D0386950C94E3 +:10504000BC0280911D03982F969591F09158990F6D +:105050008170892B80931D038E7F91E009F490E08D +:1050600080911D0390FB80F980931D030E94A9236A +:1050700080911D0386950C94BC0280911D03982F8E +:10508000909590FB80F980931D030E94A923809145 +:105090001D0380FF02C0869501C080E00C94BC0215 +:1050A00090911D03892F86958F5F8F779170843043 +:1050B00028F4880F892B80931D0302C090931D0351 +:1050C00080911D038E7F91E009F490E080911D0393 +:1050D00090FB80F980931D030E94A92380911D03FA +:1050E00086950C94BC0220911D03922F96958927DA +:1050F000982F990F822F8170892B80931D038E7FAB +:1051000091E009F490E080911D0390FB80F9809379 +:105110001D030E94A92380911D0386950C94BC0257 +:1051200080911D03869508955058BB27AA270ED05D +:10513000D1C1C2D130F0C7D120F031F49F3F11F47A +:105140001EF4B7C10EF4E095E7FB9FC1E92FD3D160 +:1051500080F3BA17620773078407950718F071F494 +:105160009EF5EBC10EF4E0950B2EBA2FA02D0B018E +:10517000B90190010C01CA01A0011124FF27591B9C +:1051800099F0593F50F4503E68F11A16F040A22FA2 +:10519000232F342F4427585FF3CF46953795279513 +:1051A000A795F0405395C9F77EF41F16BA0B620B12 +:1051B000730B840BBAF09150A1F0FF0FBB1F661F59 +:1051C000771F881FC2F70EC0BA0F621F731F841F9C +:1051D00048F4879577956795B795F7959E3F08F0C2 +:1051E000B3CF9395880F08F09927EE0F9795879581 +:1051F000089527D108F481E008950CD06BC163D1E4 +:1052000040F05AD130F021F45F3F19F03EC1511106 +:1052100095C14FC170D198F39923C9F35523B1F3C8 +:10522000951B550BBB27AA2762177307840738F015 +:105230009F5F5F4F220F331F441FAA1FA9F333D074 +:105240000E2E3AF0E0E830D091505040E695001C28 +:10525000CAF729D0FE2F27D0660F771F881FBB1FE4 +:10526000261737074807AB07B0E809F0BB0B802DBE +:10527000BF01FF2793585F4F2AF09E3F510568F00A +:1052800004C15CC15F3FECF3983EDCF386957795F3 +:105290006795B795F7959F5FC9F7880F911D96950C +:1052A000879597F90895E1E0660F771F881FBB1F68 +:1052B000621773078407BA0720F0621B730B840B15 +:1052C000BA0BEE1F88F7E095089504D06894B111E9 +:1052D00035C1089518D188F09F5790F0B92F9927BC +:1052E000B751A0F0D1F0660F771F881F991F1AF0F1 +:1052F000BA95C9F712C0B13081F01FD1B1E008955D +:105300001CC1672F782F8827B85F39F0B93FCCF3DD +:10531000869577956795B395D9F73EF490958095E6 +:10532000709561957F4F8F4F9F4F0895E89409C006 +:1053300097FB3EF490958095709561957F4F8F4FC8 +:105340009F4F9923A9F0F92F96E9BB279395F695DE +:10535000879577956795B795F111F8CFFAF4BB0F5C +:1053600011F460FF1BC06F5F7F4F8F4F9F4F16C0C0 +:10537000882311F096E911C0772321F09EE8872F4A +:10538000762F05C0662371F096E8862F70E060E006 +:105390002AF09A95660F771F881FDAF7880F96957F +:1053A000879597F9089588D018F011F08CD038F4CB +:1053B00080C0C4C0E92F9FD0B0F35523C9F3E7FBE9 +:1053C0006217730784079507A8F199F3E92FFF2760 +:1053D00088232AF03197660F771F881FDAF7952FF9 +:1053E0005527442332F091505040220F331F441F61 +:1053F000D2F7BB27E91BF50B621B730B840BB109BA +:10540000C1F222F4620F731F841FB11D31972AF07D +:10541000660F771F881FBB1FEFCF915050405AF087 +:1054200041F0882332F0660F771F881F915050405B +:10543000C1F7939530C08695779567959F5FD9F7AB +:10544000F8CF990F0008550FAA0BE0E8FEEF1616EB +:105450001706E807F907C0F012161306E407F50768 +:1054600098F0621B730B840B950B39F40A2661F0DC +:10547000232B242B252B21F408950A2609F4A1407F +:10548000A6958FEF811D811D089597F99F6780E88C +:1054900070E060E008959F3F31F0915020F48795CF +:1054A00077956795B795880F911D9695879597F98C +:1054B00008959FEF80EC089500240A9416161706AD +:1054C00018060906089500240A94121613061406F5 +:1054D00005060895092E0394000C11F4882352F058 +:1054E000BB0F40F4BF2B11F460FF04C06F5F7F4F10 +:1054F0008F4F9F4F089557FD9058440F551F59F0F7 +:105500005F3F71F04795880F97FB991F61F09F3FB0 +:1055100079F087950895121613061406551FF2CFD9 +:105520004695F1DF08C0161617061806991FF1CF29 +:1055300086957105610508940895E894BB27662750 +:105540007727CB0197F908957CDF08F48FEF089552 +:105550000BD0C0CFB1DF28F0B6DF18F0952309F0EB +:1055600094CFA7CF1124EACFC6DFA0F3959FD1F344 +:10557000950F50E0551F629FF001729FBB27F00D01 +:10558000B11D639FAA27F00DB11DAA1F649F662756 +:10559000B00DA11D661F829F2227B00DA11D621FA5 +:1055A000739FB00DA11D621F839FA00D611D221F5F +:1055B000749F3327A00D611D231F849F600D211D43 +:1055C000822F762F6A2F11249F5750408AF0E1F0E6 +:1055D00088234AF0EE0FFF1FBB1F661F771F881F2F +:1055E00091505040A9F79E3F510570F04ECFA6CF85 +:1055F0005F3FECF3983EDCF3869577956795B7951A +:10560000F795E7959F5FC1F7FE2B880F911D969543 +:10561000879597F90895FA01EE0FFF1F309621053F +:10562000310599F16115710561F48038BFE39B077D +:1056300049F168949038810561F08038BFEF9B078D +:1056400041F0992342F5FF3FE1053105210511F1B4 +:10565000E8940894E795D901AA2329F4AB2FBE2F2B +:10566000F85FD0F310C0FF5F70F4A695E0F7F7394C +:1056700050F019F0FF3A38F49F779F930CD00F90B9 +:1056800007FC905808953EF014CF60E070E080E889 +:105690009FE308954FE79F775F934F933F932F9337 +:1056A0009ED02F913F914F915F9152DF05C019F429 +:1056B0000EF0EBCE42CFFDCE26DFC8F39638C0F712 +:1056C00007F80F92E8942BE33AEA48EB5FE74EDFE6 +:1056D0000F920F920F924DB75EB70F92C0D0EAE0D3 +:1056E000F1E016D04F915F91EF91FF91E595EE1F9C +:1056F000FF1F49F0FE57E0684427EE0F441FFA955C +:10570000E1F74195550B32D00F9007FE26C0089562 +:10571000DF93CF931F930F93FF92EF92DF927B0162 +:105720008C01689405C0DA2EEF011EDFFE01E894BB +:10573000A5912591359145915591AEF3EF0106DD87 +:10574000FE019701A801DA9479F7DF90EF90FF90BE +:105750000F911F91CF91DF9108959B01AC0160E003 +:1057600070E080E89FE349CD90CE95CECCDEE8F3A3 +:105770009923D9F3940F511DBBF39150504094F0ED +:1057800059F0882332F0660F771F881F91505040E0 +:10579000C1F79E3F510544F7880F911D9695879557 +:1057A00097F908955F3FACF0983E9CF0BB27869533 +:1057B00077956795B79508F4B1609395C1F7BB0FDE +:1057C00058F711F460FFE8CF6F5F7F4F8F4F9F4F07 +:1057D000E3CFB4CE0EF05FCE6CCE689456CE93DE9F +:1057E000C8F39923D1F3C6F3DF93CF931F930F939D +:1057F000FF92C92FDD2788232AF02197660F771F94 +:10580000881FDAF720E030E040E85FEB9FE388395B +:1058100020F0803E30F021968F7787DCE2E3F1E0E4 +:1058200003C083DCEFE5F1E073DF8B01BE01EC0127 +:10583000FB2E6F5771097595771F880B990B78DDD3 +:1058400028E132E741E35FE38FDEAF2D9801AE013F +:10585000FF900F911F91CF91DF9178DC3BCEFA0141 +:10586000DC01AA0FBB1F9B01AC01BF5728F4222704 +:105870003327442750781FC0B75188F4AB2F00243A +:10588000469537952795011CA395D2F3002069F022 +:10589000220F331F441FB395DAF30DD045CC61308E +:1058A0007105A0E88A07B94630F49B01AC01662770 +:1058B000772788279078309621F0208331834283A0 +:1058C00053830895AA1BBB1B51E107C0AA1FBB1F2E +:1058D000A617B70710F0A61BB70B881F991F5A957C +:1058E000A9F780959095BC01CD01089597FB072EEF +:1058F00016F4009407D077FD09D00E94622C07FCB3 +:1059000005D03EF4909581959F4F089570956195CF +:105910007F4F0895EE0FFF1F0590F491E02D09943D +:10592000F999FECF92BD81BDF89A992780B5089567 +:10593000A8E1B0E042E050E00C94B82C262FF99991 +:10594000FECF92BD81BDF89A019700B4021639F0DE +:105950001FBA20BD0FB6F894FA9AF99A0FBE0895AF +:105960000196272F0E949F2C0C949E2CDC01CB01CA +:10597000FC01F999FECF06C0F2BDE1BDF89A31965F +:1059800000B40D9241505040B8F70895F894FFCFFD +:10599000640007000CFF0000003F64F30F81105EFD +:1059A000102A10F60F0101DF022808140A321E0027 +:1059B00002040507090B0C0E1011131517181A1CF9 +:1059C0001D1F2123242628292B2D2F303234353733 +:1059D000393B1F0F03764F5F6F7F49694379095940 +:1059E00053633149803F5D8B803FF8BF803FCAE100 +:1059F000803F73ED803FCAE1803FF8BF803F5D8B01 +:105A0000803F3149803F0000803FF16D7F3F75EA64 +:105A10007E3F4C827E3F833F7E3F84287E3F833F94 +:105A20007E3F4C827E3F75EA7E3FF16D7F3F0000F6 +:105A3000803F3F4D3639830436040004C7035A03C0 +:105A400073038C03A503010203040506070809007C +:00000001FF diff --git a/keyboard/planck/keymaps/max/compiled.hex b/keyboard/planck/keymaps/max/compiled.hex new file mode 100644 index 0000000000..d9594415fb --- /dev/null +++ b/keyboard/planck/keymaps/max/compiled.hex @@ -0,0 +1,1449 @@ +:100000000C9496020C94DA020C94DA020C94DA0244 +:100010000C94DA020C94DA020C94DA020C94DA02F0 +:100020000C94DA020C94DA020C9478140C944A15AD +:100030000C94AC220C94DA020C94DA020C94DA02DE +:100040000C94DA020C943C030C94DA020C94DA025D +:100050000C94DA020C9414230C94DA020C94DA0255 +:100060000C94DA020C94DA020C94DA020C94DA02A0 +:100070000C94DA020C94DA020C94DA020C94DA0290 +:100080000C94ED0A0C94DA020C94DA020C94DA0265 +:100090000C94DA020C94DA020C94DA020C94DA0270 +:1000A0000C94DA020C94DA020C94DA02B715D91522 +:1000B000C716D915C7161E164116C7169616A916C5 +:1000C00093199319C219C219011A211A771B771BA8 +:1000D0002C1A771BDC1ADC1A431B4C1B771B711B79 +:1000E000E91AE91AE91AE91AE91AE91AE91AE91AF8 +:1000F000E91AE91AE91AE91AE91AE91AE91AE91AE8 +:10010000F91A071B0E1B151B1F1B07634236B79BF3 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000000000F1A299 +:1001D000F1A3018C028C290014001A0008001500FC +:1001E00017001C0018000C00120013002A002B003E +:1001F00004001600070009000A000B000D000E00A5 +:100200000F0033002800E1001D001B00060019004C +:100210000500110010003600370038003400E000FF +:100220008350E200E30002202C002C00012050004B +:10023000510052004F00290014001A000900130059 +:100240000A000D000F0018001C0033002A002B00CC +:10025000040015001600170007000B00110008002D +:100260000C0012002800E1001D001B000600190010 +:1002700005000E0010003600370038003400E000A2 +:100280008350E200E30002202C002C0001205000EB +:10029000510052004F0035001E001F0020002100B9 +:1002A0002200230024002500260027002A00010048 +:1002B0000320042000500100010001002D002E0049 +:1002C0002F00300001000100440045006800690073 +:1002D0006A006B006C006D006E006F003100010061 +:1002E0000100010001000100010001000120AB003C +:1002F000AA00A900AE0035021E021F022002210240 +:100300002202230224022502260227022A000100DB +:100310000320042000500100010001002D022E02E4 +:100320002F023002010001003A003B003C003D007A +:100330003E003F0040004100420043003102010006 +:100340000100010001000220010001000100AB00DA +:10035000AA00A900AE002803540068006500200030 +:1003600050006C0061006E0063006B0020004B00C9 +:100370006500790062006F00610072006400000097 +:100380002C034F007200740068006F006C0069005D +:100390006E0065006100720020004B00650079006E +:1003A00062006F00610072006400730000000403CB +:1003B000090409026D00040100A0FA09040000010B +:1003C00003010100092111010001223F00070581FD +:1003D0000308000A090401000103010200092111B8 +:1003E000010001224D000705820308000A090402EA +:1003F000000103000000092111010001223600075D +:1004000005830308000A0904030001030000000932 +:100410002111010001223900070584031000011297 +:1004200001100100000008EDFE6060010001020003 +:100430000105010906A101050719E029E7150025B5 +:1004400001950875018102050819012905950575B1 +:10045000019102950175039101050719002977158E +:10046000002501957875018102C005010980A1016F +:10047000850216010026B7001A01002AB700751080 +:1004800095018100C0050C0901A101850316010039 +:10049000269C021A01002A9C02751095018100C059 +:1004A00005010902A1010901A10005091901290598 +:1004B00015002501950575018102950175038101DE +:1004C0000501093009311581257F950275088106DE +:1004D00009381581257F950175088106050C0A38B4 +:1004E000021581257F950175088106C0C0050109A7 +:1004F00006A101050719E029E715002501950875F2 +:1005000001810295017508810105081901290595E8 +:1005100005750191029501750391010507190029DF +:10052000FF150025FF950675088100C011241FBE28 +:10053000CFEFDAE0DEBFCDBF04B603FE24C080916A +:100540001E0390911F03A0912003B09121038730D7 +:10055000904BA740B04BB9F410921E0310921F03AA +:10056000109220031092210314BE84B7877F84BFAA +:1005700088E10FB6F89480936000109260000FBE7F +:10058000E0E0F8E3099511E0A0E0B1E0E2EBF9E585 +:1005900002C005900D92A03CB107D9F713E0A0EC82 +:1005A000B1E001C01D92AE31B107E1F70E94BE116A +:1005B0000C94D72C0C9400000895089581E00895C0 +:1005C00008950C94DD020C94DE020C94E0020E946B +:1005D000A12823E030E0281B3109220F2093C40119 +:1005E0000895282F2F9880918000211108C0877FBF +:1005F0008093800010928D0010928C001BC0886048 +:1006000080938000233019F48FEF9FEF0FC083E0B9 +:1006100090E0821B9109880F991F2FEF3FEFA901EE +:1006200002C0569547958A95E2F7CA0190938D00CE +:1006300080938C000C94E7020E94E70284E0809390 +:10064000C3011092C0010895279A2F988FEF9FEF52 +:1006500090938700809386008AE08093800089E1F0 +:10066000809381000E940A280C941C030E9424039A +:100670006E9A769A0C94DC021F920F920FB60F922C +:1006800011242F933F938F939F93EF93FF93E091C8 +:10069000C101F091C201CF0101969093C2018093F4 +:1006A000C1010090C30102C0F695E7950A94E2F7F4 +:1006B000EF738091C001823019F4E03251F404C02C +:1006C000813039F4EF3329F480916F008D7F80936E +:1006D0006F00F0E0E457FE4FE49121E031E0E29F4B +:1006E000C001E39F900D11240090C40102C09695B3 +:1006F00087950A94E2F790938D0080938C00FF9188 +:10070000EF919F918F913F912F910F900FBE0F907E +:100710001F90189581E008950C948A0308950C9415 +:10072000360380911502882309F448C08091D101D5 +:100730009091D201009779F40E94DE229093D20129 +:100740008093D1018091D30190E0009771F4809162 +:10075000D40190E00AC00E94EA2220910001309169 +:1007600001012817390740F329C00197880F991F05 +:10077000880F991FFC01EB52FE4F608171818281CD +:1007800093810E94530AE091D30184E0E89FF00135 +:100790001124EB52FE4F60817181828193814FE081 +:1007A00050E00E940B0E8091D30190E00196609181 +:1007B000D40170E00E94872C8093D3010C94E10255 +:1007C000109217020C94200A0895089581E08093F6 +:1007D00017020C94E503089508958F929F92AF92AB +:1007E000BF92EF92FF920F931F93CF93DF93CDB7FA +:1007F000DEB7A3970FB6F894DEBF0FBECDBF7C0166 +:10080000FC0100811181C8010E94DB20B8010E9417 +:10081000F2058C01B7010E948C03882309F4CCC136 +:100820000032F0E51F0741F4F7018281882309F4C3 +:1008300058C00E946F0EC0C10132F0E51F0741F49D +:10084000F7018281882309F44CC00E94780EB4C15C +:100850000232F0E51F0751F4F7018281882309F481 +:1008600040C00E946B0E8111F0CFE3CF0332F0E560 +:100870001F0739F4F7018281882399F10E94E6036A +:100880009BC10432F0E51F0739F4F7018281882308 +:1008900041F10E94E00390C10532F0E51F0749F4E1 +:1008A000F70182818823E9F0809117028111F1CF4D +:1008B000E5CF0632F0E51F0739F4F701828188237E +:1008C00081F00E947F0E0AC00732F0E51F0749F44D +:1008D000F7018281882329F00E948A0E0E94EC038E +:1008E0006BC180911702811105C0F70182818111CE +:1008F000CFC018C1003E110579F4F7018281882329 +:1009000009F44DC00E94200A81E0809316021092E3 +:1009100015021092D40150C1023E110559F4F7019D +:1009200082818823E1F10E94200A1092160210921F +:10093000150242C1033E110591F4F701828188231B +:1009400071F10E94200A1092160281E08093150234 +:100950001092D3011092D2011092D1012DC1023513 +:10096000110559F4F7018281882309F425C180918A +:100970000001909101010A970DC00135110579F42C +:10098000F7018281882309F417C1809100019091B9 +:1009900001010A9690930101809300010DC14091DD +:1009A000040183E2EFE1F1E0DE01119601900D9286 +:1009B0008A95E1F7F701808121E030E02C0F3D1F9F +:1009C000280F311DC9012091020130910301FC0162 +:1009D000E20FF31F6081772767FD7095640F711D2B +:1009E000882777FD8095982F0E94A92920E030E084 +:1009F00040E451E40E940E294B015C01F701218182 +:100A000084E090E0821B9109BC01882777FD8095E6 +:100A1000982F0E94A9299B01AC01C501B4010E9435 +:100A2000A6289B01AC0160E070E080E090E40E94A9 +:100A30001C2B20E030E04CED50E40E94B92A4B0121 +:100A40005C01F70182818823D1F04FE050E0C501BD +:100A5000B4010E940B0E809116028823A1F08091B0 +:100A6000D40124E0829FF0011124EB52FE4F8082DA +:100A70009182A282B3828F5F8093D40104C0C501AA +:100A8000B4010E94530A0F3F110508F02ECF94C005 +:100A90008091D00181111FC0043130E5130709F0A6 +:100AA00051C00E948E0381E08093D0010E94DE221B +:100AB0009093CF018093CE011092C7011092C9018B +:100AC0001092C8011092CB011092CA011092CD0170 +:100AD0001092CC0171C08091CE019091CF010E9403 +:100AE000EA22883C910570F48091C701E82FF0E07C +:100AF000EE0FFF1FE853FE4F118300838F5F80933B +:100B0000C7015AC0043880E5180721F005381045A0 +:100B100001F13AC0F7018281882341F01092C501AA +:100B200082E01EC0043830E5130759F58091C501F5 +:100B3000811106C086E20E94371886E20E94FF18E3 +:100B400082E01CC00438F0E51F0741F3053810456A +:100B5000D9F4F7018281882331F01092C60180E236 +:100B60000E944E1929C08091C601811106C087E2FA +:100B70000E94371887E20E94FF1880E20E945519F0 +:100B80001BC00538104529F381E08093C50180938F +:100B9000C601C701A3960FB6F894DEBF0FBECDBF46 +:100BA000DF91CF911F910F91FF90EF90BF90AF9089 +:100BB0009F908F900C94E30280E0A3960FB6F89478 +:100BC000DEBF0FBECDBFDF91CF911F910F91FF9080 +:100BD000EF90BF90AF909F908F90089580E090E04D +:100BE000089508959CE0799FF001112490E3899F76 +:100BF000E00DF11D1124E60FF11DEE0FFF1FEA526B +:100C0000FE4F859194910895880F991FFC01E45B34 +:100C1000FF4F859194910895880F991FFC01E4532B +:100C2000FE4F8591949108950F931F93CF93DF9377 +:100C3000EC01811521E39207A0F5C11580E3D807E7 +:100C400008F0D7C0C83ED105D8F4C03ED10508F0A1 +:100C500007C2C83AD10578F4C53AD10508F06AC090 +:100C6000C130D10509F463C008F4F7C1C430D1051F +:100C700008F0F6C1F2C1CB3BD10508F466C0EDC166 +:100C8000C11590E2D90708F0AFC0C11521E0D20725 +:100C900008F0E6C1C03FD10508F4DFC18E01106540 +:100CA0001FC2C03880E5D80700F5C03790E5D907E6 +:100CB00008F0A3C0C11520E5D20709F4ACC050F478 +:100CC000CE01905480319F4008F0C7C1DF708E0183 +:100CD000106A06C2C13080E5D80709F4AEC0C4313D +:100CE00090E5D90708F4AFC0B8C1C33820E5D207F2 +:100CF00009F48EC050F4C13890E5D90709F482C0D8 +:100D000008F083C000E011EDEBC1C03181E5D807E8 +:100D100008F4A3C1C11597E5D90708F436C1CE017F +:100D200090578115904108F098C1DF7093C101E0A0 +:100D300010E0D6C1C53AD10509F494C1C63AD1052F +:100D400009F093C102E810E4CBC1C83AD10509F417 +:100D50008FC1C93AD10509F48EC1CA3AD10509F447 +:100D60008DC1CB3AD10509F48CC1CC3AD10509F437 +:100D70008BC1CD3AD10509F48AC1C03BD10509F434 +:100D800089C1CE3AD10509F488C1CF3AD10509F419 +:100D900087C1C13BD10509F486C1C23BD10509F425 +:100DA00085C1C33BD10509F484C1C43BD10509F415 +:100DB00083C1C53BD10509F482C1C63BD10509F405 +:100DC00081C1C73BD10509F480C1C83BD10509F4F5 +:100DD0007FC1C93BD10509F47EC1CA3BD10509F4E5 +:100DE0007DC100E014E47CC1CE019F700E940C061E +:100DF00078C1DD278E01106C73C1CF70DD278E01A5 +:100E0000146D6EC100E010ED6BC100E012ED68C121 +:100E100000E013ED65C10E94E21B0E94200A0E94BF +:100E2000E4038FEF94E32CE0815090402040E1F701 +:100E300000C000000E94392353C18091F2028160FA +:100E40008093F2024DC10E949A23811102C00E9438 +:100E500076230E94AD2390E090931D0380931C03A2 +:100E6000C23080E5D80721F480911C03816086C0E0 +:100E7000C43090E5D90721F480911C0382607EC0C4 +:100E8000C63020E5D20721F480911C03846076C02F +:100E9000C83080E5D80719F480911C0327C0CA30F8 +:100EA00090E5D90721F480911C03806167C0CC30A4 +:100EB00020E5D20721F480911C0380625FC0CE3010 +:100EC00080E5D80721F480911C03806457C0C031AD +:100ED00090E5D90721F480911C0380684FC0C2318E +:100EE00020E5D20729F480911C038460886046C005 +:100EF000C33080E5D80721F480911C038E7F3EC06B +:100F0000C53090E5D90721F480911C038D7F36C050 +:100F1000C73020E5D20721F480911C038B7F2EC0BF +:100F2000C93080E5D80719F480911C0326C0CB3066 +:100F300090E5D90721F480911C038F7E1FC0CD302E +:100F400020E5D20721F480911C038F7D17C0CF309C +:100F500080E5D80721F480911C038F7B0FC0C1313D +:100F600090E5D90721F480911C038F7707C0C33126 +:100F7000D04531F480911C038B7F877F80931C03C5 +:100F800080911C030E94B123ABC08D2F99278F70D5 +:100F9000992781309105D9F49E012370332702C02F +:100FA000880F991F2A95E2F79C688E0144E0000F94 +:100FB000111F4A95E1F700271370802B912B53E006 +:100FC000CC0FDD1F5A95E1F7C076DD272FC08230A8 +:100FD000910531F4DC2FCC278E01016F106A80C09F +:100FE0008330910569F4CE018370992701E010E008 +:100FF00002C0000F111F8A95E2F7C8019C680FC05C +:1010000084309105B9F4CE018370992701E010E096 +:1010100002C0000F111F8A95E2F7C8019A6823E009 +:10102000CC0FDD1F2A95E1F7C07ED7708C010C2B09 +:101030001D2B56C08530910531F4DC2FCC278E0155 +:10104000046F106A4DC0069709F04AC0CF71DD27C2 +:10105000DC2FCC278E01106243C000E010E040C0BE +:101060008E013EC001E810E43BC003E810E438C044 +:1010700002EE14E435C009EE14E432C00AEE14E4C2 +:101080002FC005EB14E42CC006EB14E429C007EBD9 +:1010900014E426C00CEC14E423C00DEC14E420C0CE +:1010A00003E815E41DC00AE815E41AC002E915E4D6 +:1010B00017C004E915E414C001E216E411C003E20C +:1010C00016E40EC004E216E40BC005E216E408C004 +:1010D00006E216E405C007E216E402C00AE216E4DE +:1010E000C801DF91CF911F910F9108959CE0799FE6 +:1010F000F001112490E3899FE00DF11D1124E60F0A +:10110000F11DEE0FFF1FEA52FE4F85919491803E34 +:101110009105E0F4803C910558F58133910509F47F +:101120006FC048F48932910509F463C08A32910591 +:1011300009F46DC072C089339105E9F082389105D8 +:10114000D1F08533910509F44DC067C0833E910508 +:1011500081F138F4803E9105B9F0823E9105D9F0D5 +:101160005CC0863E910561F1873E9105A1F155C0B5 +:101170000E940406089520911C0320FD02C021FF57 +:101180004CC080EE90E049C080911C0380FFF9CFF5 +:1011900089E390E042C080911C0382FF0EC08091E1 +:1011A0001C0384FF03C080E090E037C083EE90E032 +:1011B00034C080911C0382FFF2CF82EE90E02DC0FC +:1011C00080911C0383FF0BC080911C0384FDEBCF37 +:1011D00087EE90E022C080911C0383FFF5CF86EE5E +:1011E00090E01BC080911C0385FF07C089E290E05E +:1011F00014C080911C0385FFF9CF85E390E00DC0FA +:1012000080911C0386FF07C08AE290E006C08091AF +:101210001C0386FFF9CF81E390E00E941406089535 +:101220000C94E502E82FF0E0E25BFE4F8081E82FAE +:10123000EF70F0E082958F7021E030E0A90102C0EC +:10124000440F551F8A95E2F740A308950F931F930B +:10125000CF93DF9385B7806885BF85B7806885BFEA +:10126000C3E0D0E001E010E0FE01E25BFE4F8081D0 +:10127000E82FEF70F0E021A182958F70A80102C0E5 +:10128000440F551F8A95E2F7CA01822B81A38C2F48 +:101290000E941209219740F78BE090E061E070E036 +:1012A000FC01EE5BFE4F2081E22FEF70F0E042A1E7 +:1012B00022952F70DB0102C0AA0FBB1F2A95E2F70F +:1012C0009D01242B22A3019758F7DF91CF911F9105 +:1012D0000F910C948F03EF92FF920F931F93CF9374 +:1012E000DF9300E212E0C3E0EE24E394F12CD5E0BA +:1012F0008C2F0E9412098BE090E040E050E0FC014E +:10130000EE5BFE4F6081E62FEF70F0E020A130E051 +:1013100062956F7002C0359527956A95E2F720FDBA +:1013200009C09701082E02C0220F331F0A94E2F76A +:10133000422B532B019718F7F801929182918F015C +:101340008417950721F051834083D09305018C2F9A +:101350000E941209C15060F68091050187FD2CC0E2 +:101360008150809305018F3F39F08FE99FE001970D +:10137000F1F700C0000020C080911E0290911F0272 +:10138000909327028093260280911C0290911D0267 +:10139000909325028093240280911A0290911B025F +:1013A0009093230280932202809118029091190257 +:1013B00090932102809320020E94910381E0DF91AB +:1013C000CF911F910F91FF90EF900895E82FF0E0DB +:1013D000EE0FFF1FE05EFD4F80819181089508951B +:1013E0000F931F93CF9308E212E0C0E0F8019291AF +:1013F00082918F010E945622C80FF2E000321F072F +:10140000A9F78C2FCF911F910F9108950E949A23D5 +:10141000811102C00E9476230E94BF23809307039C +:101420003E9A809171008D7F8093710082E080935D +:1014300090008AE18093910081E080932A020895D0 +:1014400080912A02811102C00E94060A10927A023B +:1014500010927902809171008D7F8093710080914C +:1014600090008F738093900010923C0210923B0288 +:10147000109273021092740210927502109276020A +:101480001092720210927102E1E5F2E0A1E4B2E082 +:1014900011921192119211921D921D9282E0E137E8 +:1014A000F807B1F70895CF92DF92EF92FF920F9372 +:1014B0001F93CF93DF9320913B02222309F484C032 +:1014C0006B017C0180912A02811102C00E94060AF0 +:1014D00001E712E0C7E0D0E0A7019601F801929180 +:1014E0008291729162918F010E940A29811131C00B +:1014F000FE01EE0FFF1FEE0FFF1FEF5AFD4F108290 +:10150000118212821382DE01AA0FBB1FAF5BBD4F97 +:1015100011961C921E92C730D105E9F021964481A4 +:1015200055816681778140835183628373831482FE +:1015300015821682178212968D919C91139711969F +:101540009C938E9313961C921E9212973496129629 +:10155000E2CF219708F68091790290917A02019763 +:1015600097FD05C090937A028093790204C010928F +:101570007A02109279028091790290917A022091F8 +:101580007702309178022817390724F010927802F8 +:1015900010927702892BC1F4809171008D7F809326 +:1015A0007100809190008F7380939000109273026D +:1015B00010927402109275021092760210927202CA +:1015C0001092710210923B02DF91CF911F910F9107 +:1015D000FF90EF90DF90CF9008951F920F920FB67B +:1015E0000F9211244F925F926F927F928F929F92EF +:1015F000AF92BF92CF92DF92EF92FF922F933F93E1 +:101600004F935F936F937F938F939F93AF93BF930A +:10161000CF93DF93EF93FF9380913B02882309F4EC +:101620009BC1C0917902D0917A021C161D060CF064 +:1016300093C140902B0250902C0260902D0270902C +:101640002E0220E030E0A901C301B2010E94B52AB8 +:1016500018160CF065C0C130D10509F452C0809154 +:10166000770290917802BE010E94872C7C019093B2 +:1016700078028093770280903D0290903E02A09085 +:101680003F02B090400220E030E040E85FE3C50157 +:10169000B4010E94A62860933D0270933E0280939D +:1016A0003F0290934002F701EE0FFF1FEE0FFF1F66 +:1016B000EF5AFD4FA3019201608171818281938174 +:1016C0000E940E2920E030E040E05EE30E94B92A4B +:1016D0009B01AC01C501B4010E94B52A18168CF417 +:1016E000C7010196BE010E94872C909378028093D7 +:1016F000770210923D0210923E0210923F02109229 +:101700004002E0917702F0917802EE0FFF1FEE0F9A +:10171000FF1FEF5AFD4F6081718182819381D0C09C +:10172000C0907302D0907402E0907502F09076023F +:1017300020E030E0A901C701B6010E940A292197E3 +:10174000882309F4A2C0FE01EE0FFF1FEE0FFF1F5A +:10175000EF5AFD4F80809180A280B380A501940153 +:10176000C701B6010E940A2987FF31C0A501940173 +:1017700060E070E08CED93EC0E940E2920E030E0F8 +:1017800040E451E40E940E2920E030E040E05FE3B5 +:101790000E94B92A9B01AC0160E070E080E090E417 +:1017A0000E941C2B9B01AC01C501B4010E94B92A07 +:1017B0009B01AC01C701B6010E940A2987FF07C03F +:1017C000A701960160E070E08CED93E439C0A501BB +:1017D0009401C701B6010E94B52A18160CF055C035 +:1017E000A501940160E070E08CED93E40E940E2965 +:1017F00020E030E040E451E40E940E2920E030E097 +:1018000040E05FE30E94B92A9B01AC0160E070E018 +:1018100080E090E40E941C2B9B01AC01C501B40147 +:101820000E94B92A9B01AC01C701B6010E94B52AEA +:1018300018165CF5A701960160E070E08CED93EC62 +:101840000E940E2920E030E040E451E40E940E297D +:1018500020E030E040E05FE30E94B92A9B01AC0148 +:1018600060E070E080E090E40E941C2B9B01AC01E2 +:10187000C701B6010E94B92A609373027093740283 +:10188000809375029093760213C0FE01EE0FFF1F46 +:10189000EE0FFF1FEF5AFD4F80819181A281B3812E +:1018A0008093730290937402A0937502B0937602B2 +:1018B000609173027091740280917502909176022A +:1018C00020912802309129022F3F4FEF340731F049 +:1018D0002F5F3F4F30932902209328020E94950EDC +:1018E0006B017C0120E034E244EF51E40E940A29BC +:1018F00087FF08C086EFC82E88E2D82E84EFE82E36 +:1019000081E4F82E20E030E040E051E4C701B60168 +:101910000E94B92A9B01AC0160E074E284E79BE479 +:101920000E940E296B017C010E947B297093970015 +:1019300060939600209106013091070140910801C3 +:1019400050910901C701B6010E94B92A0E947B2962 +:10195000709399006093980080913C02882309F469 +:1019600033C1C0903702D0903802E0903902F09035 +:101970003A0220E030E0A901C701B6010E94B52A71 +:101980001816D4F580912802909129028F3F2FEFED +:10199000920729F001969093290280932802C701AB +:1019A000B6010E94950E20E030E040E051E40E9434 +:1019B000B92A9B01AC0160E074E284E79BE40E94D9 +:1019C0000E296B017C010E947B2970939700609324 +:1019D0009600209106013091070140910801509135 +:1019E0000901C701B6010E94B92A0E947B297093A0 +:1019F00099006093980008C010929700109296008A +:101A00001092990010929800609131027091320208 +:101A10006F5F7F4F70933202609331022091960086 +:101A20003091970080E090E0232BF1F0C091960078 +:101A3000D09197000E94A7296B017C01BE0180E034 +:101A400090E00E94A7299B01AC0160913302709144 +:101A5000340280913502909136020E940E2920E0D6 +:101A60003FEF4FE757E410C00E94A7296B017C01AC +:101A700020E030EE4FEF54E4609133027091340275 +:101A800080913502909136020E94B92A9B01AC01E7 +:101A9000C701B6010E94B52A87FD96C080912F022A +:101AA0008F5F80932F0290E0209103033091040315 +:101AB00082179307A0F080910E03882319F01092EB +:101AC0002F020DC0809171008D7F809371008091F5 +:101AD00090008F738093900010923C027DC08091A3 +:101AE0003002C0912F02811128C0C0900803D0900D +:101AF0000903E0900A03F0900B0320E030E0A90115 +:101B0000C701B6010E94B52A1816BCF481E0809383 +:101B1000300210923702109238021092390210925D +:101B20003A02C0923302D0923402E0923502F0922F +:101B30003602C150C0932F0243C01092300210925F +:101B4000290210922802E0910503F091060348E073 +:101B5000C49FE00DF11D112480819181A281B38188 +:101B60008093370290933802A0933902B0933A02DF +:101B700020E030E040E85EE36481758186819781F2 +:101B80000E94B92A6B017C0180910A01682F70E0E4 +:101B900080E090E00E94A72920E030E048EC52E489 +:101BA0000E940E299B01AC01C701B6010E94B92A0F +:101BB000609333027093340280933502909336021F +:101BC00010923202109231028091070380FD04C00E +:101BD00010923C0210923B02FF91EF91DF91CF9166 +:101BE000BF91AF919F918F917F916F915F914F9135 +:101BF0003F912F91FF90EF90DF90CF90BF90AF90EB +:101C00009F908F907F906F905F904F900F900FBE3E +:101C10000F901F901895CF92DF92EF92FF92CF9383 +:101C2000DF936B017C01EA0180912A02811102C0DD +:101C30000E94060A8091070380FF46C080917902C6 +:101C400090917A0208970CF03FC0809171008D7FCF +:101C50008093710080913C0281110E94200A81E0F2 +:101C600080933B02109229021092280220E030E07B +:101C7000A901C701B6010E94B52A1816DCF48091AB +:101C8000790290917A02FC01EE0FFF1FEE0FFF1F09 +:101C9000EF5AFD4FC082D182E282F382FC01EE0F47 +:101CA000FF1FEF5BFD4FD183C083019690937A02B3 +:101CB000809379028091710082608093710080919D +:101CC0009000806880939000DF91CF91FF90EF901B +:101CD000DF90CF90089580910703817008958091DF +:101CE00007038160809307030E94C3230C94EB03D6 +:101CF000809107038E7F809307030C94C323809108 +:101D00007B0290E0019666E070E00E94872C809351 +:101D10007B02089580917B0290E0019766E070E07D +:101D20000E94872C80937B0208958F929F92AF929E +:101D3000BF92CF92DF92EF92FF920F931F93CF93B8 +:101D4000DF936B017C01C0912802D0912902BE0172 +:101D500080E090E00E94A7294B015C01A701960159 +:101D600060E070E08CE594E40E940E299B01AC01D8 +:101D7000C501B4010E94B92A0E947B2920917B02EF +:101D8000233009F473C028F4222351F02130E9F004 +:101D90002CC1243009F4A0C0253009F4E0C025C1CD +:101DA00080E090E0A0E0BFE38093060190930701FC +:101DB000A0930801B093090110922B0210922C02FB +:101DC00010922D0210922E0210C110922B0210922E +:101DD0002C0210922D0210922E026431710540F4F3 +:101DE0006A30710560F520E030E040E85EE32BC02A +:101DF000693C710508F0AAC080E090E00E94A72924 +:101E000020E030E040EA51E40E94A52820E030E0E4 +:101E100044E353E40E940E299B01AC010E94B92ABD +:101E200020E030E040E05EE30E94B92A9B01AC0173 +:101E300060E070E080E09EE30E94A52844C020E0BE +:101E400030E040E05FE3C701B6010E94B92A6B01B0 +:101E50007C0180E090E0A0E0BEE3809306019093D7 +:101E60000701A0930801B0930901BFC010922B0293 +:101E700010922C0210922D0210922E024AE0469FE0 +:101E80009001479F300D1124C90168EB7BE00E944F +:101E9000732CBC016C5D754077FF03C07195619533 +:101EA0007109882777FD8095982F0E94A9292EE334 +:101EB00033EC4EE259E30E94B92A20E030E040ECD6 +:101EC0005EE30E94A6286093060170930701809349 +:101ED00008019093090189C010922B0210922C02E4 +:101EE00010922D0210922E02CE0183709927892B19 +:101EF000E1F0BE016170772780E090E00E94A729A1 +:101F000020E030E040E05EE30E94B92A20E030E0CB +:101F100040E45FE30E94A6286093060170930701E6 +:101F200080930801909309010CC080E090E0A0E04C +:101F3000BFE38093060190930701A0930801B0933B +:101F40000901C770DD27CD2B09F04FC010920601A3 +:101F500010920701109208011092090146C01092D8 +:101F60002B0210922C0210922D0210922E0200E0F1 +:101F700010E020E03FE30093060110930701209357 +:101F80000801309309016739710578F180E090E02C +:101F90000E94A72920E030E047E153E40E94A528F1 +:101FA00020E030E04AE754E40E940E2920E030E0CF +:101FB00048E452E40E94B92A20E030E040EA51E4CB +:101FC0000E94EB290E947629660F771F660F771F04 +:101FD000FB01EE5AFE4F2081318142815381C701BE +:101FE000B6010E94B92A6B017C01C701B601DF91DD +:101FF000CF911F910F91FF90EF90DF90CF90BF9006 +:10200000AF909F908F90089580918C020895CF9308 +:10201000DF9300D01F92CDB7DEB79C0180911303F0 +:10202000843019F593E099833B832A839093E900E8 +:102030008FEF9091E800815095FD06C095ED9A953F +:10204000F1F700008111F5CF8091E80085FF0DC008 +:1020500040E050E063E070E0CE0101960E9468121B +:102060008091E8008E778093E8000F900F900F909A +:10207000DF91CF910895CF93DF9300D01F92CDB71A +:10208000DEB720911303243021F522E029839B83BE +:102090008A8383E08093E9008FEF9091E80081507C +:1020A00095FD06C095ED9A95F1F700008111F5CFE9 +:1020B0008091E80085FF0DC040E050E063E070E0F3 +:1020C000CE0101960E9468128091E8008E7780937D +:1020D000E8000F900F900F90DF91CF91089520911D +:1020E00013032430F1F422E02093E9002FEF309124 +:1020F000E800215035FD06C035ED3A95F1F70000B6 +:102100002111F5CF2091E80025FF0BC040E050E001 +:1021100065E070E00E9468128091E8008E778093FD +:10212000E8000895CF93DF93EC019091130394306E +:1021300009F046C0809115018823D9F080911601DD +:102140008823B9F09093E9008FEF9091E8008150D7 +:1021500095FD06C095E19A95F1F700008111F5CF44 +:102160008091E80085FF2CC040E050E060E170E025 +:1021700017C081E08093E9008FEF9091E8008150D3 +:1021800095FD06C095ED9A95F1F700008111F5CF08 +:102190008091E80085FF14C040E050E068E070E006 +:1021A000CE010E9468128091E8008E778093E8004B +:1021B00080E1FE01ACE7B2E001900D928A95E1F773 +:1021C000DF91CF91089580911203811109C00E947F +:1021D000FD130E945A148091E20084608093E20013 +:1021E0000895109212030895089508950C94A12261 +:1021F00042E061EC81E00E94771342E061EC82E012 +:102200000E94771342E061EC83E00E94771342E181 +:1022100061EC84E00C94771380911503833009F40A +:1022200055C030F4813071F0823009F48EC00895C9 +:102230008A3009F47AC08B3009F460C0893009F023 +:102240009CC020C080911403813A09F096C080910F +:10225000E800877F8093E80080911803909119032C +:10226000892B21F460E18CE792E003C060E080E01C +:1022700090E070E00E94B3128091E8008B77809329 +:10228000E800089580911403813209F076C08091AE +:10229000180390911903009719F0039709F06DC086 +:1022A0008091E800877F8093E8008091E80082FDBC +:1022B00005C0809113038111F8CF5FC08091F100B8 +:1022C00080938C028091E8008B7753C08091140337 +:1022D000813A09F052C08091180390911903892B1B +:1022E00009F04BC08091E800877F8093E8008091DF +:1022F000E80080FFFCCF8091150136C08091140367 +:102300008132D9F58091180390911903892BA9F591 +:102310008091E800877F8093E8000E94AC13809151 +:102320001603809315010C94E21B809114038132F3 +:1023300021F58091E800877F8093E8000E94AC132C +:102340008091170380938D02089580911403813A40 +:10235000A1F48091E800877F8093E8008091E800F5 +:1023600080FFFCCF80918D028093F1008091E80086 +:102370008E778093E8000C94AC13089584B7877F20 +:1023800084BF88E10FB6F8948093600010926000DB +:102390000FBE90E080E80FB6F894809361009093B0 +:1023A00061000FBE0E944F170E94FD130E945A1435 +:1023B0008091E20084608093E20078940E94E016AD +:1023C0000E9451178BE091E00E94FB16809113034D +:1023D000853069F40E946222809111038823B1F351 +:1023E0000E949022882391F30E945212EFCF0E9404 +:1023F0005917ECCF292F332723303105C9F064F466 +:102400002130310581F02230310509F043C08DE6DD +:1024100090E022EB33E042C021323105F1F022326C +:10242000310541F137C082E190E02FE134E036C060 +:1024300099278130910541F08230910541F0892B37 +:1024400049F5EEEAF3E005C0E0E8F3E002C0E6E5B6 +:10245000F3E0849190E09F0121C06430D8F4E62F2E +:10246000F0E0EE0FFF1FE255FE4F2081318189E041 +:1024700090E014C0643070F470E0FB01EE0FFF1FB9 +:10248000EA55FE4F20813181FB01EE55FE4F8081E0 +:1024900090E004C080E090E020E030E0FA01318379 +:1024A0002083089580E189BD82E189BD09B400FEE1 +:1024B000FDCF8091D8008F7D8093D8008091E0007F +:1024C00082608093E0008091E00081FDFCCF089560 +:1024D000CF92DF92EF92FF920F931F93CF93DF93F0 +:1024E000EC018B016A010E94CB13811133C0C1142E +:1024F000D10439F0F60180819181081B190BC80FB6 +:10250000D91FE12CF12C0115110519F18091E8007A +:1025100085FD16C08091E8008E778093E800C11495 +:10252000D10449F0F60180819181E80EF91EF18213 +:10253000E08285E00FC00E94CB13882321F30AC0FC +:1025400089918093F10001501109FFEFEF1AFF0A02 +:10255000DACF80E0DF91CF911F910F91FF90EF9044 +:10256000DF90CF90089520911A0330911B03261716 +:10257000370748F06115710539F42091E8002E778E +:102580002093E80001C0B90140E061157105A9F18F +:1025900020911303222309F443C0253009F442C0DB +:1025A0002091E80023FD40C02091E80022FD32C0C8 +:1025B0002091E80020FFE9CF4091F3002091F20044 +:1025C00030E0342BFC01CF016115710559F0283042 +:1025D000310540F481918093F100615071092F5FC2 +:1025E0003F4FF1CF41E02830310509F040E0209124 +:1025F000E8002E772093E800C8CF4111C9CF0AC068 +:1026000080911303882361F0853061F08091E800A8 +:1026100083FD0AC08091E80082FFF2CF80E0089538 +:1026200082E0089583E0089581E0089520911A03DF +:1026300030911B032617370748F06115710539F4EF +:102640002091E8002E772093E80001C0B901FC0139 +:1026500020E06115710591F180911303882309F43D +:1026600040C0853009F43FC08091E80083FD3DC043 +:102670008091E80082FD2FC08091E80080FFE9CFC3 +:102680002091F3008091F20090E0922B611571058A +:1026900059F08830910540F424912093F10031964F +:1026A000615071090196F2CF21E0089709F020E00E +:1026B0008091E8008E778093E800CBCF2111CCCFBA +:1026C0000AC080911303882361F0853061F0809106 +:1026D000E80083FD0AC08091E80082FFF2CF80E02D +:1026E000089582E0089583E0089581E00895982F89 +:1026F000973058F59093E900981739F07091EC00F5 +:102700002091ED005091F00003C0242F762F50E06F +:1027100021FF19C03091EB003E7F3093EB003091E8 +:10272000ED003D7F3093ED003091EB003160309350 +:10273000EB007093EC002093ED005093F00020919B +:10274000EE0027FF07C09F5FD3CF8F708093E90013 +:1027500081E0089580E008958091140387FF11C0FF +:102760008091E80082FD05C0809113038111F8CFAC +:1027700011C08091E8008B770BC0809113038823F0 +:1027800049F08091E80080FFF8CF8091E8008E77D3 +:102790008093E80008952091E4003091E50095E6EB +:1027A0004091EC00842F817040FF22C08091E800AE +:1027B00080FD1CC080911303882391F0853091F037 +:1027C0008091EB0085FD10C04091E4005091E50040 +:1027D0004217530729F39A01915011F784E00895A5 +:1027E00082E0089583E0089581E0089580E00895EF +:1027F0004091E80042FFDECF08950E946B140E94D2 +:102800007314E0EEF0E0808181608083E8EDF0E019 +:1028100080818F77808319BCA7EDB0E08C918E7F8B +:102820008C9380818F7E80831092120308950F9382 +:102830001F93CF93DF930E946B140E947314C8ED13 +:10284000D0E088818F7788838881806888838881B9 +:102850008F7D888319BC1092130310920F0310927E +:1028600011031092100300EE10E0F80180818B7FBD +:10287000808388818160888342E060E080E00E94FC +:102880007713E1EEF0E080818E7F8083E2EEF0E06E +:10289000808181608083808188608083F80180816D +:1028A0008E7F8083888180618883DF91CF911F91A3 +:1028B0000F910895E8EDF0E080818F7E8083E7ED51 +:1028C000F0E080818160808384E082BF81E080933A +:1028D00012030C941714E8EDF0E080818E7F808362 +:1028E0001092E20008951092DA001092E10008952B +:1028F0001F920F920FB60F9211242F933F934F9375 +:102900005F936F937F938F939F93AF93BF93EF9357 +:10291000FF938091E10082FF0BC08091E20082FF73 +:1029200007C08091E1008B7F8093E1000E94DF1659 +:102930008091DA0080FF1FC08091D80080FF1BC00B +:102940008091DA008E7F8093DA008091D90080FF39 +:102950000DC080E189BD82E189BD09B400FEFDCFD3 +:1029600081E0809313030E94E31005C019BC10920C +:1029700013030E94F1108091E10080FF19C0809143 +:10298000E20080FF15C08091E2008E7F8093E2001C +:102990008091E20080618093E2008091D8008062A3 +:1029A0008093D80019BC85E0809313030E94F51032 +:1029B0008091E10084FF30C08091E20084FF2CC050 +:1029C00080E189BD82E189BD09B400FEFDCF80911F +:1029D000D8008F7D8093D8008091E1008F7E809316 +:1029E000E1008091E2008F7E8093E2008091E2001E +:1029F00081608093E20080910F03882311F084E0CE +:102A000007C08091E30087FD02C081E001C083E040 +:102A1000809313030E94F6108091E10083FF29C088 +:102A20008091E20083FF25C08091E100877F809341 +:102A3000E10082E08093130310920F038091E10084 +:102A40008E7F8093E1008091E2008E7F8093E20090 +:102A50008091E20080618093E20042E060E080E0EB +:102A60000E9477138091F00088608093F0000E94AC +:102A7000F410FF91EF91BF91AF919F918F917F9152 +:102A80006F915F914F913F912F910F900FBE0F90DB +:102A90001F9018951F920F920FB60F9211242F932B +:102AA0003F934F935F936F937F938F939F93AF93D6 +:102AB000BF93CF93DF93EF93FF93C091E900CF7063 +:102AC0008091EC00D82FD17080FDD0E81092E90001 +:102AD0008091F000877F8093F00078940E948E159B +:102AE0001092E9008091F00088608093F000CD2B77 +:102AF000CF70C093E900FF91EF91DF91CF91BF912B +:102B0000AF919F918F917F916F915F914F913F9185 +:102B10002F910F900FBE0F901F9018951F93CF937A +:102B2000DF93CDB7DEB7AA970FB6F894DEBF0FBE1E +:102B3000CDBFE4E1F3E088E08E0F9091F100919336 +:102B40008E13FBCF0E940C118091E80083FF1FC100 +:102B50008091140390911503492F50E04A3051059C +:102B600008F015C1FA01EA5AFF4F0C949B2C8038EB +:102B700081F0823809F00BC1809118038F70809327 +:102B8000E9008091EB0085FB882780F91092E9002D +:102B900006C0809110039091110391118260909171 +:102BA000E800977F9093E8008093F1001092F10085 +:102BB000C8C0282F2D7F09F0EAC0882319F0823081 +:102BC00061F0E5C080911603813009F0E0C09330D8 +:102BD00009F080E0809311032BC0809116038111CE +:102BE00027C0809118038F7009F4D1C08093E90049 +:102BF0002091EB0020FF1CC0933021F48091EB006A +:102C0000806214C09091EB0090619093EB0021E002 +:102C100030E0A90102C0440F551F8A95E2F74093A6 +:102C2000EA001092EA008091EB0088608093EB004C +:102C30001092E9008091E800877F86C08111A7C0CB +:102C4000109116031F778091E3008078812B809389 +:102C5000E3008091E800877F8093E8000E94AC1336 +:102C60008091E80080FFFCCF8091E3008068809332 +:102C7000E300111102C082E001C083E080931303DE +:102C800086C08058823008F082C0809116039091EF +:102C900017038C3D53E0950779F583E08A838AE238 +:102CA00089834FB7F894DE01139620E03EE051E2AD +:102CB000E32FF0E050935700E49120FF03C0E2952A +:102CC000EF703F5FEF708E2F90E0EA3010F0C79604 +:102CD00001C0C0968D939D932F5F243149F74FBF5C +:102CE0008091E800877F8093E8006AE270E0CE017F +:102CF00001960E94B31214C0AE014F5F5F4F609106 +:102D000018030E94FA11BC01009709F440C0909189 +:102D1000E800977F9093E80089819A810E941613BA +:102D20008091E8008B778093E80031C0803879F596 +:102D30008091E800877F8093E80080910F03809363 +:102D4000F1008091E8008E778093E8000E94AC1338 +:102D50001EC081111CC0909116039230C0F4809166 +:102D6000E800877F8093E80090930F030E94AC13E4 +:102D700080910F03811106C08091E30087FD02C09E +:102D800081E001C084E0809313030E94F8108091D9 +:102D9000E80083FF0AC08091E800877F8093E80005 +:102DA0008091EB0080628093EB00AA960FB6F894B6 +:102DB000DEBF0FBECDBFDF91CF911F910895089563 +:102DC000CF93809113038823A1F0C091E900CF70C5 +:102DD0009091EC00892F817090FD80E8C82B1092B3 +:102DE000E9008091E80083FD0E948E15CF70C093AA +:102DF000E900CF91089590939302809392020895F1 +:102E0000E0919202F0919302309721F00190F081CD +:102E1000E02D099480E00895E0919202F0919302F0 +:102E2000309721F00280F381E02D09940895E0911C +:102E30009202F0919302309721F00480F581E02D09 +:102E4000099408952091900230919102821793077E +:102E500071F09093910280939002E0919202F09130 +:102E60009302309721F00680F781E02D09940895B0 +:102E700020918E0230918F028217930771F0909308 +:102E80008F0280938E02E0919202F091930230972C +:102E900021F00084F185E02D0994089508950C94A3 +:102EA0004E170E94D5220E9426090E945B230C9493 +:102EB0000A285F926F927F928F929F92AF92BF92F9 +:102EC000CF92DF92EF92FF920F931F93CF93DF93F6 +:102ED00000D000D01F92CDB7DEB70E946B099DE9EC +:102EE000C92E92E0D92E03E010E0AA24A394B12CBD +:102EF000502E802F0E94E6094C01F60172906290DC +:102F00006F016826792661147104A1F4015011093A +:102F100078F78FEF89838A831B820E94DE2281608B +:102F2000782F9D838C8349815A816B818D810E948A +:102F3000091838C08091F20281FD0E94EF092BE050 +:102F400030E07501022E02C0EE0CFF1C0A94E2F77D +:102F5000C70186219721892B09F129835A828E2066 +:102F60009F2091E0892809F490E09B830E94DE2253 +:102F70008160782F9D838C8349815A816B818D81FB +:102F80000E940918000F111FF801EB56FD4F8081B8 +:102F90009181E826F926F182E08204C021503109AE +:102FA00080F6B4CF0E944225109194020E9400172F +:102FB0001817D1F00E940017809394020F900F9081 +:102FC0000F900F900F90DF91CF911F910F91FF9075 +:102FD000EF90DF90CF90BF90AF909F908F907F90B9 +:102FE0006F905F900C9410090F900F900F900F90BE +:102FF0000F90DF91CF911F910F91FF90EF90DF9095 +:10300000CF90BF90AF909F908F907F906F905F9088 +:103010000895CF93DF93CDB7DEB72B970FB6F89413 +:10302000DEBF0FBECDBF4F83588769877A878B87F6 +:10303000DE01119686E0FD0111928A95E9F785E09F +:10304000FE01379601900D928A95E1F749815A81E8 +:103050006B817C818D819E810E94801E2B960FB694 +:10306000F894DEBF0FBECDBFDF91CF910895CF930F +:10307000882309F4C2C0C82F823859F40E9400176F +:1030800081FDBBC089E30E945A210E94272289E367 +:103090000CC0833879F40E94001780FDAEC083E530 +:1030A0000E945A210E94272283E50E949C21CF91F1 +:1030B0000C942722843859F40E94001782FD9DC089 +:1030C00087E40E945A210E94272287E4EECF8CEFEA +:1030D0008C0F813A48F48C2F0E94722781118DC089 +:1030E0008C2F0E945A21E3CF80E28C0F883048F465 +:1030F000C77081E001C0880FCA95EAF70E94E021FD +:10310000D6CF8BE58C0F833078F4C53A29F0C63AD8 +:1031100031F083E890E005C081E890E002C082E8E9 +:1031200090E0CF910C94221788E58C0F833108F042 +:1031300064C0C83A39F1C93A41F1CA3A49F1CB3AC7 +:1031400051F1CC3A59F1CD3A61F1C03B69F1CE3A37 +:1031500071F1CF3A79F1C13B81F1C23B89F1C33BB7 +:1031600091F1C43B99F1C53BA1F1C63BA9F1C73B25 +:10317000B1F1C83BB9F1C93BC1F1CA3BC9F180E02B +:1031800090E038C082EE90E035C089EE90E032C029 +:103190008AEE90E02FC085EB90E02CC086EB90E0AB +:1031A00029C087EB90E026C08CEC90E023C08DEC2A +:1031B00090E020C083E891E01DC08AE891E01AC049 +:1031C00082E991E017C084E991E014C081E292E0C5 +:1031D00011C083E292E00EC084E292E00BC085E26F +:1031E00092E008C086E292E005C087E292E002C069 +:1031F0008AE292E0CF910C943817CF9108958823FA +:1032000009F44BC0823859F40E94001781FF45C071 +:1032100089E30E945A210E94272289E30CC0833847 +:1032200071F40E94001780FF38C083E50E945A2184 +:103230000E94272283E50E949C210C942722843837 +:1032400059F40E94001782FF28C087E40E945A2187 +:103250000E94272287E4EFCF9CEF980F913A58F312 +:1032600090E2980F983050F4877091E001C0990F68 +:103270008A95EAF7892F0E94E621DFCF9BE5980F18 +:10328000933020F480E090E00C942217885A833128 +:1032900020F480E090E00C9438170895882321F002 +:1032A0000E94E0210C9427220895882321F00E9497 +:1032B000E6210C94272208957F928F929F92AF92DD +:1032C000BF92CF92DF92EF92FF920F931F93CF9313 +:1032D000DF931F92CDB7DEB77C01C62E772EFC019F +:1032E000058102950F70128111110E94FD210E942B +:1032F0005321882379F0112369F080E28C0D883006 +:1033000048F082E00E943C210E94532191E0D82E97 +:10331000D92601C0D12CE72DE295EF70F0E0E05AFC +:10332000FF4F0C949B2C872D807F072D0F708823D7 +:1033300011F00295007F112389F0002309F499C14F +:1033400080E28C0D883020F4802F0E94E02103C0A1 +:10335000802F0E94F0210E9427228BC18C2D0E9479 +:10336000FF18002309F4C3C180E28C0D883020F4DB +:10337000802F0E94E62103C0802F0E94F6210E9428 +:103380002722B5C1872D807F972D9F70803211F441 +:10339000892F03C0892F8295807FCC2021F0F1E016 +:1033A000CF16A1F01DC0112339F0002319F101300F +:1033B00009F50E9410229BC1002319F0013009F485 +:1033C00096C189830E941322898110C1112321F0A3 +:1033D000063008F08CC10EC0053008F088C106C167 +:1033E000112359F0002331F0F701958190FF41C17D +:1033F0009F7095830E944E197AC1002309F4F6C08C +:103400003EC1872D86958695837090E0009719F0D0 +:10341000019761F06CC1112321F08C2D972D9370D1 +:1034200002C080E090E00E94221761C1112321F0C8 +:103430008C2D972D937002C080E090E00E94381789 +:1034400056C18C2D112319F00E944A2402C00E94FB +:10345000B2240E9437254BC1872D837009F052C0DA +:10346000111145C18C2D829586958770880F880F24 +:103470009C2D9F70892E912CA12CB12C082E04C05C +:10348000880C991CAA1CBB1C0A94D2F7C4FE14C059 +:103490000FE010E020E030E0B901A80104C0440FC3 +:1034A000551F661F771F8A95D2F7CB01BA01609529 +:1034B00070958095909503C060E070E0CB01272D5A +:1034C00026952695237030E02230310569F02330AF +:1034D000310589F0682979298A299B29213031050C +:1034E00071F00E94C81F03C1682979298A299B2984 +:1034F0000E94E41FFCC00E94C81FC501B4010E94C5 +:10350000AC1FF5C0112319F0872D817001C086957D +:10351000882309F4ECC08C2D829586958770880FDE +:10352000880F9C2D9F70892E912CA12CB12C082ED8 +:1035300004C0880C991CAA1CBB1C0A94D2F7C4FEB8 +:1035400014C00FE010E020E030E0B901A80104C091 +:10355000440F551F661F771F8A95D2F7CB01BA011A +:10356000609570958095909503C060E070E0CB0108 +:10357000272D269526952370422F50E04230510585 +:1035800069F04330510589F0682979298A299B29F6 +:103590004130510571F00E94A220A9C06829792903 +:1035A0008A299B290E94BE20A2C00E94A220C50198 +:1035B000B4010E9486209BC08C2D90E0FC01E05E4F +:1035C000F109E531F10508F050C0E059FF4F0C94C6 +:1035D0009B2C0C2D0F70872D8F71112321F00E94D1 +:1035E0001F20802F07CF0E944020802F0E94551956 +:1035F0007EC0112341F0053008F079C0872D8F710E +:103600000E94652074C0063008F071C0F7CF112306 +:1036100039F0872D8F710E941F2069C01123C9F3D3 +:10362000872D8F710E94402062C0112329F0872DC1 +:103630008F710E940A205BC00E94002058C0112395 +:1036400051F0172D1F71812F0E941F2063E0812FE1 +:103650000E9433214CC081E00E943C21023008F4DA +:1036600046C082E00E943C2142C0112331F0002379 +:1036700081F28C2D0E9437183AC0002389F28C2DDC +:103680000E94FF1834C0472D4F706C2DC7010E9457 +:10369000EE050E94241F2BC0111129C0472D4F7029 +:1036A00050E042305105B9F04CF44115510581F01C +:1036B00041305105E1F40E94322819C043305105D0 +:1036C00069F04430510599F48C2D0E9484280FC074 +:1036D0000E941B280CC00E944E2809C00E9461282D +:1036E00006C0472D4F706C2DC7010E94F105DD20EB +:1036F000F9F00E942F2180FD1BC0F70112820E9469 +:1037000029210E941F20C7010E94A71B0E94292176 +:103710000F90DF91CF911F910F91FF90EF90DF906D +:10372000CF90BF90AF909F908F907F900C9440204F +:103730000F90DF91CF911F910F91FF90EF90DF904D +:10374000CF90BF90AF909F908F907F9008950F93F0 +:103750001F93CF93DF93EC01888199812B813C816A +:10376000232BB9F09F3F11F48F3F99F0CE010E94B7 +:10377000ED03882371F0688179818A810E94252177 +:103780008C010E94DA200E94A11FB801CE010E9484 +:103790005C19DF91CF911F910F9108950E94FD2137 +:1037A0000E940D220E94D2210E9427220E94E82519 +:1037B0000E94372580E090E00E94221780E090E090 +:1037C0000C9438170E94ED210C94CE1B0E941A21F4 +:1037D000292F22952F7030E02C3031054CF42A30FF +:1037E00031056CF42250310922303105A8F407C0AC +:1037F0002C30310569F02F30310551F00DC0803F7C +:1038000069F018F4803E40F409C0843F29F406C0F2 +:1038100093FB882780F9089580E0089581E008955A +:10382000CF93DF9300D000D01F92CDB7DEB70F90BB +:103830000F900F900F900F90DF91CF910895CF933D +:10384000DF9300D000D000D0CDB7DEB726960FB6FC +:10385000F894DEBF0FBECDBFDF91CF9108951F93C7 +:10386000CF93DF93C0919D0216E080919E02C8170E +:1038700099F0D0E01C9FF0011D9FF00D1124E1563E +:10388000FD4F4081518162817381848195810E94C5 +:103890001F1C2196C770E9CFDF91CF911F9108952A +:1038A0004091CF025091D0026091D1027091D2022A +:1038B0008091D3029091D4020C941F1C8091D40269 +:1038C00082958F7009F054C08091D102882309F449 +:1038D0004FC080919D02A0919E026091CF02709195 +:1038E000D0024091D2025091D302B6E08A1709F477 +:1038F0003FC090E041155105C1F17F3F11F46F3F8A +:10390000A1F1B89FF001B99FF00D1124E156FD4FD0 +:10391000218172132AC02081621327C022812111C4 +:1039200024C0238134812417350710F42150310934 +:10393000241B350B283C3105C0F42091D4022F7094 +:1039400020612093D40226E0289FF001299FF00DEA +:103950001124EC55FD4F80818F70806180838FEC46 +:1039600092E00E94A71B0C942F1C01968770BECF7B +:103970000895CF92DF92EF92FF920F931F93CF9310 +:10398000DF93CDB7DEB762970FB6F894DEBF0FBEF8 +:10399000CDBF8C0185E0F801DE011D9601900D92EE +:1039A0008A95E1F7D8014C9111965C911197129686 +:1039B0006C9112971396CD90DC9014973091CF02B2 +:1039C0007091D0028091D2029091D302009709F4B5 +:1039D0006BC17F3F19F43F3F09F466C1E090D1020B +:1039E000EE2009F4C0C02091D402C816D90628F0F0 +:1039F000F601E81BF90BCF0104C0809590958C0D62 +:103A00009D1DFF24F394883C910578F0F12C207FD4 +:103A100009F0C6C07C2DD98AC88A89890E94101CE9 +:103A20008FEC92E00E94A71BB1C0822F807F09F02B +:103A300046C0751314C0341312C0611110C02F702A +:103A400020612093D4020E94501C8FEC92E00E94CF +:103A5000A71B8091D402D80115968C932EC0CD2837 +:103A600019F15F3F11F44F3FF9F0F62E61111CC0C0 +:103A700080919D0220919E0236E0821709F45AC07F +:103A800090E0389FF001399FF00D1124E156FD4F71 +:103A90007181571306C07081471303C07281711181 +:103AA00003C001968770E9CFF62E662309F418C18A +:103AB0008091D40281608093D402F12C11C17513DE +:103AC00008C0341306C0611104C08091D402D8012B +:103AD000C3C04D875E878D859E856A8B0E94E61BDD +:103AE0006A898823E1F16623D1F12091D402822FE3 +:103AF00082958F7090E0029774F08091CF02909140 +:103B0000D00298878F831986DB86CA862C87CE01E0 +:103B100007960E94A71B86E0F801AFECB2E0019087 +:103B20000D928A95E1F70E945E1C0E94501CFF24B2 +:103B3000F394D6C04D875E878D859E850E941A219D +:103B4000292F22952F7030E0223031050CF0BCC0B7 +:103B50009F7009F0B6C0805E883008F4C1C0C8010B +:103B60000E94A71BE4CFC816D90608F453C0F6017B +:103B7000E81BF90BCF01883C910508F450C0F12CEB +:103B80007C2DD98AC88A89890E94101CEFECF2E04A +:103B900086E0DF011D928A95E9F70E94501CA0C0C3 +:103BA000751314C0341312C0611110C08091D40277 +:103BB000F8018583C8010E94A71B86E0EFECF2E0C4 +:103BC000DF011D928A95E9F7FE2C8AC04D875E873A +:103BD0008D859E856A8B0E94E61B6A89882309F47D +:103BE000BECF662309F4BBCF2091D402822F8295E9 +:103BF0008F7090E002970CF48ECF8091CF0290915D +:103C0000D0029A8389831B82DD82CC822E83CE01EF +:103C100001967FCF809590958C0D9D1DACCFF62E93 +:103C2000662309F49CCF75132EC034132CC0209149 +:103C3000D40220FD1FC0822F82958F70D9F0D80149 +:103C400015962C9315978F3049F08F5F982F92958A +:103C5000907F822F8F70892B15968C93C8010E94BC +:103C6000A71B86E0F801AFECB2E001900D928A95B7 +:103C7000E1F793CF86E0F801AFECB2E001900D924E +:103C80008A95E1F72DC04D875E878D859E850E94C0 +:103C9000E61B811140CF8091D40281608093D402D1 +:103CA000C8010E94A71B1CC0662309F458CF4D878A +:103CB0005E878D859E850E94E61B882309F44FCF81 +:103CC0002ACF811148CF0CC0243031050CF047CFEA +:103CD0009F7009F440CFF8019581907F09F03BCFA8 +:103CE0008F2D62960FB6F894DEBF0FBECDBFDF9169 +:103CF000CF911F910F91FF90EF90DF90CF9008959B +:103D00001F93CF93DF93CDB7DEB72C970FB6F89400 +:103D1000DEBF0FBECDBF4F83588769877A878B87F9 +:103D20009C87CE0107960E94B91C882369F08F8179 +:103D300098852A853B85232BF1F19F3F09F063C0CD +:103D40008F3F09F060C037C086E0FE013796DE0184 +:103D5000119601900D928A95E1F76F817885EA8539 +:103D6000FB85309741F17F3F11F46F3F21F12091A6 +:103D70009E0230E0C90101968770992740919D020B +:103D800050E08417950709F447C069837A83FD835F +:103D9000EC8396E0929FD001939FB00D1124A15621 +:103DA000BD4FFE01319601900D929A95E1F78093F7 +:103DB0009E020E942F1C16E080919D0290919E020F +:103DC0008917C1F1189FC001112481569D4F0E948F +:103DD000B91C882379F1E0919D021E9FF001112406 +:103DE000E156FD4F408151816281738184819581CB +:103DF0000E941F1C80919D0290E001968770992778 +:103E000080939D02D9CF4F81588569857A858B85AE +:103E10009C850E941F1CCFCF0E94E21B10929E0225 +:103E200010929D02EFECF2E086E0DF011D928A9590 +:103E3000E9F7C1CF2C960FB6F894DEBF0FBECDBF09 +:103E4000DF91CF911F910895EF92FF920F931F93EF +:103E5000CF93DF938C01009709F46CC0F12CEE2412 +:103E6000E394E8012196F8018491843740F484308A +:103E700008F051C0813081F0823019F15BC0853784 +:103E800009F444C0A8F19CE7980F903708F052C09D +:103E90008F770E94FF1841C00E5F1F4FFE01C49133 +:103EA00080E28C0F883048F4C7708E2D01C0880FD7 +:103EB000CA95EAF70E94002214C08C2F0E9437187E +:103EC0002DC00E5F1F4FFE01C49180E28C0F883021 +:103ED00058F4C7708E2D01C0880FCA95EAF70E946A +:103EE00006220E9427221AC08C2F0E94FF1816C09B +:103EF0000E5F1F4FFE01C491CC2381F08FE99FE03C +:103F00000197F1F700C00000C150F6CF0E5F1F4FC0 +:103F1000FE01F49003C00E9437188E018F2D882374 +:103F200009F49FCFEFE9FFE03197F1F700C00000FF +:103F30008150F5CFDF91CF911F910F91FF90EF90BE +:103F4000089508956093D9027093DA028093DB029A +:103F50009093DC020C94CE1B0F931F930091D90217 +:103F60001091DA022091DB023091DC02DC01CB01FE +:103F7000802B912BA22BB32B8093D9029093DA0242 +:103F8000A093DB02B093DC021F910F910C94CE1B27 +:103F90000F931F930091D9021091DA022091DB0256 +:103FA0003091DC02DC01CB0180239123A223B323D7 +:103FB0008093D9029093DA02A093DB02B093DC02E3 +:103FC0001F910F910C94CE1B0F931F930091D90258 +:103FD0001091DA022091DB023091DC02DC01CB018E +:103FE00080279127A227B3278093D9029093DA02E2 +:103FF000A093DB02B093DC021F910F910C94CE1BB7 +:104000001092D5021092D6021092D7021092D802C6 +:104010000C94CE1B41E050E060E070E004C0440F1F +:10402000551F661F771F8A95D2F74093D50250938C +:10403000D6026093D7027093D8020C94CE1B41E055 +:1040400050E060E070E004C0440F551F661F771F0A +:104050008A95D2F78091D5029091D602A091D7028D +:10406000B091D802482B592B6A2B7B2B4093D50259 +:104070005093D6026093D7027093D8020C94CE1B53 +:1040800041E050E060E070E004C0440F551F661F3F +:10409000771F8A95D2F740955095609570958091DD +:1040A000D5029091D602A091D702B091D8024823B0 +:1040B00059236A237B234093D5025093D602609301 +:1040C000D7027093D8020C94CE1B41E050E060E020 +:1040D00070E004C0440F551F661F771F8A95D2F702 +:1040E0008091D5029091D602A091D702B091D802CA +:1040F000482759276A277B274093D5025093D60239 +:104100006093D7027093D8020C94CE1B0F931F9329 +:104110000091D5021091D6022091D7023091D80299 +:10412000DC01CB01802B912BA22BB32B8093D502EA +:104130009093D602A093D702B093D8021F910F910B +:104140000C94CE1B0F931F930091D5021091D602B1 +:104150002091D7023091D802DC01CB01802391233A +:10416000A223B3238093D5029093D602A093D702C3 +:10417000B093D8021F910F910C94CE1B0F931F93F5 +:104180000091D5021091D6022091D7023091D80229 +:10419000DC01CB0180279127A227B3278093D5028A +:1041A0009093D602A093D702B093D8021F910F919B +:1041B0000C94CE1B0895CF92DF92EF92FF920F9353 +:1041C0001F93CF93DF938C01C090D902D090DA0275 +:1041D000E090DB02F090DC028091D5029091D60253 +:1041E000A091D702B091D802C82AD92AEA2AFB2A7C +:1041F000CFE1D0E0D701C6010C2E04C0B695A7953B +:10420000979587950A94D2F780FF06C0B8018C2F46 +:104210000E947608019721F4219760F780E001C0A1 +:104220008C2FDF91CF911F910F91FF90EF90DF9036 +:10423000CF900895CF93DF93EC010E94DB20BE0165 +:104240000E947608DF91CF910895CB010E941A2138 +:1042500008958091DD0285958595859508958091D5 +:10426000DD028770089598E0899F90011124262B24 +:104270002093DD020C941F202091DD028095822383 +:104280008093DD02982F977069F430E0482F55270E +:1042900047FD50952417350729F085958595859517 +:1042A0000C94402008959091DD02977081E009F40C +:1042B00080E0089590911501992321F090911601C5 +:1042C000911109C02091170130911801F90132961E +:1042D0009FEF40E01FC0982F9695969596959F303A +:1042E00050F5E0911701F0911801E90FF11D877069 +:1042F00021E030E0A90102C0440F551F8A95E2F782 +:10430000CA019181892B818308959F3F39F04F5FC6 +:104310004E3041F051915813F8CF0DC05111F7CFE5 +:10432000942FF5CF9F3F39F0F901E90FF11D97FD6B +:10433000FA9582830895089590911501992321F0AB +:1043400090911601911109C0209117013091180127 +:10435000F9013296205F3F4F1FC0982F9695969592 +:1043600096959F30F0F4E0911701F0911801E90F54 +:10437000F11D877021E030E0A90102C0440F551FF4 +:104380008A95E2F7CA0180959181892381830895F6 +:104390003196E217F30729F090819813F9CF108234 +:1043A000F7CF089581E090E0E0911701F0911801B6 +:1043B000E80FF91F1082019680319105A9F7089541 +:1043C0009091F102892B8093F1020895809590914C +:1043D000F10289238093F10208951092F102089569 +:1043E0009091F002892B8093F0020895809590912E +:1043F000F00289238093F00208951092F00208954C +:104400009091EF02892B8093EF020895809590910F +:10441000EF0289238093EF0208951092EF0208952E +:104420008093DE0208951092DE02089580911701B4 +:1044300090911801FC0131969C01205F3F4F80E074 +:10444000919191118F5FE217F307D1F70895E091F1 +:104450001701F09118018091F1028083E09117011A +:10446000F091180190818091F002892B8083E09176 +:104470001701F091180190818091EF02892B8083C0 +:104480008091DE02882361F0E0911701F09118011C +:104490009081892B80830E94162281111092DE0266 +:1044A00080911701909118010C940C1720E000974F +:1044B00039F0AC0141505109842395232F5FF7CF88 +:1044C000822F089580911303843039F11092F30202 +:1044D00020E488E190E00FB6F894A89580936000FE +:1044E0000FBE2093600080E00E94F10280E00E94F5 +:1044F000100983B7817F846083BF83B7816083BFE6 +:104500007894889583B78E7F83BF88E10FB6F8943F +:1045100080936000109260000FBE08950895089582 +:1045200080E00E94F1020E948E220E946B090E948C +:104530008F220E94F00991E0811101C090E0892F43 +:1045400008950E94E21B80E00E94F1020E940A2866 +:104550000E9400170C9410091F920F920FB60F9231 +:1045600011248F939F93AF93BF938091F302811196 +:1045700013C08091F4029091F502A091F602B091DF +:10458000F7024196A11DB11D8093F4029093F502AC +:10459000A093F602B093F702BF91AF919F918F91D4 +:1045A0000F900FBE0F901F90189582E084BD93E08E +:1045B00095BD9AEF97BD80936E0008952FB7F8943C +:1045C0008091F4029091F502A091F602B091F70269 +:1045D0002FBF0895CF92DF92EF92FF920F931F9318 +:1045E0002FB7F8944091F4025091F5026091F602D1 +:1045F0007091F7022FBF6A017B01EE24FF248C012A +:1046000020E030E0C016D106E206F30610F4415077 +:1046100051099A01281B390BC9011F910F91FF9075 +:10462000EF90DF90CF9008951F920F920FB60F92E8 +:1046300011248F939F93AF93BF938091F402909135 +:10464000F502A091F602B091F7020196A11DB11DED +:104650008093F4029093F502A093F602B093F702D0 +:10466000BF91AF919F918F910F900FBE0F901F90B0 +:1046700018950E94FD13F8942FEF87EA91E62150D8 +:1046800080409040E1F700C0000087E090EBDC0143 +:1046900080931E0390931F03A0932003B0932103E4 +:1046A0009CE088E10FB6F894A895809360000FBE57 +:1046B00090936000FFCF0E949A23811102C00E9454 +:1046C00076230E94A5238093F2020E94AD2380935B +:1046D0001C0387FB882780F9809316010E94A92379 +:1046E000682F70E080E090E00C94A21F6DEE7EEFEA +:1046F00080E090E00E94C12C60E082E090E00E94A7 +:10470000AF2C60E083E090E00E94AF2C60E084E09A +:1047100090E00E94AF2C60E085E090E00E94AF2C1A +:1047200060E086E090E00E94AF2C6FEF87E090E0C1 +:104730000C94AF2C80E090E00E94A92C21E08D3EEB +:104740009E4F09F020E0822F089582E090E00C94C3 +:10475000A12C83E090E00C94A12C84E090E00C94D8 +:10476000A12C682F84E090E00C94AF2C86E090E0C0 +:104770000C94A12C682F86E090E00C94AF2C87E07D +:1047800090E00C94A12C682F87E090E00C94AF2C63 +:104790008091FA0280FF0BC060911C0185E0689F48 +:1047A000B001112475956795759567952BC081FFAC +:1047B00009C060911C0185E0689FB00111247595C6 +:1047C000679520C082FF07C060911C0185E0689F4B +:1047D000B001112417C09091FB029923D1F0609190 +:1047E0001B01961788F720911C0185E0289F9001F6 +:1047F0001124929FA001939F500D112470E0CA01D3 +:104800000E94872C6038710540F46115710539F0FC +:1048100002C065E070E0862F08958FE7089581E07B +:1048200008958091FA0280FF08C060911A0170E03B +:10483000759567957595679521C081FF06C0609154 +:104840001A0170E07595679519C082FF04C06091E8 +:104850001A0170E010C09091FB029923C1F06091A1 +:1048600019019617A0F780911A01899FC0011124A0 +:1048700070E00E94872C6038710528F4611571057D +:1048800021F0862F08958FE7089581E0089561E073 +:1048900070E0F4CF803F21F40E94C823819504C0CA +:1048A000813F29F40E94C8238093FE020895823F2D +:1048B00021F40E94C823819504C0833F29F40E94FB +:1048C000C8238093FD020895893F19F40E941124A2 +:1048D00005C08A3F31F40E94112481958093FF0224 +:1048E00008958B3F21F40E941124819504C08C3FD0 +:1048F00029F40E941124809300030895843F21F439 +:104900008091FC02816017C0853F21F48091FC02F8 +:10491000826011C0863F21F48091FC0284600BC04C +:10492000873F21F48091FC02886005C0883F31F404 +:104930008091FC0280618093FC0208958D3F21F4F8 +:104940008091FA0281600BC08E3F21F48091FA02BF +:10495000826005C08F3F29F48091FA0284608093C1 +:10496000FA020895803F39F48091FE0287FF6CC0FF +:104970001092FE0269C0813F29F48091FE02181650 +:10498000BCF362C09091FD02823F29F497FF5CC0A6 +:104990001092FD0259C0833F19F41916CCF354C08C +:1049A000893F41F48091FF0218160CF04DC010921F +:1049B000FF024AC08A3F29F48091FF0287FF44C06A +:1049C000F6CF8B3F39F48091000387FF3DC01092F2 +:1049D00000033AC08C3F29F4809100031816BCF301 +:1049E00033C0843F21F48091FC028E7F17C0853F45 +:1049F00021F48091FC028D7F11C0863F21F48091CB +:104A0000FC028B7F0BC0873F21F48091FC02877FE3 +:104A100005C0883F31F48091FC028F7E8093FC02B8 +:104A200013C08D3F21F48091FA028E7F0BC08E3F20 +:104A300021F48091FA028D7F05C08F3F29F4809187 +:104A4000FA028B7F8093FA028091FD0281110EC0E1 +:104A50008091FE0281110AC08091FF02811106C07F +:104A600080910003811102C01092FB0208958CEF27 +:104A700092E00E9417170E94DE229093F902809321 +:104A8000F80208951F93CF93DF938091F8029091DD +:104A9000F9020E94EA22AC019091FB02992321F0D5 +:104AA00020911D0130E006C020911E018AE0289F60 +:104AB000900111244217530708F486C08091FD022B +:104AC000C091FE02D091FF0210910003811107C036 +:104AD000C11176C0D11174C0111172C075C09F3F51 +:104AE00019F09F5F9093FB02181624F40E94C823CC +:104AF0008093FD028091FD0287FF05C00E94C823BC +:104B000081958093FD021C1624F40E94C823809393 +:104B1000FE028091FE0287FF05C00E94C823819596 +:104B20008093FE026091FD02662339F1C091FE027E +:104B3000CC2319F1772767FD7095872F972F0E9457 +:104B4000A92923E333E343E35FE30E94B92A0E94E8 +:104B500076296093FD026C2F772767FD7095872F6C +:104B6000972F0E94A92923E333E343E35FE30E94E5 +:104B7000B92A0E9476296093FE021D1624F40E9431 +:104B800011248093FF028091FF0287FF05C00E94DD +:104B9000112481958093FF02111624F40E941124A0 +:104BA000809300038091000387FF05C00E941124B9 +:104BB000819580930003DF91CF911F910C9437254D +:104BC0009F3F09F08ECF96CFDF91CF911F9108952F +:104BD000ECEFF2E085E0DF011D928A95E9F7109293 +:104BE000FB021092FA020895833081F128F481309B +:104BF00059F08230D1F00895853009F449C0B8F1F8 +:104C0000863009F456C0089580911E01262F30E0A9 +:104C1000280F311D2F3F310524F4680F60931E01CA +:104C200008958FEF80931E01089580911D01262F16 +:104C300030E0280F311D2F3F310524F4680F6093B9 +:104C40001D0108958FEF80931D01089580911C012F +:104C5000262F30E0280F311D2F3F310524F4680F37 +:104C600060931C0108958FEF80931C01089580913B +:104C70001B01262F30E0280F311D2F3F310524F472 +:104C8000680F60931B0108958FEF80931B010895B7 +:104C900080911A01262F30E0280F311D2F3F31055A +:104CA00024F4680F60931A0108958FEF80931A011E +:104CB000089580911901262F30E0280F311D2F3FD4 +:104CC000310524F4680F6093190108958FEF8093E4 +:104CD00019010895833011F128F4813049F08230B0 +:104CE00091F00895853081F120F18630C1F1089569 +:104CF00080911E01681720F4861B80931E01089581 +:104D000010921E01089580911D01681720F4861BE2 +:104D100080931D01089510921D01089580911C013A +:104D2000681720F4861B80931C01089510921C01C3 +:104D3000089580911B01681720F4861B80931B0146 +:104D4000089510921B01089580911A01681720F4AC +:104D5000861B80931A01089510921A01089580917C +:104D60001901681720F4861B809319010895109289 +:104D7000190108950F931F93873208F048C08E31B0 +:104D800008F08DC0803109F477C008F5873009F448 +:104D900061C068F4863009F09DC08091F202817F85 +:104DA0008E7F8093F20281E08093020394C08B3067 +:104DB00009F489C08E3009F08DC08091F20282FB27 +:104DC000222720F991E0922790FB82F95EC086317C +:104DD00009F479C060F4813109F07CC00E94E21BC3 +:104DE0009091160181E08927809316016CC089316A +:104DF00009F469C08B3109F06DC08091F20281FB2A +:104E0000222720F991E0922790FB81F93EC0883358 +:104E100009F459C050F4893209F457C0853309F4B4 +:104E200054C0873209F451C055C0833409F44DC0D1 +:104E300028F48A3308F44EC0895332C0883409F00C +:104E400049C00E94E21B0E94200A0E94E4030E94C3 +:104E5000392339C09091F202892F8095817080FBAF +:104E600090F929F0966098609093F20234C0997F8F +:104E7000977F9093F20227C08091F20283FB222752 +:104E800020F991E0922790FB83F98093F202992315 +:104E9000D1F08091F20281608093F20214C08D51B2 +:104EA00041E050E060E070E08A019B0104C0000F27 +:104EB000111F221F331F8A95D2F7C901B8010E9422 +:104EC000A21F0E94E21B81E006C061E070E080E06A +:104ED00090E0F5CF80E01F910F91089580E0089554 +:104EE00080E00895CF93C82F80910203813069F04C +:104EF00018F08230C9F184C0E0911701F0911801D7 +:104F00008081823209F07EC007C0E0911701F091E4 +:104F100018018081823261F48C2F0E946E278111EA +:104F200004C08C2F0E94BA261DC081E090E01AC0F8 +:104F30008C2F0E947027811114C0C43179F048F47D +:104F4000CB3079F0C03109F061C082E08093020378 +:104F500008C0C93219F0C83321F058C010920203BA +:104F600055C081E0817054C0C93291F120F5C4313F +:104F700079F1B0F4C73009F047C08EE180931E018B +:104F800082E380931D018AE080931C0184E1809379 +:104F90001B0188E080931A0188E28093190134C0D4 +:104FA000CE51C63088F5EC2FF0E0EA54FE4F8081F8 +:104FB0008093010329C0CE34E9F020F4CB3421F5ED +:104FC0006AE013C0C13579F0C235F1F461E00DC07B +:104FD00080910103882319F01092010315C081E02C +:104FE0008093020315C061E006C0809101030E9416 +:104FF000F4250AC06AE0809101030E946A2604C079 +:105000001092020380E004C081E002C080E0AACFD9 +:10501000CF9108950E949A23811102C00E947623A5 +:105020000E94B62380931D0380FF02C0869501C0B5 +:1050300080E00C94F10280911D03982F9695292F02 +:1050400030E0233031054CF49F5F990F8170892B3C +:10505000816080931D030E94BA2380911D03869571 +:105060000C94F10280911D03982F969591F0915820 +:10507000990F8170892B80931D038E7F91E009F435 +:1050800090E080911D0390FB80F980931D030E94A6 +:10509000BA2380911D0386950C94F10280911D0323 +:1050A000982F909590FB80F980931D030E94BA235E +:1050B00080911D0380FF02C0869501C080E00C94A2 +:1050C000F10290911D03892F86958F5F8F779170E4 +:1050D000843028F4880F892B80931D0302C090939D +:1050E0001D0380911D038E7F91E009F490E0809173 +:1050F0001D0390FB80F980931D030E94BA238091C9 +:105100001D0386950C94F10220911D03922F969514 +:105110008927982F990F822F8170892B80931D03E7 +:105120008E7F91E009F490E080911D0390FB80F95F +:1051300080931D030E94BA2380911D0386950C94D1 +:10514000F10280911D03869508955058BB27AA2728 +:105150000ED0D1C1C2D130F0C7D120F031F49F3F81 +:1051600011F41EF4B7C10EF4E095E7FB9FC1E92FDF +:10517000D3D180F3BA17620773078407950718F035 +:1051800071F49EF5EBC10EF4E0950B2EBA2FA02D15 +:105190000B01B90190010C01CA01A0011124FF27E4 +:1051A000591B99F0593F50F4503E68F11A16F040DF +:1051B000A22F232F342F4427585FF3CF46953795DE +:1051C0002795A795F0405395C9F77EF41F16BA0BA3 +:1051D000620B730B840BBAF09150A1F0FF0FBB1F51 +:1051E000661F771F881FC2F70EC0BA0F621F731F9A +:1051F000841F48F4879577956795B795F7959E3FF7 +:1052000008F0B3CF9395880F08F09927EE0F979584 +:105210008795089527D108F481E008950CD06BC1DB +:1052200063D140F05AD130F021F45F3F19F03EC114 +:10523000511195C14FC170D198F39923C9F35523EA +:10524000B1F3951B550BBB27AA2762177307840779 +:1052500038F09F5F5F4F220F331F441FAA1FA9F32F +:1052600033D00E2E3AF0E0E830D091505040E69521 +:10527000001CCAF729D0FE2F27D0660F771F881F82 +:10528000BB1F261737074807AB07B0E809F0BB0B71 +:10529000802DBF01FF2793585F4F2AF09E3F510595 +:1052A00068F004C15CC15F3FECF3983EDCF3869587 +:1052B00077956795B795F7959F5FC9F7880F911D0B +:1052C0009695879597F90895E1E0660F771F881FF7 +:1052D000BB1F621773078407BA0720F0621B730BAA +:1052E000840BBA0BEE1F88F7E095089504D06894FC +:1052F000B11135C1089518D188F09F5790F0B92F9A +:105300009927B751A0F0D1F0660F771F881F991F1A +:105310001AF0BA95C9F712C0B13081F01FD1B1E0CF +:1053200008951CC1672F782F8827B85F39F0B93FDF +:10533000CCF3869577956795B395D9F73EF490951C +:105340008095709561957F4F8F4F9F4F0895E8949A +:1053500009C097FB3EF490958095709561957F4FBD +:105360008F4F9F4F9923A9F0F92F96E9BB2793956B +:10537000F695879577956795B795F111F8CFFAF47B +:10538000BB0F11F460FF1BC06F5F7F4F8F4F9F4FAC +:1053900016C0882311F096E911C0772321F09EE80A +:1053A000872F762F05C0662371F096E8862F70E070 +:1053B00060E02AF09A95660F771F881FDAF7880F4A +:1053C0009695879597F9089588D018F011F08CD0AC +:1053D00038F480C0C4C0E92F9FD0B0F35523C9F37F +:1053E000E7FB6217730784079507A8F199F3E92F84 +:1053F000FF2788232AF03197660F771F881FDAF777 +:10540000952F5527442332F091505040220F331FDF +:10541000441FD2F7BB27E91BF50B621B730B840BF0 +:10542000B109C1F222F4620F731F841FB11D3197BD +:105430002AF0660F771F881FBB1FEFCF9150504097 +:105440005AF041F0882332F0660F771F881F915081 +:105450005040C1F7939530C08695779567959F5FCB +:10546000D9F7F8CF990F0008550FAA0BE0E8FEEF27 +:1054700016161706E807F907C0F012161306E40718 +:10548000F50798F0621B730B840B950B39F40A2611 +:1054900061F0232B242B252B21F408950A2609F4EF +:1054A000A140A6958FEF811D811D089597F99F67F3 +:1054B00080E870E060E008959F3F31F0915020F463 +:1054C000879577956795B795880F911D96958795E0 +:1054D00097F908959FEF80EC089500240A9416161A +:1054E000170618060906089500240A9412161306D2 +:1054F000140605060895092E0394000C11F4882360 +:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B +:105510007F4F8F4F9F4F089557FD9058440F551F51 +:1055200059F05F3F71F04795880F97FB991F61F025 +:105530009F3F79F087950895121613061406551F9C +:10554000F2CF4695F1DF08C0161617061806991F08 +:10555000F1CF86957105610508940895E894BB27FD +:1055600066277727CB0197F908957CDF08F48FEF42 +:1055700008950BD0C0CFB1DF28F0B6DF18F0952327 +:1055800009F094CFA7CF1124EACFC6DFA0F3959FEF +:10559000D1F3950F50E0551F629FF001729FBB271A +:1055A000F00DB11D639FAA27F00DB11DAA1F649FC6 +:1055B0006627B00DA11D661F829F2227B00DA11D79 +:1055C000621F739FB00DA11D621F839FA00D611DFF +:1055D000221F749F3327A00D611D231F849F600D20 +:1055E000211D822F762F6A2F11249F5750408AF059 +:1055F000E1F088234AF0EE0FFF1FBB1F661F771FE5 +:10560000881F91505040A9F79E3F510570F04ECF32 +:10561000A6CF5F3FECF3983EDCF3869577956795D0 +:10562000B795F795E7959F5FC1F7FE2B880F911D02 +:105630009695879597F90895FA01EE0FFF1F30961A +:105640002105310599F16115710561F48038BFE3D9 +:105650009B0749F168949038810561F08038BFEF6D +:105660009B0741F0992342F5FF3FE10531052105F4 +:1056700011F1E8940894E795D901AA2329F4AB2FF6 +:10568000BE2FF85FD0F310C0FF5F70F4A695E0F76F +:10569000F73950F019F0FF3A38F49F779F930CD008 +:1056A0000F9007FC905808953EF014CF60E070E032 +:1056B00080E89FE308954FE79F775F934F933F9371 +:1056C0002F939ED02F913F914F915F9152DF05C054 +:1056D00019F40EF0EBCE42CFFDCE26DFC8F396389C +:1056E000C0F707F80F92E8942BE33AEA48EB5FE73C +:1056F0004EDF0F920F920F924DB75EB70F92C0D050 +:10570000EAE0F1E016D04F915F91EF91FF91E595BE +:10571000EE1FFF1F49F0FE57E0684427EE0F441FBD +:10572000FA95E1F74195550B32D00F9007FE26C050 +:105730000895DF93CF931F930F93FF92EF92DF9221 +:105740007B018C01689405C0DA2EEF011EDFFE019B +:10575000E894A5912591359145915591AEF3EF01CE +:1057600006DDFE019701A801DA9479F7DF90EF904A +:10577000FF900F911F91CF91DF9108959B01AC0194 +:1057800060E070E080E89FE349CD90CE95CECCDE1E +:10579000E8F39923D9F3940F511DBBF39150504076 +:1057A00094F059F0882332F0660F771F881F9150CC +:1057B0005040C1F79E3F510544F7880F911D9695C3 +:1057C000879597F908955F3FACF0983E9CF0BB2712 +:1057D000869577956795B79508F4B1609395C1F76D +:1057E000BB0F58F711F460FFE8CF6F5F7F4F8F4F0B +:1057F0009F4FE3CFB4CE0EF05FCE6CCE689456CE02 +:1058000093DEC8F39923D1F3C6F3DF93CF931F93AD +:105810000F93FF92C92FDD2788232AF02197660F67 +:10582000771F881FDAF720E030E040E85FEB9FE366 +:10583000883920F0803E30F021968F7787DCE2E3D4 +:10584000F1E003C083DCEFE5F1E073DF8B01BE0123 +:10585000EC01FB2E6F5771097595771F880B990B1B +:1058600078DD28E132E741E35FE38FDEAF2D980179 +:10587000AE01FF900F911F91CF91DF9178DC3BCE6D +:10588000FA01DC01AA0FBB1F9B01AC01BF5728F432 +:1058900022273327442750781FC0B75188F4AB2FF5 +:1058A0000024469537952795011CA395D2F3002037 +:1058B00069F0220F331F441FB395DAF30DD045CCA6 +:1058C00061307105A0E88A07B94630F49B01AC014C +:1058D0006627772788279078309621F020833183B8 +:1058E000428353830895AA1BBB1B51E107C0AA1F23 +:1058F000BB1FA617B70710F0A61BB70B881F991F71 +:105900005A95A9F780959095BC01CD01089597FB14 +:10591000072E16F4009407D077FD09D00E94732C4F +:1059200007FC05D03EF4909581959F4F08957095A2 +:1059300061957F4F0895EE0FFF1F0590F491E02DC4 +:105940000994F999FECF92BD81BDF89A992780B547 +:105950000895A8E1B0E042E050E00C94C92C262F55 +:10596000F999FECF92BD81BDF89A019700B4021655 +:1059700039F01FBA20BD0FB6F894FA9AF99A0FBE03 +:1059800008950196272F0E94B02C0C94AF2CDC01B7 +:10599000CB01FC01F999FECF06C0F2BDE1BDF89A3A +:1059A000319600B40D9241505040B8F70895F894E4 +:0259B000FFCF27 +:1059B200640007000CFF0000003F64041092106FA7 +:1059C200103B1007100101DF022808140A321E00E2 +:1059D20002040507090B0C0E1011131517181A1CD7 +:1059E2001D1F2123242628292B2D2F303234353711 +:1059F200393B1F0F03764F5F6F7F4969437909591E +:105A020053633149803F5D8B803FF8BF803FCAE1DD +:105A1200803F73ED803FCAE1803FF8BF803F5D8BDE +:105A2200803F3149803F0000803FF16D7F3F75EA42 +:105A32007E3F4C827E3F833F7E3F84287E3F833F72 +:105A42007E3F4C827E3F75EA7E3FF16D7F3F0000D4 +:105A5200803F3F4D3639ED04A0046A043104C4038B +:105A6200DD03F6030F04010203040506070809001B +:00000001FF diff --git a/keyboard/planck/keymaps/mollat/compiled.hex b/keyboard/planck/keymaps/mollat/compiled.hex new file mode 100644 index 0000000000..549b7a8dfa --- /dev/null +++ b/keyboard/planck/keymaps/mollat/compiled.hex @@ -0,0 +1,1495 @@ +:100000000C94A5030C94E9030C94E9030C94E90304 +:100010000C94E9030C94E9030C94E9030C94E903B0 +:100020000C94E9030C94E9030C94E9150C94BB16A9 +:100030000C941D240C94E9030C94E9030C94E9033B +:100040000C94E9030C944B040C94E9030C94E9031D +:100050000C94E9030C9485240C94E9030C94E903B3 +:100060000C94E9030C94E9030C94E9030C94E90360 +:100070000C94E9030C94E9030C94E9030C94E90350 +:100080000C945E0C0C94E9030C94E9030C94E903C2 +:100090000C94E9030C94E9030C94E9030C94E90330 +:1000A0000C94E9030C94E9030C94E903A704AD0450 +:1000B000B304B904BF04C404C904CE04D304D804EF +:1000C000DD04E204E704EC04F104F60428174A17FF +:1000D00038184A1738188F17B217381807181A180F +:1000E000041B041B331B331B721B921BE81CE81CF4 +:1000F0009D1BE81C4D1C4D1CB41CBD1CE81CE21CC7 +:100100005A1C5A1C5A1C5A1C5A1C5A1C5A1C5A1C3F +:100110005A1C5A1C5A1C5A1C5A1C5A1C5A1C5A1C2F +:100120006A1C781C7F1C861C901C07634236B79B98 +:10013000D8A71A39685618AEBAAB558C1D3CB7CC47 +:100140005763BD6DEDFD753EF6177231BF000000BF +:10015000803F08000000BE922449123EABAAAA2AA2 +:10016000BECDCCCC4C3E00000080BEABAAAAAA3EBD +:1001700000000000BF000000803F000000000008F9 +:100180004178D3BB4387D1133D190E3CC3BD428296 +:10019000AD2B3E68EC8276BED98FE1A93E4C80EF54 +:1001A000FFBE01C4FF7F3F00000000000000000010 +:1001B00000000000000000010204060A0F17202CB6 +:1001C0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9B2 +:1001D000DAC7B39D87715D4A3A2C20170F0A0604CF +:1001E00002010000000000000000000001E0010525 +:1001F000020502E0000129022901E1013302330274 +:10020000E10114021401280228000129022901E158 +:100210000133023302E1011A021A01280228000107 +:10022000E00105020502E0010602060001E0010509 +:10023000020502E0011302130001E00105020502BC +:10024000E0011102110001E00105020502E0010FC9 +:10025000020F0001E00105020502E0012502250070 +:1002600001E00105020502E0012402240001E00191 +:1002700005020502E0012302230001E00105020559 +:1002800002E0012202220001E00105020502E00174 +:100290002102210001E00105020502E00120022007 +:1002A0000001E00105020502E0011F021F0001E05C +:1002B0000105020502E0011E021E0001E001050227 +:1002C0000502E001270227000000000000000000F6 +:1002D00000000C30294614001A0008001500170011 +:1002E0001C0018000C00120013002A002B4304000D +:1002F0001600070009000A000B000D000E000F0099 +:1003000033003400E1001D001B0006001900050049 +:10031000110010003600370038002872000000007D +:10032000E300E200E0002C442C410252E600E7002A +:100330000000000035001E021F02200221022202DE +:10034000230224022502260227022D0000001E009F +:100350001F00200021002200230024002500260089 +:1003600027002E0000000000000000000000000038 +:1003700000000000360037003100310200000000AC +:10038000000000000000000001000000000000006C +:100390000000000035020000000000000000000026 +:1003A0000000000000002F0230022D0200003A0081 +:1003B0003B003C003D003E003F00400041002F005C +:1003C00030002E020000000000000000000042008B +:1003D0004300440045000000000000000000000051 +:1003E000000000000000000000000100000000000C +:1003F000000000000000000000004D0000000000B0 +:1004000000000000490000004C001C140100000026 +:10041000161400004E0022145000510052004F00EC +:100420001314141400004A000000000000004B00E8 +:100430000000000000000000000028000050000044 +:100440000000000000002C002C0000000000000054 +:100450000000000000000E300D3000000000000021 +:1004600000000000000000000B30000000300130F0 +:1004700002300330043005300630073008300930D0 +:10048000000000000000000000000C300000000030 +:100490000A30000000000000000000000000000022 +:1004A000000000000000010000000000000000004B +:1004B000000000000000000000000000000000003C +:1004C000000000000000000000000000000000002C +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000000000000000000000FC +:1005000000000000000000000000000000000000EB +:1005100000000000010000000000000000000000DA +:1005200000000000000000000000000000000000CB +:1005300000000000FA000000F200F100F000F300FB +:100540000000000000000000000000000000F900B2 +:10055000000000000000000000000000000000009B +:100560000000FF00FE00FD00F400F600F5000000B2 +:1005700000000000280354006800650020005000BF +:100580006C0061006E0063006B0020004B00650092 +:10059000790062006F0061007200640000002C03AB +:1005A0004F007200740068006F006C0069006E00FC +:1005B00065006100720020004B0065007900620058 +:1005C0006F006100720064007300000004030904FE +:1005D00009026D00040100A0FA09040000010301F2 +:1005E0000100092111010001223F000705810308D4 +:1005F000000A0904010001030102000921110100A0 +:1006000001224D000705820308000A0904020001C7 +:1006100003000000092111010001223600070583B3 +:100620000308000A09040300010300000009211166 +:100630000100012239000705840310000112011096 +:100640000100000008EDFE606001000102000105EC +:10065000010906A101050719E029E7150025019503 +:100660000875018102050819012905950575019193 +:1006700002950175039101050719002977150025D9 +:1006800001957875018102C005010980A1018502EB +:1006900016010026B7001A01002AB700751095014F +:1006A0008100C0050C0901A1018503160100269CEB +:1006B000021A01002A9C02751095018100C00501F3 +:1006C0000902A1010901A100050919012905150067 +:1006D00025019505750181029501750381010501CB +:1006E000093009311581257F950275088106093881 +:1006F0001581257F950175088106050C0A380215BC +:1007000081257F950175088106C0C005010906A1F4 +:1007100001050719E029E7150025019508750181F4 +:1007200002950175088101050819012905950575CE +:100730000191029501750391010507190029FF1523 +:100740000025FF950675088100C011241FBECFEF5C +:10075000DAE0DEBFCDBF04B603FE24C080911E03E5 +:1007600090911F03A0912003B09121038730904BFB +:10077000A740B04BB9F410921E0310921F031092C1 +:1007800020031092210314BE84B7877F84BF88E1C1 +:100790000FB6F89480936000109260000FBEE0E006 +:1007A000F8E3099511E0A0E0B1E0E4E9FCE502C05E +:1007B00005900D92A03CB107D9F713E0A0ECB1E091 +:1007C00001C01D92AE31B107E1F70E942F130C94C6 +:1007D000482E0C9400000895089581E0089508952E +:1007E0000C94EC030C94ED030C94EF030E94122A7A +:1007F00023E030E0281B3109220F2093C401089523 +:10080000282F2F9880918000211108C0877F809326 +:10081000800010928D0010928C001BC08860809325 +:100820008000233019F48FEF9FEF0FC083E090E03A +:10083000821B9109880F991F2FEF3FEFA90102C07A +:10084000569547958A95E2F7CA0190938D0080935B +:100850008C000C94F6030E94F60384E08093C3019D +:100860001092C0010895279A2F988FEF9FEF9093D1 +:100870008700809386008AE08093800089E18093DE +:1008800081000E947B290C942B040E9433046E9AF1 +:10089000769A0C94EB031F920F920FB60F921124CD +:1008A0002F933F938F939F93EF93FF93E091C10119 +:1008B000F091C201CF0101969093C2018093C101D2 +:1008C0000090C30102C0F695E7950A94E2F7EF7332 +:1008D0008091C001823019F4E03251F404C08130BB +:1008E00039F4EF3329F480916F008D7F80936F008E +:1008F000F0E0E455FE4FE49121E031E0E29FC001D9 +:10090000E39F900D11240090C40102C09695879535 +:100910000A94E2F790938D0080938C00FF91EF9101 +:100920009F918F913F912F910F900FBE0F901F902D +:100930001895462F50E04031510508F05CC0FA018F +:10094000EA5AFF4FDC0112968C910C940C2E8823EE +:1009500009F451C08BEB92E00895882309F44BC051 +:100960008EEA92E00895882309F445C081EA92E076 +:100970000895882309F43FC084E992E0089588230C +:10098000D1F187E892E008958823A9F18AE792E0FF +:100990000895882381F18DE692E00895882359F126 +:1009A00080E692E00895882331F183E592E008958E +:1009B000882309F186E492E008958823E1F089E331 +:1009C00092E008958823B9F08CE292E0089588239C +:1009D00091F08FE192E00895882369F08AE092E037 +:1009E0000895882341F085EF91E00895882319F058 +:1009F0008CEE91E0089580E090E0089581E0089504 +:100A00000C94FE0408950C944504809115028823EB +:100A100009F448C08091D1019091D201009779F4F6 +:100A20000E944F249093D2018093D1018091D301F1 +:100A300090E0009771F48091D40190E00AC00E9488 +:100A40005B2420910001309101012817390740F300 +:100A500029C00197880F991F880F991FFC01EB523D +:100A6000FE4F60817181828193810E94C40BE0916D +:100A7000D30184E0E89FF0011124EB52FE4F608126 +:100A80007181828193814FE050E00E947C0F8091C0 +:100A9000D30190E001966091D40170E00E94F82D9E +:100AA0008093D3010C94F003109217020C94910BD5 +:100AB0000895089581E0809317020C9459050895D4 +:100AC00008958F929F92AF92BF92EF92FF920F93F1 +:100AD0001F93CF93DF93CDB7DEB7A3970FB6F894EC +:100AE000DEBF0FBECDBF7C01FC0100811181C801BA +:100AF0000E944C22B8010E9463078C01B7010E943A +:100B00000005882309F4CCC10032F0E51F0741F449 +:100B1000F7018281882309F458C00E94E00FC0C108 +:100B20000132F0E51F0741F4F7018281882309F4BF +:100B30004CC00E94E90FB4C10232F0E51F0751F426 +:100B4000F7018281882309F440C00E94DC0F8111E3 +:100B5000F0CFE3CF0332F0E51F0739F4F7018281CC +:100B6000882399F10E945A059BC10432F0E51F07C2 +:100B700039F4F7018281882341F10E94540590C124 +:100B80000532F0E51F0749F4F70182818823E9F077 +:100B9000809117028111F1CFE5CF0632F0E51F07F2 +:100BA00039F4F7018281882381F00E94F00F0AC096 +:100BB0000732F0E51F0749F4F7018281882329F005 +:100BC0000E94FB0F0E9460056BC18091170281118A +:100BD00005C0F70182818111CFC018C1003E110507 +:100BE00079F4F7018281882309F44DC00E94910BAA +:100BF00081E080931602109215021092D40150C128 +:100C0000023E110559F4F70182818823E1F10E9427 +:100C1000910B109216021092150242C1033E11056B +:100C200091F4F7018281882371F10E94910B109257 +:100C3000160281E0809315021092D3011092D20126 +:100C40001092D1012DC10235110559F4F7018281AD +:100C5000882309F425C180910001909101010A9730 +:100C60000DC00135110579F4F7018281882309F45B +:100C700017C180910001909101010A9690930101A2 +:100C8000809300010DC14091040183E2EFE1F1E0A6 +:100C9000DE01119601900D928A95E1F7F7018081AE +:100CA00021E030E02C0F3D1F280F311DC90120919C +:100CB000020130910301FC01E20FF31F60817727ED +:100CC00067FD7095640F711D882777FD8095982FBB +:100CD0000E941A2B20E030E040E451E40E947F2A79 +:100CE0004B015C01F701218184E090E0821B9109B6 +:100CF000BC01882777FD8095982F0E941A2B9B01B5 +:100D0000AC01C501B4010E94172A9B01AC0160E04F +:100D100070E080E090E40E948D2C20E030E04CED0B +:100D200050E40E942A2C4B015C01F7018281882348 +:100D3000D1F04FE050E0C501B4010E947C0F8091DA +:100D400016028823A1F08091D40124E0829FF00153 +:100D50001124EB52FE4F80829182A282B3828F5F78 +:100D60008093D40104C0C501B4010E94C40B0F3F9D +:100D7000110508F02ECF94C08091D00181111FC0C1 +:100D8000043130E5130709F051C00E94020581E0EB +:100D90008093D0010E944F249093CF018093CE0185 +:100DA0001092C7011092C9011092C8011092CB0194 +:100DB0001092CA011092CD011092CC0171C08091A5 +:100DC000CE019091CF010E945B24883C910570F484 +:100DD0008091C701E82FF0E0EE0FFF1FE853FE4FB0 +:100DE000118300838F5F8093C7015AC0043880E568 +:100DF000180721F00538104501F13AC0F70182814A +:100E0000882341F01092C50182E01EC0043830E50D +:100E1000130759F58091C501811106C086E20E9431 +:100E2000A81986E20E94701A82E01CC00438F0E51E +:100E30001F0741F305381045D9F4F7018281882353 +:100E400031F01092C60180E20E94BF1A29C0809141 +:100E5000C601811106C087E20E94A81987E20E949C +:100E6000701A80E20E94C61A1BC00538104529F38B +:100E700081E08093C5018093C601C701A3960FB698 +:100E8000F894DEBF0FBECDBFDF91CF911F910F91C0 +:100E9000FF90EF90BF90AF909F908F900C94F203D3 +:100EA00080E0A3960FB6F894DEBF0FBECDBFDF91F2 +:100EB000CF911F910F91FF90EF90BF90AF909F90B7 +:100EC0008F90089508959CE0799FF001112490E39C +:100ED000899FE00DF11D1124E60FF11DEE0FFF1F9C +:100EE000EC52FD4F859194910895880F991FFC0154 +:100EF000E85BFE4F859194910895880F991FFC013E +:100F0000E853FD4F8591949108950F931F93CF93CC +:100F1000DF93EC01811521E39207A0F5C11580E371 +:100F2000D80708F0D7C0C83ED105D8F4C03ED105D7 +:100F300008F007C2C83AD10578F4C53AD10508F0DF +:100F40006AC0C130D10509F463C008F4F7C1C430E8 +:100F5000D10508F0F6C1F2C1CB3BD10508F466C05B +:100F6000EDC1C11590E2D90708F0AFC0C11521E06D +:100F7000D20708F0E6C1C03FD10508F4DFC18E01F9 +:100F800010651FC2C03880E5D80700F5C03790E56E +:100F9000D90708F0A3C0C11520E5D20709F4ACC0F9 +:100FA00050F4CE01905480319F4008F0C7C1DF70EB +:100FB0008E01106A06C2C13080E5D80709F4AEC0C0 +:100FC000C43190E5D90708F4AFC0B8C1C33820E5F3 +:100FD000D20709F48EC050F4C13890E5D90709F45E +:100FE00082C008F083C000E011EDEBC1C03181E5A3 +:100FF000D80708F4A3C1C11597E5D90708F436C18D +:10100000CE0190578115904108F098C1DF7093C1CF +:1010100001E010E0D6C1C53AD10509F494C1C63A41 +:10102000D10509F093C102E810E4CBC1C83AD1055B +:1010300009F48FC1C93AD10509F48EC1CA3AD10564 +:1010400009F48DC1CB3AD10509F48CC1CC3AD10554 +:1010500009F48BC1CD3AD10509F48AC1C03BD10551 +:1010600009F489C1CE3AD10509F488C1CF3AD10536 +:1010700009F487C1C13BD10509F486C1C23BD10542 +:1010800009F485C1C33BD10509F484C1C43BD10532 +:1010900009F483C1C53BD10509F482C1C63BD10522 +:1010A00009F481C1C73BD10509F480C1C83BD10512 +:1010B00009F47FC1C93BD10509F47EC1CA3BD10502 +:1010C00009F47DC100E014E47CC1CE019F700E9450 +:1010D0007D0778C1DD278E01106C73C1CF70DD27CD +:1010E0008E01146D6EC100E010ED6BC100E012EDD9 +:1010F00068C100E013ED65C10E94531D0E94910B71 +:101100000E9458058FEF94E32CE0815090402040DE +:10111000E1F700C000000E94AA2453C18091F202AE +:1011200081608093F2024DC10E940B25811102C0A3 +:101130000E94E7240E941E2590E090931D03809357 +:101140001C03C23080E5D80721F480911C03816024 +:1011500086C0C43090E5D90721F480911C038260D9 +:101160007EC0C63020E5D20721F480911C03846044 +:1011700076C0C83080E5D80719F480911C0327C0D9 +:10118000CA3090E5D90721F480911C03806167C0C3 +:10119000CC3020E5D20721F480911C0380625FC02F +:1011A000CE3080E5D80721F480911C03806457C0BD +:1011B000C03190E5D90721F480911C0380684FC0AD +:1011C000C23120E5D20729F480911C038460886035 +:1011D00046C0C33080E5D80721F480911C038E7F80 +:1011E0003EC0C53090E5D90721F480911C038D7F66 +:1011F00036C0C73020E5D20721F480911C038B7FD5 +:101200002EC0C93080E5D80719F480911C0326C090 +:10121000CB3090E5D90721F480911C038F7E1FC04D +:10122000CD3020E5D20721F480911C038F7D17C0BB +:10123000CF3080E5D80721F480911C038F7B0FC04D +:10124000C13190E5D90721F480911C038F7707C045 +:10125000C331D04531F480911C038B7F877F80930D +:101260001C0380911C030E942225ABC08D2F99275F +:101270008F70992781309105D9F49E01237033270F +:1012800002C0880F991F2A95E2F79C688E0144E0FE +:10129000000F111F4A95E1F700271370802B912B47 +:1012A00053E0CC0FDD1F5A95E1F7C076DD272FC044 +:1012B0008230910531F4DC2FCC278E01016F106A4A +:1012C00080C08330910569F4CE018370992701E0D5 +:1012D00010E002C0000F111F8A95E2F7C8019C6858 +:1012E0000FC084309105B9F4CE018370992701E0D5 +:1012F00010E002C0000F111F8A95E2F7C8019A683A +:1013000023E0CC0FDD1F2A95E1F7C07ED7708C015A +:101310000C2B1D2B56C08530910531F4DC2FCC27CA +:101320008E01046F106A4DC0069709F04AC0CF7154 +:10133000DD27DC2FCC278E01106243C000E010E0D7 +:1013400040C08E013EC001E810E43BC003E810E459 +:1013500038C002EE14E435C009EE14E432C00AEEDF +:1013600014E42FC005EB14E42CC006EB14E429C0F0 +:1013700007EB14E426C00CEC14E423C00DEC14E4D9 +:1013800020C003E815E41DC00AE815E41AC002E90C +:1013900015E417C004E915E414C001E216E411C015 +:1013A00003E216E40EC004E216E40BC005E216E404 +:1013B00008C006E216E405C007E216E402C00AE22D +:1013C00016E4C801DF91CF911F910F9108959CE021 +:1013D000799FF001112490E3899FE00DF11D112404 +:1013E000E60FF11DEE0FFF1FEC52FD4F859194911A +:1013F000803E9105E0F4803C910558F581339105DC +:1014000009F46FC048F48932910509F463C08A3247 +:10141000910509F46DC072C089339105E9F08238F5 +:101420009105D1F08533910509F44DC067C0833E25 +:10143000910581F138F4803E9105B9F0823E910525 +:10144000D9F05CC0863E910561F1873E9105A1F11E +:1014500055C00E947507089520911C0320FD02C00D +:1014600021FF4CC080EE90E049C080911C0380FFBA +:10147000F9CF89E390E042C080911C0382FF0EC047 +:1014800080911C0384FF03C080E090E037C083EEAE +:1014900090E034C080911C0382FFF2CF82EE90E096 +:1014A0002DC080911C0383FF0BC080911C0384FD21 +:1014B000EBCF87EE90E022C080911C0383FFF5CF35 +:1014C00086EE90E01BC080911C0385FF07C089E277 +:1014D00090E014C080911C0385FFF9CF85E390E074 +:1014E0000DC080911C0386FF07C08AE290E006C011 +:1014F00080911C0386FFF9CF81E390E00E9485076D +:1015000008950C94F403E82FF0E0E25BFE4F808135 +:10151000E82FEF70F0E082958F7021E030E0A901B4 +:1015200002C0440F551F8A95E2F740A308950F9318 +:101530001F93CF93DF9385B7806885BF85B7806899 +:1015400085BFC3E0D0E001E010E0FE01E25BFE4FAA +:101550008081E82FEF70F0E021A182958F70A801C3 +:1015600002C0440F551F8A95E2F7CA01822B81A35E +:101570008C2F0E94830A219740F78BE090E061E076 +:1015800070E0FC01EE5BFE4F2081E22FEF70F0E097 +:1015900042A122952F70DB0102C0AA0FBB1F2A9522 +:1015A000E2F79D01242B22A3019758F7DF91CF91F9 +:1015B0001F910F910C940305EF92FF920F931F93CD +:1015C000CF93DF9300E212E0C3E0EE24E394F12C2A +:1015D000D5E08C2F0E94830A8BE090E040E050E041 +:1015E000FC01EE5BFE4F6081E62FEF70F0E020A182 +:1015F00030E062956F7002C0359527956A95E2F7E5 +:1016000020FD09C09701082E02C0220F331F0A9443 +:10161000E2F7422B532B019718F7F8019291829130 +:101620008F018417950721F051834083D0930501E2 +:101630008C2F0E94830AC15060F68091050187FDBE +:101640002CC08150809305018F3F39F08FE99FE0D6 +:101650000197F1F700C0000020C080911E02909118 +:101660001F02909327028093260280911C02909182 +:101670001D02909325028093240280911A0290917A +:101680001B02909323028093220280911802909172 +:10169000190290932102809320020E94050581E0A7 +:1016A000DF91CF911F910F91FF90EF900895E82F58 +:1016B000F0E0EE0FFF1FE05EFD4F80819181089505 +:1016C00008950F931F93CF9308E212E0C0E0F80152 +:1016D000929182918F010E94C723C80FF2E00032DD +:1016E0001F07A9F78C2FCF911F910F9108950E948A +:1016F0000B25811102C00E94E7240E9430258093AF +:1017000007033E9A809171008D7F8093710082E083 +:10171000809390008AE18093910081E080932A0277 +:10172000089580912A02811102C00E94770B1092C5 +:101730007A0210927902809171008D7F80937100FE +:10174000809190008F738093900010923C021092D1 +:101750003B02109273021092740210927502109262 +:1017600076021092720210927102E1E5F2E0A1E4B9 +:10177000B2E011921192119211921D921D9282E08B +:10178000E137F807B1F70895CF92DF92EF92FF9219 +:101790000F931F93CF93DF9320913B02222309F4F1 +:1017A00084C06B017C0180912A02811102C00E94D9 +:1017B000770B01E712E0C7E0D0E0A7019601F8013E +:1017C00092918291729162918F010E947B2A811184 +:1017D00031C0FE01EE0FFF1FEE0FFF1FEF5AFD4F4E +:1017E0001082118212821382DE01AA0FBB1FAF5B2F +:1017F000BD4F11961C921E92C730D105E9F021967B +:1018000044815581668177814083518362837383EC +:10181000148215821682178212968D919C911397CD +:1018200011969C938E9313961C921E921297349647 +:101830001296E2CF219708F68091790290917A0270 +:10184000019797FD05C090937A028093790204C0B6 +:1018500010927A02109279028091790290917A0224 +:1018600020917702309178022817390724F01092DE +:10187000780210927702892BC1F4809171008D7FDC +:1018800080937100809190008F73809390001092EC +:1018900073021092740210927502109276021092E6 +:1018A00072021092710210923B02DF91CF911F9150 +:1018B0000F91FF90EF90DF90CF9008951F920F92BD +:1018C0000FB60F9211244F925F926F927F928F9278 +:1018D0009F92AF92BF92CF92DF92EF92FF922F939F +:1018E0003F934F935F936F937F938F939F93AF93A8 +:1018F000BF93CF93DF93EF93FF9380913B028823B5 +:1019000009F49BC1C0917902D0917A021C161D0680 +:101910000CF093C140902B0250902C0260902D024D +:1019200070902E0220E030E0A901C301B2010E94B4 +:10193000262C18160CF065C0C130D10509F452C030 +:101940008091770290917802BE010E94F82D7C016F +:10195000909378028093770280903D0290903E02AF +:10196000A0903F02B090400220E030E040E85FE30A +:10197000C501B4010E94172A60933D0270933E0294 +:1019800080933F0290934002F701EE0FFF1FEE0F8E +:10199000FF1FEF5AFD4FA301920160817181828187 +:1019A00093810E947F2A20E030E040E05EE30E94C5 +:1019B0002A2C9B01AC01C501B4010E94262C1816EB +:1019C0008CF4C7010196BE010E94F82D9093780215 +:1019D0008093770210923D0210923E0210923F02D5 +:1019E00010924002E0917702F0917802EE0FFF1F13 +:1019F000EE0FFF1FEF5AFD4F60817181828193814D +:101A0000D0C0C0907302D0907402E0907502F09044 +:101A1000760220E030E0A901C701B6010E947B2ACE +:101A20002197882309F4A2C0FE01EE0FFF1FEE0FDD +:101A3000FF1FEF5AFD4F80809180A280B380A501E7 +:101A40009401C701B6010E947B2A87FF31C0A5011E +:101A5000940160E070E08CED93EC0E947F2A20E01E +:101A600030E040E451E40E947F2A20E030E040E092 +:101A70005FE30E942A2C9B01AC0160E070E080E0F3 +:101A800090E40E948D2C9B01AC01C501B4010E9421 +:101A90002A2C9B01AC01C701B6010E947B2A87FF5B +:101AA00007C0A701960160E070E08CED93E439C0B7 +:101AB000A5019401C701B6010E94262C18160CF04E +:101AC00055C0A501940160E070E08CED93E40E94A4 +:101AD0007F2A20E030E040E451E40E947F2A20E0A9 +:101AE00030E040E05FE30E942A2C9B01AC0160E003 +:101AF00070E080E090E40E948D2C9B01AC01C50158 +:101B0000B4010E942A2C9B01AC01C701B6010E94BE +:101B1000262C18165CF5A701960160E070E08CEDAC +:101B200093EC0E947F2A20E030E040E451E40E94E0 +:101B30007F2A20E030E040E05FE30E942A2C9B01F6 +:101B4000AC0160E070E080E090E40E948D2C9B018D +:101B5000AC01C701B6010E942A2C609373027093F6 +:101B60007402809375029093760213C0FE01EE0F0B +:101B7000FF1FEE0FFF1FEF5AFD4F80819181A28161 +:101B8000B3818093730290937402A0937502B09313 +:101B90007602609173027091740280917502909147 +:101BA000760220912802309129022F3F4FEF34070F +:101BB00031F02F5F3F4F30932902209328020E947B +:101BC00006106B017C0120E034E244EF51E40E94F6 +:101BD0007B2A87FF08C086EFC82E88E2D82E84EFC4 +:101BE000E82E81E4F82E20E030E040E051E4C70127 +:101BF000B6010E942A2C9B01AC0160E074E284E7EC +:101C00009BE40E947F2A6B017C010E94EC2A709366 +:101C10009700609396002091060130910701409152 +:101C2000080150910901C701B6010E942A2C0E94A7 +:101C3000EC2A709399006093980080913C0288236D +:101C400009F433C1C0903702D0903802E0903902D5 +:101C5000F0903A0220E030E0A901C701B6010E94ED +:101C6000262C1816D4F580912802909129028F3FD6 +:101C70002FEF920729F00196909329028093280272 +:101C8000C701B6010E94061020E030E040E051E4B8 +:101C90000E942A2C9B01AC0160E074E284E79BE483 +:101CA0000E947F2A6B017C010E94EC2A70939700AE +:101CB0006093960020910601309107014091080140 +:101CC00050910901C701B6010E942A2C0E94EC2AFA +:101CD000709399006093980008C01092970010923A +:101CE00096001092990010929800609131027091C4 +:101CF00032026F5F7F4F7093320260933102209106 +:101D000096003091970080E090E0232BF1F0C09195 +:101D10009600D09197000E94182B6B017C01BE01A8 +:101D200080E090E00E94182B9B01AC01609133028F +:101D30007091340280913502909136020E947F2A80 +:101D400020E03FEF4FE757E410C00E94182B6B01D3 +:101D50007C0120E030EE4FEF54E46091330270914B +:101D6000340280913502909136020E942A2C9B0108 +:101D7000AC01C701B6010E94262C87FD96C0809158 +:101D80002F028F5F80932F0290E020910303309108 +:101D9000040382179307A0F080910E03882319F0A3 +:101DA00010922F020DC0809171008D7F8093710081 +:101DB000809190008F738093900010923C027DC0C0 +:101DC00080913002C0912F02811128C0C090080379 +:101DD000D0900903E0900A03F0900B0320E030E07C +:101DE000A901C701B6010E94262C1816BCF481E097 +:101DF000809330021092370210923802109239020A +:101E000010923A02C0923302D0923402E09235022C +:101E1000F0923602C150C0932F0243C0109230029C +:101E20001092290210922802E0910503F091060316 +:101E300048E0C49FE00DF11D112480819181A281B1 +:101E4000B3818093370290933802A0933902B09304 +:101E50003A0220E030E040E85EE3648175818681EB +:101E600097810E942A2C6B017C0180910A01682FC6 +:101E700070E080E090E00E94182B20E030E048EC19 +:101E800052E40E947F2A9B01AC01C701B6010E9467 +:101E90002A2C60933302709334028093350290931E +:101EA000360210923202109231028091070380FDB7 +:101EB00004C010923C0210923B02FF91EF91DF911F +:101EC000CF91BF91AF919F918F917F916F915F91D2 +:101ED0004F913F912F91FF90EF90DF90CF90BF9067 +:101EE000AF909F908F907F906F905F904F900F90EA +:101EF0000FBE0F901F901895CF92DF92EF92FF9236 +:101F0000CF93DF936B017C01EA0180912A0281115A +:101F100002C00E94770B8091070380FF46C080912A +:101F2000790290917A0208970CF03FC0809171007D +:101F30008D7F8093710080913C0281110E94910BF2 +:101F400081E080933B02109229021092280220E047 +:101F500030E0A901C701B6010E94262C1816DCF456 +:101F60008091790290917A02FC01EE0FFF1FEE0F33 +:101F7000FF1FEF5AFD4FC082D182E282F382FC0143 +:101F8000EE0FFF1FEF5BFD4FD183C083019690934F +:101F90007A0280937902809171008260809371004F +:101FA00080919000806880939000DF91CF91FF90A6 +:101FB000EF90DF90CF90089580910703817008958E +:101FC000809107038160809307030E9434250C945D +:101FD0005F05809107038E7F809307030C9434255F +:101FE00080917B0290E0019666E070E00E94F82DFF +:101FF00080937B02089580917B0290E0019766E0D8 +:1020000070E00E94F82D80937B0208958F929F923A +:10201000AF92BF92CF92DF92EF92FF920F931F93F6 +:10202000CF93DF936B017C01C0912802D0912902EC +:10203000BE0180E090E00E94182B4B015C01A701DB +:10204000960160E070E08CE594E40E947F2A9B0199 +:10205000AC01C501B4010E942A2C0E94EC2A2091F7 +:102060007B02233009F473C028F4222351F021307D +:10207000E9F02CC1243009F4A0C0253009F4E0C0F7 +:1020800025C180E090E0A0E0BFE38093060190933B +:102090000701A0930801B093090110922B0210923E +:1020A0002C0210922D0210922E0210C110922B02BF +:1020B00010922C0210922D0210922E0264317105A2 +:1020C00040F46A30710560F520E030E040E85EE3FE +:1020D0002BC0693C710508F0AAC080E090E00E9426 +:1020E000182B20E030E040EA51E40E94162A20E05C +:1020F00030E044E353E40E947F2A9B01AC010E943C +:102100002A2C20E030E040E05EE30E942A2C9B0174 +:10211000AC0160E070E080E09EE30E94162A44C0BB +:1021200020E030E040E05FE3C701B6010E942A2CC6 +:102130006B017C0180E090E0A0E0BEE380930601AB +:1021400090930701A0930801B0930901BFC01092BA +:102150002B0210922C0210922D0210922E024AE0B5 +:10216000469F9001479F300D1124C90168EB7BE029 +:102170000E94E42DBC016C5D754077FF03C0719532 +:1021800061957109882777FD8095982F0E941A2BF9 +:102190002EE333EC4EE259E30E942A2C20E030E09B +:1021A00040EC5EE30E94172A6093060170930701DA +:1021B000809308019093090189C010922B0210921C +:1021C0002C0210922D0210922E02CE0183709927BC +:1021D000892BE1F0BE016170772780E090E00E94DA +:1021E000182B20E030E040E05EE30E942A2C20E043 +:1021F00030E040E45FE30E94172A60930601709389 +:10220000070180930801909309010CC080E090E0E1 +:10221000A0E0BFE38093060190930701A09308011B +:10222000B0930901C770DD27CD2B09F04FC0109284 +:10223000060110920701109208011092090146C090 +:1022400010922B0210922C0210922D0210922E024C +:1022500000E010E020E03FE3009306011093070147 +:1022600020930801309309016739710578F180E006 +:1022700090E00E94182B20E030E047E153E40E94F8 +:10228000162A20E030E04AE754E40E947F2A20E04A +:1022900030E048E452E40E942A2C20E030E040EA9A +:1022A00051E40E945C2B0E94E72A660F771F660F9D +:1022B000771FFB01EE5AFE4F20813181428153810D +:1022C000C701B6010E942A2C6B017C01C701B6012F +:1022D000DF91CF911F910F91FF90EF90DF90CF9002 +:1022E000BF90AF909F908F90089580918C02089539 +:1022F000CF93DF9300D01F92CDB7DEB79C018091C2 +:102300001303843019F593E099833B832A839093D8 +:10231000E9008FEF9091E800815095FD06C095EDA2 +:102320009A95F1F700008111F5CF8091E80085FFC3 +:102330000DC040E050E063E070E0CE0101960E94E5 +:10234000D9138091E8008E778093E8000F900F906A +:102350000F90DF91CF910895CF93DF9300D01F921C +:10236000CDB7DEB720911303243021F522E0298375 +:102370009B838A8383E08093E9008FEF9091E8004C +:10238000815095FD06C095ED9A95F1F700008111F9 +:10239000F5CF8091E80085FF0DC040E050E063E09C +:1023A00070E0CE0101960E94D9138091E8008E77EB +:1023B0008093E8000F900F900F90DF91CF910895D8 +:1023C000209113032430F1F422E02093E9002FEF51 +:1023D0003091E800215035FD06C035ED3A95F1F712 +:1023E00000002111F5CF2091E80025FF0BC040E04F +:1023F00050E065E070E00E94D9138091E8008E778C +:102400008093E8000895CF93DF93EC01909113033C +:10241000943009F046C0809115018823D9F080914D +:1024200016018823B9F09093E9008FEF9091E800AE +:10243000815095FD06C095E19A95F1F70000811154 +:10244000F5CF8091E80085FF2CC040E050E060E1CE +:1024500070E017C081E08093E9008FEF9091E80071 +:10246000815095FD06C095ED9A95F1F70000811118 +:10247000F5CF8091E80085FF14C040E050E068E0AF +:1024800070E0CE010E94D9138091E8008E7780938E +:10249000E80080E1FE01ACE7B2E001900D928A9580 +:1024A000E1F7DF91CF91089580911203811109C066 +:1024B0000E946E150E94CB158091E200846080938B +:1024C000E2000895109212030895089508950C945F +:1024D000122442E061EC81E00E94E81442E061ECE9 +:1024E00082E00E94E81442E061EC83E00E94E8147C +:1024F00042E161EC84E00C94E81480911503833090 +:1025000009F455C030F4813071F0823009F48EC086 +:1025100008958A3009F47AC08B3009F460C089309C +:1025200009F09CC020C080911403813A09F096C044 +:102530008091E800877F8093E80080911803909154 +:102540001903892B21F460E18CE792E003C060E07D +:1025500080E090E070E00E9424148091E8008B7786 +:102560008093E800089580911403813209F076C0C9 +:102570008091180390911903009719F0039709F0BF +:102580006DC08091E800877F8093E8008091E8002B +:1025900082FD05C0809113038111F8CF5FC0809147 +:1025A000F10080938C028091E8008B7753C080917A +:1025B0001403813A09F052C08091180390911903D5 +:1025C000892B09F04BC08091E800877F8093E80059 +:1025D0008091E80080FFFCCF8091150136C080918A +:1025E00014038132D9F58091180390911903892B36 +:1025F000A9F58091E800877F8093E8000E941D156F +:1026000080911603809315010C94531D809114033F +:10261000813221F58091E800877F8093E8000E9455 +:102620001D158091170380938D02089580911403E6 +:10263000813AA1F48091E800877F8093E80080913F +:10264000E80080FFFCCF80918D028093F1008091A3 +:10265000E8008E778093E8000C941D15089584B7E8 +:10266000877F84BF88E10FB6F89480936000109252 +:1026700060000FBE90E080E80FB6F8948093610090 +:10268000909361000FBE0E94C0180E946E150E94B8 +:10269000CB158091E20084608093E20078940E94E0 +:1026A00051180E94C2188BE091E00E946C18809132 +:1026B0001303853069F40E94D3238091110388238A +:1026C000B1F30E940124882391F30E94C313EFCF3A +:1026D0000E94CA18ECCF292F332723303105C9F0C7 +:1026E00064F42130310581F02230310509F043C016 +:1026F0008DE690E020ED35E042C021323105F1F069 +:102700002232310541F137C082E190E02DE336E01D +:1027100036C099278130910541F08230910541F012 +:10272000892B49F5ECECF5E005C0EEE9F5E002C0D7 +:10273000E4E7F5E0849190E09F0121C06430D8F493 +:10274000E62FF0E0EE0FFF1FE255FE4F20813181B2 +:1027500089E090E014C0643070F470E0FB01EE0F8B +:10276000FF1FEA55FE4F20813181FB01EE55FE4FE0 +:10277000808190E004C080E090E020E030E0FA0149 +:1027800031832083089580E189BD82E189BD09B448 +:1027900000FEFDCF8091D8008F7D8093D80080917E +:1027A000E00082608093E0008091E00081FDFCCF3A +:1027B0000895CF92DF92EF92FF920F931F93CF93E2 +:1027C000DF93EC018B016A010E943C15811133C03B +:1027D000C114D10439F0F60180819181081B190BD5 +:1027E000C80FD91FE12CF12C0115110519F18091A9 +:1027F000E80085FD16C08091E8008E778093E800A0 +:10280000C114D10449F0F60180819181E80EF91ECE +:10281000F182E08285E00FC00E943C15882321F3FD +:102820000AC089918093F10001501109FFEFEF1A5E +:10283000FF0ADACF80E0DF91CF911F910F91FF90D7 +:10284000EF90DF90CF90089520911A0330911B03F1 +:102850002617370748F06115710539F42091E80013 +:102860002E772093E80001C0B90140E061157105A1 +:10287000A9F120911303222309F443C0253009F460 +:1028800042C02091E80023FD40C02091E80022FDD5 +:1028900032C02091E80020FFE9CF4091F300209161 +:1028A000F20030E0342BFC01CF016115710559F0C5 +:1028B0002830310540F481918093F1006150710915 +:1028C0002F5F3F4FF1CF41E02830310509F040E064 +:1028D0002091E8002E772093E800C8CF4111C9CF9E +:1028E0000AC080911303882361F0853061F08091E4 +:1028F000E80083FD0AC08091E80082FFF2CF80E00B +:10290000089582E0089583E0089581E0089520917C +:102910001A0330911B032617370748F0611571051C +:1029200039F42091E8002E772093E80001C0B90126 +:10293000FC0120E06115710591F18091130388235A +:1029400009F440C0853009F43FC08091E80083FD60 +:102950003DC08091E80082FD2FC08091E80080FF9B +:10296000E9CF2091F3008091F20090E0922B611565 +:10297000710559F08830910540F424912093F100BD +:102980003196615071090196F2CF21E0089709F064 +:1029900020E08091E8008E778093E800CBCF211172 +:1029A000CCCF0AC080911303882361F0853061F099 +:1029B0008091E80083FD0AC08091E80082FFF2CF99 +:1029C00080E0089582E0089583E0089581E008950D +:1029D000982F973058F59093E900981739F0709137 +:1029E000EC002091ED005091F00003C0242F762FD1 +:1029F00050E021FF19C03091EB003E7F3093EB0097 +:102A00003091ED003D7F3093ED003091EB0031606F +:102A10003093EB007093EC002093ED005093F000A6 +:102A20002091EE0027FF07C09F5FD3CF8F70809368 +:102A3000E90081E0089580E008958091140387FF04 +:102A400011C08091E80082FD05C0809113038111BF +:102A5000F8CF11C08091E8008B770BC080911303F1 +:102A6000882349F08091E80080FFF8CF8091E8004A +:102A70008E778093E80008952091E4003091E5007E +:102A800095E64091EC00842F817040FF22C0809138 +:102A9000E80080FD1CC080911303882391F08530ED +:102AA00091F08091EB0085FD10C04091E4005091C1 +:102AB000E5004217530729F39A01915011F784E07A +:102AC000089582E0089583E0089581E0089580E00C +:102AD00008954091E80042FFDECF08950E94DC1582 +:102AE0000E94E415E0EEF0E0808181608083E8EDF3 +:102AF000F0E080818F77808319BCA7EDB0E08C91E6 +:102B00008E7F8C9380818F7E808310921203089534 +:102B10000F931F93CF93DF930E94DC150E94E4155F +:102B2000C8EDD0E088818F7788838881806888832A +:102B300088818F7D888319BC1092130310920F0334 +:102B4000109211031092100300EE10E0F801808142 +:102B50008B7F808388818160888342E060E080E0B1 +:102B60000E94E814E1EEF0E080818E7F8083E2EE47 +:102B7000F0E0808181608083808188608083F801BB +:102B800080818E7F8083888180618883DF91CF916F +:102B90001F910F910895E8EDF0E080818F7E808392 +:102BA000E7EDF0E080818160808384E082BF81E096 +:102BB000809312030C948815E8EDF0E080818E7FFD +:102BC00080831092E20008951092DA001092E100E2 +:102BD00008951F920F920FB60F9211242F933F93D7 +:102BE0004F935F936F937F938F939F93AF93BF9315 +:102BF000EF93FF938091E10082FF0BC08091E20090 +:102C000082FF07C08091E1008B7F8093E1000E94EA +:102C100050188091DA0080FF1FC08091D80080FF9B +:102C20001BC08091DA008E7F8093DA008091D900FA +:102C300080FF0DC080E189BD82E189BD09B400FE3D +:102C4000FDCF81E0809313030E94541205C019BC8C +:102C5000109213030E9462128091E10080FF19C05C +:102C60008091E20080FF15C08091E2008E7F80930A +:102C7000E2008091E20080618093E2008091D800C0 +:102C800080628093D80019BC85E0809313030E9472 +:102C900066128091E10084FF30C08091E20084FFE1 +:102CA0002CC080E189BD82E189BD09B400FEFDCF61 +:102CB0008091D8008F7D8093D8008091E1008F7E35 +:102CC0008093E1008091E2008F7E8093E20080910A +:102CD000E20081608093E20080910F03882311F06D +:102CE00084E007C08091E30087FD02C081E001C05D +:102CF00083E0809313030E9467128091E10083FFB9 +:102D000029C08091E20083FF25C08091E100877F88 +:102D10008093E10082E08093130310920F0380916F +:102D2000E1008E7F8093E1008091E2008E7F8093AE +:102D3000E2008091E20080618093E20042E060E086 +:102D400080E00E94E8148091F00088608093F00099 +:102D50000E946512FF91EF91BF91AF919F918F916A +:102D60007F916F915F914F913F912F910F900FBE87 +:102D70000F901F9018951F920F920FB60F9211246B +:102D80002F933F934F935F936F937F938F939F9373 +:102D9000AF93BF93CF93DF93EF93FF93C091E9007D +:102DA000CF708091EC00D82FD17080FDD0E81092C8 +:102DB000E9008091F000877F8093F00078940E9472 +:102DC000FF161092E9008091F00088608093F00077 +:102DD000CD2BCF70C093E900FF91EF91DF91CF91A0 +:102DE000BF91AF919F918F917F916F915F914F9123 +:102DF0003F912F910F900FBE0F901F9018951F932A +:102E0000CF93DF93CDB7DEB7AA970FB6F894DEBFA6 +:102E10000FBECDBFE4E1F3E088E08E0F9091F100AA +:102E200091938E13FBCF0E947D128091E80083FF67 +:102E30001FC18091140390911503492F50E04A302F +:102E4000510508F015C1FA01EA59FF4F0C940C2EF8 +:102E5000803881F0823809F00BC1809118038F709F +:102E60008093E9008091EB0085FB882780F9109220 +:102E7000E90006C0809110039091110391118260C6 +:102E80009091E800977F9093E8008093F100109272 +:102E9000F100C8C0282F2D7F09F0EAC0882319F05F +:102EA000823061F0E5C080911603813009F0E0C006 +:102EB000933009F080E0809311032BC080911603BA +:102EC000811127C0809118038F7009F4D1C08093BD +:102ED000E9002091EB0020FF1CC0933021F4809189 +:102EE000EB00806214C09091EB0090619093EB0036 +:102EF00021E030E0A90102C0440F551F8A95E2F796 +:102F00004093EA001092EA008091EB008860809381 +:102F1000EB001092E9008091E800877F86C0811164 +:102F2000A7C0109116031F778091E3008078812B52 +:102F30008093E3008091E800877F8093E8000E94FF +:102F40001D158091E80080FFFCCF8091E300806830 +:102F50008093E300111102C082E001C083E08093FE +:102F6000130386C08058823008F082C08091160317 +:102F7000909117038C3D53E0950779F583E08A83A0 +:102F80008AE289834FB7F894DE01139620E03EE091 +:102F900051E2E32FF0E050935700E49120FF03C08B +:102FA000E295EF703F5FEF708E2F90E0EA3010F007 +:102FB000C79601C0C0968D939D932F5F243149F72A +:102FC0004FBF8091E800877F8093E8006AE270E05D +:102FD000CE0101960E94241414C0AE014F5F5F4FD2 +:102FE000609118030E946B13BC01009709F440C064 +:102FF0009091E800977F9093E80089819A810E94E0 +:1030000087148091E8008B778093E80031C0803886 +:1030100079F58091E800877F8093E80080910F0325 +:103020008093F1008091E8008E778093E8000E9401 +:103030001D151EC081111CC0909116039230C0F462 +:103040008091E800877F8093E80090930F030E94AF +:103050001D1580910F03811106C08091E30087FD4B +:1030600002C081E001C084E0809313030E946912D2 +:103070008091E80083FF0AC08091E800877F8093F9 +:10308000E8008091EB0080628093EB00AA960FB677 +:10309000F894DEBF0FBECDBFDF91CF911F91089591 +:1030A0000895CF93809113038823A1F0C091E90084 +:1030B000CF709091EC00892F817090FD80E8C82B33 +:1030C0001092E9008091E80083FD0E94FF16CF7006 +:1030D000C093E900CF910895909393028093920258 +:1030E0000895E0919202F0919302309721F00190BF +:1030F000F081E02D099480E00895E0919202F09132 +:103100009302309721F00280F381E02D0994089515 +:10311000E0919202F0919302309721F00480F581C2 +:10312000E02D099408952091900230919102821728 +:10313000930771F09093910280939002E091920234 +:10314000F0919302309721F00680F781E02D0994E9 +:10315000089520918E0230918F028217930771F0AB +:1031600090938F0280938E02E0919202F0919302ED +:10317000309721F00084F185E02D09940895089599 +:103180000C94BF180E9446240E94970A0E94CC24E7 +:103190000C947B295F926F927F928F929F92AF9255 +:1031A000BF92CF92DF92EF92FF920F931F93CF9334 +:1031B000DF9300D000D01F92CDB7DEB70E94DC0AAB +:1031C0009DE9C92E92E0D92E03E010E0AA24A39431 +:1031D000B12C502E802F0E94570B4C01F60172909B +:1031E00062906F016826792661147104A1F4015080 +:1031F000110978F78FEF89838A831B820E944F24FD +:103200008160782F9D838C8349815A816B818D8168 +:103210000E947A1938C08091F20281FD0E94600BF1 +:103220002BE030E07501022E02C0EE0CFF1C0A9468 +:10323000E2F7C70186219721892B09F129835A8258 +:103240008E209F2091E0892809F490E09B830E94C2 +:103250004F248160782F9D838C8349815A816B81B3 +:103260008D810E947A19000F111FF801EB56FD4F56 +:1032700080819181E826F926F182E08204C0215004 +:10328000310980F6B4CF0E94B326109194020E94B7 +:1032900071181817D1F00E947118809394020F9042 +:1032A0000F900F900F900F90DF91CF911F910F9182 +:1032B000FF90EF90DF90CF90BF90AF909F908F9056 +:1032C0007F906F905F900C94810A0F900F900F90F9 +:1032D0000F900F90DF91CF911F910F91FF90EF9082 +:1032E000DF90CF90BF90AF909F908F907F906F9026 +:1032F0005F900895CF93DF93CDB7DEB72B970FB6CE +:10330000F894DEBF0FBECDBF4F83588769877A8799 +:103310008B87DE01119686E0FD0111928A95E9F70F +:1033200085E0FE01379601900D928A95E1F749817B +:103330005A816B817C818D819E810E94F11F2B9629 +:103340000FB6F894DEBF0FBECDBFDF91CF910895C9 +:10335000CF93882309F4C2C0C82F823859F40E9441 +:10336000711881FDBBC089E30E94CB220E94982383 +:1033700089E30CC0833879F40E94711880FDAEC0D7 +:1033800083E50E94CB220E94982383E50E940D23AF +:10339000CF910C949823843859F40E94711882FDBF +:1033A0009DC087E40E94CB220E94982387E4EECF41 +:1033B0008CEF8C0F813A48F48C2F0E94E328811106 +:1033C0008DC08C2F0E94CB22E3CF80E28C0F8830FF +:1033D00048F4C77081E001C0880FCA95EAF70E94DF +:1033E0005123D6CF8BE58C0F833078F4C53A29F082 +:1033F000C63A31F083E890E005C081E890E002C071 +:1034000082E890E0CF910C94931888E58C0F83317B +:1034100008F064C0C83A39F1C93A41F1CA3A49F1F1 +:10342000CB3A51F1CC3A59F1CD3A61F1C03B69F157 +:10343000CE3A71F1CF3A79F1C13B81F1C23B89F1CA +:10344000C33B91F1C43B99F1C53BA1F1C63BA9F146 +:10345000C73BB1F1C83BB9F1C93BC1F1CA3BC9F1A6 +:1034600080E090E038C082EE90E035C089EE90E0D8 +:1034700032C08AEE90E02FC085EB90E02CC086EB46 +:1034800090E029C087EB90E026C08CEC90E023C050 +:103490008DEC90E020C083E891E01DC08AE891E0C7 +:1034A0001AC082E991E017C084E991E014C081E27A +:1034B00092E011C083E292E00EC084E292E00BC081 +:1034C00085E292E008C086E292E005C087E292E0E1 +:1034D00002C08AE292E0CF910C94A918CF9108958E +:1034E000882309F44BC0823859F40E94711881FF77 +:1034F00045C089E30E94CB220E94982389E30CC037 +:10350000833871F40E94711880FF38C083E50E94EF +:10351000CB220E94982383E50E940D230C949823CC +:10352000843859F40E94711882FF28C087E40E94F1 +:10353000CB220E94982387E4EFCF9CEF980F913A1B +:1035400058F390E2980F983050F4877091E001C0E2 +:10355000990F8A95EAF7892F0E945723DFCF9BE5C1 +:10356000980F933020F480E090E00C949318885AE0 +:10357000833120F480E090E00C94A918089588230A +:1035800021F00E9451230C9498230895882321F060 +:103590000E9457230C94982308957F928F929F92B4 +:1035A000AF92BF92CF92DF92EF92FF920F931F9351 +:1035B000CF93DF931F92CDB7DEB77C01C62E772E57 +:1035C000FC01058102950F70128111110E946E237A +:1035D0000E94C422882379F0112369F080E28C0DC7 +:1035E000883048F082E00E94AD220E94C42291E01F +:1035F000D82ED92601C0D12CE72DE295EF70F0E04E +:10360000E059FF4F0C940C2E872D807F072D0F70F3 +:10361000882311F00295007F112389F0002309F41B +:1036200099C180E28C0D883020F4802F0E945123B4 +:1036300003C0802F0E9461230E9498238BC18C2D90 +:103640000E94701A002309F4C3C180E28C0D8830F7 +:1036500020F4802F0E94572303C0802F0E946723ED +:103660000E949823B5C1872D807F972D9F7080324F +:1036700011F4892F03C0892F8295807FCC2021F0FF +:10368000F1E0CF16A1F01DC0112339F0002319F18C +:10369000013009F50E9481239BC1002319F00130FC +:1036A00009F496C189830E948423898110C1112362 +:1036B00021F0063008F08CC10EC0053008F088C13A +:1036C00006C1112359F0002331F0F701958190FFD5 +:1036D00041C19F7095830E94BF1A7AC1002309F4EB +:1036E000F6C03EC1872D86958695837090E0009741 +:1036F00019F0019761F06CC1112321F08C2D972DE9 +:10370000937002C080E090E00E94931861C1112381 +:1037100021F08C2D972D937002C080E090E00E94E4 +:10372000A91856C18C2D112319F00E94BB2502C087 +:103730000E9423260E94A8264BC1872D837009F082 +:1037400052C0111145C18C2D829586958770880FC6 +:10375000880F9C2D9F70892E912CA12CB12C082EA6 +:1037600004C0880C991CAA1CBB1C0A94D2F7C4FE86 +:1037700014C00FE010E020E030E0B901A80104C05F +:10378000440F551F661F771F8A95D2F7CB01BA01E8 +:10379000609570958095909503C060E070E0CB01D6 +:1037A000272D26952695237030E02230310569F0CB +:1037B0002330310589F0682979298A299B2921300C +:1037C000310571F00E94392103C1682979298A29BC +:1037D0009B290E945521FCC00E943921C501B401DA +:1037E0000E941D21F5C0112319F0872D817001C0A1 +:1037F0008695882309F4ECC08C2D82958695877078 +:10380000880F880F9C2D9F70892E912CA12CB12C94 +:10381000082E04C0880C991CAA1CBB1C0A94D2F761 +:10382000C4FE14C00FE010E020E030E0B901A801B0 +:1038300004C0440F551F661F771F8A95D2F7CB012E +:10384000BA01609570958095909503C060E070E036 +:10385000CB01272D269526952370422F50E042302C +:10386000510569F04330510589F0682979298A2981 +:103870009B294130510571F00E941322A9C068298B +:1038800079298A299B290E942F22A2C00E941322F3 +:10389000C501B4010E94F7219BC08C2D90E0FC0172 +:1038A000E05EF109E531F10508F050C0E058FF4F46 +:1038B0000C940C2E0C2D0F70872D8F71112321F07D +:1038C0000E949021802F07CF0E94B121802F0E945B +:1038D000C61A7EC0112341F0053008F079C0872D4B +:1038E0008F710E94D62174C0063008F071C0F7CFE6 +:1038F000112339F0872D8F710E94902169C0112307 +:10390000C9F3872D8F710E94B12162C0112329F064 +:10391000872D8F710E947B215BC00E94712158C04E +:10392000112351F0172D1F71812F0E94902163E008 +:10393000812F0E94A4224CC081E00E94AD2202305F +:1039400008F446C082E00E94AD2242C0112331F04B +:10395000002381F28C2D0E94A8193AC0002389F21D +:103960008C2D0E94701A34C0472D4F706C2DC701EA +:103970000E9499040E9495202BC0111129C0472D47 +:103980004F7050E042305105B9F04CF441155105EB +:1039900081F041305105E1F40E94A32919C0433060 +:1039A000510569F04430510599F48C2D0E94F52998 +:1039B0000FC00E948C290CC00E94BF2909C00E9420 +:1039C000D22906C0472D4F706C2DC7010E94620797 +:1039D000DD20F9F00E94A02280FD1BC0F7011282B9 +:1039E0000E949A220E949021C7010E94181D0E94E5 +:1039F0009A220F90DF91CF911F910F91FF90EF903E +:103A0000DF90CF90BF90AF909F908F907F900C945D +:103A1000B1210F90DF91CF911F910F91FF90EF9007 +:103A2000DF90CF90BF90AF909F908F907F90089540 +:103A30000F931F93CF93DF93EC01888199812B81A2 +:103A40003C81232BB9F09F3F11F48F3F99F0CE01B9 +:103A50000E946105882371F0688179818A810E94C2 +:103A600096228C010E944B220E941221B801CE01A5 +:103A70000E94CD1ADF91CF911F910F9108950E945E +:103A80006E230E947E230E9443230E9498230E945B +:103A900059270E94A82680E090E00E94931880E0B9 +:103AA00090E00C94A9180E945E230C943F1D0E9484 +:103AB0008B22292F22952F7030E02C3031054CF4C9 +:103AC0002A3031056CF42250310922303105A8F436 +:103AD00007C02C30310569F02F30310551F00DC091 +:103AE000803F69F018F4803E40F409C0843F29F417 +:103AF00006C093FB882780F9089580E0089581E04F +:103B00000895CF93DF9300D000D01F92CDB7DEB7DA +:103B10000F900F900F900F900F90DF91CF9108951D +:103B2000CF93DF9300D000D000D0CDB7DEB726967C +:103B30000FB6F894DEBF0FBECDBFDF91CF910895D1 +:103B40001F93CF93DF93C0919D0216E080919E0258 +:103B5000C81799F0D0E01C9FF0011D9FF00D1124B3 +:103B6000E156FD4F4081518162817381848195814D +:103B70000E94901D2196C770E9CFDF91CF911F91D0 +:103B800008954091CF025091D0026091D10270917E +:103B9000D2028091D3029091D4020C94901D809116 +:103BA000D40282958F7009F054C08091D10288238D +:103BB00009F44FC080919D02A0919E026091CF02B6 +:103BC0007091D0024091D2025091D302B6E08A1790 +:103BD00009F43FC090E041155105C1F17F3F11F458 +:103BE0006F3FA1F1B89FF001B99FF00D1124E1568C +:103BF000FD4F218172132AC02081621327C02281C8 +:103C0000211124C0238134812417350710F4215059 +:103C10003109241B350B283C3105C0F42091D40216 +:103C20002F7020612093D40226E0289FF001299F65 +:103C3000F00D1124EC55FD4F80818F7080618083E1 +:103C40008FEC92E00E94181D0C94A01D01968770C5 +:103C5000BECF0895CF92DF92EF92FF920F931F9302 +:103C6000CF93DF93CDB7DEB762970FB6F894DEBF80 +:103C70000FBECDBF8C0185E0F801DE011D960190DD +:103C80000D928A95E1F7D8014C9111965C911197AC +:103C900012966C9112971396CD90DC9014973091F8 +:103CA000CF027091D0028091D2029091D3020097FE +:103CB00009F46BC17F3F19F43F3F09F466C1E090FE +:103CC000D102EE2009F4C0C02091D402C816D90652 +:103CD00028F0F601E81BF90BCF0104C08095909500 +:103CE0008C0D9D1DFF24F394883C910578F0F12CF8 +:103CF000207F09F0C6C07C2DD98AC88A89890E9494 +:103D0000811D8FEC92E00E94181DB1C0822F807F30 +:103D100009F046C0751314C0341312C0611110C0ED +:103D20002F7020612093D4020E94C11D8FEC92E07D +:103D30000E94181D8091D402D80115968C932EC034 +:103D4000CD2819F15F3F11F44F3FF9F0F62E6111C4 +:103D50001CC080919D0220919E0236E0821709F4DA +:103D60005AC090E0389FF001399FF00D1124E156C0 +:103D7000FD4F7181571306C07081471303C07281D4 +:103D8000711103C001968770E9CFF62E662309F4FE +:103D900018C18091D40281608093D402F12C11C1AA +:103DA000751308C0341306C0611104C08091D40299 +:103DB000D801C3C04D875E878D859E856A8B0E9422 +:103DC000571D6A898823E1F16623D1F12091D4023D +:103DD000822F82958F7090E0029774F08091CF02CD +:103DE0009091D00298878F831986DB86CA862C87AC +:103DF000CE0107960E94181D86E0F801AFECB2E0F4 +:103E000001900D928A95E1F70E94CF1D0E94C11D7D +:103E1000FF24F394D6C04D875E878D859E850E94D2 +:103E20008B22292F22952F7030E0223031050CF0A3 +:103E3000BCC09F7009F0B6C0805E883008F4C1C075 +:103E4000C8010E94181DE4CFC816D90608F453C053 +:103E5000F601E81BF90BCF01883C910508F450C02E +:103E6000F12C7C2DD98AC88A89890E94811DEFECAA +:103E7000F2E086E0DF011D928A95E9F70E94C11DFC +:103E8000A0C0751314C0341312C0611110C080910A +:103E9000D402F8018583C8010E94181D86E0EFEC6A +:103EA000F2E0DF011D928A95E9F7FE2C8AC04D876A +:103EB0005E878D859E856A8B0E94571D6A8988233F +:103EC00009F4BECF662309F4BBCF2091D402822F20 +:103ED00082958F7090E002970CF48ECF8091CF0284 +:103EE0009091D0029A8389831B82DD82CC822E83BB +:103EF000CE0101967FCF809590958C0D9D1DACCF06 +:103F0000F62E662309F49CCF75132EC034132CC0F3 +:103F10002091D40220FD1FC0822F82958F70D9F08E +:103F2000D80115962C9315978F3049F08F5F982FF5 +:103F30009295907F822F8F70892B15968C93C80154 +:103F40000E94181D86E0F801AFECB2E001900D92DE +:103F50008A95E1F793CF86E0F801AFECB2E00190EB +:103F60000D928A95E1F72DC04D875E878D859E85E0 +:103F70000E94571D811140CF8091D40281608093AF +:103F8000D402C8010E94181D1CC0662309F458CF32 +:103F90004D875E878D859E850E94571D882309F475 +:103FA0004FCF2ACF811148CF0CC0243031050CF0FF +:103FB00047CF9F7009F440CFF8019581907F09F0B9 +:103FC0003BCF8F2D62960FB6F894DEBF0FBECDBFEC +:103FD000DF91CF911F910F91FF90EF90DF90CF90E5 +:103FE00008951F93CF93DF93CDB7DEB72C970FB60D +:103FF000F894DEBF0FBECDBF4F83588769877A879D +:104000008B879C87CE0107960E942A1E882369F021 +:104010008F8198852A853B85232BF1F19F3F09F0FD +:1040200063C08F3F09F060C037C086E0FE0137965D +:10403000DE01119601900D928A95E1F76F817885E6 +:10404000EA85FB85309741F17F3F11F46F3F21F105 +:1040500020919E0230E0C901019687709927409116 +:104060009D0250E08417950709F447C069837A835D +:10407000FD83EC8396E0929FD001939FB00D1124B5 +:10408000A156BD4FFE01319601900D929A95E1F730 +:1040900080939E020E94A01D16E080919D02909147 +:1040A0009E028917C1F1189FC001112481569D4FAE +:1040B0000E942A1E882379F1E0919D021E9FF00143 +:1040C0001124E156FD4F40815181628173818481C9 +:1040D00095810E94901D80919D0290E001968770CD +:1040E000992780939D02D9CF4F81588569857A851C +:1040F0008B859C850E94901DCFCF0E94531D1092EE +:104100009E0210929D02EFECF2E086E0DF011D922C +:104110008A95E9F7C1CF2C960FB6F894DEBF0FBE93 +:10412000CDBFDF91CF911F910895EF92FF920F9332 +:104130001F93CF93DF938C01009709F46CC0F12C8F +:10414000EE24E394E8012196F8018491843740F449 +:10415000843008F051C0813081F0823019F15BC0A9 +:10416000853709F444C0A8F19CE7980F903708F010 +:1041700052C08F770E94701A41C00E5F1F4FFE0120 +:10418000C49180E28C0F883048F4C7708E2D01C036 +:10419000880FCA95EAF70E94712314C08C2F0E94E1 +:1041A000A8192DC00E5F1F4FFE01C49180E28C0F35 +:1041B000883058F4C7708E2D01C0880FCA95EAF771 +:1041C0000E9477230E9498231AC08C2F0E94701A95 +:1041D00016C00E5F1F4FFE01C491CC2381F08FE902 +:1041E0009FE00197F1F700C00000C150F6CF0E5FCD +:1041F0001F4FFE01F49003C00E94A8198E018F2D5D +:10420000882309F49FCFEFE9FFE03197F1F700C071 +:1042100000008150F5CFDF91CF911F910F91FF905A +:10422000EF90089508956093D9027093DA02809315 +:10423000DB029093DC020C943F1D0F931F930091BF +:10424000D9021091DA022091DB023091DC02DC010C +:10425000CB01802B912BA22BB32B8093D90290936F +:10426000DA02A093DB02B093DC021F910F910C9451 +:104270003F1D0F931F930091D9021091DA022091F4 +:10428000DB023091DC02DC01CB0180239123A223ED +:10429000B3238093D9029093DA02A093DB02B09308 +:1042A000DC021F910F910C943F1D0F931F930091FF +:1042B000D9021091DA022091DB023091DC02DC019C +:1042C000CB0180279127A227B3278093D90290930F +:1042D000DA02A093DB02B093DC021F910F910C94E1 +:1042E0003F1D1092D5021092D6021092D702109262 +:1042F000D8020C943F1D41E050E060E070E004C043 +:10430000440F551F661F771F8A95D2F74093D50239 +:104310005093D6026093D7027093D8020C943F1D3D +:1043200041E050E060E070E004C0440F551F661F9C +:10433000771F8A95D2F78091D5029091D602A091ED +:10434000D702B091D802482B592B6A2B7B2B409374 +:10435000D5025093D6026093D7027093D8020C9482 +:104360003F1D41E050E060E070E004C0440F551F85 +:10437000661F771F8A95D2F7409550956095709586 +:104380008091D5029091D602A091D702B091D80227 +:10439000482359236A237B234093D5025093D602A6 +:1043A0006093D7027093D8020C943F1D41E050E017 +:1043B00060E070E004C0440F551F661F771F8A95A8 +:1043C000D2F78091D5029091D602A091D702B091F8 +:1043D000D802482759276A277B274093D502509354 +:1043E000D6026093D7027093D8020C943F1D0F93AE +:1043F0001F930091D5021091D6022091D7023091DF +:10440000D802DC01CB01802B912BA22BB32B809304 +:10441000D5029093D602A093D702B093D8021F91F1 +:104420000F910C943F1D0F931F930091D502109193 +:10443000D6022091D7023091D802DC01CB01802333 +:104440009123A223B3238093D5029093D602A09305 +:10445000D702B093D8021F910F910C943F1D0F9378 +:104460001F930091D5021091D6022091D70230916E +:10447000D802DC01CB0180279127A227B3278093A4 +:10448000D5029093D602A093D702B093D8021F9181 +:104490000F910C943F1D0895CF92DF92EF92FF92FF +:1044A0000F931F93CF93DF938C01C090D902D090CC +:1044B000DA02E090DB02F090DC028091D50290916C +:1044C000D602A091D702B091D802C82AD92AEA2AE6 +:1044D000FB2ACFE1D0E0D701C6010C2E04C0B6956F +:1044E000A795979587950A94D2F780FF06C0B801E3 +:1044F0008C2F0E94E709019721F4219760F780E053 +:1045000001C08C2FDF91CF911F910F91FF90EF9001 +:10451000DF90CF900895CF93DF93EC010E944C225F +:10452000BE010E94E709DF91CF910895CB010E945F +:104530008B2208958091DD02859585958595089556 +:104540008091DD028770089598E0899F9001112481 +:10455000262B2093DD020C9490212091DD02809582 +:1045600082238093DD02982F977069F430E0482F02 +:10457000552747FD50952417350729F085958595D2 +:1045800085950C94B12108959091DD02977081E09A +:1045900009F480E0089590911501992321F09091FC +:1045A0001601911109C02091170130911801F901EC +:1045B00032969FEF40E01FC0982F9695969596955E +:1045C0009F3050F5E0911701F0911801E90FF11DAE +:1045D000877021E030E0A90102C0440F551F8A9581 +:1045E000E2F7CA019181892B818308959F3F39F0B9 +:1045F0004F5F4E3041F051915813F8CF0DC051111B +:10460000F7CF942FF5CF9F3F39F0F901E90FF11D56 +:1046100097FDFA9582830895089590911501992345 +:1046200021F090911601911109C02091170130914C +:104630001801F9013296205F3F4F1FC0982F9695C1 +:10464000969596959F30F0F4E0911701F09118013E +:10465000E90FF11D877021E030E0A90102C0440F8D +:10466000551F8A95E2F7CA0180959181892381833C +:1046700008953196E217F30729F090819813F9CF46 +:104680001082F7CF089581E090E0E0911701F0915A +:104690001801E80FF91F1082019680319105A9F7E2 +:1046A00008959091F102892B8093F10208958095ED +:1046B0009091F10289238093F10208951092F10202 +:1046C00008959091F002892B8093F00208958095CF +:1046D0009091F00289238093F00208951092F002E5 +:1046E00008959091EF02892B8093EF0208958095B1 +:1046F0009091EF0289238093EF0208951092EF02C8 +:1047000008958093DE0208951092DE02089580914C +:10471000170190911801FC0131969C01205F3F4FD9 +:1047200080E0919191118F5FE217F307D1F708951F +:10473000E0911701F09118018091F1028083E091DE +:104740001701F091180190818091F002892B8083EC +:10475000E0911701F091180190818091EF02892B6F +:1047600080838091DE02882361F0E0911701F0914F +:1047700018019081892B80830E94872381111092D8 +:10478000DE0280911701909118010C947D1820E0B1 +:10479000009739F0AC0141505109842395232F5FD4 +:1047A000F7CF822F089580911303843039F110924E +:1047B000F30220E488E190E00FB6F894A895809386 +:1047C00060000FBE2093600080E00E94000480E043 +:1047D0000E94810A83B7817F846083BF83B7816031 +:1047E00083BF7894889583B78E7F83BF88E10FB6A7 +:1047F000F89480936000109260000FBE08950895B1 +:10480000089580E00E9400040E94FF230E94DC0AB9 +:104810000E9400240E94610B91E0811101C090E090 +:10482000892F08950E94531D80E00E9400040E9479 +:104830007B290E9471180C94810A1F920F920FB667 +:104840000F9211248F939F93AF93BF938091F302A4 +:10485000811113C08091F4029091F502A091F602AB +:10486000B091F7024196A11DB11D8093F40290937F +:10487000F502A093F602B093F702BF91AF919F911A +:104880008F910F900FBE0F901F90189582E084BDFE +:1048900093E095BD9AEF97BD80936E0008952FB772 +:1048A000F8948091F4029091F502A091F602B091F3 +:1048B000F7022FBF0895CF92DF92EF92FF920F93EE +:1048C0001F932FB7F8944091F4025091F502609134 +:1048D000F6027091F7022FBF6A017B01EE24FF24DC +:1048E0008C0120E030E0C016D106E206F30610F499 +:1048F000415051099A01281B390BC9011F910F9191 +:10490000FF90EF90DF90CF9008951F920F920FB617 +:104910000F9211248F939F93AF93BF938091F402D2 +:104920009091F502A091F602B091F7020196A11DB7 +:10493000B11D8093F4029093F502A093F602B09318 +:10494000F702BF91AF919F918F910F900FBE0F9083 +:104950001F9018950E946E15F8942FEF87EA91E644 +:10496000215080409040E1F700C0000087E090EBCC +:10497000DC0180931E0390931F03A0932003B09348 +:1049800021039CE088E10FB6F894A895809360001D +:104990000FBE90936000FFCF0E940B25811102C0D3 +:1049A0000E94E7240E9416258093F2020E941E2591 +:1049B00080931C0387FB882780F9809316010E944F +:1049C0001A25682F70E080E090E00C9413216DEEC2 +:1049D0007EEF80E090E00E94322E60E082E090E086 +:1049E0000E94202E60E083E090E00E94202E60E094 +:1049F00084E090E00E94202E60E085E090E00E943C +:104A0000202E60E086E090E00E94202E6FEF87E08D +:104A100090E00C94202E80E090E00E941A2E21E07D +:104A20008D3E9E4F09F020E0822F089582E090E0B5 +:104A30000C94122E83E090E00C94122E84E090E00F +:104A40000C94122E682F84E090E00C94202E86E0C7 +:104A500090E00C94122E682F86E090E00C94202EAB +:104A600087E090E00C94122E682F87E090E00C9481 +:104A7000202E8091FA0280FF0BC060911C0185E01E +:104A8000689FB001112475956795759567952BC042 +:104A900081FF09C060911C0185E0689FB00111246D +:104AA0007595679520C082FF07C060911C0185E065 +:104AB000689FB001112417C09091FB029923D1F097 +:104AC00060911B01961788F720911C0185E0289FB3 +:104AD00090011124929FA001939F500D112470E02A +:104AE000CA010E94F82D6038710540F46115710506 +:104AF00039F002C065E070E0862F08958FE70895D1 +:104B000081E008958091FA0280FF08C060911A0147 +:104B100070E0759567957595679521C081FF06C012 +:104B200060911A0170E07595679519C082FF04C005 +:104B300060911A0170E010C09091FB029923C1F0BE +:104B4000609119019617A0F780911A01899FC00101 +:104B5000112470E00E94F82D6038710528F4611569 +:104B6000710521F0862F08958FE7089581E008955B +:104B700061E070E0F4CF803F21F40E9439258195F7 +:104B800004C0813F29F40E9439258093FE020895D4 +:104B9000823F21F40E943925819504C0833F29F486 +:104BA0000E9439258093FD020895893F19F40E94DF +:104BB000822505C08A3F31F40E9482258195809329 +:104BC000FF0208958B3F21F40E948225819504C045 +:104BD0008C3F29F40E948225809300030895843F2E +:104BE00021F48091FC02816017C0853F21F48091FF +:104BF000FC02826011C0863F21F48091FC02846037 +:104C00000BC0873F21F48091FC02886005C0883F7B +:104C100031F48091FC0280618093FC0208958D3F05 +:104C200021F48091FA0281600BC08E3F21F48091C3 +:104C3000FA02826005C08F3F29F48091FA028460F5 +:104C40008093FA020895803F39F48091FE0287FF35 +:104C50006CC01092FE0269C0813F29F48091FE026F +:104C60001816BCF362C09091FD02823F29F497FFB1 +:104C70005CC01092FD0259C0833F19F41916CCF3A1 +:104C800054C0893F41F48091FF0218160CF04DC0CA +:104C90001092FF024AC08A3F29F48091FF0287FFE9 +:104CA00044C0F6CF8B3F39F48091000387FF3DC0AD +:104CB000109200033AC08C3F29F48091000318162B +:104CC000BCF333C0843F21F48091FC028E7F17C077 +:104CD000853F21F48091FC028D7F11C0863F21F435 +:104CE0008091FC028B7F0BC0873F21F48091FC02F6 +:104CF000877F05C0883F31F48091FC028F7E8093CE +:104D0000FC0213C08D3F21F48091FA028E7F0BC00C +:104D10008E3F21F48091FA028D7F05C08F3F29F4E8 +:104D20008091FA028B7F8093FA028091FD028111BB +:104D30000EC08091FE0281110AC08091FF02811194 +:104D400006C080910003811102C01092FB020895F9 +:104D50008CEF92E00E9488180E944F249093F902F1 +:104D60008093F80208951F93CF93DF938091F80208 +:104D70009091F9020E945B24AC019091FB0299236F +:104D800021F020911D0130E006C020911E018AE033 +:104D9000289F900111244217530708F486C0809180 +:104DA000FD02C091FE02D091FF021091000381111B +:104DB00007C0C11176C0D11174C0111172C075C085 +:104DC0009F3F19F09F5F9093FB02181624F40E94F6 +:104DD00039258093FD028091FD0287FF05C00E9466 +:104DE000392581958093FD021C1624F40E943925F3 +:104DF0008093FE028091FE0287FF05C00E94392544 +:104E000081958093FE026091FD02662339F1C09185 +:104E1000FE02CC2319F1772767FD7095872F972F16 +:104E20000E941A2B23E333E343E35FE30E942A2C1F +:104E30000E94E72A6093FD026C2F772767FD70952B +:104E4000872F972F0E941A2B23E333E343E35FE37B +:104E50000E942A2C0E94E72A6093FE021D1624F469 +:104E60000E9482258093FF028091FF0287FF05C088 +:104E70000E94822581958093FF02111624F40E94DE +:104E80008225809300038091000387FF05C00E9464 +:104E90008225819580930003DF91CF911F910C941F +:104EA000A8269F3F09F08ECF96CFDF91CF911F911B +:104EB0000895ECEFF2E085E0DF011D928A95E9F7B5 +:104EC0001092FB021092FA020895833081F128F4C7 +:104ED000813059F08230D1F00895853009F449C00D +:104EE000B8F1863009F456C0089580911E01262F2E +:104EF00030E0280F311D2F3F310524F4680F6093F7 +:104F00001E0108958FEF80931E01089580911D0169 +:104F1000262F30E0280F311D2F3F310524F4680F74 +:104F200060931D0108958FEF80931D010895809176 +:104F30001C01262F30E0280F311D2F3F310524F4AE +:104F4000680F60931C0108958FEF80931C010895F2 +:104F500080911B01262F30E0280F311D2F3F310596 +:104F600024F4680F60931B0108958FEF80931B0159 +:104F7000089580911A01262F30E0280F311D2F3F10 +:104F8000310524F4680F60931A0108958FEF809320 +:104F90001A01089580911901262F30E0280F311D44 +:104FA0002F3F310524F4680F6093190108958FEFA6 +:104FB000809319010895833011F128F4813049F06C +:104FC000823091F00895853081F120F18630C1F171 +:104FD000089580911E01681720F4861B80931E019E +:104FE000089510921E01089580911D01681720F404 +:104FF000861B80931D01089510921D0108958091D4 +:105000001C01681720F4861B80931C0108951092E0 +:105010001C01089580911B01681720F4861B809362 +:105020001B01089510921B01089580911A016817C1 +:1050300020F4861B80931A01089510921A01089596 +:1050400080911901681720F4861B80931901089537 +:105050001092190108950F931F93873208F048C0EA +:105060008E3108F08DC0803109F477C008F58730A3 +:1050700009F461C068F4863009F09DC08091F202A5 +:10508000817F8E7F8093F20281E08093020394C03F +:105090008B3009F489C08E3009F08DC08091F20206 +:1050A00082FB222720F991E0922790FB82F95EC0D3 +:1050B000863109F479C060F4813109F07CC00E9426 +:1050C000531D9091160181E08927809316016CC0D1 +:1050D000893109F469C08B3109F06DC08091F20209 +:1050E00081FB222720F991E0922790FB81F93EC0B5 +:1050F000883309F459C050F4893209F457C0853314 +:1051000009F454C0873209F451C055C0833409F4FE +:105110004DC028F48A3308F44EC0895332C0883415 +:1051200009F049C00E94531D0E94910B0E9458052E +:105130000E94AA2439C09091F202892F8095817033 +:1051400080FB90F929F0966098609093F20234C049 +:10515000997F977F9093F20227C08091F20283FBA0 +:10516000222720F991E0922790FB83F98093F202A5 +:105170009923D1F08091F20281608093F20214C0F1 +:105180008D5141E050E060E070E08A019B0104C075 +:10519000000F111F221F331F8A95D2F7C901B801D2 +:1051A0000E9413210E94531D81E006C061E070E05F +:1051B00080E090E0F5CF80E01F910F91089580E0AE +:1051C000089580E00895CF93C82F80910203813025 +:1051D00069F018F08230C9F184C0E0911701F091B4 +:1051E00018018081823209F07EC007C0E09117016A +:1051F000F09118018081823261F48C2F0E94DF28A7 +:10520000811104C08C2F0E942B281DC081E090E0EA +:105210001AC08C2F0E94E128811114C0C43179F08A +:1052200048F4CB3079F0C03109F061C082E080935E +:10523000020308C0C93219F0C83321F058C01092D7 +:10524000020355C081E0817054C0C93291F120F54C +:10525000C43179F1B0F4C73009F047C08EE18093D2 +:105260001E0182E380931D018AE080931C0184E18A +:1052700080931B0188E080931A0188E280931901D2 +:1052800034C0CE51C63088F5EC2FF0E0EA54FE4F22 +:1052900080818093010329C0CE34E9F020F4CB341F +:1052A00021F56AE013C0C13579F0C235F1F461E04F +:1052B0000DC080910103882319F01092010315C0DD +:1052C00081E08093020315C061E006C08091010374 +:1052D0000E9465270AC06AE0809101030E94DB27D3 +:1052E00004C01092020380E004C081E002C080E0AC +:1052F000AACFCF9108950E940B25811102C00E9470 +:10530000E7240E94272580931D0380FF02C0869515 +:1053100001C080E00C94000480911D03982F9695A5 +:10532000292F30E0233031054CF49F5F990F8170B5 +:10533000892B816080931D030E942B2580911D0382 +:1053400086950C94000480911D03982F969591F0FA +:105350009158990F8170892B80931D038E7F91E066 +:1053600009F490E080911D0390FB80F980931D0368 +:105370000E942B2580911D0386950C94000480913A +:105380001D03982F909590FB80F980931D030E9438 +:105390002B2580911D0380FF02C0869501C080E00F +:1053A0000C94000490911D03892F86958F5F8F7751 +:1053B0009170843028F4880F892B80931D0302C0DC +:1053C00090931D0380911D038E7F91E009F490E07E +:1053D00080911D0390FB80F980931D030E942B2573 +:1053E00080911D0386950C94000420911D03922F3B +:1053F00096958927982F990F822F8170892B8093FA +:105400001D038E7F91E009F490E080911D0390FBD5 +:1054100080F980931D030E942B2580911D038695A2 +:105420000C94000480911D03869508955058BB2765 +:10543000AA270ED0D1C1C2D130F0C7D120F031F4AB +:105440009F3F11F41EF4B7C10EF4E095E7FB9FC136 +:10545000E92FD3D180F3BA17620773078407950742 +:1054600018F071F49EF5EBC10EF4E0950B2EBA2FF7 +:10547000A02D0B01B90190010C01CA01A00111245A +:10548000FF27591B99F0593F50F4503E68F11A1606 +:10549000F040A22F232F342F4427585FF3CF469597 +:1054A00037952795A795F0405395C9F77EF41F16B9 +:1054B000BA0B620B730B840BBAF09150A1F0FF0F83 +:1054C000BB1F661F771F881FC2F70EC0BA0F621F6F +:1054D000731F841F48F4879577956795B795F7955F +:1054E0009E3F08F0B3CF9395880F08F09927EE0FF1 +:1054F00097958795089527D108F481E008950CD0F9 +:105500006BC163D140F05AD130F021F45F3F19F004 +:105510003EC1511195C14FC170D198F39923C9F380 +:105520005523B1F3951B550BBB27AA2762177307A9 +:10553000840738F09F5F5F4F220F331F441FAA1F5D +:10554000A9F333D00E2E3AF0E0E830D0915050401D +:10555000E695001CCAF729D0FE2F27D0660F771FCB +:10556000881FBB1F261737074807AB07B0E809F0AD +:10557000BB0B802DBF01FF2793585F4F2AF09E3F42 +:10558000510568F004C15CC15F3FECF3983EDCF369 +:10559000869577956795B795F7959F5FC9F7880FBB +:1055A000911D9695879597F90895E1E0660F771F0D +:1055B000881FBB1F621773078407BA0720F0621B9E +:1055C000730B840BBA0BEE1F88F7E095089504D097 +:1055D0006894B11135C1089518D188F09F5790F0A3 +:1055E000B92F9927B751A0F0D1F0660F771F881F08 +:1055F000991F1AF0BA95C9F712C0B13081F01FD1C6 +:10560000B1E008951CC1672F782F8827B85F39F063 +:10561000B93FCCF3869577956795B395D9F73EF466 +:1056200090958095709561957F4F8F4F9F4F08950E +:10563000E89409C097FB3EF490958095709561952C +:105640007F4F8F4F9F4F9923A9F0F92F96E9BB27E2 +:105650009395F695879577956795B795F111F8CF5E +:10566000FAF4BB0F11F460FF1BC06F5F7F4F8F4FC9 +:105670009F4F16C0882311F096E911C0772321F0BF +:105680009EE8872F762F05C0662371F096E8862F57 +:1056900070E060E02AF09A95660F771F881FDAF7AE +:1056A000880F9695879597F9089588D018F011F08E +:1056B0008CD038F480C0C4C0E92F9FD0B0F35523FC +:1056C000C9F3E7FB6217730784079507A8F199F3FD +:1056D000E92FFF2788232AF03197660F771F881F4D +:1056E000DAF7952F5527442332F091505040220F7E +:1056F000331F441FD2F7BB27E91BF50B621B730B4B +:10570000840BB109C1F222F4620F731F841FB11D13 +:1057100031972AF0660F771F881FBB1FEFCF91507C +:1057200050405AF041F0882332F0660F771F881FEF +:1057300091505040C1F7939530C086957795679505 +:105740009F5FD9F7F8CF990F0008550FAA0BE0E833 +:10575000FEEF16161706E807F907C0F01216130633 +:10576000E407F50798F0621B730B840B950B39F473 +:105770000A2661F0232B242B252B21F408950A26D9 +:1057800009F4A140A6958FEF811D811D089597F919 +:105790009F6780E870E060E008959F3F31F091508E +:1057A00020F4879577956795B795880F911D969505 +:1057B000879597F908959FEF80EC089500240A9447 +:1057C0001616170618060906089500240A941216DC +:1057D0001306140605060895092E0394000C11F40F +:1057E000882352F0BB0F40F4BF2B11F460FF04C0BC +:1057F0006F5F7F4F8F4F9F4F089557FD9058440F15 +:10580000551F59F05F3F71F04795880F97FB991F1F +:1058100061F09F3F79F087950895121613061406DC +:10582000551FF2CF4695F1DF08C016161706180669 +:10583000991FF1CF86957105610508940895E89444 +:10584000BB2766277727CB0197F908957CDF08F4FB +:105850008FEF08950BD0C0CFB1DF28F0B6DF18F07E +:10586000952309F094CFA7CF1124EACFC6DFA0F388 +:10587000959FD1F3950F50E0551F629FF001729FE5 +:10588000BB27F00DB11D639FAA27F00DB11DAA1F04 +:10589000649F6627B00DA11D661F829F2227B00D51 +:1058A000A11D621F739FB00DA11D621F839FA00DDC +:1058B000611D221F749F3327A00D611D231F849F2C +:1058C000600D211D822F762F6A2F11249F57504083 +:1058D0008AF0E1F088234AF0EE0FFF1FBB1F661F1E +:1058E000771F881F91505040A9F79E3F510570F0D7 +:1058F0004ECFA6CF5F3FECF3983EDCF386957795CD +:105900006795B795F795E7959F5FC1F7FE2B880FD1 +:10591000911D9695879597F90895FA01EE0FFF1F4F +:1059200030962105310599F16115710561F48038D2 +:10593000BFE39B0749F168949038810561F0803896 +:10594000BFEF9B0741F0992342F5FF3FE105310589 +:10595000210511F1E8940894E795D901AA2329F4C7 +:10596000AB2FBE2FF85FD0F310C0FF5F70F4A69589 +:10597000E0F7F73950F019F0FF3A38F49F779F932A +:105980000CD00F9007FC905808953EF014CF60E0C3 +:1059900070E080E89FE308954FE79F775F934F9310 +:1059A0003F932F939ED02F913F914F915F9152DF64 +:1059B00005C019F40EF0EBCE42CFFDCE26DFC8F3C2 +:1059C0009638C0F707F80F92E8942BE33AEA48EBD1 +:1059D0005FE74EDF0F920F920F924DB75EB70F92B7 +:1059E000C0D0EAE2F1E016D04F915F91EF91FF91C4 +:1059F000E595EE1FFF1F49F0FE57E0684427EE0FC4 +:105A0000441FFA95E1F74195550B32D00F9007FEF0 +:105A100026C00895DF93CF931F930F93FF92EF92C9 +:105A2000DF927B018C01689405C0DA2EEF011EDF46 +:105A3000FE01E894A5912591359145915591AEF3DC +:105A4000EF0106DDFE019701A801DA9479F7DF90F6 +:105A5000EF90FF900F911F91CF91DF9108959B01DF +:105A6000AC0160E070E080E89FE349CD90CE95CE38 +:105A7000CCDEE8F39923D9F3940F511DBBF3915079 +:105A8000504094F059F0882332F0660F771F881F3A +:105A900091505040C1F79E3F510544F7880F911D2A +:105AA0009695879597F908955F3FACF0983E9CF0E6 +:105AB000BB27869577956795B79508F4B160939560 +:105AC000C1F7BB0F58F711F460FFE8CF6F5F7F4F4E +:105AD0008F4F9F4FE3CFB4CE0EF05FCE6CCE689465 +:105AE00056CE93DEC8F39923D1F3C6F3DF93CF9359 +:105AF0001F930F93FF92C92FDD2788232AF0219748 +:105B0000660F771F881FDAF720E030E040E85FEB90 +:105B10009FE3883920F0803E30F021968F7787DC34 +:105B2000E2E5F1E003C083DCEFE7F1E073DF8B0136 +:105B3000BE01EC01FB2E6F5771097595771F880B1D +:105B4000990B78DD28E132E741E35FE38FDEAF2D8B +:105B50009801AE01FF900F911F91CF91DF9178DCFA +:105B60003BCEFA01DC01AA0FBB1F9B01AC01BF5762 +:105B700028F422273327442750781FC0B75188F4D0 +:105B8000AB2F0024469537952795011CA395D2F39A +:105B9000002069F0220F331F441FB395DAF30DD0B4 +:105BA00045CC61307105A0E88A07B94630F49B0105 +:105BB000AC016627772788279078309621F02083DC +:105BC0003183428353830895AA1BBB1B51E107C055 +:105BD000AA1FBB1FA617B70710F0A61BB70B881F7D +:105BE000991F5A95A9F780959095BC01CD0108950C +:105BF00097FB072E16F4009407D077FD09D00E947A +:105C0000E42D07FC05D03EF4909581959F4F0895B3 +:105C1000709561957F4F0895EE0FFF1F0590F491E9 +:105C2000E02D0994F999FECF92BD81BDF89A99278C +:105C300080B50895A8E1B0E042E050E00C943A2E1F +:105C4000262FF999FECF92BD81BDF89A019700B435 +:105C5000021639F01FBA20BD0FB6F894FA9AF99AD5 +:105C60000FBE08950196272F0E94212E0C94202EFE +:105C7000DC01CB01FC01F999FECF06C0F2BDE1BD0C +:105C8000F89A319600B40D9241505040B8F70895FB +:045C9000F894FFCFB6 +:105C9400640007000CFF0000003F6475110312E06C +:105CA40011AC1178110101DF022808140A321E0018 +:105CB40002040507090B0C0E1011131517181A1CF2 +:105CC4001D1F2123242628292B2D2F30323435372C +:105CD400393B1F0F03764F5F6F7F49694379095939 +:105CE40053633149803F5D8B803FF8BF803FCAE1F9 +:105CF400803F73ED803FCAE1803FF8BF803F5D8BFA +:105D0400803F3149803F0000803FF16D7F3F75EA5D +:105D14007E3F4C827E3F833F7E3F84287E3F833F8D +:105D24007E3F4C827E3F75EA7E3FF16D7F3F0000EF +:105D3400803F3F4D36390B07BE0688064F06E20505 +:105D4400FB0514062D0601020304050607080900D5 +:00000001FF diff --git a/keyboard/planck/keymaps/nico/compiled.hex b/keyboard/planck/keymaps/nico/compiled.hex new file mode 100644 index 0000000000..61527c5307 --- /dev/null +++ b/keyboard/planck/keymaps/nico/compiled.hex @@ -0,0 +1,1456 @@ +:100000000C94C4020C9408030C9408030C94080389 +:100010000C9408030C9408030C9408030C94080334 +:100020000C9408030C9408030C94B5140C948715D5 +:100030000C94E9220C9408030C9408030C94080314 +:100040000C9408030C946A030C9408030C940803A2 +:100050000C9408030C9451230C9408030C9408038B +:100060000C9408030C9408030C9408030C940803E4 +:100070000C9408030C9408030C9408030C940803D4 +:100080000C942A0B0C9408030C9408030C9408039A +:100090000C9408030C9408030C9408030C940803B4 +:1000A0000C9408030C9408030C940803F41516161A +:1000B0000417161604175B167E160417D316E616D9 +:1000C000D019D019FF19FF193E1A5E1AB41BB41BC0 +:1000D000691AB41B191B191B801B891BB41BAE1B8F +:1000E000261B261B261B261B261B261B261B261B08 +:1000F000261B261B261B261B261B261B261B261BF8 +:10010000361B441B4B1B521B5C1B07634236B79BC1 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C00002010000000000000000000000002AA35F +:1001D00028A42B0014001A000800150017001C00AA +:1001E00018000C00120013002A00E00004001600A2 +:1001F000070009000A000B000D000E000F0033007D +:100200003400E1001D001B0006001900050011006C +:100210001000360037003800280000302900E200C6 +:10022000E30001202C002C0002205000510052005D +:100230004F002B0014001A00090013000A000D00E3 +:100240000F0018001C0033002A00E0000400150015 +:100250001600170007000B00110008000C00120028 +:100260003400E1001D001B000600190005000E000F +:100270001000360037003800280000302900E20066 +:10028000E30001202C002C000220500051005200FD +:100290004F002B0034003600370013001C0009000B +:1002A0000A00060015000F002A00E00004001200FA +:1002B000080018000C0007000B00170011001600C2 +:1002C0003800E100330014000D000E001B00050093 +:1002D00010001A0019001D00280000302900E2005B +:1002E000E30001202C002C0002205000510052009D +:1002F0004F0035021E021F022002210222022302A9 +:1003000024022502260227022A0001003A003B00AF +:100310003C003D003E003F002D022E022F02300225 +:10032000310201004000410042004300440045000A +:10033000005301530253005001000030010001003E +:100340000100010069006A000100BB00AA00A900C9 +:10035000AE0035001E001F002000210022002300F7 +:1003600024002500260027002A0001003A003B0057 +:100370003C003D003E003F002D002E002F003000CD +:1003800031000100400041004200430044004500AC +:1003900000530153025300500100003001000100DE +:1003A0000100010069006A000100BB00AA00A90069 +:1003B000AE002803540068006500200050006C0067 +:1003C00061006E0063006B0020004B006500790047 +:1003D00062006F0061007200640000002C034F0097 +:1003E0007200740068006F006C0069006E006500A8 +:1003F0006100720020004B006500790062006F0010 +:100400006100720064007300000004030904090223 +:100410006D00040100A0FA090400000103010100BD +:10042000092111010001223F000705810308000A8C +:100430000904010001030102000921110100012248 +:100440004D000705820308000A09040200010300A9 +:10045000000009211101000122360007058303086D +:10046000000A090403000103000000092111010032 +:100470000122390007058403100001120110010058 +:10048000000008EDFE6060010001020001050109A5 +:1004900006A101050719E029E71500250195087552 +:1004A000018102050819012905950575019102953B +:1004B000017503910105071900297715002501959C +:1004C0007875018102C005010980A101850216012C +:1004D0000026B7001A01002AB700751095018100A7 +:1004E000C0050C0901A1018503160100269C021A12 +:1004F00001002A9C02751095018100C005010902C6 +:10050000A1010901A100050919012905150025010D +:100510009505750181029501750381010501093079 +:1005200009311581257F95027508810609381581E5 +:10053000257F950175088106050C0A38021581256D +:100540007F950175088106C0C005010906A1010556 +:100550000719E029E7150025019508750181029525 +:100560000175088101050819012905950575019195 +:10057000029501750391010507190029FF15002552 +:10058000FF950675088100C011241FBECFEFDAE089 +:10059000DEBFCDBF04B603FE24C080911E03909140 +:1005A0001F03A0912003B09121038730904BA740F7 +:1005B000B04BB9F410921E0310921F031092200347 +:1005C0001092210314BE84B7877F84BF88E10FB6E1 +:1005D000F89480936000109260000FBEE0E0F8E3B2 +:1005E000099511E0A0E0B1E0ECE2FAE502C0059067 +:1005F0000D92A03CB107D9F713E0A0ECB1E001C027 +:100600001D92AE31B107E1F70E94FB110C94142D3D +:100610000C9400000895089581E0089508950C94C5 +:100620000B030C940C030C940E030E94DE2823E0B1 +:1006300030E0281B3109220F2093C4010895282F90 +:100640002F9880918000211108C0877F80938000BF +:1006500010928D0010928C001BC0886080938000E7 +:10066000233019F48FEF9FEF0FC083E090E0821BDF +:100670009109880F991F2FEF3FEFA90102C05695EE +:1006800047958A95E2F7CA0190938D0080938C007C +:100690000C9415030E94150384E08093C30110920B +:1006A000C0010895279A2F988FEF9FEF90938700AE +:1006B000809386008AE08093800089E180938100A6 +:1006C0000E9447280C944A030E9452036E9A769A1D +:1006D0000C940A031F920F920FB60F9211242F93BE +:1006E0003F938F939F93EF93FF93E091C101F0911C +:1006F000C201CF0101969093C2018093C101009085 +:10070000C30102C0F695E7950A94E2F7EF73809172 +:10071000C001823019F4E03251F404C0813039F460 +:10072000EF3329F480916F008D7F80936F00F0E0AC +:10073000E457FE4FE49121E031E0E29FC001E39FE6 +:10074000900D11240090C40102C0969587950A94DB +:10075000E2F790938D0080938C00FF91EF919F9131 +:100760008F913F912F910F900FBE0F901F90189572 +:1007700061110DC0FC018281882331F085EE0E9459 +:1007800074180E949E2803C085EE0E943C1980E0E8 +:1007900090E0089581E008950C94CA0308950C94A4 +:1007A000640380911502882309F448C08091D10127 +:1007B0009091D201009779F40E941B239093D2016B +:1007C0008093D1018091D30190E0009771F48091E2 +:1007D000D40190E00AC00E942723209100013091AB +:1007E00001012817390740F329C00197880F991F85 +:1007F000880F991FFC01EB52FE4F6081718182814D +:1008000093810E94900AE091D30184E0E89FF00177 +:100810001124EB52FE4F60817181828193814FE000 +:1008200050E00E94480E8091D30190E001966091C3 +:10083000D40170E00E94C42C8093D3010C940F0368 +:10084000109217020C945D0A0895089581E0809338 +:1008500017020C942504089508958F929F92AF92E9 +:10086000BF92EF92FF920F931F93CF93DF93CDB779 +:10087000DEB7A3970FB6F894DEBF0FBECDBF7C01E5 +:10088000FC0100811181C8010E941821B8010E9459 +:100890002F068C01B7010E94CC03882309F4CCC138 +:1008A0000032F0E51F0741F4F7018281882309F443 +:1008B00058C00E94AC0EC0C10132F0E51F0741F4E0 +:1008C000F7018281882309F44CC00E94B50EB4C19F +:1008D0000232F0E51F0751F4F7018281882309F401 +:1008E00040C00E94A80E8111F0CFE3CF0332F0E5A3 +:1008F0001F0739F4F7018281882399F10E942604A9 +:100900009BC10432F0E51F0739F4F7018281882387 +:1009100041F10E94200490C10532F0E51F0749F41F +:10092000F70182818823E9F0809117028111F1CFCC +:10093000E5CF0632F0E51F0739F4F70182818823FD +:1009400081F00E94BC0E0AC00732F0E51F0749F48F +:10095000F7018281882329F00E94C70E0E942C048F +:100960006BC180911702811105C0F701828181114D +:10097000CFC018C1003E110579F4F70182818823A8 +:1009800009F44DC00E945D0A81E080931602109226 +:1009900015021092D40150C1023E110559F4F7011D +:1009A00082818823E1F10E945D0A10921602109262 +:1009B000150242C1033E110591F4F701828188239B +:1009C00071F10E945D0A1092160281E08093150277 +:1009D0001092D3011092D2011092D1012DC1023593 +:1009E000110559F4F7018281882309F425C180910A +:1009F0000001909101010A970DC00135110579F4AC +:100A0000F7018281882309F417C180910001909138 +:100A100001010A9690930101809300010DC140915C +:100A2000040183E2EFE1F1E0DE01119601900D9205 +:100A30008A95E1F7F701808121E030E02C0F3D1F1E +:100A4000280F311DC9012091020130910301FC01E1 +:100A5000E20FF31F6081772767FD7095640F711DAA +:100A6000882777FD8095982F0E94E62920E030E0C6 +:100A700040E451E40E944B294B015C01F7012181C4 +:100A800084E090E0821B9109BC01882777FD809566 +:100A9000982F0E94E6299B01AC01C501B4010E9478 +:100AA000E3289B01AC0160E070E080E090E40E94EC +:100AB000592B20E030E04CED50E40E94F62A4B0127 +:100AC0005C01F70182818823D1F04FE050E0C5013D +:100AD000B4010E94480E809116028823A1F08091F3 +:100AE000D40124E0829FF0011124EB52FE4F80825A +:100AF0009182A282B3828F5F8093D40104C0C5012A +:100B0000B4010E94900A0F3F110508F02ECF94C047 +:100B10008091D00181111FC0043130E5130709F025 +:100B200051C00E94CE0381E08093D0010E941B231C +:100B30009093CF018093CE011092C7011092C9010A +:100B40001092C8011092CB011092CA011092CD01EF +:100B50001092CC0171C08091CE019091CF010E9482 +:100B60002723883C910570F48091C701E82FF0E0BD +:100B7000EE0FFF1FE853FE4F118300838F5F8093BA +:100B8000C7015AC0043880E5180721F00538104520 +:100B900001F13AC0F7018281882341F01092C5012A +:100BA00082E01EC0043830E5130759F58091C50175 +:100BB000811106C086E20E94741886E20E943C19E8 +:100BC00082E01CC00438F0E51F0741F305381045EA +:100BD000D9F4F7018281882331F01092C60180E2B6 +:100BE0000E948B1929C08091C601811106C087E23D +:100BF0000E94741887E20E943C1980E20E949219B8 +:100C00001BC00538104529F381E08093C50180930E +:100C1000C601C701A3960FB6F894DEBF0FBECDBFC5 +:100C2000DF91CF911F910F91FF90EF90BF90AF9008 +:100C30009F908F900C94110380E0A3960FB6F894C8 +:100C4000DEBF0FBECDBFDF91CF911F910F91FF90FF +:100C5000EF90BF90AF909F908F90089508959CE083 +:100C6000799FF001112490E3899FE00DF11D11247B +:100C7000E60FF11DEE0FFF1FEE52FE4F859194918E +:100C80000895880F991FFC01E45BFF4F85919491B3 +:100C90000895880F991FFC01E453FE4F85919491AC +:100CA00008950F931F93CF93DF93EC01811521E3F8 +:100CB0009207A0F5C11580E3D80708F0D7C0C83E59 +:100CC000D105D8F4C03ED10508F007C2C83AD10515 +:100CD00078F4C53AD10508F06AC0C130D10509F4ED +:100CE00063C008F4F7C1C430D10508F0F6C1F2C101 +:100CF000CB3BD10508F466C0EDC1C11590E2D90720 +:100D000008F0AFC0C11521E0D20708F0E6C1C03F2E +:100D1000D10508F4DFC18E0110651FC2C03880E51F +:100D2000D80700F5C03790E5D90708F0A3C0C11572 +:100D300020E5D20709F4ACC050F4CE0190548031C4 +:100D40009F4008F0C7C1DF708E01106A06C2C13033 +:100D500080E5D80709F4AEC0C43190E5D90708F49E +:100D6000AFC0B8C1C33820E5D20709F48EC050F433 +:100D7000C13890E5D90709F482C008F083C000E0CB +:100D800011EDEBC1C03181E5D80708F4A3C1C1154D +:100D900097E5D90708F436C1CE01905781159041E7 +:100DA00008F098C1DF7093C101E010E0D6C1C53AE8 +:100DB000D10509F494C1C63AD10509F093C102E8FE +:100DC00010E4CBC1C83AD10509F48FC1C93AD105A5 +:100DD00009F48EC1CA3AD10509F48DC1CB3AD105C7 +:100DE00009F48CC1CC3AD10509F48BC1CD3AD105B7 +:100DF00009F48AC1C03BD10509F489C1CE3AD105B5 +:100E000009F488C1CF3AD10509F487C1C13BD105A6 +:100E100009F486C1C23BD10509F485C1C33BD105A4 +:100E200009F484C1C43BD10509F483C1C53BD10594 +:100E300009F482C1C63BD10509F481C1C73BD10584 +:100E400009F480C1C83BD10509F47FC1C93BD10574 +:100E500009F47EC1CA3BD10509F47DC100E014E468 +:100E60007CC1CE019F700E94490678C1DD278E01AA +:100E7000106C73C1CF70DD278E01146D6EC100E060 +:100E800010ED6BC100E012ED68C100E013ED65C12B +:100E90000E941F1C0E945D0A0E9424048FEF94E3AD +:100EA0002CE0815090402040E1F700C000000E94FB +:100EB000762353C18091F20281608093F2024DC18A +:100EC0000E94D723811102C00E94B3230E94EA230B +:100ED00090E090931D0380931C03C23080E5D807F7 +:100EE00021F480911C03816086C0C43090E5D9074D +:100EF00021F480911C0382607EC0C63020E5D207B9 +:100F000021F480911C03846076C0C83080E5D80746 +:100F100019F480911C0327C0CA3090E5D90721F449 +:100F200080911C03806167C0CC3020E5D20721F49A +:100F300080911C0380625FC0CE3080E5D80721F429 +:100F400080911C03806457C0C03190E5D90721F41B +:100F500080911C0380684FC0C23120E5D20729F47C +:100F600080911C038460886046C0C33080E5D80748 +:100F700021F480911C038E7F3EC0C53090E5D907D7 +:100F800021F480911C038D7F36C0C73020E5D20745 +:100F900021F480911C038B7F2EC0C93080E5D807D7 +:100FA00019F480911C0326C0CB3090E5D90721F4B9 +:100FB00080911C038F7E1FC0CD3020E5D20721F425 +:100FC00080911C038F7D17C0CF3080E5D80721F4B6 +:100FD00080911C038F7B0FC0C13190E5D90721F4AC +:100FE00080911C038F7707C0C331D04531F48091C5 +:100FF0001C038B7F877F80931C0380911C030E94BE +:10100000EE23ABC08D2F99278F70992781309105E2 +:10101000D9F49E012370332702C0880F991F2A95A7 +:10102000E2F79C688E0144E0000F111F4A95E1F73A +:1010300000271370802B912B53E0CC0FDD1F5A95A6 +:10104000E1F7C076DD272FC08230910531F4DC2F27 +:10105000CC278E01016F106A80C08330910569F43E +:10106000CE018370992701E010E002C0000F111F2C +:101070008A95E2F7C8019C680FC084309105B9F4E5 +:10108000CE018370992701E010E002C0000F111F0C +:101090008A95E2F7C8019A6823E0CC0FDD1F2A95F4 +:1010A000E1F7C07ED7708C010C2B1D2B56C085300C +:1010B000910531F4DC2FCC278E01046F106A4DC0EE +:1010C000069709F04AC0CF71DD27DC2FCC278E01AF +:1010D000106243C000E010E040C08E013EC001E855 +:1010E00010E43BC003E810E438C002EE14E435C05D +:1010F00009EE14E432C00AEE14E42FC005EB14E448 +:101100002CC006EB14E429C007EB14E426C00CEC59 +:1011100014E423C00DEC14E420C003E815E41DC062 +:101120000AE815E41AC002E915E417C004E915E459 +:1011300014C001E216E411C003E216E40EC004E29A +:1011400016E40BC005E216E408C006E216E405C08A +:1011500007E216E402C00AE216E4C801DF91CF916B +:101160001F910F9108959CE0799FF001112490E365 +:10117000899FE00DF11D1124E60FF11DEE0FFF1FF9 +:10118000EE52FE4F85919491803E9105E0F4803CB3 +:10119000910558F58133910509F46FC048F48932FF +:1011A000910509F463C08A32910509F46DC072C0DB +:1011B00089339105E9F082389105D1F085339105A5 +:1011C00009F44DC067C0833E910581F138F4803E3B +:1011D0009105B9F0823E9105D9F05CC0863E91053B +:1011E00061F1873E9105A1F155C00E944106089525 +:1011F00020911C0320FD02C021FF4CC080EE90E036 +:1012000049C080911C0380FFF9CF89E390E042C080 +:1012100080911C0382FF0EC080911C0384FF03C0D9 +:1012200080E090E037C083EE90E034C080911C03F2 +:1012300082FFF2CF82EE90E02DC080911C0383FFED +:101240000BC080911C0384FDEBCF87EE90E022C0A1 +:1012500080911C0383FFF5CF86EE90E01BC0809148 +:101260001C0385FF07C089E290E014C080911C0335 +:1012700085FFF9CF85E390E00DC080911C0386FFC8 +:1012800007C08AE290E006C080911C0386FFF9CF78 +:1012900081E390E00E94510608950C941303E82F17 +:1012A000F0E0E25BFE4F8081E82FEF70F0E0829586 +:1012B0008F7021E030E0A90102C0440F551F8A95CC +:1012C000E2F740A308950F931F93CF93DF9385B761 +:1012D000806885BF85B7806885BFC3E0D0E001E046 +:1012E00010E0FE01E25BFE4F8081E82FEF70F0E03E +:1012F00021A182958F70A80102C0440F551F8A95C5 +:10130000E2F7CA01822B81A38C2F0E944F092197FB +:1013100040F78BE090E061E070E0FC01EE5BFE4F97 +:101320002081E22FEF70F0E042A122952F70DB01C7 +:1013300002C0AA0FBB1F2A95E2F79D01242B22A30E +:10134000019758F7DF91CF911F910F910C94CF0324 +:10135000EF92FF920F931F93CF93DF9300E212E07F +:10136000C3E0EE24E394F12CD5E08C2F0E944F09CA +:101370008BE090E040E050E0FC01EE5BFE4F6081CE +:10138000E62FEF70F0E020A130E062956F7002C0B0 +:10139000359527956A95E2F720FD09C09701082E3B +:1013A00002C0220F331F0A94E2F7422B532B0197FE +:1013B00018F7F801929182918F018417950721F017 +:1013C00051834083D09305018C2F0E944F09C15057 +:1013D00060F68091050187FD2CC081508093050146 +:1013E0008F3F39F08FE99FE00197F1F700C00000CF +:1013F00020C080911E0290911F029093270280933B +:10140000260280911C0290911D02909325028093E8 +:10141000240280911A0290911B02909323028093E0 +:1014200022028091180290911902909321028093D8 +:1014300020020E94D10381E0DF91CF911F910F9193 +:10144000FF90EF900895E82FF0E0EE0FFF1FE05EB1 +:10145000FD4F80819181089508950F931F93CF933D +:1014600008E212E0C0E0F801929182918F010E949F +:101470009322C80FF2E000321F07A9F78C2FCF91FB +:101480001F910F9108950E94D723811102C00E94DD +:10149000B3230E94FC23809307033E9A809171003E +:1014A0008D7F8093710082E0809390008AE1809329 +:1014B000910081E080932A02089580912A0281118F +:1014C00002C00E94430A10927A021092790280911F +:1014D00071008D7F80937100809190008F73809355 +:1014E000900010923C0210923B02109273021092F4 +:1014F000740210927502109276021092720210928B +:101500007102E1E5F2E0A1E4B2E0119211921192D0 +:1015100011921D921D9282E0E137F807B1F708950C +:10152000CF92DF92EF92FF920F931F93CF93DF93AF +:1015300020913B02222309F484C06B017C0180913D +:101540002A02811102C00E94430A01E712E0C7E0AB +:10155000D0E0A7019601F801929182917291629177 +:101560008F010E944729811131C0FE01EE0FFF1F3C +:10157000EE0FFF1FEF5AFD4F10821182128213826D +:10158000DE01AA0FBB1FAF5BBD4F11961C921E92CE +:10159000C730D105E9F02196448155816681778174 +:1015A000408351836283738314821582168217826B +:1015B00012968D919C91139711969C938E931396EE +:1015C0001C921E92129734961296E2CF219708F63B +:1015D0008091790290917A02019797FD05C09093CE +:1015E0007A028093790204C010927A0210927902F2 +:1015F0008091790290917A0220917702309178025D +:101600002817390724F01092780210927702892B5C +:10161000C1F4809171008D7F809371008091900062 +:101620008F73809390001092730210927402109244 +:10163000750210927602109272021092710210924C +:101640003B02DF91CF911F910F91FF90EF90DF90C0 +:10165000CF9008951F920F920FB60F9211244F92C0 +:101660005F926F927F928F929F92AF92BF92CF9232 +:10167000DF92EF92FF922F933F934F935F936F937D +:101680007F938F939F93AF93BF93CF93DF93EF930A +:10169000FF9380913B02882309F49BC1C09179029A +:1016A000D0917A021C161D060CF093C140902B02BB +:1016B00050902C0260902D0270902E0220E030E0BD +:1016C000A901C301B2010E94F22A18160CF065C0EC +:1016D000C130D10509F452C080917702909178020F +:1016E000BE010E94C42C7C01909378028093770203 +:1016F00080903D0290903E02A0903F02B090400248 +:1017000020E030E040E85FE3C501B4010E94E32837 +:1017100060933D0270933E0280933F02909340029B +:10172000F701EE0FFF1FEE0FFF1FEF5AFD4FA30152 +:10173000920160817181828193810E944B2920E016 +:1017400030E040E05EE30E94F62A9B01AC01C50157 +:10175000B4010E94F22A18168CF4C7010196BE014A +:101760000E94C42C909378028093770210923D02DD +:1017700010923E0210923F0210924002E0917702D6 +:10178000F0917802EE0FFF1FEE0FFF1FEF5AFD4F93 +:101790006081718182819381D0C0C0907302D090AA +:1017A0007402E0907502F090760220E030E0A9012A +:1017B000C701B6010E9447292197882309F4A2C0D6 +:1017C000FE01EE0FFF1FEE0FFF1FEF5AFD4F80804F +:1017D0009180A280B380A5019401C701B6010E9447 +:1017E000472987FF31C0A501940160E070E08CEDCE +:1017F00093EC0E944B2920E030E040E451E40E9449 +:101800004B2920E030E040E05FE30E94F62A9B0194 +:10181000AC0160E070E080E090E40E94592B9B01F5 +:10182000AC01C501B4010E94F62A9B01AC01C701BD +:10183000B6010E94472987FF07C0A701960160E013 +:1018400070E08CED93E439C0A5019401C701B601A5 +:101850000E94F22A18160CF055C0A501940160E010 +:1018600070E08CED93E40E944B2920E030E040E4EE +:1018700051E40E944B2920E030E040E05FE30E9409 +:10188000F62A9B01AC0160E070E080E090E40E94E9 +:10189000592B9B01AC01C501B4010E94F62A9B01A2 +:1018A000AC01C701B6010E94F22A18165CF5A70127 +:1018B000960160E070E08CED93EC0E944B2920E0F3 +:1018C00030E040E451E40E944B2920E030E040E069 +:1018D0005FE30E94F62A9B01AC0160E070E080E0CB +:1018E00090E40E94592B9B01AC01C701B6010E94F4 +:1018F000F62A60937302709374028093750290933A +:10190000760213C0FE01EE0FFF1FEE0FFF1FEF5A0E +:10191000FD4F80819181A281B38180937302909366 +:101920007402A0937502B093760260917302709175 +:101930007402809175029091760220912802309174 +:1019400029022F3F4FEF340731F02F5F3F4F309385 +:101950002902209328020E94D20E6B017C0120E014 +:1019600034E244EF51E40E94472987FF08C086EF24 +:10197000C82E88E2D82E84EFE82E81E4F82E20E0ED +:1019800030E040E051E4C701B6010E94F62A9B0115 +:10199000AC0160E074E284E79BE40E944B296B0198 +:1019A0007C010E94B8297093970060939600209163 +:1019B0000601309107014091080150910901C701CA +:1019C000B6010E94F62A0E94B8297093990060938C +:1019D000980080913C02882309F433C1C0903702FB +:1019E000D0903802E0903902F0903A0220E030E0E6 +:1019F000A901C701B6010E94F22A1816D4F58091F8 +:101A00002802909129028F3F2FEF920729F001962B +:101A10009093290280932802C701B6010E94D20E3A +:101A200020E030E040E051E40E94F62A9B01AC0146 +:101A300060E074E284E79BE40E944B296B017C0127 +:101A40000E94B82970939700609396002091060138 +:101A5000309107014091080150910901C701B60179 +:101A60000E94F62A0E94B82970939900609398000A +:101A700008C0109297001092960010929900109250 +:101A8000980060913102709132026F5F7F4F7093C6 +:101A9000320260933102209196003091970080E0ED +:101AA00090E0232BF1F0C0919600D09197000E9416 +:101AB000E4296B017C01BE0180E090E00E94E429F2 +:101AC0009B01AC0160913302709134028091350228 +:101AD000909136020E944B2920E03FEF4FE757E4F8 +:101AE00010C00E94E4296B017C0120E030EE4FEF32 +:101AF00054E46091330270913402809135029091E8 +:101B000036020E94F62A9B01AC01C701B6010E9471 +:101B1000F22A87FD96C080912F028F5F80932F025B +:101B200090E0209103033091040382179307A0F003 +:101B300080910E03882319F010922F020DC080911E +:101B400071008D7F80937100809190008F738093DE +:101B5000900010923C027DC080913002C0912F0213 +:101B6000811128C0C0900803D0900903E0900A03B7 +:101B7000F0900B0320E030E0A901C701B6010E94FC +:101B8000F22A1816BCF481E08093300210923702DA +:101B9000109238021092390210923A02C092330227 +:101BA000D0923402E0923502F0923602C150C093D6 +:101BB0002F0243C010923002109229021092280284 +:101BC000E0910503F091060348E0C49FE00DF11D8C +:101BD000112480819181A281B381809337029093F7 +:101BE0003802A0933902B0933A0220E030E040E896 +:101BF0005EE364817581868197810E94F62A6B017C +:101C00007C0180910A01682F70E080E090E00E94E2 +:101C1000E42920E030E048EC52E40E944B299B018B +:101C2000AC01C701B6010E94F62A6093330270939B +:101C30003402809335029093360210923202109251 +:101C400031028091070380FD04C010923C02109283 +:101C50003B02FF91EF91DF91CF91BF91AF919F91A7 +:101C60008F917F916F915F914F913F912F91FF9055 +:101C7000EF90DF90CF90BF90AF909F908F907F902C +:101C80006F905F904F900F900FBE0F901F90189520 +:101C9000CF92DF92EF92FF92CF93DF936B017C01A3 +:101CA000EA0180912A02811102C00E94430A8091B8 +:101CB000070380FF46C08091790290917A020897CD +:101CC0000CF03FC0809171008D7F809371008091F6 +:101CD0003C0281110E945D0A81E080933B021092D8 +:101CE00029021092280220E030E0A901C701B601C4 +:101CF0000E94F22A1816DCF48091790290917A02FF +:101D0000FC01EE0FFF1FEE0FFF1FEF5AFD4FC082C9 +:101D1000D182E282F382FC01EE0FFF1FEF5BFD4FE9 +:101D2000D183C083019690937A0280937902809147 +:101D30007100826080937100809190008068809330 +:101D40009000DF91CF91FF90EF90DF90CF900895BA +:101D500080910703817008958091070381608093CB +:101D600007030E9400240C942B04809107038E7FAC +:101D7000809307030C94002480917B0290E00196ED +:101D800066E070E00E94C42C80937B0208958091ED +:101D90007B0290E0019766E070E00E94C42C809383 +:101DA0007B0208958F929F92AF92BF92CF92DF9263 +:101DB000EF92FF920F931F93CF93DF936B017C0100 +:101DC000C0912802D0912902BE0180E090E00E94DB +:101DD000E4294B015C01A701960160E070E08CE50D +:101DE00094E40E944B299B01AC01C501B4010E94FF +:101DF000F62A0E94B82920917B02233009F473C08F +:101E000028F4222351F02130E9F02CC1243009F4C8 +:101E1000A0C0253009F4E0C025C180E090E0A0E03A +:101E2000BFE38093060190930701A0930801B0934C +:101E3000090110922B0210922C0210922D02109286 +:101E40002E0210C110922B0210922C0210922D0221 +:101E500010922E026431710540F46A30710560F50C +:101E600020E030E040E85EE32BC0693C710508F0FB +:101E7000AAC080E090E00E94E42920E030E040EA3F +:101E800051E40E94E22820E030E044E353E40E9461 +:101E90004B299B01AC010E94F62A20E030E040E093 +:101EA0005EE30E94F62A9B01AC0160E070E080E0F6 +:101EB0009EE30E94E22844C020E030E040E05FE37F +:101EC000C701B6010E94F62A6B017C0180E090E018 +:101ED000A0E0BEE38093060190930701A093080160 +:101EE000B0930901BFC010922B0210922C021092E5 +:101EF0002D0210922E024AE0469F9001479F300D1E +:101F00001124C90168EB7BE00E94B02CBC016C5D20 +:101F1000754077FF03C0719561957109882777FD3A +:101F20008095982F0E94E6292EE333EC4EE259E388 +:101F30000E94F62A20E030E040EC5EE30E94E328B5 +:101F40006093060170930701809308019093090143 +:101F500089C010922B0210922C0210922D02109226 +:101F60002E02CE0183709927892BE1F0BE016170AA +:101F7000772780E090E00E94E42920E030E040E014 +:101F80005EE30E94F62A20E030E040E45FE30E9436 +:101F9000E3286093060170930701809308019093F2 +:101FA00009010CC080E090E0A0E0BFE3809306014F +:101FB00090930701A0930801B0930901C770DD2732 +:101FC000CD2B09F04FC0109206011092070110921C +:101FD00008011092090146C010922B0210922C02A7 +:101FE00010922D0210922E0200E010E020E03FE35C +:101FF0000093060110930701209308013093090113 +:102000006739710578F180E090E00E94E42920E0D2 +:1020100030E047E153E40E94E22820E030E04AE764 +:1020200054E40E944B2920E030E048E452E40E944E +:10203000F62A20E030E040EA51E40E94282A0E947B +:10204000B329660F771F660F771FFB01EE5AFE4F0D +:102050002081318142815381C701B6010E94F62A55 +:102060006B017C01C701B601DF91CF911F910F91E8 +:10207000FF90EF90DF90CF90BF90AF909F908F90A8 +:10208000089580918C020895CF93DF9300D01F9222 +:10209000CDB7DEB79C0180911303843019F593E02E +:1020A00099833B832A839093E9008FEF9091E80016 +:1020B000815095FD06C095ED9A95F1F700008111CC +:1020C000F5CF8091E80085FF0DC040E050E063E06F +:1020D00070E0CE0101960E94A5128091E8008E77F3 +:1020E0008093E8000F900F900F90DF91CF910895AB +:1020F000CF93DF9300D01F92CDB7DEB720911303AB +:10210000243021F522E029839B838A8383E0809316 +:10211000E9008FEF9091E800815095FD06C095EDA4 +:102120009A95F1F700008111F5CF8091E80085FFC5 +:102130000DC040E050E063E070E0CE0101960E94E7 +:10214000A5128091E8008E778093E8000F900F90A1 +:102150000F90DF91CF910895209113032430F1F473 +:1021600022E02093E9002FEF3091E800215035FD67 +:1021700006C035ED3A95F1F700002111F5CF209119 +:10218000E80025FF0BC040E050E065E070E00E94F1 +:10219000A5128091E8008E778093E8000895CF9390 +:1021A000DF93EC0190911303943009F046C08091C5 +:1021B00015018823D9F0809116018823B9F09093F6 +:1021C000E9008FEF9091E800815095FD06C095E100 +:1021D0009A95F1F700008111F5CF8091E80085FF15 +:1021E0002CC040E050E060E170E017C081E08093D7 +:1021F000E9008FEF9091E800815095FD06C095EDC4 +:102200009A95F1F700008111F5CF8091E80085FFE4 +:1022100014C040E050E068E070E0CE010E94A512DA +:102220008091E8008E778093E80080E1FE01ACE7C2 +:10223000B2E001900D928A95E1F7DF91CF91089578 +:1022400080911203811109C00E943A140E949714D0 +:102250008091E20084608093E2000895109212035E +:102260000895089508950C94DE2242E061EC81E027 +:102270000E94B41342E061EC82E00E94B41342E099 +:1022800061EC83E00E94B41342E161EC84E00C94C1 +:10229000B41380911503833009F455C030F48130B4 +:1022A00071F0823009F48EC008958A3009F47AC042 +:1022B0008B3009F460C0893009F09CC020C0809147 +:1022C0001403813A09F096C08091E800877F8093DB +:1022D000E8008091180390911903892B21F460E1A3 +:1022E0008CE792E003C060E080E090E070E00E9444 +:1022F000F0128091E8008B778093E8000895809138 +:102300001403813209F076C080911803909119036B +:10231000009719F0039709F06DC08091E800877F5E +:102320008093E8008091E80082FD05C0809113034E +:102330008111F8CF5FC08091F10080938C02809171 +:10234000E8008B7753C080911403813A09F052C0A2 +:102350008091180390911903892B09F04BC080914B +:10236000E800877F8093E8008091E80080FFFCCF41 +:102370008091150136C0809114038132D9F5809186 +:10238000180390911903892BA9F58091E800877FA4 +:102390008093E8000E94E913809116038093150151 +:1023A0000C941F1C80911403813221F58091E80068 +:1023B000877F8093E8000E94E91380911703809340 +:1023C0008D02089580911403813AA1F48091E80070 +:1023D000877F8093E8008091E80080FFFCCF8091A8 +:1023E0008D028093F1008091E8008E778093E80061 +:1023F0000C94E913089584B7877F84BF88E10FB6F2 +:10240000F89480936000109260000FBE90E080E826 +:102410000FB6F89480936100909361000FBE0E9404 +:102420008C170E943A140E9497148091E2008460F5 +:102430008093E20078940E941D170E948E178BE013 +:1024400091E00E94381780911303853069F40E944F +:102450009F22809111038823B1F30E94CD2288230B +:1024600091F30E948F12EFCF0E949617ECCF292F85 +:10247000332723303105C9F064F42130310581F070 +:102480002230310509F043C08DE690E02EE034E0C3 +:1024900042C021323105F1F02232310541F137C01D +:1024A00082E190E02BE734E036C099278130910536 +:1024B00041F08230910541F0892B49F5EAE0F4E0E2 +:1024C00005C0ECEDF3E002C0E2EBF3E0849190E0B4 +:1024D0009F0121C06430D8F4E62FF0E0EE0FFF1F1B +:1024E000E255FE4F2081318189E090E014C06430D4 +:1024F00070F470E0FB01EE0FFF1FEA55FE4F2081E4 +:102500003181FB01EE55FE4F808190E004C080E0F8 +:1025100090E020E030E0FA0131832083089580E1EB +:1025200089BD82E189BD09B400FEFDCF8091D8004C +:102530008F7D8093D8008091E00082608093E000DE +:102540008091E00081FDFCCF0895CF92DF92EF9261 +:10255000FF920F931F93CF93DF93EC018B016A01DE +:102560000E940814811133C0C114D10439F0F6015E +:1025700080819181081B190BC80FD91FE12CF12C08 +:102580000115110519F18091E80085FD16C08091B3 +:10259000E8008E778093E800C114D10449F0F60179 +:1025A00080819181E80EF91EF182E08285E00FC002 +:1025B0000E940814882321F30AC089918093F100B6 +:1025C00001501109FFEFEF1AFF0ADACF80E0DF9127 +:1025D000CF911F910F91FF90EF90DF90CF900895D2 +:1025E00020911A0330911B032617370748F0611515 +:1025F000710539F42091E8002E772093E80001C09E +:10260000B90140E061157105A9F12091130322235E +:1026100009F443C0253009F442C02091E80023FDAD +:1026200040C02091E80022FD32C02091E80020FF48 +:10263000E9CF4091F3002091F20030E0342BFC010F +:10264000CF016115710559F02830310540F48191B1 +:102650008093F100615071092F5F3F4FF1CF41E04E +:102660002830310509F040E02091E8002E772093D2 +:10267000E800C8CF4111C9CF0AC080911303882355 +:1026800061F0853061F08091E80083FD0AC080919F +:10269000E80082FFF2CF80E0089582E0089583E0B1 +:1026A000089581E0089520911A0330911B032617A5 +:1026B000370748F06115710539F42091E8002E774D +:1026C0002093E80001C0B901FC0120E0611571050B +:1026D00091F180911303882309F440C0853009F4F7 +:1026E0003FC08091E80083FD3DC08091E80082FDFD +:1026F0002FC08091E80080FFE9CF2091F300809106 +:10270000F20090E0922B6115710559F08830910527 +:1027100040F424912093F1003196615071090196A3 +:10272000F2CF21E0089709F020E08091E8008E7751 +:102730008093E800CBCF2111CCCF0AC08091130346 +:10274000882361F0853061F08091E80083FD0AC044 +:102750008091E80082FFF2CF80E0089582E0089542 +:1027600083E0089581E00895982F973058F590936D +:10277000E900981739F07091EC002091ED0050912C +:10278000F00003C0242F762F50E021FF19C03091B4 +:10279000EB003E7F3093EB003091ED003D7F3093B6 +:1027A000ED003091EB0031603093EB007093EC0062 +:1027B0002093ED005093F0002091EE0027FF07C01A +:1027C0009F5FD3CF8F708093E90081E0089580E010 +:1027D00008958091140387FF11C08091E80082FD65 +:1027E00005C0809113038111F8CF11C08091E800DA +:1027F0008B770BC080911303882349F08091E80008 +:1028000080FFF8CF8091E8008E778093E8000895EC +:102810002091E4003091E50095E64091EC00842F92 +:10282000817040FF22C08091E80080FD1CC0809133 +:102830001303882391F0853091F08091EB0085FDA2 +:1028400010C04091E4005091E5004217530729F36E +:102850009A01915011F784E0089582E0089583E091 +:10286000089581E0089580E008954091E80042FFD6 +:10287000DECF08950E94A8140E94B014E0EEF0E0AC +:10288000808181608083E8EDF0E080818F778083B4 +:1028900019BCA7EDB0E08C918E7F8C9380818F7EE8 +:1028A00080831092120308950F931F93CF93DF93A9 +:1028B0000E94A8140E94B014C8EDD0E088818F77E0 +:1028C000888388818068888388818F7D888319BC0C +:1028D0001092130310920F03109211031092100321 +:1028E00000EE10E0F80180818B7F80838881816019 +:1028F000888342E060E080E00E94B413E1EEF0E003 +:1029000080818E7F8083E2EEF0E080818160808331 +:10291000808188608083F80180818E7F80838881B8 +:1029200080618883DF91CF911F910F910895E8ED29 +:10293000F0E080818F7E8083E7EDF0E08081816030 +:10294000808384E082BF81E0809312030C9454144E +:10295000E8EDF0E080818E7F80831092E2000895A0 +:102960001092DA001092E10008951F920F920FB6B4 +:102970000F9211242F933F934F935F936F937F9305 +:102980008F939F93AF93BF93EF93FF938091E10059 +:1029900082FF0BC08091E20082FF07C08091E100BE +:1029A0008B7F8093E1000E941C178091DA0080FFEA +:1029B0001FC08091D80080FF1BC08091DA008E7FFD +:1029C0008093DA008091D90080FF0DC080E189BD3D +:1029D00082E189BD09B400FEFDCF81E0809313033D +:1029E0000E94201105C019BC109213030E942E11E1 +:1029F0008091E10080FF19C08091E20080FF15C046 +:102A00008091E2008E7F8093E2008091E2008061FD +:102A10008093E2008091D80080628093D80019BC36 +:102A200085E0809313030E9432118091E10084FFBE +:102A300030C08091E20084FF2CC080E189BD82E13A +:102A400089BD09B400FEFDCF8091D8008F7D8093B1 +:102A5000D8008091E1008F7E8093E1008091E200B8 +:102A60008F7E8093E2008091E20081608093E2009B +:102A700080910F03882311F084E007C08091E30068 +:102A800087FD02C081E001C083E0809313030E94B0 +:102A900033118091E10083FF29C08091E20083FF20 +:102AA00025C08091E100877F8093E10082E08093E0 +:102AB000130310920F038091E1008E7F8093E10059 +:102AC0008091E2008E7F8093E2008091E20080613D +:102AD0008093E20042E060E080E00E94B4138091C5 +:102AE000F00088608093F0000E943111FF91EF9117 +:102AF000BF91AF919F918F917F916F915F914F9116 +:102B00003F912F910F900FBE0F901F9018951F921D +:102B10000F920FB60F9211242F933F934F935F9311 +:102B20006F937F938F939F93AF93BF93CF93DF93D5 +:102B3000EF93FF93C091E900CF708091EC00D82F04 +:102B4000D17080FDD0E81092E9008091F000877F7D +:102B50008093F00078940E94CB151092E900809148 +:102B6000F00088608093F000CD2BCF70C093E90017 +:102B7000FF91EF91DF91CF91BF91AF919F918F9195 +:102B80007F916F915F914F913F912F910F900FBE69 +:102B90000F901F9018951F93CF93DF93CDB7DEB79B +:102BA000AA970FB6F894DEBF0FBECDBFE4E1F3E005 +:102BB00088E08E0F9091F10091938E13FBCF0E94CD +:102BC00049118091E80083FF1FC180911403909107 +:102BD0001503492F50E04A30510508F015C1FA019C +:102BE000EA5AFF4F0C94D82C803881F0823809F0D3 +:102BF0000BC1809118038F708093E9008091EB00E6 +:102C000085FB882780F91092E90006C080911003A7 +:102C100090911103911182609091E800977F9093B9 +:102C2000E8008093F1001092F100C8C0282F2D7F9A +:102C300009F0EAC0882319F0823061F0E5C0809184 +:102C40001603813009F0E0C0933009F080E08093F2 +:102C500011032BC080911603811127C080911803A6 +:102C60008F7009F4D1C08093E9002091EB0020FF20 +:102C70001CC0933021F48091EB00806214C09091CD +:102C8000EB0090619093EB0021E030E0A90102C0DD +:102C9000440F551F8A95E2F74093EA001092EA002C +:102CA0008091EB0088608093EB001092E9008091A6 +:102CB000E800877F86C08111A7C0109116031F7797 +:102CC0008091E3008078812B8093E3008091E8007D +:102CD000877F8093E8000E94E9138091E80080FFDD +:102CE000FCCF8091E30080688093E300111102C063 +:102CF00082E001C083E08093130386C08058823055 +:102D000008F082C080911603909117038C3D53E028 +:102D1000950779F583E08A838AE289834FB7F8942F +:102D2000DE01139620E03EE051E2E32FF0E0509305 +:102D30005700E49120FF03C0E295EF703F5FEF7012 +:102D40008E2F90E0EA3010F0C79601C0C0968D93A8 +:102D50009D932F5F243149F74FBF8091E800877F13 +:102D60008093E8006AE270E0CE0101960E94F012C2 +:102D700014C0AE014F5F5F4F609118030E9437127D +:102D8000BC01009709F440C09091E800977F9093B0 +:102D9000E80089819A810E9453138091E8008B7723 +:102DA0008093E80031C0803879F58091E800877F12 +:102DB0008093E80080910F038093F1008091E800F8 +:102DC0008E778093E8000E94E9131EC081111CC019 +:102DD000909116039230C0F48091E800877F809331 +:102DE000E80090930F030E94E91380910F03811173 +:102DF00006C08091E30087FD02C081E001C084E04D +:102E0000809313030E9435118091E80083FF0AC06C +:102E10008091E800877F8093E8008091EB008062DA +:102E20008093EB00AA960FB6F894DEBF0FBECDBF1D +:102E3000DF91CF911F9108950895CF93809113034F +:102E40008823A1F0C091E900CF709091EC00892F08 +:102E5000817090FD80E8C82B1092E9008091E80015 +:102E600083FD0E94CB15CF70C093E900CF910895E8 +:102E700090939302809392020895E0919202F091D0 +:102E80009302309721F00190F081E02D099480E0C9 +:102E90000895E0919202F0919302309721F0028020 +:102EA000F381E02D09940895E0919202F09193024C +:102EB000309721F00480F581E02D09940895209148 +:102EC0009002309191028217930771F090939102D2 +:102ED00080939002E0919202F0919302309721F05A +:102EE0000680F781E02D0994089520918E0230919B +:102EF0008F028217930771F090938F0280938E0256 +:102F0000E0919202F0919302309721F00084F185D4 +:102F1000E02D0994089508950C948B170E941223B4 +:102F20000E9463090E9498230C9447285F926F9235 +:102F30007F928F929F92AF92BF92CF92DF92EF9249 +:102F4000FF920F931F93CF93DF9300D000D01F9277 +:102F5000CDB7DEB70E94A8099DE9C92E92E0D92E0F +:102F600003E010E0AA24A394B12C502E802F0E94DD +:102F7000230A4C01F601729062906F01682679264F +:102F800061147104A1F40150110978F78FEF89835E +:102F90008A831B820E941B238160782F9D838C83F0 +:102FA00049815A816B818D810E94461838C0809179 +:102FB000F20281FD0E942C0A2BE030E07501022E06 +:102FC00002C0EE0CFF1C0A94E2F7C701862197218C +:102FD000892B09F129835A828E209F2091E089282C +:102FE00009F490E09B830E941B238160782F9D83CE +:102FF0008C8349815A816B818D810E944618000F14 +:10300000111FF801EB56FD4F80819181E826F926CA +:10301000F182E08204C02150310980F6B4CF0E94D1 +:103020007F25109194020E943D171817D1F00E943D +:103030003D17809394020F900F900F900F900F9078 +:10304000DF91CF911F910F91FF90EF90DF90CF9084 +:10305000BF90AF909F908F907F906F905F900C94F7 +:103060004D090F900F900F900F900F90DF91CF911F +:103070001F910F91FF90EF90DF90CF90BF90AF9096 +:103080009F908F907F906F905F900895CF93DF9384 +:10309000CDB7DEB72B970FB6F894DEBF0FBECDBF0E +:1030A0004F83588769877A878B87DE01119686E080 +:1030B000FD0111928A95E9F785E0FE0137960190AE +:1030C0000D928A95E1F749815A816B817C818D81CE +:1030D0009E810E94BD1E2B960FB6F894DEBF0FBED8 +:1030E000CDBFDF91CF910895CF93882309F4C2C05B +:1030F000C82F823859F40E943D1781FDBBC089E377 +:103100000E9497210E94642289E30CC0833879F4DD +:103110000E943D1780FDAEC083E50E9497210E946A +:10312000642283E50E94D921CF910C9464228438D3 +:1031300059F40E943D1782FD9DC087E40E949721AB +:103140000E94642287E4EECF8CEF8C0F813A48F422 +:103150008C2F0E94AF2781118DC08C2F0E94972148 +:10316000E3CF80E28C0F883048F4C77081E001C063 +:10317000880FCA95EAF70E941D22D6CF8BE58C0FE7 +:10318000833078F4C53A29F0C63A31F083E890E00C +:1031900005C081E890E002C082E890E0CF910C94F5 +:1031A0005F1788E58C0F833108F064C0C83A39F1A5 +:1031B000C93A41F1CA3A49F1CB3A51F1CC3A59F105 +:1031C000CD3A61F1C03B69F1CE3A71F1CF3A79F174 +:1031D000C13B81F1C23B89F1C33B91F1C43B99F101 +:1031E000C53BA1F1C63BA9F1C73BB1F1C83BB9F161 +:1031F000C93BC1F1CA3BC9F180E090E038C082EE22 +:1032000090E035C089EE90E032C08AEE90E02FC0A9 +:1032100085EB90E02CC086EB90E029C087EB90E036 +:1032200026C08CEC90E023C08DEC90E020C083E8B9 +:1032300091E01DC08AE891E01AC082E991E017C0D0 +:1032400084E991E014C081E292E011C083E292E04F +:103250000EC084E292E00BC085E292E008C086E2F4 +:1032600092E005C087E292E002C08AE292E0CF914C +:103270000C947517CF910895882309F44BC08238B8 +:1032800059F40E943D1781FF45C089E30E949721B0 +:103290000E94642289E30CC0833871F40E943D17B8 +:1032A00080FF38C083E50E9497210E94642283E555 +:1032B0000E94D9210C946422843859F40E943D174D +:1032C00082FF28C087E40E9497210E94642287E43D +:1032D000EFCF9CEF980F913A58F390E2980F983007 +:1032E00050F4877091E001C0990F8A95EAF7892F11 +:1032F0000E942322DFCF9BE5980F933020F480E0DB +:1033000090E00C945F17885A833120F480E090E0BD +:103310000C9475170895882321F00E941D220C94A7 +:1033200064220895882321F00E9423220C946422B1 +:1033300008957F928F929F92AF92BF92CF92DF9229 +:10334000EF92FF920F931F93CF93DF931F92CDB70E +:10335000DEB77C01C62E772EFC01058102950F7029 +:10336000128111110E943A220E949021882379F043 +:10337000112369F080E28C0D883048F082E00E94D1 +:1033800079210E94902191E0D82ED92601C0D12C1C +:10339000E72DE295EF70F0E0E05AFF4F0C94D82C47 +:1033A000872D807F072D0F70882311F00295007FF5 +:1033B000112389F0002309F499C180E28C0D883033 +:1033C00020F4802F0E941D2203C0802F0E942D22F6 +:1033D0000E9464228BC18C2D0E943C19002309F4A9 +:1033E000C3C180E28C0D883020F4802F0E942322FC +:1033F00003C0802F0E9433220E946422B5C1872D12 +:10340000807F972D9F70803211F4892F03C0892F00 +:103410008295807FCC2021F0F1E0CF16A1F01DC075 +:10342000112339F0002319F1013009F50E944D22D2 +:103430009BC1002319F0013009F496C189830E94D1 +:103440005022898110C1112321F0063008F08CC16F +:103450000EC0053008F088C106C1112359F00023C1 +:1034600031F0F701958190FF41C19F7095830E94D3 +:103470008B197AC1002309F4F6C03EC1872D8695C9 +:103480008695837090E0009719F0019761F06CC108 +:10349000112321F08C2D972D937002C080E090E0D5 +:1034A0000E945F1761C1112321F08C2D972D93701D +:1034B00002C080E090E00E94751756C18C2D112348 +:1034C00019F00E94872402C00E94EF240E947425F4 +:1034D0004BC1872D837009F052C0111145C18C2D4D +:1034E000829586958770880F880F9C2D9F70892EF6 +:1034F000912CA12CB12C082E04C0880C991CAA1C5C +:10350000BB1C0A94D2F7C4FE14C00FE010E020E008 +:1035100030E0B901A80104C0440F551F661F771F92 +:103520008A95D2F7CB01BA016095709580959095F8 +:1035300003C060E070E0CB01272D2695269523700F +:1035400030E02230310569F02330310589F06829F7 +:1035500079298A299B292130310571F00E940520A3 +:1035600003C1682979298A299B290E942120FCC04E +:103570000E940520C501B4010E94E91FF5C0112376 +:1035800019F0872D817001C08695882309F4ECC05D +:103590008C2D829586958770880F880F9C2D9F7043 +:1035A000892E912CA12CB12C082E04C0880C991CBA +:1035B000AA1CBB1C0A94D2F7C4FE14C00FE010E092 +:1035C00020E030E0B901A80104C0440F551F661F78 +:1035D000771F8A95D2F7CB01BA01609570958095D7 +:1035E000909503C060E070E0CB01272D26952695CD +:1035F0002370422F50E04230510569F043305105AD +:1036000089F0682979298A299B294130510571F06F +:103610000E94DF20A9C0682979298A299B290E9454 +:10362000FB20A2C00E94DF20C501B4010E94C3207C +:103630009BC08C2D90E0FC01E05EF109E531F105C5 +:1036400008F050C0E059FF4F0C94D82C0C2D0F708F +:10365000872D8F71112321F00E945C20802F07CFCE +:103660000E947D20802F0E9492197EC0112341F07C +:10367000053008F079C0872D8F710E94A22074C098 +:10368000063008F071C0F7CF112339F0872D8F7104 +:103690000E945C2069C01123C9F3872D8F710E949D +:1036A0007D2062C0112329F0872D8F710E94472051 +:1036B0005BC00E943D2058C0112351F0172D1F718F +:1036C000812F0E945C2063E0812F0E9470214CC0FA +:1036D00081E00E947921023008F446C082E00E9415 +:1036E000792142C0112331F0002381F28C2D0E94F8 +:1036F00074183AC0002389F28C2D0E943C1934C002 +:10370000472D4F706C2DC7010E94B8030E94611FA6 +:103710002BC0111129C0472D4F7050E04230510588 +:10372000B9F04CF44115510581F041305105E1F4F7 +:103730000E946F2819C04330510569F0443051058B +:1037400099F48C2D0E94C1280FC00E9458280CC0EB +:103750000E948B2809C00E949E2806C0472D4F70EA +:103760006C2DC7010E942E06DD20F9F00E946C210D +:1037700080FD1BC0F70112820E9466210E945C201E +:10378000C7010E94E41B0E9466210F90DF91CF9138 +:103790001F910F91FF90EF90DF90CF90BF90AF906F +:1037A0009F908F907F900C947D200F90DF91CF9110 +:1037B0001F910F91FF90EF90DF90CF90BF90AF904F +:1037C0009F908F907F9008950F931F93CF93DF93D7 +:1037D000EC01888199812B813C81232BB9F09F3F9B +:1037E00011F48F3F99F0CE010E942D04882371F0CF +:1037F000688179818A810E9462218C010E9417214F +:103800000E94DE1FB801CE010E949919DF91CF916D +:103810001F910F9108950E943A220E944A220E940D +:103820000F220E9464220E9425260E94742580E0B7 +:1038300090E00E945F1780E090E00C9475170E9462 +:103840002A220C940B1C0E945721292F22952F709D +:1038500030E02C3031054CF42A3031056CF4225024 +:10386000310922303105A8F407C02C30310569F048 +:103870002F30310551F00DC0803F69F018F4803EC3 +:1038800040F409C0843F29F406C093FB882780F9DF +:10389000089580E0089581E00895CF93DF9300D0EC +:1038A00000D01F92CDB7DEB70F900F900F900F9002 +:1038B0000F90DF91CF910895CF93DF9300D000D088 +:1038C00000D0CDB7DEB726960FB6F894DEBF0FBE98 +:1038D000CDBFDF91CF9108951F93CF93DF93C09118 +:1038E0009D0216E080919E02C81799F0D0E01C9FBF +:1038F000F0011D9FF00D1124E156FD4F40815181D3 +:1039000062817381848195810E945C1C2196C770BD +:10391000E9CFDF91CF911F9108954091CF0250914F +:10392000D0026091D1027091D2028091D302909125 +:10393000D4020C945C1C8091D40282958F7009F0A3 +:1039400054C08091D102882309F44FC080919D0218 +:10395000A0919E026091CF027091D0024091D2025C +:103960005091D302B6E08A1709F43FC090E04115A8 +:103970005105C1F17F3F11F46F3FA1F1B89FF001F4 +:10398000B99FF00D1124E156FD4F218172132AC019 +:103990002081621327C02281211124C02381348118 +:1039A0002417350710F421503109241B350B283C0E +:1039B0003105C0F42091D4022F7020612093D402ED +:1039C00026E0289FF001299FF00D1124EC55FD4FB2 +:1039D00080818F70806180838FEC92E00E94E41B75 +:1039E0000C946C1C01968770BECF0895CF92DF9225 +:1039F000EF92FF920F931F93CF93DF93CDB7DEB774 +:103A000062970FB6F894DEBF0FBECDBF8C0185E084 +:103A1000F801DE011D9601900D928A95E1F7D8011B +:103A20004C9111965C91119712966C911297139686 +:103A3000CD90DC9014973091CF027091D00280919C +:103A4000D2029091D302009709F46BC17F3F19F421 +:103A50003F3F09F466C1E090D102EE2009F4C0C0F6 +:103A60002091D402C816D90628F0F601E81BF90BFC +:103A7000CF0104C0809590958C0D9D1DFF24F3947B +:103A8000883C910578F0F12C207F09F0C6C07C2D90 +:103A9000D98AC88A89890E944D1C8FEC92E00E94C5 +:103AA000E41BB1C0822F807F09F046C0751314C09B +:103AB000341312C0611110C02F7020612093D40202 +:103AC0000E948D1C8FEC92E00E94E41B8091D40236 +:103AD000D80115968C932EC0CD2819F15F3F11F4B3 +:103AE0004F3FF9F0F62E61111CC080919D0220918C +:103AF0009E0236E0821709F45AC090E0389FF00128 +:103B0000399FF00D1124E156FD4F7181571306C006 +:103B10007081471303C07281711103C001968770D1 +:103B2000E9CFF62E662309F418C18091D402816092 +:103B30008093D402F12C11C1751308C0341306C050 +:103B4000611104C08091D402D801C3C04D875E8743 +:103B50008D859E856A8B0E94231C6A898823E1F1EA +:103B60006623D1F12091D402822F82958F7090E04C +:103B7000029774F08091CF029091D00298878F8342 +:103B80001986DB86CA862C87CE0107960E94E41B25 +:103B900086E0F801AFECB2E001900D928A95E1F772 +:103BA0000E949B1C0E948D1CFF24F394D6C04D875D +:103BB0005E878D859E850E945721292F22952F7023 +:103BC00030E0223031050CF0BCC09F7009F0B6C067 +:103BD000805E883008F4C1C0C8010E94E41BE4CFB5 +:103BE000C816D90608F453C0F601E81BF90BCF013B +:103BF000883C910508F450C0F12C7C2DD98AC88AE4 +:103C000089890E944D1CEFECF2E086E0DF011D92F5 +:103C10008A95E9F70E948D1CA0C0751314C0341357 +:103C200012C0611110C08091D402F8018583C801CF +:103C30000E94E41B86E0EFECF2E0DF011D928A9522 +:103C4000E9F7FE2C8AC04D875E878D859E856A8B3D +:103C50000E94231C6A89882309F4BECF662309F4D5 +:103C6000BBCF2091D402822F82958F7090E0029773 +:103C70000CF48ECF8091CF029091D0029A838983E9 +:103C80001B82DD82CC822E83CE0101967FCF809570 +:103C900090958C0D9D1DACCFF62E662309F49CCF1C +:103CA00075132EC034132CC02091D40220FD1FC0E8 +:103CB000822F82958F70D9F0D80115962C93159785 +:103CC0008F3049F08F5F982F9295907F822F8F7061 +:103CD000892B15968C93C8010E94E41B86E0F8019D +:103CE000AFECB2E001900D928A95E1F793CF86E0B8 +:103CF000F801AFECB2E001900D928A95E1F72DC08A +:103D00004D875E878D859E850E94231C811140CF43 +:103D10008091D40281608093D402C8010E94E41B88 +:103D20001CC0662309F458CF4D875E878D859E851C +:103D30000E94231C882309F44FCF2ACF811148CF3A +:103D40000CC0243031050CF047CF9F7009F440CFF0 +:103D5000F8019581907F09F03BCF8F2D62960FB6C9 +:103D6000F894DEBF0FBECDBFDF91CF911F910F91B1 +:103D7000FF90EF90DF90CF9008951F93CF93DF9344 +:103D8000CDB7DEB72C970FB6F894DEBF0FBECDBF10 +:103D90004F83588769877A878B879C87CE010796E0 +:103DA0000E94F61C882369F08F8198852A853B85BF +:103DB000232BF1F19F3F09F063C08F3F09F060C0F2 +:103DC00037C086E0FE013796DE01119601900D9214 +:103DD0008A95E1F76F817885EA85FB85309741F117 +:103DE0007F3F11F46F3F21F120919E0230E0C90125 +:103DF00001968770992740919D0250E0841795079E +:103E000009F447C069837A83FD83EC8396E0929F2F +:103E1000D001939FB00D1124A156BD4FFE013196E4 +:103E200001900D929A95E1F780939E020E946C1C7E +:103E300016E080919D0290919E028917C1F1189F12 +:103E4000C001112481569D4F0E94F61C882379F1F0 +:103E5000E0919D021E9FF0011124E156FD4F40812B +:103E6000518162817381848195810E945C1C809163 +:103E70009D0290E001968770992780939D02D9CF8B +:103E80004F81588569857A858B859C850E945C1C4D +:103E9000CFCF0E941F1C10929E0210929D02EFEC49 +:103EA000F2E086E0DF011D928A95E9F7C1CF2C96FA +:103EB0000FB6F894DEBF0FBECDBFDF91CF911F913B +:103EC0000895EF92FF920F931F93CF93DF938C018E +:103ED000009709F46CC0F12CEE24E394E8012196DC +:103EE000F8018491843740F4843008F051C0813067 +:103EF00081F0823019F15BC0853709F444C0A8F124 +:103F00009CE7980F903708F052C08F770E943C19B9 +:103F100041C00E5F1F4FFE01C49180E28C0F8830BC +:103F200048F4C7708E2D01C0880FCA95EAF70E9429 +:103F30003D2214C08C2F0E9474182DC00E5F1F4F9D +:103F4000FE01C49180E28C0F883058F4C7708E2D2A +:103F500001C0880FCA95EAF70E9443220E9464229A +:103F60001AC08C2F0E943C1916C00E5F1F4FFE0115 +:103F7000C491CC2381F08FE99FE00197F1F700C055 +:103F80000000C150F6CF0E5F1F4FFE01F49003C03A +:103F90000E9474188E018F2D882309F49FCFEFE9BA +:103FA000FFE03197F1F700C000008150F5CFDF91BD +:103FB000CF911F910F91FF90EF9008950895609316 +:103FC000D9027093DA028093DB029093DC020C94A6 +:103FD0000B1C0F931F930091D9021091DA022091CC +:103FE000DB023091DC02DC01CB01802B912BA22B78 +:103FF000B32B8093D9029093DA02A093DB02B093A3 +:10400000DC021F910F910C940B1C0F931F930091D6 +:10401000D9021091DA022091DB023091DC02DC013E +:10402000CB0180239123A223B3238093D9029093C1 +:10403000DA02A093DB02B093DC021F910F910C9483 +:104040000B1C0F931F930091D9021091DA0220915B +:10405000DB023091DC02DC01CB0180279127A22713 +:10406000B3278093D9029093DA02A093DB02B09336 +:10407000DC021F910F910C940B1C1092D502109230 +:10408000D6021092D7021092D8020C940B1C41E079 +:1040900050E060E070E004C0440F551F661F771FBA +:1040A0008A95D2F74093D5025093D6026093D702F7 +:1040B0007093D8020C940B1C41E050E060E070E07B +:1040C00004C0440F551F661F771F8A95D2F7809151 +:1040D000D5029091D602A091D702B091D802482B78 +:1040E000592B6A2B7B2B4093D5025093D6026093B9 +:1040F000D7027093D8020C940B1C41E050E060E0B2 +:1041000070E004C0440F551F661F771F8A95D2F7D1 +:1041100040955095609570958091D5029091D6020A +:10412000A091D702B091D802482359236A237B2358 +:104130004093D5025093D6026093D7027093D80271 +:104140000C940B1C41E050E060E070E004C0440FB0 +:10415000551F661F771F8A95D2F78091D5029091DF +:10416000D602A091D702B091D802482759276A27D2 +:104170007B274093D5025093D6026093D702709369 +:10418000D8020C940B1C0F931F930091D502109131 +:10419000D6022091D7023091D802DC01CB01802BCE +:1041A000912BA22BB32B8093D5029093D602A09390 +:1041B000D702B093D8021F910F910C940B1C0F9350 +:1041C0001F930091D5021091D6022091D702309111 +:1041D000D802DC01CB0180239123A223B323809357 +:1041E000D5029093D602A093D702B093D8021F9124 +:1041F0000F910C940B1C0F931F930091D5021091FB +:10420000D6022091D7023091D802DC01CB01802761 +:104210009127A227B3278093D5029093D602A0932B +:10422000D702B093D8021F910F910C940B1C0895E4 +:10423000CF92DF92EF92FF920F931F93CF93DF9372 +:104240008C01C090D902D090DA02E090DB02F090AD +:10425000DC028091D5029091D602A091D702B09154 +:10426000D802C82AD92AEA2AFB2ACFE1D0E0D7010E +:10427000C6010C2E04C0B695A795979587950A940C +:10428000D2F780FF06C0B8018C2F0E94B3080197B7 +:1042900021F4219760F780E001C08C2FDF91CF914E +:1042A0001F910F91FF90EF90DF90CF900895CF93E3 +:1042B000DF93EC010E941821BE010E94B308DF9138 +:1042C000CF910895CB010E94572108958091DD027E +:1042D00085958595859508958091DD02877008956F +:1042E00098E0899F90011124262B2093DD020C94E5 +:1042F0005C202091DD02809582238093DD02982F3F +:10430000977069F430E0482F552747FD50952417E2 +:10431000350729F08595859585950C947D20089520 +:104320009091DD02977081E009F480E0089590910A +:104330001501992321F090911601911109C0209146 +:10434000170130911801F90132969FEF40E01FC02C +:10435000982F9695969596959F3050F5E091170178 +:10436000F0911801E90FF11D877021E030E0A901FB +:1043700002C0440F551F8A95E2F7CA019181892B2B +:10438000818308959F3F39F04F5F4E3041F0519146 +:104390005813F8CF0DC05111F7CF942FF5CF9F3F91 +:1043A00039F0F901E90FF11D97FDFA95828308951F +:1043B000089590911501992321F090911601911182 +:1043C00009C02091170130911801F9013296205F40 +:1043D0003F4F1FC0982F9695969596959F30F0F475 +:1043E000E0911701F0911801E90FF11D877021E0AC +:1043F00030E0A90102C0440F551F8A95E2F7CA01B7 +:10440000809591818923818308953196E217F3077E +:1044100029F090819813F9CF1082F7CF089581E0A9 +:1044200090E0E0911701F0911801E80FF91F108258 +:10443000019680319105A9F708959091F102892B99 +:104440008093F102089580959091F10289238093E1 +:10445000F10208951092F10208959091F002892BD3 +:104460008093F002089580959091F00289238093C3 +:10447000F00208951092F00208959091EF02892BB6 +:104480008093EF02089580959091EF0289238093A5 +:10449000EF0208951092EF0208958093DE020895CE +:1044A0001092DE0208958091170190911801FC018D +:1044B00031969C01205F3F4F80E0919191118F5F79 +:1044C000E217F307D1F70895E0911701F091180171 +:1044D0008091F1028083E0911701F09118019081A1 +:1044E0008091F002892B8083E0911701F0911801EF +:1044F00090818091EF02892B80838091DE02882356 +:1045000061F0E0911701F09118019081892B80836F +:104510000E94532281111092DE0280911701909126 +:1045200018010C94491720E0009739F0AC01415074 +:104530005109842395232F5FF7CF822F089580910F +:104540001303843039F11092F30220E488E190E003 +:104550000FB6F894A895809360000FBE209360007A +:1045600080E00E941F0380E00E944D0983B7817F95 +:10457000846083BF83B7816083BF7894889583B755 +:104580008E7F83BF88E10FB6F8948093600010920D +:1045900060000FBE08950895089580E00E941F03F3 +:1045A0000E94CB220E94A8090E94CC220E942D0AC0 +:1045B00091E0811101C090E0892F08950E941F1C95 +:1045C00080E00E941F030E9447280E943D170C9420 +:1045D0004D091F920F920FB60F9211248F939F9344 +:1045E000AF93BF938091F302811113C08091F402C5 +:1045F0009091F502A091F602B091F7024196A11DAB +:10460000B11D8093F4029093F502A093F602B0934B +:10461000F702BF91AF919F918F910F900FBE0F90B6 +:104620001F90189582E084BD93E095BD9AEF97BDE9 +:1046300080936E0008952FB7F8948091F4029091C2 +:10464000F502A091F602B091F7022FBF0895CF9224 +:10465000DF92EF92FF920F931F932FB7F894409140 +:10466000F4025091F5026091F6027091F7022FBFAB +:104670006A017B01EE24FF248C0120E030E0C016AB +:10468000D106E206F30610F4415051099A01281BA5 +:10469000390BC9011F910F91FF90EF90DF90CF90E0 +:1046A00008951F920F920FB60F9211248F939F932C +:1046B000AF93BF938091F4029091F502A091F6021E +:1046C000B091F7020196A11DB11D8093F402909361 +:1046D000F502A093F602B093F702BF91AF919F91BC +:1046E0008F910F900FBE0F901F9018950E943A1453 +:1046F000F8942FEF87EA91E6215080409040E1F74F +:1047000000C0000087E090EBDC0180931E039093D3 +:104710001F03A0932003B09321039CE088E10FB610 +:10472000F894A895809360000FBE90936000FFCF2F +:104730000E94D723811102C00E94B3230E94E2236A +:104740008093F2020E94EA2380931C0387FB882750 +:1047500080F9809316010E94E623682F70E080E0C4 +:1047600090E00C94DF1F6DEE7EEF80E090E00E9401 +:10477000FE2C60E082E090E00E94EC2C60E083E0A0 +:1047800090E00E94EC2C60E084E090E00E94EC2C31 +:1047900060E085E090E00E94EC2C60E086E090E034 +:1047A0000E94EC2C6FEF87E090E00C94EC2C80E002 +:1047B00090E00E94E62C21E08D3E9E4F09F020E023 +:1047C000822F089582E090E00C94DE2C83E090E04C +:1047D0000C94DE2C84E090E00C94DE2C682F84E0B6 +:1047E00090E00C94EC2C86E090E00C94DE2C682F8A +:1047F00086E090E00C94EC2C87E090E00C94DE2CAA +:10480000682F87E090E00C94EC2C8091FA0280FFF6 +:104810000BC060911C0185E0689FB0011124759563 +:104820006795759567952BC081FF09C060911C0144 +:1048300085E0689FB00111247595679520C082FFBF +:1048400007C060911C0185E0689FB001112417C06A +:104850009091FB029923D1F060911B01961788F784 +:1048600020911C0185E0289F90011124929FA001B6 +:10487000939F500D112470E0CA010E94C42C60382F +:10488000710540F46115710539F002C065E070E012 +:10489000862F08958FE7089581E008958091FA02A8 +:1048A00080FF08C060911A0170E075956795759555 +:1048B000679521C081FF06C060911A0170E075956F +:1048C000679519C082FF04C060911A0170E010C0A2 +:1048D0009091FB029923C1F0609119019617A0F7FE +:1048E00080911A01899FC001112470E00E94C42C9C +:1048F0006038710528F46115710521F0862F08953F +:104900008FE7089581E0089561E070E0F4CF803F83 +:1049100021F40E940524819504C0813F29F40E945E +:1049200005248093FE020895823F21F40E9405240D +:10493000819504C0833F29F40E9405248093FD02E1 +:104940000895893F19F40E944E2405C08A3F31F42E +:104950000E944E2481958093FF0208958B3F21F49D +:104960000E944E24819504C08C3F29F40E944E245D +:10497000809300030895843F21F48091FC028160BC +:1049800017C0853F21F48091FC02826011C0863FF0 +:1049900021F48091FC0284600BC0873F21F4809158 +:1049A000FC02886005C0883F31F48091FC02806180 +:1049B0008093FC0208958D3F21F48091FA0281607A +:1049C0000BC08E3F21F48091FA02826005C08F3FB8 +:1049D00029F48091FA0284608093FA020895803F5E +:1049E00039F48091FE0287FF6CC01092FE0269C00C +:1049F000813F29F48091FE021816BCF362C09091A9 +:104A0000FD02823F29F497FF5CC01092FD0259C05D +:104A1000833F19F41916CCF354C0893F41F48091B7 +:104A2000FF0218160CF04DC01092FF024AC08A3FD8 +:104A300029F48091FF0287FF44C0F6CF8B3F39F401 +:104A40008091000387FF3DC0109200033AC08C3F65 +:104A500029F4809100031816BCF333C0843F21F47D +:104A60008091FC028E7F17C0853F21F48091FC026B +:104A70008D7F11C0863F21F48091FC028B7F0BC09B +:104A8000873F21F48091FC02877F05C0883F31F485 +:104A90008091FC028F7E8093FC0213C08D3F21F435 +:104AA0008091FA028E7F0BC08E3F21F48091FA0232 +:104AB0008D7F05C08F3F29F48091FA028B7F809310 +:104AC000FA028091FD0281110EC08091FE028111D7 +:104AD0000AC08091FF02811106C0809100038111FC +:104AE00002C01092FB0208958CEF92E00E945417CE +:104AF0000E941B239093F9028093F80208951F935C +:104B0000CF93DF938091F8029091F9020E942723BE +:104B1000AC019091FB02992321F020911D0130E01E +:104B200006C020911E018AE0289F9001112442179F +:104B3000530708F486C08091FD02C091FE02D09117 +:104B4000FF0210910003811107C0C11176C0D1117D +:104B500074C0111172C075C09F3F19F09F5F909390 +:104B6000FB02181624F40E9405248093FD02809114 +:104B7000FD0287FF05C00E94052481958093FD02F8 +:104B80001C1624F40E9405248093FE028091FE02EC +:104B900087FF05C00E94052481958093FE026091E5 +:104BA000FD02662339F1C091FE02CC2319F177276B +:104BB00067FD7095872F972F0E94E62923E333E343 +:104BC00043E35FE30E94F62A0E94B3296093FD024B +:104BD0006C2F772767FD7095872F972F0E94E62906 +:104BE00023E333E343E35FE30E94F62A0E94B32901 +:104BF0006093FE021D1624F40E944E248093FF024F +:104C00008091FF0287FF05C00E944E24819580930A +:104C1000FF02111624F40E944E2480930003809119 +:104C2000000387FF05C00E944E24819580930003F6 +:104C3000DF91CF911F910C9474259F3F09F08ECF87 +:104C400096CFDF91CF911F910895ECEFF2E085E0D0 +:104C5000DF011D928A95E9F71092FB021092FA0289 +:104C60000895833081F128F4813059F08230D1F0F9 +:104C70000895853009F449C0B8F1863009F456C06A +:104C8000089580911E01262F30E0280F311D2F3FFF +:104C9000310524F4680F60931E0108958FEF80930F +:104CA0001E01089580911D01262F30E0280F311D2F +:104CB0002F3F310524F4680F60931D0108958FEF95 +:104CC00080931D01089580911C01262F30E0280F4C +:104CD000311D2F3F310524F4680F60931C010895A6 +:104CE0008FEF80931C01089580911B01262F30E0E7 +:104CF000280F311D2F3F310524F4680F60931B01ED +:104D000008958FEF80931B01089580911A01262F3B +:104D100030E0280F311D2F3F310524F4680F6093D8 +:104D20001A0108958FEF80931A0108958091190157 +:104D3000262F30E0280F311D2F3F310524F4680F56 +:104D40006093190108958FEF8093190108958330BE +:104D500011F128F4813049F0823091F008958530C6 +:104D600081F120F18630C1F1089580911E0168170C +:104D700020F4861B80931E01089510921E01089551 +:104D800080911D01681720F4861B80931D010895F2 +:104D900010921D01089580911C01681720F4861B54 +:104DA00080931C01089510921C01089580911B01AD +:104DB000681720F4861B80931B01089510921B0135 +:104DC000089580911A01681720F4861B80931A01B8 +:104DD000089510921A01089580911901681720F41E +:104DE000861B8093190108951092190108950F935D +:104DF0001F93873208F048C08E3108F08DC0803193 +:104E000009F477C008F5873009F461C068F486308A +:104E100009F09DC08091F202817F8E7F8093F20223 +:104E200081E08093020394C08B3009F489C08E30F6 +:104E300009F08DC08091F20282FB222720F991E0D7 +:104E4000922790FB82F95EC0863109F479C060F444 +:104E5000813109F07CC00E941F1C9091160181E0F5 +:104E60008927809316016CC0893109F469C08B31A0 +:104E700009F06DC08091F20281FB222720F991E0B8 +:104E8000922790FB81F93EC0883309F459C050F451 +:104E9000893209F457C0853309F454C0873209F4C4 +:104EA00051C055C0833409F44DC028F48A3308F446 +:104EB0004EC0895332C0883409F049C00E941F1C7B +:104EC0000E945D0A0E9424040E94762339C09091BA +:104ED000F202892F8095817080FB90F929F096600D +:104EE00098609093F20234C0997F977F9093F2027A +:104EF00027C08091F20283FB222720F991E09227BC +:104F000090FB83F98093F2029923D1F08091F20211 +:104F100081608093F20214C08D5141E050E060E066 +:104F200070E08A019B0104C0000F111F221F331F74 +:104F30008A95D2F7C901B8010E94DF1F0E941F1C89 +:104F400081E006C061E070E080E090E0F5CF80E0B5 +:104F50001F910F91089580E0089580E00895CF9308 +:104F6000C82F80910203813069F018F08230C9F1B6 +:104F700084C0E0911701F09118018081823209F01C +:104F80007EC007C0E0911701F09118018081823244 +:104F900061F48C2F0E94AB27811104C08C2F0E94DA +:104FA000F7261DC081E090E01AC08C2F0E94AD272B +:104FB000811114C0C43179F048F4CB3079F0C0319C +:104FC00009F061C082E08093020308C0C93219F081 +:104FD000C83321F058C01092020355C081E081709F +:104FE00054C0C93291F120F5C43179F1B0F4C73021 +:104FF00009F047C08EE180931E0182E380931D017A +:105000008AE080931C0184E180931B0188E08093F7 +:105010001A0188E28093190134C0CE51C63088F558 +:10502000EC2FF0E0EA54FE4F80818093010329C009 +:10503000CE34E9F020F4CB3421F56AE013C0C13559 +:1050400079F0C235F1F461E00DC08091010388234D +:1050500019F01092010315C081E08093020315C07E +:1050600061E006C0809101030E9431260AC06AE017 +:10507000809101030E94A72604C01092020380E0E1 +:1050800004C081E002C080E0AACFCF9108950E94C1 +:10509000D723811102C00E94B3230E94F32380937F +:1050A0001D0380FF02C0869501C080E00C941F03A1 +:1050B00080911D03982F9695292F30E023303105DC +:1050C0004CF49F5F990F8170892B816080931D0341 +:1050D0000E94F72380911D0386950C941F038091F5 +:1050E0001D03982F969591F09158990F8170892BF7 +:1050F00080931D038E7F91E009F490E080911D0361 +:1051000090FB80F980931D030E94F72380911D037B +:1051100086950C941F0380911D03982F909590FB0A +:1051200080F980931D030E94F72380911D0380FF67 +:1051300002C0869501C080E00C941F0390911D036E +:10514000892F86958F5F8F779170843028F4880F30 +:10515000892B80931D0302C090931D0380911D0332 +:105160008E7F91E009F490E080911D0390FB80F91F +:1051700080931D030E94F72380911D0386950C9454 +:105180001F0320911D03922F96958927982F990F21 +:10519000822F8170892B80931D038E7F91E009F40B +:1051A00090E080911D0390FB80F980931D030E9485 +:1051B000F72380911D0386950C941F0380911D0396 +:1051C000869508955058BB27AA270ED0D1C1C2D1C9 +:1051D00030F0C7D120F031F49F3F11F41EF4B7C175 +:1051E0000EF4E095E7FB9FC1E92FD3D180F3BA1706 +:1051F000620773078407950718F071F49EF5EBC1F9 +:105200000EF4E0950B2EBA2FA02D0B01B9019001E1 +:105210000C01CA01A0011124FF27591B99F0593F25 +:1052200050F4503E68F11A16F040A22F232F342F6D +:105230004427585FF3CF469537952795A795F040BB +:105240005395C9F77EF41F16BA0B620B730B840BD0 +:10525000BAF09150A1F0FF0FBB1F661F771F881F88 +:10526000C2F70EC0BA0F621F731F841F48F48795E0 +:1052700077956795B795F7959E3F08F0B3CF9395CF +:10528000880F08F09927EE0F97958795089527D1F5 +:1052900008F481E008950CD06BC163D140F05AD17D +:1052A00030F021F45F3F19F03EC1511195C14FC15B +:1052B00070D198F39923C9F35523B1F3951B550B7E +:1052C000BB27AA2762177307840738F09F5F5F4FD9 +:1052D000220F331F441FAA1FA9F333D00E2E3AF01A +:1052E000E0E830D091505040E695001CCAF729D034 +:1052F000FE2F27D0660F771F881FBB1F2617370783 +:105300004807AB07B0E809F0BB0B802DBF01FF27B2 +:1053100093585F4F2AF09E3F510568F004C15CC16D +:105320005F3FECF3983EDCF3869577956795B795EC +:10533000F7959F5FC9F7880F911D9695879597F907 +:105340000895E1E0660F771F881FBB1F6217730780 +:105350008407BA0720F0621B730B840BBA0BEE1F95 +:1053600088F7E095089504D06894B11135C1089587 +:1053700018D188F09F5790F0B92F9927B751A0F016 +:10538000D1F0660F771F881F991F1AF0BA95C9F7D9 +:1053900012C0B13081F01FD1B1E008951CC1672F58 +:1053A000782F8827B85F39F0B93FCCF38695779589 +:1053B0006795B395D9F73EF4909580957095619572 +:1053C0007F4F8F4F9F4F0895E89409C097FB3EF49D +:1053D00090958095709561957F4F8F4F9F4F992342 +:1053E000A9F0F92F96E9BB279395F69587957795C0 +:1053F0006795B795F111F8CFFAF4BB0F11F460FF80 +:105400001BC06F5F7F4F8F4F9F4F16C0882311F0D7 +:1054100096E911C0772321F09EE8872F762F05C0EB +:10542000662371F096E8862F70E060E02AF09A9586 +:10543000660F771F881FDAF7880F9695879597F97B +:10544000089588D018F011F08CD038F480C0C4C012 +:10545000E92F9FD0B0F35523C9F3E7FB6217730719 +:1054600084079507A8F199F3E92FFF2788232AF0ED +:105470003197660F771F881FDAF7952F552744233A +:1054800032F091505040220F331F441FD2F7BB27F8 +:10549000E91BF50B621B730B840BB109C1F222F4FB +:1054A000620F731F841FB11D31972AF0660F771F9B +:1054B000881FBB1FEFCF915050405AF041F0882316 +:1054C00032F0660F771F881F91505040C1F79395B7 +:1054D00030C08695779567959F5FD9F7F8CF990F7C +:1054E0000008550FAA0BE0E8FEEF16161706E807AE +:1054F000F907C0F012161306E407F50798F0621BCF +:10550000730B840B950B39F40A2661F0232B242BA3 +:10551000252B21F408950A2609F4A140A6958FEFC2 +:10552000811D811D089597F99F6780E870E060E014 +:1055300008959F3F31F0915020F4879577956795B6 +:10554000B795880F911D9695879597F908959FEFC8 +:1055500080EC089500240A9416161706180609060A +:10556000089500240A9412161306140605060895D9 +:10557000092E0394000C11F4882352F0BB0F40F461 +:10558000BF2B11F460FF04C06F5F7F4F8F4F9F4FA1 +:10559000089557FD9058440F551F59F05F3F71F023 +:1055A0004795880F97FB991F61F09F3F79F087958A +:1055B0000895121613061406551FF2CF4695F1DF13 +:1055C00008C0161617061806991FF1CF86957105A3 +:1055D000610508940895E894BB2766277727CB01D7 +:1055E00097F908957CDF08F48FEF08950BD0C0CFB2 +:1055F000B1DF28F0B6DF18F0952309F094CFA7CFDC +:105600001124EACFC6DFA0F3959FD1F3950F50E0A8 +:10561000551F629FF001729FBB27F00DB11D639F64 +:10562000AA27F00DB11DAA1F649F6627B00DA11D0A +:10563000661F829F2227B00DA11D621F739FB00DB0 +:10564000A11D621F839FA00D611D221F749F332720 +:10565000A00D611D231F849F600D211D822F762FB9 +:105660006A2F11249F5750408AF0E1F088234AF0B6 +:10567000EE0FFF1FBB1F661F771F881F9150504002 +:10568000A9F79E3F510570F04ECFA6CF5F3FECF3D8 +:10569000983EDCF3869577956795B795F795E795EE +:1056A0009F5FC1F7FE2B880F911D9695879597F9FF +:1056B0000895FA01EE0FFF1F30962105310599F18B +:1056C0006115710561F48038BFE39B0749F1689467 +:1056D0009038810561F08038BFEF9B0741F0992336 +:1056E00042F5FF3FE1053105210511F1E8940894E9 +:1056F000E795D901AA2329F4AB2FBE2FF85FD0F389 +:1057000010C0FF5F70F4A695E0F7F73950F019F07C +:10571000FF3A38F49F779F930CD00F9007FC905876 +:1057200008953EF014CF60E070E080E89FE30895B4 +:105730004FE79F775F934F933F932F939ED02F9187 +:105740003F914F915F9152DF05C019F40EF0EBCEFF +:1057500042CFFDCE26DFC8F39638C0F707F80F9288 +:10576000E8942BE33AEA48EB5FE74EDF0F920F92A3 +:105770000F924DB75EB70F92C0D0EAE0F1E016D0BD +:105780004F915F91EF91FF91E595EE1FFF1F49F05B +:10579000FE57E0684427EE0F441FFA95E1F7419564 +:1057A000550B32D00F9007FE26C00895DF93CF939C +:1057B0001F930F93FF92EF92DF927B018C0168940D +:1057C00005C0DA2EEF011EDFFE01E894A5912591B8 +:1057D000359145915591AEF3EF0106DDFE0197013C +:1057E000A801DA9479F7DF90EF90FF900F911F9165 +:1057F000CF91DF9108959B01AC0160E070E080E8FB +:105800009FE349CD90CE95CECCDEE8F39923D9F332 +:10581000940F511DBBF39150504094F059F08823E0 +:1058200032F0660F771F881F91505040C1F79E3F9E +:10583000510544F7880F911D9695879597F908951E +:105840005F3FACF0983E9CF0BB27869577956795B7 +:10585000B79508F4B1609395C1F7BB0F58F711F4F1 +:1058600060FFE8CF6F5F7F4F8F4F9F4FE3CFB4CE86 +:105870000EF05FCE6CCE689456CE93DEC8F39923BB +:10588000D1F3C6F3DF93CF931F930F93FF92C92FEA +:10589000DD2788232AF02197660F771F881FDAF704 +:1058A00020E030E040E85FEB9FE3883920F0803E65 +:1058B00030F021968F7787DCE2E3F1E003C083DCF0 +:1058C000EFE5F1E073DF8B01BE01EC01FB2E6F57BA +:1058D00071097595771F880B990B78DD28E132E700 +:1058E00041E35FE38FDEAF2D9801AE01FF900F9192 +:1058F0001F91CF91DF9178DC3BCEFA01DC01AA0F3A +:10590000BB1F9B01AC01BF5728F422273327442734 +:1059100050781FC0B75188F4AB2F002446953795B7 +:105920002795011CA395D2F3002069F0220F331FA5 +:10593000441FB395DAF30DD045CC61307105A0E872 +:105940008A07B94630F49B01AC0166277727882780 +:105950009078309621F020833183428353830895D9 +:10596000AA1BBB1B51E107C0AA1FBB1FA617B70785 +:1059700010F0A61BB70B881F991F5A95A9F78095A1 +:105980009095BC01CD01089597FB072E16F4009465 +:1059900007D077FD09D00E94B02C07FC05D03EF45B +:1059A000909581959F4F0895709561957F4F0895CB +:1059B000EE0FFF1F0590F491E02D0994F999FECFA9 +:1059C00092BD81BDF89A992780B50895A8E1B0E00D +:1059D00042E050E00C94062D262FF999FECF92BD9F +:1059E00081BDF89A019700B4021639F01FBA20BDA4 +:1059F0000FB6F894FA9AF99A0FBE08950196272FD8 +:105A00000E94ED2C0C94EC2CDC01CB01FC01F999EB +:105A1000FECF06C0F2BDE1BDF89A319600B40D92FA +:0C5A200041505040B8F70895F894FFCFB3 +:105A2C00640007000CFF0000003F644110CF10AC75 +:105A3C0010781044100101DF022808140A321E00ED +:105A4C0002040507090B0C0E1011131517181A1C5C +:105A5C001D1F2123242628292B2D2F303234353796 +:105A6C00393B1F0F03764F5F6F7F496943790959A3 +:105A7C0053633149803F5D8B803FF8BF803FCAE163 +:105A8C00803F73ED803FCAE1803FF8BF803F5D8B64 +:105A9C00803F3149803F0000803FF16D7F3F75EAC8 +:105AAC007E3F4C827E3F833F7E3F84287E3F833FF8 +:105ABC007E3F4C827E3F75EA7E3FF16D7F3F00005A +:105ACC00803F3F4D36394905FC04C6048D04200443 +:105ADC00390452046B04010203040506070809008B +:00000001FF diff --git a/keyboard/planck/keymaps/pete/compiled.hex b/keyboard/planck/keymaps/pete/compiled.hex new file mode 100644 index 0000000000..ddf70df507 --- /dev/null +++ b/keyboard/planck/keymaps/pete/compiled.hex @@ -0,0 +1,1143 @@ +:100000000C94F1020C9435030C9435030C943503D5 +:100010000C9435030C9435030C9435030C94350380 +:100020000C9435030C9435030C94D20D0C94A40E4F +:100030000C94061C0C9435030C9435030C94350376 +:100040000C9435030C9496030C9435030C943503EF +:100050000C9435030C946E1C0C9435030C943503EE +:100060000C9435030C9435030C9435030C94350330 +:100070000C9435030C9435030C9435030C94350320 +:100080000C9435030C9435030C9435030C94350310 +:100090000C9435030C9435030C9435030C94350300 +:1000A0000C9435030C9435030C943503FC030404C1 +:1000B0000E0416041E042F0458045804580458044F +:1000C0005804580458045804580458043B04110FA9 +:1000D000330F2110330F2110780F9B0F2110F00FD9 +:1000E0000310ED12ED121C131C135B137B13D114C0 +:1000F000D1148613D114361436149D14A614D114B9 +:10010000CB144314431443144314431443144314AF +:100110004314431443144314431443144314431427 +:1001200043145314611468146F1479140000000010 +:1001300000000000000000010204060A0F17202C36 +:100140003A4A5D71879DB3C7DAE9F5FCFFFCF5E932 +:10015000DAC7B39D87715D4A3A2C20170F0A06044F +:100160000201000000000000000000002B0014004D +:100170001A000800150017001C0018000C001200DF +:1001800013002A00290004001600070009000A00D5 +:100190000B000D000E000F0033003400E1001D00C5 +:1001A0001B00060019000500110010003600370082 +:1001B000380028000530E000E200E30003302C00A6 +:1001C0002C0004305000510052004F002B0014004E +:1001D0001A00090013000A000D000F0018001C008F +:1001E00033002A002900040015001600170007003C +:1001F0000B00110008000C0012003400E1001D008B +:100200001B000600190005000E0010003600370024 +:10021000380028000530E000E200E30003302C0045 +:100220002C0004305000510052004F002B003400CD +:100230003600370013001C0009000A0006001500F4 +:100240000F002A00290004001200080018000C000A +:1002500007000B001700110016003800E100330002 +:1002600014000D000E001B00050010001A001900FC +:100270001D0028000530E000E200E30003302C0000 +:100280002C0004305000510052004F0035021E0275 +:100290001F0220022102220223022402250226023A +:1002A00027022A00010001000100010001000100F5 +:1002B00001002D022E022F02300231020100010046 +:1002C0000100010001000100010001000100010026 +:1002D0000100010001000100010001000100010016 +:1002E00001000100AB00AA00A900AE0035001E000D +:1002F0001F002000210022002300240025002600EA +:1003000027002A0001000100010001000100010096 +:1003100001002D002E002F003000310001000100EF +:1003200001000100010001000100010001000100C5 +:1003300001000100010001000100010001000100B5 +:1003400001000100AB00AA00A900AE0083506603C3 +:10035000000000000000000000003A003B003C00EC +:100360003D004C0001001030A800AA00A9000000C8 +:1003700000003E003F0040004100200A0100350817 +:10038000AC00AE00AB00000000004200430044009F +:100390004500210A053001000100010000000000B5 +:1003A000000000004A004E004B004D00010001001B +:1003B0000100010001000100010001000100010035 +:1003C0000100010001000100010001000100010025 +:1003D0000100003001300230010001000100010085 +:1003E0000100010001000100010001000100010005 +:1003F00001000100010001000100010001000050A6 +:100400000050010001000100010001002803540018 +:1004100068006500200050006C0061006E00630001 +:100420006B0020004B006500790062006F006100E6 +:100430007200640000002C034F007200740068001A +:100440006F006C0069006E006500610072002000A2 +:100450004B006500790062006F006100720064006B +:10046000730000000403090409026D00040100A0E8 +:10047000FA09040000010301010009211101000132 +:10048000223F000705810308000A09040100010357 +:10049000010200092111010001224D00070582031C +:1004A00008000A09040200010300000009211101EB +:1004B00000012236000705830308000A090403002F +:1004C0000103000000092111010001223900070584 +:1004D00084031000011201100100000008EDFE600D +:1004E0006001000102000105010906A101050719CB +:1004F000E029E71500250195087501810205081915 +:100500000129059505750191029501750391010574 +:10051000071900297715002501957875018102C01A +:1005200005010980A101850216010026B7001A0104 +:10053000002AB700751095018100C0050C0901A1C2 +:10054000018503160100269C021A01002A9C0275EF +:100550001095018100C005010902A1010901A10056 +:100560000509190129051500250195057501810267 +:100570009501750381010501093009311581257F38 +:1005800095027508810609381581257F9501750842 +:100590008106050C0A38021581257F9501750881B1 +:1005A00006C0C005010906A101050719E029E715E4 +:1005B00000250195087501810295017508810105E5 +:1005C0000819012905950575019102950175039199 +:1005D000010507190029FF150025FF9506750881FB +:1005E00000C011241FBECFEFDAE0DEBFCDBF04B6DE +:1005F00003FE24C08091FB019091FC01A091FD01BC +:10060000B091FE018730904BA740B04BB9F41092E7 +:10061000FB011092FC011092FD011092FE0114BE2C +:1006200084B7877F84BF88E10FB6F8948093600019 +:10063000109260000FBEE0E0F8E3099511E0A0E041 +:10064000B1E0E6E0F7E402C005900D92A434B107F2 +:10065000D9F711E0A4E4B1E001C01D92AB3FB107AE +:10066000E1F70E94180B0C9481230C94000008956C +:1006700081E0089508950C9437030C9438030C948A +:100680003A030E94F72123E030E0281B3109220FB2 +:10069000209348010895282F2F98809180002111E0 +:1006A00008C0877F8093800010928D0010928C008C +:1006B0001BC0886080938000233019F48FEF9FEF78 +:1006C0000FC083E090E0821B9109880F991F2FEFE4 +:1006D0003FEFA90102C0569547958A95E2F7CA01F6 +:1006E00090938D0080938C000C9441030E944103F1 +:1006F00084E080934701109244010895279A2F982F +:100700008FEF9FEF90938700809386008AE080931D +:10071000800089E1809381000E9460210C9476031F +:100720000E947E036E9A769A0C945B041F920F923D +:100730000FB60F9211242F933F938F939F93EF93B4 +:10074000FF93E0914501F0914601CF01019690930E +:100750004601809345010090470102C0F695E79558 +:100760000A94E2F7EF7380914401823019F4E03289 +:1007700051F404C0813039F4EF3329F480916F00D3 +:100780008D7F80936F00F0E0E45DFE4FE49121E007 +:1007900031E0E29FC001E39F900D112400904801D9 +:1007A00002C0969587950A94E2F790938D00809306 +:1007B0008C00FF91EF919F918F913F912F910F901E +:1007C0000FBE0F901F901895CF93DF93EC010E94FE +:1007D000021DBE0180E090E0DF91CF910C94FC18E7 +:1007E000462F50E04131510508F062C0DC01FA01AA +:1007F000EA5AFF4F0C94312312968C91882309F406 +:1008000057C081E090E007C012968C91882309F4CC +:100810004FC082E090E00E94E4034AC012968C919F +:10082000882309F445C084E090E0F5CF12968C91BE +:10083000882311F083E007C083E00EC012968C91EC +:10084000882349F084E00E94791946E064E083E05F +:100850000E9428082DC084E00E949A19F6CF1296B3 +:100860008C91882321F085E00E94791921C085E0D0 +:100870000E949A191DC012968C91882369F085EE0A +:100880000E94911184EE0E94911186EE0E949111B6 +:1008900087EE0E9491110CC085EE0E94591284EEE1 +:1008A0000E94591286EE0E94591287EE0E94591238 +:1008B00080E090E00895089581E008950C945C0430 +:1008C00008950F931F93CF93DF938C01FC01C08198 +:1008D000D181CE010E94351ABE010E940E05EC01A5 +:1008E000B8010E945E04882309F48DC0F80182815A +:1008F000882309F44AC08091540181111FC0C4317A +:10090000F0E5DF0709F051C00E94600481E08093A8 +:1009100054010E94381C909353018093520110920D +:100920004B0110924D0110924C0110924F01109208 +:100930004E01109251011092500165C080915201F8 +:10094000909153010E94441C883C910570F4809161 +:100950004B01E82FF0E0EE0FFF1FE45BFE4FD18369 +:10096000C0838F5F80934B014EC0C43880E5D807A9 +:1009700021F0C538D04501F13AC0F80182818823C1 +:1009800041F01092490182E01EC0C438E0E5DE0764 +:1009900059F580914901811106C086E20E949111AA +:1009A00086E20E94591282E01CC0C438F0E5DF07DD +:1009B00041F3C538D045D9F4F8018281882331F05C +:1009C00010924A0180E20E94A8121DC080914A0143 +:1009D000811106C087E20E94911187E20E9459129C +:1009E00080E20E94AF120FC0C538D04529F381E0E4 +:1009F0008093490180934A01C801DF91CF911F91F3 +:100A00000F910C943D0380E0DF91CF911F910F91E6 +:100A100008950C9490030C943B0308959CE0799FF7 +:100A2000F001112490E3899FE00DF11D1124E60FE0 +:100A3000F11DEE0FFF1FE459FE4F8591949108952B +:100A4000880F991FFC01E451F0408591949108951D +:100A5000880F991FFC01E459FE4F859194910895E8 +:100A60000F931F93CF93DF93EC01811521E392073E +:100A7000A0F5C11580E3D80708F0D7C0C83ED1055E +:100A8000D8F4C03ED10508F003C2C83AD10578F4C5 +:100A9000C53AD10508F06AC0C130D10509F463C078 +:100AA00008F4F3C1C430D10508F0F2C1EEC1CB3B6C +:100AB000D10508F466C0E9C1C11590E2D90708F074 +:100AC000AFC0C11521E0D20708F0E2C1C03FD10597 +:100AD00008F4DBC18E0110651BC2C03880E5D80761 +:100AE00000F5C03790E5D90708F0A3C0C11520E58F +:100AF000D20709F4ACC050F4CE01905480319F402D +:100B000008F0C3C1DF708E01106A02C2C13080E5F7 +:100B1000D80709F4AAC0C43190E5D90708F4ABC0DE +:100B2000B4C1C33820E5D20709F48EC050F4C138EF +:100B300090E5D90709F482C008F083C000E011ED08 +:100B4000E7C1C03181E5D80708F49FC1C11597E519 +:100B5000D90708F432C1CE0190578115904108F0B1 +:100B600094C1DF708FC101E010E0D2C1C53AD10558 +:100B700009F490C1C63AD10509F08FC102E810E42A +:100B8000C7C1C83AD10509F48BC1C93AD10509F4E6 +:100B90008AC1CA3AD10509F489C1CB3AD10509F411 +:100BA00088C1CC3AD10509F487C1CD3AD10509F401 +:100BB00086C1C03BD10509F485C1CE3AD10509F4FF +:100BC00084C1CF3AD10509F483C1C13BD10509F4F1 +:100BD00082C1C23BD10509F481C1C33BD10509F4EF +:100BE00080C1C43BD10509F47FC1C53BD10509F4DF +:100BF0007EC1C63BD10509F47DC1C73BD10509F4CF +:100C00007CC1C83BD10509F47BC1C93BD10509F4BE +:100C10007AC1CA3BD10509F479C100E014E478C176 +:100C2000CE019F700E94280574C1DD278E01106CD3 +:100C30006FC1CF70DD278E01146D6AC100E010ED29 +:100C400067C100E012ED64C100E013ED61C10E94D4 +:100C50003C158FEF94E32CE0815090402040E1F769 +:100C600000C000000E94931C53C18091DB01816091 +:100C70008093DB014DC10E94EF1C811102C00E94D4 +:100C8000D01C0E94071D90E09093FA018093F90117 +:100C9000C23080E5D80721F48091F901816086C0D7 +:100CA000C43090E5D90721F48091F90182607EC0BB +:100CB000C63020E5D20721F48091F901846076C026 +:100CC000C83080E5D80719F48091F90127C0CA30EF +:100CD00090E5D90721F48091F901806167C0CC309B +:100CE00020E5D20721F48091F90180625FC0CE3007 +:100CF00080E5D80721F48091F901806457C0C031A4 +:100D000090E5D90721F48091F90180684FC0C23184 +:100D100020E5D20729F48091F9018460886046C0FB +:100D2000C33080E5D80721F48091F9018E7F3EC061 +:100D3000C53090E5D90721F48091F9018D7F36C047 +:100D4000C73020E5D20721F48091F9018B7F2EC0B6 +:100D5000C93080E5D80719F48091F90126C0CB305D +:100D600090E5D90721F48091F9018F7E1FC0CD3025 +:100D700020E5D20721F48091F9018F7D17C0CF3093 +:100D800080E5D80721F48091F9018F7B0FC0C13134 +:100D900090E5D90721F48091F9018F7707C0C3311D +:100DA000D04531F48091F9018B7F877F8093F901E1 +:100DB0008091F9010E940B1DABC08D2F99278F7078 +:100DC000992781309105D9F49E012370332702C001 +:100DD000880F991F2A95E2F79C688E0144E0000F66 +:100DE000111F4A95E1F700271370802B912B53E0D8 +:100DF000CC0FDD1F5A95E1F7C076DD272FC082307A +:100E0000910531F4DC2FCC278E01016F106A80C070 +:100E10008330910569F4CE018370992701E010E0D9 +:100E200002C0000F111F8A95E2F7C8019C680FC02D +:100E300084309105B9F4CE018370992701E010E068 +:100E400002C0000F111F8A95E2F7C8019A6823E0DB +:100E5000CC0FDD1F2A95E1F7C07ED7708C010C2BDB +:100E60001D2B56C08530910531F4DC2FCC278E0127 +:100E7000046F106A4DC0069709F04AC0CF71DD2794 +:100E8000DC2FCC278E01106243C000E010E040C090 +:100E90008E013EC001E810E43BC003E810E438C016 +:100EA00002EE14E435C009EE14E432C00AEE14E494 +:100EB0002FC005EB14E42CC006EB14E429C007EBAB +:100EC00014E426C00CEC14E423C00DEC14E420C0A0 +:100ED00003E815E41DC00AE815E41AC002E915E4A8 +:100EE00017C004E915E414C001E216E411C003E2DE +:100EF00016E40EC004E216E40BC005E216E408C0D6 +:100F000006E216E405C007E216E402C00AE216E4AF +:100F1000C801DF91CF911F910F9108959CE0799FB7 +:100F2000F001112490E3899FE00DF11D1124E60FDB +:100F3000F11DEE0FFF1FE459FE4F85919491803E05 +:100F40009105E0F4803C910558F58133910509F451 +:100F50006FC048F48932910509F463C08A32910563 +:100F600009F46DC072C089339105E9F082389105AA +:100F7000D1F08533910509F44DC067C0833E9105DA +:100F800081F138F4803E9105B9F0823E9105D9F0A7 +:100F90005CC0863E910561F1873E9105A1F155C087 +:100FA0000E94200508952091F90120FD02C021FF33 +:100FB0004CC080EE90E049C08091F90180FFF9CFEC +:100FC00089E390E042C08091F90182FF0EC08091D8 +:100FD000F90184FF03C080E090E037C083EE90E029 +:100FE00034C08091F90182FFF2CF82EE90E02DC0F3 +:100FF0008091F90183FF0BC08091F90184FDEBCF53 +:1010000087EE90E022C08091F90183FFF5CF86EE54 +:1010100090E01BC08091F90185FF07C089E290E054 +:1010200014C08091F90185FFF9CF85E390E00DC0F0 +:101030008091F90186FF07C08AE290E006C08091A6 +:10104000F90186FFF9CF81E390E00E943005089511 +:10105000CF92DF92EF92FF920F931F9301E010E087 +:1010600020E030E06801790104C0CC0CDD1CEE1CEE +:10107000FF1C8A95D2F704C0000F111F221F331FD7 +:101080006A95D2F70C291D292E293F29C090BE014F +:10109000D090BF01E090C001F090C101C022D122E8 +:1010A000E222F322842FC016D106E206F30641F4B1 +:1010B0001F910F91FF90EF90DF90CF900C947919D2 +:1010C0001F910F91FF90EF90DF90CF900C949A19A1 +:1010D0000C943F03E82FF0E0EF5DFE4F8081E82F96 +:1010E000EF70F0E082958F7021E030E0A90102C03E +:1010F000440F551F8A95E2F740A308950F931F935D +:10110000CF93DF9385B7806885BF85B7806885BF3B +:10111000C3E0D0E001E010E0FE01EF5DFE4F808112 +:10112000E82FEF70F0E021A182958F70A80102C036 +:10113000440F551F8A95E2F7CA01822B81A38C2F99 +:101140000E946A08219740F78BE090E061E070E030 +:10115000FC01EB5EFE4F2081E22FEF70F0E042A138 +:1011600022952F70DB0102C0AA0FBB1F2A95E2F760 +:101170009D01242B22A3019758F7DF91CF911F9156 +:101180000F910C940905EF92FF920F931F93CF9349 +:10119000DF930DE511E0C3E0EE24E394F12CD5E0FC +:1011A0008C2F0E946A088BE090E040E050E0FC0148 +:1011B000EB5EFE4F6081E62FEF70F0E020A130E0A3 +:1011C00062956F7002C0359527956A95E2F720FD0C +:1011D00009C09701082E02C0220F331F0A94E2F7BC +:1011E000422B532B019718F7F801929182918F01AE +:1011F0008417950721F051834083D09300018C2FF1 +:101200000E946A08C15060F68091000187FD2CC0E1 +:101210008150809300018F3F39F08FE99FE0019763 +:10122000F1F700C0000020C080915B0190915C014B +:1012300090936401809363018091590190915A01C8 +:1012400090936201809361018091570190915801C0 +:101250009093600180935F018091550190915601B8 +:1012600090935E0180935D010E940B0581E0DF9108 +:10127000CF911F910F91FF90EF900895E82FF0E02C +:10128000EE0FFF1FE35AFE4F80819181089508956C +:101290000F931F93CF9305E611E0C0E0F801929100 +:1012A00082918F010E94B01BC80FF1E00D351F071E +:1012B000A9F78C2FCF911F910F91089580917501FF +:1012C0000895CF93DF9300D01F92CDB7DEB79C0176 +:1012D0008091F001843019F593E099833B832A8350 +:1012E0009093E9008FEF9091E800815095FD06C042 +:1012F00095ED9A95F1F700008111F5CF8091E80006 +:1013000085FF0DC040E050E063E070E0CE01019643 +:101310000E94C20B8091E8008E778093E8000F90C6 +:101320000F900F90DF91CF910895CF93DF9300D06E +:101330001F92CDB7DEB72091F001243021F522E0D5 +:1013400029839B838A8383E08093E9008FEF9091C8 +:10135000E800815095FD06C095ED9A95F1F70000E3 +:101360008111F5CF8091E80085FF0DC040E050E08D +:1013700063E070E0CE0101960E94C20B8091E8000C +:101380008E778093E8000F900F900F90DF91CF91B0 +:1013900008952091F0012430F1F422E02093E90037 +:1013A0002FEF3091E800215035FD06C035ED3A951C +:1013B000F1F700002111F5CF2091E80025FF0BC0C7 +:1013C00040E050E065E070E00E94C20B8091E800D0 +:1013D0008E778093E8000895CF93DF93EC0190918E +:1013E000F001943009F046C080910B018823D9F0B8 +:1013F00080910C018823B9F09093E9008FEF9091D0 +:10140000E800815095FD06C095E19A95F1F700003E +:101410008111F5CF8091E80085FF2CC040E050E0BD +:1014200060E170E017C081E08093E9008FEF909158 +:10143000E800815095FD06C095ED9A95F1F7000002 +:101440008111F5CF8091E80085FF14C040E050E0A5 +:1014500068E070E0CE010E94C20B8091E8008E77B8 +:101460008093E80080E1FE01A5E6B1E001900D92D5 +:101470008A95E1F7DF91CF9108958091EF01811175 +:1014800009C00E94570D0E94B40D8091E200846053 +:101490008093E20008951092EF0108950895089551 +:1014A0000C94FB1B42E061EC81E00E94D10C42E015 +:1014B00061EC82E00E94D10C42E061EC83E00E948A +:1014C000D10C42E161EC84E00C94D10C8091F201EA +:1014D000833009F455C030F4813071F0823009F462 +:1014E0008EC008958A3009F47AC08B3009F460C048 +:1014F000893009F09CC020C08091F101813A09F047 +:1015000096C08091E800877F8093E8008091F50184 +:101510009091F601892B21F460E185E691E003C00A +:1015200060E080E090E070E00E940D0C8091E800A7 +:101530008B778093E80008958091F101813209F062 +:1015400076C08091F5019091F601009719F003970C +:1015500009F06DC08091E800877F8093E80080915A +:10156000E80082FD05C08091F0018111F8CF5FC0D5 +:101570008091F100809375018091E8008B7753C0D2 +:101580008091F101813A09F052C08091F50190916A +:10159000F601892B09F04BC08091E800877F80938A +:1015A000E8008091E80080FFFCCF80910B0136C0FD +:1015B0008091F1018132D9F58091F5019091F60188 +:1015C000892BA9F58091E800877F8093E8000E942D +:1015D000060D8091F30180930B010C943C158091D2 +:1015E000F101813221F58091E800877F8093E80046 +:1015F0000E94060D8091F4018093760108958091F8 +:10160000F101813AA1F48091E800877F8093E8009E +:101610008091E80080FFFCCF809176018093F100FB +:101620008091E8008E778093E8000C94060D089571 +:1016300084B7877F84BF88E10FB6F89480936000F9 +:10164000109260000FBE90E080E80FB6F89480938F +:101650006100909361000FBE0E94A9100E94570D77 +:101660000E94B40D8091E20084608093E20078943F +:101670000E943A100E94AB1081E091E00E94551048 +:101680008091F001853069F40E94BC1B8091EE01CD +:101690008823B1F30E94EA1B882391F30E94AC0BCC +:1016A000EFCF0E94B310ECCF292F33272330310521 +:1016B000C9F064F42130310581F02230310509F0A0 +:1016C00043C08DE690E028E634E042C02132310587 +:1016D000F1F02232310541F137C082E190E025ED91 +:1016E00034E036C099278130910541F08230910570 +:1016F00041F0892B49F5E4E6F4E005C0E6E3F4E0C7 +:1017000002C0ECE0F4E0849190E09F0121C06430DD +:10171000D8F4E62FF0E0EE0FFF1FEF5CFE4F2081C4 +:10172000318189E090E014C0643070F470E0FB0116 +:10173000EE0FFF1FE75DFE4F20813181FB01EB5D66 +:10174000FE4F808190E004C080E090E020E030E037 +:10175000FA0131832083089580E189BD82E189BD4A +:1017600009B400FEFDCF8091D8008F7D8093D80012 +:101770008091E00082608093E0008091E00081FD34 +:10178000FCCF0895CF92DF92EF92FF920F931F93B9 +:10179000CF93DF93EC018B016A010E94250D81112B +:1017A00033C0C114D10439F0F60180819181081B46 +:1017B000190BC80FD91FE12CF12C0115110519F1D6 +:1017C0008091E80085FD16C08091E8008E778093B7 +:1017D000E800C114D10449F0F60180819181E80E3E +:1017E000F91EF182E08285E00FC00E94250D88235A +:1017F00021F30AC089918093F10001501109FFEF94 +:10180000EF1AFF0ADACF80E0DF91CF911F910F919D +:10181000FF90EF90DF90CF9008952091F7013091E5 +:10182000F8012617370748F06115710539F4209142 +:10183000E8002E772093E80001C0B90140E061156F +:101840007105A9F12091F001222309F443C025304C +:1018500009F442C02091E80023FD40C02091E80037 +:1018600022FD32C02091E80020FFE9CF4091F30033 +:101870002091F20030E0342BFC01CF01611571059D +:1018800059F02830310540F481918093F100615086 +:1018900071092F5F3F4FF1CF41E02830310509F04A +:1018A00040E02091E8002E772093E800C8CF411156 +:1018B000C9CF0AC08091F001882361F0853061F0C2 +:1018C0008091E80083FD0AC08091E80082FFF2CF9A +:1018D00080E0089582E0089583E0089581E008950E +:1018E0002091F7013091F8012617370748F061156C +:1018F000710539F42091E8002E772093E80001C0AB +:10190000B901FC0120E06115710591F18091F001B0 +:10191000882309F440C0853009F43FC08091E80075 +:1019200083FD3DC08091E80082FD2FC08091E800DA +:1019300080FFE9CF2091F3008091F20090E0922B9C +:101940006115710559F08830910540F42491209378 +:10195000F1003196615071090196F2CF21E00897AC +:1019600009F020E08091E8008E778093E800CBCFEB +:101970002111CCCF0AC08091F001882361F085301D +:1019800061F08091E80083FD0AC08091E80082FF49 +:10199000F2CF80E0089582E0089583E0089581E029 +:1019A0000895982F973058F59093E900981739F0DB +:1019B0007091EC002091ED005091F00003C0242FB5 +:1019C000762F50E021FF19C03091EB003E7F30931D +:1019D000EB003091ED003D7F3093ED003091EB0056 +:1019E00031603093EB007093EC002093ED00509346 +:1019F000F0002091EE0027FF07C09F5FD3CF8F70CC +:101A00008093E90081E0089580E008958091F101DC +:101A100087FF11C08091E80082FD05C08091F00130 +:101A20008111F8CF11C08091E8008B770BC08091B5 +:101A3000F001882349F08091E80080FFF8CF809181 +:101A4000E8008E778093E80008952091E4003091BB +:101A5000E50095E64091EC00842F817040FF22C0A4 +:101A60008091E80080FD1CC08091F001882391F0F6 +:101A7000853091F08091EB0085FD10C04091E4002D +:101A80005091E5004217530729F39A01915011F73D +:101A900084E0089582E0089583E0089581E0089548 +:101AA00080E008954091E80042FFDECF08950E9453 +:101AB000C50D0E94CD0DE0EEF0E080818160808355 +:101AC000E8EDF0E080818F77808319BCA7EDB0E06E +:101AD0008C918E7F8C9380818F7E80831092EF011A +:101AE00008950F931F93CF93DF930E94C50D0E941B +:101AF000CD0DC8EDD0E088818F778883888180689C +:101B0000888388818F7D888319BC1092F0011092A0 +:101B1000EC011092EE011092ED0100EE10E0F801E0 +:101B200080818B7F808388818160888342E060E050 +:101B300080E00E94D10CE1EEF0E080818E7F808316 +:101B4000E2EEF0E080818160808380818860808324 +:101B5000F80180818E7F8083888180618883DF9116 +:101B6000CF911F910F910895E8EDF0E080818F7E75 +:101B70008083E7EDF0E080818160808384E082BF34 +:101B800081E08093EF010C94710DE8EDF0E080812D +:101B90008E7F80831092E20008951092DA001092F6 +:101BA000E10008951F920F920FB60F9211242F9308 +:101BB0003F934F935F936F937F938F939F93AF93D5 +:101BC000BF93EF93FF938091E10082FF0BC0809160 +:101BD000E20082FF07C08091E1008B7F8093E100EB +:101BE0000E9439108091DA0080FF1FC08091D800D8 +:101BF00080FF1BC08091DA008E7F8093DA00809195 +:101C0000D90080FF0DC080E189BD82E189BD09B4A2 +:101C100000FEFDCF81E08093F0010E943D0A05C0E7 +:101C200019BC1092F0010E944B0A8091E10080FFE4 +:101C300019C08091E20080FF15C08091E2008E7F84 +:101C40008093E2008091E20080618093E2008091C5 +:101C5000D80080628093D80019BC85E08093F001A1 +:101C60000E944F0A8091E10084FF30C08091E20021 +:101C700084FF2CC080E189BD82E189BD09B400FEEA +:101C8000FDCF8091D8008F7D8093D8008091E100B6 +:101C90008F7E8093E1008091E2008F7E8093E2004E +:101CA0008091E20081608093E2008091EC018823C2 +:101CB00011F084E007C08091E30087FD02C081E05D +:101CC00001C083E08093F0010E94500A8091E100FE +:101CD00083FF29C08091E20083FF25C08091E1004D +:101CE000877F8093E10082E08093F0011092EC0105 +:101CF0008091E1008E7F8093E1008091E2008E7FF1 +:101D00008093E2008091E20080618093E20042E0F3 +:101D100060E080E00E94D10C8091F00088608093A8 +:101D2000F0000E944E0AFF91EF91BF91AF919F91F9 +:101D30008F917F916F915F914F913F912F910F9074 +:101D40000FBE0F901F9018951F920F920FB60F9213 +:101D500011242F933F934F935F936F937F938F93B0 +:101D60009F93AF93BF93CF93DF93EF93FF93C09174 +:101D7000E900CF708091EC00D82FD17080FDD0E8C1 +:101D80001092E9008091F000877F8093F0007894B2 +:101D90000E94E80E1092E9008091F0008860809324 +:101DA000F000CD2BCF70C093E900FF91EF91DF9150 +:101DB000CF91BF91AF919F918F917F916F915F91E3 +:101DC0004F913F912F910F900FBE0F901F9018953C +:101DD0001F93CF93DF93CDB7DEB7AA970FB6F894D2 +:101DE000DEBF0FBECDBFE1EFF1E088E08E0F909136 +:101DF000F10091938E13FBCF0E94660A8091E80058 +:101E000083FF1FC18091F1019091F201492F50E0B1 +:101E10004A30510508F015C1FA01E959FF4F0C94F9 +:101E20003123803881F0823809F00BC18091F501AF +:101E30008F708093E9008091EB0085FB882780F903 +:101E40001092E90006C08091ED019091EE01911190 +:101E500082609091E800977F9093E8008093F10072 +:101E60001092F100C8C0282F2D7F09F0EAC0882306 +:101E700019F0823061F0E5C08091F301813009F002 +:101E8000E0C0933009F080E08093EE012BC0809198 +:101E9000F301811127C08091F5018F7009F4D1C041 +:101EA0008093E9002091EB0020FF1CC0933021F4C7 +:101EB0008091EB00806214C09091EB009061909350 +:101EC000EB0021E030E0A90102C0440F551F8A95C4 +:101ED000E2F74093EA001092EA008091EB008860FC +:101EE0008093EB001092E9008091E800877F86C024 +:101EF0008111A7C01091F3011F778091E3008078D2 +:101F0000812B8093E3008091E800877F8093E80035 +:101F10000E94060D8091E80080FFFCCF8091E300D5 +:101F200080688093E300111102C082E001C083E069 +:101F30008093F00186C08058823008F082C0809182 +:101F4000F3019091F4018C3D53E0950779F583E01E +:101F50008A838AE289834FB7F894DE01139620E0E2 +:101F60003EE051E2E32FF0E050935700E49120FF70 +:101F700003C0E295EF703F5FEF708E2F90E0EA3084 +:101F800010F0C79601C0C0968D939D932F5F2431AA +:101F900049F74FBF8091E800877F8093E8006AE2AD +:101FA00070E0CE0101960E940D0C14C0AE014F5F8F +:101FB0005F4F6091F5010E94540BBC01009709F43A +:101FC00040C09091E800977F9093E80089819A81C2 +:101FD0000E94700C8091E8008B778093E80031C0FC +:101FE000803879F58091E800877F8093E8008091C0 +:101FF000EC018093F1008091E8008E778093E800F7 +:102000000E94060D1EC081111CC09091F3019230F8 +:10201000C0F48091E800877F8093E8009093EC0102 +:102020000E94060D8091EC01811106C08091E300B1 +:1020300087FD02C081E001C084E08093F0010E942E +:10204000520A8091E80083FF0AC08091E800877FF0 +:102050008093E8008091EB0080628093EB00AA9669 +:102060000FB6F894DEBF0FBECDBFDF91CF911F91A9 +:1020700008950895CF938091F0018823A1F0C09135 +:10208000E900CF709091EC00892F817090FD80E87D +:10209000C82B1092E9008091E80083FD0E94E80EB1 +:1020A000CF70C093E900CF91089590937C01809305 +:1020B0007B010895E0917B01F0917C01309721F044 +:1020C0000190F081E02D099480E00895E0917B017A +:1020D000F0917C01309721F00280F381E02D09948A +:1020E0000895E0917B01F0917C01309721F004800C +:1020F000F581E02D099408952091790130917A01BC +:102100008217930771F090937A0180937901E0919F +:102110007B01F0917C01309721F00680F781E02D62 +:1021200009940895209177013091780182179307DF +:1021300071F09093780180937701E0917B01F091A9 +:102140007C01309721F00084F185E02D09940895F9 +:1021500008950C94A8100E942F1C0E947E080E94D3 +:10216000B51C0C9460215F926F927F928F929F9228 +:10217000AF92BF92CF92DF92EF92FF920F931F9395 +:10218000CF93DF9300D000D01F92CDB7DEB70E946F +:10219000C30896E8C92E91E0D92E03E010E0AA24E6 +:1021A000A394B12C502E802F0E943E094C01F601C1 +:1021B000729062906F016826792661147104A1F40F +:1021C0000150110978F78FEF89838A831B820E945F +:1021D000381C8160782F9D838C8349815A816B8163 +:1021E0008D810E94631138C08091DB0181FD0E94C6 +:1021F00047092BE030E07501022E02C0EE0CFF1CF7 +:102200000A94E2F7C70186219721892B09F12983D6 +:102210005A828E209F2091E0892809F490E09B83C8 +:102220000E94381C8160782F9D838C8349815A815C +:102230006B818D810E946311000F111FF801E2581C +:10224000FE4F80819181E826F926F182E08204C068 +:102250002150310980F6B4CF0E94931E10917D0168 +:102260000E945A101817D1F00E945A1080937D01D5 +:102270000F900F900F900F900F90DF91CF911F91C3 +:102280000F91FF90EF90DF90CF90BF90AF909F9015 +:102290008F907F906F905F900C9468080F900F90D4 +:1022A0000F900F900F90DF91CF911F910F91FF90A2 +:1022B000EF90DF90CF90BF90AF909F908F907F90E6 +:1022C0006F905F900895CF93DF93CDB7DEB72B97D4 +:1022D0000FB6F894DEBF0FBECDBF4F835887698716 +:1022E0007A878B87DE01119686E0FD0111928A952F +:1022F000E9F785E0FE01379601900D928A95E1F7A6 +:1023000049815A816B817C818D819E810E94DA177F +:102310002B960FB6F894DEBF0FBECDBFDF91CF91E5 +:102320000895CF93882309F4C2C0C82F823859F486 +:102330000E945A1081FDBBC089E30E94B41A0E941A +:10234000811B89E30CC0833879F40E945A1080FD08 +:10235000AEC083E50E94B41A0E94811B83E50E94EF +:10236000F61ACF910C94811B843859F40E945A10AC +:1023700082FD9DC087E40E94B41A0E94811B87E4FD +:10238000EECF8CEF8C0F813A48F48C2F0E94C8203E +:1023900081118DC08C2F0E94B41AE3CF80E28C0F84 +:1023A000883048F4C77081E001C0880FCA95EAF709 +:1023B0000E943A1BD6CF8BE58C0F833078F4C53A58 +:1023C00029F0C63A31F083E890E005C081E890E05A +:1023D00002C082E890E0CF910C947C1088E58C0FCD +:1023E000833108F064C0C83A39F1C93A41F1CA3AB8 +:1023F00049F1CB3A51F1CC3A59F1CD3A61F1C03BB8 +:1024000069F1CE3A71F1CF3A79F1C13B81F1C23B2A +:1024100089F1C33B91F1C43B99F1C53BA1F1C63BA6 +:10242000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B06 +:10243000C9F180E090E038C082EE90E035C089EECE +:1024400090E032C08AEE90E02FC085EB90E02CC087 +:1024500086EB90E029C087EB90E026C08CEC90E002 +:1024600023C08DEC90E020C083E891E01DC08AE895 +:1024700091E01AC082E991E017C084E991E014C0AC +:1024800081E292E011C083E292E00EC084E292E029 +:102490000BC085E292E008C086E292E005C087E2C8 +:1024A00092E002C08AE292E0CF910C949210CF9118 +:1024B0000895882309F44BC0823859F40E945A10B9 +:1024C00081FF45C089E30E94B41A0E94811B89E301 +:1024D0000CC0833871F40E945A1080FF38C083E525 +:1024E0000E94B41A0E94811B83E50E94F61A0C9484 +:1024F000811B843859F40E945A1082FF28C087E457 +:102500000E94B41A0E94811B87E4EFCF9CEF980FC2 +:10251000913A58F390E2980F983050F4877091E018 +:1025200001C0990F8A95EAF7892F0E94401BDFCFDF +:102530009BE5980F933020F480E090E00C947C10A1 +:10254000885A833120F480E090E00C949210089532 +:10255000882321F00E943A1B0C94811B0895882344 +:1025600021F00E94401B0C94811B08957F928F9252 +:102570009F92AF92BF92CF92DF92EF92FF920F9312 +:102580001F93CF93DF931F92CDB7DEB77C01C62E8A +:10259000772EFC01058102950F70128111110E94A6 +:1025A000571B0E94AD1A882379F0112369F080E24D +:1025B0008C0D883048F082E00E94961A0E94AD1A75 +:1025C00091E0D82ED92601C0D12CE72DE295EF70ED +:1025D000F0E0EF58FF4F0C943123872D807F072DBB +:1025E0000F70882311F00295007F112389F00023DA +:1025F00009F499C180E28C0D883020F4802F0E946C +:102600003A1B03C0802F0E944A1B0E94811B8BC172 +:102610008C2D0E945912002309F4C3C180E28C0D55 +:10262000883020F4802F0E94401B03C0802F0E941E +:10263000501B0E94811BB5C1872D807F972D9F70F5 +:10264000803211F4892F03C0892F8295807FCC209E +:1026500021F0F1E0CF16A1F01DC0112339F00023C5 +:1026600019F1013009F50E946A1B9BC1002319F082 +:10267000013009F496C189830E946D1B898110C1C4 +:10268000112321F0063008F08CC10EC0053008F08F +:1026900088C106C1112359F0002331F0F70195815B +:1026A00090FF41C19F7095830E94A8127AC10023B8 +:1026B00009F4F6C03EC1872D86958695837090E01B +:1026C000009719F0019761F06CC1112321F08C2D56 +:1026D000972D937002C080E090E00E947C1061C151 +:1026E000112321F08C2D972D937002C080E090E093 +:1026F0000E94921056C18C2D112319F00E949B1D2F +:1027000002C00E94031E0E94881E4BC1872D837049 +:1027100009F052C0111145C18C2D829586958770A4 +:10272000880F880F9C2D9F70892E912CA12CB12C85 +:10273000082E04C0880C991CAA1CBB1C0A94D2F752 +:10274000C4FE14C00FE010E020E030E0B901A801A1 +:1027500004C0440F551F661F771F8A95D2F7CB011F +:10276000BA01609570958095909503C060E070E027 +:10277000CB01272D26952695237030E02230310598 +:1027800069F02330310589F0682979298A299B2944 +:102790002130310571F00E94221903C1682979297D +:1027A0008A299B290E943E19FCC00E942219C5015A +:1027B000B4010E940619F5C0112319F0872D81700C +:1027C00001C08695882309F4ECC08C2D82958695EE +:1027D0008770880F880F9C2D9F70892E912CA12CBB +:1027E000B12C082E04C0880C991CAA1CBB1C0A948E +:1027F000D2F7C4FE14C00FE010E020E030E0B901D1 +:10280000A80104C0440F551F661F771F8A95D2F791 +:10281000CB01BA01609570958095909503C060E0FA +:1028200070E0CB01272D269526952370422F50E08E +:102830004230510569F04330510589F06829792902 +:102840008A299B294130510571F00E94FC19A9C0C9 +:10285000682979298A299B290E94181AA2C00E94F6 +:10286000FC19C501B4010E94E0199BC08C2D90E0B9 +:10287000FC01E05EF109E531F10508F050C0EF57C9 +:10288000FF4F0C9431230C2D0F70872D8F71112366 +:1028900021F00E947919802F07CF0E949A19802F6A +:1028A0000E94AF127EC0112341F0053008F079C0BC +:1028B000872D8F710E94BF1974C0063008F071C057 +:1028C000F7CF112339F0872D8F710E94791969C0D4 +:1028D0001123C9F3872D8F710E949A1962C01123A9 +:1028E00029F0872D8F710E9464195BC00E945A19CC +:1028F00058C0112351F0172D1F71812F0E94791993 +:1029000063E0812F0E948D1A4CC081E00E94961ACC +:10291000023008F446C082E00E94961A42C0112399 +:1029200031F0002381F28C2D0E9491113AC00023D6 +:1029300089F28C2D0E94591234C0472D4F706C2D96 +:10294000C7010E94F0030E947E182BC0111129C0FC +:10295000472D4F7050E042305105B9F04CF441150D +:10296000510581F041305105E1F40E94882119C0E0 +:102970004330510569F04430510599F48C2D0E9483 +:10298000DA210FC00E9471210CC00E94A42109C04D +:102990000E94B72106C0472D4F706C2DC7010E94C1 +:1029A0000D05DD20F9F00E94891A80FD1BC0F7019A +:1029B00012820E94831A0E947919C7010E94011590 +:1029C0000E94831A0F90DF91CF911F910F91FF907A +:1029D000EF90DF90CF90BF90AF909F908F907F90BF +:1029E0000C949A190F90DF91CF911F910F91FF9046 +:1029F000EF90DF90CF90BF90AF909F908F907F909F +:102A000008950F931F93CF93DF93EC0188819981F1 +:102A10002B813C81232BB9F09F3F11F48F3F99F01C +:102A2000CE010E946104882371F0688179818A81D6 +:102A30000E947F1A8C010E94341A0E94FB18B80170 +:102A4000CE010E94B612DF91CF911F910F91089590 +:102A50000E94571B0E94671B0E942C1B0E94811B17 +:102A60000E94391F0E94881E80E090E00E947C1026 +:102A700080E090E00C9492100E94471B0C94281563 +:102A80000E94741A292F22952F7030E02C303105C6 +:102A90004CF42A3031056CF42250310922303105D2 +:102AA000A8F407C02C30310569F02F30310551F002 +:102AB0000DC0803F69F018F4803E40F409C0843FA7 +:102AC00029F406C093FB882780F9089580E00895D3 +:102AD00081E00895CF93DF9300D000D01F92CDB74F +:102AE000DEB70F900F900F900F900F90DF91CF9166 +:102AF0000895CF93DF9300D000D000D0CDB7DEB7DC +:102B000026960FB6F894DEBF0FBECDBFDF91CF91F2 +:102B100008951F93CF93DF93C091860116E08091B3 +:102B20008701C81799F0D0E01C9FF0011D9FF00DA0 +:102B30001124E857FE4F4081518162817381848165 +:102B400095810E9479152196C770E9CFDF91CF91C9 +:102B50001F9108954091B8015091B9016091BA0157 +:102B60007091BB018091BC019091BD010C947915CD +:102B70008091BD0182958F7009F054C08091BA0197 +:102B8000882309F44FC080918601A091870160914C +:102B9000B8017091B9014091BB015091BC01B6E000 +:102BA0008A1709F43FC090E041155105C1F17F3FFC +:102BB00011F46F3FA1F1B89FF001B99FF00D1124FE +:102BC000E857FE4F218172132AC02081621327C06B +:102BD0002281211124C0238134812417350710F468 +:102BE00021503109241B350B283C3105C0F42091BC +:102BF000BD012F7020612093BD0126E0289FF001C8 +:102C0000299FF00D1124E357FE4F80818F70806162 +:102C1000808388EB91E00E9401150C948915019640 +:102C20008770BECF0895CF92DF92EF92FF920F93FD +:102C30001F93CF93DF93CDB7DEB762970FB6F894AB +:102C4000DEBF0FBECDBF8C0185E0F801DE011D9611 +:102C500001900D928A95E1F7D8014C9111965C9103 +:102C6000119712966C9112971396CD90DC90149751 +:102C70003091B8017091B9018091BB019091BC0174 +:102C8000009709F46BC17F3F19F43F3F09F466C117 +:102C9000E090BA01EE2009F4C0C02091BD01C81631 +:102CA000D90628F0F601E81BF90BCF0104C0809586 +:102CB00090958C0D9D1DFF24F394883C910578F030 +:102CC000F12C207F09F0C6C07C2DD98AC88A898959 +:102CD0000E946A1588EB91E00E940115B1C0822F15 +:102CE000807F09F046C0751314C0341312C06111FF +:102CF00010C02F7020612093BD010E94AA1588EB9F +:102D000091E00E9401158091BD01D80115968C9328 +:102D10002EC0CD2819F15F3F11F44F3FF9F0F62E88 +:102D200061111CC0809186012091870136E08217D5 +:102D300009F45AC090E0389FF001399FF00D11243A +:102D4000E857FE4F7181571306C07081471303C0C7 +:102D50007281711103C001968770E9CFF62E662348 +:102D600009F418C18091BD0181608093BD01F12CEF +:102D700011C1751308C0341306C0611104C08091DD +:102D8000BD01D801C3C04D875E878D859E856A8B46 +:102D90000E9440156A898823E1F16623D1F12091D0 +:102DA000BD01822F82958F7090E0029774F0809120 +:102DB000B8019091B90198878F831986DB86CA86FE +:102DC0002C87CE0107960E94011586E0F801A8EB3A +:102DD000B1E001900D928A95E1F70E94B8150E942A +:102DE000AA15FF24F394D6C04D875E878D859E85F6 +:102DF0000E94741A292F22952F7030E0223031055D +:102E00000CF0BCC09F7009F0B6C0805E883008F43A +:102E1000C1C0C8010E940115E4CFC816D90608F444 +:102E200053C0F601E81BF90BCF01883C910508F46B +:102E300050C0F12C7C2DD98AC88A89890E946A15D4 +:102E4000E8EBF1E086E0DF011D928A95E9F70E9448 +:102E5000AA15A0C0751314C0341312C0611110C09C +:102E60008091BD01F8018583C8010E94011586E0AB +:102E7000E8EBF1E0DF011D928A95E9F7FE2C8AC0AC +:102E80004D875E878D859E856A8B0E9440156A8975 +:102E9000882309F4BECF662309F4BBCF2091BD017E +:102EA000822F82958F7090E002970CF48ECF8091E4 +:102EB000B8019091B9019A8389831B82DD82CC820B +:102EC0002E83CE0101967FCF809590958C0D9D1D10 +:102ED000ACCFF62E662309F49CCF75132EC03413A5 +:102EE0002CC02091BD0120FD1FC0822F82958F70C4 +:102EF000D9F0D80115962C9315978F3049F08F5F34 +:102F0000982F9295907F822F8F70892B15968C9396 +:102F1000C8010E94011586E0F801A8EBB1E001901C +:102F20000D928A95E1F793CF86E0F801A8EBB1E026 +:102F300001900D928A95E1F72DC04D875E878D85B2 +:102F40009E850E944015811140CF8091BD01816016 +:102F50008093BD01C8010E9401151CC0662309F4BD +:102F600058CF4D875E878D859E850E9440158823AA +:102F700009F44FCF2ACF811148CF0CC0243031053E +:102F80000CF047CF9F7009F440CFF8019581907FF6 +:102F900009F03BCF8F2D62960FB6F894DEBF0FBEBF +:102FA000CDBFDF91CF911F910F91FF90EF90DF90F8 +:102FB000CF9008951F93CF93DF93CDB7DEB72C97B3 +:102FC0000FB6F894DEBF0FBECDBF4F835887698719 +:102FD0007A878B879C87CE0107960E9413168823D9 +:102FE00069F08F8198852A853B85232BF1F19F3FDE +:102FF00009F063C08F3F09F060C037C086E0FE0172 +:103000003796DE01119601900D928A95E1F76F8156 +:103010007885EA85FB85309741F17F3F11F46F3F5A +:1030200021F12091870130E0C9010196877099272D +:103030004091860150E08417950709F447C06983E1 +:103040007A83FD83EC8396E0929FD001939FB00D2D +:103050001124A857BE4FFE01319601900D929A950A +:10306000E1F7809387010E94891516E0809186011F +:10307000909187018917C1F1189FC00111248857C9 +:103080009E4F0E941316882379F1E09186011E9FBE +:10309000F0011124E857FE4F408151816281738114 +:1030A000848195810E9479158091860190E0019636 +:1030B0008770992780938601D9CF4F81588569857C +:1030C0007A858B859C850E947915CFCF0E943C150F +:1030D0001092870110928601E8EBF1E086E0DF01B3 +:1030E0001D928A95E9F7C1CF2C960FB6F894DEBFF2 +:1030F0000FBECDBFDF91CF911F910895EF92FF9248 +:103100000F931F93CF93DF938C01009709F46CC04A +:10311000F12CEE24E394E8012196F80184918437A0 +:1031200040F4843008F051C0813081F0823019F1D0 +:103130005BC0853709F444C0A8F19CE7980F90372D +:1031400008F052C08F770E94591241C00E5F1F4F86 +:10315000FE01C49180E28C0F883048F4C7708E2D38 +:1031600001C0880FCA95EAF70E945A1B14C08C2F21 +:103170000E9491112DC00E5F1F4FFE01C49180E28D +:103180008C0F883058F4C7708E2D01C0880FCA95F7 +:10319000EAF70E94601B0E94811B1AC08C2F0E94BC +:1031A000591216C00E5F1F4FFE01C491CC2381F04F +:1031B0008FE99FE00197F1F700C00000C150F6CF02 +:1031C0000E5F1F4FFE01F49003C00E9491118E010B +:1031D0008F2D882309F49FCFEFE9FFE03197F1F7B6 +:1031E00000C000008150F5CFDF91CF911F910F916A +:1031F000FF90EF90089508956093C2017093C3010A +:103200008093C4019093C5010C9428150F931F93CC +:103210000091C2011091C3012091C4013091C501F8 +:10322000DC01CB01802B912BA22BB32B8093C2010D +:103230009093C301A093C401B093C5011F910F9156 +:103240000C9428150F931F930091C2011091C30194 +:103250002091C4013091C501DC01CB018023912371 +:10326000A223B3238093C2019093C301A093C4010E +:10327000B093C5011F910F910C9428150F931F93C4 +:103280000091C2011091C3012091C4013091C50188 +:10329000DC01CB0180279127A227B3278093C201AD +:1032A0009093C301A093C401B093C5011F910F91E6 +:1032B0000C9428151092BE011092BF011092C0010B +:1032C0001092C1010C94281541E050E060E070E0DC +:1032D00004C0440F551F661F771F8A95D2F740938D +:1032E000BE015093BF016093C0017093C1010C9463 +:1032F000281541E050E060E070E004C0440F551F25 +:10330000661F771F8A95D2F78091BE019091BF0109 +:10331000A091C001B091C101482B592B6A2B7B2B86 +:103320004093BE015093BF016093C0017093C101EF +:103330000C94281541E050E060E070E004C0440FB8 +:10334000551F661F771F8A95D2F740955095609557 +:1033500070958091BE019091BF01A091C001B09184 +:10336000C101482359236A237B234093BE01509314 +:10337000BF016093C0017093C1010C94281541E016 +:1033800050E060E070E004C0440F551F661F771FD7 +:103390008A95D2F78091BE019091BF01A091C001A2 +:1033A000B091C101482759276A277B274093BE0166 +:1033B0005093BF016093C0017093C1010C94281514 +:1033C0000F931F930091BE011091BF012091C00186 +:1033D0003091C101DC01CB01802B912BA22BB32BAF +:1033E0008093BE019093BF01A093C001B093C1012F +:1033F0001F910F910C9428150F931F930091BE01FC +:103400001091BF012091C0013091C101DC01CB01BD +:1034100080239123A223B3238093BE019093BF0105 +:10342000A093C001B093C1011F910F910C94281576 +:103430000F931F930091BE011091BF012091C00115 +:103440003091C101DC01CB0180279127A227B3274E +:103450008093BE019093BF01A093C001B093C101BE +:103460001F910F910C9428150895CF92DF92EF923F +:10347000FF920F931F93CF93DF938C01C090C201F3 +:10348000D090C301E090C401F090C5018091BE01CD +:103490009091BF01A091C001B091C101C82AD92A61 +:1034A000EA2AFB2ACFE1D0E0D701C6010C2E04C0E6 +:1034B000B695A795979587950A94D2F780FF06C091 +:1034C000B8018C2F0E948E07019721F4219760F795 +:1034D00080E001C08C2FDF91CF911F910F91FF9061 +:1034E000EF90DF90CF900895CF93DF93EC010E948F +:1034F000351ABE010E948E07DF91CF910895CB014E +:103500000E94741A08958091C601859585958595C8 +:1035100008958091C6018770089598E0899F900171 +:103520001124262B2093C6010C9479192091C601F1 +:10353000809582238093C601982F977069F430E0BC +:10354000482F552747FD50952417350729F08595B5 +:10355000859585950C949A1908959091C601977058 +:1035600081E009F480E0089590910B01992321F006 +:1035700090910C01911109C020910D0130910E0123 +:10358000F90132969FEF40E01FC0982F96959695CF +:1035900096959F3050F5E0910D01F0910E01E90FE5 +:1035A000F11D877021E030E0A90102C0440F551FD2 +:1035B0008A95E2F7CA019181892B818308959F3F03 +:1035C00039F04F5F4E3041F051915813F8CF0DC094 +:1035D0005111F7CF942FF5CF9F3F39F0F901E90F43 +:1035E000F11D97FDFA9582830895089590910B013E +:1035F000992321F090910C01911109C020910D01A6 +:1036000030910E01F9013296205F3F4F1FC0982F75 +:103610009695969596959F30F0F4E0910D01F09176 +:103620000E01E90FF11D877021E030E0A90102C011 +:10363000440F551F8A95E2F7CA018095918189232D +:10364000818308953196E217F30729F0908198134A +:10365000F9CF1082F7CF089581E090E0E0910D015D +:10366000F0910E01E80FF91F10820196803191054B +:10367000A9F708959091DA01892B8093DA010895D2 +:1036800080959091DA0189238093DA010895109250 +:10369000DA0108959091D901892B8093D901089579 +:1036A00080959091D90189238093D9010895109232 +:1036B000D90108959091D801892B8093D80108955C +:1036C00080959091D80189238093D8010895109214 +:1036D000D80108958093C70108951092C7010895F5 +:1036E00080910D0190910E01FC0131969C01205FAB +:1036F0003F4F80E0919191118F5FE217F307D1F76F +:103700000895E0910D01F0910E018091DA0180831E +:10371000E0910D01F0910E0190818091D901892BEA +:103720008083E0910D01F0910E0190818091D8018C +:10373000892B80838091C701882361F0E0910D017E +:10374000F0910E019081892B80830E94701B811162 +:103750001092C70180910D0190910E010C9466109A +:1037600020E0009739F0AC014150510984239523A2 +:103770002F5FF7CF822F08958091F001843039F1C7 +:103780001092DC0120E488E190E00FB6F894A8954F +:10379000809360000FBE2093600080E00E944B0386 +:1037A00080E00E94680883B7817F846083BF83B70D +:1037B000816083BF7894889583B78E7F83BF88E1CB +:1037C0000FB6F89480936000109260000FBE0895C9 +:1037D0000895089580E00E944B030E94E81B0E9418 +:1037E000C3080E94E91B0E94480991E0811101C0B1 +:1037F00090E0892F08950E943C1580E00E944B03C1 +:103800000E9460210E945A100C9468081F920F9227 +:103810000FB60F9211248F939F93AF93BF93809114 +:10382000DC01811113C08091DD019091DE01A09136 +:10383000DF01B091E0014196A11DB11D8093DD0132 +:103840009093DE01A093DF01B093E001BF91AF91AF +:103850009F918F910F900FBE0F901F90189582E04F +:1038600084BD93E095BD9AEF97BD80936E00089557 +:103870002FB7F8948091DD019091DE01A091DF01D6 +:10388000B091E0012FBF0895CF92DF92EF92FF92A7 +:103890000F931F932FB7F8944091DD015091DE01F3 +:1038A0006091DF017091E0012FBF6A017B01EE247E +:1038B000FF248C0120E030E0C016D106E206F306BA +:1038C00010F4415051099A01281B390BC9011F916D +:1038D0000F91FF90EF90DF90CF9008951F920F927D +:1038E0000FB60F9211248F939F93AF93BF93809144 +:1038F000DD019091DE01A091DF01B091E001019620 +:10390000A11DB11D8093DD019093DE01A093DF0125 +:10391000B093E001BF91AF919F918F910F900FBE37 +:103920000F901F9018950E94570DF8942FEF87EA7B +:1039300091E6215080409040E1F700C0000087E010 +:1039400090EBDC018093FB019093FC01A093FD01BF +:10395000B093FE019CE088E10FB6F894A89580939F +:1039600060000FBE90936000FFCF0E94EF1C81119A +:1039700002C00E94D01C0E94FA1C8093DB010E94AE +:10398000071D8093F90187FB882780F980930C013C +:103990000E94FE1C682F70E080E090E00C94FC1800 +:1039A0006DEE7EEF80E090E00E946B2360E082E0AD +:1039B00090E00E94592360E083E090E00E94592348 +:1039C00060E084E090E00E94592360E085E090E0B0 +:1039D0000E94592360E086E090E00C94592380E037 +:1039E00090E00E94532321E08D3E9E4F09F020E09D +:1039F000822F089582E090E00C944B2383E090E0C6 +:103A00000C944B23682F83E090E00C94592384E0BE +:103A100090E00C944B23682F84E090E00C945923A1 +:103A200086E090E00C944B23682F86E090E00C94A5 +:103A300059238091E30180FF0BC06091120185E062 +:103A4000689FB001112475956795759567952BC092 +:103A500081FF09C06091120185E0689FB0011124C7 +:103A60007595679520C082FF07C06091120185E0BF +:103A7000689FB001112417C09091E4019923D1F0FF +:103A800060911101961788F72091120185E0289F17 +:103A900090011124929FA001939F500D112470E07A +:103AA000CA010E941D236038710540F4611571053B +:103AB00039F002C065E070E0862F08958FE7089521 +:103AC00081E008958091E30180FF08C060911001BA +:103AD00070E0759567957595679521C081FF06C063 +:103AE0006091100170E07595679519C082FF04C060 +:103AF0006091100170E010C09091E4019923C1F031 +:103B000060910F019617A0F780911001899FC00165 +:103B1000112470E00E941D236038710528F461159E +:103B2000710521F0862F08958FE7089581E00895AB +:103B300061E070E0F4CF803F21F40E94191D81956F +:103B400004C0813F29F40E94191D8093E701089564 +:103B5000823F21F40E94191D819504C0833F29F4FE +:103B60000E94191D8093E6010895893F19F40E946F +:103B7000621D05C08A3F31F40E94621D81958093C9 +:103B8000E80108958B3F21F40E94621D819504C0D5 +:103B90008C3F29F40E94621D8093E9010895843FBF +:103BA00021F48091E501816017C0853F21F4809167 +:103BB000E501826011C0863F21F48091E5018460B7 +:103BC0000BC0873F21F48091E501886005C0883FE4 +:103BD00031F48091E50180618093E50108958D3F86 +:103BE00021F48091E30181600BC08E3F21F480912C +:103BF000E301826005C08F3F29F48091E301846076 +:103C00008093E3010895803F39F48091E70187FFB5 +:103C10006CC01092E70169C0813F29F48091E701EF +:103C20001816BCF362C09091E601823F29F497FF19 +:103C30005CC01092E60159C0833F19F41916CCF309 +:103C400054C0893F41F48091E80118160CF04DC032 +:103C50001092E8014AC08A3F29F48091E80187FF69 +:103C600044C0F6CF8B3F39F48091E90187FF3DC016 +:103C70001092E9013AC08C3F29F48091E9011816AD +:103C8000BCF333C0843F21F48091E5018E7F17C0DF +:103C9000853F21F48091E5018D7F11C0863F21F49D +:103CA0008091E5018B7F0BC0873F21F48091E50176 +:103CB000877F05C0883F31F48091E5018F7E809336 +:103CC000E50113C08D3F21F48091E3018E7F0BC08D +:103CD0008E3F21F48091E3018D7F05C08F3F29F451 +:103CE0008091E3018B7F8093E3018091E601811154 +:103CF0000EC08091E70181110AC08091E801811115 +:103D000006C08091E901811102C01092E40108957A +:103D100085EE91E00E9471100E94381C9093E201A0 +:103D20008093E10108951F93CF93DF938091E10188 +:103D30009091E2010E94441CAC019091E40199230E +:103D400021F02091130130E006C0209114018AE097 +:103D5000289F900111244217530708F486C08091D0 +:103D6000E601C091E701D091E8011091E9018111CC +:103D700007C0C11176C0D11174C0111172C075C0D5 +:103D80009F3F19F09F5F9093E401181624F40E945E +:103D9000191D8093E6018091E60187FF05C00E940E +:103DA000191D81958093E6011C1624F40E94191DAB +:103DB0008093E7018091E70187FF05C00E94191DEC +:103DC00081958093E7016091E601662339F1C09106 +:103DD000E701CC2319F1772767FD7095872F972F7F +:103DE0000E942E2223E333E343E35FE30E94922207 +:103DF0000E94FB216093E6016C2F772767FD709589 +:103E0000872F972F0E942E2223E333E343E35FE3C0 +:103E10000E9492220E94FB216093E7011D1624F468 +:103E20000E94621D8093E8018091E80187FF05C030 +:103E30000E94621D81958093E801111624F40E946E +:103E4000621D8093E9018091E90187FF05C00E940E +:103E5000621D81958093E901DF91CF911F910C94B0 +:103E6000881E9F3F09F08ECF96CFDF91CF911F9193 +:103E70000895E5EEF1E085E0DF011D928A95E9F70E +:103E80001092E4011092E3010895833081F128F447 +:103E9000813059F08230D1F00895853009F449C05D +:103EA000B8F1863009F456C0089580911401262F88 +:103EB00030E0280F311D2F3F310524F4680F609347 +:103EC000140108958FEF80931401089580911301D8 +:103ED000262F30E0280F311D2F3F310524F4680FC5 +:103EE0006093130108958FEF8093130108958091DB +:103EF0001201262F30E0280F311D2F3F310524F409 +:103F0000680F6093120108958FEF80931201089556 +:103F100080911101262F30E0280F311D2F3F3105F0 +:103F200024F4680F6093110108958FEF80931101BD +:103F3000089580911001262F30E0280F311D2F3F6A +:103F4000310524F4680F6093100108958FEF80937A +:103F50001001089580910F01262F30E0280F311DA8 +:103F60002F3F310524F4680F60930F0108958FEF00 +:103F700080930F010895833011F128F4813049F0C6 +:103F8000823091F00895853081F120F18630C1F1C1 +:103F9000089580911401681720F4861B8093140102 +:103FA000089510921401089580911301681720F468 +:103FB000861B809313010895109213010895809138 +:103FC0001201681720F4861B809312010895109245 +:103FD0001201089580911101681720F4861B8093C7 +:103FE0001101089510921101089580911001681730 +:103FF00020F4861B809310010895109210010895FB +:1040000080910F01681720F4861B80930F0108959B +:1040100010920F0108950F931F93873208F048C044 +:104020008E3108F092C0803109F47CC008F58730E9 +:1040300009F466C068F4863009F0A2C08091DB0103 +:10404000817F8E7F8093DB0181E08093EB0199C0BB +:104050008B3009F48EC08E3009F092C08091DB0164 +:1040600082FB222720F991E0922790FB82F963C01E +:10407000863109F47EC060F4813109F081C00E946C +:104080003C1590910C0181E0892780930C0171C04F +:10409000893109F46EC08B3109F072C08091DB0167 +:1040A00081FB222720F991E0922790FB81F943C000 +:1040B000883309F45EC050F4893209F45CC085335A +:1040C00009F459C0873209F456C05AC0833409F440 +:1040D00052C028F48A3308F453C0895337C0883457 +:1040E00009F04EC00E943C150FEF13ED20E3015084 +:1040F00010402040E1F700C000000E94931C39C02E +:104100009091DB01892F8095817080FB90F929F0D7 +:10411000966098609093DB0134C0997F977F90936D +:10412000DB0127C08091DB0183FB222720F991E08E +:10413000922790FB83F98093DB019923D1F0809142 +:10414000DB0181608093DB0114C08D5141E050E0C0 +:1041500060E070E08A019B0104C0000F111F221F64 +:10416000331F8A95D2F7C901B8010E94FC180E943A +:104170003C1581E006C061E070E080E090E0F5CFA2 +:1041800080E01F910F91089580E0089580E00895E8 +:10419000CF93C82F8091EB01813069F018F0823005 +:1041A000C9F184C0E0910D01F0910E01808182324D +:1041B00009F07EC007C0E0910D01F0910E018081F1 +:1041C000823261F48C2F0E94C420811104C08C2F94 +:1041D0000E940B201DC081E090E01AC08C2F0E942D +:1041E000C620811114C0C43179F048F4CB3079F085 +:1041F000C03109F061C082E08093EB0108C0C93290 +:1042000019F0C83321F058C01092EB0155C081E07D +:10421000817054C0C93291F120F5C43179F1B0F404 +:10422000C73009F047C08EE18093140182E3809388 +:1042300013018AE08093120184E18093110188E0E8 +:104240008093100188E280930F0134C0CE51C630B4 +:1042500088F5EC2FF0E0E75CFE4F80818093EA0167 +:1042600029C0CE34E9F020F4CB3421F56AE013C044 +:10427000C13579F0C235F1F461E00DC08091EA01F9 +:10428000882319F01092EA0115C081E08093EB01B8 +:1042900015C061E006C08091EA010E94451F0AC076 +:1042A0006AE08091EA010E94BB1F04C01092EB01FA +:1042B00080E004C081E002C080E0AACFCF910895E1 +:1042C0000E94EF1C811102C00E94D01C0E94101D90 +:1042D0008093FA0180FF02C0869501C080E00C94B3 +:1042E0004B038091FA01982F9695292F30E02330C7 +:1042F00031054CF49F5F990F8170892B8160809309 +:10430000FA010E94141D8091FA0186950C944B03CA +:104310008091FA01982F969591F09158990F81709C +:10432000892B8093FA018E7F91E009F490E08091CF +:10433000FA0190FB80F98093FA010E94141D80918C +:10434000FA0186950C944B038091FA01982F909571 +:1043500090FB80F98093FA010E94141D8091FA016C +:1043600080FF02C0869501C080E00C944B039091C1 +:10437000FA01892F86958F5F8F779170843028F4AA +:10438000880F892B8093FA0102C09093FA018091E3 +:10439000FA018E7F91E009F490E08091FA0190FBA0 +:1043A00080F98093FA010E94141D8091FA0186958C +:1043B0000C944B032091FA01922F96958927982F00 +:1043C000990F822F8170892B8093FA018E7F91E063 +:1043D00009F490E08091FA0190FB80F98093FA0152 +:1043E0000E94141D8091FA0186950C944B038091D4 +:1043F000FA018695089504D06894B1118DC008958E +:1044000070D088F09F5790F0B92F9927B751A0F03E +:10441000D1F0660F771F881F991F1AF0BA95C9F758 +:1044200012C0B13081F077D0B1E0089574C0672F29 +:10443000782F8827B85F39F0B93FCCF38695779508 +:104440006795B395D9F73EF49095809570956195F1 +:104450007F4F8F4F9F4F0895E89409C097FB3EF41C +:1044600090958095709561957F4F8F4F9F4F9923C1 +:10447000A9F0F92F96E9BB279395F695879577953F +:104480006795B795F111F8CFFAF4BB0F11F460FFFF +:104490001BC06F5F7F4F8F4F9F4F16C0882311F057 +:1044A00096E911C0772321F09EE8872F762F05C06B +:1044B000662371F096E8862F70E060E02AF09A9506 +:1044C000660F771F881FDAF7880F9695879597F9FB +:1044D000089557FD9058440F551F59F05F3F71F0F4 +:1044E0004795880F97FB991F61F09F3F79F087955B +:1044F0000895121613061406551FF2CF4695F1DFE4 +:1045000008C0161617061806991FF1CF8695710573 +:10451000610508940895E894BB2766277727CB01A7 +:1045200097F908950BD078C069D028F06ED018F0B4 +:10453000952309F05AC05FC01124EECFCADFA0F363 +:10454000959FD1F3950F50E0551F629FF001729F28 +:10455000BB27F00DB11D639FAA27F00DB11DAA1F47 +:10456000649F6627B00DA11D661F829F2227B00D94 +:10457000A11D621F739FB00DA11D621F839FA00D1F +:10458000611D221F749F3327A00D611D231F849F6F +:10459000600D211D822F762F6A2F11249F575040C6 +:1045A0008AF0E1F088234AF0EE0FFF1FBB1F661F61 +:1045B000771F881F91505040A9F79E3F510570F01A +:1045C00014C0AACF5F3FECF3983EDCF38695779555 +:1045D0006795B795F795E7959F5FC1F7FE2B880F15 +:1045E000911D9695879597F9089597F99F6780E8AB +:1045F00070E060E008959FEF80EC089500240A9435 +:104600001616170618060906089500240A941216AD +:104610001306140605060895092E0394000C11F4E0 +:10462000882352F0BB0F40F4BF2B11F460FF04C08D +:104630006F5F7F4F8F4F9F4F089597FB072E16F4A4 +:10464000009407D077FD09D00E94372307FC05D0DE +:104650003EF4909581959F4F0895709561957F4F99 +:104660000895EE0FFF1F0590F491E02D0994AA1B09 +:10467000BB1B51E107C0AA1FBB1FA617B70710F04D +:10468000A61BB70B881F991F5A95A9F7809590957F +:10469000BC01CD010895F999FECF92BD81BDF89A74 +:1046A000992780B50895A8E1B0E042E050E00C946D +:1046B0007323262FF999FECF92BD81BDF89A0197F9 +:1046C00000B4021639F01FBA20BD0FB6F894FA9A5A +:1046D000F99A0FBE08950196272F0E945A230C9431 +:1046E0005923DC01CB01FC01F999FECF06C0F2BDD4 +:1046F000E1BDF89A319600B40D9241505040B8F7A0 +:064700000895F894FFCFBC +:10470600FF5E09EC09C909950961090101C801287B +:1047160008140A321E1F0F03764F5F6F7F496943E5 +:1047260079095953633F4D3639A30556052005E7E8 +:10473600047A049304AC04C50401020304050607C5 +:04474600080900005E +:00000001FF diff --git a/keyboard/planck/keymaps/pvc/compiled.hex b/keyboard/planck/keymaps/pvc/compiled.hex new file mode 100644 index 0000000000..9e6f0ffe20 --- /dev/null +++ b/keyboard/planck/keymaps/pvc/compiled.hex @@ -0,0 +1,1635 @@ +:100000000C9467030C94AB030C94AB030C94AB03FC +:100010000C94AB030C94AB030C94AB030C94AB03A8 +:100020000C94AB030C94AB030C94BE170C94901877 +:100030000C94F2250C94AB030C94AB030C94AB031F +:100040000C94AB030C940B040C94AB030C94AB0317 +:100050000C94AB030C945A260C94AB030C94AB0396 +:100060000C94AB030C94AB030C94AB030C94AB0358 +:100070000C94AB030C94AB030C94AB030C94AB0348 +:100080000C947A0D0C94AB030C94AB030C94AB035F +:100090000C94AB030C94AB030C94AB030C94AB0328 +:1000A0000C94AB030C94AB030C94AB037504870462 +:1000B0009B04B404AD04C404D304DB04E304ED04E2 +:1000C000F504FD0404050B051705170517051705AD +:1000D00017051705CF04FD181F190D1A1F190D1A42 +:1000E000641987190D1ADC19EF19D91CD91C081DC0 +:1000F000081D471D671DBD1EBD1E721DBD1E221E93 +:10010000221E891E921EBD1EB71E2F1E2F1E2F1EC1 +:100110002F1E2F1E2F1E2F1E2F1E2F1E2F1E2F1E77 +:100120002F1E2F1E2F1E2F1E2F1E3F1E4D1E541E14 +:100130005B1E651E07634236B79BD8A71A396856FF +:1001400018AEBAAB558C1D3CB7CC5763BD6DEDFDF9 +:10015000753EF6177231BF000000803F08000000B6 +:10016000BE922449123EABAAAA2ABECDCCCC4C3EAC +:1001700000000080BEABAAAAAA3E00000000BF009B +:100180000000803F0000000000084178D3BB438797 +:10019000D1133D190E3CC3BD4282AD2B3E68EC82AB +:1001A00076BED98FE1A93E4C80EFFFBE01C4FF7F30 +:1001B0003F00000000000000000000000000000000 +:1001C00000010204060A0F17202C3A4A5D71879D30 +:1001D000B3C7DAE9F5FCFFFCF5E9DAC7B39D87712F +:1001E0005D4A3A2C20170F0A0604020100000000A5 +:1001F00000000000000000222B0014001A0008007C +:10020000150017001C0018000C00120013002A0033 +:10021000290004001600070009000A000B000D0069 +:100220000E000F0033003400E1001D001B0006002B +:100230001900050011001000360037005200280098 +:10024000E000E3000530E20003302C002C00043015 +:10025000C000500051004F002B0014001A0009008C +:1002600013000A000D000F0018001C0033002900C5 +:100270002A00040015001600170007000B001100EB +:1002800008000C0012003400E1001D001B000600F5 +:10029000190005000E00100036003700520028003B +:1002A000E000E3000530E20003302C002C000430B5 +:1002B000C000500051004F002B00340036003700C2 +:1002C00013001C0009000A00060015000F002A0098 +:1002D000290004001200080018000C0007000B00A1 +:1002E0001700110016003800E100330014000D0063 +:1002F0000E001B00050010001A0019001D00280048 +:10030000E000E3000530E20003302C002C00043054 +:100310005200510050004F0046003A003B003C00A4 +:100320003D00530054005F006000610056004C0027 +:1003300039003E003F0040004100470055005C008E +:100340005D005E0057004900010042004300440088 +:1003500045004800000059005A005B0058004A0060 +:1003600001000100010001000100620062000100C3 +:10037000E600630058004D00010021022F022F000B +:100380002602220220022702300030021F024B0008 +:1003900001002302250257005600330033022D02CC +:1003A0003400340235004E000100310224021E02E6 +:1003B0003502380031002E003602370238024A007A +:1003C0000100010001000100010001000100010025 +:1003D0000100010001004D0053003A003B003C00C9 +:1003E0003D003E003F004000410042004300480005 +:1003F000390044004500680069006A006B006C0029 +:100400006D006E006F004600470000000000000015 +:100410000000000000000000000000000000A80034 +:1004200001000100010001000100AE00AE0001006A +:10043000A900AA00AC00AB002900FD00FE00FF00EF +:100440000000000000000000000000000000290083 +:10045000000000000000000000000000000000009C +:1004600000000000000000000100F800F700F600A6 +:10047000F50000000000000000000000F900FA0094 +:1004800001000100010001000100F400F40001007E +:10049000F000F100F200F3000100073008300930ED +:1004A0000A300B300C300D30010001002550225075 +:1004B00001000030013002300100010001000100A4 +:1004C0000100010001000100010001000100010024 +:1004D00014300050010006300100010026500100D8 +:1004E0000100010001000100010001000100010004 +:1004F0000100010027500100280354006800650036 +:10050000200050006C0061006E0063006B00200052 +:100510004B006500790062006F00610072006400AA +:1005200000002C034F007200740068006F006C0024 +:1005300069006E0065006100720020004B006500DC +:10054000790062006F0061007200640073000000B7 +:100550000403090409026D00040100A0FA09040063 +:10056000000103010100092111010001223F0007E0 +:1005700005810308000A09040100010301020009C2 +:100580002111010001224D000705820308000A091C +:1005900004020001030000000921110100012236BC +:1005A000000705830308000A090403000103000093 +:1005B0000009211101000122390007058403100000 +:1005C000011201100100000008EDFE606001000151 +:1005D00002000105010906A101050719E029E71537 +:1005E0000025019508750181020508190129059565 +:1005F00005750191029501750391010507190029FF +:100600007715002501957875018102C005010980E3 +:10061000A101850216010026B7001A01002AB700C1 +:10062000751095018100C0050C0901A10185031613 +:100630000100269C021A01002A9C02751095018176 +:1006400000C005010902A1010901A1000509190164 +:100650002905150025019505750181029501750390 +:1006600081010501093009311581257F9502750841 +:10067000810609381581257F950175088106050CCD +:100680000A38021581257F950175088106C0C005CD +:10069000010906A101050719E029E71500250195C3 +:1006A0000875018102950175088101050819012964 +:1006B00005950575019102950175039101050719CD +:1006C0000029FF150025FF950675088100C011243B +:1006D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FD +:1006E00080916F0590917005A0917105B091720590 +:1006F0008730904BA740B04BB9F410926F05109221 +:100700007005109271051092720514BE84B7877F30 +:1007100084BF88E10FB6F894809360001092600067 +:100720000FBEE0E0F8E3099514E0A0E0B1E0EAE0F4 +:10073000F3E602C005900D92A031B107D9F715E09C +:10074000A0E1B4E001C01D92AF36B107E1F70E940D +:1007500004150C9483310C940000089581E00895F1 +:100760000C94AD030C94AE030C941E050E944D2D09 +:1007700023E030E0281B3109220F20931404089550 +:10078000282F2F9880918000211108C0877F8093A7 +:10079000800010928D0010928C001BC088608093A6 +:1007A0008000233019F48FEF9FEF0FC083E090E0BB +:1007B000821B9109880F991F2FEF3FEFA90102C0FB +:1007C000569547958A95E2F7CA0190938D008093DC +:1007D0008C000C94B6030E94B60384E0809313044B +:1007E000109210040895279A2F988FEF9FEF9093FF +:1007F0008700809386008AE08093800089E180935F +:1008000081000E94B62C0C94EB030E94F3036E9AB5 +:10081000769A0C948F051F920F920FB60F921124A7 +:100820002F933F938F939F93EF93FF93E091110446 +:10083000F0911204CF010196909312048093110459 +:100840000090130402C0F695E7950A94E2F7EF735F +:1008500080911004823019F4E03251F404C08130E8 +:1008600039F4EF3329F480916F008D7F80936F000E +:10087000F0E0EA54FE4FE49121E031E0E29FC00154 +:10088000E39F900D11240090140402C09695879563 +:100890000A94E2F790938D0080938C00FF91EF9182 +:1008A0009F918F913F912F910F900FBE0F901F90AE +:1008B0001895CF93DF93EC010E944E28BE0180E093 +:1008C00090E0DF91CF910C94E8220F931F93CF9388 +:1008D000DF93462F50E04531510508F0A8C0EC01E8 +:1008E000FA01EA5AFF4F0C9447318A81882309F4B0 +:1008F0009EC081E090E00E9459040AE017ED23E2D7 +:100900003CE340E064E070E080E792E011C08A815F +:10091000882309F48CC082E090E00E9459040AE028 +:1009200017ED23E23CE340E066E070E080E092E017 +:100930000E94F8107CC08A81882309F478C084E082 +:1009400090E00E9459040AE017ED23E23CE340E006 +:1009500068E070E080E392E0EBCF8A81882311F0B9 +:1009600084E006C084E00DC08A81882349F083E0DA +:100970000E94652347E063E084E00E945D0B57C05E +:1009800083E00E948623F6CF8A81882321F085E0C8 +:100990000E9465234CC085E00E94862348C08A815E +:1009A00081110E940D2D8A81882309F440C086E0C0 +:1009B0000E94AB233CC08A818823C9F160E070E0CB +:1009C00080E09EE307C08A81882389F160E070E0BF +:1009D00080E89EE30E949F112AC08A81882339F112 +:1009E00060E070E080E09FE3F5CF8A818823F9F032 +:1009F00060E070E080E49FE3EDCF8A818823B9F066 +:100A00008AE00E94B11113C08A81882381F08AE0B4 +:100A10000E94AB110CC08A81882349F060E070E02D +:100A200080E09FE30E949F1184E60E94A81180E06D +:100A300090E0DF91CF911F910F9108950F931F9335 +:100A4000CF93C82F8FE39CE90197F1F700C0000016 +:100A500090911504C1FF0BC091FD14C000E010E09F +:100A6000980140E062E070E080E991E03AC091FFD7 +:100A700009C000E010E0980140E062E070E080E82A +:100A800091E02FC0C0FF0BC090FD14C000E010E04B +:100A9000980140E062E070E080E791E022C090FFC2 +:100AA00009C000E010E0980140E062E070E080E6FC +:100AB00091E017C0C2FF0BC092FD15C000E010E02E +:100AC000980140E062E070E080E591E00AC092FFAA +:100AD0000AC000E010E0980140E062E070E080E4CD +:100AE00091E00E94F810C0931504CF911F910F91CF +:100AF00008950F931F938FE39CE90197F1F700C0CE +:100B000000000AE017ED23E23CE340E06FE070E014 +:100B100088ED92E00E94F8101F910F91089580E0F7 +:100B20000E94C2110C9479050F931F930AE017EDF0 +:100B300023E23CE340E069E070E080E992E00E945B +:100B4000F8102FEF87EA91E6215080409040E1F7BE +:100B500000C000001F910F910C94AD0C0F931F93D8 +:100B60000AE017ED23E23CE340E065E070E088ED49 +:100B700091E00E94F8101F910F9108950F931F9319 +:100B80000AE017ED23E23CE340E067E070E080EA32 +:100B900091E00E94F8101F910F9108950F931F93F9 +:100BA0000AE017ED23E23CE340E068E070E080E01B +:100BB00091E00E94F8101F910F91089581E008952F +:100BC0000C94DE0508950C94050480916604882336 +:100BD00009F448C08091220490912304009779F48D +:100BE0000E9424269093230480932204809124045D +:100BF00090E0009771F48091250490E00AC00E9473 +:100C0000302620915003309151032817390740F3C3 +:100C100029C00197880F991F880F991FFC01EA5D71 +:100C2000FB4F60817181828193810E94E00CE09191 +:100C3000240484E0E89FF0011124EA5DFB4F608109 +:100C40007181828193814FE050E00E9498108091E1 +:100C5000240490E001966091250470E00E943331F5 +:100C6000809324040C94B003109268040C94AD0C8F +:100C700081E0809368040C94BE058F929F92AF929E +:100C8000BF92EF92FF920F931F93CF93DF93CDB755 +:100C9000DEB7A3970FB6F894DEBF0FBECDBF7C01C1 +:100CA000FC0100811181C8010E942124B8010E9429 +:100CB0003F088C01B7010E94E005882309F4CCC1EC +:100CC0000032F0E51F0741F4F7018281882309F41F +:100CD00058C00E948F11C0C10132F0E51F0741F4D6 +:100CE000F7018281882309F44CC00E949811B4C195 +:100CF0000232F0E51F0751F4F7018281882309F4DD +:100D000040C00E948B118111F0CFE3CF0332F0E598 +:100D10001F0739F4F7018281882399F10E94380670 +:100D20009BC10432F0E51F0739F4F7018281882363 +:100D300041F10E94340690C10532F0E51F0749F4E5 +:100D4000F70182818823E9F0809168048111F1CF55 +:100D5000E5CF0632F0E51F0739F4F70182818823D9 +:100D600081F00E94C5110AC00732F0E51F0749F45F +:100D7000F7018281882329F00E94D0110E94CE05BC +:100D80006BC180916804811105C0F70182818111D6 +:100D9000CFC018C1003E110579F4F7018281882384 +:100DA00009F44DC00E94AD0C81E08093670410925D +:100DB00066041092250450C1023E110559F4F70152 +:100DC00082818823E1F10E94AD0C10926704109299 +:100DD000660442C1033E110591F4F7018281882324 +:100DE00071F10E94AD0C1092670481E0809366045B +:100DF0001092240410922304109222042DC1023573 +:100E0000110559F4F7018281882309F425C18091E5 +:100E10005003909151030A970DC00135110579F4E3 +:100E2000F7018281882309F417C1809150039091C2 +:100E300051030A9690935103809350030DC1409142 +:100E4000540383E2EFE6F3E0DE01119601900D9288 +:100E50008A95E1F7F701808121E030E02C0F3D1FFA +:100E6000280F311DC9012091520330915303FC0119 +:100E7000E20FF31F6081772767FD7095640F711D86 +:100E8000882777FD8095982F0E94552E20E030E02E +:100E900040E451E40E94BA2D4B015C01F70121812D +:100EA00084E090E0821B9109BC01882777FD809542 +:100EB000982F0E94552E9B01AC01C501B4010E94E0 +:100EC000522D9B01AC0160E070E080E090E40E9454 +:100ED000C82F20E030E04CED50E40E94652F4B011C +:100EE0005C01F70182818823D1F04FE050E0C50119 +:100EF000B4010E949810809167048823A1F080912A +:100F0000250424E0829FF0011124EA5DFB4F8082DA +:100F10009182A282B3828F5F8093250404C0C501B1 +:100F2000B4010E94E00C0F3F110508F02ECF94C0D1 +:100F30008091210481111FC0043130E5130709F0AD +:100F400051C00E94E20581E0809321040E94242682 +:100F50009093200480931F041092180410921A0496 +:100F60001092190410921C0410921B0410921E047B +:100F700010921D0471C080911F04909120040E9462 +:100F80003026883C910570F480911804E82FF0E039 +:100F9000EE0FFF1FE75EFB4F118300838F5F80938F +:100FA00018045AC0043880E5180721F005381045A8 +:100FB00001F13AC0F7018281882341F010921604B2 +:100FC00082E01EC0043830E5130759F580911604FD +:100FD000811106C086E20E947D1B86E20E94451CAC +:100FE00082E01CC00438F0E51F0741F305381045C6 +:100FF000D9F4F7018281882331F01092170480E23E +:101000000E94941C29C080911704811106C087E2B8 +:101010000E947D1B87E20E94451C80E20E949B1C6F +:101020001BC00538104529F381E080931604809396 +:101030001704C701A3960FB6F894DEBF0FBECDBF4D +:10104000DF91CF911F910F91FF90EF90BF90AF90E4 +:101050009F908F900C94B20380E0A3960FB6F89403 +:10106000DEBF0FBECDBFDF91CF911F910F91FF90DB +:10107000EF90BF90AF909F908F90089508959CE05F +:10108000799FF001112490E3899FE00DF11D112457 +:10109000E60FF11DEE0FFF1FE850FE4F8591949172 +:1010A0000895880F991FFC01EA58FF4F859194918C +:1010B0000895880F991FFC01EA50FE4F8591949185 +:1010C00008950F931F93CF93DF93EC01811521E3D4 +:1010D0009207A0F5C11580E3D80708F0D7C0C83E35 +:1010E000D105D8F4C03ED10508F007C2C83AD105F1 +:1010F00078F4C53AD10508F06AC0C130D10509F4C9 +:1011000063C008F4F7C1C430D10508F0F6C1F2C1DC +:10111000CB3BD10508F466C0EDC1C11590E2D907FB +:1011200008F0AFC0C11521E0D20708F0E6C1C03F0A +:10113000D10508F4DFC18E0110651FC2C03880E5FB +:10114000D80700F5C03790E5D90708F0A3C0C1154E +:1011500020E5D20709F4ACC050F4CE0190548031A0 +:101160009F4008F0C7C1DF708E01106A06C2C1300F +:1011700080E5D80709F4AEC0C43190E5D90708F47A +:10118000AFC0B8C1C33820E5D20709F48EC050F40F +:10119000C13890E5D90709F482C008F083C000E0A7 +:1011A00011EDEBC1C03181E5D80708F4A3C1C11529 +:1011B00097E5D90708F436C1CE01905781159041C3 +:1011C00008F098C1DF7093C101E010E0D6C1C53AC4 +:1011D000D10509F494C1C63AD10509F093C102E8DA +:1011E00010E4CBC1C83AD10509F48FC1C93AD10581 +:1011F00009F48EC1CA3AD10509F48DC1CB3AD105A3 +:1012000009F48CC1CC3AD10509F48BC1CD3AD10592 +:1012100009F48AC1C03BD10509F489C1CE3AD10590 +:1012200009F488C1CF3AD10509F487C1C13BD10582 +:1012300009F486C1C23BD10509F485C1C33BD10580 +:1012400009F484C1C43BD10509F483C1C53BD10570 +:1012500009F482C1C63BD10509F481C1C73BD10560 +:1012600009F480C1C83BD10509F47FC1C93BD10550 +:1012700009F47EC1CA3BD10509F47DC100E014E444 +:101280007CC1CE019F700E94590878C1DD278E0174 +:10129000106C73C1CF70DD278E01146D6EC100E03C +:1012A00010ED6BC100E012ED68C100E013ED65C107 +:1012B0000E94281F0E94AD0C0E9494058FEF94E3BA +:1012C0002CE0815090402040E1F700C000000E94D7 +:1012D0007F2653C1809143058160809343054DC1B2 +:1012E0000E943628811102C00E9412280E945328B1 +:1012F00090E090936E0580936D05C23080E5D8072D +:1013000021F480916D05816086C0C43090E5D907D5 +:1013100021F480916D0582607EC0C63020E5D20741 +:1013200021F480916D05846076C0C83080E5D807CF +:1013300019F480916D0527C0CA3090E5D90721F4D2 +:1013400080916D05806167C0CC3020E5D20721F423 +:1013500080916D0580625FC0CE3080E5D80721F4B2 +:1013600080916D05806457C0C03190E5D90721F4A4 +:1013700080916D0580684FC0C23120E5D20729F405 +:1013800080916D058460886046C0C33080E5D807D1 +:1013900021F480916D058E7F3EC0C53090E5D90760 +:1013A00021F480916D058D7F36C0C73020E5D207CE +:1013B00021F480916D058B7F2EC0C93080E5D80760 +:1013C00019F480916D0526C0CB3090E5D90721F442 +:1013D00080916D058F7E1FC0CD3020E5D20721F4AE +:1013E00080916D058F7D17C0CF3080E5D80721F43F +:1013F00080916D058F7B0FC0C13190E5D90721F435 +:1014000080916D058F7707C0C331D04531F480914D +:101410006D058B7F877F80936D0580916D050E94A0 +:101420005728ABC08D2F99278F7099278130910550 +:10143000D9F49E012370332702C0880F991F2A9583 +:10144000E2F79C688E0144E0000F111F4A95E1F716 +:1014500000271370802B912B53E0CC0FDD1F5A9582 +:10146000E1F7C076DD272FC08230910531F4DC2F03 +:10147000CC278E01016F106A80C08330910569F41A +:10148000CE018370992701E010E002C0000F111F08 +:101490008A95E2F7C8019C680FC084309105B9F4C1 +:1014A000CE018370992701E010E002C0000F111FE8 +:1014B0008A95E2F7C8019A6823E0CC0FDD1F2A95D0 +:1014C000E1F7C07ED7708C010C2B1D2B56C08530E8 +:1014D000910531F4DC2FCC278E01046F106A4DC0CA +:1014E000069709F04AC0CF71DD27DC2FCC278E018B +:1014F000106243C000E010E040C08E013EC001E831 +:1015000010E43BC003E810E438C002EE14E435C038 +:1015100009EE14E432C00AEE14E42FC005EB14E423 +:101520002CC006EB14E429C007EB14E426C00CEC35 +:1015300014E423C00DEC14E420C003E815E41DC03E +:101540000AE815E41AC002E915E417C004E915E435 +:1015500014C001E216E411C003E216E40EC004E276 +:1015600016E40BC005E216E408C006E216E405C066 +:1015700007E216E402C00AE216E4C801DF91CF9147 +:101580001F910F9108959CE0799FF001112490E341 +:10159000899FE00DF11D1124E60FF11DEE0FFF1FD5 +:1015A000E850FE4F85919491803E9105E0F4803C97 +:1015B000910558F58133910509F46FC048F48932DB +:1015C000910509F463C08A32910509F46DC072C0B7 +:1015D00089339105E9F082389105D1F08533910581 +:1015E00009F44DC067C0833E910581F138F4803E17 +:1015F0009105B9F0823E9105D9F05CC0863E910517 +:1016000061F1873E9105A1F155C00E9451080895EE +:1016100020916D0520FD02C021FF4CC080EE90E0BE +:1016200049C080916D0580FFF9CF89E390E042C009 +:1016300080916D0582FF0EC080916D0584FF03C00F +:1016400080E090E037C083EE90E034C080916D057B +:1016500082FFF2CF82EE90E02DC080916D0583FF76 +:101660000BC080916D0584FDEBCF87EE90E022C02A +:1016700080916D0583FFF5CF86EE90E01BC08091D1 +:101680006D0585FF07C089E290E014C080916D056B +:1016900085FFF9CF85E390E00DC080916D0586FF51 +:1016A00007C08AE290E006C080916D0586FFF9CF01 +:1016B00081E390E00E9461080895CF92DF92EF925B +:1016C000FF920F931F9301E010E020E030E06801EB +:1016D000790104C0CC0CDD1CEE1CFF1C8A95D2F7EE +:1016E00004C0000F111F221F331F6A95D2F70C2967 +:1016F0001D292E293F29C0902605D0902705E0906E +:101700002805F0902905C022D122E222F322842F5D +:10171000C016D106E206F30641F41F910F91FF9027 +:10172000EF90DF90CF900C9465231F910F91FF9065 +:10173000EF90DF90CF900C9486230C94B403E82FA5 +:10174000F0E0E256FC4F8081E82FEF70F0E08295E8 +:101750008F7021E030E0A90102C0440F551F8A9527 +:10176000E2F740A308950F931F93CF93DF9385B7BC +:10177000806885BF85B7806885BFC3E0D0E001E0A1 +:1017800010E0FE01E256FC4F8081E82FEF70F0E0A0 +:1017900021A182958F70A80102C0440F551F8A9520 +:1017A000E2F7CA01822B81A38C2F0E949F0B219705 +:1017B00040F78BE090E061E070E0FC01EE56FC4FFA +:1017C0002081E22FEF70F0E042A122952F70DB0123 +:1017D00002C0AA0FBB1F2A95E2F79D01242B22A36A +:1017E000019758F7DF91CF911F910F910C94E3056A +:1017F000EF92FF920F931F93CF93DF9301E714E0D3 +:10180000C3E0EE24E394F12CD5E08C2F0E949F0BD3 +:101810008BE090E040E050E0FC01EE56FC4F608130 +:10182000E62FEF70F0E020A130E062956F7002C00B +:10183000359527956A95E2F720FD09C09701082E96 +:1018400002C0220F331F0A94E2F7422B532B019759 +:1018500018F7F801929182918F018417950721F072 +:1018600051834083D09355038C2F0E949F0BC1500E +:1018700060F68091550387FD2CC0815080935503FD +:101880008F3F39F08FE99FE00197F1F700C000002A +:1018900020C080916F04909170049093780480939D +:1018A000770480916D0490916E04909376048093F8 +:1018B000750480916B0490916C04909374048093F0 +:1018C00073048091690490916A04909372048093E8 +:1018D00071040E94E50581E0DF91CF911F910F9186 +:1018E000FF90EF900895E82FF0E0EE0FFF1FEF5804 +:1018F000FB4F80819181089508950F931F93CF939B +:1019000009E714E0C0E0F801929182918F010E94F2 +:101910009C25C80FF4E001371F07A9F78C2FCF9142 +:101920001F910F9108950E943628811102C00E94D4 +:1019300012280E946528809358053E9A8091710074 +:101940008D7F8093710082E0809390008AE1809384 +:10195000910081E080937B04089580917B04811144 +:1019600002C00E94930C1092CB041092CA04809182 +:1019700071008D7F80937100809190008F738093B0 +:10198000900010928D0410928C041092C404109256 +:10199000C5041092C6041092C7041092C30410929A +:1019A000C204E2EAF4E0A2E9B4E0119211921192C9 +:1019B00011921D921D9284E0E23CF807B1F7089560 +:1019C000CF92DF92EF92FF920F931F93CF93DF930B +:1019D00020918C04222309F484C06B017C01809146 +:1019E0007B04811102C00E94930C02EC14E0C7E05A +:1019F000D0E0A7019601F8019291829172916291D3 +:101A00008F010E94B62D811131C0FE01EE0FFF1F24 +:101A1000EE0FFF1FEE55FB4F1082118212821382D0 +:101A2000DE01AA0FBB1FAE56BB4F11961C921E9231 +:101A3000C730D105E9F021964481558166817781CF +:101A400040835183628373831482158216821782C6 +:101A500012968D919C91139711969C938E93139649 +:101A60001C921E92129734961296E2CF219708F696 +:101A70008091CA049091CB04019797FD05C0909383 +:101A8000CB048093CA0404C01092CB041092CA0401 +:101A90008091CA049091CB042091C8043091C9046C +:101AA0002817390724F01092C9041092C804892B12 +:101AB000C1F4809171008D7F8093710080919000BE +:101AC0008F73809390001092C4041092C5041092FA +:101AD000C6041092C7041092C3041092C20410925C +:101AE0008C04DF91CF911F910F91FF90EF90DF90C9 +:101AF000CF9008951F920F920FB60F9211244F921C +:101B00005F926F927F928F929F92AF92BF92CF928D +:101B1000DF92EF92FF922F933F934F935F936F93D8 +:101B20007F938F939F93AF93BF93CF93DF93EF9365 +:101B3000FF9380918C04882309F49BC1C091CA044F +:101B4000D091CB041C161D060CF093C140907C0470 +:101B500050907D0460907E0470907F0420E030E01F +:101B6000A901C301B2010E94612F18160CF065C0D3 +:101B7000C130D10509F452C08091C8049091C904C4 +:101B8000BE010E9433317C019093C9048093C80444 +:101B900080908E0490908F04A0909004B090910457 +:101BA00020E030E040E85FE3C501B4010E94522D1F +:101BB00060938E0470938F048093900490939104AB +:101BC000F701EE0FFF1FEE0FFF1FEE55FB4FA301B6 +:101BD000920160817181828193810E94BA2D20E0FF +:101BE00030E040E05EE30E94652F9B01AC01C5013F +:101BF000B4010E94612F18168CF4C7010196BE0132 +:101C00000E9433319093C9048093C80410928E04CB +:101C100010928F041092900410929104E091C804E5 +:101C2000F091C904EE0FFF1FEE0FFF1FEE55FB4FA3 +:101C30006081718182819381D0C0C090C404D090B2 +:101C4000C504E090C604F090C70420E030E0A9018C +:101C5000C701B6010E94B62D2197882309F4A2C0BE +:101C6000FE01EE0FFF1FEE0FFF1FEE55FB4F8080B2 +:101C70009180A280B380A5019401C701B6010E94A2 +:101C8000B62D87FF31C0A501940160E070E08CEDB6 +:101C900093EC0E94BA2D20E030E040E451E40E9431 +:101CA000BA2D20E030E040E05FE30E94652F9B0109 +:101CB000AC0160E070E080E090E40E94C82F9B01DE +:101CC000AC01C501B4010E94652F9B01AC01C701A5 +:101CD000B6010E94B62D87FF07C0A701960160E0FC +:101CE00070E08CED93E439C0A5019401C701B60101 +:101CF0000E94612F18160CF055C0A501940160E0F8 +:101D000070E08CED93E40E94BA2D20E030E040E4D6 +:101D100051E40E94BA2D20E030E040E05FE30E94F1 +:101D2000652F9B01AC0160E070E080E090E40E94D0 +:101D3000C82F9B01AC01C501B4010E94652F9B0116 +:101D4000AC01C701B6010E94612F18165CF5A7010E +:101D5000960160E070E08CED93EC0E94BA2D20E0DB +:101D600030E040E451E40E94BA2D20E030E040E051 +:101D70005FE30E94652F9B01AC0160E070E080E0B2 +:101D800090E40E94C82F9B01AC01C701B6010E94DC +:101D9000652F6093C4047093C5048093C604909328 +:101DA000C70413C0FE01EE0FFF1FEE0FFF1FEE551D +:101DB000FB4F80819181A281B3818093C404909371 +:101DC000C504A093C604B093C7046091C404709185 +:101DD000C5048091C6049091C70420917904309184 +:101DE0007A042F3F4FEF340731F02F5F3F4F30938E +:101DF0007A04209379040E94DB116B017C0120E0BE +:101E000034E244EF51E40E94B62D87FF08C086EF0C +:101E1000C82E88E2D82E84EFE82E81E4F82E20E048 +:101E200030E040E051E4C701B6010E94652F9B01FC +:101E3000AC0160E074E284E79BE40E94BA2D6B0180 +:101E40007C010E94272E709397006093960020914A +:101E50005603309157034091580350915903C701DD +:101E6000B6010E94652F0E94272E709399006093FF +:101E7000980080918D04882309F433C1C0908804B0 +:101E8000D0908904E0908A04F0908B0420E030E048 +:101E9000A901C701B6010E94612F1816D4F58091DF +:101EA000790490917A048F3F2FEF920729F00196E1 +:101EB00090937A0480937904C701B6010E94DB11E4 +:101EC00020E030E040E051E40E94652F9B01AC012E +:101ED00060E074E284E79BE40E94BA2D6B017C0110 +:101EE0000E94272E709397006093960020915603CE +:101EF000309157034091580350915903C701B601DF +:101F00000E94652F0E94272E70939900609398007D +:101F100008C01092970010929600109299001092AB +:101F2000980060918204709183046F5F7F4F70937B +:101F3000830460938204209196003091970080E0A2 +:101F400090E0232BF1F0C0919600D09197000E9471 +:101F5000532E6B017C01BE0180E090E00E94532E65 +:101F60009B01AC016091840470918504809186048A +:101F7000909187040E94BA2D20E03FEF4FE757E48D +:101F800010C00E94532E6B017C0120E030EE4FEF19 +:101F900054E460918404709185048091860490914A +:101FA00087040E94652F9B01AC01C701B6010E9406 +:101FB000612F87FD96C0809180048F5F809380049D +:101FC00090E0209154053091550582179307A0F0B9 +:101FD00080915F05882319F0109280040DC08091D4 +:101FE00071008D7F80937100809190008F7380933A +:101FF000900010928D047DC080918104C091800476 +:10200000811128C0C0905905D0905A05E0905B0519 +:10201000F0905C0520E030E0A901C701B6010E9404 +:10202000612F1816BCF481E080938104109288041B +:102030001092890410928A0410928B04C092840436 +:10204000D0928504E0928604F0928704C150C09338 +:10205000800443C01092810410927A041092790493 +:10206000E0915605F091570548E0C49FE00DF11D41 +:10207000112480819181A281B381809388049093FF +:102080008904A0938A04B0938B0420E030E040E8F8 +:102090005EE364817581868197810E94652F6B0163 +:1020A0007C0180915A03682F70E080E090E00E94EC +:1020B000532E20E030E048EC52E40E94BA2D9B0100 +:1020C000AC01C701B6010E94652F60938404709330 +:1020D0008504809386049093870410928304109261 +:1020E00082048091580580FD04C010928D041092E6 +:1020F0008C04FF91EF91DF91CF91BF91AF919F91B0 +:102100008F917F916F915F914F913F912F91FF90B0 +:10211000EF90DF90CF90BF90AF909F908F907F9087 +:102120006F905F904F900F900FBE0F901F9018957B +:10213000CF92DF92EF92FF92CF93DF936B017C01FE +:10214000EA0180917B04811102C00E94930C80916E +:10215000580580FF46C08091CA049091CB0408972F +:102160000CF03FC0809171008D7F80937100809151 +:102170008D0481110E94AD0C81E080938C0410923B +:102180007A041092790420E030E0A901C701B60179 +:102190000E94612F1816DCF48091CA049091CB0440 +:1021A000FC01EE0FFF1FEE0FFF1FEE55FB4FC0822D +:1021B000D182E282F382FC01EE0FFF1FEE56FB4F4D +:1021C000D183C08301969093CB048093CA048091FD +:1021D000710082608093710080919000806880938C +:1021E0009000DF91CF91FF90EF90DF90CF90089516 +:1021F0008F929F92AF92BF92CF92DF92EF92FF9217 +:102200000F931F93CF93DF93EC017B01D42E4801F2 +:10221000590180917B04811102C00E94930C80912E +:10222000580580FF6BC0809171008D7F8093710095 +:1022300080918C0481110E94AD0C81E080938D040B +:10224000D0935705C0935605F0925505E09254057A +:10225000D0925F058092590590925A05A0925B0535 +:10226000B0925C0510928E0410928F04109290042C +:10227000109291041092800488819981AA81BB8177 +:102280008093880490938904A0938A04B0938B046C +:1022900020E030E040E85EE36C817D818E819F81AB +:1022A0000E94652F6B017C0180915A03682F70E0BA +:1022B00080E090E00E94532E20E030E048EC52E4B1 +:1022C0000E94BA2D9B01AC01C701B6010E94652F87 +:1022D00060938404709385048093860490938704AC +:1022E0001092830410928204809171008260809326 +:1022F000710080919000806880939000DF91CF9171 +:102300001F910F91FF90EF90DF90CF90BF90AF9013 +:102310009F908F90089580915805817008958091C5 +:1023200058058160809358050E9469280C94AE0579 +:10233000809158058E7F809358050C94692860938E +:10234000560370935703809358039093590308954D +:1023500080935A03089590915A03890F80935A03EA +:10236000089590915A03292F30E0281B31092A3013 +:10237000310524F48AE080935A030895981B9093C2 +:102380005A0308958093CC0408958091CC0490E082 +:10239000019666E070E00E9433318093CC0408958A +:1023A0008091CC0490E0019766E070E00E943331A8 +:1023B0008093CC0408958F929F92AF92BF92CF9258 +:1023C000DF92EF92FF920F931F93CF93DF936B01F6 +:1023D0007C01C0917904D0917A04BE0180E090E044 +:1023E0000E94532E4B015C01A701960160E070E052 +:1023F0008CE594E40E94BA2D9B01AC01C501B401A7 +:102400000E94652F0E94272E2091CC04233009F4CE +:1024100073C028F4222351F02130E9F02CC124307C +:1024200009F4A0C0253009F4E0C025C180E090E0A7 +:10243000A0E0BFE38093560390935703A093580303 +:10244000B093590310927C0410927D0410927E0484 +:1024500010927F0410C110927C0410927D0410929F +:102460007E0410927F046431710540F46A30710576 +:1024700060F520E030E040E85EE32BC0693C710588 +:1024800008F0AAC080E090E00E94532E20E030E0E7 +:1024900040EA51E40E94512D20E030E044E353E44F +:1024A0000E94BA2D9B01AC010E94652F20E030E014 +:1024B00040E05EE30E94652F9B01AC0160E070E0AC +:1024C00080E09EE30E94512D44C020E030E040E0D7 +:1024D0005FE3C701B6010E94652F6B017C0180E0BC +:1024E00090E0A0E0BEE38093560390935703A0933F +:1024F0005803B0935903BFC010927C0410927D041E +:1025000010927E0410927F044AE0469F9001479FFC +:10251000300D1124C90168EB7BE00E941F31BC0122 +:102520006C5D754077FF03C07195619571098827CF +:1025300077FD8095982F0E94552E2EE333EC4EE2C6 +:1025400059E30E94652F20E030E040EC5EE30E94FA +:10255000522D6093560370935703809358039093C2 +:10256000590389C010927C0410927D0410927E045D +:1025700010927F04CE0183709927892BE1F0BE0170 +:102580006170772780E090E00E94532E20E030E0D9 +:1025900040E05EE30E94652F20E030E040E45FE32E +:1025A0000E94522D609356037093570380935803F3 +:1025B000909359030CC080E090E0A0E0BFE38093CB +:1025C000560390935703A0935803B0935903C770D1 +:1025D000DD27CD2B09F04FC0109256031092570300 +:1025E000109258031092590346C010927C04109226 +:1025F0007D0410927E0410927F0400E010E020E041 +:102600003FE30093560310935703209358033093EE +:1026100059036739710578F180E090E00E94532EEC +:1026200020E030E047E153E40E94512D20E030E00B +:102630004AE754E40E94BA2D20E030E048E452E436 +:102640000E94652F20E030E040EA51E40E94972E7E +:102650000E94222E660F771F660F771FFB01EE5533 +:10266000FC4F2081318142815381C701B6010E9414 +:10267000652F6B017C01C701B601DF91CF911F91DE +:102680000F91FF90EF90DF90CF90BF90AF909F9011 +:102690008F9008958091DD040895CF93DF9300D04B +:1026A0001F92CDB7DEB79C0180916405843019F587 +:1026B00093E099833B832A839093E9008FEF909175 +:1026C000E800815095FD06C095ED9A95F1F7000060 +:1026D0008111F5CF8091E80085FF0DC040E050E00A +:1026E00063E070E0CE0101960E94AE158091E80093 +:1026F0008E778093E8000F900F900F90DF91CF912D +:102700000895CF93DF9300D01F92CDB7DEB720910D +:102710006405243021F522E029839B838A8383E0AA +:102720008093E9008FEF9091E800815095FD06C0FD +:1027300095ED9A95F1F700008111F5CF8091E800B1 +:1027400085FF0DC040E050E063E070E0CE010196EF +:102750000E94AE158091E8008E778093E8000F907C +:102760000F900F90DF91CF91089520916405243050 +:10277000F1F422E02093E9002FEF3091E80021509E +:1027800035FD06C035ED3A95F1F700002111F5CF82 +:102790002091E80025FF0BC040E050E065E070E0CC +:1027A0000E94AE158091E8008E778093E80008952E +:1027B000CF93DF93EC0190916405943009F046C00B +:1027C000809165038823D9F0809166038823B9F04E +:1027D0009093E9008FEF9091E800815095FD06C03D +:1027E00095E19A95F1F700008111F5CF8091E8000D +:1027F00085FF2CC040E050E060E170E017C081E050 +:102800008093E9008FEF9091E800815095FD06C01C +:1028100095ED9A95F1F700008111F5CF8091E800D0 +:1028200085FF14C040E050E068E070E0CE010E94F7 +:10283000AE158091E8008E778093E80080E1FE017C +:10284000ADECB4E001900D928A95E1F7DF91CF9164 +:10285000089580916305811109C00E9443170E9469 +:10286000A0178091E20084608093E20008951092A6 +:1028700063050895089508950C94E72542E061ECFE +:1028800081E00E94BD1642E061EC82E00E94BD162C +:1028900042E061EC83E00E94BD1642E161EC84E01D +:1028A0000C94BD1680916605833009F455C030F450 +:1028B000813071F0823009F48EC008958A3009F4B5 +:1028C0007AC08B3009F460C0893009F09CC020C008 +:1028D00080916505813A09F096C08091E800877F74 +:1028E0008093E8008091690590916A05892B21F415 +:1028F00060E18DEC94E003C060E080E090E070E087 +:102900000E94F9158091E8008B778093E800089584 +:1029100080916505813209F076C0809169059091BA +:102920006A05009719F0039709F06DC08091E800DF +:10293000877F8093E8008091E80082FD05C0809148 +:1029400064058111F8CF5FC08091F1008093DD04B0 +:102950008091E8008B7753C080916505813A09F03A +:1029600052C08091690590916A05892B09F04BC08E +:102970008091E800877F8093E8008091E80080FFE5 +:10298000FCCF8091650336C0809165058132D9F511 +:102990008091690590916A05892BA9F58091E800DD +:1029A000877F8093E8000E94F216809167058093EC +:1029B00065030C94281F80916505813221F5809173 +:1029C000E800877F8093E8000E94F21680916805F6 +:1029D0008093DE04089580916505813AA1F4809189 +:1029E000E800877F8093E8008091E80080FFFCCFBB +:1029F0008091DE048093F1008091E8008E778093CF +:102A0000E8000C94F216089584B7877F84BF88E1AC +:102A10000FB6F89480936000109260000FBE90E0B3 +:102A200080E80FB6F89480936100909361000FBE28 +:102A30000E94951A0E9443170E94A0178091E200FD +:102A400084608093E20078940E94261A0E94971A6C +:102A50008BE593E00E94411A80916405853069F40A +:102A60000E94A825809162058823B1F30E94D62593 +:102A7000882391F30E949815EFCF0E949F1AECCF04 +:102A8000292F332723303105C9F064F42130310573 +:102A900081F02230310509F043C08DE690E024E555 +:102AA00035E042C021323105F1F02232310541F1E9 +:102AB00037C082E190E021EC35E036C099278130C3 +:102AC000910541F08230910541F0892B49F5E0E50F +:102AD000F5E005C0E2E2F5E002C0E8EFF4E0849141 +:102AE00090E09F0121C06430D8F4E62FF0E0EE0FB3 +:102AF000FF1FE250FC4F2081318189E090E014C03B +:102B0000643070F470E0FB01EE0FFF1FEA50FC4FE1 +:102B100020813181FB01EE50FC4F808190E004C0A8 +:102B200080E090E020E030E0FA01318320830895D6 +:102B300080E189BD82E189BD09B400FEFDCF8091AD +:102B4000D8008F7D8093D8008091E00082608093D0 +:102B5000E0008091E00081FDFCCF0895CF92DF92EC +:102B6000EF92FF920F931F93CF93DF93EC018B01B2 +:102B70006A010E941117811133C0C114D10439F0C8 +:102B8000F60180819181081B190BC80FD91FE12C18 +:102B9000F12C0115110519F18091E80085FD16C091 +:102BA0008091E8008E778093E800C114D10449F049 +:102BB000F60180819181E80EF91EF182E08285E0C4 +:102BC0000FC00E941117882321F30AC089918093B6 +:102BD000F10001501109FFEFEF1AFF0ADACF80E090 +:102BE000DF91CF911F910F91FF90EF90DF90CF90E9 +:102BF000089520916B0530916C052617370748F032 +:102C00006115710539F42091E8002E772093E800D2 +:102C100001C0B90140E061157105A9F12091640579 +:102C2000222309F443C0253009F442C02091E80072 +:102C300023FD40C02091E80022FD32C02091E80031 +:102C400020FFE9CF4091F3002091F20030E0342BD7 +:102C5000FC01CF016115710559F02830310540F4B0 +:102C600081918093F100615071092F5F3F4FF1CF47 +:102C700041E02830310509F040E02091E8002E774E +:102C80002093E800C8CF4111C9CF0AC080916405E4 +:102C9000882361F0853061F08091E80083FD0AC0EF +:102CA0008091E80082FFF2CF80E0089582E00895ED +:102CB00083E0089581E0089520916B0530916C05C3 +:102CC0002617370748F06115710539F42091E8009F +:102CD0002E772093E80001C0B901FC0120E06115C6 +:102CE000710591F180916405882309F440C0853015 +:102CF00009F43FC08091E80083FD3DC08091E80069 +:102D000082FD2FC08091E80080FFE9CF2091F30081 +:102D10008091F20090E0922B6115710559F0883096 +:102D2000910540F424912093F1003196615071098E +:102D30000196F2CF21E0089709F020E08091E800A9 +:102D40008E778093E800CBCF2111CCCF0AC0809141 +:102D50006405882361F0853061F08091E80083FD8F +:102D60000AC08091E80082FFF2CF80E0089582E0FF +:102D7000089583E0089581E00895982F973058F5DD +:102D80009093E900981739F07091EC002091ED00D4 +:102D90005091F00003C0242F762F50E021FF19C07E +:102DA0003091EB003E7F3093EB003091ED003D7FA2 +:102DB0003093ED003091EB0031603093EB00709375 +:102DC000EC002093ED005093F0002091EE0027FFDF +:102DD00007C09F5FD3CF8F708093E90081E0089593 +:102DE00080E008958091650587FF11C08091E8001B +:102DF00082FD05C0809164058111F8CF11C08091DA +:102E0000E8008B770BC080916405882349F080919E +:102E1000E80080FFF8CF8091E8008E778093E8008B +:102E200008952091E4003091E50095E64091EC0092 +:102E3000842F817040FF22C08091E80080FD1CC07B +:102E400080916405882391F0853091F08091EB00AA +:102E500085FD10C04091E4005091E50042175307F2 +:102E600029F39A01915011F784E0089582E00895C2 +:102E700083E0089581E0089580E008954091E8009E +:102E800042FFDECF08950E94B1170E94B917E0EE0D +:102E9000F0E0808181608083E8EDF0E080818F77D1 +:102EA000808319BCA7EDB0E08C918E7F8C938081DC +:102EB0008F7E80831092630508950F931F93CF93A5 +:102EC000DF930E94B1170E94B917C8EDD0E0888146 +:102ED0008F77888388818068888388818F7D8883C5 +:102EE00019BC109264051092600510926205109250 +:102EF000610500EE10E0F80180818B7F808388817E +:102F00008160888342E060E080E00E94BD16E1EECF +:102F1000F0E080818E7F8083E2EEF0E0808181604E +:102F20008083808188608083F80180818E7F8083A8 +:102F3000888180618883DF91CF911F910F910895DF +:102F4000E8EDF0E080818F7E8083E7EDF0E0808126 +:102F50008160808384E082BF81E0809363050C946C +:102F60005D17E8EDF0E080818E7F80831092E200B3 +:102F700008951092DA001092E10008951F920F92C6 +:102F80000FB60F9211242F933F934F935F936F933C +:102F90007F938F939F93AF93BF93EF93FF93809112 +:102FA000E10082FF0BC08091E20082FF07C08091A8 +:102FB000E1008B7F8093E1000E94251A8091DA0066 +:102FC00080FF1FC08091D80080FF1BC08091DA0075 +:102FD0008E7F8093DA008091D90080FF0DC080E160 +:102FE00089BD82E189BD09B400FEFDCF81E08093F7 +:102FF00064050E94291405C019BC109264050E9442 +:1030000037148091E10080FF19C08091E20080FFB9 +:1030100015C08091E2008E7F8093E2008091E200F3 +:1030200080618093E2008091D80080628093D80014 +:1030300019BC85E0809364050E943B148091E100F7 +:1030400084FF30C08091E20084FF2CC080E189BD04 +:1030500082E189BD09B400FEFDCF8091D8008F7D4B +:103060008093D8008091E1008F7E8093E100809171 +:10307000E2008F7E8093E2008091E2008160809385 +:10308000E20080916005882311F084E007C0809100 +:10309000E30087FD02C081E001C083E08093640506 +:1030A0000E943C148091E10083FF29C08091E200DE +:1030B00083FF25C08091E100877F8093E10082E05B +:1030C00080936405109260058091E1008E7F80936B +:1030D000E1008091E2008E7F8093E2008091E20027 +:1030E00080618093E20042E060E080E00E94BD16D3 +:1030F0008091F00088608093F0000E943A14FF9164 +:10310000EF91BF91AF919F918F917F916F915F915F +:103110004F913F912F910F900FBE0F901F901895D8 +:103120001F920F920FB60F9211242F933F934F933C +:103130005F936F937F938F939F93AF93BF93CF933F +:10314000DF93EF93FF93C091E900CF708091EC0083 +:10315000D82FD17080FDD0E81092E9008091F00066 +:10316000877F8093F00078940E94D4181092E90031 +:103170008091F00088608093F000CD2BCF70C093D9 +:10318000E900FF91EF91DF91CF91BF91AF919F91B6 +:103190008F917F916F915F914F913F912F910F9000 +:1031A0000FBE0F901F9018951F93CF93DF93CDB74D +:1031B000DEB7AA970FB6F894DEBF0FBECDBFE5E627 +:1031C000F5E088E08E0F9091F10091938E13FBCF84 +:1031D0000E9452148091E80083FF1FC18091650511 +:1031E00090916605492F50E04A30510508F015C10D +:1031F000FA01E559FF4F0C944731803881F082384D +:1032000009F00BC1809169058F708093E90080916E +:10321000EB0085FB882780F91092E90006C08091B9 +:10322000610590916205911182609091E800977F0D +:103230009093E8008093F1001092F100C8C0282F0D +:103240002D7F09F0EAC0882319F0823061F0E5C0D3 +:1032500080916705813009F0E0C0933009F080E08B +:10326000809362052BC080916705811127C08091F2 +:1032700069058F7009F4D1C08093E9002091EB00BB +:1032800020FF1CC0933021F48091EB00806214C0B9 +:103290009091EB0090619093EB0021E030E0A90168 +:1032A00002C0440F551F8A95E2F74093EA0010923E +:1032B000EA008091EB0088608093EB001092E900B7 +:1032C0008091E800877F86C08111A7C010916705B3 +:1032D0001F778091E3008078812B8093E3008091B9 +:1032E000E800877F8093E8000E94F2168091E80052 +:1032F00080FFFCCF8091E30080688093E300111190 +:1033000002C082E001C083E08093640586C08058DB +:10331000823008F082C080916705909168058C3DED +:1033200053E0950779F583E08A838AE289834FB772 +:10333000F894DE01139620E03EE051E2E32FF0E046 +:1033400050935700E49120FF03C0E295EF703F5F78 +:10335000EF708E2F90E0EA3010F0C79601C0C09653 +:103360008D939D932F5F243149F74FBF8091E800E3 +:10337000877F8093E8006AE270E0CE0101960E94A8 +:10338000F91514C0AE014F5F5F4F609169050E944F +:103390004015BC01009709F440C09091E800977F68 +:1033A0009093E80089819A810E945C168091E800E0 +:1033B0008B778093E80031C0803879F58091E80000 +:1033C000877F8093E800809160058093F100809171 +:1033D000E8008E778093E8000E94F2161EC08111EB +:1033E0001CC0909167059230C0F48091E800877FFF +:1033F0008093E800909360050E94F216809160052A +:10340000811106C08091E30087FD02C081E001C008 +:1034100084E0809364050E943E148091E80083FF5D +:103420000AC08091E800877F8093E8008091EB00DC +:1034300080628093EB00AA960FB6F894DEBF0FBEB1 +:10344000CDBFDF91CF911F9108950895CF938091C3 +:1034500064058823A1F0C091E900CF709091EC0041 +:10346000892F817090FD80E8C82B1092E90080912F +:10347000E80083FD0E94D418CF70C093E900CF917B +:1034800008959093E4048093E3040895E091E304A5 +:10349000F091E404309721F00190F081E02D09943F +:1034A00080E00895E091E304F091E404309721F086 +:1034B0000280F381E02D09940895E091E304F091F6 +:1034C000E404309721F00480F581E02D09940895FB +:1034D0002091E1043091E2048217930771F09093F8 +:1034E000E2048093E104E091E304F091E404309776 +:1034F00021F00680F781E02D099408952091DF04E2 +:103500003091E0048217930771F09093E004809368 +:10351000DF04E091E304F091E404309721F00084AB +:10352000F185E02D0994089508950C94941A0E9451 +:103530001B260E94B30B0E94E5260C94B62C5F92CA +:103540006F927F928F929F92AF92BF92CF92DF92B3 +:10355000EF92FF920F931F93CF93DF9300D000D091 +:103560001F92CDB7DEB70E94F80B9EEEC92E94E0F5 +:10357000D92E03E010E0AA24A394B12C502E802F62 +:103580000E94730C4C01F601729062906F016826E4 +:10359000792661147104A1F40150110978F78FEFB5 +:1035A00089838A831B820E9424268160782F9D83D1 +:1035B0008C8349815A816B818D810E944F1B38C059 +:1035C0008091430581FD0E947C0C2BE030E0750169 +:1035D000022E02C0EE0CFF1C0A94E2F7C7018621FE +:1035E0009721892B09F129835A828E209F2091E00F +:1035F000892809F490E09B830E9424268160782F1B +:103600009D838C8349815A816B818D810E944F1BE0 +:10361000000F111FF801EA51FB4F80819181E826CC +:10362000F926F182E08204C02150310980F6B4CF3E +:103630000E94E8291091E5040E94461A1817D1F05B +:103640000E94461A8093E5040F900F900F900F9000 +:103650000F90DF91CF911F910F91FF90EF90DF902E +:10366000CF90BF90AF909F908F907F906F905F9022 +:103670000C949D0B0F900F900F900F900F90DF9177 +:10368000CF911F910F91FF90EF90DF90CF90BF905F +:10369000AF909F908F907F906F905F900895CF93A1 +:1036A000DF93CDB7DEB72B970FB6F894DEBF0FBE12 +:1036B000CDBF4F83588769877A878B87DE01119644 +:1036C00086E0FD0111928A95E9F785E0FE013796C3 +:1036D00001900D928A95E1F749815A816B817C8135 +:1036E0008D819E810E94C6212B960FB6F894DEBF75 +:1036F0000FBECDBFDF91CF910895CF93882309F4FA +:10370000C2C0C82F823859F40E94461A81FDBBC03E +:1037100089E30E94A0240E946D2589E30CC08338B0 +:1037200079F40E94461A80FDAEC083E50E94A02471 +:103730000E946D2583E50E94E224CF910C946D25B3 +:10374000843859F40E94461A82FD9DC087E40E9485 +:10375000A0240E946D2587E4EECF8CEF8C0F813A78 +:1037600048F48C2F0E941E2C81118DC08C2F0E943A +:10377000A024E3CF80E28C0F883048F4C77081E04A +:1037800001C0880FCA95EAF70E942625D6CF8BE59F +:103790008C0F833078F4C53A29F0C63A31F083E8CB +:1037A00090E005C081E890E002C082E890E0CF910F +:1037B0000C94681A88E58C0F833108F064C0C83A0D +:1037C00039F1C93A41F1CA3A49F1CB3A51F1CC3A0F +:1037D00059F1CD3A61F1C03B69F1CE3A71F1CF3A7E +:1037E00079F1C13B81F1C23B89F1C33B91F1C43B0B +:1037F00099F1C53BA1F1C63BA9F1C73BB1F1C83B6B +:10380000B9F1C93BC1F1CA3BC9F180E090E038C0D1 +:1038100082EE90E035C089EE90E032C08AEE90E012 +:103820002FC085EB90E02CC086EB90E029C087EBA1 +:1038300090E026C08CEC90E023C08DEC90E020C09E +:1038400083E891E01DC08AE891E01AC082E991E026 +:1038500017C084E991E014C081E292E011C083E2D4 +:1038600092E00EC084E292E00BC085E292E008C0D4 +:1038700086E292E005C087E292E002C08AE292E02E +:10388000CF910C947E1ACF910895882309F44BC0F0 +:10389000823859F40E94461A81FF45C089E30E948C +:1038A000A0240E946D2589E30CC0833871F40E9426 +:1038B000461A80FF38C083E50E94A0240E946D252F +:1038C00083E50E94E2240C946D25843859F40E940B +:1038D000461A82FF28C087E40E94A0240E946D251A +:1038E00087E4EFCF9CEF980F913A58F390E2980F4E +:1038F000983050F4877091E001C0990F8A95EAF7EB +:10390000892F0E942C25DFCF9BE5980F933020F460 +:1039100080E090E00C94681A885A833120F480E0AB +:1039200090E00C947E1A0895882321F00E942625A9 +:103930000C946D250895882321F00E942C250C9469 +:103940006D2508957F928F929F92AF92BF92CF92F2 +:10395000DF92EF92FF920F931F93CF93DF931F920B +:10396000CDB7DEB77C01C62E772EFC01058102950E +:103970000F70128111110E9443250E9499248823FF +:1039800079F0112369F080E28C0D883048F082E0F4 +:103990000E9482240E94992491E0D82ED92601C049 +:1039A000D12CE72DE295EF70F0E0EB58FF4F0C942F +:1039B0004731872D807F072D0F70882311F00295E6 +:1039C000007F112389F0002309F499C180E28C0D56 +:1039D000883020F4802F0E94262503C0802F0E946B +:1039E00036250E946D258BC18C2D0E94451C00231D +:1039F00009F4C3C180E28C0D883020F4802F0E942E +:103A00002C2503C0802F0E943C250E946D25B5C146 +:103A1000872D807F972D9F70803211F4892F03C0EE +:103A2000892F8295807FCC2021F0F1E0CF16A1F084 +:103A30001DC0112339F0002319F1013009F50E944E +:103A400056259BC1002319F0013009F496C18983E2 +:103A50000E945925898110C1112321F0063008F0F8 +:103A60008CC10EC0053008F088C106C1112359F081 +:103A7000002331F0F701958190FF41C19F7095833C +:103A80000E94941C7AC1002309F4F6C03EC1872D20 +:103A900086958695837090E0009719F0019761F004 +:103AA0006CC1112321F08C2D972D937002C080E002 +:103AB00090E00E94681A61C1112321F08C2D972D8E +:103AC000937002C080E090E00E947E1A56C18C2D57 +:103AD000112319F00E94F02802C00E9458290E9468 +:103AE000DD294BC1872D837009F052C0111145C1EA +:103AF0008C2D829586958770880F880F9C2D9F70DE +:103B0000892E912CA12CB12C082E04C0880C991C54 +:103B1000AA1CBB1C0A94D2F7C4FE14C00FE010E02C +:103B200020E030E0B901A80104C0440F551F661F12 +:103B3000771F8A95D2F7CB01BA0160957095809571 +:103B4000909503C060E070E0CB01272D2695269567 +:103B5000237030E02230310569F02330310589F0DF +:103B6000682979298A299B292130310571F00E9421 +:103B70000E2303C1682979298A299B290E942A23B7 +:103B8000FCC00E940E23C501B4010E94F222F5C0C0 +:103B9000112319F0872D817001C08695882309F4BF +:103BA000ECC08C2D829586958770880F880F9C2D90 +:103BB0009F70892E912CA12CB12C082E04C0880C4A +:103BC000991CAA1CBB1C0A94D2F7C4FE14C00FE0B7 +:103BD00010E020E030E0B901A80104C0440F551FF7 +:103BE000661F771F8A95D2F7CB01BA016095709551 +:103BF0008095909503C060E070E0CB01272D26955D +:103C000026952370422F50E04230510569F0433031 +:103C1000510589F0682979298A299B294130510564 +:103C200071F00E94E823A9C0682979298A299B2973 +:103C30000E940424A2C00E94E823C501B4010E948E +:103C4000CC239BC08C2D90E0FC01E05EF109E531B6 +:103C5000F10508F050C0EB57FF4F0C9447310C2D85 +:103C60000F70872D8F71112321F00E946523802F03 +:103C700007CF0E948623802F0E949B1C7EC01123A9 +:103C800041F0053008F079C0872D8F710E94AB2379 +:103C900074C0063008F071C0F7CF112339F0872DBA +:103CA0008F710E94652369C01123C9F3872D8F711D +:103CB0000E94862362C0112329F0872D8F710E94F4 +:103CC00050235BC00E94462358C0112351F0172D8A +:103CD0001F71812F0E94652363E0812F0E94792448 +:103CE0004CC081E00E948224023008F446C082E089 +:103CF0000E94822442C0112331F0002381F28C2DD6 +:103D00000E947D1B3AC0002389F28C2D0E94451C25 +:103D100034C0472D4F706C2DC7010E9465040E946E +:103D20006A222BC0111129C0472D4F7050E042303C +:103D30005105B9F04CF44115510581F04130510560 +:103D4000E1F40E94DE2C19C04330510569F0443083 +:103D5000510599F48C2D0E94302D0FC00E94C72C64 +:103D60000CC00E94FA2C09C00E940D2D06C0472DE0 +:103D70004F706C2DC7010E943E08DD20F9F00E94B3 +:103D8000752480FD1BC0F70112820E946F240E94DF +:103D90006523C7010E94ED1E0E946F240F90DF91E2 +:103DA000CF911F910F91FF90EF90DF90CF90BF9038 +:103DB000AF909F908F907F900C9486230F90DF910F +:103DC000CF911F910F91FF90EF90DF90CF90BF9018 +:103DD000AF909F908F907F9008950F931F93CF93F4 +:103DE000DF93EC01888199812B813C81232BB9F0F1 +:103DF0009F3F11F48F3F99F0CE010E943D0688232A +:103E000071F0688179818A810E946B248C010E9403 +:103E100020240E94E722B801CE010E94A21CDF915B +:103E2000CF911F910F9108950E9443250E94532521 +:103E30000E9418250E946D250E948E2A0E94DD296D +:103E400080E090E00E94681A80E090E00C947E1A76 +:103E50000E9433250C94141F0E946024292F229560 +:103E60002F7030E02C3031054CF42A3031056CF4E1 +:103E70002250310922303105A8F407C02C30310519 +:103E800069F02F30310551F00DC0803F69F018F412 +:103E9000803E40F409C0843F29F406C093FB882784 +:103EA00080F9089580E0089581E00895CF93DF932D +:103EB00000D000D01F92CDB7DEB70F900F900F90BB +:103EC0000F900F90DF91CF910895CF93DF9300D0A3 +:103ED00000D000D0CDB7DEB726960FB6F894DEBF7F +:103EE0000FBECDBFDF91CF9108951F93CF93DF9386 +:103EF000C091EE0416E08091EF04C81799F0D0E06D +:103F00001C9FF0011D9FF00D1124E051FB4F4081DB +:103F1000518162817381848195810E94651F219600 +:103F2000C770E9CFDF91CF911F910895409120058F +:103F300050912105609122057091230580912405FF +:103F4000909125050C94651F8091250582958F70B1 +:103F500009F054C080912205882309F44FC0809154 +:103F6000EE04A091EF04609120057091210540912D +:103F7000230550912405B6E08A1709F43FC090E06C +:103F800041155105C1F17F3F11F46F3FA1F1B89F79 +:103F9000F001B99FF00D1124E051FB4F2181721304 +:103FA0002AC02081621327C02281211124C02381CD +:103FB00034812417350710F421503109241B350BA7 +:103FC000283C3105C0F4209125052F7020612093F5 +:103FD000250526E0289FF001299FF00D1124EB50C4 +:103FE000FB4F80818F708061808380E295E00E942A +:103FF000ED1E0C94751F01968770BECF0895CF9269 +:10400000DF92EF92FF920F931F93CF93DF93CDB781 +:10401000DEB762970FB6F894DEBF0FBECDBF8C013E +:1040200085E0F801DE011D9601900D928A95E1F779 +:10403000D8014C9111965C91119712966C91129740 +:104040001396CD90DC901497309120057091210546 +:104050008091230590912405009709F46BC17F3F5F +:1040600019F43F3F09F466C1E0902205EE2009F4FF +:10407000C0C020912505C816D90628F0F601E81B16 +:10408000F90BCF0104C0809590958C0D9D1DFF24E8 +:10409000F394883C910578F0F12C207F09F0C6C09C +:1040A0007C2DD98AC88A89890E94561F80E295E0B2 +:1040B0000E94ED1EB1C0822F807F09F046C07513AB +:1040C00014C0341312C0611110C02F7020612093EE +:1040D00025050E94961F80E295E00E94ED1E8091CA +:1040E0002505D80115968C932EC0CD2819F15F3F78 +:1040F00011F44F3FF9F0F62E61111CC08091EE04CF +:104100002091EF0436E0821709F45AC090E0389FFE +:10411000F001399FF00D1124E051FB4F71815713CD +:1041200006C07081471303C07281711103C00196EC +:104130008770E9CFF62E662309F418C18091250512 +:10414000816080932505F12C11C1751308C03413CB +:1041500006C0611104C080912505D801C3C04D87F8 +:104160005E878D859E856A8B0E942C1F6A898823B5 +:10417000E1F16623D1F120912505822F82958F7080 +:1041800090E0029774F08091200590912105988726 +:104190008F831986DB86CA862C87CE0107960E94FC +:1041A000ED1E86E0F801A0E2B5E001900D928A953F +:1041B000E1F70E94A41F0E94961FFF24F394D6C02B +:1041C0004D875E878D859E850E946024292F2295CC +:1041D0002F7030E0223031050CF0BCC09F7009F028 +:1041E000B6C0805E883008F4C1C0C8010E94ED1ED0 +:1041F000E4CFC816D90608F453C0F601E81BF90B42 +:10420000CF01883C910508F450C0F12C7C2DD98A4F +:10421000C88A89890E94561FE0E2F5E086E0DF0146 +:104220001D928A95E9F70E94961FA0C0751314C0CD +:10423000341312C0611110C080912505F8018583E7 +:10424000C8010E94ED1E86E0E0E2F5E0DF011D926C +:104250008A95E9F7FE2C8AC04D875E878D859E85FD +:104260006A8B0E942C1F6A89882309F4BECF6623BB +:1042700009F4BBCF20912505822F82958F7090E0A5 +:1042800002970CF48ECF80912005909121059A839E +:1042900089831B82DD82CC822E83CE0101967FCF63 +:1042A000809590958C0D9D1DACCFF62E662309F45C +:1042B0009CCF75132EC034132CC02091250520FDF2 +:1042C0001FC0822F82958F70D9F0D80115962C933C +:1042D00015978F3049F08F5F982F9295907F822F9E +:1042E0008F70892B15968C93C8010E94ED1E86E075 +:1042F000F801A0E2B5E001900D928A95E1F793CF25 +:1043000086E0F801A0E2B5E001900D928A95E1F710 +:104310002DC04D875E878D859E850E942C1F811143 +:1043200040CF80912505816080932505C8010E94BA +:10433000ED1E1CC0662309F458CF4D875E878D851E +:104340009E850E942C1F882309F44FCF2ACF81110C +:1043500048CF0CC0243031050CF047CF9F7009F4D2 +:1043600040CFF8019581907F09F03BCF8F2D629669 +:104370000FB6F894DEBF0FBECDBFDF91CF911F9176 +:104380000F91FF90EF90DF90CF9008951F93CF9300 +:10439000DF93CDB7DEB72C970FB6F894DEBF0FBE14 +:1043A000CDBF4F83588769877A878B879C87CE01DB +:1043B00007960E94FF1F882369F08F8198852A85C0 +:1043C0003B85232BF1F19F3F09F063C08F3F09F03C +:1043D00060C037C086E0FE013796DE01119601907D +:1043E0000D928A95E1F76F817885EA85FB85309794 +:1043F00041F17F3F11F46F3F21F12091EF0430E054 +:10440000C9010196877099274091EE0450E0841706 +:10441000950709F447C069837A83FD83EC8396E0AE +:10442000929FD001939FB00D1124A051BB4FFE016C +:10443000319601900D929A95E1F78093EF040E94D6 +:10444000751F16E08091EE049091EF048917C1F179 +:10445000189FC001112480519B4F0E94FF1F882389 +:1044600079F1E091EE041E9FF0011124E051FB4F21 +:104470004081518162817381848195810E94651F91 +:104480008091EE0490E00196877099278093EE0466 +:10449000D9CF4F81588569857A858B859C850E9407 +:1044A000651FCFCF0E94281F1092EF041092EE04D8 +:1044B000E0E2F5E086E0DF011D928A95E9F7C1CFE1 +:1044C0002C960FB6F894DEBF0FBECDBFDF91CF9113 +:1044D0001F910895EF92FF920F931F93CF93DF9355 +:1044E0008C01009709F46CC0F12CEE24E394E801F0 +:1044F0002196F8018491843740F4843008F051C04B +:10450000813081F0823019F15BC0853709F444C0F5 +:10451000A8F19CE7980F903708F052C08F770E945F +:10452000451C41C00E5F1F4FFE01C49180E28C0FFD +:10453000883048F4C7708E2D01C0880FCA95EAF7FD +:104540000E94462514C08C2F0E947D1B2DC00E5F3B +:104550001F4FFE01C49180E28C0F883058F4C77061 +:104560008E2D01C0880FCA95EAF70E944C250E9443 +:104570006D251AC08C2F0E94451C16C00E5F1F4F60 +:10458000FE01C491CC2381F08FE99FE00197F1F700 +:1045900000C00000C150F6CF0E5F1F4FFE01F49027 +:1045A00003C00E947D1B8E018F2D882309F49FCFAD +:1045B000EFE9FFE03197F1F700C000008150F5CF3F +:1045C000DF91CF911F910F91FF90EF900895089583 +:1045D00060932A0570932B0580932C0590932D05ED +:1045E0000C94141F0F931F9300912A0510912B0513 +:1045F00020912C0530912D05DC01CB01802B912BD6 +:10460000A22BB32B80932A0590932B05A0932C0506 +:10461000B0932D051F910F910C94141F0F931F93AE +:1046200000912A0510912B0520912C0530912D0524 +:10463000DC01CB0180239123A223B32380932A059D +:1046400090932B05A0932C05B0932D051F910F91EE +:104650000C94141F0F931F9300912A0510912B05A2 +:1046600020912C0530912D05DC01CB01802791276D +:10467000A227B32780932A0590932B05A0932C059E +:10468000B0932D051F910F910C94141F10922605C5 +:104690001092270510922805109229050C94141FDA +:1046A00041E050E060E070E004C0440F551F661F19 +:1046B000771F8A95D2F7409326055093270560937C +:1046C0002805709329050C94141F41E050E060E028 +:1046D00070E004C0440F551F661F771F8A95D2F7FC +:1046E0008091260590912705A0912805B091290574 +:1046F000482B592B6A2B7B2B40932605509327057B +:1047000060932805709329050C94141F41E050E034 +:1047100060E070E004C0440F551F661F771F8A9544 +:10472000D2F74095509560957095809126059091AF +:104730002705A0912805B0912905482359236A230C +:104740007B2340932605509327056093280570939B +:1047500029050C94141F41E050E060E070E004C0B3 +:10476000440F551F661F771F8A95D2F78091260543 +:1047700090912705A0912805B09129054827592730 +:104780006A277B27409326055093270560932805C9 +:10479000709329050C94141F0F931F930091260505 +:1047A000109127052091280530912905DC01CB01C6 +:1047B000802B912BA22BB32B80932605909327055A +:1047C000A0932805B09329051F910F910C94141FF5 +:1047D0000F931F930091260510912705209128051E +:1047E00030912905DC01CB0180239123A223B3233F +:1047F0008093260590932705A0932805B09329055B +:104800001F910F910C94141F0F931F930091260575 +:10481000109127052091280530912905DC01CB0155 +:1048200080279127A227B3278093260590932705F9 +:10483000A0932805B09329051F910F910C94141F84 +:104840000895CF92DF92EF92FF920F931F93CF9331 +:10485000DF938C01C0902A05D0902B05E0902C05A9 +:10486000F0902D058091260590912705A0912805AF +:10487000B0912905C82AD92AEA2AFB2ACFE1D0E03B +:10488000D701C6010C2E04C0B695A79597958795BC +:104890000A94D2F780FF06C0B8018C2F0E94C30A89 +:1048A000019721F4219760F780E001C08C2FDF9100 +:1048B000CF911F910F91FF90EF90DF90CF900895CF +:1048C000CF93DF93EC010E942124BE010E94C30A12 +:1048D000DF91CF910895CB010E94602408958091CB +:1048E0002E05859585958595089580912E0587706F +:1048F000089598E0899F90011124262B20932E057E +:104900000C94652320912E058095822380932E059B +:10491000982F977069F430E0482F552747FD509540 +:104920002417350729F08595859585950C94862360 +:10493000089590912E05977081E009F480E0089524 +:1049400090916503992321F090916603911109C01C +:104950002091670330916803F90132969FEF40E0A0 +:104960001FC0982F9695969596959F3050F5E0919B +:104970006703F0916803E90FF11D877021E030E0D3 +:10498000A90102C0440F551F8A95E2F7CA0191811F +:10499000892B818308959F3F39F04F5F4E3041F05E +:1049A00051915813F8CF0DC05111F7CF942FF5CF77 +:1049B0009F3F39F0F901E90FF11D97FDFA958283C8 +:1049C0000895089590916503992321F090916603CD +:1049D000911109C02091670330916803F901329663 +:1049E000205F3F4F1FC0982F9695969596959F30C4 +:1049F000F0F4E0916703F0916803E90FF11D87700F +:104A000021E030E0A90102C0440F551F8A95E2F76A +:104A1000CA01809591818923818308953196E21797 +:104A2000F30729F090819813F9CF1082F7CF0895FA +:104A300081E090E0E0916703F0916803E80FF91FCF +:104A40001082019680319105A9F708959091420551 +:104A5000892B809342050895809590914205892382 +:104A60008093420508951092420508959091410562 +:104A7000892B809341050895809590914105892364 +:104A80008093410508951092410508959091400545 +:104A9000892B809340050895809590914005892346 +:104AA00080934005089510924005089580932F0546 +:104AB000089510922F0508958091670390916803DF +:104AC000FC0131969C01205F3F4F80E09191911154 +:104AD0008F5FE217F307D1F70895E0916703F09134 +:104AE0006803809142058083E0916703F091680339 +:104AF000908180914105892B8083E0916703F0913B +:104B00006803908180914005892B808380912F05D7 +:104B1000882361F0E0916703F09168039081892B0D +:104B200080830E945C25811110922F05809167037C +:104B3000909168030C94521A20E0009739F0AC0170 +:104B400041505109842395232F5FF7CF822F089579 +:104B500080916405843039F11092440520E488E1A5 +:104B600090E00FB6F894A895809360000FBE209354 +:104B7000600080E00E94C00380E00E949D0B83B72C +:104B8000817F846083BF83B7816083BF7894889579 +:104B900083B78E7F83BF88E10FB6F894809360005F +:104BA000109260000FBE08950895089580E00E945D +:104BB000C0030E94D4250E94F80B0E94D5250E94B4 +:104BC0007D0C91E0811101C090E0892F08950E9431 +:104BD000281F80E00E94C0030E94B62C0E94461A43 +:104BE0000C949D0B1F920F920FB60F9211248F936E +:104BF0009F93AF93BF9380914405811113C080911F +:104C0000450590914605A0914705B091480541960C +:104C1000A11DB11D8093450590934605A0934705BE +:104C2000B0934805BF91AF919F918F910F900FBEA8 +:104C30000F901F90189582E084BD93E095BD9AEF88 +:104C400097BD80936E0008952FB7F8948091450525 +:104C500090914605A0914705B09148052FBF089552 +:104C6000CF92DF92EF92FF920F931F932FB7F8949A +:104C70004091450550914605609147057091480562 +:104C80002FBF6A017B01EE24FF248C0120E030E07D +:104C9000C016D106E206F30610F4415051099A01FC +:104CA000281B390BC9011F910F91FF90EF90DF90E6 +:104CB000CF9008951F920F920FB60F9211248F93E9 +:104CC0009F93AF93BF938091450590914605A09126 +:104CD0004705B09148050196A11DB11D809345057A +:104CE00090934605A0934705B0934805BF91AF91B7 +:104CF0009F918F910F900FBE0F901F9018950E945B +:104D00004317F8942FEF87EA91E6215080409040B6 +:104D1000E1F700C0000087E090EBDC0180936F05B5 +:104D200090937005A0937105B09372059CE088E1A3 +:104D30000FB6F894A895809360000FBE9093600022 +:104D4000FFCFCF92DF92EF92FF920F931F93CF93FB +:104D5000DF93D82FC3E0EE24E394F12C8C2F0E9434 +:104D6000730C6C010BE010E09701002E02C0220FC3 +:104D7000331F0A94E2F72C213D21232B49F0602FA9 +:104D80007C2F80E00E943F08D81302C081E006C05B +:104D90000150110948F7C15008F780E0DF91CF9129 +:104DA0001F910F91FF90EF90DF90CF900895CF93D8 +:104DB000C82F8CE20E94A126882321F08C2FCF914E +:104DC0000C94A12680E0CF910895CF930E943628BD +:104DD000811102C00E941228C5E6C15049F00E940C +:104DE000F80B8FE39CE90197F1F700C00000F5CFC5 +:104DF00089E20E94D726811113C18AE20E94D72638 +:104E000081110E94122885E00E94D72681110E94FC +:104E10007F260E9441288093430587E00E94D72681 +:104E20008823A9F18BE10E94D726882351F0809135 +:104E3000430581FB222720F991E0922790FB81F91D +:104E40000EC08EE00E94D726882361F08091430532 +:104E500082FB222720F991E0922790FB82F9809330 +:104E6000430515C080E10E94D72690914305882311 +:104E700041F093FB222720F981E0822780FB93F900 +:104E800004C0892F809580FB90F990934305809111 +:104E900043050E9445280E94532880936D0580EEAB +:104EA0000E94D726882341F080916D05982F909518 +:104EB00090FB80F980936D0589E30E94D7268823B3 +:104EC00059F080916D0581FB222720F991E092270E +:104ED00090FB81F980936D0582EE0E94D72688238E +:104EE00059F080916D0582FB222720F991E09227ED +:104EF00090FB82F980936D0586EE0E94D726882369 +:104F000059F080916D0583FB222720F991E09227CB +:104F100090FB83F980936D0583EE0E94D72688234A +:104F200059F080916D0584FB222720F991E09227AA +:104F300090FB84F980936D0585E30E94D726882332 +:104F400059F080916D0585FB222720F991E0922789 +:104F500090FB85F980936D0581E30E94D726882315 +:104F600059F080916D0586FB222720F991E0922768 +:104F700090FB86F980936D0581E10E94D7268823F6 +:104F800059F080916D0587FB222720F991E0922747 +:104F900090FB87F980936D0580916D050E945728DD +:104FA00080916D0587FB882780F98093660387E2EF +:104FB0000E94D726C82F8EE10E94D7268111C26099 +:104FC0008FE10E94D7268111C46080E20E94D7261B +:104FD0008111C86081E20E94D7268111C06182E2FE +:104FE0000E94D7268111C06283E20E94D7268111D8 +:104FF000C06484E20E94D726882311F0C06802C0F2 +:10500000CC2329F08C2F0E944E286C2F03C00E94C5 +:105010004A28682F70E080E090E0CF910C94E8225D +:10502000CF9108956DEE7EEF80E090E00E946D31AB +:1050300060E082E090E00E945B3160E083E090E01D +:105040000E945B3160E084E090E00E945B3160E0B0 +:1050500085E090E00E945B3160E086E090E00E9495 +:105060005B316FEF87E090E00C945B3180E090E083 +:105070000E94553121E08D3E9E4F09F020E0822FA5 +:10508000089582E090E00C944D31682F82E090E02A +:105090000C945B3183E090E00C944D31682F83E0F9 +:1050A00090E00C945B3184E090E00C944D31682FDB +:1050B00084E090E00C945B3186E090E00C944D31FC +:1050C000682F86E090E00C945B3187E090E00C94D0 +:1050D0004D31682F87E090E00C945B3180914B0557 +:1050E00080FF0BC060916C0385E0689FB0011124C4 +:1050F00075956795759567952BC081FF09C060917F +:105100006C0385E0689FB00111247595679520C0F8 +:1051100082FF07C060916C0385E0689FB001112495 +:1051200017C090914C059923D1F060916B039617AD +:1051300088F720916C0385E0289F90011124929FAD +:10514000A001939F500D112470E0CA010E943331D9 +:105150006038710540F46115710539F002C065E0F1 +:1051600070E0862F08958FE7089581E0089580917B +:105170004B0580FF08C060916A0370E075956795E4 +:105180007595679521C081FF06C060916A0370E044 +:105190007595679519C082FF04C060916A0370E03D +:1051A00010C090914C059923C1F060916903961746 +:1051B000A0F780916A03899FC001112470E00E94CA +:1051C00033316038710528F46115710521F0862F9F +:1051D00008958FE7089581E0089561E070E0F4CFCD +:1051E000803F21F40E946E28819504C0813F29F4FC +:1051F0000E946E2880934F050895823F21F40E94FB +:105200006E28819504C0833F29F40E946E28809304 +:105210004E050895893F19F40E94B72805C08A3FBA +:1052200031F40E94B72881958093500508958B3FF3 +:1052300021F40E94B728819504C08C3F29F40E9474 +:10524000B728809351050895843F21F480914D053E +:10525000816017C0853F21F480914D05826011C0A7 +:10526000863F21F480914D0584600BC0873F21F477 +:1052700080914D05886005C0883F31F480914D05CF +:10528000806180934D0508958D3F21F480914B05F9 +:1052900081600BC08E3F21F480914B05826005C078 +:1052A0008F3F29F480914B05846080934B050895CE +:1052B000803F39F480914F0587FF6CC010924F05F5 +:1052C00069C0813F29F480914F051816BCF362C074 +:1052D00090914E05823F29F497FF5CC010924E05D5 +:1052E00059C0833F19F41916CCF354C0893F41F4D7 +:1052F0008091500518160CF04DC0109250054AC010 +:105300008A3F29F48091500587FF44C0F6CF8B3F38 +:1053100039F48091510587FF3DC0109251053AC084 +:105320008C3F29F4809151051816BCF333C0843F9B +:1053300021F480914D058E7F17C0853F21F4809127 +:105340004D058D7F11C0863F21F480914D058B7FE7 +:105350000BC0873F21F480914D05877F05C0883FB2 +:1053600031F480914D058F7E80934D0513C08D3FA4 +:1053700021F480914B058E7F0BC08E3F21F48091EC +:105380004B058D7F05C08F3F29F480914B058B7FA6 +:1053900080934B0580914E0581110EC080914F0581 +:1053A00081110AC080915005811106C0809151057C +:1053B000811102C010924C0508958DE495E00E9481 +:1053C0005D1A0E94242690934A058093490508950A +:1053D0001F93CF93DF938091490590914A050E94D6 +:1053E0003026AC0190914C05992321F020916D035A +:1053F00030E006C020916E038AE0289F90011124BE +:105400004217530708F486C080914E05C0914F059E +:10541000D091500510915105811107C0C11176C07E +:10542000D11174C0111172C075C09F3F19F09F5FF8 +:1054300090934C05181624F40E946E2880934E0514 +:1054400080914E0587FF05C00E946E28819580934C +:105450004E051C1624F40E946E2880934F058091FF +:105460004F0587FF05C00E946E28819580934F05E8 +:1054700060914E05662339F1C0914F05CC2319F197 +:10548000772767FD7095872F972F0E94552E23E36E +:1054900033E343E35FE30E94652F0E94222E609373 +:1054A0004E056C2F772767FD7095872F972F0E94E9 +:1054B000552E23E333E343E35FE30E94652F0E940D +:1054C000222E60934F051D1624F40E94B728809366 +:1054D00050058091500587FF05C00E94B72881952F +:1054E00080935005111624F40E94B728809351052B +:1054F0008091510587FF05C00E94B7288195809350 +:105500005105DF91CF911F910C94DD299F3F09F048 +:105510008ECF96CFDF91CF911F910895EDE4F5E006 +:1055200085E0DF011D928A95E9F710924C051092F3 +:105530004B050895833081F128F4813059F0823091 +:10554000D1F00895853009F449C0B8F1863009F4E6 +:1055500056C0089580916E03262F30E0280F311D2C +:105560002F3F310524F4680F60936E0308958FEF89 +:1055700080936E03089580916D03262F30E0280FED +:10558000311D2F3F310524F4680F60936D0308959A +:105590008FEF80936D03089580916C03262F30E088 +:1055A000280F311D2F3F310524F4680F60936C03E1 +:1055B00008958FEF80936C03089580916B03262FDD +:1055C00030E0280F311D2F3F310524F4680F609320 +:1055D0006B0308958FEF80936B03089580916A03A6 +:1055E000262F30E0280F311D2F3F310524F4680F9E +:1055F00060936A0308958FEF80936A030895809102 +:105600006903262F30E0280F311D2F3F310524F488 +:10561000680F6093690308958FEF8093690308957D +:10562000833011F128F4813049F0823091F00895EF +:10563000853081F120F18630C1F1089580916E03AB +:10564000681720F4861B80936E03089510926E03F2 +:10565000089580916D03681720F4861B80936D0375 +:10566000089510926D03089580916C03681720F4DB +:10567000861B80936C03089510926C0308958091AB +:105680006B03681720F4861B80936B0308951092B8 +:105690006B03089580916A03681720F4861B80933A +:1056A0006A03089510926A03089580916903681748 +:1056B00020F4861B8093690308951092690308956E +:1056C0000F931F938B3109F470C0A0F58E3009F44D +:1056D0007FC0C0F4873009F456C068F4863009F002 +:1056E000A5C080914305817F8E7F8093430581E033 +:1056F000809353059CC0883009F491C08B3009F425 +:105700008EC094C0813109F46DC068F4803109F015 +:105710008DC08091430583FB222720F991E09227D9 +:1057200090FB83F94BC0863109F479C0893109F4C3 +:1057300076C07CC0853309F474C068F4873209F4FC +:1057400070C028F48E3108F471C08D5155C0893273 +:1057500009F467C06BC0833438F48A3308F04BC057 +:10576000883309F45CC062C0833409F45AC08834B9 +:1057700009F05CC00E94281F0E94AD0C0E94940595 +:105780000E947F264CC090914305892F809581709F +:1057900080FB90F929F0966098609093430547C08C +:1057A000997F977F909343053AC08091430581FB91 +:1057B000222720F991E0922790FB81F980934305FD +:1057C000992369F18091430581608093430527C047 +:1057D0008091430582FB222720F991E0922790FBDC +:1057E00082F9ECCF0E94281F9091660381E08927FF +:1057F0008093660314C0895341E050E060E070E09C +:105800008A019B0104C0000F111F221F331F8A95BC +:10581000D2F7C901B8010E94E8220E94281F81E046 +:1058200006C061E070E080E090E0F5CF80E01F917D +:105830000F91089580E0089580E00895CF93C82FD8 +:1058400080915305813069F018F08230C9F184C02D +:10585000E0916703F09168038081823209F07EC095 +:1058600007C0E0916703F09168038081823261F4A0 +:105870008C2F0E941A2C811104C08C2F0E94602B47 +:105880001DC081E090E01AC08C2F0E941C2C811159 +:1058900014C0C43179F048F4CB3079F0C03109F04C +:1058A00061C082E08093530508C0C93219F0C83343 +:1058B00021F058C01092530555C081E0817054C04A +:1058C000C93291F120F5C43179F1B0F4C73009F053 +:1058D00047C08EE180936E0382E380936D038AE07C +:1058E00080936C0384E180936B0388E080936A0368 +:1058F00088E28093690334C0CE51C63088F5EC2F1E +:10590000F0E0EA5FFB4F80818093520529C0CE34DE +:10591000E9F020F4CB3421F56AE013C0C13579F009 +:10592000C235F1F461E00DC080915205882319F071 +:105930001092520515C081E08093530515C061E0B7 +:1059400006C0809152050E949A2A0AC06AE080919E +:1059500052050E94102B04C01092530580E004C031 +:1059600081E002C080E0AACFCF9108950E9436283E +:10597000811102C00E9412280E945C2880936E054B +:1059800080FF02C0869501C080E00C94C003809126 +:105990006E05982F9695292F30E0233031054CF471 +:1059A0009F5F990F8170892B816080936E050E94A3 +:1059B000602880916E0586950C94C00380916E05D9 +:1059C000982F969591F09158990F8170892B80931B +:1059D0006E058E7F91E009F490E080916E0590FB5A +:1059E00080F980936E050E94602880916E058695EF +:1059F0000C94C00380916E05982F909590FB80F9D0 +:105A000080936E050E94602880916E0580FF02C021 +:105A1000869501C080E00C94C00390916E05892F9B +:105A200086958F5F8F779170843028F4880F892B4B +:105A300080936E0502C090936E0580916E058E7FF7 +:105A400091E009F490E080916E0590FB80F98093DD +:105A50006E050E94602880916E0586950C94C003A7 +:105A600020916E05922F96958927982F990F822F56 +:105A70008170892B80936E058E7F91E009F490E010 +:105A800080916E0590FB80F980936E050E946028DE +:105A900080916E0586950C94C00380916E05869565 +:105AA00008955058BB27AA270ED0D1C1C2D130F0DB +:105AB000C7D120F031F49F3F11F41EF4B7C10EF4AA +:105AC000E095E7FB9FC1E92FD3D180F3BA176207B6 +:105AD00073078407950718F071F49EF5EBC10EF477 +:105AE000E0950B2EBA2FA02D0B01B90190010C01EE +:105AF000CA01A0011124FF27591B99F0593F50F406 +:105B0000503E68F11A16F040A22F232F342F44275D +:105B1000585FF3CF469537952795A795F040539555 +:105B2000C9F77EF41F16BA0B620B730B840BBAF025 +:105B30009150A1F0FF0FBB1F661F771F881FC2F790 +:105B40000EC0BA0F621F731F841F48F487957795A4 +:105B50006795B795F7959E3F08F0B3CF9395880F5B +:105B600008F09927EE0F97958795089527D108F4A7 +:105B700081E008950CD06BC163D140F05AD130F070 +:105B800021F45F3F19F03EC1511195C14FC170D151 +:105B900098F39923C9F35523B1F3951B550BBB27F4 +:105BA000AA2762177307840738F09F5F5F4F220FA1 +:105BB000331F441FAA1FA9F333D00E2E3AF0E0E89A +:105BC00030D091505040E695001CCAF729D0FE2FE6 +:105BD00027D0660F771F881FBB1F26173707480778 +:105BE000AB07B0E809F0BB0B802DBF01FF2793582E +:105BF0005F4F2AF09E3F510568F004C15CC15F3FD2 +:105C0000ECF3983EDCF3869577956795B795F79515 +:105C10009F5FC9F7880F911D9695879597F908950D +:105C2000E1E0660F771F881FBB1F621773078407A9 +:105C3000BA0720F0621B730B840BBA0BEE1F88F7B8 +:105C4000E095089504D06894B11135C1089518D134 +:105C500088F09F5790F0B92F9927B751A0F0D1F055 +:105C6000660F771F881F991F1AF0BA95C9F712C0DF +:105C7000B13081F01FD1B1E008951CC1672F782F9A +:105C80008827B85F39F0B93FCCF38695779567954B +:105C9000B395D9F73EF490958095709561957F4FB7 +:105CA0008F4F9F4F0895E89409C097FB3EF490955D +:105CB0008095709561957F4F8F4F9F4F9923A9F0E5 +:105CC000F92F96E9BB279395F69587957795679574 +:105CD000B795F111F8CFFAF4BB0F11F460FF1BC0B8 +:105CE0006F5F7F4F8F4F9F4F16C0882311F096E94B +:105CF00011C0772321F09EE8872F762F05C06623F9 +:105D000071F096E8862F70E060E02AF09A95660FB1 +:105D1000771F881FDAF7880F9695879597F908956A +:105D200088D018F011F08CD038F480C0C4C0E92FAE +:105D30009FD0B0F35523C9F3E7FB621773078407BD +:105D40009507A8F199F3E92FFF2788232AF03197C7 +:105D5000660F771F881FDAF7952F5527442332F0F7 +:105D600091505040220F331F441FD2F7BB27E91B2D +:105D7000F50B621B730B840BB109C1F222F4620FA5 +:105D8000731F841FB11D31972AF0660F771F881F7C +:105D9000BB1FEFCF915050405AF041F0882332F0B2 +:105DA000660F771F881F91505040C1F7939530C000 +:105DB0008695779567959F5FD9F7F8CF990F00087B +:105DC000550FAA0BE0E8FEEF16161706E807F907CD +:105DD000C0F012161306E407F50798F0621B730B68 +:105DE000840B950B39F40A2661F0232B242B252BE9 +:105DF00021F408950A2609F4A140A6958FEF811D8C +:105E0000811D089597F99F6780E870E060E008952C +:105E10009F3F31F0915020F4879577956795B7951E +:105E2000880F911D9695879597F908959FEF80ECBF +:105E3000089500240A9416161706180609060895F0 +:105E400000240A9412161306140605060895092E56 +:105E50000394000C11F4882352F0BB0F40F4BF2BC5 +:105E600011F460FF04C06F5F7F4F8F4F9F4F089505 +:105E700057FD9058440F551F59F05F3F71F04795FB +:105E8000880F97FB991F61F09F3F79F087950895E0 +:105E9000121613061406551FF2CF4695F1DF08C0FF +:105EA000161617061806991FF1CF8695710561051C +:105EB00008940895E894BB2766277727CB0197F9C4 +:105EC00008957CDF08F48FEF08950BD0C0CFB1DFC9 +:105ED00028F0B6DF18F0952309F094CFA7CF11244E +:105EE000EACFC6DFA0F3959FD1F3950F50E0551F81 +:105EF000629FF001729FBB27F00DB11D639FAA271F +:105F0000F00DB11DAA1F649F6627B00DA11D661F6D +:105F1000829F2227B00DA11D621F739FB00DA11D8E +:105F2000621F839FA00D611D221F749F3327A00D48 +:105F3000611D231F849F600D211D822F762F6A2FE4 +:105F400011249F5750408AF0E1F088234AF0EE0F69 +:105F5000FF1FBB1F661F771F881F91505040A9F776 +:105F60009E3F510570F04ECFA6CF5F3FECF3983EB9 +:105F7000DCF3869577956795B795F795E7959F5FDD +:105F8000C1F7FE2B880F911D9695879597F9089577 +:105F9000FA01EE0FFF1F30962105310599F16115C9 +:105FA000710561F48038BFE39B0749F1689490382C +:105FB000810561F08038BFEF9B0741F0992342F5DE +:105FC000FF3FE1053105210511F1E8940894E795BB +:105FD000D901AA2329F4AB2FBE2FF85FD0F310C04C +:105FE000FF5F70F4A695E0F7F73950F019F0FF3A2B +:105FF00038F49F779F930CD00F9007FC905808952A +:106000003EF014CF60E070E080E89FE308954FE732 +:106010009F775F934F933F932F939ED02F913F9104 +:106020004F915F9152DF05C019F40EF0EBCE42CFD5 +:10603000FDCE26DFC8F39638C0F707F80F92E89434 +:106040002BE33AEA48EB5FE74EDF0F920F920F9295 +:106050004DB75EB70F92C0D0E4E3F1E016D04F9198 +:106060005F91EF91FF91E595EE1FFF1F49F0FE57FD +:10607000E0684427EE0F441FFA95E1F74195550B70 +:1060800032D00F9007FE26C00895DF93CF931F9361 +:106090000F93FF92EF92DF927B018C01689405C011 +:1060A000DA2EEF011EDFFE01E894A59125913591CE +:1060B00045915591AEF3EF0106DDFE019701A80170 +:1060C000DA9479F7DF90EF90FF900F911F91CF91C5 +:1060D000DF9108959B01AC0160E070E080E89FE3F0 +:1060E00049CD90CE95CECCDEE8F39923D9F3940F29 +:1060F000511DBBF39150504094F059F0882332F079 +:10610000660F771F881F91505040C1F79E3F510581 +:1061100044F7880F911D9695879597F908955F3FED +:10612000ACF0983E9CF0BB27869577956795B79520 +:1061300008F4B1609395C1F7BB0F58F711F460FFF5 +:10614000E8CF6F5F7F4F8F4F9F4FE3CFB4CE0EF0FE +:106150005FCE6CCE689456CE93DEC8F39923D1F30C +:10616000C6F3DF93CF931F930F93FF92C92FDD27C1 +:1061700088232AF02197660F771F881FDAF720E01F +:1061800030E040E85FEB9FE3883920F0803E30F05C +:1061900021968F7787DCECE5F1E003C083DCE9E84A +:1061A000F1E073DF8B01BE01EC01FB2E6F5771092B +:1061B0007595771F880B990B78DD28E132E741E36D +:1061C0005FE38FDEAF2D9801AE01FF900F911F911D +:1061D000CF91DF9178DC3BCEFA01DC01AA0FBB1F27 +:1061E0009B01AC01BF5728F422273327442750785E +:1061F0001FC0B75188F4AB2F0024469537952795DB +:10620000011CA395D2F3002069F0220F331F441F15 +:10621000B395DAF30DD045CC61307105A0E88A075B +:10622000B94630F49B01AC01662777278827907820 +:10623000309621F020833183428353830895AA1B33 +:10624000BB1B51E107C0AA1FBB1FA617B70710F061 +:10625000A61BB70B881F991F5A95A9F78095909593 +:10626000BC01CD01089597FB072E16F4009407D0CA +:1062700077FD09D00E941F3107FC05D03EF49095B0 +:1062800081959F4F0895709561957F4F0895EE0F0A +:10629000FF1F0590F491E02D0994F999FECF92BD6E +:1062A00081BDF89A992780B50895A8E1B0E042E051 +:1062B00050E00C947531262FF999FECF92BD81BD27 +:1062C000F89A019700B4021639F01FBA20BD0FB634 +:1062D000F894FA9AF99A0FBE08950196272F0E9412 +:1062E0005C310C945B31DC01CB01FC01F999FECFF0 +:1062F00006C0F2BDE1BDF89A319600B40D9241504E +:0A6300005040B8F70895F894FFCF5D +:10630A0000005C440000004148F17644000000416E +:10631A005C978A44000000411FD592440000004166 +:10632A0052D0A444000000415CFFB8440000004180 +:10633A000AA7CF44000000410000DC4400000041ED +:10634A00A4D0A443000000417BD492430000004142 +:10635A007BD4924300000041A4D0A4430000004132 +:10636A00A4D02444000000411FD51244000000417B +:10637A001FD5124400000041A4D02444000000416B +:10638A00A4F076430000004100005C430000004195 +:10639A0000005C4300000041A4F076430000004185 +:1063AA00A4D082430000C0417BD492430000004144 +:1063BA00A4D0A4430000C041A4D0824300000041FD +:1063CA00A4D0A44300008041A4D0824300008041AD +:1063DA00A4D0A443000080411FD51244000080418C +:1063EA00A4D024440000804100D00244000080412F +:1063FA00A4D08243000080410000C44300008041D1 +:10640A000AA7CF44000000410000DC44000000411C +:10641A00000000000000804052D0244500004041A6 +:10642A0000000000000080400AA74F4500004041DC +:10643A000AA7CF44000000410000DC4400000041EC +:10644A00000000000000804052D0244500000041B6 +:10645A0000000000000080405CFF38450000004159 +:10646A00000000000000804052D024450000004196 +:10647A000AA7CF44000000410000DC4400000041AC +:10648A00000000000000804052D0244500008041F6 +:10649A00A4F0F6430000C0417BD4924300000041BF +:1064AA0048F176440000804100005C44000000424C +:1064BA005CFF434400008041A4F0F6430000C04161 +:1064CA001FD51244000000415CFF43440000804194 +:1064DA005CFF384400000042A4D0A443000080417D +:1064EA00A4D0A44300008041719DAE4300008041C6 +:1064FA000000C443000080410000C4430000804102 +:10650A00719DAE4300008041A4D0A44300008041A5 +:10651A007BD4924300008041A4D082430000804192 +:10652A00A4D08243000080417BD492430000804182 +:10653A00A4D0A44300008041A4D0A4430000C041D9 +:10654A007BD49243000000417BD492430000004276 +:10655A00640007000CFF0000003F644A13D813B51B +:10656A001381134D13010130052808140A321E0045 +:10657A0002040507090B0C0E1011131517181A1C23 +:10658A001D1F2123242628292B2D2F30323435375D +:10659A00393B1F0F03764F5F6F7F4969437909596A +:1065AA0053633149803F5D8B803FF8BF803FCAE12A +:1065BA00803F73ED803FCAE1803FF8BF803F5D8B2B +:1065CA00803F3149803F0000803FF16D7F3F75EA8F +:1065DA007E3F4C827E3F833F7E3F84287E3F833FBF +:1065EA007E3F4C827E3F75EA7E3FF16D7F3F000021 +:1065FA00803F3F4D36398F0642060C06D3056605A5 +:10660A007F059805B105010203040506070809007C +:00000001FF diff --git a/keyboard/planck/keymaps/tak3over/compiled.hex b/keyboard/planck/keymaps/tak3over/compiled.hex new file mode 100644 index 0000000000..0eec0b65c7 --- /dev/null +++ b/keyboard/planck/keymaps/tak3over/compiled.hex @@ -0,0 +1,1456 @@ +:100000000C94C1020C9405030C9405030C94050395 +:100010000C9405030C9405030C9405030C94050340 +:100020000C9405030C9405030C94B2140C948415E1 +:100030000C94E6220C9405030C9405030C94050320 +:100040000C9405030C9467030C9405030C940503AE +:100050000C9405030C944E230C9405030C94050397 +:100060000C9405030C9405030C9405030C940503F0 +:100070000C9405030C9405030C9405030C940503E0 +:100080000C94270B0C9405030C9405030C940503A6 +:100090000C9405030C9405030C9405030C940503C0 +:1000A0000C9405030C9405030C940503F115131629 +:1000B00001171316011758167B160117D016E316F1 +:1000C000CD19CD19FC19FC193B1A5B1AB11BB11BD8 +:1000D000661AB11B161B161B7D1B861BB11BAB1BA7 +:1000E000231B231B231B231B231B231B231B231B20 +:1000F000231B231B231B231B231B231B231B231B10 +:10010000331B411B481B4F1B591B07634236B79BD0 +:10011000D8A71A39685618AEBAAB558C1D3CB7CC67 +:100120005763BD6DEDFD753EF6177231BF000000DF +:10013000803F08000000BE922449123EABAAAA2AC2 +:10014000BECDCCCC4C3E00000080BEABAAAAAA3EDD +:1001500000000000BF000000803F00000000000819 +:100160004178D3BB4387D1133D190E3CC3BD4282B6 +:10017000AD2B3E68EC8276BED98FE1A93E4C80EF74 +:10018000FFBE01C4FF7F3F00000000000000000030 +:1001900000000000000000010204060A0F17202CD6 +:1001A0003A4A5D71879DB3C7DAE9F5FCFFFCF5E9D2 +:1001B000DAC7B39D87715D4A3A2C20170F0A0604EF +:1001C0000201000000000000000000002B001400ED +:1001D0001A000800150017001C0018000C0012007F +:1001E00013002A00290004001600070009000A0075 +:1001F0000B000D000E000F0033003400E1001D0065 +:100200001B00060019000500110010003600370021 +:1002100038002800E000E200E300045202522C0003 +:100220002C0003525000510052004F002B001400CC +:100230001A00090013000A000D000F0018001C002E +:1002400033002A00290004001500160017000700DB +:100250000B00110008000C0012003400E1001D002A +:100260001B000600190005000E00100036003700C4 +:1002700038002800E000E200E300045202522C00A3 +:100280002C0003525000510052004F0035021E0254 +:100290001F0220022102220223022402250226023A +:1002A00027022A000100005049004A004B00015378 +:1002B00050002D002E002F003000310001000030D2 +:1002C0004C004D004E0000534C002D022E022F0218 +:1002D00030020100010001000100010001000100E5 +:1002E00001000100010001000100010035001E00B5 +:1002F0001F002000210022002300240025002600EA +:1003000027002A0001003A003B003C003D003E006F +:100310003F002D002E002F00300031020100400070 +:10032000410042004300440045002D022E022F02EE +:100330003002010001000100010001000100010084 +:1003400001000100010001000100010035001E0054 +:100350001F00200021002200230024002500260089 +:1003600027002A000100E7001B00060019001D00FD +:100370005000510052004F004C0031000100E400D9 +:100380001B00060019001D00AB00A800AA00A90070 +:10039000AE000100010001000100010001000100A8 +:1003A00001000100010001000100010028035400C8 +:1003B00068006500200050006C0061006E00630062 +:1003C0006B0020004B006500790062006F00610047 +:1003D0007200640000002C034F007200740068007B +:1003E0006F006C0069006E00650061007200200003 +:1003F0004B006500790062006F00610072006400CC +:10040000730000000403090409026D00040100A048 +:10041000FA09040000010301010009211101000192 +:10042000223F000705810308000A090401000103B7 +:10043000010200092111010001224D00070582037C +:1004400008000A090402000103000000092111014B +:1004500000012236000705830308000A090403008F +:1004600001030000000921110100012239000705E4 +:1004700084031000011201100100000008EDFE606D +:100480006001000102000105010906A1010507192B +:10049000E029E71500250195087501810205081975 +:1004A00001290595057501910295017503910105D5 +:1004B000071900297715002501957875018102C07B +:1004C00005010980A101850216010026B7001A0165 +:1004D000002AB700751095018100C0050C0901A123 +:1004E000018503160100269C021A01002A9C027550 +:1004F0001095018100C005010902A1010901A100B7 +:1005000005091901290515002501950575018102C7 +:100510009501750381010501093009311581257F98 +:1005200095027508810609381581257F95017508A2 +:100530008106050C0A38021581257F950175088111 +:1005400006C0C005010906A101050719E029E71544 +:100550000025019508750181029501750881010545 +:1005600008190129059505750191029501750391F9 +:10057000010507190029FF150025FF95067508815B +:1005800000C011241FBECFEFDAE0DEBFCDBF04B63E +:1005900003FE24C080911E0390911F03A0912003AD +:1005A000B09121038730904BA740B04BB9F4109223 +:1005B0001E0310921F03109220031092210314BEF9 +:1005C00084B7877F84BF88E10FB6F894809360007A +:1005D000109260000FBEE0E0F8E3099511E0A0E0A2 +:1005E000B1E0E6E2FAE502C005900D92A03CB10749 +:1005F000D9F713E0A0ECB1E001C01D92AE31B10714 +:10060000E1F70E94F8110C94112D0C94000008954C +:10061000089581E0089508950C9408030C9409034B +:100620000C940B030E94DB2823E030E0281B3109E7 +:10063000220F2093C4010895282F2F9880918000C5 +:10064000211108C0877F8093800010928D00109246 +:100650008C001BC0886080938000233019F48FEFDA +:100660009FEF0FC083E090E0821B9109880F991FD4 +:100670002FEF3FEFA90102C0569547958A95E2F703 +:10068000CA0190938D0080938C000C9412030E94F9 +:10069000120384E08093C3011092C0010895279A49 +:1006A0002F988FEF9FEF90938700809386008AE0CA +:1006B0008093800089E1809381000E9444280C94FB +:1006C00047030E944F036E9A769A0C9407031F9279 +:1006D0000F920FB60F9211242F933F938F939F93F6 +:1006E000EF93FF93E091C101F091C201CF01019618 +:1006F0009093C2018093C1010090C30102C0F6959E +:10070000E7950A94E2F7EF738091C001823019F403 +:10071000E03251F404C0813039F4EF3329F4809190 +:100720006F008D7F80936F00F0E0E457FE4FE491FF +:1007300021E031E0E29FC001E39F900D1124009081 +:10074000C40102C0969587950A94E2F790938D00B4 +:1007500080938C00FF91EF919F918F913F912F910A +:100760000F900FBE0F901F90189561110DC0FC01E6 +:100770008281882331F085EE0E9471180E949B28A7 +:1007800003C085EE0E94391980E090E0089581E071 +:1007900008950C94C70308950C9461038091150289 +:1007A000882309F448C08091D1019091D20100972B +:1007B00079F40E9418239093D2018093D101809103 +:1007C000D30190E0009771F48091D40190E00AC0C9 +:1007D0000E9424232091000130910101281739073C +:1007E00040F329C00197880F991F880F991FFC01BA +:1007F000EB52FE4F60817181828193810E948D0A4C +:10080000E091D30184E0E89FF0011124EB52FE4F08 +:1008100060817181828193814FE050E00E94450E9A +:100820008091D30190E001966091D40170E00E9424 +:10083000C12C8093D3010C940C03109217020C94DA +:100840005A0A0895089581E0809317020C942204B7 +:10085000089508958F929F92AF92BF92EF92FF9268 +:100860000F931F93CF93DF93CDB7DEB7A3970FB648 +:10087000F894DEBF0FBECDBF7C01FC010081118169 +:10088000C8010E941521B8010E942C068C01B701F5 +:100890000E94C903882309F4CCC10032F0E51F0788 +:1008A00041F4F7018281882309F458C00E94A90EFF +:1008B000C0C10132F0E51F0741F4F70182818823AE +:1008C00009F44CC00E94B20EB4C10232F0E51F0719 +:1008D00051F4F7018281882309F440C00E94A50EDB +:1008E0008111F0CFE3CF0332F0E51F0739F4F701B0 +:1008F0008281882399F10E9423049BC10432F0E590 +:100900001F0739F4F7018281882341F10E941D04F9 +:1009100090C10532F0E51F0749F4F7018281882371 +:10092000E9F0809117028111F1CFE5CF0632F0E5B1 +:100930001F0739F4F7018281882381F00E94B90EE4 +:100940000AC00732F0E51F0749F4F70182818823C6 +:1009500029F00E94C40E0E9429046BC180911702E5 +:10096000811105C0F70182818111CFC018C1003EFD +:10097000110579F4F7018281882309F44DC00E94A2 +:100980005A0A81E080931602109215021092D40147 +:1009900050C1023E110559F4F70182818823E1F12B +:1009A0000E945A0A109216021092150242C1033E8A +:1009B000110591F4F7018281882371F10E945A0A8E +:1009C0001092160281E0809315021092D3011092CA +:1009D000D2011092D1012DC10235110559F4F70150 +:1009E0008281882309F425C1809100019091010141 +:1009F0000A970DC00135110579F4F701828188232A +:100A000009F417C180910001909101010A96909319 +:100A10000101809300010DC14091040183E2EFE1E7 +:100A2000F1E0DE01119601900D928A95E1F7F70150 +:100A3000808121E030E02C0F3D1F280F311DC901BE +:100A40002091020130910301FC01E20FF31F60814C +:100A5000772767FD7095640F711D882777FD809556 +:100A6000982F0E94E32920E030E040E451E40E9406 +:100A700048294B015C01F701218184E090E0821B51 +:100A80009109BC01882777FD8095982F0E94E32962 +:100A90009B01AC01C501B4010E94E0289B01AC019F +:100AA00060E070E080E090E40E94562B20E030E0AF +:100AB0004CED50E40E94F32A4B015C01F701828166 +:100AC0008823D1F04FE050E0C501B4010E94450EEB +:100AD000809116028823A1F08091D40124E0829FA6 +:100AE000F0011124EB52FE4F80829182A282B382E8 +:100AF0008F5F8093D40104C0C501B4010E948D0AA8 +:100B00000F3F110508F02ECF94C08091D0018111C4 +:100B10001FC0043130E5130709F051C00E94CB0318 +:100B200081E08093D0010E9418239093CF0180939D +:100B3000CE011092C7011092C9011092C801109203 +:100B4000CB011092CA011092CD011092CC0171C05C +:100B50008091CE019091CF010E942423883C910581 +:100B600070F48091C701E82FF0E0EE0FFF1FE8530B +:100B7000FE4F118300838F5F8093C7015AC00438F2 +:100B800080E5180721F00538104501F13AC0F7015A +:100B90008281882341F01092C50182E01EC0043892 +:100BA00030E5130759F58091C501811106C086E231 +:100BB0000E94711886E20E94391982E01CC0043834 +:100BC000F0E51F0741F305381045D9F4F70182819C +:100BD000882331F01092C60180E20E94881929C052 +:100BE0008091C601811106C087E20E94711887E2D8 +:100BF0000E94391980E20E948F191BC005381045E8 +:100C000029F381E08093C5018093C601C701A396B3 +:100C10000FB6F894DEBF0FBECDBFDF91CF911F910D +:100C20000F91FF90EF90BF90AF909F908F900C949A +:100C30000E0380E0A3960FB6F894DEBF0FBECDBFC3 +:100C4000DF91CF911F910F91FF90EF90BF90AF90E8 +:100C50009F908F90089508959CE0799FF001112452 +:100C600090E3899FE00DF11D1124E60FF11DEE0FB9 +:100C7000FF1FE453FE4F859194910895880F991FAB +:100C8000FC01E45BFF4F859194910895880F991FB3 +:100C9000FC01E453FE4F8591949108950F931F93A7 +:100CA000CF93DF93EC01811521E39207A0F5C115E5 +:100CB00080E3D80708F0D7C0C83ED105D8F4C03EBD +:100CC000D10508F007C2C83AD10578F4C53AD10574 +:100CD00008F06AC0C130D10509F463C008F4F7C157 +:100CE000C430D10508F0F6C1F2C1CB3BD10508F400 +:100CF00066C0EDC1C11590E2D90708F0AFC0C115BB +:100D000021E0D20708F0E6C1C03FD10508F4DFC1F9 +:100D10008E0110651FC2C03880E5D80700F5C037C6 +:100D200090E5D90708F0A3C0C11520E5D20709F462 +:100D3000ACC050F4CE01905480319F4008F0C7C140 +:100D4000DF708E01106A06C2C13080E5D80709F451 +:100D5000AEC0C43190E5D90708F4AFC0B8C1C338FC +:100D600020E5D20709F48EC050F4C13890E5D907C8 +:100D700009F482C008F083C000E011EDEBC1C0317E +:100D800081E5D80708F4A3C1C11597E5D90708F490 +:100D900036C1CE0190578115904108F098C1DF709F +:100DA00093C101E010E0D6C1C53AD10509F494C160 +:100DB000C63AD10509F093C102E810E4CBC1C83AA4 +:100DC000D10509F48FC1C93AD10509F48EC1CA3AD7 +:100DD000D10509F48DC1CB3AD10509F48CC1CC3AC7 +:100DE000D10509F48BC1CD3AD10509F48AC1C03BC4 +:100DF000D10509F489C1CE3AD10509F488C1CF3AA9 +:100E0000D10509F487C1C13BD10509F486C1C23BB4 +:100E1000D10509F485C1C33BD10509F484C1C43BA4 +:100E2000D10509F483C1C53BD10509F482C1C63B94 +:100E3000D10509F481C1C73BD10509F480C1C83B84 +:100E4000D10509F47FC1C93BD10509F47EC1CA3B74 +:100E5000D10509F47DC100E014E47CC1CE019F708E +:100E60000E94460678C1DD278E01106C73C1CF70D9 +:100E7000DD278E01146D6EC100E010ED6BC100E046 +:100E800012ED68C100E013ED65C10E941C1C0E94B8 +:100E90005A0A0E9421048FEF94E32CE08150904085 +:100EA0002040E1F700C000000E94732353C18091ED +:100EB000F20281608093F2024DC10E94D42381111D +:100EC00002C00E94B0230E94E72390E090931D038C +:100ED00080931C03C23080E5D80721F480911C0365 +:100EE000816086C0C43090E5D90721F480911C034D +:100EF00082607EC0C63020E5D20721F480911C03B9 +:100F0000846076C0C83080E5D80719F480911C034E +:100F100027C0CA3090E5D90721F480911C03806175 +:100F200067C0CC3020E5D20721F480911C03806299 +:100F30005FC0CE3080E5D80721F480911C03806427 +:100F400057C0C03190E5D90721F480911C03806817 +:100F50004FC0C23120E5D20729F480911C03846080 +:100F6000886046C0C33080E5D80721F480911C0317 +:100F70008E7F3EC0C53090E5D90721F480911C03D7 +:100F80008D7F36C0C73020E5D20721F480911C0345 +:100F90008B7F2EC0C93080E5D80719F480911C03DF +:100FA00026C0CB3090E5D90721F480911C038F7EB9 +:100FB0001FC0CD3020E5D20721F480911C038F7D26 +:100FC00017C0CF3080E5D80721F480911C038F7BB8 +:100FD0000FC0C13190E5D90721F480911C038F77B0 +:100FE00007C0C331D04531F480911C038B7F877FCC +:100FF00080931C0380911C030E94EB23ABC08D2FB8 +:1010000099278F70992781309105D9F49E0123701B +:10101000332702C0880F991F2A95E2F79C688E013A +:1010200044E0000F111F4A95E1F700271370802B51 +:10103000912B53E0CC0FDD1F5A95E1F7C076DD27E9 +:101040002FC08230910531F4DC2FCC278E01016F47 +:10105000106A80C08330910569F4CE0183709927AE +:1010600001E010E002C0000F111F8A95E2F7C801ED +:101070009C680FC084309105B9F4CE018370992724 +:1010800001E010E002C0000F111F8A95E2F7C801CD +:101090009A6823E0CC0FDD1F2A95E1F7C07ED77058 +:1010A0008C010C2B1D2B56C08530910531F4DC2FA3 +:1010B000CC278E01046F106A4DC0069709F04AC014 +:1010C000CF71DD27DC2FCC278E01106243C000E0FA +:1010D00010E040C08E013EC001E810E43BC003E8D0 +:1010E00010E438C002EE14E435C009EE14E432C056 +:1010F0000AEE14E42FC005EB14E42CC006EB14E454 +:1011000029C007EB14E426C00CEC14E423C00DEC5A +:1011100014E420C003E815E41DC00AE815E41AC071 +:1011200002E915E417C004E915E414C001E216E46D +:1011300011C003E216E40EC004E216E40BC005E29F +:1011400016E408C006E216E405C007E216E402C091 +:101150000AE216E4C801DF91CF911F910F91089523 +:101160009CE0799FF001112490E3899FE00DF11D2F +:101170001124E60FF11DEE0FFF1FE453FE4F859182 +:101180009491803E9105E0F4803C910558F58133BF +:10119000910509F46FC048F48932910509F463C0E0 +:1011A0008A32910509F46DC072C089339105E9F066 +:1011B00082389105D1F08533910509F44DC067C09F +:1011C000833E910581F138F4803E9105B9F0823E6D +:1011D0009105D9F05CC0863E910561F1873E91058D +:1011E000A1F155C00E943E06089520911C0320FDE8 +:1011F00002C021FF4CC080EE90E049C080911C03EA +:1012000080FFF9CF89E390E042C080911C0382FF08 +:101210000EC080911C0384FF03C080E090E037C0C3 +:1012200083EE90E034C080911C0382FFF2CF82EE07 +:1012300090E02DC080911C0383FF0BC080911C03A4 +:1012400084FDEBCF87EE90E022C080911C0383FFEA +:10125000F5CF86EE90E01BC080911C0385FF07C090 +:1012600089E290E014C080911C0385FFF9CF85E3EB +:1012700090E00DC080911C0386FF07C08AE290E0D9 +:1012800006C080911C0386FFF9CF81E390E00E94A5 +:101290004E0608950C941003E82FF0E0E25BFE4F39 +:1012A0008081E82FEF70F0E082958F7021E030E0D0 +:1012B000A90102C0440F551F8A95E2F740A3089583 +:1012C0000F931F93CF93DF9385B7806885BF85B752 +:1012D000806885BFC3E0D0E001E010E0FE01E25B82 +:1012E000FE4F8081E82FEF70F0E021A182958F7092 +:1012F000A80102C0440F551F8A95E2F7CA01822B4C +:1013000081A38C2F0E944C09219740F78BE090E03D +:1013100061E070E0FC01EE5BFE4F2081E22FEF7098 +:10132000F0E042A122952F70DB0102C0AA0FBB1F83 +:101330002A95E2F79D01242B22A3019758F7DF910C +:10134000CF911F910F910C94CC03EF92FF920F93CA +:101350001F93CF93DF9300E212E0C3E0EE24E39407 +:10136000F12CD5E08C2F0E944C098BE090E040E0FE +:1013700050E0FC01EE5BFE4F6081E62FEF70F0E085 +:1013800020A130E062956F7002C0359527956A956F +:10139000E2F720FD09C09701082E02C0220F331F7B +:1013A0000A94E2F7422B532B019718F7F801929118 +:1013B00082918F018417950721F051834083D09348 +:1013C00005018C2F0E944C09C15060F680910501E7 +:1013D00087FD2CC08150809305018F3F39F08FE944 +:1013E0009FE00197F1F700C0000020C080911E022D +:1013F00090911F02909327028093260280911C02F5 +:1014000090911D02909325028093240280911A02EC +:1014100090911B02909323028093220280911802E4 +:101420009091190290932102809320020E94CE0392 +:1014300081E0DF91CF911F910F91FF90EF90089580 +:10144000E82FF0E0EE0FFF1FE05EFD4F80819181FD +:10145000089508950F931F93CF9308E212E0C0E020 +:10146000F801929182918F010E949022C80FF2E0C0 +:1014700000321F07A9F78C2FCF911F910F9108956C +:101480000E94D423811102C00E94B0230E94F9233C +:10149000809307033E9A809171008D7F8093710045 +:1014A00082E0809390008AE18093910081E08093B4 +:1014B0002A02089580912A02811102C00E94400AE6 +:1014C00010927A0210927902809171008D7F809340 +:1014D0007100809190008F738093900010923C0275 +:1014E00010923B02109273021092740210927502D5 +:1014F000109276021092720210927102E1E5F2E00F +:10150000A1E4B2E011921192119211921D921D92DA +:1015100082E0E137F807B1F70895CF92DF92EF92BA +:10152000FF920F931F93CF93DF9320913B022223CF +:1015300009F484C06B017C0180912A02811102C0F0 +:101540000E94400A01E712E0C7E0D0E0A70196013F +:10155000F80192918291729162918F010E944429C7 +:10156000811131C0FE01EE0FFF1FEE0FFF1FEF5A7A +:10157000FD4F1082118212821382DE01AA0FBB1F5F +:10158000AF5BBD4F11961C921E92C730D105E9F09A +:10159000219644815581668177814083518362839E +:1015A0007383148215821682178212968D919C91F4 +:1015B000139711969C938E9313961C921E921297DA +:1015C00034961296E2CF219708F680917902909195 +:1015D0007A02019797FD05C090937A028093790271 +:1015E00004C010927A02109279028091790290914F +:1015F0007A0220917702309178022817390724F077 +:101600001092780210927702892BC1F480917100B8 +:101610008D7F80937100809190008F7380939000F4 +:101620001092730210927402109275021092760258 +:10163000109272021092710210923B02DF91CF91D0 +:101640001F910F91FF90EF90DF90CF9008951F9220 +:101650000F920FB60F9211244F925F926F927F926A +:101660008F929F92AF92BF92CF92DF92EF92FF92B2 +:101670002F933F934F935F936F937F938F939F939A +:10168000AF93BF93CF93DF93EF93FF9380913B0290 +:10169000882309F49BC1C0917902D0917A021C166B +:1016A0001D060CF093C140902B0250902C026090CC +:1016B0002D0270902E0220E030E0A901C301B2019A +:1016C0000E94EF2A18160CF065C0C130D10509F44C +:1016D00052C08091770290917802BE010E94C12C85 +:1016E0007C01909378028093770280903D029090E5 +:1016F0003E02A0903F02B090400220E030E040E87F +:101700005FE3C501B4010E94E02860933D0270933D +:101710003E0280933F0290934002F701EE0FFF1FBD +:10172000EE0FFF1FEF5AFD4FA301920160817181FF +:10173000828193810E94482920E030E040E05EE30E +:101740000E94F32A9B01AC01C501B4010E94EF2A5B +:1017500018168CF4C7010196BE010E94C12C90930B +:1017600078028093770210923D0210923E0210920E +:101770003F0210924002E0917702F0917802EE0F62 +:10178000FF1FEE0FFF1FEF5AFD4F608171818281B5 +:101790009381D0C0C0907302D0907402E090750223 +:1017A000F090760220E030E0A901C701B6010E9466 +:1017B00044292197882309F4A2C0FE01EE0FFF1FE0 +:1017C000EE0FFF1FEF5AFD4F80809180A280B38003 +:1017D000A5019401C701B6010E94442987FF31C0C9 +:1017E000A501940160E070E08CED93EC0E94482923 +:1017F00020E030E040E451E40E94482920E030E05D +:1018000040E05FE30E94F32A9B01AC0160E070E0DE +:1018100080E090E40E94562B9B01AC01C501B4010D +:101820000E94F32A9B01AC01C701B6010E94442922 +:1018300087FF07C0A701960160E070E08CED93E49C +:1018400039C0A5019401C701B6010E94EF2A1816FC +:101850000CF055C0A501940160E070E08CED93E4BC +:101860000E94482920E030E040E451E40E944829E9 +:1018700020E030E040E05FE30E94F32A9B01AC01EE +:1018800060E070E080E090E40E94562B9B01AC0188 +:10189000C501B4010E94F32A9B01AC01C701B60146 +:1018A0000E94EF2A18165CF5A701960160E070E02F +:1018B0008CED93EC0E94482920E030E040E451E4B4 +:1018C0000E94482920E030E040E05FE30E94F32AD4 +:1018D0009B01AC0160E070E080E090E40E94562B38 +:1018E0009B01AC01C701B6010E94F32A6093730209 +:1018F00070937402809375029093760213C0FE0178 +:10190000EE0FFF1FEE0FFF1FEF5AFD4F80819181F9 +:10191000A281B3818093730290937402A0937502A5 +:10192000B093760260917302709174028091750297 +:101930009091760220912802309129022F3F4FEF9B +:10194000340731F02F5F3F4F309329022093280254 +:101950000E94CF0E6B017C0120E034E244EF51E4A1 +:101960000E94442987FF08C086EFC82E88E2D82E3F +:1019700084EFE82E81E4F82E20E030E040E051E4EE +:10198000C701B6010E94F32A9B01AC0160E074E23A +:1019900084E79BE40E9448296B017C010E94B529E1 +:1019A0007093970060939600209106013091070193 +:1019B0004091080150910901C701B6010E94F32A24 +:1019C0000E94B529709399006093980080913C0221 +:1019D000882309F433C1C0903702D0903802E090D8 +:1019E0003902F0903A0220E030E0A901C701B601C7 +:1019F0000E94EF2A1816D4F58091280290912902AE +:101A00008F3F2FEF920729F0019690932902809340 +:101A10002802C701B6010E94CF0E20E030E040E06E +:101A200051E40E94F32A9B01AC0160E074E284E778 +:101A30009BE40E9448296B017C010E94B5297093A8 +:101A40009700609396002091060130910701409124 +:101A5000080150910901C701B6010E94F32A0E94B2 +:101A6000B529709399006093980008C01092970070 +:101A70001092960010929900109298006091310295 +:101A8000709132026F5F7F4F709332026093310228 +:101A9000209196003091970080E090E0232BF1F0A8 +:101AA000C0919600D09197000E94E1296B017C01C2 +:101AB000BE0180E090E00E94E1299B01AC016091B1 +:101AC00033027091340280913502909136020E9467 +:101AD000482920E03FEF4FE757E410C00E94E1297A +:101AE0006B017C0120E030EE4FEF54E46091330253 +:101AF0007091340280913502909136020E94F32A4F +:101B00009B01AC01C701B6010E94EF2A87FD96C078 +:101B100080912F028F5F80932F0290E0209103032A +:101B20003091040382179307A0F080910E0388235D +:101B300019F010922F020DC0809171008D7F80935B +:101B40007100809190008F738093900010923C02FE +:101B50007DC080913002C0912F02811128C0C090B9 +:101B60000803D0900903E0900A03F0900B0320E0F3 +:101B700030E0A901C701B6010E94EF2A1816BCF493 +:101B800081E0809330021092370210923802109256 +:101B9000390210923A02C0923302D0923402E0929B +:101BA0003502F0923602C150C0932F0243C010920A +:101BB00030021092290210922802E0910503F09160 +:101BC000060348E0C49FE00DF11D1124808191813E +:101BD000A281B3818093370290933802A093390297 +:101BE000B0933A0220E030E040E85EE36481758122 +:101BF000868197810E94F32A6B017C0180910A0102 +:101C0000682F70E080E090E00E94E12920E030E061 +:101C100048EC52E40E9448299B01AC01C701B6017F +:101C20000E94F32A6093330270933402809335024A +:101C30009093360210923202109231028091070383 +:101C400080FD04C010923C0210923B02FF91EF9184 +:101C5000DF91CF91BF91AF919F918F917F916F91C4 +:101C60005F914F913F912F91FF90EF90DF90CF9038 +:101C7000BF90AF909F908F907F906F905F904F90AC +:101C80000F900FBE0F901F901895CF92DF92EF929A +:101C9000FF92CF93DF936B017C01EA0180912A02CE +:101CA000811102C00E94400A8091070380FF46C054 +:101CB0008091790290917A0208970CF03FC0809150 +:101CC00071008D7F8093710080913C0281110E9490 +:101CD0005A0A81E080933B02109229021092280256 +:101CE00020E030E0A901C701B6010E94EF2A1816D2 +:101CF000DCF48091790290917A02FC01EE0FFF1FD3 +:101D0000EE0FFF1FEF5AFD4FC082D182E282F382B5 +:101D1000FC01EE0FFF1FEF5BFD4FD183C0830196E7 +:101D200090937A028093790280917100826080930F +:101D3000710080919000806880939000DF91CF9136 +:101D4000FF90EF90DF90CF9008958091070381700E +:101D50000895809107038160809307030E94FD230B +:101D60000C942804809107038E7F809307030C94C2 +:101D7000FD2380917B0290E0019666E070E00E9476 +:101D8000C12C80937B02089580917B0290E00197A3 +:101D900066E070E00E94C12C80937B0208958F92D0 +:101DA0009F92AF92BF92CF92DF92EF92FF920F93EA +:101DB0001F93CF93DF936B017C01C0912802D091D8 +:101DC0002902BE0180E090E00E94E1294B015C0104 +:101DD000A701960160E070E08CE594E40E94482938 +:101DE0009B01AC01C501B4010E94F32A0E94B529F0 +:101DF00020917B02233009F473C028F4222351F090 +:101E00002130E9F02CC1243009F4A0C0253009F4B8 +:101E1000E0C025C180E090E0A0E0BFE38093060130 +:101E200090930701A0930801B093090110922B022F +:101E300010922C0210922D0210922E0210C11092BC +:101E40002B0210922C0210922D0210922E0264315D +:101E5000710540F46A30710560F520E030E040E83B +:101E60005EE32BC0693C710508F0AAC080E090E0F9 +:101E70000E94E12920E030E040EA51E40E94DF289E +:101E800020E030E044E353E40E9448299B01AC0188 +:101E90000E94F32A20E030E040E05EE30E94F32A53 +:101EA0009B01AC0160E070E080E09EE30E94DF28CF +:101EB00044C020E030E040E05FE3C701B6010E948B +:101EC000F32A6B017C0180E090E0A0E0BEE3809308 +:101ED000060190930701A0930801B0930901BFC0C8 +:101EE00010922B0210922C0210922D0210922E02B0 +:101EF0004AE0469F9001479F300D1124C90168EBCD +:101F00007BE00E94AD2CBC016C5D754077FF03C087 +:101F1000719561957109882777FD8095982F0E94AA +:101F2000E3292EE333EC4EE259E30E94F32A20E04A +:101F300030E040EC5EE30E94E0286093060170937D +:101F40000701809308019093090189C010922B0228 +:101F500010922C0210922D0210922E02CE0183704C +:101F60009927892BE1F0BE016170772780E090E02E +:101F70000E94E12920E030E040E05EE30E94F32A85 +:101F800020E030E040E45FE30E94E0286093060137 +:101F90007093070180930801909309010CC080E0C1 +:101FA00090E0A0E0BFE38093060190930701A09327 +:101FB0000801B0930901C770DD27CD2B09F04FC090 +:101FC0001092060110920701109208011092090167 +:101FD00046C010922B0210922C0210922D021092E9 +:101FE0002E0200E010E020E03FE300930601109392 +:101FF000070120930801309309016739710578F1D1 +:1020000080E090E00E94E12920E030E047E153E4E5 +:102010000E94DF2820E030E04AE754E40E9448298B +:1020200020E030E048E452E40E94F32A20E030E06F +:1020300040EA51E40E94252A0E94B029660F771FCA +:10204000660F771FFB01EE5AFE4F208131814281DE +:102050005381C701B6010E94F32A6B017C01C701BD +:10206000B601DF91CF911F910F91FF90EF90DF901C +:10207000CF90BF90AF909F908F90089580918C02E9 +:102080000895CF93DF9300D01F92CDB7DEB79C01A8 +:1020900080911303843019F593E099833B832A835D +:1020A0009093E9008FEF9091E800815095FD06C074 +:1020B00095ED9A95F1F700008111F5CF8091E80038 +:1020C00085FF0DC040E050E063E070E0CE01019676 +:1020D0000E94A2128091E8008E778093E8000F9012 +:1020E0000F900F90DF91CF910895CF93DF9300D0A1 +:1020F0001F92CDB7DEB720911303243021F522E0E3 +:1021000029839B838A8383E08093E9008FEF9091FA +:10211000E800815095FD06C095ED9A95F1F7000015 +:102120008111F5CF8091E80085FF0DC040E050E0BF +:1021300063E070E0CE0101960E94A2128091E80057 +:102140008E778093E8000F900F900F90DF91CF91E2 +:102150000895209113032430F1F422E02093E90044 +:102160002FEF3091E800215035FD06C035ED3A954E +:10217000F1F700002111F5CF2091E80025FF0BC0F9 +:1021800040E050E065E070E00E94A2128091E8001B +:102190008E778093E8000895CF93DF93EC019091C0 +:1021A0001303943009F046C0809115018823D9F0BB +:1021B000809116018823B9F09093E9008FEF9091F8 +:1021C000E800815095FD06C095E19A95F1F7000071 +:1021D0008111F5CF8091E80085FF2CC040E050E0F0 +:1021E00060E170E017C081E08093E9008FEF90918B +:1021F000E800815095FD06C095ED9A95F1F7000035 +:102200008111F5CF8091E80085FF14C040E050E0D7 +:1022100068E070E0CE010E94A2128091E8008E7703 +:102220008093E80080E1FE01ACE7B2E001900D92FE +:102230008A95E1F7DF91CF91089580911203811182 +:1022400009C00E9437140E9494148091E2008460B7 +:102250008093E2000895109212030895089508955E +:102260000C94DB2242E061EC81E00E94B11342E079 +:1022700061EC82E00E94B11342E061EC83E00E94D5 +:10228000B11342E161EC84E00C94B1138091150329 +:10229000833009F455C030F4813071F0823009F494 +:1022A0008EC008958A3009F47AC08B3009F460C07A +:1022B000893009F09CC020C080911403813A09F054 +:1022C00096C08091E800877F8093E8008091180392 +:1022D00090911903892B21F460E18CE792E003C00F +:1022E00060E080E090E070E00E94ED128091E800F4 +:1022F0008B778093E800089580911403813209F070 +:1023000076C08091180390911903009719F00397F4 +:1023100009F06DC08091E800877F8093E80080918C +:10232000E80082FD05C0809113038111F8CF5FC0E2 +:102330008091F10080938C028091E8008B7753C0EC +:1023400080911403813A09F052C080911803909152 +:102350001903892B09F04BC08091E800877F809397 +:10236000E8008091E80080FFFCCF8091150136C025 +:10237000809114038132D9F580911803909119034B +:10238000892BA9F58091E800877F8093E8000E945F +:10239000E61380911603809315010C941C1C809108 +:1023A0001403813221F58091E800877F8093E80053 +:1023B0000E94E6138091170380938D020895809107 +:1023C0001403813AA1F48091E800877F8093E800AC +:1023D0008091E80080FFFCCF80918D028093F10016 +:1023E0008091E8008E778093E8000C94E6130895BE +:1023F00084B7877F84BF88E10FB6F894809360002C +:10240000109260000FBE90E080E80FB6F8948093C1 +:102410006100909361000FBE0E9489170E943714DB +:102420000E9494148091E20084608093E20078948A +:102430000E941A170E948B178BE091E00E943517BB +:1024400080911303853069F40E949C2280911103CE +:102450008823B1F30E94CA22882391F30E948C1230 +:10246000EFCF0E949317ECCF292F3327233031056C +:10247000C9F064F42130310581F02230310509F0D2 +:1024800043C08DE690E028E034E042C021323105BF +:10249000F1F02232310541F137C082E190E025E7C9 +:1024A00034E036C099278130910541F082309105A2 +:1024B00041F0892B49F5E4E0F4E005C0E6EDF3E0F6 +:1024C00002C0ECEAF3E0849190E09F0121C0643007 +:1024D000D8F4E62FF0E0EE0FFF1FE255FE4F20810B +:1024E000318189E090E014C0643070F470E0FB0149 +:1024F000EE0FFF1FEA55FE4F20813181FB01EE55A3 +:10250000FE4F808190E004C080E090E020E030E069 +:10251000FA0131832083089580E189BD82E189BD7C +:1025200009B400FEFDCF8091D8008F7D8093D80044 +:102530008091E00082608093E0008091E00081FD66 +:10254000FCCF0895CF92DF92EF92FF920F931F93EB +:10255000CF93DF93EC018B016A010E940514811176 +:1025600033C0C114D10439F0F60180819181081B78 +:10257000190BC80FD91FE12CF12C0115110519F108 +:102580008091E80085FD16C08091E8008E778093E9 +:10259000E800C114D10449F0F60180819181E80E70 +:1025A000F91EF182E08285E00FC00E9405148823A5 +:1025B00021F30AC089918093F10001501109FFEFC6 +:1025C000EF1AFF0ADACF80E0DF91CF911F910F91D0 +:1025D000FF90EF90DF90CF90089520911A033091F3 +:1025E0001B032617370748F06115710539F4209150 +:1025F000E8002E772093E80001C0B90140E06115A2 +:102600007105A9F120911303222309F443C0253059 +:1026100009F442C02091E80023FD40C02091E80069 +:1026200022FD32C02091E80020FFE9CF4091F30065 +:102630002091F20030E0342BFC01CF0161157105CF +:1026400059F02830310540F481918093F1006150B8 +:1026500071092F5F3F4FF1CF41E02830310509F07C +:1026600040E02091E8002E772093E800C8CF411188 +:10267000C9CF0AC080911303882361F0853061F0CF +:102680008091E80083FD0AC08091E80082FFF2CFCC +:1026900080E0089582E0089583E0089581E0089540 +:1026A00020911A0330911B032617370748F0611554 +:1026B000710539F42091E8002E772093E80001C0DD +:1026C000B901FC0120E06115710591F180911303BE +:1026D000882309F440C0853009F43FC08091E800A8 +:1026E00083FD3DC08091E80082FD2FC08091E8000D +:1026F00080FFE9CF2091F3008091F20090E0922BCF +:102700006115710559F08830910540F424912093AA +:10271000F1003196615071090196F2CF21E00897DE +:1027200009F020E08091E8008E778093E800CBCF1D +:102730002111CCCF0AC080911303882361F085302A +:1027400061F08091E80083FD0AC08091E80082FF7B +:10275000F2CF80E0089582E0089583E0089581E05B +:102760000895982F973058F59093E900981739F00D +:102770007091EC002091ED005091F00003C0242FE7 +:10278000762F50E021FF19C03091EB003E7F30934F +:10279000EB003091ED003D7F3093ED003091EB0088 +:1027A00031603093EB007093EC002093ED00509378 +:1027B000F0002091EE0027FF07C09F5FD3CF8F70FE +:1027C0008093E90081E0089580E0089580911403EA +:1027D00087FF11C08091E80082FD05C0809113033E +:1027E0008111F8CF11C08091E8008B770BC08091E8 +:1027F0001303882349F08091E80080FFF8CF80918F +:10280000E8008E778093E80008952091E4003091ED +:10281000E50095E64091EC00842F817040FF22C0D6 +:102820008091E80080FD1CC080911303882391F003 +:10283000853091F08091EB0085FD10C04091E4005F +:102840005091E5004217530729F39A01915011F76F +:1028500084E0089582E0089583E0089581E008957A +:1028600080E008954091E80042FFDECF08950E9485 +:10287000A5140E94AD14E0EEF0E0808181608083B9 +:10288000E8EDF0E080818F77808319BCA7EDB0E0A0 +:102890008C918E7F8C9380818F7E80831092120327 +:1028A00008950F931F93CF93DF930E94A5140E9466 +:1028B000AD14C8EDD0E088818F77888388818068E7 +:1028C000888388818F7D888319BC109213031092AE +:1028D0000F03109211031092100300EE10E0F801A4 +:1028E00080818B7F808388818160888342E060E083 +:1028F00080E00E94B113E1EEF0E080818E7F808362 +:10290000E2EEF0E080818160808380818860808356 +:10291000F80180818E7F8083888180618883DF9148 +:10292000CF911F910F910895E8EDF0E080818F7EA7 +:102930008083E7EDF0E080818160808384E082BF66 +:1029400081E0809312030C945114E8EDF0E0808153 +:102950008E7F80831092E20008951092DA00109228 +:10296000E10008951F920F920FB60F9211242F933A +:102970003F934F935F936F937F938F939F93AF9307 +:10298000BF93EF93FF938091E10082FF0BC0809192 +:10299000E20082FF07C08091E1008B7F8093E1001D +:1029A0000E9419178091DA0080FF1FC08091D80023 +:1029B00080FF1BC08091DA008E7F8093DA008091C7 +:1029C000D90080FF0DC080E189BD82E189BD09B4D5 +:1029D00000FEFDCF81E0809313030E941D1105C00E +:1029E00019BC109213030E942B118091E10080FF0B +:1029F00019C08091E20080FF15C08091E2008E7FB7 +:102A00008093E2008091E20080618093E2008091F7 +:102A1000D80080628093D80019BC85E080931303AE +:102A20000E942F118091E10084FF30C08091E2006C +:102A300084FF2CC080E189BD82E189BD09B400FE1C +:102A4000FDCF8091D8008F7D8093D8008091E100E8 +:102A50008F7E8093E1008091E2008F7E8093E20080 +:102A60008091E20081608093E20080910F038823CF +:102A700011F084E007C08091E30087FD02C081E08F +:102A800001C083E0809313030E9430118091E10024 +:102A900083FF29C08091E20083FF25C08091E1007F +:102AA000877F8093E10082E08093130310920F03ED +:102AB0008091E1008E7F8093E1008091E2008E7F23 +:102AC0008093E2008091E20080618093E20042E026 +:102AD00060E080E00E94B1138091F00088608093F4 +:102AE000F0000E942E11FF91EF91BF91AF919F9145 +:102AF0008F917F916F915F914F913F912F910F90A7 +:102B00000FBE0F901F9018951F920F920FB60F9245 +:102B100011242F933F934F935F936F937F938F93E2 +:102B20009F93AF93BF93CF93DF93EF93FF93C091A6 +:102B3000E900CF708091EC00D82FD17080FDD0E8F3 +:102B40001092E9008091F000877F8093F0007894E4 +:102B50000E94C8151092E9008091F000886080936F +:102B6000F000CD2BCF70C093E900FF91EF91DF9182 +:102B7000CF91BF91AF919F918F917F916F915F9115 +:102B80004F913F912F910F900FBE0F901F9018956E +:102B90001F93CF93DF93CDB7DEB7AA970FB6F89404 +:102BA000DEBF0FBECDBFE4E1F3E088E08E0F909171 +:102BB000F10091938E13FBCF0E9446118091E800A3 +:102BC00083FF1FC18091140390911503492F50E09A +:102BD0004A30510508F015C1FA01EA5AFF4F0C942A +:102BE000D52C803881F0823809F00BC18091180310 +:102BF0008F708093E9008091EB0085FB882780F936 +:102C00001092E90006C08091100390911103911178 +:102C100082609091E800977F9093E8008093F100A4 +:102C20001092F100C8C0282F2D7F09F0EAC0882338 +:102C300019F0823061F0E5C080911603813009F00F +:102C4000E0C0933009F080E0809311032BC08091A5 +:102C50001603811127C0809118038F7009F4D1C029 +:102C60008093E9002091EB0020FF1CC0933021F4F9 +:102C70008091EB00806214C09091EB009061909382 +:102C8000EB0021E030E0A90102C0440F551F8A95F6 +:102C9000E2F74093EA001092EA008091EB0088602E +:102CA0008093EB001092E9008091E800877F86C056 +:102CB0008111A7C0109116031F778091E3008078DF +:102CC000812B8093E3008091E800877F8093E80068 +:102CD0000E94E6138091E80080FFFCCF8091E30022 +:102CE00080688093E300111102C082E001C083E09C +:102CF0008093130386C08058823008F082C0809190 +:102D00001603909117038C3D53E0950779F583E006 +:102D10008A838AE289834FB7F894DE01139620E014 +:102D20003EE051E2E32FF0E050935700E49120FFA2 +:102D300003C0E295EF703F5FEF708E2F90E0EA30B6 +:102D400010F0C79601C0C0968D939D932F5F2431DC +:102D500049F74FBF8091E800877F8093E8006AE2DF +:102D600070E0CE0101960E94ED1214C0AE014F5FDB +:102D70005F4F609118030E943412BC01009709F460 +:102D800040C09091E800977F9093E80089819A81F4 +:102D90000E9450138091E8008B778093E80031C047 +:102DA000803879F58091E800877F8093E8008091F2 +:102DB0000F038093F1008091E8008E778093E80004 +:102DC0000E94E6131EC081111CC090911603923020 +:102DD000C0F48091E800877F8093E80090930F0310 +:102DE0000E94E61380910F03811106C08091E300D9 +:102DF00087FD02C081E001C084E0809313030E943C +:102E000032118091E80083FF0AC08091E800877F3B +:102E10008093E8008091EB0080628093EB00AA969B +:102E20000FB6F894DEBF0FBECDBFDF91CF911F91DB +:102E300008950895CF93809113038823A1F0C09142 +:102E4000E900CF709091EC00892F817090FD80E8AF +:102E5000C82B1092E9008091E80083FD0E94C815FC +:102E6000CF70C093E900CF9108959093930280931F +:102E700092020895E0919202F0919302309721F02E +:102E80000190F081E02D099480E00895E091920294 +:102E9000F0919302309721F00280F381E02D0994A4 +:102EA0000895E0919202F0919302309721F004800E +:102EB000F581E02D099408952091900230919102BE +:102EC0008217930771F09093910280939002E091A2 +:102ED0009202F0919302309721F00680F781E02D65 +:102EE0000994089520918E0230918F0282179307E2 +:102EF00071F090938F0280938E02E0919202F09194 +:102F00009302309721F00084F185E02D0994089513 +:102F100008950C9488170E940F230E9460090E9454 +:102F200095230C9444285F926F927F928F929F9288 +:102F3000AF92BF92CF92DF92EF92FF920F931F93C7 +:102F4000CF93DF9300D000D01F92CDB7DEB70E94A1 +:102F5000A5099DE9C92E92E0D92E03E010E0AA242C +:102F6000A394B12C502E802F0E94200A4C01F60110 +:102F7000729062906F016826792661147104A1F441 +:102F80000150110978F78FEF89838A831B820E9491 +:102F900018238160782F9D838C8349815A816B81AE +:102FA0008D810E94431838C08091F20281FD0E94F9 +:102FB000290A2BE030E07501022E02C0EE0CFF1C46 +:102FC0000A94E2F7C70186219721892B09F1298309 +:102FD0005A828E209F2091E0892809F490E09B83FB +:102FE0000E9418238160782F9D838C8349815A81A8 +:102FF0006B818D810E944318000F111FF801EB5661 +:10300000FD4F80819181E826F926F182E08204C09B +:103010002150310980F6B4CF0E947C251091940292 +:103020000E943A171817D1F00E943A178093940221 +:103030000F900F900F900F900F90DF91CF911F91F5 +:103040000F91FF90EF90DF90CF90BF90AF909F9047 +:103050008F907F906F905F900C944A090F900F9023 +:103060000F900F900F90DF91CF911F910F91FF90D4 +:10307000EF90DF90CF90BF90AF909F908F907F9018 +:103080006F905F900895CF93DF93CDB7DEB72B9706 +:103090000FB6F894DEBF0FBECDBF4F835887698748 +:1030A0007A878B87DE01119686E0FD0111928A9561 +:1030B000E9F785E0FE01379601900D928A95E1F7D8 +:1030C00049815A816B817C818D819E810E94BA1ECB +:1030D0002B960FB6F894DEBF0FBECDBFDF91CF9118 +:1030E0000895CF93882309F4C2C0C82F823859F4B9 +:1030F0000E943A1781FDBBC089E30E9494210E947F +:10310000612289E30CC0833879F40E943A1780FD6C +:10311000AEC083E50E9494210E94612283E50E9453 +:10312000D621CF910C946122843859F40E943A1729 +:1031300082FD9DC087E40E9494210E94612287E461 +:10314000EECF8CEF8C0F813A48F48C2F0E94AC2785 +:1031500081118DC08C2F0E949421E3CF80E28C0FCF +:10316000883048F4C77081E001C0880FCA95EAF73B +:103170000E941A22D6CF8BE58C0F833078F4C53AA3 +:1031800029F0C63A31F083E890E005C081E890E08C +:1031900002C082E890E0CF910C945C1788E58C0F18 +:1031A000833108F064C0C83A39F1C93A41F1CA3AEA +:1031B00049F1CB3A51F1CC3A59F1CD3A61F1C03BEA +:1031C00069F1CE3A71F1CF3A79F1C13B81F1C23B5D +:1031D00089F1C33B91F1C43B99F1C53BA1F1C63BD9 +:1031E000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B39 +:1031F000C9F180E090E038C082EE90E035C089EE01 +:1032000090E032C08AEE90E02FC085EB90E02CC0B9 +:1032100086EB90E029C087EB90E026C08CEC90E034 +:1032200023C08DEC90E020C083E891E01DC08AE8C7 +:1032300091E01AC082E991E017C084E991E014C0DE +:1032400081E292E011C083E292E00EC084E292E05B +:103250000BC085E292E008C086E292E005C087E2FA +:1032600092E002C08AE292E0CF910C947217CF9163 +:103270000895882309F44BC0823859F40E943A1704 +:1032800081FF45C089E30E9494210E94612289E365 +:103290000CC0833871F40E943A1780FF38C083E570 +:1032A0000E9494210E94612283E50E94D6210C9401 +:1032B0006122843859F40E943A1782FF28C087E4BB +:1032C0000E9494210E94612287E4EFCF9CEF980F27 +:1032D000913A58F390E2980F983050F4877091E04B +:1032E00001C0990F8A95EAF7892F0E942022DFCF2B +:1032F0009BE5980F933020F480E090E00C945C17ED +:10330000885A833120F480E090E00C94721708957D +:10331000882321F00E941A220C94612208958823A8 +:1033200021F00E9420220C94612208957F928F92B6 +:103330009F92AF92BF92CF92DF92EF92FF920F9344 +:103340001F93CF93DF931F92CDB7DEB77C01C62EBC +:10335000772EFC01058102950F70128111110E94D8 +:1033600037220E948D21882379F0112369F080E2B1 +:103370008C0D883048F082E00E9476210E948D21D9 +:1033800091E0D82ED92601C0D12CE72DE295EF701F +:10339000F0E0E05AFF4F0C94D52C872D807F072D4D +:1033A0000F70882311F00295007F112389F000230C +:1033B00009F499C180E28C0D883020F4802F0E949E +:1033C0001A2203C0802F0E942A220E9461228BC1F0 +:1033D0008C2D0E943919002309F4C3C180E28C0DA1 +:1033E000883020F4802F0E94202203C0802F0E946A +:1033F00030220E946122B5C1872D807F972D9F705A +:10340000803211F4892F03C0892F8295807FCC20D0 +:1034100021F0F1E0CF16A1F01DC0112339F00023F7 +:1034200019F1013009F50E944A229BC1002319F0CD +:10343000013009F496C189830E944D22898110C10F +:10344000112321F0063008F08CC10EC0053008F0C1 +:1034500088C106C1112359F0002331F0F70195818D +:1034600090FF41C19F7095830E9488197AC1002303 +:1034700009F4F6C03EC1872D86958695837090E04D +:10348000009719F0019761F06CC1112321F08C2D88 +:10349000972D937002C080E090E00E945C1761C19C +:1034A000112321F08C2D972D937002C080E090E0C5 +:1034B0000E94721756C18C2D112319F00E9484248A +:1034C00002C00E94EC240E9471254BC1872D83709D +:1034D00009F052C0111145C18C2D829586958770D7 +:1034E000880F880F9C2D9F70892E912CA12CB12CB8 +:1034F000082E04C0880C991CAA1CBB1C0A94D2F785 +:10350000C4FE14C00FE010E020E030E0B901A801D3 +:1035100004C0440F551F661F771F8A95D2F7CB0151 +:10352000BA01609570958095909503C060E070E059 +:10353000CB01272D26952695237030E022303105CA +:1035400069F02330310589F0682979298A299B2976 +:103550002130310571F00E94022003C168297929C8 +:103560008A299B290E941E20FCC00E940220C501BE +:10357000B4010E94E61FF5C0112319F0872D817058 +:1035800001C08695882309F4ECC08C2D8295869520 +:103590008770880F880F9C2D9F70892E912CA12CED +:1035A000B12C082E04C0880C991CAA1CBB1C0A94C0 +:1035B000D2F7C4FE14C00FE010E020E030E0B90103 +:1035C000A80104C0440F551F661F771F8A95D2F7C4 +:1035D000CB01BA01609570958095909503C060E02D +:1035E00070E0CB01272D269526952370422F50E0C1 +:1035F0004230510569F04330510589F06829792935 +:103600008A299B294130510571F00E94DC20A9C014 +:10361000682979298A299B290E94F820A2C00E9442 +:10362000DC20C501B4010E94C0209BC08C2D90E01D +:10363000FC01E05EF109E531F10508F050C0E05908 +:10364000FF4F0C94D52C0C2D0F70872D8F711123EB +:1036500021F00E945920802F07CF0E947A20802FCE +:103660000E948F197EC0112341F0053008F079C007 +:10367000872D8F710E949F2074C0063008F071C0A2 +:10368000F7CF112339F0872D8F710E94592069C01F +:103690001123C9F3872D8F710E947A2062C01123F4 +:1036A00029F0872D8F710E9444205BC00E943A2030 +:1036B00058C0112351F0172D1F71812F0E945920DE +:1036C00063E0812F0E946D214CC081E00E94762131 +:1036D000023008F446C082E00E94762142C01123E5 +:1036E00031F0002381F28C2D0E9471183AC0002322 +:1036F00089F28C2D0E94391934C0472D4F706C2DE2 +:10370000C7010E94B5030E945E1F2BC0111129C082 +:10371000472D4F7050E042305105B9F04CF441153F +:10372000510581F041305105E1F40E946C2819C027 +:103730004330510569F04430510599F48C2D0E94B5 +:10374000BE280FC00E9455280CC00E94882809C0BE +:103750000E949B2806C0472D4F706C2DC7010E9408 +:103760002B06DD20F9F00E94692180FD1BC0F701C6 +:1037700012820E9463210E945920C7010E94E11B0E +:103780000E9463210F90DF91CF911F910F91FF90C5 +:10379000EF90DF90CF90BF90AF909F908F907F90F1 +:1037A0000C947A200F90DF91CF911F910F91FF9091 +:1037B000EF90DF90CF90BF90AF909F908F907F90D1 +:1037C00008950F931F93CF93DF93EC018881998124 +:1037D0002B813C81232BB9F09F3F11F48F3F99F04F +:1037E000CE010E942A04882371F0688179818A8140 +:1037F0000E945F218C010E9414210E94DB1FB801EE +:10380000CE010E949619DF91CF911F910F910895DB +:103810000E9437220E9447220E940C220E946122AD +:103820000E9422260E94712580E090E00E945C1791 +:1038300080E090E00C9472170E9427220C94081CE0 +:103840000E945421292F22952F7030E02C30310511 +:103850004CF42A3031056CF4225031092230310504 +:10386000A8F407C02C30310569F02F30310551F034 +:103870000DC0803F69F018F4803E40F409C0843FD9 +:1038800029F406C093FB882780F9089580E0089505 +:1038900081E00895CF93DF9300D000D01F92CDB781 +:1038A000DEB70F900F900F900F900F90DF91CF9198 +:1038B0000895CF93DF9300D000D000D0CDB7DEB70E +:1038C00026960FB6F894DEBF0FBECDBFDF91CF9125 +:1038D00008951F93CF93DF93C0919D0216E08091CE +:1038E0009E02C81799F0D0E01C9FF0011D9FF00DBB +:1038F0001124E156FD4F40815181628173818481A1 +:1039000095810E94591C2196C770E9CFDF91CF9114 +:103910001F9108954091CF025091D0026091D10241 +:103920007091D2028091D3029091D4020C94591CD0 +:103930008091D40282958F7009F054C08091D10299 +:10394000882309F44FC080919D02A0919E0260914E +:10395000CF027091D0024091D2025091D302B6E0D2 +:103960008A1709F43FC090E041155105C1F17F3F2E +:1039700011F46F3FA1F1B89FF001B99FF00D112430 +:10398000E156FD4F218172132AC02081621327C0A6 +:103990002281211124C0238134812417350710F49A +:1039A00021503109241B350B283C3105C0F42091EE +:1039B000D4022F7020612093D40226E0289FF001CA +:1039C000299FF00D1124EC55FD4F80818F7080618F +:1039D00080838FEC92E00E94E11B0C94691C01969D +:1039E0008770BECF0895CF92DF92EF92FF920F9330 +:1039F0001F93CF93DF93CDB7DEB762970FB6F894DE +:103A0000DEBF0FBECDBF8C0185E0F801DE011D9643 +:103A100001900D928A95E1F7D8014C9111965C9135 +:103A2000119712966C9112971396CD90DC90149783 +:103A30003091CF027091D0028091D2029091D30246 +:103A4000009709F46BC17F3F19F43F3F09F466C149 +:103A5000E090D102EE2009F4C0C02091D402C81633 +:103A6000D90628F0F601E81BF90BCF0104C08095B8 +:103A700090958C0D9D1DFF24F394883C910578F062 +:103A8000F12C207F09F0C6C07C2DD98AC88A89898B +:103A90000E944A1C8FEC92E00E94E11BB1C0822F71 +:103AA000807F09F046C0751314C0341312C0611131 +:103AB00010C02F7020612093D4020E948A1C8FECCA +:103AC00092E00E94E11B8091D402D80115968C935C +:103AD0002EC0CD2819F15F3F11F44F3FF9F0F62EBB +:103AE00061111CC080919D0220919E0236E08217D8 +:103AF00009F45AC090E0389FF001399FF00D11246D +:103B0000E156FD4F7181571306C07081471303C002 +:103B10007281711103C001968770E9CFF62E66237A +:103B200009F418C18091D40281608093D402F12CF1 +:103B300011C1751308C0341306C0611104C080910F +:103B4000D402D801C3C04D875E878D859E856A8B60 +:103B50000E94201C6A898823E1F16623D1F120911B +:103B6000D402822F82958F7090E0029774F080913A +:103B7000CF029091D00298878F831986DB86CA8600 +:103B80002C87CE0107960E94E11B86E0F801AFEC7E +:103B9000B2E001900D928A95E1F70E94981C0E9474 +:103BA0008A1CFF24F394D6C04D875E878D859E8541 +:103BB0000E945421292F22952F7030E022303105A8 +:103BC0000CF0BCC09F7009F0B6C0805E883008F46D +:103BD000C1C0C8010E94E11BE4CFC816D90608F491 +:103BE00053C0F601E81BF90BCF01883C910508F49E +:103BF00050C0F12C7C2DD98AC88A89890E944A1C20 +:103C0000EFECF2E086E0DF011D928A95E9F70E9471 +:103C10008A1CA0C0751314C0341312C0611110C0E7 +:103C20008091D402F8018583C8010E94E11B86E0DF +:103C3000EFECF2E0DF011D928A95E9F7FE2C8AC0D5 +:103C40004D875E878D859E856A8B0E94201C6A89C0 +:103C5000882309F4BECF662309F4BBCF2091D40298 +:103C6000822F82958F7090E002970CF48ECF809116 +:103C7000CF029091D0029A8389831B82DD82CC820D +:103C80002E83CE0101967FCF809590958C0D9D1D42 +:103C9000ACCFF62E662309F49CCF75132EC03413D7 +:103CA0002CC02091D40220FD1FC0822F82958F70DE +:103CB000D9F0D80115962C9315978F3049F08F5F66 +:103CC000982F9295907F822F8F70892B15968C93C9 +:103CD000C8010E94E11B86E0F801AFECB2E0019060 +:103CE0000D928A95E1F793CF86E0F801AFECB2E050 +:103CF00001900D928A95E1F72DC04D875E878D85E5 +:103D00009E850E94201C811140CF8091D402816049 +:103D10008093D402C8010E94E11B1CC0662309F4F1 +:103D200058CF4D875E878D859E850E94201C8823F5 +:103D300009F44FCF2ACF811148CF0CC02430310570 +:103D40000CF047CF9F7009F440CFF8019581907F28 +:103D500009F03BCF8F2D62960FB6F894DEBF0FBEF1 +:103D6000CDBFDF91CF911F910F91FF90EF90DF902A +:103D7000CF9008951F93CF93DF93CDB7DEB72C97E5 +:103D80000FB6F894DEBF0FBECDBF4F83588769874B +:103D90007A878B879C87CE0107960E94F31C882325 +:103DA00069F08F8198852A853B85232BF1F19F3F10 +:103DB00009F063C08F3F09F060C037C086E0FE01A4 +:103DC0003796DE01119601900D928A95E1F76F8189 +:103DD0007885EA85FB85309741F17F3F11F46F3F8D +:103DE00021F120919E0230E0C90101968770992748 +:103DF00040919D0250E08417950709F447C06983FC +:103E00007A83FD83EC8396E0929FD001939FB00D5F +:103E10001124A156BD4FFE01319601900D929A9545 +:103E2000E1F780939E020E94691C16E080919D023A +:103E300090919E028917C1F1189FC00111248156EB +:103E40009D4F0E94F31C882379F1E0919D021E9FF3 +:103E5000F0011124E156FD4F40815181628173814F +:103E6000848195810E94591C80919D0290E0019669 +:103E70008770992780939D02D9CF4F815885698596 +:103E80007A858B859C850E94591CCFCF0E941C1C73 +:103E900010929E0210929D02EFECF2E086E0DF01AC +:103EA0001D928A95E9F7C1CF2C960FB6F894DEBF24 +:103EB0000FBECDBFDF91CF911F910895EF92FF927A +:103EC0000F931F93CF93DF938C01009709F46CC07D +:103ED000F12CEE24E394E8012196F80184918437D3 +:103EE00040F4843008F051C0813081F0823019F103 +:103EF0005BC0853709F444C0A8F19CE7980F903760 +:103F000008F052C08F770E94391941C00E5F1F4FD1 +:103F1000FE01C49180E28C0F883048F4C7708E2D6A +:103F200001C0880FCA95EAF70E943A2214C08C2F6C +:103F30000E9471182DC00E5F1F4FFE01C49180E2D8 +:103F40008C0F883058F4C7708E2D01C0880FCA9529 +:103F5000EAF70E9440220E9461221AC08C2F0E9420 +:103F6000391916C00E5F1F4FFE01C491CC2381F09A +:103F70008FE99FE00197F1F700C00000C150F6CF34 +:103F80000E5F1F4FFE01F49003C00E9471188E0156 +:103F90008F2D882309F49FCFEFE9FFE03197F1F7E8 +:103FA00000C000008150F5CFDF91CF911F910F919C +:103FB000FF90EF90089508956093D9027093DA020C +:103FC0008093DB029093DC020C94081C0F931F93E8 +:103FD0000091D9021091DA022091DB023091DC02CB +:103FE000DC01CB01802B912BA22BB32B8093D90228 +:103FF0009093DA02A093DB02B093DC021F910F9141 +:104000000C94081C0F931F930091D9021091DA02AF +:104010002091DB023091DC02DC01CB018023912373 +:10402000A223B3238093D9029093DA02A093DB02F8 +:10403000B093DC021F910F910C94081C0F931F93F7 +:104040000091D9021091DA022091DB023091DC025A +:10405000DC01CB0180279127A227B3278093D902C7 +:104060009093DA02A093DB02B093DC021F910F91D0 +:104070000C94081C1092D5021092D6021092D7020E +:104080001092D8020C94081C41E050E060E070E00F +:1040900004C0440F551F661F771F8A95D2F74093BF +:1040A000D5025093D6026093D7027093D8020C9435 +:1040B000081C41E050E060E070E004C0440F551F70 +:1040C000661F771F8A95D2F78091D5029091D6020C +:1040D000A091D702B091D802482B592B6A2B7B2B89 +:1040E0004093D5025093D6026093D7027093D802C2 +:1040F0000C94081C41E050E060E070E004C0440F04 +:10410000551F661F771F8A95D2F740955095609589 +:1041100070958091D5029091D602A091D702B0916E +:10412000D802482359236A237B234093D502509316 +:10413000D6026093D7027093D8020C94081C41E019 +:1041400050E060E070E004C0440F551F661F771F09 +:104150008A95D2F78091D5029091D602A091D7028C +:10416000B091D802482759276A277B274093D50268 +:104170005093D6026093D7027093D8020C94081C17 +:104180000F931F930091D5021091D6022091D70270 +:104190003091D802DC01CB01802B912BA22BB32BC9 +:1041A0008093D5029093D602A093D702B093D80201 +:1041B0001F910F910C94081C0F931F930091D5022F +:1041C0001091D6022091D7023091D802DC01CB01A8 +:1041D00080239123A223B3238093D5029093D60208 +:1041E000A093D702B093D8021F910F910C94081C92 +:1041F0000F931F930091D5021091D6022091D70200 +:104200003091D802DC01CB0180279127A227B32768 +:104210008093D5029093D602A093D702B093D80290 +:104220001F910F910C94081C0895CF92DF92EF928A +:10423000FF920F931F93CF93DF938C01C090D9020D +:10424000D090DA02E090DB02F090DC028091D5029F +:104250009091D602A091D702B091D802C82AD92A4B +:10426000EA2AFB2ACFE1D0E0D701C6010C2E04C018 +:10427000B695A795979587950A94D2F780FF06C0C3 +:10428000B8018C2F0E94B008019721F4219760F7A4 +:1042900080E001C08C2FDF91CF911F910F91FF9093 +:1042A000EF90DF90CF900895CF93DF93EC010E94C1 +:1042B0001521BE010E94B008DF91CF910895CB0176 +:1042C0000E94542108958091DD02859585958595FC +:1042D00008958091DD028770089598E0899F90018C +:1042E0001124262B2093DD020C9459202091DD020D +:1042F000809582238093DD02982F977069F430E0D7 +:10430000482F552747FD50952417350729F08595E7 +:10431000859585950C947A2008959091DD0297708B +:1043200081E009F480E0089590911501992321F02E +:1043300090911601911109C0209117013091180137 +:10434000F90132969FEF40E01FC0982F9695969501 +:1043500096959F3050F5E0911701F0911801E90F03 +:10436000F11D877021E030E0A90102C0440F551F04 +:104370008A95E2F7CA019181892B818308959F3F35 +:1043800039F04F5F4E3041F051915813F8CF0DC0C6 +:104390005111F7CF942FF5CF9F3F39F0F901E90F75 +:1043A000F11D97FDFA958283089508959091150166 +:1043B000992321F090911601911109C020911701C4 +:1043C00030911801F9013296205F3F4F1FC0982F9E +:1043D0009695969596959F30F0F4E0911701F0919F +:1043E0001801E90FF11D877021E030E0A90102C03A +:1043F000440F551F8A95E2F7CA0180959181892360 +:10440000818308953196E217F30729F0908198137C +:10441000F9CF1082F7CF089581E090E0E091170185 +:10442000F0911801E80FF91F108201968031910573 +:10443000A9F708959091F102892B8093F1020895D4 +:1044400080959091F10289238093F1020895109252 +:10445000F10208959091F002892B8093F002089563 +:1044600080959091F00289238093F0020895109234 +:10447000F00208959091EF02892B8093EF02089546 +:1044800080959091EF0289238093EF020895109216 +:10449000EF0208958093DE0208951092DE020895DF +:1044A0008091170190911801FC0131969C01205FC9 +:1044B0003F4F80E0919191118F5FE217F307D1F7A1 +:1044C0000895E0911701F09118018091F102808325 +:1044D000E0911701F091180190818091F002892BF1 +:1044E0008083E0911701F091180190818091EF0293 +:1044F000892B80838091DE02882361F0E09117018F +:10450000F09118019081892B80830E9450228111A3 +:104510001092DE0280911701909118010C944617B9 +:1045200020E0009739F0AC014150510984239523D4 +:104530002F5FF7CF822F089580911303843039F1D4 +:104540001092F30220E488E190E00FB6F894A89569 +:10455000809360000FBE2093600080E00E941C03E7 +:1045600080E00E944A0983B7817F846083BF83B75C +:10457000816083BF7894889583B78E7F83BF88E1FD +:104580000FB6F89480936000109260000FBE0895FB +:104590000895089580E00E941C030E94C8220E9492 +:1045A000A5090E94C9220E942A0A91E0811101C036 +:1045B00090E0892F08950E941C1C80E00E941C033B +:1045C0000E9444280E943A170C944A091F920F92A5 +:1045D0000FB60F9211248F939F93AF93BF93809147 +:1045E000F302811113C08091F4029091F502A09121 +:1045F000F602B091F7024196A11DB11D8093F4021D +:104600009093F502A093F602B093F702BF91AF9199 +:104610009F918F910F900FBE0F901F90189582E081 +:1046200084BD93E095BD9AEF97BD80936E00089589 +:104630002FB7F8948091F4029091F502A091F602C0 +:10464000B091F7022FBF0895CF92DF92EF92FF92C1 +:104650000F931F932FB7F8944091F4025091F502F5 +:104660006091F6027091F7022FBF6A017B01EE2480 +:10467000FF248C0120E030E0C016D106E206F306EC +:1046800010F4415051099A01281B390BC9011F919F +:104690000F91FF90EF90DF90CF9008951F920F92AF +:1046A0000FB60F9211248F939F93AF93BF93809176 +:1046B000F4029091F502A091F602B091F7020196F2 +:1046C000A11DB11D8093F4029093F502A093F60210 +:1046D000B093F702BF91AF919F918F910F900FBE52 +:1046E0000F901F9018950E943714F8942FEF87EAC7 +:1046F00091E6215080409040E1F700C0000087E043 +:1047000090EBDC0180931E0390931F03A093200382 +:10471000B09321039CE088E10FB6F894A8958093AC +:1047200060000FBE90936000FFCF0E94D4238111E0 +:1047300002C00E94B0230E94DF238093F2020E94F5 +:10474000E72380931C0387FB882780F98093160159 +:104750000E94E323682F70E080E090E00C94DC1F5F +:104760006DEE7EEF80E090E00E94FB2C60E082E046 +:1047700090E00E94E92C60E083E090E00E94E92C48 +:1047800060E084E090E00E94E92C60E085E090E049 +:104790000E94E92C60E086E090E00E94E92C6FEF37 +:1047A00087E090E00C94E92C80E090E00E94E32CFC +:1047B00021E08D3E9E4F09F020E0822F089582E097 +:1047C00090E00C94DB2C83E090E00C94DB2C84E0F4 +:1047D00090E00C94DB2C682F84E090E00C94E92CA2 +:1047E00086E090E00C94DB2C682F86E090E00C943F +:1047F000E92C87E090E00C94DB2C682F87E090E0B8 +:104800000C94E92C8091FA0280FF0BC060911C018E +:1048100085E0689FB001112475956795759567953A +:104820002BC081FF09C060911C0185E0689FB00129 +:1048300011247595679520C082FF07C060911C0107 +:1048400085E0689FB001112417C09091FB02992365 +:10485000D1F060911B01961788F720911C0185E02B +:10486000289F90011124929FA001939F500D112425 +:1048700070E0CA010E94C12C6038710540F46115D6 +:10488000710539F002C065E070E0862F08958FE76A +:10489000089581E008958091FA0280FF08C0609138 +:1048A0001A0170E0759567957595679521C081FF30 +:1048B00006C060911A0170E07595679519C082FF76 +:1048C00004C060911A0170E010C09091FB0299231E +:1048D000C1F0609119019617A0F780911A01899F84 +:1048E000C001112470E00E94C12C6038710528F4C9 +:1048F0006115710521F0862F08958FE7089581E0F5 +:10490000089561E070E0F4CF803F21F40E9402241A +:10491000819504C0813F29F40E9402248093FE0205 +:104920000895823F21F40E940224819504C0833FB0 +:1049300029F40E9402248093FD020895893F19F40E +:104940000E944B2405C08A3F31F40E944B2481957C +:104950008093FF0208958B3F21F40E944B248195A0 +:1049600004C08C3F29F40E944B24809300030895D7 +:10497000843F21F48091FC02816017C0853F21F4BF +:104980008091FC02826011C0863F21F48091FC027C +:1049900084600BC0873F21F48091FC02886005C0D1 +:1049A000883F31F48091FC0280618093FC0208957D +:1049B0008D3F21F48091FA0281600BC08E3F21F47B +:1049C0008091FA02826005C08F3F29F48091FA023B +:1049D00084608093FA020895803F39F48091FE024A +:1049E00087FF6CC01092FE0269C0813F29F480915C +:1049F000FE021816BCF362C09091FD02823F29F4BA +:104A000097FF5CC01092FD0259C0833F19F419163C +:104A1000CCF354C0893F41F48091FF0218160CF08A +:104A20004DC01092FF024AC08A3F29F48091FF02D4 +:104A300087FF44C0F6CF8B3F39F48091000387FF96 +:104A40003DC0109200033AC08C3F29F480910003CE +:104A50001816BCF333C0843F21F48091FC028E7F92 +:104A600017C0853F21F48091FC028D7F11C0863FE5 +:104A700021F48091FC028B7F0BC0873F21F4809151 +:104A8000FC02877F05C0883F31F48091FC028F7E55 +:104A90008093FC0213C08D3F21F48091FA028E7F37 +:104AA0000BC08E3F21F48091FA028D7F05C08F3FAD +:104AB00029F48091FA028B7F8093FA028091FD02A3 +:104AC00081110EC08091FE0281110AC08091FF0207 +:104AD000811106C080910003811102C01092FB0277 +:104AE00008958CEF92E00E9451170E941823909332 +:104AF000F9028093F80208951F93CF93DF9380917A +:104B0000F8029091F9020E942423AC019091FB02DB +:104B1000992321F020911D0130E006C020911E0153 +:104B20008AE0289F900111244217530708F486C099 +:104B30008091FD02C091FE02D091FF02109100030E +:104B4000811107C0C11176C0D11174C0111172C09A +:104B500075C09F3F19F09F5F9093FB02181624F4D5 +:104B60000E9402248093FD028091FD0287FF05C010 +:104B70000E94022481958093FD021C1624F40E9459 +:104B800002248093FE028091FE0287FF05C00E94EE +:104B9000022481958093FE026091FD02662339F123 +:104BA000C091FE02CC2319F1772767FD7095872FFE +:104BB000972F0E94E32923E333E343E35FE30E945B +:104BC000F32A0E94B0296093FD026C2F772767FDBE +:104BD0007095872F972F0E94E32923E333E343E364 +:104BE0005FE30E94F32A0E94B0296093FE021D1623 +:104BF00024F40E944B248093FF028091FF0287FFE0 +:104C000005C00E944B2481958093FF02111624F465 +:104C10000E944B24809300038091000387FF05C00E +:104C20000E944B24819580930003DF91CF911F91C7 +:104C30000C9471259F3F09F08ECF96CFDF91CF91D5 +:104C40001F910895ECEFF2E085E0DF011D928A9557 +:104C5000E9F71092FB021092FA020895833081F175 +:104C600028F4813059F08230D1F00895853009F46C +:104C700049C0B8F1863009F456C0089580911E01EC +:104C8000262F30E0280F311D2F3F310524F4680F07 +:104C900060931E0108958FEF80931E010895809107 +:104CA0001D01262F30E0280F311D2F3F310524F440 +:104CB000680F60931D0108958FEF80931D01089583 +:104CC00080911C01262F30E0280F311D2F3F310528 +:104CD00024F4680F60931C0108958FEF80931C01EA +:104CE000089580911B01262F30E0280F311D2F3FA2 +:104CF000310524F4680F60931B0108958FEF8093B2 +:104D00001B01089580911A01262F30E0280F311DD4 +:104D10002F3F310524F4680F60931A0108958FEF37 +:104D200080931A01089580911901262F30E0280FF1 +:104D3000311D2F3F310524F4680F60931901089548 +:104D40008FEF809319010895833011F128F4813099 +:104D500049F0823091F00895853081F120F186305C +:104D6000C1F1089580911E01681720F4861B80937D +:104D70001E01089510921E01089580911D0168176B +:104D800020F4861B80931D01089510921D01089543 +:104D900080911C01681720F4861B80931C010895E4 +:104DA00010921C01089580911B01681720F4861B46 +:104DB00080931B01089510921B01089580911A01A0 +:104DC000681720F4861B80931A01089510921A0127 +:104DD000089580911901681720F4861B80931901AA +:104DE00008951092190108950F931F93873208F0C8 +:104DF00048C08E3108F08DC0803109F477C008F5C5 +:104E0000873009F461C068F4863009F09DC0809154 +:104E1000F202817F8E7F8093F20281E08093020311 +:104E200094C08B3009F489C08E3009F08DC0809118 +:104E3000F20282FB222720F991E0922790FB82F96F +:104E40005EC0863109F479C060F4813109F07CC01C +:104E50000E941C1C9091160181E089278093160105 +:104E60006CC0893109F469C08B3109F06DC0809143 +:104E7000F20281FB222720F991E0922790FB81F931 +:104E80003EC0883309F459C050F4893209F457C040 +:104E9000853309F454C0873209F451C055C08334B6 +:104EA00009F44DC028F48A3308F44EC0895332C047 +:104EB000883409F049C00E941C1C0E945A0A0E94B2 +:104EC00021040E94732339C09091F202892F8095AA +:104ED000817080FB90F929F0966098609093F202BF +:104EE00034C0997F977F9093F20227C08091F2029D +:104EF00083FB222720F991E0922790FB83F980938E +:104F0000F2029923D1F08091F20281608093F20243 +:104F100014C08D5141E050E060E070E08A019B01D7 +:104F200004C0000F111F221F331F8A95D2F7C90139 +:104F3000B8010E94DC1F0E941C1C81E006C061E0D9 +:104F400070E080E090E0F5CF80E01F910F91089530 +:104F500080E0089580E00895CF93C82F80910203E8 +:104F6000813069F018F08230C9F184C0E0911701F6 +:104F7000F09118018081823209F07EC007C0E09173 +:104F80001701F09118018081823261F48C2F0E9408 +:104F9000A827811104C08C2F0E94F4261DC081E037 +:104FA00090E01AC08C2F0E94AA27811114C0C4312E +:104FB00079F048F4CB3079F0C03109F061C082E07B +:104FC0008093020308C0C93219F0C83321F058C0D9 +:104FD0001092020355C081E0817054C0C93291F132 +:104FE00020F5C43179F1B0F4C73009F047C08EE143 +:104FF00080931E0182E380931D018AE080931C014F +:1050000084E180931B0188E080931A0188E28093F9 +:10501000190134C0CE51C63088F5EC2FF0E0EA54C7 +:10502000FE4F80818093010329C0CE34E9F020F443 +:10503000CB3421F56AE013C0C13579F0C235F1F403 +:1050400061E00DC080910103882319F010920103E3 +:1050500015C081E08093020315C061E006C0809115 +:1050600001030E942E260AC06AE0809101030E947B +:10507000A42604C01092020380E004C081E002C0B4 +:1050800080E0AACFCF9108950E94D423811102C05D +:105090000E94B0230E94F02380931D0380FF02C072 +:1050A000869501C080E00C941C0380911D03982F0D +:1050B0009695292F30E0233031054CF49F5F990FEE +:1050C0008170892B816080931D030E94F42380915D +:1050D0001D0386950C941C0380911D03982F9695B3 +:1050E00091F09158990F8170892B80931D038E7FC9 +:1050F00091E009F490E080911D0390FB80F980938A +:105100001D030E94F42380911D0386950C941C03BB +:1051100080911D03982F909590FB80F980931D033B +:105120000E94F42380911D0380FF02C0869501C078 +:1051300080E00C941C0390911D03892F86958F5F4E +:105140008F779170843028F4880F892B80931D030A +:1051500002C090931D0380911D038E7F91E009F49E +:1051600090E080911D0390FB80F980931D030E94C5 +:10517000F42380911D0386950C941C0320911D033C +:10518000922F96958927982F990F822F8170892BBE +:1051900080931D038E7F91E009F490E080911D03C0 +:1051A00090FB80F980931D030E94F42380911D03DE +:1051B00086950C941C0380911D0386950895505884 +:1051C000BB27AA270ED0D1C1C2D130F0C7D120F061 +:1051D00031F49F3F11F41EF4B7C10EF4E095E7FBE4 +:1051E0009FC1E92FD3D180F3BA17620773078407F1 +:1051F000950718F071F49EF5EBC10EF4E0950B2EB7 +:10520000BA2FA02D0B01B90190010C01CA01A00118 +:105210001124FF27591B99F0593F50F4503E68F173 +:105220001A16F040A22F232F342F4427585FF3CFB4 +:10523000469537952795A795F0405395C9F77EF485 +:105240001F16BA0B620B730B840BBAF09150A1F0CE +:10525000FF0FBB1F661F771F881FC2F70EC0BA0F54 +:10526000621F731F841F48F4879577956795B795DC +:10527000F7959E3F08F0B3CF9395880F08F09927D4 +:10528000EE0F97958795089527D108F481E008954A +:105290000CD06BC163D140F05AD130F021F45F3FA4 +:1052A00019F03EC1511195C14FC170D198F39923A6 +:1052B000C9F35523B1F3951B550BBB27AA276217DA +:1052C0007307840738F09F5F5F4F220F331F441F1F +:1052D000AA1FA9F333D00E2E3AF0E0E830D0915057 +:1052E0005040E695001CCAF729D0FE2F27D0660F44 +:1052F000771F881FBB1F261737074807AB07B0E883 +:1053000009F0BB0B802DBF01FF2793585F4F2AF098 +:105310009E3F510568F004C15CC15F3FECF3983ECD +:10532000DCF3869577956795B795F7959F5FC9F7F5 +:10533000880F911D9695879597F90895E1E0660F7E +:10534000771F881FBB1F621773078407BA0720F0F7 +:10535000621B730B840BBA0BEE1F88F7E095089560 +:1053600004D06894B11135C1089518D188F09F57C1 +:1053700090F0B92F9927B751A0F0D1F0660F771FA1 +:10538000881F991F1AF0BA95C9F712C0B13081F081 +:105390001FD1B1E008951CC1672F782F8827B85F0F +:1053A00039F0B93FCCF3869577956795B395D9F7E2 +:1053B0003EF490958095709561957F4F8F4F9F4FEC +:1053C0000895E89409C097FB3EF4909580957095F8 +:1053D00061957F4F8F4F9F4F9923A9F0F92F96E941 +:1053E000BB279395F695879577956795B795F111B6 +:1053F000F8CFFAF4BB0F11F460FF1BC06F5F7F4F53 +:105400008F4F9F4F16C0882311F096E911C0772364 +:1054100021F09EE8872F762F05C0662371F096E86D +:10542000862F70E060E02AF09A95660F771F881F3C +:10543000DAF7880F9695879597F9089588D018F030 +:1054400011F08CD038F480C0C4C0E92F9FD0B0F3E5 +:105450005523C9F3E7FB6217730784079507A8F183 +:1054600099F3E92FFF2788232AF03197660F771FDA +:10547000881FDAF7952F5527442332F0915050407A +:10548000220F331F441FD2F7BB27E91BF50B621B0A +:10549000730B840BB109C1F222F4620F731F841FD6 +:1054A000B11D31972AF0660F771F881FBB1FEFCF02 +:1054B000915050405AF041F0882332F0660F771F28 +:1054C000881F91505040C1F7939530C086957795CD +:1054D00067959F5FD9F7F8CF990F0008550FAA0B72 +:1054E000E0E8FEEF16161706E807F907C0F01216F7 +:1054F0001306E407F50798F0621B730B840B950BFA +:1055000039F40A2661F0232B242B252B21F408954E +:105510000A2609F4A140A6958FEF811D811D0895EB +:1055200097F99F6780E870E060E008959F3F31F051 +:10553000915020F4879577956795B795880F911DC1 +:105540009695879597F908959FEF80EC089500242C +:105550000A941616170618060906089500240A94D8 +:1055600012161306140605060895092E0394000C5E +:1055700011F4882352F0BB0F40F4BF2B11F460FFED +:1055800004C06F5F7F4F8F4F9F4F089557FD905816 +:10559000440F551F59F05F3F71F04795880F97FBF7 +:1055A000991F61F09F3F79F08795089512161306B1 +:1055B0001406551FF2CF4695F1DF08C016161706E0 +:1055C0001806991FF1CF8695710561050894089515 +:1055D000E894BB2766277727CB0197F908957CDFEE +:1055E00008F48FEF08950BD0C0CFB1DF28F0B6DFFD +:1055F00018F0952309F094CFA7CF1124EACFC6DF86 +:10560000A0F3959FD1F3950F50E0551F629FF001D5 +:10561000729FBB27F00DB11D639FAA27F00DB11D2E +:10562000AA1F649F6627B00DA11D661F829F2227B7 +:10563000B00DA11D621F739FB00DA11D621F839F3E +:10564000A00D611D221F749F3327A00D611D231F14 +:10565000849F600D211D822F762F6A2F11249F5762 +:1056600050408AF0E1F088234AF0EE0FFF1FBB1F85 +:10567000661F771F881F91505040A9F79E3F510524 +:1056800070F04ECFA6CF5F3FECF3983EDCF38695EB +:1056900077956795B795F795E7959F5FC1F7FE2BCF +:1056A000880F911D9695879597F90895FA01EE0F49 +:1056B000FF1F30962105310599F16115710561F4DF +:1056C0008038BFE39B0749F168949038810561F009 +:1056D0008038BFEF9B0741F0992342F5FF3FE1057A +:1056E0003105210511F1E8940894E795D901AA2321 +:1056F00029F4AB2FBE2FF85FD0F310C0FF5F70F41A +:10570000A695E0F7F73950F019F0FF3A38F49F7793 +:105710009F930CD00F9007FC905808953EF014CF43 +:1057200060E070E080E89FE308954FE79F775F9324 +:105730004F933F932F939ED02F913F914F915F9125 +:1057400052DF05C019F40EF0EBCE42CFFDCE26DFBE +:10575000C8F39638C0F707F80F92E8942BE33AEABB +:1057600048EB5FE74EDF0F920F920F924DB75EB797 +:105770000F92C0D0EAE0F1E016D04F915F91EF9127 +:10578000FF91E595EE1FFF1F49F0FE57E0684427A3 +:10579000EE0F441FFA95E1F74195550B32D00F906B +:1057A00007FE26C00895DF93CF931F930F93FF92B8 +:1057B000EF92DF927B018C01689405C0DA2EEF0135 +:1057C0001EDFFE01E894A5912591359145915591F3 +:1057D000AEF3EF0106DDFE019701A801DA9479F737 +:1057E000DF90EF90FF900F911F91CF91DF9108957F +:1057F0009B01AC0160E070E080E89FE349CD90CE72 +:1058000095CECCDEE8F39923D9F3940F511DBBF369 +:105810009150504094F059F0882332F0660F771F72 +:10582000881F91505040C1F79E3F510544F7880FA3 +:10583000911D9695879597F908955F3FACF0983E36 +:105840009CF0BB27869577956795B79508F4B1606E +:105850009395C1F7BB0F58F711F460FFE8CF6F5F66 +:105860007F4F8F4F9F4FE3CFB4CE0EF05FCE6CCE05 +:10587000689456CE93DEC8F39923D1F3C6F3DF9331 +:10588000CF931F930F93FF92C92FDD2788232AF010 +:105890002197660F771F881FDAF720E030E040E895 +:1058A0005FEB9FE3883920F0803E30F021968F77C0 +:1058B00087DCE2E3F1E003C083DCEFE5F1E073DFD6 +:1058C0008B01BE01EC01FB2E6F5771097595771F97 +:1058D000880B990B78DD28E132E741E35FE38FDE47 +:1058E000AF2D9801AE01FF900F911F91CF91DF91E5 +:1058F00078DC3BCEFA01DC01AA0FBB1F9B01AC0197 +:10590000BF5728F422273327442750781FC0B751A8 +:1059100088F4AB2F0024469537952795011CA39555 +:10592000D2F3002069F0220F331F441FB395DAF33E +:105930000DD045CC61307105A0E88A07B94630F436 +:105940009B01AC016627772788279078309621F055 +:1059500020833183428353830895AA1BBB1B51E1EB +:1059600007C0AA1FBB1FA617B70710F0A61BB70BCF +:10597000881F991F5A95A9F780959095BC01CD0174 +:10598000089597FB072E16F4009407D077FD09D0F1 +:105990000E94AD2C07FC05D03EF4909581959F4F59 +:1059A0000895709561957F4F0895EE0FFF1F059044 +:1059B000F491E02D0994F999FECF92BD81BDF89A3A +:1059C000992780B50895A8E1B0E042E050E00C943A +:1059D000032D262FF999FECF92BD81BDF89A01972C +:1059E00000B4021639F01FBA20BD0FB6F894FA9A27 +:1059F000F99A0FBE08950196272F0E94EA2C0C9465 +:105A0000E92CDC01CB01FC01F999FECF06C0F2BD07 +:105A1000E1BDF89A319600B40D9241505040B8F76C +:065A20000895F894FFCF89 +:105A2600640007000CFF0000003F643E10CC10A984 +:105A360010751041100101DF022808140A321E00F9 +:105A460002040507090B0C0E1011131517181A1C62 +:105A56001D1F2123242628292B2D2F30323435379C +:105A6600393B1F0F03764F5F6F7F496943790959A9 +:105A760053633149803F5D8B803FF8BF803FCAE169 +:105A8600803F73ED803FCAE1803FF8BF803F5D8B6A +:105A9600803F3149803F0000803FF16D7F3F75EACE +:105AA6007E3F4C827E3F833F7E3F84287E3F833FFE +:105AB6007E3F4C827E3F75EA7E3FF16D7F3F000060 +:105AC600803F3F4D36394305F604C00487041A0467 +:105AD60033044C04650401020304050607080900A3 +:00000001FF diff --git a/keyboard/planck/keymaps/unicode/compiled.hex b/keyboard/planck/keymaps/unicode/compiled.hex new file mode 100644 index 0000000000..a32eb3a4a9 --- /dev/null +++ b/keyboard/planck/keymaps/unicode/compiled.hex @@ -0,0 +1,1185 @@ +:100000000C9493040C94D7040C94D7040C94D70448 +:100010000C94D7040C94D7040C94D7040C94D704F4 +:100020000C94D7040C94D7040C948A0F0C945C1095 +:100030000C94741D0C94D7040C94D7040C94D7041E +:100040000C94D7040C94D7040C94D7040C94D704C4 +:100050000C94D7040C94DC1D0C94D7040C94D70496 +:100060000C94D7040C94D7040C94D7040C94D704A4 +:100070000C94D7040C94D7040C94D7040C94D70494 +:100080000C94D7040C94D7040C94D7040C94D70484 +:100090000C94D7040C94D7040C94D7040C94D70474 +:1000A0000C94D7040C94D7040C94D704500558052D +:1000B00062056A0579058305C005C005C005C00550 +:1000C000C005C0059105B405BC05C910EB10D911D8 +:1000D000EB10D91130115311D911A811BB11A5146E +:1000E000A514D414D41413153315891689163E1586 +:1000F0008916EE15EE1555165E1689168316FB1534 +:10010000FB15FB15FB15FB15FB15FB15FB15FB156F +:10011000FB15FB15FB15FB15FB15FB15FB150B164E +:1001200019162016271631160108011501090119A3 +:100130000112010F02080215020902190212020F30 +:10014000002B0014001A000800150017001C0018EE +:10015000000C00120013002A0029000400160007FA +:100160000009000A000B000D000E000F00330034E0 +:1001700000E1001D001B0006001900050011001021 +:100180000036003700380028000530E000E200E3C8 +:100190000003302C002C0004305000510052004F5E +:1001A000002B00718077806680708067806A806C29 +:1001B00080758079803B800880290061807280731F +:1001C000807480648068806E80658069806F80271D +:1001D00080E1007A8078806380768062806B806DB9 +:1001E000802C802E802F8028000100E000E200E3B8 +:1001F0000003302C002C0004305000510052004FFE +:10020000002B0034003600370013001C0009000AE0 +:1002100000060015000F002A002900040012000843 +:100220000018000C0007000B001700110016003822 +:1002300000E100330014000D000E001B000500104B +:10024000001A0019001D0028000530E000E200E35C +:100250000003302C002C0004305000510052004F9D +:100260000035021E021F0220022102220223022464 +:10027000022502260227022A004C003A003B003CDD +:10028000003D003E003F002D022E022F02300231C1 +:1002900002010040004100420043004400450001CB +:1002A0000001000100010001000100010001000146 +:1002B000000100010001000100AB00AA00A900AE8E +:1002C0000035001E001F0020002100220023002412 +:1002D000002500260027002A004C003A003B003C85 +:1002E000003D003E003F002D002E002F0030003169 +:1002F000000100400041004200430044004500016D +:1003000000010001000100010001000100010001E5 +:10031000000100010001000100AB00AA00A900AE2D +:10032000001E001E001E001E001E001E001E001EDD +:10033000001E001E001E001E00000014001A00080F +:1003400000150017001C0018000C00120013002FED +:10035000000E3004001600070009000A000B000D13 +:10036000000E000F00330034000D300000000006C6 +:100370000019000000000011001000000000000043 +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000000004D +:1003B000000000000000000000000000000000003D +:1003C000000000000000000000000000000000002D +:1003D000000000000000000000000000000000001D +:1003E000000000000000000000000000000000000D +:1003F00000000000000000000000000000000000FD +:1004000000000000000000000000000000000000EC +:1004100000000000000000000000000000000000DC +:1004200000000000000000000000000000000000CC +:1004300000000000000000000000000000000000BC +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:10048000000000000000000000000000000000006C +:10049000000000000000000000000000000000005C +:1004A000000000000000000000000000000000004C +:1004B000000000000000000000000000000000003C +:1004C000000000000000000000000000000000002C +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000000000000000000000FC +:1005000000000000000000000000000000000000EB +:1005100000000000000000000000000000000000DB +:1005200000000000000000000000000000000000CB +:1005300000000000000000000000000000000000BB +:1005400000000000000000000000000000000000AB +:10055000000000000000000000000000000000009B +:10056000000000000000000000000000000000008B +:10057000000000000000000000000000000000007B +:10058000000000000000000000000000000000006B +:10059000000000000000000000000000000000005B +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000000000000000001B +:1005E000000000000000000000000000000000000B +:1005F00000000000000000000000000000000000FB +:1006000000000000000000000000000000000000EA +:1006100000000000000000000000000000000000DA +:1006200000000000000000000000000000000000CA +:1006300000000000000000000000000000000000BA +:1006400000000000000000000000000000000000AA +:10065000000000000000000000000000000000009A +:10066000000000000000000000000000000000008A +:10067000000000000000000000000000000000007A +:10068000000000000000000000000000000000006A +:10069000000000000000000000000000000000005A +:1006A000000000000000000000000000000000004A +:1006B000000000000000000000000000000000003A +:1006C000000000000000000000000000000000002A +:1006D000000000000000000000000000000000001A +:1006E000000000000000000000000000000000000A +:1006F00000000000000000000000000000000000FA +:1007000000000000000000000000000000000000E9 +:1007100000000000000000000000000000000000D9 +:1007200000000000000000000000000000000000C9 +:1007300000000000000000000000000000000000B9 +:100740000001000050010001000100010001000152 +:10075000000100010001004C000100010001002027 +:10076000502150135012500030013002300C300133 +:1007700000010027502650235024502850295001B2 +:100780000001000100010001000100010001000161 +:100790000001000100010001000100010001000151 +:1007A000002803540068006500200050006C0061C0 +:1007B000006E0063006B0020004B00650079006252 +:1007C000006F0061007200640000002C034F007293 +:1007D00000740068006F006C0069006E00650061C5 +:1007E00000720020004B006500790062006F00611C +:1007F000007200640073000000040309040902543D +:1008000000030100A0FA090400000103010100092E +:100810002111010001223F000705810308000A0998 +:100820000401000103010200092111010001224D10 +:10083000000705820308000A090402000103000002 +:100840000009211101000122360007058303080079 +:100850000A1201100100000008EDFE6060010001B5 +:1008600002000105010980A101850216010026B7D9 +:10087000001A01002AB700751095018100C0050C0F +:100880000901A1018503160100269C021A01002A14 +:100890009C02751095018100C005010902A10109A2 +:1008A00001A1000509190129051500250195057506 +:1008B0000181029501750381010501093009311596 +:1008C00081257F95027508810609381581257F9558 +:1008D0000175088106050C0A38021581257F9501EE +:1008E00075088106C0C005010906A101050719E0C8 +:1008F00029E7150025019508750181029501750804 +:1009000081010508190129059505750191029501D7 +:10091000750391010507190029FF150025FF9506AC +:1009200075088100C00011241FBECFEFDAE0DEBFE2 +:10093000CDBF04B603FE24C08091E4019091E5018F +:10094000A091E601B091E7018730904BA740B04BF2 +:10095000B9F41092E4011092E5011092E6011092B0 +:10096000E70114BE84B7877F84BF88E10FB6F8948F +:1009700080936000109260000FBEE0E0F8E30995FC +:1009800011E0A0E0B1E0ECEBF9E402C005900D92BB +:10099000AE33B107D9F711E0AEE3B1E001C01D926B +:1009A000A43EB107E1F70E94D00C0C94DC240C9417 +:1009B0000000089581E0089508950C94D9040C94E2 +:1009C000DA040C94DC040E94522323E030E0281B5C +:1009D0003109220F209340010895282F2F988091EC +:1009E0008000211108C0877F8093800010928D00C5 +:1009F00010928C001BC0886080938000233019F413 +:100A00008FEF9FEF0FC083E090E0821B9109880F6A +:100A1000991F2FEF3FEFA90102C0569547958A9580 +:100A2000E2F7CA0190938D0080938C000C94E3044C +:100A30000E94E30484E080933F0110923E010895F8 +:100A4000279A2F988FEF9FEF9093870080938600CF +:100A50008AE08093800089E1809381000E94BB221C +:100A60000C9418050E9420056E9A769A0C94C6057F +:100A7000CF93DF93EC010E946B1EBE0180E090E0FB +:100A8000DF91CF910C94B41A462F50E04F305105AE +:100A900008F076C0DC01FA01EA5AFF4F0C948C246E +:100AA00012968C91882309F46BC081E090E007C016 +:100AB00012968C91882309F463C082E090E00E9432 +:100AC00038055EC012968C91882309F459C084E0E1 +:100AD00090E0F5CF12968C91882311F083E00EC040 +:100AE00083E00E94521B40E164E083E00E94080A18 +:100AF00047C012968C91882321F084E00E94311B1C +:100B0000F2CF84E0EECF12968C91882331F085EEFF +:100B10000E9449130E94122333C085EE0E941114D3 +:100B20002FC012968C91882359F184E00E94521BA9 +:100B300083E00E94521B80E10E94521B85E00E94CC +:100B4000311B0E94581E811102C00E94391E0E9452 +:100B5000701E90E09093E3018093E201806880939F +:100B6000E2010E94741E0CC012968C91882341F001 +:100B700085E00E94521B04C012968C91811103C023 +:100B800080E090E0089588E291E00895089581E082 +:100B900008950C94C7050895282F882339F090E014 +:100BA0002A3010F44D9608950697089587E290E054 +:100BB0000895AF92BF92DF92EF92FF920F931F932F +:100BC000CF93DF938C01FC01C081D181CE010E94C3 +:100BD000ED1BBE010E94EE06EC01B8010E94C905A2 +:100BE000882309F4EBC0F8018281882309F4A0C0AE +:100BF00080914D0181111FC0C431F0E5DF0709F07C +:100C0000D7C00E94CB0581E080934D010E94A61DB4 +:100C100090934C0180934B01109244011092460135 +:100C200010924501109248011092470110924A011A +:100C300010924901C3C080914B0190914C010E94D8 +:100C4000B21D883C910570F480914401E82FF0E0DA +:100C5000EE0FFF1FEB5BFE4FD183C0838F5F80934E +:100C60004401ACC0C13080E8D80708F451C0F80195 +:100C70008281882309F460C05E01E894B7F880910E +:100C80004301813079F050F08230C1F482EE0E944D +:100C9000491387E50E94491387E50EC082EE0E9442 +:100CA00049130CC080EE0E94491381EE0E94491343 +:100CB00088E10E94491388E10E9411148CE0E82E1B +:100CC000F12CC5010E2C02C0969587950A94E2F787 +:100CD0008F700E94CC05D82E0E9449138D2D0E9442 +:100CE0001114F4E0EF1AF1088CEFE8168FEFF80614 +:100CF00041F780914301813029F010F0823041F4B6 +:100D000082EE04C080EE0E94111481EE0E94111444 +:100D1000C438E0E5DE0721F0C538D04501F137C021 +:100D2000F8018281882361F01092410182E01EC0A7 +:100D3000C130F0E8DF0760F3C43880E5D80761F41C +:100D400080914101811106C086E20E94491386E22A +:100D50000E94111482E018C0C538D045C1F4F801D2 +:100D60008281882331F01092420180E20E94601457 +:100D700025C080914201811106C087E20E9449137B +:100D800087E20E94111480E20E94671417C081E07C +:100D90008093410180934201C801DF91CF911F915F +:100DA0000F91FF90EF90DF90BF90AF900C94DF0415 +:100DB000C130F0E8DF0708F05FCFAACF80E0DF9115 +:100DC000CF911F910F91FF90EF90DF90BF90AF9068 +:100DD00008950C9432050C94DD0408959CE0799FED +:100DE000F001112490E3899FE00DF11D1124E60F1D +:100DF000F11DEE0FFF1FEF5BFE4F8591949108955B +:100E0000880F991FFC01EF53F0408591949108954C +:100E1000880F991FFC01EF5BFE4F85919491089517 +:100E20000F931F93CF93DF93EC01811521E392077A +:100E3000A0F5C11580E3D80708F0D7C0C83ED1059A +:100E4000D8F4C03ED10508F003C2C83AD10578F401 +:100E5000C53AD10508F06AC0C130D10509F463C0B4 +:100E600008F4F3C1C430D10508F0F2C1EEC1CB3BA8 +:100E7000D10508F466C0E9C1C11590E2D90708F0B0 +:100E8000AFC0C11521E0D20708F0E2C1C03FD105D3 +:100E900008F4DBC18E0110651BC2C03880E5D8079D +:100EA00000F5C03790E5D90708F0A3C0C11520E5CB +:100EB000D20709F4ACC050F4CE01905480319F4069 +:100EC00008F0C3C1DF708E01106A02C2C13080E534 +:100ED000D80709F4AAC0C43190E5D90708F4ABC01B +:100EE000B4C1C33820E5D20709F48EC050F4C1382C +:100EF00090E5D90709F482C008F083C000E011ED45 +:100F0000E7C1C03181E5D80708F49FC1C11597E555 +:100F1000D90708F432C1CE0190578115904108F0ED +:100F200094C1DF708FC101E010E0D2C1C53AD10594 +:100F300009F490C1C63AD10509F08FC102E810E466 +:100F4000C7C1C83AD10509F48BC1C93AD10509F422 +:100F50008AC1CA3AD10509F489C1CB3AD10509F44D +:100F600088C1CC3AD10509F487C1CD3AD10509F43D +:100F700086C1C03BD10509F485C1CE3AD10509F43B +:100F800084C1CF3AD10509F483C1C13BD10509F42D +:100F900082C1C23BD10509F481C1C33BD10509F42B +:100FA00080C1C43BD10509F47FC1C53BD10509F41B +:100FB0007EC1C63BD10509F47DC1C73BD10509F40B +:100FC0007CC1C83BD10509F47BC1C93BD10509F4FB +:100FD0007AC1CA3BD10509F479C100E014E478C1B3 +:100FE000CE019F700E94080774C1DD278E01106C2E +:100FF0006FC1CF70DD278E01146D6AC100E010ED66 +:1010000067C100E012ED64C100E013ED61C10E9410 +:10101000F4168FEF94E32CE0815090402040E1F7EC +:1010200000C000000E94011E53C18091C401816074 +:101030008093C4014DC10E94581E811102C00E94BC +:10104000391E0E94701E90E09093E3018093E201AC +:10105000C23080E5D80721F48091E201816086C02A +:10106000C43090E5D90721F48091E20182607EC00E +:10107000C63020E5D20721F48091E201846076C079 +:10108000C83080E5D80719F48091E20127C0CA3042 +:1010900090E5D90721F48091E201806167C0CC30EE +:1010A00020E5D20721F48091E20180625FC0CE305A +:1010B00080E5D80721F48091E201806457C0C031F7 +:1010C00090E5D90721F48091E20180684FC0C231D8 +:1010D00020E5D20729F48091E2018460886046C04F +:1010E000C33080E5D80721F48091E2018E7F3EC0B5 +:1010F000C53090E5D90721F48091E2018D7F36C09B +:10110000C73020E5D20721F48091E2018B7F2EC009 +:10111000C93080E5D80719F48091E20126C0CB30B0 +:1011200090E5D90721F48091E2018F7E1FC0CD3078 +:1011300020E5D20721F48091E2018F7D17C0CF30E6 +:1011400080E5D80721F48091E2018F7B0FC0C13187 +:1011500090E5D90721F48091E2018F7707C0C33170 +:10116000D04531F48091E2018B7F877F8093E2014B +:101170008091E2010E94741EABC08D2F99278F7061 +:10118000992781309105D9F49E012370332702C03D +:10119000880F991F2A95E2F79C688E0144E0000FA2 +:1011A000111F4A95E1F700271370802B912B53E014 +:1011B000CC0FDD1F5A95E1F7C076DD272FC08230B6 +:1011C000910531F4DC2FCC278E01016F106A80C0AD +:1011D0008330910569F4CE018370992701E010E016 +:1011E00002C0000F111F8A95E2F7C8019C680FC06A +:1011F00084309105B9F4CE018370992701E010E0A5 +:1012000002C0000F111F8A95E2F7C8019A6823E017 +:10121000CC0FDD1F2A95E1F7C07ED7708C010C2B17 +:101220001D2B56C08530910531F4DC2FCC278E0163 +:10123000046F106A4DC0069709F04AC0CF71DD27D0 +:10124000DC2FCC278E01106243C000E010E040C0CC +:101250008E013EC001E810E43BC003E810E438C052 +:1012600002EE14E435C009EE14E432C00AEE14E4D0 +:101270002FC005EB14E42CC006EB14E429C007EBE7 +:1012800014E426C00CEC14E423C00DEC14E420C0DC +:1012900003E815E41DC00AE815E41AC002E915E4E4 +:1012A00017C004E915E414C001E216E411C003E21A +:1012B00016E40EC004E216E40BC005E216E408C012 +:1012C00006E216E405C007E216E402C00AE216E4EC +:1012D000C801DF91CF911F910F9108959CE0799FF4 +:1012E000F001112490E3899FE00DF11D1124E60F18 +:1012F000F11DEE0FFF1FEF5BFE4F85919491803E35 +:101300009105E0F4803C910558F58133910509F48D +:101310006FC048F48932910509F463C08A3291059F +:1013200009F46DC072C089339105E9F082389105E6 +:10133000D1F08533910509F44DC067C0833E910516 +:1013400081F138F4803E9105B9F0823E9105D9F0E3 +:101350005CC0863E910561F1873E9105A1F155C0C3 +:101360000E94000708952091E20120FD02C021FFA4 +:101370004CC080EE90E049C08091E20180FFF9CF3F +:1013800089E390E042C08091E20182FF0EC080912B +:10139000E20184FF03C080E090E037C083EE90E07C +:1013A00034C08091E20182FFF2CF82EE90E02DC046 +:1013B0008091E20183FF0BC08091E20184FDEBCFBD +:1013C00087EE90E022C08091E20183FFF5CF86EEA8 +:1013D00090E01BC08091E20185FF07C089E290E0A8 +:1013E00014C08091E20185FFF9CF85E390E00DC044 +:1013F0008091E20186FF07C08AE290E006C08091FA +:10140000E20186FFF9CF81E390E00E941007089582 +:10141000CF92DF92EF92FF920F931F9301E010E0C3 +:1014200020E030E06801790104C0CC0CDD1CEE1C2A +:10143000FF1C8A95D2F704C0000F111F221F331F13 +:101440006A95D2F70C291D292E293F29C090AF019A +:10145000D090B001E090B101F090B201C022D12251 +:10146000E222F322842FC016D106E206F30641F4ED +:101470001F910F91FF90EF90DF90CF900C94311B54 +:101480001F910F91FF90EF90DF90CF900C94521B23 +:101490000C94E104E82FF0E0E05EFE4F8081E82F3D +:1014A000EF70F0E082958F7021E030E0A90102C07A +:1014B000440F551F8A95E2F740A308950F931F9399 +:1014C000CF93DF9385B7806885BF85B7806885BF78 +:1014D000C3E0D0E001E010E0FE01E05EFE4F80815D +:1014E000E82FEF70F0E021A182958F70A80102C073 +:1014F000440F551F8A95E2F7CA01822B81A38C2FD6 +:101500000E944A0A219740F78BE090E061E070E08A +:10151000FC01EC5EFE4F2081E22FEF70F0E042A173 +:1015200022952F70DB0102C0AA0FBB1F2A95E2F79C +:101530009D01242B22A3019758F7DF91CF911F9192 +:101540000F910C94E906EF92FF920F931F93CF93A4 +:10155000DF9306E511E0C3E0EE24E394F12CD5E03F +:101560008C2F0E944A0A8BE090E040E050E0FC01A2 +:10157000EC5EFE4F6081E62FEF70F0E020A130E0DE +:1015800062956F7002C0359527956A95E2F720FD48 +:1015900009C09701082E02C0220F331F0A94E2F7F8 +:1015A000422B532B019718F7F801929182918F01EA +:1015B0008417950721F051834083D09300018C2F2D +:1015C0000E944A0AC15060F68091000187FD2CC03C +:1015D0008150809300018F3F39F08FE99FE00197A0 +:1015E000F1F700C0000020C0809154019091550196 +:1015F00090935D0180935C01809152019091530121 +:1016000090935B0180935A01809150019091510118 +:10161000909359018093580180914E0190914F0110 +:1016200090935701809356010E94EB0681E0DF9171 +:10163000CF911F910F91FF90EF900895E82FF0E068 +:10164000EE0FFF1FEA5AFE4F8081918108950895A1 +:101650000F931F93CF930EE511E0C0E0F801929134 +:1016600082918F010E941E1DC80FF1E006351F07F1 +:10167000A9F78C2FCF911F910F910895809166014A +:101680000895CF93DF9300D01F92CDB7DEB79C01B2 +:101690008091D901843019F593E099833B832A83A3 +:1016A0009093E9008FEF9091E800815095FD06C07E +:1016B00095ED9A95F1F700008111F5CF8091E80042 +:1016C00085FF0DC040E050E063E070E0CE01019680 +:1016D0000E947A0D8091E8008E778093E8000F9049 +:1016E0000F900F90DF91CF910895CF93DF9300D0AB +:1016F0001F92CDB7DEB72091D901243021F522E029 +:1017000029839B838A8383E08093E9008FEF909104 +:10171000E800815095FD06C095ED9A95F1F700001F +:101720008111F5CF8091E80085FF0DC040E050E0C9 +:1017300063E070E0CE0101960E947A0D8091E8008E +:101740008E778093E8000F900F900F90DF91CF91EC +:1017500008952091D9012430F1F422E02093E9008A +:101760002FEF3091E800215035FD06C035ED3A9558 +:10177000F1F700002111F5CF2091E80025FF0BC003 +:1017800040E050E065E070E00E947A0D8091E80052 +:101790008E778093E8000895CF93DF932091D9014D +:1017A000243039F521E02093E9002FEF3091E80053 +:1017B000215035FD06C035ED3A95F1F700002111B5 +:1017C000F5CF2091E80025FF14C0EC0140E050E087 +:1017D00068E070E00E947A0D8091E8008E77809337 +:1017E000E80088E0FE01AEE5B1E001900D928A9537 +:1017F000E1F7DF91CF9108958091D801811109C05F +:101800000E940F0F0E946C0F8091E2008460809311 +:10181000E20008951092D8010895089508950C9457 +:10182000691D42E061EC81E00E94890E42E061ECBA +:1018300082E00E94890E42E061EC83E00C94890E04 +:101840008091DB01833009F453C030F4813071F0B2 +:10185000823009F48CC008958A3009F478C08B3046 +:1018600009F45EC0893009F09AC020C08091DA0185 +:10187000813A09F094C08091E800877F8093E80066 +:101880008091DE019091DF01892B21F468E08EE5E3 +:1018900091E003C060E080E090E070E00E94C50D40 +:1018A0008091E8008B778093E80008958091DA01B9 +:1018B000813209F074C08091DE019091DF01892BA3 +:1018C00009F06DC08091E800877F8093E8008091E7 +:1018D000E80082FD05C08091D9018111F8CF5FC079 +:1018E0008091F100809366018091E8008B7753C06E +:1018F0008091DA01813A09F052C08091DE01909125 +:10190000DF01892B09F04BC08091E800877F80932D +:10191000E8008091E80080FFFCCF80910B0136C089 +:101920008091DA018132D9F58091DE019091DF0159 +:10193000892BA9F58091E800877F8093E8000E94B9 +:10194000BE0E8091DC0180930B010C94F416809103 +:10195000DA01813221F58091E800877F8093E800E9 +:101960000E94BE0E8091DD018093670108958091F1 +:10197000DA01813AA1F48091E800877F8093E80042 +:101980008091E80080FFFCCF809167018093F10097 +:101990008091E8008E778093E8000C94BE0E089545 +:1019A00084B7877F84BF88E10FB6F8948093600086 +:1019B000109260000FBE90E080E80FB6F89480931C +:1019C0006100909361000FBE0E9461120E940F0F90 +:1019D0000E946C0F8091E20084608093E200789412 +:1019E0000E94F2110E94631281E091E00E940D12A8 +:1019F0008091D901853069F40E942A1D8091D70118 +:101A00008823B1F30E94581D882391F30E94640D2E +:101A1000EFCF0E946B12ECCF292F332723303105F3 +:101A2000C9F064F42130310581F02230310509F02C +:101A300043C084E590E02DEF37E042C0213231050C +:101A4000F1F02232310541F137C082E190E021E529 +:101A500038E036C099278130910541F082309105F8 +:101A600041F0892B49F5E9EFF7E005C0EBECF7E031 +:101A700002C0E1EAF7E0849190E09F0121C0633069 +:101A8000D8F4E62FF0E0EE0FFF1FE35DFE4F20815C +:101A9000318189E090E014C0633070F470E0FB01A4 +:101AA000EE0FFF1FE95DFE4F20813181FB01EC5DF0 +:101AB000FE4F808190E004C080E090E020E030E0C4 +:101AC000FA0131832083089580E189BD82E189BDD7 +:101AD00009B400FEFDCF8091D8008F7D8093D8009F +:101AE0008091E00082608093E0008091E00081FDC1 +:101AF000FCCF0895CF92DF92EF92FF920F931F9346 +:101B0000CF93DF93EC018B016A010E94DD0E8111FE +:101B100033C0C114D10439F0F60180819181081BD2 +:101B2000190BC80FD91FE12CF12C0115110519F162 +:101B30008091E80085FD16C08091E8008E77809343 +:101B4000E800C114D10449F0F60180819181E80ECA +:101B5000F91EF182E08285E00FC00E94DD0E88232D +:101B600021F30AC089918093F10001501109FFEF20 +:101B7000EF1AFF0ADACF80E0DF91CF911F910F912A +:101B8000FF90EF90DF90CF9008952091E001309189 +:101B9000E1012617370748F06115710539F42091E6 +:101BA000E8002E772093E80001C0B90140E06115FC +:101BB0007105A9F12091D901222309F443C02530F0 +:101BC00009F442C02091E80023FD40C02091E800C4 +:101BD00022FD32C02091E80020FFE9CF4091F300C0 +:101BE0002091F20030E0342BFC01CF01611571052A +:101BF00059F02830310540F481918093F100615013 +:101C000071092F5F3F4FF1CF41E02830310509F0D6 +:101C100040E02091E8002E772093E800C8CF4111E2 +:101C2000C9CF0AC08091D901882361F0853061F065 +:101C30008091E80083FD0AC08091E80082FFF2CF26 +:101C400080E0089582E0089583E0089581E008959A +:101C50002091E0013091E1012617370748F0611526 +:101C6000710539F42091E8002E772093E80001C037 +:101C7000B901FC0120E06115710591F18091D90154 +:101C8000882309F440C0853009F43FC08091E80002 +:101C900083FD3DC08091E80082FD2FC08091E80067 +:101CA00080FFE9CF2091F3008091F20090E0922B29 +:101CB0006115710559F08830910540F42491209305 +:101CC000F1003196615071090196F2CF21E0089739 +:101CD00009F020E08091E8008E778093E800CBCF78 +:101CE0002111CCCF0AC08091D901882361F08530C1 +:101CF00061F08091E80083FD0AC08091E80082FFD6 +:101D0000F2CF80E0089582E0089583E0089581E0B5 +:101D10000895982F973058F59093E900981739F067 +:101D20007091EC002091ED005091F00003C0242F41 +:101D3000762F50E021FF19C03091EB003E7F3093A9 +:101D4000EB003091ED003D7F3093ED003091EB00E2 +:101D500031603093EB007093EC002093ED005093D2 +:101D6000F0002091EE0027FF07C09F5FD3CF8F7058 +:101D70008093E90081E0089580E008958091DA0180 +:101D800087FF11C08091E80082FD05C08091D901D4 +:101D90008111F8CF11C08091E8008B770BC0809142 +:101DA000D901882349F08091E80080FFF8CF809125 +:101DB000E8008E778093E80008952091E400309148 +:101DC000E50095E64091EC00842F817040FF22C031 +:101DD0008091E80080FD1CC08091D901882391F09A +:101DE000853091F08091EB0085FD10C04091E400BA +:101DF0005091E5004217530729F39A01915011F7CA +:101E000084E0089582E0089583E0089581E00895D4 +:101E100080E008954091E80042FFDECF08950E94DF +:101E20007D0F0E94850FE0EEF0E08081816080836D +:101E3000E8EDF0E080818F77808319BCA7EDB0E0FA +:101E40008C918E7F8C9380818F7E80831092D801BD +:101E500008950F931F93CF93DF930E947D0F0E94ED +:101E6000850FC8EDD0E088818F778883888180686E +:101E7000888388818F7D888319BC1092D901109244 +:101E8000D5011092D7011092D60100EE10E0F801B2 +:101E900080818B7F808388818160888342E060E0DD +:101EA00080E00E94890EE1EEF0E080818E7F8083E9 +:101EB000E2EEF0E0808181608083808188608083B1 +:101EC000F80180818E7F8083888180618883DF91A3 +:101ED000CF911F910F910895E8EDF0E080818F7E02 +:101EE0008083E7EDF0E080818160808384E082BFC1 +:101EF00081E08093D8010C94290FE8EDF0E0808117 +:101F00008E7F80831092E20008951092DA00109282 +:101F1000E10008951F920F920FB60F9211242F9394 +:101F20003F934F935F936F937F938F939F93AF9361 +:101F3000BF93EF93FF938091E10082FF0BC08091EC +:101F4000E20082FF07C08091E1008B7F8093E10077 +:101F50000E94F1118091DA0080FF1FC08091D800AB +:101F600080FF1BC08091DA008E7F8093DA00809121 +:101F7000D90080FF0DC080E189BD82E189BD09B42F +:101F800000FEFDCF81E08093D9010E94FC0B05C0CB +:101F900019BC1092D9010E940A0C8091E10080FFC7 +:101FA00019C08091E20080FF15C08091E2008E7F11 +:101FB0008093E2008091E20080618093E200809152 +:101FC000D80080628093D80019BC85E08093D90145 +:101FD0000E940E0C8091E10084FF30C08091E200ED +:101FE00084FF2CC080E189BD82E189BD09B400FE77 +:101FF000FDCF8091D8008F7D8093D8008091E10043 +:102000008F7E8093E1008091E2008F7E8093E200DA +:102010008091E20081608093E2008091D501882365 +:1020200011F084E007C08091E30087FD02C081E0E9 +:1020300001C083E08093D9010E940F0C8091E100E0 +:1020400083FF29C08091E20083FF25C08091E100D9 +:10205000877F8093E10082E08093D9011092D501BF +:102060008091E1008E7F8093E1008091E2008E7F7D +:102070008093E2008091E20080618093E20042E080 +:1020800060E080E00E94890E8091F000886080937B +:10209000F0000E940D0CFF91EF91BF91AF919F91C5 +:1020A0008F917F916F915F914F913F912F910F9001 +:1020B0000FBE0F901F9018951F920F920FB60F92A0 +:1020C00011242F933F934F935F936F937F938F933D +:1020D0009F93AF93BF93CF93DF93EF93FF93C09101 +:1020E000E900CF708091EC00D82FD17080FDD0E84E +:1020F0001092E9008091F000877F8093F00078943F +:102100000E94A0101092E9008091F00088608093F6 +:10211000F000CD2BCF70C093E900FF91EF91DF91DC +:10212000CF91BF91AF919F918F917F916F915F916F +:102130004F913F912F910F900FBE0F901F901895C8 +:102140001F93CF93DF93CDB7DEB7AA970FB6F8945E +:10215000DEBF0FBECDBFEAEDF1E088E08E0F9091BB +:10216000F10091938E13FBCF0E94200C8091E80028 +:1021700083FF1FC18091DA019091DB01492F50E06C +:102180004A30510508F015C1FA01EB59FF4F0C9484 +:102190008C24803881F0823809F00BC18091DE01F7 +:1021A0008F708093E9008091EB0085FB882780F990 +:1021B0001092E90006C08091D6019091D70191114B +:1021C00082609091E800977F9093E8008093F100FF +:1021D0001092F100C8C0282F2D7F09F0EAC0882393 +:1021E00019F0823061F0E5C08091DC01813009F0A6 +:1021F000E0C0933009F080E08093D7012BC080913C +:10220000DC01811127C08091DE018F7009F4D1C0FB +:102210008093E9002091EB0020FF1CC0933021F453 +:102220008091EB00806214C09091EB0090619093DC +:10223000EB0021E030E0A90102C0440F551F8A9550 +:10224000E2F74093EA001092EA008091EB00886088 +:102250008093EB001092E9008091E800877F86C0B0 +:102260008111A7C01091DC011F778091E300807875 +:10227000812B8093E3008091E800877F8093E800C2 +:102280000E94BE0E8091E80080FFFCCF8091E300A9 +:1022900080688093E300111102C082E001C083E0F6 +:1022A0008093D90186C08058823008F082C0809126 +:1022B000DC019091DD018C3D53E0950779F583E0D9 +:1022C0008A838AE289834FB7F894DE01139620E06F +:1022D0003EE051E2E32FF0E050935700E49120FFFD +:1022E00003C0E295EF703F5FEF708E2F90E0EA3011 +:1022F00010F0C79601C0C0968D939D932F5F243137 +:1023000049F74FBF8091E800877F8093E8006AE239 +:1023100070E0CE0101960E94C50D14C0AE014F5F62 +:102320005F4F6091DE010E940C0DBC01009709F423 +:1023300040C09091E800977F9093E80089819A814E +:102340000E94280E8091E8008B778093E80031C0CE +:10235000803879F58091E800877F8093E80080914C +:10236000D5018093F1008091E8008E778093E8009A +:102370000E94BE0E1EC081111CC09091DC019230E3 +:10238000C0F48091E800877F8093E8009093D501A6 +:102390000E94BE0E8091D501811106C08091E3009C +:1023A00087FD02C081E001C084E08093D9010E94D2 +:1023B000110C8091E80083FF0AC08091E800877FBC +:1023C0008093E8008091EB0080628093EB00AA96F6 +:1023D0000FB6F894DEBF0FBECDBFDF91CF911F9136 +:1023E00008950895CF938091D9018823A1F0C091D9 +:1023F000E900CF709091EC00892F817090FD80E80A +:10240000C82B1092E9008091E80083FD0E94A01083 +:10241000CF70C093E900CF91089590936D018093A0 +:102420006C010895E0916C01F0916D01309721F0FD +:102430000190F081E02D099480E00895E0916C0115 +:10244000F0916D01309721F00280F381E02D099425 +:102450000895E0916C01F0916D01309721F00480B6 +:10246000F581E02D0994089520916A0130916B0166 +:102470008217930771F090936B0180936A01E0914A +:102480006C01F0916D01309721F00680F781E02D0D +:10249000099408952091680130916901821793078A +:1024A00071F09093690180936801E0916C01F09163 +:1024B0006D01309721F00084F185E02D0994089595 +:1024C00008950C9460120E949D1D0E945E0A0E9455 +:1024D000231E0C94BB225F926F927F928F929F92E9 +:1024E000AF92BF92CF92DF92EF92FF920F931F9322 +:1024F000CF93DF9300D000D01F92CDB7DEB70E94FC +:10250000A30A97E7C92E91E0D92E03E010E0AA2490 +:10251000A394B12C502E802F0E941E0B4C01F6016B +:10252000729062906F016826792661147104A1F49B +:102530000150110978F78FEF89838A831B820E94EB +:10254000A61D8160782F9D838C8349815A816B8180 +:102550008D810E941B1338C08091C40181FD0E94AF +:10256000270B2BE030E07501022E02C0EE0CFF1CA1 +:102570000A94E2F7C70186219721892B09F1298363 +:102580005A828E209F2091E0892809F490E09B8355 +:102590000E94A61D8160782F9D838C8349815A817A +:1025A0006B818D810E941B13000F111FF801E159EF +:1025B000FE4F80819181E826F926F182E08204C0F5 +:1025C0002150310980F6B4CF0E94FC1F10916E019A +:1025D0000E9412121817D1F00E94121280936E01FD +:1025E0000F900F900F900F900F90DF91CF911F9150 +:1025F0000F91FF90EF90DF90CF90BF90AF909F90A2 +:102600008F907F906F905F900C94480A0F900F907E +:102610000F900F900F90DF91CF911F910F91FF902E +:10262000EF90DF90CF90BF90AF909F908F907F9072 +:102630006F905F900895CF93DF93CDB7DEB72B9760 +:102640000FB6F894DEBF0FBECDBF4F8358876987A2 +:102650007A878B87DE01119686E0FD0111928A95BB +:10266000E9F785E0FE01379601900D928A95E1F732 +:1026700049815A816B817C818D819E810E94921952 +:102680002B960FB6F894DEBF0FBECDBFDF91CF9172 +:102690000895CF93882309F4C2C0C82F823859F413 +:1026A0000E94121281FDBBC089E30E946C1C0E9433 +:1026B000EF1C89E30CC0833879F40E94121280FD6C +:1026C000AEC083E50E946C1C0E94EF1C83E50E9453 +:1026D000891CCF910C94EF1C843859F40E9412127B +:1026E00082FD9DC087E40E946C1C0E94EF1C87E461 +:1026F000EECF8CEF8C0F813A48F48C2F0E9423226E +:1027000081118DC08C2F0E946C1CE3CF80E28C0F56 +:10271000883048F4C77081E001C0880FCA95EAF795 +:102720000E94A81CD6CF8BE58C0F833078F4C53A75 +:1027300029F0C63A31F083E890E005C081E890E0E6 +:1027400002C082E890E0CF910C94341288E58C0F9F +:10275000833108F064C0C83A39F1C93A41F1CA3A44 +:1027600049F1CB3A51F1CC3A59F1CD3A61F1C03B44 +:1027700069F1CE3A71F1CF3A79F1C13B81F1C23BB7 +:1027800089F1C33B91F1C43B99F1C53BA1F1C63B33 +:10279000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B93 +:1027A000C9F180E090E038C082EE90E035C089EE5B +:1027B00090E032C08AEE90E02FC085EB90E02CC014 +:1027C00086EB90E029C087EB90E026C08CEC90E08F +:1027D00023C08DEC90E020C083E891E01DC08AE822 +:1027E00091E01AC082E991E017C084E991E014C039 +:1027F00081E292E011C083E292E00EC084E292E0B6 +:102800000BC085E292E008C086E292E005C087E254 +:1028100092E002C08AE292E0CF910C944A12CF91EA +:102820000895882309F44BC0823859F40E9412128B +:1028300081FF45C089E30E946C1C0E94EF1C89E364 +:102840000CC0833871F40E94121280FF38C083E5F7 +:102850000E946C1C0E94EF1C83E50E94891C0C9452 +:10286000EF1C843859F40E94121282FF28C087E4BA +:102870000E946C1C0E94EF1C87E4EFCF9CEF980F26 +:10288000913A58F390E2980F983050F4877091E0A5 +:1028900001C0990F8A95EAF7892F0E94AE1CDFCFFD +:1028A0009BE5980F933020F480E090E00C94341274 +:1028B000885A833120F480E090E00C944A12089505 +:1028C000882321F00E94A81C0C94EF1C08958823F3 +:1028D00021F00E94AE1C0C94EF1C08957F928F9201 +:1028E0009F92AF92BF92CF92DF92EF92FF920F939F +:1028F0001F93CF93DF931F92CDB7DEB77C01C62E17 +:10290000772EFC01058102950F70128111110E9432 +:10291000C51C0E94651C882379F0112369F080E2B0 +:102920008C0D883048F082E00E944E1C0E94651C8D +:1029300091E0D82ED92601C0D12CE72DE295EF7079 +:10294000F0E0E159FF4F0C948C24872D807F072DF8 +:102950000F70882311F00295007F112389F0002366 +:1029600009F499C180E28C0D883020F4802F0E94F8 +:10297000A81C03C0802F0E94B81C0E94EF1C8BC1B2 +:102980008C2D0E941114002309F4C3C180E28C0D28 +:10299000883020F4802F0E94AE1C03C0802F0E943C +:1029A000BE1C0E94EF1CB5C1872D807F972D9F70A4 +:1029B000803211F4892F03C0892F8295807FCC202B +:1029C00021F0F1E0CF16A1F01DC0112339F0002352 +:1029D00019F1013009F50E94D81C9BC1002319F0A0 +:1029E000013009F496C189830E94DB1C898110C1E2 +:1029F000112321F0063008F08CC10EC0053008F01C +:102A000088C106C1112359F0002331F0F7019581E7 +:102A100090FF41C19F7095830E9460147AC100238A +:102A200009F4F6C03EC1872D86958695837090E0A7 +:102A3000009719F0019761F06CC1112321F08C2DE2 +:102A4000972D937002C080E090E00E94341261C123 +:102A5000112321F08C2D972D937002C080E090E01F +:102A60000E944A1256C18C2D112319F00E94041F96 +:102A700002C00E946C1F0E94F11F4BC1872D837002 +:102A800009F052C0111145C18C2D82958695877031 +:102A9000880F880F9C2D9F70892E912CA12CB12C12 +:102AA000082E04C0880C991CAA1CBB1C0A94D2F7DF +:102AB000C4FE14C00FE010E020E030E0B901A8012E +:102AC00004C0440F551F661F771F8A95D2F7CB01AC +:102AD000BA01609570958095909503C060E070E0B4 +:102AE000CB01272D26952695237030E02230310525 +:102AF00069F02330310589F0682979298A299B29D1 +:102B00002130310571F00E94DA1A03C16829792950 +:102B10008A299B290E94F61AFCC00E94DA1AC50174 +:102B2000B4010E94BE1AF5C0112319F0872D8170DF +:102B300001C08695882309F4ECC08C2D829586957A +:102B40008770880F880F9C2D9F70892E912CA12C47 +:102B5000B12C082E04C0880C991CAA1CBB1C0A941A +:102B6000D2F7C4FE14C00FE010E020E030E0B9015D +:102B7000A80104C0440F551F661F771F8A95D2F71E +:102B8000CB01BA01609570958095909503C060E087 +:102B900070E0CB01272D269526952370422F50E01B +:102BA0004230510569F04330510589F0682979298F +:102BB0008A299B294130510571F00E94B41BA9C09C +:102BC000682979298A299B290E94D01BA2C00E94CA +:102BD000B41BC501B4010E94981B9BC08C2D90E0D2 +:102BE000FC01E05EF109E531F10508F050C0E15863 +:102BF000FF4F0C948C240C2D0F70872D8F71112397 +:102C000021F00E94311B802F07CF0E94521B802F82 +:102C10000E9467147EC0112341F0053008F079C08E +:102C2000872D8F710E94771B74C0063008F071C029 +:102C3000F7CF112339F0872D8F710E94311B69C0A6 +:102C40001123C9F3872D8F710E94521B62C011237B +:102C500029F0872D8F710E941C1B5BC00E94121BE4 +:102C600058C0112351F0172D1F71812F0E94311B65 +:102C700063E0812F0E94451C4CC081E00E944E1CE5 +:102C8000023008F446C082E00E944E1C42C011236C +:102C900031F0002381F28C2D0E9449133AC00023A9 +:102CA00089F28C2D0E94111434C0472D4F706C2D69 +:102CB000C7010E9444050E94361A2BC0111129C079 +:102CC000472D4F7050E042305105B9F04CF441159A +:102CD000510581F041305105E1F40E94E32219C011 +:102CE0004330510569F04430510599F48C2D0E9410 +:102CF00035230FC00E94CC220CC00E94FF2209C0C5 +:102D00000E94122306C0472D4F706C2DC7010E94F0 +:102D1000ED06DD20F9F00E94411C80FD1BC0F7018B +:102D200012820E943B1C0E94311BC7010E94B916EF +:102D30000E943B1C0F90DF91CF911F910F91FF904C +:102D4000EF90DF90CF90BF90AF909F908F907F904B +:102D50000C94521B0F90DF91CF911F910F91FF9018 +:102D6000EF90DF90CF90BF90AF909F908F907F902B +:102D700008950F931F93CF93DF93EC01888199817E +:102D80002B813C81232BB9F09F3F11F48F3F99F0A9 +:102D9000CE010E94D905882371F0688179818A81EA +:102DA0000E94371C8C010E94EC1B0E94B31AB801D0 +:102DB000CE010E946E14DF91CF911F910F91089563 +:102DC0000E94C51C0E94D51C0E949A1C0E94EF1CE8 +:102DD0000E94A2200E94F11F80E090E00E94341225 +:102DE00080E090E00C944A120E94B51C0C94E0160E +:102DF0000E942C1C292F22952F7030E02C30310599 +:102E00004CF42A3031056CF422503109223031055E +:102E1000A8F407C02C30310569F02F30310551F08E +:102E20000DC0803F69F018F4803E40F409C0843F33 +:102E300029F406C093FB882780F9089580E008955F +:102E400081E00895CF93DF9300D000D01F92CDB7DB +:102E5000DEB70F900F900F900F900F90DF91CF91F2 +:102E60000895CF93DF9300D000D000D0CDB7DEB768 +:102E700026960FB6F894DEBF0FBECDBFDF91CF917F +:102E800008951F93CF93DF93C091770116E080914F +:102E90007801C81799F0D0E01C9FF0011D9FF00D3C +:102EA0001124E758FE4F40815181628173818481F2 +:102EB00095810E9431172196C770E9CFDF91CF919C +:102EC0001F9108954091A9015091AA016091AB0111 +:102ED0007091AC018091AD019091AE010C943117CD +:102EE0008091AE0182958F7009F054C08091AB0142 +:102EF000882309F44FC080917701A09178016091F7 +:102F0000A9017091AA014091AC015091AD01B6E0C8 +:102F10008A1709F43FC090E041155105C1F17F3F88 +:102F200011F46F3FA1F1B89FF001B99FF00D11248A +:102F3000E758FE4F218172132AC02081621327C0F7 +:102F40002281211124C0238134812417350710F4F4 +:102F500021503109241B350B283C3105C0F4209148 +:102F6000AE012F7020612093AE0126E0289FF00172 +:102F7000299FF00D1124E258FE4F80818F708061EF +:102F8000808389EA91E00E94B9160C94411701965A +:102F90008770BECF0895CF92DF92EF92FF920F938A +:102FA0001F93CF93DF93CDB7DEB762970FB6F89438 +:102FB000DEBF0FBECDBF8C0185E0F801DE011D969E +:102FC00001900D928A95E1F7D8014C9111965C9190 +:102FD000119712966C9112971396CD90DC901497DE +:102FE0003091A9017091AA018091AC019091AD013D +:102FF000009709F46BC17F3F19F43F3F09F466C1A4 +:10300000E090AB01EE2009F4C0C02091AE01C816DB +:10301000D90628F0F601E81BF90BCF0104C0809512 +:1030200090958C0D9D1DFF24F394883C910578F0BC +:10303000F12C207F09F0C6C07C2DD98AC88A8989E5 +:103040000E94221789EA91E00E94B916B1C0822F2E +:10305000807F09F046C0751314C0341312C061118B +:1030600010C02F7020612093AE010E94621789EA80 +:1030700091E00E94B9168091AE01D80115968C930B +:103080002EC0CD2819F15F3F11F44F3FF9F0F62E15 +:1030900061111CC0809177012091780136E0821780 +:1030A00009F45AC090E0389FF001399FF00D1124C7 +:1030B000E758FE4F7181571306C07081471303C054 +:1030C0007281711103C001968770E9CFF62E6623D5 +:1030D00009F418C18091AE0181608093AE01F12C9A +:1030E00011C1751308C0341306C0611104C080916A +:1030F000AE01D801C3C04D875E878D859E856A8BE2 +:103100000E94F8166A898823E1F16623D1F12091A3 +:10311000AE01822F82958F7090E0029774F08091BB +:10312000A9019091AA0198878F831986DB86CA86A8 +:103130002C87CE0107960E94B91686E0F801A9EA0D +:10314000B1E001900D928A95E1F70E9470170E94FC +:103150006217FF24F394D6C04D875E878D859E85C8 +:103160000E942C1C292F22952F7030E0223031052F +:103170000CF0BCC09F7009F0B6C0805E883008F4C7 +:10318000C1C0C8010E94B916E4CFC816D90608F418 +:1031900053C0F601E81BF90BCF01883C910508F4F8 +:1031A00050C0F12C7C2DD98AC88A89890E942217A7 +:1031B000E9EAF1E086E0DF011D928A95E9F70E94D5 +:1031C0006217A0C0751314C0341312C0611110C06F +:1031D0008091AE01F8018583C8010E94B91686E08E +:1031E000E9EAF1E0DF011D928A95E9F7FE2C8AC039 +:1031F0004D875E878D859E856A8B0E94F8166A8949 +:10320000882309F4BECF662309F4BBCF2091AE0119 +:10321000822F82958F7090E002970CF48ECF809170 +:10322000A9019091AA019A8389831B82DD82CC82B5 +:103230002E83CE0101967FCF809590958C0D9D1D9C +:10324000ACCFF62E662309F49CCF75132EC0341331 +:103250002CC02091AE0120FD1FC0822F82958F705F +:10326000D9F0D80115962C9315978F3049F08F5FC0 +:10327000982F9295907F822F8F70892B15968C9323 +:10328000C8010E94B91686E0F801A9EAB1E00190F0 +:103290000D928A95E1F793CF86E0F801A9EAB1E0B3 +:1032A00001900D928A95E1F72DC04D875E878D853F +:1032B0009E850E94F816811140CF8091AE018160F9 +:1032C0008093AE01C8010E94B9161CC0662309F4A0 +:1032D00058CF4D875E878D859E850E94F81688237E +:1032E00009F44FCF2ACF811148CF0CC024303105CB +:1032F0000CF047CF9F7009F440CFF8019581907F83 +:1033000009F03BCF8F2D62960FB6F894DEBF0FBE4B +:10331000CDBFDF91CF911F910F91FF90EF90DF9084 +:10332000CF9008951F93CF93DF93CDB7DEB72C973F +:103330000FB6F894DEBF0FBECDBF4F8358876987A5 +:103340007A878B879C87CE0107960E94CB178823AC +:1033500069F08F8198852A853B85232BF1F19F3F6A +:1033600009F063C08F3F09F060C037C086E0FE01FE +:103370003796DE01119601900D928A95E1F76F81E3 +:103380007885EA85FB85309741F17F3F11F46F3FE7 +:1033900021F12091780130E0C901019687709927C9 +:1033A0004091770150E08417950709F447C069837D +:1033B0007A83FD83EC8396E0929FD001939FB00DBA +:1033C0001124A758BE4FFE01319601900D929A9597 +:1033D000E1F7809378010E94411716E08091770110 +:1033E000909178018917C1F1189FC0011124875865 +:1033F0009E4F0E94CB17882379F1E09177011E9FA1 +:10340000F0011124E758FE4F4081518162817381A0 +:10341000848195810E9431178091770190E0019617 +:103420008770992780937701D9CF4F815885698517 +:103430007A858B859C850E943117CFCF0E94F41628 +:103440001092780110927701E9EAF1E086E0DF015D +:103450001D928A95E9F7C1CF2C960FB6F894DEBF7E +:103460000FBECDBFDF91CF911F910895EF92FF92D4 +:103470000F931F93CF93DF938C01009709F46CC0D7 +:10348000F12CEE24E394E8012196F801849184372D +:1034900040F4843008F051C0813081F0823019F15D +:1034A0005BC0853709F444C0A8F19CE7980F9037BA +:1034B00008F052C08F770E94111441C00E5F1F4F59 +:1034C000FE01C49180E28C0F883048F4C7708E2DC5 +:1034D00001C0880FCA95EAF70E94C81C14C08C2F3F +:1034E0000E9449132DC00E5F1F4FFE01C49180E260 +:1034F0008C0F883058F4C7708E2D01C0880FCA9584 +:10350000EAF70E94CE1C0E94EF1C1AC08C2F0E946A +:10351000111416C00E5F1F4FFE01C491CC2381F021 +:103520008FE99FE00197F1F700C00000C150F6CF8E +:103530000E5F1F4FFE01F49003C00E9449138E01DD +:103540008F2D882309F49FCFEFE9FFE03197F1F742 +:1035500000C000008150F5CFDF91CF911F910F91F6 +:10356000FF90EF90089508956093B3017093B401B4 +:103570008093B5019093B6010C94E0160F931F93BE +:103580000091B3011091B4012091B5013091B601C1 +:10359000DC01CB01802B912BA22BB32B8093B301A9 +:1035A0009093B401A093B501B093B6011F910F9110 +:1035B0000C94E0160F931F930091B3011091B40186 +:1035C0002091B5013091B601DC01CB01802391231C +:1035D000A223B3238093B3019093B401A093B501C8 +:1035E000B093B6011F910F910C94E0160F931F93A7 +:1035F0000091B3011091B4012091B5013091B60151 +:10360000DC01CB0180279127A227B3278093B30148 +:103610009093B401A093B501B093B6011F910F919F +:103620000C94E0161092AF011092B0011092B1010B +:103630001092B2010C94E01641E050E060E070E0BE +:1036400004C0440F551F661F771F8A95D2F7409319 +:10365000AF015093B0016093B1017093B2010C942B +:10366000E01641E050E060E070E004C0440F551FF8 +:10367000661F771F8A95D2F78091AF019091B001B4 +:10368000A091B101B091B201482B592B6A2B7B2B31 +:103690004093AF015093B0016093B1017093B201B8 +:1036A0000C94E01641E050E060E070E004C0440F8C +:1036B000551F661F771F8A95D2F7409550956095E4 +:1036C00070958091AF019091B001A091B101B0913E +:1036D000B201482359236A237B234093AF015093BF +:1036E000B0016093B1017093B2010C94E01641E017 +:1036F00050E060E070E004C0440F551F661F771F64 +:103700008A95D2F78091AF019091B001A091B1015B +:10371000B091B201482759276A277B274093AF0110 +:103720005093B0016093B1017093B2010C94E01614 +:103730000F931F930091AF011091B0012091B1013F +:103740003091B201DC01CB01802B912BA22BB32B4A +:103750008093AF019093B001A093B101B093B201F7 +:103760001F910F910C94E0160F931F930091AF01DE +:103770001091B0012091B1013091B201DC01CB0177 +:1037800080239123A223B3238093AF019093B001B0 +:10379000A093B101B093B2011F910F910C94E01668 +:1037A0000F931F930091AF011091B0012091B101CF +:1037B0003091B201DC01CB0180279127A227B327EA +:1037C0008093AF019093B001A093B101B093B20187 +:1037D0001F910F910C94E0160895CF92DF92EF9213 +:1037E000FF920F931F93CF93DF938C01C090B3018F +:1037F000D090B401E090B501F090B6018091AF0196 +:103800009091B001A091B101B091B201C82AD92A1A +:10381000EA2AFB2ACFE1D0E0D701C6010C2E04C072 +:10382000B695A795979587950A94D2F780FF06C01D +:10383000B8018C2F0E946E09019721F4219760F73F +:1038400080E001C08C2FDF91CF911F910F91FF90ED +:10385000EF90DF90CF900895CF93DF93EC010E941B +:10386000ED1BBE010E946E09DF91CF910895CB013F +:103870000E942C1C08958091B701859585958595AA +:1038800008958091B7018770089598E0899F90010D +:103890001124262B2093B7010C94311B2091B701E2 +:1038A000809582238093B701982F977069F430E058 +:1038B000482F552747FD50952417350729F0859542 +:1038C000859585950C94521B08959091B70197703A +:1038D00081E009F480E0089520910C0130910D0100 +:1038E000F90132969FEF40E05191581789F09F3FC0 +:1038F00019F4511101C0942F4F5F4630A9F79F3F33 +:1039000039F0F901E90FF11D97FDFA9582830895C9 +:10391000089520910C0130910D01F9013296285F34 +:103920003F4F9081981301C010823196E217F30740 +:10393000C1F7089581E090E0E0910C01F0910D0154 +:10394000E80FF91F1082019688309105A9F70895B4 +:103950009091C301892B8093C30108958095909124 +:10396000C30189238093C30108951092C301089570 +:103970009091C201892B8093C20108958095909106 +:10398000C20189238093C20108951092C201089553 +:103990009091C101892B8093C101089580959091E8 +:1039A000C10189238093C10108951092C101089536 +:1039B0008093B80108951092B801089580910C0188 +:1039C00090910D01FC0131969C01285F3F4F80E0F2 +:1039D000919191118F5FE217F307D1F70895E0916C +:1039E0000C01F0910D018091C3018083E0910C01E5 +:1039F000F0910D0190818091C201892B8083E0912B +:103A00000C01F0910D0190818091C101892B80837F +:103A10008091B801882361F0E0910C01F0910D01D3 +:103A20009081892B80830E94DE1C81111092B80145 +:103A300080910C0190910D010C941E1220E00097D2 +:103A400039F0AC0141505109842395232F5FF7CF02 +:103A5000822F08958091D901843039F11092C501E7 +:103A600020E488E190E00FB6F894A8958093600078 +:103A70000FBE2093600080E00E94ED0480E00E9471 +:103A8000480A83B7817F846083BF83B7816083BF27 +:103A90007894889583B78E7F83BF88E10FB6F894BA +:103AA00080936000109260000FBE089508950895FD +:103AB00080E00E94ED040E94561D0E94A30A0E940D +:103AC000571D0E94280B91E0811101C090E0892FC1 +:103AD00008950E94F41680E00E94ED040E94BB222B +:103AE0000E9412120C94480A1F920F920FB60F9266 +:103AF00011248F939F93AF93BF938091C501811140 +:103B000013C08091C6019091C701A091C801B091E6 +:103B1000C9014196A11DB11D8093C6019093C701B3 +:103B2000A093C801B093C901BF91AF919F918F91AC +:103B30000F900FBE0F901F90189582E084BD93E008 +:103B400095BD9AEF97BD80936E0008952FB7F894B6 +:103B50008091C6019091C701A091C801B091C9019F +:103B60002FBF0895CF92DF92EF92FF920F931F9392 +:103B70002FB7F8944091C6015091C7016091C801D8 +:103B80007091C9012FBF6A017B01EE24FF248C01D3 +:103B900020E030E0C016D106E206F30610F44150F2 +:103BA00051099A01281B390BC9011F910F91FF90F0 +:103BB000EF90DF90CF9008951F920F920FB60F9263 +:103BC00011248F939F93AF93BF938091C6019091DF +:103BD000C701A091C801B091C9010196A11DB11DF5 +:103BE0008093C6019093C701A093C801B093C90107 +:103BF000BF91AF919F918F910F900FBE0F901F902B +:103C000018950E940F0FF8942FEF87EA91E6215044 +:103C100080409040E1F700C0000087E090EBDC01BD +:103C20008093E4019093E501A093E601B093E7014E +:103C30009CE088E10FB6F894A895809360000FBED1 +:103C400090936000FFCF0E94581E811102C00E9415 +:103C5000391E0E94631E8093C4010E94701E8093CF +:103C6000E2010E94671E682F70E080E090E00C94F3 +:103C7000B41A6DEE7EEF80E090E00E94C62460E012 +:103C800082E090E00E94B42460E083E090E00E9433 +:103C9000B42460E084E090E00E94B42460E085E019 +:103CA00090E00E94B42460E086E090E00C94B4249C +:103CB00080E090E00E94AE2421E08D3E9E4F09F00E +:103CC00020E0822F089582E090E00C94A62483E007 +:103CD00090E00C94A624682F83E090E00C94B42428 +:103CE00084E090E00C94A624682F84E090E00C948B +:103CF000B42486E090E00C94A624682F86E090E03F +:103D00000C94B4248091CC0180FF0BC06091110110 +:103D100085E0689FB0011124759567957595679545 +:103D20002BC081FF09C06091110185E0689FB0013F +:103D300011247595679520C082FF07C0609111011D +:103D400085E0689FB001112417C09091CD0199239F +:103D5000D1F060911001961788F72091110185E04C +:103D6000289F90011124929FA001939F500D112430 +:103D700070E0CA010E9478246038710540F4611532 +:103D8000710539F002C065E070E0862F08958FE775 +:103D9000089581E008958091CC0180FF08C0609172 +:103DA0000F0170E0759567957595679521C081FF46 +:103DB00006C060910F0170E07595679519C082FF8C +:103DC00004C060910F0170E010C09091CD01992363 +:103DD000C1F060910E019617A0F780910F01899FA5 +:103DE000C001112470E00E9478246038710528F425 +:103DF0006115710521F0862F08958FE7089581E000 +:103E0000089561E070E0F4CF803F21F40E94821EAB +:103E1000819504C0813F29F40E94821E8093D001C5 +:103E20000895823F21F40E94821E819504C0833F41 +:103E300029F40E94821E8093CF010895893F19F4CE +:103E40000E94CB1E05C08A3F31F40E94CB1E819593 +:103E50008093D10108958B3F21F40E94CB1E819560 +:103E600004C08C3F29F40E94CB1E8093D201089598 +:103E7000843F21F48091CE01816017C0853F21F4F9 +:103E80008091CE01826011C0863F21F48091CE01E5 +:103E900084600BC0873F21F48091CE01886005C00B +:103EA000883F31F48091CE0180618093CE010895E6 +:103EB0008D3F21F48091CC0181600BC08E3F21F4B5 +:103EC0008091CC01826005C08F3F29F48091CC01A4 +:103ED00084608093CC010895803F39F48091D001B3 +:103EE00087FF6CC01092D00169C0813F29F4809196 +:103EF000D0011816BCF362C09091CF01823F29F423 +:103F000097FF5CC01092CF0159C0833F19F4191676 +:103F1000CCF354C0893F41F48091D10118160CF0C4 +:103F20004DC01092D1014AC08A3F29F48091D1013D +:103F300087FF44C0F6CF8B3F39F48091D20187FFD1 +:103F40003DC01092D2013AC08C3F29F48091D20139 +:103F50001816BCF333C0843F21F48091CE018E7FCC +:103F600017C0853F21F48091CE018D7F11C0863F1F +:103F700021F48091CE018B7F0BC0873F21F480918B +:103F8000CE01877F05C0883F31F48091CE018F7EBE +:103F90008093CE0113C08D3F21F48091CC018E7FA0 +:103FA0000BC08E3F21F48091CC018D7F05C08F3FE7 +:103FB00029F48091CC018B7F8093CC018091CF013B +:103FC00081110EC08091D00181110AC08091D10170 +:103FD000811106C08091D201811102C01092CD01E1 +:103FE00008958EEC91E00E9429120E94A61D9093E4 +:103FF000CB018093CA0108951F93CF93DF938091E3 +:10400000CA019091CB010E94B21DAC019091CD01EB +:10401000992321F02091120130E006C02091130174 +:104020008AE0289F900111244217530708F486C0A4 +:104030008091CF01C091D001D091D1011091D201D6 +:10404000811107C0C11176C0D11174C0111172C0A5 +:1040500075C09F3F19F09F5F9093CD01181624F40F +:104060000E94821E8093CF018091CF0187FF05C0FF +:104070000E94821E81958093CF011C1624F40E9419 +:10408000821E8093D0018091D00187FF05C00E94DD +:10409000821E81958093D0016091CF01662339F112 +:1040A000C091D001CC2319F1772767FD7095872F38 +:1040B000972F0E94892323E333E343E35FE30E94C6 +:1040C000ED230E9456236093CF016C2F772767FD65 +:1040D0007095872F972F0E94892323E333E343E3CF +:1040E0005FE30E94ED230E9456236093D0011D16CA +:1040F00024F40E94CB1E8093D1018091D10187FFCF +:1041000005C00E94CB1E81958093D101111624F425 +:104110000E94CB1E8093D2018091D20187FF05C0FF +:104120000E94CB1E81958093D201DF91CF911F9188 +:104130000C94F11F9F3F09F08ECF96CFDF91CF9166 +:104140001F910895EEECF1E085E0DF011D928A9564 +:10415000E9F71092CD011092CC010895833081F1DE +:1041600028F4813059F08230D1F00895853009F477 +:1041700049C0B8F1863009F456C008958091130102 +:10418000262F30E0280F311D2F3F310524F4680F12 +:104190006093130108958FEF809313010895809128 +:1041A0001201262F30E0280F311D2F3F310524F456 +:1041B000680F6093120108958FEF809312010895A4 +:1041C00080911101262F30E0280F311D2F3F31053E +:1041D00024F4680F6093110108958FEF809311010B +:1041E000089580911001262F30E0280F311D2F3FB8 +:1041F000310524F4680F6093100108958FEF8093C8 +:104200001001089580910F01262F30E0280F311DF5 +:104210002F3F310524F4680F60930F0108958FEF4D +:1042200080930F01089580910E01262F30E0280F12 +:10423000311D2F3F310524F4680F60930E0108955E +:104240008FEF80930E010895833011F128F48130AF +:1042500049F0823091F00895853081F120F1863067 +:10426000C1F1089580911301681720F4861B809393 +:104270001301089510921301089580911201681797 +:1042800020F4861B80931201089510921201089564 +:1042900080911101681720F4861B80931101089505 +:1042A00010921101089580911001681720F4861B67 +:1042B00080931001089510921001089580910F01CC +:1042C000681720F4861B80930F01089510920F0148 +:1042D000089580910E01681720F4861B80930E01CB +:1042E000089510920E0108950F931F938732D8F509 +:1042F0008E3108F085C08E3009F46FC098F4873095 +:1043000009F459C08B3009F48FC0863009F093C08E +:104310008091C401817F8E7F8093C40181E080936E +:10432000D4018AC0863109F47FC068F4803109F075 +:1043300082C08091C40183FB222720F991E092275B +:1043400090FB83F953C0893109F46EC08B3109F0B9 +:1043500072C08091C40181FB222720F991E092274D +:1043600090FB81F943C0883309F45EC050F4893270 +:1043700009F45CC0853309F459C0873209F456C08A +:104380005AC0833409F452C028F48A3308F453C065 +:10439000895337C0883409F04EC00E94F4160FEFDD +:1043A00013ED20E3015010402040E1F700C0000071 +:1043B0000E94011E39C09091C401892F809581709F +:1043C00080FB90F929F0966098609093C40134C006 +:1043D000997F977F9093C40127C08091C40182FB8D +:1043E000222720F991E0922790FB82F98093C40163 +:1043F0009923D1F08091C40181608093C40114C0DD +:104400008D5141E050E060E070E08A019B0104C002 +:10441000000F111F221F331F8A95D2F7C901B8015F +:104420000E94B41A0E94F41681E006C061E070E0B8 +:1044300080E090E0F5CF80E01F910F91089580E03B +:10444000089580E00895CF93C82F8091D4018130E2 +:1044500069F018F08230C9F184C0E0910C01F0914C +:104460000D018081823209F07EC007C0E0910C010D +:10447000F0910D018081823261F48C2F0E941F2205 +:10448000811104C08C2F0E9474211DC081E090E036 +:104490001AC08C2F0E942122811114C0C43179F0DE +:1044A00048F4CB3079F0C03109F061C082E08093EC +:1044B000D40108C0C93219F0C83321F058C0109295 +:1044C000D40155C081E0817054C0C93291F120F50A +:1044D000C43179F1B0F4C73009F047C08EE1809360 +:1044E000130182E3809312018AE08093110184E139 +:1044F0008093100188E080930F0188E280930E0181 +:1045000034C0CE51C63088F5EC2FF0E0ED5CFE4FA4 +:1045100080818093D30129C0CE34E9F020F4CB34DC +:1045200021F56AE013C0C13579F0C235F1F461E0DC +:104530000DC08091D301882319F01092D30115C0CA +:1045400081E08093D40115C061E006C08091D30161 +:104550000E94AE200AC06AE08091D3010E9424210B +:1045600004C01092D40180E004C081E002C080E069 +:10457000AACFCF9108950E94581E811102C00E94B7 +:10458000391E0E94791E8093E30180FF02C0869548 +:1045900001C080E00C94ED048091E301982F969582 +:1045A000292F30E0233031054CF49F5F990F817043 +:1045B000892B81608093E3010E947D1E8091E3013D +:1045C00086950C94ED048091E301982F969591F0D7 +:1045D0009158990F8170892B8093E3018E7F91E030 +:1045E00009F490E08091E30190FB80F98093E3016E +:1045F0000E947D1E8091E30186950C94ED048091CC +:10460000E301982F909590FB80F98093E3010E943D +:104610007D1E8091E30180FF02C0869501C080E08D +:104620000C94ED049091E301892F86958F5F8F772D +:104630009170843028F4880F892B8093E30102C0A5 +:104640009093E3018091E3018E7F91E009F490E083 +:104650008091E30190FB80F98093E3010E947D1E2D +:104660008091E30186950C94ED042091E301922F53 +:1046700096958927982F990F822F8170892B809387 +:10468000E3018E7F91E009F490E08091E30190FBDB +:1046900080F98093E3010E947D1E8091E30186955D +:1046A0000C94ED048091E3018695089504D06894FC +:1046B000B1118DC0089570D088F09F5790F0B92F38 +:1046C0009927B751A0F0D1F0660F771F881F991F67 +:1046D0001AF0BA95C9F712C0B13081F077D0B1E0C5 +:1046E000089574C0672F782F8827B85F39F0B93FD5 +:1046F000CCF3869577956795B395D9F73EF4909569 +:104700008095709561957F4F8F4F9F4F0895E894E6 +:1047100009C097FB3EF490958095709561957F4F09 +:104720008F4F9F4F9923A9F0F92F96E9BB279395B7 +:10473000F695879577956795B795F111F8CFFAF4C7 +:10474000BB0F11F460FF1BC06F5F7F4F8F4F9F4FF8 +:1047500016C0882311F096E911C0772321F09EE856 +:10476000872F762F05C0662371F096E8862F70E0BC +:1047700060E02AF09A95660F771F881FDAF7880F96 +:104780009695879597F9089557FD9058440F551FB2 +:1047900059F05F3F71F04795880F97FB991F61F0C3 +:1047A0009F3F79F087950895121613061406551F3A +:1047B000F2CF4695F1DF08C0161617061806991FA6 +:1047C000F1CF86957105610508940895E894BB279B +:1047D00066277727CB0197F908950BD078C069D069 +:1047E00028F06ED018F0952309F05AC05FC011244C +:1047F000EECFCADFA0F3959FD1F3950F50E0551F80 +:10480000629FF001729FBB27F00DB11D639FAA2725 +:10481000F00DB11DAA1F649F6627B00DA11D661F74 +:10482000829F2227B00DA11D621F739FB00DA11D95 +:10483000621F839FA00D611D221F749F3327A00D4F +:10484000611D231F849F600D211D822F762F6A2FEB +:1048500011249F5750408AF0E1F088234AF0EE0F70 +:10486000FF1FBB1F661F771F881F91505040A9F77D +:104870009E3F510570F014C0AACF5F3FECF3983E05 +:10488000DCF3869577956795B795F795E7959F5FE4 +:10489000C1F7FE2B880F911D9695879597F908957E +:1048A00097F99F6780E870E060E008959FEF80ECE3 +:1048B000089500240A941616170618060906089586 +:1048C00000240A9412161306140605060895092EEC +:1048D0000394000C11F4882352F0BB0F40F4BF2B5B +:1048E00011F460FF04C06F5F7F4F8F4F9F4F08959B +:1048F00097FB072E16F4009407D077FD09D00E948D +:10490000922407FC05D03EF4909581959F4F089521 +:10491000709561957F4F0895EE0FFF1F0590F491FC +:10492000E02D0994AA1BBB1B51E107C0AA1FBB1FA6 +:10493000A617B70710F0A61BB70B881F991F5A952B +:10494000A9F780959095BC01CD010895F999FECF06 +:1049500092BD81BDF89A992780B50895A8E1B0E08D +:1049600042E050E00C94CE24262FF999FECF92BD60 +:1049700081BDF89A019700B4021639F01FBA20BD24 +:104980000FB6F894FA9AF99A0FBE08950196272F58 +:104990000E94B5240C94B424DC01CB01FC01F999EC +:1049A000FECF06C0F2BDE1BDF89A319600B40D927B +:0C49B00041505040B8F70895F894FFCF34 +:1049BC00FF3E0BCC0BA90B750B410B01B901280861 +:1049CC00140A321E1F0F03764F5F6F7F49694379BC +:1049DC00095953633F4D36E608990863080F0828B8 +:0E49EC0008410801020304050607080900003F +:00000001FF diff --git a/keyboard/planck/keymaps/yang/compiled.hex b/keyboard/planck/keymaps/yang/compiled.hex new file mode 100644 index 0000000000..da6b0017a1 --- /dev/null +++ b/keyboard/planck/keymaps/yang/compiled.hex @@ -0,0 +1,1318 @@ +:100000000C949F030C94E3030C94E3030C94E3031C +:100010000C94E3030C94E3030C94E3030C94E303C8 +:100020000C94E3030C94E3030C94A4130C94761443 +:100030000C948E210C94E3030C94E3030C94E303DF +:100040000C94E3030C9447040C94E3030C94E30333 +:100050000C94E3030C94F6210C94E3030C94E30357 +:100060000C94E3030C94E3030C94E3030C94E30378 +:100070000C94E3030C94E3030C94E3030C94E30368 +:100080000C94060F0C94E3030C94E3030C94E30329 +:100090000C94E3030C94E3030C94E3030C94E30348 +:1000A0000C94E3030C94E3030C94E303B404D00432 +:1000B000B804BC04C004C404C804CC04E31405158B +:1000C000F3150515F3154A156D15F315C215D5155C +:1000D000BF18BF18EE18EE182D194D19A31AA31A40 +:1000E0005819A31A081A081A6F1A781AA31A9D1A0F +:1000F000151A151A151A151A151A151A151A151A88 +:10010000151A151A151A151A151A151A151A151A77 +:10011000251A331A3A1A411A4B1A0000000000003F +:100120000000000000010204060A0F17202C3A4AC2 +:100130005D71879DB3C7DAE9F5FCFFFCF5E9DAC725 +:10014000B39D87715D4A3A2C20170F0A06040201FD +:10015000000000000000000000002CA500F001F0ED +:1001600002F003F004F005F006F007F02B00140095 +:100170001A000800150017001C0018000C001200DF +:1001800013002A00290004001600070009000A00D5 +:100190000B000D000E000F0033003400E1001D00C5 +:1001A0001B00060019000500110010003600370082 +:1001B000380028000030E000E200E3000352002095 +:1001C000002004525000510052004F002B00140038 +:1001D0001A00090013000A000D000F0018001C008F +:1001E00033002A002900040015001600170007003C +:1001F0000B00110008000C0012003400E1001D008B +:100200001B000600190005000E0010003600370024 +:10021000380028000030E000E200E3000352002034 +:10022000002004525000510052004F002B003400B7 +:100230003600370013001C0009000A0006001500F4 +:100240000F002A00290004001200080018000C000A +:1002500007000B001700110016003800E100330002 +:1002600014000D000E001B00050010001A001900FC +:100270001D0028000030E000E200E30003520020EF +:10028000002004525000510052004F0035021E025F +:100290001F0220022102220223022402250226023A +:1002A00027022A0001003A003B003C003D003E00CE +:1002B0003F002D022E022F023002310201004000C9 +:1002C00041004200430044004500005301530253E3 +:1002D00000500100010001000100010001000100C7 +:1002E00001000100AB00AA00A900AE0035001E000D +:1002F0001F002000210022002300240025002600EA +:1003000027002A0001003A003B003C003D003E006F +:100310003F002D002E002F00300031000100400072 +:100320004100420043004400450000530153025382 +:100330000050010001000100010001000100010066 +:1003400001000100AB00AA00A900AE0001004B00B3 +:1003500052004E00010001000100010001000100F7 +:1003600001004C000100500051004F0001004A0004 +:100370005000510052004F004D00010001000120CB +:100380000220032004200520062007200820010069 +:100390000100010001000100010001000100010055 +:1003A0000100010001000100010001006432146439 +:1003B0003214783C1E1E140A0500000000010101E1 +:1003C0000202030405050607090A0B0C0E0F1112A1 +:1003D000141517191B1D1F212325282A2C2F3134F2 +:1003E00036393B3E414346494C4F5255585A5D6160 +:1003F00064676A6D707376797C7F8386898C8F924F +:1004000095989B9EA2A5A7AAADB0B3B6B9BCBEC134 +:10041000C4C6C9CBCED0D3D5D7DADCDEE0E2E4E681 +:10042000E8EAEBEDEEF0F1F3F4F5F6F8F9FAFAFBA1 +:10043000FCFDFDFEFEFEFFFFFFFFFFFFFFFEFEFED9 +:10044000FDFDFCFBFAFAF9F8F6F5F4F3F1F0EEED48 +:10045000EBEAE8E6E4E2E0DEDCDAD7D5D3D0CECBD7 +:10046000C9C6C4C1BEBCB9B6B3B0ADAAA7A5A29E49 +:100470009B9895928F8C898683807C797673706D3A +:100480006A6764615D5A5855524F4C494643413E34 +:100490003B393634312F2C2A282523211F1D1B19C7 +:1004A00017151412110F0E0C0B0A09070605050487 +:1004B0000302020101010000000001010202020228 +:1004C00002020303030303030303030303030303FE +:1004D00004040404040404040404040405050505D8 +:1004E00005050505050506060606060606060707B0 +:1004F000070707070708080808080809090909097C +:10050000090A0A0A0A0A0B0B0B0B0B0C0C0C0C0C3D +:100510000D0D0D0D0E0E0E0E0F0F0F1010101011F1 +:100520001111121212131313141414151516161692 +:10053000171718181919191A1A1B1B1C1C1D1D1E18 +:100540001E1F20202121222323242425262627287C +:1005500028292A2B2B2C2D2E2F30303132333435B5 +:10056000363738393A3B3C3D3E3F404142444546B0 +:1005700047494A4B4C4E4F5152535556585A5B5D62 +:100580005E6062636567696B6D6E70727476797BAD +:100590007D7F818486888B8D909295979A9D9FA26E +:1005A000A5A8ABAEB1B4B7BABEC1C4C8CBCFD3D681 +:1005B000DADEE2E6EAEEF2F8FF28035400680065AE +:1005C00000200050006C0061006E0063006B002092 +:1005D000004B006500790062006F006100720064EA +:1005E0000000002C034F007200740068006F006C64 +:1005F0000069006E0065006100720020004B00651C +:1006000000790062006F00610072006400730000F6 +:10061000000403090409025400030100A0FA0904BC +:1006200000000103010100092111010001223F0026 +:100630000705810308000A09040100010301020003 +:10064000092111010001224D000705820308000A5B +:100650000904020001030000000921110100012228 +:1006600036000705830308000A120110010000008C +:1006700008EDFE606001000102000105010980A192 +:1006800001850216010026B7001A01002AB700757D +:100690001095018100C0050C0901A1018503160117 +:1006A00000269C021A01002A9C0275109501810007 +:1006B000C005010902A1010901A1000509190129CB +:1006C00005150025019505750181029501750381C8 +:1006D000010501093009311581257F9502750881D1 +:1006E0000609381581257F950175088106050C0AD4 +:1006F00038021581257F950175088106C0C0050166 +:100700000906A101050719E029E71500250195084B +:1007100075018102950175088101050819012905F6 +:100720009505750191029501750391010507190061 +:1007300029FF150025FF950675088100C0001124CA +:100740001FBECFEFDAE0DEBFCDBF04B603FE24C08C +:100750008091540290915502A0915602B091570297 +:100760008730904BA740B04BB9F4109254021092CE +:100770005502109256021092570214BE84B7877F1A +:1007800084BF88E10FB6F8948093600010926000F7 +:100790000FBEE0E0F8E3099511E0A0E0B1E0EAE087 +:1007A000F2E502C005900D92AE33B107D9F712E021 +:1007B000AEE3B1E001C01D92A435B107E1F70E949C +:1007C000EA100C9403290C9400000895089581E028 +:1007D000089508950C94E6030C94E7030C94E90340 +:1007E0000E94672723E030E0281B3109220F209365 +:1007F00042010895282F2F9880918000211108C070 +:10080000877F8093800010928D0010928C001BC017 +:10081000886080938000233019F48FEF9FEF0FC022 +:1008200083E090E0821B9109880F991F2FEF3FEF23 +:10083000A90102C0569547958A95E2F7CA0190939F +:100840008D0080938C000C94F0030E94F00384E0F0 +:100850008093410110923E010895279A2F988FEFBF +:100860009FEF90938700809386008AE080938000BA +:1008700089E1809381000E94D0260C9425040E9477 +:100880002D040E94780C6E9A769A0C94E5031F92C0 +:100890000F920FB60F9211242F933F938F939F9334 +:1008A000EF93FF93E0913F01F0914001CF0101965A +:1008B0009093400180933F010090410102C0F69562 +:1008C000E7950A94E2F7EF7380913E01823019F4C4 +:1008D000E03251F404C0813039F4EF3329F48091CF +:1008E0006F008D7F80936F00F0E0E65EFE4FE49135 +:1008F00021E031E0E29FC001E39F900D11240090C0 +:10090000420102C0969587950A94E2F790938D0074 +:1009100080938C00FF91EF919F918F913F912F9148 +:100920000F900FBE0F901F90189561110DC0FC0124 +:100930008281882331F085EE0E9463170E94272769 +:1009400003C085EE0E942B1880E090E00895462FAA +:1009500050E04830510538F5FA01EA5AFF4FDC0102 +:1009600012968C910C94B5288823E9F00C94B50C60 +:100970008823C9F00C94770B8823A9F00C948F0B73 +:10098000882389F00C94AE0B882369F00C94C90B72 +:10099000882349F00C94E30B882329F00C94FE0B78 +:1009A00081110C94AB0C089581E008950C94D4044B +:1009B00008950F931F93CF93DF938C01FC01C081A7 +:1009C000D181CE010E940720BE010E948505EC0165 +:1009D000B8010E94D604882309F48DC0F8018281F1 +:1009E000882309F44AC080914E0181111FC0C4318F +:1009F000F0E5DF0709F051C00E94D80481E0809340 +:100A00004E010E94C02190934D0180934C011092A1 +:100A1000450110924701109246011092490110922F +:100A2000480110924B0110924A0165C080914C011F +:100A300090914D010E94CC21883C910570F48091E9 +:100A40004501E82FF0E0EE0FFF1FEA5BFE4FD18378 +:100A5000C0838F5F809345014EC0C43880E5D807BE +:100A600021F0C538D04501F13AC0F80182818823D0 +:100A700041F01092430182E01EC0C438E0E5DE0779 +:100A800059F580914301811106C086E20E946317E7 +:100A900086E20E942B1882E01CC0C438F0E5DF0714 +:100AA00041F3C538D045D9F4F8018281882331F06B +:100AB0001092440180E20E947A181DC08091440186 +:100AC000811106C087E20E94631787E20E942B18FB +:100AD00080E20E9481180FC0C538D04529F381E01B +:100AE0008093430180934401C801DF91CF911F910E +:100AF0000F910C94EC0380E0DF91CF911F910F9147 +:100B000008950C943F040C94EA039CE0799FF00153 +:100B1000112490E3899FE00DF11D1124E60FF11DD2 +:100B2000EE0FFF1FE459FE4F859194910895880FB1 +:100B3000991FFC01E652F040859194910895880F29 +:100B4000991FFC01E65AFE4F8591949108950F93E9 +:100B50001F93CF93DF93EC01811521E39207A0F55A +:100B6000C11580E3D80708F0D7C0C83ED105D8F436 +:100B7000C03ED10508F003C2C83AD10578F4C53AA1 +:100B8000D10508F06AC0C130D10509F463C008F48A +:100B9000F3C1C430D10508F0F2C1EEC1CB3BD105A1 +:100BA00008F466C0E9C1C11590E2D90708F0AFC0EA +:100BB000C11521E0D20708F0E2C1C03FD10508F419 +:100BC000DBC18E0110651BC2C03880E5D80700F577 +:100BD000C03790E5D90708F0A3C0C11520E5D207BA +:100BE00009F4ACC050F4CE01905480319F4008F01D +:100BF000C3C1DF708E01106A02C2C13080E5D80720 +:100C000009F4AAC0C43190E5D90708F4ABC0B4C157 +:100C1000C33820E5D20709F48EC050F4C13890E5FE +:100C2000D90709F482C008F083C000E011EDE7C1E4 +:100C3000C03181E5D80708F49FC1C11597E5D907F0 +:100C400008F432C1CE0190578115904108F094C14B +:100C5000DF708FC101E010E0D2C1C53AD10509F4BF +:100C600090C1C63AD10509F08FC102E810E4C7C1AE +:100C7000C83AD10509F48BC1C93AD10509F48AC132 +:100C8000CA3AD10509F489C1CB3AD10509F488C122 +:100C9000CC3AD10509F487C1CD3AD10509F486C112 +:100CA000C03BD10509F485C1CE3AD10509F484C110 +:100CB000CF3AD10509F483C1C13BD10509F482C102 +:100CC000C23BD10509F481C1C33BD10509F480C100 +:100CD000C43BD10509F47FC1C53BD10509F47EC1F0 +:100CE000C63BD10509F47DC1C73BD10509F47CC1E0 +:100CF000C83BD10509F47BC1C93BD10509F47AC1D0 +:100D0000CA3BD10509F479C100E014E478C1CE01F1 +:100D10009F700E949F0574C1DD278E01106C6FC10A +:100D2000CF70DD278E01146D6AC100E010ED67C140 +:100D300000E012ED64C100E013ED61C10E940E1BE2 +:100D40008FEF94E32CE0815090402040E1F700C009 +:100D500000000E941B2253C18091D80181608093C2 +:100D6000D8014DC10E947222811102C00E945322FB +:100D70000E94852290E09093530280935202C230E9 +:100D800080E5D80721F480915202816086C0C4308A +:100D900090E5D90721F48091520282607EC0C6306E +:100DA00020E5D20721F480915202846076C0C830D9 +:100DB00080E5D80719F48091520227C0CA3090E527 +:100DC000D90721F480915202806167C0CC3020E5C0 +:100DD000D20721F48091520280625FC0CE3080E55C +:100DE000D80721F480915202806457C0C03190E549 +:100DF000D90721F48091520280684FC0C23120E5AA +:100E0000D20729F4809152028460886046C0C330C2 +:100E100080E5D80721F4809152028E7F3EC0C53014 +:100E200090E5D90721F4809152028D7F36C0C730FA +:100E300020E5D20721F4809152028B7F2EC0C93069 +:100E400080E5D80719F48091520226C0CB3090E596 +:100E5000D90721F4809152028F7E1FC0CD3020E54A +:100E6000D20721F4809152028F7D17C0CF3080E5E8 +:100E7000D80721F4809152028F7B0FC0C13190E5D9 +:100E8000D90721F4809152028F7707C0C331D04532 +:100E900031F4809152028B7F877F80935202809140 +:100EA00052020E948922ABC08D2F99278F709927FB +:100EB00081309105D9F49E012370332702C0880F39 +:100EC000991F2A95E2F79C688E0144E0000F111FDC +:100ED0004A95E1F700271370802B912B53E0CC0F3C +:100EE000DD1F5A95E1F7C076DD272FC082309105CE +:100EF00031F4DC2FCC278E01016F106A80C0833063 +:100F0000910569F4CE018370992701E010E002C0D9 +:100F1000000F111F8A95E2F7C8019C680FC084304A +:100F20009105B9F4CE018370992701E010E002C069 +:100F3000000F111F8A95E2F7C8019A6823E0CC0FD1 +:100F4000DD1F2A95E1F7C07ED7708C010C2B1D2B7D +:100F500056C08530910531F4DC2FCC278E01046F0B +:100F6000106A4DC0069709F04AC0CF71DD27DC2F0B +:100F7000CC278E01106243C000E010E040C08E011B +:100F80003EC001E810E43BC003E810E438C002EEC4 +:100F900014E435C009EE14E432C00AEE14E42FC0A4 +:100FA00005EB14E42CC006EB14E429C007EB14E4B1 +:100FB00026C00CEC14E423C00DEC14E420C003E8BC +:100FC00015E41DC00AE815E41AC002E915E417C0CB +:100FD00004E915E414C001E216E411C003E216E4CA +:100FE0000EC004E216E40BC005E216E408C006E2F7 +:100FF00016E405C007E216E402C00AE216E4C801DE +:10100000DF91CF911F910F9108959CE0799FF0019E +:10101000112490E3899FE00DF11D1124E60FF11DCD +:10102000EE0FFF1FE459FE4F85919491803E91058C +:10103000E0F4803C910558F58133910509F46FC0C7 +:1010400048F48932910509F463C08A32910509F4A4 +:101050006DC072C089339105E9F082389105D1F0F5 +:101060008533910509F44DC067C0833E910581F138 +:1010700038F4803E9105B9F0823E9105D9F05CC00C +:10108000863E910561F1873E9105A1F155C00E9410 +:10109000970508952091520220FD02C021FF4CC007 +:1010A00080EE90E049C08091520280FFF9CF89E341 +:1010B00090E042C08091520282FF0EC080915202A5 +:1010C00084FF03C080E090E037C083EE90E034C03E +:1010D0008091520282FFF2CF82EE90E02DC080918B +:1010E000520283FF0BC08091520284FDEBCF87EE4A +:1010F00090E022C08091520283FFF5CF86EE90E00F +:101100001BC08091520285FF07C089E290E014C0A5 +:101110008091520285FFF9CF85E390E00DC0809168 +:10112000520286FF07C08AE290E006C08091520218 +:1011300086FFF9CF81E390E00E94A70508950C9403 +:10114000EE03E82FF0E0EF5DFE4F8081E82FEF70B7 +:10115000F0E082958F7021E030E0A90102C0440FD9 +:10116000551F8A95E2F740A308950F931F93CF93DD +:10117000DF9385B7806885BF85B7806885BFC3E08A +:10118000D0E001E010E0FE01EF5DFE4F8081E82F2E +:10119000EF70F0E021A182958F70A80102C0440F8A +:1011A000551F8A95E2F7CA01822B81A38C2F0E94DA +:1011B000A108219740F78BE090E061E070E0FC012E +:1011C000EB5EFE4F2081E22FEF70F0E042A122950E +:1011D0002F70DB0102C0AA0FBB1F2A95E2F79D0109 +:1011E000242B22A3019758F7DF91CF911F910F91E4 +:1011F0000C948105EF92FF920F931F93CF93DF938F +:1012000007E511E0C3E0EE24E394F12CD5E08C2F48 +:101210000E94A1088BE090E040E050E0FC01EB5E12 +:10122000FE4F6081E62FEF70F0E020A130E0629584 +:101230006F7002C0359527956A95E2F720FD09C0C9 +:101240009701082E02C0220F331F0A94E2F7422BA7 +:10125000532B019718F7F801929182918F0184170F +:10126000950721F051834083D09300018C2F0E9479 +:10127000A108C15060F68091000187FD2CC081500B +:10128000809300018F3F39F08FE99FE00197F1F7DC +:1012900000C0000020C080915501909156019093AC +:1012A0005E0180935D018091530190915401909370 +:1012B0005C0180935B018091510190915201909368 +:1012C0005A018093590180914F0190915001909360 +:1012D0005801809357010E94830581E0DF91CF91EF +:1012E0001F910F91FF90EF900895E82FF0E0EE0F1F +:1012F000FF1FE95AFE4F80819181089508950F9351 +:101300001F93CF930FE511E0C0E0F8019291829115 +:101310008F010E943821C80FF1E007351F07A9F798 +:101320008C2FCF911F910F9108952BB1342F3095B1 +:1013300023233BB1432B3FB7F894FC01680F791F7F +:10134000E617F70789F0819198E04BB9000000C0DB +:1013500087FF2BB9880F000000C000C000C02BB968 +:1013600000C09A9591F7ECCF3FBF08952AB1242B86 +:101370002AB99B01220F331F620F731F0E94950928 +:1013800087EC90E00197F1F700C00000089542E07B +:101390000C94B609AF92BF92CF92DF92EF92FF9278 +:1013A0000F931F93CF93DF936C01790150E0FA0103 +:1013B000E754FB4F44918FEF90E0FC01E61BF109ED +:1013C000E754FB4FE491E09509F495C0C42FD0E0B9 +:1013D0008E1B91098C9F90018D9F300D9C9F300D2D +:1013E0001124E32F8CE3A82EB12CC601B5010E9475 +:1013F0008D28DC016230710509F446C0D0F4611516 +:10140000710599F16130710509F079C0C31BD109EB +:10141000B501681B790BC69FC001C79F900DD69F71 +:10142000900D1124B5010E948D28032F060F142F53 +:1014300067C06430710509F44BC0B8F165307105BF +:1014400009F05DC0C31BD109B501681B790BC69FAC +:10145000C001C79F900DD69F900D1124B5010E9429 +:101460008D28132FE32FE60F44C0C31BD109CC9D59 +:10147000C001CD9D900DDC9D900D1124B5010E9401 +:101480008D28132F160F35C0C31BD109CA9FC00169 +:10149000CB9F900DDA9F900D1124B5010E948D28ED +:1014A000142F032FE32FE60F2BC0C31BD109B50167 +:1014B000681B790BC69FC001C79F900DD69F900DEA +:1014C0001124B5010E948D28132F160F032F0FC072 +:1014D000C31BD109CA9FC001CB9F900DDA9F900D0D +:1014E0001124B5010E948D28032F060F132FE42F1E +:1014F00007C0042F05C0E42F142F042F01C0E0E023 +:10150000D70111960C9311971C931296EC93DF91CF +:10151000CF911F910F91FF90EF90DF90CF90BF90F0 +:10152000AF90089587E090E00C94C328AB01BC0114 +:1015300087E090E00C94E128E9EEF1E083E080831D +:10154000AAEEB1E08C91807884668F778C938CECD6 +:10155000828383836091E9017091EA018091EB01BC +:101560009091EC010C94960A8091E90180FF06C0ED +:101570006CE170E081EF91E00C94C70980E090E0AD +:10158000FC01EF50FE4F11821082128203968435C7 +:101590009105B1F7EDCF20E030E0F901EF50FE4FBB +:1015A0008183608342832D5F3F4F24353105A9F746 +:1015B0000C94B40AEF92FF920F931F93CF93DF9393 +:1015C00000D01F92CDB7DEB70091E9011091EA017A +:1015D0002091EB013091EC010093ED011093EE01AD +:1015E0002093EF013093F0012091E90120FF21C009 +:1015F000042FF62EE92E182F9E012F5F3F4F0E94D9 +:10160000CA098091ED0110FB87F98093ED011695D1 +:101610008091EE018078182BE0FA17F91093EE0113 +:10162000F092EF010093F0014B8169818A810E9461 +:10163000CB0A0F900F900F90DF91CF911F910F91D8 +:10164000FF90EF9008950F931F93CF93DF93EC01DA +:10165000062F142F9091E90190FF44C0892F8E77B7 +:10166000823021F4CE010E94DA0A1BC0892F8695B0 +:101670008F732EE3280F2F73243018F41091EC0190 +:1016800010C0865C8F73893060F4C92FCC1FCC27C3 +:10169000CC1FD091EA018D2F880FC82BD7FBDD27F7 +:1016A000D0F98091E901C0FB87F98093E901C695E3 +:1016B0008091EA018078C82BD0FBC7F9C093EA017A +:1016C0000093EB011093EC016091E9017091EA0144 +:1016D0008091EB019091EC01DF91CF911F910F91DF +:1016E0000C94960ADF91CF911F910F910895E9EE26 +:1016F000F1E02081221F2227221F3091EA01432F8F +:10170000440F842F822B37FB992790F90A9668E6BD +:1017100071E00E94A128438162810C94230B2091E7 +:10172000E901221F2227221F3091EA01432F440F93 +:10173000842F822B37FB992790F98A3091051CF46E +:10174000825A9E4F01C00A9768E671E00E94A12864 +:101750004091EC016091EB010C94230B6091EB0143 +:10176000862F90E08F3E910514F46F5E01C06FEFFD +:101770008091E901881F8827881F9091EA01292F0D +:10178000220F97FB992790F94091EC01822B0C9442 +:10179000230B6091EB01862F90E0419714F061518B +:1017A00001C060E08091E901881F8827881F90911F +:1017B000EA01292F220F97FB992790F94091EC011C +:1017C000822B0C94230B4091EC01842F90E08F3EF0 +:1017D000910514F44F5E01C04FEF8091E901881F1D +:1017E0008827881F9091EA01292F220F97FB9927BC +:1017F00090F96091EB01822B0C94230B4091EC014A +:10180000842F90E0419714F0415101C040E0809155 +:10181000E901881F8827881F9091EA01292F220F4C +:1018200097FB992790F96091EB01822B0C94230B85 +:101830008091700181110FC081E08093700189E077 +:10184000809391008FB7F89493E09093990090ED76 +:10185000909398008FBF0895E1E7F0E08081826067 +:1018600080830895E1E7F0E080818D7F8083089593 +:101870009091E90190FF3BC09178811102C0926084 +:1018800007C0883110F09E6203C08F73880F982BB9 +:101890009093E9016091E9017091EA018091EB0177 +:1018A0009091EC010E94960A8091E901982F9E7711 +:1018B000923019F40E94320C07C08695825C8F73B7 +:1018C000863110F40E942C0C8091E901881F882732 +:1018D000881F9091EA01292F220F97FB992790F9F1 +:1018E0004091EC016091EB01822B0C94230B089545 +:1018F0008091D80181608093D80181E0809371014B +:101900000E947222811104C00E9453220E949C0AEC +:101910000E94920A6093E9017093EA018093EB01BF +:101920009093EC016E7761F40E949C0A0E94920AE7 +:101930006093E9017093EA018093EB019093EC01CD +:101940000E94180C8091E90180FF04C086958F7376 +:101950000C94380C08958091E90186958F738F5F00 +:10196000883108F081E00C94380C8091E901982FBF +:10197000909590FB80F98093E9016091E901709165 +:10198000EA018091EB019091EC010E94960A80910E +:10199000E90180FF04C086958F730C94380C0E9477 +:1019A000320C2FEF80E792E0215080409040E1F729 +:1019B00000C000000C94B40ACF93C82F80916E0130 +:1019C00090916F010E94CC21EC2FF0E0EB54FC4F82 +:1019D000E491F0E08E179F0718F10E94C0219093C8 +:1019E0006F0180936E01E0916D01F0E0E754FC4FD0 +:1019F00044918091E901881F8827881F9091EA010E +:101A0000292F220F97FB992790F96091EB01822BE8 +:101A10000E94DA0A80916D0190E0019680936D0139 +:101A2000CF910895CF93C82F80916B0190916C0155 +:101A30000E94CC21EC2FF0E0EE54FC4FE491F0E05A +:101A40008E179F07E8F00E94C02190936C0180934D +:101A50006B014091EC016091EB01809169019091E3 +:101A60006A010E94DA0A8091690190916A010196E7 +:101A700068E671E00E948D2890936A018093690165 +:101A8000CF910895CF92DF92FF920F931F93CF9340 +:101A9000DF93F82E80916701909168010E94CC211C +:101AA000EF2DE695F0E0EE54FC4FE491F0E08E1758 +:101AB0009F07F0F10E94C021909368018093670115 +:101AC00001EF11E0C0E0D0E088E6C82EDD24D39419 +:101AD00080916501909166018C0F9D1FB6010E9457 +:101AE0008D2898014091EC016091EB010E94CA0998 +:101AF0002C960D5F1F4FC03581E0D80749F70E9433 +:101B0000B40A2091650130916601F0FE0BC0C90155 +:101B1000019668E671E00E948D289093660180939B +:101B2000650106C02150310930936601209365019B +:101B3000DF91CF911F910F91FF90DF90CF9008958B +:101B40008F929F92AF92BF92CF92DF92EF92FF92CD +:101B50000F931F93CF93DF93C82F80FF03C0DD2423 +:101B6000DA9402C0DD24D3948091630190916401E2 +:101B70000E94CC21C695EC2FF0E0E155FC4FE4919A +:101B8000F0E08E179F0708F467C00E94C021909371 +:101B900064018093630191EFE92E91E0F92E03EF48 +:101BA00011E0C0E0D0E027E0822E912CF8013197BF +:101BB0001082F7011082F801108287E0A82EB12C64 +:101BC000C12C809162018C0D87FD845E992787FD71 +:101BD0009095C817D907E9F42091EC012A9DC0011E +:101BE0002B9D900D1124B4010E94A128462F8091B5 +:101BF000E901881F8827881F9091EA01592F550F06 +:101C000097FB992790F997016091EB01852B0E9432 +:101C1000CA09CD0CF1E0AF1AB10899F6219683E01C +:101C2000E80EF11C0D5F1F4FCC31D10509F0BECF7E +:101C30000E94B40A8091620191E0D91206C081111C +:101C400002C08BE107C0815005C090E00196BE0143 +:101C50000E94A12880936201DF91CF911F910F9183 +:101C6000FF90EF90DF90CF90BF90AF909F908F90BC +:101C700008959F92AF92BF92CF92DF92EF92FF9220 +:101C80000F931F93CF93DF93CDB7DEB7C455D10920 +:101C90000FB6F894DEBF0FBECDBF182F8091600144 +:101CA000909161010E94CC21E12FF0E0E455FC4FBE +:101CB000E491F0E08E179F0708F495C00E94C021C0 +:101CC0009093610180936001CE0101967C015E01D9 +:101CD00093E0A90EB11CC12CD12C8701F5013197DD +:101CE0001082F7011082F5011082912C9091010170 +:101CF00080915F01999E800D112487FD04C08C3175 +:101D00001CF08BE101C080E0992787FD9095C816F3 +:101D1000D906A1F48091E901881F8827881F909136 +:101D2000EA01592F550F97FB992790F99701409198 +:101D3000EC016091EB01852B0E94CA099394F7E0B6 +:101D40009F12D4CF8FEFC81AD80A93E0E90EF11C86 +:101D5000E3E0AE0EB11CFCE1CF16D10409F0BECF1A +:101D600023EF31E059E0E52EF12C6CE1C62ED12CA9 +:101D7000C701B6010E94A128D9011197FC01EE0FFD +:101D8000FF1FE80FF91FE00FF11F81818C9311975E +:101D900080818C938281F9018083FFEFEF1AFF0A23 +:101DA0002D5F3F4F85E2E816F10411F70E94B40A57 +:101DB0009091010180915F01913049F48A3F2CF4A8 +:101DC00089EF80935F018FEF08C081500AC0833292 +:101DD0003CF082E280935F0181E08093010103C0C7 +:101DE0008F5F80935F01CC5ADF4F0FB6F894DEBF50 +:101DF0000FBECDBFDF91CF911F910F91FF90EF905C +:101E0000DF90CF90BF90AF909F9008951F920F9258 +:101E10000FB60F9211242F933F934F935F936F93BD +:101E20007F938F939F93AF93BF93EF93FF93809193 +:101E3000E90186958F739EE3980F9F73943020F489 +:101E400082500E94DC0C23C09AE3980F9F7393305A +:101E500020F486500E94120D1AC097E3980F9F73CA +:101E6000963020F489500E94420D11C091E3980FE2 +:101E70009F73963020F48F500E94A00D08C09BE203 +:101E8000980F9F73933018F485510E94390EFF917B +:101E9000EF91BF91AF919F918F917F916F915F91E2 +:101EA0004F913F912F910F900FBE0F901F9018955B +:101EB00080917A010895CF93DF9300D01F92CDB720 +:101EC000DEB79C0180914902843019F593E0998333 +:101ED0003B832A839093E9008FEF9091E800815033 +:101EE00095FD06C095ED9A95F1F700008111F5CFAB +:101EF0008091E80085FF0DC040E050E063E070E0B5 +:101F0000CE0101960E9494118091E8008E77809313 +:101F1000E8000F900F900F90DF91CF910895CF932D +:101F2000DF9300D01F92CDB7DEB720914902243055 +:101F300021F522E029839B838A8383E08093E90053 +:101F40008FEF9091E800815095FD06C095ED9A9530 +:101F5000F1F700008111F5CF8091E80085FF0DC0F9 +:101F600040E050E063E070E0CE0101960E949411E1 +:101F70008091E8008E778093E8000F900F900F908B +:101F8000DF91CF910895209149022430F1F422E0AD +:101F90002093E9002FEF3091E800215035FD06C075 +:101FA00035ED3A95F1F700002111F5CF2091E800C9 +:101FB00025FF0BC040E050E065E070E00E94941106 +:101FC0008091E8008E778093E8000895CF93DF93A7 +:101FD00020914902243039F521E02093E9002FEFC8 +:101FE0003091E800215035FD06C035ED3A95F1F706 +:101FF00000002111F5CF2091E80025FF14C0EC016D +:1020000040E050E068E070E00E9494118091E800A8 +:102010008E778093E80088E0FE01A2E7B1E00190AE +:102020000D928A95E1F7DF91CF9108958091480252 +:10203000811109C00E9429130E9486138091E20039 +:1020400084608093E20008951092480208950895F4 +:1020500008950C94832142E061EC81E00E94A31278 +:1020600042E061EC82E00E94A31242E061EC83E076 +:102070000C94A31280914B02833009F453C030F4C6 +:10208000813071F0823009F48CC008958A3009F4EF +:1020900078C08B3009F45EC0893009F09AC020C046 +:1020A00080914A02813A09F094C08091E800877FCC +:1020B0008093E80080914E0290914F02892B21F489 +:1020C00068E082E791E003C060E080E090E070E0CB +:1020D0000E94DF118091E8008B778093E8000895DB +:1020E00080914A02813209F074C080914E02909131 +:1020F0004F02892B09F06DC08091E800877F8093A3 +:10210000E8008091E80082FD05C0809149028111BC +:10211000F8CF5FC08091F10080937A018091E80050 +:102120008B7753C080914A02813A09F052C0809166 +:102130004E0290914F02892B09F04BC08091E8002C +:10214000877F8093E8008091E80080FFFCCF80913A +:102150000C0136C080914A028132D9F580914E023D +:1021600090914F02892BA9F58091E800877F809399 +:10217000E8000E94D81280914C0280930C010C94CC +:102180000E1B80914A02813221F58091E800877F01 +:102190008093E8000E94D81280914D0280937B01C9 +:1021A000089580914A02813AA1F48091E800877FE6 +:1021B0008093E8008091E80080FFFCCF80917B0154 +:1021C0008093F1008091E8008E778093E8000C9472 +:1021D000D812089584B7877F84BF88E10FB6F8943A +:1021E00080936000109260000FBE90E080E80FB610 +:1021F000F89480936100909361000FBE0E947B165B +:102200000E9429130E9486138091E20084608093CB +:10221000E20078940E940C160E947D1682E091E004 +:102220000E94271680914902853069F40E9444215A +:10223000809147028823B1F30E947221882391F391 +:102240000E947E11EFCF0E948516ECCF292F3327F5 +:1022500023303105C9F064F42130310581F022309A +:10226000310509F043C084E590E025E136E042C045 +:1022700021323105F1F02232310541F137C082E1DE +:1022800090E029E636E036C099278130910541F08B +:102290008230910541F0892B49F5E1E1F6E005C076 +:1022A000E3EEF5E002C0E9EBF5E0849190E09F01F8 +:1022B00021C06330D8F4E62FF0E0EE0FFF1FE25D9F +:1022C000FE4F2081318189E090E014C0633070F4CA +:1022D00070E0FB01EE0FFF1FE85DFE4F20813181B2 +:1022E000FB01EB5DFE4F808190E004C080E090E058 +:1022F00020E030E0FA0131832083089580E189BD38 +:1023000082E189BD09B400FEFDCF8091D8008F7DA8 +:102310008093D8008091E00082608093E0008091FB +:10232000E00081FDFCCF0895CF92DF92EF92FF9203 +:102330000F931F93CF93DF93EC018B016A010E94EF +:10234000F712811133C0C114D10439F0F601808134 +:102350009181081B190BC80FD91FE12CF12C011515 +:10236000110519F18091E80085FD16C08091E80003 +:102370008E778093E800C114D10449F0F601808182 +:102380009181E80EF91EF182E08285E00FC00E9483 +:10239000F712882321F30AC089918093F10001503C +:1023A0001109FFEFEF1AFF0ADACF80E0DF91CF913A +:1023B0001F910F91FF90EF90DF90CF9008952091A3 +:1023C0005002309151022617370748F06115710508 +:1023D00039F42091E8002E772093E80001C0B9017C +:1023E00040E061157105A9F120914902222309F409 +:1023F00043C0253009F442C02091E80023FD40C0CD +:102400002091E80022FD32C02091E80020FFE9CFB2 +:102410004091F3002091F20030E0342BFC01CF0119 +:102420006115710559F02830310540F48191809390 +:10243000F100615071092F5F3F4FF1CF41E028302B +:10244000310509F040E02091E8002E772093E80064 +:10245000C8CF4111C9CF0AC080914902882361F0D9 +:10246000853061F08091E80083FD0AC08091E8002A +:1024700082FFF2CF80E0089582E0089583E008951E +:1024800081E00895209150023091510226173707BC +:1024900048F06115710539F42091E8002E772093FA +:1024A000E80001C0B901FC0120E06115710591F15E +:1024B00080914902882309F440C0853009F43FC067 +:1024C0008091E80083FD3DC08091E80082FD2FC02F +:1024D0008091E80080FFE9CF2091F3008091F20025 +:1024E00090E0922B6115710559F08830910540F408 +:1024F00024912093F1003196615071090196F2CF39 +:1025000021E0089709F020E08091E8008E77809321 +:10251000E800CBCF2111CCCF0AC08091490288239B +:1025200061F0853061F08091E80083FD0AC0809100 +:10253000E80082FFF2CF80E0089582E0089583E012 +:10254000089581E00895982F973058F59093E90009 +:10255000981739F07091EC002091ED005091F00047 +:1025600003C0242F762F50E021FF19C03091EB00DB +:102570003E7F3093EB003091ED003D7F3093ED00D6 +:102580003091EB0031603093EB007093EC002093BE +:10259000ED005093F0002091EE0027FF07C09F5FF1 +:1025A000D3CF8F708093E90081E0089580E0089593 +:1025B00080914A0287FF11C08091E80082FD05C02A +:1025C000809149028111F8CF11C08091E8008B778A +:1025D0000BC080914902882349F08091E80080FF78 +:1025E000F8CF8091E8008E778093E80008952091DD +:1025F000E4003091E50095E64091EC00842F817075 +:1026000040FF22C08091E80080FD1CC080914902FB +:10261000882391F0853091F08091EB0085FD10C00A +:102620004091E4005091E5004217530729F39A01C5 +:10263000915011F784E0089582E0089583E00895B1 +:1026400081E0089580E008954091E80042FFDECFE8 +:1026500008950E9497130E949F13E0EEF0E080819E +:1026600081608083E8EDF0E080818F77808319BC02 +:10267000A7EDB0E08C918E7F8C9380818F7E8083DC +:102680001092480208950F931F93CF93DF930E94F7 +:1026900097130E949F13C8EDD0E088818F778883BD +:1026A00088818068888388818F7D888319BC109297 +:1026B000490210924502109247021092460200EE23 +:1026C00010E0F80180818B7F80838881816088831E +:1026D00042E060E080E00E94A312E1EEF0E0808141 +:1026E0008E7F8083E2EEF0E0808181608083808154 +:1026F00088608083F80180818E7F808388818061FB +:102700008883DF91CF911F910F910895E8EDF0E05C +:1027100080818F7E8083E7EDF0E08081816080831F +:1027200084E082BF81E0809348020C944313E8ED7B +:10273000F0E080818E7F80831092E20008951092F5 +:10274000DA001092E10008951F920F920FB60F92D7 +:1027500011242F933F934F935F936F937F938F93A6 +:102760009F93AF93BF93EF93FF938091E10082FF1C +:102770000BC08091E20082FF07C08091E1008B7F57 +:102780008093E1000E940B168091DA0080FF1FC049 +:102790008091D80080FF1BC08091DA008E7F8093EB +:1027A000DA008091D90080FF0DC080E189BD82E10F +:1027B00089BD09B400FEFDCF81E0809349020E94EB +:1027C000161005C019BC109249020E942410809175 +:1027D000E10080FF19C08091E20080FF15C0809168 +:1027E000E2008E7F8093E2008091E200806180931E +:1027F000E2008091D80080628093D80019BC85E007 +:10280000809349020E9428108091E10084FF30C02B +:102810008091E20084FF2CC080E189BD82E189BD06 +:1028200009B400FEFDCF8091D8008F7D8093D80041 +:102830008091E1008F7E8093E1008091E2008F7EA5 +:102840008093E2008091E20081608093E2008091B9 +:102850004502882311F084E007C08091E30087FDE2 +:1028600002C081E001C083E0809349020E942910E8 +:102870008091E10083FF29C08091E20083FF25C0A1 +:102880008091E100877F8093E10082E0809349029C +:10289000109245028091E1008E7F8093E10080914B +:1028A000E2008E7F8093E2008091E200806180935D +:1028B000E20042E060E080E00E94A3128091F0001C +:1028C00088608093F0000E942710FF91EF91BF91E4 +:1028D000AF919F918F917F916F915F914F913F91B8 +:1028E0002F910F900FBE0F901F9018951F920F926F +:1028F0000FB60F9211242F933F934F935F936F93D3 +:102900007F938F939F93AF93BF93CF93DF93EF9377 +:10291000FF93C091E900CF708091EC00D82FD17067 +:1029200080FDD0E81092E9008091F000877F8093CD +:10293000F00078940E94BA141092E9008091F0009F +:1029400088608093F000CD2BCF70C093E900FF9199 +:10295000EF91DF91CF91BF91AF919F918F917F9137 +:102960006F915F914F913F912F910F900FBE0F90FC +:102970001F9018951F93CF93DF93CDB7DEB7AA971B +:102980000FB6F894DEBF0FBECDBFEAE4F2E088E0F8 +:102990008E0F9091F10091938E13FBCF0E943A100D +:1029A0008091E80083FF1FC180914A0290914B0201 +:1029B000492F50E04A30510508F015C1FA01E25A9A +:1029C000FF4F0C94B528803881F0823809F00BC194 +:1029D00080914E028F708093E9008091EB0085FB1F +:1029E000882780F91092E90006C0809146029091F4 +:1029F0004702911182609091E800977F9093E800E0 +:102A00008093F1001092F100C8C0282F2D7F09F0AB +:102A1000EAC0882319F0823061F0E5C080914C0251 +:102A2000813009F0E0C0933009F080E080934702E4 +:102A30002BC080914C02811127C080914E028F7073 +:102A400009F4D1C08093E9002091EB0020FF1CC065 +:102A5000933021F48091EB00806214C09091EB00E0 +:102A600090619093EB0021E030E0A90102C0440F97 +:102A7000551F8A95E2F74093EA001092EA00809190 +:102A8000EB0088608093EB001092E9008091E800F1 +:102A9000877F86C08111A7C010914C021F7780915B +:102AA000E3008078812B8093E3008091E800877FAA +:102AB0008093E8000E94D8128091E80080FFFCCF4C +:102AC0008091E30080688093E300111102C082E0EE +:102AD00001C083E08093490286C08058823008F0AC +:102AE00082C080914C0290914D028C3D53E095073D +:102AF00079F583E08A838AE289834FB7F894DE010F +:102B0000139620E03EE051E2E32FF0E050935700AF +:102B1000E49120FF03C0E295EF703F5FEF708E2FCE +:102B200090E0EA3010F0C79601C0C0968D939D9357 +:102B30002F5F243149F74FBF8091E800877F809352 +:102B4000E8006AE270E0CE0101960E94DF1114C035 +:102B5000AE014F5F5F4F60914E020E942611BC0193 +:102B6000009709F440C09091E800977F9093E800A7 +:102B700089819A810E9442128091E8008B7780932C +:102B8000E80031C0803879F58091E800877F809334 +:102B9000E800809145028093F1008091E8008E77F3 +:102BA0008093E8000E94D8121EC081111CC0909131 +:102BB0004C029230C0F48091E800877F8093E80057 +:102BC000909345020E94D81280914502811106C05F +:102BD0008091E30087FD02C081E001C084E0809322 +:102BE00049020E942B108091E80083FF0AC0809167 +:102BF000E800877F8093E8008091EB0080628093FB +:102C0000EB00AA960FB6F894DEBF0FBECDBFDF91E2 +:102C1000CF911F9108950895CF9380914902882301 +:102C2000A1F0C091E900CF709091EC00892F8170E4 +:102C300090FD80E8C82B1092E9008091E80083FDA8 +:102C40000E94BA14CF70C093E900CF910895909379 +:102C50008101809380010895E0918001F0918101CC +:102C6000309721F00190F081E02D099480E00895E3 +:102C7000E0918001F0918101309721F00280F38191 +:102C8000E02D09940895E0918001F0918101309741 +:102C900021F00480F581E02D0994089520917E01B2 +:102CA00030917F018217930771F090937F01809399 +:102CB0007E01E0918001F0918101309721F0068042 +:102CC000F781E02D0994089520917C0130917D01D8 +:102CD0008217930771F090937D0180937C01E091BE +:102CE0008001F0918101309721F00084F185E02D81 +:102CF0000994089508950C947A160E94B7210E94B1 +:102D0000B5080E943D220C94D0265F926F927F926C +:102D10008F929F92AF92BF92CF92DF92EF92FF92EB +:102D20000F931F93CF93DF9300D000D01F92CDB7A6 +:102D3000DEB70E94FA089BE8C92E91E0D92E03E085 +:102D400010E0AA24A394B12C502E802F0E94750964 +:102D50004C01F601729062906F0168267926611429 +:102D60007104A1F40150110978F78FEF89838A83E8 +:102D70001B820E94C0218160782F9D838C834981B2 +:102D80005A816B818D810E94351738C08091D8019E +:102D900081FD0E947E092BE030E07501022E02C009 +:102DA000EE0CFF1C0A94E2F7C70186219721892BBC +:102DB00009F129835A828E209F2091E0892809F405 +:102DC00090E09B830E94C0218160782F9D838C833B +:102DD00049815A816B818D810E943517000F111F27 +:102DE000F801ED57FE4F80819181E826F926F182A6 +:102DF000E08204C02150310980F6B4CF0E94112432 +:102E0000109182010E942C161817D1F00E942C16E6 +:102E1000809382010F900F900F900F900F90DF9191 +:102E2000CF911F910F91FF90EF90DF90CF90BF90C7 +:102E3000AF909F908F907F906F905F900C949F08C1 +:102E40000F900F900F900F900F90DF91CF911F91E7 +:102E50000F91FF90EF90DF90CF90BF90AF909F9039 +:102E60008F907F906F905F900895CF93DF93CDB751 +:102E7000DEB72B970FB6F894DEBF0FBECDBF4F83E2 +:102E8000588769877A878B87DE01119686E0FD0176 +:102E900011928A95E9F785E0FE01379601900D922F +:102EA0008A95E1F749815A816B817C818D819E8170 +:102EB0000E94AC1D2B960FB6F894DEBF0FBECDBF9F +:102EC000DF91CF910895CF93882309F4C2C0C82F12 +:102ED000823859F40E942C1681FDBBC089E30E9400 +:102EE00086200E94092189E30CC0833879F40E946E +:102EF0002C1680FDAEC083E50E9486200E94092129 +:102F000083E50E94A320CF910C940921843859F4C1 +:102F10000E942C1682FD9DC087E40E9486200E949C +:102F2000092187E4EECF8CEF8C0F813A48F48C2F87 +:102F30000E94382681118DC08C2F0E948620E3CFFD +:102F400080E28C0F883048F4C77081E001C0880FA0 +:102F5000CA95EAF70E94C220D6CF8BE58C0F83304A +:102F600078F4C53A29F0C63A31F083E890E005C01C +:102F700081E890E002C082E890E0CF910C944E1678 +:102F800088E58C0F833108F064C0C83A39F1C93A3A +:102F900041F1CA3A49F1CB3A51F1CC3A59F1CD3A23 +:102FA00061F1C03B69F1CE3A71F1CF3A79F1C13BA1 +:102FB00081F1C23B89F1C33B91F1C43B99F1C53B1F +:102FC000A1F1C63BA9F1C73BB1F1C83BB9F1C93B7F +:102FD000C1F1CA3BC9F180E090E038C082EE90E0D8 +:102FE00035C089EE90E032C08AEE90E02FC085EBCC +:102FF00090E02CC086EB90E029C087EB90E026C0E3 +:103000008CEC90E023C08DEC90E020C083E891E050 +:103010001DC08AE891E01AC082E991E017C084E9F6 +:1030200091E014C081E292E011C083E292E00EC010 +:1030300084E292E00BC085E292E008C086E292E072 +:1030400005C087E292E002C08AE292E0CF910C9440 +:103050006416CF910895882309F44BC0823859F43F +:103060000E942C1681FF45C089E30E9486200E94A1 +:10307000092189E30CC0833871F40E942C1680FF6B +:1030800038C083E50E9486200E94092183E50E94C2 +:10309000A3200C940921843859F40E942C1682FF35 +:1030A00028C087E40E9486200E94092187E4EFCF90 +:1030B0009CEF980F913A58F390E2980F983050F4A3 +:1030C000877091E001C0990F8A95EAF7892F0E94D5 +:1030D000C820DFCF9BE5980F933020F480E090E08C +:1030E0000C944E16885A833120F480E090E00C94C2 +:1030F00064160895882321F00E94C2200C940921AF +:103100000895882321F00E94C8200C940921089575 +:103110007F928F929F92AF92BF92CF92DF92EF9267 +:10312000FF920F931F93CF93DF931F92CDB7DEB71C +:103130007C01C62E772EFC01058102950F7012814D +:1031400011110E94DF200E947F20882379F0112333 +:1031500069F080E28C0D883048F082E00E9468209F +:103160000E947F2091E0D82ED92601C0D12CE72DD6 +:10317000E295EF70F0E0E859FF4F0C94B528872DE9 +:10318000807F072D0F70882311F00295007F112397 +:1031900089F0002309F499C180E28C0D883020F475 +:1031A000802F0E94C22003C0802F0E94D2200E9444 +:1031B00009218BC18C2D0E942B18002309F4C3C157 +:1031C00080E28C0D883020F4802F0E94C82003C03C +:1031D000802F0E94D8200E940921B5C1872D807FB1 +:1031E000972D9F70803211F4892F03C0892F82950B +:1031F000807FCC2021F0F1E0CF16A1F01DC011237B +:1032000039F0002319F1013009F50E94F2209BC129 +:10321000002319F0013009F496C189830E94F5203A +:10322000898110C1112321F0063008F08CC10EC035 +:10323000053008F088C106C1112359F0002331F090 +:10324000F701958190FF41C19F7095830E947A1884 +:103250007AC1002309F4F6C03EC1872D8695869574 +:10326000837090E0009719F0019761F06CC1112311 +:1032700021F08C2D972D937002C080E090E00E9489 +:103280004E1661C1112321F08C2D972D937002C031 +:1032900080E090E00E94641656C18C2D112319F035 +:1032A0000E94192302C00E9481230E9406244BC160 +:1032B000872D837009F052C0111145C18C2D829564 +:1032C00086958770880F880F9C2D9F70892E912C72 +:1032D000A12CB12C082E04C0880C991CAA1CBB1C64 +:1032E0000A94D2F7C4FE14C00FE010E020E030E0F2 +:1032F000B901A80104C0440F551F661F771F8A95A6 +:10330000D2F7CB01BA01609570958095909503C076 +:1033100060E070E0CB01272D26952695237030E0E4 +:103320002230310569F02330310589F06829792987 +:103330008A299B292130310571F00E94F41E03C1B6 +:10334000682979298A299B290E94101FFCC00E94A4 +:10335000F41EC501B4010E94D81EF5C0112319F056 +:10336000872D817001C08695882309F4ECC08C2DCF +:10337000829586958770880F880F9C2D9F70892E67 +:10338000912CA12CB12C082E04C0880C991CAA1CCD +:10339000BB1C0A94D2F7C4FE14C00FE010E020E07A +:1033A00030E0B901A80104C0440F551F661F771F04 +:1033B0008A95D2F7CB01BA0160957095809590956A +:1033C00003C060E070E0CB01272D26952695237081 +:1033D000422F50E04230510569F04330510589F0E9 +:1033E000682979298A299B294130510571F00E9469 +:1033F000CE1FA9C0682979298A299B290E94EA1F22 +:10340000A2C00E94CE1FC501B4010E94B21F9BC082 +:103410008C2D90E0FC01E05EF109E531F10508F04A +:1034200050C0E858FF4F0C94B5280C2D0F70872D15 +:103430008F71112321F00E944B1F802F07CF0E9414 +:103440006C1F802F0E9481187EC0112341F005302F +:1034500008F079C0872D8F710E94911F74C00630CB +:1034600008F071C0F7CF112339F0872D8F710E94BA +:103470004B1F69C01123C9F3872D8F710E946C1FE8 +:1034800062C0112329F0872D8F710E94361F5BC007 +:103490000E942C1F58C0112351F0172D1F71812F2E +:1034A0000E944B1F63E0812F0E945F204CC081E08F +:1034B0000E946820023008F446C082E00E94682022 +:1034C00042C0112331F0002381F28C2D0E9463173A +:1034D0003AC0002389F28C2D0E942B1834C0472D4E +:1034E0004F706C2DC7010E9495040E94501E2BC086 +:1034F000111129C0472D4F7050E042305105B9F0ED +:103500004CF44115510581F041305105E1F40E9420 +:10351000F82619C04330510569F04430510599F43B +:103520008C2D0E944A270FC00E94E1260CC00E94E9 +:10353000142709C00E94272706C0472D4F706C2D05 +:10354000C7010E94A704DD20F9F00E945B2080FDE6 +:103550001BC0F70112820E9455200E944B1FC70119 +:103560000E94D31A0E9455200F90DF91CF911F9196 +:103570000F91FF90EF90DF90CF90BF90AF909F9012 +:103580008F907F900C946C1F0F90DF91CF911F91C3 +:103590000F91FF90EF90DF90CF90BF90AF909F90F2 +:1035A0008F907F9008950F931F93CF93DF93EC013B +:1035B000888199812B813C81232BB9F09F3F11F4A5 +:1035C0008F3F99F0CE010E94D904882371F0688161 +:1035D00079818A810E9451208C010E9406200E94DC +:1035E000CD1EB801CE010E948818DF91CF911F91A6 +:1035F0000F9108950E94DF200E94EF200E94B420C6 +:103600000E9409210E94B7240E94062480E090E0D5 +:103610000E944E1680E090E00C9464160E94CF2029 +:103620000C94FA1A0E944620292F22952F7030E020 +:103630002C3031054CF42A3031056CF4225031091C +:1036400022303105A8F407C02C30310569F02F3045 +:10365000310551F00DC0803F69F018F4803E40F410 +:1036600009C0843F29F406C093FB882780F9089598 +:1036700080E0089581E00895CF93DF9300D000D0DB +:103680001F92CDB7DEB70F900F900F900F900F9055 +:10369000DF91CF910895CF93DF9300D000D000D079 +:1036A000CDB7DEB726960FB6F894DEBF0FBECDBFFE +:1036B000DF91CF9108951F93CF93DF93C0918B013A +:1036C00016E080918C01C81799F0D0E01C9FF001A2 +:1036D0001D9FF00D1124E357FE4F408151816281FF +:1036E0007381848195810E944B1B2196C770E9CF1D +:1036F000DF91CF911F9108954091BD015091BE017E +:103700006091BF017091C0018091C1019091C2018F +:103710000C944B1B8091C20182958F7009F054C0AC +:103720008091BF01882309F44FC080918B01A09143 +:103730008C016091BD017091BE014091C00150911A +:10374000C101B6E08A1709F43FC090E04115510568 +:10375000C1F17F3F11F46F3FA1F1B89FF001B99F14 +:10376000F00D1124E357FE4F218172132AC02081EE +:10377000621327C02281211124C0238134812417A0 +:10378000350710F421503109241B350B283C310535 +:10379000C0F42091C2012F7020612093C20126E065 +:1037A000289FF001299FF00D1124EE56FE4F8081D5 +:1037B0008F70806180838DEB91E00E94D31A0C940E +:1037C0005B1B01968770BECF0895CF92DF92EF9278 +:1037D000FF920F931F93CF93DF93CDB7DEB762971E +:1037E0000FB6F894DEBF0FBECDBF8C0185E0F801A7 +:1037F000DE011D9601900D928A95E1F7D8014C915A +:1038000011965C91119712966C9112971396CD9028 +:10381000DC9014973091BD017091BE018091C00180 +:103820009091C101009709F46BC17F3F19F43F3FAC +:1038300009F466C1E090BF01EE2009F4C0C02091F8 +:10384000C201C816D90628F0F601E81BF90BCF0112 +:1038500004C0809590958C0D9D1DFF24F394883CA9 +:10386000910578F0F12C207F09F0C6C07C2DD98A13 +:10387000C88A89890E943C1B8DEB91E00E94D31A73 +:10388000B1C0822F807F09F046C0751314C0341375 +:1038900012C0611110C02F7020612093C2010E94DC +:1038A0007C1B8DEB91E00E94D31A8091C201D8015C +:1038B00015968C932EC0CD2819F15F3F11F44F3F20 +:1038C000F9F0F62E61111CC080918B0120918C01C2 +:1038D00036E0821709F45AC090E0389FF001399F12 +:1038E000F00D1124E357FE4F7181571306C070810C +:1038F000471303C07281711103C001968770E9CF2D +:10390000F62E662309F418C18091C201816080936C +:10391000C201F12C11C1751308C0341306C0611126 +:1039200004C08091C201D801C3C04D875E878D85D8 +:103930009E856A8B0E94121B6A898823E1F16623A7 +:10394000D1F12091C201822F82958F7090E0029771 +:1039500074F08091BD019091BE0198878F83198684 +:10396000DB86CA862C87CE0107960E94D31A86E092 +:10397000F801ADEBB1E001900D928A95E1F70E945C +:103980008A1B0E947C1BFF24F394D6C04D875E8760 +:103990008D859E850E944620292F22952F7030E02C +:1039A000223031050CF0BCC09F7009F0B6C0805EBB +:1039B000883008F4C1C0C8010E94D31AE4CFC816E9 +:1039C000D90608F453C0F601E81BF90BCF01883C77 +:1039D000910508F450C0F12C7C2DD98AC88A8989B8 +:1039E0000E943C1BEDEBF1E086E0DF011D928A9521 +:1039F000E9F70E947C1BA0C0751314C0341312C0D9 +:103A0000611110C08091C201F8018583C8010E9434 +:103A1000D31A86E0EDEBF1E0DF011D928A95E9F71C +:103A2000FE2C8AC04D875E878D859E856A8B0E949D +:103A3000121B6A89882309F4BECF662309F4BBCF21 +:103A40002091C201822F82958F7090E002970CF432 +:103A50008ECF8091BD019091BE019A8389831B8294 +:103A6000DD82CC822E83CE0101967FCF809590950A +:103A70008C0D9D1DACCFF62E662309F49CCF7513DB +:103A80002EC034132CC02091C20120FD1FC0822FF4 +:103A900082958F70D9F0D80115962C9315978F3099 +:103AA00049F08F5F982F9295907F822F8F70892B8E +:103AB00015968C93C8010E94D31A86E0F801ADEBED +:103AC000B1E001900D928A95E1F793CF86E0F8017D +:103AD000ADEBB1E001900D928A95E1F72DC04D87D5 +:103AE0005E878D859E850E94121B811140CF80913B +:103AF000C20181608093C201C8010E94D31A1CC018 +:103B0000662309F458CF4D875E878D859E850E9478 +:103B1000121B882309F44FCF2ACF811148CF0CC044 +:103B2000243031050CF047CF9F7009F440CFF801E5 +:103B30009581907F09F03BCF8F2D62960FB6F89458 +:103B4000DEBF0FBECDBFDF91CF911F910F91FF90D0 +:103B5000EF90DF90CF9008951F93CF93DF93CDB771 +:103B6000DEB72C970FB6F894DEBF0FBECDBF4F83E4 +:103B7000588769877A878B879C87CE0107960E9432 +:103B8000E51B882369F08F8198852A853B85232B47 +:103B9000F1F19F3F09F063C08F3F09F060C037C06B +:103BA00086E0FE013796DE01119601900D928A950E +:103BB000E1F76F817885EA85FB85309741F17F3F9A +:103BC00011F46F3F21F120918C0130E0C901019681 +:103BD0008770992740918B0150E08417950709F46D +:103BE00047C069837A83FD83EC8396E0929FD0017E +:103BF000939FB00D1124A357BE4FFE013196019043 +:103C00000D929A95E1F780938C010E945B1B16E060 +:103C100080918B0190918C018917C1F1189FC0018F +:103C2000112483579E4F0E94E51B882379F1E09170 +:103C30008B011E9FF0011124E357FE4F40815181FB +:103C400062817381848195810E944B1B80918B01DD +:103C500090E001968770992780938B01D9CF4F818F +:103C6000588569857A858B859C850E944B1BCFCFB3 +:103C70000E940E1B10928C0110928B01EDEBF1E073 +:103C800086E0DF011D928A95E9F7C1CF2C960FB629 +:103C9000F894DEBF0FBECDBFDF91CF911F91089585 +:103CA000EF92FF920F931F93CF93DF938C010097B6 +:103CB00009F46CC0F12CEE24E394E8012196F8019C +:103CC0008491843740F4843008F051C0813081F011 +:103CD000823019F15BC0853709F444C0A8F19CE734 +:103CE000980F903708F052C08F770E942B1841C070 +:103CF0000E5F1F4FFE01C49180E28C0F883048F4A4 +:103D0000C7708E2D01C0880FCA95EAF70E94E22085 +:103D100014C08C2F0E9463172DC00E5F1F4FFE0131 +:103D2000C49180E28C0F883058F4C7708E2D01C08A +:103D3000880FCA95EAF70E94E8200E9409211AC05C +:103D40008C2F0E942B1816C00E5F1F4FFE01C491CE +:103D5000CC2381F08FE99FE00197F1F700C00000CC +:103D6000C150F6CF0E5F1F4FFE01F49003C00E94BA +:103D700063178E018F2D882309F49FCFEFE9FFE0B1 +:103D80003197F1F700C000008150F5CFDF91CF915E +:103D90001F910F91FF90EF90089508956093C701D0 +:103DA0007093C8018093C9019093CA010C94FA1AC8 +:103DB0000F931F930091C7011091C8012091C90171 +:103DC0003091CA01DC01CB01802B912BA22BB32BAC +:103DD0008093C7019093C801A093C901B093CA0111 +:103DE0001F910F910C94FA1A0F931F930091C70122 +:103DF0001091C8012091C9013091CA01DC01CB01A9 +:103E000080239123A223B3238093C7019093C801F9 +:103E1000A093C901B093CA011F910F910C94FA1A93 +:103E20000F931F930091C7011091C8012091C90100 +:103E30003091CA01DC01CB0180279127A227B3274B +:103E40008093C7019093C801A093C901B093CA01A0 +:103E50001F910F910C94FA1A1092C3011092C40191 +:103E60001092C5011092C6010C94FA1A41E050E07C +:103E700060E070E004C0440F551F661F771F8A95ED +:103E8000D2F74093C3015093C4016093C50170936E +:103E9000C6010C94FA1A41E050E060E070E004C002 +:103EA000440F551F661F771F8A95D2F78091C30173 +:103EB0009091C401A091C501B091C601482B592B26 +:103EC0006A2B7B2B4093C3015093C4016093C501BF +:103ED0007093C6010C94FA1A41E050E060E070E083 +:103EE00004C0440F551F661F771F8A95D2F740956F +:103EF0005095609570958091C3019091C401A091F7 +:103F0000C501B091C601482359236A237B234093FE +:103F1000C3015093C4016093C5017093C6010C9412 +:103F2000FA1A41E050E060E070E004C0440F551F11 +:103F3000661F771F8A95D2F78091C3019091C401C3 +:103F4000A091C501B091C601482759276A277B2750 +:103F50004093C3015093C4016093C5017093C6019F +:103F60000C94FA1A0F931F930091C3011091C4018E +:103F70002091C5013091C601DC01CB01802B912B32 +:103F8000A22BB32B8093C3019093C401A093C501CE +:103F9000B093C6011F910F910C94FA1A0F931F93BF +:103FA0000091C3011091C4012091C5013091C60157 +:103FB000DC01CB0180239123A223B3238093C3018F +:103FC0009093C401A093C501B093C6011F910F91B6 +:103FD0000C94FA1A0F931F930091C3011091C4011E +:103FE0002091C5013091C601DC01CB0180279127CA +:103FF000A227B3278093C3019093C401A093C50166 +:10400000B093C6011F910F910C94FA1A0895CF92A4 +:10401000DF92EF92FF920F931F93CF93DF938C0168 +:10402000C090C701D090C801E090C901F090CA01CA +:104030008091C3019091C401A091C501B091C601C6 +:10404000C82AD92AEA2AFB2ACFE1D0E0D701C60143 +:104050000C2E04C0B695A795979587950A94D2F72C +:1040600080FF06C0B8018C2F0E940508019721F43B +:10407000219760F780E001C08C2FDF91CF911F91D5 +:104080000F91FF90EF90DF90CF900895CF93DF9343 +:10409000EC010E940720BE010E940508DF91CF912C +:1040A0000895CB010E94462008958091CB0185950B +:1040B0008595859508958091CB018770089598E046 +:1040C000899F90011124262B2093CB010C944B1F28 +:1040D0002091CB01809582238093CB01982F9770FC +:1040E00069F430E0482F552747FD509524173507D0 +:1040F00029F08595859585950C946C1F0895909170 +:10410000CB01977081E009F480E0089520910D01C2 +:1041100030910E01F90132969FEF40E0519158170E +:1041200089F09F3F19F4511101C0942F4F5F463021 +:10413000A9F79F3F39F0F901E90FF11D97FDFA95B5 +:1041400082830895089520910D0130910E01F901A7 +:104150003296285F3F4F9081981301C010823196AC +:10416000E217F307C1F7089581E090E0E0910D01B7 +:10417000F0910E01E80FF91F108201968830910529 +:10418000A9F708959091D701892B8093D7010895BD +:1041900080959091D70189238093D701089510923B +:1041A000D70108959091D601892B8093D601089567 +:1041B00080959091D60189238093D601089510921D +:1041C000D60108959091D501892B8093D50108954A +:1041D00080959091D50189238093D50108951092FF +:1041E000D50108958093CC0108951092CC010895D3 +:1041F00080910D0190910E01FC0131969C01285F88 +:104200003F4F80E0919191118F5FE217F307D1F753 +:104210000895E0910D01F0910E018091D701808306 +:10422000E0910D01F0910E0190818091D601892BD2 +:104230008083E0910D01F0910E0190818091D50174 +:10424000892B80838091CC01882361F0E0910D015E +:10425000F0910E019081892B80830E94F8208111BA +:104260001092CC0180910D0190910E010C943816A2 +:1042700020E0009739F0AC01415051098423952387 +:104280002F5FF7CF822F089580914902843039F152 +:104290001092D90120E488E190E00FB6F894A89537 +:1042A000809360000FBE2093600080E00E94FA03BC +:1042B00080E00E949F0883B7817F846083BF83B7BB +:1042C000816083BF7894889583B78E7F83BF88E1B0 +:1042D0000FB6F89480936000109260000FBE0895AE +:1042E0000895089580E00E94FA030E9470210E94C0 +:1042F000FA080E9471210E947F0991E0811101C09A +:1043000090E0892F08950E940E1B80E00E94FA031E +:104310000E94D0260E942C160C949F081F920F9288 +:104320000FB60F9211248F939F93AF93BF938091F9 +:10433000D901811113C08091DA019091DB01A09124 +:10434000DC01B091DD014196A11DB11D8093DA0120 +:104350009093DB01A093DC01B093DD01BF91AF919D +:104360009F918F910F900FBE0F901F90189582E034 +:1043700084BD93E095BD9AEF97BD80936E0008953C +:104380002FB7F8948091DA019091DB01A091DC01C4 +:10439000B091DD012FBF0895CF92DF92EF92FF928F +:1043A0000F931F932FB7F8944091DA015091DB01DE +:1043B0006091DC017091DD012FBF6A017B01EE2469 +:1043C000FF248C0120E030E0C016D106E206F3069F +:1043D00010F4415051099A01281B390BC9011F9152 +:1043E0000F91FF90EF90DF90CF9008951F920F9262 +:1043F0000FB60F9211248F939F93AF93BF93809129 +:10440000DA019091DB01A091DC01B091DD01019610 +:10441000A11DB11D8093DA019093DB01A093DC0113 +:10442000B093DD01BF91AF919F918F910F900FBE1F +:104430000F901F9018950E942913F8942FEF87EA88 +:1044400091E6215080409040E1F700C0000087E0F5 +:1044500090EBDC018093540290935502A093560296 +:10446000B09357029CE088E10FB6F894A89580932A +:1044700060000FBE90936000FFCF0E9472228111F6 +:1044800002C00E9453220E947D228093D8010E9484 +:104490008522809352020E948122682F70E080E082 +:1044A00090E00C94CE1E6DEE7EEF80E090E00E94D6 +:1044B000ED2860E082E090E00E94CF2860E083E099 +:1044C00090E00E94CF2860E084E090E00E94CF2836 +:1044D00060E085E090E00E94CF2860E086E090E018 +:1044E0000C94CF2880E090E00E94C92821E08D3E06 +:1044F0009E4F09F020E0822F089582E090E00C9416 +:10450000BB2883E090E00C94BB2884E090E00C94FE +:10451000BB28682F84E090E00C94CF2886E090E0E0 +:104520000C94BB28682F86E090E00C94CF288091F3 +:10453000E00180FF0BC06091120185E0689FB0012F +:10454000112475956795759567952BC081FF09C0F6 +:104550006091120185E0689FB001112475956795FF +:1045600020C082FF07C06091120185E0689FB00102 +:10457000112417C09091E1019923D1F060911101AC +:10458000961788F72091120185E0289F9001112449 +:10459000929FA001939F500D112470E0CA010E94C8 +:1045A000A1286038710540F46115710539F002C029 +:1045B00065E070E0862F08958FE7089581E0089503 +:1045C0008091E00180FF08C06091100170E0759556 +:1045D00067957595679521C081FF06C060911001B0 +:1045E00070E07595679519C082FF04C06091100155 +:1045F00070E010C09091E1019923C1F060910F012A +:104600009617A0F780911001899FC001112470E0D6 +:104610000E94A1286038710528F46115710521F008 +:10462000862F08958FE7089581E0089561E070E096 +:10463000F4CF803F21F40E949722819504C0813FEE +:1046400029F40E9497228093E4010895823F21F487 +:104650000E949722819504C0833F29F40E949722EB +:104660008093E3010895893F19F40E94E02205C078 +:104670008A3F31F40E94E02281958093E5010895FC +:104680008B3F21F40E94E022819504C08C3F29F4E5 +:104690000E94E0228093E6010895843F21F48091F6 +:1046A000E201816017C0853F21F48091E2018260C0 +:1046B00011C0863F21F48091E20184600BC0873FE6 +:1046C00021F48091E201886005C0883F31F4809137 +:1046D000E20180618093E20108958D3F21F4809191 +:1046E000E00181600BC08E3F21F48091E001826087 +:1046F00005C08F3F29F48091E00184608093E00140 +:104700000895803F39F48091E40187FF6CC01092D6 +:10471000E40169C0813F29F48091E4011816BCF3DB +:1047200062C09091E301823F29F497FF5CC0109230 +:10473000E30159C0833F19F41916CCF354C0893FE3 +:1047400041F48091E50118160CF04DC01092E5017E +:104750004AC08A3F29F48091E50187FF44C0F6CF23 +:104760008B3F39F48091E60187FF3DC01092E6014E +:104770003AC08C3F29F48091E6011816BCF333C08F +:10478000843F21F48091E2018E7F17C0853F21F4A0 +:104790008091E2018D7F11C0863F21F48091E2017A +:1047A0008B7F0BC0873F21F48091E201877F05C09A +:1047B000883F31F48091E2018F7E8093E20113C043 +:1047C0008D3F21F48091E0018E7F0BC08E3F21F45C +:1047D0008091E0018D7F05C08F3F29F48091E00139 +:1047E0008B7F8093E0018091E30181110EC0809165 +:1047F000E40181110AC08091E501811106C0809118 +:10480000E601811102C01092E101089582EE91E06B +:104810000E9443160E94C0219093DF018093DE0125 +:1048200008951F93CF93DF938091DE019091DF0174 +:104830000E94CC21AC019091E101992321F02091BB +:10484000130130E006C0209114018AE0289F9001F6 +:1048500011244217530708F486C08091E301C091E8 +:10486000E401D091E5011091E601811107C0C11169 +:1048700076C0D11174C0111172C075C09F3F19F07C +:104880009F5F9093E101181624F40E949722809371 +:10489000E3018091E30187FF05C00E949722819583 +:1048A0008093E3011C1624F40E9497228093E40174 +:1048B0008091E40187FF05C00E9497228195809333 +:1048C000E4016091E301662339F1C091E401CC2356 +:1048D00019F1772767FD7095872F972F0E949E27E4 +:1048E00023E333E343E35FE30E9402280E946B2744 +:1048F0006093E3016C2F772767FD7095872F972FC3 +:104900000E949E2723E333E343E35FE30E940228F0 +:104910000E946B276093E4011D1624F40E94E0229C +:104920008093E5018091E50187FF05C00E94E022A8 +:1049300081958093E501111624F40E94E022809372 +:10494000E6018091E60187FF05C00E94E022819583 +:104950008093E601DF91CF911F910C9406249F3F35 +:1049600009F08ECF96CFDF91CF911F910895E2EE9F +:10497000F1E085E0DF011D928A95E9F71092E101EF +:104980001092E0010895833081F128F4813059F0CC +:104990008230D1F00895853009F449C0B8F18630ED +:1049A00009F456C0089580911401262F30E0280F95 +:1049B000311D2F3F310524F4680F609314010895D1 +:1049C0008FEF80931401089580911301262F30E01A +:1049D000280F311D2F3F310524F4680F6093130118 +:1049E00008958FEF80931301089580911201262F6F +:1049F00030E0280F311D2F3F310524F4680F6093FC +:104A0000120108958FEF8093120108958091110192 +:104A1000262F30E0280F311D2F3F310524F4680F79 +:104A20006093110108958FEF809311010895809193 +:104A30001001262F30E0280F311D2F3F310524F4BF +:104A4000680F6093100108958FEF8093100108950F +:104A500080910F01262F30E0280F311D2F3F3105A7 +:104A600024F4680F60930F0108958FEF80930F0176 +:104A70000895833011F128F4813049F0823091F0AB +:104A80000895853081F120F18630C1F1089580913B +:104A90001401681720F4861B809314010895109266 +:104AA0001401089580911301681720F4861B8093E8 +:104AB000130108951092130108958091120168174F +:104AC00020F4861B8093120108951092120108951C +:104AD00080911101681720F4861B809311010895BD +:104AE00010921101089580911001681720F4861B1F +:104AF00080931001089510921001089580910F0184 +:104B0000681720F4861B80930F01089510920F01FF +:104B100008950F931F938732D8F58E3108F085C022 +:104B20008E3009F46FC098F4873009F459C08B3087 +:104B300009F48FC0863009F093C08091D801817F3D +:104B40008E7F8093D80181E08093E8018AC086310E +:104B500009F47FC068F4803109F082C08091D801E7 +:104B600083FB222720F991E0922790FB83F953C021 +:104B7000893109F46EC08B3109F072C08091D8017F +:104B800081FB222720F991E0922790FB81F943C015 +:104B9000883309F45EC050F4893209F45CC085336F +:104BA00009F459C0873209F456C05AC0833409F455 +:104BB00052C028F48A3308F453C0895337C088346C +:104BC00009F04EC00E940E1B0FEF13ED20E30150C1 +:104BD00010402040E1F700C000000E941B2239C0B5 +:104BE0009091D801892F8095817080FB90F929F0F0 +:104BF000966098609093D80134C0997F977F909386 +:104C0000D80127C08091D80182FB222720F991E0AA +:104C1000922790FB82F98093D8019923D1F080915B +:104C2000D80181608093D80114C08D5141E050E0DB +:104C300060E070E08A019B0104C0000F111F221F79 +:104C4000331F8A95D2F7C901B8010E94CE1E0E9477 +:104C50000E1B81E006C061E070E080E090E0F5CFDF +:104C600080E01F910F91089580E0089580E00895FD +:104C7000CF93C82F8091E801813069F018F082301D +:104C8000C9F184C0E0910D01F0910E018081823262 +:104C900009F07EC007C0E0910D01F0910E01808106 +:104CA000823261F48C2F0E943426811104C08C2F33 +:104CB0000E9489251DC081E090E01AC08C2F0E94BF +:104CC0003626811114C0C43179F048F4CB3079F024 +:104CD000C03109F061C082E08093E80108C0C932A8 +:104CE00019F0C83321F058C01092E80155C081E096 +:104CF000817054C0C93291F120F5C43179F1B0F41A +:104D0000C73009F047C08EE18093140182E380939D +:104D100013018AE08093120184E18093110188E0FD +:104D20008093100188E280930F0134C0CE51C630C9 +:104D300088F5EC2FF0E0EC5CFE4F80818093E7017A +:104D400029C0CE34E9F020F4CB3421F56AE013C059 +:104D5000C13579F0C235F1F461E00DC08091E70111 +:104D6000882319F01092E70115C081E08093E801D3 +:104D700015C061E006C08091E7010E94C3240AC00B +:104D80006AE08091E7010E94392504C01092E80191 +:104D900080E004C081E002C080E0AACFCF910895F6 +:104DA0000E947222811102C00E9453220E948E2210 +:104DB0008093530280FF02C0869501C080E00C946E +:104DC000FA0380915302982F9695292F30E02330D3 +:104DD00031054CF49F5F990F8170892B816080931E +:104DE00053020E9492228091530286950C94FA03FA +:104DF00080915302982F969591F09158990F817058 +:104E0000892B809353028E7F91E009F490E080918A +:104E1000530290FB80F9809353020E94922280916A +:104E2000530286950C94FA0380915302982F909523 +:104E300090FB80F9809353020E949222809153024A +:104E400080FF02C0869501C080E00C94FA03909127 +:104E50005302892F86958F5F8F779170843028F465 +:104E6000880F892B8093530202C090935302809144 +:104E700053028E7F91E009F490E08091530290FB01 +:104E800080F9809353020E9492228091530286956A +:104E90000C94FA0320915302922F96958927982F0C +:104EA000990F822F8170892B809353028E7F91E01E +:104EB00009F490E08091530290FB80F980935302B3 +:104EC0000E9492228091530286950C94FA0380915D +:104ED00053028695089504D06894B1118DC0089549 +:104EE00070D088F09F5790F0B92F9927B751A0F054 +:104EF000D1F0660F771F881F991F1AF0BA95C9F76E +:104F000012C0B13081F077D0B1E0089574C0672F3E +:104F1000782F8827B85F39F0B93FCCF3869577951D +:104F20006795B395D9F73EF4909580957095619506 +:104F30007F4F8F4F9F4F0895E89409C097FB3EF431 +:104F400090958095709561957F4F8F4F9F4F9923D6 +:104F5000A9F0F92F96E9BB279395F6958795779554 +:104F60006795B795F111F8CFFAF4BB0F11F460FF14 +:104F70001BC06F5F7F4F8F4F9F4F16C0882311F06C +:104F800096E911C0772321F09EE8872F762F05C080 +:104F9000662371F096E8862F70E060E02AF09A951B +:104FA000660F771F881FDAF7880F9695879597F910 +:104FB000089557FD9058440F551F59F05F3F71F009 +:104FC0004795880F97FB991F61F09F3F79F0879570 +:104FD0000895121613061406551FF2CF4695F1DFF9 +:104FE00008C0161617061806991FF1CF8695710589 +:104FF000610508940895E894BB2766277727CB01BD +:1050000097F908950BD078C069D028F06ED018F0C9 +:10501000952309F05AC05FC01124EECFCADFA0F378 +:10502000959FD1F3950F50E0551F629FF001729F3D +:10503000BB27F00DB11D639FAA27F00DB11DAA1F5C +:10504000649F6627B00DA11D661F829F2227B00DA9 +:10505000A11D621F739FB00DA11D621F839FA00D34 +:10506000611D221F749F3327A00D611D231F849F84 +:10507000600D211D822F762F6A2F11249F575040DB +:105080008AF0E1F088234AF0EE0FFF1FBB1F661F76 +:10509000771F881F91505040A9F79E3F510570F02F +:1050A00014C0AACF5F3FECF3983EDCF3869577956A +:1050B0006795B795F795E7959F5FC1F7FE2B880F2A +:1050C000911D9695879597F9089597F99F6780E8C0 +:1050D00070E060E008959FEF80EC089500240A944A +:1050E0001616170618060906089500240A941216C3 +:1050F0001306140605060895092E0394000C11F4F6 +:10510000882352F0BB0F40F4BF2B11F460FF04C0A2 +:105110006F5F7F4F8F4F9F4F0895AA1BBB1B51E1BD +:1051200007C0AA1FBB1FA617B70710F0A61BB70B17 +:10513000881F991F5A95A9F780959095BC01CD01BC +:10514000089597FB072E16F4009407D077FD09D039 +:105150000E948D2807FC05D03EF4909581959F4FC5 +:105160000895709561957F4F0895EE0FFF1F05908C +:10517000F491E02D0994F999FECF92BD81BDF89A82 +:10518000992780B50895A6E1B0E044E050E00C9482 +:10519000F528A8E1B0E042E050E00C94F528262F75 +:1051A000F999FECF92BD81BDF89A019700B402161D +:1051B00039F01FBA20BD0FB6F894FA9AF99A0FBECB +:1051C00008950396272F0E94D0280E94CF28252FCC +:1051D0000E94D028242F0C94D0280196272F0E94BB +:1051E000D0280C94CF28DC01CB01FC01F999FECF2B +:1051F00006C0F2BDE1BDF89A319600B40D9241505F +:0A5200005040B8F70895F894FFCF6E +:10520A00FFFF580FE60FC30F8F0F5B0F01CD012869 +:10521A0008140A321E1F0F03764F5F6F7F496943D6 +:10522A0079095953633F4D36FE06B1067B062706B8 +:0E523A00400659060102030405060708090094 +:00000001FF -- cgit v1.2.1 From f404124c2664bdcdd64c92926add5beac7826b48 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Tue, 21 Jun 2016 12:36:26 -0400 Subject: Add filler to make layering clearer; KC_TRNS gets used a lot; have the blank _______ mnemonic for it --- keyboard/planck/keymaps/cbbrowne/config.h | 3 +++ keyboard/planck/keymaps/cbbrowne/keymap.c | 14 +++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/keyboard/planck/keymaps/cbbrowne/config.h b/keyboard/planck/keymaps/cbbrowne/config.h index 2d3df59bd2..d84cd1f95d 100644 --- a/keyboard/planck/keymaps/cbbrowne/config.h +++ b/keyboard/planck/keymaps/cbbrowne/config.h @@ -9,6 +9,9 @@ #define randmul 181 #define randmod 167 +/* Filler to make layering a bit clearer */ +#define _______ KC_TRNS + #endif diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index 14a5be1708..172e68efbc 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -1,6 +1,6 @@ #include "planck.h" #ifdef BACKLIGHT_ENABLE - #include "backlight.h" +#include "backlight.h" #endif #include "config.h" #include "quantum.h" @@ -89,15 +89,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }, [_RS] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_LW] = { /* LOWER */ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, KC_TRNS}, - {KC_TRNS, DF(_KP), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, _______}, + {_______, DF(_KP), _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_KP] = { /* Key Pad */ {KC_ESC, M(M_USERNAME), M(M_VERSION), KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, -- cgit v1.2.1 From 28942b3ba7868e3b99ea02c81076fdead1ea52fe Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Tue, 21 Jun 2016 12:45:38 -0400 Subject: Improve docs a bit --- keyboard/planck/keymaps/cbbrowne/config.h | 4 +++- keyboard/planck/keymaps/cbbrowne/keymap.c | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboard/planck/keymaps/cbbrowne/config.h b/keyboard/planck/keymaps/cbbrowne/config.h index d84cd1f95d..58cd2cc5bc 100644 --- a/keyboard/planck/keymaps/cbbrowne/config.h +++ b/keyboard/planck/keymaps/cbbrowne/config.h @@ -9,7 +9,9 @@ #define randmul 181 #define randmod 167 -/* Filler to make layering a bit clearer */ +/* Filler to make layering a bit clearer * + * borrowed from basic keymap */ + #define _______ KC_TRNS #endif diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index 172e68efbc..b6a98aa8c7 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -86,6 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_QUOT }, {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ }, [_RS] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, -- cgit v1.2.1 From 2d314810086684883329af730d8f5e8ecd0506b0 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Tue, 21 Jun 2016 12:55:24 -0400 Subject: More notes --- keyboard/planck/keymaps/cbbrowne/keymap.c | 1 + keyboard/planck/keymaps/cbbrowne/readme.md | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index b6a98aa8c7..55385acd6b 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c @@ -108,6 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { } }; +/* What is fn_actions actually used for??? */ const uint16_t PROGMEM fn_actions[] = { }; diff --git a/keyboard/planck/keymaps/cbbrowne/readme.md b/keyboard/planck/keymaps/cbbrowne/readme.md index c676dd2c1c..5f08530f46 100644 --- a/keyboard/planck/keymaps/cbbrowne/readme.md +++ b/keyboard/planck/keymaps/cbbrowne/readme.md @@ -62,3 +62,17 @@ doing sundry experimentation: and shift ESC off the first column so KC_LCTL and KC_LALT can be on the first column. * I needed to swap ' and ENTER + +4. TODO +--------------------------------------------------------- + + * I use tmux quite a lot; the mollat keymap seems to have some + interesting helpers. It might be interesting to add a "tmux + layer" + * The mollat tmux layer also suggests some thoughts about Emacs + helpers. + * I do not presently have anything that handles X11 screen + switching, as with Control-Alt-various + + + -- cgit v1.2.1 From 0cd017d485f19a2c9ce5e8df3535d44958664ea7 Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Wed, 22 Jun 2016 16:51:25 -0400 Subject: Use Space Cadet parens on LSFT --- keyboards/planck/keymaps/cbbrowne/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 55385acd6b..6ce4fd0e7a 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QW] = { /* Qwerty */ {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_QUOT }, + {KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT }, {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ }, -- cgit v1.2.1 From 477ed703c88822aea62152d62fb2310267edc48f Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Tue, 12 Jul 2016 11:57:05 -0400 Subject: I did not like Space Cadet paren; it jumps in in way too many extra cases --- keyboards/planck/keymaps/cbbrowne/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 6ce4fd0e7a..55385acd6b 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QW] = { /* Qwerty */ {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT}, - {KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT }, {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ }, -- cgit v1.2.1 From 82f768e6c04c57fa44d6020e3d57a6b3de211ddc Mon Sep 17 00:00:00 2001 From: Christopher Browne Date: Mon, 18 Jul 2016 16:07:00 -0400 Subject: Notes about changes --- keyboards/planck/keymaps/cbbrowne/readme.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md index 5f08530f46..fdb0997001 100644 --- a/keyboards/planck/keymaps/cbbrowne/readme.md +++ b/keyboards/planck/keymaps/cbbrowne/readme.md @@ -7,16 +7,10 @@ Christopher Browne This was originally based on the default keyboard map, but I have been doing sundry experimentation: -1. Experiments +1. Useful Experiments ---------------------------------------- - * To figure things out about the toolset - * I'm an Emacs guy, so will be needing a fair bit of tuning * It made sense to mess around some with keyboard maps. - - I tried added Workman alongside Dvorak and Colemak - - Boy, oh boy, these don't help!!! - - I have done 30 years of learning of Emacs key mappings, and - these alternative keyboards massively mess me up - I added a keypad, originally based on keymaps/numpad.c, but mighty substantially revised, as that one seems to be rotated 90 degrees from usual conventions for number pads @@ -30,6 +24,7 @@ doing sundry experimentation: - Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random - Key [1][3] aka "e" spits out the keymap version number + * Minor use of Space Cadet Shift; my SHIFT key has switched to KC_LSP0, so that when I just hit SHIFT, I get a left parens: ( which is great for Lisping. I don't have a Right Shift, so I don't get an autoclose; I think I'll live with that until a Planck successor with more lines of keys :-) 2. Some code structure ideas --------------------------------------------------- @@ -62,6 +57,10 @@ doing sundry experimentation: and shift ESC off the first column so KC_LCTL and KC_LALT can be on the first column. * I needed to swap ' and ENTER + * I tried added Workman alongside Dvorak and Colemak + - Boy, oh boy, these don't help!!! + - I have done 30 years of learning of Emacs key mappings, and + these alternative keyboards massively mess me up 4. TODO --------------------------------------------------------- @@ -73,6 +72,7 @@ doing sundry experimentation: helpers. * I do not presently have anything that handles X11 screen switching, as with Control-Alt-various - + * I ought to probably look into KC_LEAD, to have some key combos + that do not need to be concurrent -- cgit v1.2.1 From eeb100f87d96680302024e816ad7460a6d9bf281 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Thu, 21 Jul 2016 18:19:08 -0400 Subject: First draft of the 'impossible' layout. --- keyboards/planck/keymaps/impossible/Makefile | 25 ++ keyboards/planck/keymaps/impossible/keymap.c | 332 ++++++++++++++++++++++++++ keyboards/planck/keymaps/impossible/readme.md | 2 + 3 files changed, 359 insertions(+) create mode 100644 keyboards/planck/keymaps/impossible/Makefile create mode 100644 keyboards/planck/keymaps/impossible/keymap.c create mode 100644 keyboards/planck/keymaps/impossible/readme.md diff --git a/keyboards/planck/keymaps/impossible/Makefile b/keyboards/planck/keymaps/impossible/Makefile new file mode 100644 index 0000000000..581e08cd02 --- /dev/null +++ b/keyboards/planck/keymaps/impossible/Makefile @@ -0,0 +1,25 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c new file mode 100644 index 0000000000..2489fc270a --- /dev/null +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -0,0 +1,332 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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 _ALPHA 0 +#define _FN 1 +#define _QWERTY 3 +#define _COLEMAK 4 +#define _DVORAK 5 +#define _LOWER 6 +#define _RAISE 7 +#define _PLOVER 8 +#define _ADJUST 16 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_ALPHA] = { + {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, + {KC_A, KC_S, KC_H, KC_T, KC_G, KC_N, KC_E, KC_O, KC_I, KC_KP_4, KC_KP_5, KC_KP_6}, + {KC_Z, KC_X, KC_M, KC_C, KC_V, KC_L, KC_Y, KC_K, GUI_T(KC_ENTER), KC_KP_1, KC_KP_2, KC_KP_3}, + {ALT_T(KC_TAB), KC_SLASH, KC_COMM, SFT_T(KC_BSPC), LT(_FN, KC_ESC), CTL_T(KC_SPC), KC_DOT, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_KP_0} +}, + +[_FN] = { + {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_FN12, KC_FN7, KC_FN8, KC_FN9}, + {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_FN11, KC_FN4, KC_FN5, KC_FN6}, + {RESET, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, KC_ENTER, _______, KC_FN1, KC_FN2, KC_FN3}, + {_______, KC_BSLASH, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_FN10} +}, + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + +[_PLOVER] = { + {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, + {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, + {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/impossible/readme.md b/keyboards/planck/keymaps/impossible/readme.md new file mode 100644 index 0000000000..de9680b498 --- /dev/null +++ b/keyboards/planck/keymaps/impossible/readme.md @@ -0,0 +1,2 @@ +# The Default Planck Layout + -- cgit v1.2.1 From a39eaa7fb573026851fff35f379e8ed75df241c0 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Fri, 22 Jul 2016 17:46:23 -0400 Subject: Switched to natural arrows, put ENTER on middle Fn, swapped Shift and CTRL. --- keyboards/planck/keymaps/impossible/keymap.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index 2489fc270a..037282ee20 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -42,19 +42,32 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Alpha-numeric + ,-----------------------------------------------------------------------------------------------. + | Q | D | R | W | B | F | U | P | J | 7 | 8 | 9 | + |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + | A | S | H | T | G | N | E | O | I | 4 | 5 | 6 | + |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| + | Z | X | M | C | V | L | Y | K | Up | 1 | 2 | 3 | + |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 | / | + `-----------------------------------------------------------------------------------------------' +*/ + [_ALPHA] = { {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, {KC_A, KC_S, KC_H, KC_T, KC_G, KC_N, KC_E, KC_O, KC_I, KC_KP_4, KC_KP_5, KC_KP_6}, - {KC_Z, KC_X, KC_M, KC_C, KC_V, KC_L, KC_Y, KC_K, GUI_T(KC_ENTER), KC_KP_1, KC_KP_2, KC_KP_3}, - {ALT_T(KC_TAB), KC_SLASH, KC_COMM, SFT_T(KC_BSPC), LT(_FN, KC_ESC), CTL_T(KC_SPC), KC_DOT, - KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_KP_0} + {KC_Z, KC_X, KC_M, KC_C, KC_V, KC_L, KC_Y, KC_K, KC_UP, KC_KP_1, KC_KP_2, KC_KP_3}, + {ALT_T(KC_TAB), GUI_T(KC_ESC), KC_COMM, CTL_T(KC_BSPC), LT(_FN, KC_ENTER), SFT_T(KC_SPC), KC_DOT, + KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_SLASH} }, [_FN] = { {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_FN12, KC_FN7, KC_FN8, KC_FN9}, {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_FN11, KC_FN4, KC_FN5, KC_FN6}, - {RESET, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, KC_ENTER, _______, KC_FN1, KC_FN2, KC_FN3}, - {_______, KC_BSLASH, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_FN10} + {RESET, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, XXXXXXX, KC_PGUP, KC_FN1, KC_FN2, KC_FN3}, + {_______, _______, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_FN10, KC_BSLASH} }, /* Qwerty @@ -67,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' - */ + */ [_QWERTY] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, -- cgit v1.2.1 From 723857bf8a59a4d9a779bfb1a0acd049bb4702d0 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Fri, 22 Jul 2016 18:17:34 -0400 Subject: Table for Fn layer. --- keyboards/planck/keymaps/impossible/keymap.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index 037282ee20..6c22423fff 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -63,6 +63,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_SLASH} }, +/* Symbols (FN Held) + ,-----------------------------------------------------------------------------------------------. + | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | + |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + | Caps | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | + |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| + | DFU | Insert| PrtSc | ScrLk | Pause | NumLk | Menu | | PgUp | F1 | F2 | F3 | + |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + |Alt/Tab|Gui/Esc| ` |CTL/Bsp| Fn/Ent|SFT/SPC| ; | Home | PgDn | End | F10 | / | + `-----------------------------------------------------------------------------------------------' +*/ + [_FN] = { {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_FN12, KC_FN7, KC_FN8, KC_FN9}, {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_FN11, KC_FN4, KC_FN5, KC_FN6}, -- cgit v1.2.1 From 34bce6f206e30c06f4b6ccd22d461690732ea607 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sun, 24 Jul 2016 04:08:40 +0200 Subject: fixed stupid errors --- keyboards/planck/keymaps/bone2planck/keymap.c | 29 ++++++++++++++++----------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index ceb5564251..4cac60ff9f 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -3,10 +3,15 @@ #ifdef BACKLIGHT_ENABLE #include "backlight.h" #endif +#include "keymap_german.h" + +/* for intellisense, comment for building #include "..\..\..\..\quantum\keymap_extras\keymap_german.h" #include "..\..\..\..\quantum\keymap_common.h" #include "..\..\..\..\tmk_core\common\keycode.h" -#define _______ = KC_TRNS; +*/ + +#define _______ KC_TRNS /* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. It has "üäöß" as it is optimized for a mix of German & English. @@ -26,14 +31,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [0] = { { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, { LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) }, { KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT }, - { KC_LGUI, KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_NO, KC_RCTL, KC_ESC } + { KC_RGUI, KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_RALT, KC_RCTL, KC_ESC } }, /* M1 Special Characters @@ -45,7 +50,7 @@ very ergonomic placement for coding * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| # | $ | | | ~ | € | + | % | " | ' | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [1] = { @@ -64,7 +69,7 @@ very easy to get used to & intuituve placement * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M3 | M2 | Space | M2 | M3 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M3 | M2 | Space | M2 | M3 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [2] = { @@ -83,12 +88,12 @@ accessed by sliding from M2 to M3 with thumb * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| 0 | 1 | 2 | 3 | ; | | Tab | Ins | Enter| |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M3 | | Space | | M3 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M3 | | Space | | M3 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [3] = { - { KC_NO, KC_NO, DE_7, DE_8 DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, + { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, { _______, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______ }, { _______, DE_0, DE_1, DE_2, DE_3, DE_SCLN, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, _______ }, { _______, _______, _______, _______, KC_NO, _______, _______, KC_NO, _______, _______, _______, _______ } @@ -104,7 +109,7 @@ slide from m4 to m5 to access flipped version * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M5 | Space | M5 | M4 | | Ctrl | Esc | +* | GUI | Ctrl | Alt | M4 | M5 | Space | M5 | M4 | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [4] = { @@ -112,7 +117,7 @@ slide from m4 to m5 to access flipped version { KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO }, { _______, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, _______ }, { _______, _______, _______, _______, MO(5), _______, _______, MO(5), _______, _______, _______, _______ } -} +}, /* flipped Function & Media Keys @@ -123,13 +128,13 @@ slide from m4 to m5 to access flipped version * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| ² | F1 | F2 | F3 | | | Prev | Play | Next | |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | | M5 | Space | M5 | | | Ctrl | Esc | +* | GUI | Ctrl | Alt | | M5 | Space | M5 | | Alt | Ctrl | Esc | * `-----------------------------------------------------------------------------------' */ [5] = { { KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO }, - { KC_NO, KC_SQ3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO }, - { _______, KC_SQ2, KC_F1, KC_F2, KC_F3, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ }, + { KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO }, + { _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ }, { _______, _______, _______, KC_NO, _______, _______, _______, _______, KC_NO, _______, _______, _______ } } }; -- cgit v1.2.1 From 58f092cf872a8f3f584b98445672f3e6809672c2 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sun, 24 Jul 2016 04:52:35 +0200 Subject: moved ctrl --- keyboards/planck/keymaps/bone2planck/keymap.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 4cac60ff9f..440de7f0da 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -5,7 +5,8 @@ #endif #include "keymap_german.h" -/* for intellisense, comment for building +// for intellisense, comment for building +/* #include "..\..\..\..\quantum\keymap_extras\keymap_german.h" #include "..\..\..\..\quantum\keymap_common.h" #include "..\..\..\..\tmk_core\common\keycode.h" @@ -31,14 +32,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M4 | M2 | Space | M2 | M4 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [0] = { - { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, - { LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) }, - { KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT }, - { KC_RGUI, KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_RALT, KC_RCTL, KC_ESC } + { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, + { LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) }, + { KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT }, + { KC_LCTL, KC_RGUI, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_RALT, KC_ESC, KC_RCTL } }, /* M1 Special Characters @@ -50,7 +51,7 @@ very ergonomic placement for coding * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| # | $ | | | ~ | € | + | % | " | ' | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M4 | M2 | Space | M2 | M4 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [1] = { @@ -69,7 +70,7 @@ very easy to get used to & intuituve placement * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M3 | M2 | Space | M2 | M3 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [2] = { @@ -88,7 +89,7 @@ accessed by sliding from M2 to M3 with thumb * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| 0 | 1 | 2 | 3 | ; | | Tab | Ins | Enter| |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M3 | | Space | | M3 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M3 | | Space | | M3 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ @@ -109,7 +110,7 @@ slide from m4 to m5 to access flipped version * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | M4 | M5 | Space | M5 | M4 | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | M4 | M5 | Space | M5 | M4 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [4] = { @@ -128,7 +129,7 @@ slide from m4 to m5 to access flipped version * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| ² | F1 | F2 | F3 | | | Prev | Play | Next | |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| -* | GUI | Ctrl | Alt | | M5 | Space | M5 | | Alt | Ctrl | Esc | +* | Ctrl | GUI | Alt | | M5 | Space | M5 | | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [5] = { -- cgit v1.2.1 From 1bfd57e2345119d5c60e95cdf82e14eb81a3b027 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sun, 24 Jul 2016 05:02:06 +0200 Subject: moved insert --- keyboards/planck/keymaps/bone2planck/keymap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 440de7f0da..6390e12897 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -64,19 +64,19 @@ very ergonomic placement for coding /* Navigation & Number Blocks very easy to get used to & intuituve placement * ,-----------------------------------------------------------------------------------. -* | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | | +* | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | Ins | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Tab | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | Enter| * |------+------+------+------+------+------|------+------+------+------+------+------| -* | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | +* | Shift| | Tab | | Enter| | 0 | 1 | 2 | 3 | ; |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [2] = { - { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO }, + { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_INS }, { KC_TAB, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_ENT }, - { _______, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, DE_0, DE_1, DE_2, DE_3, DE_SCLN, _______ }, + { _______, KC_NO, KC_TAB, KC_NO, KC_ENT, KC_NO, DE_0, DE_1, DE_2, DE_3, DE_SCLN, _______ }, { _______, _______, _______, MO(3), _______, _______, _______, _______, MO(3), _______, _______, _______ } }, @@ -94,7 +94,7 @@ accessed by sliding from M2 to M3 with thumb */ [3] = { - { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, + { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, { _______, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______ }, { _______, DE_0, DE_1, DE_2, DE_3, DE_SCLN, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, _______ }, { _______, _______, _______, _______, KC_NO, _______, _______, KC_NO, _______, _______, _______, _______ } -- cgit v1.2.1 From 4e0bf283f695b4b584bb62d31bb4cd6d7d1f2203 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sun, 24 Jul 2016 05:11:07 +0200 Subject: added readme --- keyboards/planck/keymaps/bone2planck/readme.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 keyboards/planck/keymaps/bone2planck/readme.md diff --git a/keyboards/planck/keymaps/bone2planck/readme.md b/keyboards/planck/keymaps/bone2planck/readme.md new file mode 100644 index 0000000000..3c425efddb --- /dev/null +++ b/keyboards/planck/keymaps/bone2planck/readme.md @@ -0,0 +1,8 @@ +check keymap.c to the layers + +This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. +It has "üäöß" as it is optimized for a mix of German & English. +My favourite features are the placement of the special characters often used for programming right on the home row +and the number & navigation block combo, so you never have to move your hands from their home position. + +Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone \ No newline at end of file -- cgit v1.2.1 From 3e462fac3101955ad3561a104c24ca6125e85acd Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Mon, 25 Jul 2016 20:21:32 +0200 Subject: added missing F keys in flipped layer --- keyboards/planck/keymaps/bone2planck/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 6390e12897..5abae692c6 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -123,19 +123,19 @@ slide from m4 to m5 to access flipped version /* flipped Function & Media Keys * ,-----------------------------------------------------------------------------------. -* | | | F7 | F8 | F9 | | | Print|Scroll| Pause| | | +* | | | F7 | F8 | F9 | F12 | | Print|Scroll| Pause| | | * |------+------+------+------+------+-------------+------+------+------+------+------| -* | | ³ | F4 | F5 | F6 | | | Mute | Vol- | Vol+ | | | +* | | ³ | F4 | F5 | F6 | F11 | | Mute | Vol- | Vol+ | | | * |------+------+------+------+------+------|------+------+------+------+------+------| -* | Shift| ² | F1 | F2 | F3 | | | Prev | Play | Next | |Shift | +* | Shift| ² | F1 | F2 | F3 | F10 | | Prev | Play | Next | |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Ctrl | GUI | Alt | | M5 | Space | M5 | | Alt | Esc | Ctrl | * `-----------------------------------------------------------------------------------' */ [5] = { - { KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO }, - { KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO }, - { _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ }, + { KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO }, + { KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO }, + { _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ }, { _______, _______, _______, KC_NO, _______, _______, _______, _______, KC_NO, _______, _______, _______ } } }; -- cgit v1.2.1 From 8244fa40ccd89ad16ddc00210d5b1b169fb655c2 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Tue, 26 Jul 2016 14:58:17 +0200 Subject: added config.h, and missing Ins of filpped navigation layer --- keyboards/planck/keymaps/bone2planck/config.h | 90 +++++++++++++++++++++++++++ keyboards/planck/keymaps/bone2planck/keymap.c | 6 +- 2 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 keyboards/planck/keymaps/bone2planck/config.h diff --git a/keyboards/planck/keymaps/bone2planck/config.h b/keyboards/planck/keymaps/bone2planck/config.h new file mode 100644 index 0000000000..ba157db92a --- /dev/null +++ b/keyboards/planck/keymaps/bone2planck/config.h @@ -0,0 +1,90 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#define PREVENT_STUCK_MODIFIERS + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Planck Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D0, D5, B5, B6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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)) \ +) + +/* + * 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 + +#ifdef SUBPROJECT_rev3 + #include "rev3/config.h" +#endif +#ifdef SUBPROJECT_rev4 + #include "rev4/config.h" +#endif + +#endif diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 5abae692c6..7db3197a72 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -5,7 +5,7 @@ #endif #include "keymap_german.h" -// for intellisense, comment for building +// for intellisense, has to be commented for building /* #include "..\..\..\..\quantum\keymap_extras\keymap_german.h" #include "..\..\..\..\quantum\keymap_common.h" @@ -83,7 +83,7 @@ very easy to get used to & intuituve placement /* Flipped Navigation & Number Blocks for one handed use accessed by sliding from M2 to M3 with thumb * ,-----------------------------------------------------------------------------------. -* | | | 7 | 8 | 9 | | PgUp | Bksp | Up | DEL | PgDn | | +* | Ins | | 7 | 8 | 9 | | PgUp | Bksp | Up | DEL | PgDn | | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Tab | . | 4 | 5 | 6 | , | Home | Left | Down | Right| End | Enter| * |------+------+------+------+------+------|------+------+------+------+------+------| @@ -94,7 +94,7 @@ accessed by sliding from M2 to M3 with thumb */ [3] = { - { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, + { KC_INS, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO }, { _______, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______ }, { _______, DE_0, DE_1, DE_2, DE_3, DE_SCLN, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, _______ }, { _______, _______, _______, _______, KC_NO, _______, _______, KC_NO, _______, _______, _______, _______ } -- cgit v1.2.1 From a41a7a9100b9f4c6bfdf49b39b05e626ffd95397 Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Tue, 26 Jul 2016 16:19:34 +0200 Subject: include base config.h instead of copying it --- keyboards/planck/keymaps/bone2planck/config.h | 93 ++------------------------- 1 file changed, 5 insertions(+), 88 deletions(-) diff --git a/keyboards/planck/keymaps/bone2planck/config.h b/keyboards/planck/keymaps/bone2planck/config.h index ba157db92a..60aff6db0d 100644 --- a/keyboards/planck/keymaps/bone2planck/config.h +++ b/keyboards/planck/keymaps/bone2planck/config.h @@ -1,90 +1,7 @@ -/* -Copyright 2012 Jun Wako - -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#define PREVENT_STUCK_MODIFIERS - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define MANUFACTURER Ortholinear Keyboards -#define PRODUCT The Planck Keyboard -#define DESCRIPTION A compact ortholinear keyboard - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 - -/* Planck PCB default pin-out */ -#define MATRIX_ROW_PINS { D0, D5, B5, B6 } -#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define UNUSED_PINS - -#define BACKLIGHT_PIN B7 - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - -/* 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)) \ -) - -/* - * 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 - -#ifdef SUBPROJECT_rev3 - #include "rev3/config.h" -#endif -#ifdef SUBPROJECT_rev4 - #include "rev4/config.h" +#ifndef CONFIG_USER_H +#define CONFIG_USER_H #endif -#endif +#include "../../config.h" + +#define PREVENT_STUCK_MODIFIERS \ No newline at end of file -- cgit v1.2.1 From fb2a7d787a6818ea9aefcff5ce36bac3fc48fa6c Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Tue, 26 Jul 2016 17:29:19 -0400 Subject: Removed unused layers (left QWERTY for later use/reference) --- keyboards/planck/keymaps/impossible/keymap.c | 50 ++-------------------------- 1 file changed, 3 insertions(+), 47 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index 6c22423fff..ddf4e2feb7 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -17,18 +17,12 @@ extern keymap_config_t keymap_config; #define _ALPHA 0 #define _FN 1 -#define _QWERTY 3 -#define _COLEMAK 4 -#define _DVORAK 5 -#define _LOWER 6 -#define _RAISE 7 -#define _PLOVER 8 -#define _ADJUST 16 +#define _QWERTY 2 +#define _PLOVER 3 +#define _ADJUST 4 enum planck_keycodes { QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, PLOVER, LOWER, RAISE, @@ -242,44 +236,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case COLEMAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_colemak, false, 0); - #endif - persistant_default_layer_set(1UL<<_COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_dvorak, false, 0); - #endif - persistant_default_layer_set(1UL<<_DVORAK); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; case BACKLIT: if (record->event.pressed) { register_code(KC_RSFT); -- cgit v1.2.1 From 465cf08c6398da60ef8029aa2d813ed023fbc253 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Tue, 26 Jul 2016 17:37:56 -0400 Subject: Removed unused layers (keeping QWERTY for later/reference) --- keyboards/planck/keymaps/impossible/keymap.c | 81 ++-------------------------- 1 file changed, 4 insertions(+), 77 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index ddf4e2feb7..4686776209 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 | / | `-----------------------------------------------------------------------------------------------' */ - + [_ALPHA] = { {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, {KC_A, KC_S, KC_H, KC_T, KC_G, KC_N, KC_E, KC_O, KC_I, KC_KP_4, KC_KP_5, KC_KP_6}, @@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_SLASH} }, -/* Symbols (FN Held) +/* FN-key held ,-----------------------------------------------------------------------------------------------. | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| @@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' - */ + */ [_QWERTY] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, @@ -94,78 +94,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -/* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_COLEMAK] = { - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, - -/* Dvorak - * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | / | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_DVORAK] = { - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, - {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, - -/* Lower - * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_LOWER] = { - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, - {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, - -/* Raise - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_RAISE] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, - /* Plover layer (http://opensteno.org) * ,-----------------------------------------------------------------------------------. * | # | # | # | # | # | # | # | # | # | # | # | # | @@ -209,9 +137,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef AUDIO_ENABLE float tone_startup[][2] = SONG(STARTUP_SOUND); + float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); -- cgit v1.2.1 From ff8136b8837615e342ee475a0968168a08a81ca9 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Tue, 26 Jul 2016 17:39:21 -0400 Subject: Modified Plover layer for Impossible's home position. --- keyboards/planck/keymaps/impossible/keymap.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index 4686776209..8f85e0fb40 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -96,21 +96,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Plover layer (http://opensteno.org) * ,-----------------------------------------------------------------------------------. - * | # | # | # | # | # | # | # | # | # | # | # | # | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | S | T | P | H | * | * | F | P | L | T | D | + * | S | T | P | H | * | F | P | L | T | D | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | + * | S | K | W | R | * | R | B | G | S | Z | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Exit | | | A | O | | E | U | | | | + * | # | # | # | # | | # | # | # | # | # | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Exit | | A | O | | E | U | | | | | | * `-----------------------------------------------------------------------------------' */ [_PLOVER] = { - {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, - {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, - {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_U, KC_I, KC_O, KC_P, XXXXXXX, XXXXXXX}, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_SCLN, XXXXXXX, XXXXXXX}, + {KC_1, KC_1, KC_1, KC_1, XXXXXXX, KC_1, KC_1, KC_1, KC_1, XXXXXXX, XXXXXXX}, + {EXT_PLV, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} }, /* Adjust (Lower + Raise) @@ -124,6 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ + [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, -- cgit v1.2.1 From 57952949fe2fa119e986e96363565248a9461eb2 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Tue, 26 Jul 2016 23:33:21 -0400 Subject: General table cleanup. --- keyboards/planck/keymaps/impossible/keymap.c | 97 ++++++++++++++-------------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index 8f85e0fb40..2a9197aec2 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -38,16 +38,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Alpha-numeric - ,-----------------------------------------------------------------------------------------------. - | Q | D | R | W | B | F | U | P | J | 7 | 8 | 9 | - |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - | A | S | H | T | G | N | E | O | I | 4 | 5 | 6 | - |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - | Z | X | M | C | V | L | Y | K | Up | 1 | 2 | 3 | - |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 | / | - `-----------------------------------------------------------------------------------------------' -*/ + * ,-----------------------------------------------------------------------------------------------. + * | Q | D | R | W | B | F | U | P | J | 7 | 8 | 9 | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | A | S | H | T | G | N | E | O | I | 4 | 5 | 6 | + * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| + * | Z | X | M | C | V | L | Y | K | Up | 1 | 2 | 3 | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 | / | + * `-----------------------------------------------------------------------------------------------' + */ [_ALPHA] = { {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, @@ -58,16 +58,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }, /* FN-key held - ,-----------------------------------------------------------------------------------------------. - | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | - |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - | Caps | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | - |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - | DFU | Insert| PrtSc | ScrLk | Pause | NumLk | Menu | | PgUp | F1 | F2 | F3 | - |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - |Alt/Tab|Gui/Esc| ` |CTL/Bsp| Fn/Ent|SFT/SPC| ; | Home | PgDn | End | F10 | / | - `-----------------------------------------------------------------------------------------------' -*/ + * ,-----------------------------------------------------------------------------------------------. + * | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | Caps | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | + * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| + * | DFU | Insert| PrtSc | ScrLk | Pause | NumLk | Menu | | PgUp | F1 | F2 | F3 | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * |Alt/Tab|Gui/Esc| ` |CTL/Bsp| Fn/Ent|SFT/SPC| ; | Home | PgDn | End | F10 | / | + * `-----------------------------------------------------------------------------------------------' + */ [_FN] = { {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_FN12, KC_FN7, KC_FN8, KC_FN9}, @@ -77,16 +77,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }, /* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | Brite | Ctrl | Alt | GUI |Lower | Sp ace |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------------------' */ + [_QWERTY] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, @@ -95,15 +96,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }, /* Plover layer (http://opensteno.org) - * ,-----------------------------------------------------------------------------------. - * | S | T | P | H | * | F | P | L | T | D | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | S | K | W | R | * | R | B | G | S | Z | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | # | # | # | # | | # | # | # | # | # | | | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Exit | | A | O | | E | U | | | | | | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------------------------------------------------------------. + * | S | T | P | H | * | F | P | L | T | D | | | + * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| + * | S | K | W | R | * | R | B | G | S | Z | | | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | # | # | # | # | | # | # | # | # | # | | | + * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| + * | Exit | | A | O | | E | U | | | | | | + * `-----------------------------------------------------------------------------------------------' */ [_PLOVER] = { @@ -113,16 +114,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {EXT_PLV, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} }, -/* Adjust (Lower + Raise) - * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' +/* Adjust + * ,-----------------------------------------------------------------------------------------------. + * | | Reset | | | | | | | | | | Del | + * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| + * | | | |Aud on |Audoff |AGnorm |AGswap |Qwerty | | |Plover | | + * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| + * | |Voice- |Voice+ |Mus on |Musoff |MIDIon |MIDIof | | | | | | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------------------' */ [_ADJUST] = { -- cgit v1.2.1 From a4e5a4d566f79b2b1c7bb286d25f127d631230d9 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Thu, 28 Jul 2016 13:49:25 -0400 Subject: Modified Qwerty, created Qwerty with numbers --- keyboards/planck/keymaps/impossible/keymap.c | 64 +++++++++++++++++----------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index 2a9197aec2..fe9c5dc28d 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -20,6 +20,7 @@ extern keymap_config_t keymap_config; #define _QWERTY 2 #define _PLOVER 3 #define _ADJUST 4 +#define _QWERTY2 5 enum planck_keycodes { QWERTY = SAFE_RANGE, @@ -36,7 +37,6 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Alpha-numeric * ,-----------------------------------------------------------------------------------------------. * | Q | D | R | W | B | F | U | P | J | 7 | 8 | 9 | @@ -50,51 +50,69 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ALPHA] = { - {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, - {KC_A, KC_S, KC_H, KC_T, KC_G, KC_N, KC_E, KC_O, KC_I, KC_KP_4, KC_KP_5, KC_KP_6}, - {KC_Z, KC_X, KC_M, KC_C, KC_V, KC_L, KC_Y, KC_K, KC_UP, KC_KP_1, KC_KP_2, KC_KP_3}, - {ALT_T(KC_TAB), GUI_T(KC_ESC), KC_COMM, CTL_T(KC_BSPC), LT(_FN, KC_ENTER), SFT_T(KC_SPC), KC_DOT, - KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_SLASH} + {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, + {KC_A, KC_S, KC_H, KC_T, KC_G, KC_N, KC_E, KC_O, KC_I, KC_KP_4, KC_KP_5, KC_KP_6}, + {KC_Z, KC_X, KC_M, KC_C, KC_V, KC_L, KC_Y, KC_K, KC_UP, KC_KP_1, KC_KP_2, KC_KP_3}, + {ALT_T(KC_TAB), GUI_T(KC_ESC), KC_COMM, CTL_T(KC_BSPC), LT(_FN, KC_ENTER), SFT_T(KC_SPC), KC_DOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_SLASH} }, /* FN-key held * ,-----------------------------------------------------------------------------------------------. * | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Caps | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | + * | Caps | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | DFU | Insert| PrtSc | ScrLk | Pause | NumLk | Menu | | PgUp | F1 | F2 | F3 | + * | DFU |Insert | PrtSc | ScrLk | Pause | NumLk | Menu | | PgUp | F1 | F2 | F3 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * |Alt/Tab|Gui/Esc| ` |CTL/Bsp| Fn/Ent|SFT/SPC| ; | Home | PgDn | End | F10 | / | + * |Alt/Tab|Gui/Esc| ` |CTL/Bsp|Fn/Ent |SFT/Spc| ; | Home | PgDn | End | F10 | / | * `-----------------------------------------------------------------------------------------------' */ [_FN] = { - {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_FN12, KC_FN7, KC_FN8, KC_FN9}, - {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_FN11, KC_FN4, KC_FN5, KC_FN6}, - {RESET, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, XXXXXXX, KC_PGUP, KC_FN1, KC_FN2, KC_FN3}, - {_______, _______, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_FN10, KC_BSLASH} + {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_FN12, KC_FN7, KC_FN8, KC_FN9}, + {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_FN11, KC_FN4, KC_FN5, KC_FN6}, + {RESET, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, XXXXXXX, KC_PGUP, KC_FN1, KC_FN2, KC_FN3}, + {_______, _______, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_FN10, KC_BSLASH} }, /* Qwerty * ,-----------------------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * | Esc | Q | W | E | R | T | Y | U | I | O | P | / | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * | Tab | A | S | D | F | G | H | J | K | L | ; | " | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * | Shift | Z | X | C | V | B | N | M | , | . | Up | Enter | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Brite | Ctrl | Alt | GUI |Lower | Sp ace |Raise | Left | Down | Up |Right | + * | Ctrl | Alt | GUI | | | Bksp | Space | | | Left | Down | Right | * `-----------------------------------------------------------------------------------------------' */ [_QWERTY] = { - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SLSH}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, + {KC_LCTL, KC_LALT, KC_LGUI, _______, _______, KC_BSPC, KC_SPC, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT} }, +/* Qwerty W/ Numbers + * ,-----------------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | / | + * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| + * | Shift | A | S | D | F | G | H | J | K | L | ; | " | + * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| + * | Ctrl | Z | X | C | V | SPC | B | N | M | , | . | Enter | + * `-----------------------------------------------------------------------------------------------' + */ + +[_QWERTY2] = { + {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC/3_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SLSH}, + {KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT}, +1}, + /* Plover layer (http://opensteno.org) * ,-----------------------------------------------------------------------------------------------. * | S | T | P | H | * | F | P | L | T | D | | | @@ -128,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, PLOVER, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -182,8 +200,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { stop_all_notes(); PLAY_NOTE_ARRAY(tone_plover, false, 0); #endif - layer_off(_RAISE); - layer_off(_LOWER); layer_off(_ADJUST); layer_on(_PLOVER); if (!eeconfig_is_enabled()) { -- cgit v1.2.1 From 6567fa1ebeabe8fc25df91e8f75330488763b403 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Thu, 28 Jul 2016 14:56:26 -0400 Subject: Fixed Function keys (Impossible layout) --- keyboards/planck/keymaps/impossible/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index fe9c5dc28d..edc2ed8739 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -69,10 +69,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_FN] = { - {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_FN12, KC_FN7, KC_FN8, KC_FN9}, - {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_FN11, KC_FN4, KC_FN5, KC_FN6}, - {RESET, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, XXXXXXX, KC_PGUP, KC_FN1, KC_FN2, KC_FN3}, - {_______, _______, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_FN10, KC_BSLASH} + {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_F12, KC_F7, KC_F8, KC_F9}, + {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_F11, KC_F4, KC_F5, KC_F6}, + {RESET, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, + {_______, _______, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, KC_BSLASH} }, /* Qwerty -- cgit v1.2.1 From c018743729ce55effcec81efa8663dbc54626d15 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Fri, 29 Jul 2016 00:08:48 -0400 Subject: Connected all layers through Adjust layer --- keyboards/planck/keymaps/impossible/keymap.c | 154 ++++++++++++--------------- 1 file changed, 69 insertions(+), 85 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index edc2ed8739..4ef16aa3a6 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -15,20 +15,17 @@ extern keymap_config_t keymap_config; // 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 _ALPHA 0 -#define _FN 1 +#define _WORKMAN 0 +#define _WORKMAN_FN 1 #define _QWERTY 2 -#define _PLOVER 3 -#define _ADJUST 4 -#define _QWERTY2 5 +#define _QWERTY_FN 3 +#define _PLOVER 4 +#define _ADJUST 5 enum planck_keycodes { - QWERTY = SAFE_RANGE, - PLOVER, - LOWER, - RAISE, - BACKLIT, - EXT_PLV + WORKMAN = SAFE_RANGE, + QWERTY, + PLOVER }; // Fillers to make layering more clear @@ -37,7 +34,7 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Alpha-numeric +/* Workman Alpha-numeric * ,-----------------------------------------------------------------------------------------------. * | Q | D | R | W | B | F | U | P | J | 7 | 8 | 9 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| @@ -45,73 +42,73 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| * | Z | X | M | C | V | L | Y | K | Up | 1 | 2 | 3 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 | / | + * |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 |Adj/ / | * `-----------------------------------------------------------------------------------------------' */ -[_ALPHA] = { +[_WORKMAN] = { {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, {KC_A, KC_S, KC_H, KC_T, KC_G, KC_N, KC_E, KC_O, KC_I, KC_KP_4, KC_KP_5, KC_KP_6}, {KC_Z, KC_X, KC_M, KC_C, KC_V, KC_L, KC_Y, KC_K, KC_UP, KC_KP_1, KC_KP_2, KC_KP_3}, - {ALT_T(KC_TAB), GUI_T(KC_ESC), KC_COMM, CTL_T(KC_BSPC), LT(_FN, KC_ENTER), SFT_T(KC_SPC), KC_DOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_SLASH} + {ALT_T(KC_TAB), GUI_T(KC_ESC), KC_COMM, CTL_T(KC_BSPC), LT(_WORKMAN_FN, KC_ENTER), SFT_T(KC_SPC), KC_DOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, LT(_ADJUST, KC_SLASH)} }, -/* FN-key held +/* FN-key held (Workman) * ,-----------------------------------------------------------------------------------------------. * | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Caps | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | + * | Caps | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | DFU |Insert | PrtSc | ScrLk | Pause | NumLk | Menu | | PgUp | F1 | F2 | F3 | + * | Tab | Insert| PrtSc | ScrLk | Pause | NumLk | Menu | | PgUp | F1 | F2 | F3 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * |Alt/Tab|Gui/Esc| ` |CTL/Bsp|Fn/Ent |SFT/Spc| ; | Home | PgDn | End | F10 | / | + * |Alt/Tab| Gui | ~ |CTL/Bsp|Fn/Ent |SFT/Spc| ; | Home | PgDn | End | F10 | \ | * `-----------------------------------------------------------------------------------------------' */ -[_FN] = { - {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_F12, KC_F7, KC_F8, KC_F9}, - {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_F11, KC_F4, KC_F5, KC_F6}, - {RESET, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, - {_______, _______, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, KC_BSLASH} +[_WORKMAN_FN] = { + {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_F12, KC_F7, KC_F8, KC_F9}, + {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_F11, KC_F4, KC_F5, KC_F6}, + {KC_Tab, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, + {_______, KC_LGUI, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, KC_BSLASH} }, /* Qwerty * ,-----------------------------------------------------------------------------------------------. - * | Esc | Q | W | E | R | T | Y | U | I | O | P | / | + * |Gui/Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | Tab | A | S | D | F | G | H | J | K | L | ; | " | + * | Ctrl | Q | W | E | R | T | Y | U | I | O | P | Enter | + * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| + * | Shift | A | S | D | F | G | H | J | K | L | ; | " | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | Shift | Z | X | C | V | B | N | M | , | . | Up | Enter | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Ctrl | Alt | GUI | | | Bksp | Space | | | Left | Down | Right | + * |Alt/Tab| Z | X | C | V | Fn/SPC| B | N | M | , | . |Adj/ / | * `-----------------------------------------------------------------------------------------------' */ [_QWERTY] = { - {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SLSH}, - {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, - {KC_LCTL, KC_LALT, KC_LGUI, _______, _______, KC_BSPC, KC_SPC, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT} + {GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_LCTL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT}, + {KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {ALT_T(KC_TAB), KC_Z, KC_X, KC_C, KC_V, KC_B, LT(_QWERTY_FN, KC_SPC), KC_N, KC_M, KC_COMM, KC_DOT, LT(_ADJUST, KC_SLASH)}, }, -/* Qwerty W/ Numbers +/* FN-key held (Qwerty) * ,-----------------------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | TAB | Q | W | E | R | T | Y | U | I | O | P | / | - * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | Shift | A | S | D | F | G | H | J | K | L | ; | " | + * | Gui | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | Ctrl | ~ | | PgUp | | | | | Up | - | = | F12 | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | Shift | | Home | PgDn | End | Del | | Left | Down | Right | [ | ] | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | Ctrl | Z | X | C | V | SPC | B | N | M | , | . | Enter | + * |Alt/Tab| | CapsLk| ScrLk | NumLk | Fn/Spc| | Insert| PrtSc | Pause | Menu | \ | * `-----------------------------------------------------------------------------------------------' */ -[_QWERTY2] = { - {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC/3_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SLSH}, - {KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT}, -1}, +[_QWERTY_FN] = { + {KC_LGUI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11}, + {_______, KC_GRAVE, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, KC_MINUS, KC_EQUAL, KC_F12}, + {_______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, KC_DELETE, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LBRACKET, KC_RBRACKET}, + {_______, XXXXXXX, KC_CAPSLOCK, KC_SLCK, KC_NLCK, _______, XXXXXXX, KC_INS, KC_PSCR, KC_PAUSE, KC_MENU, KC_BSLASH} +}, /* Plover layer (http://opensteno.org) * ,-----------------------------------------------------------------------------------------------. @@ -121,49 +118,49 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | # | # | # | # | | # | # | # | # | # | | | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | Exit | | A | O | | E | U | | | | | | + * | | | A | O | | E | U | | | | | Adjust| * `-----------------------------------------------------------------------------------------------' */ [_PLOVER] = { - {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_U, KC_I, KC_O, KC_P, XXXXXXX, XXXXXXX}, - {KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_SCLN, XXXXXXX, XXXXXXX}, - {KC_1, KC_1, KC_1, KC_1, XXXXXXX, KC_1, KC_1, KC_1, KC_1, XXXXXXX, XXXXXXX}, - {EXT_PLV, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_U, KC_I, KC_O, KC_P, KC_LBRC, XXXXXXX, XXXXXXX}, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, XXXXXXX}, + {KC_1, KC_1, KC_1, KC_1, XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX, XXXXXXX}, + {XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MO(_ADJUST)} }, /* Adjust * ,-----------------------------------------------------------------------------------------------. - * | | Reset | | | | | | | | | | Del | + * | | | | | | | | | | | | RESET | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | | | |Aud on |Audoff |AGnorm |AGswap |Qwerty | | |Plover | | + * | | | | | | | | |Voice +| Audio |MIDIoff| | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | |Voice- |Voice+ |Mus on |Musoff |MIDIon |MIDIof | | | | | | + * | | | | | | | | |Voice -| Music |MIDI on| | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | | | | | | | | | | | | | + * | | | | | | | | |Workman| Qwerty| Plover| Adjust| * `-----------------------------------------------------------------------------------------------' */ [_ADJUST] = { - {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, PLOVER, _______}, - {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, + {_______, _______, _______, _______, _______, _______, _______, _______, MUV_IN, AU_TOG, MI_OFF, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, MU_TOG, MI_ON, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, WORKMAN, QWERTY, PLOVER, _______} } - }; #ifdef AUDIO_ENABLE float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); -float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_workman[][2] = SONG(QWERTY_SOUND); +float tone_qwerty[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); -float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); + float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); -float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif @@ -174,49 +171,36 @@ void persistant_default_layer_set(uint16_t default_layer) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case QWERTY: + case WORKMAN: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + PLAY_NOTE_ARRAY(tone_workman, false, 0); #endif - persistant_default_layer_set(1UL<<_QWERTY); + persistant_default_layer_set(1UL<<_WORKMAN); } return false; break; - case BACKLIT: + case QWERTY: if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); #endif - } else { - unregister_code(KC_RSFT); + persistant_default_layer_set(1UL<<_QWERTY); } return false; break; case PLOVER: if (record->event.pressed) { #ifdef AUDIO_ENABLE - stop_all_notes(); PLAY_NOTE_ARRAY(tone_plover, false, 0); #endif - layer_off(_ADJUST); - layer_on(_PLOVER); if (!eeconfig_is_enabled()) { - eeconfig_init(); + eeconfig_init(); } keymap_config.raw = eeconfig_read_keymap(); keymap_config.nkro = 1; eeconfig_update_keymap(keymap_config.raw); - } - return false; - break; - case EXT_PLV: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); - #endif - layer_off(_PLOVER); + persistant_default_layer_set(1UL<<_PLOVER); } return false; break; -- cgit v1.2.1 From 5f2d3f27de2913656176516f437880ec0c296e7d Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Sat, 30 Jul 2016 00:56:43 -0400 Subject: Moved CapsLk, ScrollLk, and NumLk to Adjust layer --- keyboards/planck/keymaps/impossible/keymap.c | 34 ++++++++++++++-------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index 4ef16aa3a6..bf5588ad55 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -57,19 +57,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------------------. * | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Caps | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | + * | | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | Tab | Insert| PrtSc | ScrLk | Pause | NumLk | Menu | | PgUp | F1 | F2 | F3 | + * | Tab | Insert| PrtSc | | Pause | | Menu | | PgUp | F1 | F2 | F3 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * |Alt/Tab| Gui | ~ |CTL/Bsp|Fn/Ent |SFT/Spc| ; | Home | PgDn | End | F10 | \ | * `-----------------------------------------------------------------------------------------------' */ [_WORKMAN_FN] = { - {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_F12, KC_F7, KC_F8, KC_F9}, - {KC_CAPSLOCK, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_F11, KC_F4, KC_F5, KC_F6}, - {KC_Tab, KC_INS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_NUMLOCK, KC_MENU, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, - {_______, KC_LGUI, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, KC_BSLASH} + {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_F12, KC_F7, KC_F8, KC_F9}, + {XXXXXXX, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_F11, KC_F4, KC_F5, KC_F6}, + {KC_Tab, KC_INS, KC_PSCR, XXXXXXX, KC_PAUSE, XXXXXXX, KC_MENU, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, + {_______, KC_LGUI, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, KC_BSLASH} }, /* Qwerty @@ -99,15 +99,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | Shift | | Home | PgDn | End | Del | | Left | Down | Right | [ | ] | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * |Alt/Tab| | CapsLk| ScrLk | NumLk | Fn/Spc| | Insert| PrtSc | Pause | Menu | \ | + * |Alt/Tab| | | | | Fn/Spc| | Insert| PrtSc | Pause | Menu | \ | * `-----------------------------------------------------------------------------------------------' */ [_QWERTY_FN] = { - {KC_LGUI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11}, - {_______, KC_GRAVE, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, KC_MINUS, KC_EQUAL, KC_F12}, - {_______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, KC_DELETE, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LBRACKET, KC_RBRACKET}, - {_______, XXXXXXX, KC_CAPSLOCK, KC_SLCK, KC_NLCK, _______, XXXXXXX, KC_INS, KC_PSCR, KC_PAUSE, KC_MENU, KC_BSLASH} + {KC_LGUI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11}, + {_______, KC_GRAVE, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, KC_MINUS, KC_EQUAL, KC_F12}, + {_______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, KC_DELETE, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LBRACKET, KC_RBRACKET}, + {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_INS, KC_PSCR, KC_PAUSE, KC_MENU, KC_BSLASH} }, /* Plover layer (http://opensteno.org) @@ -133,19 +133,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------------------. * | | | | | | | | | | | | RESET | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | | | | | | | | |Voice +| Audio |MIDIoff| | + * | | | | | | | | CapLk |Voice +| Audio |MIDIoff| | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | | | | | | | | |Voice -| Music |MIDI on| | + * | | | | | | | | ScrLk |Voice -| Music |MIDI on| | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | | | | | | | | |Workman| Qwerty| Plover| Adjust| + * | | | | | | | | Numlk |Workman| Qwerty| Plover| Adjust| * `-----------------------------------------------------------------------------------------------' */ [_ADJUST] = { {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, - {_______, _______, _______, _______, _______, _______, _______, _______, MUV_IN, AU_TOG, MI_OFF, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, MU_TOG, MI_ON, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, WORKMAN, QWERTY, PLOVER, _______} + {_______, _______, _______, _______, _______, _______, _______, KC_CLCK, MUV_IN, AU_TOG, MI_OFF, _______}, + {_______, _______, _______, _______, _______, _______, _______, KC_SLCK, MUV_DE, MU_TOG, MI_ON, _______}, + {_______, _______, _______, _______, _______, _______, _______, KC_NLCK, WORKMAN, QWERTY, PLOVER, _______} } }; -- cgit v1.2.1 From 4b74c90cdbe820fc662eb183fa3e138f16191437 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Sun, 31 Jul 2016 22:39:25 -0400 Subject: Added quote key. --- keyboards/planck/keymaps/impossible/keymap.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index bf5588ad55..b1815e9011 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -57,19 +57,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------------------. * | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | | [ | ] | - | Del | = | ( | ) | F11 | F4 | F5 | F6 | + * | Tab | [ | ] | - | Del | ' | ( | ) | F11 | F4 | F5 | F6 | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | Tab | Insert| PrtSc | | Pause | | Menu | | PgUp | F1 | F2 | F3 | + * | Menu | Insert| PrtSc | = | Pause | / | | | PgUp | F1 | F2 | F3 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * |Alt/Tab| Gui | ~ |CTL/Bsp|Fn/Ent |SFT/Spc| ; | Home | PgDn | End | F10 | \ | * `-----------------------------------------------------------------------------------------------' */ [_WORKMAN_FN] = { - {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_F12, KC_F7, KC_F8, KC_F9}, - {XXXXXXX, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_EQUAL, KC_LPRN, KC_RPRN, KC_F11, KC_F4, KC_F5, KC_F6}, - {KC_Tab, KC_INS, KC_PSCR, XXXXXXX, KC_PAUSE, XXXXXXX, KC_MENU, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, - {_______, KC_LGUI, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, KC_BSLASH} + {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_F12, KC_F7, KC_F8, KC_F9}, + {KC_TAB, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_QUOT, KC_LPRN, KC_RPRN, KC_F11, KC_F4, KC_F5, KC_F6}, + {KC_MENU, KC_INS, KC_PSCR, KC_EQUAL, KC_PAUSE, KC_SLSH, XXXXXXX, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, + {_______, KC_LGUI, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, KC_BSLASH} }, /* Qwerty @@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | Ctrl | ~ | | PgUp | | | | | Up | - | = | F12 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Shift | | Home | PgDn | End | Del | | Left | Down | Right | [ | ] | + * | Shift | Tab | Home | PgDn | End | Del | | Left | Down | Right | [ | ] | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| * |Alt/Tab| | | | | Fn/Spc| | Insert| PrtSc | Pause | Menu | \ | * `-----------------------------------------------------------------------------------------------' -- cgit v1.2.1 From 76ef37e72d0cba9c83775e82c086534e8d45a7b8 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Mon, 1 Aug 2016 18:54:25 -0400 Subject: Corrected Qwerty/Fn Mismatch. --- keyboards/planck/keymaps/impossible/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index b1815e9011..65d8ac5fd7 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -85,10 +85,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_QWERTY] = { - {GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_LCTL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT}, - {KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {ALT_T(KC_TAB), KC_Z, KC_X, KC_C, KC_V, KC_B, LT(_QWERTY_FN, KC_SPC), KC_N, KC_M, KC_COMM, KC_DOT, LT(_ADJUST, KC_SLASH)}, + {GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_LCTL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT}, + {KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {ALT_T(KC_TAB), KC_Z, KC_X, KC_C, KC_V, LT(_QWERTY_FN, KC_SPC), KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT(_ADJUST, KC_SLASH)}, }, /* FN-key held (Qwerty) -- cgit v1.2.1 From 0acb394ac41f56895d4287d950a79bca5437a45c Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Tue, 2 Aug 2016 22:32:27 -0400 Subject: Moved Insert, PrtSc, Pause to Adjust; Corner enter --- keyboards/planck/keymaps/impossible/keymap.c | 70 ++++++++++++++-------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index 65d8ac5fd7..e816f359a6 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -16,11 +16,11 @@ extern keymap_config_t keymap_config; // entirely and just use numbers. #define _WORKMAN 0 -#define _WORKMAN_FN 1 +#define _FN 1 #define _QWERTY 2 -#define _QWERTY_FN 3 +#define _QW_FN 3 #define _PLOVER 4 -#define _ADJUST 5 +#define _ADJ 5 enum planck_keycodes { WORKMAN = SAFE_RANGE, @@ -42,15 +42,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| * | Z | X | M | C | V | L | Y | K | Up | 1 | 2 | 3 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 |Adj/ / | + * |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 |Adj/Ent| * `-----------------------------------------------------------------------------------------------' */ [_WORKMAN] = { - {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, - {KC_A, KC_S, KC_H, KC_T, KC_G, KC_N, KC_E, KC_O, KC_I, KC_KP_4, KC_KP_5, KC_KP_6}, - {KC_Z, KC_X, KC_M, KC_C, KC_V, KC_L, KC_Y, KC_K, KC_UP, KC_KP_1, KC_KP_2, KC_KP_3}, - {ALT_T(KC_TAB), GUI_T(KC_ESC), KC_COMM, CTL_T(KC_BSPC), LT(_WORKMAN_FN, KC_ENTER), SFT_T(KC_SPC), KC_DOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, LT(_ADJUST, KC_SLASH)} + {KC_Q, KC_D, KC_R, KC_W, KC_B, KC_F, KC_U, KC_P, KC_J, KC_KP_7, KC_KP_8, KC_KP_9}, + {KC_A, KC_S, KC_H, KC_T, KC_G, KC_N, KC_E, KC_O, KC_I, KC_KP_4, KC_KP_5, KC_KP_6}, + {KC_Z, KC_X, KC_M, KC_C, KC_V, KC_L, KC_Y, KC_K, KC_UP, KC_KP_1, KC_KP_2, KC_KP_3}, + {ALT_T(KC_TAB), GUI_T(KC_ESC), KC_COMM, CTL_T(KC_BSPC), LT(_FN, KC_ENT), SFT_T(KC_SPC), KC_DOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, LT(_ADJ, KC_ENT)} }, /* FN-key held (Workman) @@ -59,55 +59,55 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | Tab | [ | ] | - | Del | ' | ( | ) | F11 | F4 | F5 | F6 | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * | Menu | Insert| PrtSc | = | Pause | / | | | PgUp | F1 | F2 | F3 | + * | Menu | | | = | \ | / | | | PgUp | F1 | F2 | F3 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * |Alt/Tab| Gui | ~ |CTL/Bsp|Fn/Ent |SFT/Spc| ; | Home | PgDn | End | F10 | \ | + * |Alt/Tab| Gui | ~ |CTL/Bsp| Fn/Ent|SFT/Spc| ; | Home | PgDn | End | F10 |Adj/Ent| * `-----------------------------------------------------------------------------------------------' */ -[_WORKMAN_FN] = { +[_FN] = { {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_F12, KC_F7, KC_F8, KC_F9}, {KC_TAB, KC_LBRACKET, KC_RBRACKET, KC_MINUS, KC_DELETE, KC_QUOT, KC_LPRN, KC_RPRN, KC_F11, KC_F4, KC_F5, KC_F6}, - {KC_MENU, KC_INS, KC_PSCR, KC_EQUAL, KC_PAUSE, KC_SLSH, XXXXXXX, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, - {_______, KC_LGUI, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, KC_BSLASH} + {KC_MENU, _______, _______, KC_EQUAL, KC_BSLS, KC_SLSH, XXXXXXX, XXXXXXX, KC_PGUP, KC_F1, KC_F2, KC_F3}, + {_______, KC_LGUI, KC_GRAVE, _______, _______, _______, KC_SCOLON, KC_HOME, KC_PGDN, KC_END, KC_F10, _______} }, /* Qwerty * ,-----------------------------------------------------------------------------------------------. * |Gui/Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | Ctrl | Q | W | E | R | T | Y | U | I | O | P | Enter | + * | Ctrl | Q | W | E | R | T | Y | U | I | O | P | / | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| * | Shift | A | S | D | F | G | H | J | K | L | ; | " | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * |Alt/Tab| Z | X | C | V | Fn/SPC| B | N | M | , | . |Adj/ / | + * |Alt/Tab| Z | X | C | V | Fn/SPC| B | N | M | , | . |Adj/Ent| * `-----------------------------------------------------------------------------------------------' */ [_QWERTY] = { - {GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_LCTL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT}, - {KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {ALT_T(KC_TAB), KC_Z, KC_X, KC_C, KC_V, LT(_QWERTY_FN, KC_SPC), KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT(_ADJUST, KC_SLASH)}, + {GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_LCTL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT}, + {KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {ALT_T(KC_TAB), KC_Z, KC_X, KC_C, KC_V, LT(_QW_FN, KC_SPC), KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT(_ADJ, KC_ENT)}, }, /* FN-key held (Qwerty) * ,-----------------------------------------------------------------------------------------------. * | Gui | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Ctrl | ~ | | PgUp | | | | | Up | - | = | F12 | + * | Ctrl | ~ | [ | PgUp | ] | | | - | Up | = | | F12 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | Shift | Tab | Home | PgDn | End | Del | | Left | Down | Right | [ | ] | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| - * |Alt/Tab| | | | | Fn/Spc| | Insert| PrtSc | Pause | Menu | \ | + * |Alt/Tab| | | | | Fn/Spc| | | | | Menu |Adj/Ent| * `-----------------------------------------------------------------------------------------------' */ -[_QWERTY_FN] = { - {KC_LGUI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11}, - {_______, KC_GRAVE, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, KC_MINUS, KC_EQUAL, KC_F12}, - {_______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, KC_DELETE, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LBRACKET, KC_RBRACKET}, - {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_INS, KC_PSCR, KC_PAUSE, KC_MENU, KC_BSLASH} +[_QW_FN] = { + {KC_LGUI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11}, + {_______, KC_GRAVE, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, KC_MINUS, KC_EQUAL, KC_F12}, + {_______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, KC_DELETE, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LBRACKET, KC_RBRACKET}, + {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______, KC_MENU, _______} }, /* Plover layer (http://opensteno.org) @@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | # | # | # | # | | # | # | # | # | # | | | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| - * | | | A | O | | E | U | | | | | Adjust| + * | | | A | O | | E | U | | | | |Adj/Ent| * `-----------------------------------------------------------------------------------------------' */ @@ -126,26 +126,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_U, KC_I, KC_O, KC_P, KC_LBRC, XXXXXXX, XXXXXXX}, {KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, XXXXXXX}, {KC_1, KC_1, KC_1, KC_1, XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX, XXXXXXX}, - {XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MO(_ADJUST)} + {XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LT(_ADJ, KC_ENT)} }, /* Adjust * ,-----------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | RESET | + * | | | | | | | | | Insert| PrtSc | Pause | RESET | * |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| * | | | | | | | | CapLk |Voice +| Audio |MIDIoff| | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| * | | | | | | | | ScrLk |Voice -| Music |MIDI on| | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | | | | | | | | Numlk |Workman| Qwerty| Plover| Adjust| + * | | | | | | | | Numlk |Workman| Qwerty| Plover|Adj/Ent| * `-----------------------------------------------------------------------------------------------' */ -[_ADJUST] = { - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, - {_______, _______, _______, _______, _______, _______, _______, KC_CLCK, MUV_IN, AU_TOG, MI_OFF, _______}, - {_______, _______, _______, _______, _______, _______, _______, KC_SLCK, MUV_DE, MU_TOG, MI_ON, _______}, - {_______, _______, _______, _______, _______, _______, _______, KC_NLCK, WORKMAN, QWERTY, PLOVER, _______} +[_ADJ] = { + {_______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_PSCR, KC_PAUSE, RESET}, + {_______, _______, _______, _______, _______, _______, _______, KC_CLCK, MUV_IN, AU_TOG, MI_OFF, _______}, + {_______, _______, _______, _______, _______, _______, _______, KC_SLCK, MUV_DE, MU_TOG, MI_ON, _______}, + {_______, _______, _______, _______, _______, _______, _______, KC_NLCK, WORKMAN, QWERTY, PLOVER, _______} } }; -- cgit v1.2.1 From 5f37b11f2c300a95e0e9e34517c5c29a3345be83 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 9 Aug 2016 11:03:12 +0100 Subject: changed order of bottom row of symbol layer to ease acess to brackets --- keyboards/planck/keymaps/callum/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index a747dcb159..ed187df1da 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------------------------------. * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | ~ | | | + | [ | { | } | ] | = | \ | ` | | + * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_SYMB] = { {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC }, {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, - {_______, KC_TILD, KC_PIPE, KC_PLUS, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_EQL, KC_BSLS, KC_GRV, _______}, + {_______, KC_TILD, KC_GRV, KC_PLUS, KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, -- cgit v1.2.1 From 725dd7328f9963959f72318af912ed66f5a5f513 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 9 Aug 2016 11:09:52 +0100 Subject: updated readme.md to reflect keymap changes --- keyboards/planck/keymaps/callum/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index d4f3449f15..030def7f77 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -31,9 +31,9 @@ On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ti None of the modifiers are overwritten so that `shift-alt-arrows` etc work as expected. ## The `SYMB` layer -![](http://i.imgur.com/iuU144Y.png) +![](http://i.imgur.com/thh1ne2.png) -The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, with brackets in the centre; then normally shifted symbols to the left, and non shifted to the right, in order of most to least used. +The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, arranged roughly so that the most used symbols are accessible with the strongest fingers. `esc` and `del` are repeated here since I wanted to be able to reach either, one handed, with either hand. -- cgit v1.2.1 From 993d72b11fca8d50296570dc85e9354f8045c4a6 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Fri, 12 Aug 2016 21:05:52 +0100 Subject: added a lock screen key --- keyboards/planck/keymaps/callum/keymap.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index ed187df1da..494ed30b06 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -20,7 +20,8 @@ enum planck_keycodes { BASE = SAFE_RANGE, MOVE, SYMB, - FUNC + FUNC, + LOCK }; // Fillers to make layering more clear @@ -87,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | * |-----------------------------------------------------------------------------------. - * | | Play | Prev | Next | BL+ | | | | | | | | + * | | Play | Prev | Next | BL+ | | | Lock | | | | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | Mute | Vol- | Vol+ | BL- | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -96,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_FUNC] = { {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, _______, _______, _______, _______, _______}, + {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, _______, _______}, {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } } @@ -133,6 +134,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case LOCK: + if (record->event.pressed) { + register_code(KC_RSFT); + register_code(KC_RGUI); + register_code(KC_POWER); + } else { + unregister_code(KC_POWER); + unregister_code(KC_RGUI); + unregister_code(KC_RSFT); + } + return false; + break; } return true; } -- cgit v1.2.1 From 32216066e7a6881378f7f46995a00da36c0d34f3 Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Fri, 19 Aug 2016 14:36:41 -0600 Subject: Adding nicer Infinity build instructions. --- keyboards/ergodox/readme.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index f81d7cd8df..9f89418634 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -1,3 +1,14 @@ +# Infinity on Ubuntu Quickstart + +To build an Infinity firmware under Ubuntu (tested on 15.10): + + - Run the `util/install_dependencies.sh` script as root. + - Build the firmware with `make keymap=keymapname subproject=infinity` + - Plug in the left hand keyboard only. + - Press the program button (back of keyboard, above thumb pad). + - Install the firmware with `sudo make dfu-util keymap=keymapname subproject=infinity` + - Install the right hand firmware, but I haven't figured this out yet. + # Getting started There are two main ways you could customize the ErgoDox (EZ and Infinity) -- cgit v1.2.1 From b918aa6bab85e7dba586a9ee2bde650b721113c2 Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Fri, 19 Aug 2016 14:49:29 -0600 Subject: Adding submodule note. --- keyboards/ergodox/readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index 9f89418634..c3aa6c9da2 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -3,6 +3,7 @@ To build an Infinity firmware under Ubuntu (tested on 15.10): - Run the `util/install_dependencies.sh` script as root. + - Check out the submodules with `git submodule update --init --recursive` - Build the firmware with `make keymap=keymapname subproject=infinity` - Plug in the left hand keyboard only. - Press the program button (back of keyboard, above thumb pad). -- cgit v1.2.1 From 30c63b1495ac49cf4f7ea9e6271ade53496f7770 Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Fri, 19 Aug 2016 14:52:05 -0600 Subject: Noting the change directory. --- keyboards/ergodox/readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index c3aa6c9da2..1c1181dbae 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -4,6 +4,7 @@ To build an Infinity firmware under Ubuntu (tested on 15.10): - Run the `util/install_dependencies.sh` script as root. - Check out the submodules with `git submodule update --init --recursive` + - Go into the ErgoDox directory with `cd keyboards/ergodox` - Build the firmware with `make keymap=keymapname subproject=infinity` - Plug in the left hand keyboard only. - Press the program button (back of keyboard, above thumb pad). -- cgit v1.2.1 From 86706de036cf7ad52b679b259ca8f980057d0da5 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 1 Aug 2016 09:23:37 +0300 Subject: Parsing of makefile variables from starting dir --- Makefile | 322 +++++++----------------------------------------------- build_keyboard.mk | 276 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 317 insertions(+), 281 deletions(-) create mode 100644 build_keyboard.mk diff --git a/Makefile b/Makefile index 693edc9f06..fcd57754b5 100644 --- a/Makefile +++ b/Makefile @@ -1,281 +1,41 @@ -ifndef VERBOSE -.SILENT: -endif - -.DEFAULT_GOAL := all - -space := $(subst ,, ) -ESCAPED_ABS_PATH = $(subst $(space),_SPACE_,$(abspath $1)) -starting_makefile := $(call ESCAPED_ABS_PATH,$(firstword $(MAKEFILE_LIST))) -mkfile_path := $(call ESCAPED_ABS_PATH,$(lastword $(MAKEFILE_LIST)))) -abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path))) - -ifneq (,$(findstring /keyboards/,$(starting_makefile))) - possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(abs_tmk_root)/keyboards/%,%,$(starting_makefile)))) - ifneq (,$(findstring /keymaps/,$(possible_keyboard))) - KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard))) - KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard))) - ifneq (,$(findstring /,$(KEYBOARD_DIR))) - # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) - # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) - tmk_root = ../../.. - else - tmk_root = ../../../.. - endif - else - KEYMAP_DIR:=default - KEYBOARD_DIR:=$(possible_keyboard) - ifneq (,$(findstring /,$(KEYBOARD_DIR))) - # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) - # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) - tmk_root = ../../.. - else - tmk_root = ../.. - endif - endif -else - tmk_root = . -endif -# $(info $(KEYBOARD_DIR)) -# $(info $(KEYMAP_DIR)) -# $(info $(SUBPROJECT_DIR)) - -# Directory common source filess exist -TOP_DIR = $(tmk_root) -TMK_DIR = tmk_core -TMK_PATH = $(TOP_DIR)/$(TMK_DIR) -LIB_PATH = $(TOP_DIR)/lib - -QUANTUM_DIR = quantum -QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) - - -ifdef keyboard - KEYBOARD ?= $(keyboard) -endif -ifdef KEYBOARD_DIR - KEYBOARD ?= $(KEYBOARD_DIR) -endif -ifndef KEYBOARD - KEYBOARD=planck -endif - -MASTER ?= left -ifdef master - MASTER = $(master) -endif - - -# converts things to keyboards/subproject -ifneq (,$(findstring /,$(KEYBOARD))) - TEMP:=$(KEYBOARD) - KEYBOARD:=$(firstword $(subst /, ,$(TEMP))) - SUBPROJECT:=$(lastword $(subst /, ,$(TEMP))) -endif - -KEYBOARD_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD) - -ifdef sub - SUBPROJECT=$(sub) -endif -ifdef subproject - SUBPROJECT=$(subproject) -endif - -ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","") - KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c - ifneq ($(call ESCAPED_ABS_PATH,$(KEYBOARD_PATH)/Makefile),$(starting_makefile)) - -include $(KEYBOARD_PATH)/Makefile - endif -else -$(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist) -endif - -ifdef SUBPROJECT_DEFAULT - SUBPROJECT?=$(SUBPROJECT_DEFAULT) -endif - -ifdef SUBPROJECT - SUBPROJECT_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT) - ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") - OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) - SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c - ifneq ($(call ESCAPED_ABS_PATH,$(SUBPROJECT_PATH)/Makefile),$(starting_makefile)) - -include $(SUBPROJECT_PATH)/Makefile - endif - else -$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) - endif -endif - -ifdef keymap - KEYMAP ?= $(keymap) -endif -ifdef KEYMAP_DIR - KEYMAP ?= $(KEYMAP_DIR) -endif -ifndef KEYMAP - KEYMAP = default -endif -KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP) -ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","") - KEYMAP_FILE = keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c - ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) - -include $(KEYMAP_PATH)/Makefile - endif -else - ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/keymap.c)","") -$(error "$(KEYMAP_PATH)/keymap.c" does not exist) - else - KEYMAP_PATH = $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) - KEYMAP_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/keymap.c - ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) - -include $(KEYMAP_PATH)/Makefile - endif - endif -endif - -ifdef SUBPROJECT - TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) -else - TARGET ?= $(KEYBOARD)_$(KEYMAP) -endif - -BUILD_DIR = $(TOP_DIR)/.build - -# Object files directory -# To put object files in current directory, use a dot (.), do NOT make -# this an empty or blank macro! -OBJDIR = $(BUILD_DIR)/obj_$(TARGET) - - - -ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") - CONFIG_H = $(KEYMAP_PATH)/config.h -else - CONFIG_H = $(KEYBOARD_PATH)/config.h - ifdef SUBPROJECT - ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") - CONFIG_H = $(SUBPROJECT_PATH)/config.h - endif - endif -endif - -# # project specific files -SRC += $(KEYBOARD_FILE) \ - $(KEYMAP_FILE) \ - $(QUANTUM_DIR)/quantum.c \ - $(QUANTUM_DIR)/keymap_common.c \ - $(QUANTUM_DIR)/keycode_config.c \ - $(QUANTUM_DIR)/process_keycode/process_leader.c - -ifdef SUBPROJECT - SRC += $(SUBPROJECT_FILE) -endif - -ifdef SUBPROJECT - SRC += $(SUBPROJECT_FILE) -endif - -ifdef SUBPROJECT - SRC += $(SUBPROJECT_FILE) -endif - -ifndef CUSTOM_MATRIX - SRC += $(QUANTUM_DIR)/matrix.c -endif - -ifeq ($(strip $(MIDI_ENABLE)), yes) - OPT_DEFS += -DMIDI_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c -endif - -ifeq ($(strip $(AUDIO_ENABLE)), yes) - OPT_DEFS += -DAUDIO_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_music.c - SRC += $(QUANTUM_DIR)/audio/audio.c - SRC += $(QUANTUM_DIR)/audio/voices.c - SRC += $(QUANTUM_DIR)/audio/luts.c -endif - -ifeq ($(strip $(UCIS_ENABLE)), yes) - OPT_DEFS += -DUCIS_ENABLE - UNICODE_ENABLE = yes -endif - -ifeq ($(strip $(UNICODE_ENABLE)), yes) - OPT_DEFS += -DUNICODE_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c -endif - -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - OPT_DEFS += -DRGBLIGHT_ENABLE - SRC += $(QUANTUM_DIR)/light_ws2812.c - SRC += $(QUANTUM_DIR)/rgblight.c -endif - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - OPT_DEFS += -DTAP_DANCE_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c -endif - -ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) - SERIAL_DIR = $(QUANTUM_DIR)/serial_link - SERIAL_PATH = $(QUANTUM_PATH)/serial_link - SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c) - SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) - SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) - OPT_DEFS += -DSERIAL_LINK_ENABLE - VAPTH += $(SERIAL_PATH) -endif - -# Optimize size but this may cause error "relocation truncated to fit" -#EXTRALDFLAGS = -Wl,--relax - -# Search Path -VPATH += $(KEYMAP_PATH) -ifdef SUBPROJECT - VPATH += $(SUBPROJECT_PATH) -endif -VPATH += $(KEYBOARD_PATH) -VPATH += $(TOP_DIR) -VPATH += $(TMK_PATH) -VPATH += $(QUANTUM_PATH) -VPATH += $(QUANTUM_PATH)/keymap_extras -VPATH += $(QUANTUM_PATH)/audio -VPATH += $(QUANTUM_PATH)/process_keycode - - -# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA -ifdef MCU_FAMILY - PLATFORM=CHIBIOS -else - PLATFORM=AVR -endif - -include $(TMK_PATH)/common.mk -ifeq ($(PLATFORM),AVR) - include $(TMK_PATH)/protocol/lufa.mk - include $(TMK_PATH)/avr.mk -else ifeq ($(PLATFORM),CHIBIOS) - include $(TMK_PATH)/protocol/chibios.mk - include $(TMK_PATH)/chibios.mk - OPT_OS = chibios -else - $(error Unknown platform) -endif - -ifeq ($(strip $(VISUALIZER_ENABLE)), yes) - VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer - VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer - include $(VISUALIZER_PATH)/visualizer.mk -endif - -include $(TMK_PATH)/rules.mk - -GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") -BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") -OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" - -$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h) -$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h) +STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) +ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) +ABS_STARTING_MAKEFILE := $(abspath $(STARTING_MAKEFILE)) +ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE)) +ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE)) +ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE)) +STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) + +PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) + +define NEXT_PATH_ELEMENT + $$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS))) + $$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS))) +endef + +$(eval $(call NEXT_PATH_ELEMENT)) + +ifeq ($(CURRENT_PATH_ELEMENT),keyboards) + $(eval $(call NEXT_PATH_ELEMENT)) + KEYBOARD := $(CURRENT_PATH_ELEMENT) + $(eval $(call NEXT_PATH_ELEMENT)) + ifeq ($(CURRENT_PATH_ELEMENT),keymaps) + $(eval $(call NEXT_PATH_ELEMENT)) + KEYMAP := $(CURRENT_PATH_ELEMENT) + else ifneq ($(CURRENT_PATH_ELEMENT),) + SUBPROJECT := $(CURRENT_PATH_ELEMENT) + $(eval $(call NEXT_PATH_ELEMENT)) + ifeq ($(CURRENT_PATH_ELEMENT),keymaps) + $(eval $(call NEXT_PATH_ELEMENT)) + KEYMAP := $(CURRENT_PATH_ELEMENT) + endif + endif +endif + +$(info Keyboard: $(KEYBOARD)) +$(info Keymap: $(KEYMAP)) +$(info Subproject: $(SUBPROJECT)) + + +all: + echo "Compiling" \ No newline at end of file diff --git a/build_keyboard.mk b/build_keyboard.mk new file mode 100644 index 0000000000..053c8532af --- /dev/null +++ b/build_keyboard.mk @@ -0,0 +1,276 @@ +ifndef VERBOSE +.SILENT: +endif + +.DEFAULT_GOAL := all + +space := $(subst ,, ) +ESCAPED_ABS_PATH = $(subst $(space),_SPACE_,$(abspath $1)) +starting_makefile := $(call ESCAPED_ABS_PATH,$(firstword $(MAKEFILE_LIST))) +mkfile_path := $(call ESCAPED_ABS_PATH,$(lastword $(MAKEFILE_LIST)))) +abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path))) + +ifneq (,$(findstring /keyboards/,$(starting_makefile))) + possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(abs_tmk_root)/keyboards/%,%,$(starting_makefile)))) + ifneq (,$(findstring /keymaps/,$(possible_keyboard))) + KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard))) + KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard))) + ifneq (,$(findstring /,$(KEYBOARD_DIR))) + # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) + # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) + tmk_root = ../../.. + else + tmk_root = ../../../.. + endif + else + KEYMAP_DIR:=default + KEYBOARD_DIR:=$(possible_keyboard) + ifneq (,$(findstring /,$(KEYBOARD_DIR))) + # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) + # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) + tmk_root = ../../.. + else + tmk_root = ../.. + endif + endif +else + tmk_root = . +endif +# $(info $(KEYBOARD_DIR)) +# $(info $(KEYMAP_DIR)) +# $(info $(SUBPROJECT_DIR)) + +# Directory common source filess exist +TOP_DIR = $(tmk_root) +TMK_DIR = tmk_core +TMK_PATH = $(TOP_DIR)/$(TMK_DIR) +LIB_PATH = $(TOP_DIR)/lib + +QUANTUM_DIR = quantum +QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) + + +ifdef keyboard + KEYBOARD ?= $(keyboard) +endif +ifdef KEYBOARD_DIR + KEYBOARD ?= $(KEYBOARD_DIR) +endif +ifndef KEYBOARD + KEYBOARD=planck +endif + +MASTER ?= left +ifdef master + MASTER = $(master) +endif + + +# converts things to keyboards/subproject +ifneq (,$(findstring /,$(KEYBOARD))) + TEMP:=$(KEYBOARD) + KEYBOARD:=$(firstword $(subst /, ,$(TEMP))) + SUBPROJECT:=$(lastword $(subst /, ,$(TEMP))) +endif + +KEYBOARD_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD) + +ifdef sub + SUBPROJECT=$(sub) +endif +ifdef subproject + SUBPROJECT=$(subproject) +endif + +ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","") + KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c + ifneq ($(call ESCAPED_ABS_PATH,$(KEYBOARD_PATH)/Makefile),$(starting_makefile)) + -include $(KEYBOARD_PATH)/Makefile + endif +else +$(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist) +endif + +ifdef SUBPROJECT_DEFAULT + SUBPROJECT?=$(SUBPROJECT_DEFAULT) +endif + +ifdef SUBPROJECT + SUBPROJECT_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT) + ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") + OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) + SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c + ifneq ($(call ESCAPED_ABS_PATH,$(SUBPROJECT_PATH)/Makefile),$(starting_makefile)) + -include $(SUBPROJECT_PATH)/Makefile + endif + else +$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) + endif +endif + +ifdef keymap + KEYMAP ?= $(keymap) +endif +ifdef KEYMAP_DIR + KEYMAP ?= $(KEYMAP_DIR) +endif +ifndef KEYMAP + KEYMAP = default +endif +KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP) +ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","") + KEYMAP_FILE = keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c + ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) + -include $(KEYMAP_PATH)/Makefile + endif +else + ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/keymap.c)","") +$(error "$(KEYMAP_PATH)/keymap.c" does not exist) + else + KEYMAP_PATH = $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) + KEYMAP_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/keymap.c + ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) + -include $(KEYMAP_PATH)/Makefile + endif + endif +endif + +ifdef SUBPROJECT + TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) +else + TARGET ?= $(KEYBOARD)_$(KEYMAP) +endif + +BUILD_DIR = $(TOP_DIR)/.build + +# Object files directory +# To put object files in current directory, use a dot (.), do NOT make +# this an empty or blank macro! +OBJDIR = $(BUILD_DIR)/obj_$(TARGET) + + + +ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") + CONFIG_H = $(KEYMAP_PATH)/config.h +else + CONFIG_H = $(KEYBOARD_PATH)/config.h + ifdef SUBPROJECT + ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") + CONFIG_H = $(SUBPROJECT_PATH)/config.h + endif + endif +endif + +# # project specific files +SRC += $(KEYBOARD_FILE) \ + $(KEYMAP_FILE) \ + $(QUANTUM_DIR)/quantum.c \ + $(QUANTUM_DIR)/keymap_common.c \ + $(QUANTUM_DIR)/keycode_config.c \ + $(QUANTUM_DIR)/process_keycode/process_leader.c + +ifdef SUBPROJECT + SRC += $(SUBPROJECT_FILE) +endif + +ifdef SUBPROJECT + SRC += $(SUBPROJECT_FILE) +endif + +ifdef SUBPROJECT + SRC += $(SUBPROJECT_FILE) +endif + +ifndef CUSTOM_MATRIX + SRC += $(QUANTUM_DIR)/matrix.c +endif + +ifeq ($(strip $(MIDI_ENABLE)), yes) + OPT_DEFS += -DMIDI_ENABLE + SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c +endif + +ifeq ($(strip $(AUDIO_ENABLE)), yes) + OPT_DEFS += -DAUDIO_ENABLE + SRC += $(QUANTUM_DIR)/process_keycode/process_music.c + SRC += $(QUANTUM_DIR)/audio/audio.c + SRC += $(QUANTUM_DIR)/audio/voices.c + SRC += $(QUANTUM_DIR)/audio/luts.c +endif + +ifeq ($(strip $(UNICODE_ENABLE)), yes) + OPT_DEFS += -DUNICODE_ENABLE + SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c +endif + +ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) + OPT_DEFS += -DRGBLIGHT_ENABLE + SRC += $(QUANTUM_DIR)/light_ws2812.c + SRC += $(QUANTUM_DIR)/rgblight.c +endif + +ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) + OPT_DEFS += -DTAP_DANCE_ENABLE + SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c +endif + +ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) + SERIAL_DIR = $(QUANTUM_DIR)/serial_link + SERIAL_PATH = $(QUANTUM_PATH)/serial_link + SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c) + SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) + SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) + OPT_DEFS += -DSERIAL_LINK_ENABLE + VAPTH += $(SERIAL_PATH) +endif + +# Optimize size but this may cause error "relocation truncated to fit" +#EXTRALDFLAGS = -Wl,--relax + +# Search Path +VPATH += $(KEYMAP_PATH) +ifdef SUBPROJECT + VPATH += $(SUBPROJECT_PATH) +endif +VPATH += $(KEYBOARD_PATH) +VPATH += $(TOP_DIR) +VPATH += $(TMK_PATH) +VPATH += $(QUANTUM_PATH) +VPATH += $(QUANTUM_PATH)/keymap_extras +VPATH += $(QUANTUM_PATH)/audio +VPATH += $(QUANTUM_PATH)/process_keycode + + +# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA +ifdef MCU_FAMILY + PLATFORM=CHIBIOS +else + PLATFORM=AVR +endif + +include $(TMK_PATH)/common.mk +ifeq ($(PLATFORM),AVR) + include $(TMK_PATH)/protocol/lufa.mk + include $(TMK_PATH)/avr.mk +else ifeq ($(PLATFORM),CHIBIOS) + include $(TMK_PATH)/protocol/chibios.mk + include $(TMK_PATH)/chibios.mk + OPT_OS = chibios +else + $(error Unknown platform) +endif + +ifeq ($(strip $(VISUALIZER_ENABLE)), yes) + VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer + VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer + include $(VISUALIZER_PATH)/visualizer.mk +endif + +include $(TMK_PATH)/rules.mk + +GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") +BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") +OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" + +$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h) +$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h) \ No newline at end of file -- cgit v1.2.1 From e6e675335dbaa6bd175be7aaee829c717e572488 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Wed, 3 Aug 2016 08:44:11 +0300 Subject: First version of rule parsing Only handles allkb at the moment. --- Makefile | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/Makefile b/Makefile index fcd57754b5..f0d5c05ccc 100644 --- a/Makefile +++ b/Makefile @@ -36,6 +36,54 @@ $(info Keyboard: $(KEYBOARD)) $(info Keymap: $(KEYMAP)) $(info Subproject: $(SUBPROJECT)) +# Compare the start of the RULE_VARIABLE with the first argument($1) +# If the rules equals $1 or starts with $1-, RULE_FOUND is set to true +# and $1 is removed from the RULE variable +# Otherwise the RULE_FOUND variable is set to false +# The function is a bit tricky, since there's no built in $(startswith) function +define COMPARE_AND_REMOVE_FROM_RULE + ifeq ($1,$$(RULE)) + RULE:= + RULE_FOUND := true + else + STARTDASH_REMOVED=$$(subst START$1-,,START$$(RULE)) + ifneq ($$(STARTDASH_REMOVED),START$$(RULE)) + RULE_FOUND := true + RULE := $$(STARTDASH_REMOVED) + else + RULE_FOUND := false + endif + endif +endef + +define PARSE_ALL_KEYBOARDS + COMMANDS += allkb + #$$(info $$(RULE)) + COMMAND_allkb := "All keyboards with $$(RULE)" +endef + +define PARSE_RULE + RULE := $1 + COMMANDS := + $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allkb)) + ifeq ($$(RULE_FOUND),true) + $$(eval $$(call PARSE_ALL_KEYBOARDS)) + endif +endef + +RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); + +.PHONY: % +%: + $(eval $(call PARSE_RULE,$@)) + $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) + +.PHONY: all-keyboards +all-keyboards: allkb + +.PHONY: all-keyboards-defaults +all-keyboards-defaults: allkb-default-default +.PHONY: all all: echo "Compiling" \ No newline at end of file -- cgit v1.2.1 From f97ae2b199df087f4b48c7019c2d887089d81614 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Wed, 3 Aug 2016 09:28:47 +0300 Subject: Rule parsing to match kebyoards --- Makefile | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Makefile b/Makefile index f0d5c05ccc..b24270ad1b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,9 @@ STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) +ROOT_DIR := $(dir, $(ROOT_MAKEFILE)) +ifeq ($(ROOT_DIR),) + ROOT_DIR := . +endif ABS_STARTING_MAKEFILE := $(abspath $(STARTING_MAKEFILE)) ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE)) ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE)) @@ -32,9 +36,14 @@ ifeq ($(CURRENT_PATH_ELEMENT),keyboards) endif endif +$(info $(ROOT_DIR)/keyboards) +KEYBOARDS := $(notdir $(patsubst %/.,%,$(wildcard $(ROOT_DIR)/keyboards/*/.))) + $(info Keyboard: $(KEYBOARD)) $(info Keymap: $(KEYMAP)) $(info Subproject: $(SUBPROJECT)) +$(info Keyboards: $(KEYBOARDS)) + # Compare the start of the RULE_VARIABLE with the first argument($1) # If the rules equals $1 or starts with $1-, RULE_FOUND is set to true @@ -62,12 +71,34 @@ define PARSE_ALL_KEYBOARDS COMMAND_allkb := "All keyboards with $$(RULE)" endef +define PARSE_KEYBOARD + COMMANDS += $1 + #$$(info $$(RULE)) + COMMAND_$1 := "Keyboard $1 with $$(RULE)" +endef + + +# Recursively try to find a matching keyboard +# During the first call $1 contains a list of all keyboards +# One keyboard is checked and removed at a time +define TRY_PARSE_KEYBOARD + CURRENT_KB := $$(firstword $1) + $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(CURRENT_KB))) + ifeq ($$(RULE_FOUND),true) + $$(eval $$(call PARSE_KEYBOARD,$$(CURRENT_KB))) + else ifneq ($1,) + $$(eval $$(call TRY_PARSE_KEYBOARD,$$(wordlist 2,9999,$1))) + endif +endef + define PARSE_RULE RULE := $1 COMMANDS := $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allkb)) ifeq ($$(RULE_FOUND),true) $$(eval $$(call PARSE_ALL_KEYBOARDS)) + else + $$(eval $$(call TRY_PARSE_KEYBOARD,$(KEYBOARDS))) endif endef -- cgit v1.2.1 From 9b02e66ce0f703480e42038a5084174a45b54b1d Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 4 Aug 2016 08:49:44 +0300 Subject: Add keymap parsing --- Makefile | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index b24270ad1b..b4204478e1 100644 --- a/Makefile +++ b/Makefile @@ -71,12 +71,28 @@ define PARSE_ALL_KEYBOARDS COMMAND_allkb := "All keyboards with $$(RULE)" endef +# $1 = Keyboard define PARSE_KEYBOARD - COMMANDS += $1 - #$$(info $$(RULE)) - COMMAND_$1 := "Keyboard $1 with $$(RULE)" + $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allkm)) + ifeq ($$(RULE_FOUND),true) + $$(eval $$(call PARSE_ALL_KEYMAPS, $1)) + else + KEYMAPS := $(notdir $(patsubst %/.,%,$(wildcard $(ROOT_DIR)/keyboards/$1/keymaps/*/.))) + $$(eval $$(call TRY_PARSE_KEYMAP,$$(KEYMAPS),$1)) + endif +endef + +define PARSE_ALL_KEYMAPS + COMMANDS += ALL_KEYMAPS + COMMAND_ALL_KEYMAPS := All keymaps in $1 endef +# $1 Keyboard +# $2 Keymap +define PARSE_KEYMAP + COMMANDS += KEYBOARD_$1_KEYMAP_$2 + COMMAND_KEYBOARD_$1_KEYMAP_$2 := Keyboard $1, Keymap $2 +endef # Recursively try to find a matching keyboard # During the first call $1 contains a list of all keyboards @@ -91,6 +107,18 @@ define TRY_PARSE_KEYBOARD endif endef +# $1 list of keymaps +# $2 keyboard +define TRY_PARSE_KEYMAP + CURRENT_KM := $$(firstword $1) + $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(CURRENT_KM))) + ifeq ($$(RULE_FOUND),true) + $$(eval $$(call PARSE_KEYMAP,$2,$$(CURRENT_KM))) + else ifneq ($1,) + $$(eval $$(call TRY_PARSE_KEYMAP,$$(wordlist 2,9999,$1),$2)) + endif +endef + define PARSE_RULE RULE := $1 COMMANDS := -- cgit v1.2.1 From dfe510d5b8f83c9977b507ed204632c2f22c5d24 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 4 Aug 2016 09:17:02 +0300 Subject: Refactor common rule list parsing into own function --- Makefile | 61 +++++++++++++++++++++++++++++-------------------------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/Makefile b/Makefile index b4204478e1..e88eeefee4 100644 --- a/Makefile +++ b/Makefile @@ -65,6 +65,20 @@ define COMPARE_AND_REMOVE_FROM_RULE endif endef +# Recursively try to find a match +# $1 The list to be checked +# If a match is found, then RULE_FOUND is set to true +# and MATCHED_ITEM to the item that was matched +define TRY_TO_MATCH_RULE_FROM_LIST + $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1))) + ifeq ($$(RULE_FOUND),true) + MATCHED_ITEM := $$(firstword $1) + else ifneq ($1,) + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(wordlist 2,9999,$1))) + endif +endef + + define PARSE_ALL_KEYBOARDS COMMANDS += allkb #$$(info $$(RULE)) @@ -73,51 +87,31 @@ endef # $1 = Keyboard define PARSE_KEYBOARD + CURRENT_KB := $1 $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allkm)) ifeq ($$(RULE_FOUND),true) - $$(eval $$(call PARSE_ALL_KEYMAPS, $1)) + $$(eval $$(call PARSE_ALL_KEYMAPS)) else KEYMAPS := $(notdir $(patsubst %/.,%,$(wildcard $(ROOT_DIR)/keyboards/$1/keymaps/*/.))) - $$(eval $$(call TRY_PARSE_KEYMAP,$$(KEYMAPS),$1)) + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS))) + ifeq ($$(RULE_FOUND),true) + $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) + endif endif endef define PARSE_ALL_KEYMAPS COMMANDS += ALL_KEYMAPS - COMMAND_ALL_KEYMAPS := All keymaps in $1 + COMMAND_ALL_KEYMAPS := All keymaps in $(CURRENT_KB) endef -# $1 Keyboard -# $2 Keymap +# $1 Keymap define PARSE_KEYMAP - COMMANDS += KEYBOARD_$1_KEYMAP_$2 - COMMAND_KEYBOARD_$1_KEYMAP_$2 := Keyboard $1, Keymap $2 + CURRENT_KM = $1 + COMMANDS += KEYBOARD_$$(CURRENT_KB)_KEYMAP_$$(CURRENT_KM) + COMMAND_KEYBOARD_$$(CURRENT_KB)_KEYMAP_$$(CURRENT_KM) := Keyboard $$(CURRENT_KB), Keymap $$(CURRENT_KM) endef -# Recursively try to find a matching keyboard -# During the first call $1 contains a list of all keyboards -# One keyboard is checked and removed at a time -define TRY_PARSE_KEYBOARD - CURRENT_KB := $$(firstword $1) - $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(CURRENT_KB))) - ifeq ($$(RULE_FOUND),true) - $$(eval $$(call PARSE_KEYBOARD,$$(CURRENT_KB))) - else ifneq ($1,) - $$(eval $$(call TRY_PARSE_KEYBOARD,$$(wordlist 2,9999,$1))) - endif -endef - -# $1 list of keymaps -# $2 keyboard -define TRY_PARSE_KEYMAP - CURRENT_KM := $$(firstword $1) - $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(CURRENT_KM))) - ifeq ($$(RULE_FOUND),true) - $$(eval $$(call PARSE_KEYMAP,$2,$$(CURRENT_KM))) - else ifneq ($1,) - $$(eval $$(call TRY_PARSE_KEYMAP,$$(wordlist 2,9999,$1),$2)) - endif -endef define PARSE_RULE RULE := $1 @@ -126,7 +120,10 @@ define PARSE_RULE ifeq ($$(RULE_FOUND),true) $$(eval $$(call PARSE_ALL_KEYBOARDS)) else - $$(eval $$(call TRY_PARSE_KEYBOARD,$(KEYBOARDS))) + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS))) + ifeq ($$(RULE_FOUND),true) + $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) + endif endif endef -- cgit v1.2.1 From 9ee6d4a23d9a1bdc019fc9968a909866ffeda905 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 4 Aug 2016 09:56:03 +0300 Subject: Proper looping for allkb and allkm --- Makefile | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index e88eeefee4..57cf3f523a 100644 --- a/Makefile +++ b/Makefile @@ -78,21 +78,32 @@ define TRY_TO_MATCH_RULE_FROM_LIST endif endef +define ALL_IN_LIST_LOOP + OLD_RULE$1 := $$(RULE) + $$(eval $$(call $1,$$(ITEM$1))) + RULE := $$(OLD_RULE$1) +endef + +define PARSE_ALL_IN_LIST + $$(foreach ITEM$1,$2,$$(eval $$(call ALL_IN_LIST_LOOP,$1))) +endef define PARSE_ALL_KEYBOARDS - COMMANDS += allkb - #$$(info $$(RULE)) - COMMAND_allkb := "All keyboards with $$(RULE)" + $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS))) +endef + +define PARSE_ALL_KEYMAPS + $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) endef # $1 = Keyboard define PARSE_KEYBOARD CURRENT_KB := $1 + KEYMAPS := $(notdir $(patsubst %/.,%,$(wildcard $(ROOT_DIR)/keyboards/$1/keymaps/*/.))) $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allkm)) ifeq ($$(RULE_FOUND),true) $$(eval $$(call PARSE_ALL_KEYMAPS)) else - KEYMAPS := $(notdir $(patsubst %/.,%,$(wildcard $(ROOT_DIR)/keyboards/$1/keymaps/*/.))) $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS))) ifeq ($$(RULE_FOUND),true) $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) @@ -100,11 +111,6 @@ define PARSE_KEYBOARD endif endef -define PARSE_ALL_KEYMAPS - COMMANDS += ALL_KEYMAPS - COMMAND_ALL_KEYMAPS := All keymaps in $(CURRENT_KB) -endef - # $1 Keymap define PARSE_KEYMAP CURRENT_KM = $1 @@ -112,7 +118,6 @@ define PARSE_KEYMAP COMMAND_KEYBOARD_$$(CURRENT_KB)_KEYMAP_$$(CURRENT_KM) := Keyboard $$(CURRENT_KB), Keymap $$(CURRENT_KM) endef - define PARSE_RULE RULE := $1 COMMANDS := -- cgit v1.2.1 From 1df6498721e989f1b3b10ba4b1b03d0ba54e9204 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 14:33:49 +0300 Subject: Subproject parsing Does not handle keyboards without subprojects correctly yet. --- Makefile | 49 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 57cf3f523a..e9e95569c4 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,7 @@ $(info Keyboards: $(KEYBOARDS)) # Otherwise the RULE_FOUND variable is set to false # The function is a bit tricky, since there's no built in $(startswith) function define COMPARE_AND_REMOVE_FROM_RULE + RULE_FOUND := false ifeq ($1,$$(RULE)) RULE:= RULE_FOUND := true @@ -70,11 +71,13 @@ endef # If a match is found, then RULE_FOUND is set to true # and MATCHED_ITEM to the item that was matched define TRY_TO_MATCH_RULE_FROM_LIST - $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1))) - ifeq ($$(RULE_FOUND),true) - MATCHED_ITEM := $$(firstword $1) - else ifneq ($1,) - $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(wordlist 2,9999,$1))) + ifneq ($1,) + $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1))) + ifeq ($$(RULE_FOUND),true) + MATCHED_ITEM := $$(firstword $1) + else + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(wordlist 2,9999,$1))) + endif endif endef @@ -96,10 +99,18 @@ define PARSE_ALL_KEYMAPS $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) endef -# $1 = Keyboard -define PARSE_KEYBOARD - CURRENT_KB := $1 - KEYMAPS := $(notdir $(patsubst %/.,%,$(wildcard $(ROOT_DIR)/keyboards/$1/keymaps/*/.))) +define PARSE_ALL_SUBPROJECTS + ifeq ($$(SUBPROJECTS),) + $$(eval $$(call PARSE_SUBPROJECT,)) + else + $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS))) + endif +endef + +# $1 Subproject +define PARSE_SUBPROJECT + CURRENT_SP := $1 + KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allkm)) ifeq ($$(RULE_FOUND),true) $$(eval $$(call PARSE_ALL_KEYMAPS)) @@ -111,11 +122,27 @@ define PARSE_KEYBOARD endif endef +# $1 = Keyboard +define PARSE_KEYBOARD + CURRENT_KB := $1 + # A subproject is any keyboard subfolder with a makefile + SUBPROJECTS := $$(notdir $$(patsubst %/Makefile,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/Makefile))) + $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allsp)) + ifeq ($$(RULE_FOUND),true) + $$(eval $$(call PARSE_ALL_SUBPROJECTS)) + else + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS))) + ifeq ($$(RULE_FOUND),true) + $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM))) + endif + endif +endef + # $1 Keymap define PARSE_KEYMAP CURRENT_KM = $1 - COMMANDS += KEYBOARD_$$(CURRENT_KB)_KEYMAP_$$(CURRENT_KM) - COMMAND_KEYBOARD_$$(CURRENT_KB)_KEYMAP_$$(CURRENT_KM) := Keyboard $$(CURRENT_KB), Keymap $$(CURRENT_KM) + COMMANDS += KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) + COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) := Keyboard $$(CURRENT_KB), Subproject $$(CURRENT_SP), Keymap $$(CURRENT_KM) endef define PARSE_RULE -- cgit v1.2.1 From 286b3b8057630bf9ce78d3a0aaa24f4841b37b3e Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 15:56:41 +0300 Subject: Slight refactoring to remove some verbosity --- Makefile | 45 ++++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index e9e95569c4..8f7dbb9e6c 100644 --- a/Makefile +++ b/Makefile @@ -50,8 +50,7 @@ $(info Keyboards: $(KEYBOARDS)) # and $1 is removed from the RULE variable # Otherwise the RULE_FOUND variable is set to false # The function is a bit tricky, since there's no built in $(startswith) function -define COMPARE_AND_REMOVE_FROM_RULE - RULE_FOUND := false +define COMPARE_AND_REMOVE_FROM_RULE_HELPER ifeq ($1,$$(RULE)) RULE:= RULE_FOUND := true @@ -66,21 +65,25 @@ define COMPARE_AND_REMOVE_FROM_RULE endif endef +COMPARE_AND_REMOVE_FROM_RULE = $(eval $(call COMPARE_AND_REMOVE_FROM_RULE_HELPER,$1))$(RULE_FOUND) + + # Recursively try to find a match # $1 The list to be checked # If a match is found, then RULE_FOUND is set to true # and MATCHED_ITEM to the item that was matched -define TRY_TO_MATCH_RULE_FROM_LIST +define TRY_TO_MATCH_RULE_FROM_LIST_HELPER ifneq ($1,) - $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1))) - ifeq ($$(RULE_FOUND),true) + ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true) MATCHED_ITEM := $$(firstword $1) else - $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(wordlist 2,9999,$1))) + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$$(wordlist 2,9999,$1))) endif endif endef +TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND) + define ALL_IN_LIST_LOOP OLD_RULE$1 := $$(RULE) $$(eval $$(call $1,$$(ITEM$1))) @@ -111,14 +114,10 @@ endef define PARSE_SUBPROJECT CURRENT_SP := $1 KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) - $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allkm)) - ifeq ($$(RULE_FOUND),true) + ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true) $$(eval $$(call PARSE_ALL_KEYMAPS)) - else - $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS))) - ifeq ($$(RULE_FOUND),true) - $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) - endif + else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true) + $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) endif endef @@ -127,14 +126,10 @@ define PARSE_KEYBOARD CURRENT_KB := $1 # A subproject is any keyboard subfolder with a makefile SUBPROJECTS := $$(notdir $$(patsubst %/Makefile,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/Makefile))) - $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allsp)) - ifeq ($$(RULE_FOUND),true) + ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allsp),true) $$(eval $$(call PARSE_ALL_SUBPROJECTS)) - else - $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS))) - ifeq ($$(RULE_FOUND),true) - $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM))) - endif + else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true) + $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM))) endif endef @@ -148,14 +143,10 @@ endef define PARSE_RULE RULE := $1 COMMANDS := - $$(eval $$(call COMPARE_AND_REMOVE_FROM_RULE,allkb)) - ifeq ($$(RULE_FOUND),true) + ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true) $$(eval $$(call PARSE_ALL_KEYBOARDS)) - else - $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS))) - ifeq ($$(RULE_FOUND),true) - $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) - endif + else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) + $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) endif endef -- cgit v1.2.1 From 091fab5103bd896f1b36094a7337dbe2f9d2ad59 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 16:02:14 +0300 Subject: Slight rearrange of the Makefile for easier readability --- Makefile | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index 8f7dbb9e6c..a034213653 100644 --- a/Makefile +++ b/Makefile @@ -94,20 +94,30 @@ define PARSE_ALL_IN_LIST $$(foreach ITEM$1,$2,$$(eval $$(call ALL_IN_LIST_LOOP,$1))) endef -define PARSE_ALL_KEYBOARDS - $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS))) +define PARSE_RULE + RULE := $1 + COMMANDS := + ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true) + $$(eval $$(call PARSE_ALL_KEYBOARDS)) + else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) + $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) + endif endef -define PARSE_ALL_KEYMAPS - $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) +# $1 = Keyboard +define PARSE_KEYBOARD + CURRENT_KB := $1 + # A subproject is any keyboard subfolder with a makefile + SUBPROJECTS := $$(notdir $$(patsubst %/Makefile,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/Makefile))) + ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allsp),true) + $$(eval $$(call PARSE_ALL_SUBPROJECTS)) + else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true) + $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM))) + endif endef -define PARSE_ALL_SUBPROJECTS - ifeq ($$(SUBPROJECTS),) - $$(eval $$(call PARSE_SUBPROJECT,)) - else - $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS))) - endif +define PARSE_ALL_KEYBOARDS + $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS))) endef # $1 Subproject @@ -121,15 +131,11 @@ define PARSE_SUBPROJECT endif endef -# $1 = Keyboard -define PARSE_KEYBOARD - CURRENT_KB := $1 - # A subproject is any keyboard subfolder with a makefile - SUBPROJECTS := $$(notdir $$(patsubst %/Makefile,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/Makefile))) - ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allsp),true) - $$(eval $$(call PARSE_ALL_SUBPROJECTS)) - else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true) - $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM))) +define PARSE_ALL_SUBPROJECTS + ifeq ($$(SUBPROJECTS),) + $$(eval $$(call PARSE_SUBPROJECT,)) + else + $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS))) endif endef @@ -140,14 +146,8 @@ define PARSE_KEYMAP COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) := Keyboard $$(CURRENT_KB), Subproject $$(CURRENT_SP), Keymap $$(CURRENT_KM) endef -define PARSE_RULE - RULE := $1 - COMMANDS := - ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true) - $$(eval $$(call PARSE_ALL_KEYBOARDS)) - else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) - $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) - endif +define PARSE_ALL_KEYMAPS + $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) endef RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); -- cgit v1.2.1 From 0d5caead5ad0edc06aedda06814da05815fc177e Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 16:45:33 +0300 Subject: Add default subproject parsing --- Makefile | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index a034213653..1e11dd5ff8 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,8 @@ STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) +QUANTUM_DIR:=$(ROOT_DIR)/quantum + define NEXT_PATH_ELEMENT $$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS))) $$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS))) @@ -111,8 +113,14 @@ define PARSE_KEYBOARD SUBPROJECTS := $$(notdir $$(patsubst %/Makefile,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/Makefile))) ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allsp),true) $$(eval $$(call PARSE_ALL_SUBPROJECTS)) + else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,defaultsp),true) + $$(eval $$(call PARSE_SUBPROJECT,defaultsp)) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true) $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM))) + else + # If there's no matching subproject, we assume it's the default + # This will allow you to leave the subproject part of the target out + $$(eval $$(call PARSE_SUBPROJECT,defaultsp)) endif endef @@ -122,7 +130,12 @@ endef # $1 Subproject define PARSE_SUBPROJECT - CURRENT_SP := $1 + ifeq ($1,defaultsp) + $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/Makefile) + CURRENT_SP := $$(SUBPROJECT_DEFAULT) + else + CURRENT_SP := $1 + endif KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true) $$(eval $$(call PARSE_ALL_KEYMAPS)) @@ -133,7 +146,7 @@ endef define PARSE_ALL_SUBPROJECTS ifeq ($$(SUBPROJECTS),) - $$(eval $$(call PARSE_SUBPROJECT,)) + $$(eval $$(call PARSE_SUBPROJECT,defaultsp)) else $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS))) endif -- cgit v1.2.1 From 44441de8cad7255fd0637459ed39b89e34751b78 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 17:04:39 +0300 Subject: Split keyboard makefiles into rules and Makefile --- Makefile | 2 +- keyboards/alps64/Makefile | 69 +---------------------- keyboards/alps64/rules.mk | 66 ++++++++++++++++++++++ keyboards/amj60/Makefile | 71 +----------------------- keyboards/amj60/rules.mk | 66 ++++++++++++++++++++++ keyboards/arrow_pad/Makefile | 73 +----------------------- keyboards/arrow_pad/rules.mk | 70 +++++++++++++++++++++++ keyboards/atomic/Makefile | 72 +----------------------- keyboards/atomic/rules.mk | 69 +++++++++++++++++++++++ keyboards/atreus/Makefile | 89 +---------------------------- keyboards/atreus/rules.mk | 82 +++++++++++++++++++++++++++ keyboards/bantam44/Makefile | 73 +----------------------- keyboards/bantam44/rules.mk | 67 ++++++++++++++++++++++ keyboards/chibios_test/Makefile | 11 +--- keyboards/chibios_test/rules.mk | 8 +++ keyboards/clueboard/Makefile | 108 +----------------------------------- keyboards/clueboard/rules.mk | 103 ++++++++++++++++++++++++++++++++++ keyboards/cluecard/Makefile | 77 +------------------------ keyboards/cluecard/rules.mk | 70 +++++++++++++++++++++++ keyboards/cluepad/Makefile | 71 +----------------------- keyboards/cluepad/rules.mk | 65 ++++++++++++++++++++++ keyboards/ergodox/Makefile | 33 +---------- keyboards/ergodox/rules.mk | 28 ++++++++++ keyboards/gh60/Makefile | 77 +------------------------ keyboards/gh60/rules.mk | 68 +++++++++++++++++++++++ keyboards/handwired/Makefile | 2 +- keyboards/handwired/onekey/Makefile | 66 +--------------------- keyboards/handwired/rules.mk | 0 keyboards/hhkb/Makefile | 91 +----------------------------- keyboards/hhkb/rules.mk | 84 ++++++++++++++++++++++++++++ keyboards/infinity_chibios/Makefile | 69 +---------------------- keyboards/infinity_chibios/rules.mk | 66 ++++++++++++++++++++++ keyboards/jd45/Makefile | 72 +----------------------- keyboards/jd45/rules.mk | 67 ++++++++++++++++++++++ keyboards/kc60/Makefile | 77 +------------------------ keyboards/kc60/rules.mk | 70 +++++++++++++++++++++++ keyboards/kinesis/Makefile | 80 +------------------------- keyboards/kinesis/rules.mk | 73 ++++++++++++++++++++++++ keyboards/lets_split/Makefile | 77 +------------------------ keyboards/lets_split/rules.mk | 74 ++++++++++++++++++++++++ keyboards/phantom/Makefile | 75 +------------------------ keyboards/phantom/rules.mk | 69 +++++++++++++++++++++++ keyboards/planck/Makefile | 71 +----------------------- keyboards/planck/rules.mk | 67 ++++++++++++++++++++++ keyboards/preonic/Makefile | 72 +----------------------- keyboards/preonic/rules.mk | 69 +++++++++++++++++++++++ keyboards/retro_refit/Makefile | 75 +------------------------ keyboards/retro_refit/rules.mk | 68 +++++++++++++++++++++++ keyboards/s60-x/Makefile | 76 +------------------------ keyboards/s60-x/rules.mk | 69 +++++++++++++++++++++++ keyboards/satan/Makefile | 71 +----------------------- keyboards/satan/rules.mk | 66 ++++++++++++++++++++++ keyboards/sixkeyboard/Makefile | 76 +------------------------ keyboards/sixkeyboard/rules.mk | 70 +++++++++++++++++++++++ keyboards/tv44/Makefile | 76 +------------------------ keyboards/tv44/rules.mk | 69 +++++++++++++++++++++++ 56 files changed, 1792 insertions(+), 1903 deletions(-) create mode 100644 keyboards/alps64/rules.mk create mode 100644 keyboards/amj60/rules.mk create mode 100644 keyboards/arrow_pad/rules.mk create mode 100644 keyboards/atomic/rules.mk create mode 100644 keyboards/atreus/rules.mk create mode 100644 keyboards/bantam44/rules.mk create mode 100644 keyboards/chibios_test/rules.mk create mode 100644 keyboards/clueboard/rules.mk create mode 100644 keyboards/cluecard/rules.mk create mode 100644 keyboards/cluepad/rules.mk create mode 100644 keyboards/ergodox/rules.mk create mode 100644 keyboards/gh60/rules.mk create mode 100644 keyboards/handwired/rules.mk create mode 100644 keyboards/hhkb/rules.mk create mode 100644 keyboards/infinity_chibios/rules.mk create mode 100644 keyboards/jd45/rules.mk create mode 100644 keyboards/kc60/rules.mk create mode 100644 keyboards/kinesis/rules.mk create mode 100644 keyboards/lets_split/rules.mk create mode 100644 keyboards/phantom/rules.mk create mode 100644 keyboards/planck/rules.mk create mode 100644 keyboards/preonic/rules.mk create mode 100644 keyboards/retro_refit/rules.mk create mode 100644 keyboards/s60-x/rules.mk create mode 100644 keyboards/satan/rules.mk create mode 100644 keyboards/sixkeyboard/rules.mk create mode 100644 keyboards/tv44/rules.mk diff --git a/Makefile b/Makefile index 1e11dd5ff8..b2a8735320 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) -QUANTUM_DIR:=$(ROOT_DIR)/quantum +MAKEFILE_INCLUDED=yes define NEXT_PATH_ELEMENT $$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS))) diff --git a/keyboards/alps64/Makefile b/keyboards/alps64/Makefile index d8325e6c89..4e2a6f00fd 100644 --- a/keyboards/alps64/Makefile +++ b/keyboards/alps64/Makefile @@ -1,70 +1,3 @@ - - -# Target file name (without extension). - -# project specific files -SRC = led.c - -# MCU name -MCU = atmega32u2 - -# 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 ?= yes # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/alps64/rules.mk b/keyboards/alps64/rules.mk new file mode 100644 index 0000000000..c326d3e26c --- /dev/null +++ b/keyboards/alps64/rules.mk @@ -0,0 +1,66 @@ + + +# Target file name (without extension). + +# project specific files +SRC = led.c + +# MCU name +MCU = atmega32u2 + +# 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 ?= yes # 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 +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA \ No newline at end of file diff --git a/keyboards/amj60/Makefile b/keyboards/amj60/Makefile index 1f695aa4d8..4e2a6f00fd 100644 --- a/keyboards/amj60/Makefile +++ b/keyboards/amj60/Makefile @@ -1,70 +1,3 @@ - -# 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 ?= no # 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 ?= 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 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/amj60/rules.mk b/keyboards/amj60/rules.mk new file mode 100644 index 0000000000..18403ac328 --- /dev/null +++ b/keyboards/amj60/rules.mk @@ -0,0 +1,66 @@ + +# 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 ?= no # 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 ?= 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 diff --git a/keyboards/arrow_pad/Makefile b/keyboards/arrow_pad/Makefile index 09fcf3e7a0..4e2a6f00fd 100644 --- a/keyboards/arrow_pad/Makefile +++ b/keyboards/arrow_pad/Makefile @@ -1,74 +1,3 @@ - - -# 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=512 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= yes # USB Nkey Rollover -BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/arrow_pad/rules.mk b/keyboards/arrow_pad/rules.mk new file mode 100644 index 0000000000..3dca9b6ea7 --- /dev/null +++ b/keyboards/arrow_pad/rules.mk @@ -0,0 +1,70 @@ + + +# 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=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= yes # USB Nkey Rollover +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 \ No newline at end of file diff --git a/keyboards/atomic/Makefile b/keyboards/atomic/Makefile index 08e9205cbf..4e2a6f00fd 100644 --- a/keyboards/atomic/Makefile +++ b/keyboards/atomic/Makefile @@ -1,73 +1,3 @@ - - -# 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 -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= no # Audio output on port C6 -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/atomic/rules.mk b/keyboards/atomic/rules.mk new file mode 100644 index 0000000000..d0f3a3a1c0 --- /dev/null +++ b/keyboards/atomic/rules.mk @@ -0,0 +1,69 @@ + + +# 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 +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/atreus/Makefile b/keyboards/atreus/Makefile index 5894d231f9..4e2a6f00fd 100644 --- a/keyboards/atreus/Makefile +++ b/keyboards/atreus/Makefile @@ -1,88 +1,3 @@ - - -ifdef TEENSY2 - OPT_DEFS += -DATREUS_TEENSY2 - ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex -else - OPT_DEFS += -DATREUS_ASTAR - OPT_DEFS += -DCATERINA_BOOTLOADER - ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ - avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) -endif - -# 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 ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA -# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -# MIDI_ENABLE ?= YES # MIDI controls -UNICODE_ENABLE ?= YES # Unicode -# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID - - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - -USB ?= /dev/cu.usbmodem1411 - -upload: build - $(ATREUS_UPLOAD_COMMAND) - +endif \ No newline at end of file diff --git a/keyboards/atreus/rules.mk b/keyboards/atreus/rules.mk new file mode 100644 index 0000000000..d71f50bb2b --- /dev/null +++ b/keyboards/atreus/rules.mk @@ -0,0 +1,82 @@ + + +ifdef TEENSY2 + OPT_DEFS += -DATREUS_TEENSY2 + ATRUES_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex +else + OPT_DEFS += -DATREUS_ASTAR + OPT_DEFS += -DCATERINA_BOOTLOADER + ATRUES_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ + avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) +endif + +# 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 ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID + +USB ?= /dev/cu.usbmodem1411 + +upload: build + $(ATRUES_UPLOAD_COMMAND) \ No newline at end of file diff --git a/keyboards/bantam44/Makefile b/keyboards/bantam44/Makefile index 03893dbf89..4e2a6f00fd 100644 --- a/keyboards/bantam44/Makefile +++ b/keyboards/bantam44/Makefile @@ -1,72 +1,3 @@ - - -# 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=512 - - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -# MIDI_ENABLE ?= YES # MIDI controls -# UNICODE_ENABLE ?= YES # Unicode -# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - +endif \ No newline at end of file diff --git a/keyboards/bantam44/rules.mk b/keyboards/bantam44/rules.mk new file mode 100644 index 0000000000..baa0e9e7a2 --- /dev/null +++ b/keyboards/bantam44/rules.mk @@ -0,0 +1,67 @@ + + +# 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=512 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +# NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/chibios_test/Makefile b/keyboards/chibios_test/Makefile index d9f2b8b83b..4b07a62343 100644 --- a/keyboards/chibios_test/Makefile +++ b/keyboards/chibios_test/Makefile @@ -1,14 +1,5 @@ SUBPROJECT_DEFAULT = stm32_f072_onekey -#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration -MOUSEKEY_ENABLE ?= yes # Mouse keys -EXTRAKEY_ENABLE ?= yes # Audio control and System control -CONSOLE_ENABLE ?= yes # Console for debug -COMMAND_ENABLE ?= yes # Commands for debug and configuration -SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover -CUSTOM_MATRIX ?= yes # Custom matrix file - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/chibios_test/rules.mk b/keyboards/chibios_test/rules.mk new file mode 100644 index 0000000000..4b5a845356 --- /dev/null +++ b/keyboards/chibios_test/rules.mk @@ -0,0 +1,8 @@ +#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +MOUSEKEY_ENABLE ?= yes # Mouse keys +EXTRAKEY_ENABLE ?= yes # Audio control and System control +CONSOLE_ENABLE ?= yes # Console for debug +COMMAND_ENABLE ?= yes # Commands for debug and configuration +SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover +CUSTOM_MATRIX ?= yes # Custom matrix file \ No newline at end of file diff --git a/keyboards/clueboard/Makefile b/keyboards/clueboard/Makefile index e6b13f955a..b9bada8f8d 100644 --- a/keyboards/clueboard/Makefile +++ b/keyboards/clueboard/Makefile @@ -1,109 +1,5 @@ -#---------------------------------------------------------------------------- -# 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". -#---------------------------------------------------------------------------- - SUBPROJECT_DEFAULT = rev2 -# MCU name -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 -# change to no 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 -AUDIO_ENABLE ?= no -RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/clueboard/rules.mk b/keyboards/clueboard/rules.mk new file mode 100644 index 0000000000..3909fbd5cb --- /dev/null +++ b/keyboards/clueboard/rules.mk @@ -0,0 +1,103 @@ +#---------------------------------------------------------------------------- +# 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". +#---------------------------------------------------------------------------- + +# MCU name +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 +AUDIO_ENABLE ?= no +RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID \ No newline at end of file diff --git a/keyboards/cluecard/Makefile b/keyboards/cluecard/Makefile index 029d0b9670..4e2a6f00fd 100644 --- a/keyboards/cluecard/Makefile +++ b/keyboards/cluecard/Makefile @@ -1,76 +1,3 @@ - - -# 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 -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870) -BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= yes # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - - +endif \ No newline at end of file diff --git a/keyboards/cluecard/rules.mk b/keyboards/cluecard/rules.mk new file mode 100644 index 0000000000..454235877d --- /dev/null +++ b/keyboards/cluecard/rules.mk @@ -0,0 +1,70 @@ + + +# 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 +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= yes # Audio output on port C6 diff --git a/keyboards/cluepad/Makefile b/keyboards/cluepad/Makefile index a331ff4dcd..4e2a6f00fd 100644 --- a/keyboards/cluepad/Makefile +++ b/keyboards/cluepad/Makefile @@ -1,70 +1,3 @@ - -# 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 ?= yes # 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 -BACKLIGHT_ENABLE ?= yes # Enable numpad's backlight functionality -RGBLIGHT_ENABLE ?= yes -# MIDI_ENABLE ?= YES # MIDI controls -# UNICODE_ENABLE ?= YES # Unicode -# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID - - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/cluepad/rules.mk b/keyboards/cluepad/rules.mk new file mode 100644 index 0000000000..19b16b95a9 --- /dev/null +++ b/keyboards/cluepad/rules.mk @@ -0,0 +1,65 @@ + +# 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 ?= yes # 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 +BACKLIGHT_ENABLE ?= yes # Enable numpad's backlight functionality +RGBLIGHT_ENABLE ?= yes +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID \ No newline at end of file diff --git a/keyboards/ergodox/Makefile b/keyboards/ergodox/Makefile index 05fb588d11..7165350050 100644 --- a/keyboards/ergodox/Makefile +++ b/keyboards/ergodox/Makefile @@ -1,34 +1,5 @@ -#---------------------------------------------------------------------------- -# On command line: -# -# make = Make software. -# -# make clean = Clean out built project files. -# -# That's pretty much all you need. To compile, always go make clean, -# followed by make. -# -# For advanced users only: -# make teensy = Download the hex file to the device, using teensy_loader_cli. -# (must have teensy_loader_cli installed). -# -#---------------------------------------------------------------------------- SUBPROJECT_DEFAULT = ez -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ -SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= yes # Unicode - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/ergodox/rules.mk b/keyboards/ergodox/rules.mk new file mode 100644 index 0000000000..ac63d4eff2 --- /dev/null +++ b/keyboards/ergodox/rules.mk @@ -0,0 +1,28 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make = Make software. +# +# make clean = Clean out built project files. +# +# That's pretty much all you need. To compile, always go make clean, +# followed by make. +# +# For advanced users only: +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +#---------------------------------------------------------------------------- +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ +SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= yes # Unicode diff --git a/keyboards/gh60/Makefile b/keyboards/gh60/Makefile index 39a9cc0ae1..4e2a6f00fd 100644 --- a/keyboards/gh60/Makefile +++ b/keyboards/gh60/Makefile @@ -1,74 +1,3 @@ - - -# 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 ?= yes # 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 -KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -# MIDI_ENABLE ?= YES # MIDI controls -# UNICODE_ENABLE ?= YES # Unicode -# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID - - -ifndef QUANTUM_DIR - include ../../Makefile -endif - +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/gh60/rules.mk b/keyboards/gh60/rules.mk new file mode 100644 index 0000000000..73f4bd76e8 --- /dev/null +++ b/keyboards/gh60/rules.mk @@ -0,0 +1,68 @@ + + +# 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 ?= yes # 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 +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/handwired/Makefile b/keyboards/handwired/Makefile index 57493a47ca..4e2a6f00fd 100644 --- a/keyboards/handwired/Makefile +++ b/keyboards/handwired/Makefile @@ -1,3 +1,3 @@ -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/handwired/onekey/Makefile b/keyboards/handwired/onekey/Makefile index c6d10856a1..4e2a6f00fd 100644 --- a/keyboards/handwired/onekey/Makefile +++ b/keyboards/handwired/onekey/Makefile @@ -1,65 +1,3 @@ - - -# MCU name -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 ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA - -ifndef QUANTUM_DIR - include ../../../Makefile +ifndef MAKEFILE_INCLUDED + include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/handwired/rules.mk b/keyboards/handwired/rules.mk new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/hhkb/Makefile b/keyboards/hhkb/Makefile index 6fe973e1eb..4e2a6f00fd 100644 --- a/keyboards/hhkb/Makefile +++ b/keyboards/hhkb/Makefile @@ -1,90 +1,3 @@ - - -# project specific files -SRC = matrix.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 - -# as per original hasu settings -OPT_DEFS += -DBOOTLOADER_SIZE=512 - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -# MIDI_ENABLE ?= YES # MIDI controls -# UNICODE_ENABLE ?= YES # Unicode -# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID - - - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - -ifneq (, $(findstring yes, $(HHKB_JP))) - OPT_DEFS += -DHHKB_JP -endif - -debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION -debug-on: all - -debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT -debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) -debug-off: all +endif \ No newline at end of file diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk new file mode 100644 index 0000000000..b43b5e23f1 --- /dev/null +++ b/keyboards/hhkb/rules.mk @@ -0,0 +1,84 @@ + + +# project specific files +SRC = matrix.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 + +# as per original hasu settings +OPT_DEFS += -DBOOTLOADER_SIZE=512 + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +# NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID + +ifneq (, $(findstring yes, $(HHKB_JP))) + OPT_DEFS += -DHHKB_JP +endif + +debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION +debug-on: all + +debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT +debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) +debug-off: all diff --git a/keyboards/infinity_chibios/Makefile b/keyboards/infinity_chibios/Makefile index 649b43e64d..4e2a6f00fd 100644 --- a/keyboards/infinity_chibios/Makefile +++ b/keyboards/infinity_chibios/Makefile @@ -1,70 +1,3 @@ -# project specific files -SRC = matrix.c \ - led.c - -## chip/board settings -# - the next two should match the directories in -# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) -# - For Teensies, FAMILY = KINETIS and SERIES is either -# KL2x (LC) or K20x (3.0,3.1,3.2). -# - For Infinity KB, SERIES = K20x -MCU_FAMILY = KINETIS -MCU_SERIES = K20x - -# Linker script to use -# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ -# or /ld/ -# - NOTE: a custom ld script is needed for EEPROM on Teensy LC -# - LDSCRIPT = -# - MKL26Z64 for Teensy LC -# - MK20DX128 for Teensy 3.0 -# - MK20DX256 for Teensy 3.1 and 3.2 -# - MK20DX128BLDR4 for Infinity with Kiibohd bootloader -MCU_LDSCRIPT = MK20DX128BLDR4 - -# Startup code to use -# - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ -# - STARTUP = -# - kl2x for Teensy LC -# - k20x5 for Teensy 3.0 and Infinity KB -# - k20x7 for Teensy 3.1 and 3.2 -MCU_STARTUP = k20x5 - -# Board: it should exist either in /os/hal/boards/ -# or /boards -# - BOARD = -# - PJRC_TEENSY_LC for Teensy LC -# - PJRC_TEENSY_3 for Teensy 3.0 -# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 -# - MCHCK_K20 for Infinity KB -BOARD = MCHCK_K20 - -# Cortex version -# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 -MCU = cortex-m4 - -# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 -# I.e. 6 for Teensy LC; 7 for Teensy 3.x -ARMV = 7 - -# Vector table for application -# 0x00000000-0x00001000 area is occupied by bootlaoder.*/ -# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB -OPT_DEFS = -DCORTEX_VTOR_INIT=0x00001000 - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration -## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.) -MOUSEKEY_ENABLE ?= yes # Mouse keys -EXTRAKEY_ENABLE ?= yes # Audio control and System control -CONSOLE_ENABLE ?= yes # Console for debug -COMMAND_ENABLE ?= yes # Commands for debug and configuration -SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover -CUSTOM_MATRIX ?= yes # Custom matrix file - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/infinity_chibios/rules.mk b/keyboards/infinity_chibios/rules.mk new file mode 100644 index 0000000000..56d6470b59 --- /dev/null +++ b/keyboards/infinity_chibios/rules.mk @@ -0,0 +1,66 @@ +# project specific files +SRC = matrix.c \ + led.c + +## chip/board settings +# - the next two should match the directories in +# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +# - For Teensies, FAMILY = KINETIS and SERIES is either +# KL2x (LC) or K20x (3.0,3.1,3.2). +# - For Infinity KB, SERIES = K20x +MCU_FAMILY = KINETIS +MCU_SERIES = K20x + +# Linker script to use +# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +# - NOTE: a custom ld script is needed for EEPROM on Teensy LC +# - LDSCRIPT = +# - MKL26Z64 for Teensy LC +# - MK20DX128 for Teensy 3.0 +# - MK20DX256 for Teensy 3.1 and 3.2 +# - MK20DX128BLDR4 for Infinity with Kiibohd bootloader +MCU_LDSCRIPT = MK20DX128BLDR4 + +# Startup code to use +# - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ +# - STARTUP = +# - kl2x for Teensy LC +# - k20x5 for Teensy 3.0 and Infinity KB +# - k20x7 for Teensy 3.1 and 3.2 +MCU_STARTUP = k20x5 + +# Board: it should exist either in /os/hal/boards/ +# or /boards +# - BOARD = +# - PJRC_TEENSY_LC for Teensy LC +# - PJRC_TEENSY_3 for Teensy 3.0 +# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 +# - MCHCK_K20 for Infinity KB +BOARD = MCHCK_K20 + +# Cortex version +# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 +MCU = cortex-m4 + +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +# I.e. 6 for Teensy LC; 7 for Teensy 3.x +ARMV = 7 + +# Vector table for application +# 0x00000000-0x00001000 area is occupied by bootlaoder.*/ +# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB +OPT_DEFS = -DCORTEX_VTOR_INIT=0x00001000 + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration +## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.) +MOUSEKEY_ENABLE ?= yes # Mouse keys +EXTRAKEY_ENABLE ?= yes # Audio control and System control +CONSOLE_ENABLE ?= yes # Console for debug +COMMAND_ENABLE ?= yes # Commands for debug and configuration +SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover +CUSTOM_MATRIX ?= yes # Custom matrix file \ No newline at end of file diff --git a/keyboards/jd45/Makefile b/keyboards/jd45/Makefile index 75d544f16a..4e2a6f00fd 100644 --- a/keyboards/jd45/Makefile +++ b/keyboards/jd45/Makefile @@ -1,71 +1,3 @@ - - -# 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 ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA -BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -MIDI_ENABLE ?= YES # MIDI controls -# UNICODE_ENABLE ?= YES # Unicode -BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/jd45/rules.mk b/keyboards/jd45/rules.mk new file mode 100644 index 0000000000..2f1e266a14 --- /dev/null +++ b/keyboards/jd45/rules.mk @@ -0,0 +1,67 @@ + + +# 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 ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +# NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID \ No newline at end of file diff --git a/keyboards/kc60/Makefile b/keyboards/kc60/Makefile index b00a488b91..4e2a6f00fd 100644 --- a/keyboards/kc60/Makefile +++ b/keyboards/kc60/Makefile @@ -1,76 +1,3 @@ - - -# 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 -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - +endif \ No newline at end of file diff --git a/keyboards/kc60/rules.mk b/keyboards/kc60/rules.mk new file mode 100644 index 0000000000..4efd6f9887 --- /dev/null +++ b/keyboards/kc60/rules.mk @@ -0,0 +1,70 @@ + + +# 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 +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 diff --git a/keyboards/kinesis/Makefile b/keyboards/kinesis/Makefile index ca077e6366..4e2a6f00fd 100644 --- a/keyboards/kinesis/Makefile +++ b/keyboards/kinesis/Makefile @@ -1,79 +1,3 @@ - -## Project specific files - -SRC= matrix.c - -# MCU name -MCU = at90usb1286 -#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=1024 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= no -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output should be port E6, current quantum library hardcodes C6, which we use for programming -CUSTOM_MATRIX=yes # need to do our own thing with the matrix - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - - +endif \ No newline at end of file diff --git a/keyboards/kinesis/rules.mk b/keyboards/kinesis/rules.mk new file mode 100644 index 0000000000..a4a2b7d156 --- /dev/null +++ b/keyboards/kinesis/rules.mk @@ -0,0 +1,73 @@ + +## Project specific files + +SRC= matrix.c + +# MCU name +MCU = at90usb1286 +#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=1024 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output should be port E6, current quantum library hardcodes C6, which we use for programming +CUSTOM_MATRIX=yes # need to do our own thing with the matrix diff --git a/keyboards/lets_split/Makefile b/keyboards/lets_split/Makefile index b9f07636be..4e2a6f00fd 100644 --- a/keyboards/lets_split/Makefile +++ b/keyboards/lets_split/Makefile @@ -1,78 +1,3 @@ -SRC += matrix.c \ - i2c.c \ - split_util.c \ - serial.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 -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= yes # Audio output on port C6 -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend - -CUSTOM_MATRIX = yes - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk new file mode 100644 index 0000000000..6961fbd556 --- /dev/null +++ b/keyboards/lets_split/rules.mk @@ -0,0 +1,74 @@ +SRC += matrix.c \ + i2c.c \ + split_util.c \ + serial.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 +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= yes # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +CUSTOM_MATRIX = yes \ No newline at end of file diff --git a/keyboards/phantom/Makefile b/keyboards/phantom/Makefile index 3a71fd0ee3..4e2a6f00fd 100644 --- a/keyboards/phantom/Makefile +++ b/keyboards/phantom/Makefile @@ -1,74 +1,3 @@ - - -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 +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/phantom/rules.mk b/keyboards/phantom/rules.mk new file mode 100644 index 0000000000..c6b8ca6c35 --- /dev/null +++ b/keyboards/phantom/rules.mk @@ -0,0 +1,69 @@ + + +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 diff --git a/keyboards/planck/Makefile b/keyboards/planck/Makefile index 23944f92ea..7d49c5ef96 100644 --- a/keyboards/planck/Makefile +++ b/keyboards/planck/Makefile @@ -1,74 +1,5 @@ - SUBPROJECT_DEFAULT = rev4 -# 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 -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= no # Audio output on port C6 -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/planck/rules.mk b/keyboards/planck/rules.mk new file mode 100644 index 0000000000..25db53a315 --- /dev/null +++ b/keyboards/planck/rules.mk @@ -0,0 +1,67 @@ +# 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 +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/preonic/Makefile b/keyboards/preonic/Makefile index 08e9205cbf..4e2a6f00fd 100644 --- a/keyboards/preonic/Makefile +++ b/keyboards/preonic/Makefile @@ -1,73 +1,3 @@ - - -# 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 -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= no # Audio output on port C6 -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/preonic/rules.mk b/keyboards/preonic/rules.mk new file mode 100644 index 0000000000..d0f3a3a1c0 --- /dev/null +++ b/keyboards/preonic/rules.mk @@ -0,0 +1,69 @@ + + +# 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 +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/retro_refit/Makefile b/keyboards/retro_refit/Makefile index 2dd8cc5f79..4e2a6f00fd 100644 --- a/keyboards/retro_refit/Makefile +++ b/keyboards/retro_refit/Makefile @@ -1,74 +1,3 @@ - - -# 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=512 - - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -# MIDI_ENABLE ?= YES # MIDI controls -# UNICODE_ENABLE ?= YES # Unicode -# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID - - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - +endif \ No newline at end of file diff --git a/keyboards/retro_refit/rules.mk b/keyboards/retro_refit/rules.mk new file mode 100644 index 0000000000..10fbfa5c9d --- /dev/null +++ b/keyboards/retro_refit/rules.mk @@ -0,0 +1,68 @@ + + +# 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=512 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/s60-x/Makefile b/keyboards/s60-x/Makefile index 8b51d4609f..4e2a6f00fd 100644 --- a/keyboards/s60-x/Makefile +++ b/keyboards/s60-x/Makefile @@ -1,75 +1,3 @@ - - -# 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 -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - - +endif \ No newline at end of file diff --git a/keyboards/s60-x/rules.mk b/keyboards/s60-x/rules.mk new file mode 100644 index 0000000000..7ec93933a9 --- /dev/null +++ b/keyboards/s60-x/rules.mk @@ -0,0 +1,69 @@ + + +# 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 +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 \ No newline at end of file diff --git a/keyboards/satan/Makefile b/keyboards/satan/Makefile index a0879fc9c9..4e2a6f00fd 100644 --- a/keyboards/satan/Makefile +++ b/keyboards/satan/Makefile @@ -1,70 +1,3 @@ - -# 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 ?= no # 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 ?= 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 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/satan/rules.mk b/keyboards/satan/rules.mk new file mode 100644 index 0000000000..1102584d8a --- /dev/null +++ b/keyboards/satan/rules.mk @@ -0,0 +1,66 @@ + +# 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 ?= no # 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 ?= 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 diff --git a/keyboards/sixkeyboard/Makefile b/keyboards/sixkeyboard/Makefile index 6f273064a7..4e2a6f00fd 100644 --- a/keyboards/sixkeyboard/Makefile +++ b/keyboards/sixkeyboard/Makefile @@ -1,75 +1,3 @@ - - -SRC = matrix.c - -# MCU name -#MCU = at90usb1287 -MCU = atmega16u2 - -# 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 ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= no # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= no # Commands for debug and configuration -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= no -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -CUSTOM_MATRIX = yes - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - +endif \ No newline at end of file diff --git a/keyboards/sixkeyboard/rules.mk b/keyboards/sixkeyboard/rules.mk new file mode 100644 index 0000000000..2c99985a97 --- /dev/null +++ b/keyboards/sixkeyboard/rules.mk @@ -0,0 +1,70 @@ + + +SRC = matrix.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega16u2 + +# 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 ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= no # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no # Commands for debug and configuration +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +CUSTOM_MATRIX = yes \ No newline at end of file diff --git a/keyboards/tv44/Makefile b/keyboards/tv44/Makefile index 45ca127807..4e2a6f00fd 100644 --- a/keyboards/tv44/Makefile +++ b/keyboards/tv44/Makefile @@ -1,75 +1,3 @@ - - -# 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 -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= yes # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - - +endif \ No newline at end of file diff --git a/keyboards/tv44/rules.mk b/keyboards/tv44/rules.mk new file mode 100644 index 0000000000..dbba6bace6 --- /dev/null +++ b/keyboards/tv44/rules.mk @@ -0,0 +1,69 @@ + + +# 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 +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= yes # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 -- cgit v1.2.1 From 2dd9c1edcdcc3fc579e6109daf9012f9a82b7435 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 17:48:59 +0300 Subject: Proper parsing of keymaps inside subprojects --- Makefile | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index b2a8735320..028d143930 100644 --- a/Makefile +++ b/Makefile @@ -131,16 +131,32 @@ endef # $1 Subproject define PARSE_SUBPROJECT ifeq ($1,defaultsp) + SUBPROJECT_DEFAULT= $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/Makefile) CURRENT_SP := $$(SUBPROJECT_DEFAULT) else CURRENT_SP := $1 endif - KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) - ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true) - $$(eval $$(call PARSE_ALL_KEYMAPS)) - else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true) - $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) + # If current subproject is empty (the default was not defined), and we have a list of subproject + # then make all + ifeq ($$(CURRENT_SP),) + ifneq ($$(SUBPROJECTS),) + CURRENT_SP := allsp + endif + endif + ifneq ($$(CURRENT_SP),allsp) + KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) + ifneq ($$(CURRENT_SP),) + SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.))) + KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS)) + endif + ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true) + $$(eval $$(call PARSE_ALL_KEYMAPS)) + else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true) + $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) + endif + else + $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS))) endif endef -- cgit v1.2.1 From a6d35000241e20df32b34498a3a9622bde6f0062 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 18:12:45 +0300 Subject: Print error message when trying to build non-existing keymap --- Makefile | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 028d143930..a9a2d98fcb 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,8 @@ ifeq ($(CURRENT_PATH_ELEMENT),keyboards) endif $(info $(ROOT_DIR)/keyboards) -KEYBOARDS := $(notdir $(patsubst %/.,%,$(wildcard $(ROOT_DIR)/keyboards/*/.))) +# Only consider folders with makefiles, to prevent errors in case there are extra folders +KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile))) $(info Keyboard: $(KEYBOARD)) $(info Keymap: $(KEYMAP)) @@ -154,6 +155,13 @@ define PARSE_SUBPROJECT $$(eval $$(call PARSE_ALL_KEYMAPS)) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true) $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) + else + ifeq ($$(CURRENT_SP),) + $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(RULE)'. Stop.) + else + $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(CURRENT_SP)-$$(RULE)'. Stop.) + endif + exit 1 endif else $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS))) -- cgit v1.2.1 From 1ad5578d11b0b4a7288c3fd0748de3a57f4180f2 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 18:15:45 +0300 Subject: Print error when building non-existing keyboard --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index a9a2d98fcb..623e4b064d 100644 --- a/Makefile +++ b/Makefile @@ -104,6 +104,9 @@ define PARSE_RULE $$(eval $$(call PARSE_ALL_KEYBOARDS)) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) + else + $$(info make: *** No rule to make target '$1'. Stop.) + exit 1 endif endef -- cgit v1.2.1 From c83af5451349e6160a2ee220e7b45bb974be5c64 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 18:30:58 +0300 Subject: Support for running from keyboard directory --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 623e4b064d..7180b41476 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) -ROOT_DIR := $(dir, $(ROOT_MAKEFILE)) +ROOT_DIR := $(dir $(ROOT_MAKEFILE)) ifeq ($(ROOT_DIR),) ROOT_DIR := . endif @@ -104,6 +104,8 @@ define PARSE_RULE $$(eval $$(call PARSE_ALL_KEYBOARDS)) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) + else ifneq ($$(KEYBOARD),) + $$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD))) else $$(info make: *** No rule to make target '$1'. Stop.) exit 1 -- cgit v1.2.1 From 051017c3129a17a1f4c610f19067c60bf0a49da9 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 18:38:03 +0300 Subject: Split subproject make files into Makefile and rules.mk --- keyboards/chibios_test/stm32_f072_onekey/Makefile | 42 +---------- keyboards/chibios_test/stm32_f072_onekey/rules.mk | 41 +++++++++++ keyboards/chibios_test/stm32_f103_onekey/Makefile | 53 +------------ keyboards/chibios_test/stm32_f103_onekey/rules.mk | 52 +++++++++++++ keyboards/chibios_test/teensy_lc_onekey/Makefile | 48 +----------- keyboards/chibios_test/teensy_lc_onekey/rules.mk | 49 ++++++++++++ keyboards/clueboard/rev1/Makefile | 6 +- keyboards/clueboard/rev1/rules.mk | 5 ++ keyboards/clueboard/rev2/Makefile | 6 +- keyboards/clueboard/rev2/rules.mk | 5 ++ keyboards/ergodox/ez/Makefile | 77 +------------------ keyboards/ergodox/ez/rules.mk | 76 +++++++++++++++++++ keyboards/ergodox/infinity/Makefile | 78 +------------------- keyboards/ergodox/infinity/rules.mk | 77 +++++++++++++++++++ keyboards/handwired/CMD60/Makefile | 74 +------------------ keyboards/handwired/CMD60/rules.mk | 73 ++++++++++++++++++ keyboards/handwired/fivethirteen/Makefile | 74 +------------------ keyboards/handwired/fivethirteen/rules.mk | 73 ++++++++++++++++++ keyboards/handwired/minorca/Makefile | 70 +----------------- keyboards/handwired/minorca/rules.mk | 67 +++++++++++++++++ keyboards/handwired/onekey/Makefile | 2 +- keyboards/handwired/onekey/rules.mk | 65 ++++++++++++++++ keyboards/handwired/traveller/Makefile | 90 +---------------------- keyboards/handwired/traveller/rules.mk | 89 ++++++++++++++++++++++ keyboards/planck/rev3/Makefile | 4 +- keyboards/planck/rev3/rules.mk | 5 ++ keyboards/planck/rev4/Makefile | 4 +- keyboards/planck/rev4/rules.mk | 5 ++ 28 files changed, 705 insertions(+), 605 deletions(-) create mode 100644 keyboards/chibios_test/stm32_f072_onekey/rules.mk create mode 100644 keyboards/chibios_test/stm32_f103_onekey/rules.mk create mode 100644 keyboards/chibios_test/teensy_lc_onekey/rules.mk create mode 100644 keyboards/clueboard/rev1/rules.mk create mode 100644 keyboards/clueboard/rev2/rules.mk create mode 100644 keyboards/ergodox/ez/rules.mk create mode 100644 keyboards/ergodox/infinity/rules.mk create mode 100644 keyboards/handwired/CMD60/rules.mk create mode 100644 keyboards/handwired/fivethirteen/rules.mk create mode 100644 keyboards/handwired/minorca/rules.mk create mode 100644 keyboards/handwired/onekey/rules.mk create mode 100644 keyboards/handwired/traveller/rules.mk create mode 100644 keyboards/planck/rev3/rules.mk create mode 100644 keyboards/planck/rev4/rules.mk diff --git a/keyboards/chibios_test/stm32_f072_onekey/Makefile b/keyboards/chibios_test/stm32_f072_onekey/Makefile index eae38c4b2b..191c6bb664 100644 --- a/keyboards/chibios_test/stm32_f072_onekey/Makefile +++ b/keyboards/chibios_test/stm32_f072_onekey/Makefile @@ -1,41 +1,3 @@ -# project specific files -SRC = matrix.c \ - led.c - -## chip/board settings -# the next two should match the directories in -# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) -MCU_FAMILY = STM32 -MCU_SERIES = STM32F0xx -# linker script to use -# it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ -# or /ld/ -MCU_LDSCRIPT = STM32F072xB -# startup code to use -# is should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ -MCU_STARTUP = stm32f0xx -# it should exist either in /os/hal/boards/ -# or /boards -BOARD = ST_STM32F072B_DISCOVERY -# Cortex version -# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 -MCU = cortex-m0 -# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 -ARMV = 6 -# If you want to be able to jump to bootloader from firmware on STM32 MCUs, -# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in -# ./bootloader_defs.h or in ./boards//bootloader_defs.h (if you have -# a custom board definition that you plan to reuse). -# If you're not setting it here, leave it commented out. -# It is chip dependent, the correct number can be looked up here (page 175): -# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf -# This also requires a patch to chibios: -# /tmk_core/tool/chibios/ch-bootloader-jump.patch -#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800 - -# Build Options -# comment out to disable the options. -# -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/chibios_test/stm32_f072_onekey/rules.mk b/keyboards/chibios_test/stm32_f072_onekey/rules.mk new file mode 100644 index 0000000000..eae38c4b2b --- /dev/null +++ b/keyboards/chibios_test/stm32_f072_onekey/rules.mk @@ -0,0 +1,41 @@ +# project specific files +SRC = matrix.c \ + led.c + +## chip/board settings +# the next two should match the directories in +# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +MCU_FAMILY = STM32 +MCU_SERIES = STM32F0xx +# linker script to use +# it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +MCU_LDSCRIPT = STM32F072xB +# startup code to use +# is should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ +MCU_STARTUP = stm32f0xx +# it should exist either in /os/hal/boards/ +# or /boards +BOARD = ST_STM32F072B_DISCOVERY +# Cortex version +# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 +MCU = cortex-m0 +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +ARMV = 6 +# If you want to be able to jump to bootloader from firmware on STM32 MCUs, +# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in +# ./bootloader_defs.h or in ./boards//bootloader_defs.h (if you have +# a custom board definition that you plan to reuse). +# If you're not setting it here, leave it commented out. +# It is chip dependent, the correct number can be looked up here (page 175): +# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf +# This also requires a patch to chibios: +# /tmk_core/tool/chibios/ch-bootloader-jump.patch +#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800 + +# Build Options +# comment out to disable the options. +# +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/chibios_test/stm32_f103_onekey/Makefile b/keyboards/chibios_test/stm32_f103_onekey/Makefile index 307ca5b198..191c6bb664 100644 --- a/keyboards/chibios_test/stm32_f103_onekey/Makefile +++ b/keyboards/chibios_test/stm32_f103_onekey/Makefile @@ -1,52 +1,3 @@ -# project specific files -SRC = matrix.c \ - led.c - -# GENERIC STM32F103C8T6 board - stm32duino bootloader -OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000 -MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader -BOARD = GENERIC_STM32_F103 - -# GENERIC STM32F103C8T6 board - no bootloader (programmer over serial or SWD) -# OPT_DEFS = -# MCU_LDSCRIPT = STM32F103x8 -# BOARD = GENERIC_STM32_F103 - -# MAPLE MINI -# OPT_DEFS = -DCORTEX_VTOR_INIT=0x5000 -# MCU_LDSCRIPT = STM32F103xB_maplemini_bootloader -# BOARD = MAPLEMINI_STM32_F103 - -## chip/board settings -# the next two should match the directories in -# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) -MCU_FAMILY = STM32 -MCU_SERIES = STM32F1xx -# linker script to use -# it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ -# or /ld/ -# startup code to use -# is should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ -MCU_STARTUP = stm32f1xx -# it should exist either in /os/hal/boards/ -# or /boards -# Cortex version -# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 -MCU = cortex-m3 -# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 -ARMV = 7 -# If you want to be able to jump to bootloader from firmware on STM32 MCUs, -# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in -# ./bootloader_defs.h or in ./boards//bootloader_defs.h (if you have -# a custom board definition that you plan to reuse). -# If you're not setting it here, leave it commented out. -# It is chip dependent, the correct number can be looked up here (page 175): -# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf -# This also requires a patch to chibios: -# /tmk_core/tool/chibios/ch-bootloader-jump.patch -#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800 - - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/chibios_test/stm32_f103_onekey/rules.mk b/keyboards/chibios_test/stm32_f103_onekey/rules.mk new file mode 100644 index 0000000000..307ca5b198 --- /dev/null +++ b/keyboards/chibios_test/stm32_f103_onekey/rules.mk @@ -0,0 +1,52 @@ +# project specific files +SRC = matrix.c \ + led.c + +# GENERIC STM32F103C8T6 board - stm32duino bootloader +OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000 +MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader +BOARD = GENERIC_STM32_F103 + +# GENERIC STM32F103C8T6 board - no bootloader (programmer over serial or SWD) +# OPT_DEFS = +# MCU_LDSCRIPT = STM32F103x8 +# BOARD = GENERIC_STM32_F103 + +# MAPLE MINI +# OPT_DEFS = -DCORTEX_VTOR_INIT=0x5000 +# MCU_LDSCRIPT = STM32F103xB_maplemini_bootloader +# BOARD = MAPLEMINI_STM32_F103 + +## chip/board settings +# the next two should match the directories in +# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +MCU_FAMILY = STM32 +MCU_SERIES = STM32F1xx +# linker script to use +# it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +# startup code to use +# is should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ +MCU_STARTUP = stm32f1xx +# it should exist either in /os/hal/boards/ +# or /boards +# Cortex version +# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 +MCU = cortex-m3 +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +ARMV = 7 +# If you want to be able to jump to bootloader from firmware on STM32 MCUs, +# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in +# ./bootloader_defs.h or in ./boards//bootloader_defs.h (if you have +# a custom board definition that you plan to reuse). +# If you're not setting it here, leave it commented out. +# It is chip dependent, the correct number can be looked up here (page 175): +# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf +# This also requires a patch to chibios: +# /tmk_core/tool/chibios/ch-bootloader-jump.patch +#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800 + + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/chibios_test/teensy_lc_onekey/Makefile b/keyboards/chibios_test/teensy_lc_onekey/Makefile index 43ea9d82d9..191c6bb664 100644 --- a/keyboards/chibios_test/teensy_lc_onekey/Makefile +++ b/keyboards/chibios_test/teensy_lc_onekey/Makefile @@ -1,49 +1,3 @@ -# project specific files -SRC = matrix.c \ - led.c - -## chip/board settings -# - the next two should match the directories in -# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) -# - For Teensies, FAMILY = KINETIS and SERIES is either -# KL2x (LC) or K20x (3.0,3.1,3.2). -MCU_FAMILY = KINETIS -MCU_SERIES = KL2x - -# Linker script to use -# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ -# or /ld/ -# - NOTE: a custom ld script is needed for EEPROM on Teensy LC -# - LDSCRIPT = -# - MKL26Z64 for Teensy LC -# - MK20DX128 for Teensy 3.0 -# - MK20DX256 for Teensy 3.1 and 3.2 -MCU_LDSCRIPT = MKL26Z64 - -# Startup code to use -# - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ -# - STARTUP = -# - kl2x for Teensy LC -# - k20x5 for Teensy 3.0 -# - k20x7 for Teensy 3.1 and 3.2 -MCU_STARTUP = kl2x - -# Board: it should exist either in /os/hal/boards/ -# or /boards -# - BOARD = -# - PJRC_TEENSY_LC for Teensy LC -# - PJRC_TEENSY_3 for Teensy 3.0 -# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 -BOARD = PJRC_TEENSY_LC - -# Cortex version -# Teensy LC is cortex-m0plus; Teensy 3.x are cortex-m4 -MCU = cortex-m0plus - -# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 -# I.e. 6 for Teensy LC; 7 for Teensy 3.x -ARMV = 6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile endif \ No newline at end of file diff --git a/keyboards/chibios_test/teensy_lc_onekey/rules.mk b/keyboards/chibios_test/teensy_lc_onekey/rules.mk new file mode 100644 index 0000000000..43ea9d82d9 --- /dev/null +++ b/keyboards/chibios_test/teensy_lc_onekey/rules.mk @@ -0,0 +1,49 @@ +# project specific files +SRC = matrix.c \ + led.c + +## chip/board settings +# - the next two should match the directories in +# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +# - For Teensies, FAMILY = KINETIS and SERIES is either +# KL2x (LC) or K20x (3.0,3.1,3.2). +MCU_FAMILY = KINETIS +MCU_SERIES = KL2x + +# Linker script to use +# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +# - NOTE: a custom ld script is needed for EEPROM on Teensy LC +# - LDSCRIPT = +# - MKL26Z64 for Teensy LC +# - MK20DX128 for Teensy 3.0 +# - MK20DX256 for Teensy 3.1 and 3.2 +MCU_LDSCRIPT = MKL26Z64 + +# Startup code to use +# - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ +# - STARTUP = +# - kl2x for Teensy LC +# - k20x5 for Teensy 3.0 +# - k20x7 for Teensy 3.1 and 3.2 +MCU_STARTUP = kl2x + +# Board: it should exist either in /os/hal/boards/ +# or /boards +# - BOARD = +# - PJRC_TEENSY_LC for Teensy LC +# - PJRC_TEENSY_3 for Teensy 3.0 +# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 +BOARD = PJRC_TEENSY_LC + +# Cortex version +# Teensy LC is cortex-m0plus; Teensy 3.x are cortex-m4 +MCU = cortex-m0plus + +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +# I.e. 6 for Teensy LC; 7 for Teensy 3.x +ARMV = 6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/clueboard/rev1/Makefile b/keyboards/clueboard/rev1/Makefile index 80a942d06f..191c6bb664 100644 --- a/keyboards/clueboard/rev1/Makefile +++ b/keyboards/clueboard/rev1/Makefile @@ -1,5 +1,3 @@ -BACKLIGHT_ENABLE = no - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/clueboard/rev1/rules.mk b/keyboards/clueboard/rev1/rules.mk new file mode 100644 index 0000000000..80a942d06f --- /dev/null +++ b/keyboards/clueboard/rev1/rules.mk @@ -0,0 +1,5 @@ +BACKLIGHT_ENABLE = no + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/clueboard/rev2/Makefile b/keyboards/clueboard/rev2/Makefile index cea967b795..191c6bb664 100644 --- a/keyboards/clueboard/rev2/Makefile +++ b/keyboards/clueboard/rev2/Makefile @@ -1,5 +1,3 @@ -BACKLIGHT_ENABLE = yes - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/clueboard/rev2/rules.mk b/keyboards/clueboard/rev2/rules.mk new file mode 100644 index 0000000000..cea967b795 --- /dev/null +++ b/keyboards/clueboard/rev2/rules.mk @@ -0,0 +1,5 @@ +BACKLIGHT_ENABLE = yes + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/ergodox/ez/Makefile b/keyboards/ergodox/ez/Makefile index 37e554b304..191c6bb664 100644 --- a/keyboards/ergodox/ez/Makefile +++ b/keyboards/ergodox/ez/Makefile @@ -1,76 +1,3 @@ -#---------------------------------------------------------------------------- -# On command line: -# -# make = Make software. -# -# make clean = Clean out built project files. -# -# That's pretty much all you need. To compile, always go make clean, -# followed by make. -# -# For advanced users only: -# make teensy = Download the hex file to the device, using teensy_loader_cli. -# (must have teensy_loader_cli installed). -# -#---------------------------------------------------------------------------- - -# # project specific files -SRC = twimaster.c \ - matrix.c - -# MCU name -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=512 - - -# Build Options -# comment out to disable the options. -# - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/ergodox/ez/rules.mk b/keyboards/ergodox/ez/rules.mk new file mode 100644 index 0000000000..37e554b304 --- /dev/null +++ b/keyboards/ergodox/ez/rules.mk @@ -0,0 +1,76 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make = Make software. +# +# make clean = Clean out built project files. +# +# That's pretty much all you need. To compile, always go make clean, +# followed by make. +# +# For advanced users only: +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +#---------------------------------------------------------------------------- + +# # project specific files +SRC = twimaster.c \ + matrix.c + +# MCU name +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=512 + + +# Build Options +# comment out to disable the options. +# + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/ergodox/infinity/Makefile b/keyboards/ergodox/infinity/Makefile index ccb735a485..191c6bb664 100644 --- a/keyboards/ergodox/infinity/Makefile +++ b/keyboards/ergodox/infinity/Makefile @@ -1,77 +1,3 @@ -# project specific files -SRC = matrix.c \ - led.c - -## chip/board settings -# - the next two should match the directories in -# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) -# - For Teensies, FAMILY = KINETIS and SERIES is either -# KL2x (LC) or K20x (3.0,3.1,3.2). -# - For Infinity KB, SERIES = K20x -MCU_FAMILY = KINETIS -MCU_SERIES = K20x - -# Linker script to use -# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ -# or /ld/ -# - NOTE: a custom ld script is needed for EEPROM on Teensy LC -# - LDSCRIPT = -# - MKL26Z64 for Teensy LC -# - MK20DX128 for Teensy 3.0 -# - MK20DX256 for Teensy 3.1 and 3.2 -# - MK20DX128BLDR4 for Infinity 60% with Kiibohd bootloader -# - MK20DX256BLDR8 for Infinity ErgoDox with Kiibohd bootloader -MCU_LDSCRIPT = MK20DX256BLDR8 - -# Startup code to use -# - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ -# - STARTUP = -# - kl2x for Teensy LC -# - k20x5 for Teensy 3.0 and Infinity 60% -# - k20x7 for Teensy 3.1, 3.2 and Infinity ErgoDox -MCU_STARTUP = k20x7 - -# Board: it should exist either in /os/hal/boards/ -# or /boards -# - BOARD = -# - PJRC_TEENSY_LC for Teensy LC -# - PJRC_TEENSY_3 for Teensy 3.0 -# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 -# - MCHCK_K20 for Infinity KB -#BOARD = MCHCK_K20 -BOARD = PJRC_TEENSY_3_1 - -# Cortex version -# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 -MCU = cortex-m4 - -# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 -# I.e. 6 for Teensy LC; 7 for Teensy 3.x -ARMV = 7 - -# Vector table for application -# 0x00000000-0x00001000 area is occupied by bootlaoder.*/ -# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB -OPT_DEFS += -DCORTEX_VTOR_INIT=0x00002000 - -# Build Options -# comment out to disable the options. -# -CUSTOM_MATRIX ?= yes # Custom matrix file -SERIAL_LINK_ENABLE = yes -VISUALIZER_ENABLE ?= no #temporarily disabled to make everything compile -LCD_ENABLE ?= yes -LED_ENABLE ?= yes -LCD_BACKLIGHT_ENABLE ?= yes - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif - -ifdef LCD_ENABLE -include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk -endif - -ifdef LED_ENABLE -include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk -endif +endif \ No newline at end of file diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk new file mode 100644 index 0000000000..ccb735a485 --- /dev/null +++ b/keyboards/ergodox/infinity/rules.mk @@ -0,0 +1,77 @@ +# project specific files +SRC = matrix.c \ + led.c + +## chip/board settings +# - the next two should match the directories in +# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +# - For Teensies, FAMILY = KINETIS and SERIES is either +# KL2x (LC) or K20x (3.0,3.1,3.2). +# - For Infinity KB, SERIES = K20x +MCU_FAMILY = KINETIS +MCU_SERIES = K20x + +# Linker script to use +# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +# - NOTE: a custom ld script is needed for EEPROM on Teensy LC +# - LDSCRIPT = +# - MKL26Z64 for Teensy LC +# - MK20DX128 for Teensy 3.0 +# - MK20DX256 for Teensy 3.1 and 3.2 +# - MK20DX128BLDR4 for Infinity 60% with Kiibohd bootloader +# - MK20DX256BLDR8 for Infinity ErgoDox with Kiibohd bootloader +MCU_LDSCRIPT = MK20DX256BLDR8 + +# Startup code to use +# - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ +# - STARTUP = +# - kl2x for Teensy LC +# - k20x5 for Teensy 3.0 and Infinity 60% +# - k20x7 for Teensy 3.1, 3.2 and Infinity ErgoDox +MCU_STARTUP = k20x7 + +# Board: it should exist either in /os/hal/boards/ +# or /boards +# - BOARD = +# - PJRC_TEENSY_LC for Teensy LC +# - PJRC_TEENSY_3 for Teensy 3.0 +# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 +# - MCHCK_K20 for Infinity KB +#BOARD = MCHCK_K20 +BOARD = PJRC_TEENSY_3_1 + +# Cortex version +# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 +MCU = cortex-m4 + +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +# I.e. 6 for Teensy LC; 7 for Teensy 3.x +ARMV = 7 + +# Vector table for application +# 0x00000000-0x00001000 area is occupied by bootlaoder.*/ +# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB +OPT_DEFS += -DCORTEX_VTOR_INIT=0x00002000 + +# Build Options +# comment out to disable the options. +# +CUSTOM_MATRIX ?= yes # Custom matrix file +SERIAL_LINK_ENABLE = yes +VISUALIZER_ENABLE ?= no #temporarily disabled to make everything compile +LCD_ENABLE ?= yes +LED_ENABLE ?= yes +LCD_BACKLIGHT_ENABLE ?= yes + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + +ifdef LCD_ENABLE +include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk +endif + +ifdef LED_ENABLE +include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk +endif diff --git a/keyboards/handwired/CMD60/Makefile b/keyboards/handwired/CMD60/Makefile index 7117599173..191c6bb664 100644 --- a/keyboards/handwired/CMD60/Makefile +++ b/keyboards/handwired/CMD60/Makefile @@ -1,73 +1,3 @@ - -# MCU name -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=512 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif - - +endif \ No newline at end of file diff --git a/keyboards/handwired/CMD60/rules.mk b/keyboards/handwired/CMD60/rules.mk new file mode 100644 index 0000000000..7117599173 --- /dev/null +++ b/keyboards/handwired/CMD60/rules.mk @@ -0,0 +1,73 @@ + +# MCU name +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=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + + diff --git a/keyboards/handwired/fivethirteen/Makefile b/keyboards/handwired/fivethirteen/Makefile index 7117599173..191c6bb664 100644 --- a/keyboards/handwired/fivethirteen/Makefile +++ b/keyboards/handwired/fivethirteen/Makefile @@ -1,73 +1,3 @@ - -# MCU name -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=512 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif - - +endif \ No newline at end of file diff --git a/keyboards/handwired/fivethirteen/rules.mk b/keyboards/handwired/fivethirteen/rules.mk new file mode 100644 index 0000000000..7117599173 --- /dev/null +++ b/keyboards/handwired/fivethirteen/rules.mk @@ -0,0 +1,73 @@ + +# MCU name +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=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + + diff --git a/keyboards/handwired/minorca/Makefile b/keyboards/handwired/minorca/Makefile index 155c1f9a29..191c6bb664 100644 --- a/keyboards/handwired/minorca/Makefile +++ b/keyboards/handwired/minorca/Makefile @@ -1,71 +1,3 @@ -# 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=512 - -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= no # Audio output on port C6 -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE ?= yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile endif \ No newline at end of file diff --git a/keyboards/handwired/minorca/rules.mk b/keyboards/handwired/minorca/rules.mk new file mode 100644 index 0000000000..c51371a781 --- /dev/null +++ b/keyboards/handwired/minorca/rules.mk @@ -0,0 +1,67 @@ +# 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=512 + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/handwired/onekey/Makefile b/keyboards/handwired/onekey/Makefile index 4e2a6f00fd..191c6bb664 100644 --- a/keyboards/handwired/onekey/Makefile +++ b/keyboards/handwired/onekey/Makefile @@ -1,3 +1,3 @@ ifndef MAKEFILE_INCLUDED - include ../../Makefile + include ../../../Makefile endif \ No newline at end of file diff --git a/keyboards/handwired/onekey/rules.mk b/keyboards/handwired/onekey/rules.mk new file mode 100644 index 0000000000..c6d10856a1 --- /dev/null +++ b/keyboards/handwired/onekey/rules.mk @@ -0,0 +1,65 @@ + + +# MCU name +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 ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/traveller/Makefile b/keyboards/handwired/traveller/Makefile index 12a4b71f4e..191c6bb664 100644 --- a/keyboards/handwired/traveller/Makefile +++ b/keyboards/handwired/traveller/Makefile @@ -1,89 +1,3 @@ - -#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 - -# for avr upload -USB ?= /dev/cu.usbmodem1421 -# -# 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) - - -ifdef TEENSY2 - OPT_DEFS += -DATREUS_TEENSY2 - ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex -else - OPT_DEFS += -DATREUS_ASTAR - OPT_DEFS += -DCATERINA_BOOTLOADER - ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ - avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) -endif -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# MCU name - -# 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 -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 -RGBLIGHT_ENABLE = yes - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif - -upload: build - $(ATREUS_UPLOAD_COMMAND) - +endif \ No newline at end of file diff --git a/keyboards/handwired/traveller/rules.mk b/keyboards/handwired/traveller/rules.mk new file mode 100644 index 0000000000..12a4b71f4e --- /dev/null +++ b/keyboards/handwired/traveller/rules.mk @@ -0,0 +1,89 @@ + +#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 + +# for avr upload +USB ?= /dev/cu.usbmodem1421 +# +# 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) + + +ifdef TEENSY2 + OPT_DEFS += -DATREUS_TEENSY2 + ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex +else + OPT_DEFS += -DATREUS_ASTAR + OPT_DEFS += -DCATERINA_BOOTLOADER + ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ + avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) +endif +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# MCU name + +# 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 +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 +RGBLIGHT_ENABLE = yes + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + +upload: build + $(ATREUS_UPLOAD_COMMAND) + diff --git a/keyboards/planck/rev3/Makefile b/keyboards/planck/rev3/Makefile index 3ed1445e43..191c6bb664 100644 --- a/keyboards/planck/rev3/Makefile +++ b/keyboards/planck/rev3/Makefile @@ -1,5 +1,3 @@ -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile endif \ No newline at end of file diff --git a/keyboards/planck/rev3/rules.mk b/keyboards/planck/rev3/rules.mk new file mode 100644 index 0000000000..3ed1445e43 --- /dev/null +++ b/keyboards/planck/rev3/rules.mk @@ -0,0 +1,5 @@ +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/planck/rev4/Makefile b/keyboards/planck/rev4/Makefile index ed09f85a4d..191c6bb664 100644 --- a/keyboards/planck/rev4/Makefile +++ b/keyboards/planck/rev4/Makefile @@ -1,5 +1,3 @@ -AUDIO_ENABLE ?= yes # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../../Makefile endif \ No newline at end of file diff --git a/keyboards/planck/rev4/rules.mk b/keyboards/planck/rev4/rules.mk new file mode 100644 index 0000000000..ed09f85a4d --- /dev/null +++ b/keyboards/planck/rev4/rules.mk @@ -0,0 +1,5 @@ +AUDIO_ENABLE ?= yes # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file -- cgit v1.2.1 From 4f20061f6619f632c28518979d17a51674a3f2c9 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 18:44:57 +0300 Subject: Proper handling for running make from a subproject or keymap dir --- Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Makefile b/Makefile index 7180b41476..a14642af6c 100644 --- a/Makefile +++ b/Makefile @@ -105,6 +105,15 @@ define PARSE_RULE else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) else ifneq ($$(KEYBOARD),) + # If there's no match in the beginning, then use the working directory instead + # First add the keymap to the commandline if we are in a keymap subdirectory + ifneq ($$(KEYMAP),) + RULE := $$(KEYMAP)-$$(RULE) + endif + # If we are in a subproject subdirectory add the subproject + ifneq ($$(SUBPROJECT),) + RULE := $$(SUBPROJECT)-$$(RULE) + endif $$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD))) else $$(info make: *** No rule to make target '$1'. Stop.) -- cgit v1.2.1 From 459ddaceda252a7d8614c43f17cd4c8c14712d5f Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 18:54:12 +0300 Subject: Add backwards compability with makefile variables --- Makefile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Makefile b/Makefile index a14642af6c..cf0a12f695 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,20 @@ $(info $(ROOT_DIR)/keyboards) # Only consider folders with makefiles, to prevent errors in case there are extra folders KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile))) +#Compability with the old make variables +ifdef keyboard + KEYBOARD := $(keyboard) +endif +ifdef sub + SUBPROJECT := $(sub) +endif +ifdef subproject + SUBPROJECT := $(subproject) +endif +ifdef keymap + KEYMAP := $(keymap) +endif + $(info Keyboard: $(KEYBOARD)) $(info Keymap: $(KEYMAP)) $(info Subproject: $(SUBPROJECT)) -- cgit v1.2.1 From 3fa6625869b1bc1a2050a7e5edc6228a926536fc Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 19:16:44 +0300 Subject: Proper default goals when inside keyboard fodlers --- Makefile | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index cf0a12f695..38bead90a5 100644 --- a/Makefile +++ b/Makefile @@ -61,6 +61,18 @@ $(info Keymap: $(KEYMAP)) $(info Subproject: $(SUBPROJECT)) $(info Keyboards: $(KEYBOARDS)) +ifneq ($(KEYMAP),) + ifeq ($(SUBPROJECT),) + .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP) + else + .DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-$(KEYMAP) + endif +else ifneq ($(SUBPROJECT),) + .DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-allkm +else ifneq ($(KEYBOARD),) + .DEFAULT_GOAL := $(KEYBOARD)-allsp-allkm +endif + # Compare the start of the RULE_VARIABLE with the first argument($1) # If the rules equals $1 or starts with $1-, RULE_FOUND is set to true @@ -114,9 +126,11 @@ endef define PARSE_RULE RULE := $1 COMMANDS := + $$(info $$(RULE)) ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true) $$(eval $$(call PARSE_ALL_KEYBOARDS)) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) + $$(info $$(MATCHED_ITEM)) $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) else ifneq ($$(KEYBOARD),) # If there's no match in the beginning, then use the working directory instead @@ -222,12 +236,13 @@ RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); $(eval $(call PARSE_RULE,$@)) $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) + +.PHONY: all +all: + echo "Compiling" + .PHONY: all-keyboards all-keyboards: allkb .PHONY: all-keyboards-defaults all-keyboards-defaults: allkb-default-default - -.PHONY: all -all: - echo "Compiling" \ No newline at end of file -- cgit v1.2.1 From a04bb3a3bae456a0744cf2f6dde326d9a24ebcee Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 19:22:21 +0300 Subject: Fixed the shortcut targets --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 38bead90a5..d59da0b635 100644 --- a/Makefile +++ b/Makefile @@ -61,6 +61,7 @@ $(info Keymap: $(KEYMAP)) $(info Subproject: $(SUBPROJECT)) $(info Keyboards: $(KEYBOARDS)) +.DEFAULT_GOAL := all ifneq ($(KEYMAP),) ifeq ($(SUBPROJECT),) .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP) @@ -238,11 +239,10 @@ RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); .PHONY: all -all: - echo "Compiling" +all: all-keyboards .PHONY: all-keyboards -all-keyboards: allkb +all-keyboards: allkb-allsp-allkm .PHONY: all-keyboards-defaults -all-keyboards-defaults: allkb-default-default +all-keyboards-defaults: allkb-allsp-default -- cgit v1.2.1 From 0dd629a990e1546614dfa2b430489571c2550f7a Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 21:28:14 +0300 Subject: Fix running make from various subfolders --- Makefile | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index d59da0b635..a02fa24a2b 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,6 @@ ifeq ($(CURRENT_PATH_ELEMENT),keyboards) endif endif -$(info $(ROOT_DIR)/keyboards) # Only consider folders with makefiles, to prevent errors in case there are extra folders KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile))) @@ -127,22 +126,11 @@ endef define PARSE_RULE RULE := $1 COMMANDS := - $$(info $$(RULE)) ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true) $$(eval $$(call PARSE_ALL_KEYBOARDS)) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) - $$(info $$(MATCHED_ITEM)) $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) else ifneq ($$(KEYBOARD),) - # If there's no match in the beginning, then use the working directory instead - # First add the keymap to the commandline if we are in a keymap subdirectory - ifneq ($$(KEYMAP),) - RULE := $$(KEYMAP)-$$(RULE) - endif - # If we are in a subproject subdirectory add the subproject - ifneq ($$(SUBPROJECT),) - RULE := $$(SUBPROJECT)-$$(RULE) - endif $$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD))) else $$(info make: *** No rule to make target '$1'. Stop.) @@ -161,6 +149,8 @@ define PARSE_KEYBOARD $$(eval $$(call PARSE_SUBPROJECT,defaultsp)) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true) $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM))) + else ifneq ($$(SUBPROJECT),) + $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT))) else # If there's no matching subproject, we assume it's the default # This will allow you to leave the subproject part of the target out @@ -194,10 +184,14 @@ define PARSE_SUBPROJECT SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.))) KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS)) endif - ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true) + ifeq ($$(RULE),) + $$(eval $$(call PARSE_ALL_KEYMAPS)) + else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true) $$(eval $$(call PARSE_ALL_KEYMAPS)) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true) $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) + else ifneq ($$(KEYMAP),) + $$(eval $$(call PARSE_KEYMAP,$$(KEYMAP))) else ifeq ($$(CURRENT_SP),) $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(RULE)'. Stop.) @@ -232,12 +226,16 @@ endef RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); +# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps +SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) +.PHONY: $(SUBPROJECTS) +$(SUBPROJECTS): %: %-allkm + .PHONY: % %: $(eval $(call PARSE_RULE,$@)) $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) - .PHONY: all all: all-keyboards -- cgit v1.2.1 From db5c3b74fb6541879bfad9930d2a659b1d89cd83 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 8 Aug 2016 01:16:06 +0300 Subject: Add color output --- Makefile | 33 ++++++++++++++++++++++++++++++--- message.mk | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 message.mk diff --git a/Makefile b/Makefile index a02fa24a2b..e5becd7ad7 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,7 @@ +ifndef VERBOSE +.SILENT: +endif + STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) ROOT_DIR := $(dir $(ROOT_MAKEFILE)) @@ -216,15 +220,37 @@ endef # $1 Keymap define PARSE_KEYMAP CURRENT_KM = $1 - COMMANDS += KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) - COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) := Keyboard $$(CURRENT_KB), Subproject $$(CURRENT_SP), Keymap $$(CURRENT_KM) + COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) + COMMANDS += $$(COMMAND) + ifeq ($$(CURRENT_SP),) + KB_SP := $(CURRENT_KB) + else + KB_SP := $(CURRENT_KB)/$$(CURRENT_SP) + endif + KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) + COMMAND_$$(COMMAND) := \ + printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ + $(AWK) '{ printf "%-118s", $$$$0;}'; \ + LOG=$$$$(echo "$$(MAKE) -c $(ROOT_DIR) -f build_keyboard.mk VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true" 2>&1) ; \ + if [ $$$$? -gt 0 ]; \ + then $$(PRINT_ERROR_PLAIN); \ + elif [ "$$$$LOG" != "" ] ; \ + then $$(PRINT_WARNING_PLAIN); \ + else \ + $$(PRINT_OK); \ + fi; endef define PARSE_ALL_KEYMAPS $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) endef -RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); +include $(ROOT_DIR)/message.mk + +#RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); +RUN_COMMAND = \ +$(COMMAND_$(COMMAND)) +#LOG=$$(echo $(COMMAND) VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \ # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) @@ -244,3 +270,4 @@ all-keyboards: allkb-allsp-allkm .PHONY: all-keyboards-defaults all-keyboards-defaults: allkb-allsp-default + diff --git a/message.mk b/message.mk new file mode 100644 index 0000000000..2ebf76a58c --- /dev/null +++ b/message.mk @@ -0,0 +1,35 @@ +COLOR ?= true + +ifeq ($(COLOR),true) + NO_COLOR=\033[0m + OK_COLOR=\033[32;01m + ERROR_COLOR=\033[31;01m + WARN_COLOR=\033[33;01m + BLUE=\033[0;34m + BOLD=\033[1m +endif + +ifneq ($(shell awk --version 2>/dev/null),) + AWK=awk +else + AWK=cat && test +endif + +OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n +ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n +WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n + +ifndef $(SILENT) + SILENT = false +endif + +TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' +TAB_LOG_PLAIN = printf "$$LOG\n" +AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' +AWK_CMD = $(AWK) '{ printf "%-99s", $$0; }' +PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && exit 1 +PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) +PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && exit 1 +PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) +PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) +BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; \ No newline at end of file -- cgit v1.2.1 From 67b294ca66fd9da341ab93019a380d91ac589c96 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 8 Aug 2016 10:26:23 +0300 Subject: Actual compilation --- Makefile | 26 +++++---- build_keyboard.mk | 171 ++++++++++++++---------------------------------------- message.mk | 3 +- 3 files changed, 59 insertions(+), 141 deletions(-) diff --git a/Makefile b/Makefile index e5becd7ad7..fc61572094 100644 --- a/Makefile +++ b/Makefile @@ -228,17 +228,19 @@ define PARSE_KEYMAP KB_SP := $(CURRENT_KB)/$$(CURRENT_SP) endif KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) + MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) + MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=false COMMAND_$$(COMMAND) := \ - printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ - $(AWK) '{ printf "%-118s", $$$$0;}'; \ - LOG=$$$$(echo "$$(MAKE) -c $(ROOT_DIR) -f build_keyboard.mk VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true" 2>&1) ; \ - if [ $$$$? -gt 0 ]; \ - then $$(PRINT_ERROR_PLAIN); \ - elif [ "$$$$LOG" != "" ] ; \ - then $$(PRINT_WARNING_PLAIN); \ - else \ - $$(PRINT_OK); \ - fi; + printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ + $(AWK) '{ printf "%-118s", $$$$0;}'; \ + LOG=$$$$($$(MAKE) -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_VARS) 2>&1) ; \ + if [ $$$$? -gt 0 ]; \ + then $$(PRINT_ERROR_PLAIN); \ + elif [ "$$$$LOG" != "" ] ; \ + then $$(PRINT_WARNING_PLAIN); \ + else \ + $$(PRINT_OK); \ + fi; endef define PARSE_ALL_KEYMAPS @@ -258,9 +260,11 @@ SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) $(SUBPROJECTS): %: %-allkm .PHONY: % -%: +%: + cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; $(eval $(call PARSE_RULE,$@)) $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) + .PHONY: all all: all-keyboards diff --git a/build_keyboard.mk b/build_keyboard.mk index 053c8532af..b0cb22e6ac 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -4,44 +4,9 @@ endif .DEFAULT_GOAL := all -space := $(subst ,, ) -ESCAPED_ABS_PATH = $(subst $(space),_SPACE_,$(abspath $1)) -starting_makefile := $(call ESCAPED_ABS_PATH,$(firstword $(MAKEFILE_LIST))) -mkfile_path := $(call ESCAPED_ABS_PATH,$(lastword $(MAKEFILE_LIST)))) -abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path))) - -ifneq (,$(findstring /keyboards/,$(starting_makefile))) - possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(abs_tmk_root)/keyboards/%,%,$(starting_makefile)))) - ifneq (,$(findstring /keymaps/,$(possible_keyboard))) - KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard))) - KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard))) - ifneq (,$(findstring /,$(KEYBOARD_DIR))) - # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) - # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) - tmk_root = ../../.. - else - tmk_root = ../../../.. - endif - else - KEYMAP_DIR:=default - KEYBOARD_DIR:=$(possible_keyboard) - ifneq (,$(findstring /,$(KEYBOARD_DIR))) - # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) - # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) - tmk_root = ../../.. - else - tmk_root = ../.. - endif - endif -else - tmk_root = . -endif -# $(info $(KEYBOARD_DIR)) -# $(info $(KEYMAP_DIR)) -# $(info $(SUBPROJECT_DIR)) # Directory common source filess exist -TOP_DIR = $(tmk_root) +TOP_DIR = . TMK_DIR = tmk_core TMK_PATH = $(TOP_DIR)/$(TMK_DIR) LIB_PATH = $(TOP_DIR)/lib @@ -50,92 +15,49 @@ QUANTUM_DIR = quantum QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) -ifdef keyboard - KEYBOARD ?= $(keyboard) -endif -ifdef KEYBOARD_DIR - KEYBOARD ?= $(KEYBOARD_DIR) -endif -ifndef KEYBOARD - KEYBOARD=planck -endif - MASTER ?= left ifdef master MASTER = $(master) endif +KEYBOARD_PATH := keyboards/$(KEYBOARD) +KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c -# converts things to keyboards/subproject -ifneq (,$(findstring /,$(KEYBOARD))) - TEMP:=$(KEYBOARD) - KEYBOARD:=$(firstword $(subst /, ,$(TEMP))) - SUBPROJECT:=$(lastword $(subst /, ,$(TEMP))) -endif - -KEYBOARD_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD) - -ifdef sub - SUBPROJECT=$(sub) -endif -ifdef subproject - SUBPROJECT=$(subproject) -endif - -ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","") - KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c - ifneq ($(call ESCAPED_ABS_PATH,$(KEYBOARD_PATH)/Makefile),$(starting_makefile)) - -include $(KEYBOARD_PATH)/Makefile - endif +ifneq ("$(wildcard $(KEYBOARD_C))","") + include $(KEYBOARD_PATH)/rules.mk else -$(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist) -endif - -ifdef SUBPROJECT_DEFAULT - SUBPROJECT?=$(SUBPROJECT_DEFAULT) -endif - -ifdef SUBPROJECT - SUBPROJECT_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT) - ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") - OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) - SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c - ifneq ($(call ESCAPED_ABS_PATH,$(SUBPROJECT_PATH)/Makefile),$(starting_makefile)) - -include $(SUBPROJECT_PATH)/Makefile - endif - else -$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) - endif -endif - -ifdef keymap - KEYMAP ?= $(keymap) -endif -ifdef KEYMAP_DIR - KEYMAP ?= $(KEYMAP_DIR) -endif -ifndef KEYMAP - KEYMAP = default -endif -KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP) -ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","") - KEYMAP_FILE = keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c - ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) - -include $(KEYMAP_PATH)/Makefile - endif -else - ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/keymap.c)","") -$(error "$(KEYMAP_PATH)/keymap.c" does not exist) - else - KEYMAP_PATH = $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) - KEYMAP_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/keymap.c - ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) - -include $(KEYMAP_PATH)/Makefile - endif - endif + $(error "$(KEYBOARD_C)" does not exist) +endif + + +ifneq ($(SUBPROJECT),) + SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT) + SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c + ifneq ("$(wildcard $(SUBPROJECT_C))","") + OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) + include $(SUBPROJECT_PATH)/rules.mk + else + $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) + endif +endif + +MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) +MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c +SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) +SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c +ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","") + -include $(SUBPROJ_KEYMAP_PATH)/Makefile + KEYMAP_C := $(SUBPROJ_KEYMAP_C) + KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH) +else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","") + -include $(MAIN_KEYMAP_PATH)/Makefile + KEYMAP_C := $(MAIN_KEYMAP_C) + KEYMAP_PATH := $(MAIN_KEYMAP_PATH) +else + $(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist) endif -ifdef SUBPROJECT +ifneq ($(SUBPROJECT),) TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) else TARGET ?= $(KEYBOARD)_$(KEYMAP) @@ -149,36 +71,27 @@ BUILD_DIR = $(TOP_DIR)/.build OBJDIR = $(BUILD_DIR)/obj_$(TARGET) - ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") CONFIG_H = $(KEYMAP_PATH)/config.h else CONFIG_H = $(KEYBOARD_PATH)/config.h - ifdef SUBPROJECT - ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") + ifneq ($(SUBPROJECT),) + ifneq ("$(wildcard $(SUBPROJECT_C))","") CONFIG_H = $(SUBPROJECT_PATH)/config.h endif endif endif # # project specific files -SRC += $(KEYBOARD_FILE) \ - $(KEYMAP_FILE) \ +SRC += $(KEYBOARD_C) \ + $(KEYMAP_C) \ $(QUANTUM_DIR)/quantum.c \ $(QUANTUM_DIR)/keymap_common.c \ $(QUANTUM_DIR)/keycode_config.c \ $(QUANTUM_DIR)/process_keycode/process_leader.c -ifdef SUBPROJECT - SRC += $(SUBPROJECT_FILE) -endif - -ifdef SUBPROJECT - SRC += $(SUBPROJECT_FILE) -endif - -ifdef SUBPROJECT - SRC += $(SUBPROJECT_FILE) +ifneq ($(SUBPROJECT),) + SRC += $(SUBPROJECT_C) endif ifndef CUSTOM_MATRIX @@ -229,7 +142,7 @@ endif # Search Path VPATH += $(KEYMAP_PATH) -ifdef SUBPROJECT +ifneq ($(SUBPROJECT),) VPATH += $(SUBPROJECT_PATH) endif VPATH += $(KEYBOARD_PATH) diff --git a/message.mk b/message.mk index 2ebf76a58c..08a4e02ab6 100644 --- a/message.mk +++ b/message.mk @@ -32,4 +32,5 @@ PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && exit 1 PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) -BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; \ No newline at end of file +BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; +MSG_NO_CMP = $(ERROR_COLOR)Error:$(NO_COLOR)$(BOLD) cmp command not found, please install diffutils\n$(NO_COLOR) \ No newline at end of file -- cgit v1.2.1 From cc2df445ab3b0fd3998de7861b1c9ba0ad64aa8a Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 8 Aug 2016 11:06:47 +0300 Subject: Remove unneded code from tmk_core/rules.mk --- build_keyboard.mk | 4 ++- tmk_core/rules.mk | 91 ++----------------------------------------------------- 2 files changed, 5 insertions(+), 90 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index b0cb22e6ac..7493c13285 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -4,6 +4,8 @@ endif .DEFAULT_GOAL := all +include message.mk + # Directory common source filess exist TOP_DIR = . @@ -68,7 +70,7 @@ BUILD_DIR = $(TOP_DIR)/.build # Object files directory # To put object files in current directory, use a dot (.), do NOT make # this an empty or blank macro! -OBJDIR = $(BUILD_DIR)/obj_$(TARGET) +OBJDIR := $(BUILD_DIR)/obj_$(TARGET) ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index d2350f27c1..9aa4ac8cf8 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -34,43 +34,8 @@ FORMAT = ihex # (Note: 3 is not always the best optimization level. See avr-libc FAQ.) OPT = s -COLOR ?= true - -ifeq ($(COLOR),true) - NO_COLOR=\033[0m - OK_COLOR=\033[32;01m - ERROR_COLOR=\033[31;01m - WARN_COLOR=\033[33;01m - BLUE=\033[0;34m - BOLD=\033[1m -endif - AUTOGEN ?= false -ifneq ($(shell awk --version 2>/dev/null),) - AWK=awk -else - AWK=cat && test -endif - -OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n -ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n -WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n - -ifndef $(SILENT) - SILENT = false -endif - -TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' -TAB_LOG_PLAIN = printf "$$LOG\n" -AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' -AWK_CMD = $(AWK) '{ printf "%-99s", $$0; }' -PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && exit 1 -PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) -PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && exit 1 -PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) -PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) -BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; # List any extra directories to look for include files here. # Each directory must be seperated by a space. @@ -432,6 +397,7 @@ DEPS = $(patsubst %.o,%.d,$(OBJ)) .PRECIOUS: $(DEPS) # Empty rule to force recompilation if the .d file is missing $(DEPS): + # Since the object files could be in two different folders, generate # separate rules for them, rather than having too generic rules @@ -464,57 +430,6 @@ show_path: @echo VPATH=$(VPATH) @echo SRC=$(SRC) -SUBDIRS := $(filter-out %/util/ %/doc/ %/keymaps/ %/old_keymap_files/,$(dir $(wildcard $(TOP_DIR)/keyboards/**/*/Makefile))) -SUBDIRS := $(SUBDIRS) $(dir $(wildcard $(TOP_DIR)/keyboards/*/.)) -SUBDIRS := $(sort $(SUBDIRS)) -# $(error $(SUBDIRS)) -all-keyboards-defaults-%: - @for x in $(SUBDIRS) ; do \ - printf "Compiling with default: $$x" | $(AWK_CMD); \ - LOG=$$($(MAKE) -C $$x $(subst all-keyboards-defaults-,,$@) VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \ - done - -all-keyboards-defaults: all-keyboards-defaults-all - -KEYBOARDS := $(SUBDIRS:$(TOP_DIR)/keyboards/%/=/keyboards/%) -all-keyboards-all: $(addsuffix -all,$(KEYBOARDS)) -all-keyboards-clean: $(addsuffix -clean,$(KEYBOARDS)) -all-keyboards: all-keyboards-all - -define make_keyboard -$(eval KEYBOARD=$(patsubst /keyboards/%,%,$1)) -$(eval SUBPROJECT=$(lastword $(subst /, ,$(KEYBOARD)))) -$(eval KEYBOARD=$(firstword $(subst /, ,$(KEYBOARD)))) -$(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/keymaps/*/.)))) -$(eval KEYMAPS+=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/*/.)))) -@for x in $(KEYMAPS) ; do \ - printf "Compiling $(BOLD)$(KEYBOARD)/$(SUBPROJECT)$(NO_COLOR) with $(BOLD)$$x$(NO_COLOR)" | $(AWK) '{ printf "%-118s", $$0; }'; \ - LOG=$$($(MAKE) -C $(TOP_DIR)$1 $2 keymap=$$x VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \ -done -endef - -define make_keyboard_helper -# Just remove the -all and so on from the first argument and pass it forward -$(call make_keyboard,$(subst -$2,,$1),$2) -endef - -/keyboards/%-all: - $(call make_keyboard_helper,$@,all) -/keyboards/%-clean: - $(call make_keyboard_helper,$@,clean) -/keyboards/%: - $(call make_keyboard_helper,$@,all) - -all-keymaps-%: - $(eval MAKECONFIG=$(call get_target,all-keymaps,$@)) - $(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/keymaps/*/.)))) - @for x in $(KEYMAPS) ; do \ - printf "Compiling $(BOLD)$(KEYBOARD)$(NO_COLOR) with $(BOLD)$$x$(NO_COLOR)" | $(AWK) '{ printf "%-118s", $$0; }'; \ - LOG=$$($(MAKE) $(subst all-keymaps-,,$@) keyboard=$(KEYBOARD) keymap=$$x VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \ - done - -all-keymaps: all-keymaps-all - # Create build directory $(shell mkdir $(BUILD_DIR) 2>/dev/null) @@ -530,6 +445,4 @@ $(shell mkdir $(KBOBJDIR) 2>/dev/null) .PHONY : all finish sizebefore sizeafter gccversion \ build elf hex eep lss sym coff extcoff check_submodule \ clean clean_list debug gdb-config show_path \ -program teensy dfu flip dfu-ee flip-ee dfu-start \ -all-keyboards-defaults all-keyboards all-keymaps \ -all-keyboards-defaults-% all-keyboards-% all-keymaps-% +program teensy dfu flip dfu-ee flip-ee dfu-start \ No newline at end of file -- cgit v1.2.1 From 60c6e79ecb032e9726809a295ab3e0011e6b2fb4 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 8 Aug 2016 11:19:29 +0300 Subject: Move git submodule check and version generation to main Makefile --- Makefile | 12 ++++++++++++ build_keyboard.mk | 5 ----- tmk_core/rules.mk | 13 ++----------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index fc61572094..caa8f2de1c 100644 --- a/Makefile +++ b/Makefile @@ -262,6 +262,13 @@ $(SUBPROJECTS): %: %-allkm .PHONY: % %: cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; + git submodule status --recursive 2>/dev/null | \ + while IFS= read -r x; do \ + case "$$x" in \ + \ *) ;; \ + *) printf "$(MSG_SUBMODULE_DIRTY)";break;; \ + esac \ + done $(eval $(call PARSE_RULE,$@)) $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) @@ -275,3 +282,8 @@ all-keyboards: allkb-allsp-allkm .PHONY: all-keyboards-defaults all-keyboards-defaults: allkb-allsp-default + +GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") +BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") +$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h) +$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) \ No newline at end of file diff --git a/build_keyboard.mk b/build_keyboard.mk index 7493c13285..7d284cfa7b 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -183,9 +183,4 @@ endif include $(TMK_PATH)/rules.mk -GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") -BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" - -$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h) -$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h) \ No newline at end of file diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 9aa4ac8cf8..e8e3de5719 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -267,15 +267,6 @@ sym: $(BUILD_DIR)/$(TARGET).sym LIBNAME=lib$(TARGET).a lib: $(LIBNAME) -check_submodule: - git submodule status --recursive | \ - while IFS= read -r x; do \ - case "$$x" in \ - \ *) ;; \ - *) printf "$(MSG_SUBMODULE_DIRTY)";break;; \ - esac \ - done - # Display size of file. HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex #ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf @@ -337,7 +328,7 @@ gccversion : $(eval CMD=$(AR) $@ $(OBJ) ) @$(BUILD_CMD) -BEGIN = gccversion check_submodule sizebefore +BEGIN = gccversion sizebefore # Link: create ELF output file from object files. .SECONDARY : $(BUILD_DIR)/$(TARGET).elf @@ -443,6 +434,6 @@ $(shell mkdir $(KBOBJDIR) 2>/dev/null) # Listing of phony targets. .PHONY : all finish sizebefore sizeafter gccversion \ -build elf hex eep lss sym coff extcoff check_submodule \ +build elf hex eep lss sym coff extcoff \ clean clean_list debug gdb-config show_path \ program teensy dfu flip dfu-ee flip-ee dfu-start \ No newline at end of file -- cgit v1.2.1 From dd8c1a7659fec4fe3211682864fc4c50d4a61f85 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 8 Aug 2016 11:27:15 +0300 Subject: Don't add VERSION as a define To avoid full recompilation when the git commit hash changes. --- tmk_core/common.mk | 3 --- tmk_core/common/command.c | 3 ++- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index aa05b9491d..21b894e2be 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -106,9 +106,6 @@ $(error MASTER does not have a valid value(left/right)) endif -# Version string -OPT_DEFS += -DVERSION=$(GIT_VERSION) - # Bootloader address ifdef STM32_BOOTLOADER_ADDRESS OPT_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index 084c9fe155..476fc6fe3c 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -34,6 +34,7 @@ along with this program. If not, see . #include "command.h" #include "backlight.h" #include "quantum.h" +#include "version.h" #ifdef MOUSEKEY_ENABLE #include "mousekey.h" @@ -180,7 +181,7 @@ static void print_version(void) print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") " "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") " "VER: " STR(DEVICE_VER) "\n"); - print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n"); + print("BUILD: " STR(QMK_VERSION) " (" __TIME__ " " __DATE__ ")\n"); /* build options */ print("OPTIONS:" -- cgit v1.2.1 From 881bde8258e077500a99fd670633e79ecd074832 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Tue, 9 Aug 2016 08:30:21 +0300 Subject: Fix running make in parallel --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index caa8f2de1c..b39e9dded1 100644 --- a/Makefile +++ b/Makefile @@ -270,7 +270,7 @@ $(SUBPROJECTS): %: %-allkm esac \ done $(eval $(call PARSE_RULE,$@)) - $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) + +$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) .PHONY: all -- cgit v1.2.1 From e4c842de02d95e98f65c7bb4a8406ec6df4944fe Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Tue, 9 Aug 2016 08:31:04 +0300 Subject: Don't run builtin rules for submake To speed up the compilation --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b39e9dded1..9b534e897b 100644 --- a/Makefile +++ b/Makefile @@ -233,7 +233,7 @@ define PARSE_KEYMAP COMMAND_$$(COMMAND) := \ printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ $(AWK) '{ printf "%-118s", $$$$0;}'; \ - LOG=$$$$($$(MAKE) -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_VARS) 2>&1) ; \ + LOG=$$$$($$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_VARS) 2>&1) ; \ if [ $$$$? -gt 0 ]; \ then $$(PRINT_ERROR_PLAIN); \ elif [ "$$$$LOG" != "" ] ; \ -- cgit v1.2.1 From 8732265928818dd0b8797fb271e7c7fa9346d025 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Tue, 9 Aug 2016 09:52:01 +0300 Subject: Options for silent compilation A single keyboard is always by default compiled in verbose mode. While multiple keyboards are compiled in silent mode. This can be overriden by the silent variable from the command line --- Makefile | 50 ++++++++++++++++++++++++++++++++++++++------------ message.mk | 4 ---- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 9b534e897b..3d4bd589f3 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,16 @@ ifndef VERBOSE .SILENT: endif +ifdef silent + SILENT = $(silent) +endif + +ifdef SILENT + SUB_IS_SILENT := $(silent) +endif + +override SILENT = false + STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) ROOT_DIR := $(dir $(ROOT_MAKEFILE)) @@ -59,10 +69,10 @@ ifdef keymap KEYMAP := $(keymap) endif -$(info Keyboard: $(KEYBOARD)) -$(info Keymap: $(KEYMAP)) -$(info Subproject: $(SUBPROJECT)) -$(info Keyboards: $(KEYBOARDS)) +#$(info Keyboard: $(KEYBOARD)) +#$(info Keymap: $(KEYMAP)) +#$(info Subproject: $(SUBPROJECT)) +#$(info Keyboards: $(KEYBOARDS)) .DEFAULT_GOAL := all ifneq ($(KEYMAP),) @@ -229,11 +239,14 @@ define PARSE_KEYMAP endif KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) - MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=false - COMMAND_$$(COMMAND) := \ - printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ - $(AWK) '{ printf "%-118s", $$$$0;}'; \ - LOG=$$$$($$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_VARS) 2>&1) ; \ + MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) + MAKE_COMMAND := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk + MAKE_MSG := Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR) + MAKE_MSG_FORMAT := $(AWK) '{ printf "%-118s", $$$$0;}' + COMMAND_true_$$(COMMAND) := \ + printf "$$(MAKE_MSG)" | \ + $$(MAKE_MSG_FORMAT); \ + LOG=$$$$($$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=true 2>&1) ; \ if [ $$$$? -gt 0 ]; \ then $$(PRINT_ERROR_PLAIN); \ elif [ "$$$$LOG" != "" ] ; \ @@ -241,18 +254,30 @@ define PARSE_KEYMAP else \ $$(PRINT_OK); \ fi; + COMMAND_false_$$(COMMAND) := \ + printf "$$(MAKE_MSG)\n" | \ + $$(MAKE_MSG_FORMAT); \ + $$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=false; endef define PARSE_ALL_KEYMAPS $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) endef +define SET_SILENT_MODE + ifdef SUB_IS_SILENT + SILENT_MODE := $(SUB_IS_SILENT) + else ifeq ($$(words $$(COMMANDS)),1) + SILENT_MODE := false + else + SILENT_MODE := true + endif +endef + include $(ROOT_DIR)/message.mk -#RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); RUN_COMMAND = \ -$(COMMAND_$(COMMAND)) -#LOG=$$(echo $(COMMAND) VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \ +$(COMMAND_$(SILENT_MODE)_$(COMMAND)) # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) @@ -270,6 +295,7 @@ $(SUBPROJECTS): %: %-allkm esac \ done $(eval $(call PARSE_RULE,$@)) + $(eval $(call SET_SILENT_MODE)) +$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) diff --git a/message.mk b/message.mk index 08a4e02ab6..aefb46de84 100644 --- a/message.mk +++ b/message.mk @@ -19,10 +19,6 @@ OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n -ifndef $(SILENT) - SILENT = false -endif - TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' TAB_LOG_PLAIN = printf "$$LOG\n" AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' -- cgit v1.2.1 From d924eb591ebcfb603f8941763de9616ce4b1554c Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 11 Aug 2016 09:34:23 +0300 Subject: Fix variable name clash with builtin This caused the submake to be called several times, messing up the build. --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 3d4bd589f3..319684c83e 100644 --- a/Makefile +++ b/Makefile @@ -240,13 +240,13 @@ define PARSE_KEYMAP KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) - MAKE_COMMAND := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk + MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk MAKE_MSG := Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR) MAKE_MSG_FORMAT := $(AWK) '{ printf "%-118s", $$$$0;}' COMMAND_true_$$(COMMAND) := \ printf "$$(MAKE_MSG)" | \ $$(MAKE_MSG_FORMAT); \ - LOG=$$$$($$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=true 2>&1) ; \ + LOG=$$$$($$(MAKE_CMD) $$(MAKE_VARS) SILENT=true 2>&1) ; \ if [ $$$$? -gt 0 ]; \ then $$(PRINT_ERROR_PLAIN); \ elif [ "$$$$LOG" != "" ] ; \ @@ -257,7 +257,7 @@ define PARSE_KEYMAP COMMAND_false_$$(COMMAND) := \ printf "$$(MAKE_MSG)\n" | \ $$(MAKE_MSG_FORMAT); \ - $$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=false; + $$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; endef define PARSE_ALL_KEYMAPS -- cgit v1.2.1 From 87bf34a5d341c3a2381f57c19fcb94c21c8d0122 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 14 Aug 2016 12:25:23 +0300 Subject: Pass the target to submake --- Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 319684c83e..ed89b07337 100644 --- a/Makefile +++ b/Makefile @@ -230,6 +230,9 @@ endef # $1 Keymap define PARSE_KEYMAP CURRENT_KM = $1 + # The rest of the rule is the target + # Remove the leading "-" from the target, as it acts as a separator + MAKE_TARGET := $$(patsubst -%,%,$$(RULE)) COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) COMMANDS += $$(COMMAND) ifeq ($$(CURRENT_SP),) @@ -240,8 +243,11 @@ define PARSE_KEYMAP KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) - MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk - MAKE_MSG := Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR) + MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET) + MAKE_MSG := Making $$(KB_SP) with keymap $(BOLD)$$(CURRENT_KM)$(NO_COLOR) + ifneq ($$(MAKE_TARGET),) + MAKE_MSG += and target $(BOLD)$$(MAKE_TARGET)$(NO_COLOR) + endif MAKE_MSG_FORMAT := $(AWK) '{ printf "%-118s", $$$$0;}' COMMAND_true_$$(COMMAND) := \ printf "$$(MAKE_MSG)" | \ -- cgit v1.2.1 From 3aac4e95c91be3244d68f27159c2667904c8fddd Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 15 Aug 2016 08:20:16 +0300 Subject: More general system for generating several outputs --- build_keyboard.mk | 44 +++++++++++------- message.mk | 29 +++++++++++- tmk_core/chibios.mk | 4 +- tmk_core/rules.mk | 125 +++++++++++++++++----------------------------------- 4 files changed, 98 insertions(+), 104 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index 7d284cfa7b..d10412ea57 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -43,6 +43,9 @@ ifneq ($(SUBPROJECT),) endif endif +# Save the defs here, so we don't include any keymap specific ones +PROJECT_DEFS := $(OPT_DEFS) + MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) @@ -59,18 +62,33 @@ else $(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist) endif +BUILD_DIR = $(TOP_DIR)/.build + ifneq ($(SUBPROJECT),) TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) + KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT) else TARGET ?= $(KEYBOARD)_$(KEYMAP) + KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD) endif -BUILD_DIR = $(TOP_DIR)/.build +# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA +ifdef MCU_FAMILY + PLATFORM=CHIBIOS +else + PLATFORM=AVR +endif + +ifeq ($(PLATFORM),CHIBIOS) + include $(TMK_PATH)/protocol/chibios.mk + include $(TMK_PATH)/chibios.mk + OPT_OS = chibios +endif # Object files directory # To put object files in current directory, use a dot (.), do NOT make # this an empty or blank macro! -OBJDIR := $(BUILD_DIR)/obj_$(TARGET) +KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") @@ -156,23 +174,10 @@ VPATH += $(QUANTUM_PATH)/audio VPATH += $(QUANTUM_PATH)/process_keycode -# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA -ifdef MCU_FAMILY - PLATFORM=CHIBIOS -else - PLATFORM=AVR -endif - include $(TMK_PATH)/common.mk ifeq ($(PLATFORM),AVR) include $(TMK_PATH)/protocol/lufa.mk include $(TMK_PATH)/avr.mk -else ifeq ($(PLATFORM),CHIBIOS) - include $(TMK_PATH)/protocol/chibios.mk - include $(TMK_PATH)/chibios.mk - OPT_OS = chibios -else - $(error Unknown platform) endif ifeq ($(strip $(VISUALIZER_ENABLE)), yes) @@ -181,6 +186,13 @@ ifeq ($(strip $(VISUALIZER_ENABLE)), yes) include $(VISUALIZER_PATH)/visualizer.mk endif + +OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) +$(KEYMAP_OUTPUT)_SRC := $(SRC) +$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" +$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) +$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) + + include $(TMK_PATH)/rules.mk -OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" diff --git a/message.mk b/message.mk index aefb46de84..6abc782152 100644 --- a/message.mk +++ b/message.mk @@ -29,4 +29,31 @@ PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $ PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; -MSG_NO_CMP = $(ERROR_COLOR)Error:$(NO_COLOR)$(BOLD) cmp command not found, please install diffutils\n$(NO_COLOR) \ No newline at end of file +MSG_NO_CMP = $(ERROR_COLOR)Error:$(NO_COLOR)$(BOLD) cmp command not found, please install diffutils\n$(NO_COLOR) + +# Define Messages +# English +MSG_ERRORS_NONE = Errors: none +MSG_BEGIN = -------- begin -------- +MSG_END = -------- end -------- +MSG_SIZE_BEFORE = Size before: +MSG_SIZE_AFTER = Size after: +MSG_COFF = Converting to AVR COFF: +MSG_EXTENDED_COFF = Converting to AVR Extended COFF: +MSG_FLASH = Creating load file for Flash: +MSG_EEPROM = Creating load file for EEPROM: +MSG_BIN = Creating binary load file for Flash: +MSG_EXTENDED_LISTING = Creating Extended Listing: +MSG_SYMBOL_TABLE = Creating Symbol Table: +MSG_LINKING = Linking: +MSG_COMPILING = Compiling: +MSG_COMPILING_CPP = Compiling: +MSG_ASSEMBLING = Assembling: +MSG_CLEANING = Cleaning project: +MSG_CREATING_LIBRARY = Creating library: +MSG_SUBMODULE_DIRTY = $(WARN_COLOR)WARNING:$(NO_COLOR)\n \ + Some git sub-modules are out of date or modified, please consider runnning:$(BOLD)\n\ + git submodule sync --recursive\n\ + git submodule update --init --recursive$(NO_COLOR)\n\n\ + You can ignore this warning if you are not compiling any ChibiOS keyboards,\n\ + or if you have modified the ChibiOS libraries yourself. \n\n \ No newline at end of file diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index cb67ac6f25..b05d59ee89 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -89,9 +89,9 @@ CHIBISRC = $(STARTUPSRC) \ $(STARTUPASM) \ $(PORTASM) \ $(OSALASM) - -SRC += $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC)) +CHIBISRC := $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC)) + EXTRAINCDIRS += $(CHIBIOS)/os/license \ $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \ $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \ diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index e8e3de5719..9f6d8d9dfd 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -25,6 +25,18 @@ vpath %.hpp $(VPATH_SRC) vpath %.S $(VPATH_SRC) VPATH := +# Convert all SRC to OBJ +define OBJ_FROM_SRC +$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC)))) +endef +$(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT)))) + +# Define a list of all objects +OBJ := $(foreach OUTPUT,$(OUTPUTS),$($(OUTPUT)_OBJ)) + +MASTER_OUTPUT := $(firstword $(OUTPUTS)) + + # Output format. (can be srec, ihex, binary) FORMAT = ihex @@ -53,17 +65,18 @@ CSTANDARD = -std=gnu99 # Place -D or -U options here for C sources -CDEFS += $(OPT_DEFS) +#CDEFS += # Place -D or -U options here for ASM sources -ADEFS += $(OPT_DEFS) +#ADEFS += # Place -D or -U options here for C++ sources #CPPDEFS += -D__STDC_LIMIT_MACROS #CPPDEFS += -D__STDC_CONSTANT_MACROS -CPPDEFS += $(OPT_DEFS) +#CPPDEFS += + @@ -134,7 +147,8 @@ endif # files -- see avr-libc docs [FIXME: not yet described there] # -listing-cont-lines: Sets the maximum number of continuation lines of hex # dump that will be displayed for a given single line of source input. -ASFLAGS += $(ADEFS) -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 +ASFLAGS += $(ADEFS) +ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) ifdef CONFIG_H ASFLAGS += -include $(CONFIG_H) @@ -193,48 +207,6 @@ COPY = cp WINSHELL = cmd SECHO = $(SILENT) || echo -# Define Messages -# English -MSG_ERRORS_NONE = Errors: none -MSG_BEGIN = -------- begin -------- -MSG_END = -------- end -------- -MSG_SIZE_BEFORE = Size before: -MSG_SIZE_AFTER = Size after: -MSG_COFF = Converting to AVR COFF: -MSG_EXTENDED_COFF = Converting to AVR Extended COFF: -MSG_FLASH = Creating load file for Flash: -MSG_EEPROM = Creating load file for EEPROM: -MSG_BIN = Creating binary load file for Flash: -MSG_EXTENDED_LISTING = Creating Extended Listing: -MSG_SYMBOL_TABLE = Creating Symbol Table: -MSG_LINKING = Linking: -MSG_COMPILING = Compiling: -MSG_COMPILING_CPP = Compiling: -MSG_ASSEMBLING = Assembling: -MSG_CLEANING = Cleaning project: -MSG_CREATING_LIBRARY = Creating library: -MSG_SUBMODULE_DIRTY = $(WARN_COLOR)WARNING:$(NO_COLOR)\n \ - Some git sub-modules are out of date or modified, please consider runnning:$(BOLD)\n\ - git submodule sync --recursive\n\ - git submodule update --init --recursive$(NO_COLOR)\n\n\ - You can ignore this warning if you are not compiling any ChibiOS keyboards,\n\ - or if you have modified the ChibiOS libraries yourself. \n\n - - -# Define all object files. -OBJ = $(patsubst %.c,$(OBJDIR)/%.o,$(patsubst %.cpp,$(OBJDIR)/%.o,$(patsubst %.S,$(OBJDIR)/%.o,$(SRC)))) -# The files in the lib folder are shared between all keymaps, so generate that folder name by removing -# the keymap from the name -KBOBJDIR=$(subst _$(KEYMAP),,$(OBJDIR)) -# And fixup the object files to match -LIBOBJ = $(foreach v,$(OBJ),$(if $(findstring /lib/,$v),$v)) -NONLIBOBJ := $(filter-out $(LIBOBJ),$(OBJ)) -LIBOBJ := $(subst _$(KEYMAP)/,/,$(LIBOBJ)) -OBJ := $(LIBOBJ) $(NONLIBOBJ) - -# Define all listing files. -LST = $(patsubst %.c,$(OBJDIR)/%.lst,$(patsubst %.cpp,$(OBJDIR)/%.lst,$(patsubst %.S,$(OBJDIR)/%.lst,$(SRC)))) - # Compiler flags to generate dependency files. #GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d @@ -320,68 +292,66 @@ gccversion : $(eval CMD=$(BIN) $< $@ || exit 0) @$(BUILD_CMD) -# Create library from object files. -.SECONDARY : $(BUILD_DIR)/$(TARGET).a -.PRECIOUS : $(OBJ) -%.a: $(OBJ) - @$(SILENT) || printf "$(MSG_CREATING_LIBRARY) $@" | $(AWK_CMD) - $(eval CMD=$(AR) $@ $(OBJ) ) - @$(BUILD_CMD) - BEGIN = gccversion sizebefore # Link: create ELF output file from object files. .SECONDARY : $(BUILD_DIR)/$(TARGET).elf .PRECIOUS : $(OBJ) # Note the obj.txt depeendency is there to force linking if a source file is deleted -%.elf: $(OBJ) $(OBJDIR)/cflags.txt $(OBJDIR)/ldflags.txt $(OBJDIR)/obj.txt | $(BEGIN) +%.elf: $(OBJ) $(MASTER_OUTPUT)/cflags.txt $(MASTER_OUTPUT)/ldflags.txt $(MASTER_OUTPUT)/obj.txt | $(BEGIN) @$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) $(eval CMD=$(CC) $(ALL_CFLAGS) $(filter-out %.txt,$^) --output $@ $(LDFLAGS)) @$(BUILD_CMD) + define GEN_OBJRULE +$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) +$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) +$1_ASFLAGS= $$(ALL_ASFLAGS) $$($1_DEFS) + # Compile: create object files from C source files. $1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN) @mkdir -p $$(@D) @$$(SILENT) || printf "$$(MSG_COMPILING) $$<" | $$(AWK_CMD) - $$(eval CMD=$$(CC) -c $$(ALL_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) + $$(eval CMD := $$(CC) -c $$($1_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) @$$(BUILD_CMD) # Compile: create object files from C++ source files. $1/%.o : %.cpp $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN) @mkdir -p $$(@D) @$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) - $$(eval CMD=$$(CC) -c $$(ALL_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) + $$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) @$(BUILD_CMD) # Assemble: create object files from assembler source files. $1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN) @mkdir -p $$(@D) @$(SILENT) || printf "$$(MSG_ASSEMBLING) $$<" | $$(AWK_CMD) - $$(eval CMD=$$(CC) -c $$(ALL_ASFLAGS) $$< -o $$@) + $$(eval CMD=$$(CC) -c $$($1_ASFLAGS) $$< -o $$@) @$$(BUILD_CMD) $1/force: $1/cflags.txt: $1/force - echo '$$(ALL_CFLAGS)' | cmp -s - $$@ || echo '$$(ALL_CFLAGS)' > $$@ + echo '$$($1_CFLAGS)' | cmp -s - $$@ || echo '$$($1_CFLAGS)' > $$@ $1/cppflags.txt: $1/force - echo '$$(ALL_CPPFLAGS)' | cmp -s - $$@ || echo '$$(ALL_CPPFLAGS)' > $$@ + echo '$$($1_CPPFLAGS)' | cmp -s - $$@ || echo '$$($1_CPPFLAGS)' > $$@ $1/asflags.txt: $1/force - echo '$$(ALL_ASFLAGS)' | cmp -s - $$@ || echo '$$(ALL_ASFLAGS)' > $$@ - -$1/ldflags.txt: $1/force - echo '$$(LDFLAGS)' | cmp -s - $$@ || echo '$$(LDFLAGS)' > $$@ - -$1/obj.txt: $1/force - echo '$$(OBJ)' | cmp -s - $$@ || echo '$$(OBJ)' > $$@ + echo '$$($1_ASFLAGS)' | cmp -s - $$@ || echo '$$($1_ASFLAGS)' > $$@ $1/compiler.txt: $1/force $$(CC) --version | cmp -s - $$@ || $$(CC) --version > $$@ endef +$(MASTER_OUTPUT)/obj.txt: $(MASTER_OUTPUT)/force + echo '$(OBJ)' | cmp -s - $$@ || echo '$(OBJ)' > $$@ + +$(MASTER_OUTPUT)/ldflags.txt: $(MASTER_OUTPUT)/force + echo '$(LDFLAGS)' | cmp -s - $$@ || echo '$(LDFLAGS)' > $$@ + + # We have to use static rules for the .d files for some reason DEPS = $(patsubst %.o,%.d,$(OBJ)) # Keep the .d files @@ -390,22 +360,7 @@ DEPS = $(patsubst %.o,%.d,$(OBJ)) $(DEPS): -# Since the object files could be in two different folders, generate -# separate rules for them, rather than having too generic rules -$(eval $(call GEN_OBJRULE,$(OBJDIR))) -$(eval $(call GEN_OBJRULE,$(KBOBJDIR))) - -# Compile: create assembler files from C source files. -%.s : %.c | $(BEGIN) - @$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) - $(eval CMD=$(CC) -S $(ALL_CFLAGS) $< -o $@) - @$(BUILD_CMD) - -# Compile: create assembler files from C++ source files. -%.s : %.cpp | $(BEGIN) - @$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) - $(eval CMD=$(CC) -S $(ALL_CPPFLAGS) $< -o $@) - @$(BUILD_CMD) +$(foreach OUTPUT,$(OUTPUTS),$(eval $(call GEN_OBJRULE,$(OUTPUT)))) # Create preprocessed source for use in sending a bug report. %.i : %.c | $(BEGIN) @@ -420,13 +375,13 @@ clean: show_path: @echo VPATH=$(VPATH) @echo SRC=$(SRC) + @echo OBJ=$(OBJ) # Create build directory $(shell mkdir $(BUILD_DIR) 2>/dev/null) # Create object files directory -$(shell mkdir $(OBJDIR) 2>/dev/null) -$(shell mkdir $(KBOBJDIR) 2>/dev/null) +$(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir $(OUTPUT) 2>/dev/null))) # Include the dependency files. -include $(patsubst %.o,%.d,$(OBJ)) -- cgit v1.2.1 From 33fbd3be36bf58c6a02fb6b4ae99dc5bca7c8e58 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 15 Aug 2016 08:45:36 +0300 Subject: Output specific include paths --- build_keyboard.mk | 31 +++++++++++++++++-------------- tmk_core/rules.mk | 18 +++++------------- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index d10412ea57..0debc49259 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -43,8 +43,22 @@ ifneq ($(SUBPROJECT),) endif endif -# Save the defs here, so we don't include any keymap specific ones +# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA +ifdef MCU_FAMILY + PLATFORM=CHIBIOS +else + PLATFORM=AVR +endif + +ifeq ($(PLATFORM),CHIBIOS) + include $(TMK_PATH)/protocol/chibios.mk + include $(TMK_PATH)/chibios.mk + OPT_OS = chibios +endif + +# Save the defines and includes here, so we don't include any keymap specific ones PROJECT_DEFS := $(OPT_DEFS) +PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH) MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c @@ -72,19 +86,6 @@ else KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD) endif -# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA -ifdef MCU_FAMILY - PLATFORM=CHIBIOS -else - PLATFORM=AVR -endif - -ifeq ($(PLATFORM),CHIBIOS) - include $(TMK_PATH)/protocol/chibios.mk - include $(TMK_PATH)/chibios.mk - OPT_OS = chibios -endif - # Object files directory # To put object files in current directory, use a dot (.), do NOT make # this an empty or blank macro! @@ -190,8 +191,10 @@ endif OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) $(KEYMAP_OUTPUT)_SRC := $(SRC) $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" +$(KEYMAP_OUTPUT)_INC := $(EXTRAINCDIRS) $(VPATH) $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) +$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) include $(TMK_PATH)/rules.mk diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 9f6d8d9dfd..7b2c842ed6 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -49,13 +49,6 @@ OPT = s AUTOGEN ?= false -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRAINCDIRS += $(subst :, ,$(VPATH_SRC)) - - # Compiler flag to set the C Standard level. # c89 = "ANSI" C # gnu89 = c89 plus GCC extensions @@ -104,7 +97,6 @@ CFLAGS += -Wstrict-prototypes #CFLAGS += -Wunreachable-code #CFLAGS += -Wsign-compare CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) CFLAGS += $(CSTANDARD) ifdef CONFIG_H CFLAGS += -include $(CONFIG_H) @@ -131,7 +123,6 @@ CPPFLAGS += -Wundef #CPPFLAGS += -Wunreachable-code #CPPFLAGS += -Wsign-compare CPPFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) -CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) #CPPFLAGS += $(CSTANDARD) ifdef CONFIG_H CPPFLAGS += -include $(CONFIG_H) @@ -149,7 +140,6 @@ endif # dump that will be displayed for a given single line of source input. ASFLAGS += $(ADEFS) ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) ifdef CONFIG_H ASFLAGS += -include $(CONFIG_H) endif @@ -305,9 +295,11 @@ BEGIN = gccversion sizebefore define GEN_OBJRULE -$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) -$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) -$1_ASFLAGS= $$(ALL_ASFLAGS) $$($1_DEFS) +$1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC)) +$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) +$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) +$1_ASFLAGS= $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS) +$$(info $$($1_INCFLAGS)) # Compile: create object files from C source files. $1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN) -- cgit v1.2.1 From 9028a412eaf95e37e98a9f2e4573653ec70d7e18 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 15 Aug 2016 08:58:05 +0300 Subject: Add output specific config file --- build_keyboard.mk | 17 ++++++++++------- tmk_core/rules.mk | 20 ++++++-------------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index 0debc49259..a6b578efbc 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -56,9 +56,17 @@ ifeq ($(PLATFORM),CHIBIOS) OPT_OS = chibios endif +CONFIG_H = $(KEYBOARD_PATH)/config.h +ifneq ($(SUBPROJECT),) + ifneq ("$(wildcard $(SUBPROJECT_C))","") + CONFIG_H = $(SUBPROJECT_PATH)/config.h + endif +endif + # Save the defines and includes here, so we don't include any keymap specific ones PROJECT_DEFS := $(OPT_DEFS) PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH) +PROJECT_CONFIG := $(CONFIG_H) MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c @@ -94,13 +102,6 @@ KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") CONFIG_H = $(KEYMAP_PATH)/config.h -else - CONFIG_H = $(KEYBOARD_PATH)/config.h - ifneq ($(SUBPROJECT),) - ifneq ("$(wildcard $(SUBPROJECT_C))","") - CONFIG_H = $(SUBPROJECT_PATH)/config.h - endif - endif endif # # project specific files @@ -192,9 +193,11 @@ OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) $(KEYMAP_OUTPUT)_SRC := $(SRC) $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" $(KEYMAP_OUTPUT)_INC := $(EXTRAINCDIRS) $(VPATH) +$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) +$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) include $(TMK_PATH)/rules.mk diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 7b2c842ed6..977a2d0e53 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -98,9 +98,6 @@ CFLAGS += -Wstrict-prototypes #CFLAGS += -Wsign-compare CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) CFLAGS += $(CSTANDARD) -ifdef CONFIG_H - CFLAGS += -include $(CONFIG_H) -endif #---------------- Compiler Options C++ ---------------- @@ -124,10 +121,6 @@ CPPFLAGS += -Wundef #CPPFLAGS += -Wsign-compare CPPFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) #CPPFLAGS += $(CSTANDARD) -ifdef CONFIG_H - CPPFLAGS += -include $(CONFIG_H) -endif - #---------------- Assembler Options ---------------- # -Wa,...: tell GCC to pass this to the assembler. @@ -140,9 +133,6 @@ endif # dump that will be displayed for a given single line of source input. ASFLAGS += $(ADEFS) ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 -ifdef CONFIG_H - ASFLAGS += -include $(CONFIG_H) -endif #---------------- Library Options ---------------- # Minimalistic printf version @@ -296,10 +286,12 @@ BEGIN = gccversion sizebefore define GEN_OBJRULE $1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC)) -$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) -$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) -$1_ASFLAGS= $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS) -$$(info $$($1_INCFLAGS)) +ifdef $1_CONFIG +$1_CONFIG_FLAGS += -include $$($1_CONFIG) +endif +$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) +$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) +$1_ASFLAGS= $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) # Compile: create object files from C source files. $1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN) -- cgit v1.2.1 From 3442e216dcec3ce6c8ba1c755b0d647a7f384f01 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 15 Aug 2016 09:07:32 +0300 Subject: Move bootloader_defs include to build_keyboard Also fix it for subprojects --- build_keyboard.mk | 9 +++++++++ tmk_core/chibios.mk | 8 -------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index a6b578efbc..e8d8f3572b 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -54,6 +54,15 @@ ifeq ($(PLATFORM),CHIBIOS) include $(TMK_PATH)/protocol/chibios.mk include $(TMK_PATH)/chibios.mk OPT_OS = chibios + ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","") + OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h + else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h + else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h + else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h + endif endif CONFIG_H = $(KEYBOARD_PATH)/config.h diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index b05d59ee89..062a712bd1 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -143,14 +143,6 @@ MCUFLAGS = -mcpu=$(MCU) DEBUG = gdb -# Define ASM defines here -# bootloader definitions may be used in the startup .s file -ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h -endif - # List any extra directories to look for libraries here. EXTRALIBDIRS = $(RULESPATH)/ld -- cgit v1.2.1 From 03e31ef8b9752220d092a1950030cf7942e002eb Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Tue, 16 Aug 2016 08:42:08 +0300 Subject: Continue on error --- Makefile | 6 +++++- message.mk | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index ed89b07337..f80d4e99c8 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,8 @@ endif override SILENT = false +ON_ERROR := error_occured=1 + STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) ROOT_DIR := $(dir $(ROOT_MAKEFILE)) @@ -302,7 +304,9 @@ $(SUBPROJECTS): %: %-allkm done $(eval $(call PARSE_RULE,$@)) $(eval $(call SET_SILENT_MODE)) - +$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) + +error_occured=0; \ + $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \ + if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi .PHONY: all diff --git a/message.mk b/message.mk index 6abc782152..f8fd387121 100644 --- a/message.mk +++ b/message.mk @@ -15,6 +15,8 @@ else AWK=cat && test endif +ON_ERROR ?= exit 1 + OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n @@ -23,9 +25,9 @@ TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' TAB_LOG_PLAIN = printf "$$LOG\n" AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' AWK_CMD = $(AWK) '{ printf "%-99s", $$0; }' -PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && exit 1 +PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && $(ON_ERROR) PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) -PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && exit 1 +PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && $(ON_ERROR) PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; @@ -34,6 +36,7 @@ MSG_NO_CMP = $(ERROR_COLOR)Error:$(NO_COLOR)$(BOLD) cmp command not found, pleas # Define Messages # English MSG_ERRORS_NONE = Errors: none +MSG_ERRORS = $(ERROR_COLOR)Make finished with errors\n$(NO_COLOR) MSG_BEGIN = -------- begin -------- MSG_END = -------- end -------- MSG_SIZE_BEFORE = Size before: -- cgit v1.2.1 From f29730da36cb2e036c5878327f567532d2533ff1 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Tue, 16 Aug 2016 08:57:10 +0300 Subject: Better format for non-silent output --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index f80d4e99c8..9ca73b4ad7 100644 --- a/Makefile +++ b/Makefile @@ -263,8 +263,7 @@ define PARSE_KEYMAP $$(PRINT_OK); \ fi; COMMAND_false_$$(COMMAND) := \ - printf "$$(MAKE_MSG)\n" | \ - $$(MAKE_MSG_FORMAT); \ + printf "$$(MAKE_MSG)\n\n"; \ $$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; endef -- cgit v1.2.1 From ab4d7adbb96fa034fd20364247d615f527661594 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Fri, 19 Aug 2016 09:06:28 +0300 Subject: Fix the template for the Makefile/rules.mk split --- quantum/template/Makefile | 76 ++--------------------------------------------- quantum/template/rules.mk | 67 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 74 deletions(-) create mode 100644 quantum/template/rules.mk diff --git a/quantum/template/Makefile b/quantum/template/Makefile index 3f6d133c9b..4e2a6f00fd 100644 --- a/quantum/template/Makefile +++ b/quantum/template/Makefile @@ -1,75 +1,3 @@ - - -# 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=512 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - - +endif \ No newline at end of file diff --git a/quantum/template/rules.mk b/quantum/template/rules.mk new file mode 100644 index 0000000000..55898147dd --- /dev/null +++ b/quantum/template/rules.mk @@ -0,0 +1,67 @@ +# 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=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 -- cgit v1.2.1 From e1243339ca4dd0629ef7ae6a38b0852aa709620b Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Fri, 19 Aug 2016 09:37:39 +0300 Subject: Add diffutils to travis.yml and install_dependencies It has been required for a while now, and now actually checked in the makefiles. Before, if you didn't have it installed it would just recompile everything. The readme hasn't been updated to reflect this, I think we need to go through that separately, and see what's really needed. Or just instruct people to run the batch scripts. --- .travis.yml | 1 + util/install_dependencies.sh | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 297cf19a68..138a2c5532 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,4 +21,5 @@ addons: - gcc-arm-none-eabi - binutils-arm-none-eabi - libnewlib-arm-none-eabi + - diffutils after_success: bash util/travis_compiled_push.sh diff --git a/util/install_dependencies.sh b/util/install_dependencies.sh index 24564a2ac5..49ac86e072 100644 --- a/util/install_dependencies.sh +++ b/util/install_dependencies.sh @@ -20,7 +20,8 @@ if [[ -n "$(type -P pacman )" ]]; then arm-none-eabi-gcc \ arm-none-eabi-binutils \ arm-none-eabi-newlib \ - git + git \ + diffutils elif [[ -n "$(type -P apt-get)" ]]; then # Debian and derivatives @@ -47,7 +48,8 @@ elif [[ -n "$(type -P apt-get)" ]]; then gcc-arm-none-eabi \ binutils-arm-none-eabi \ libnewlib-arm-none-eabi \ - git + git \ + diffutils elif [[ -n "$(type -P yum)" ]]; then # Fedora, CentOS or RHEL and derivatives @@ -69,7 +71,8 @@ elif [[ -n "$(type -P yum)" ]]; then gcc-arm-none-eabi \ binutils-arm-none-eabi \ libnewlib-arm-none-eabi \ - git + git \ + diffutils # The listed eabi pacackes do unfortunately not exist for CentOS, # But at least in Fedora they do, so try to install them anyway # TODO: Build them from sources, if the installation fails @@ -85,7 +88,8 @@ elif [[ -n "$(type -P zypper)" ]]; then patch \ wget \ dfu-programmer \ - git + git \ + diffutils # TODO: The avr and eabi tools are not available as default packages, so we need # another way to install them -- cgit v1.2.1 From b4c75569b0bc2f3ba9a7766ab64ff504fad3836e Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 20 Aug 2016 02:42:38 +0300 Subject: Update readme with new instructions for make --- readme.md | 102 +++++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 81 insertions(+), 21 deletions(-) diff --git a/readme.md b/readme.md index 37f140839d..c66efadca5 100644 --- a/readme.md +++ b/readme.md @@ -110,43 +110,103 @@ In every keymap folder, the following files are recommended: ## The `make` command -The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). You can run `make` from the root (`/`), your keyboard folder (`/keyboards//`), or your keymap folder (`/keyboards//keymaps//`) if you have a `Makefile` there (see the example [here](/doc/keymap_makefile_example.mk)). +The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). -By default, this will generate a `_.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. +**NOTE:** To abort a make command press `Ctrl-c` -Below are some definitions that will be useful: +The following instruction refers to these folders. -* The "root" (`/`) folder is the qmk_firmware folder, in which are `doc`, `keyboard`, `quantum`, etc. -* The "keyboard" folder is any keyboard project's folder, like `/keyboards/planck`. -* The "keymap" folder is any keymap's folder, like `/keyboards/planck/keymaps/default`. +* The `root` (`/`) folder is the qmk_firmware folder, in which are `doc`, `keyboard`, `quantum`, etc. +* The `keyboard` folder is any keyboard project's folder, like `/keyboards/planck`. +* The `keymap` folder is any keymap's folder, like `/keyboards/planck/keymaps/default`. +* The `subproject` folder is the subproject folder of a keyboard, like `/keyboards/ergodox/ez` -Below is a list of the useful `make` commands in QMK: +### Simple instructions for building and uploading a keyboard -* `make` - builds your keyboard and keymap depending on which folder you're in. This defaults to the "default" layout (unless in a keymap folder), and Planck keyboard in the root folder - * `make keyboard=` - specifies the keyboard (only to be used in root) - * `make keymap=` - specifies the keymap (only to be used in root and keyboard folder - not needed when in keymap folder) -* `make clean` - cleans the `.build` folder, ensuring that everything is re-built -* `make dfu` - (requires dfu-programmer) builds and flashes the keymap to your keyboard once placed in reset/dfu mode (button or press `KC_RESET`). This does not work for Teensy-based keyboards like the ErgoDox EZ. - * `keyboard=` and `keymap=` are compatible with this -* `make all-keyboards` - builds all keymaps for all keyboards and outputs status of each (use in root) -* `make all-keyboards-default` - builds all default keymaps for all keyboards and outputs status of each (use in root) -* `make all-keymaps [keyboard=]` - builds all of the keymaps for whatever keyboard folder you're in, or specified by `` -* `make all-keyboards-*`, `make all-keyboards-default-*` and `make all-keymaps-* [keyboard=]` - like the normal "make-all-*" commands, but the last string aftter the `-` (for example clean) is passed to the keyboard make command. -Other, less useful functionality: +**Most keyboards have more specific instructions in the keyboard specific readme.md file, so please check that first** + +If the `keymap` folder contains a file name `Makefile` + +1. Change the directory to the `keymap` folder +2. Run `make -` + +Otherwise, if there's no `Makefile` in the `keymap` folder + +1. Enter the `keyboard` folder +2. Run `make --` + +In the above commands, replace: + +* `` with the name of your keymap +* `` with the name of the subproject (revision or sub-model of your keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`. + * If the keyboard doesn't have a subproject, or if you are happy with the default (defined in `rules.mk` file of the `keyboard` folder), you can leave it out. But remember to also remove the dash (`-`) from the command. +* `` The programmer to use. Most keyboards use `dfu`, but some use `teensy`. Infinity keyboards use `dfu-util`. Check the readme file in the keyboard folder to find out which programmer to use. + * If you don't add `----`, where: + +* `` is the name of the keyboard, for example `planck` + * Use `allkb` to compile all keyboards +* `` is the name of the subproject (revision or sub-model of the keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`. + * If the keyboard doesn't have any subprojects, it can be left out + * To compile the default subproject, you can leave it out, or specify `defaultsp` + * Use `allsp` to compile all subprojects +* `` is the name of the keymap, for example `algernon` + * Use `allkm` to compile all keymaps +* `` will be explained in more detail below. + +**Note:** When you leave some parts of the command out, you should also remove the dash (`-`). + +As mentioned above, there are some shortcuts, when you are in a: + +* `keyboard` folder, the command will automatically fill the `` part. So you only need to type `--` +* `subproject` folder, it will fill in both `` and `` +* `keymap` folder, then `` and `` will be filled in. If you need to specify the `` use the following syntax `-` + * Note in order to support this shortcut, the keymap needs its own Makefile (see the example [here](/doc/keymap_makefile_example.mk)) +* `keymap` folder of a `subproject`, then everything except the `` will be filled in + +The `` means the following +* If no target is given, then it's the same as `all` below +* `all` compiles the keyboard and generates a `_.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. +* `dfu`, `teensy` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for Infinity keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. **Note** that some operating systems needs root access for these commands to work, so in that case you need to run for example `sudo make dfu`. +* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems. + +Some other targets are supported but, but not important enough to be documented here. Check the source code of the make files for more information. + +You can also add extra options at the end of the make command line, after the target * `make COLOR=false` - turns off color output * `make SILENT=true` - turns off output besides errors/warnings -* `make VERBOSE=true` - outputs all of the avr-gcc stuff (not interesting) +* `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug) + +The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option. + +Here are some examples commands + +* `make allkb-allsp-allkm` builds everything (all keyboards, all subprojects, all keymaps). Running just `make` from the `root` will also run this. +* `make` from within a `keyboard` directory, is the same as `make keyboard-allsp-allkm`, which compiles all subprojects and keymaps of the keyboard. **NOTE** that this behaviour has changed. Previously it compiled just the default keymap. +* `make ergodox-infinity-algernon-clean` will clean the build output of the Ergodox Infinity keyboard. This example uses the full syntax and can be run from any folder with a `Makefile` +* `make dfu COLOR=false` from within a keymap folder, builds and uploads the keymap, but without color output. ## The `Makefile` -There are 3 different `make` and `Makefile` locations: +There are 5 different `make` and `Makefile` locations: * root (`/`) * keyboard (`/keyboards//`) * keymap (`/keyboards//keymaps//`) +* subproject (`/keyboards//`) +* subproject keymap (`/keyboards///keymaps/`) + +The root contains the code used to automatically figure out which keymap or keymaps to compile based on your current directory and commandline arguments. It's considered stable, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. **The file is required if you want to run `make` in the keymap folder.** -The root contains the code used to automatically figure out which keymap or keymaps to compile based on your current directory and commandline arguments. It's considered stable, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. **It is required if you want to run `make` in the keymap folder.** +For keyboards and subprojects, the make files are split in two parts `Makefile` and `rules.mk`. All settings can be found in the `rules.mk` file, while the `Makefile` is just there for support and including the root `Makefile`. Keymaps contain just one `Makefile` for simplicity. ### Makefile options -- cgit v1.2.1 From da226e61261e0c11e678d2086c00b2a45726083e Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 20 Aug 2016 03:22:16 +0300 Subject: Update keyboard readme files with new makefile instructions --- keyboards/arrow_pad/readme.md | 8 +++++--- keyboards/atomic/readme.md | 7 ++++--- keyboards/atreus/readme.md | 7 ++++--- keyboards/bantam44/readme.md | 7 ++++--- keyboards/clueboard/readme.md | 26 +++++++++++++------------- keyboards/cluecard/readme.md | 6 +++--- keyboards/ergodox/readme.md | 6 +++--- keyboards/gh60/readme.md | 8 +++++--- keyboards/hhkb/readme.md | 8 +++++--- keyboards/kc60/readme.md | 10 ++++++---- keyboards/kinesis/readme.md | 6 +++--- keyboards/planck/readme.md | 8 +++++--- keyboards/preonic/readme.md | 8 +++++--- keyboards/retro_refit/readme.md | 8 +++++--- keyboards/s60-x/readme.md | 4 ++-- keyboards/tv44/readme.md | 6 +++--- 16 files changed, 75 insertions(+), 58 deletions(-) diff --git a/keyboards/arrow_pad/readme.md b/keyboards/arrow_pad/readme.md index 5aa44cce54..2e9a64f2ef 100644 --- a/keyboards/arrow_pad/readme.md +++ b/keyboards/arrow_pad/readme.md @@ -12,13 +12,15 @@ Download or clone the whole firmware and navigate to the keyboards/arrow_pad fol Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. \ No newline at end of file diff --git a/keyboards/atomic/readme.md b/keyboards/atomic/readme.md index ab1e7ba1ff..674dcf113b 100644 --- a/keyboards/atomic/readme.md +++ b/keyboards/atomic/readme.md @@ -13,13 +13,14 @@ Download or clone the whole firmware and navigate to the keyboards/atomic folder Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/atreus/readme.md b/keyboards/atreus/readme.md index 734f58f0f0..a4077668e3 100644 --- a/keyboards/atreus/readme.md +++ b/keyboards/atreus/readme.md @@ -174,13 +174,14 @@ Download or clone the whole firmware and navigate to the keyboards/planck folder Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/bantam44/readme.md b/keyboards/bantam44/readme.md index 89d7f9d053..462f67c124 100644 --- a/keyboards/bantam44/readme.md +++ b/keyboards/bantam44/readme.md @@ -12,13 +12,14 @@ Download or clone the whole firmware and navigate to the keyboards/Bantam44 fold Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. \ No newline at end of file diff --git a/keyboards/clueboard/readme.md b/keyboards/clueboard/readme.md index 6c29c09eca..4a76e2908c 100644 --- a/keyboards/clueboard/readme.md +++ b/keyboards/clueboard/readme.md @@ -31,36 +31,36 @@ If you would like to use one of the alternative keymaps, or create your own, see ## Clueboard 1.0 -If you have a first generation Clueboard (one with a black PCB) you will need to use the revision 1 code. To do so add `SUBPROJECT=rev1` to your make command, like this: +If you have a first generation Clueboard (one with a black PCB) you will need to use the revision 1 code. To do so add `rev1` to your make command, like this: ``` -$ make SUBPROJECT=rev1 +$ make rev1 ``` And when flashing your keyboard: ``` -$ make SUBPROJECT=rev1 dfu +$ make rev1-dfu ``` -If you are flashing an alternative layout to your rev1, include both `SUBPROJECT=rev1` and `KEYMAP=` in your command, for example when flashing max: +If you are flashing an alternative layout to your rev1, include both `rev1` and `` in your command, for example when flashing max: ``` -$ make SUBPROJECT=rev1 KEYMAP=max dfu +$ make rev1-max-dfu ``` ## Alternate Keymaps -There are many alternative and user-contributed layouts available in the [keymaps/](keymaps/) directory. To compile and flash an alternative you will want to add `KEYMAP=` to your command: +There are many alternative and user-contributed layouts available in the [keymaps/](keymaps/) directory. To compile and flash an alternative you will want to add `` to your command: ``` -$ make KEYMAP=skully +$ make skully ``` -And when flashing your keyboard, put `KEYMAP=` between "make" and "dfu": +And when flashing your keyboard, put `` between "make" and "dfu": ``` -$ make KEYMAP=skully dfu +$ make skully-dfu ``` ### Notable Layouts @@ -76,15 +76,15 @@ These layouts are notable for one reason or another. If you are looking for idea There are a lot of possibilities when creating your own keymap, and the primary documentation for doing that is [Customizing Your Keymap](/readme.md##customizing-your-keymap) in the main readme.md. As a way to get started, here is the procedure I recommend: * Copy `[keymaps/default](keymaps/default/)` to `keymaps/`. -* Compile the firmware (`$ make KEYMAP=`) -* Flash the firmware (`$ make KEYMAP= dfu`) +* Compile the firmware (`$ make `) +* Flash the firmware (`$ make -dfu`) * Make sure everything works like the default keyboard * Modify `keymaps//readme.md` to tell others about your layout. * Modify `keymaps//keymap.c` to reflect your desired layout. -* Compile your new custom firmware (`$ make KEYMAP=`) +* Compile your new custom firmware (`$ make `) ** If you have warnings you may flash without fixing them, but something may not work right. ** If you have any errors you must fix them before continuing. -* Flash the firmware (`$ make KEYMAP= dfu`) +* Flash the firmware (`$ make -dfu`) ## Share Your Keymap diff --git a/keyboards/cluecard/readme.md b/keyboards/cluecard/readme.md index ae1afbbfdd..be13fc0171 100644 --- a/keyboards/cluecard/readme.md +++ b/keyboards/cluecard/readme.md @@ -13,16 +13,16 @@ Depending on which keymap you would like to use, you will have to compile slight ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. -To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: ``` -$ make keymap=[default|jack|] +$ make [default|jack|] ``` Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index f81d7cd8df..a96e415def 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -19,10 +19,10 @@ If you are just compiling an existing keymap and don't want to create your own, 3. Set up a build environment as per the readme. 4. Copy `keyboards/ergodox/keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`) 5. Edit this file, changing keycodes to your liking (see "Finding the keycodes you need" below). Try to edit the comments as well, so the "text graphics" represent your layout correctly. See below for more tips on sharing your work. -6. Compile your firmware by running `make keymap=keymap_name`. For example, `make keymap=german`. This will result in a hex file, which will be called `ergodox_ez_keymap_name.hex`, e.g. `ergodox_ez_german.hex`. For **Infinity ErgoDox** you need to add `subproject=infinity` to the make command. -7. **ErgoDox EZ** - Flash this hex file using the [Teensy loader](https://www.pjrc.com/teensy/loader.html) as described in step 4 in the "Easy Way" above. If you prefer you can automatically flash the hex file after successful build by running `make teensy keymap=keymap_name`. +6. Compile your firmware by running `make keymap_name`. For example, `make german`. This will result in a hex file, which will be called `ergodox_ez_keymap_name.hex`, e.g. `ergodox_ez_german.hex`. For **Infinity ErgoDox** you need to add `infinity` to the make command like this `make infinity-german`. +7. **ErgoDox EZ** - Flash this hex file using the [Teensy loader](https://www.pjrc.com/teensy/loader.html) as described in step 4 in the "Easy Way" above. If you prefer you can automatically flash the hex file after successful build by running `make keymap_name-teensy`. - **Infinity ErgoDox** - Flash the firmware by running `make dfu-util keymap=keymap_name subproject=infinity` + **Infinity ErgoDox** - Flash the firmware by running `make infinity-keymap_name-dfu-util` 8. Submit your work as a pull request to this repository, so others can also use it. :) See below on specifics. Good luck! :) diff --git a/keyboards/gh60/readme.md b/keyboards/gh60/readme.md index 92302d507c..20afb0db07 100644 --- a/keyboards/gh60/readme.md +++ b/keyboards/gh60/readme.md @@ -48,13 +48,15 @@ Download or clone the whole firmware and navigate to the keyboards/gh60_rev_c fo Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/hhkb/readme.md b/keyboards/hhkb/readme.md index 39d49b32a1..367c0a08f7 100644 --- a/keyboards/hhkb/readme.md +++ b/keyboards/hhkb/readme.md @@ -168,13 +168,15 @@ Download or clone the whole firmware and navigate to the keyboards/planck folder Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/kc60/readme.md b/keyboards/kc60/readme.md index acc0df68dc..0639512dd3 100644 --- a/keyboards/kc60/readme.md +++ b/keyboards/kc60/readme.md @@ -10,18 +10,20 @@ Download or clone the whole firmware and navigate to the keyboards/kc60 folder. Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. ## WS2812 Support ![Image of KC60 with RGB Underglow](keymaps/ws2812/ws2812_example.jpg) -Build with WS2812 Support by running `make KEYMAP=ws2812`. +Build with WS2812 Support by running `make ws2812`. diff --git a/keyboards/kinesis/readme.md b/keyboards/kinesis/readme.md index a990f9cb99..79c86581e6 100644 --- a/keyboards/kinesis/readme.md +++ b/keyboards/kinesis/readme.md @@ -27,16 +27,16 @@ Depending on which keymap you would like to use, you will have to compile slight ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. -To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: ``` -$ make keymap=[default|jack|] +$ make [default|jack|] ``` Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` diff --git a/keyboards/planck/readme.md b/keyboards/planck/readme.md index f89fdeb931..4b24a690e0 100644 --- a/keyboards/planck/readme.md +++ b/keyboards/planck/readme.md @@ -13,15 +13,17 @@ Download or clone the whole firmware and navigate to the keyboards/planck folder Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. ### Notable forks (which some of the keymap files are from) diff --git a/keyboards/preonic/readme.md b/keyboards/preonic/readme.md index f0be255a09..10763ee97a 100644 --- a/keyboards/preonic/readme.md +++ b/keyboards/preonic/readme.md @@ -13,13 +13,15 @@ Download or clone the whole firmware and navigate to the keyboards/preonic folde Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap, create a file in the keymaps folder named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/retro_refit/readme.md b/keyboards/retro_refit/readme.md index b01a1a9ca9..77df861cef 100644 --- a/keyboards/retro_refit/readme.md +++ b/keyboards/retro_refit/readme.md @@ -12,13 +12,15 @@ Download or clone the whole firmware and navigate to the keyboards/retro_refit f Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. \ No newline at end of file diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md index 099d586991..94ce829223 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60-x/readme.md @@ -42,9 +42,9 @@ The recommended programs for flashing your keyboard are [Atmel FLIP](http://www. ## Building the firmware -To build firmware binary hex file with a certain keymap just run `make` with the `keymap` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: - $ make keymap=[custom|poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|] + $ make [custom|poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|] For a more detailed explanation of the build process and the environment setup, see the ["Getting Started" section](/readme.md#getting-started). diff --git a/keyboards/tv44/readme.md b/keyboards/tv44/readme.md index e3b557fe2d..4f691a4ca0 100644 --- a/keyboards/tv44/readme.md +++ b/keyboards/tv44/readme.md @@ -13,16 +13,16 @@ Depending on which keymap you would like to use, you will have to compile slight ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. -To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: ``` -$ make keymap=[default|jack|] +$ make [default|jack|] ``` Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` \ No newline at end of file -- cgit v1.2.1 From 9e03517ae51ff30d332accae27469ae3b1b25e73 Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Fri, 19 Aug 2016 21:47:00 -0600 Subject: Restructuring of the ergodox README. --- keyboards/ergodox/readme.md | 134 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 105 insertions(+), 29 deletions(-) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index 1c1181dbae..1627883c91 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -1,44 +1,121 @@ -# Infinity on Ubuntu Quickstart +# Customizing Keymap -To build an Infinity firmware under Ubuntu (tested on 15.10): +There are external tools for customizing the layout, but those do not use +the featurs of this qmk firmware. These sites include: + + - [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) for Ez + - [Input Club configurator](https://input.club/configurator-ergodox) for Infinity, provides left and right files + +You can also find an existing firmware that you like, for example from: + + - [Dozens of community-contributed keymaps](http://qmk.fm/keyboards/ergodox/) + +This qmk firmware also provides the ability to customize keymaps, but requires +a toolchain to build the firmware. See below for instructions on building +firmware and customizing keymaps. + +# Customizing Keymaps + +There are many existing keymaps in the "keymaps" directory. If you just want +to use one of them, you don't need to modify keymaps and can just build and +flash the firmware as described below. These directories each have a +"readme.md" file which describe them. + +If none of the existing keymaps suit you, you can create your own custom +keymap. This will require some experience with coding. Follow these steps +to customize a keymap: + + - Read the [qmk firmware README](https://github.com/jackhumbert/qmk_firmware) from top to bottom. Then come back here. :) + + - Clone the qmk_firmware repository + + - Set up your build environment (see below). + + - Make a new directory under "keymaps" to hold your customizations. + + - Copy an existing keymap that is close to what you want, such as + "keymaps/default/keymap.c". + + - Use an editor to modify the new "keymap.c". See "Finding the keycodes you + need" below). Try to edit the comments as well, so the "text graphics" + represent your layout correctly. + + - Compile your new firmware (see below) + + - Flash your firmware (see below) + + - Test the changes. + + - Submit your keymap as a pull request to the qmk_firmware repository so + others can use it. You will want to add a "readme.md" that describes the + keymap. + +# Build Dependencies + +Before you can build, you will need the build dependencies. There is a script +to try to do this for Linux: - Run the `util/install_dependencies.sh` script as root. - - Check out the submodules with `git submodule update --init --recursive` - - Go into the ErgoDox directory with `cd keyboards/ergodox` + +For the Infinity, you need the chibios submodules to be checked out or you +will receive errors about the build process being unable to find the chibios +files. Check them out with: + + - Go to the top level repo directory and run: `git submodule update --init --recursive` + +# Flashing Firmware + +## ErgoDox Ez + +The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). + +Linux users need to modify udev rules as described on the Teensy Linux page. +Some distributions provide a binary, maybe called `teensy-loader-cli`). + +To flash the firmware: + + - Build the firmware with `make keymap=keymapname`, for example `make + keymap=default` + + - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g. + `ergodox_ez_default.hex` + + - Start the teensy loader. + + - Load the .hex file into it. + + - Press the Reset button by inserting a paperclip gently into the reset hole + in the top right corder. + + - Click the button in the Teensy app to download the firmware. + +## ErgoDox Infinity + +The Infinity is two completely independent keyboards, and needs to be flashed +for the left and right halves seperately. To flash them: + + - Remove the build directory with `rm -rf ../../.build` + - Build the firmware with `make keymap=keymapname subproject=infinity` - - Plug in the left hand keyboard only. - - Press the program button (back of keyboard, above thumb pad). - - Install the firmware with `sudo make dfu-util keymap=keymapname subproject=infinity` - - Install the right hand firmware, but I haven't figured this out yet. -# Getting started + - Plug in the left hand keyboard only. -There are two main ways you could customize the ErgoDox (EZ and Infinity) + - Press the program button (back of keyboard, above thumb pad). -## The Easy Way: Use an existing firmware file and just flash it (ErgoDox EZ only) + - Install the firmware with `sudo make dfu-util keymap=keymapname subproject=infinity` -1. Download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). Some Linux distributions already provide a binary (may be called `teensy-loader-cli`), so you may prefer to use this. -2. Find a firmware file you like. There are [dozens of community-contributed keymaps](http://qmk.fm/keyboards/ergodox/) you can browse and download. You can also use the [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) to create a firmware Hex file you like. -3. Download the firmware file -4. Connect the keyboard, press its Reset button (gently insert a paperclip into the hole in the top-right corner) and flash it using the Teensy loader you installed on step 1 and the firmware you downloaded. + - Remove the left-hand build with `rm -rf ../../.build` -## More technical: compile an existing keymap, or create your own totally custom firmware by editing the source files. + - Build left hand firmware with `make keymap=keymapname subproject=infinity MASTER=right` -This requires a little bit of familiarity with coding. -If you are just compiling an existing keymap and don't want to create your own, you can skip step 4, 5 and 8. + - Plug in the right hand keyboard only. -1. Go to https://github.com/jackhumbert/qmk_firmware and read the readme at the base of this repository, top to bottom. Then come back here :) -2. Clone the repository (download it) -3. Set up a build environment as per the readme. -4. Copy `keyboards/ergodox/keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`) -5. Edit this file, changing keycodes to your liking (see "Finding the keycodes you need" below). Try to edit the comments as well, so the "text graphics" represent your layout correctly. See below for more tips on sharing your work. -6. Compile your firmware by running `make keymap=keymap_name`. For example, `make keymap=german`. This will result in a hex file, which will be called `ergodox_ez_keymap_name.hex`, e.g. `ergodox_ez_german.hex`. For **Infinity ErgoDox** you need to add `subproject=infinity` to the make command. -7. **ErgoDox EZ** - Flash this hex file using the [Teensy loader](https://www.pjrc.com/teensy/loader.html) as described in step 4 in the "Easy Way" above. If you prefer you can automatically flash the hex file after successful build by running `make teensy keymap=keymap_name`. + - Press the program button (back of keyboard, above thumb pad). - **Infinity ErgoDox** - Flash the firmware by running `make dfu-util keymap=keymap_name subproject=infinity` -8. Submit your work as a pull request to this repository, so others can also use it. :) See below on specifics. + - Install the firmware with `sudo make dfu-util keymap=keymapname subproject=infinity MASTER=right` -Good luck! :) +More information on the Infinity firmware is available in the [TMK/chibios for +Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md) ## Contributing your keymap @@ -49,7 +126,6 @@ The QMK firmware is open-source, so it would be wonderful to have your contribut 3. `readme.md` - a readme file, which GitHub would display by default when people go to your directory. Explain what's different about your keymap, what you tweaked or how it works. No specific format to follow, just communicate what you did. :) 4. Any graphics you wish to add. This is absolutely not a must. If you feel like it, you can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to make something and grab a screenshot, but it's really not a must. If you do have graphics, your readme can just embed the graphic as a link, just like I did with the default layout. - ## Finding the keycodes you need Let's say you want a certain key in your layout to send a colon; to figure out what keycode to use to make it do that, you're going to need `quantum/keymap_common.h`. -- cgit v1.2.1 From d98e5ddf30e6ced925e3d4fa705ae5449808074b Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Fri, 19 Aug 2016 21:50:04 -0600 Subject: Tweaks after review. --- keyboards/ergodox/readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index 1627883c91..349a0ce40c 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -1,4 +1,4 @@ -# Customizing Keymap +# Keymap Options There are external tools for customizing the layout, but those do not use the featurs of this qmk firmware. These sites include: @@ -117,7 +117,7 @@ for the left and right halves seperately. To flash them: More information on the Infinity firmware is available in the [TMK/chibios for Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md) -## Contributing your keymap +# Contributing your keymap The QMK firmware is open-source, so it would be wonderful to have your contribution! Within a very short time after launching we already amassed dozens of user-contributed keymaps, with all sorts of creative improvements and tweaks. This is very valuable for people who aren't comfortable coding, but do want to customize their ErgoDox. To make it easy for these people to use your layout, I recommend submitting your PR in the following format. @@ -126,7 +126,7 @@ The QMK firmware is open-source, so it would be wonderful to have your contribut 3. `readme.md` - a readme file, which GitHub would display by default when people go to your directory. Explain what's different about your keymap, what you tweaked or how it works. No specific format to follow, just communicate what you did. :) 4. Any graphics you wish to add. This is absolutely not a must. If you feel like it, you can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to make something and grab a screenshot, but it's really not a must. If you do have graphics, your readme can just embed the graphic as a link, just like I did with the default layout. -## Finding the keycodes you need +# Finding the keycodes you need Let's say you want a certain key in your layout to send a colon; to figure out what keycode to use to make it do that, you're going to need `quantum/keymap_common.h`. -- cgit v1.2.1 From 48f8ab1ae2612960cbd82c1f9967fd118aae4c67 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 20 Aug 2016 12:44:04 +0300 Subject: Fix the clean target It now properly cleans all the outputs --- tmk_core/rules.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 977a2d0e53..21011c2808 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -352,8 +352,7 @@ $(foreach OUTPUT,$(OUTPUTS),$(eval $(call GEN_OBJRULE,$(OUTPUT)))) # Target: clean project. clean: - $(REMOVE) -r $(OBJDIR) 2>/dev/null - $(REMOVE) -r $(KBOBJDIR) 2>/dev/null + $(foreach OUTPUT,$(OUTPUTS), $(REMOVE) -r $(OUTPUT) 2>/dev/null) $(REMOVE) $(BUILD_DIR)/$(TARGET).* show_path: -- cgit v1.2.1 From b26ded3ab1c09e2a127feb5f4e22e97242ce77d7 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 20 Aug 2016 14:53:29 +0300 Subject: Comment the Makefile Also move some messages to message.mk --- Makefile | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------- message.mk | 13 ++++++- 2 files changed, 124 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 9ca73b4ad7..d70ac9a3b8 100644 --- a/Makefile +++ b/Makefile @@ -2,15 +2,18 @@ ifndef VERBOSE .SILENT: endif +# Allow the silent with lower caps to work the same way as upper caps ifdef silent SILENT = $(silent) endif ifdef SILENT - SUB_IS_SILENT := $(silent) + SUB_IS_SILENT := $(SILENT) endif -override SILENT = false +# We need to make sure that silent is always turned off at the top level +# Otherwise the [OK], [ERROR] and [WARN] messags won't be displayed correctly +override SILENT := false ON_ERROR := error_occured=1 @@ -26,27 +29,44 @@ ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE)) ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE)) STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) -PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) - MAKEFILE_INCLUDED=yes +# Helper function to process the newt element of a space separated path +# It works a bit like the traditional functional head tail +# so the CURRENT_PATH_ELEMENT will beome the new head +# and the PATH_ELEMENTS are the rest that are still unprocessed define NEXT_PATH_ELEMENT $$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS))) $$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS))) endef +# We change the / to spaces so that we more easily can work with the elements +# separately +PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) +# Initialize the path elements list for further processing $(eval $(call NEXT_PATH_ELEMENT)) +# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct +# variables depending on which directory you stand in. +# It's really a very simple if else chain, if you squint enough, +# but the makefile syntax makes it very verbose. +# If we are in a subfolder of keyboards ifeq ($(CURRENT_PATH_ELEMENT),keyboards) $(eval $(call NEXT_PATH_ELEMENT)) KEYBOARD := $(CURRENT_PATH_ELEMENT) $(eval $(call NEXT_PATH_ELEMENT)) + # If we are in a subfolder of keymaps, or in other words in a keymap + # folder ifeq ($(CURRENT_PATH_ELEMENT),keymaps) $(eval $(call NEXT_PATH_ELEMENT)) KEYMAP := $(CURRENT_PATH_ELEMENT) + # else if we are not in the keyboard folder itself else ifneq ($(CURRENT_PATH_ELEMENT),) + # the we can assume it's a subproject, as no other folders + # should have make files in them SUBPROJECT := $(CURRENT_PATH_ELEMENT) $(eval $(call NEXT_PATH_ELEMENT)) + # if we are inside a keymap folder of a subproject ifeq ($(CURRENT_PATH_ELEMENT),keymaps) $(eval $(call NEXT_PATH_ELEMENT)) KEYMAP := $(CURRENT_PATH_ELEMENT) @@ -57,7 +77,8 @@ endif # Only consider folders with makefiles, to prevent errors in case there are extra folders KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile))) -#Compability with the old make variables +#Compability with the old make variables, anything you specify directly on the command line +# always overrides the detected folders ifdef keyboard KEYBOARD := $(keyboard) endif @@ -71,29 +92,41 @@ ifdef keymap KEYMAP := $(keymap) endif +# Uncomment these for debugging #$(info Keyboard: $(KEYBOARD)) #$(info Keymap: $(KEYMAP)) #$(info Subproject: $(SUBPROJECT)) #$(info Keyboards: $(KEYBOARDS)) + +# Set the default goal depening on where we are running make from +# this handles the case where you run make without any arguments .DEFAULT_GOAL := all ifneq ($(KEYMAP),) ifeq ($(SUBPROJECT),) + # Inside a keymap folder, just build the keymap, with the + # default subproject .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP) else + # Inside a subproject keyamp folder, build the keymap + # for that subproject .DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-$(KEYMAP) endif else ifneq ($(SUBPROJECT),) + # Inside a subproject folder, build all keymaps for that subproject .DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-allkm else ifneq ($(KEYBOARD),) + # Inside a keyboard folder, build all keymaps for all subprojects + # Note that this is different from the old behaviour, which would + # build only the default keymap of the default keyboard .DEFAULT_GOAL := $(KEYBOARD)-allsp-allkm endif -# Compare the start of the RULE_VARIABLE with the first argument($1) +# Compare the start of the RULE variable with the first argument($1) # If the rules equals $1 or starts with $1-, RULE_FOUND is set to true # and $1 is removed from the RULE variable -# Otherwise the RULE_FOUND variable is set to false +# Otherwise the RULE_FOUND variable is set to false, and RULE left as it was # The function is a bit tricky, since there's no built in $(startswith) function define COMPARE_AND_REMOVE_FROM_RULE_HELPER ifeq ($1,$$(RULE)) @@ -110,10 +143,12 @@ define COMPARE_AND_REMOVE_FROM_RULE_HELPER endif endef +# This makes it easier to call COMPARE_AND_REMOVE_FROM_RULE, since it makes it behave like +# a function that returns the value COMPARE_AND_REMOVE_FROM_RULE = $(eval $(call COMPARE_AND_REMOVE_FROM_RULE_HELPER,$1))$(RULE_FOUND) -# Recursively try to find a match +# Recursively try to find a match for the start of the rule to be checked # $1 The list to be checked # If a match is found, then RULE_FOUND is set to true # and MATCHED_ITEM to the item that was matched @@ -127,6 +162,7 @@ define TRY_TO_MATCH_RULE_FROM_LIST_HELPER endif endef +# Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND) define ALL_IN_LIST_LOOP @@ -139,47 +175,70 @@ define PARSE_ALL_IN_LIST $$(foreach ITEM$1,$2,$$(eval $$(call ALL_IN_LIST_LOOP,$1))) endef +# The entry point for rule parsing +# parses a rule in the format --- +# but this particular function only deals with the first part define PARSE_RULE RULE := $1 COMMANDS := + # If the rule starts with allkb, then continue the parsing from + # PARSE_ALL_KEYBOARDS ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true) $$(eval $$(call PARSE_ALL_KEYBOARDS)) + # If the rule starts with the name of a known keyboard, then continue + # the parsing from PARSE_KEYBOARD else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) + # Otherwise use the KEYBOARD variable, which is determined either by + # the current directory you run make from, or passed in as an argument else ifneq ($$(KEYBOARD),) $$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD))) else $$(info make: *** No rule to make target '$1'. Stop.) + # Notice the tab instead of spaces below! exit 1 endif endef # $1 = Keyboard +# Parses a rule in the format -- +# the keyboard is already known when entering this function define PARSE_KEYBOARD CURRENT_KB := $1 # A subproject is any keyboard subfolder with a makefile SUBPROJECTS := $$(notdir $$(patsubst %/Makefile,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/Makefile))) + # if the rule starts with allsp, then continue with looping over all subprojects ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allsp),true) $$(eval $$(call PARSE_ALL_SUBPROJECTS)) + # A special case for matching the defaultsp (default subproject) else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,defaultsp),true) $$(eval $$(call PARSE_SUBPROJECT,defaultsp)) + # If the rule starts with the name of a known subproject else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true) $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM))) + # Try to use the SUBPROJECT variable, which is either determined by the + # directory which invoked make, or passed as an argument to make else ifneq ($$(SUBPROJECT),) $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT))) + # If there's no matching subproject, we assume it's the default + # This will allow you to leave the subproject part of the target out else - # If there's no matching subproject, we assume it's the default - # This will allow you to leave the subproject part of the target out $$(eval $$(call PARSE_SUBPROJECT,defaultsp)) endif endef +# if we are going to compile all keyboards, match the rest of the rule +# for each of them define PARSE_ALL_KEYBOARDS $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS))) endef # $1 Subproject +# When entering this, the keyboard and subproject are known, so now we need +# to determine which keymaps are going to get compiled define PARSE_SUBPROJECT + # If we want to compile the default subproject, then we need to + # include the correct makefile to determine the actual name of it ifeq ($1,defaultsp) SUBPROJECT_DEFAULT= $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/Makefile) @@ -188,39 +247,54 @@ define PARSE_SUBPROJECT CURRENT_SP := $1 endif # If current subproject is empty (the default was not defined), and we have a list of subproject - # then make all + # then make all of them ifeq ($$(CURRENT_SP),) ifneq ($$(SUBPROJECTS),) CURRENT_SP := allsp endif endif + # The special allsp is handled later ifneq ($$(CURRENT_SP),allsp) + # get a list of all keymaps KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) ifneq ($$(CURRENT_SP),) + # if the subproject is defined, then also look for keymaps inside the subproject folder SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.))) KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS)) endif + # if the rule after removing the start of it is empty (we haven't specified a kemap or target) + # compile all the keymaps ifeq ($$(RULE),) $$(eval $$(call PARSE_ALL_KEYMAPS)) + # The same if allkm was specified else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true) $$(eval $$(call PARSE_ALL_KEYMAPS)) + # Try to match the specified keyamp with the list of known keymaps else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true) $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) + # Otherwise try to match the keymap from the current folder, or arguments to the make command else ifneq ($$(KEYMAP),) $$(eval $$(call PARSE_KEYMAP,$$(KEYMAP))) else + # Otherwise something is wrong with the target + # Try to give as much information as possible of what it it was trying to do ifeq ($$(CURRENT_SP),) $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(RULE)'. Stop.) else $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(CURRENT_SP)-$$(RULE)'. Stop.) endif + # Notice the tab instead of spaces below! exit 1 endif else + # As earlier mentione,d when allsb is specified, we call our self recursively + # for all of the subprojects $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS))) endif endef +# If we want to parse all subprojects, but the keyboard doesn't have any, +# then use defaultsp instead define PARSE_ALL_SUBPROJECTS ifeq ($$(SUBPROJECTS),) $$(eval $$(call PARSE_SUBPROJECT,defaultsp)) @@ -230,27 +304,36 @@ define PARSE_ALL_SUBPROJECTS endef # $1 Keymap +# This is the meat of compiling a keyboard, when entering this, everything is known +# keyboard, subproject, and keymap +# Note that we are not directly calling the command here, but instead building a list, +# which will later be processed define PARSE_KEYMAP CURRENT_KM = $1 # The rest of the rule is the target # Remove the leading "-" from the target, as it acts as a separator MAKE_TARGET := $$(patsubst -%,%,$$(RULE)) + # We need to generate an unique indentifer to append to the COMMANDS list COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) COMMANDS += $$(COMMAND) + # If we are compiling a keyboard without a subproject, we want to display just the name + # of the keyboard, otherwise keyboard/subproject ifeq ($$(CURRENT_SP),) KB_SP := $(CURRENT_KB) else KB_SP := $(CURRENT_KB)/$$(CURRENT_SP) endif + # Format it in bold KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) + # Specify the variables that we are passing forward to submake MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) + # And the first part of the make command MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET) - MAKE_MSG := Making $$(KB_SP) with keymap $(BOLD)$$(CURRENT_KM)$(NO_COLOR) - ifneq ($$(MAKE_TARGET),) - MAKE_MSG += and target $(BOLD)$$(MAKE_TARGET)$(NO_COLOR) - endif - MAKE_MSG_FORMAT := $(AWK) '{ printf "%-118s", $$$$0;}' + # The message to display + MAKE_MSG := $$(MSG_MAKE_KB) + # We run the command differently, depending on if we want more output or not + # The true version for silent output and the false version otherwise COMMAND_true_$$(COMMAND) := \ printf "$$(MAKE_MSG)" | \ $$(MAKE_MSG_FORMAT); \ @@ -267,10 +350,14 @@ define PARSE_KEYMAP $$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; endef +# Just parse all the keymaps for a specifc keyboard define PARSE_ALL_KEYMAPS $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) endef +# Set the silent mode depending on if we are trying to compile multiple keyboards or not +# By default it's on in that case, but it can be overriden by specifying silent=false +# from the command line define SET_SILENT_MODE ifdef SUB_IS_SILENT SILENT_MODE := $(SUB_IS_SILENT) @@ -291,9 +378,12 @@ SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) .PHONY: $(SUBPROJECTS) $(SUBPROJECTS): %: %-allkm +# Let's match everything, we handle all the rule parsing ourselves .PHONY: % %: + # Check if we have the CMP tool installed cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; + # Check if the submodules are dirty, and display a warning if they are git submodule status --recursive 2>/dev/null | \ while IFS= read -r x; do \ case "$$x" in \ @@ -303,14 +393,20 @@ $(SUBPROJECTS): %: %-allkm done $(eval $(call PARSE_RULE,$@)) $(eval $(call SET_SILENT_MODE)) + # Run all the commands in the same shell, notice the + at the first line + # it has to be there to allow parallel execution of the submake + # This always tries to compile everything, even if error occurs in the middle + # But we return the error code at the end, to trigger travis failures +error_occured=0; \ $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \ if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi +# All should compile everything .PHONY: all all: all-keyboards +# Define some shortcuts, mostly for compability with the old syntax .PHONY: all-keyboards all-keyboards: allkb-allsp-allkm @@ -318,6 +414,7 @@ all-keyboards: allkb-allsp-allkm all-keyboards-defaults: allkb-allsp-default +# Generate the version.h file GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") $(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h) diff --git a/message.mk b/message.mk index f8fd387121..fb1a7a1f9a 100644 --- a/message.mk +++ b/message.mk @@ -31,7 +31,7 @@ PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $ PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; -MSG_NO_CMP = $(ERROR_COLOR)Error:$(NO_COLOR)$(BOLD) cmp command not found, please install diffutils\n$(NO_COLOR) +MAKE_MSG_FORMAT = $(AWK) '{ printf "%-118s", $$0;}' # Define Messages # English @@ -59,4 +59,13 @@ MSG_SUBMODULE_DIRTY = $(WARN_COLOR)WARNING:$(NO_COLOR)\n \ git submodule sync --recursive\n\ git submodule update --init --recursive$(NO_COLOR)\n\n\ You can ignore this warning if you are not compiling any ChibiOS keyboards,\n\ - or if you have modified the ChibiOS libraries yourself. \n\n \ No newline at end of file + or if you have modified the ChibiOS libraries yourself. \n\n +MSG_NO_CMP = $(ERROR_COLOR)Error:$(NO_COLOR)$(BOLD) cmp command not found, please install diffutils\n$(NO_COLOR) + +define GENERATE_MSG_MAKE_KB + MSG_MAKE_KB_ACTUAL := Making $$(KB_SP) with keymap $(BOLD)$$(CURRENT_KM)$(NO_COLOR) + ifneq ($$(MAKE_TARGET),) + MSG_MAKE_KB_ACTUAL += and target $(BOLD)$$(MAKE_TARGET)$(NO_COLOR) + endif +endef +MSG_MAKE_KB = $(eval $(call GENERATE_MSG_MAKE_KB))$(MSG_MAKE_KB_ACTUAL) -- cgit v1.2.1 From 1c69acb7d518893ee77e326342d4603da87470e5 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 21 Aug 2016 13:10:34 +0300 Subject: Add longest match to the rule-checking This fixes cases where you have several keyboards with a common prefix, like algernon, and algernon-master --- Makefile | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d70ac9a3b8..c8122e5765 100644 --- a/Makefile +++ b/Makefile @@ -152,13 +152,52 @@ COMPARE_AND_REMOVE_FROM_RULE = $(eval $(call COMPARE_AND_REMOVE_FROM_RULE_HELPER # $1 The list to be checked # If a match is found, then RULE_FOUND is set to true # and MATCHED_ITEM to the item that was matched -define TRY_TO_MATCH_RULE_FROM_LIST_HELPER +define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3 ifneq ($1,) ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true) MATCHED_ITEM := $$(firstword $1) else - $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$$(wordlist 2,9999,$1))) + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1))) + endif + endif +endef + +# A recursive helper function for finding the longest match +# $1 The list to be checed +# It works by always removing the currently matched item from the list +# and call itself recursively, until a match is found +define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2 + # Stop the recursion when the list is empty + ifneq ($1,) + RULE_BEFORE := $$(RULE) + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1)) + # If a match is found in the current list, otherwise just return what we had before + ifeq ($$(RULE_FOUND),true) + # Save the best match so far and call itself recursivel + BEST_MATCH := $$(MATCHED_ITEM) + BEST_MATCH_RULE := $$(RULE) + RULE_FOUND := false + RULE := $$(RULE_BEFORE) + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER2,$$(filter-out $$(MATCHED_ITEM),$1))) endif + endif +endef + + +# Recursively try to find the longest match for the start of the rule to be checked +# $1 The list to be checked +# If a match is found, then RULE_FOUND is set to true +# and MATCHED_ITEM to the item that was matched +define TRY_TO_MATCH_RULE_FROM_LIST_HELPER + BEST_MATCH := + $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER2,$1)) + ifneq ($$(BEST_MATCH),) + RULE_FOUND := true + RULE := $$(BEST_MATCH_RULE) + MATCHED_ITEM := $$(BEST_MATCH) + else + RULE_FOUND := false + MATCHED_ITEM := endif endef -- cgit v1.2.1 From 8f16403179dde51af1826fbc9b65ce0e29fd33ad Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 21 Aug 2016 13:53:36 +0300 Subject: Change order of variable assignment BUILD_DIR and TARGET was assigned too late, so the dfu-util target, which depends on them did not work. --- build_keyboard.mk | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index e8d8f3572b..a2a2871e6e 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -16,6 +16,19 @@ LIB_PATH = $(TOP_DIR)/lib QUANTUM_DIR = quantum QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) +BUILD_DIR := $(TOP_DIR)/.build + +ifneq ($(SUBPROJECT),) + TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) + KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT) +else + TARGET ?= $(KEYBOARD)_$(KEYMAP) + KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD) +endif + +# Force expansion +TARGET := $(TARGET) + MASTER ?= left ifdef master @@ -93,15 +106,6 @@ else $(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist) endif -BUILD_DIR = $(TOP_DIR)/.build - -ifneq ($(SUBPROJECT),) - TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) - KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT) -else - TARGET ?= $(KEYBOARD)_$(KEYMAP) - KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD) -endif # Object files directory # To put object files in current directory, use a dot (.), do NOT make -- cgit v1.2.1 From 0418ecc073d420fff3be2603bfb7a6fa234bd357 Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Mon, 22 Aug 2016 10:26:18 -0600 Subject: Changes from review by @fredizzimo and @Xyverz --- keyboards/ergodox/readme.md | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index 349a0ce40c..304f2b01f2 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -1,18 +1,3 @@ -# Keymap Options - -There are external tools for customizing the layout, but those do not use -the featurs of this qmk firmware. These sites include: - - - [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) for Ez - - [Input Club configurator](https://input.club/configurator-ergodox) for Infinity, provides left and right files - -You can also find an existing firmware that you like, for example from: - - - [Dozens of community-contributed keymaps](http://qmk.fm/keyboards/ergodox/) - -This qmk firmware also provides the ability to customize keymaps, but requires -a toolchain to build the firmware. See below for instructions on building -firmware and customizing keymaps. # Customizing Keymaps @@ -94,8 +79,6 @@ To flash the firmware: The Infinity is two completely independent keyboards, and needs to be flashed for the left and right halves seperately. To flash them: - - Remove the build directory with `rm -rf ../../.build` - - Build the firmware with `make keymap=keymapname subproject=infinity` - Plug in the left hand keyboard only. @@ -104,8 +87,6 @@ for the left and right halves seperately. To flash them: - Install the firmware with `sudo make dfu-util keymap=keymapname subproject=infinity` - - Remove the left-hand build with `rm -rf ../../.build` - - Build left hand firmware with `make keymap=keymapname subproject=infinity MASTER=right` - Plug in the right hand keyboard only. @@ -133,3 +114,19 @@ Let's say you want a certain key in your layout to send a colon; to figure out w That file contains a big list of all of the special, fancy keys (like, being able to send % on its own and whatnot). If you want to send a plain vanilla key, you can look up its code under `doc/keycode.txt`. That's where all the boring keys hang out. + +# Other Firmware Options + +There are external tools for customizing the layout, but those do not use +the featurs of this qmk firmware. These sites include: + + - [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) for Ez + - [Input Club configurator](https://input.club/configurator-ergodox) for Infinity, provides left and right files + +You can also find an existing firmware that you like, for example from: + + - [Dozens of community-contributed keymaps](http://qmk.fm/keyboards/ergodox/) + +This qmk firmware also provides the ability to customize keymaps, but requires +a toolchain to build the firmware. See below for instructions on building +firmware and customizing keymaps. -- cgit v1.2.1 From feebc58d327b969fe1ef11cd5b5989a60c51ac87 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Tue, 23 Aug 2016 09:42:11 +0300 Subject: Split kitten_paw into Makefile/rules.mk --- keyboards/kitten_paw/Makefile | 76 +------------------------------------------ keyboards/kitten_paw/rules.mk | 72 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 75 deletions(-) create mode 100644 keyboards/kitten_paw/rules.mk diff --git a/keyboards/kitten_paw/Makefile b/keyboards/kitten_paw/Makefile index 9122921737..57b2ef62e5 100644 --- a/keyboards/kitten_paw/Makefile +++ b/keyboards/kitten_paw/Makefile @@ -1,77 +1,3 @@ - - -# MCU name -#MCU = at90usb1287 -MCU = atmega32u2 - -# 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 -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -CUSTOM_MATRIX = yes -SRC += matrix.c led.c - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile endif - diff --git a/keyboards/kitten_paw/rules.mk b/keyboards/kitten_paw/rules.mk new file mode 100644 index 0000000000..dab7cabc52 --- /dev/null +++ b/keyboards/kitten_paw/rules.mk @@ -0,0 +1,72 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u2 + +# 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 +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +CUSTOM_MATRIX = yes +SRC += matrix.c led.c -- cgit v1.2.1 From 7c9fff59d0bfd36016a5cd79d40ec27ae591610b Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Wed, 24 Aug 2016 10:29:01 +0300 Subject: Fix slight inconsistency When running make from either a keyboard folder or a subproject it runs all keymaps for all subprojects and the selected subproject respectively. Without this fix, the same doesn't happen if your run make clean for example. As it would just provide you with an error message. Now this will work as expected. --- Makefile | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index c8122e5765..f78cca6c6f 100644 --- a/Makefile +++ b/Makefile @@ -262,7 +262,7 @@ define PARSE_KEYBOARD # If there's no matching subproject, we assume it's the default # This will allow you to leave the subproject part of the target out else - $$(eval $$(call PARSE_SUBPROJECT,defaultsp)) + $$(eval $$(call PARSE_SUBPROJECT,)) endif endef @@ -278,12 +278,14 @@ endef define PARSE_SUBPROJECT # If we want to compile the default subproject, then we need to # include the correct makefile to determine the actual name of it - ifeq ($1,defaultsp) + CURRENT_SP := $1 + ifeq ($$(CURRENT_SP),) + CURRENT_SP := defaultsp + endif + ifeq ($$(CURRENT_SP),defaultsp) SUBPROJECT_DEFAULT= $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/Makefile) CURRENT_SP := $$(SUBPROJECT_DEFAULT) - else - CURRENT_SP := $1 endif # If current subproject is empty (the default was not defined), and we have a list of subproject # then make all of them @@ -314,16 +316,16 @@ define PARSE_SUBPROJECT # Otherwise try to match the keymap from the current folder, or arguments to the make command else ifneq ($$(KEYMAP),) $$(eval $$(call PARSE_KEYMAP,$$(KEYMAP))) + # No matching keymap found, so we assume that the rest of the rule is the target + # If we haven't been able to parse out a subproject, then make all of them + # This is consistent with running make without any arguments from the keyboard + # folder + else ifeq ($1,) + $$(eval $$(call PARSE_ALL_SUBPROJECTS)) + # Otherwise, make all keymaps, again this is consistent with how it works without + # any arguments else - # Otherwise something is wrong with the target - # Try to give as much information as possible of what it it was trying to do - ifeq ($$(CURRENT_SP),) - $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(RULE)'. Stop.) - else - $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(CURRENT_SP)-$$(RULE)'. Stop.) - endif - # Notice the tab instead of spaces below! - exit 1 + $$(eval $$(call PARSE_ALL_KEYMAPS)) endif else # As earlier mentione,d when allsb is specified, we call our self recursively -- cgit v1.2.1 From 7debe7cd777f50ef0adf4d3b4623946232f1eccf Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Wed, 24 Aug 2016 09:26:41 -0600 Subject: Changes based on @fredizzimo review, flashing Infinity details --- keyboards/ergodox/readme.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index 304f2b01f2..4730de36f6 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -1,3 +1,15 @@ +# The Easy Way + +If you can find firmware someone else has made that does what you want, that +is the easiest way to customize your ErgoDox. It requires no programming +experience or the setup of a build environment. + +Quickstart: + + - Find and download an [existing firmware](#other-firmware-options) + + - Then flash the firmware to your [ErgoDox Ez](#ergodox-ez) + or [ErgoDox Infinity](#ergodox-infinity) # Customizing Keymaps @@ -98,6 +110,28 @@ for the left and right halves seperately. To flash them: More information on the Infinity firmware is available in the [TMK/chibios for Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md) +### Infinity Master/Two Halves + +The Infinity is two completely independent keyboards, that can connect together. +You have a few options in how you flash the firmware: + +- Flash the left half, rebuild the firmware with "MASTER=right" and then flash + the right half. This allows you to plug in either half directly to the + computer and is what the above instructions do. + +- Flash the left half, then flash the same firmware on the right. This only + works when the left half is plugged directly to the computer and the keymap + is mirrored. It saves the small extra step of rebuilding with + "MASTER=right". + +- The same as the previous one but with "MASTER=right" when you build the + firmware, then flash the same firmware to both halves. You just have to + directly connect the right half to the computer. + +- For minor changes such as changing only the keymap without having updated + any part of the firmware code itself, you can program only the MASTER half. + It is safest to program both halves though. + # Contributing your keymap The QMK firmware is open-source, so it would be wonderful to have your contribution! Within a very short time after launching we already amassed dozens of user-contributed keymaps, with all sorts of creative improvements and tweaks. This is very valuable for people who aren't comfortable coding, but do want to customize their ErgoDox. To make it easy for these people to use your layout, I recommend submitting your PR in the following format. -- cgit v1.2.1 From 0dfd1712bb22be9fe63b8754eb8fe72675906c6f Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Wed, 24 Aug 2016 09:30:29 -0600 Subject: Making the existing firmware link better --- keyboards/ergodox/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index 4730de36f6..b113ca7dd2 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -6,7 +6,8 @@ experience or the setup of a build environment. Quickstart: - - Find and download an [existing firmware](#other-firmware-options) + - Find and download an existing firmware + [from Other Firmware Options](#other-firmware-options) - Then flash the firmware to your [ErgoDox Ez](#ergodox-ez) or [ErgoDox Infinity](#ergodox-infinity) -- cgit v1.2.1 From f512179e66e4d4dfbcc92c6ba1aaa1b6cf1ef12b Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Wed, 24 Aug 2016 13:17:01 +0200 Subject: ergodox: Update algernon's keymap to v1.6 Major changes include: Base layer changes ------------------ * The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`. * The `:;` and `-_` keys are now available on the base layer, on their **ADORE** location, too, just below `[{(`/`]})`. * The `Apps` key has been replaced by `F12`. * The `-`/`_` is no longer a tap-dance key. ADORE layer changes ------------------- * Adjustments were made to the **ADORE** layer, to separate some inconvenient combinations. Miscellaneous changes --------------------- * `LEAD u` now starts the symbolic unicode input system, instead of the OS-one. * The mouse acceleration keys on the **Navigation and Media* layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off. * When the **ARROW** layer is on, the *red* and *blue* LEDs light up now. Heatmap ------- * The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off. * The heatmap generator received a lot of updates. Signed-off-by: Gergely Nagy --- keyboards/ergodox/keymaps/algernon/Makefile | 9 +- .../keymaps/algernon/images/adore-layer.png | Bin 93748 -> 93893 bytes .../ergodox/keymaps/algernon/images/base-layer.png | Bin 95222 -> 95204 bytes keyboards/ergodox/keymaps/algernon/keymap.c | 494 +++++++----------- keyboards/ergodox/keymaps/algernon/readme.md | 67 ++- .../algernon/tools/heatmap-adore-layout.json | 533 -------------------- .../algernon/tools/heatmap-base-layout.json | 533 -------------------- .../algernon/tools/heatmap-layout.ADORE.json | 553 +++++++++++++++++++++ .../algernon/tools/heatmap-layout.Dvorak.json | 542 ++++++++++++++++++++ .../keymaps/algernon/tools/log-to-heatmap.py | 368 +++++++++----- 10 files changed, 1564 insertions(+), 1535 deletions(-) delete mode 100644 keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json delete mode 100644 keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json create mode 100644 keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json create mode 100644 keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json diff --git a/keyboards/ergodox/keymaps/algernon/Makefile b/keyboards/ergodox/keymaps/algernon/Makefile index 00194857ac..7c2b3ad97c 100644 --- a/keyboards/ergodox/keymaps/algernon/Makefile +++ b/keyboards/ergodox/keymaps/algernon/Makefile @@ -1,22 +1,23 @@ BOOTMAGIC_ENABLE=no COMMAND_ENABLE=no SLEEP_LED_ENABLE=no -UNICODE_ENABLE=no FORCE_NKRO ?= yes DEBUG_ENABLE = no CONSOLE_ENABLE = no TAP_DANCE_ENABLE = yes KEYLOGGER_ENABLE ?= yes +UCIS_ENABLE = yes +MOUSEKEY_ENABLE ?= yes -ADORE_AUTOLOG ?= no +AUTOLOG_ENABLE ?= no ifeq (${FORCE_NKRO},yes) OPT_DEFS += -DFORCE_NKRO endif -ifeq (${ADORE_AUTOLOG},yes) +ifeq (${AUTOLOG_ENABLE},yes) KEYLOGGER_ENABLE = yes -OPT_DEFS += -DADORE_AUTOLOG +OPT_DEFS += -DAUTOLOG_ENABLE endif ifeq (${KEYLOGGER_ENABLE},yes) diff --git a/keyboards/ergodox/keymaps/algernon/images/adore-layer.png b/keyboards/ergodox/keymaps/algernon/images/adore-layer.png index 44ad8a1eb7..3d0a5fb20c 100644 Binary files a/keyboards/ergodox/keymaps/algernon/images/adore-layer.png and b/keyboards/ergodox/keymaps/algernon/images/adore-layer.png differ diff --git a/keyboards/ergodox/keymaps/algernon/images/base-layer.png b/keyboards/ergodox/keymaps/algernon/images/base-layer.png index da159fbe2e..7ea57aae38 100644 Binary files a/keyboards/ergodox/keymaps/algernon/images/base-layer.png and b/keyboards/ergodox/keymaps/algernon/images/base-layer.png differ diff --git a/keyboards/ergodox/keymaps/algernon/keymap.c b/keyboards/ergodox/keymaps/algernon/keymap.c index 144030e2e9..9f476d8a6b 100644 --- a/keyboards/ergodox/keymaps/algernon/keymap.c +++ b/keyboards/ergodox/keymaps/algernon/keymap.c @@ -2,6 +2,7 @@ * algernon's ErgoDox EZ layout, please see the readme.md file! */ +#include #include "ergodox.h" #include "led.h" #include "debug.h" @@ -33,7 +34,6 @@ enum { // Buttons that do extra stuff A_GUI, A_PLVR, - A_ESC, A_MPN, // Function / number keys @@ -47,7 +47,6 @@ enum { KF_8, KF_9, KF_10, - KF_11, // =, F11 // Application select keys APP_SLK, // Slack @@ -62,6 +61,11 @@ enum { A_MDL, A_MDR, + // Mouse acceleration + A_ACL0, + A_ACL1, + A_ACL2, + // Hungarian layer keys HU_AA, // Á HU_OO, // Ó @@ -89,7 +93,6 @@ enum { enum { CT_CLN = 0, - CT_MNS, CT_TA, CT_LBP, CT_RBP @@ -102,7 +105,11 @@ uint16_t gui_timer = 0; uint16_t kf_timers[12]; #if KEYLOGGER_ENABLE +# ifdef AUTOLOG_ENABLE +bool log_enable = true; +# else bool log_enable = false; +# endif #endif bool time_travel = false; @@ -114,12 +121,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Base Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Next/Prev | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | + * | Next/Prev | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | F12 | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | ~ | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | \ | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | ~ | ' | , | . | P | Y | ( | | ) | F | G | C | R | L | \ | + * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| * | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow | - * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------| + * |-----------+------+------+------+------+------| : | | - |------+------+------+------+------+-----------| * | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | | | | | : | | - | | | | | @@ -135,21 +142,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( // left hand M(A_MPN) ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR) -,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC +,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,TD(CT_LBP) ,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I -,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN +,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,TD(CT_CLN) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN) ,F(F_ALT),F(F_GUI) ,F(F_CTRL) - ,KC_BSPC,F(F_SFT),M(A_ESC) + ,KC_BSPC,F(F_SFT),KC_ESC // right hand - ,KC_APP ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 - ,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS + ,KC_F12 ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 + ,TD(CT_RBP),KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL - ,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP - ,TD(CT_MNS),KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_MINS ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP + ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,OSL(NMDIA),KC_DEL ,KC_LEAD @@ -159,13 +166,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 1: Adore layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Play/Pause| 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | + * | Play/Pause| 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | F12 | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | `~ | X | W | K | L | M | ( | | ) | F | H | C | P | Y | \ | + * | `~ | Y | W | G | L | M | ( | | ) | F | H | C | P | X | \ | * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| * | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | Z | Q | ' | , | . | : | | - | B | G | V | J | / | | + * | | Z | Q | ' | , | . | : | | - | B | K | V | J | / | | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | | | | | | | | | | | | * `-----------------------------------' `-----------------------------------' @@ -180,20 +187,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [ADORE] = KEYMAP( // left hand KC_MPLY ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR) -,KC_GRV ,KC_X ,KC_W ,KC_K ,KC_L ,KC_M ,TD(CT_LBP) +,KC_GRV ,KC_Y ,KC_W ,KC_G ,KC_L ,KC_M ,TD(CT_LBP) ,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U ,KC_NO ,KC_Z ,KC_Q ,KC_QUOT,KC_COMM,KC_DOT ,TD(CT_CLN) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,F(F_ALT),F(F_GUI) ,F(F_CTRL) - ,KC_BSPC,F(F_SFT),M(A_ESC) + ,KC_BSPC,F(F_SFT),KC_ESC // right hand - ,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 - ,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_Y ,KC_BSLS + ,KC_F12 ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 + ,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_X ,KC_BSLS ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL - ,TD(CT_MNS),KC_B ,KC_G ,KC_V ,KC_J ,KC_SLSH ,KC_NO + ,KC_MINS ,KC_B ,KC_K ,KC_V ,KC_J ,KC_SLSH ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,OSL(NMDIA),KC_DEL @@ -363,14 +370,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [NMDIA] = KEYMAP( // left hand - KC_ACL0 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L) -,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO -,KC_ACL2 ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO + M(A_ACL0) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L) +,M(A_ACL1) ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO +,M(A_ACL2) ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO ,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_MUTE ,KC_VOLU ,KC_VOLD - ,KC_SPC,KC_ENTER,M(A_ESC) + ,KC_SPC,KC_ENTER,KC_ESC // right hand ,LGUI(KC_L),KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO @@ -439,7 +446,7 @@ const uint16_t PROGMEM fn_actions[] = { ,[F_CTRL] = ACTION_MODS_ONESHOT (MOD_LCTL) }; -void toggle_steno(int pressed) +static void toggle_steno(int pressed) { uint8_t layer = biton32(layer_state); @@ -462,7 +469,7 @@ void toggle_steno(int pressed) } } -macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char) +static macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char) { uint8_t need_shift = 0; uint8_t hold_shift = 0; @@ -507,46 +514,43 @@ macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char) return MACRO_NONE; } -void ang_handle_kf (keyrecord_t *record, uint8_t id) +static bool from_appsel; + +static void ang_handle_kf (keyrecord_t *record, uint8_t id) { uint8_t code = id - KF_1; if (record->event.pressed) { kf_timers[code] = timer_read (); } else { - uint8_t kc; + uint8_t kc_base; - if (timer_elapsed (kf_timers[code]) > TAPPING_TERM) { + if (from_appsel) { + from_appsel = false; + return; + } + + if (kf_timers[code] && timer_elapsed (kf_timers[code]) > TAPPING_TERM) { // Long press - kc = KC_F1 + code; + kc_base = KC_F1; } else { - if (id == KF_11) - kc = KC_EQL; - else - kc = KC_1 + code; + kc_base = KC_1; } + kf_timers[code] = 0; + code += kc_base; - register_code (kc); - unregister_code (kc); + register_code (code); + unregister_code (code); } } +static struct { + uint8_t idx; +} m_accel_state; + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - case A_ESC: - if (record->event.pressed) { - if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) { - clear_oneshot_mods (); - } else { - register_code (KC_ESC); - } - layer_off (HUN); - } else { - unregister_code (KC_ESC); - } - break; - case A_MPN: if (record->event.pressed) { if (keyboard_report->mods & MOD_BIT(KC_LSFT) || @@ -588,6 +592,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case HU_UEE: return ang_do_hun (record, KC_EQL, KC_U); +#if MOUSEKEY_ENABLE /* Mouse movement */ case A_MUL: if (record->event.pressed) { @@ -633,6 +638,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) mousekey_send(); break; + case A_ACL0 ... A_ACL2: + if (record->event.pressed) { + uint8_t idx = id - A_ACL0; + if (m_accel_state.idx == id) { + mousekey_off(m_accel_state.idx - A_ACL0 + KC_ACL0); + m_accel_state.idx = 0; + } else { + if (m_accel_state.idx) { + mousekey_off(m_accel_state.idx - A_ACL0 + KC_ACL0); + m_accel_state.idx = 0; + } + mousekey_on(KC_ACL0 + idx); + m_accel_state.idx = id; + } + } + break; +#endif + /* Plover base */ case A_PLVR: toggle_steno(record->event.pressed); @@ -663,22 +686,34 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case APP_SLK: + from_appsel = true; return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END); case APP_EMCS: + from_appsel = true; return MACRODOWN(T(G), T(N), T(U), T(SPC), T(E), T(M), T(A), T(C), T(S), T(SPC), T(2), T(4), T(ENT), END); case APP_TERM: - return MACRODOWN(T(T), T(E), T(R), T(M), T(ENT), END); + from_appsel = true; + if (!record->event.pressed) { + register_code(KC_ESC); + unregister_code(KC_ESC); + wait_ms(TAPPING_TERM + 25); + register_code(KC_DEL); + unregister_code(KC_DEL); + } + break; case APP_CHRM: + from_appsel = true; return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END); case APP_MSIC: + from_appsel = true; return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END); /* Function keys */ - case KF_1 ... KF_11: + case KF_1 ... KF_10: ang_handle_kf (record, id); break; } @@ -686,12 +721,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; -uint8_t is_adore = 0; +static uint8_t is_adore = 0; // Runs just one time when the keyboard initializes. void matrix_init_user(void) { uint8_t dl; + set_unicode_input_mode(UC_LNX); + ergodox_led_all_on(); for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) { ergodox_led_all_set (i); @@ -709,120 +746,38 @@ void matrix_init_user(void) { dl = eeconfig_read_default_layer (); if (dl == (1UL << ADORE)) { is_adore = 1; -#if ADORE_AUTOLOG - log_enable = true; -#endif } }; LEADER_EXTERNS(); -void ang_do_unicode (void) { - register_code (KC_RCTL); - register_code (KC_RSFT); - register_code (KC_U); - unregister_code (KC_U); - unregister_code (KC_RSFT); - unregister_code (KC_RCTL); - wait_ms (100); -} +static void ang_tap (uint8_t code, ...) { + uint8_t kc = code; + va_list ap; -void ang_tap (uint16_t codes[]) { - for (int i = 0; codes[i] != 0; i++) { - register_code (codes[i]); - unregister_code (codes[i]); - wait_ms (50); - } + va_start(ap, code); + + do { + register_code(kc); + unregister_code(kc); + wait_ms(50); + kc = va_arg(ap, int); + } while (kc != 0); + va_end(ap); } #define TAP_ONCE(code) \ register_code (code); \ unregister_code (code) -void ang_tap_dance_bp_finished (qk_tap_dance_state_t *state, void *user_data) { - bool left, parens; - - if (state->count > 2) { - state->count = 0; - return; - } - - if (state->keycode == TD(CT_LBP)) - left = true; - else - left = false; - - if (state->count == 1) - parens = false; - else - parens = true; - - if (parens) { - register_code (KC_RSFT); - if (left) { - TAP_ONCE(KC_9); - } else { - TAP_ONCE(KC_0); - } - unregister_code (KC_RSFT); - } else { - if (left) { - TAP_ONCE (KC_LBRC); - } else { - TAP_ONCE (KC_RBRC); - } - } -} - -void ang_tap_dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code (KC_RSFT); - register_code (KC_SCLN); - } else if (state->count == 2) { - register_code (KC_SCLN); - } -} - -void ang_tap_dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code (KC_SCLN); - unregister_code (KC_RSFT); - } else if (state->count == 2) { - unregister_code (KC_SCLN); - } -} - -void ang_tap_dance_mns_finished (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code (KC_MINS); - } else if (state->count == 2) { - register_code (KC_RSFT); - register_code (KC_MINS); - } -} - -void ang_tap_dance_mns_reset (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code (KC_MINS); - } else if (state->count == 2) { - unregister_code (KC_RSFT); - unregister_code (KC_MINS); - } -} - typedef struct { bool layer_toggle; bool sticky; - bool finished_once; } td_ta_state_t; -void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { +static void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { td_ta_state_t *td_ta = (td_ta_state_t *) user_data; - if (td_ta->finished_once) { - return; - } - if (td_ta->sticky) { td_ta->sticky = false; td_ta->layer_toggle = false; @@ -830,7 +785,6 @@ void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { return; } - td_ta->finished_once = true; if (state->count == 1 && !state->pressed) { register_code (KC_TAB); td_ta->sticky = false; @@ -842,35 +796,29 @@ void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { } } -void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) { +static void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) { td_ta_state_t *td_ta = (td_ta_state_t *) user_data; if (!td_ta->layer_toggle) unregister_code (KC_TAB); if (!td_ta->sticky) layer_off (ARRW); - - td_ta->finished_once = false; } qk_tap_dance_action_t tap_dance_actions[] = { - [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_cln_finished, ang_tap_dance_cln_reset) - ,[CT_MNS] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_mns_finished, ang_tap_dance_mns_reset) + [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN) ,[CT_TA] = { .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset }, - .user_data = (void *)&((td_ta_state_t) { false, false, false }) + .user_data = (void *)&((td_ta_state_t) { false, false }) } - ,[CT_LBP] = ACTION_TAP_DANCE_FN (ang_tap_dance_bp_finished) - ,[CT_RBP] = ACTION_TAP_DANCE_FN (ang_tap_dance_bp_finished) + ,[CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN) + ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN) }; -static uint16_t uni[32]; -static uint8_t unicnt; -static bool unimagic = false; - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { uint8_t layer = biton32(layer_state); + bool is_arrow = false; if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM) unregister_code (KC_LGUI); @@ -893,13 +841,19 @@ void matrix_scan_user(void) { ergodox_right_led_2_set (LED_BRIGHTNESS_HI); } + if (layer_state & (1UL << ARRW)) { + ergodox_right_led_1_on (); + ergodox_right_led_3_on (); + is_arrow = true; + } + if (keyboard_report->mods & MOD_BIT(KC_LSFT) || ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { ergodox_right_led_1_set (LED_BRIGHTNESS_HI); ergodox_right_led_1_on (); } else { ergodox_right_led_1_set (LED_BRIGHTNESS_LO); - if (layer != NMDIA && layer != PLVR && layer != ADORE) + if (layer != NMDIA && layer != PLVR && layer != ADORE && !is_arrow) ergodox_right_led_1_off (); } @@ -919,7 +873,7 @@ void matrix_scan_user(void) { ergodox_right_led_3_on (); } else { ergodox_right_led_3_set (LED_BRIGHTNESS_LO); - if (layer != HUN && layer != PLVR && layer != ADORE) + if (layer != HUN && layer != PLVR && layer != ADORE && !is_arrow) ergodox_right_led_3_off (); } @@ -936,20 +890,17 @@ void matrix_scan_user(void) { } #endif + SEQ_ONE_KEY (KC_Q) { + register_code16 (LCTL(KC_1)); + unregister_code16 (LCTL(KC_1)); + } + SEQ_ONE_KEY (KC_T) { time_travel = !time_travel; } SEQ_ONE_KEY (KC_U) { - ang_do_unicode (); - } - - SEQ_TWO_KEYS (KC_LEAD, KC_U) { - unicnt = 0; - unimagic = true; - register_code(KC_RSFT); - TAP_ONCE(KC_U); - unregister_code(KC_RSFT); + qk_ucis_start(); } SEQ_ONE_KEY (KC_V) { @@ -958,25 +909,23 @@ void matrix_scan_user(void) { SEQ_ONE_KEY (KC_L) { /* λ */ - ang_do_unicode (); - - uint16_t codes[] = {KC_0, KC_3, KC_B, KC_B, KC_ENT, 0}; - ang_tap (codes); + unicode_input_start(); + register_hex(0x03bb); + unicode_input_finish(); } SEQ_ONE_KEY (KC_Y) { - uint16_t codes[] = {KC_BSLS, KC_O, KC_SLSH, 0}; - ang_tap (codes); + ang_tap (KC_BSLS, KC_O, KC_SLSH, 0); } SEQ_ONE_KEY (KC_S) { - ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC); + unicode_input_start(); register_hex(0xaf); unicode_input_finish(); TAP_ONCE (KC_BSLS); register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT); - ang_do_unicode (); TAP_ONCE (KC_3); TAP_ONCE (KC_0); TAP_ONCE (KC_C); TAP_ONCE (KC_4); TAP_ONCE (KC_SPC); + unicode_input_start (); register_hex(0x30c4); unicode_input_finish(); register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT); TAP_ONCE (KC_SLSH); - ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC); + unicode_input_start (); register_hex(0xaf); unicode_input_finish(); } SEQ_TWO_KEYS (KC_W, KC_M) { @@ -987,8 +936,7 @@ void matrix_scan_user(void) { wait_ms (1000); - uint16_t codes[] = {KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0}; - ang_tap (codes); + ang_tap (KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0); register_code (KC_LGUI); register_code (KC_UP); unregister_code (KC_UP); @@ -1013,13 +961,7 @@ void matrix_scan_user(void) { ergodox_right_led_2_off (); wait_ms (100); ergodox_right_led_1_off (); -#if ADORE_AUTOLOG - log_enable = true; -#endif } else { -#if ADORE_AUTOLOG - log_enable = false; -#endif is_adore = 0; default_layer_and (0); default_layer_or (1UL << BASE); @@ -1043,140 +985,38 @@ void matrix_scan_user(void) { static uint16_t last4[4]; -bool is_uni_seq(char *seq) { - uint8_t i; - - for (i = 0; seq[i]; i++) { - uint16_t code; - if (('1' <= seq[i]) && (seq[i] <= '9')) - code = seq[i] - '1' + KC_1; - else if (seq[i] == '0') - code = KC_0; - else - code = seq[i] - 'a' + KC_A; - - if (i > unicnt) - return false; - if (uni[i] != code) - return false; - } - - if (uni[i] == KC_ENT || uni[i] == KC_SPC) - return true; - - return false; -} - -uint16_t hex_to_keycode(uint8_t hex) -{ - if (hex == 0x0) { - return KC_0; - } else if (hex < 0xA) { - return KC_1 + (hex - 0x1); - } else { - return KC_A + (hex - 0xA); - } -} - -void register_hex(uint16_t hex) { - bool leading_zeros = true; - - for(int i = 3; i >= 0; i--) { - uint8_t digit = ((hex >> (i*4)) & 0xF); - if (digit != 0) - leading_zeros = false; - else if (leading_zeros) - continue; - register_code(hex_to_keycode(digit)); - unregister_code(hex_to_keycode(digit)); - wait_ms(10); - } -} - -typedef struct { - char *symbol; - uint16_t codes[4]; -} qk_ucis_symbol_t; - -static qk_ucis_symbol_t ucis_symbol_table[] = { - {"poop", {0x1, 0xf4a9, 0}}, - {"rofl", {0x1, 0xf923, 0}}, - {"kiss", {0x1, 0xf619, 0}}, - {"snowman", {0x2603, 0}}, - {NULL, {}} -}; - -bool process_record_ucis (uint16_t keycode, keyrecord_t *record) { - uint8_t i; - - if (!unimagic) - return true; - - if (!record->event.pressed) - return true; - - uni[unicnt] = keycode; - unicnt++; - - if (keycode == KC_BSPC) { - if (unicnt >= 2) { - unicnt-= 2; - return true; - } else { - unicnt--; - return false; - } - } - - if (keycode == KC_ENT || keycode == KC_SPC) { - bool symbol_found = false; - - for (i = unicnt; i > 0; i--) { - register_code (KC_BSPC); - unregister_code (KC_BSPC); - wait_ms(10); - } - - ang_do_unicode(); - wait_ms(10); - for (i = 0; ucis_symbol_table[i].symbol; i++) { - if (is_uni_seq (ucis_symbol_table[i].symbol)) { - symbol_found = true; - for (uint8_t j = 0; ucis_symbol_table[i].codes[j]; j++) { - register_hex(ucis_symbol_table[i].codes[j]); - } - break; - } - } - if (!symbol_found) { - for (i = 0; i < unicnt - 1; i++) { - uint8_t code; - - if (uni[i] > KF_1) - code = uni[i] - KF_1 + KC_1; - else - code = uni[i]; - TAP_ONCE(code); - wait_ms (10); - } - } - - unimagic = false; - return true; - } - return true; -} +const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE +( + UCIS_SYM("poop", 0x1f4a9), + UCIS_SYM("rofl", 0x1f923), + UCIS_SYM("kiss", 0x1f619), + UCIS_SYM("snowman", 0x2603), + UCIS_SYM("coffee", 0x2615), + UCIS_SYM("heart", 0x2764), + UCIS_SYM("bolt", 0x26a1) +); bool process_record_user (uint16_t keycode, keyrecord_t *record) { #if KEYLOGGER_ENABLE if (log_enable) { - xprintf ("KL: col=%d, row=%d\n", record->event.key.col, - record->event.key.row); + xprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col, + record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak"); } #endif - if (!process_record_ucis (keycode, record)) - return false; + if (keycode == KC_ESC && record->event.pressed) { + bool queue = true; + + if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) { + clear_oneshot_mods (); + queue = false; + } + if (layer_state & (1UL<event.pressed) { uint8_t p; @@ -1188,15 +1028,13 @@ bool process_record_user (uint16_t keycode, keyrecord_t *record) { last4[3] = keycode; if (last4[0] == KC_D && last4[1] == KC_A && last4[2] == KC_T && last4[3] == KC_E) { - uint16_t codes[] = {KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0}; - ang_tap (codes); + ang_tap (KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0); register_code (KC_RSFT); register_code (KC_EQL); unregister_code (KC_EQL); unregister_code (KC_RSFT); - uint16_t codes2[] = {KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0}; - ang_tap (codes2); + ang_tap (KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0); return false; } @@ -1204,3 +1042,17 @@ bool process_record_user (uint16_t keycode, keyrecord_t *record) { return true; } + +void qk_ucis_symbol_fallback (void) { + for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) { + uint8_t code; + + if (qk_ucis_state.codes[i] > KF_1) + code = qk_ucis_state.codes[i] - KF_1 + KC_1; + else + code = qk_ucis_state.codes[i]; + register_code(code); + unregister_code(code); + wait_ms (10); + } +} diff --git a/keyboards/ergodox/keymaps/algernon/readme.md b/keyboards/ergodox/keymaps/algernon/readme.md index 26dfddbe6a..5e7adb3320 100644 --- a/keyboards/ergodox/keymaps/algernon/readme.md +++ b/keyboards/ergodox/keymaps/algernon/readme.md @@ -3,11 +3,15 @@ algernon's layout ======================= -This is an unconventional layout for the ErgoDox EZ. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox]. +This is an unconventional layout for the [ErgoDox EZ][ez]. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox]. + [ez]: https://ergodox-ez.com/ [blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/ -Some of the things in the layout only work when one uses Spacemacs and GNOME under Linux. Your mileage may vary. +Some of the things in the layout only work when one uses [Spacemacs][spacemacs] and [GNOME][gnome] under Linux. Your mileage may vary. + + [spacemacs]: http://spacemacs.org/ + [gnome]: https://www.gnome.org/ ## Table of Contents @@ -40,10 +44,10 @@ At its core, this is a Dvorak layout, with some minor changes. The more interest * The `GUI` key is special, because when I double-tap it, it sends `GUI + w`, which pops up an application selector. It also switches to a one-shot layer, where the number row on the left half turns into app selector macros, for the most common things I usually want to switch to. Otherwise it behaves as on a normal layout. * The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode. * The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle. -* When holding any of the **Arrow** layer keys, the arrow layer activates while the layer key is held. Tapping the key produces the normal key. +* When holding the `Tab`/**Arrow** key, the arrow layer activates while the key is held. Tapping the key produces the normal, `Tab` key. Double-tapping it toggles the **Arrow** layer on until a third tap. * Tapping the `:` key once yields `:`, tapping it twice yields `;`. +* Tapping the `[{(`/`)}]` keys once yields `[` (or `{` when shifted), tapping them twice yields `(`. * The **Lead** key allows me to type in a sequence of keys, and trigger some actions: - - `LEAD u` enters unicode input mode, by sending the GTK+ key sequence that does this. - `LEAD l` uses the unicode input method to enter a `λ`. - `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯` - `LEAD y` types `\o/`. @@ -52,7 +56,7 @@ At its core, this is a Dvorak layout, with some minor changes. The more interest - `LEAD v` prints the firmware version, the keyboard and the keymap. - `LEAD d` toggles logging keypress positions to the HID console. - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader. - - `LEAD LEAD u` enters the [Unicode symbol input][#unicode-symbol-input] mode. + - `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode. ## ADORE layer @@ -91,6 +95,7 @@ For the layers, the following rules apply: * When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active. * When the [Hungarian layer](#hungarian-layer) is active, the *green* and *blue* LEDs are on. * When the [Navigation and media layer](#navigation-and-media-layer) is active, the *red* and *green* ones are on. +* When the **ARROW** layer is active, the *red* and *blue* ones are on. * For the [Steno layer](#steno-layer), all LEDs will be turned on. Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers use a stronger one, and modifiers override any layer preferences. For example, when on the one-handed layer, with the left side active (*red* light blinking), if `Shift` is on, the *red* light will be constantly on. @@ -116,7 +121,7 @@ This is an experimental feature, and may or may not work reliably. When the keypress logging functionality is enabled (by `LEAD d`), the keyboard will output a line every time a key is pressed, containing the position of the key in the matrix. This allows one to collect this information, and build analytics over it, such as a heat map, including dead keys too. -Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, simply point `tools/log-to-heatmap.py` to a base layout file (one is included in the `tools/` directory), and the key position log. The latter one can create by running `hid-listen`, and redirecting its output to a file. +Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, either pipe the output of `hid_listen` into it, or pipe it an already saved log, and it will save the results into files in an output directory (given on the command-line). See the output of `tools/log-to-heatmap.py --help` for more information. [kle]: http://www.keyboard-layout-editor.com/ @@ -151,7 +156,35 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the # Changelog -## v1.5 - 2016-08-12 +## v1.6 + +*2016-08-24* + +### Base layer changes + +* The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`. +* The `:;` and `-_` keys are now available on the base layer, on their [ADORE](#adore-layer) location, too, just below `[{(`/`]})`. +* The `Apps` key has been replaced by `F12`. +* The `-`/`_` is no longer a tap-dance key. + +### ADORE layer changes + +* Adjustments were made to the [ADORE](#adore-layer) layer, to separate some inconvenient combinations. + +### Miscellaneous changes + +* `LEAD u` now starts the symbolic unicode input system, instead of the OS-one. +* The mouse acceleration keys on the [Navigation and Media](#navigation-and-media-layer) layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off. +* When the **ARROW** layer is on, the *red* and *blue* LEDs light up now. + +### Heatmap + +* The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off. +* The heatmap generator received a lot of updates. + +## v1.5 + +*2016-08-12* * The **1HAND** layer has been removed. * A `Delete` key is now available on the right thumb cluster. @@ -161,7 +194,9 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the * On the **ARROW** layer, `Backspace` has been replaced by `Enter`. * There is some experimental support for entering Unicode symbols. -## v1.4 - 2016-07-29 +## v1.4 + +*2016-07-29* * When toggling the key logging on or off, the LEDs will do a little dance. * The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it. @@ -169,14 +204,18 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the * The `-`/`_` key was turned into a tap-dance key too. * There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`. -## v1.3 - 2016-07-06 +## v1.3 + +*2016-07-06* * Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a [heatmap](#heatmap) out of the logs. * The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the [base layer](#base-layer) for an image that shows where arrows are. * The **experimental** layer has been redone, and is now called [ADORE](#adore-layer), and as such, can be enabled by `LEAD a` now. * Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot. -## v1.2 - 2016-06-22 +## v1.2 + +*2016-06-22* * The forced NKRO mode can be easily toggled off at compile-time, to make the firmware compatible with [certain operating systems](#using-on-windows). * The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted. @@ -187,7 +226,9 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the * On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped. * The [Steno](#steno-layer) layer gained a few more `#` and `*` keys, to make it easier on my fingers. -## v1.1 - 2016-06-14 +## v1.1 + +*2016-06-14* * The keyboard starts in NKRO mode, bootmagic and other things are disabled. * A [Steno](#steno-layer) layer was added, to be used with Plover. @@ -201,7 +242,9 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the - `:` now inputs `;` when shifted. * `ESC` cancels the [Hungarian](#hungarian-layer) layer too, not just modifiers. -## v1.0 - 2016-05-26 +## v1.0 + +*2016-05-26* Initial version. diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json deleted file mode 100644 index 544f61ce87..0000000000 --- a/keyboards/ergodox/keymaps/algernon/tools/heatmap-adore-layout.json +++ /dev/null @@ -1,533 +0,0 @@ -[ - { - "backcolor": "#ffffff", - "name": "ErgoDox - algernon's layout: Heatmap", - "author": "Gergely Nagy ", - "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", - "switchMount": "cherry", - "switchBrand": "gateron", - "switchType": "KS-3-Tea", - "pcb": true, - "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" - }, - [ - { - "x": 3.5, - "c": "#a7d0db", - "fa": [ - 0, - 0, - 2 - ] - }, - "#\n3\nF3", - { - "x": 10.5, - "c": "#a7d0db", - "t": "#000000", - "a": 4, - "fa": [ - 0, - 0, - 2 - ] - }, - "*\n8\nF8" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "@\n2\nF2", - { - "x": 1, - "c": "#7adabd", - "t": "#000000" - }, - "$\n4\nF4", - { - "x": 8.5 - }, - "&\n7\nF7", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "(\n9\nF9" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "%\n5\nF5", - { - "c": "#f9cd31", - "a": 7, - "f": 2 - }, - "STENO", - { - "x": 4.5, - "f": 6 - }, - "", - { - "c": "#7adabd", - "a": 4, - "f": 3, - "fa": [ - 0, - 0, - 2 - ] - }, - "^\n6\nF6" - ], - [ - { - "y": -0.875, - "c": "#ffb2d2", - "f": 3, - "w": 1.5 - }, - "\n\n~\n`", - { - "t": "#0d0d0b" - }, - "!\n1\nF1", - { - "x": 14.5 - }, - ")\n0\nF10", - { - "a": 7, - "w": 1.5 - }, - "F11" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#a7d0db", - "t": "#000000", - "a": 6 - }, - "L", - { - "x": 10.5 - }, - "C" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b", - "a": 4 - }, - ">\n.", - { - "x": 1, - "c": "#7adabd", - "t": "#000000", - "a": 6 - }, - "W", - { - "x": 8.5 - }, - "H", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "P" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "M", - { - "c": "#93c9b7", - "a": 4, - "h": 1.5 - }, - "{\n[", - { - "x": 4.5, - "h": 1.5 - }, - "}\n]", - { - "c": "#7adabd", - "a": 6 - }, - "F" - ], - [ - { - "y": -0.875, - "c": "#ffb07b", - "t": "#0d0d0b", - "f": 6, - "w": 1.5 - }, - "\n\n", - { - "c": "#ffb2d2", - "a": 4, - "f": 3 - }, - "<\n,", - { - "x": 14.5, - "a": 6 - }, - "Y", - { - "a": 4, - "w": 1.5 - }, - "|\n\\" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#a7d0db", - "t": "#000000", - "a": 6 - }, - "E", - { - "x": 10.5 - }, - "T" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "O", - { - "x": 1, - "c": "#7adabd", - "t": "#000000", - "n": true - }, - "I", - { - "x": 8.5, - "n": true - }, - "R", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "N" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "U", - { - "x": 6.5 - }, - "D" - ], - [ - { - "y": -0.875, - "c": "#ffb2d2", - "t": "#0d0d0b", - "fa": [ - 6 - ], - "w": 1.5 - }, - "\n\nTab", - { - "f": 3 - }, - "A", - { - "x": 14.5, - "f": 3 - }, - "S", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6 - ], - "w": 1.5 - }, - "+\n=" - ], - [ - { - "y": -0.625, - "x": 6.5, - "c": "#93c9b7", - "t": "#000000", - "a": 7, - "h": 1.5 - }, - "(", - { - "x": 4.5, - "h": 1.5 - }, - ")" - ], - [ - { - "y": -0.75, - "x": 3.5, - "c": "#a7d0db", - "a": 4, - "f": 3 - }, - "\"\n'", - { - "x": 10.5 - }, - "V" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "Z", - { - "x": 1, - "c": "#7adabd", - "t": "#000000" - }, - "K", - { - "x": 8.5 - }, - "G", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "J" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "X", - { - "x": 6.5 - }, - "B" - ], - [ - { - "y": -0.875, - "c": "#ffb07b", - "f": 9, - "w": 1.5 - }, - "\n\n", - { - "c": "#ffb2d2", - "t": "#0d0d0b", - "a": 4, - "f": 3 - }, - "?\n/", - { - "x": 14.5, - "a": 6 - }, - "Q", - { - "c": "#ffb07b", - "t": "#000000", - "f": 9, - "w": 1.5 - }, - "" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#d9dae0", - "g": true, - "a": 7, - "f": 3 - }, - "", - { - "x": 10.5 - }, - "" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "", - { - "x": 1, - "c": "#d4872a", - "g": false, - "a": 5 - }, - ";\n:", - { - "x": 8.5 - }, - "_\n-", - { - "x": 1, - "c": "#d9dae0", - "g": true, - "a": 7 - }, - "" - ], - [ - { - "y": -0.75, - "x": 0.5 - }, - "", - {}, - "", - { - "x": 14.5 - }, - "", - {}, - "" - ], - [ - { - "r": 30, - "rx": 6.5, - "ry": 4.25, - "y": -1, - "x": 1, - "c": "#f9cd31", - "g": false - }, - "Alt", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 9 - ] - }, - "\n\n\n" - ], - [ - { - "c": "#d4872a", - "a": 7, - "f": 9, - "h": 2 - }, - "", - { - "h": 2 - }, - "", - { - "c": "#f9cd31", - "f": 3 - }, - "Ctrl" - ], - [ - { - "x": 2, - "c": "#e26757" - }, - "ESC" - ], - [ - { - "r": -30, - "rx": 13, - "y": -1, - "x": -3, - "c": "#f9cd31", - "f": 2 - }, - "MEDIA", - {}, - "1HAND" - ], - [ - { - "x": -3 - }, - "LEAD", - { - "c": "#d4872a", - "f": 9, - "h": 2 - }, - "", - { - "f": 3, - "h": 2 - }, - "SPC" - ], - [ - { - "x": -3, - "c": "#f9cd31", - "f": 2 - }, - "HUN" - ] -] diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json deleted file mode 100644 index 148bb1f23b..0000000000 --- a/keyboards/ergodox/keymaps/algernon/tools/heatmap-base-layout.json +++ /dev/null @@ -1,533 +0,0 @@ -[ - { - "backcolor": "#ffffff", - "name": "ErgoDox - algernon's layout: Heatmap", - "author": "Gergely Nagy ", - "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", - "switchMount": "cherry", - "switchBrand": "gateron", - "switchType": "KS-3-Tea", - "pcb": true, - "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" - }, - [ - { - "x": 3.5, - "c": "#a7d0db", - "fa": [ - 0, - 0, - 2 - ] - }, - "#\n3\nF3", - { - "x": 10.5, - "c": "#a7d0db", - "t": "#000000", - "a": 4, - "fa": [ - 0, - 0, - 2 - ] - }, - "*\n8\nF8" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "@\n2\nF2", - { - "x": 1, - "c": "#7adabd", - "t": "#000000" - }, - "$\n4\nF4", - { - "x": 8.5 - }, - "&\n7\nF7", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "(\n9\nF9" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "%\n5\nF5", - { - "c": "#f9cd31", - "a": 7, - "f": 2 - }, - "STENO", - { - "x": 4.5, - "f": 6 - }, - "", - { - "c": "#7adabd", - "a": 4, - "f": 3, - "fa": [ - 0, - 0, - 2 - ] - }, - "^\n6\nF6" - ], - [ - { - "y": -0.875, - "c": "#ffb2d2", - "f": 3, - "w": 1.5 - }, - "\n\n~\n`", - { - "t": "#0d0d0b" - }, - "!\n1\nF1", - { - "x": 14.5 - }, - ")\n0\nF10", - { - "a": 7, - "w": 1.5 - }, - "F11" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#a7d0db", - "t": "#000000", - "a": 4 - }, - ">\n.", - { - "x": 10.5, - "a": 6 - }, - "C" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b", - "a": 4 - }, - "<\n,", - { - "x": 1, - "c": "#7adabd", - "t": "#000000", - "a": 6 - }, - "P", - { - "x": 8.5 - }, - "G", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "R" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "Y", - { - "c": "#93c9b7", - "a": 4, - "h": 1.5 - }, - "{\n[", - { - "x": 4.5, - "h": 1.5 - }, - "}\n]", - { - "c": "#7adabd", - "a": 6 - }, - "F" - ], - [ - { - "y": -0.875, - "c": "#ffb07b", - "t": "#0d0d0b", - "f": 6, - "w": 1.5 - }, - "\n\n", - { - "c": "#ffb2d2", - "a": 4, - "f": 3 - }, - "\"\n'", - { - "x": 14.5, - "a": 6 - }, - "L", - { - "a": 4, - "w": 1.5 - }, - "|\n\\" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#a7d0db", - "t": "#000000", - "a": 6 - }, - "E", - { - "x": 10.5 - }, - "T" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "O", - { - "x": 1, - "c": "#7adabd", - "t": "#000000", - "n": true - }, - "U", - { - "x": 8.5, - "n": true - }, - "H", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "N" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "I", - { - "x": 6.5 - }, - "D" - ], - [ - { - "y": -0.875, - "c": "#ffb2d2", - "t": "#0d0d0b", - "fa": [ - 6 - ], - "w": 1.5 - }, - "\n\nTab", - { - "f": 3 - }, - "A", - { - "x": 14.5, - "f": 3 - }, - "S", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6 - ], - "w": 1.5 - }, - "+\n=" - ], - [ - { - "y": -0.625, - "x": 6.5, - "c": "#93c9b7", - "t": "#000000", - "a": 7, - "h": 1.5 - }, - "(", - { - "x": 4.5, - "h": 1.5 - }, - ")" - ], - [ - { - "y": -0.75, - "x": 3.5, - "c": "#a7d0db", - "a": 6 - }, - "J", - { - "x": 10.5 - }, - "W" - ], - [ - { - "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "Q", - { - "x": 1, - "c": "#7adabd", - "t": "#000000" - }, - "K", - { - "x": 8.5 - }, - "M", - { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" - }, - "V" - ], - [ - { - "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" - }, - "X", - { - "x": 6.5 - }, - "B" - ], - [ - { - "y": -0.875, - "c": "#ffb07b", - "f": 9, - "w": 1.5 - }, - "\n\n", - { - "c": "#ffb2d2", - "t": "#0d0d0b", - "a": 4, - "f": 3 - }, - "?\n/", - { - "x": 14.5, - "a": 6 - }, - "Z", - { - "c": "#ffb07b", - "t": "#000000", - "f": 9, - "w": 1.5 - }, - "" - ], - [ - { - "y": -0.375, - "x": 3.5, - "c": "#d9dae0", - "g": true, - "a": 7, - "f": 3 - }, - "", - { - "x": 10.5 - }, - "" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "", - { - "x": 1, - "c": "#d4872a", - "g": false, - "a": 5 - }, - ";\n:", - { - "x": 8.5 - }, - "_\n-", - { - "x": 1, - "c": "#d9dae0", - "g": true, - "a": 7 - }, - "" - ], - [ - { - "y": -0.75, - "x": 0.5 - }, - "", - {}, - "", - { - "x": 14.5 - }, - "", - {}, - "" - ], - [ - { - "r": 30, - "rx": 6.5, - "ry": 4.25, - "y": -1, - "x": 1, - "c": "#f9cd31", - "g": false - }, - "Alt", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 9 - ] - }, - "\n\n\n" - ], - [ - { - "c": "#d4872a", - "a": 7, - "f": 9, - "h": 2 - }, - "", - { - "h": 2 - }, - "", - { - "c": "#f9cd31", - "f": 3 - }, - "Ctrl" - ], - [ - { - "x": 2, - "c": "#e26757" - }, - "ESC" - ], - [ - { - "r": -30, - "rx": 13, - "y": -1, - "x": -3, - "c": "#f9cd31", - "f": 2 - }, - "MEDIA", - {}, - "1HAND" - ], - [ - { - "x": -3 - }, - "LEAD", - { - "c": "#d4872a", - "f": 9, - "h": 2 - }, - "", - { - "f": 3, - "h": 2 - }, - "SPC" - ], - [ - { - "x": -3, - "c": "#f9cd31", - "f": 2 - }, - "HUN" - ] -] diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json new file mode 100644 index 0000000000..4dfa877a78 --- /dev/null +++ b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json @@ -0,0 +1,553 @@ +[ + { + "backcolor": "#ffffff", + "name": "ErgoDox - algernon's layout: Heatmap", + "author": "Gergely Nagy ", + "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", + "switchMount": "cherry", + "switchBrand": "gateron", + "switchType": "KS-3-Tea", + "pcb": true, + "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" + }, + [ + { + "x": 3.5, + "c": "#a7d0db", + "fa": [ + 0, + 0, + 2 + ] + }, + "#\n3\nF3", + { + "x": 10.5, + "c": "#a7d0db", + "t": "#000000", + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + }, + "*\n8\nF8" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "@\n2\nF2", + { + "x": 1, + "c": "#7adabd", + "t": "#000000" + }, + "$\n4\nF4", + { + "x": 8.5 + }, + "&\n7\nF7", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "(\n9\nF9" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "%\n5\nF5", + { + "c": "#f9cd31", + "a": 7, + "f": 2 + }, + "STENO", + { + "x": 4.5, + "f": 3 + }, + "F12", + { + "c": "#7adabd", + "a": 4, + "f": 3, + "fa": [ + 0, + 0, + 2 + ] + }, + "^\n6\nF6" + ], + [ + { + "y": -0.875, + "c": "#ffb2d2", + "f": 9, + "a": 6, + "w": 1.5 + }, + "\n\n", + { + "t": "#0d0d0b", + "f": 3, + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + }, + "!\n1\nF1", + { + "x": 14.5 + }, + ")\n0\nF10", + { + "a": 7, + "w": 1.5 + }, + "F11" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#a7d0db", + "t": "#000000", + "a": 6 + }, + "G", + { + "x": 10.5 + }, + "C" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b", + "a": 6 + }, + "W", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "a": 6 + }, + "L", + { + "x": 8.5 + }, + "H", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "P" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "M", + { + "c": "#93c9b7", + "a": 4, + "fa": [0, 0, 0], + "h": 1.5 + }, + "{\n(\n[", + { + "x": 4.5, + "h": 1.5 + }, + "}\n)\n]", + { + "c": "#7adabd", + "a": 6 + }, + "F" + ], + [ + { + "y": -0.875, + "c": "#ffb07b", + "t": "#0d0d0b", + "f": 3, + "a": 4, + "w": 1.5 + }, + "\n\n~\n`", + { + "c": "#ffb2d2", + "a": 6, + "f": 3 + }, + "Y", + { + "x": 14.5, + "a": 6 + }, + "X", + { + "a": 4, + "w": 1.5 + }, + "|\n\\" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#a7d0db", + "t": "#000000", + "a": 6 + }, + "E", + { + "x": 10.5 + }, + "T" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "O", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "n": true + }, + "I", + { + "x": 8.5, + "n": true + }, + "R", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "N" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "U", + { + "x": 6.5 + }, + "D" + ], + [ + { + "y": -0.875, + "c": "#ffb2d2", + "t": "#0d0d0b", + "fa": [ + 6 + ], + "w": 1.5 + }, + "\n\nTab", + { + "f": 3 + }, + "A", + { + "x": 14.5, + "f": 3 + }, + "S", + { + "a": 4, + "fa": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6 + ], + "w": 1.5 + }, + "+\n=" + ], + [ + { + "y": -0.625, + "x": 6.5, + "c": "#93c9b7", + "t": "#000000", + "h": 1.5 + }, + ";\n:", + { + "x": 4.5, + "h": 1.5 + }, + "_\n-" + ], + [ + { + "y": -0.75, + "x": 3.5, + "c": "#a7d0db", + "a": 4, + "f": 3 + }, + "\"\n'", + { + "x": 10.5, + "a": 6, + "f": 3 + }, + "V" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b", + "a": 6 + }, + "Q", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "a": 4 + }, + "<\n,", + { + "x": 8.5, + "a": 6 + }, + "K", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "J" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000", + "a": 4 + }, + ">\n.", + { + "x": 6.5, + "a": 6 + }, + "B" + ], + [ + { + "y": -0.875, + "c": "#ffb07b", + "f": 9, + "w": 1.5, + "g": true + }, + "", + { + "c": "#ffb2d2", + "t": "#0d0d0b", + "a": 6, + "f": 3, + "g": false + }, + "Z", + { + "x": 14.5, + "a": 4 + }, + "?\n/", + { + "c": "#ffb07b", + "t": "#000000", + "f": 9, + "g": true, + "w": 1.5, + "a": 4 + }, + "" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#d9dae0", + "g": true, + "a": 7, + "f": 3 + }, + "", + { + "x": 10.5 + }, + "" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "", + { + "x": 1, + "c": "#d4872a", + "g": true, + "a": 5 + }, + "", + { + "x": 8.5 + }, + "", + { + "x": 1, + "c": "#d9dae0", + "g": true, + "a": 7 + }, + "" + ], + [ + { + "y": -0.75, + "x": 0.5 + }, + "", + {}, + "", + { + "x": 14.5 + }, + "", + {}, + "" + ], + [ + { + "r": 30, + "rx": 6.5, + "ry": 4.25, + "y": -1, + "x": 1, + "c": "#f9cd31", + "g": false + }, + "Alt", + { + "a": 4, + "fa": [ + 0, + 0, + 0, + 9 + ] + }, + "\n\n\n" + ], + [ + { + "c": "#d4872a", + "a": 7, + "f": 9, + "h": 2 + }, + "", + { + "h": 2 + }, + "", + { + "c": "#f9cd31", + "f": 3 + }, + "Ctrl" + ], + [ + { + "x": 2, + "c": "#e26757" + }, + "ESC" + ], + [ + { + "r": -30, + "rx": 13, + "y": -1, + "x": -3, + "c": "#f9cd31", + "f": 2 + }, + "MEDIA", + {}, + "DEL" + ], + [ + { + "x": -3 + }, + "HUN", + { + "c": "#d4872a", + "f": 9, + "h": 2 + }, + "", + { + "f": 3, + "h": 2 + }, + "SPC" + ], + [ + { + "x": -3, + "c": "#f9cd31", + "f": 2 + }, + "LEAD" + ] +] diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json new file mode 100644 index 0000000000..1248d36af7 --- /dev/null +++ b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json @@ -0,0 +1,542 @@ +[ + { + "backcolor": "#ffffff", + "name": "ErgoDox - algernon's layout: Heatmap", + "author": "Gergely Nagy ", + "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", + "switchMount": "cherry", + "switchBrand": "gateron", + "switchType": "KS-3-Tea", + "pcb": true, + "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" + }, + [ + { + "x": 3.5, + "c": "#a7d0db", + "fa": [ + 0, + 0, + 2 + ] + }, + "#\n3\nF3", + { + "x": 10.5, + "c": "#a7d0db", + "t": "#000000", + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + }, + "*\n8\nF8" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "@\n2\nF2", + { + "x": 1, + "c": "#7adabd", + "t": "#000000" + }, + "$\n4\nF4", + { + "x": 8.5 + }, + "&\n7\nF7", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "(\n9\nF9" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "%\n5\nF5", + { + "c": "#f9cd31", + "a": 7, + "f": 2 + }, + "STENO", + { + "x": 4.5, + "f": 3 + }, + "F12", + { + "c": "#7adabd", + "a": 4, + "f": 3, + "fa": [ + 0, + 0, + 2 + ] + }, + "^\n6\nF6" + ], + [ + { + "y": -0.875, + "c": "#ffb2d2", + "f": 6, + "a": 6, + "w": 1.5 + }, + "\n\n", + { + "f": 3, + "t": "#0d0d0b", + "a": 4, + "fa": [ + 0, + 0, + 2 + ] + + }, + "!\n1\nF1", + { + "x": 14.5 + }, + ")\n0\nF10", + { + "a": 7, + "w": 1.5 + }, + "F11" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#a7d0db", + "t": "#000000", + "a": 4 + }, + ">\n.", + { + "x": 10.5, + "a": 6 + }, + "C" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b", + "a": 4 + }, + "<\n,", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "a": 6 + }, + "P", + { + "x": 8.5 + }, + "G", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "R" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "Y", + { + "c": "#93c9b7", + "a": 4, + "h": 1.5 + }, + "{\n(\n[", + { + "x": 4.5, + "h": 1.5 + }, + "}\n)\n]", + { + "c": "#7adabd", + "a": 6 + }, + "F" + ], + [ + { + "y": -0.875, + "c": "#ffb07b", + "t": "#0d0d0b", + "f": 3, + "w": 1.5 + }, + "\n\n~\n`", + { + "c": "#ffb2d2", + "a": 4, + "f": 3 + }, + "\"\n'", + { + "x": 14.5, + "a": 6 + }, + "L", + { + "a": 4, + "w": 1.5 + }, + "|\n\\" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#a7d0db", + "t": "#000000", + "a": 6 + }, + "E", + { + "x": 10.5 + }, + "T" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "O", + { + "x": 1, + "c": "#7adabd", + "t": "#000000", + "n": true + }, + "U", + { + "x": 8.5, + "n": true + }, + "H", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "N" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "I", + { + "x": 6.5 + }, + "D" + ], + [ + { + "y": -0.875, + "c": "#ffb2d2", + "t": "#0d0d0b", + "fa": [ + 6 + ], + "w": 1.5 + }, + "\n\nTab", + { + "f": 3 + }, + "A", + { + "x": 14.5, + "f": 3 + }, + "S", + { + "a": 4, + "fa": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6 + ], + "w": 1.5 + }, + "+\n=" + ], + [ + { + "y": -0.625, + "x": 6.5, + "c": "#93c9b7", + "t": "#000000", + "a": 7, + "h": 1.5 + }, + "(", + { + "x": 4.5, + "h": 1.5 + }, + ")" + ], + [ + { + "y": -0.75, + "x": 3.5, + "c": "#a7d0db", + "a": 6 + }, + "J", + { + "x": 10.5 + }, + "W" + ], + [ + { + "y": -0.875, + "x": 2.5, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "Q", + { + "x": 1, + "c": "#7adabd", + "t": "#000000" + }, + "K", + { + "x": 8.5 + }, + "M", + { + "x": 1, + "c": "#bfbad1", + "t": "#0d0d0b" + }, + "V" + ], + [ + { + "y": -0.875, + "x": 5.5, + "c": "#7adabd", + "t": "#000000" + }, + "X", + { + "x": 6.5 + }, + "B" + ], + [ + { + "y": -0.875, + "c": "#ffb07b", + "f": 9, + "w": 1.5 + }, + "\n\n", + { + "c": "#ffb2d2", + "t": "#0d0d0b", + "a": 4, + "f": 3 + }, + "?\n/", + { + "x": 14.5, + "a": 6 + }, + "Z", + { + "c": "#ffb07b", + "t": "#000000", + "f": 9, + "w": 1.5 + }, + "" + ], + [ + { + "y": -0.375, + "x": 3.5, + "c": "#d9dae0", + "g": true, + "a": 7, + "f": 3 + }, + "", + { + "x": 10.5 + }, + "" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "", + { + "x": 1, + "c": "#d4872a", + "g": false, + "a": 5 + }, + ";\n:", + { + "x": 8.5 + }, + "_\n-", + { + "x": 1, + "c": "#d9dae0", + "g": true, + "a": 7 + }, + "" + ], + [ + { + "y": -0.75, + "x": 0.5 + }, + "", + {}, + "", + { + "x": 14.5 + }, + "", + {}, + "" + ], + [ + { + "r": 30, + "rx": 6.5, + "ry": 4.25, + "y": -1, + "x": 1, + "c": "#f9cd31", + "g": false + }, + "Alt", + { + "a": 4, + "fa": [ + 0, + 0, + 0, + 9 + ] + }, + "\n\n\n" + ], + [ + { + "c": "#d4872a", + "a": 7, + "f": 9, + "h": 2 + }, + "", + { + "h": 2 + }, + "", + { + "c": "#f9cd31", + "f": 3 + }, + "Ctrl" + ], + [ + { + "x": 2, + "c": "#e26757" + }, + "ESC" + ], + [ + { + "r": -30, + "rx": 13, + "y": -1, + "x": -3, + "c": "#f9cd31", + "f": 2 + }, + "MEDIA", + {}, + "DEL" + ], + [ + { + "x": -3 + }, + "LEAD", + { + "c": "#d4872a", + "f": 9, + "h": 2 + }, + "", + { + "f": 3, + "h": 2 + }, + "SPC" + ], + [ + { + "x": -3, + "c": "#f9cd31", + "f": 2 + }, + "HUN" + ] +] diff --git a/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py b/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py index a13d12e81a..68585843be 100755 --- a/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py +++ b/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py @@ -3,143 +3,247 @@ import json import os import sys import re +import argparse from math import floor +from os.path import dirname + +class Heatmap(object): + coords = [ + [ + # Row 0 + [ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2], + [ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6], + ], + [ + # Row 1 + [ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2], + [ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6], + ], + [ + # Row 2 + [12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ], + [ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6], + ], + [ + # Row 3 + [17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0], + [13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6], + ], + [ + # Row 4 + [20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [], + [19, 4], [18, 2], [19, 6], [20, 4], [20, 6], + ], + [ + # Row 5 + [ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2], + [24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ], + ], + ] + + def set_attr_at(self, block, n, attr, fn, val): + blk = self.heatmap[block][n] + if attr in blk: + blk[attr] = fn(blk[attr], val) + else: + blk[attr] = fn(None, val) + + def coord(self, col, row): + return self.coords[row][col] + + @staticmethod + def set_attr(orig, new): + return new + + def set_bg(self, (block, n), color): + self.set_attr_at(block, n, "c", self.set_attr, color) + #self.set_attr_at(block, n, "g", self.set_attr, False) + + def set_tap_info(self, (block, n), count, cap): + def _set_tap_info(o, _count, _cap): + ns = 4 - o.count ("\n") + return o + "\n" * ns + "%.02f%%" % (float(_count) / float(_cap) * 100) + + if not cap: + cap = 1 + self.heatmap[block][n + 1] = _set_tap_info (self.heatmap[block][n + 1], count, cap) + + @staticmethod + def heatmap_color (v): + colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]] + fb = 0 + if v <= 0: + idx1, idx2 = 0, 0 + elif v >= 1: + idx1, idx2 = len(colors) - 1, len(colors) - 1 + else: + val = v * (len(colors) - 1) + idx1 = int(floor(val)) + idx2 = idx1 + 1 + fb = val - float(idx1) + + r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0] + g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1] + b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2] + + r, g, b = [x * 255 for x in r, g, b] + return "#%02x%02x%02x" % (r, g, b) + + def __init__(self, layout): + self.log = {} + self.total = 0 + self.max_cnt = 0 + self.layout = layout + + def update_log(self, (c, r)): + if not (c, r) in self.log: + self.log[(c, r)] = 0 + self.log[(c, r)] = self.log[(c, r)] + 1 + self.total = self.total + 1 + if self.max_cnt < self.log[(c, r)]: + self.max_cnt = self.log[(c, r)] + + def get_heatmap(self): + with open("%s/heatmap-layout.%s.json" % (dirname(sys.argv[0]), self.layout), "r") as f: + self.heatmap = json.load (f) + + ## Reset colors + for row in self.coords: + for coord in row: + if coord != []: + self.set_bg (coord, "#d9dae0") + + for (c, r) in self.log: + coords = self.coord(c, r) + b, n = coords + cap = self.max_cnt + if cap == 0: + cap = 1 + v = float(self.log[(c, r)]) / cap + self.set_bg (coords, self.heatmap_color (v)) + self.set_tap_info (coords, self.log[(c, r)], self.total) + return self.heatmap + + def get_stats(self): + usage = [ + # left hand + [0, 0, 0, 0, 0], + # right hand + [0, 0, 0, 0, 0] + ] + finger_map = [0, 0, 1, 2, 3, 4, 4] + for (c, r) in self.log: + if r == 5: # thumb cluster + if c <= 6: # left side + usage[0][4] = usage[0][4] + self.log[(c, r)] + else: + usage[1][4] = usage[1][4] + self.log[(c, r)] + else: + fc = c + hand = 0 + if fc >= 7: + fc = fc - 7 + hand = 1 + fm = finger_map[fc] + usage[hand][fm] = usage[hand][fm] + self.log[(c, r)] + hand_usage = [0, 0] + for f in usage[0]: + hand_usage[0] = hand_usage[0] + f + for f in usage[1]: + hand_usage[1] = hand_usage[1] + f + + total = self.total + if total == 0: + total = 1 + stats = { + "hands": { + "left": { + "usage": float(hand_usage[0]) / total * 100, + "fingers": { + "0 - pinky": 0, + "1 - ring": 0, + "2 - middle": 0, + "3 - index": 0, + "4 - thumb": 0, + } + }, + "right": { + "usage": float(hand_usage[1]) / total * 100, + "fingers": { + "0 - thumb": 0, + "1 - index": 0, + "2 - middle": 0, + "3 - ring": 0, + "4 - pinky": 0, + } + }, + } + } + + hmap = ['left', 'right'] + fmap = ['0 - pinky', '1 - ring', '2 - middle', '3 - index', '4 - thumb', + '0 - thumb', '1 - index', '2 - middle', '3 - ring', '4 - pinky'] + for hand_idx in range(len(usage)): + hand = usage[hand_idx] + for finger_idx in range(len(hand)): + stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = float(hand[finger_idx]) / total * 100 + return stats + +def dump_all(out_dir, heatmaps): + for layer in heatmaps.keys(): + if len(heatmaps[layer].log) == 0: + continue -cr_coord_map = [ - [ - # Row 0 - [ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2], - [ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6], - ], - [ - # Row 1 - [ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2], - [ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6], - ], - [ - # Row 2 - [12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ], - [ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6], - ], - [ - # Row 3 - [17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0], - [13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6], - ], - [ - # Row 4 - [20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [], - [19, 4], [18, 2], [19, 6], [20, 4], [20, 6], - ], - [ - # Row 5 - [ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2], - [24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ], - ], -] - -def set_attr_at(j, b, n, attr, fn, val): - blk = j[b][n] - if attr in blk: - blk[attr] = fn(blk[attr], val) - else: - blk[attr] = fn(None, val) - -def coord(col, row): - return cr_coord_map[row][col] - -def set_attr(orig, new): - return new - -def set_bg(j, (b, n), color): - set_attr_at(j, b, n, "c", set_attr, color) - #set_attr_at(j, b, n, "g", set_attr, False) - -def _set_tap_info(o, count, cap): - ns = 4 - o.count ("\n") - return o + "\n" * ns + "%.02f%%" % (float(count) / float(cap) * 100) - -def set_tap_info(j, (b, n), count, cap): - j[b][n + 1] = _set_tap_info (j[b][n + 1], count, cap) - -def heatmap_color (v): - colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]] - fb = 0 - if v <= 0: - idx1, idx2 = 0, 0 - elif v >= 1: - idx1, idx2 = len(colors) - 1, len(colors) - 1 - else: - val = v * (len(colors) - 1) - idx1 = int(floor(val)) - idx2 = idx1 + 1 - fb = val - float(idx1) - - r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0] - g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1] - b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2] - - r, g, b = [x * 255 for x in r, g, b] - return "#%02x%02x%02x" % (r, g, b) - -# Load the keylog -def load_keylog(fname, restrict_row): - keylog = {} - total = 0 - with open(fname, "r") as f: - lines = f.readlines() - for line in lines: - m = re.search ('KL: col=(\d+), row=(\d+)', line) + with open ("%s/%s.json" % (out_dir, layer), "w") as f: + json.dump(heatmaps[layer].get_heatmap(), f) + print >>sys.stderr, "%s stats:" % (layer) + json.dump (heatmaps[layer].get_stats(), sys.stderr, + indent = 4, sort_keys = True) + print >>sys.stderr, "" + print >>sys.stderr, "" + +def main(opts): + + heatmaps = {"Dvorak": Heatmap("Dvorak"), + "ADORE": Heatmap("ADORE") + } + cnt = 0 + restrict_row = opts.restrict_row + out_dir = opts.outdir + + while True: + line = sys.stdin.readline() + if not line: + break + m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line) if not m: continue - (c, r) = (int(m.group (2)), int(m.group (1))) - if restrict_row != None and r != int(restrict_row): + + cnt = cnt + 1 + (c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4)) + if restrict_row != -1 and r != restrict_row: + continue + if c in opts.ignore_columns: continue - if (c, r) in keylog: - keylog[(c, r)] = keylog[(c, r)] + 1 - else: - keylog[(c, r)] = 1 - total = total + 1 - return total / 2, keylog - -def l_flat(s): - f = s.split("\n") - return ", ".join (f) - -def main(base_fn, log_fn, restrict_row = None): - - with open(base_fn, "r") as f: - layout = json.load (f) - - ## Reset colors - for row in cr_coord_map: - for col in row: - if col != []: - set_bg (layout, col, "#d9dae0") - #set_attr_at (layout, col[0], col[1], "g", set_attr, True) - - total, log = load_keylog (log_fn, restrict_row) - max_cnt = 0 - for (c, r) in log: - max_cnt = max(max_cnt, log[(c, r)]) - - # Create the heatmap - for (c, r) in log: - coords = coord(c, r) - b, n = coords - cap = max_cnt - v = float(log[(c, r)]) / cap - print >> sys.stderr, "%s => %d/%d => %f = %s" % (l_flat(layout[b][n+1]), log[(c,r)], cap, v, heatmap_color(v)) - set_bg (layout, coord(c, r), heatmap_color (v)) - set_tap_info (layout, coord (c, r), log[(c, r)], total) - - print json.dumps(layout) -if __name__ == "__main__": - if len(sys.argv) < 3: - print """Log to Heatmap -- creates a heatmap out of keyboard logs + heatmaps[l].update_log ((c, r)) + + if opts.dump_interval != -1 and cnt >= opts.dump_interval: + cnt = 0 + dump_all(out_dir, heatmaps) -Usage: log-to-heatmap.py base-layout.json logfile [row] >layout.json""" - sys.exit (1) - main(*sys.argv[1:]) + dump_all (out_dir, heatmaps) + +if __name__ == "__main__": + parser = argparse.ArgumentParser (description = "keylog to heatmap processor") + parser.add_argument ('outdir', action = 'store', + help = 'Output directory') + parser.add_argument ('--row', dest = 'restrict_row', action = 'store', type = int, + default = -1, help = 'Restrict processing to this row only') + parser.add_argument ('--dump-interval', dest = 'dump_interval', action = 'store', type = int, + default = 100, help = 'Dump stats and heatmap at every Nth event, -1 for dumping at EOF only') + parser.add_argument ('--ignore-column', dest = 'ignore_columns', action = 'append', type = int, + default = [], help = 'Ignore the specified columns') + args = parser.parse_args() + main(args) -- cgit v1.2.1 From 9778349c4bfb6723ef056eb3473a7fc15c45c435 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Wed, 24 Aug 2016 17:47:01 -0400 Subject: More notes --- keyboards/planck/keymaps/cbbrowne/readme.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md index fdb0997001..5af688bb17 100644 --- a/keyboards/planck/keymaps/cbbrowne/readme.md +++ b/keyboards/planck/keymaps/cbbrowne/readme.md @@ -67,12 +67,13 @@ doing sundry experimentation: * I use tmux quite a lot; the mollat keymap seems to have some interesting helpers. It might be interesting to add a "tmux - layer" + layer," or to have a few keys in a layer oriented towards that * The mollat tmux layer also suggests some thoughts about Emacs helpers. * I do not presently have anything that handles X11 screen switching, as with Control-Alt-various * I ought to probably look into KC_LEAD, to have some key combos that do not need to be concurrent - - + * The jeebak keymap seems to have some neat ideas: + - Number layer which is aggressive about having numbers in several places + - Touch layer seems interesting -- cgit v1.2.1 From fb8365a378b9393164d31b1dea42c95a9543f761 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 25 Aug 2016 23:28:10 +0300 Subject: Split vision_division into Makefile/rules.mk --- keyboards/vision_division/Makefile | 77 +------------------------------------- keyboards/vision_division/rules.mk | 70 ++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 75 deletions(-) create mode 100644 keyboards/vision_division/rules.mk diff --git a/keyboards/vision_division/Makefile b/keyboards/vision_division/Makefile index 4f3130c483..4e2a6f00fd 100644 --- a/keyboards/vision_division/Makefile +++ b/keyboards/vision_division/Makefile @@ -1,76 +1,3 @@ - - -# MCU name -MCU = at90usb1286 -# 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=1024 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= yes # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - - +endif \ No newline at end of file diff --git a/keyboards/vision_division/rules.mk b/keyboards/vision_division/rules.mk new file mode 100644 index 0000000000..063fba29bd --- /dev/null +++ b/keyboards/vision_division/rules.mk @@ -0,0 +1,70 @@ + + +# MCU name +MCU = at90usb1286 +# 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=1024 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= yes # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 \ No newline at end of file -- cgit v1.2.1 From 3300203157e8c0fe9004e759aa5c18f1a1996e7e Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 25 Aug 2016 23:37:18 +0300 Subject: Remove google test submodule It had been added for some strange reason, allthough it's supposed to be there only in another branch. --- lib/googletest | 1 - 1 file changed, 1 deletion(-) delete mode 160000 lib/googletest diff --git a/lib/googletest b/lib/googletest deleted file mode 160000 index ec44c6c167..0000000000 --- a/lib/googletest +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ec44c6c1675c25b9827aacd08c02433cccde7780 -- cgit v1.2.1 From 86ece6417644d2e9b5ea2548ff1dd4aa2ee8e354 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 25 Aug 2016 23:54:05 +0300 Subject: Fix minor typo in the readme --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index b1808b6d13..db0bf87837 100644 --- a/readme.md +++ b/readme.md @@ -54,10 +54,10 @@ Here are the steps 1. Install the Windows 10 subsystem for Linux, following [these instructions](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). 2. If you have previously cloned the repository using the normal Git bash, you will need to clean up the line endings. If you have cloned it after 20th of August 2016, you are likely fine. To clean up the line endings do the following 1. Make sure that you have no changes you haven't committed by running `git status`, if you do commit them first - 2. From within the Git bash run git rm --cached -r .` + 2. From within the Git bash run `git rm --cached -r .` 3. Followed by `git reset --hard` 3. Start the "Bash On Ubuntu On Windows" from the start menu -4. With the bash open, navigate to your git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive. +4. With the bash open, navigate to your Git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive. 5. Run `sudo util/install_dependencies.sh`. 6. After a while the installation will finish, and you are good to go -- cgit v1.2.1 From 6cfdd077b5bcdcfe8b390e4c07965eaf6c081c76 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Fri, 26 Aug 2016 00:05:58 +0300 Subject: Fix bad merge Led should have been added to KC60, not GH60 --- keyboards/gh60/rules.mk | 3 --- keyboards/kc60/rules.mk | 3 ++- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/keyboards/gh60/rules.mk b/keyboards/gh60/rules.mk index b3c5c7271c..aba680e45b 100644 --- a/keyboards/gh60/rules.mk +++ b/keyboards/gh60/rules.mk @@ -1,6 +1,3 @@ -# project specific files -SRC = led.c - # MCU name #MCU = at90usb1287 MCU = atmega32u4 diff --git a/keyboards/kc60/rules.mk b/keyboards/kc60/rules.mk index 4efd6f9887..a935ed19ee 100644 --- a/keyboards/kc60/rules.mk +++ b/keyboards/kc60/rules.mk @@ -1,4 +1,5 @@ - +# project specific files +SRC = led.c # MCU name #MCU = at90usb1287 -- cgit v1.2.1 From 3f0e1b3a8ea2e8013a77a8ce948d2f69bbdcd869 Mon Sep 17 00:00:00 2001 From: zs Date: Thu, 25 Aug 2016 20:56:15 +0200 Subject: Correct typo in kc60 workman-dead keymap and rename README.md to readme.md --- keyboards/kc60/keymaps/workman-dead/README.md | 17 ----------------- keyboards/kc60/keymaps/workman-dead/keymap.c | 8 ++++---- keyboards/kc60/keymaps/workman-dead/readme.md | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 21 deletions(-) delete mode 100644 keyboards/kc60/keymaps/workman-dead/README.md create mode 100644 keyboards/kc60/keymaps/workman-dead/readme.md diff --git a/keyboards/kc60/keymaps/workman-dead/README.md b/keyboards/kc60/keymaps/workman-dead/README.md deleted file mode 100644 index f1fcdc9606..0000000000 --- a/keyboards/kc60/keymaps/workman-dead/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Workman dead with spacefn (kc60 @ QMK) - -## Layout reference -![workman dead with spacefn](./kc60-wm-dead.png) - -## Build - -To build this keymap, simply run `make KEYMAP=workman-dead`. - -## Notes - -* the default layout is `workman` (try it out, it's awesome!), but it can be changed to `qwerty` with the `rebel` key (the function layer won't change though) -* `comma` acts as a dead key, that means tapping/holding it will activate the **oneshot** `dead key` layer (marked red in the reference) -* hold `space` to access the `function` layer (marked blue in the reference) -* hold `tab` to activate the mouse layer -* the `function` layer contains mostly osx specific shortcuts -* on the right side of the bottom row `alt` and `super` are switched compared to a standard layout diff --git a/keyboards/kc60/keymaps/workman-dead/keymap.c b/keyboards/kc60/keymaps/workman-dead/keymap.c index 9786e37d8c..9e3b9bb656 100644 --- a/keyboards/kc60/keymaps/workman-dead/keymap.c +++ b/keyboards/kc60/keymaps/workman-dead/keymap.c @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TABM, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, \ KC_LCTL, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, _______, KC_ENT, \ KC_LSFT, _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, DK_ACT, KC_DOT, KC_SLSH, _______, KC_RSFT, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_SPFN, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, KC_DFQW), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPFN, _______, KC_RALT, KC_RGUI, KC_RCTL, KC_DFQW), // QWERTY /* @@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TABM, 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_LCTL, 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, DK_ACT, KC_DOT, KC_SLSH, _______, KC_RSFT, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_SPFN, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, KC_DOWN), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPFN, _______, KC_RALT, KC_RGUI, KC_RCTL, KC_DFWM), // dead key layer /* @@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, KC_PERC, KC_AMPR, KC_QUES, KC_PLUS, KC_AT, KC_DLR, KC_UNDS, KC_LBRC, KC_RBRC, KC_EXLM, KC_TILD, KC_CIRC, _______, \ _______, KC_HASH, KC_LPRN, KC_EQL, KC_0, KC_LCBR, KC_RCBR, KC_1, KC_ASTR, KC_RPRN, KC_MINS, KC_GRV, _______, KC_CENT, \ _______, _______, KC_6, KC_7, KC_8, KC_9, KC_PIPE, KC_BSLS, KC_2, DK_REL, KC_4, KC_5, _______, _______, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_COMS, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, _______), + KC_LCTL, KC_LALT, KC_LGUI, KC_COMS, _______, KC_RALT, KC_RGUI, KC_RCTL, _______), // function layer /* @@ -119,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_CMDQ, KC_CMDD, KC_CSTB, KC_C_TB, _______, _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_INS, \ KC_LSFT, KC_CMDA, KC_CMDS, KC_C_LF, KC_C_RT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_END, _______, KC_BSPC, \ KC_LSFT, _______, KC_CMDZ, KC_CMDX, _______, KC_CMDC, KC_CMDV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, \ - KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, RESET), + KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, _______, KC_RALT, KC_RGUI, KC_RCTL, RESET), // mouse layer /* diff --git a/keyboards/kc60/keymaps/workman-dead/readme.md b/keyboards/kc60/keymaps/workman-dead/readme.md new file mode 100644 index 0000000000..f1fcdc9606 --- /dev/null +++ b/keyboards/kc60/keymaps/workman-dead/readme.md @@ -0,0 +1,17 @@ +# Workman dead with spacefn (kc60 @ QMK) + +## Layout reference +![workman dead with spacefn](./kc60-wm-dead.png) + +## Build + +To build this keymap, simply run `make KEYMAP=workman-dead`. + +## Notes + +* the default layout is `workman` (try it out, it's awesome!), but it can be changed to `qwerty` with the `rebel` key (the function layer won't change though) +* `comma` acts as a dead key, that means tapping/holding it will activate the **oneshot** `dead key` layer (marked red in the reference) +* hold `space` to access the `function` layer (marked blue in the reference) +* hold `tab` to activate the mouse layer +* the `function` layer contains mostly osx specific shortcuts +* on the right side of the bottom row `alt` and `super` are switched compared to a standard layout -- cgit v1.2.1 From ff0e0ee4595cb6d9cfa5a742c58b8f7705d9a3f3 Mon Sep 17 00:00:00 2001 From: JeeBak Kim Date: Fri, 26 Aug 2016 14:48:03 -0700 Subject: [tv44] Add "jeebak" keymap folder as a copy of the "default" folder --- keyboards/tv44/keymaps/jeebak/Makefile | 21 +++++++ keyboards/tv44/keymaps/jeebak/config.h | 8 +++ keyboards/tv44/keymaps/jeebak/keymap.c | 97 +++++++++++++++++++++++++++++++++ keyboards/tv44/keymaps/jeebak/readme.md | 1 + 4 files changed, 127 insertions(+) create mode 100644 keyboards/tv44/keymaps/jeebak/Makefile create mode 100644 keyboards/tv44/keymaps/jeebak/config.h create mode 100644 keyboards/tv44/keymaps/jeebak/keymap.c create mode 100644 keyboards/tv44/keymaps/jeebak/readme.md diff --git a/keyboards/tv44/keymaps/jeebak/Makefile b/keyboards/tv44/keymaps/jeebak/Makefile new file mode 100644 index 0000000000..f4671a9d11 --- /dev/null +++ b/keyboards/tv44/keymaps/jeebak/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/tv44/keymaps/jeebak/config.h b/keyboards/tv44/keymaps/jeebak/config.h new file mode 100644 index 0000000000..df06a26206 --- /dev/null +++ b/keyboards/tv44/keymaps/jeebak/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif \ No newline at end of file diff --git a/keyboards/tv44/keymaps/jeebak/keymap.c b/keyboards/tv44/keymaps/jeebak/keymap.c new file mode 100644 index 0000000000..f3f989f2d1 --- /dev/null +++ b/keyboards/tv44/keymaps/jeebak/keymap.c @@ -0,0 +1,97 @@ +#include "tv44.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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 _QW 0 +#define _DV 1 +#define _CM 2 +#define _L1 3 +#define _L2 4 +#define _L3 5 + +// Macro name shortcuts +#define QWERTY M(_QW) +#define DVORAK M(_DV) +#define COLEMAK M(_CM) + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_F, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, + {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } + }, + [_DV] = { /* Dvorak */ + {KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, + {MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1) }, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2) }, + {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } + }, + [_CM] = { /* Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC }, + {MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1) }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, + {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } + }, + [_L1] = { /* LAYER 1 */ + {KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, + {_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______ }, + {_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT }, + {_______, KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ } + }, + [_L2] = { /* LAYER 2 */ + {_______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______ }, + {KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_4, KC_5, KC_6, KC_VOLU, KC_ENT }, + {_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______ }, + {_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ } + }, + [_L3] = { /* LAYER 3 */ + {_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______ }, + {KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______ }, + {KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______ }, + {_______, KC_LSFT, KC_B, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_C, _______, _______, XXXXXXX, _______ } + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _DV: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_DV); + } + break; + case _QW: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_QW); + } + break; + case _CM: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_CM); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/tv44/keymaps/jeebak/readme.md b/keyboards/tv44/keymaps/jeebak/readme.md new file mode 100644 index 0000000000..ac84c08cfa --- /dev/null +++ b/keyboards/tv44/keymaps/jeebak/readme.md @@ -0,0 +1 @@ +# The default keymap for tv44 \ No newline at end of file -- cgit v1.2.1 From 5fe883e74b7f8a1265c2069d16e8dcbd25fab18b Mon Sep 17 00:00:00 2001 From: JeeBak Kim Date: Fri, 26 Aug 2016 15:05:51 -0700 Subject: [tv44] Port jeebak's planck keymap to tv44 --- keyboards/tv44/keymaps/jeebak/config.h | 17 +- keyboards/tv44/keymaps/jeebak/keymap.c | 460 +++++++++++++++++++++++++++----- keyboards/tv44/keymaps/jeebak/readme.md | 130 ++++++++- 3 files changed, 538 insertions(+), 69 deletions(-) diff --git a/keyboards/tv44/keymaps/jeebak/config.h b/keyboards/tv44/keymaps/jeebak/config.h index df06a26206..a59ef2b70a 100644 --- a/keyboards/tv44/keymaps/jeebak/config.h +++ b/keyboards/tv44/keymaps/jeebak/config.h @@ -3,6 +3,19 @@ #include "../../config.h" -// place overrides here +/** + *TV44 keymap definition macro + */ +#define KEYMAP_TV44( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \ + K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \ + K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \ + K37, K38, K39, K40, K41, K42, K43, K44 \ +) { \ + { K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \ + { K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \ + { K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \ + { K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, KC_NO, K44 } \ +} -#endif \ No newline at end of file +#endif diff --git a/keyboards/tv44/keymaps/jeebak/keymap.c b/keyboards/tv44/keymaps/jeebak/keymap.c index f3f989f2d1..1bb1015c36 100644 --- a/keyboards/tv44/keymaps/jeebak/keymap.c +++ b/keyboards/tv44/keymaps/jeebak/keymap.c @@ -8,65 +8,281 @@ extern keymap_config_t keymap_config; // 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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _TOUCHCURSOR 6 +#define _MOUSECURSOR 7 +#define _ADJUST 16 -#define _QW 0 -#define _DV 1 -#define _CM 2 -#define _L1 3 -#define _L2 4 -#define _L3 5 +// Keycodes +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV +}; -// Macro name shortcuts -#define QWERTY M(_QW) -#define DVORAK M(_DV) -#define COLEMAK M(_CM) +enum macro_keycodes { + KC_ALT_TAB, + KC_CMD_TAB, + KC_CTL_TAB, + KC_CMD_SLSH, + KC_AG_FIND, + KC_AG_AGAIN, + KC_AG_UNDO, + KC_AG_CUT, + KC_AG_COPY, + KC_AG_PASTE, + KC_AG_DESK_L, + KC_AG_DESK_R, + KC_AG_TAB_C, + KC_AG_TAB_N, + KC_AG_TAB_R, +}; // Fillers to make layering more clear #define _______ KC_TRNS #define XXXXXXX KC_NO +// Custom macros +#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl +#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift +#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper +#define GUI_SEM GUI_T(KC_SCLN) // Tap for Semicolon, hold for GUI +#define ALT_QUO ALT_T(KC_QUOT) // Tap for Quote, hold for Alt +// Requires KC_TRNS/_______ for the trigger key in the destination layer +#define LT_TC LT(_TOUCHCURSOR, KC_SPC) // L-ayer T-ap T-ouch C-ursor +#define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor +#define ALT_TAB M(KC_ALT_TAB) // Macro for Alt-Tab +#define CMD_TAB M(KC_CMD_TAB) // Macro for Cmd-Tab +#define CTL_TAB M(KC_CTL_TAB) // Macro for Ctl-Tab +#define CMD_SLSH M(KC_CMD_SLSH) // Macro for Cmd-Slash (personal shortcut to toggle iTerm2 visibility) +#define AG_FIND M(KC_AG_FIND) // Macros for Cmd-[x] vs Ctrl-[x] based on current AG_NORM or AG_SWAP settings +#define AG_AGAIN M(KC_AG_AGAIN) +#define AG_UNDO M(KC_AG_UNDO) +#define AG_CUT M(KC_AG_CUT) +#define AG_COPY M(KC_AG_COPY) +#define AG_PASTE M(KC_AG_PASTE) +#define AG_D_L M(KC_AG_DESK_L) // For Virtual Desktop Switching: Left, and +#define AG_D_R M(KC_AG_DESK_R) // Right +#define AG_T_C M(KC_AG_TAB_C) // For Chrome, etc. Tab Close, +#define AG_T_N M(KC_AG_TAB_N) // Tab New, and +#define AG_T_R M(KC_AG_TAB_R) // Tab Reopen Closed const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, - {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) }, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_F, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, - {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } - }, - [_DV] = { /* Dvorak */ - {KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, - {MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1) }, - {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2) }, - {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } - }, - [_CM] = { /* Colemak */ - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC }, - {MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1) }, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, - {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } - }, - [_L1] = { /* LAYER 1 */ - {KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, - {_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______ }, - {_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT }, - {_______, KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ } - }, - [_L2] = { /* LAYER 2 */ - {_______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______ }, - {KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_4, KC_5, KC_6, KC_VOLU, KC_ENT }, - {_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______ }, - {_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ } - }, - [_L3] = { /* LAYER 3 */ - {_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______ }, - {KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______ }, - {KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______ }, - {_______, KC_LSFT, KC_B, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_C, _______, _______, XXXXXXX, _______ } - } -}; -const uint16_t PROGMEM fn_actions[] = { +/* Qwerty + * + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * |Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | Ctrl/Esc | A | S | MC/D | F | G | H | J | K | L |GUI/; | Alt/" | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Sft/Ent | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + */ +[_QWERTY] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + CTL_ESC , KC_A, KC_S,LT_MC(KC_D), KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, GUI_SEM, ALT_QUO , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + KC_LALT , KC_LGUI , LOWER , LT_TC , LT_TC , RAISE , KC_VOLU , KC_MPLY ), +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ + +/* Colemak + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * |Hyper/Tab| Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | Ctrl/Esc | A | R | MC/S | T | D | H | N | E | I | O | " | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | Shift | Z | X | C | V | B | K | M | , | . | / | Sft/Ent | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + */ +[_COLEMAK] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + CTL_ESC , KC_A, KC_R,LT_MC(KC_S), KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + KC_LALT , KC_LGUI , LOWER , LT_TC , LT_TC , RAISE , KC_VOLU , KC_MPLY ), +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ + +/* Dvorak + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * |Hyper/Tab| " | , | . | P | Y | F | G | C | R | L | Bksp | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | Ctrl/Esc | A | O | MC/E | U | I | D | H | T | N | S | / | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | Shift | ; | Q | J | K | X | B | M | W | V | Z | Sft/Ent | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + */ +[_DVORAK] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + CTL_ESC , KC_A, KC_O,LT_MC(KC_E), KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + KC_LSFT , KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + KC_LALT , KC_LGUI , LOWER , LT_TC , LT_TC , RAISE , KC_VOLU , KC_MPLY ), +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ + +/* Lower + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | [ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | "|" | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | ] | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | \ | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | Brite | | | | | | Vol- | Mute | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + */ +[_LOWER] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + KC_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + KC_LBRC , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + KC_RBRC , KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + BACKLIT , _______ , _______ , _______ , _______ , _______ , KC_VOLD , KC_MUTE ), +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ + +/* Raise + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | $ | 4 | 5 | 6 | . | + | . | 4 | 5 | 6 | * | "|" | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | = | 7 | 8 | 9 | 0 | - | . | 1 | 2 | 3 | / | \ | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | Brite | | | | | | Vol- | Mute | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + */ +[_RAISE] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + KC_DLR , KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_DOT, KC_4, KC_5, KC_6, KC_ASTR, KC_PIPE , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + KC_EQL , KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_DOT, KC_1, KC_2, KC_3, KC_SLSH, KC_BSLS , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + BACKLIT , _______ , _______ , _______ , _______ , _______ , KC_VOLD , KC_MUTE ), +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ + +/* TouchCursor layer (http://martin-stone.github.io/touchcursor/) plus personal customizations + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * | AltTab |CmdTab|CtlTab| GUI |Shift | ~ |Insert| Home | Up | End | Bksp | | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | | Alt |Space |Tab_C | Find |Again | PgUp | Left | Down |Right |Desk_L| Desk_R | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | | Undo | Cut | Copy |Paste | ` | PgDn | Del |Tab_N |Tab_R |iTerm2| | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | | | | | | | | | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + * + * The KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND, and KC_AGAIN keycodes don't + * seem to work on Mac. Presumably they'll work under Windows. + */ +[_TOUCHCURSOR] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + ALT_TAB,CMD_TAB, CTL_TAB, KC_LGUI, KC_LSFT, KC_TILD, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______ , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + _______ ,KC_LALT, KC_SPC, AG_T_C, AG_FIND,AG_AGAIN, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, AG_D_L, AG_D_R , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + _______ ,AG_UNDO, AG_CUT, AG_COPY,AG_PASTE, KC_GRV, KC_PGDN, KC_DEL, AG_T_N, AG_T_R,CMD_SLSH, _______ , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ), +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ + +/* Mouse Layer + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * | | |ACCL0 | | | | |WHL_L | Up |WHL_R | BTN2 | | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | |ACCL2 | BTN2 | | BTN1 |ACCL1 |WHL_Up| Left | Down |Right | BTN4 | BTN5 | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | | | | | BTN3 | |WHL_Dn| BTN1 | | | BTN3 | | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | | | | | | | | | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + */ + +[_MOUSECURSOR] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + _______,_______, KC_ACL0, _______, _______, _______, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______ , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + _______ ,KC_ACL2, KC_BTN2, _______, KC_BTN1, KC_ACL1, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN4, KC_BTN5 , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + _______ ,_______, _______, _______, KC_BTN3, _______, KC_WH_D, KC_BTN1, _______, _______, KC_BTN3, _______ , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ), +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ + +/* Plover layer (http://opensteno.org) + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | TogOut | S | K | W | R | * | * | R | B | G | S | Z | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | Exit | A | O | | | E | U | | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + */ + +[_PLOVER] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + KC_1 , KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + XXXXXXX , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + XXXXXXX , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + EXT_PLV , KC_C , KC_V , XXXXXXX , XXXXXXX , KC_N , KC_M , XXXXXXX ), +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ + +/* Adjust (Lower + Raise) + * ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + * | | | | | | | | | | | | Del | + * |---------`------`------`------`------`------`------`------`------`------`------`-------------| + * | | | | | |AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |----------`------`------`------`------`------`------`------`------`------`------`------------| + * | | | | | | | | | | | | | + * |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + * | | | | | | | | Reset | + * `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' + */ +[_ADJUST] = KEYMAP_TV44( +/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ + _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , +/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ + _______ ,_______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______ , +/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ + _______ ,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , +/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ + _______ , _______ , _______ , _______ , _______ , _______ , _______ , RESET ) +/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ }; void persistant_default_layer_set(uint16_t default_layer) { @@ -74,24 +290,136 @@ void persistant_default_layer_set(uint16_t default_layer) { default_layer_set(default_layer); } +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +/* + * Macro definition + */ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch(id) { - case _DV: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_DV); - } - break; - case _QW: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_QW); - } - break; - case _CM: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_CM); - } - break; - } + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + + bool use_cmd = true; // Use, for example, Cmd-Tab, Cmd-C, Cmd-V, etc. + // Compare to MAGIC_SWAP_ALT_GUI and MAGIC_UNSWAP_ALT_GUI configs, set in: + // quantum/quantum.c + if(keymap_config.swap_lalt_lgui == 1 && keymap_config.swap_ralt_rgui == 1) { + use_cmd = false; // ... or, Alt-Tab, Ctrl-C, Ctrl-V, etc. + } + + switch (id) { + case KC_ALT_TAB: + if(use_cmd) { return (record->event.pressed ? MACRO( D(LALT), D(TAB), END ) : MACRO( U(TAB), END )); } + else { return (record->event.pressed ? MACRO( D(LGUI), D(TAB), END ) : MACRO( U(TAB), END )); } + case KC_CMD_TAB: + if(use_cmd) { return (record->event.pressed ? MACRO( D(LGUI), D(TAB), END ) : MACRO( U(TAB), END )); } + else { return (record->event.pressed ? MACRO( D(LALT), D(TAB), END ) : MACRO( U(TAB), END )); } + + case KC_CTL_TAB: + return (record->event.pressed ? MACRO( D(LCTRL), D(TAB), END ) : MACRO( U(TAB), END )); + case KC_CMD_SLSH: + return (record->event.pressed ? MACRO( D(LGUI), D(SLSH),END ) : MACRO( U(SLSH),END )); + + case KC_AG_FIND: + return use_cmd ? MACRODOWN( D(LGUI), T(F), END ) : MACRODOWN( D(LCTRL), T(F), END ); + case KC_AG_AGAIN: + return use_cmd ? MACRODOWN( D(LGUI), T(G), END ) : MACRODOWN( D(LCTRL), T(G), END ); + case KC_AG_UNDO: + return use_cmd ? MACRODOWN( D(LGUI), T(Z), END ) : MACRODOWN( D(LCTRL), T(Z), END ); + case KC_AG_CUT: + return use_cmd ? MACRODOWN( D(LGUI), T(X), END ) : MACRODOWN( D(LCTRL), T(X), END ); + case KC_AG_COPY: + return use_cmd ? MACRODOWN( D(LGUI), T(C), END ) : MACRODOWN( D(LCTRL), T(C), END ); + case KC_AG_PASTE: + return use_cmd ? MACRODOWN( D(LGUI), T(V), END ) : MACRODOWN( D(LCTRL), T(V), END ); + + case KC_AG_DESK_L: + return use_cmd ? MACRODOWN( D(LGUI), D(LCTRL), T(SCLN), END ) : MACRODOWN( D(LALT), D(LCTRL), T(SCLN), END ); + case KC_AG_DESK_R: + return use_cmd ? MACRODOWN( D(LGUI), D(LCTRL), T(QUOT), END ) : MACRODOWN( D(LALT), D(LCTRL), T(QUOT), END ); + + case KC_AG_TAB_C: + return use_cmd ? MACRODOWN( D(LGUI), T(W), END ) : MACRODOWN( D(LCTRL), T(W), END ); + case KC_AG_TAB_N: + return use_cmd ? MACRODOWN( D(LGUI), T(T), END ) : MACRODOWN( D(LCTRL), T(T), END ); + case KC_AG_TAB_R: + return use_cmd ? MACRODOWN( D(LGUI), D(LSHIFT), T(T), END ) : MACRODOWN( D(LCTRL), D(LSHIFT), T(T), END ); + } + return MACRO_NONE; -}; +} diff --git a/keyboards/tv44/keymaps/jeebak/readme.md b/keyboards/tv44/keymaps/jeebak/readme.md index ac84c08cfa..43d20958a6 100644 --- a/keyboards/tv44/keymaps/jeebak/readme.md +++ b/keyboards/tv44/keymaps/jeebak/readme.md @@ -1 +1,129 @@ -# The default keymap for tv44 \ No newline at end of file +jeebak's TV44 layout +======================= +NOTE: This is a port of jeebak's planck layout, for tv44. + +This WIP keymap attempts to minimize fingers straying away from the home row. +To aid in this endeavor, when additional modifyer keys to switch layers are +needed, they will be mapped to home row keys. The `keymap.c` file will contain +the exact changes. The diagrams in this README shows the highlights of the +changes from the default mappings. + +I also decided to change all calls to `persistant_default_layer_set()` to +`default_layer_set()` since this is my personal perference. + +## Macros +``` +#define ALT_TAB M(KC_ALT_TAB) +``` + +## Base Layers (Qwerty/Colemak/Dvorak) +These base layers are mostly the same as the default mappings. The interesting +changes are shown below. + +- The `Ctrl/Esc`, will emit an `Escape` when tapped, and act as a `Control` key when held, +- `GUI/;` as `;` and `GUI`, +- `Alt/"` as `"` and `Alt`, +- `Sft/Ent` as `Enter` and `Shift`, and +- `Hyper/Tab` as `Tab` and `Hyper` + +A `TODO` item is to see if it can also act as a `CapsLock` when double-tapped. +The arrow keys, which have been moved to the +[TouchCursor](http://martin-stone.github.io/touchcursor/) layer, have been +replaced with the Media keys as shown. The `MC/kc` key activates the +`MouseCursor` layer when held, and emits the corresponding `kc` for its layer, +when tapped. +``` + ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + |Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp | + |---------`------`------`------`------`------`------`------`------`------`------`-------------| + | Ctrl/Esc | A | S | MC/D | F | G | H | J | K | L |GUI/; | Alt/" | + |----------`------`------`------`------`------`------`------`------`------`------`------------| + | Shift | Z | X | C | V | B | N | M | , | . | / | Sft/Ent | + |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol+ | Play | + `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' +``` + +## Lower Layer (Symbols and Function Keys) +The symbols and functions keys are essentially the same as the default mapping. +The most notable changes are that the symbol keys from the `RAISE` layer have +been moved here. The remaining Media keys replace those that are now on the +base layers. The `BACKLIT` key has also been moved here. +``` + ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + |---------`------`------`------`------`------`------`------`------`------`------`-------------| + | [ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | "|" | + |----------`------`------`------`------`------`------`------`------`------`------`------------| + | ] | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | \ | + |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + | Brite | | | | | | Vol- | Mute | + `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' +``` + +## Raise Layer (Numbers and Arithmetic Operators) +All of the numbers and arithmetic operators are available on this layer. Some +keys are duplicated for the convenience of their positions. The `0` and `$` +keys at the far left are for quick access to beginning and end of line in vim. +``` + ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + |---------`------`------`------`------`------`------`------`------`------`------`-------------| + | $ | 4 | 5 | 6 | . | + | . | 4 | 5 | 6 | * | "|" | + |----------`------`------`------`------`------`------`------`------`------`------`------------| + | = | 7 | 8 | 9 | 0 | - | . | 1 | 2 | 3 | / | \ | + |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + | Brite | | | | | | Vol- | Mute | + `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' +``` + +## TouchCursor layer plus personal customizations +[TouchCursor](http://martin-stone.github.io/touchcursor/) uses the `Space` key +as the modifier, with the `IJKL` home row keys representing the inverted-T of +the arrow keys. All of the default TouchCursor keymappings for the right hand +are represented below. My personalizations include all of the keys shown for +the left hand. Having the `Alt` and `Shift` keys (as well as the `Control` key +from the base layers) readily accessible from the home row allows quick word +jumps and highlighting when used in conjunction with the arrow keys. The +`Alt-Tab` macro is not only useful under Windows, but also under Mac when used +with alternative switchers like [HyperSwitch](https://bahoom.com/hyperswitch). +The `Cmd-Tab` and `Ctrl-Tab` sequences are duplicated for easy access while in +this layer. The `KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND,` and `KC_AGAIN` +keycodes do not seem to work. There are macros in place that'll "automatically" +choose the correct version (`Cmd-Tab` vs. `Alt-Tab`, `Cmd-C` vs. `Ctrl-C`, +etc.) depending on which layout you've currently selected (`AG_NORM` or +`AG_SWAP`) in the `_ADJUST` layer. The `Desk_L` and `Desk_R` macros are what I +use to switch between Virtual Desktops Left/Right. The `Tab_C`, `Tab_N` and +`Tab_R` are for "Close Tab," "New Tab" and "Reopen Closed Tab" for apps such as +Google Chrome. +``` + ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + | AltTab |CmdTab|CtlTab| GUI |Shift | ~ |Insert| Home | Up | End | Bksp | | + |---------`------`------`------`------`------`------`------`------`------`------`-------------| + | | Alt |Space |Tab_C | Find |Again | PgUp | Left | Down |Right |Desk_L| Desk_R | + |----------`------`------`------`------`------`------`------`------`------`------`------------| + | | Undo | Cut | Copy |Paste | ` | PgDn | Del |Tab_N |Tab_R |iTerm2| | + |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + | | | | | | | | | + `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' +``` + +## Mouse Layer +The Mouse layer, closely mimics the layout/behaviour of the TouchCursor layer. +The `D` key (on QWERTY) is used to activate this layer. All 16 keycodes for the +mouse from the `doc/keycode.txt` file are represented, and logically located, +IMHO. The left and right click buttons are duplicated; on the right hand side, +for a quick click here and there, and again on the left hand side for when the +buttons need to be held for dragging things or highlighting text, thus allowing +the right hand to be free to use the up/down/left/right actions. +``` + ,---------+------+------+------+------+------+------+------+------+------+------+-------------. + | | |ACCL0 | | | | |WHL_L | Up |WHL_R | BTN2 | | + |---------`------`------`------`------`------`------`------`------`------`------`-------------| + | |ACCL2 | BTN2 | | BTN1 |ACCL1 |WHL_Up| Left | Down |Right | BTN4 | BTN5 | + |----------`------`------`------`------`------`------`------`------`------`------`------------| + | | | | | BTN3 | |WHL_Dn| BTN1 | | | BTN3 | | + |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------| + | | | | | | | | | + `--------+---------+---------+------^^^-------+-----^^^--------+---------+---------+---------' +``` -- cgit v1.2.1 From de58ec9738deebe73a43b9511c8df441c6f81efa Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 18:37:28 +0300 Subject: Set eep files to binary mode --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index 8fd1fd7525..92dfc3c617 100644 --- a/.gitattributes +++ b/.gitattributes @@ -91,3 +91,4 @@ GRAPHICS # hex files *.hex binary +*.eep binary -- cgit v1.2.1 From a5b1af4999345239df5086351b52a5b4d2daa97e Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 18:40:50 +0300 Subject: Normalize line endings --- .../chibios_test/boards/GENERIC_STM32_F103/board.c | 98 +- .../chibios_test/boards/GENERIC_STM32_F103/board.h | 332 ++-- .../boards/GENERIC_STM32_F103/board.mk | 10 +- keyboards/chibios_test/ld/MKL26Z64.ld | 210 +-- .../ld/STM32F103x8_stm32duino_bootloader.ld | 176 +- keyboards/chibios_test/stm32_f072_onekey/mcuconf.h | 342 ++-- keyboards/chibios_test/stm32_f103_onekey/mcuconf.h | 418 ++--- keyboards/chibios_test/teensy_lc_onekey/chconf.h | 1048 +++++------ keyboards/chibios_test/teensy_lc_onekey/halconf.h | 374 ++-- keyboards/chibios_test/teensy_lc_onekey/mcuconf.h | 110 +- keyboards/gh60/Makefile | 148 +- keyboards/gh60/config.h | 322 ++-- keyboards/gh60/gh60.c | 50 +- keyboards/gh60/gh60.h | 148 +- keyboards/gh60/keymaps/robotmaxtron/Makefile | 224 +-- keyboards/gh60/keymaps/robotmaxtron/config.h | 380 ++-- keyboards/gh60/pinout.txt | 34 +- keyboards/gh60/readme.md | 120 +- keyboards/infinity_chibios/chconf.h | 1048 +++++------ keyboards/infinity_chibios/halconf.h | 706 +++---- keyboards/infinity_chibios/mcuconf.h | 110 +- tmk_core/common/avr/xprintf.S | 1000 +++++----- tmk_core/common/avr/xprintf.h | 222 +-- tmk_core/protocol/iwrap/suart.S | 312 ++-- tmk_core/protocol/iwrap/suart.h | 16 +- tmk_core/protocol/iwrap/wd.h | 318 ++-- .../protocol/lufa/LUFA-git/Bootloaders/CDC/asf.xml | 322 ++-- .../protocol/lufa/LUFA-git/Bootloaders/DFU/asf.xml | 312 ++-- .../protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml | 246 +-- .../Bootloaders/MassStorage/BootloaderAPITable.S | 204 +- .../lufa/LUFA-git/Bootloaders/MassStorage/asf.xml | 312 ++-- .../lufa/LUFA-git/Bootloaders/MassStorage/makefile | 136 +- .../Bootloaders/Printer/BootloaderAPITable.S | 182 +- .../lufa/LUFA-git/Bootloaders/Printer/asf.xml | 318 ++-- .../lufa/LUFA-git/Bootloaders/Printer/makefile | 110 +- .../LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile | 84 +- .../LUFA/CodeTemplates/DeviceTemplate/asf.xml | 110 +- .../LUFA/CodeTemplates/HostTemplate/asf.xml | 82 +- .../LUFA-git/LUFA/DoxygenPages/BuildSystem.txt | 1950 ++++++++++---------- 39 files changed, 6322 insertions(+), 6322 deletions(-) diff --git a/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.c b/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.c index 31319ef575..2809c9d184 100644 --- a/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.c +++ b/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.c @@ -1,49 +1,49 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#include "hal.h" - -/** - * @brief PAL setup. - * @details Digital I/O ports static configuration as defined in @p board.h. - * This variable is used by the HAL when initializing the PAL driver. - */ -#if HAL_USE_PAL || defined(__DOXYGEN__) -const PALConfig pal_default_config = -{ - {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH}, - {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH}, - {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH}, - {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH}, - {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH}, -}; -#endif - -/* - * Early initialization code. - * This initialization must be performed just after stack setup and before - * any other initialization. - */ -void __early_init(void) { - - stm32_clock_init(); -} - -/* - * Board-specific initialization code. - */ -void boardInit(void) { -} +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "hal.h" + +/** + * @brief PAL setup. + * @details Digital I/O ports static configuration as defined in @p board.h. + * This variable is used by the HAL when initializing the PAL driver. + */ +#if HAL_USE_PAL || defined(__DOXYGEN__) +const PALConfig pal_default_config = +{ + {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH}, + {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH}, + {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH}, + {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH}, + {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH}, +}; +#endif + +/* + * Early initialization code. + * This initialization must be performed just after stack setup and before + * any other initialization. + */ +void __early_init(void) { + + stm32_clock_init(); +} + +/* + * Board-specific initialization code. + */ +void boardInit(void) { +} diff --git a/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.h b/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.h index 7253e77826..b31d74307b 100644 --- a/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.h +++ b/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.h @@ -1,166 +1,166 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -/* - * Setup for a Generic STM32F103 board. - */ - -/* - * Board identifier. - */ -#define BOARD_GENERIC_STM32_F103 -#define BOARD_NAME "Generic STM32F103x board" - -/* - * Board frequencies. - */ -#define STM32_LSECLK 32768 -#define STM32_HSECLK 8000000 - -/* - * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h. - */ -#define STM32F103xB - -/* - * IO pins assignments - */ - -/* on-board */ - -#define GPIOC_LED 13 -#define GPIOD_OSC_IN 0 -#define GPIOD_OSC_OUT 1 - -/* In case your board has a "USB enable" hardware - controlled by a pin, define it here. (It could be just - a 1.5k resistor connected to D+ line.) -*/ -/* -#define GPIOB_USB_DISC 10 -*/ - -/* - * I/O ports initial setup, this configuration is established soon after reset - * in the initialization code. - * - * The digits have the following meaning: - * 0 - Analog input. - * 1 - Push Pull output 10MHz. - * 2 - Push Pull output 2MHz. - * 3 - Push Pull output 50MHz. - * 4 - Digital input. - * 5 - Open Drain output 10MHz. - * 6 - Open Drain output 2MHz. - * 7 - Open Drain output 50MHz. - * 8 - Digital input with PullUp or PullDown resistor depending on ODR. - * 9 - Alternate Push Pull output 10MHz. - * A - Alternate Push Pull output 2MHz. - * B - Alternate Push Pull output 50MHz. - * C - Reserved. - * D - Alternate Open Drain output 10MHz. - * E - Alternate Open Drain output 2MHz. - * F - Alternate Open Drain output 50MHz. - * Please refer to the STM32 Reference Manual for details. - */ - -/* - * Port A setup. - * Everything input with pull-up except: - * PA2 - Alternate output (USART2 TX). - * PA3 - Normal input (USART2 RX). - * PA9 - Alternate output (USART1 TX). - * PA10 - Normal input (USART1 RX). - */ -#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */ -#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */ -#define VAL_GPIOAODR 0xFFFFFFFF - -/* - * Port B setup. - * Everything input with pull-up except: - * PB10 - Push Pull output (USB switch). - */ -#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */ -#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */ -#define VAL_GPIOBODR 0xFFFFFFFF - -/* - * Port C setup. - * Everything input with pull-up except: - * PC13 - Push Pull output (LED). - */ -#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */ -#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */ -#define VAL_GPIOCODR 0xFFFFFFFF - -/* - * Port D setup. - * Everything input with pull-up except: - * PD0 - Normal input (XTAL). - * PD1 - Normal input (XTAL). - */ -#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */ -#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */ -#define VAL_GPIODODR 0xFFFFFFFF - -/* - * Port E setup. - * Everything input with pull-up except: - */ -#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */ -#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */ -#define VAL_GPIOEODR 0xFFFFFFFF - -/* - * USB bus activation macro, required by the USB driver. - */ -/* The point is that most of the generic STM32F103* boards - have a 1.5k resistor connected on one end to the D+ line - and on the other end to some pin. Or even a slightly more - complicated "USB enable" circuit, controlled by a pin. - That should go here. - - However on some boards (e.g. one that I have), there's no - such hardware. In which case it's better to not do anything. -*/ -/* -#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC) -*/ -#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT); - -/* - * USB bus de-activation macro, required by the USB driver. - */ -/* -#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC) -*/ -#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12); - -#if !defined(_FROM_ASM_) -#ifdef __cplusplus -extern "C" { -#endif - void boardInit(void); -#ifdef __cplusplus -} -#endif -#endif /* _FROM_ASM_ */ - -#endif /* _BOARD_H_ */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _BOARD_H_ +#define _BOARD_H_ + +/* + * Setup for a Generic STM32F103 board. + */ + +/* + * Board identifier. + */ +#define BOARD_GENERIC_STM32_F103 +#define BOARD_NAME "Generic STM32F103x board" + +/* + * Board frequencies. + */ +#define STM32_LSECLK 32768 +#define STM32_HSECLK 8000000 + +/* + * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h. + */ +#define STM32F103xB + +/* + * IO pins assignments + */ + +/* on-board */ + +#define GPIOC_LED 13 +#define GPIOD_OSC_IN 0 +#define GPIOD_OSC_OUT 1 + +/* In case your board has a "USB enable" hardware + controlled by a pin, define it here. (It could be just + a 1.5k resistor connected to D+ line.) +*/ +/* +#define GPIOB_USB_DISC 10 +*/ + +/* + * I/O ports initial setup, this configuration is established soon after reset + * in the initialization code. + * + * The digits have the following meaning: + * 0 - Analog input. + * 1 - Push Pull output 10MHz. + * 2 - Push Pull output 2MHz. + * 3 - Push Pull output 50MHz. + * 4 - Digital input. + * 5 - Open Drain output 10MHz. + * 6 - Open Drain output 2MHz. + * 7 - Open Drain output 50MHz. + * 8 - Digital input with PullUp or PullDown resistor depending on ODR. + * 9 - Alternate Push Pull output 10MHz. + * A - Alternate Push Pull output 2MHz. + * B - Alternate Push Pull output 50MHz. + * C - Reserved. + * D - Alternate Open Drain output 10MHz. + * E - Alternate Open Drain output 2MHz. + * F - Alternate Open Drain output 50MHz. + * Please refer to the STM32 Reference Manual for details. + */ + +/* + * Port A setup. + * Everything input with pull-up except: + * PA2 - Alternate output (USART2 TX). + * PA3 - Normal input (USART2 RX). + * PA9 - Alternate output (USART1 TX). + * PA10 - Normal input (USART1 RX). + */ +#define VAL_GPIOACRL 0x88884B88 /* PA7...PA0 */ +#define VAL_GPIOACRH 0x888884B8 /* PA15...PA8 */ +#define VAL_GPIOAODR 0xFFFFFFFF + +/* + * Port B setup. + * Everything input with pull-up except: + * PB10 - Push Pull output (USB switch). + */ +#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */ +#define VAL_GPIOBCRH 0x88888388 /* PB15...PB8 */ +#define VAL_GPIOBODR 0xFFFFFFFF + +/* + * Port C setup. + * Everything input with pull-up except: + * PC13 - Push Pull output (LED). + */ +#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */ +#define VAL_GPIOCCRH 0x88388888 /* PC15...PC8 */ +#define VAL_GPIOCODR 0xFFFFFFFF + +/* + * Port D setup. + * Everything input with pull-up except: + * PD0 - Normal input (XTAL). + * PD1 - Normal input (XTAL). + */ +#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */ +#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */ +#define VAL_GPIODODR 0xFFFFFFFF + +/* + * Port E setup. + * Everything input with pull-up except: + */ +#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */ +#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */ +#define VAL_GPIOEODR 0xFFFFFFFF + +/* + * USB bus activation macro, required by the USB driver. + */ +/* The point is that most of the generic STM32F103* boards + have a 1.5k resistor connected on one end to the D+ line + and on the other end to some pin. Or even a slightly more + complicated "USB enable" circuit, controlled by a pin. + That should go here. + + However on some boards (e.g. one that I have), there's no + such hardware. In which case it's better to not do anything. +*/ +/* +#define usb_lld_connect_bus(usbp) palClearPad(GPIOB, GPIOB_USB_DISC) +*/ +#define usb_lld_connect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_INPUT); + +/* + * USB bus de-activation macro, required by the USB driver. + */ +/* +#define usb_lld_disconnect_bus(usbp) palSetPad(GPIOB, GPIOB_USB_DISC) +*/ +#define usb_lld_disconnect_bus(usbp) palSetPadMode(GPIOA, 12, PAL_MODE_OUTPUT_PUSHPULL); palClearPad(GPIOA, 12); + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* _BOARD_H_ */ diff --git a/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.mk b/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.mk index d692c0ee46..48e0e51fe6 100644 --- a/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.mk +++ b/keyboards/chibios_test/boards/GENERIC_STM32_F103/board.mk @@ -1,5 +1,5 @@ -# List of all the board related files. -BOARDSRC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F103/board.c - -# Required include directories -BOARDINC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F103 +# List of all the board related files. +BOARDSRC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F103/board.c + +# Required include directories +BOARDINC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F103 diff --git a/keyboards/chibios_test/ld/MKL26Z64.ld b/keyboards/chibios_test/ld/MKL26Z64.ld index fb141f888c..c4ca8b874c 100644 --- a/keyboards/chibios_test/ld/MKL26Z64.ld +++ b/keyboards/chibios_test/ld/MKL26Z64.ld @@ -1,105 +1,105 @@ -/* - * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com - * (C) 2016 flabbergast - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * KL26Z64 memory setup. - */ -MEMORY -{ - flash0 : org = 0x00000000, len = 0x100 - flash1 : org = 0x00000400, len = 0x10 - flash2 : org = 0x00000410, len = 62k - 0x410 - flash3 : org = 0x0000F800, len = 2k - flash4 : org = 0x00000000, len = 0 - flash5 : org = 0x00000000, len = 0 - flash6 : org = 0x00000000, len = 0 - flash7 : org = 0x00000000, len = 0 - ram0 : org = 0x1FFFF800, len = 8k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* Flash region for the configuration bytes.*/ -SECTIONS -{ - .cfmprotect : ALIGN(4) SUBALIGN(4) - { - KEEP(*(.cfmconfig)) - } > flash1 -} - -/* For each data/text section two region are defined, a virtual region - and a load region (_LMA suffix).*/ - -/* Flash region to be used for exception vectors.*/ -REGION_ALIAS("VECTORS_FLASH", flash0); -REGION_ALIAS("VECTORS_FLASH_LMA", flash0); - -/* Flash region to be used for constructors and destructors.*/ -REGION_ALIAS("XTORS_FLASH", flash2); -REGION_ALIAS("XTORS_FLASH_LMA", flash2); - -/* Flash region to be used for code text.*/ -REGION_ALIAS("TEXT_FLASH", flash2); -REGION_ALIAS("TEXT_FLASH_LMA", flash2); - -/* Flash region to be used for read only data.*/ -REGION_ALIAS("RODATA_FLASH", flash2); -REGION_ALIAS("RODATA_FLASH_LMA", flash2); - -/* Flash region to be used for various.*/ -REGION_ALIAS("VARIOUS_FLASH", flash2); -REGION_ALIAS("VARIOUS_FLASH_LMA", flash2); - -/* Flash region to be used for RAM(n) initialization data.*/ -REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2); - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts.*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); -REGION_ALIAS("DATA_RAM_LMA", flash2); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -__eeprom_workarea_start__ = ORIGIN(flash3); -__eeprom_workarea_size__ = LENGTH(flash3); -__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__; - -/* Generic rules inclusion.*/ -INCLUDE rules.ld +/* + * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com + * (C) 2016 flabbergast + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * KL26Z64 memory setup. + */ +MEMORY +{ + flash0 : org = 0x00000000, len = 0x100 + flash1 : org = 0x00000400, len = 0x10 + flash2 : org = 0x00000410, len = 62k - 0x410 + flash3 : org = 0x0000F800, len = 2k + flash4 : org = 0x00000000, len = 0 + flash5 : org = 0x00000000, len = 0 + flash6 : org = 0x00000000, len = 0 + flash7 : org = 0x00000000, len = 0 + ram0 : org = 0x1FFFF800, len = 8k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* Flash region for the configuration bytes.*/ +SECTIONS +{ + .cfmprotect : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.cfmconfig)) + } > flash1 +} + +/* For each data/text section two region are defined, a virtual region + and a load region (_LMA suffix).*/ + +/* Flash region to be used for exception vectors.*/ +REGION_ALIAS("VECTORS_FLASH", flash0); +REGION_ALIAS("VECTORS_FLASH_LMA", flash0); + +/* Flash region to be used for constructors and destructors.*/ +REGION_ALIAS("XTORS_FLASH", flash2); +REGION_ALIAS("XTORS_FLASH_LMA", flash2); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash2); +REGION_ALIAS("TEXT_FLASH_LMA", flash2); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash2); +REGION_ALIAS("RODATA_FLASH_LMA", flash2); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash2); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash2); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2); + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts.*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("DATA_RAM_LMA", flash2); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +__eeprom_workarea_start__ = ORIGIN(flash3); +__eeprom_workarea_size__ = LENGTH(flash3); +__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__; + +/* Generic rules inclusion.*/ +INCLUDE rules.ld diff --git a/keyboards/chibios_test/ld/STM32F103x8_stm32duino_bootloader.ld b/keyboards/chibios_test/ld/STM32F103x8_stm32duino_bootloader.ld index 00613328ed..f9bfe9c005 100644 --- a/keyboards/chibios_test/ld/STM32F103x8_stm32duino_bootloader.ld +++ b/keyboards/chibios_test/ld/STM32F103x8_stm32duino_bootloader.ld @@ -1,88 +1,88 @@ -/* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/* - * ST32F103xB memory setup for use with the maplemini bootloader. - * You will have to - * #define CORTEX_VTOR_INIT 0x5000 - * in your projects chconf.h - */ -MEMORY -{ - flash0 : org = 0x08002000, len = 128k - 0x2000 - flash1 : org = 0x00000000, len = 0 - flash2 : org = 0x00000000, len = 0 - flash3 : org = 0x00000000, len = 0 - flash4 : org = 0x00000000, len = 0 - flash5 : org = 0x00000000, len = 0 - flash6 : org = 0x00000000, len = 0 - flash7 : org = 0x00000000, len = 0 - ram0 : org = 0x20000000, len = 20k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* For each data/text section two region are defined, a virtual region - and a load region (_LMA suffix).*/ - -/* Flash region to be used for exception vectors.*/ -REGION_ALIAS("VECTORS_FLASH", flash0); -REGION_ALIAS("VECTORS_FLASH_LMA", flash0); - -/* Flash region to be used for constructors and destructors.*/ -REGION_ALIAS("XTORS_FLASH", flash0); -REGION_ALIAS("XTORS_FLASH_LMA", flash0); - -/* Flash region to be used for code text.*/ -REGION_ALIAS("TEXT_FLASH", flash0); -REGION_ALIAS("TEXT_FLASH_LMA", flash0); - -/* Flash region to be used for read only data.*/ -REGION_ALIAS("RODATA_FLASH", flash0); -REGION_ALIAS("RODATA_FLASH_LMA", flash0); - -/* Flash region to be used for various.*/ -REGION_ALIAS("VARIOUS_FLASH", flash0); -REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); - -/* Flash region to be used for RAM(n) initialization data.*/ -REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts.*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); -REGION_ALIAS("DATA_RAM_LMA", flash0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -/* Generic rules inclusion.*/ -INCLUDE rules.ld +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * ST32F103xB memory setup for use with the maplemini bootloader. + * You will have to + * #define CORTEX_VTOR_INIT 0x5000 + * in your projects chconf.h + */ +MEMORY +{ + flash0 : org = 0x08002000, len = 128k - 0x2000 + flash1 : org = 0x00000000, len = 0 + flash2 : org = 0x00000000, len = 0 + flash3 : org = 0x00000000, len = 0 + flash4 : org = 0x00000000, len = 0 + flash5 : org = 0x00000000, len = 0 + flash6 : org = 0x00000000, len = 0 + flash7 : org = 0x00000000, len = 0 + ram0 : org = 0x20000000, len = 20k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* For each data/text section two region are defined, a virtual region + and a load region (_LMA suffix).*/ + +/* Flash region to be used for exception vectors.*/ +REGION_ALIAS("VECTORS_FLASH", flash0); +REGION_ALIAS("VECTORS_FLASH_LMA", flash0); + +/* Flash region to be used for constructors and destructors.*/ +REGION_ALIAS("XTORS_FLASH", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts.*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("DATA_RAM_LMA", flash0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* Generic rules inclusion.*/ +INCLUDE rules.ld diff --git a/keyboards/chibios_test/stm32_f072_onekey/mcuconf.h b/keyboards/chibios_test/stm32_f072_onekey/mcuconf.h index 3d877aaa2b..faca3defdf 100644 --- a/keyboards/chibios_test/stm32_f072_onekey/mcuconf.h +++ b/keyboards/chibios_test/stm32_f072_onekey/mcuconf.h @@ -1,171 +1,171 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef _MCUCONF_H_ -#define _MCUCONF_H_ - -/* - * STM32F0xx drivers configuration. - * The following settings override the default settings present in - * the various device driver implementation headers. - * Note that the settings for each driver only have effect if the whole - * driver is enabled in halconf.h. - * - * IRQ priorities: - * 3...0 Lowest...Highest. - * - * DMA priorities: - * 0...3 Lowest...Highest. - */ - -#define STM32F0xx_MCUCONF - -/* - * HAL driver system settings. - */ -#define STM32_NO_INIT FALSE -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 -#define STM32_HSI_ENABLED TRUE -#define STM32_HSI14_ENABLED TRUE -#define STM32_HSI48_ENABLED FALSE -#define STM32_LSI_ENABLED TRUE -#define STM32_HSE_ENABLED FALSE -#define STM32_LSE_ENABLED FALSE -#define STM32_SW STM32_SW_PLL -#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2 -#define STM32_PREDIV_VALUE 1 -#define STM32_PLLMUL_VALUE 12 -#define STM32_HPRE STM32_HPRE_DIV1 -#define STM32_PPRE STM32_PPRE_DIV1 -#define STM32_ADCSW STM32_ADCSW_HSI14 -#define STM32_ADCPRE STM32_ADCPRE_DIV4 -#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK -#define STM32_ADCPRE STM32_ADCPRE_DIV4 -#define STM32_ADCSW STM32_ADCSW_HSI14 -#define STM32_USBSW STM32_USBSW_HSI48 -#define STM32_CECSW STM32_CECSW_HSI -#define STM32_I2C1SW STM32_I2C1SW_HSI -#define STM32_USART1SW STM32_USART1SW_PCLK -#define STM32_RTCSEL STM32_RTCSEL_LSI - -/* - * ADC driver system settings. - */ -#define STM32_ADC_USE_ADC1 FALSE -#define STM32_ADC_ADC1_DMA_PRIORITY 2 -#define STM32_ADC_IRQ_PRIORITY 2 -#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2 - -/* - * EXT driver system settings. - */ -#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI16_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI17_IRQ_PRIORITY 3 - -/* - * GPT driver system settings. - */ -#define STM32_GPT_USE_TIM1 FALSE -#define STM32_GPT_USE_TIM2 FALSE -#define STM32_GPT_USE_TIM3 FALSE -#define STM32_GPT_USE_TIM14 FALSE -#define STM32_GPT_TIM1_IRQ_PRIORITY 2 -#define STM32_GPT_TIM2_IRQ_PRIORITY 2 -#define STM32_GPT_TIM3_IRQ_PRIORITY 2 -#define STM32_GPT_TIM14_IRQ_PRIORITY 2 - -/* - * I2C driver system settings. - */ -#define STM32_I2C_USE_I2C1 FALSE -#define STM32_I2C_USE_I2C2 FALSE -#define STM32_I2C_BUSY_TIMEOUT 50 -#define STM32_I2C_I2C1_IRQ_PRIORITY 3 -#define STM32_I2C_I2C2_IRQ_PRIORITY 3 -#define STM32_I2C_USE_DMA TRUE -#define STM32_I2C_I2C1_DMA_PRIORITY 1 -#define STM32_I2C_I2C2_DMA_PRIORITY 1 -#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") - -/* - * ICU driver system settings. - */ -#define STM32_ICU_USE_TIM1 FALSE -#define STM32_ICU_USE_TIM2 FALSE -#define STM32_ICU_USE_TIM3 FALSE -#define STM32_ICU_TIM1_IRQ_PRIORITY 3 -#define STM32_ICU_TIM2_IRQ_PRIORITY 3 -#define STM32_ICU_TIM3_IRQ_PRIORITY 3 - -/* - * PWM driver system settings. - */ -#define STM32_PWM_USE_ADVANCED FALSE -#define STM32_PWM_USE_TIM1 FALSE -#define STM32_PWM_USE_TIM2 FALSE -#define STM32_PWM_USE_TIM3 FALSE -#define STM32_PWM_TIM1_IRQ_PRIORITY 3 -#define STM32_PWM_TIM2_IRQ_PRIORITY 3 -#define STM32_PWM_TIM3_IRQ_PRIORITY 3 - -/* - * SERIAL driver system settings. - */ -#define STM32_SERIAL_USE_USART1 FALSE -#define STM32_SERIAL_USE_USART2 FALSE -#define STM32_SERIAL_USART1_PRIORITY 3 -#define STM32_SERIAL_USART2_PRIORITY 3 - -/* - * SPI driver system settings. - */ -#define STM32_SPI_USE_SPI1 FALSE -#define STM32_SPI_USE_SPI2 FALSE -#define STM32_SPI_SPI1_DMA_PRIORITY 1 -#define STM32_SPI_SPI2_DMA_PRIORITY 1 -#define STM32_SPI_SPI1_IRQ_PRIORITY 2 -#define STM32_SPI_SPI2_IRQ_PRIORITY 2 -#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") - -/* - * ST driver system settings. - */ -#define STM32_ST_IRQ_PRIORITY 2 -#define STM32_ST_USE_TIMER 2 - -/* - * UART driver system settings. - */ -#define STM32_UART_USE_USART1 FALSE -#define STM32_UART_USE_USART2 FALSE -#define STM32_UART_USART1_IRQ_PRIORITY 3 -#define STM32_UART_USART2_IRQ_PRIORITY 3 -#define STM32_UART_USART1_DMA_PRIORITY 0 -#define STM32_UART_USART2_DMA_PRIORITY 0 -#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") - -/* - * USB driver system settings. - */ -#define STM32_USB_USE_USB1 TRUE -#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE -#define STM32_USB_USB1_LP_IRQ_PRIORITY 3 - -#endif /* _MCUCONF_H_ */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +/* + * STM32F0xx drivers configuration. + * The following settings override the default settings present in + * the various device driver implementation headers. + * Note that the settings for each driver only have effect if the whole + * driver is enabled in halconf.h. + * + * IRQ priorities: + * 3...0 Lowest...Highest. + * + * DMA priorities: + * 0...3 Lowest...Highest. + */ + +#define STM32F0xx_MCUCONF + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_PVD_ENABLE FALSE +#define STM32_PLS STM32_PLS_LEV0 +#define STM32_HSI_ENABLED TRUE +#define STM32_HSI14_ENABLED TRUE +#define STM32_HSI48_ENABLED FALSE +#define STM32_LSI_ENABLED TRUE +#define STM32_HSE_ENABLED FALSE +#define STM32_LSE_ENABLED FALSE +#define STM32_SW STM32_SW_PLL +#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2 +#define STM32_PREDIV_VALUE 1 +#define STM32_PLLMUL_VALUE 12 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE STM32_PPRE_DIV1 +#define STM32_ADCSW STM32_ADCSW_HSI14 +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_ADCSW STM32_ADCSW_HSI14 +#define STM32_USBSW STM32_USBSW_HSI48 +#define STM32_CECSW STM32_CECSW_HSI +#define STM32_I2C1SW STM32_I2C1SW_HSI +#define STM32_USART1SW STM32_USART1SW_PCLK +#define STM32_RTCSEL STM32_RTCSEL_LSI + +/* + * ADC driver system settings. + */ +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_IRQ_PRIORITY 2 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2 + +/* + * EXT driver system settings. + */ +#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI16_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI17_IRQ_PRIORITY 3 + +/* + * GPT driver system settings. + */ +#define STM32_GPT_USE_TIM1 FALSE +#define STM32_GPT_USE_TIM2 FALSE +#define STM32_GPT_USE_TIM3 FALSE +#define STM32_GPT_USE_TIM14 FALSE +#define STM32_GPT_TIM1_IRQ_PRIORITY 2 +#define STM32_GPT_TIM2_IRQ_PRIORITY 2 +#define STM32_GPT_TIM3_IRQ_PRIORITY 2 +#define STM32_GPT_TIM14_IRQ_PRIORITY 2 + +/* + * I2C driver system settings. + */ +#define STM32_I2C_USE_I2C1 FALSE +#define STM32_I2C_USE_I2C2 FALSE +#define STM32_I2C_BUSY_TIMEOUT 50 +#define STM32_I2C_I2C1_IRQ_PRIORITY 3 +#define STM32_I2C_I2C2_IRQ_PRIORITY 3 +#define STM32_I2C_USE_DMA TRUE +#define STM32_I2C_I2C1_DMA_PRIORITY 1 +#define STM32_I2C_I2C2_DMA_PRIORITY 1 +#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") + +/* + * ICU driver system settings. + */ +#define STM32_ICU_USE_TIM1 FALSE +#define STM32_ICU_USE_TIM2 FALSE +#define STM32_ICU_USE_TIM3 FALSE +#define STM32_ICU_TIM1_IRQ_PRIORITY 3 +#define STM32_ICU_TIM2_IRQ_PRIORITY 3 +#define STM32_ICU_TIM3_IRQ_PRIORITY 3 + +/* + * PWM driver system settings. + */ +#define STM32_PWM_USE_ADVANCED FALSE +#define STM32_PWM_USE_TIM1 FALSE +#define STM32_PWM_USE_TIM2 FALSE +#define STM32_PWM_USE_TIM3 FALSE +#define STM32_PWM_TIM1_IRQ_PRIORITY 3 +#define STM32_PWM_TIM2_IRQ_PRIORITY 3 +#define STM32_PWM_TIM3_IRQ_PRIORITY 3 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USART1_PRIORITY 3 +#define STM32_SERIAL_USART2_PRIORITY 3 + +/* + * SPI driver system settings. + */ +#define STM32_SPI_USE_SPI1 FALSE +#define STM32_SPI_USE_SPI2 FALSE +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI2_DMA_PRIORITY 1 +#define STM32_SPI_SPI1_IRQ_PRIORITY 2 +#define STM32_SPI_SPI2_IRQ_PRIORITY 2 +#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") + +/* + * ST driver system settings. + */ +#define STM32_ST_IRQ_PRIORITY 2 +#define STM32_ST_USE_TIMER 2 + +/* + * UART driver system settings. + */ +#define STM32_UART_USE_USART1 FALSE +#define STM32_UART_USE_USART2 FALSE +#define STM32_UART_USART1_IRQ_PRIORITY 3 +#define STM32_UART_USART2_IRQ_PRIORITY 3 +#define STM32_UART_USART1_DMA_PRIORITY 0 +#define STM32_UART_USART2_DMA_PRIORITY 0 +#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_LP_IRQ_PRIORITY 3 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/chibios_test/stm32_f103_onekey/mcuconf.h b/keyboards/chibios_test/stm32_f103_onekey/mcuconf.h index 626332a6aa..276829216e 100644 --- a/keyboards/chibios_test/stm32_f103_onekey/mcuconf.h +++ b/keyboards/chibios_test/stm32_f103_onekey/mcuconf.h @@ -1,209 +1,209 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef _MCUCONF_H_ -#define _MCUCONF_H_ - -#define STM32F103_MCUCONF - -/* - * STM32F103 drivers configuration. - * The following settings override the default settings present in - * the various device driver implementation headers. - * Note that the settings for each driver only have effect if the whole - * driver is enabled in halconf.h. - * - * IRQ priorities: - * 15...0 Lowest...Highest. - * - * DMA priorities: - * 0...3 Lowest...Highest. - */ - -/* - * HAL driver system settings. - */ -#define STM32_NO_INIT FALSE -#define STM32_HSI_ENABLED TRUE -#define STM32_LSI_ENABLED FALSE -#define STM32_HSE_ENABLED TRUE -#define STM32_LSE_ENABLED FALSE -#define STM32_SW STM32_SW_PLL -#define STM32_PLLSRC STM32_PLLSRC_HSE -#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1 -#define STM32_PLLMUL_VALUE 9 -#define STM32_HPRE STM32_HPRE_DIV1 -#define STM32_PPRE1 STM32_PPRE1_DIV2 -#define STM32_PPRE2 STM32_PPRE2_DIV2 -#define STM32_ADCPRE STM32_ADCPRE_DIV4 -#define STM32_USB_CLOCK_REQUIRED TRUE -#define STM32_USBPRE STM32_USBPRE_DIV1P5 -#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK -#define STM32_RTCSEL STM32_RTCSEL_HSEDIV -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 - -/* - * ADC driver system settings. - */ -#define STM32_ADC_USE_ADC1 FALSE -#define STM32_ADC_ADC1_DMA_PRIORITY 2 -#define STM32_ADC_ADC1_IRQ_PRIORITY 6 - -/* - * CAN driver system settings. - */ -#define STM32_CAN_USE_CAN1 FALSE -#define STM32_CAN_CAN1_IRQ_PRIORITY 11 - -/* - * EXT driver system settings. - */ -#define STM32_EXT_EXTI0_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI1_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI2_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI3_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI4_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI5_9_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI10_15_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI16_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI17_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI18_IRQ_PRIORITY 6 -#define STM32_EXT_EXTI19_IRQ_PRIORITY 6 - -/* - * GPT driver system settings. - */ -#define STM32_GPT_USE_TIM1 FALSE -#define STM32_GPT_USE_TIM2 FALSE -#define STM32_GPT_USE_TIM3 FALSE -#define STM32_GPT_USE_TIM4 FALSE -#define STM32_GPT_USE_TIM5 FALSE -#define STM32_GPT_USE_TIM8 FALSE -#define STM32_GPT_TIM1_IRQ_PRIORITY 7 -#define STM32_GPT_TIM2_IRQ_PRIORITY 7 -#define STM32_GPT_TIM3_IRQ_PRIORITY 7 -#define STM32_GPT_TIM4_IRQ_PRIORITY 7 -#define STM32_GPT_TIM5_IRQ_PRIORITY 7 -#define STM32_GPT_TIM8_IRQ_PRIORITY 7 - -/* - * I2C driver system settings. - */ -#define STM32_I2C_USE_I2C1 FALSE -#define STM32_I2C_USE_I2C2 FALSE -#define STM32_I2C_BUSY_TIMEOUT 50 -#define STM32_I2C_I2C1_IRQ_PRIORITY 5 -#define STM32_I2C_I2C2_IRQ_PRIORITY 5 -#define STM32_I2C_I2C1_DMA_PRIORITY 3 -#define STM32_I2C_I2C2_DMA_PRIORITY 3 -#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") - -/* - * ICU driver system settings. - */ -#define STM32_ICU_USE_TIM1 FALSE -#define STM32_ICU_USE_TIM2 FALSE -#define STM32_ICU_USE_TIM3 FALSE -#define STM32_ICU_USE_TIM4 FALSE -#define STM32_ICU_USE_TIM5 FALSE -#define STM32_ICU_USE_TIM8 FALSE -#define STM32_ICU_TIM1_IRQ_PRIORITY 7 -#define STM32_ICU_TIM2_IRQ_PRIORITY 7 -#define STM32_ICU_TIM3_IRQ_PRIORITY 7 -#define STM32_ICU_TIM4_IRQ_PRIORITY 7 -#define STM32_ICU_TIM5_IRQ_PRIORITY 7 -#define STM32_ICU_TIM8_IRQ_PRIORITY 7 - -/* - * PWM driver system settings. - */ -#define STM32_PWM_USE_ADVANCED FALSE -#define STM32_PWM_USE_TIM1 FALSE -#define STM32_PWM_USE_TIM2 FALSE -#define STM32_PWM_USE_TIM3 FALSE -#define STM32_PWM_USE_TIM4 FALSE -#define STM32_PWM_USE_TIM5 FALSE -#define STM32_PWM_USE_TIM8 FALSE -#define STM32_PWM_TIM1_IRQ_PRIORITY 7 -#define STM32_PWM_TIM2_IRQ_PRIORITY 7 -#define STM32_PWM_TIM3_IRQ_PRIORITY 7 -#define STM32_PWM_TIM4_IRQ_PRIORITY 7 -#define STM32_PWM_TIM5_IRQ_PRIORITY 7 -#define STM32_PWM_TIM8_IRQ_PRIORITY 7 - -/* - * RTC driver system settings. - */ -#define STM32_RTC_IRQ_PRIORITY 15 - -/* - * SERIAL driver system settings. - */ -#define STM32_SERIAL_USE_USART1 FALSE -#define STM32_SERIAL_USE_USART2 FALSE -#define STM32_SERIAL_USE_USART3 FALSE -#define STM32_SERIAL_USE_UART4 FALSE -#define STM32_SERIAL_USE_UART5 FALSE -#define STM32_SERIAL_USART1_PRIORITY 12 -#define STM32_SERIAL_USART2_PRIORITY 12 -#define STM32_SERIAL_USART3_PRIORITY 12 -#define STM32_SERIAL_UART4_PRIORITY 12 -#define STM32_SERIAL_UART5_PRIORITY 12 - -/* - * SPI driver system settings. - */ -#define STM32_SPI_USE_SPI1 FALSE -#define STM32_SPI_USE_SPI2 FALSE -#define STM32_SPI_USE_SPI3 FALSE -#define STM32_SPI_SPI1_DMA_PRIORITY 1 -#define STM32_SPI_SPI2_DMA_PRIORITY 1 -#define STM32_SPI_SPI3_DMA_PRIORITY 1 -#define STM32_SPI_SPI1_IRQ_PRIORITY 10 -#define STM32_SPI_SPI2_IRQ_PRIORITY 10 -#define STM32_SPI_SPI3_IRQ_PRIORITY 10 -#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") - -/* - * ST driver system settings. - */ -#define STM32_ST_IRQ_PRIORITY 8 -#define STM32_ST_USE_TIMER 2 - -/* - * UART driver system settings. - */ -#define STM32_UART_USE_USART1 FALSE -#define STM32_UART_USE_USART2 FALSE -#define STM32_UART_USE_USART3 FALSE -#define STM32_UART_USART1_IRQ_PRIORITY 12 -#define STM32_UART_USART2_IRQ_PRIORITY 12 -#define STM32_UART_USART3_IRQ_PRIORITY 12 -#define STM32_UART_USART1_DMA_PRIORITY 0 -#define STM32_UART_USART2_DMA_PRIORITY 0 -#define STM32_UART_USART3_DMA_PRIORITY 0 -#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") - -/* - * USB driver system settings. - */ -#define STM32_USB_USE_USB1 TRUE -#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE -#define STM32_USB_USB1_HP_IRQ_PRIORITY 13 -#define STM32_USB_USB1_LP_IRQ_PRIORITY 14 - -#endif /* _MCUCONF_H_ */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +#define STM32F103_MCUCONF + +/* + * STM32F103 drivers configuration. + * The following settings override the default settings present in + * the various device driver implementation headers. + * Note that the settings for each driver only have effect if the whole + * driver is enabled in halconf.h. + * + * IRQ priorities: + * 15...0 Lowest...Highest. + * + * DMA priorities: + * 0...3 Lowest...Highest. + */ + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_HSI_ENABLED TRUE +#define STM32_LSI_ENABLED FALSE +#define STM32_HSE_ENABLED TRUE +#define STM32_LSE_ENABLED FALSE +#define STM32_SW STM32_SW_PLL +#define STM32_PLLSRC STM32_PLLSRC_HSE +#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1 +#define STM32_PLLMUL_VALUE 9 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE1 STM32_PPRE1_DIV2 +#define STM32_PPRE2 STM32_PPRE2_DIV2 +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_USB_CLOCK_REQUIRED TRUE +#define STM32_USBPRE STM32_USBPRE_DIV1P5 +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_RTCSEL STM32_RTCSEL_HSEDIV +#define STM32_PVD_ENABLE FALSE +#define STM32_PLS STM32_PLS_LEV0 + +/* + * ADC driver system settings. + */ +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_ADC1_IRQ_PRIORITY 6 + +/* + * CAN driver system settings. + */ +#define STM32_CAN_USE_CAN1 FALSE +#define STM32_CAN_CAN1_IRQ_PRIORITY 11 + +/* + * EXT driver system settings. + */ +#define STM32_EXT_EXTI0_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI1_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI2_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI3_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI4_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI5_9_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI10_15_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI16_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI17_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI18_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI19_IRQ_PRIORITY 6 + +/* + * GPT driver system settings. + */ +#define STM32_GPT_USE_TIM1 FALSE +#define STM32_GPT_USE_TIM2 FALSE +#define STM32_GPT_USE_TIM3 FALSE +#define STM32_GPT_USE_TIM4 FALSE +#define STM32_GPT_USE_TIM5 FALSE +#define STM32_GPT_USE_TIM8 FALSE +#define STM32_GPT_TIM1_IRQ_PRIORITY 7 +#define STM32_GPT_TIM2_IRQ_PRIORITY 7 +#define STM32_GPT_TIM3_IRQ_PRIORITY 7 +#define STM32_GPT_TIM4_IRQ_PRIORITY 7 +#define STM32_GPT_TIM5_IRQ_PRIORITY 7 +#define STM32_GPT_TIM8_IRQ_PRIORITY 7 + +/* + * I2C driver system settings. + */ +#define STM32_I2C_USE_I2C1 FALSE +#define STM32_I2C_USE_I2C2 FALSE +#define STM32_I2C_BUSY_TIMEOUT 50 +#define STM32_I2C_I2C1_IRQ_PRIORITY 5 +#define STM32_I2C_I2C2_IRQ_PRIORITY 5 +#define STM32_I2C_I2C1_DMA_PRIORITY 3 +#define STM32_I2C_I2C2_DMA_PRIORITY 3 +#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") + +/* + * ICU driver system settings. + */ +#define STM32_ICU_USE_TIM1 FALSE +#define STM32_ICU_USE_TIM2 FALSE +#define STM32_ICU_USE_TIM3 FALSE +#define STM32_ICU_USE_TIM4 FALSE +#define STM32_ICU_USE_TIM5 FALSE +#define STM32_ICU_USE_TIM8 FALSE +#define STM32_ICU_TIM1_IRQ_PRIORITY 7 +#define STM32_ICU_TIM2_IRQ_PRIORITY 7 +#define STM32_ICU_TIM3_IRQ_PRIORITY 7 +#define STM32_ICU_TIM4_IRQ_PRIORITY 7 +#define STM32_ICU_TIM5_IRQ_PRIORITY 7 +#define STM32_ICU_TIM8_IRQ_PRIORITY 7 + +/* + * PWM driver system settings. + */ +#define STM32_PWM_USE_ADVANCED FALSE +#define STM32_PWM_USE_TIM1 FALSE +#define STM32_PWM_USE_TIM2 FALSE +#define STM32_PWM_USE_TIM3 FALSE +#define STM32_PWM_USE_TIM4 FALSE +#define STM32_PWM_USE_TIM5 FALSE +#define STM32_PWM_USE_TIM8 FALSE +#define STM32_PWM_TIM1_IRQ_PRIORITY 7 +#define STM32_PWM_TIM2_IRQ_PRIORITY 7 +#define STM32_PWM_TIM3_IRQ_PRIORITY 7 +#define STM32_PWM_TIM4_IRQ_PRIORITY 7 +#define STM32_PWM_TIM5_IRQ_PRIORITY 7 +#define STM32_PWM_TIM8_IRQ_PRIORITY 7 + +/* + * RTC driver system settings. + */ +#define STM32_RTC_IRQ_PRIORITY 15 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USE_USART3 FALSE +#define STM32_SERIAL_USE_UART4 FALSE +#define STM32_SERIAL_USE_UART5 FALSE +#define STM32_SERIAL_USART1_PRIORITY 12 +#define STM32_SERIAL_USART2_PRIORITY 12 +#define STM32_SERIAL_USART3_PRIORITY 12 +#define STM32_SERIAL_UART4_PRIORITY 12 +#define STM32_SERIAL_UART5_PRIORITY 12 + +/* + * SPI driver system settings. + */ +#define STM32_SPI_USE_SPI1 FALSE +#define STM32_SPI_USE_SPI2 FALSE +#define STM32_SPI_USE_SPI3 FALSE +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI2_DMA_PRIORITY 1 +#define STM32_SPI_SPI3_DMA_PRIORITY 1 +#define STM32_SPI_SPI1_IRQ_PRIORITY 10 +#define STM32_SPI_SPI2_IRQ_PRIORITY 10 +#define STM32_SPI_SPI3_IRQ_PRIORITY 10 +#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") + +/* + * ST driver system settings. + */ +#define STM32_ST_IRQ_PRIORITY 8 +#define STM32_ST_USE_TIMER 2 + +/* + * UART driver system settings. + */ +#define STM32_UART_USE_USART1 FALSE +#define STM32_UART_USE_USART2 FALSE +#define STM32_UART_USE_USART3 FALSE +#define STM32_UART_USART1_IRQ_PRIORITY 12 +#define STM32_UART_USART2_IRQ_PRIORITY 12 +#define STM32_UART_USART3_IRQ_PRIORITY 12 +#define STM32_UART_USART1_DMA_PRIORITY 0 +#define STM32_UART_USART2_DMA_PRIORITY 0 +#define STM32_UART_USART3_DMA_PRIORITY 0 +#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_HP_IRQ_PRIORITY 13 +#define STM32_USB_USB1_LP_IRQ_PRIORITY 14 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/chibios_test/teensy_lc_onekey/chconf.h b/keyboards/chibios_test/teensy_lc_onekey/chconf.h index cb36996c33..3294ac7eee 100644 --- a/keyboards/chibios_test/teensy_lc_onekey/chconf.h +++ b/keyboards/chibios_test/teensy_lc_onekey/chconf.h @@ -1,524 +1,524 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file templates/chconf.h - * @brief Configuration file template. - * @details A copy of this file must be placed in each project directory, it - * contains the application specific kernel settings. - * - * @addtogroup config - * @details Kernel related settings and hooks. - * @{ - */ - -#ifndef CHCONF_H -#define CHCONF_H - -#define _CHIBIOS_RT_CONF_ - -/*===========================================================================*/ -/** - * @name System timers settings - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System time counter resolution. - * @note Allowed values are 16 or 32 bits. - */ -#define CH_CFG_ST_RESOLUTION 32 - -/** - * @brief System tick frequency. - * @details Frequency of the system timer that drives the system ticks. This - * setting also defines the system tick time unit. - */ -#define CH_CFG_ST_FREQUENCY 1000 - -/** - * @brief Time delta constant for the tick-less mode. - * @note If this value is zero then the system uses the classic - * periodic tick. This value represents the minimum number - * of ticks that is safe to specify in a timeout directive. - * The value one is not valid, timeouts are rounded up to - * this value. - */ -#define CH_CFG_ST_TIMEDELTA 0 - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel parameters and options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Round robin interval. - * @details This constant is the number of system ticks allowed for the - * threads before preemption occurs. Setting this value to zero - * disables the preemption for threads with equal priority and the - * round robin becomes cooperative. Note that higher priority - * threads can still preempt, the kernel is always preemptive. - * @note Disabling the round robin preemption makes the kernel more compact - * and generally faster. - * @note The round robin preemption is not supported in tickless mode and - * must be set to zero in that case. - */ -#define CH_CFG_TIME_QUANTUM 20 - -/** - * @brief Managed RAM size. - * @details Size of the RAM area to be managed by the OS. If set to zero - * then the whole available RAM is used. The core memory is made - * available to the heap allocator and/or can be used directly through - * the simplified core memory allocator. - * - * @note In order to let the OS manage the whole RAM the linker script must - * provide the @p __heap_base__ and @p __heap_end__ symbols. - * @note Requires @p CH_CFG_USE_MEMCORE. - */ -#define CH_CFG_MEMCORE_SIZE 0 - -/** - * @brief Idle thread automatic spawn suppression. - * @details When this option is activated the function @p chSysInit() - * does not spawn the idle thread. The application @p main() - * function becomes the idle thread and must implement an - * infinite loop. - */ -#define CH_CFG_NO_IDLE_THREAD FALSE - -/* Use __WFI in the idle thread for waiting. Does lower the power - * consumption. */ -#define CORTEX_ENABLE_WFI_IDLE TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Performance options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief OS optimization. - * @details If enabled then time efficient rather than space efficient code - * is used when two possible implementations exist. - * - * @note This is not related to the compiler optimization options. - * @note The default is @p TRUE. - */ -#define CH_CFG_OPTIMIZE_SPEED TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Subsystem options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Time Measurement APIs. - * @details If enabled then the time measurement APIs are included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_TM FALSE - -/** - * @brief Threads registry APIs. - * @details If enabled then the registry APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_REGISTRY TRUE - -/** - * @brief Threads synchronization APIs. - * @details If enabled then the @p chThdWait() function is included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_WAITEXIT TRUE - -/** - * @brief Semaphores APIs. - * @details If enabled then the Semaphores APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_SEMAPHORES TRUE - -/** - * @brief Semaphores queuing mode. - * @details If enabled then the threads are enqueued on semaphores by - * priority rather than in FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE - -/** - * @brief Mutexes APIs. - * @details If enabled then the mutexes APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MUTEXES TRUE - -/** - * @brief Enables recursive behavior on mutexes. - * @note Recursive mutexes are heavier and have an increased - * memory footprint. - * - * @note The default is @p FALSE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE - -/** - * @brief Conditional Variables APIs. - * @details If enabled then the conditional variables APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#define CH_CFG_USE_CONDVARS TRUE - -/** - * @brief Conditional Variables APIs with timeout. - * @details If enabled then the conditional variables APIs with timeout - * specification are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_CONDVARS. - */ -#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE - -/** - * @brief Events Flags APIs. - * @details If enabled then the event flags APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_EVENTS TRUE - -/** - * @brief Events Flags APIs with timeout. - * @details If enabled then the events APIs with timeout specification - * are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_EVENTS. - */ -#define CH_CFG_USE_EVENTS_TIMEOUT TRUE - -/** - * @brief Synchronous Messages APIs. - * @details If enabled then the synchronous messages APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MESSAGES TRUE - -/** - * @brief Synchronous Messages queuing mode. - * @details If enabled then messages are served by priority rather than in - * FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_MESSAGES. - */ -#define CH_CFG_USE_MESSAGES_PRIORITY FALSE - -/** - * @brief Mailboxes APIs. - * @details If enabled then the asynchronous messages (mailboxes) APIs are - * included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#define CH_CFG_USE_MAILBOXES TRUE - -/** - * @brief Core Memory Manager APIs. - * @details If enabled then the core memory manager APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MEMCORE TRUE - -/** - * @brief Heap Allocator APIs. - * @details If enabled then the memory heap allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or - * @p CH_CFG_USE_SEMAPHORES. - * @note Mutexes are recommended. - */ -#define CH_CFG_USE_HEAP TRUE - -/** - * @brief Memory Pools Allocator APIs. - * @details If enabled then the memory pools allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MEMPOOLS TRUE - -/** - * @brief Dynamic Threads APIs. - * @details If enabled then the dynamic threads creation APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_WAITEXIT. - * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. - */ -#define CH_CFG_USE_DYNAMIC TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Debug options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Debug option, kernel statistics. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_STATISTICS FALSE - -/** - * @brief Debug option, system state check. - * @details If enabled the correct call protocol for system APIs is checked - * at runtime. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_SYSTEM_STATE_CHECK TRUE - -/** - * @brief Debug option, parameters checks. - * @details If enabled then the checks on the API functions input - * parameters are activated. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_CHECKS TRUE - -/** - * @brief Debug option, consistency checks. - * @details If enabled then all the assertions in the kernel code are - * activated. This includes consistency checks inside the kernel, - * runtime anomalies and port-defined checks. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_ASSERTS TRUE - -/** - * @brief Debug option, trace buffer. - * @details If enabled then the trace buffer is activated. - * - * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. - */ -#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED - -/** - * @brief Trace buffer entries. - * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is - * different from @p CH_DBG_TRACE_MASK_DISABLED. - */ -#define CH_DBG_TRACE_BUFFER_SIZE 128 - -/** - * @brief Debug option, stack checks. - * @details If enabled then a runtime stack check is performed. - * - * @note The default is @p FALSE. - * @note The stack check is performed in a architecture/port dependent way. - * It may not be implemented or some ports. - * @note The default failure mode is to halt the system with the global - * @p panic_msg variable set to @p NULL. - */ -#define CH_DBG_ENABLE_STACK_CHECK TRUE - -/** - * @brief Debug option, stacks initialization. - * @details If enabled then the threads working area is filled with a byte - * value when a thread is created. This can be useful for the - * runtime measurement of the used stack. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_FILL_THREADS TRUE - -/** - * @brief Debug option, threads profiling. - * @details If enabled then a field is added to the @p thread_t structure that - * counts the system ticks occurred while executing the thread. - * - * @note The default is @p FALSE. - * @note This debug option is not currently compatible with the - * tickless mode. - */ -#define CH_DBG_THREADS_PROFILING FALSE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel hooks - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Threads descriptor structure extension. - * @details User fields added to the end of the @p thread_t structure. - */ -#define CH_CFG_THREAD_EXTRA_FIELDS \ - /* Add threads custom fields here.*/ - -/** - * @brief Threads initialization hook. - * @details User initialization code added to the @p chThdInit() API. - * - * @note It is invoked from within @p chThdInit() and implicitly from all - * the threads creation APIs. - */ -#define CH_CFG_THREAD_INIT_HOOK(tp) { \ - /* Add threads initialization code here.*/ \ -} - -/** - * @brief Threads finalization hook. - * @details User finalization code added to the @p chThdExit() API. - */ -#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ - /* Add threads finalization code here.*/ \ -} - -/** - * @brief Context switch hook. - * @details This hook is invoked just before switching between threads. - */ -#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ - /* Context switch code here.*/ \ -} - -/** - * @brief ISR enter hook. - */ -#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ - /* IRQ prologue code here.*/ \ -} - -/** - * @brief ISR exit hook. - */ -#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ - /* IRQ epilogue code here.*/ \ -} - -/** - * @brief Idle thread enter hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to activate a power saving mode. - */ -#define CH_CFG_IDLE_ENTER_HOOK() { \ - /* Idle-enter code here.*/ \ -} - -/** - * @brief Idle thread leave hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to deactivate a power saving mode. - */ -#define CH_CFG_IDLE_LEAVE_HOOK() { \ - /* Idle-leave code here.*/ \ -} - -/** - * @brief Idle Loop hook. - * @details This hook is continuously invoked by the idle thread loop. - */ -#define CH_CFG_IDLE_LOOP_HOOK() { \ - /* Idle loop code here.*/ \ -} - -/** - * @brief System tick event hook. - * @details This hook is invoked in the system tick handler immediately - * after processing the virtual timers queue. - */ -#define CH_CFG_SYSTEM_TICK_HOOK() { \ - /* System tick event code here.*/ \ -} - -/** - * @brief System halt hook. - * @details This hook is invoked in case to a system halting error before - * the system is halted. - */ -#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ - /* System halt code here.*/ \ -} - -/** - * @brief Trace hook. - * @details This hook is invoked each time a new record is written in the - * trace buffer. - */ -#define CH_CFG_TRACE_HOOK(tep) { \ - /* Trace code here.*/ \ -} - -/** @} */ - -/*===========================================================================*/ -/* Port-specific settings (override port settings defaulted in chcore.h). */ -/*===========================================================================*/ - -#endif /* CHCONF_H */ - -/** @} */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +#define CHCONF_H + +#define _CHIBIOS_RT_CONF_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16 or 32 bits. + */ +#define CH_CFG_ST_RESOLUTION 32 + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +#define CH_CFG_ST_FREQUENCY 1000 + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +#define CH_CFG_ST_TIMEDELTA 0 + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +#define CH_CFG_TIME_QUANTUM 20 + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +#define CH_CFG_MEMCORE_SIZE 0 + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +#define CH_CFG_NO_IDLE_THREAD FALSE + +/* Use __WFI in the idle thread for waiting. Does lower the power + * consumption. */ +#define CORTEX_ENABLE_WFI_IDLE TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +#define CH_CFG_OPTIMIZE_SPEED TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_TM FALSE + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_REGISTRY TRUE + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_WAITEXIT TRUE + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_SEMAPHORES TRUE + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MUTEXES TRUE + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_CONDVARS TRUE + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_EVENTS TRUE + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +#define CH_CFG_USE_EVENTS_TIMEOUT TRUE + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MESSAGES TRUE + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_MAILBOXES TRUE + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMCORE TRUE + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +#define CH_CFG_USE_HEAP TRUE + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMPOOLS TRUE + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +#define CH_CFG_USE_DYNAMIC TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_STATISTICS FALSE + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_SYSTEM_STATE_CHECK TRUE + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_CHECKS TRUE + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_ASSERTS TRUE + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_BUFFER_SIZE 128 + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +#define CH_DBG_ENABLE_STACK_CHECK TRUE + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_FILL_THREADS TRUE + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +#define CH_DBG_THREADS_PROFILING FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +#define CH_CFG_THREAD_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p chThdInit() API. + * + * @note It is invoked from within @p chThdInit() and implicitly from all + * the threads creation APIs. + */ +#define CH_CFG_THREAD_INIT_HOOK(tp) { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ + /* Add threads finalization code here.*/ \ +} + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ + /* Context switch code here.*/ \ +} + +/** + * @brief ISR enter hook. + */ +#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ + /* IRQ prologue code here.*/ \ +} + +/** + * @brief ISR exit hook. + */ +#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ + /* IRQ epilogue code here.*/ \ +} + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +#define CH_CFG_IDLE_ENTER_HOOK() { \ + /* Idle-enter code here.*/ \ +} + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +#define CH_CFG_IDLE_LEAVE_HOOK() { \ + /* Idle-leave code here.*/ \ +} + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +#define CH_CFG_IDLE_LOOP_HOOK() { \ + /* Idle loop code here.*/ \ +} + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +#define CH_CFG_SYSTEM_TICK_HOOK() { \ + /* System tick event code here.*/ \ +} + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ + /* System halt code here.*/ \ +} + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +#define CH_CFG_TRACE_HOOK(tep) { \ + /* Trace code here.*/ \ +} + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/keyboards/chibios_test/teensy_lc_onekey/halconf.h b/keyboards/chibios_test/teensy_lc_onekey/halconf.h index b1d2cd5502..0436408b09 100644 --- a/keyboards/chibios_test/teensy_lc_onekey/halconf.h +++ b/keyboards/chibios_test/teensy_lc_onekey/halconf.h @@ -1,187 +1,187 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file templates/halconf.h - * @brief HAL configuration header. - * @details HAL configuration file, this file allows to enable or disable the - * various device drivers from your application. You may also use - * this file in order to override the device drivers default settings. - * - * @addtogroup HAL_CONF - * @{ - */ - -#ifndef _HALCONF_H_ -#define _HALCONF_H_ - -#include "mcuconf.h" - -/** - * @brief Enables the PAL subsystem. - */ -#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) -#define HAL_USE_PAL TRUE -#endif - -/** - * @brief Enables the ADC subsystem. - */ -#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) -#define HAL_USE_ADC FALSE -#endif - -/** - * @brief Enables the CAN subsystem. - */ -#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) -#define HAL_USE_CAN FALSE -#endif - -/** - * @brief Enables the DAC subsystem. - */ -#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) -#define HAL_USE_DAC FALSE -#endif - -/** - * @brief Enables the EXT subsystem. - */ -#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) -#define HAL_USE_EXT FALSE -#endif - -/** - * @brief Enables the GPT subsystem. - */ -#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) -#define HAL_USE_GPT FALSE -#endif - -/** - * @brief Enables the I2C subsystem. - */ -#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) -#define HAL_USE_I2C FALSE -#endif - -/** - * @brief Enables the I2S subsystem. - */ -#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) -#define HAL_USE_I2S FALSE -#endif - -/** - * @brief Enables the ICU subsystem. - */ -#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) -#define HAL_USE_ICU FALSE -#endif - -/** - * @brief Enables the MAC subsystem. - */ -#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) -#define HAL_USE_MAC FALSE -#endif - -/** - * @brief Enables the MMC_SPI subsystem. - */ -#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) -#define HAL_USE_MMC_SPI FALSE -#endif - -/** - * @brief Enables the PWM subsystem. - */ -#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) -#define HAL_USE_PWM FALSE -#endif - -/** - * @brief Enables the RTC subsystem. - */ -#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) -#define HAL_USE_RTC FALSE -#endif - -/** - * @brief Enables the SDC subsystem. - */ -#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) -#define HAL_USE_SDC FALSE -#endif - -/** - * @brief Enables the SERIAL subsystem. - */ -#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL FALSE -#endif - -/** - * @brief Enables the SERIAL over USB subsystem. - */ -#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL_USB FALSE -#endif - -/** - * @brief Enables the SPI subsystem. - */ -#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) -#define HAL_USE_SPI FALSE -#endif - -/** - * @brief Enables the UART subsystem. - */ -#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) -#define HAL_USE_UART FALSE -#endif - -/** - * @brief Enables the USB subsystem. - */ -#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) -#define HAL_USE_USB TRUE -#endif - -/** - * @brief Enables the WDG subsystem. - */ -#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) -#define HAL_USE_WDG FALSE -#endif - -/*===========================================================================*/ -/* USB driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) -#define USB_USE_WAIT TRUE -#endif - -#endif /* _HALCONF_H_ */ - -/** @} */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef _HALCONF_H_ +#define _HALCONF_H_ + +#include "mcuconf.h" + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +#define HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +#define HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +#define HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the DAC subsystem. + */ +#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +#define HAL_USE_DAC FALSE +#endif + +/** + * @brief Enables the EXT subsystem. + */ +#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) +#define HAL_USE_EXT FALSE +#endif + +/** + * @brief Enables the GPT subsystem. + */ +#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +#define HAL_USE_GPT FALSE +#endif + +/** + * @brief Enables the I2C subsystem. + */ +#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +#define HAL_USE_I2C FALSE +#endif + +/** + * @brief Enables the I2S subsystem. + */ +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +#define HAL_USE_I2S FALSE +#endif + +/** + * @brief Enables the ICU subsystem. + */ +#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +#define HAL_USE_ICU FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +#define HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define HAL_USE_MMC_SPI FALSE +#endif + +/** + * @brief Enables the PWM subsystem. + */ +#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +#define HAL_USE_PWM FALSE +#endif + +/** + * @brief Enables the RTC subsystem. + */ +#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +#define HAL_USE_RTC FALSE +#endif + +/** + * @brief Enables the SDC subsystem. + */ +#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +#define HAL_USE_SDC FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL FALSE +#endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL_USB FALSE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +#define HAL_USE_SPI FALSE +#endif + +/** + * @brief Enables the UART subsystem. + */ +#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +#define HAL_USE_UART FALSE +#endif + +/** + * @brief Enables the USB subsystem. + */ +#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +#define HAL_USE_USB TRUE +#endif + +/** + * @brief Enables the WDG subsystem. + */ +#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +#define HAL_USE_WDG FALSE +#endif + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +#define USB_USE_WAIT TRUE +#endif + +#endif /* _HALCONF_H_ */ + +/** @} */ diff --git a/keyboards/chibios_test/teensy_lc_onekey/mcuconf.h b/keyboards/chibios_test/teensy_lc_onekey/mcuconf.h index c636590197..2764e88989 100644 --- a/keyboards/chibios_test/teensy_lc_onekey/mcuconf.h +++ b/keyboards/chibios_test/teensy_lc_onekey/mcuconf.h @@ -1,55 +1,55 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef _MCUCONF_H_ -#define _MCUCONF_H_ - -#define KL2x_MCUCONF - -/* - * HAL driver system settings. - */ -#if 1 -/* PEE mode - 48MHz system clock driven by (16 MHz) external crystal. */ -#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE -#define KINETIS_PLLCLK_FREQUENCY 96000000UL -#define KINETIS_SYSCLK_FREQUENCY 48000000UL -#endif - -#if 0 -/* crystal-less FEI mode - 48 MHz with internal 32.768 kHz crystal */ -#define KINETIS_MCG_MODE KINETIS_MCG_MODE_FEI -#define KINETIS_MCG_FLL_DMX32 1 /* Fine-tune for 32.768 kHz */ -#define KINETIS_MCG_FLL_DRS 1 /* 1464x FLL factor */ -#define KINETIS_SYSCLK_FREQUENCY 47972352UL /* 32.768 kHz * 1464 (~48 MHz) */ -#define KINETIS_CLKDIV1_OUTDIV1 1 /* do not divide system clock */ -#endif - -/* - * SERIAL driver system settings. - */ -#define KINETIS_SERIAL_USE_UART0 TRUE - -/* - * USB driver settings - */ -#define KINETIS_USB_USE_USB0 TRUE -/* Need to redefine this, since the default is for K20x */ -/* This is for Teensy LC; you should comment it out (or change to 5) - * for Teensy 3.x */ -#define KINETIS_USB_USB0_IRQ_PRIORITY 2 - -#endif /* _MCUCONF_H_ */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +#define KL2x_MCUCONF + +/* + * HAL driver system settings. + */ +#if 1 +/* PEE mode - 48MHz system clock driven by (16 MHz) external crystal. */ +#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE +#define KINETIS_PLLCLK_FREQUENCY 96000000UL +#define KINETIS_SYSCLK_FREQUENCY 48000000UL +#endif + +#if 0 +/* crystal-less FEI mode - 48 MHz with internal 32.768 kHz crystal */ +#define KINETIS_MCG_MODE KINETIS_MCG_MODE_FEI +#define KINETIS_MCG_FLL_DMX32 1 /* Fine-tune for 32.768 kHz */ +#define KINETIS_MCG_FLL_DRS 1 /* 1464x FLL factor */ +#define KINETIS_SYSCLK_FREQUENCY 47972352UL /* 32.768 kHz * 1464 (~48 MHz) */ +#define KINETIS_CLKDIV1_OUTDIV1 1 /* do not divide system clock */ +#endif + +/* + * SERIAL driver system settings. + */ +#define KINETIS_SERIAL_USE_UART0 TRUE + +/* + * USB driver settings + */ +#define KINETIS_USB_USE_USB0 TRUE +/* Need to redefine this, since the default is for K20x */ +/* This is for Teensy LC; you should comment it out (or change to 5) + * for Teensy 3.x */ +#define KINETIS_USB_USB0_IRQ_PRIORITY 2 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/gh60/Makefile b/keyboards/gh60/Makefile index 39a9cc0ae1..075b77256f 100644 --- a/keyboards/gh60/Makefile +++ b/keyboards/gh60/Makefile @@ -1,74 +1,74 @@ - - -# 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 ?= yes # 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 -KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -# MIDI_ENABLE ?= YES # MIDI controls -# UNICODE_ENABLE ?= YES # Unicode -# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID - - -ifndef QUANTUM_DIR - include ../../Makefile -endif - + + +# 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 ?= yes # 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 +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID + + +ifndef QUANTUM_DIR + include ../../Makefile +endif + diff --git a/keyboards/gh60/config.h b/keyboards/gh60/config.h index 4813c4e786..97753bc069 100644 --- a/keyboards/gh60/config.h +++ b/keyboards/gh60/config.h @@ -1,161 +1,161 @@ -/* -Copyright 2012 Jun Wako - -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 . -*/ - -#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 0x0001 -#define MANUFACTURER geekhack -#define PRODUCT GH60 -#define DESCRIPTION t.m.k. keyboard firmware for GH60 - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 14 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ - #define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } -// Rev A -// #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, B4, D7, D6, B3 } -// Rev B/C - #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - -/* 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 - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * 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 +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#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 0x0001 +#define MANUFACTURER geekhack +#define PRODUCT GH60 +#define DESCRIPTION t.m.k. keyboard firmware for GH60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ + #define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +// Rev A +// #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, B4, D7, D6, B3 } +// Rev B/C + #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * 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/gh60/gh60.c b/keyboards/gh60/gh60.c index 255d87de99..f5a158e12f 100644 --- a/keyboards/gh60/gh60.c +++ b/keyboards/gh60/gh60.c @@ -1,25 +1,25 @@ -#include "gh60.h" - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - if (usb_led & (1< - -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 . -*/ - -#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 0x0001 -#define MANUFACTURER geekhack -#define PRODUCT GH60 -#define DESCRIPTION t.m.k. keyboard firmware for GH60 - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 14 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ - #define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } -// Rev A -// #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, B4, D7, D6, B3 } -// Rev B/C - #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - -/* 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 - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * 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 - -/* - * RGB Underglow - * These settings are for the F4 by default: - * - * - * #define ws2812_PORTREG PORTF - * #define ws2812_DDRREG DDRF - * #define ws2812_pin PF4 - * #define RGBLED_NUM 14 // Number of LEDs - * #define RGBLIGHT_HUE_STEP 10 - * #define RGBLIGHT_SAT_STEP 17 - * #define RGBLIGHT_VAL_STEP 17 - * - * The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. - * To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. - * For details, please check this keymap. keyboard/planck/keymaps/yang/keymap.c -*/ - -/* Deprecated code below -#define ws2812_PORTREG PORTF -#define ws2812_DDRREG DDRF -#define ws2812_pin PF4 -*/ -#define RGB_DI_PIN F4 -#define RGBLIGHT_TIMER -#define RGBLED_NUM 8 // Number of LEDs -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 -#endif +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#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 0x0001 +#define MANUFACTURER geekhack +#define PRODUCT GH60 +#define DESCRIPTION t.m.k. keyboard firmware for GH60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ + #define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +// Rev A +// #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, B4, D7, D6, B3 } +// Rev B/C + #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * 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 + +/* + * RGB Underglow + * These settings are for the F4 by default: + * + * + * #define ws2812_PORTREG PORTF + * #define ws2812_DDRREG DDRF + * #define ws2812_pin PF4 + * #define RGBLED_NUM 14 // Number of LEDs + * #define RGBLIGHT_HUE_STEP 10 + * #define RGBLIGHT_SAT_STEP 17 + * #define RGBLIGHT_VAL_STEP 17 + * + * The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. + * To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. + * For details, please check this keymap. keyboard/planck/keymaps/yang/keymap.c +*/ + +/* Deprecated code below +#define ws2812_PORTREG PORTF +#define ws2812_DDRREG DDRF +#define ws2812_pin PF4 +*/ +#define RGB_DI_PIN F4 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 8 // Number of LEDs +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/gh60/pinout.txt b/keyboards/gh60/pinout.txt index 3787f938e7..e9bf1983a5 100644 --- a/keyboards/gh60/pinout.txt +++ b/keyboards/gh60/pinout.txt @@ -1,18 +1,18 @@ - /* Column pin configuration - * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 - * pin: F0 F1 E6 C7 C6 B6 D4 B1 B7 B5 B4 D7 D6 B3 (Rev.C) - */ - - /* Row pin configuration - * row: 0 1 2 3 4 - * pin: D0 D1 D2 D3 D5 - */ - - GPIO pads - 0 F7 WASD LEDs - 1 F6 ESC LED - 2 F5 FN LED - 3 F4 POKER Arrow LEDs - - B2 Capslock LED + /* Column pin configuration + * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + * pin: F0 F1 E6 C7 C6 B6 D4 B1 B7 B5 B4 D7 D6 B3 (Rev.C) + */ + + /* Row pin configuration + * row: 0 1 2 3 4 + * pin: D0 D1 D2 D3 D5 + */ + + GPIO pads + 0 F7 WASD LEDs + 1 F6 ESC LED + 2 F5 FN LED + 3 F4 POKER Arrow LEDs + + B2 Capslock LED B0 not connected \ No newline at end of file diff --git a/keyboards/gh60/readme.md b/keyboards/gh60/readme.md index 92302d507c..ad042483d8 100644 --- a/keyboards/gh60/readme.md +++ b/keyboards/gh60/readme.md @@ -1,60 +1,60 @@ -## gh60 Rev C keyboard firmware - -![gh60 Rev C PCB](gh60revc.jpg) - - /* Column pin configuration - * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 - * pin: F0 F1 E6 C7 C6 B6 D4 B1 B7 B5 B4 D7 D6 B3 (Rev.C) - */ - - /* Row pin configuration - * row: 0 1 2 3 4 - * pin: D0 D1 D2 D3 D5 - */ - - GPIO pads - 0 F7 WASD LEDs - 1 F6 ESC LED - 2 F5 FN LED - 3 F4 POKER Arrow LEDs - - B2 Capslock LED - B0 not connected - -Functions to controls LED clusters - - gh60_caps_led_on() - gh60_poker_leds_on() - gh60_fn_led_on() - gh60_esc_led_on() - gh60_wasd_leds_on() - - gh60_caps_led_off() - gh60_poker_leds_off() - gh60_fn_led_off() - gh60_esc_led_off() - gh60_wasd_leds_off() - -====================== - -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme.md](/readme.md). - -## Building - -Download or clone the whole firmware and navigate to the keyboards/gh60_rev_c folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. - -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default -To build with the default keymap, simply run `make`. - -### Other Keymaps -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files. - -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: -``` -$ make KEYMAP=[default|jack|] -``` -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. +## gh60 Rev C keyboard firmware + +![gh60 Rev C PCB](gh60revc.jpg) + + /* Column pin configuration + * col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + * pin: F0 F1 E6 C7 C6 B6 D4 B1 B7 B5 B4 D7 D6 B3 (Rev.C) + */ + + /* Row pin configuration + * row: 0 1 2 3 4 + * pin: D0 D1 D2 D3 D5 + */ + + GPIO pads + 0 F7 WASD LEDs + 1 F6 ESC LED + 2 F5 FN LED + 3 F4 POKER Arrow LEDs + + B2 Capslock LED + B0 not connected + +Functions to controls LED clusters + + gh60_caps_led_on() + gh60_poker_leds_on() + gh60_fn_led_on() + gh60_esc_led_on() + gh60_wasd_leds_on() + + gh60_caps_led_off() + gh60_poker_leds_off() + gh60_fn_led_off() + gh60_esc_led_off() + gh60_wasd_leds_off() + +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/gh60_rev_c folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default +To build with the default keymap, simply run `make`. + +### Other Keymaps +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +``` +$ make KEYMAP=[default|jack|] +``` +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/infinity_chibios/chconf.h b/keyboards/infinity_chibios/chconf.h index b886c383bb..43c845739a 100644 --- a/keyboards/infinity_chibios/chconf.h +++ b/keyboards/infinity_chibios/chconf.h @@ -1,524 +1,524 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file templates/chconf.h - * @brief Configuration file template. - * @details A copy of this file must be placed in each project directory, it - * contains the application specific kernel settings. - * - * @addtogroup config - * @details Kernel related settings and hooks. - * @{ - */ - -#ifndef CHCONF_H -#define CHCONF_H - -#define _CHIBIOS_RT_CONF_ - -/*===========================================================================*/ -/** - * @name System timers settings - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System time counter resolution. - * @note Allowed values are 16 or 32 bits. - */ -#define CH_CFG_ST_RESOLUTION 32 - -/** - * @brief System tick frequency. - * @details Frequency of the system timer that drives the system ticks. This - * setting also defines the system tick time unit. - */ -#define CH_CFG_ST_FREQUENCY 1000 - -/** - * @brief Time delta constant for the tick-less mode. - * @note If this value is zero then the system uses the classic - * periodic tick. This value represents the minimum number - * of ticks that is safe to specify in a timeout directive. - * The value one is not valid, timeouts are rounded up to - * this value. - */ -#define CH_CFG_ST_TIMEDELTA 0 - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel parameters and options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Round robin interval. - * @details This constant is the number of system ticks allowed for the - * threads before preemption occurs. Setting this value to zero - * disables the preemption for threads with equal priority and the - * round robin becomes cooperative. Note that higher priority - * threads can still preempt, the kernel is always preemptive. - * @note Disabling the round robin preemption makes the kernel more compact - * and generally faster. - * @note The round robin preemption is not supported in tickless mode and - * must be set to zero in that case. - */ -#define CH_CFG_TIME_QUANTUM 20 - -/** - * @brief Managed RAM size. - * @details Size of the RAM area to be managed by the OS. If set to zero - * then the whole available RAM is used. The core memory is made - * available to the heap allocator and/or can be used directly through - * the simplified core memory allocator. - * - * @note In order to let the OS manage the whole RAM the linker script must - * provide the @p __heap_base__ and @p __heap_end__ symbols. - * @note Requires @p CH_CFG_USE_MEMCORE. - */ -#define CH_CFG_MEMCORE_SIZE 0 - -/** - * @brief Idle thread automatic spawn suppression. - * @details When this option is activated the function @p chSysInit() - * does not spawn the idle thread. The application @p main() - * function becomes the idle thread and must implement an - * infinite loop. - */ -#define CH_CFG_NO_IDLE_THREAD FALSE - -/* Use __WFI in the idle thread for waiting. Does lower the power - * consumption. */ -#define CORTEX_ENABLE_WFI_IDLE TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Performance options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief OS optimization. - * @details If enabled then time efficient rather than space efficient code - * is used when two possible implementations exist. - * - * @note This is not related to the compiler optimization options. - * @note The default is @p TRUE. - */ -#define CH_CFG_OPTIMIZE_SPEED TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Subsystem options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Time Measurement APIs. - * @details If enabled then the time measurement APIs are included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_TM FALSE - -/** - * @brief Threads registry APIs. - * @details If enabled then the registry APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_REGISTRY TRUE - -/** - * @brief Threads synchronization APIs. - * @details If enabled then the @p chThdWait() function is included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_WAITEXIT TRUE - -/** - * @brief Semaphores APIs. - * @details If enabled then the Semaphores APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_SEMAPHORES TRUE - -/** - * @brief Semaphores queuing mode. - * @details If enabled then the threads are enqueued on semaphores by - * priority rather than in FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE - -/** - * @brief Mutexes APIs. - * @details If enabled then the mutexes APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MUTEXES TRUE - -/** - * @brief Enables recursive behavior on mutexes. - * @note Recursive mutexes are heavier and have an increased - * memory footprint. - * - * @note The default is @p FALSE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE - -/** - * @brief Conditional Variables APIs. - * @details If enabled then the conditional variables APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#define CH_CFG_USE_CONDVARS TRUE - -/** - * @brief Conditional Variables APIs with timeout. - * @details If enabled then the conditional variables APIs with timeout - * specification are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_CONDVARS. - */ -#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE - -/** - * @brief Events Flags APIs. - * @details If enabled then the event flags APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_EVENTS TRUE - -/** - * @brief Events Flags APIs with timeout. - * @details If enabled then the events APIs with timeout specification - * are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_EVENTS. - */ -#define CH_CFG_USE_EVENTS_TIMEOUT TRUE - -/** - * @brief Synchronous Messages APIs. - * @details If enabled then the synchronous messages APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MESSAGES TRUE - -/** - * @brief Synchronous Messages queuing mode. - * @details If enabled then messages are served by priority rather than in - * FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_MESSAGES. - */ -#define CH_CFG_USE_MESSAGES_PRIORITY FALSE - -/** - * @brief Mailboxes APIs. - * @details If enabled then the asynchronous messages (mailboxes) APIs are - * included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#define CH_CFG_USE_MAILBOXES TRUE - -/** - * @brief Core Memory Manager APIs. - * @details If enabled then the core memory manager APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MEMCORE TRUE - -/** - * @brief Heap Allocator APIs. - * @details If enabled then the memory heap allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or - * @p CH_CFG_USE_SEMAPHORES. - * @note Mutexes are recommended. - */ -#define CH_CFG_USE_HEAP TRUE - -/** - * @brief Memory Pools Allocator APIs. - * @details If enabled then the memory pools allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MEMPOOLS TRUE - -/** - * @brief Dynamic Threads APIs. - * @details If enabled then the dynamic threads creation APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_WAITEXIT. - * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. - */ -#define CH_CFG_USE_DYNAMIC TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Debug options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Debug option, kernel statistics. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_STATISTICS FALSE - -/** - * @brief Debug option, system state check. - * @details If enabled the correct call protocol for system APIs is checked - * at runtime. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_SYSTEM_STATE_CHECK FALSE - -/** - * @brief Debug option, parameters checks. - * @details If enabled then the checks on the API functions input - * parameters are activated. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_CHECKS FALSE - -/** - * @brief Debug option, consistency checks. - * @details If enabled then all the assertions in the kernel code are - * activated. This includes consistency checks inside the kernel, - * runtime anomalies and port-defined checks. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_ASSERTS FALSE - -/** - * @brief Debug option, trace buffer. - * @details If enabled then the trace buffer is activated. - * - * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. - */ -#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED - -/** - * @brief Trace buffer entries. - * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is - * different from @p CH_DBG_TRACE_MASK_DISABLED. - */ -#define CH_DBG_TRACE_BUFFER_SIZE 128 - -/** - * @brief Debug option, stack checks. - * @details If enabled then a runtime stack check is performed. - * - * @note The default is @p FALSE. - * @note The stack check is performed in a architecture/port dependent way. - * It may not be implemented or some ports. - * @note The default failure mode is to halt the system with the global - * @p panic_msg variable set to @p NULL. - */ -#define CH_DBG_ENABLE_STACK_CHECK FALSE - -/** - * @brief Debug option, stacks initialization. - * @details If enabled then the threads working area is filled with a byte - * value when a thread is created. This can be useful for the - * runtime measurement of the used stack. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_FILL_THREADS FALSE - -/** - * @brief Debug option, threads profiling. - * @details If enabled then a field is added to the @p thread_t structure that - * counts the system ticks occurred while executing the thread. - * - * @note The default is @p FALSE. - * @note This debug option is not currently compatible with the - * tickless mode. - */ -#define CH_DBG_THREADS_PROFILING FALSE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel hooks - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Threads descriptor structure extension. - * @details User fields added to the end of the @p thread_t structure. - */ -#define CH_CFG_THREAD_EXTRA_FIELDS \ - /* Add threads custom fields here.*/ - -/** - * @brief Threads initialization hook. - * @details User initialization code added to the @p chThdInit() API. - * - * @note It is invoked from within @p chThdInit() and implicitly from all - * the threads creation APIs. - */ -#define CH_CFG_THREAD_INIT_HOOK(tp) { \ - /* Add threads initialization code here.*/ \ -} - -/** - * @brief Threads finalization hook. - * @details User finalization code added to the @p chThdExit() API. - */ -#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ - /* Add threads finalization code here.*/ \ -} - -/** - * @brief Context switch hook. - * @details This hook is invoked just before switching between threads. - */ -#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ - /* Context switch code here.*/ \ -} - -/** - * @brief ISR enter hook. - */ -#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ - /* IRQ prologue code here.*/ \ -} - -/** - * @brief ISR exit hook. - */ -#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ - /* IRQ epilogue code here.*/ \ -} - -/** - * @brief Idle thread enter hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to activate a power saving mode. - */ -#define CH_CFG_IDLE_ENTER_HOOK() { \ - /* Idle-enter code here.*/ \ -} - -/** - * @brief Idle thread leave hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to deactivate a power saving mode. - */ -#define CH_CFG_IDLE_LEAVE_HOOK() { \ - /* Idle-leave code here.*/ \ -} - -/** - * @brief Idle Loop hook. - * @details This hook is continuously invoked by the idle thread loop. - */ -#define CH_CFG_IDLE_LOOP_HOOK() { \ - /* Idle loop code here.*/ \ -} - -/** - * @brief System tick event hook. - * @details This hook is invoked in the system tick handler immediately - * after processing the virtual timers queue. - */ -#define CH_CFG_SYSTEM_TICK_HOOK() { \ - /* System tick event code here.*/ \ -} - -/** - * @brief System halt hook. - * @details This hook is invoked in case to a system halting error before - * the system is halted. - */ -#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ - /* System halt code here.*/ \ -} - -/** - * @brief Trace hook. - * @details This hook is invoked each time a new record is written in the - * trace buffer. - */ -#define CH_CFG_TRACE_HOOK(tep) { \ - /* Trace code here.*/ \ -} - -/** @} */ - -/*===========================================================================*/ -/* Port-specific settings (override port settings defaulted in chcore.h). */ -/*===========================================================================*/ - -#endif /* CHCONF_H */ - -/** @} */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +#define CHCONF_H + +#define _CHIBIOS_RT_CONF_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16 or 32 bits. + */ +#define CH_CFG_ST_RESOLUTION 32 + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +#define CH_CFG_ST_FREQUENCY 1000 + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +#define CH_CFG_ST_TIMEDELTA 0 + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +#define CH_CFG_TIME_QUANTUM 20 + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +#define CH_CFG_MEMCORE_SIZE 0 + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +#define CH_CFG_NO_IDLE_THREAD FALSE + +/* Use __WFI in the idle thread for waiting. Does lower the power + * consumption. */ +#define CORTEX_ENABLE_WFI_IDLE TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +#define CH_CFG_OPTIMIZE_SPEED TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_TM FALSE + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_REGISTRY TRUE + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_WAITEXIT TRUE + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_SEMAPHORES TRUE + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MUTEXES TRUE + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_CONDVARS TRUE + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_EVENTS TRUE + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +#define CH_CFG_USE_EVENTS_TIMEOUT TRUE + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MESSAGES TRUE + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_MAILBOXES TRUE + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMCORE TRUE + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +#define CH_CFG_USE_HEAP TRUE + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMPOOLS TRUE + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +#define CH_CFG_USE_DYNAMIC TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_STATISTICS FALSE + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_SYSTEM_STATE_CHECK FALSE + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_CHECKS FALSE + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_ASSERTS FALSE + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_BUFFER_SIZE 128 + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +#define CH_DBG_ENABLE_STACK_CHECK FALSE + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_FILL_THREADS FALSE + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +#define CH_DBG_THREADS_PROFILING FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +#define CH_CFG_THREAD_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p chThdInit() API. + * + * @note It is invoked from within @p chThdInit() and implicitly from all + * the threads creation APIs. + */ +#define CH_CFG_THREAD_INIT_HOOK(tp) { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ + /* Add threads finalization code here.*/ \ +} + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ + /* Context switch code here.*/ \ +} + +/** + * @brief ISR enter hook. + */ +#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ + /* IRQ prologue code here.*/ \ +} + +/** + * @brief ISR exit hook. + */ +#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ + /* IRQ epilogue code here.*/ \ +} + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +#define CH_CFG_IDLE_ENTER_HOOK() { \ + /* Idle-enter code here.*/ \ +} + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +#define CH_CFG_IDLE_LEAVE_HOOK() { \ + /* Idle-leave code here.*/ \ +} + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +#define CH_CFG_IDLE_LOOP_HOOK() { \ + /* Idle loop code here.*/ \ +} + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +#define CH_CFG_SYSTEM_TICK_HOOK() { \ + /* System tick event code here.*/ \ +} + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ + /* System halt code here.*/ \ +} + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +#define CH_CFG_TRACE_HOOK(tep) { \ + /* Trace code here.*/ \ +} + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/keyboards/infinity_chibios/halconf.h b/keyboards/infinity_chibios/halconf.h index 53538de149..46b37a4f46 100644 --- a/keyboards/infinity_chibios/halconf.h +++ b/keyboards/infinity_chibios/halconf.h @@ -1,353 +1,353 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file templates/halconf.h - * @brief HAL configuration header. - * @details HAL configuration file, this file allows to enable or disable the - * various device drivers from your application. You may also use - * this file in order to override the device drivers default settings. - * - * @addtogroup HAL_CONF - * @{ - */ - -#ifndef _HALCONF_H_ -#define _HALCONF_H_ - -#include "mcuconf.h" - -/** - * @brief Enables the PAL subsystem. - */ -#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) -#define HAL_USE_PAL TRUE -#endif - -/** - * @brief Enables the ADC subsystem. - */ -#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) -#define HAL_USE_ADC FALSE -#endif - -/** - * @brief Enables the CAN subsystem. - */ -#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) -#define HAL_USE_CAN FALSE -#endif - -/** - * @brief Enables the DAC subsystem. - */ -#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) -#define HAL_USE_DAC FALSE -#endif - -/** - * @brief Enables the EXT subsystem. - */ -#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) -#define HAL_USE_EXT FALSE -#endif - -/** - * @brief Enables the GPT subsystem. - */ -#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) -#define HAL_USE_GPT FALSE -#endif - -/** - * @brief Enables the I2C subsystem. - */ -#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) -#define HAL_USE_I2C FALSE -#endif - -/** - * @brief Enables the I2S subsystem. - */ -#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) -#define HAL_USE_I2S FALSE -#endif - -/** - * @brief Enables the ICU subsystem. - */ -#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) -#define HAL_USE_ICU FALSE -#endif - -/** - * @brief Enables the MAC subsystem. - */ -#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) -#define HAL_USE_MAC FALSE -#endif - -/** - * @brief Enables the MMC_SPI subsystem. - */ -#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) -#define HAL_USE_MMC_SPI FALSE -#endif - -/** - * @brief Enables the PWM subsystem. - */ -#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) -#define HAL_USE_PWM FALSE -#endif - -/** - * @brief Enables the RTC subsystem. - */ -#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) -#define HAL_USE_RTC FALSE -#endif - -/** - * @brief Enables the SDC subsystem. - */ -#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) -#define HAL_USE_SDC FALSE -#endif - -/** - * @brief Enables the SERIAL subsystem. - */ -#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL FALSE -#endif - -/** - * @brief Enables the SERIAL over USB subsystem. - */ -#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL_USB TRUE -#endif - -/** - * @brief Enables the SPI subsystem. - */ -#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) -#define HAL_USE_SPI FALSE -#endif - -/** - * @brief Enables the UART subsystem. - */ -#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) -#define HAL_USE_UART FALSE -#endif - -/** - * @brief Enables the USB subsystem. - */ -#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) -#define HAL_USE_USB TRUE -#endif - -/** - * @brief Enables the WDG subsystem. - */ -#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) -#define HAL_USE_WDG FALSE -#endif - -/*===========================================================================*/ -/* ADC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) -#define ADC_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define ADC_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* CAN driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Sleep mode related APIs inclusion switch. - */ -#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) -#define CAN_USE_SLEEP_MODE TRUE -#endif - -/*===========================================================================*/ -/* I2C driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the mutual exclusion APIs on the I2C bus. - */ -#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define I2C_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* MAC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables an event sources for incoming packets. - */ -#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) -#define MAC_USE_ZERO_COPY FALSE -#endif - -/** - * @brief Enables an event sources for incoming packets. - */ -#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) -#define MAC_USE_EVENTS TRUE -#endif - -/*===========================================================================*/ -/* MMC_SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - * This option is recommended also if the SPI driver does not - * use a DMA channel and heavily loads the CPU. - */ -#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) -#define MMC_NICE_WAITING TRUE -#endif - -/*===========================================================================*/ -/* SDC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Number of initialization attempts before rejecting the card. - * @note Attempts are performed at 10mS intervals. - */ -#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) -#define SDC_INIT_RETRY 100 -#endif - -/** - * @brief Include support for MMC cards. - * @note MMC support is not yet implemented so this option must be kept - * at @p FALSE. - */ -#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) -#define SDC_MMC_SUPPORT FALSE -#endif - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - */ -#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) -#define SDC_NICE_WAITING TRUE -#endif - -/*===========================================================================*/ -/* SERIAL driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Default bit rate. - * @details Configuration parameter, this is the baud rate selected for the - * default configuration. - */ -#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) -#define SERIAL_DEFAULT_BITRATE 38400 -#endif - -/** - * @brief Serial buffers size. - * @details Configuration parameter, you can change the depth of the queue - * buffers depending on the requirements of your application. - * @note The default is 64 bytes for both the transmission and receive - * buffers. - */ -#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_BUFFERS_SIZE 16 -#endif - -/*===========================================================================*/ -/* SERIAL_USB driver related setting. */ -/*===========================================================================*/ - -/** - * @brief Serial over USB buffers size. - * @details Configuration parameter, the buffer size must be a multiple of - * the USB data endpoint maximum packet size. - * @note The default is 64 bytes for both the transmission and receive - * buffers. - */ -#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_USB_BUFFERS_SIZE 256 -#endif - -/*===========================================================================*/ -/* SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) -#define SPI_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define SPI_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* USB driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) -#define USB_USE_WAIT TRUE -#endif - -#endif /* _HALCONF_H_ */ - -/** @} */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef _HALCONF_H_ +#define _HALCONF_H_ + +#include "mcuconf.h" + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +#define HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +#define HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +#define HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the DAC subsystem. + */ +#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +#define HAL_USE_DAC FALSE +#endif + +/** + * @brief Enables the EXT subsystem. + */ +#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) +#define HAL_USE_EXT FALSE +#endif + +/** + * @brief Enables the GPT subsystem. + */ +#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +#define HAL_USE_GPT FALSE +#endif + +/** + * @brief Enables the I2C subsystem. + */ +#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +#define HAL_USE_I2C FALSE +#endif + +/** + * @brief Enables the I2S subsystem. + */ +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +#define HAL_USE_I2S FALSE +#endif + +/** + * @brief Enables the ICU subsystem. + */ +#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +#define HAL_USE_ICU FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +#define HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define HAL_USE_MMC_SPI FALSE +#endif + +/** + * @brief Enables the PWM subsystem. + */ +#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +#define HAL_USE_PWM FALSE +#endif + +/** + * @brief Enables the RTC subsystem. + */ +#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +#define HAL_USE_RTC FALSE +#endif + +/** + * @brief Enables the SDC subsystem. + */ +#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +#define HAL_USE_SDC FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL FALSE +#endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL_USB TRUE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +#define HAL_USE_SPI FALSE +#endif + +/** + * @brief Enables the UART subsystem. + */ +#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +#define HAL_USE_UART FALSE +#endif + +/** + * @brief Enables the USB subsystem. + */ +#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +#define HAL_USE_USB TRUE +#endif + +/** + * @brief Enables the WDG subsystem. + */ +#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +#define HAL_USE_WDG FALSE +#endif + +/*===========================================================================*/ +/* ADC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) +#define ADC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define ADC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* CAN driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Sleep mode related APIs inclusion switch. + */ +#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) +#define CAN_USE_SLEEP_MODE TRUE +#endif + +/*===========================================================================*/ +/* I2C driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the mutual exclusion APIs on the I2C bus. + */ +#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define I2C_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* MAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) +#define MAC_USE_ZERO_COPY FALSE +#endif + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) +#define MAC_USE_EVENTS TRUE +#endif + +/*===========================================================================*/ +/* MMC_SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + * This option is recommended also if the SPI driver does not + * use a DMA channel and heavily loads the CPU. + */ +#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) +#define MMC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SDC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Number of initialization attempts before rejecting the card. + * @note Attempts are performed at 10mS intervals. + */ +#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) +#define SDC_INIT_RETRY 100 +#endif + +/** + * @brief Include support for MMC cards. + * @note MMC support is not yet implemented so this option must be kept + * at @p FALSE. + */ +#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) +#define SDC_MMC_SUPPORT FALSE +#endif + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + */ +#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) +#define SDC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SERIAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Default bit rate. + * @details Configuration parameter, this is the baud rate selected for the + * default configuration. + */ +#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) +#define SERIAL_DEFAULT_BITRATE 38400 +#endif + +/** + * @brief Serial buffers size. + * @details Configuration parameter, you can change the depth of the queue + * buffers depending on the requirements of your application. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_BUFFERS_SIZE 16 +#endif + +/*===========================================================================*/ +/* SERIAL_USB driver related setting. */ +/*===========================================================================*/ + +/** + * @brief Serial over USB buffers size. + * @details Configuration parameter, the buffer size must be a multiple of + * the USB data endpoint maximum packet size. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_SIZE 256 +#endif + +/*===========================================================================*/ +/* SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) +#define SPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define SPI_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +#define USB_USE_WAIT TRUE +#endif + +#endif /* _HALCONF_H_ */ + +/** @} */ diff --git a/keyboards/infinity_chibios/mcuconf.h b/keyboards/infinity_chibios/mcuconf.h index 66b6ce25de..f453304b75 100644 --- a/keyboards/infinity_chibios/mcuconf.h +++ b/keyboards/infinity_chibios/mcuconf.h @@ -1,55 +1,55 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef _MCUCONF_H_ -#define _MCUCONF_H_ - -#define K20x_MCUCONF - -/* - * HAL driver system settings. - */ - -/* Select the MCU clocking mode below by enabling the appropriate block. */ - -#define KINETIS_NO_INIT FALSE - -/* FEI mode - 48 MHz with internal 32.768 kHz crystal */ -#define KINETIS_MCG_MODE KINETIS_MCG_MODE_FEI -#define KINETIS_MCG_FLL_DMX32 1 /* Fine-tune for 32.768 kHz */ -#define KINETIS_MCG_FLL_DRS 1 /* 1464x FLL factor */ -#define KINETIS_SYSCLK_FREQUENCY 47972352UL /* 32.768 kHz * 1464 (~48 MHz) */ -#define KINETIS_CLKDIV1_OUTDIV1 1 -#define KINETIS_CLKDIV1_OUTDIV2 1 -#define KINETIS_CLKDIV1_OUTDIV4 2 -#define KINETIS_BUSCLK_FREQUENCY KINETIS_SYSCLK_FREQUENCY -#define KINETIS_FLASHCLK_FREQUENCY KINETIS_SYSCLK_FREQUENCY/2 - -/* - * SERIAL driver system settings. - */ -#define KINETIS_SERIAL_USE_UART0 TRUE - -/* - * USB driver settings - */ -#define KINETIS_USB_USE_USB0 TRUE -/* Need to redefine this, since the default is for K20x */ -/* This is for Teensy LC; you should comment it out (or change to 5) - * for Teensy 3.x */ -#define KINETIS_USB_USB0_IRQ_PRIORITY 2 - -#endif /* _MCUCONF_H_ */ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +#define K20x_MCUCONF + +/* + * HAL driver system settings. + */ + +/* Select the MCU clocking mode below by enabling the appropriate block. */ + +#define KINETIS_NO_INIT FALSE + +/* FEI mode - 48 MHz with internal 32.768 kHz crystal */ +#define KINETIS_MCG_MODE KINETIS_MCG_MODE_FEI +#define KINETIS_MCG_FLL_DMX32 1 /* Fine-tune for 32.768 kHz */ +#define KINETIS_MCG_FLL_DRS 1 /* 1464x FLL factor */ +#define KINETIS_SYSCLK_FREQUENCY 47972352UL /* 32.768 kHz * 1464 (~48 MHz) */ +#define KINETIS_CLKDIV1_OUTDIV1 1 +#define KINETIS_CLKDIV1_OUTDIV2 1 +#define KINETIS_CLKDIV1_OUTDIV4 2 +#define KINETIS_BUSCLK_FREQUENCY KINETIS_SYSCLK_FREQUENCY +#define KINETIS_FLASHCLK_FREQUENCY KINETIS_SYSCLK_FREQUENCY/2 + +/* + * SERIAL driver system settings. + */ +#define KINETIS_SERIAL_USE_UART0 TRUE + +/* + * USB driver settings + */ +#define KINETIS_USB_USE_USB0 TRUE +/* Need to redefine this, since the default is for K20x */ +/* This is for Teensy LC; you should comment it out (or change to 5) + * for Teensy 3.x */ +#define KINETIS_USB_USB0_IRQ_PRIORITY 2 + +#endif /* _MCUCONF_H_ */ diff --git a/tmk_core/common/avr/xprintf.S b/tmk_core/common/avr/xprintf.S index 0cec70ce22..06434b98d9 100644 --- a/tmk_core/common/avr/xprintf.S +++ b/tmk_core/common/avr/xprintf.S @@ -1,500 +1,500 @@ -;---------------------------------------------------------------------------; -; Extended itoa, puts, printf and atoi (C)ChaN, 2011 -;---------------------------------------------------------------------------; - - // Base size is 152 bytes -#define CR_CRLF 0 // Convert \n to \r\n (+10 bytes) -#define USE_XPRINTF 1 // Enable xprintf function (+194 bytes) -#define USE_XSPRINTF 0 // Add xsprintf function (+78 bytes) -#define USE_XFPRINTF 0 // Add xfprintf function (+54 bytes) -#define USE_XATOI 0 // Enable xatoi function (+182 bytes) - - -#if FLASHEND > 0x1FFFF -#error xitoa module does not support 256K devices -#endif - -.nolist -#include // Include device specific definitions. -.list - -#ifdef SPM_PAGESIZE // Recent devices have "lpm Rd,Z+" and "movw". -.macro _LPMI reg - lpm \reg, Z+ -.endm -.macro _MOVW dh,dl, sh,sl - movw \dl, \sl -.endm -#else // Earlier devices do not have "lpm Rd,Z+" nor "movw". -.macro _LPMI reg - lpm - mov \reg, r0 - adiw ZL, 1 -.endm -.macro _MOVW dh,dl, sh,sl - mov \dl, \sl - mov \dh, \sh -.endm -#endif - - - -;--------------------------------------------------------------------------- -; Stub function to forward to user output function -; -;Prototype: void xputc (char chr // a character to be output -; ); -;Size: 12/12 words - -.section .bss -.global xfunc_out ; xfunc_out must be initialized before using this module. -xfunc_out: .ds.w 1 -.section .text - - -.func xputc -.global xputc -xputc: -#if CR_CRLF - cpi r24, 10 ;LF --> CRLF - brne 1f ; - ldi r24, 13 ; - rcall 1f ; - ldi r24, 10 ;/ -1: -#endif - push ZH - push ZL - lds ZL, xfunc_out+0 ;Pointer to the registered output function. - lds ZH, xfunc_out+1 ;/ - sbiw ZL, 0 ;Skip if null - breq 2f ;/ - icall -2: pop ZL - pop ZH - ret -.endfunc - - - -;--------------------------------------------------------------------------- -; Direct ROM string output -; -;Prototype: void xputs (const char *str_p // rom string to be output -; ); - -.func xputs -.global xputs -xputs: - _MOVW ZH,ZL, r25,r24 ; Z = pointer to rom string -1: _LPMI r24 - cpi r24, 0 - breq 2f - rcall xputc - rjmp 1b -2: ret -.endfunc - - -;--------------------------------------------------------------------------- -; Extended direct numeral string output (32bit version) -; -;Prototype: void xitoa (long value, // value to be output -; char radix, // radix -; char width); // minimum width -; - -.func xitoa -.global xitoa -xitoa: - ;r25:r22 = value, r20 = base, r18 = digits - clr r31 ;r31 = stack level - ldi r30, ' ' ;r30 = sign - ldi r19, ' ' ;r19 = filler - sbrs r20, 7 ;When base indicates signd format and the value - rjmp 0f ;is minus, add a '-'. - neg r20 ; - sbrs r25, 7 ; - rjmp 0f ; - ldi r30, '-' ; - com r22 ; - com r23 ; - com r24 ; - com r25 ; - adc r22, r1 ; - adc r23, r1 ; - adc r24, r1 ; - adc r25, r1 ;/ -0: sbrs r18, 7 ;When digits indicates zero filled, - rjmp 1f ;filler is '0'. - neg r18 ; - ldi r19, '0' ;/ - ;----- string conversion loop -1: ldi r21, 32 ;r26 = r25:r22 % r20 - clr r26 ;r25:r22 /= r20 -2: lsl r22 ; - rol r23 ; - rol r24 ; - rol r25 ; - rol r26 ; - cp r26, r20 ; - brcs 3f ; - sub r26, r20 ; - inc r22 ; -3: dec r21 ; - brne 2b ;/ - cpi r26, 10 ;r26 is a numeral digit '0'-'F' - brcs 4f ; - subi r26, -7 ; -4: subi r26, -'0' ;/ - push r26 ;Stack it - inc r31 ;/ - cp r22, r1 ;Repeat until r25:r22 gets zero - cpc r23, r1 ; - cpc r24, r1 ; - cpc r25, r1 ; - brne 1b ;/ - - cpi r30, '-' ;Minus sign if needed - brne 5f ; - push r30 ; - inc r31 ;/ -5: cp r31, r18 ;Filler - brcc 6f ; - push r19 ; - inc r31 ; - rjmp 5b ;/ - -6: pop r24 ;Flush stacked digits and exit - rcall xputc ; - dec r31 ; - brne 6b ;/ - - ret -.endfunc - - - -;---------------------------------------------------------------------------; -; Formatted string output (16/32bit version) -; -;Prototype: -; void __xprintf (const char *format_p, ...); -; void __xsprintf(char*, const char *format_p, ...); -; void __xfprintf(void(*func)(char), const char *format_p, ...); -; - -#if USE_XPRINTF - -.func xvprintf -xvprintf: - ld ZL, Y+ ;Z = pointer to format string - ld ZH, Y+ ;/ - -0: _LPMI r24 ;Get a format char - cpi r24, 0 ;End of format string? - breq 90f ;/ - cpi r24, '%' ;Is format? - breq 20f ;/ -1: rcall xputc ;Put a normal character - rjmp 0b ;/ -90: ret - -20: ldi r18, 0 ;r18: digits - clt ;T: filler - _LPMI r21 ;Get flags - cpi r21, '%' ;Is a %? - breq 1b ;/ - cpi r21, '0' ;Zero filled? - brne 23f ; - set ;/ -22: _LPMI r21 ;Get width -23: cpi r21, '9'+1 ; - brcc 24f ; - subi r21, '0' ; - brcs 90b ; - lsl r18 ; - mov r0, r18 ; - lsl r18 ; - lsl r18 ; - add r18, r0 ; - add r18, r21 ; - rjmp 22b ;/ - -24: brtc 25f ;get value (low word) - neg r18 ; -25: ld r24, Y+ ; - ld r25, Y+ ;/ - cpi r21, 'c' ;Is type character? - breq 1b ;/ - cpi r21, 's' ;Is type RAM string? - breq 50f ;/ - cpi r21, 'S' ;Is type ROM string? - breq 60f ;/ - _MOVW r23,r22,r25,r24 ;r25:r22 = value - clr r24 ; - clr r25 ; - clt ;/ - cpi r21, 'l' ;Is long int? - brne 26f ; - ld r24, Y+ ;get value (high word) - ld r25, Y+ ; - set ; - _LPMI r21 ;/ -26: cpi r21, 'd' ;Is type signed decimal? - brne 27f ;/ - ldi r20, -10 ; - brts 40f ; - sbrs r23, 7 ; - rjmp 40f ; - ldi r24, -1 ; - ldi r25, -1 ; - rjmp 40f ;/ -27: cpi r21, 'u' ;Is type unsigned decimal? - ldi r20, 10 ; - breq 40f ;/ - cpi r21, 'X' ;Is type hexdecimal? - ldi r20, 16 ; - breq 40f ;/ - cpi r21, 'b' ;Is type binary? - ldi r20, 2 ; - breq 40f ;/ - ret ;abort -40: push ZH ;Output the value - push ZL ; - rcall xitoa ; -42: pop ZL ; - pop ZH ; - rjmp 0b ;/ - -50: push ZH ;Put a string on the RAM - push ZL - _MOVW ZH,ZL, r25,r24 -51: ld r24, Z+ - cpi r24, 0 - breq 42b - rcall xputc - rjmp 51b - -60: push ZH ;Put a string on the ROM - push ZL - rcall xputs - rjmp 42b -.endfunc - - -.func __xprintf -.global __xprintf -__xprintf: - push YH - push YL - in YL, _SFR_IO_ADDR(SPL) -#ifdef SPH - in YH, _SFR_IO_ADDR(SPH) -#else - clr YH -#endif - adiw YL, 5 ;Y = pointer to arguments - rcall xvprintf - pop YL - pop YH - ret -.endfunc - - -#if USE_XSPRINTF - -.func __xsprintf -putram: - _MOVW ZH,ZL, r15,r14 - st Z+, r24 - _MOVW r15,r14, ZH,ZL - ret -.global __xsprintf -__xsprintf: - push YH - push YL - in YL, _SFR_IO_ADDR(SPL) -#ifdef SPH - in YH, _SFR_IO_ADDR(SPH) -#else - clr YH -#endif - adiw YL, 5 ;Y = pointer to arguments - lds ZL, xfunc_out+0 ;Save registered output function - lds ZH, xfunc_out+1 ; - push ZL ; - push ZH ;/ - ldi ZL, lo8(pm(putram));Set local output function - ldi ZH, hi8(pm(putram)); - sts xfunc_out+0, ZL ; - sts xfunc_out+1, ZH ;/ - push r15 ;Initialize pointer to string buffer - push r14 ; - ld r14, Y+ ; - ld r15, Y+ ;/ - rcall xvprintf - _MOVW ZH,ZL, r15,r14 ;Terminate string - st Z, r1 ; - pop r14 ; - pop r15 ;/ - pop ZH ;Restore registered output function - pop ZL ; - sts xfunc_out+0, ZL ; - sts xfunc_out+1, ZH ;/ - pop YL - pop YH - ret -.endfunc -#endif - - -#if USE_XFPRINTF -.func __xfprintf -.global __xfprintf -__xfprintf: - push YH - push YL - in YL, _SFR_IO_ADDR(SPL) -#ifdef SPH - in YH, _SFR_IO_ADDR(SPH) -#else - clr YH -#endif - adiw YL, 5 ;Y = pointer to arguments - lds ZL, xfunc_out+0 ;Save registered output function - lds ZH, xfunc_out+1 ; - push ZL ; - push ZH ;/ - ld ZL, Y+ ;Set output function - ld ZH, Y+ ; - sts xfunc_out+0, ZL ; - sts xfunc_out+1, ZH ;/ - rcall xvprintf - pop ZH ;Restore registered output function - pop ZL ; - sts xfunc_out+0, ZL ; - sts xfunc_out+1, ZH ;/ - pop YL - pop YH - ret -.endfunc -#endif - -#endif - - - -;--------------------------------------------------------------------------- -; Extended numeral string input -; -;Prototype: -; char xatoi ( /* 1: Successful, 0: Failed */ -; const char **str, /* pointer to pointer to source string */ -; long *res /* result */ -; ); -; - - -#if USE_XATOI -.func xatoi -.global xatoi -xatoi: - _MOVW r1, r0, r23, r22 - _MOVW XH, XL, r25, r24 - ld ZL, X+ - ld ZH, X+ - clr r18 ;r21:r18 = 0; - clr r19 ; - clr r20 ; - clr r21 ;/ - clt ;T = 0; - - ldi r25, 10 ;r25 = 10; - rjmp 41f ;/ -40: adiw ZL, 1 ;Z++; -41: ld r22, Z ;r22 = *Z; - cpi r22, ' ' ;if(r22 == ' ') continue - breq 40b ;/ - brcs 70f ;if(r22 < ' ') error; - cpi r22, '-' ;if(r22 == '-') { - brne 42f ; T = 1; - set ; continue; - rjmp 40b ;} -42: cpi r22, '9'+1 ;if(r22 > '9') error; - brcc 70f ;/ - cpi r22, '0' ;if(r22 < '0') error; - brcs 70f ;/ - brne 51f ;if(r22 > '0') cv_start; - ldi r25, 8 ;r25 = 8; - adiw ZL, 1 ;r22 = *(++Z); - ld r22, Z ;/ - cpi r22, ' '+1 ;if(r22 <= ' ') exit; - brcs 80f ;/ - cpi r22, 'b' ;if(r22 == 'b') { - brne 43f ; r25 = 2; - ldi r25, 2 ; cv_start; - rjmp 50f ;} -43: cpi r22, 'x' ;if(r22 != 'x') error; - brne 51f ;/ - ldi r25, 16 ;r25 = 16; - -50: adiw ZL, 1 ;Z++; - ld r22, Z ;r22 = *Z; -51: cpi r22, ' '+1 ;if(r22 <= ' ') break; - brcs 80f ;/ - cpi r22, 'a' ;if(r22 >= 'a') r22 =- 0x20; - brcs 52f ; - subi r22, 0x20 ;/ -52: subi r22, '0' ;if((r22 -= '0') < 0) error; - brcs 70f ;/ - cpi r22, 10 ;if(r22 >= 10) { - brcs 53f ; r22 -= 7; - subi r22, 7 ; if(r22 < 10) - cpi r22, 10 ; - brcs 70f ;} -53: cp r22, r25 ;if(r22 >= r25) error; - brcc 70f ;/ -60: ldi r24, 33 ;r21:r18 *= r25; - sub r23, r23 ; -61: brcc 62f ; - add r23, r25 ; -62: lsr r23 ; - ror r21 ; - ror r20 ; - ror r19 ; - ror r18 ; - dec r24 ; - brne 61b ;/ - add r18, r22 ;r21:r18 += r22; - adc r19, r24 ; - adc r20, r24 ; - adc r21, r24 ;/ - rjmp 50b ;repeat - -70: ldi r24, 0 - rjmp 81f -80: ldi r24, 1 -81: brtc 82f - clr r22 - com r18 - com r19 - com r20 - com r21 - adc r18, r22 - adc r19, r22 - adc r20, r22 - adc r21, r22 -82: st -X, ZH - st -X, ZL - _MOVW XH, XL, r1, r0 - st X+, r18 - st X+, r19 - st X+, r20 - st X+, r21 - clr r1 - ret -.endfunc -#endif - - +;---------------------------------------------------------------------------; +; Extended itoa, puts, printf and atoi (C)ChaN, 2011 +;---------------------------------------------------------------------------; + + // Base size is 152 bytes +#define CR_CRLF 0 // Convert \n to \r\n (+10 bytes) +#define USE_XPRINTF 1 // Enable xprintf function (+194 bytes) +#define USE_XSPRINTF 0 // Add xsprintf function (+78 bytes) +#define USE_XFPRINTF 0 // Add xfprintf function (+54 bytes) +#define USE_XATOI 0 // Enable xatoi function (+182 bytes) + + +#if FLASHEND > 0x1FFFF +#error xitoa module does not support 256K devices +#endif + +.nolist +#include // Include device specific definitions. +.list + +#ifdef SPM_PAGESIZE // Recent devices have "lpm Rd,Z+" and "movw". +.macro _LPMI reg + lpm \reg, Z+ +.endm +.macro _MOVW dh,dl, sh,sl + movw \dl, \sl +.endm +#else // Earlier devices do not have "lpm Rd,Z+" nor "movw". +.macro _LPMI reg + lpm + mov \reg, r0 + adiw ZL, 1 +.endm +.macro _MOVW dh,dl, sh,sl + mov \dl, \sl + mov \dh, \sh +.endm +#endif + + + +;--------------------------------------------------------------------------- +; Stub function to forward to user output function +; +;Prototype: void xputc (char chr // a character to be output +; ); +;Size: 12/12 words + +.section .bss +.global xfunc_out ; xfunc_out must be initialized before using this module. +xfunc_out: .ds.w 1 +.section .text + + +.func xputc +.global xputc +xputc: +#if CR_CRLF + cpi r24, 10 ;LF --> CRLF + brne 1f ; + ldi r24, 13 ; + rcall 1f ; + ldi r24, 10 ;/ +1: +#endif + push ZH + push ZL + lds ZL, xfunc_out+0 ;Pointer to the registered output function. + lds ZH, xfunc_out+1 ;/ + sbiw ZL, 0 ;Skip if null + breq 2f ;/ + icall +2: pop ZL + pop ZH + ret +.endfunc + + + +;--------------------------------------------------------------------------- +; Direct ROM string output +; +;Prototype: void xputs (const char *str_p // rom string to be output +; ); + +.func xputs +.global xputs +xputs: + _MOVW ZH,ZL, r25,r24 ; Z = pointer to rom string +1: _LPMI r24 + cpi r24, 0 + breq 2f + rcall xputc + rjmp 1b +2: ret +.endfunc + + +;--------------------------------------------------------------------------- +; Extended direct numeral string output (32bit version) +; +;Prototype: void xitoa (long value, // value to be output +; char radix, // radix +; char width); // minimum width +; + +.func xitoa +.global xitoa +xitoa: + ;r25:r22 = value, r20 = base, r18 = digits + clr r31 ;r31 = stack level + ldi r30, ' ' ;r30 = sign + ldi r19, ' ' ;r19 = filler + sbrs r20, 7 ;When base indicates signd format and the value + rjmp 0f ;is minus, add a '-'. + neg r20 ; + sbrs r25, 7 ; + rjmp 0f ; + ldi r30, '-' ; + com r22 ; + com r23 ; + com r24 ; + com r25 ; + adc r22, r1 ; + adc r23, r1 ; + adc r24, r1 ; + adc r25, r1 ;/ +0: sbrs r18, 7 ;When digits indicates zero filled, + rjmp 1f ;filler is '0'. + neg r18 ; + ldi r19, '0' ;/ + ;----- string conversion loop +1: ldi r21, 32 ;r26 = r25:r22 % r20 + clr r26 ;r25:r22 /= r20 +2: lsl r22 ; + rol r23 ; + rol r24 ; + rol r25 ; + rol r26 ; + cp r26, r20 ; + brcs 3f ; + sub r26, r20 ; + inc r22 ; +3: dec r21 ; + brne 2b ;/ + cpi r26, 10 ;r26 is a numeral digit '0'-'F' + brcs 4f ; + subi r26, -7 ; +4: subi r26, -'0' ;/ + push r26 ;Stack it + inc r31 ;/ + cp r22, r1 ;Repeat until r25:r22 gets zero + cpc r23, r1 ; + cpc r24, r1 ; + cpc r25, r1 ; + brne 1b ;/ + + cpi r30, '-' ;Minus sign if needed + brne 5f ; + push r30 ; + inc r31 ;/ +5: cp r31, r18 ;Filler + brcc 6f ; + push r19 ; + inc r31 ; + rjmp 5b ;/ + +6: pop r24 ;Flush stacked digits and exit + rcall xputc ; + dec r31 ; + brne 6b ;/ + + ret +.endfunc + + + +;---------------------------------------------------------------------------; +; Formatted string output (16/32bit version) +; +;Prototype: +; void __xprintf (const char *format_p, ...); +; void __xsprintf(char*, const char *format_p, ...); +; void __xfprintf(void(*func)(char), const char *format_p, ...); +; + +#if USE_XPRINTF + +.func xvprintf +xvprintf: + ld ZL, Y+ ;Z = pointer to format string + ld ZH, Y+ ;/ + +0: _LPMI r24 ;Get a format char + cpi r24, 0 ;End of format string? + breq 90f ;/ + cpi r24, '%' ;Is format? + breq 20f ;/ +1: rcall xputc ;Put a normal character + rjmp 0b ;/ +90: ret + +20: ldi r18, 0 ;r18: digits + clt ;T: filler + _LPMI r21 ;Get flags + cpi r21, '%' ;Is a %? + breq 1b ;/ + cpi r21, '0' ;Zero filled? + brne 23f ; + set ;/ +22: _LPMI r21 ;Get width +23: cpi r21, '9'+1 ; + brcc 24f ; + subi r21, '0' ; + brcs 90b ; + lsl r18 ; + mov r0, r18 ; + lsl r18 ; + lsl r18 ; + add r18, r0 ; + add r18, r21 ; + rjmp 22b ;/ + +24: brtc 25f ;get value (low word) + neg r18 ; +25: ld r24, Y+ ; + ld r25, Y+ ;/ + cpi r21, 'c' ;Is type character? + breq 1b ;/ + cpi r21, 's' ;Is type RAM string? + breq 50f ;/ + cpi r21, 'S' ;Is type ROM string? + breq 60f ;/ + _MOVW r23,r22,r25,r24 ;r25:r22 = value + clr r24 ; + clr r25 ; + clt ;/ + cpi r21, 'l' ;Is long int? + brne 26f ; + ld r24, Y+ ;get value (high word) + ld r25, Y+ ; + set ; + _LPMI r21 ;/ +26: cpi r21, 'd' ;Is type signed decimal? + brne 27f ;/ + ldi r20, -10 ; + brts 40f ; + sbrs r23, 7 ; + rjmp 40f ; + ldi r24, -1 ; + ldi r25, -1 ; + rjmp 40f ;/ +27: cpi r21, 'u' ;Is type unsigned decimal? + ldi r20, 10 ; + breq 40f ;/ + cpi r21, 'X' ;Is type hexdecimal? + ldi r20, 16 ; + breq 40f ;/ + cpi r21, 'b' ;Is type binary? + ldi r20, 2 ; + breq 40f ;/ + ret ;abort +40: push ZH ;Output the value + push ZL ; + rcall xitoa ; +42: pop ZL ; + pop ZH ; + rjmp 0b ;/ + +50: push ZH ;Put a string on the RAM + push ZL + _MOVW ZH,ZL, r25,r24 +51: ld r24, Z+ + cpi r24, 0 + breq 42b + rcall xputc + rjmp 51b + +60: push ZH ;Put a string on the ROM + push ZL + rcall xputs + rjmp 42b +.endfunc + + +.func __xprintf +.global __xprintf +__xprintf: + push YH + push YL + in YL, _SFR_IO_ADDR(SPL) +#ifdef SPH + in YH, _SFR_IO_ADDR(SPH) +#else + clr YH +#endif + adiw YL, 5 ;Y = pointer to arguments + rcall xvprintf + pop YL + pop YH + ret +.endfunc + + +#if USE_XSPRINTF + +.func __xsprintf +putram: + _MOVW ZH,ZL, r15,r14 + st Z+, r24 + _MOVW r15,r14, ZH,ZL + ret +.global __xsprintf +__xsprintf: + push YH + push YL + in YL, _SFR_IO_ADDR(SPL) +#ifdef SPH + in YH, _SFR_IO_ADDR(SPH) +#else + clr YH +#endif + adiw YL, 5 ;Y = pointer to arguments + lds ZL, xfunc_out+0 ;Save registered output function + lds ZH, xfunc_out+1 ; + push ZL ; + push ZH ;/ + ldi ZL, lo8(pm(putram));Set local output function + ldi ZH, hi8(pm(putram)); + sts xfunc_out+0, ZL ; + sts xfunc_out+1, ZH ;/ + push r15 ;Initialize pointer to string buffer + push r14 ; + ld r14, Y+ ; + ld r15, Y+ ;/ + rcall xvprintf + _MOVW ZH,ZL, r15,r14 ;Terminate string + st Z, r1 ; + pop r14 ; + pop r15 ;/ + pop ZH ;Restore registered output function + pop ZL ; + sts xfunc_out+0, ZL ; + sts xfunc_out+1, ZH ;/ + pop YL + pop YH + ret +.endfunc +#endif + + +#if USE_XFPRINTF +.func __xfprintf +.global __xfprintf +__xfprintf: + push YH + push YL + in YL, _SFR_IO_ADDR(SPL) +#ifdef SPH + in YH, _SFR_IO_ADDR(SPH) +#else + clr YH +#endif + adiw YL, 5 ;Y = pointer to arguments + lds ZL, xfunc_out+0 ;Save registered output function + lds ZH, xfunc_out+1 ; + push ZL ; + push ZH ;/ + ld ZL, Y+ ;Set output function + ld ZH, Y+ ; + sts xfunc_out+0, ZL ; + sts xfunc_out+1, ZH ;/ + rcall xvprintf + pop ZH ;Restore registered output function + pop ZL ; + sts xfunc_out+0, ZL ; + sts xfunc_out+1, ZH ;/ + pop YL + pop YH + ret +.endfunc +#endif + +#endif + + + +;--------------------------------------------------------------------------- +; Extended numeral string input +; +;Prototype: +; char xatoi ( /* 1: Successful, 0: Failed */ +; const char **str, /* pointer to pointer to source string */ +; long *res /* result */ +; ); +; + + +#if USE_XATOI +.func xatoi +.global xatoi +xatoi: + _MOVW r1, r0, r23, r22 + _MOVW XH, XL, r25, r24 + ld ZL, X+ + ld ZH, X+ + clr r18 ;r21:r18 = 0; + clr r19 ; + clr r20 ; + clr r21 ;/ + clt ;T = 0; + + ldi r25, 10 ;r25 = 10; + rjmp 41f ;/ +40: adiw ZL, 1 ;Z++; +41: ld r22, Z ;r22 = *Z; + cpi r22, ' ' ;if(r22 == ' ') continue + breq 40b ;/ + brcs 70f ;if(r22 < ' ') error; + cpi r22, '-' ;if(r22 == '-') { + brne 42f ; T = 1; + set ; continue; + rjmp 40b ;} +42: cpi r22, '9'+1 ;if(r22 > '9') error; + brcc 70f ;/ + cpi r22, '0' ;if(r22 < '0') error; + brcs 70f ;/ + brne 51f ;if(r22 > '0') cv_start; + ldi r25, 8 ;r25 = 8; + adiw ZL, 1 ;r22 = *(++Z); + ld r22, Z ;/ + cpi r22, ' '+1 ;if(r22 <= ' ') exit; + brcs 80f ;/ + cpi r22, 'b' ;if(r22 == 'b') { + brne 43f ; r25 = 2; + ldi r25, 2 ; cv_start; + rjmp 50f ;} +43: cpi r22, 'x' ;if(r22 != 'x') error; + brne 51f ;/ + ldi r25, 16 ;r25 = 16; + +50: adiw ZL, 1 ;Z++; + ld r22, Z ;r22 = *Z; +51: cpi r22, ' '+1 ;if(r22 <= ' ') break; + brcs 80f ;/ + cpi r22, 'a' ;if(r22 >= 'a') r22 =- 0x20; + brcs 52f ; + subi r22, 0x20 ;/ +52: subi r22, '0' ;if((r22 -= '0') < 0) error; + brcs 70f ;/ + cpi r22, 10 ;if(r22 >= 10) { + brcs 53f ; r22 -= 7; + subi r22, 7 ; if(r22 < 10) + cpi r22, 10 ; + brcs 70f ;} +53: cp r22, r25 ;if(r22 >= r25) error; + brcc 70f ;/ +60: ldi r24, 33 ;r21:r18 *= r25; + sub r23, r23 ; +61: brcc 62f ; + add r23, r25 ; +62: lsr r23 ; + ror r21 ; + ror r20 ; + ror r19 ; + ror r18 ; + dec r24 ; + brne 61b ;/ + add r18, r22 ;r21:r18 += r22; + adc r19, r24 ; + adc r20, r24 ; + adc r21, r24 ;/ + rjmp 50b ;repeat + +70: ldi r24, 0 + rjmp 81f +80: ldi r24, 1 +81: brtc 82f + clr r22 + com r18 + com r19 + com r20 + com r21 + adc r18, r22 + adc r19, r22 + adc r20, r22 + adc r21, r22 +82: st -X, ZH + st -X, ZL + _MOVW XH, XL, r1, r0 + st X+, r18 + st X+, r19 + st X+, r20 + st X+, r21 + clr r1 + ret +.endfunc +#endif + + diff --git a/tmk_core/common/avr/xprintf.h b/tmk_core/common/avr/xprintf.h index 59c6f25312..e53c0dd8e0 100644 --- a/tmk_core/common/avr/xprintf.h +++ b/tmk_core/common/avr/xprintf.h @@ -1,111 +1,111 @@ -/*--------------------------------------------------------------------------- - Extended itoa, puts and printf (C)ChaN, 2011 ------------------------------------------------------------------------------*/ - -#ifndef XPRINTF_H -#define XPRINTF_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern void (*xfunc_out)(uint8_t); -#define xdev_out(func) xfunc_out = (void(*)(uint8_t))(func) - -/* This is a pointer to user defined output function. It must be initialized - before using this modle. -*/ - -void xputc(char chr); - -/* This is a stub function to forward outputs to user defined output function. - All outputs from this module are output via this function. -*/ - - -/*-----------------------------------------------------------------------------*/ -void xputs(const char *string_p); - -/* The string placed in the ROM is forwarded to xputc() directly. -*/ - - -/*-----------------------------------------------------------------------------*/ -void xitoa(long value, char radix, char width); - -/* Extended itoa(). - - value radix width output - 100 10 6 " 100" - 100 10 -6 "000100" - 100 10 0 "100" - 4294967295 10 0 "4294967295" - 4294967295 -10 0 "-1" - 655360 16 -8 "000A0000" - 1024 16 0 "400" - 0x55 2 -8 "01010101" -*/ - - -/*-----------------------------------------------------------------------------*/ -#define xprintf(format, ...) __xprintf(PSTR(format), ##__VA_ARGS__) -#define xsprintf(str, format, ...) __xsprintf(str, PSTR(format), ##__VA_ARGS__) -#define xfprintf(func, format, ...) __xfprintf(func, PSTR(format), ##__VA_ARGS__) - -void __xprintf(const char *format_p, ...); /* Send formatted string to the registered device */ -void __xsprintf(char*, const char *format_p, ...); /* Put formatted string to the memory */ -void __xfprintf(void(*func)(uint8_t), const char *format_p, ...); /* Send formatted string to the specified device */ - -/* Format string is placed in the ROM. The format flags is similar to printf(). - - %[flag][width][size]type - - flag - A '0' means filled with '0' when output is shorter than width. - ' ' is used in default. This is effective only numeral type. - width - Minimum width in decimal number. This is effective only numeral type. - Default width is zero. - size - A 'l' means the argument is long(32bit). Default is short(16bit). - This is effective only numeral type. - type - 'c' : Character, argument is the value - 's' : String placed on the RAM, argument is the pointer - 'S' : String placed on the ROM, argument is the pointer - 'd' : Signed decimal, argument is the value - 'u' : Unsigned decimal, argument is the value - 'X' : Hexdecimal, argument is the value - 'b' : Binary, argument is the value - '%' : '%' - -*/ - - -/*-----------------------------------------------------------------------------*/ -char xatoi(char **str, long *ret); - -/* Get value of the numeral string. - - str - Pointer to pointer to source string - - "0b11001010" binary - "0377" octal - "0xff800" hexdecimal - "1250000" decimal - "-25000" decimal - - ret - Pointer to return value -*/ - -#ifdef __cplusplus -} -#endif - -#endif - +/*--------------------------------------------------------------------------- + Extended itoa, puts and printf (C)ChaN, 2011 +-----------------------------------------------------------------------------*/ + +#ifndef XPRINTF_H +#define XPRINTF_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void (*xfunc_out)(uint8_t); +#define xdev_out(func) xfunc_out = (void(*)(uint8_t))(func) + +/* This is a pointer to user defined output function. It must be initialized + before using this modle. +*/ + +void xputc(char chr); + +/* This is a stub function to forward outputs to user defined output function. + All outputs from this module are output via this function. +*/ + + +/*-----------------------------------------------------------------------------*/ +void xputs(const char *string_p); + +/* The string placed in the ROM is forwarded to xputc() directly. +*/ + + +/*-----------------------------------------------------------------------------*/ +void xitoa(long value, char radix, char width); + +/* Extended itoa(). + + value radix width output + 100 10 6 " 100" + 100 10 -6 "000100" + 100 10 0 "100" + 4294967295 10 0 "4294967295" + 4294967295 -10 0 "-1" + 655360 16 -8 "000A0000" + 1024 16 0 "400" + 0x55 2 -8 "01010101" +*/ + + +/*-----------------------------------------------------------------------------*/ +#define xprintf(format, ...) __xprintf(PSTR(format), ##__VA_ARGS__) +#define xsprintf(str, format, ...) __xsprintf(str, PSTR(format), ##__VA_ARGS__) +#define xfprintf(func, format, ...) __xfprintf(func, PSTR(format), ##__VA_ARGS__) + +void __xprintf(const char *format_p, ...); /* Send formatted string to the registered device */ +void __xsprintf(char*, const char *format_p, ...); /* Put formatted string to the memory */ +void __xfprintf(void(*func)(uint8_t), const char *format_p, ...); /* Send formatted string to the specified device */ + +/* Format string is placed in the ROM. The format flags is similar to printf(). + + %[flag][width][size]type + + flag + A '0' means filled with '0' when output is shorter than width. + ' ' is used in default. This is effective only numeral type. + width + Minimum width in decimal number. This is effective only numeral type. + Default width is zero. + size + A 'l' means the argument is long(32bit). Default is short(16bit). + This is effective only numeral type. + type + 'c' : Character, argument is the value + 's' : String placed on the RAM, argument is the pointer + 'S' : String placed on the ROM, argument is the pointer + 'd' : Signed decimal, argument is the value + 'u' : Unsigned decimal, argument is the value + 'X' : Hexdecimal, argument is the value + 'b' : Binary, argument is the value + '%' : '%' + +*/ + + +/*-----------------------------------------------------------------------------*/ +char xatoi(char **str, long *ret); + +/* Get value of the numeral string. + + str + Pointer to pointer to source string + + "0b11001010" binary + "0377" octal + "0xff800" hexdecimal + "1250000" decimal + "-25000" decimal + + ret + Pointer to return value +*/ + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/tmk_core/protocol/iwrap/suart.S b/tmk_core/protocol/iwrap/suart.S index 1b02909638..a873515e10 100644 --- a/tmk_core/protocol/iwrap/suart.S +++ b/tmk_core/protocol/iwrap/suart.S @@ -1,156 +1,156 @@ -;---------------------------------------------------------------------------; -; Software implemented UART module ; -; (C)ChaN, 2005 (http://elm-chan.org/) ; -;---------------------------------------------------------------------------; -; Bit rate settings: -; -; 1MHz 2MHz 4MHz 6MHz 8MHz 10MHz 12MHz 16MHz 20MHz -; 2.4kbps 138 - - - - - - - - -; 4.8kbps 68 138 - - - - - - - -; 9.6kbps 33 68 138 208 - - - - - -; 19.2kbps - 33 68 102 138 173 208 - - -; 38.4kbps - - 33 50 68 85 102 138 172 -; 57.6kbps - - 21 33 44 56 68 91 114 -; 115.2kbps - - - - 21 27 33 44 56 - -.nolist -#include -.list - -#define BPS 102 /* Bit delay. (see above table) */ -#define BIDIR 0 /* 0:Separated Tx/Rx, 1:Shared Tx/Rx */ - -#define OUT_1 sbi _SFR_IO_ADDR(SUART_OUT_PORT), SUART_OUT_BIT /* Output 1 */ -#define OUT_0 cbi _SFR_IO_ADDR(SUART_OUT_PORT), SUART_OUT_BIT /* Output 0 */ -#define SKIP_IN_1 sbis _SFR_IO_ADDR(SUART_IN_PIN), SUART_IN_BIT /* Skip if 1 */ -#define SKIP_IN_0 sbic _SFR_IO_ADDR(SUART_IN_PIN), SUART_IN_BIT /* Skip if 0 */ - - - -#ifdef SPM_PAGESIZE -.macro _LPMI reg - lpm \reg, Z+ -.endm -.macro _MOVW dh,dl, sh,sl - movw \dl, \sl -.endm -#else -.macro _LPMI reg - lpm - mov \reg, r0 - adiw ZL, 1 -.endm -.macro _MOVW dh,dl, sh,sl - mov \dl, \sl - mov \dh, \sh -.endm -#endif - - - -;---------------------------------------------------------------------------; -; Transmit a byte in serial format of N81 -; -;Prototype: void xmit (uint8_t data); -;Size: 16 words - -.global xmit -.func xmit -xmit: -#if BIDIR - ldi r23, BPS-1 ;Pre-idle time for bidirectional data line -5: dec r23 ; - brne 5b ;/ -#endif - in r0, _SFR_IO_ADDR(SREG) ;Save flags - - com r24 ;C = start bit - ldi r25, 10 ;Bit counter - cli ;Start critical section - -1: ldi r23, BPS-1 ;----- Bit transferring loop -2: dec r23 ;Wait for a bit time - brne 2b ;/ - brcs 3f ;MISO = bit to be sent - OUT_1 ; -3: brcc 4f ; - OUT_0 ;/ -4: lsr r24 ;Get next bit into C - dec r25 ;All bits sent? - brne 1b ; no, coutinue - - out _SFR_IO_ADDR(SREG), r0 ;End of critical section - ret -.endfunc - - - -;---------------------------------------------------------------------------; -; Receive a byte -; -;Prototype: uint8_t rcvr (void); -;Size: 19 words - -.global rcvr -.func rcvr -rcvr: - in r0, _SFR_IO_ADDR(SREG) ;Save flags - - ldi r24, 0x80 ;Receiving shift reg - cli ;Start critical section - -1: SKIP_IN_1 ;Wait for idle - rjmp 1b -2: SKIP_IN_0 ;Wait for start bit - rjmp 2b - ldi r25, BPS/2 ;Wait for half bit time -3: dec r25 - brne 3b - -4: ldi r25, BPS ;----- Bit receiving loop -5: dec r25 ;Wait for a bit time - brne 5b ;/ - lsr r24 ;Next bit - SKIP_IN_0 ;Get a data bit into r24.7 - ori r24, 0x80 - brcc 4b ;All bits received? no, continue - - out _SFR_IO_ADDR(SREG), r0 ;End of critical section - ret -.endfunc - - -; Not wait for start bit. This should be called after detecting start bit. -.global recv -.func recv -recv: - in r0, _SFR_IO_ADDR(SREG) ;Save flags - - ldi r24, 0x80 ;Receiving shift reg - cli ;Start critical section - -;1: SKIP_IN_1 ;Wait for idle -; rjmp 1b -;2: SKIP_IN_0 ;Wait for start bit -; rjmp 2b - ldi r25, BPS/2 ;Wait for half bit time -3: dec r25 - brne 3b - -4: ldi r25, BPS ;----- Bit receiving loop -5: dec r25 ;Wait for a bit time - brne 5b ;/ - lsr r24 ;Next bit - SKIP_IN_0 ;Get a data bit into r24.7 - ori r24, 0x80 - brcc 4b ;All bits received? no, continue - - ldi r25, BPS/2 ;Wait for half bit time -6: dec r25 - brne 6b -7: SKIP_IN_1 ;Wait for stop bit - rjmp 7b - - out _SFR_IO_ADDR(SREG), r0 ;End of critical section - ret -.endfunc +;---------------------------------------------------------------------------; +; Software implemented UART module ; +; (C)ChaN, 2005 (http://elm-chan.org/) ; +;---------------------------------------------------------------------------; +; Bit rate settings: +; +; 1MHz 2MHz 4MHz 6MHz 8MHz 10MHz 12MHz 16MHz 20MHz +; 2.4kbps 138 - - - - - - - - +; 4.8kbps 68 138 - - - - - - - +; 9.6kbps 33 68 138 208 - - - - - +; 19.2kbps - 33 68 102 138 173 208 - - +; 38.4kbps - - 33 50 68 85 102 138 172 +; 57.6kbps - - 21 33 44 56 68 91 114 +; 115.2kbps - - - - 21 27 33 44 56 + +.nolist +#include +.list + +#define BPS 102 /* Bit delay. (see above table) */ +#define BIDIR 0 /* 0:Separated Tx/Rx, 1:Shared Tx/Rx */ + +#define OUT_1 sbi _SFR_IO_ADDR(SUART_OUT_PORT), SUART_OUT_BIT /* Output 1 */ +#define OUT_0 cbi _SFR_IO_ADDR(SUART_OUT_PORT), SUART_OUT_BIT /* Output 0 */ +#define SKIP_IN_1 sbis _SFR_IO_ADDR(SUART_IN_PIN), SUART_IN_BIT /* Skip if 1 */ +#define SKIP_IN_0 sbic _SFR_IO_ADDR(SUART_IN_PIN), SUART_IN_BIT /* Skip if 0 */ + + + +#ifdef SPM_PAGESIZE +.macro _LPMI reg + lpm \reg, Z+ +.endm +.macro _MOVW dh,dl, sh,sl + movw \dl, \sl +.endm +#else +.macro _LPMI reg + lpm + mov \reg, r0 + adiw ZL, 1 +.endm +.macro _MOVW dh,dl, sh,sl + mov \dl, \sl + mov \dh, \sh +.endm +#endif + + + +;---------------------------------------------------------------------------; +; Transmit a byte in serial format of N81 +; +;Prototype: void xmit (uint8_t data); +;Size: 16 words + +.global xmit +.func xmit +xmit: +#if BIDIR + ldi r23, BPS-1 ;Pre-idle time for bidirectional data line +5: dec r23 ; + brne 5b ;/ +#endif + in r0, _SFR_IO_ADDR(SREG) ;Save flags + + com r24 ;C = start bit + ldi r25, 10 ;Bit counter + cli ;Start critical section + +1: ldi r23, BPS-1 ;----- Bit transferring loop +2: dec r23 ;Wait for a bit time + brne 2b ;/ + brcs 3f ;MISO = bit to be sent + OUT_1 ; +3: brcc 4f ; + OUT_0 ;/ +4: lsr r24 ;Get next bit into C + dec r25 ;All bits sent? + brne 1b ; no, coutinue + + out _SFR_IO_ADDR(SREG), r0 ;End of critical section + ret +.endfunc + + + +;---------------------------------------------------------------------------; +; Receive a byte +; +;Prototype: uint8_t rcvr (void); +;Size: 19 words + +.global rcvr +.func rcvr +rcvr: + in r0, _SFR_IO_ADDR(SREG) ;Save flags + + ldi r24, 0x80 ;Receiving shift reg + cli ;Start critical section + +1: SKIP_IN_1 ;Wait for idle + rjmp 1b +2: SKIP_IN_0 ;Wait for start bit + rjmp 2b + ldi r25, BPS/2 ;Wait for half bit time +3: dec r25 + brne 3b + +4: ldi r25, BPS ;----- Bit receiving loop +5: dec r25 ;Wait for a bit time + brne 5b ;/ + lsr r24 ;Next bit + SKIP_IN_0 ;Get a data bit into r24.7 + ori r24, 0x80 + brcc 4b ;All bits received? no, continue + + out _SFR_IO_ADDR(SREG), r0 ;End of critical section + ret +.endfunc + + +; Not wait for start bit. This should be called after detecting start bit. +.global recv +.func recv +recv: + in r0, _SFR_IO_ADDR(SREG) ;Save flags + + ldi r24, 0x80 ;Receiving shift reg + cli ;Start critical section + +;1: SKIP_IN_1 ;Wait for idle +; rjmp 1b +;2: SKIP_IN_0 ;Wait for start bit +; rjmp 2b + ldi r25, BPS/2 ;Wait for half bit time +3: dec r25 + brne 3b + +4: ldi r25, BPS ;----- Bit receiving loop +5: dec r25 ;Wait for a bit time + brne 5b ;/ + lsr r24 ;Next bit + SKIP_IN_0 ;Get a data bit into r24.7 + ori r24, 0x80 + brcc 4b ;All bits received? no, continue + + ldi r25, BPS/2 ;Wait for half bit time +6: dec r25 + brne 6b +7: SKIP_IN_1 ;Wait for stop bit + rjmp 7b + + out _SFR_IO_ADDR(SREG), r0 ;End of critical section + ret +.endfunc diff --git a/tmk_core/protocol/iwrap/suart.h b/tmk_core/protocol/iwrap/suart.h index 72725b998f..7d92be0692 100644 --- a/tmk_core/protocol/iwrap/suart.h +++ b/tmk_core/protocol/iwrap/suart.h @@ -1,8 +1,8 @@ -#ifndef SUART -#define SUART - -void xmit(uint8_t); -uint8_t rcvr(void); -uint8_t recv(void); - -#endif /* SUART */ +#ifndef SUART +#define SUART + +void xmit(uint8_t); +uint8_t rcvr(void); +uint8_t recv(void); + +#endif /* SUART */ diff --git a/tmk_core/protocol/iwrap/wd.h b/tmk_core/protocol/iwrap/wd.h index 99058f0331..12395bf696 100644 --- a/tmk_core/protocol/iwrap/wd.h +++ b/tmk_core/protocol/iwrap/wd.h @@ -1,159 +1,159 @@ -/* This is from http://www.mtcnet.net/~henryvm/wdt/ */ -#ifndef _AVR_WD_H_ -#define _AVR_WD_H_ - -#include - -/* -Copyright (c) 2009, Curt Van Maanen - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -include usage- - #include "wd.h" //if in same directory as project - #include //if wd.h is in avr directory - -set watchdog modes and prescale - -usage- - WD_SET(mode,[timeout]); //prescale always set - -modes- - WD_OFF disabled - WD_RST normal reset mode - WD_IRQ interrupt only mode (if supported) - WD_RST_IRQ interrupt+reset mode (if supported) - -timeout- - WDTO_15MS default if no timeout provided - WDTO_30MS - WDTO_60MS - WDTO_120MS - WDTO_250MS - WDTO_500MS - WDTO_1S - WDTO_2S - WDTO_4S (if supported) - WDTO_8S (if supported) - -examples- - WD_SET(WD_RST,WDTO_1S); //reset mode, 1s timeout - WD_SET(WD_OFF); //watchdog disabled (if not fused on) - WD_SET(WD_RST); //reset mode, 15ms (default timeout) - WD_SET(WD_IRQ,WDTO_120MS); //interrupt only mode, 120ms timeout - WD_SET(WD_RST_IRQ,WDTO_2S); //interrupt+reset mode, 2S timeout - - -for enhanced watchdogs, if the watchdog is not being used WDRF should be -cleared on every power up or reset, along with disabling the watchdog- - WD_DISABLE(); //clear WDRF, then turn off watchdog - -*/ - -//reset registers to the same name (MCUCSR) -#if !defined(MCUCSR) -#define MCUCSR MCUSR -#endif - -//watchdog registers to the same name (WDTCSR) -#if !defined(WDTCSR) -#define WDTCSR WDTCR -#endif - -//if enhanced watchdog, define irq values, create disable macro -#if defined(WDIF) -#define WD_IRQ 0xC0 -#define WD_RST_IRQ 0xC8 -#define WD_DISABLE() do{ \ - MCUCSR &= ~(1< + +/* +Copyright (c) 2009, Curt Van Maanen + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +include usage- + #include "wd.h" //if in same directory as project + #include //if wd.h is in avr directory + +set watchdog modes and prescale + +usage- + WD_SET(mode,[timeout]); //prescale always set + +modes- + WD_OFF disabled + WD_RST normal reset mode + WD_IRQ interrupt only mode (if supported) + WD_RST_IRQ interrupt+reset mode (if supported) + +timeout- + WDTO_15MS default if no timeout provided + WDTO_30MS + WDTO_60MS + WDTO_120MS + WDTO_250MS + WDTO_500MS + WDTO_1S + WDTO_2S + WDTO_4S (if supported) + WDTO_8S (if supported) + +examples- + WD_SET(WD_RST,WDTO_1S); //reset mode, 1s timeout + WD_SET(WD_OFF); //watchdog disabled (if not fused on) + WD_SET(WD_RST); //reset mode, 15ms (default timeout) + WD_SET(WD_IRQ,WDTO_120MS); //interrupt only mode, 120ms timeout + WD_SET(WD_RST_IRQ,WDTO_2S); //interrupt+reset mode, 2S timeout + + +for enhanced watchdogs, if the watchdog is not being used WDRF should be +cleared on every power up or reset, along with disabling the watchdog- + WD_DISABLE(); //clear WDRF, then turn off watchdog + +*/ + +//reset registers to the same name (MCUCSR) +#if !defined(MCUCSR) +#define MCUCSR MCUSR +#endif + +//watchdog registers to the same name (WDTCSR) +#if !defined(WDTCSR) +#define WDTCSR WDTCR +#endif + +//if enhanced watchdog, define irq values, create disable macro +#if defined(WDIF) +#define WD_IRQ 0xC0 +#define WD_RST_IRQ 0xC8 +#define WD_DISABLE() do{ \ + MCUCSR &= ~(1< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CDC Class Bootloader, capable of reprogramming a device using avrdude or other AVR109 protocol compliant software when plugged into a host. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CDC Class Bootloader, capable of reprogramming a device using avrdude or other AVR109 protocol compliant software when plugged into a host. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/DFU/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/DFU/asf.xml index 6f3312b764..f56aba69f5 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/DFU/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/DFU/asf.xml @@ -1,156 +1,156 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DFU Class Bootloader, capable of reprogramming a device using the Atmel FLIP or other AVR DFU programming software when plugged into a host. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DFU Class Bootloader, capable of reprogramming a device using the Atmel FLIP or other AVR DFU programming software when plugged into a host. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml index 9394b13530..c67b9419ed 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml @@ -1,123 +1,123 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HID Class Bootloader, capable of reprogramming a device via a custom cross-platform command line utility when plugged into a host. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HID Class Bootloader, capable of reprogramming a device via a custom cross-platform command line utility when plugged into a host. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/BootloaderAPITable.S b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/BootloaderAPITable.S index 6844d4b01c..91fc949666 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/BootloaderAPITable.S +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/BootloaderAPITable.S @@ -1,102 +1,102 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -#if AUX_BOOT_SECTION_SIZE > 0 -#warning Using a AUX bootloader section in addition to the defined bootloader space (see documentation). - -; Trampoline to jump over the AUX bootloader section to the start of the bootloader, -; on devices where an AUX bootloader section is used. -.section .boot_aux_trampoline, "ax" -.global Boot_AUX_Trampoline -Boot_AUX_Trampoline: - jmp BOOT_START_ADDR -#endif - -; Trampolines to actual API implementations if the target address is outside the -; range of a rjmp instruction (can happen with large bootloader sections) -.section .apitable_trampolines, "ax" -.global BootloaderAPI_Trampolines -BootloaderAPI_Trampolines: - - BootloaderAPI_ErasePage_Trampoline: - jmp BootloaderAPI_ErasePage - BootloaderAPI_WritePage_Trampoline: - jmp BootloaderAPI_WritePage - BootloaderAPI_FillWord_Trampoline: - jmp BootloaderAPI_FillWord - BootloaderAPI_ReadSignature_Trampoline: - jmp BootloaderAPI_ReadSignature - BootloaderAPI_ReadFuse_Trampoline: - jmp BootloaderAPI_ReadFuse - BootloaderAPI_ReadLock_Trampoline: - jmp BootloaderAPI_ReadLock - BootloaderAPI_WriteLock_Trampoline: - jmp BootloaderAPI_WriteLock - BootloaderAPI_UNUSED1: - ret - BootloaderAPI_UNUSED2: - ret - BootloaderAPI_UNUSED3: - ret - BootloaderAPI_UNUSED4: - ret - BootloaderAPI_UNUSED5: - ret - - - -; API function jump table -.section .apitable_jumptable, "ax" -.global BootloaderAPI_JumpTable -BootloaderAPI_JumpTable: - - rjmp BootloaderAPI_ErasePage_Trampoline - rjmp BootloaderAPI_WritePage_Trampoline - rjmp BootloaderAPI_FillWord_Trampoline - rjmp BootloaderAPI_ReadSignature_Trampoline - rjmp BootloaderAPI_ReadFuse_Trampoline - rjmp BootloaderAPI_ReadLock_Trampoline - rjmp BootloaderAPI_WriteLock_Trampoline - rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1 - rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2 - rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3 - rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4 - rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5 - - - -; Bootloader table signatures and information -.section .apitable_signatures, "ax" -.global BootloaderAPI_Signatures -BootloaderAPI_Signatures: - - .long BOOT_START_ADDR ; Start address of the bootloader - .word 0xDF30 ; Signature for the MS class bootloader, V1 - .word 0xDCFB ; Signature for a LUFA class bootloader +/* + LUFA Library + Copyright (C) Dean Camera, 2014. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#if AUX_BOOT_SECTION_SIZE > 0 +#warning Using a AUX bootloader section in addition to the defined bootloader space (see documentation). + +; Trampoline to jump over the AUX bootloader section to the start of the bootloader, +; on devices where an AUX bootloader section is used. +.section .boot_aux_trampoline, "ax" +.global Boot_AUX_Trampoline +Boot_AUX_Trampoline: + jmp BOOT_START_ADDR +#endif + +; Trampolines to actual API implementations if the target address is outside the +; range of a rjmp instruction (can happen with large bootloader sections) +.section .apitable_trampolines, "ax" +.global BootloaderAPI_Trampolines +BootloaderAPI_Trampolines: + + BootloaderAPI_ErasePage_Trampoline: + jmp BootloaderAPI_ErasePage + BootloaderAPI_WritePage_Trampoline: + jmp BootloaderAPI_WritePage + BootloaderAPI_FillWord_Trampoline: + jmp BootloaderAPI_FillWord + BootloaderAPI_ReadSignature_Trampoline: + jmp BootloaderAPI_ReadSignature + BootloaderAPI_ReadFuse_Trampoline: + jmp BootloaderAPI_ReadFuse + BootloaderAPI_ReadLock_Trampoline: + jmp BootloaderAPI_ReadLock + BootloaderAPI_WriteLock_Trampoline: + jmp BootloaderAPI_WriteLock + BootloaderAPI_UNUSED1: + ret + BootloaderAPI_UNUSED2: + ret + BootloaderAPI_UNUSED3: + ret + BootloaderAPI_UNUSED4: + ret + BootloaderAPI_UNUSED5: + ret + + + +; API function jump table +.section .apitable_jumptable, "ax" +.global BootloaderAPI_JumpTable +BootloaderAPI_JumpTable: + + rjmp BootloaderAPI_ErasePage_Trampoline + rjmp BootloaderAPI_WritePage_Trampoline + rjmp BootloaderAPI_FillWord_Trampoline + rjmp BootloaderAPI_ReadSignature_Trampoline + rjmp BootloaderAPI_ReadFuse_Trampoline + rjmp BootloaderAPI_ReadLock_Trampoline + rjmp BootloaderAPI_WriteLock_Trampoline + rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1 + rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2 + rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3 + rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4 + rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5 + + + +; Bootloader table signatures and information +.section .apitable_signatures, "ax" +.global BootloaderAPI_Signatures +BootloaderAPI_Signatures: + + .long BOOT_START_ADDR ; Start address of the bootloader + .word 0xDF30 ; Signature for the MS class bootloader, V1 + .word 0xDCFB ; Signature for a LUFA class bootloader diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/asf.xml index f1d550d1eb..700ffa26ff 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/asf.xml @@ -1,156 +1,156 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Mass Storage Class Bootloader, capable of reprogramming a device via binary BIN files copied to the virtual FAT12 file-system it creates when plugged into a host. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mass Storage Class Bootloader, capable of reprogramming a device via binary BIN files copied to the virtual FAT12 file-system it creates when plugged into a host. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/makefile b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/makefile index 91bb4038e8..a0edb2c4f5 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/makefile +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/makefile @@ -1,68 +1,68 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# -# -------------------------------------- -# LUFA Project Makefile. -# -------------------------------------- - -# Run "make help" for target help. - -MCU = at90usb1287 -ARCH = AVR8 -BOARD = USBKEY -F_CPU = 8000000 -F_USB = $(F_CPU) -OPTIMIZATION = s -TARGET = BootloaderMassStorage -SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S Lib/SCSI.c Lib/VirtualFAT.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) -LUFA_PATH = ../../LUFA -CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET) -LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS) - -# Flash size and bootloader section sizes of the target, in KB. These must -# match the target's total FLASH size and the bootloader size set in the -# device's fuses. -FLASH_SIZE_KB = 128 -BOOT_SECTION_SIZE_KB = 8 - -# Bootloader address calculation formulas -# Do not modify these macros, but rather modify the dependent values above. -CALC_ADDRESS_IN_HEX = $(shell printf "0x%X" $$(( $(1) )) ) -BOOT_START_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 ) -BOOT_SEC_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) ) - -# Bootloader linker section flags for relocating the API table sections to -# known FLASH addresses - these should not normally be user-edited. -BOOT_SECTION_LD_FLAG = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2)) -BOOT_API_LD_FLAGS = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96) -BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable, BootloaderAPI_JumpTable, 32) -BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8) - -# Check if the bootloader needs an AUX section, located before the real bootloader section to store some of the -# bootloader code. This is required for 32KB and smaller devices, where the actual bootloader is 6KB but the maximum -# bootloader section size is 4KB. The actual usable application space will be reduced by 6KB for these devices. -ifeq ($(BOOT_SECTION_SIZE_KB),8) - CC_FLAGS += -DAUX_BOOT_SECTION_SIZE=0 -else - AUX_BOOT_SECTION_SIZE_KB = (6 - $(BOOT_SECTION_SIZE_KB)) - - CC_FLAGS += -DAUX_BOOT_SECTION_SIZE='($(AUX_BOOT_SECTION_SIZE_KB) * 1024)' - LD_FLAGS += -Wl,--section-start=.boot_aux=$(call BOOT_SEC_OFFSET, (($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024 - 16)) - LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .boot_aux_trampoline, Boot_AUX_Trampoline, ($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024) -endif - -# Default target -all: - -# Include LUFA build script makefiles -include $(LUFA_PATH)/Build/lufa_core.mk -include $(LUFA_PATH)/Build/lufa_sources.mk -include $(LUFA_PATH)/Build/lufa_build.mk -include $(LUFA_PATH)/Build/lufa_cppcheck.mk -include $(LUFA_PATH)/Build/lufa_doxygen.mk -include $(LUFA_PATH)/Build/lufa_avrdude.mk -include $(LUFA_PATH)/Build/lufa_atprogram.mk +# +# LUFA Library +# Copyright (C) Dean Camera, 2014. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# -------------------------------------- +# LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU = at90usb1287 +ARCH = AVR8 +BOARD = USBKEY +F_CPU = 8000000 +F_USB = $(F_CPU) +OPTIMIZATION = s +TARGET = BootloaderMassStorage +SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S Lib/SCSI.c Lib/VirtualFAT.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) +LUFA_PATH = ../../LUFA +CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET) +LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS) + +# Flash size and bootloader section sizes of the target, in KB. These must +# match the target's total FLASH size and the bootloader size set in the +# device's fuses. +FLASH_SIZE_KB = 128 +BOOT_SECTION_SIZE_KB = 8 + +# Bootloader address calculation formulas +# Do not modify these macros, but rather modify the dependent values above. +CALC_ADDRESS_IN_HEX = $(shell printf "0x%X" $$(( $(1) )) ) +BOOT_START_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 ) +BOOT_SEC_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) ) + +# Bootloader linker section flags for relocating the API table sections to +# known FLASH addresses - these should not normally be user-edited. +BOOT_SECTION_LD_FLAG = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2)) +BOOT_API_LD_FLAGS = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96) +BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable, BootloaderAPI_JumpTable, 32) +BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8) + +# Check if the bootloader needs an AUX section, located before the real bootloader section to store some of the +# bootloader code. This is required for 32KB and smaller devices, where the actual bootloader is 6KB but the maximum +# bootloader section size is 4KB. The actual usable application space will be reduced by 6KB for these devices. +ifeq ($(BOOT_SECTION_SIZE_KB),8) + CC_FLAGS += -DAUX_BOOT_SECTION_SIZE=0 +else + AUX_BOOT_SECTION_SIZE_KB = (6 - $(BOOT_SECTION_SIZE_KB)) + + CC_FLAGS += -DAUX_BOOT_SECTION_SIZE='($(AUX_BOOT_SECTION_SIZE_KB) * 1024)' + LD_FLAGS += -Wl,--section-start=.boot_aux=$(call BOOT_SEC_OFFSET, (($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024 - 16)) + LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .boot_aux_trampoline, Boot_AUX_Trampoline, ($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024) +endif + +# Default target +all: + +# Include LUFA build script makefiles +include $(LUFA_PATH)/Build/lufa_core.mk +include $(LUFA_PATH)/Build/lufa_sources.mk +include $(LUFA_PATH)/Build/lufa_build.mk +include $(LUFA_PATH)/Build/lufa_cppcheck.mk +include $(LUFA_PATH)/Build/lufa_doxygen.mk +include $(LUFA_PATH)/Build/lufa_avrdude.mk +include $(LUFA_PATH)/Build/lufa_atprogram.mk diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/BootloaderAPITable.S b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/BootloaderAPITable.S index ec499b74e5..88c51da825 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/BootloaderAPITable.S +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/BootloaderAPITable.S @@ -1,91 +1,91 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -; Trampolines to actual API implementations if the target address is outside the -; range of a rjmp instruction (can happen with large bootloader sections) -.section .apitable_trampolines, "ax" -.global BootloaderAPI_Trampolines -BootloaderAPI_Trampolines: - - BootloaderAPI_ErasePage_Trampoline: - jmp BootloaderAPI_ErasePage - BootloaderAPI_WritePage_Trampoline: - jmp BootloaderAPI_WritePage - BootloaderAPI_FillWord_Trampoline: - jmp BootloaderAPI_FillWord - BootloaderAPI_ReadSignature_Trampoline: - jmp BootloaderAPI_ReadSignature - BootloaderAPI_ReadFuse_Trampoline: - jmp BootloaderAPI_ReadFuse - BootloaderAPI_ReadLock_Trampoline: - jmp BootloaderAPI_ReadLock - BootloaderAPI_WriteLock_Trampoline: - jmp BootloaderAPI_WriteLock - BootloaderAPI_UNUSED1: - ret - BootloaderAPI_UNUSED2: - ret - BootloaderAPI_UNUSED3: - ret - BootloaderAPI_UNUSED4: - ret - BootloaderAPI_UNUSED5: - ret - - - -; API function jump table -.section .apitable_jumptable, "ax" -.global BootloaderAPI_JumpTable -BootloaderAPI_JumpTable: - - rjmp BootloaderAPI_ErasePage_Trampoline - rjmp BootloaderAPI_WritePage_Trampoline - rjmp BootloaderAPI_FillWord_Trampoline - rjmp BootloaderAPI_ReadSignature_Trampoline - rjmp BootloaderAPI_ReadFuse_Trampoline - rjmp BootloaderAPI_ReadLock_Trampoline - rjmp BootloaderAPI_WriteLock_Trampoline - rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1 - rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2 - rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3 - rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4 - rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5 - - - -; Bootloader table signatures and information -.section .apitable_signatures, "ax" -.global BootloaderAPI_Signatures -BootloaderAPI_Signatures: - - .long BOOT_START_ADDR ; Start address of the bootloader - .word 0xDF20 ; Signature for the Printer class bootloader - .word 0xDCFB ; Signature for a LUFA class bootloader +/* + LUFA Library + Copyright (C) Dean Camera, 2014. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +; Trampolines to actual API implementations if the target address is outside the +; range of a rjmp instruction (can happen with large bootloader sections) +.section .apitable_trampolines, "ax" +.global BootloaderAPI_Trampolines +BootloaderAPI_Trampolines: + + BootloaderAPI_ErasePage_Trampoline: + jmp BootloaderAPI_ErasePage + BootloaderAPI_WritePage_Trampoline: + jmp BootloaderAPI_WritePage + BootloaderAPI_FillWord_Trampoline: + jmp BootloaderAPI_FillWord + BootloaderAPI_ReadSignature_Trampoline: + jmp BootloaderAPI_ReadSignature + BootloaderAPI_ReadFuse_Trampoline: + jmp BootloaderAPI_ReadFuse + BootloaderAPI_ReadLock_Trampoline: + jmp BootloaderAPI_ReadLock + BootloaderAPI_WriteLock_Trampoline: + jmp BootloaderAPI_WriteLock + BootloaderAPI_UNUSED1: + ret + BootloaderAPI_UNUSED2: + ret + BootloaderAPI_UNUSED3: + ret + BootloaderAPI_UNUSED4: + ret + BootloaderAPI_UNUSED5: + ret + + + +; API function jump table +.section .apitable_jumptable, "ax" +.global BootloaderAPI_JumpTable +BootloaderAPI_JumpTable: + + rjmp BootloaderAPI_ErasePage_Trampoline + rjmp BootloaderAPI_WritePage_Trampoline + rjmp BootloaderAPI_FillWord_Trampoline + rjmp BootloaderAPI_ReadSignature_Trampoline + rjmp BootloaderAPI_ReadFuse_Trampoline + rjmp BootloaderAPI_ReadLock_Trampoline + rjmp BootloaderAPI_WriteLock_Trampoline + rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1 + rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2 + rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3 + rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4 + rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5 + + + +; Bootloader table signatures and information +.section .apitable_signatures, "ax" +.global BootloaderAPI_Signatures +BootloaderAPI_Signatures: + + .long BOOT_START_ADDR ; Start address of the bootloader + .word 0xDF20 ; Signature for the Printer class bootloader + .word 0xDCFB ; Signature for a LUFA class bootloader diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/asf.xml index 86a56911ed..b5c0c6b3a5 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/asf.xml @@ -1,159 +1,159 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Printer Class Bootloader, capable of reprogramming a device by "printing" new HEX files to the virtual Plain-Text printer it creates when plugged into a host. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Printer Class Bootloader, capable of reprogramming a device by "printing" new HEX files to the virtual Plain-Text printer it creates when plugged into a host. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/makefile b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/makefile index 0716c3bbe8..0db035de3b 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/makefile +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/makefile @@ -1,55 +1,55 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# -# -------------------------------------- -# LUFA Project Makefile. -# -------------------------------------- - -# Run "make help" for target help. - -MCU = at90usb1287 -ARCH = AVR8 -BOARD = USBKEY -F_CPU = 8000000 -F_USB = $(F_CPU) -OPTIMIZATION = s -TARGET = BootloaderPrinter -SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) -LUFA_PATH = ../../LUFA -CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET) -LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS) - -# Flash size and bootloader section sizes of the target, in KB. These must -# match the target's total FLASH size and the bootloader size set in the -# device's fuses. -FLASH_SIZE_KB = 128 -BOOT_SECTION_SIZE_KB = 8 - -# Bootloader address calculation formulas -# Do not modify these macros, but rather modify the dependent values above. -CALC_ADDRESS_IN_HEX = $(shell printf "0x%X" $$(( $(1) )) ) -BOOT_START_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 ) -BOOT_SEC_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) ) - -# Bootloader linker section flags for relocating the API table sections to -# known FLASH addresses - these should not normally be user-edited. -BOOT_SECTION_LD_FLAG = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2)) -BOOT_API_LD_FLAGS = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96) -BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable, BootloaderAPI_JumpTable, 32) -BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8) - -# Default target -all: - -# Include LUFA build script makefiles -include $(LUFA_PATH)/Build/lufa_core.mk -include $(LUFA_PATH)/Build/lufa_sources.mk -include $(LUFA_PATH)/Build/lufa_build.mk -include $(LUFA_PATH)/Build/lufa_cppcheck.mk -include $(LUFA_PATH)/Build/lufa_doxygen.mk -include $(LUFA_PATH)/Build/lufa_avrdude.mk -include $(LUFA_PATH)/Build/lufa_atprogram.mk +# +# LUFA Library +# Copyright (C) Dean Camera, 2014. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# -------------------------------------- +# LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU = at90usb1287 +ARCH = AVR8 +BOARD = USBKEY +F_CPU = 8000000 +F_USB = $(F_CPU) +OPTIMIZATION = s +TARGET = BootloaderPrinter +SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) +LUFA_PATH = ../../LUFA +CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET) +LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS) + +# Flash size and bootloader section sizes of the target, in KB. These must +# match the target's total FLASH size and the bootloader size set in the +# device's fuses. +FLASH_SIZE_KB = 128 +BOOT_SECTION_SIZE_KB = 8 + +# Bootloader address calculation formulas +# Do not modify these macros, but rather modify the dependent values above. +CALC_ADDRESS_IN_HEX = $(shell printf "0x%X" $$(( $(1) )) ) +BOOT_START_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 ) +BOOT_SEC_OFFSET = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) ) + +# Bootloader linker section flags for relocating the API table sections to +# known FLASH addresses - these should not normally be user-edited. +BOOT_SECTION_LD_FLAG = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2)) +BOOT_API_LD_FLAGS = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96) +BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable, BootloaderAPI_JumpTable, 32) +BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8) + +# Default target +all: + +# Include LUFA build script makefiles +include $(LUFA_PATH)/Build/lufa_core.mk +include $(LUFA_PATH)/Build/lufa_sources.mk +include $(LUFA_PATH)/Build/lufa_build.mk +include $(LUFA_PATH)/Build/lufa_cppcheck.mk +include $(LUFA_PATH)/Build/lufa_doxygen.mk +include $(LUFA_PATH)/Build/lufa_avrdude.mk +include $(LUFA_PATH)/Build/lufa_atprogram.mk diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile b/tmk_core/protocol/lufa/LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile index 9fd188c936..e839ba6b1d 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile @@ -1,42 +1,42 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# -# -------------------------------------- -# LUFA Project Makefile. -# -------------------------------------- - -# Run "make help" for target help. - -MCU = at90usb1287 -ARCH = AVR8 -F_CPU = 1000000 -F_USB = $(F_CPU) -OPTIMIZATION = s -TARGET = HID_EEPROM_Loader -SRC = $(TARGET).c -LUFA_PATH = ../../../LUFA -CC_FLAGS = -LD_FLAGS = -OBJECT_FILES = InputEEData.o - -# Default target -all: - -# Determine the AVR sub-architecture of the build main application object file -FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) - -# Create a linkable object file with the input binary EEPROM data stored in the FLASH section -InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST) - @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\" - avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@ - -# Include LUFA build script makefiles -include $(LUFA_PATH)/Build/lufa_core.mk -include $(LUFA_PATH)/Build/lufa_build.mk -include $(LUFA_PATH)/Build/lufa_cppcheck.mk -include $(LUFA_PATH)/Build/lufa_doxygen.mk -include $(LUFA_PATH)/Build/lufa_hid.mk +# +# LUFA Library +# Copyright (C) Dean Camera, 2014. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# -------------------------------------- +# LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU = at90usb1287 +ARCH = AVR8 +F_CPU = 1000000 +F_USB = $(F_CPU) +OPTIMIZATION = s +TARGET = HID_EEPROM_Loader +SRC = $(TARGET).c +LUFA_PATH = ../../../LUFA +CC_FLAGS = +LD_FLAGS = +OBJECT_FILES = InputEEData.o + +# Default target +all: + +# Determine the AVR sub-architecture of the build main application object file +FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) + +# Create a linkable object file with the input binary EEPROM data stored in the FLASH section +InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST) + @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\" + avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@ + +# Include LUFA build script makefiles +include $(LUFA_PATH)/Build/lufa_core.mk +include $(LUFA_PATH)/Build/lufa_build.mk +include $(LUFA_PATH)/Build/lufa_cppcheck.mk +include $(LUFA_PATH)/Build/lufa_doxygen.mk +include $(LUFA_PATH)/Build/lufa_hid.mk diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml index fd65db283f..e952714e16 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml @@ -1,55 +1,55 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - Template for a LUFA USB device mode application. - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + Template for a LUFA USB device mode application. + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml index c1996ec711..c3860c056d 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml @@ -1,41 +1,41 @@ - - - - - - - - - - - - - - - - Template for a LUFA USB host mode application. - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + Template for a LUFA USB host mode application. + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/DoxygenPages/BuildSystem.txt b/tmk_core/protocol/lufa/LUFA-git/LUFA/DoxygenPages/BuildSystem.txt index 7ddfa1be3f..0ae1dd678f 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/DoxygenPages/BuildSystem.txt +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/DoxygenPages/BuildSystem.txt @@ -1,975 +1,975 @@ -/** \file - * - * This file contains special DoxyGen information for the generation of the main page and other special - * documentation pages. It is not a project source file. - */ - -/** \page Page_BuildSystem The LUFA Build System - * - * \section Sec_BuildSystem_Overview Overview of the LUFA Build System - * The LUFA build system is an attempt at making a set of re-usable, modular build make files which - * can be referenced in a LUFA powered project, to minimize the amount of code required in an - * application makefile. The system is written in GNU Make, and each module is independent of - * one-another. - * - * For details on the prerequisites needed for Linux and Windows machines to be able to use the LUFA - * build system, see \ref Sec_CompilingApps_Prerequisites. - * - * To use a LUFA build system module, simply add an include to your project makefile. All user projects - * should at a minimum include \ref Page_BuildModule_CORE for base functionality: - * \code - * include $(LUFA_PATH)/Build/lufa_core.mk - * \endcode - * - * Once included in your project makefile, the associated build module targets will be added to your - * project's build makefile targets automatically. To call a build target, run make {TARGET_NAME} - * from the command line, substituting in the appropriate target name. - * - * \see \ref Sec_ConfiguringApps_AppMakefileParams for a copy of the sample LUFA project makefile. - * - * Each build module may have one or more mandatory parameters (GNU Make variables) which must - * be supplied in the project makefile for the module to work, and one or more optional parameters which - * may be defined and which will assume a sensible default if not. - * - * \section SSec_BuildSystem_Modules Available Modules - * - * The following modules are included in this LUFA release: - * - * \li \subpage Page_BuildModule_ATPROGRAM - Device Programming - * \li \subpage Page_BuildModule_AVRDUDE - Device Programming - * \li \subpage Page_BuildModule_BUILD - Compiling/Assembling/Linking - * \li \subpage Page_BuildModule_CORE - Core Build System Functions - * \li \subpage Page_BuildModule_CPPCHECK - Static Code Analysis - * \li \subpage Page_BuildModule_DFU - Device Programming - * \li \subpage Page_BuildModule_DOXYGEN - Automated Source Code Documentation - * \li \subpage Page_BuildModule_HID - Device Programming - * \li \subpage Page_BuildModule_SOURCES - LUFA Module Source Code Variables - * - * If you have problems building using the LUFA build system, see \subpage Page_BuildTroubleshooting for resolution steps. - */ - - /** \page Page_BuildModule_BUILD The BUILD build module - * - * The BUILD LUFA build system module, providing targets for the compilation, - * assembling and linking of an application from source code into binary files - * suitable for programming into a target device, using the GCC compiler. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_build.mk - * \endcode - * - * \section SSec_BuildModule_BUILD_Requirements Requirements - * This module requires the the architecture appropriate binaries of the GCC compiler are available in your - * system's PATH variable. The GCC compiler and associated toolchain is distributed in Atmel AVR Studio - * 5.x and Atmel Studio 6.x installation directories, as well as in many third party distribution packages. - * - * \section SSec_BuildModule_BUILD_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
sizeDisplay size of the compiled application FLASH and SRAM segments.
symbol-sizesDisplay a size-sorted list of symbols from the compiled application, in decimal bytes.
libBuild and archive all source files into a library A binary file.
allBuild and link the application into ELF debug and HEX binary files.
elfBuild and link the application into an ELF debug file.
binBuild and link the application and produce a BIN binary file.
hexBuild and link the application and produce HEX and EEP binary files.
lssBuild and link the application and produce a LSS source code/assembly code mixed listing file.
cleanRemove all intermediary files and binary output files.
mostlycleanRemove all intermediary files but preserve any binary output files.
<filename>.sCreate an assembly listing of a given input C/C++ source file.
- * - * \section SSec_BuildModule_BUILD_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
TARGETName of the application output file prefix (e.g. TestApplication).
ARCHArchitecture of the target processor (see \ref Page_DeviceSupport).
MCUName of the Atmel processor model (e.g. at90usb1287).
SRCList of relative or absolute paths to the application C (.c), C++ (.cpp) and Assembly (.S) source files.
F_USBSpeed in Hz of the input clock frequency to the target's USB controller.
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
- * - * \section SSec_BuildModule_BUILD_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
BOARDLUFA board hardware drivers to use (see \ref Page_DeviceSupport).
OPTIMIZATIONOptimization level to use when compiling source files (see GCC manual).
C_STANDARDVersion of the C standard to apply when compiling C++ source files (see GCC manual).
CPP_STANDARDVersion of the C++ standard to apply when compiling C++ source files (see GCC manual).
DEBUG_FORMATFormat of the debug information to embed in the generated object files (see GCC manual).
DEBUG_LEVELLevel of the debugging information to embed in the generated object files (see GCC manual).
F_CPUSpeed of the processor CPU clock, in Hz.
C_FLAGSFlags to pass to the C compiler only, after the automatically generated flags.
CPP_FLAGSFlags to pass to the C++ compiler only, after the automatically generated flags.
ASM_FLAGSFlags to pass to the assembler only, after the automatically generated flags.
CC_FLAGSCommon flags to pass to the C/C++ compiler and assembler, after the automatically generated flags.
COMPILER_PATHDirectory where the C/C++ toolchain is located, if not available in the system PATH.
LD_FLAGSFlags to pass to the linker, after the automatically generated flags.
LINKER_RELAXATIONSEnables or disables linker relaxations when linking the application binary. This can reduce the total size - * of the application by replacing full \c CALL instructions with smaller \c RCALL instructions where possible. - * \note On some unpatched versions of binutils, this can cause link failures in some circumstances. If you - * receive a link error relocation truncated to fit: R_AVR_13_PCREL, disable this setting.
OBJDIRDirectory to place the generated object and dependency files. If set to "." the same folder as the source file will be used. - * \note When this option is enabled, all source filenames must be unique.
OBJECT_FILESList of additional object files that should be linked into the resulting binary.
- * - * \section SSec_BuildModule_BUILD_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_BUILD_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - -/** \page Page_BuildModule_CORE The CORE build module - * - * The core LUFA build system module, providing common build system help and information targets. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_core.mk - * \endcode - * - * \section SSec_BuildModule_CORE_Requirements Requirements - * This module has no requirements outside a standard *nix shell like environment; the sh - * shell, GNU make and *nix CoreUtils (echo, printf, etc.). - * - * \section SSec_BuildModule_CORE_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
helpDisplay build system help and configuration information.
list_targetsList all available build targets from the build system.
list_modulesList all available build modules from the build system.
list_mandatoryList all mandatory parameters required by the included modules.
list_optionalList all optional parameters required by the included modules.
list_providedList all variables provided by the included modules.
list_macrosList all macros provided by the included modules.
- * - * \section SSec_BuildModule_CORE_MandatoryParams Mandatory Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_CORE_OptionalParams Optional Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_CORE_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_CORE_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - -/** \page Page_BuildModule_ATPROGRAM The ATPROGRAM build module - * - * The ATPROGRAM programming utility LUFA build system module, providing targets to reprogram an - * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_atprogram.mk - * \endcode - * - * \section SSec_BuildModule_ATPROGRAM_Requirements Requirements - * This module requires the atprogram.exe utility to be available in your system's PATH - * variable. The atprogram.exe utility is distributed in Atmel AVR Studio 5.x and Atmel Studio 6.x - * inside the application install folder's "\atbackend" subdirectory. - * - * \section SSec_BuildModule_ATPROGRAM_Targets Targets - * - * - * - * - * - * - * - * - * - * - *
atprogramProgram the device FLASH memory with the application's executable data.
atprogram-eeProgram the device EEPROM memory with the application's EEPROM data.
- * - * \section SSec_BuildModule_ATPROGRAM_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
- * - * \section SSec_BuildModule_ATPROGRAM_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
ATPROGRAM_PROGRAMMERName of the Atmel programmer or debugger tool to communicate with (e.g. jtagice3).
ATPROGRAM_INTERFACEName of the programming interface to use when programming the target (e.g. spi).
ATPROGRAM_PORTName of the communication port to use when when programming with a serially connected tool (e.g. COM2).
- * - * \section SSec_BuildModule_ATPROGRAM_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_ATPROGRAM_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - -/** \page Page_BuildModule_AVRDUDE The AVRDUDE build module - * - * The AVRDUDE programming utility LUFA build system module, providing targets to reprogram an - * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_avrdude.mk - * \endcode - * - * \section SSec_BuildModule_AVRDUDE_Requirements Requirements - * This module requires the avrdude utility to be available in your system's PATH - * variable. The avrdude utility is distributed in the old WinAVR project releases for - * Windows (http://winavr.sourceforge.net) or can be installed on *nix systems via the project's - * source code (https://savannah.nongnu.org/projects/avrdude) or through the package manager. - * - * \section SSec_BuildModule_AVRDUDE_Targets Targets - * - * - * - * - * - * - * - * - * - * - *
avrdudeProgram the device FLASH memory with the application's executable data.
avrdude-eeProgram the device EEPROM memory with the application's EEPROM data.
- * - * \section SSec_BuildModule_AVRDUDE_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
- * - * \section SSec_BuildModule_AVRDUDE_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
AVRDUDE_PROGRAMMERName of the programmer or debugger tool to communicate with (e.g. jtagicemkii).
AVRDUDE_PORTName of the communication port to use when when programming with the connected tool (e.g. COM2, /dev/ttyUSB0 or usb).
AVRDUDE_FLAGSAdditional flags to pass to avrdude when programming, applied after the automatically generated flags.
- * - * \section SSec_BuildModule_AVRDUDE_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_AVRDUDE_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_CPPCHECK The CPPCHECK build module - * - * The CPPCHECK programming utility LUFA build system module, providing targets to statically - * analyze C and C++ source code for errors and performance/style issues. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_cppcheck.mk - * \endcode - * - * \section SSec_BuildModule_CPPCHECK_Requirements Requirements - * This module requires the cppcheck utility to be available in your system's PATH - * variable. The cppcheck utility is distributed through the project's home page - * (http://cppcheck.sourceforge.net) for Windows, and can be installed on *nix systems via - * the project's source code or through the package manager. - * - * \section SSec_BuildModule_CPPCHECK_Targets Targets - * - * - * - * - * - * - * - * - * - * - *
cppcheckStatically analyze the project source code for issues.
cppcheck-configCheck the cppcheck configuration - scan source code and warn about missing header files and other issues.
- * - * \section SSec_BuildModule_CPPCHECK_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - *
SRCList of source files to statically analyze.
- * - * \section SSec_BuildModule_CPPCHECK_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
CPPCHECK_INCLUDESPath of extra directories to check when attemting to resolve C/C++ header file includes.
CPPCHECK_EXCLUDESPaths or path fragments to exclude when analyzing.
CPPCHECK_MSG_TEMPLATEOutput message template to use when printing errors, warnings and information (see cppcheck documentation).
CPPCHECK_ENABLEAnalysis rule categories to enable (see cppcheck documentation).
CPPCHECK_SUPPRESSSpecific analysis rules to suppress (see cppcheck documentation).
CPPCHECK_FAIL_ON_WARNINGSet to Y to fail the analysis job with an error exit code if warnings are found, N to continue without failing.
CPPCHECK_QUIETSet to Y to suppress all output except warnings and errors, N to show verbose output information.
CPPCHECK_FLAGSExtra flags to pass to cppcheck, after the automatically generated flags.
- * - * \section SSec_BuildModule_CPPCHECK_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_CPPCHECK_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_DFU The DFU build module - * - * The DFU programming utility LUFA build system module, providing targets to reprogram an - * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. - * This module requires a DFU class bootloader to be running in the target, compatible with - * the DFU bootloader protocol as published by Atmel. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_dfu.mk - * \endcode - * - * \section SSec_BuildModule_DFU_Requirements Requirements - * This module requires either the batchisp utility from Atmel's FLIP utility, or the open - * source dfu-programmer utility (http://dfu-programmer.sourceforge.net/) to be - * available in your system's PATH variable. On *nix systems the dfu-programmer utility - * can be installed via the project's source code or through the package manager. - * - * \section SSec_BuildModule_DFU_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
dfuProgram the device FLASH memory with the application's executable data using dfu-programmer.
dfu-eeProgram the device EEPROM memory with the application's EEPROM data using dfu-programmer.
flipProgram the device FLASH memory with the application's executable data using batchisp.
flip-eeProgram the device EEPROM memory with the application's EEPROM data using batchisp.
- * - * \section SSec_BuildModule_DFU_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
- * - * \section SSec_BuildModule_DFU_OptionalParams Optional Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_DFU_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_DFU_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_DOXYGEN The DOXYGEN build module - * - * The DOXYGEN code documentation utility LUFA build system module, providing targets to generate - * project HTML and other format documentation from a set of source files that include special - * Doxygen comments. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_doxygen.mk - * \endcode - * - * \section SSec_BuildModule_DOXYGEN_Requirements Requirements - * This module requires the doxygen utility from the Doxygen website - * (http://www.doxygen.org/) to be available in your system's PATH variable. On *nix - * systems the doxygen utility can be installed via the project's source code or through - * the package manager. - * - * \section SSec_BuildModule_DOXYGEN_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
doxygenGenerate project documentation.
doxygen_createCreate a new Doxygen configuration file using the latest template.
doxygen_upgradeUpgrade an existing Doxygen configuration file to the latest template
- * - * \section SSec_BuildModule_DOXYGEN_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - *
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
- * - * \section SSec_BuildModule_DOXYGEN_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
DOXYGEN_CONFName and path of the base Doxygen configuration file for the project.
DOXYGEN_FAIL_ON_WARNINGSet to Y to fail the generation with an error exit code if warnings are found other than unsupported configuration parameters, N to continue without failing.
DOXYGEN_OVERRIDE_PARAMSExtra Doxygen configuration parameters to apply, overriding the corresponding config entry in the project's configuration file (e.g. QUIET=YES).
- * - * \section SSec_BuildModule_DOXYGEN_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_DOXYGEN_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_HID The HID build module - * - * The HID programming utility LUFA build system module, providing targets to reprogram an - * Atmel processor's FLASH memory with a project's compiled binary output file. This module - * requires a HID class bootloader to be running in the target, using a protocol compatible - * with the PJRC "HalfKay" protocol (http://www.pjrc.com/teensy/halfkay_protocol.html). - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_hid.mk - * \endcode - * - * \section SSec_BuildModule_HID_Requirements Requirements - * This module requires either the hid_bootloader_cli utility from the included LUFA HID - * class bootloader API subdirectory, or the teensy_loader_cli utility from PJRC - * (http://www.pjrc.com/teensy/loader_cli.html) to be available in your system's PATH - * variable. - * - * \section SSec_BuildModule_HID_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
hidProgram the device FLASH memory with the application's executable data using hid_bootloader_cli.
hid-eeProgram the device EEPROM memory with the application's EEPROM data using hid_bootloader_cli and - * a temporary AVR application programmed into the target's FLASH. - * \note This will erase the currently loaded application in the target.
teensyProgram the device FLASH memory with the application's executable data using teensy_loader_cli.
teensy-eeProgram the device EEPROM memory with the application's EEPROM data using teensy_loader_cli and - * a temporary AVR application programmed into the target's FLASH. - * \note This will erase the currently loaded application in the target.
- * - * \section SSec_BuildModule_HID_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
- * - * \section SSec_BuildModule_HID_OptionalParams Optional Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_HID_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_HID_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_SOURCES The SOURCES build module - * - * The SOURCES LUFA build system module, providing variables listing the various LUFA source files - * required to be build by a project for a given LUFA module. This module gives a way to reference - * LUFA source files symbolically, so that changes to the library structure do not break the library - * makefile. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_sources.mk - * \endcode - * - * \section SSec_BuildModule_SOURCES_Requirements Requirements - * None. - * - * \section SSec_BuildModule_SOURCES_Targets Targets - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_SOURCES_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
ARCHArchitecture of the target processor (see \ref Page_DeviceSupport).
- * - * \section SSec_BuildModule_SOURCES_OptionalParams Optional Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_SOURCES_ProvidedVariables Module Provided Variables - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
LUFA_SRC_USBList of LUFA USB driver source files.
LUFA_SRC_USBCLASSList of LUFA USB Class driver source files.
LUFA_SRC_TEMPERATUREList of LUFA temperature sensor driver source files.
LUFA_SRC_SERIALList of LUFA Serial U(S)ART driver source files.
LUFA_SRC_TWIList of LUFA TWI driver source files.
LUFA_SRC_PLATFORMList of LUFA architecture specific platform management source files.
- * - * \section SSec_BuildModule_SOURCES_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - -/** \page Page_BuildTroubleshooting Troubleshooting Information - * - * LUFA uses a lot of advanced features of the AVR-GCC compiler, linker, and surrounding binaries. This can sometimes lead to problems compiling applications if one of these - * features is buggy in the version of the tools used in a build environment. Missing utilities and incorrectly set makefile configuration options can also result in different - * errors being produced when compilation or other operations are attempted. The table below lists a set of commonly encountered errors and their resolutions. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
ProblemResolution
Error "relocation truncated to fit: R_AVR_13_PCREL against symbol {X}" shown when compiling.Try compiling with the setting LINKER_RELAXATIONS=N in your LUFA Build System 2.0 makefile, or remove the line -Wl,--relax - * from other makefiles. Alternatively, make sure you have the latest version of the Atmel Toolchain installed for your system.
Error "error: ld terminated with signal 11 [Segmentation fault]" shown when compiling.Try compiling with the setting DEBUG_LEVEL=2 in your LUFA Build System 2.0 makefile, or make sure you are using binutils version 2.22 or later.
Error "EMERGENCY ABORT: INFINITE RECURSION DETECTED" shown when compiling.Make sure you are using an up to date version of GNU Make when compiling. This error is a safety system added to the mid-level makefiles, to prevent an issue with - * GNU make or other variants of Make causing an infinitely recursive build.
Error "Unsupported architecture "{X}"" shown when compiling.Ensure your makefile's ARCH setting is set to one of the architecture names (case-sensitive) supported by the version of LUFA you are compiling against.
Error "Makefile {X} value not set" shown when compiling.The specified Makefile value was not configured in your project's makefile or on the command line, and the nominated setting is required by one or more LUFA - * build system modules. Define the value in your project makefile and try again.
Error "Makefile {X} option cannot be blank" shown when compiling.The specified Makefile value was configured in your project's makefile or on the command line, but was set to an empty value. For the nominated configuration - * option, an empty value is not allowed. Define the nominated setting to a correct non-blank value and try again.
Error "Makefile {X} option must be Y or N" shown when compiling.The specified Makefile value was configured in your project's makefile or on the command line, but was set to a value other than a Y (for "Yes") or "N" (for "No"). - * This configuration option is required to be one of the aforementioned boolean values, and other values are invalid. Set this option to either Y or N and try again.
Error "Unknown input source file formats: {X}" shown when compiling.The nominated source files, specified in your project's makefile in the SRC configuration option, has an extension that the LUFA build system does not - * recognise. The file extensions are case sensitive, and must be one of the supported formats (*.c, *.cpp or *.S).
Error "Cannot build with OBJDIR parameter set - one or more object file name is not unique" shown when compiling.When a project is built with a non-empty OBJDIR object directory name set, all input source files must have unique names, excluding extension and path. - * This means that input files that are named identically and differ only by their path or extension are invalid when this mode is used.
Error "Source file does not exist: {X}" shown when compiling.The nominated input source file, specified in the user project's SRC parameter, could not be found. Ensure the source file exists and the absolute or - * relative path given in the user project makefile is correct and try again.
Error "Doxygen configuration file {X} does not exist" shown when upgrading a Doxygen configuration file.The nominated Doxygen configuration file, specified in the user project's DOXYGEN_CONF parameter, could not be found. Ensure the configuration file exists - * and the absolute or relative path given in the user project makefile is correct and try again, or run the appropriate makefile target to generate a new configuration - * file.
Error "avr-gcc: error: unrecognized option '{X}'" shown when compiling.An unrecognised option was supplied to the compiler, usually in the C_FLAGS, CPP_FLAGS, ASM_FLAGS or CC_FLAGS configuration - * options. The nominated compiler switch may be invalid, or unsupported by the version of AVR-GCC on the host system. Remove the unrecognised flag if invalid, or - * upgrade to the latest AVR-GCC. If the option is a valid linker option, use the prefix "-Wl," to ensure it is passed to the linker correctly.
Error "makefile:{X}: {Y}.mk: No such file or directory" shown when make is invoked.The path to the nominated makefile module was incorrect. This usually indicates that the makefile LUFA_PATH option is not set to a valid relative or - * absolute path to the LUFA library core.
Error "fatal error: LUFAConfig.h: No such file or directory" shown when compiling.The USE_LUFA_CONFIG_HEADER compile time option was set in the user project makefile, but the user supplied LUFAConfig.h header could not be - * found. Ensure that the directory that contains this configuration file is correctly passed to the compiler via the -I switch in the makefile CC_FLAGS - * parameter.
Error "ld.exe: section .apitable_trampolines loaded at {X} overlaps section .text" shown when compiling a bootloader.The bootloader is compiling too large for the given FLASH_SIZE_KB and BOOT_SECTION_SIZE_KB parameters set in the bootloader makefile. This - * usually indicates that these values are incorrect for the specified device the bootloader is targeting. If these values are correct, a newer version of the - * compiler may need to be used to ensure that the bootloader is built within the section size constraints of the target device.
Error "unknown MCU '{X}' specified" shown when compiling.The specified microcontroller device model name set in the user application's makefile as the MCU parameter is incorrect, or unsupported by the - * version of the compiler being used. Make sure the model name is correct, or upgrade to the latest Atmel Toolchain to obtain newer device support.
Error "undefined reference to `{X}'" shown when compiling.This is usually caused by a missing source file in the user application's SRC configuration parameter. If the indicated symbol is one from the LUFA - * library, you may be missing a LUFA source makefile module (see \ref Page_BuildModule_SOURCES).
- * - * For troubleshooting other errors you encounter, please see \ref Sec_ProjectHelp. - */ +/** \file + * + * This file contains special DoxyGen information for the generation of the main page and other special + * documentation pages. It is not a project source file. + */ + +/** \page Page_BuildSystem The LUFA Build System + * + * \section Sec_BuildSystem_Overview Overview of the LUFA Build System + * The LUFA build system is an attempt at making a set of re-usable, modular build make files which + * can be referenced in a LUFA powered project, to minimize the amount of code required in an + * application makefile. The system is written in GNU Make, and each module is independent of + * one-another. + * + * For details on the prerequisites needed for Linux and Windows machines to be able to use the LUFA + * build system, see \ref Sec_CompilingApps_Prerequisites. + * + * To use a LUFA build system module, simply add an include to your project makefile. All user projects + * should at a minimum include \ref Page_BuildModule_CORE for base functionality: + * \code + * include $(LUFA_PATH)/Build/lufa_core.mk + * \endcode + * + * Once included in your project makefile, the associated build module targets will be added to your + * project's build makefile targets automatically. To call a build target, run make {TARGET_NAME} + * from the command line, substituting in the appropriate target name. + * + * \see \ref Sec_ConfiguringApps_AppMakefileParams for a copy of the sample LUFA project makefile. + * + * Each build module may have one or more mandatory parameters (GNU Make variables) which must + * be supplied in the project makefile for the module to work, and one or more optional parameters which + * may be defined and which will assume a sensible default if not. + * + * \section SSec_BuildSystem_Modules Available Modules + * + * The following modules are included in this LUFA release: + * + * \li \subpage Page_BuildModule_ATPROGRAM - Device Programming + * \li \subpage Page_BuildModule_AVRDUDE - Device Programming + * \li \subpage Page_BuildModule_BUILD - Compiling/Assembling/Linking + * \li \subpage Page_BuildModule_CORE - Core Build System Functions + * \li \subpage Page_BuildModule_CPPCHECK - Static Code Analysis + * \li \subpage Page_BuildModule_DFU - Device Programming + * \li \subpage Page_BuildModule_DOXYGEN - Automated Source Code Documentation + * \li \subpage Page_BuildModule_HID - Device Programming + * \li \subpage Page_BuildModule_SOURCES - LUFA Module Source Code Variables + * + * If you have problems building using the LUFA build system, see \subpage Page_BuildTroubleshooting for resolution steps. + */ + + /** \page Page_BuildModule_BUILD The BUILD build module + * + * The BUILD LUFA build system module, providing targets for the compilation, + * assembling and linking of an application from source code into binary files + * suitable for programming into a target device, using the GCC compiler. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_build.mk + * \endcode + * + * \section SSec_BuildModule_BUILD_Requirements Requirements + * This module requires the the architecture appropriate binaries of the GCC compiler are available in your + * system's PATH variable. The GCC compiler and associated toolchain is distributed in Atmel AVR Studio + * 5.x and Atmel Studio 6.x installation directories, as well as in many third party distribution packages. + * + * \section SSec_BuildModule_BUILD_Targets Targets + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
sizeDisplay size of the compiled application FLASH and SRAM segments.
symbol-sizesDisplay a size-sorted list of symbols from the compiled application, in decimal bytes.
libBuild and archive all source files into a library A binary file.
allBuild and link the application into ELF debug and HEX binary files.
elfBuild and link the application into an ELF debug file.
binBuild and link the application and produce a BIN binary file.
hexBuild and link the application and produce HEX and EEP binary files.
lssBuild and link the application and produce a LSS source code/assembly code mixed listing file.
cleanRemove all intermediary files and binary output files.
mostlycleanRemove all intermediary files but preserve any binary output files.
<filename>.sCreate an assembly listing of a given input C/C++ source file.
+ * + * \section SSec_BuildModule_BUILD_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
TARGETName of the application output file prefix (e.g. TestApplication).
ARCHArchitecture of the target processor (see \ref Page_DeviceSupport).
MCUName of the Atmel processor model (e.g. at90usb1287).
SRCList of relative or absolute paths to the application C (.c), C++ (.cpp) and Assembly (.S) source files.
F_USBSpeed in Hz of the input clock frequency to the target's USB controller.
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
+ * + * \section SSec_BuildModule_BUILD_OptionalParams Optional Parameters + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
BOARDLUFA board hardware drivers to use (see \ref Page_DeviceSupport).
OPTIMIZATIONOptimization level to use when compiling source files (see GCC manual).
C_STANDARDVersion of the C standard to apply when compiling C++ source files (see GCC manual).
CPP_STANDARDVersion of the C++ standard to apply when compiling C++ source files (see GCC manual).
DEBUG_FORMATFormat of the debug information to embed in the generated object files (see GCC manual).
DEBUG_LEVELLevel of the debugging information to embed in the generated object files (see GCC manual).
F_CPUSpeed of the processor CPU clock, in Hz.
C_FLAGSFlags to pass to the C compiler only, after the automatically generated flags.
CPP_FLAGSFlags to pass to the C++ compiler only, after the automatically generated flags.
ASM_FLAGSFlags to pass to the assembler only, after the automatically generated flags.
CC_FLAGSCommon flags to pass to the C/C++ compiler and assembler, after the automatically generated flags.
COMPILER_PATHDirectory where the C/C++ toolchain is located, if not available in the system PATH.
LD_FLAGSFlags to pass to the linker, after the automatically generated flags.
LINKER_RELAXATIONSEnables or disables linker relaxations when linking the application binary. This can reduce the total size + * of the application by replacing full \c CALL instructions with smaller \c RCALL instructions where possible. + * \note On some unpatched versions of binutils, this can cause link failures in some circumstances. If you + * receive a link error relocation truncated to fit: R_AVR_13_PCREL, disable this setting.
OBJDIRDirectory to place the generated object and dependency files. If set to "." the same folder as the source file will be used. + * \note When this option is enabled, all source filenames must be unique.
OBJECT_FILESList of additional object files that should be linked into the resulting binary.
+ * + * \section SSec_BuildModule_BUILD_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_BUILD_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + +/** \page Page_BuildModule_CORE The CORE build module + * + * The core LUFA build system module, providing common build system help and information targets. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_core.mk + * \endcode + * + * \section SSec_BuildModule_CORE_Requirements Requirements + * This module has no requirements outside a standard *nix shell like environment; the sh + * shell, GNU make and *nix CoreUtils (echo, printf, etc.). + * + * \section SSec_BuildModule_CORE_Targets Targets + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
helpDisplay build system help and configuration information.
list_targetsList all available build targets from the build system.
list_modulesList all available build modules from the build system.
list_mandatoryList all mandatory parameters required by the included modules.
list_optionalList all optional parameters required by the included modules.
list_providedList all variables provided by the included modules.
list_macrosList all macros provided by the included modules.
+ * + * \section SSec_BuildModule_CORE_MandatoryParams Mandatory Parameters + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_CORE_OptionalParams Optional Parameters + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_CORE_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_CORE_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + +/** \page Page_BuildModule_ATPROGRAM The ATPROGRAM build module + * + * The ATPROGRAM programming utility LUFA build system module, providing targets to reprogram an + * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_atprogram.mk + * \endcode + * + * \section SSec_BuildModule_ATPROGRAM_Requirements Requirements + * This module requires the atprogram.exe utility to be available in your system's PATH + * variable. The atprogram.exe utility is distributed in Atmel AVR Studio 5.x and Atmel Studio 6.x + * inside the application install folder's "\atbackend" subdirectory. + * + * \section SSec_BuildModule_ATPROGRAM_Targets Targets + * + * + * + * + * + * + * + * + * + * + *
atprogramProgram the device FLASH memory with the application's executable data.
atprogram-eeProgram the device EEPROM memory with the application's EEPROM data.
+ * + * \section SSec_BuildModule_ATPROGRAM_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + * + * + * + * + *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
+ * + * \section SSec_BuildModule_ATPROGRAM_OptionalParams Optional Parameters + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
ATPROGRAM_PROGRAMMERName of the Atmel programmer or debugger tool to communicate with (e.g. jtagice3).
ATPROGRAM_INTERFACEName of the programming interface to use when programming the target (e.g. spi).
ATPROGRAM_PORTName of the communication port to use when when programming with a serially connected tool (e.g. COM2).
+ * + * \section SSec_BuildModule_ATPROGRAM_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_ATPROGRAM_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + +/** \page Page_BuildModule_AVRDUDE The AVRDUDE build module + * + * The AVRDUDE programming utility LUFA build system module, providing targets to reprogram an + * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_avrdude.mk + * \endcode + * + * \section SSec_BuildModule_AVRDUDE_Requirements Requirements + * This module requires the avrdude utility to be available in your system's PATH + * variable. The avrdude utility is distributed in the old WinAVR project releases for + * Windows (http://winavr.sourceforge.net) or can be installed on *nix systems via the project's + * source code (https://savannah.nongnu.org/projects/avrdude) or through the package manager. + * + * \section SSec_BuildModule_AVRDUDE_Targets Targets + * + * + * + * + * + * + * + * + * + * + *
avrdudeProgram the device FLASH memory with the application's executable data.
avrdude-eeProgram the device EEPROM memory with the application's EEPROM data.
+ * + * \section SSec_BuildModule_AVRDUDE_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + * + * + * + * + *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
+ * + * \section SSec_BuildModule_AVRDUDE_OptionalParams Optional Parameters + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
AVRDUDE_PROGRAMMERName of the programmer or debugger tool to communicate with (e.g. jtagicemkii).
AVRDUDE_PORTName of the communication port to use when when programming with the connected tool (e.g. COM2, /dev/ttyUSB0 or usb).
AVRDUDE_FLAGSAdditional flags to pass to avrdude when programming, applied after the automatically generated flags.
+ * + * \section SSec_BuildModule_AVRDUDE_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_AVRDUDE_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + + /** \page Page_BuildModule_CPPCHECK The CPPCHECK build module + * + * The CPPCHECK programming utility LUFA build system module, providing targets to statically + * analyze C and C++ source code for errors and performance/style issues. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_cppcheck.mk + * \endcode + * + * \section SSec_BuildModule_CPPCHECK_Requirements Requirements + * This module requires the cppcheck utility to be available in your system's PATH + * variable. The cppcheck utility is distributed through the project's home page + * (http://cppcheck.sourceforge.net) for Windows, and can be installed on *nix systems via + * the project's source code or through the package manager. + * + * \section SSec_BuildModule_CPPCHECK_Targets Targets + * + * + * + * + * + * + * + * + * + * + *
cppcheckStatically analyze the project source code for issues.
cppcheck-configCheck the cppcheck configuration - scan source code and warn about missing header files and other issues.
+ * + * \section SSec_BuildModule_CPPCHECK_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + *
SRCList of source files to statically analyze.
+ * + * \section SSec_BuildModule_CPPCHECK_OptionalParams Optional Parameters + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
CPPCHECK_INCLUDESPath of extra directories to check when attemting to resolve C/C++ header file includes.
CPPCHECK_EXCLUDESPaths or path fragments to exclude when analyzing.
CPPCHECK_MSG_TEMPLATEOutput message template to use when printing errors, warnings and information (see cppcheck documentation).
CPPCHECK_ENABLEAnalysis rule categories to enable (see cppcheck documentation).
CPPCHECK_SUPPRESSSpecific analysis rules to suppress (see cppcheck documentation).
CPPCHECK_FAIL_ON_WARNINGSet to Y to fail the analysis job with an error exit code if warnings are found, N to continue without failing.
CPPCHECK_QUIETSet to Y to suppress all output except warnings and errors, N to show verbose output information.
CPPCHECK_FLAGSExtra flags to pass to cppcheck, after the automatically generated flags.
+ * + * \section SSec_BuildModule_CPPCHECK_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_CPPCHECK_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + + /** \page Page_BuildModule_DFU The DFU build module + * + * The DFU programming utility LUFA build system module, providing targets to reprogram an + * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. + * This module requires a DFU class bootloader to be running in the target, compatible with + * the DFU bootloader protocol as published by Atmel. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_dfu.mk + * \endcode + * + * \section SSec_BuildModule_DFU_Requirements Requirements + * This module requires either the batchisp utility from Atmel's FLIP utility, or the open + * source dfu-programmer utility (http://dfu-programmer.sourceforge.net/) to be + * available in your system's PATH variable. On *nix systems the dfu-programmer utility + * can be installed via the project's source code or through the package manager. + * + * \section SSec_BuildModule_DFU_Targets Targets + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
dfuProgram the device FLASH memory with the application's executable data using dfu-programmer.
dfu-eeProgram the device EEPROM memory with the application's EEPROM data using dfu-programmer.
flipProgram the device FLASH memory with the application's executable data using batchisp.
flip-eeProgram the device EEPROM memory with the application's EEPROM data using batchisp.
+ * + * \section SSec_BuildModule_DFU_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + * + * + * + * + *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
+ * + * \section SSec_BuildModule_DFU_OptionalParams Optional Parameters + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_DFU_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_DFU_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + + /** \page Page_BuildModule_DOXYGEN The DOXYGEN build module + * + * The DOXYGEN code documentation utility LUFA build system module, providing targets to generate + * project HTML and other format documentation from a set of source files that include special + * Doxygen comments. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_doxygen.mk + * \endcode + * + * \section SSec_BuildModule_DOXYGEN_Requirements Requirements + * This module requires the doxygen utility from the Doxygen website + * (http://www.doxygen.org/) to be available in your system's PATH variable. On *nix + * systems the doxygen utility can be installed via the project's source code or through + * the package manager. + * + * \section SSec_BuildModule_DOXYGEN_Targets Targets + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
doxygenGenerate project documentation.
doxygen_createCreate a new Doxygen configuration file using the latest template.
doxygen_upgradeUpgrade an existing Doxygen configuration file to the latest template
+ * + * \section SSec_BuildModule_DOXYGEN_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + *
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
+ * + * \section SSec_BuildModule_DOXYGEN_OptionalParams Optional Parameters + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
DOXYGEN_CONFName and path of the base Doxygen configuration file for the project.
DOXYGEN_FAIL_ON_WARNINGSet to Y to fail the generation with an error exit code if warnings are found other than unsupported configuration parameters, N to continue without failing.
DOXYGEN_OVERRIDE_PARAMSExtra Doxygen configuration parameters to apply, overriding the corresponding config entry in the project's configuration file (e.g. QUIET=YES).
+ * + * \section SSec_BuildModule_DOXYGEN_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_DOXYGEN_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + + /** \page Page_BuildModule_HID The HID build module + * + * The HID programming utility LUFA build system module, providing targets to reprogram an + * Atmel processor's FLASH memory with a project's compiled binary output file. This module + * requires a HID class bootloader to be running in the target, using a protocol compatible + * with the PJRC "HalfKay" protocol (http://www.pjrc.com/teensy/halfkay_protocol.html). + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_hid.mk + * \endcode + * + * \section SSec_BuildModule_HID_Requirements Requirements + * This module requires either the hid_bootloader_cli utility from the included LUFA HID + * class bootloader API subdirectory, or the teensy_loader_cli utility from PJRC + * (http://www.pjrc.com/teensy/loader_cli.html) to be available in your system's PATH + * variable. + * + * \section SSec_BuildModule_HID_Targets Targets + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
hidProgram the device FLASH memory with the application's executable data using hid_bootloader_cli.
hid-eeProgram the device EEPROM memory with the application's EEPROM data using hid_bootloader_cli and + * a temporary AVR application programmed into the target's FLASH. + * \note This will erase the currently loaded application in the target.
teensyProgram the device FLASH memory with the application's executable data using teensy_loader_cli.
teensy-eeProgram the device EEPROM memory with the application's EEPROM data using teensy_loader_cli and + * a temporary AVR application programmed into the target's FLASH. + * \note This will erase the currently loaded application in the target.
+ * + * \section SSec_BuildModule_HID_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + * + * + * + * + *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
+ * + * \section SSec_BuildModule_HID_OptionalParams Optional Parameters + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_HID_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_HID_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + + /** \page Page_BuildModule_SOURCES The SOURCES build module + * + * The SOURCES LUFA build system module, providing variables listing the various LUFA source files + * required to be build by a project for a given LUFA module. This module gives a way to reference + * LUFA source files symbolically, so that changes to the library structure do not break the library + * makefile. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/lufa_sources.mk + * \endcode + * + * \section SSec_BuildModule_SOURCES_Requirements Requirements + * None. + * + * \section SSec_BuildModule_SOURCES_Targets Targets + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_SOURCES_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + * + * + * + * + *
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
ARCHArchitecture of the target processor (see \ref Page_DeviceSupport).
+ * + * \section SSec_BuildModule_SOURCES_OptionalParams Optional Parameters + * + * + * + * + * + *
None
+ * + * \section SSec_BuildModule_SOURCES_ProvidedVariables Module Provided Variables + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
LUFA_SRC_USBList of LUFA USB driver source files.
LUFA_SRC_USBCLASSList of LUFA USB Class driver source files.
LUFA_SRC_TEMPERATUREList of LUFA temperature sensor driver source files.
LUFA_SRC_SERIALList of LUFA Serial U(S)ART driver source files.
LUFA_SRC_TWIList of LUFA TWI driver source files.
LUFA_SRC_PLATFORMList of LUFA architecture specific platform management source files.
+ * + * \section SSec_BuildModule_SOURCES_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
None
+ */ + +/** \page Page_BuildTroubleshooting Troubleshooting Information + * + * LUFA uses a lot of advanced features of the AVR-GCC compiler, linker, and surrounding binaries. This can sometimes lead to problems compiling applications if one of these + * features is buggy in the version of the tools used in a build environment. Missing utilities and incorrectly set makefile configuration options can also result in different + * errors being produced when compilation or other operations are attempted. The table below lists a set of commonly encountered errors and their resolutions. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
ProblemResolution
Error "relocation truncated to fit: R_AVR_13_PCREL against symbol {X}" shown when compiling.Try compiling with the setting LINKER_RELAXATIONS=N in your LUFA Build System 2.0 makefile, or remove the line -Wl,--relax + * from other makefiles. Alternatively, make sure you have the latest version of the Atmel Toolchain installed for your system.
Error "error: ld terminated with signal 11 [Segmentation fault]" shown when compiling.Try compiling with the setting DEBUG_LEVEL=2 in your LUFA Build System 2.0 makefile, or make sure you are using binutils version 2.22 or later.
Error "EMERGENCY ABORT: INFINITE RECURSION DETECTED" shown when compiling.Make sure you are using an up to date version of GNU Make when compiling. This error is a safety system added to the mid-level makefiles, to prevent an issue with + * GNU make or other variants of Make causing an infinitely recursive build.
Error "Unsupported architecture "{X}"" shown when compiling.Ensure your makefile's ARCH setting is set to one of the architecture names (case-sensitive) supported by the version of LUFA you are compiling against.
Error "Makefile {X} value not set" shown when compiling.The specified Makefile value was not configured in your project's makefile or on the command line, and the nominated setting is required by one or more LUFA + * build system modules. Define the value in your project makefile and try again.
Error "Makefile {X} option cannot be blank" shown when compiling.The specified Makefile value was configured in your project's makefile or on the command line, but was set to an empty value. For the nominated configuration + * option, an empty value is not allowed. Define the nominated setting to a correct non-blank value and try again.
Error "Makefile {X} option must be Y or N" shown when compiling.The specified Makefile value was configured in your project's makefile or on the command line, but was set to a value other than a Y (for "Yes") or "N" (for "No"). + * This configuration option is required to be one of the aforementioned boolean values, and other values are invalid. Set this option to either Y or N and try again.
Error "Unknown input source file formats: {X}" shown when compiling.The nominated source files, specified in your project's makefile in the SRC configuration option, has an extension that the LUFA build system does not + * recognise. The file extensions are case sensitive, and must be one of the supported formats (*.c, *.cpp or *.S).
Error "Cannot build with OBJDIR parameter set - one or more object file name is not unique" shown when compiling.When a project is built with a non-empty OBJDIR object directory name set, all input source files must have unique names, excluding extension and path. + * This means that input files that are named identically and differ only by their path or extension are invalid when this mode is used.
Error "Source file does not exist: {X}" shown when compiling.The nominated input source file, specified in the user project's SRC parameter, could not be found. Ensure the source file exists and the absolute or + * relative path given in the user project makefile is correct and try again.
Error "Doxygen configuration file {X} does not exist" shown when upgrading a Doxygen configuration file.The nominated Doxygen configuration file, specified in the user project's DOXYGEN_CONF parameter, could not be found. Ensure the configuration file exists + * and the absolute or relative path given in the user project makefile is correct and try again, or run the appropriate makefile target to generate a new configuration + * file.
Error "avr-gcc: error: unrecognized option '{X}'" shown when compiling.An unrecognised option was supplied to the compiler, usually in the C_FLAGS, CPP_FLAGS, ASM_FLAGS or CC_FLAGS configuration + * options. The nominated compiler switch may be invalid, or unsupported by the version of AVR-GCC on the host system. Remove the unrecognised flag if invalid, or + * upgrade to the latest AVR-GCC. If the option is a valid linker option, use the prefix "-Wl," to ensure it is passed to the linker correctly.
Error "makefile:{X}: {Y}.mk: No such file or directory" shown when make is invoked.The path to the nominated makefile module was incorrect. This usually indicates that the makefile LUFA_PATH option is not set to a valid relative or + * absolute path to the LUFA library core.
Error "fatal error: LUFAConfig.h: No such file or directory" shown when compiling.The USE_LUFA_CONFIG_HEADER compile time option was set in the user project makefile, but the user supplied LUFAConfig.h header could not be + * found. Ensure that the directory that contains this configuration file is correctly passed to the compiler via the -I switch in the makefile CC_FLAGS + * parameter.
Error "ld.exe: section .apitable_trampolines loaded at {X} overlaps section .text" shown when compiling a bootloader.The bootloader is compiling too large for the given FLASH_SIZE_KB and BOOT_SECTION_SIZE_KB parameters set in the bootloader makefile. This + * usually indicates that these values are incorrect for the specified device the bootloader is targeting. If these values are correct, a newer version of the + * compiler may need to be used to ensure that the bootloader is built within the section size constraints of the target device.
Error "unknown MCU '{X}' specified" shown when compiling.The specified microcontroller device model name set in the user application's makefile as the MCU parameter is incorrect, or unsupported by the + * version of the compiler being used. Make sure the model name is correct, or upgrade to the latest Atmel Toolchain to obtain newer device support.
Error "undefined reference to `{X}'" shown when compiling.This is usually caused by a missing source file in the user application's SRC configuration parameter. If the indicated symbol is one from the LUFA + * library, you may be missing a LUFA source makefile module (see \ref Page_BuildModule_SOURCES).
+ * + * For troubleshooting other errors you encounter, please see \ref Sec_ProjectHelp. + */ -- cgit v1.2.1 From 265df7d5da5ead27bef3d00fce7d0f2bf133e9cc Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 20:18:26 +0300 Subject: Fix travis_compiled_push --- util/travis_compiled_push.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/travis_compiled_push.sh b/util/travis_compiled_push.sh index c2a994ef02..f432976d03 100644 --- a/util/travis_compiled_push.sh +++ b/util/travis_compiled_push.sh @@ -7,7 +7,7 @@ rev=$(git rev-parse --short HEAD) git config --global user.name "Travis CI" git config --global user.email "jack.humb+travis.ci@gmail.com" -make all-keymaps keyboard=ergodox/ez AUTOGEN=true +make ergodox-ez AUTOGEN=true find . -name ".build" | xargs rm -rf cd .. @@ -24,4 +24,4 @@ cp ../qmk_firmware/readme.md qmk_readme.md git add -A git commit -m "generated from qmk_firmware/$TRAVIS_BRANCH@${rev}" -git push \ No newline at end of file +git push -- cgit v1.2.1 From cfddec17d5a4ea2c3ce9afe0f15de3fa604dee63 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 23 Jul 2016 13:27:23 +0300 Subject: Add Google Test submodule --- .gitmodules | 3 +++ lib/googletest | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/googletest diff --git a/.gitmodules b/.gitmodules index 7e3c92d031..12b7cb918f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lib/ugfx"] path = lib/ugfx url = https://bitbucket.org/Tectu/ugfx +[submodule "lib/googletest"] + path = lib/googletest + url = https://github.com/google/googletest diff --git a/lib/googletest b/lib/googletest new file mode 160000 index 0000000000..ec44c6c167 --- /dev/null +++ b/lib/googletest @@ -0,0 +1 @@ +Subproject commit ec44c6c1675c25b9827aacd08c02433cccde7780 -- cgit v1.2.1 From 6d7cd639a5e4503f00162c7cfa4bc7302b82c71c Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 21 Aug 2016 16:29:54 +0300 Subject: Basic framework for parsing test targets --- Makefile | 16 +++++++++++++++- quantum/serial_link/tests/testlist.mk | 6 ++++++ testlist.mk | 13 +++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 quantum/serial_link/tests/testlist.mk create mode 100644 testlist.mk diff --git a/Makefile b/Makefile index f78cca6c6f..16e90f8e49 100644 --- a/Makefile +++ b/Makefile @@ -224,6 +224,8 @@ define PARSE_RULE # PARSE_ALL_KEYBOARDS ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true) $$(eval $$(call PARSE_ALL_KEYBOARDS)) + else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true) + $$(eval $$(call PARSE_TEST)) # If the rule starts with the name of a known keyboard, then continue # the parsing from PARSE_KEYBOARD else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true) @@ -396,6 +398,16 @@ define PARSE_ALL_KEYMAPS $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) endef +define PARSE_TEST + TEST_NAME := $$(firstword $$(subst -, ,$$(RULE))) + TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE))) + MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),)) + $$(info Test name $$(TEST_NAME)) + $$(info Test target $$(TEST_TARGET)) + $$(info $$(MATCHED_TESTS)) +endef + + # Set the silent mode depending on if we are trying to compile multiple keyboards or not # By default it's on in that case, but it can be overriden by specifying silent=false # from the command line @@ -459,4 +471,6 @@ all-keyboards-defaults: allkb-allsp-default GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") $(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h) -$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) \ No newline at end of file +$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) + +include $(ROOT_DIR)/testlist.mk \ No newline at end of file diff --git a/quantum/serial_link/tests/testlist.mk b/quantum/serial_link/tests/testlist.mk new file mode 100644 index 0000000000..4a734b1e1c --- /dev/null +++ b/quantum/serial_link/tests/testlist.mk @@ -0,0 +1,6 @@ +TEST_LIST +=\ + serial_link_byte_stuffer\ + serial_link_frame_router\ + serial_link_frame_validator\ + serial_link_transport\ + serial_link_triple_buffered_object \ No newline at end of file diff --git a/testlist.mk b/testlist.mk new file mode 100644 index 0000000000..1884d6d3f6 --- /dev/null +++ b/testlist.mk @@ -0,0 +1,13 @@ +include $(ROOT_DIR)/quantum/serial_link/tests/testlist.mk + +define VALIDATE_TEST_LIST + ifneq ($1,) + ifeq ($$(findstring -,$1),-) + $$(error Test names can't contain '-', but '$1' does) + else + $$(eval $$(call VALIDATE_TEST_LIST,$$(firstword $2),$$(wordlist 2,9999,$2))) + endif + endif +endef + +$(eval $(call VALIDATE_TEST_LIST,$(firstword $(TEST_LIST)),$(wordlist 2,9999,$(TEST_LIST)))) \ No newline at end of file -- cgit v1.2.1 From 27a673f5cf75747fe73641059aae60e9b53a1c78 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 21 Aug 2016 17:14:38 +0300 Subject: The makefile actually calls build_test --- Makefile | 22 +++++++++++++++++----- build_keyboard.mk | 14 +------------- build_test.mk | 5 +++++ common.mk | 12 ++++++++++++ message.mk | 7 +++++++ 5 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 build_test.mk create mode 100644 common.mk diff --git a/Makefile b/Makefile index 16e90f8e49..67b981d51e 100644 --- a/Makefile +++ b/Makefile @@ -358,7 +358,6 @@ define PARSE_KEYMAP MAKE_TARGET := $$(patsubst -%,%,$$(RULE)) # We need to generate an unique indentifer to append to the COMMANDS list COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM) - COMMANDS += $$(COMMAND) # If we are compiling a keyboard without a subproject, we want to display just the name # of the keyboard, otherwise keyboard/subproject ifeq ($$(CURRENT_SP),) @@ -370,13 +369,18 @@ define PARSE_KEYMAP KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) # Specify the variables that we are passing forward to submake MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) - MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) # And the first part of the make command MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET) # The message to display MAKE_MSG := $$(MSG_MAKE_KB) # We run the command differently, depending on if we want more output or not # The true version for silent output and the false version otherwise + $$(eval $$(call BUILD)) +endef + +define BUILD + MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) + COMMANDS += $$(COMMAND) COMMAND_true_$$(COMMAND) := \ printf "$$(MAKE_MSG)" | \ $$(MAKE_MSG_FORMAT); \ @@ -398,13 +402,21 @@ define PARSE_ALL_KEYMAPS $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) endef +define BUILD_TEST + TEST_NAME := $1 + MAKE_TARGET := $2 + COMMAND := $1 + MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET) + MAKE_VARS := TEST=$$(TEST_NAME) + MAKE_MSG := $$(MSG_MAKE_TEST) + $$(eval $$(call BUILD)) +endef + define PARSE_TEST TEST_NAME := $$(firstword $$(subst -, ,$$(RULE))) TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE))) MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),)) - $$(info Test name $$(TEST_NAME)) - $$(info Test target $$(TEST_TARGET)) - $$(info $$(MATCHED_TESTS)) + $$(foreach TEST,$$(MATCHED_TESTS),$$(eval $$(call BUILD_TEST,$$(TEST),$$(TEST_TARGET)))) endef diff --git a/build_keyboard.mk b/build_keyboard.mk index f843572f66..bbe5718459 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -4,19 +4,7 @@ endif .DEFAULT_GOAL := all -include message.mk - - -# Directory common source filess exist -TOP_DIR = . -TMK_DIR = tmk_core -TMK_PATH = $(TOP_DIR)/$(TMK_DIR) -LIB_PATH = $(TOP_DIR)/lib - -QUANTUM_DIR = quantum -QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) - -BUILD_DIR := $(TOP_DIR)/.build +include common.mk ifneq ($(SUBPROJECT),) TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) diff --git a/build_test.mk b/build_test.mk new file mode 100644 index 0000000000..37ed8b5683 --- /dev/null +++ b/build_test.mk @@ -0,0 +1,5 @@ +include common.mk + + +all: + echo Done $(TEST) \ No newline at end of file diff --git a/common.mk b/common.mk new file mode 100644 index 0000000000..689fdf5a50 --- /dev/null +++ b/common.mk @@ -0,0 +1,12 @@ +include message.mk + +# Directory common source files exist +TOP_DIR = . +TMK_DIR = tmk_core +TMK_PATH = $(TOP_DIR)/$(TMK_DIR) +LIB_PATH = $(TOP_DIR)/lib + +QUANTUM_DIR = quantum +QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) + +BUILD_DIR := $(TOP_DIR)/.build \ No newline at end of file diff --git a/message.mk b/message.mk index fb1a7a1f9a..96814986b5 100644 --- a/message.mk +++ b/message.mk @@ -69,3 +69,10 @@ define GENERATE_MSG_MAKE_KB endif endef MSG_MAKE_KB = $(eval $(call GENERATE_MSG_MAKE_KB))$(MSG_MAKE_KB_ACTUAL) +define GENERATE_MSG_MAKE_TEST + MSG_MAKE_TEST_ACTUAL := Making test $(BOLD)$(TEST_NAME)$(NO_COLOR) + ifneq ($$(MAKE_TARGET),) + MSG_MAKE_TEST_ACTUAL += with target $(BOLD)$$(MAKE_TARGET)$(NO_COLOR) + endif +endef +MSG_MAKE_TEST = $(eval $(call GENERATE_MSG_MAKE_TEST))$(MSG_MAKE_TEST_ACTUAL) -- cgit v1.2.1 From 8a9aac6e3237a505682cc7249a8dfff6cb964343 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 22 Aug 2016 09:16:08 +0300 Subject: Rules for compiling and linking google test --- build_keyboard.mk | 8 ++++++++ build_test.mk | 42 ++++++++++++++++++++++++++++++++++++++++-- tmk_core/native.mk | 24 ++++++++++++++++++++++++ tmk_core/rules.mk | 19 +++++++++---------- 4 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 tmk_core/native.mk diff --git a/build_keyboard.mk b/build_keyboard.mk index bbe5718459..869d672b01 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -204,6 +204,14 @@ $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) +# Default target. +all: build sizeafter + +# Change the build target to build a HEX file or a library. +build: elf hex +#build: elf hex eep lss sym +#build: lib + include $(TMK_PATH)/rules.mk diff --git a/build_test.mk b/build_test.mk index 37ed8b5683..dac59a8f48 100644 --- a/build_test.mk +++ b/build_test.mk @@ -1,5 +1,43 @@ +ifndef VERBOSE +.SILENT: +endif + +.DEFAULT_GOAL := all + include common.mk +TARGET=test/$(TEST) + +GTEST_OUTPUT = $(BUILD_DIR)/gtest + +OUTPUTS := $(GTEST_OUTPUT) + +GTEST_INC := \ + $(LIB_PATH)/googletest/googletest/include\ + $(LIB_PATH)/googletest/googlemock/include\ + +GTEST_INTERNAL_INC :=\ + $(LIB_PATH)/googletest/googletest\ + $(LIB_PATH)/googletest/googlemock + +$(GTEST_OUTPUT)_SRC :=\ + googletest/src/gtest-all.cc\ + googletest/src/gtest_main.cc\ + googlemock/src/gmock-all.cc + +$(GTEST_OUTPUT)_DEFS := +$(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC) + +LDFLAGS += -lstdc++ -lpthread -shared-libgcc + +VPATH +=\ + $(LIB_PATH)/googletest\ + $(LIB_PATH)/googlemock + +all: elf + +include $(TMK_PATH)/native.mk +include $(TMK_PATH)/rules.mk + +$(shell mkdir $(BUILD_DIR)/test 2>/dev/null) -all: - echo Done $(TEST) \ No newline at end of file diff --git a/tmk_core/native.mk b/tmk_core/native.mk new file mode 100644 index 0000000000..50232ee9b7 --- /dev/null +++ b/tmk_core/native.mk @@ -0,0 +1,24 @@ +CC = gcc +OBJCOPY = +OBJDUMP = +SIZE = +AR = +NM = +HEX = +EEP = +BIN = + + +COMPILEFLAGS += -funsigned-char +COMPILEFLAGS += -funsigned-bitfields +COMPILEFLAGS += -ffunction-sections +COMPILEFLAGS += -fdata-sections +COMPILEFLAGS += -fshort-enums + +CFLAGS += $(COMPILEFLAGS) +CFLAGS += -fno-inline-small-functions +CFLAGS += -fno-strict-aliasing + +CPPFLAGS += $(COMPILEFLAGS) +CPPFLAGS += -fno-exceptions +CPPFLAGS += -std=gnu++11 \ No newline at end of file diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 21011c2808..317f55e083 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -21,13 +21,14 @@ VPATH_SRC := $(VPATH) vpath %.c $(VPATH_SRC) vpath %.h $(VPATH_SRC) vpath %.cpp $(VPATH_SRC) +vpath %.cc $(VPATH_SRC) vpath %.hpp $(VPATH_SRC) vpath %.S $(VPATH_SRC) VPATH := # Convert all SRC to OBJ define OBJ_FROM_SRC -$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC)))) +$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC))))) endef $(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT)))) @@ -202,14 +203,6 @@ ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS) MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@) -# Default target. -all: build sizeafter - -# Change the build target to build a HEX file or a library. -build: elf hex -#build: elf hex eep lss sym -#build: lib - elf: $(BUILD_DIR)/$(TARGET).elf hex: $(BUILD_DIR)/$(TARGET).hex @@ -305,7 +298,13 @@ $1/%.o : %.cpp $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN) @mkdir -p $$(@D) @$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) $$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) - @$(BUILD_CMD) + @$$(BUILD_CMD) + +$1/%.o : %.cc $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN) + @mkdir -p $$(@D) + @$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) + $$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) + @$$(BUILD_CMD) # Assemble: create object files from assembler source files. $1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN) -- cgit v1.2.1 From 0a11460175d6a838c71343c19eb4ce4699936247 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Wed, 24 Aug 2016 22:23:17 +0300 Subject: Build actual tests, convert byte_stuffer_tests --- build_keyboard.mk | 6 +- build_test.mk | 14 +- common.mk | 16 +- quantum/serial_link/protocol/byte_stuffer.c | 3 - quantum/serial_link/protocol/byte_stuffer.h | 3 + quantum/serial_link/tests/byte_stuffer_tests.c | 506 ----------------------- quantum/serial_link/tests/byte_stuffer_tests.cpp | 483 ++++++++++++++++++++++ quantum/serial_link/tests/rules.mk | 3 + 8 files changed, 517 insertions(+), 517 deletions(-) delete mode 100644 quantum/serial_link/tests/byte_stuffer_tests.c create mode 100644 quantum/serial_link/tests/byte_stuffer_tests.cpp create mode 100644 quantum/serial_link/tests/rules.mk diff --git a/build_keyboard.mk b/build_keyboard.mk index 869d672b01..164794c634 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -155,12 +155,8 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) endif ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) - SERIAL_DIR = $(QUANTUM_DIR)/serial_link - SERIAL_PATH = $(QUANTUM_PATH)/serial_link - SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c) - SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) - OPT_DEFS += -DSERIAL_LINK_ENABLE + OPT_DEFS += $(SERIAL_DEFS) VAPTH += $(SERIAL_PATH) endif diff --git a/build_test.mk b/build_test.mk index dac59a8f48..1d8cb08b15 100644 --- a/build_test.mk +++ b/build_test.mk @@ -10,7 +10,9 @@ TARGET=test/$(TEST) GTEST_OUTPUT = $(BUILD_DIR)/gtest -OUTPUTS := $(GTEST_OUTPUT) +TEST_OBJ = $(BUILD_DIR)/test_obj + +OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT) GTEST_INC := \ $(LIB_PATH)/googletest/googletest/include\ @@ -36,8 +38,16 @@ VPATH +=\ all: elf +include $(QUANTUM_PATH)/serial_link/tests/rules.mk + +$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC) +$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC) +$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS) + include $(TMK_PATH)/native.mk include $(TMK_PATH)/rules.mk -$(shell mkdir $(BUILD_DIR)/test 2>/dev/null) + +$(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null) +$(shell mkdir -p $(TEST_OBJ) 2>/dev/null) diff --git a/common.mk b/common.mk index 689fdf5a50..f9b0773a86 100644 --- a/common.mk +++ b/common.mk @@ -9,4 +9,18 @@ LIB_PATH = $(TOP_DIR)/lib QUANTUM_DIR = quantum QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) -BUILD_DIR := $(TOP_DIR)/.build \ No newline at end of file +BUILD_DIR := $(TOP_DIR)/.build + +SERIAL_DIR := $(QUANTUM_DIR)/serial_link +SERIAL_PATH := $(QUANTUM_PATH)/serial_link +SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c) +SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) +SERIAL_DEFS += -DSERIAL_LINK_ENABLE + +VPATH += $(TOP_DIR) +VPATH += $(TMK_PATH) +VPATH += $(QUANTUM_PATH) +VPATH += $(QUANTUM_PATH)/keymap_extras +VPATH += $(QUANTUM_PATH)/audio +VPATH += $(QUANTUM_PATH)/process_keycode +VPATH += $(SERIAL_PATH) \ No newline at end of file diff --git a/quantum/serial_link/protocol/byte_stuffer.c b/quantum/serial_link/protocol/byte_stuffer.c index fb4c45a8dc..2c87d64c29 100644 --- a/quantum/serial_link/protocol/byte_stuffer.c +++ b/quantum/serial_link/protocol/byte_stuffer.c @@ -31,9 +31,6 @@ SOFTWARE. // https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing // http://www.stuartcheshire.org/papers/COBSforToN.pdf -#define MAX_FRAME_SIZE 1024 -#define NUM_LINKS 2 - typedef struct byte_stuffer_state { uint16_t next_zero; uint16_t data_pos; diff --git a/quantum/serial_link/protocol/byte_stuffer.h b/quantum/serial_link/protocol/byte_stuffer.h index 2cc88beb42..97e8968564 100644 --- a/quantum/serial_link/protocol/byte_stuffer.h +++ b/quantum/serial_link/protocol/byte_stuffer.h @@ -27,6 +27,9 @@ SOFTWARE. #include +#define MAX_FRAME_SIZE 1024 +#define NUM_LINKS 2 + void init_byte_stuffer(void); void byte_stuffer_recv_byte(uint8_t link, uint8_t data); void byte_stuffer_send_frame(uint8_t link, uint8_t* data, uint16_t size); diff --git a/quantum/serial_link/tests/byte_stuffer_tests.c b/quantum/serial_link/tests/byte_stuffer_tests.c deleted file mode 100644 index 64b170e8c1..0000000000 --- a/quantum/serial_link/tests/byte_stuffer_tests.c +++ /dev/null @@ -1,506 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2016 Fred Sundvik - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#include -#include -#include "serial_link/protocol/byte_stuffer.h" -#include "serial_link/protocol/byte_stuffer.c" -#include "serial_link/protocol/frame_validator.h" -#include "serial_link/protocol/physical.h" - -static uint8_t sent_data[MAX_FRAME_SIZE*2]; -static uint16_t sent_data_size; - -Describe(ByteStuffer); -BeforeEach(ByteStuffer) { - init_byte_stuffer(); - sent_data_size = 0; -} -AfterEach(ByteStuffer) {} - -void validator_recv_frame(uint8_t link, uint8_t* data, uint16_t size) { - mock(data, size); -} - -void send_data(uint8_t link, const uint8_t* data, uint16_t size) { - memcpy(sent_data + sent_data_size, data, size); - sent_data_size += size; -} - -Ensure(ByteStuffer, receives_no_frame_for_a_single_zero_byte) { - never_expect(validator_recv_frame); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_no_frame_for_a_single_FF_byte) { - never_expect(validator_recv_frame); - byte_stuffer_recv_byte(0, 0xFF); -} - -Ensure(ByteStuffer, receives_no_frame_for_a_single_random_byte) { - never_expect(validator_recv_frame); - byte_stuffer_recv_byte(0, 0x4A); -} - -Ensure(ByteStuffer, receives_no_frame_for_a_zero_length_frame) { - never_expect(validator_recv_frame); - byte_stuffer_recv_byte(0, 1); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_single_byte_valid_frame) { - uint8_t expected[] = {0x37}; - expect(validator_recv_frame, - when(size, is_equal_to(1)), - when(data, is_equal_to_contents_of(expected, 1)) - ); - byte_stuffer_recv_byte(0, 2); - byte_stuffer_recv_byte(0, 0x37); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_three_bytes_valid_frame) { - uint8_t expected[] = {0x37, 0x99, 0xFF}; - expect(validator_recv_frame, - when(size, is_equal_to(3)), - when(data, is_equal_to_contents_of(expected, 3)) - ); - byte_stuffer_recv_byte(0, 4); - byte_stuffer_recv_byte(0, 0x37); - byte_stuffer_recv_byte(0, 0x99); - byte_stuffer_recv_byte(0, 0xFF); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_single_zero_valid_frame) { - uint8_t expected[] = {0}; - expect(validator_recv_frame, - when(size, is_equal_to(1)), - when(data, is_equal_to_contents_of(expected, 1)) - ); - byte_stuffer_recv_byte(0, 1); - byte_stuffer_recv_byte(0, 1); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_valid_frame_with_zeroes) { - uint8_t expected[] = {5, 0, 3, 0}; - expect(validator_recv_frame, - when(size, is_equal_to(4)), - when(data, is_equal_to_contents_of(expected, 4)) - ); - byte_stuffer_recv_byte(0, 2); - byte_stuffer_recv_byte(0, 5); - byte_stuffer_recv_byte(0, 2); - byte_stuffer_recv_byte(0, 3); - byte_stuffer_recv_byte(0, 1); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_two_valid_frames) { - uint8_t expected1[] = {5, 0}; - uint8_t expected2[] = {3}; - expect(validator_recv_frame, - when(size, is_equal_to(2)), - when(data, is_equal_to_contents_of(expected1, 2)) - ); - expect(validator_recv_frame, - when(size, is_equal_to(1)), - when(data, is_equal_to_contents_of(expected2, 1)) - ); - byte_stuffer_recv_byte(1, 2); - byte_stuffer_recv_byte(1, 5); - byte_stuffer_recv_byte(1, 1); - byte_stuffer_recv_byte(1, 0); - byte_stuffer_recv_byte(1, 2); - byte_stuffer_recv_byte(1, 3); - byte_stuffer_recv_byte(1, 0); -} - -Ensure(ByteStuffer, receives_valid_frame_after_unexpected_zero) { - uint8_t expected[] = {5, 7}; - expect(validator_recv_frame, - when(size, is_equal_to(2)), - when(data, is_equal_to_contents_of(expected, 2)) - ); - byte_stuffer_recv_byte(1, 3); - byte_stuffer_recv_byte(1, 1); - byte_stuffer_recv_byte(1, 0); - byte_stuffer_recv_byte(1, 3); - byte_stuffer_recv_byte(1, 5); - byte_stuffer_recv_byte(1, 7); - byte_stuffer_recv_byte(1, 0); -} - -Ensure(ByteStuffer, receives_valid_frame_after_unexpected_non_zero) { - uint8_t expected[] = {5, 7}; - expect(validator_recv_frame, - when(size, is_equal_to(2)), - when(data, is_equal_to_contents_of(expected, 2)) - ); - byte_stuffer_recv_byte(0, 2); - byte_stuffer_recv_byte(0, 9); - byte_stuffer_recv_byte(0, 4); // This should have been zero - byte_stuffer_recv_byte(0, 0); - byte_stuffer_recv_byte(0, 3); - byte_stuffer_recv_byte(0, 5); - byte_stuffer_recv_byte(0, 7); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_and_then_end_of_frame) { - uint8_t expected[254]; - int i; - for (i=0;i<254;i++) { - expected[i] = i + 1; - } - expect(validator_recv_frame, - when(size, is_equal_to(254)), - when(data, is_equal_to_contents_of(expected, 254)) - ); - byte_stuffer_recv_byte(0, 0xFF); - for (i=0;i<254;i++) { - byte_stuffer_recv_byte(0, i+1); - } - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_non_zero) { - uint8_t expected[255]; - int i; - for (i=0;i<254;i++) { - expected[i] = i + 1; - } - expected[254] = 7; - expect(validator_recv_frame, - when(size, is_equal_to(255)), - when(data, is_equal_to_contents_of(expected, 255)) - ); - byte_stuffer_recv_byte(0, 0xFF); - for (i=0;i<254;i++) { - byte_stuffer_recv_byte(0, i+1); - } - byte_stuffer_recv_byte(0, 2); - byte_stuffer_recv_byte(0, 7); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_zero) { - uint8_t expected[255]; - int i; - for (i=0;i<254;i++) { - expected[i] = i + 1; - } - expected[254] = 0; - expect(validator_recv_frame, - when(size, is_equal_to(255)), - when(data, is_equal_to_contents_of(expected, 255)) - ); - byte_stuffer_recv_byte(0, 0xFF); - for (i=0;i<254;i++) { - byte_stuffer_recv_byte(0, i+1); - } - byte_stuffer_recv_byte(0, 1); - byte_stuffer_recv_byte(0, 1); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_two_long_frames_and_some_more) { - uint8_t expected[515]; - int i; - int j; - for (j=0;j<2;j++) { - for (i=0;i<254;i++) { - expected[i+254*j] = i + 1; - } - } - for (i=0;i<7;i++) { - expected[254*2+i] = i + 1; - } - expect(validator_recv_frame, - when(size, is_equal_to(515)), - when(data, is_equal_to_contents_of(expected, 510)) - ); - byte_stuffer_recv_byte(0, 0xFF); - for (i=0;i<254;i++) { - byte_stuffer_recv_byte(0, i+1); - } - byte_stuffer_recv_byte(0, 0xFF); - for (i=0;i<254;i++) { - byte_stuffer_recv_byte(0, i+1); - } - byte_stuffer_recv_byte(0, 8); - byte_stuffer_recv_byte(0, 1); - byte_stuffer_recv_byte(0, 2); - byte_stuffer_recv_byte(0, 3); - byte_stuffer_recv_byte(0, 4); - byte_stuffer_recv_byte(0, 5); - byte_stuffer_recv_byte(0, 6); - byte_stuffer_recv_byte(0, 7); - byte_stuffer_recv_byte(0, 0); -} - -Ensure(ByteStuffer, receives_an_all_zeros_frame_that_is_maximum_size) { - uint8_t expected[MAX_FRAME_SIZE] = {}; - expect(validator_recv_frame, - when(size, is_equal_to(MAX_FRAME_SIZE)), - when(data, is_equal_to_contents_of(expected, MAX_FRAME_SIZE)) - ); - int i; - byte_stuffer_recv_byte(0, 1); - for(i=0;i +#include +extern "C" { +#include "serial_link/protocol/byte_stuffer.h" +#include "serial_link/protocol/frame_validator.h" +#include "serial_link/protocol/physical.h" +} + +using testing::_; +using testing::ElementsAreArray; +using testing::Args; + +class ByteStuffer : public ::testing::Test{ +public: + ByteStuffer() { + Instance = this; + init_byte_stuffer(); + } + + ~ByteStuffer() { + Instance = nullptr; + } + + MOCK_METHOD3(validator_recv_frame, void (uint8_t link, uint8_t* data, uint16_t size)); + + void send_data(uint8_t link, const uint8_t* data, uint16_t size) { + std::copy(data, data + size, std::back_inserter(sent_data)); + } + std::vector sent_data; + + static ByteStuffer* Instance; +}; + +ByteStuffer* ByteStuffer::Instance = nullptr; + +extern "C" { + void validator_recv_frame(uint8_t link, uint8_t* data, uint16_t size) { + ByteStuffer::Instance->validator_recv_frame(link, data, size); + } + + void send_data(uint8_t link, const uint8_t* data, uint16_t size) { + ByteStuffer::Instance->send_data(link, data, size); + } +} + +TEST_F(ByteStuffer, receives_no_frame_for_a_single_zero_byte) { + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .Times(0); + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_no_frame_for_a_single_FF_byte) { + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .Times(0); + byte_stuffer_recv_byte(0, 0xFF); +} + +TEST_F(ByteStuffer, receives_no_frame_for_a_single_random_byte) { + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .Times(0); + byte_stuffer_recv_byte(0, 0x4A); +} + +TEST_F(ByteStuffer, receives_no_frame_for_a_zero_length_frame) { + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .Times(0); + byte_stuffer_recv_byte(0, 1); + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_single_byte_valid_frame) { + uint8_t expected[] = {0x37}; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 2); + byte_stuffer_recv_byte(0, 0x37); + byte_stuffer_recv_byte(0, 0); +} +TEST_F(ByteStuffer, receives_three_bytes_valid_frame) { + uint8_t expected[] = {0x37, 0x99, 0xFF}; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 4); + byte_stuffer_recv_byte(0, 0x37); + byte_stuffer_recv_byte(0, 0x99); + byte_stuffer_recv_byte(0, 0xFF); + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_single_zero_valid_frame) { + uint8_t expected[] = {0}; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 1); + byte_stuffer_recv_byte(0, 1); + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_valid_frame_with_zeroes) { + uint8_t expected[] = {5, 0, 3, 0}; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 2); + byte_stuffer_recv_byte(0, 5); + byte_stuffer_recv_byte(0, 2); + byte_stuffer_recv_byte(0, 3); + byte_stuffer_recv_byte(0, 1); + byte_stuffer_recv_byte(0, 0); +} + + +TEST_F(ByteStuffer, receives_two_valid_frames) { + uint8_t expected1[] = {5, 0}; + uint8_t expected2[] = {3}; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected1))); + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected2))); + byte_stuffer_recv_byte(1, 2); + byte_stuffer_recv_byte(1, 5); + byte_stuffer_recv_byte(1, 1); + byte_stuffer_recv_byte(1, 0); + byte_stuffer_recv_byte(1, 2); + byte_stuffer_recv_byte(1, 3); + byte_stuffer_recv_byte(1, 0); +} + +TEST_F(ByteStuffer, receives_valid_frame_after_unexpected_zero) { + uint8_t expected[] = {5, 7}; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(1, 3); + byte_stuffer_recv_byte(1, 1); + byte_stuffer_recv_byte(1, 0); + byte_stuffer_recv_byte(1, 3); + byte_stuffer_recv_byte(1, 5); + byte_stuffer_recv_byte(1, 7); + byte_stuffer_recv_byte(1, 0); +} + +TEST_F(ByteStuffer, receives_valid_frame_after_unexpected_non_zero) { + uint8_t expected[] = {5, 7}; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 2); + byte_stuffer_recv_byte(0, 9); + byte_stuffer_recv_byte(0, 4); // This should have been zero + byte_stuffer_recv_byte(0, 0); + byte_stuffer_recv_byte(0, 3); + byte_stuffer_recv_byte(0, 5); + byte_stuffer_recv_byte(0, 7); + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_and_then_end_of_frame) { + uint8_t expected[254]; + int i; + for (i=0;i<254;i++) { + expected[i] = i + 1; + } + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 0xFF); + for (i=0;i<254;i++) { + byte_stuffer_recv_byte(0, i+1); + } + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_non_zero) { + uint8_t expected[255]; + int i; + for (i=0;i<254;i++) { + expected[i] = i + 1; + } + expected[254] = 7; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 0xFF); + for (i=0;i<254;i++) { + byte_stuffer_recv_byte(0, i+1); + } + byte_stuffer_recv_byte(0, 2); + byte_stuffer_recv_byte(0, 7); + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_zero) { + uint8_t expected[255]; + int i; + for (i=0;i<254;i++) { + expected[i] = i + 1; + } + expected[254] = 0; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 0xFF); + for (i=0;i<254;i++) { + byte_stuffer_recv_byte(0, i+1); + } + byte_stuffer_recv_byte(0, 1); + byte_stuffer_recv_byte(0, 1); + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_two_long_frames_and_some_more) { + uint8_t expected[515]; + int i; + int j; + for (j=0;j<2;j++) { + for (i=0;i<254;i++) { + expected[i+254*j] = i + 1; + } + } + for (i=0;i<7;i++) { + expected[254*2+i] = i + 1; + } + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + byte_stuffer_recv_byte(0, 0xFF); + for (i=0;i<254;i++) { + byte_stuffer_recv_byte(0, i+1); + } + byte_stuffer_recv_byte(0, 0xFF); + for (i=0;i<254;i++) { + byte_stuffer_recv_byte(0, i+1); + } + byte_stuffer_recv_byte(0, 8); + byte_stuffer_recv_byte(0, 1); + byte_stuffer_recv_byte(0, 2); + byte_stuffer_recv_byte(0, 3); + byte_stuffer_recv_byte(0, 4); + byte_stuffer_recv_byte(0, 5); + byte_stuffer_recv_byte(0, 6); + byte_stuffer_recv_byte(0, 7); + byte_stuffer_recv_byte(0, 0); +} + +TEST_F(ByteStuffer, receives_an_all_zeros_frame_that_is_maximum_size) { + uint8_t expected[MAX_FRAME_SIZE] = {}; + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + int i; + byte_stuffer_recv_byte(0, 1); + for(i=0;i(ElementsAreArray(expected))); + int i; + byte_stuffer_recv_byte(0, 1); + for(i=0;i(ElementsAreArray(original_data))); + int i; + for(auto& d : sent_data) { + byte_stuffer_recv_byte(1, d); + } +} + +TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_small_packet_with_zeros) { + uint8_t original_data[] = { 1, 0, 3, 0, 0, 9}; + byte_stuffer_send_frame(1, original_data, sizeof(original_data)); + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(original_data))); + int i; + for(auto& d : sent_data) { + byte_stuffer_recv_byte(1, d); + } +} + +TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes) { + uint8_t original_data[254]; + int i; + for(i=0;i<254;i++) { + original_data[i] = i + 1; + } + byte_stuffer_send_frame(0, original_data, sizeof(original_data)); + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(original_data))); + for(auto& d : sent_data) { + byte_stuffer_recv_byte(1, d); + } +} + +TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_256_bytes) { + uint8_t original_data[256]; + int i; + for(i=0;i<254;i++) { + original_data[i] = i + 1; + } + original_data[254] = 22; + original_data[255] = 23; + byte_stuffer_send_frame(0, original_data, sizeof(original_data)); + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(original_data))); + for(auto& d : sent_data) { + byte_stuffer_recv_byte(1, d); + } +} + +TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes_and_then_zero) { + uint8_t original_data[255]; + int i; + for(i=0;i<254;i++) { + original_data[i] = i + 1; + } + original_data[254] = 0; + byte_stuffer_send_frame(0, original_data, sizeof(original_data)); + EXPECT_CALL(*this, validator_recv_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(original_data))); + for(auto& d : sent_data) { + byte_stuffer_recv_byte(1, d); + } +} diff --git a/quantum/serial_link/tests/rules.mk b/quantum/serial_link/tests/rules.mk new file mode 100644 index 0000000000..651f56b950 --- /dev/null +++ b/quantum/serial_link/tests/rules.mk @@ -0,0 +1,3 @@ +serial_link_byte_stuffer_SRC :=\ + $(SERIAL_PATH)/tests/byte_stuffer_tests.cpp \ + $(SERIAL_PATH)/protocol/byte_stuffer.c \ No newline at end of file -- cgit v1.2.1 From f4429ba48ca8346a208b711cd63e7413ac3efeff Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Thu, 25 Aug 2016 11:25:27 +0300 Subject: Running of unit tests But only if the compilation has succeeded --- Makefile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 67b981d51e..054aa31ec5 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE)) ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE)) ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE)) STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) +TEST_DIR := $(ROOT_DIR)/.build/test MAKEFILE_INCLUDED=yes @@ -394,7 +395,10 @@ define BUILD fi; COMMAND_false_$$(COMMAND) := \ printf "$$(MAKE_MSG)\n\n"; \ - $$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; + $$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; \ + if [ $$$$? -gt 0 ]; \ + then error_occured=1; \ + fi; endef # Just parse all the keymaps for a specifc keyboard @@ -410,6 +414,7 @@ define BUILD_TEST MAKE_VARS := TEST=$$(TEST_NAME) MAKE_MSG := $$(MSG_MAKE_TEST) $$(eval $$(call BUILD)) + TESTS += $$(TEST_DIR)/$$(TEST_NAME).elf endef define PARSE_TEST @@ -464,8 +469,8 @@ $(SUBPROJECTS): %: %-allkm # But we return the error code at the end, to trigger travis failures +error_occured=0; \ $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \ - if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi - + if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\ + $(foreach TEST,$(TESTS),$(TEST)) # All should compile everything .PHONY: all -- cgit v1.2.1 From fc855cb30e86aadee7b1d9ee62f83d85cc0447ea Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 13:29:54 +0300 Subject: Fix running multiple tests --- Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 054aa31ec5..5f5c46860c 100644 --- a/Makefile +++ b/Makefile @@ -414,10 +414,12 @@ define BUILD_TEST MAKE_VARS := TEST=$$(TEST_NAME) MAKE_MSG := $$(MSG_MAKE_TEST) $$(eval $$(call BUILD)) - TESTS += $$(TEST_DIR)/$$(TEST_NAME).elf + TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf + TESTS += $$(TEST_EXECUTABLE) endef define PARSE_TEST + TESTS := TEST_NAME := $$(firstword $$(subst -, ,$$(RULE))) TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE))) MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),)) @@ -470,7 +472,7 @@ $(SUBPROJECTS): %: %-allkm +error_occured=0; \ $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \ if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\ - $(foreach TEST,$(TESTS),$(TEST)) + $(foreach TEST,$(TESTS),$(TEST);) # All should compile everything .PHONY: all -- cgit v1.2.1 From c692fd1d55cb2103e9f7c40c8953ec92b5178c52 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 13:43:12 +0300 Subject: More common settings for unit tests and keyboards --- build_keyboard.mk | 25 +++++++++++++------ build_test.mk | 3 +++ common.mk | 14 +++++------ tmk_core/common.mk | 71 ++++++++++++++++++++++++------------------------------ 4 files changed, 59 insertions(+), 54 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index 164794c634..5bec4ecf66 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -23,6 +23,16 @@ ifdef master MASTER = $(master) endif +ifeq ($(MASTER),right) + OPT_DEFS += -DMASTER_IS_ON_RIGHT +else + ifneq ($(MASTER),left) +$(error MASTER does not have a valid value(left/right)) + endif +endif + + + KEYBOARD_PATH := keyboards/$(KEYBOARD) KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c @@ -169,15 +179,14 @@ ifneq ($(SUBPROJECT),) VPATH += $(SUBPROJECT_PATH) endif VPATH += $(KEYBOARD_PATH) -VPATH += $(TOP_DIR) -VPATH += $(TMK_PATH) -VPATH += $(QUANTUM_PATH) -VPATH += $(QUANTUM_PATH)/keymap_extras -VPATH += $(QUANTUM_PATH)/audio -VPATH += $(QUANTUM_PATH)/process_keycode +VPATH += $(COMMON_VPATH) include $(TMK_PATH)/common.mk +SRC += $(TMK_COMMON_SRC) +OPT_DEFS += $(TMK_COMMON_DEFS) +EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS) + ifeq ($(PLATFORM),AVR) include $(TMK_PATH)/protocol/lufa.mk include $(TMK_PATH)/avr.mk @@ -189,11 +198,13 @@ ifeq ($(strip $(VISUALIZER_ENABLE)), yes) include $(VISUALIZER_PATH)/visualizer.mk endif +$(info $(VPATH)) + OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) $(KEYMAP_OUTPUT)_SRC := $(SRC) $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" -$(KEYMAP_OUTPUT)_INC := $(EXTRAINCDIRS) $(VPATH) +$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) diff --git a/build_test.mk b/build_test.mk index 1d8cb08b15..9f5d6e0af2 100644 --- a/build_test.mk +++ b/build_test.mk @@ -38,6 +38,9 @@ VPATH +=\ all: elf +VPATH += $(COMMON_VPATH) + +include $(TMK_PATH)/common.mk include $(QUANTUM_PATH)/serial_link/tests/rules.mk $(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC) diff --git a/common.mk b/common.mk index f9b0773a86..18751cd5ac 100644 --- a/common.mk +++ b/common.mk @@ -17,10 +17,10 @@ SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c) SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) SERIAL_DEFS += -DSERIAL_LINK_ENABLE -VPATH += $(TOP_DIR) -VPATH += $(TMK_PATH) -VPATH += $(QUANTUM_PATH) -VPATH += $(QUANTUM_PATH)/keymap_extras -VPATH += $(QUANTUM_PATH)/audio -VPATH += $(QUANTUM_PATH)/process_keycode -VPATH += $(SERIAL_PATH) \ No newline at end of file +COMMON_VPATH := $(TOP_DIR) +COMMON_VPATH += $(TMK_PATH) +COMMON_VPATH += $(QUANTUM_PATH) +COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras +COMMON_VPATH += $(QUANTUM_PATH)/audio +COMMON_VPATH += $(QUANTUM_PATH)/process_keycode +COMMON_VPATH += $(SERIAL_PATH) \ No newline at end of file diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 0b767eb047..f826a7b540 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -5,7 +5,7 @@ else ifeq ($(PLATFORM),CHIBIOS) PLATFORM_COMMON_DIR = $(COMMON_DIR)/chibios endif -SRC += $(COMMON_DIR)/host.c \ +TMK_COMMON_SRC += $(COMMON_DIR)/host.c \ $(COMMON_DIR)/keyboard.c \ $(COMMON_DIR)/action.c \ $(COMMON_DIR)/action_tapping.c \ @@ -21,98 +21,89 @@ SRC += $(COMMON_DIR)/host.c \ $(PLATFORM_COMMON_DIR)/bootloader.c \ ifeq ($(PLATFORM),AVR) - SRC += $(PLATFORM_COMMON_DIR)/xprintf.S + TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/xprintf.S endif ifeq ($(PLATFORM),CHIBIOS) - SRC += $(PLATFORM_COMMON_DIR)/printf.c - SRC += $(PLATFORM_COMMON_DIR)/eeprom.c + TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/printf.c + TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/eeprom.c endif # Option modules ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) - OPT_DEFS += -DBOOTMAGIC_ENABLE - SRC += $(COMMON_DIR)/bootmagic.c + TMK_COMMON_DEFS += -DBOOTMAGIC_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/bootmagic.c else - OPT_DEFS += -DMAGIC_ENABLE - SRC += $(COMMON_DIR)/magic.c + TMK_COMMON_DEFS += -DMAGIC_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/magic.c endif ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) - SRC += $(COMMON_DIR)/mousekey.c - OPT_DEFS += -DMOUSEKEY_ENABLE - OPT_DEFS += -DMOUSE_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/mousekey.c + TMK_COMMON_DEFS += -DMOUSEKEY_ENABLE + TMK_COMMON_DEFS += -DMOUSE_ENABLE endif ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) - OPT_DEFS += -DEXTRAKEY_ENABLE + TMK_COMMON_DEFS += -DEXTRAKEY_ENABLE endif ifeq ($(strip $(CONSOLE_ENABLE)), yes) - OPT_DEFS += -DCONSOLE_ENABLE + TMK_COMMON_DEFS += -DCONSOLE_ENABLE else - OPT_DEFS += -DNO_PRINT - OPT_DEFS += -DNO_DEBUG + TMK_COMMON_DEFS += -DNO_PRINT + TMK_COMMON_DEFS += -DNO_DEBUG endif ifeq ($(strip $(COMMAND_ENABLE)), yes) - SRC += $(COMMON_DIR)/command.c - OPT_DEFS += -DCOMMAND_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/command.c + TMK_COMMON_DEFS += -DCOMMAND_ENABLE endif ifeq ($(strip $(NKRO_ENABLE)), yes) - OPT_DEFS += -DNKRO_ENABLE + TMK_COMMON_DEFS += -DNKRO_ENABLE endif ifeq ($(strip $(USB_6KRO_ENABLE)), yes) - OPT_DEFS += -DUSB_6KRO_ENABLE + TMK_COMMON_DEFS += -DUSB_6KRO_ENABLE endif ifeq ($(strip $(SLEEP_LED_ENABLE)), yes) - SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c - OPT_DEFS += -DSLEEP_LED_ENABLE - OPT_DEFS += -DNO_SUSPEND_POWER_DOWN + TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c + TMK_COMMON_DEFS += -DSLEEP_LED_ENABLE + TMK_COMMON_DEFS += -DNO_SUSPEND_POWER_DOWN endif ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) - SRC += $(COMMON_DIR)/backlight.c - OPT_DEFS += -DBACKLIGHT_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/backlight.c + TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE endif ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) - OPT_DEFS += -DBLUETOOTH_ENABLE + TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE endif ifeq ($(strip $(ONEHAND_ENABLE)), yes) - OPT_DEFS += -DONEHAND_ENABLE + TMK_COMMON_DEFS += -DONEHAND_ENABLE endif ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes) - OPT_DEFS += -DKEYMAP_SECTION_ENABLE + TMK_COMMON_DEFS += -DKEYMAP_SECTION_ENABLE ifeq ($(strip $(MCU)),atmega32u2) - EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr35.x + TMK_COMMON_LDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr35.x else ifeq ($(strip $(MCU)),atmega32u4) - EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr5.x + TMK_COMMON_LDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr5.x else - EXTRALDFLAGS = $(error no ldscript for keymap section) + TMK_COMMON_LDFLAGS = $(error no ldscript for keymap section) endif endif -ifeq ($(MASTER),right) - OPT_DEFS += -DMASTER_IS_ON_RIGHT -else - ifneq ($(MASTER),left) -$(error MASTER does not have a valid value(left/right)) - endif -endif - - # Bootloader address ifdef STM32_BOOTLOADER_ADDRESS - OPT_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) + TMK_COMMON_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) endif # Search Path -- cgit v1.2.1 From cdd0913bcc63334fa20f1a7bd46bdce4d4f2843b Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 13:43:46 +0300 Subject: Convert frame_router_tests to GTest --- quantum/serial_link/tests/frame_router_tests.c | 231 ----------------------- quantum/serial_link/tests/frame_router_tests.cpp | 229 ++++++++++++++++++++++ quantum/serial_link/tests/rules.mk | 8 +- 3 files changed, 236 insertions(+), 232 deletions(-) delete mode 100644 quantum/serial_link/tests/frame_router_tests.c create mode 100644 quantum/serial_link/tests/frame_router_tests.cpp diff --git a/quantum/serial_link/tests/frame_router_tests.c b/quantum/serial_link/tests/frame_router_tests.c deleted file mode 100644 index 6c806fa939..0000000000 --- a/quantum/serial_link/tests/frame_router_tests.c +++ /dev/null @@ -1,231 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2016 Fred Sundvik - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#include -#include -#include "serial_link/protocol/byte_stuffer.c" -#include "serial_link/protocol/frame_validator.c" -#include "serial_link/protocol/frame_router.c" -#include "serial_link/protocol/transport.h" - -static uint8_t received_data[256]; -static uint16_t received_data_size; - -typedef struct { - uint8_t sent_data[256]; - uint16_t sent_data_size; -} receive_buffer_t; - -typedef struct { - receive_buffer_t send_buffers[2]; -} router_buffer_t; - -router_buffer_t router_buffers[8]; - -router_buffer_t* current_router_buffer; - - -Describe(FrameRouter); -BeforeEach(FrameRouter) { - init_byte_stuffer(); - memset(router_buffers, 0, sizeof(router_buffers)); - current_router_buffer = 0; -} -AfterEach(FrameRouter) {} - -typedef struct { - uint32_t data; - uint8_t extra[16]; -} frame_buffer_t; - - -void send_data(uint8_t link, const uint8_t* data, uint16_t size) { - receive_buffer_t* buffer = ¤t_router_buffer->send_buffers[link]; - memcpy(buffer->sent_data + buffer->sent_data_size, data, size); - buffer->sent_data_size += size; -} - -static void receive_data(uint8_t link, uint8_t* data, uint16_t size) { - int i; - for(i=0;i to) { - receive_data(DOWN_LINK, - router_buffers[from].send_buffers[UP_LINK].sent_data, - router_buffers[from].send_buffers[UP_LINK].sent_data_size); - } - else if(to > from) { - receive_data(UP_LINK, - router_buffers[from].send_buffers[DOWN_LINK].sent_data, - router_buffers[from].send_buffers[DOWN_LINK].sent_data_size); - } -} - -void transport_recv_frame(uint8_t from, uint8_t* data, uint16_t size) { - mock(from, data, size); -} - - -Ensure(FrameRouter, master_broadcast_is_received_by_everyone) { - frame_buffer_t data; - data.data = 0xAB7055BB; - activate_router(0); - router_send_frame(0xFF, (uint8_t*)&data, 4); - assert_that(router_buffers[0].send_buffers[DOWN_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[0].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); - - expect(transport_recv_frame, - when(from, is_equal_to(0)), - when(size, is_equal_to(4)), - when(data, is_equal_to_contents_of(&data.data, 4)) - ); - simulate_transport(0, 1); - assert_that(router_buffers[1].send_buffers[DOWN_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[1].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); - - expect(transport_recv_frame, - when(from, is_equal_to(0)), - when(size, is_equal_to(4)), - when(data, is_equal_to_contents_of(&data.data, 4)) - ); - simulate_transport(1, 2); - assert_that(router_buffers[2].send_buffers[DOWN_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[2].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); -} - -Ensure(FrameRouter, master_send_is_received_by_targets) { - frame_buffer_t data; - data.data = 0xAB7055BB; - activate_router(0); - router_send_frame((1 << 1) | (1 << 2), (uint8_t*)&data, 4); - assert_that(router_buffers[0].send_buffers[DOWN_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[0].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); - - simulate_transport(0, 1); - assert_that(router_buffers[1].send_buffers[DOWN_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[1].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); - - expect(transport_recv_frame, - when(from, is_equal_to(0)), - when(size, is_equal_to(4)), - when(data, is_equal_to_contents_of(&data.data, 4)) - ); - simulate_transport(1, 2); - assert_that(router_buffers[2].send_buffers[DOWN_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[2].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); - - expect(transport_recv_frame, - when(from, is_equal_to(0)), - when(size, is_equal_to(4)), - when(data, is_equal_to_contents_of(&data.data, 4)) - ); - simulate_transport(2, 3); - assert_that(router_buffers[3].send_buffers[DOWN_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[3].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); -} - -Ensure(FrameRouter, first_link_sends_to_master) { - frame_buffer_t data; - data.data = 0xAB7055BB; - activate_router(1); - router_send_frame(0, (uint8_t*)&data, 4); - assert_that(router_buffers[1].send_buffers[UP_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[1].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); - - expect(transport_recv_frame, - when(from, is_equal_to(1)), - when(size, is_equal_to(4)), - when(data, is_equal_to_contents_of(&data.data, 4)) - ); - simulate_transport(1, 0); - assert_that(router_buffers[0].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); - assert_that(router_buffers[0].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); -} - -Ensure(FrameRouter, second_link_sends_to_master) { - frame_buffer_t data; - data.data = 0xAB7055BB; - activate_router(2); - router_send_frame(0, (uint8_t*)&data, 4); - assert_that(router_buffers[2].send_buffers[UP_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[2].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); - - simulate_transport(2, 1); - assert_that(router_buffers[1].send_buffers[UP_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[1].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); - - expect(transport_recv_frame, - when(from, is_equal_to(2)), - when(size, is_equal_to(4)), - when(data, is_equal_to_contents_of(&data.data, 4)) - ); - simulate_transport(1, 0); - assert_that(router_buffers[0].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); - assert_that(router_buffers[0].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); -} - -Ensure(FrameRouter, master_sends_to_master_does_nothing) { - frame_buffer_t data; - data.data = 0xAB7055BB; - activate_router(0); - router_send_frame(0, (uint8_t*)&data, 4); - assert_that(router_buffers[0].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); - assert_that(router_buffers[0].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); -} - -Ensure(FrameRouter, link_sends_to_other_link_does_nothing) { - frame_buffer_t data; - data.data = 0xAB7055BB; - activate_router(1); - router_send_frame(2, (uint8_t*)&data, 4); - assert_that(router_buffers[1].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); - assert_that(router_buffers[1].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); -} - -Ensure(FrameRouter, master_receives_on_uplink_does_nothing) { - frame_buffer_t data; - data.data = 0xAB7055BB; - activate_router(1); - router_send_frame(0, (uint8_t*)&data, 4); - assert_that(router_buffers[1].send_buffers[UP_LINK].sent_data_size, is_greater_than(0)); - assert_that(router_buffers[1].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); - - never_expect(transport_recv_frame); - activate_router(0); - receive_data(UP_LINK, - router_buffers[1].send_buffers[UP_LINK].sent_data, - router_buffers[1].send_buffers[UP_LINK].sent_data_size); - assert_that(router_buffers[0].send_buffers[UP_LINK].sent_data_size, is_equal_to(0)); - assert_that(router_buffers[0].send_buffers[DOWN_LINK].sent_data_size, is_equal_to(0)); -} diff --git a/quantum/serial_link/tests/frame_router_tests.cpp b/quantum/serial_link/tests/frame_router_tests.cpp new file mode 100644 index 0000000000..2bd5bf830d --- /dev/null +++ b/quantum/serial_link/tests/frame_router_tests.cpp @@ -0,0 +1,229 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 Fred Sundvik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "gtest/gtest.h" +#include "gmock/gmock.h" +#include +extern "C" { + #include "serial_link/protocol/transport.h" + #include "serial_link/protocol/byte_stuffer.h" + #include "serial_link/protocol/frame_router.h" +} + +using testing::_; +using testing::ElementsAreArray; +using testing::Args; + +class FrameRouter : public testing::Test { +public: + FrameRouter() : + current_router_buffer(nullptr) + { + Instance = this; + init_byte_stuffer(); + } + + ~FrameRouter() { + Instance = nullptr; + } + + void send_data(uint8_t link, const uint8_t* data, uint16_t size) { + auto& buffer = current_router_buffer->send_buffers[link]; + std::copy(data, data + size, std::back_inserter(buffer)); + } + + void receive_data(uint8_t link, uint8_t* data, uint16_t size) { + int i; + for(i=0;i to) { + receive_data(DOWN_LINK, + router_buffers[from].send_buffers[UP_LINK].data(), + router_buffers[from].send_buffers[UP_LINK].size()); + } + else if(to > from) { + receive_data(UP_LINK, + router_buffers[from].send_buffers[DOWN_LINK].data(), + router_buffers[from].send_buffers[DOWN_LINK].size()); + } + } + + MOCK_METHOD3(transport_recv_frame, void (uint8_t from, uint8_t* data, uint16_t size)); + + std::vector received_data; + + struct router_buffer { + std::vector send_buffers[2]; + }; + + router_buffer router_buffers[8]; + router_buffer* current_router_buffer; + + static FrameRouter* Instance; +}; + +FrameRouter* FrameRouter::Instance = nullptr; + + +typedef struct { + std::array data; + uint8_t extra[16]; +} frame_buffer_t; + + +extern "C" { + void send_data(uint8_t link, const uint8_t* data, uint16_t size) { + FrameRouter::Instance->send_data(link, data, size); + } + + + void transport_recv_frame(uint8_t from, uint8_t* data, uint16_t size) { + FrameRouter::Instance->transport_recv_frame(from, data, size); + } +} + +TEST_F(FrameRouter, master_broadcast_is_received_by_everyone) { + frame_buffer_t data; + data.data = {0xAB, 0x70, 0x55, 0xBB}; + activate_router(0); + router_send_frame(0xFF, (uint8_t*)&data, 4); + EXPECT_GT(router_buffers[0].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0); + EXPECT_CALL(*this, transport_recv_frame(0, _, _)) + .With(Args<1, 2>(ElementsAreArray(data.data))); + simulate_transport(0, 1); + EXPECT_GT(router_buffers[1].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[1].send_buffers[UP_LINK].size(), 0); + + EXPECT_CALL(*this, transport_recv_frame(0, _, _)) + .With(Args<1, 2>(ElementsAreArray(data.data))); + simulate_transport(1, 2); + EXPECT_GT(router_buffers[2].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[2].send_buffers[UP_LINK].size(), 0); +} + +TEST_F(FrameRouter, master_send_is_received_by_targets) { + frame_buffer_t data; + data.data = {0xAB, 0x70, 0x55, 0xBB}; + activate_router(0); + router_send_frame((1 << 1) | (1 << 2), (uint8_t*)&data, 4); + EXPECT_GT(router_buffers[0].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0); + + simulate_transport(0, 1); + EXPECT_GT(router_buffers[1].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[1].send_buffers[UP_LINK].size(), 0); + + EXPECT_CALL(*this, transport_recv_frame(0, _, _)) + .With(Args<1, 2>(ElementsAreArray(data.data))); + simulate_transport(1, 2); + EXPECT_GT(router_buffers[2].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[2].send_buffers[UP_LINK].size(), 0); + + EXPECT_CALL(*this, transport_recv_frame(0, _, _)) + .With(Args<1, 2>(ElementsAreArray(data.data))); + simulate_transport(2, 3); + EXPECT_GT(router_buffers[3].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[3].send_buffers[UP_LINK].size(), 0); +} + +TEST_F(FrameRouter, first_link_sends_to_master) { + frame_buffer_t data; + data.data = {0xAB, 0x70, 0x55, 0xBB}; + activate_router(1); + router_send_frame(0, (uint8_t*)&data, 4); + EXPECT_GT(router_buffers[1].send_buffers[UP_LINK].size(), 0); + EXPECT_EQ(router_buffers[1].send_buffers[DOWN_LINK].size(), 0); + + EXPECT_CALL(*this, transport_recv_frame(1, _, _)) + .With(Args<1, 2>(ElementsAreArray(data.data))); + simulate_transport(1, 0); + EXPECT_EQ(router_buffers[0].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0); +} + +TEST_F(FrameRouter, second_link_sends_to_master) { + frame_buffer_t data; + data.data = {0xAB, 0x70, 0x55, 0xBB}; + activate_router(2); + router_send_frame(0, (uint8_t*)&data, 4); + EXPECT_GT(router_buffers[2].send_buffers[UP_LINK].size(), 0); + EXPECT_EQ(router_buffers[2].send_buffers[DOWN_LINK].size(), 0); + + simulate_transport(2, 1); + EXPECT_GT(router_buffers[1].send_buffers[UP_LINK].size(), 0); + EXPECT_EQ(router_buffers[1].send_buffers[DOWN_LINK].size(), 0); + + EXPECT_CALL(*this, transport_recv_frame(2, _, _)) + .With(Args<1, 2>(ElementsAreArray(data.data))); + simulate_transport(1, 0); + EXPECT_EQ(router_buffers[0].send_buffers[DOWN_LINK].size(), 0); + EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0); +} + +TEST_F(FrameRouter, master_sends_to_master_does_nothing) { + frame_buffer_t data; + data.data = {0xAB, 0x70, 0x55, 0xBB}; + activate_router(0); + router_send_frame(0, (uint8_t*)&data, 4); + EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0); + EXPECT_EQ(router_buffers[0].send_buffers[DOWN_LINK].size(), 0); +} + +TEST_F(FrameRouter, link_sends_to_other_link_does_nothing) { + frame_buffer_t data; + data.data = {0xAB, 0x70, 0x55, 0xBB}; + activate_router(1); + router_send_frame(2, (uint8_t*)&data, 4); + EXPECT_EQ(router_buffers[1].send_buffers[UP_LINK].size(), 0); + EXPECT_EQ(router_buffers[1].send_buffers[DOWN_LINK].size(), 0); +} + +TEST_F(FrameRouter, master_receives_on_uplink_does_nothing) { + frame_buffer_t data; + data.data = {0xAB, 0x70, 0x55, 0xBB}; + activate_router(1); + router_send_frame(0, (uint8_t*)&data, 4); + EXPECT_GT(router_buffers[1].send_buffers[UP_LINK].size(), 0); + EXPECT_EQ(router_buffers[1].send_buffers[DOWN_LINK].size(), 0); + + EXPECT_CALL(*this, transport_recv_frame(_, _, _)) + .Times(0); + activate_router(0); + receive_data(UP_LINK, + router_buffers[1].send_buffers[UP_LINK].data(), + router_buffers[1].send_buffers[UP_LINK].size()); + EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0); + EXPECT_EQ(router_buffers[0].send_buffers[DOWN_LINK].size(), 0); +} diff --git a/quantum/serial_link/tests/rules.mk b/quantum/serial_link/tests/rules.mk index 651f56b950..7d0d6c0d02 100644 --- a/quantum/serial_link/tests/rules.mk +++ b/quantum/serial_link/tests/rules.mk @@ -1,3 +1,9 @@ serial_link_byte_stuffer_SRC :=\ $(SERIAL_PATH)/tests/byte_stuffer_tests.cpp \ - $(SERIAL_PATH)/protocol/byte_stuffer.c \ No newline at end of file + $(SERIAL_PATH)/protocol/byte_stuffer.c + +serial_link_frame_router_SRC := \ + $(SERIAL_PATH)/tests/frame_router_tests.cpp \ + $(SERIAL_PATH)/protocol/byte_stuffer.c \ + $(SERIAL_PATH)/protocol/frame_validator.c \ + $(SERIAL_PATH)/protocol/frame_router.c \ No newline at end of file -- cgit v1.2.1 From b3eba797af74ace19b9f2e762bdd33d9449e3f94 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 13:54:16 +0300 Subject: Convert frame_validator_tests to GTest --- quantum/serial_link/tests/frame_validator_tests.c | 101 ------------------ .../serial_link/tests/frame_validator_tests.cpp | 115 +++++++++++++++++++++ quantum/serial_link/tests/rules.mk | 8 +- 3 files changed, 121 insertions(+), 103 deletions(-) delete mode 100644 quantum/serial_link/tests/frame_validator_tests.c create mode 100644 quantum/serial_link/tests/frame_validator_tests.cpp diff --git a/quantum/serial_link/tests/frame_validator_tests.c b/quantum/serial_link/tests/frame_validator_tests.c deleted file mode 100644 index d20947e2c9..0000000000 --- a/quantum/serial_link/tests/frame_validator_tests.c +++ /dev/null @@ -1,101 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2016 Fred Sundvik - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#include -#include -#include "serial_link/protocol/frame_validator.c" - -void route_incoming_frame(uint8_t link, uint8_t* data, uint16_t size) { - mock(data, size); -} - -void byte_stuffer_send_frame(uint8_t link, uint8_t* data, uint16_t size) { - mock(data, size); -} - -Describe(FrameValidator); -BeforeEach(FrameValidator) {} -AfterEach(FrameValidator) {} - -Ensure(FrameValidator, doesnt_validate_frames_under_5_bytes) { - never_expect(route_incoming_frame); - uint8_t data[] = {1, 2}; - validator_recv_frame(0, 0, 1); - validator_recv_frame(0, data, 2); - validator_recv_frame(0, data, 3); - validator_recv_frame(0, data, 4); -} - -Ensure(FrameValidator, validates_one_byte_frame_with_correct_crc) { - uint8_t data[] = {0x44, 0x04, 0x6A, 0xB3, 0xA3}; - expect(route_incoming_frame, - when(size, is_equal_to(1)), - when(data, is_equal_to_contents_of(data, 1)) - ); - validator_recv_frame(0, data, 5); -} - -Ensure(FrameValidator, does_not_validate_one_byte_frame_with_incorrect_crc) { - uint8_t data[] = {0x44, 0, 0, 0, 0}; - never_expect(route_incoming_frame); - validator_recv_frame(1, data, 5); -} - -Ensure(FrameValidator, validates_four_byte_frame_with_correct_crc) { - uint8_t data[] = {0x44, 0x10, 0xFF, 0x00, 0x74, 0x4E, 0x30, 0xBA}; - expect(route_incoming_frame, - when(size, is_equal_to(4)), - when(data, is_equal_to_contents_of(data, 4)) - ); - validator_recv_frame(1, data, 8); -} - -Ensure(FrameValidator, validates_five_byte_frame_with_correct_crc) { - uint8_t data[] = {1, 2, 3, 4, 5, 0xF4, 0x99, 0x0B, 0x47}; - expect(route_incoming_frame, - when(size, is_equal_to(5)), - when(data, is_equal_to_contents_of(data, 5)) - ); - validator_recv_frame(0, data, 9); -} - -Ensure(FrameValidator, sends_one_byte_with_correct_crc) { - uint8_t original[] = {0x44, 0, 0, 0, 0}; - uint8_t expected[] = {0x44, 0x04, 0x6A, 0xB3, 0xA3}; - expect(byte_stuffer_send_frame, - when(size, is_equal_to(sizeof(expected))), - when(data, is_equal_to_contents_of(expected, sizeof(expected))) - ); - validator_send_frame(0, original, 1); -} - -Ensure(FrameValidator, sends_five_bytes_with_correct_crc) { - uint8_t original[] = {1, 2, 3, 4, 5, 0, 0, 0, 0}; - uint8_t expected[] = {1, 2, 3, 4, 5, 0xF4, 0x99, 0x0B, 0x47}; - expect(byte_stuffer_send_frame, - when(size, is_equal_to(sizeof(expected))), - when(data, is_equal_to_contents_of(expected, sizeof(expected))) - ); - validator_send_frame(0, original, 5); -} diff --git a/quantum/serial_link/tests/frame_validator_tests.cpp b/quantum/serial_link/tests/frame_validator_tests.cpp new file mode 100644 index 0000000000..9223af83b0 --- /dev/null +++ b/quantum/serial_link/tests/frame_validator_tests.cpp @@ -0,0 +1,115 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 Fred Sundvik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "gtest/gtest.h" +#include "gmock/gmock.h" +extern "C" { +#include "serial_link/protocol/frame_validator.h" +} + +using testing::_; +using testing::ElementsAreArray; +using testing::Args; + +class FrameValidator : public testing::Test { +public: + FrameValidator() { + Instance = this; + } + + ~FrameValidator() { + Instance = nullptr; + } + + MOCK_METHOD3(route_incoming_frame, void (uint8_t link, uint8_t* data, uint16_t size)); + MOCK_METHOD3(byte_stuffer_send_frame, void (uint8_t link, uint8_t* data, uint16_t size)); + + static FrameValidator* Instance; +}; + +FrameValidator* FrameValidator::Instance = nullptr; + +extern "C" { +void route_incoming_frame(uint8_t link, uint8_t* data, uint16_t size) { + FrameValidator::Instance->route_incoming_frame(link, data, size); +} + +void byte_stuffer_send_frame(uint8_t link, uint8_t* data, uint16_t size) { + FrameValidator::Instance->byte_stuffer_send_frame(link, data, size); +} +} + +TEST_F(FrameValidator, doesnt_validate_frames_under_5_bytes) { + EXPECT_CALL(*this, route_incoming_frame(_, _, _)) + .Times(0); + uint8_t data[] = {1, 2}; + validator_recv_frame(0, 0, 1); + validator_recv_frame(0, data, 2); + validator_recv_frame(0, data, 3); + validator_recv_frame(0, data, 4); +} + +TEST_F(FrameValidator, validates_one_byte_frame_with_correct_crc) { + uint8_t data[] = {0x44, 0x04, 0x6A, 0xB3, 0xA3}; + EXPECT_CALL(*this, route_incoming_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(data, 1))); + validator_recv_frame(0, data, 5); +} + +TEST_F(FrameValidator, does_not_validate_one_byte_frame_with_incorrect_crc) { + uint8_t data[] = {0x44, 0, 0, 0, 0}; + EXPECT_CALL(*this, route_incoming_frame(_, _, _)) + .Times(0); + validator_recv_frame(1, data, 5); +} + +TEST_F(FrameValidator, validates_four_byte_frame_with_correct_crc) { + uint8_t data[] = {0x44, 0x10, 0xFF, 0x00, 0x74, 0x4E, 0x30, 0xBA}; + EXPECT_CALL(*this, route_incoming_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(data, 4))); + validator_recv_frame(1, data, 8); +} + +TEST_F(FrameValidator, validates_five_byte_frame_with_correct_crc) { + uint8_t data[] = {1, 2, 3, 4, 5, 0xF4, 0x99, 0x0B, 0x47}; + EXPECT_CALL(*this, route_incoming_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(data, 5))); + validator_recv_frame(0, data, 9); +} + +TEST_F(FrameValidator, sends_one_byte_with_correct_crc) { + uint8_t original[] = {0x44, 0, 0, 0, 0}; + uint8_t expected[] = {0x44, 0x04, 0x6A, 0xB3, 0xA3}; + EXPECT_CALL(*this, byte_stuffer_send_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + validator_send_frame(0, original, 1); +} + +TEST_F(FrameValidator, sends_five_bytes_with_correct_crc) { + uint8_t original[] = {1, 2, 3, 4, 5, 0, 0, 0, 0}; + uint8_t expected[] = {1, 2, 3, 4, 5, 0xF4, 0x99, 0x0B, 0x47}; + EXPECT_CALL(*this, byte_stuffer_send_frame(_, _, _)) + .With(Args<1, 2>(ElementsAreArray(expected))); + validator_send_frame(0, original, 5); +} diff --git a/quantum/serial_link/tests/rules.mk b/quantum/serial_link/tests/rules.mk index 7d0d6c0d02..7f2a8f457c 100644 --- a/quantum/serial_link/tests/rules.mk +++ b/quantum/serial_link/tests/rules.mk @@ -5,5 +5,9 @@ serial_link_byte_stuffer_SRC :=\ serial_link_frame_router_SRC := \ $(SERIAL_PATH)/tests/frame_router_tests.cpp \ $(SERIAL_PATH)/protocol/byte_stuffer.c \ - $(SERIAL_PATH)/protocol/frame_validator.c \ - $(SERIAL_PATH)/protocol/frame_router.c \ No newline at end of file + $(SERIAL_PATH)/protocol/frame_validator.c \ + $(SERIAL_PATH)/protocol/frame_router.c + +serial_link_frame_validator_SRC := \ + $(SERIAL_PATH)/tests/frame_validator_tests.cpp \ + $(SERIAL_PATH)/protocol/frame_validator.c \ No newline at end of file -- cgit v1.2.1 From bcdf9ab76bf3723e6015d4255d53e7c1e7259b61 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 14:18:49 +0300 Subject: Convert transport_tests to GTest --- quantum/serial_link/protocol/transport.c | 4 + quantum/serial_link/protocol/transport.h | 7 +- quantum/serial_link/tests/rules.mk | 7 +- quantum/serial_link/tests/transport_tests.c | 168 ----------------------- quantum/serial_link/tests/transport_tests.cpp | 188 ++++++++++++++++++++++++++ 5 files changed, 202 insertions(+), 172 deletions(-) delete mode 100644 quantum/serial_link/tests/transport_tests.c create mode 100644 quantum/serial_link/tests/transport_tests.cpp diff --git a/quantum/serial_link/protocol/transport.c b/quantum/serial_link/protocol/transport.c index f418d11ceb..ff795fe201 100644 --- a/quantum/serial_link/protocol/transport.c +++ b/quantum/serial_link/protocol/transport.c @@ -31,6 +31,10 @@ SOFTWARE. static remote_object_t* remote_objects[MAX_REMOTE_OBJECTS]; static uint32_t num_remote_objects = 0; +void reinitialize_serial_link_transport(void) { + num_remote_objects = 0; +} + void add_remote_objects(remote_object_t** _remote_objects, uint32_t _num_remote_objects) { unsigned int i; for(i=0;i<_num_remote_objects;i++) { diff --git a/quantum/serial_link/protocol/transport.h b/quantum/serial_link/protocol/transport.h index 9a052d8809..2c5d890b21 100644 --- a/quantum/serial_link/protocol/transport.h +++ b/quantum/serial_link/protocol/transport.h @@ -82,7 +82,7 @@ typedef struct { \ remote_object_t* obj = (remote_object_t*)&remote_object_##name; \ uint8_t* start = obj->buffer + LOCAL_OBJECT_SIZE(obj->object_size);\ triple_buffer_object_t* tb = (triple_buffer_object_t*)start; \ - return triple_buffer_read_internal(obj->object_size, tb); \ + return (type*)triple_buffer_read_internal(obj->object_size, tb); \ } #define MASTER_TO_SINGLE_SLAVE_OBJECT(name, type) \ @@ -112,7 +112,7 @@ typedef struct { \ remote_object_t* obj = (remote_object_t*)&remote_object_##name; \ uint8_t* start = obj->buffer + NUM_SLAVES * LOCAL_OBJECT_SIZE(obj->object_size);\ triple_buffer_object_t* tb = (triple_buffer_object_t*)start; \ - return triple_buffer_read_internal(obj->object_size, tb); \ + return (type*)triple_buffer_read_internal(obj->object_size, tb); \ } #define SLAVE_TO_MASTER_OBJECT(name, type) \ @@ -139,12 +139,13 @@ typedef struct { \ uint8_t* start = obj->buffer + LOCAL_OBJECT_SIZE(obj->object_size);\ start+=slave * REMOTE_OBJECT_SIZE(obj->object_size); \ triple_buffer_object_t* tb = (triple_buffer_object_t*)start; \ - return triple_buffer_read_internal(obj->object_size, tb); \ + return (type*)triple_buffer_read_internal(obj->object_size, tb); \ } #define REMOTE_OBJECT(name) (remote_object_t*)&remote_object_##name void add_remote_objects(remote_object_t** remote_objects, uint32_t num_remote_objects); +void reinitialize_serial_link_transport(void); void transport_recv_frame(uint8_t from, uint8_t* data, uint16_t size); void update_transport(void); diff --git a/quantum/serial_link/tests/rules.mk b/quantum/serial_link/tests/rules.mk index 7f2a8f457c..bf342c9d26 100644 --- a/quantum/serial_link/tests/rules.mk +++ b/quantum/serial_link/tests/rules.mk @@ -10,4 +10,9 @@ serial_link_frame_router_SRC := \ serial_link_frame_validator_SRC := \ $(SERIAL_PATH)/tests/frame_validator_tests.cpp \ - $(SERIAL_PATH)/protocol/frame_validator.c \ No newline at end of file + $(SERIAL_PATH)/protocol/frame_validator.c + +serial_link_transport_SRC := \ + $(SERIAL_PATH)/tests/transport_tests.cpp \ + $(SERIAL_PATH)/protocol/transport.c \ + $(SERIAL_PATH)/protocol/triple_buffered_object.c \ No newline at end of file diff --git a/quantum/serial_link/tests/transport_tests.c b/quantum/serial_link/tests/transport_tests.c deleted file mode 100644 index 358e1b9fd4..0000000000 --- a/quantum/serial_link/tests/transport_tests.c +++ /dev/null @@ -1,168 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2016 Fred Sundvik - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#include -#include -#include "serial_link/protocol/transport.c" -#include "serial_link/protocol/triple_buffered_object.c" - -void signal_data_written(void) { - mock(); -} - -static uint8_t sent_data[2048]; -static uint16_t sent_data_size; - -void router_send_frame(uint8_t destination, uint8_t* data, uint16_t size) { - mock(destination); - memcpy(sent_data + sent_data_size, data, size); - sent_data_size += size; -} - -typedef struct { - uint32_t test; -} test_object1_t; - -typedef struct { - uint32_t test1; - uint32_t test2; -} test_object2_t; - -MASTER_TO_ALL_SLAVES_OBJECT(master_to_slave, test_object1_t); -MASTER_TO_SINGLE_SLAVE_OBJECT(master_to_single_slave, test_object1_t); -SLAVE_TO_MASTER_OBJECT(slave_to_master, test_object1_t); - -static remote_object_t* test_remote_objects[] = { - REMOTE_OBJECT(master_to_slave), - REMOTE_OBJECT(master_to_single_slave), - REMOTE_OBJECT(slave_to_master), -}; - -Describe(Transport); -BeforeEach(Transport) { - add_remote_objects(test_remote_objects, sizeof(test_remote_objects) / sizeof(remote_object_t*)); - sent_data_size = 0; -} -AfterEach(Transport) {} - -Ensure(Transport, write_to_local_signals_an_event) { - begin_write_master_to_slave(); - expect(signal_data_written); - end_write_master_to_slave(); - begin_write_slave_to_master(); - expect(signal_data_written); - end_write_slave_to_master(); - begin_write_master_to_single_slave(1); - expect(signal_data_written); - end_write_master_to_single_slave(1); -} - -Ensure(Transport, writes_from_master_to_all_slaves) { - update_transport(); - test_object1_t* obj = begin_write_master_to_slave(); - obj->test = 5; - expect(signal_data_written); - end_write_master_to_slave(); - expect(router_send_frame, - when(destination, is_equal_to(0xFF))); - update_transport(); - transport_recv_frame(0, sent_data, sent_data_size); - test_object1_t* obj2 = read_master_to_slave(); - assert_that(obj2, is_not_equal_to(NULL)); - assert_that(obj2->test, is_equal_to(5)); -} - -Ensure(Transport, writes_from_slave_to_master) { - update_transport(); - test_object1_t* obj = begin_write_slave_to_master(); - obj->test = 7; - expect(signal_data_written); - end_write_slave_to_master(); - expect(router_send_frame, - when(destination, is_equal_to(0))); - update_transport(); - transport_recv_frame(3, sent_data, sent_data_size); - test_object1_t* obj2 = read_slave_to_master(2); - assert_that(read_slave_to_master(0), is_equal_to(NULL)); - assert_that(obj2, is_not_equal_to(NULL)); - assert_that(obj2->test, is_equal_to(7)); -} - -Ensure(Transport, writes_from_master_to_single_slave) { - update_transport(); - test_object1_t* obj = begin_write_master_to_single_slave(3); - obj->test = 7; - expect(signal_data_written); - end_write_master_to_single_slave(3); - expect(router_send_frame, - when(destination, is_equal_to(4))); - update_transport(); - transport_recv_frame(0, sent_data, sent_data_size); - test_object1_t* obj2 = read_master_to_single_slave(); - assert_that(obj2, is_not_equal_to(NULL)); - assert_that(obj2->test, is_equal_to(7)); -} - -Ensure(Transport, ignores_object_with_invalid_id) { - update_transport(); - test_object1_t* obj = begin_write_master_to_single_slave(3); - obj->test = 7; - expect(signal_data_written); - end_write_master_to_single_slave(3); - expect(router_send_frame, - when(destination, is_equal_to(4))); - update_transport(); - sent_data[sent_data_size - 1] = 44; - transport_recv_frame(0, sent_data, sent_data_size); - test_object1_t* obj2 = read_master_to_single_slave(); - assert_that(obj2, is_equal_to(NULL)); -} - -Ensure(Transport, ignores_object_with_size_too_small) { - update_transport(); - test_object1_t* obj = begin_write_master_to_slave(); - obj->test = 7; - expect(signal_data_written); - end_write_master_to_slave(); - expect(router_send_frame); - update_transport(); - sent_data[sent_data_size - 2] = 0; - transport_recv_frame(0, sent_data, sent_data_size - 1); - test_object1_t* obj2 = read_master_to_slave(); - assert_that(obj2, is_equal_to(NULL)); -} - -Ensure(Transport, ignores_object_with_size_too_big) { - update_transport(); - test_object1_t* obj = begin_write_master_to_slave(); - obj->test = 7; - expect(signal_data_written); - end_write_master_to_slave(); - expect(router_send_frame); - update_transport(); - sent_data[sent_data_size + 21] = 0; - transport_recv_frame(0, sent_data, sent_data_size + 22); - test_object1_t* obj2 = read_master_to_slave(); - assert_that(obj2, is_equal_to(NULL)); -} diff --git a/quantum/serial_link/tests/transport_tests.cpp b/quantum/serial_link/tests/transport_tests.cpp new file mode 100644 index 0000000000..21b7b165f6 --- /dev/null +++ b/quantum/serial_link/tests/transport_tests.cpp @@ -0,0 +1,188 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 Fred Sundvik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "gtest/gtest.h" +#include "gmock/gmock.h" + +using testing::_; +using testing::ElementsAreArray; +using testing::Args; + +extern "C" { +#include "serial_link/protocol/transport.h" +} + +struct test_object1 { + uint32_t test; +}; + +struct test_object2 { + uint32_t test1; + uint32_t test2; +}; + +MASTER_TO_ALL_SLAVES_OBJECT(master_to_slave, test_object1); +MASTER_TO_SINGLE_SLAVE_OBJECT(master_to_single_slave, test_object1); +SLAVE_TO_MASTER_OBJECT(slave_to_master, test_object1); + +static remote_object_t* test_remote_objects[] = { + REMOTE_OBJECT(master_to_slave), + REMOTE_OBJECT(master_to_single_slave), + REMOTE_OBJECT(slave_to_master), +}; + +class Transport : public testing::Test { +public: + Transport() { + Instance = this; + add_remote_objects(test_remote_objects, sizeof(test_remote_objects) / sizeof(remote_object_t*)); + } + + ~Transport() { + Instance = nullptr; + reinitialize_serial_link_transport(); + } + + MOCK_METHOD0(signal_data_written, void ()); + MOCK_METHOD1(router_send_frame, void (uint8_t destination)); + + void router_send_frame(uint8_t destination, uint8_t* data, uint16_t size) { + router_send_frame(destination); + std::copy(data, data + size, std::back_inserter(sent_data)); + } + + static Transport* Instance; + + std::vector sent_data; +}; + +Transport* Transport::Instance = nullptr; + +extern "C" { +void signal_data_written(void) { + Transport::Instance->signal_data_written(); +} + +void router_send_frame(uint8_t destination, uint8_t* data, uint16_t size) { + Transport::Instance->router_send_frame(destination, data, size); +} +} + +TEST_F(Transport, write_to_local_signals_an_event) { + begin_write_master_to_slave(); + EXPECT_CALL(*this, signal_data_written()); + end_write_master_to_slave(); + begin_write_slave_to_master(); + EXPECT_CALL(*this, signal_data_written()); + end_write_slave_to_master(); + begin_write_master_to_single_slave(1); + EXPECT_CALL(*this, signal_data_written()); + end_write_master_to_single_slave(1); +} + +TEST_F(Transport, writes_from_master_to_all_slaves) { + update_transport(); + test_object1* obj = begin_write_master_to_slave(); + obj->test = 5; + EXPECT_CALL(*this, signal_data_written()); + end_write_master_to_slave(); + EXPECT_CALL(*this, router_send_frame(0xFF)); + update_transport(); + transport_recv_frame(0, sent_data.data(), sent_data.size()); + test_object1* obj2 = read_master_to_slave(); + EXPECT_NE(obj2, nullptr); + EXPECT_EQ(obj2->test, 5); +} + +TEST_F(Transport, writes_from_slave_to_master) { + update_transport(); + test_object1* obj = begin_write_slave_to_master(); + obj->test = 7; + EXPECT_CALL(*this, signal_data_written()); + end_write_slave_to_master(); + EXPECT_CALL(*this, router_send_frame(0)); + update_transport(); + transport_recv_frame(3, sent_data.data(), sent_data.size()); + test_object1* obj2 = read_slave_to_master(2); + EXPECT_EQ(read_slave_to_master(0), nullptr); + EXPECT_NE(obj2, nullptr); + EXPECT_EQ(obj2->test, 7); +} + +TEST_F(Transport, writes_from_master_to_single_slave) { + update_transport(); + test_object1* obj = begin_write_master_to_single_slave(3); + obj->test = 7; + EXPECT_CALL(*this, signal_data_written()); + end_write_master_to_single_slave(3); + EXPECT_CALL(*this, router_send_frame(4)); + update_transport(); + transport_recv_frame(0, sent_data.data(), sent_data.size()); + test_object1* obj2 = read_master_to_single_slave(); + EXPECT_NE(obj2, nullptr); + EXPECT_EQ(obj2->test, 7); +} + +TEST_F(Transport, ignores_object_with_invalid_id) { + update_transport(); + test_object1* obj = begin_write_master_to_single_slave(3); + obj->test = 7; + EXPECT_CALL(*this, signal_data_written()); + end_write_master_to_single_slave(3); + EXPECT_CALL(*this, router_send_frame(4)); + update_transport(); + sent_data[sent_data.size() - 1] = 44; + transport_recv_frame(0, sent_data.data(), sent_data.size()); + test_object1* obj2 = read_master_to_single_slave(); + EXPECT_EQ(obj2, nullptr); +} + +TEST_F(Transport, ignores_object_with_size_too_small) { + update_transport(); + test_object1* obj = begin_write_master_to_slave(); + obj->test = 7; + EXPECT_CALL(*this, signal_data_written()); + end_write_master_to_slave(); + EXPECT_CALL(*this, router_send_frame(_)); + update_transport(); + sent_data[sent_data.size() - 2] = 0; + transport_recv_frame(0, sent_data.data(), sent_data.size() - 1); + test_object1* obj2 = read_master_to_slave(); + EXPECT_EQ(obj2, nullptr); +} + +TEST_F(Transport, ignores_object_with_size_too_big) { + update_transport(); + test_object1* obj = begin_write_master_to_slave(); + obj->test = 7; + EXPECT_CALL(*this, signal_data_written()); + end_write_master_to_slave(); + EXPECT_CALL(*this, router_send_frame(_)); + update_transport(); + sent_data.resize(sent_data.size() + 22); + sent_data[sent_data.size() - 1] = 0; + transport_recv_frame(0, sent_data.data(), sent_data.size()); + test_object1* obj2 = read_master_to_slave(); + EXPECT_EQ(obj2, nullptr); +} -- cgit v1.2.1 From ffb0a126f5b2484eda7f6b1c62ea61924eec6521 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 14:25:52 +0300 Subject: Convert tirple_buffered_object_tests to GTest --- quantum/serial_link/tests/rules.mk | 12 ++-- quantum/serial_link/tests/testlist.mk | 6 +- .../tests/triple_buffered_object_tests.c | 82 --------------------- .../tests/triple_buffered_object_tests.cpp | 84 ++++++++++++++++++++++ 4 files changed, 95 insertions(+), 89 deletions(-) delete mode 100644 quantum/serial_link/tests/triple_buffered_object_tests.c create mode 100644 quantum/serial_link/tests/triple_buffered_object_tests.cpp diff --git a/quantum/serial_link/tests/rules.mk b/quantum/serial_link/tests/rules.mk index bf342c9d26..b81515bc55 100644 --- a/quantum/serial_link/tests/rules.mk +++ b/quantum/serial_link/tests/rules.mk @@ -2,17 +2,21 @@ serial_link_byte_stuffer_SRC :=\ $(SERIAL_PATH)/tests/byte_stuffer_tests.cpp \ $(SERIAL_PATH)/protocol/byte_stuffer.c +serial_link_frame_validator_SRC := \ + $(SERIAL_PATH)/tests/frame_validator_tests.cpp \ + $(SERIAL_PATH)/protocol/frame_validator.c + serial_link_frame_router_SRC := \ $(SERIAL_PATH)/tests/frame_router_tests.cpp \ $(SERIAL_PATH)/protocol/byte_stuffer.c \ $(SERIAL_PATH)/protocol/frame_validator.c \ $(SERIAL_PATH)/protocol/frame_router.c -serial_link_frame_validator_SRC := \ - $(SERIAL_PATH)/tests/frame_validator_tests.cpp \ - $(SERIAL_PATH)/protocol/frame_validator.c +serial_link_triple_buffered_object_SRC := \ + $(SERIAL_PATH)/tests/triple_buffered_object_tests.cpp \ + $(SERIAL_PATH)/protocol/triple_buffered_object.c serial_link_transport_SRC := \ $(SERIAL_PATH)/tests/transport_tests.cpp \ $(SERIAL_PATH)/protocol/transport.c \ - $(SERIAL_PATH)/protocol/triple_buffered_object.c \ No newline at end of file + $(SERIAL_PATH)/protocol/triple_buffered_object.c diff --git a/quantum/serial_link/tests/testlist.mk b/quantum/serial_link/tests/testlist.mk index 4a734b1e1c..a80e888849 100644 --- a/quantum/serial_link/tests/testlist.mk +++ b/quantum/serial_link/tests/testlist.mk @@ -1,6 +1,6 @@ TEST_LIST +=\ serial_link_byte_stuffer\ - serial_link_frame_router\ serial_link_frame_validator\ - serial_link_transport\ - serial_link_triple_buffered_object \ No newline at end of file + serial_link_frame_router\ + serial_link_triple_buffered_object\ + serial_link_transport \ No newline at end of file diff --git a/quantum/serial_link/tests/triple_buffered_object_tests.c b/quantum/serial_link/tests/triple_buffered_object_tests.c deleted file mode 100644 index 6f7c82b468..0000000000 --- a/quantum/serial_link/tests/triple_buffered_object_tests.c +++ /dev/null @@ -1,82 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2016 Fred Sundvik - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#include -#include "serial_link/protocol/triple_buffered_object.c" - -typedef struct { - uint8_t state; - uint32_t buffer[3]; -}test_object_t; - -test_object_t test_object; - -Describe(TripleBufferedObject); -BeforeEach(TripleBufferedObject) { - triple_buffer_init((triple_buffer_object_t*)&test_object); -} -AfterEach(TripleBufferedObject) {} - - -Ensure(TripleBufferedObject, writes_and_reads_object) { - *triple_buffer_begin_write(&test_object) = 0x3456ABCC; - triple_buffer_end_write(&test_object); - assert_that(*triple_buffer_read(&test_object), is_equal_to(0x3456ABCC)); -} - -Ensure(TripleBufferedObject, does_not_read_empty) { - assert_that(triple_buffer_read(&test_object), is_equal_to(NULL)); -} - -Ensure(TripleBufferedObject, writes_twice_and_reads_object) { - *triple_buffer_begin_write(&test_object) = 0x3456ABCC; - triple_buffer_end_write(&test_object); - *triple_buffer_begin_write(&test_object) = 0x44778899; - triple_buffer_end_write(&test_object); - assert_that(*triple_buffer_read(&test_object), is_equal_to(0x44778899)); -} - -Ensure(TripleBufferedObject, performs_another_write_in_the_middle_of_read) { - *triple_buffer_begin_write(&test_object) = 1; - triple_buffer_end_write(&test_object); - uint32_t* read = triple_buffer_read(&test_object); - *triple_buffer_begin_write(&test_object) = 2; - triple_buffer_end_write(&test_object); - assert_that(*read, is_equal_to(1)); - assert_that(*triple_buffer_read(&test_object), is_equal_to(2)); - assert_that(triple_buffer_read(&test_object), is_equal_to(NULL)); -} - -Ensure(TripleBufferedObject, performs_two_writes_in_the_middle_of_read) { - *triple_buffer_begin_write(&test_object) = 1; - triple_buffer_end_write(&test_object); - uint32_t* read = triple_buffer_read(&test_object); - *triple_buffer_begin_write(&test_object) = 2; - triple_buffer_end_write(&test_object); - *triple_buffer_begin_write(&test_object) = 3; - triple_buffer_end_write(&test_object); - assert_that(*read, is_equal_to(1)); - assert_that(*triple_buffer_read(&test_object), is_equal_to(3)); - assert_that(triple_buffer_read(&test_object), is_equal_to(NULL)); -} diff --git a/quantum/serial_link/tests/triple_buffered_object_tests.cpp b/quantum/serial_link/tests/triple_buffered_object_tests.cpp new file mode 100644 index 0000000000..7724bbee9c --- /dev/null +++ b/quantum/serial_link/tests/triple_buffered_object_tests.cpp @@ -0,0 +1,84 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 Fred Sundvik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "gtest/gtest.h" +extern "C" { +#include "serial_link/protocol/triple_buffered_object.h" +} + +struct test_object{ + uint8_t state; + uint32_t buffer[3]; +}; + +test_object test_object; + +class TripleBufferedObject : public testing::Test { +public: + TripleBufferedObject() { + triple_buffer_init((triple_buffer_object_t*)&test_object); + } +}; + +TEST_F(TripleBufferedObject, writes_and_reads_object) { + *triple_buffer_begin_write(&test_object) = 0x3456ABCC; + triple_buffer_end_write(&test_object); + EXPECT_EQ(*triple_buffer_read(&test_object), 0x3456ABCC); +} + +TEST_F(TripleBufferedObject, does_not_read_empty) { + EXPECT_EQ(triple_buffer_read(&test_object), nullptr); +} + +TEST_F(TripleBufferedObject, writes_twice_and_reads_object) { + *triple_buffer_begin_write(&test_object) = 0x3456ABCC; + triple_buffer_end_write(&test_object); + *triple_buffer_begin_write(&test_object) = 0x44778899; + triple_buffer_end_write(&test_object); + EXPECT_EQ(*triple_buffer_read(&test_object), 0x44778899); +} + +TEST_F(TripleBufferedObject, performs_another_write_in_the_middle_of_read) { + *triple_buffer_begin_write(&test_object) = 1; + triple_buffer_end_write(&test_object); + uint32_t* read = triple_buffer_read(&test_object); + *triple_buffer_begin_write(&test_object) = 2; + triple_buffer_end_write(&test_object); + EXPECT_EQ(*read, 1); + EXPECT_EQ(*triple_buffer_read(&test_object), 2); + EXPECT_EQ(triple_buffer_read(&test_object), nullptr); +} + +TEST_F(TripleBufferedObject, performs_two_writes_in_the_middle_of_read) { + *triple_buffer_begin_write(&test_object) = 1; + triple_buffer_end_write(&test_object); + uint32_t* read = triple_buffer_read(&test_object); + *triple_buffer_begin_write(&test_object) = 2; + triple_buffer_end_write(&test_object); + *triple_buffer_begin_write(&test_object) = 3; + triple_buffer_end_write(&test_object); + EXPECT_EQ(*read, 1); + EXPECT_EQ(*triple_buffer_read(&test_object), 3); + EXPECT_EQ(triple_buffer_read(&test_object), nullptr); +} -- cgit v1.2.1 From 7eefb34e7c4f162b9568ff880d0e4e5214e1b9c9 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 14:53:57 +0300 Subject: Detect failures when running multiple tests Also add better output. --- Makefile | 13 +++++++++++-- message.mk | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 5f5c46860c..b7ef5f92a3 100644 --- a/Makefile +++ b/Makefile @@ -415,7 +415,15 @@ define BUILD_TEST MAKE_MSG := $$(MSG_MAKE_TEST) $$(eval $$(call BUILD)) TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf - TESTS += $$(TEST_EXECUTABLE) + TESTS += $$(TEST_NAME) + TEST_MSG := $$(MSG_TEST) + $$(TEST_NAME)_COMMAND := \ + printf "$$(TEST_MSG)\n"; \ + $$(TEST_EXECUTABLE); \ + if [ $$$$? -gt 0 ]; \ + then error_occured=1; \ + fi; \ + printf "\n"; endef define PARSE_TEST @@ -472,7 +480,8 @@ $(SUBPROJECTS): %: %-allkm +error_occured=0; \ $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \ if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\ - $(foreach TEST,$(TESTS),$(TEST);) + $(foreach TEST,$(TESTS),$($(TEST)_COMMAND)) \ + if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\ # All should compile everything .PHONY: all diff --git a/message.mk b/message.mk index 96814986b5..fa051fd712 100644 --- a/message.mk +++ b/message.mk @@ -76,3 +76,4 @@ define GENERATE_MSG_MAKE_TEST endif endef MSG_MAKE_TEST = $(eval $(call GENERATE_MSG_MAKE_TEST))$(MSG_MAKE_TEST_ACTUAL) +MSG_TEST = Testing $(BOLD)$(TEST_NAME)$(NO_COLOR) -- cgit v1.2.1 From 42baa6cf43ab1da79887e74b9ad71379c13094f9 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 17:43:35 +0300 Subject: Disable map file creation when building tests It causes strange linker warnings on cygwin. --- build_test.mk | 1 + tmk_core/rules.mk | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/build_test.mk b/build_test.mk index 9f5d6e0af2..ee15a45726 100644 --- a/build_test.mk +++ b/build_test.mk @@ -31,6 +31,7 @@ $(GTEST_OUTPUT)_DEFS := $(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC) LDFLAGS += -lstdc++ -lpthread -shared-libgcc +CREATE_MAP := no VPATH +=\ $(LIB_PATH)/googletest\ diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 317f55e083..695fe0badf 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -161,6 +161,7 @@ SCANF_LIB = MATH_LIB = -lm +CREATE_MAP ?= yes #---------------- Linker Options ---------------- @@ -171,7 +172,10 @@ MATH_LIB = -lm # Comennt out "--relax" option to avoid a error such: # (.vectors+0x30): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_12' # -LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref + +ifeq ($(CREATE_MAP),yes) + LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref +endif #LDFLAGS += -Wl,--relax LDFLAGS += $(EXTMEMOPTS) LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) -- cgit v1.2.1 From 1b963117fedf91e4bef97d75eb4e3e0b3b1e1dfd Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 18:01:59 +0300 Subject: Support for running and cleaning all tests --- Makefile | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index b7ef5f92a3..78bf50ed41 100644 --- a/Makefile +++ b/Makefile @@ -414,23 +414,29 @@ define BUILD_TEST MAKE_VARS := TEST=$$(TEST_NAME) MAKE_MSG := $$(MSG_MAKE_TEST) $$(eval $$(call BUILD)) - TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf - TESTS += $$(TEST_NAME) - TEST_MSG := $$(MSG_TEST) - $$(TEST_NAME)_COMMAND := \ - printf "$$(TEST_MSG)\n"; \ - $$(TEST_EXECUTABLE); \ - if [ $$$$? -gt 0 ]; \ - then error_occured=1; \ - fi; \ - printf "\n"; + ifneq ($$(MAKE_TARGET),clean) + TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf + TESTS += $$(TEST_NAME) + TEST_MSG := $$(MSG_TEST) + $$(TEST_NAME)_COMMAND := \ + printf "$$(TEST_MSG)\n"; \ + $$(TEST_EXECUTABLE); \ + if [ $$$$? -gt 0 ]; \ + then error_occured=1; \ + fi; \ + printf "\n"; + endif endef define PARSE_TEST TESTS := TEST_NAME := $$(firstword $$(subst -, ,$$(RULE))) TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE))) - MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),)) + ifeq ($$(TEST_NAME),all) + MATCHED_TESTS := $$(TEST_LIST) + else + MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),)) + endif $$(foreach TEST,$$(MATCHED_TESTS),$$(eval $$(call BUILD_TEST,$$(TEST),$$(TEST_TARGET)))) endef @@ -494,6 +500,11 @@ all-keyboards: allkb-allsp-allkm .PHONY: all-keyboards-defaults all-keyboards-defaults: allkb-allsp-default +.PHONY: test +test: test-all + +.PHONY: test-clean +test-clean: test-all-clean # Generate the version.h file GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") -- cgit v1.2.1 From 6410f0c021792ebbbd279fc6150f197274e914c8 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 18:13:01 +0300 Subject: The all target makes all keyboards and all tests --- Makefile | 6 +++++- build_keyboard.mk | 3 --- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 78bf50ed41..0aaf585786 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,10 @@ ifndef VERBOSE .SILENT: endif +# Never run this makefile in parallel, as it could screw things up +# It won't affect the submakes, so you still get the speedup from specifying -jx +.NOTPARALLEL: + # Allow the silent with lower caps to work the same way as upper caps ifdef silent SILENT = $(silent) @@ -491,7 +495,7 @@ $(SUBPROJECTS): %: %-allkm # All should compile everything .PHONY: all -all: all-keyboards +all: all-keyboards test-all # Define some shortcuts, mostly for compability with the old syntax .PHONY: all-keyboards diff --git a/build_keyboard.mk b/build_keyboard.mk index 5bec4ecf66..04632c1c94 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -198,9 +198,6 @@ ifeq ($(strip $(VISUALIZER_ENABLE)), yes) include $(VISUALIZER_PATH)/visualizer.mk endif -$(info $(VPATH)) - - OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) $(KEYMAP_OUTPUT)_SRC := $(SRC) $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" -- cgit v1.2.1 From 6b92b6280290d87d1c54555652dbc4d7fb7414d1 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 18:13:52 +0300 Subject: Travis builds the default all target --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 138a2c5532..ebeabc8296 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,7 @@ env: global: - secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM= script: -- make all-keyboards AUTOGEN=true +- make AUTOGEN=true addons: apt: packages: -- cgit v1.2.1 From 03b1d142f2df39a98fd8013f364580c8534d044c Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 18:59:22 +0300 Subject: Add -p parameter to mkdir So that it's created even when there's a deeper structure --- tmk_core/rules.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 695fe0badf..79fc7119a6 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -364,10 +364,10 @@ show_path: @echo OBJ=$(OBJ) # Create build directory -$(shell mkdir $(BUILD_DIR) 2>/dev/null) +$(shell mkdir -p $(BUILD_DIR) 2>/dev/null) # Create object files directory -$(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir $(OUTPUT) 2>/dev/null))) +$(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir -p $(OUTPUT) 2>/dev/null))) # Include the dependency files. -include $(patsubst %.o,%.d,$(OBJ)) -- cgit v1.2.1 From fd93a9bb2969f8779a4d10d1190ab2a29128cd66 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 19:03:24 +0300 Subject: Make tests and keyboards in two different jobs --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ebeabc8296..3a68139eb8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,8 @@ env: global: - secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM= script: -- make AUTOGEN=true +- make all-keyboards AUTOGEN=true +- make test addons: apt: packages: -- cgit v1.2.1 From ca5145732777ee4ca6cd607fc426fe15a1c3de51 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 19:36:14 +0300 Subject: Another attempt to make keyboards and tests in parallel --- .travis.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3a68139eb8..f4c918a5ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,8 +10,10 @@ env: global: - secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM= script: -- make all-keyboards AUTOGEN=true -- make test +- make $TARGET AUTOGEN=$AUTOGEN +env: +- TARGET=all-keyboards AUTOGEN=true +- TARGET=test AUTOGEN=false addons: apt: packages: @@ -23,4 +25,7 @@ addons: - binutils-arm-none-eabi - libnewlib-arm-none-eabi - diffutils -after_success: bash util/travis_compiled_push.sh +after_success: + if [ "$AUTOGEN" == "true" ]; then + bash util/travis_compiled_push.sh; + fi -- cgit v1.2.1 From 922c4ea3bc46f6246d9f67ead11bcf53ff947ef3 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 20:09:01 +0300 Subject: Add unit test documentation --- readme.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/readme.md b/readme.md index 473fd6a7cf..762c39aa92 100644 --- a/readme.md +++ b/readme.md @@ -1137,3 +1137,54 @@ Here is where you can (optionally) define your `KEYMAP` function to remap your m ``` Each of the `kxx` variables needs to be unique, and usually follows the format `k`. You can place `KC_NO` where your dead keys are in your matrix. + +# Unit Testing + +If you are new to unit testing, then you can find many good resources on internet. However most of it is scattered around in small pieces here and there, and there's also many different opinions, so I won't give any recommendations. + +Instead I recommend these two books, explaining two different styles of Unit Testing in detail. + +* "Test Driven Development: By Example: Kent Beck" +* "Growing Object-Oriented Software, Guided By Tests: Steve Freeman, Nat Pryce" + +If you prefer videos there are Uncle Bob's [Clean Coders Videos](https://cleancoders.com/), which unfortunately cost quite a bit, especially if you want to watch many of them. But James Shore has a free [Let's Play](http://www.jamesshore.com/Blog/Lets-Play) video series. + +## Google Test and Google Mock +It's possible to Unit Test your code using [Google Test](https://github.com/google/googletest). The Google Test framework also includes another component for writing testing mocks and stubs, called "Google Mock". For information how to write the actual tests, please refer to the documentation on that site. + +## Use of C++ + +Note that Google Test and therefore any test has to be written in C++, even if the rest of the QMK codebases is written in C. This should hopefully not be a problem even if you don't know any C++, since there's quite clear documentation and examples of the required C++ features, and you can write the rest of the test code almost as you would write normal C. Note that some compiler errors which you might get can look quite scary, but just read carefully what it says, and you should be ok. + +One thing to remember, is that you have to append `extern "C"` around all of your C file includes. + +## Adding tests for new or existing features + +If you want to unit test some feature, then take a look at the existing serial_link tests, in the `quantum/serial_link/tests folder`, and follow the steps below to create a similar structure. + +1. If it doesn't already exist, add a test subfolder to the folder containing the feature. +2. Create a `testlist.mk` and a `rules.mk` file in that folder. +3. Include those files from the root folder `testlist.mk`and `build_test.mk` respectively. +4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the serial_link tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests. +5. Define the source files and required options in the `rules.mk` file. + * `_SRC` for source files + * `_DEFS` for additional defines + * `_INC` for additional include folders +6. Write the tests in a new cpp file inside the test folder you created. That file has to be one of the files included from the `rules.mk` file. + +Note how there's several different tests, each mocking out a separate part. Also note that each of them only compiles the very minimum that's needed for the tests. It's recommend that you try to do the same. For a relevant video check out [Matt Hargett "Advanced Unit Testing in C & C++](https://www.youtube.com/watch?v=Wmy6g-aVgZI) + +## Running the tests + +To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test-matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer. + +## Debugging the tests + +If there are problems with the tests, you can find the executable in the `./build/test` folder. You should be able to run those with GDB or a similar debugger. + +## Full Integration tests + +It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing. + +In that model you would emulate the input, and expect a certain output from the emulated keyboard. + -- cgit v1.2.1 From 1f5838a28679975f689e35471a35720ed5c7e7c5 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 23:29:37 +0300 Subject: Fix the keyboard template with new make syntax Also add proper link to the parent --- quantum/template/readme.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/quantum/template/readme.md b/quantum/template/readme.md index b2fb4dd98d..b16f4cd768 100644 --- a/quantum/template/readme.md +++ b/quantum/template/readme.md @@ -3,7 +3,7 @@ ## Quantum MK Firmware -For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). +For the full Quantum feature list, see [the parent readme](/). ## Building @@ -13,16 +13,16 @@ Depending on which keymap you would like to use, you will have to compile slight ### Default -To build with the default keymap, simply run `make`. +To build with the default keymap, simply run `make default`. ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. -To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: ``` -$ make keymap=[default|jack|] +$ make [default|jack|] ``` -Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` \ No newline at end of file +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. -- cgit v1.2.1 From 53302328d0425bacdf4b0a763699308b9179f5ff Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 23:43:49 +0300 Subject: Add dfu-util to the instructions --- readme.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/readme.md b/readme.md index 473fd6a7cf..e905fb6b70 100644 --- a/readme.md +++ b/readme.md @@ -69,11 +69,12 @@ Here are the steps ### Windows (Vista and later) 1. If you have ever installed WinAVR, uninstall it. 2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**. -3. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. -4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. -5. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. -6. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! -7. Future build commands should be run from the MHV AVR Shell, which sets up an environment compatible with colorful build output. The standard Command Prompt will also work, but add `COLOR=false` to the end of all make commands when using it. +3. If you are going to flash Infinity based keyboards you will need to install dfu-util, refer to the instructions by [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware). +4. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. +5. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. +6. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. +7. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! +8. Future build commands should be run from the MHV AVR Shell, which sets up an environment compatible with colorful build output. The standard Command Prompt will also work, but add `COLOR=false` to the end of all make commands when using it. ### Mac If you're using [homebrew,](http://brew.sh/) you can use the following commands: @@ -90,6 +91,10 @@ You can also try these instructions: 2. Install the Command Line Tools from `Xcode->Preferences->Downloads`. 3. Install [DFU-Programmer][dfu-prog]. +If you are going to flash Infinity based keyboards you will also need dfu-util + + brew install dfu-util + ### Linux To ensure you are always up to date, you can just run `sudo utils/install_dependencies.sh`. That should always install all the dependencies needed. -- cgit v1.2.1 From 8ab9c5c55a0f90266b1c70e40fc034065ad027de Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 23:14:27 +0300 Subject: Rename infinity_chibios to infinity60, and add readme --- keyboards/infinity60/MEMO.txt | 385 +++++++++++++++ keyboards/infinity60/Makefile | 3 + keyboards/infinity60/bootloader_defs.h | 1 + keyboards/infinity60/chconf.h | 524 +++++++++++++++++++++ keyboards/infinity60/config.h | 77 +++ keyboards/infinity60/halconf.h | 353 ++++++++++++++ keyboards/infinity60/infinity60.c | 17 + keyboards/infinity60/infinity60.h | 66 +++ keyboards/infinity60/keymaps/default/keymap.c | 48 ++ keyboards/infinity60/keymaps/depariel/keymap.c | 82 ++++ keyboards/infinity60/keymaps/hasu/keymap.c | 113 +++++ keyboards/infinity60/led.c | 24 + keyboards/infinity60/matrix.c | 171 +++++++ keyboards/infinity60/mcuconf.h | 55 +++ keyboards/infinity60/readme.md | 29 ++ keyboards/infinity60/rules.mk | 66 +++ keyboards/infinity_chibios/MEMO.txt | 385 --------------- keyboards/infinity_chibios/Makefile | 3 - keyboards/infinity_chibios/bootloader_defs.h | 1 - keyboards/infinity_chibios/chconf.h | 524 --------------------- keyboards/infinity_chibios/config.h | 78 --- keyboards/infinity_chibios/halconf.h | 353 -------------- keyboards/infinity_chibios/infinity_chibios.c | 17 - keyboards/infinity_chibios/infinity_chibios.h | 66 --- .../infinity_chibios/keymaps/default/keymap.c | 48 -- .../infinity_chibios/keymaps/depariel/keymap.c | 82 ---- keyboards/infinity_chibios/keymaps/hasu/keymap.c | 113 ----- keyboards/infinity_chibios/led.c | 24 - keyboards/infinity_chibios/matrix.c | 171 ------- keyboards/infinity_chibios/mcuconf.h | 55 --- keyboards/infinity_chibios/rules.mk | 66 --- 31 files changed, 2014 insertions(+), 1986 deletions(-) create mode 100644 keyboards/infinity60/MEMO.txt create mode 100644 keyboards/infinity60/Makefile create mode 100644 keyboards/infinity60/bootloader_defs.h create mode 100644 keyboards/infinity60/chconf.h create mode 100644 keyboards/infinity60/config.h create mode 100644 keyboards/infinity60/halconf.h create mode 100644 keyboards/infinity60/infinity60.c create mode 100644 keyboards/infinity60/infinity60.h create mode 100644 keyboards/infinity60/keymaps/default/keymap.c create mode 100755 keyboards/infinity60/keymaps/depariel/keymap.c create mode 100644 keyboards/infinity60/keymaps/hasu/keymap.c create mode 100644 keyboards/infinity60/led.c create mode 100644 keyboards/infinity60/matrix.c create mode 100644 keyboards/infinity60/mcuconf.h create mode 100644 keyboards/infinity60/readme.md create mode 100644 keyboards/infinity60/rules.mk delete mode 100644 keyboards/infinity_chibios/MEMO.txt delete mode 100644 keyboards/infinity_chibios/Makefile delete mode 100644 keyboards/infinity_chibios/bootloader_defs.h delete mode 100644 keyboards/infinity_chibios/chconf.h delete mode 100644 keyboards/infinity_chibios/config.h delete mode 100644 keyboards/infinity_chibios/halconf.h delete mode 100644 keyboards/infinity_chibios/infinity_chibios.c delete mode 100644 keyboards/infinity_chibios/infinity_chibios.h delete mode 100644 keyboards/infinity_chibios/keymaps/default/keymap.c delete mode 100755 keyboards/infinity_chibios/keymaps/depariel/keymap.c delete mode 100644 keyboards/infinity_chibios/keymaps/hasu/keymap.c delete mode 100644 keyboards/infinity_chibios/led.c delete mode 100644 keyboards/infinity_chibios/matrix.c delete mode 100644 keyboards/infinity_chibios/mcuconf.h delete mode 100644 keyboards/infinity_chibios/rules.mk diff --git a/keyboards/infinity60/MEMO.txt b/keyboards/infinity60/MEMO.txt new file mode 100644 index 0000000000..e2886aa002 --- /dev/null +++ b/keyboards/infinity60/MEMO.txt @@ -0,0 +1,385 @@ +flabbergast's TMK/ChibiOS port +============================== +2015/10/16 + + +Build +----- +$ git clone -b chibios https://github.com/flabbergast/tmk_keyboard.git + +$ cd tmk_keyboard +$ git submodule add -f -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios +or +$ cd tmk_keyboard/tmk_core/tool/chibios +$ git clone -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios + +$ cd tmk_keyboard/keyboard/infinity_chibios +$ make + + + + +Chibios Configuration +--------------------- +halconf.h: for HAL configuration + placed in project directory + read in chibios/os/hal/hal.mk + included in chibios/os/hal/include/hal.h +mcuconf.h: for MCU configuration + placed in project directory + included in halconf.h + + +Chibios Term +------------ +PAL = Port Abstraction Layer + palWritePad + palReadPad + palSetPad + chibios/os/hal/include/pal.h + +LLD = Low Level Driver + + +Makefile +-------- + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = KL2x + + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT = MKL26Z64 + + # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP = kl2x + + # Board: it should exist either in /os/hal/boards/ + # or /boards + BOARD = PJRC_TEENSY_LC + + MCU = cortex-m0 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 6 + + +halconf.h +--------- + + +mcuconf.h +--------- + + +chconf.h +-------- + + +ld script +--------- +--- ../../tmk_core/tool/chibios/chibios/os/common/ports/ARMCMx/compilers/GCC/ld/MKL26Z64.ld 2015-10-15 09:08:58.732904304 +0900 ++++ ld/MKL26Z64.ld 2015-10-15 08:48:06.430215496 +0900 +@@ -27,7 +27,8 @@ + { + flash0 : org = 0x00000000, len = 0xc0 + flashcfg : org = 0x00000400, len = 0x10 +- flash : org = 0x00000410, len = 64k - 0x410 ++ flash : org = 0x00000410, len = 62k - 0x410 ++ eeprom_emu : org = 0x0000F800, len = 2k + ram : org = 0x1FFFF800, len = 8k + } + +@@ -35,6 +36,10 @@ + __ram_size__ = LENGTH(ram); + __ram_end__ = __ram_start__ + __ram_size__; + ++__eeprom_workarea_start__ = ORIGIN(eeprom_emu); ++__eeprom_workarea_size__ = LENGTH(eeprom_emu); ++__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__; ++ + SECTIONS + { + . = 0; + + + +Configuration/Startup for Infinity 60% +-------------------------------------- +Configuration: + + +Clock: +Inifinity + FEI(FLL Engaged Internal) mode with core clock:48MHz, bus clock:48MHz, flash clock:24MHz + Clock dividor: + SIM_CLKDIV1[OUTDIV1] = 0 divide-by-1 for core clock + SIM_CLKDIV1[OUTDIV2] = 0 divide-by-1 for bus clock + SIM_CLKDIV1[OUTDIV4] = 1 divide-by-2 for flash clock + Internal reference clock: + MCG_C1[IREFS] = 1 Internal Reference Select for clock source for FLL + MCG_C1[IRCLKEN] = 1 Internal Reference Clock Enable + FLL multipilication: + MCG_C4[DMX32] = 1 + MCG_C4[DRST_DRS] = 01 FLL factor 1464 * 32.768kHz = 48MHz + +chibios/os/hal/ports/KINETIS/K20x/hal_lld.c + k20x_clock_init(): called in __early_init() defined in board.c + disable watchdog and configure clock + + configurable macros: + KINETIS_NO_INIT: whether init or not + KINETIS_MCG_MODE: clock mode + KINETIS_MCG_MODE_FEI + KINETIS_MCG_MODE_PEE + hal/ports/KINETIS/K20x/hal_lld.h + + +chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.h + PALConfig pal_default_config + boardInit() + __early_init() + macro definitions for board infos, freq and mcu type + +chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.c + +USB + + +Startup +------- + common/ports/ARMCMx/GCC/crt0_v[67]m.s + Reset_Handler: startup code + common/ports/ARMCMx/GCC/crt1.c + __core_init(): weak + __early_init(): weak + __late_init(): weak + __default_exit(): weak + called from Reset_Handler of crt0 + common/ports/ARMCMx/GCC/vector.c + common/ports/ARMCMx/GCC/ld/*.ld + +chibios/os/common/ports/ARMCMx/compilers/GCC/ +├── crt0_v6m.s +├── crt0_v7m.s +├── crt1.c +├── ld +│   ├── MK20DX128BLDR3.ld +│   ├── MK20DX128BLDR4.ld +│   ├── MK20DX128.ld +│   ├── MK20DX256.ld +│   ├── MKL25Z128.ld +│   ├── MKL26Z128.ld +│   ├── MKL26Z64.ld +│   └── STM32L476xG.ld +├── mk +│   ├── startup_k20x5.mk +│   ├── startup_k20x7.mk +│   ├── startup_k20x.mk +│   ├── startup_kl2x.mk +│   └── startup_stm32l4xx.mk +├── rules.ld +├── rules.mk +└── vectors.c + +chibios/os/hal/ +├── boards +│   ├── FREESCALE_FREEDOM_K20D50M +│   │   ├── board.c +│   │   ├── board.h +│   │   └── board.mk +│   ├── MCHCK_K20 +│   │   ├── board.c +│   │   ├── board.h +│   │   └── board.mk +│   ├── PJRC_TEENSY_3 +│   │   ├── board.c +│   │   ├── board.h +│   │   └── board.mk +│   ├── PJRC_TEENSY_3_1 +│   │   ├── board.c +│   │   ├── board.h +│   │   └── board.mk +│   ├── PJRC_TEENSY_LC +│   │   ├── board.c +│   │   ├── board.h +│   │   └── board.mk +│   ├── readme.txt +│   ├── simulator +│   │   ├── board.c +│   │   ├── board.h +│   │   └── board.mk +│   ├── ST_NUCLEO_F030R8 +│   │   ├── board.c +│   │   ├── board.h +│   │   ├── board.mk +│   │   └── cfg +│   │   └── board.chcfg +├── hal.mk +├── include +│   ├── adc.h +│   ├── can.h +│   ├── dac.h +│   ├── ext.h +│   ├── gpt.h +│   ├── hal_channels.h +│   ├── hal_files.h +│   ├── hal.h +│   ├── hal_ioblock.h +│   ├── hal_mmcsd.h +│   ├── hal_queues.h +│   ├── hal_streams.h +│   ├── i2c.h +│   ├── i2s.h +│   ├── icu.h +│   ├── mac.h +│   ├── mii.h +│   ├── mmc_spi.h +│   ├── pal.h +│   ├── pwm.h +│   ├── rtc.h +│   ├── sdc.h +│   ├── serial.h +│   ├── serial_usb.h +│   ├── spi.h +│   ├── st.h +│   ├── uart.h +│   └── usb.h +├── lib +│   └── streams +│   ├── chprintf.c +│   ├── chprintf.h +│   ├── memstreams.c +│   ├── memstreams.h +│   ├── nullstreams.c +│   └── nullstreams.h +├── osal +│   ├── nil +│   │   ├── osal.c +│   │   ├── osal.h +│   │   └── osal.mk +│   ├── os-less +│   │   └── ARMCMx +│   │   ├── osal.c +│   │   ├── osal.h +│   │   └── osal.mk +│   └── rt +│   ├── osal.c +│   ├── osal.h +│   └── osal.mk +├── ports +│   ├── AVR +│   ├── common +│   │   └── ARMCMx +│   │   ├── mpu.h +│   │   ├── nvic.c +│   │   └── nvic.h +│   ├── KINETIS +│   │   ├── K20x +│   │   │   ├── hal_lld.c +│   │   │   ├── hal_lld.h +│   │   │   ├── kinetis_registry.h +│   │   │   ├── platform.dox +│   │   │   ├── platform.mk +│   │   │   ├── pwm_lld.c +│   │   │   ├── pwm_lld.h +│   │   │   ├── spi_lld.c +│   │   │   └── spi_lld.h +│   │   ├── KL2x +│   │   │   ├── hal_lld.c +│   │   │   ├── hal_lld.h +│   │   │   ├── kinetis_registry.h +│   │   │   ├── platform.mk +│   │   │   ├── pwm_lld.c +│   │   │   └── pwm_lld.h +│   │   ├── LLD +│   │   │   ├── adc_lld.c +│   │   │   ├── adc_lld.h +│   │   │   ├── ext_lld.c +│   │   │   ├── ext_lld.h +│   │   │   ├── gpt_lld.c +│   │   │   ├── gpt_lld.h +│   │   │   ├── i2c_lld.c +│   │   │   ├── i2c_lld.h +│   │   │   ├── pal_lld.c +│   │   │   ├── pal_lld.h +│   │   │   ├── serial_lld.c +│   │   │   ├── serial_lld.h +│   │   │   ├── st_lld.c +│   │   │   ├── st_lld.h +│   │   │   ├── usb_lld.c +│   │   │   └── usb_lld.h +│   │   └── README.md +│   ├── LPC +│   ├── simulator +│   └── STM32 +├── src +│   ├── adc.c +│   ├── can.c +│   ├── dac.c +│   ├── ext.c +│   ├── gpt.c +│   ├── hal.c +│   ├── hal_mmcsd.c +│   ├── hal_queues.c +│   ├── i2c.c +│   ├── i2s.c +│   ├── icu.c +│   ├── mac.c +│   ├── mmc_spi.c +│   ├── pal.c +│   ├── pwm.c +│   ├── rtc.c +│   ├── sdc.c +│   ├── serial.c +│   ├── serial_usb.c +│   ├── spi.c +│   ├── st.c +│   ├── uart.c +│   └── usb.c +└── templates + ├── adc_lld.c + ├── adc_lld.h + ├── can_lld.c + ├── can_lld.h + ├── dac_lld.c + ├── dac_lld.h + ├── ext_lld.c + ├── ext_lld.h + ├── gpt_lld.c + ├── gpt_lld.h + ├── halconf.h + ├── hal_lld.c + ├── hal_lld.h + ├── i2c_lld.c + ├── i2c_lld.h + ├── i2s_lld.c + ├── i2s_lld.h + ├── icu_lld.c + ├── icu_lld.h + ├── mac_lld.c + ├── mac_lld.h + ├── mcuconf.h + ├── osal + │   ├── osal.c + │   ├── osal.h + │   └── osal.mk + ├── pal_lld.c + ├── pal_lld.h + ├── platform.mk + ├── pwm_lld.c + ├── pwm_lld.h + ├── rtc_lld.c + ├── rtc_lld.h + ├── sdc_lld.c + ├── sdc_lld.h + ├── serial_lld.c + ├── serial_lld.h + ├── spi_lld.c + ├── spi_lld.h + ├── st_lld.c + ├── st_lld.h + ├── uart_lld.c + ├── uart_lld.h + ├── usb_lld.c + └── usb_lld.h diff --git a/keyboards/infinity60/Makefile b/keyboards/infinity60/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/infinity60/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/infinity60/bootloader_defs.h b/keyboards/infinity60/bootloader_defs.h new file mode 100644 index 0000000000..c67153be60 --- /dev/null +++ b/keyboards/infinity60/bootloader_defs.h @@ -0,0 +1 @@ +#define KIIBOHD_BOOTLOADER diff --git a/keyboards/infinity60/chconf.h b/keyboards/infinity60/chconf.h new file mode 100644 index 0000000000..43c845739a --- /dev/null +++ b/keyboards/infinity60/chconf.h @@ -0,0 +1,524 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +#define CHCONF_H + +#define _CHIBIOS_RT_CONF_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16 or 32 bits. + */ +#define CH_CFG_ST_RESOLUTION 32 + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +#define CH_CFG_ST_FREQUENCY 1000 + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +#define CH_CFG_ST_TIMEDELTA 0 + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +#define CH_CFG_TIME_QUANTUM 20 + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +#define CH_CFG_MEMCORE_SIZE 0 + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +#define CH_CFG_NO_IDLE_THREAD FALSE + +/* Use __WFI in the idle thread for waiting. Does lower the power + * consumption. */ +#define CORTEX_ENABLE_WFI_IDLE TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +#define CH_CFG_OPTIMIZE_SPEED TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_TM FALSE + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_REGISTRY TRUE + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_WAITEXIT TRUE + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_SEMAPHORES TRUE + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MUTEXES TRUE + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_CONDVARS TRUE + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_EVENTS TRUE + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +#define CH_CFG_USE_EVENTS_TIMEOUT TRUE + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MESSAGES TRUE + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_MAILBOXES TRUE + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMCORE TRUE + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +#define CH_CFG_USE_HEAP TRUE + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMPOOLS TRUE + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +#define CH_CFG_USE_DYNAMIC TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_STATISTICS FALSE + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_SYSTEM_STATE_CHECK FALSE + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_CHECKS FALSE + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_ASSERTS FALSE + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_BUFFER_SIZE 128 + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +#define CH_DBG_ENABLE_STACK_CHECK FALSE + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_FILL_THREADS FALSE + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +#define CH_DBG_THREADS_PROFILING FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +#define CH_CFG_THREAD_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p chThdInit() API. + * + * @note It is invoked from within @p chThdInit() and implicitly from all + * the threads creation APIs. + */ +#define CH_CFG_THREAD_INIT_HOOK(tp) { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ + /* Add threads finalization code here.*/ \ +} + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ + /* Context switch code here.*/ \ +} + +/** + * @brief ISR enter hook. + */ +#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ + /* IRQ prologue code here.*/ \ +} + +/** + * @brief ISR exit hook. + */ +#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ + /* IRQ epilogue code here.*/ \ +} + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +#define CH_CFG_IDLE_ENTER_HOOK() { \ + /* Idle-enter code here.*/ \ +} + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +#define CH_CFG_IDLE_LEAVE_HOOK() { \ + /* Idle-leave code here.*/ \ +} + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +#define CH_CFG_IDLE_LOOP_HOOK() { \ + /* Idle loop code here.*/ \ +} + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +#define CH_CFG_SYSTEM_TICK_HOOK() { \ + /* System tick event code here.*/ \ +} + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ + /* System halt code here.*/ \ +} + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +#define CH_CFG_TRACE_HOOK(tep) { \ + /* Trace code here.*/ \ +} + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/keyboards/infinity60/config.h b/keyboards/infinity60/config.h new file mode 100644 index 0000000000..f8346fe165 --- /dev/null +++ b/keyboards/infinity60/config.h @@ -0,0 +1,77 @@ +/* +Copyright 2015 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#define PREVENT_STUCK_MODIFIERS + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6464 +#define DEVICE_VER 0x0001 +/* in python2: list(u"whatever".encode('utf-16-le')) */ +/* at most 32 characters or the ugly hack in usb_main.c borks */ +#define MANUFACTURER "Input Club" +#define USBSTR_MANUFACTURER 'I', '\x00', 'n', '\x00', 'p', '\x00', 'u', '\x00', 't', '\x00', ' ', '\x00', 'C', '\x00', 'l', '\x00', 'u', '\x00', 'b', '\x00' +#define PRODUCT "Infinity keyboard/QMK" +#define USBSTR_PRODUCT 'I', '\x00', 'n', '\x00', 'f', '\x00', 'i', '\x00', 'n', '\x00', 'i', '\x00', 't', '\x00', 'y', '\x00', ' ', '\x00', 'k', '\x00', 'e', '\x00', 'y', '\x00', 'b', '\x00', 'o', '\x00', 'a', '\x00', 'r', '\x00', 'd', '\x00', '/', '\x00', 'Q', '\x00', 'M', '\x00', 'K', '\x00' +/* key matrix size */ +#define MATRIX_ROWS 9 +#define MATRIX_COLS 7 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 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)) \ +) + +/* Keymap for Infinity prototype */ +//#define INFINITY_PROTOTYPE + +/* Keymap for Infinity 1.1a (first revision with LED support) */ +//#define INFINITY_LED + +/* + * 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/infinity60/halconf.h b/keyboards/infinity60/halconf.h new file mode 100644 index 0000000000..46b37a4f46 --- /dev/null +++ b/keyboards/infinity60/halconf.h @@ -0,0 +1,353 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef _HALCONF_H_ +#define _HALCONF_H_ + +#include "mcuconf.h" + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +#define HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +#define HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +#define HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the DAC subsystem. + */ +#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +#define HAL_USE_DAC FALSE +#endif + +/** + * @brief Enables the EXT subsystem. + */ +#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) +#define HAL_USE_EXT FALSE +#endif + +/** + * @brief Enables the GPT subsystem. + */ +#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +#define HAL_USE_GPT FALSE +#endif + +/** + * @brief Enables the I2C subsystem. + */ +#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +#define HAL_USE_I2C FALSE +#endif + +/** + * @brief Enables the I2S subsystem. + */ +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +#define HAL_USE_I2S FALSE +#endif + +/** + * @brief Enables the ICU subsystem. + */ +#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +#define HAL_USE_ICU FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +#define HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define HAL_USE_MMC_SPI FALSE +#endif + +/** + * @brief Enables the PWM subsystem. + */ +#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +#define HAL_USE_PWM FALSE +#endif + +/** + * @brief Enables the RTC subsystem. + */ +#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +#define HAL_USE_RTC FALSE +#endif + +/** + * @brief Enables the SDC subsystem. + */ +#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +#define HAL_USE_SDC FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL FALSE +#endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL_USB TRUE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +#define HAL_USE_SPI FALSE +#endif + +/** + * @brief Enables the UART subsystem. + */ +#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +#define HAL_USE_UART FALSE +#endif + +/** + * @brief Enables the USB subsystem. + */ +#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +#define HAL_USE_USB TRUE +#endif + +/** + * @brief Enables the WDG subsystem. + */ +#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +#define HAL_USE_WDG FALSE +#endif + +/*===========================================================================*/ +/* ADC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) +#define ADC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define ADC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* CAN driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Sleep mode related APIs inclusion switch. + */ +#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) +#define CAN_USE_SLEEP_MODE TRUE +#endif + +/*===========================================================================*/ +/* I2C driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the mutual exclusion APIs on the I2C bus. + */ +#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define I2C_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* MAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) +#define MAC_USE_ZERO_COPY FALSE +#endif + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) +#define MAC_USE_EVENTS TRUE +#endif + +/*===========================================================================*/ +/* MMC_SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + * This option is recommended also if the SPI driver does not + * use a DMA channel and heavily loads the CPU. + */ +#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) +#define MMC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SDC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Number of initialization attempts before rejecting the card. + * @note Attempts are performed at 10mS intervals. + */ +#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) +#define SDC_INIT_RETRY 100 +#endif + +/** + * @brief Include support for MMC cards. + * @note MMC support is not yet implemented so this option must be kept + * at @p FALSE. + */ +#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) +#define SDC_MMC_SUPPORT FALSE +#endif + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + */ +#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) +#define SDC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SERIAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Default bit rate. + * @details Configuration parameter, this is the baud rate selected for the + * default configuration. + */ +#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) +#define SERIAL_DEFAULT_BITRATE 38400 +#endif + +/** + * @brief Serial buffers size. + * @details Configuration parameter, you can change the depth of the queue + * buffers depending on the requirements of your application. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_BUFFERS_SIZE 16 +#endif + +/*===========================================================================*/ +/* SERIAL_USB driver related setting. */ +/*===========================================================================*/ + +/** + * @brief Serial over USB buffers size. + * @details Configuration parameter, the buffer size must be a multiple of + * the USB data endpoint maximum packet size. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_SIZE 256 +#endif + +/*===========================================================================*/ +/* SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) +#define SPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define SPI_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +#define USB_USE_WAIT TRUE +#endif + +#endif /* _HALCONF_H_ */ + +/** @} */ diff --git a/keyboards/infinity60/infinity60.c b/keyboards/infinity60/infinity60.c new file mode 100644 index 0000000000..e471250feb --- /dev/null +++ b/keyboards/infinity60/infinity60.c @@ -0,0 +1,17 @@ +/* +Copyright 2012,2013 Jun Wako + +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 . +*/ +#include "infinity60.h" diff --git a/keyboards/infinity60/infinity60.h b/keyboards/infinity60/infinity60.h new file mode 100644 index 0000000000..f1ba15e489 --- /dev/null +++ b/keyboards/infinity60/infinity60.h @@ -0,0 +1,66 @@ +/* +Copyright 2014 Jun Wako + +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 . +*/ +#ifndef KEYMAP_COMMON_H +#define KEYMAP_COMMON_H + +#include "quantum.h" + +#ifdef INFINITY_PROTOTYPE + +/* Infinity prototype */ +#define KEYMAP( \ + K00, K10, K20, K30, K40, K50, K60, K70, K80, K01, K11, K21, K31, K41, K86, \ + K51, K61, K71, K81, K02, K12, K22, K32, K42, K52, K62, K72, K82, K03, \ + K13, K23, K33, K43, K53, K63, K73, K83, K04, K14, K24, K34, K44, \ + K54, K64, K74, K84, K05, K15, K25, K35, K45, K55, K65, K75, K85, \ + K06, K16, K26, K36, K46, K56, K66, K76 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06 }, \ + { K10, K11, K12, K13, K14, K15, K16 }, \ + { K20, K21, K22, K23, K24, K25, K26 }, \ + { K30, K31, K32, K33, K34, K35, K36 }, \ + { K40, K41, K42, K43, K44, K45, K46 }, \ + { K50, K51, K52, K53, K54, K55, K56 }, \ + { K60, K61, K62, K63, K64, K65, K66 }, \ + { K70, K71, K72, K73, K74, K75, K76 }, \ + { K80, K81, K82, K83, K84, K85, K86 } \ +} + +#else + +/* Infinity production */ +#define KEYMAP( \ + K00, K10, K20, K30, K40, K50, K60, K70, K80, K01, K11, K21, K31, K41, K51, \ + K61, K71, K81, K02, K12, K22, K32, K42, K52, K62, K72, K82, K03, K13, \ + K23, K33, K43, K53, K63, K73, K83, K04, K14, K24, K34, K44, K54, \ + K64, K74, K84, K05, K15, K25, K35, K45, K55, K65, K75, K85, K06, \ + K16, K26, K36, K46, K56, K66, K76, K86 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06 }, \ + { K10, K11, K12, K13, K14, K15, K16 }, \ + { K20, K21, K22, K23, K24, K25, K26 }, \ + { K30, K31, K32, K33, K34, K35, K36 }, \ + { K40, K41, K42, K43, K44, K45, K46 }, \ + { K50, K51, K52, K53, K54, K55, K56 }, \ + { K60, K61, K62, K63, K64, K65, K66 }, \ + { K70, K71, K72, K73, K74, K75, K76 }, \ + { K80, K81, K82, K83, K84, K85, K86 } \ +} + +#endif + +#endif diff --git a/keyboards/infinity60/keymaps/default/keymap.c b/keyboards/infinity60/keymaps/default/keymap.c new file mode 100644 index 0000000000..4434128579 --- /dev/null +++ b/keyboards/infinity60/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +#include "infinity60.h" + +const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| + * |-----------------------------------------------------------' + * | |Gui|Alt | Space |Alt |Gui| | | + * `-----------------------------------------------------------' + */ + [0] = KEYMAP( + KC_ESC, 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_BSLS, KC_GRV, \ + 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_BSPC, \ + KC_LCTL,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,MO(1), \ + KC_NO, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_NO, KC_NO), + + /* Layer 1: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| + * |-----------------------------------------------------------| + * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | + * `-----------------------------------------------------------' + * | |Gui|Alt | Space |Alt |Gui| | | + * `-----------------------------------------------------------' + */ + [1] = KEYMAP( + KC_PWR, 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_INS, KC_DEL, \ + KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ + KC_TRNS,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT,KC_PENT, \ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END, KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), +}; + +const uint16_t fn_actions[] = { + +}; + diff --git a/keyboards/infinity60/keymaps/depariel/keymap.c b/keyboards/infinity60/keymaps/depariel/keymap.c new file mode 100755 index 0000000000..7412b9b9dd --- /dev/null +++ b/keyboards/infinity60/keymaps/depariel/keymap.c @@ -0,0 +1,82 @@ +#include "infinity60.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Bksp| + * |-----------------------------------------------------------| + * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn2| + * |-----------------------------------------------------------' + * |Fn2 |Gui |Alt | Space |RAlt|Prv|PlPs|Next| + * `-----------------------------------------------------------' + */ + [0] = KEYMAP( + KC_ESC, 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_BSLS, KC_GRV, \ + 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_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, LT(5, KC_ENT), \ + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, MO(4), \ + MO(4), KC_LGUI, KC_LALT, LT(3, KC_SPC), KC_RALT, KC_MPRV, KC_MPLY, KC_MNXT), + + /* Layer 1: "Toggle" off SpaceFn for League of Legends + */ + [1] = KEYMAP( + KC_ESC, 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_BSLS, KC_GRV, \ + 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_BSPC, \ + KC_LCTL, 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, MO(4), \ + MO(4), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MPRV, KC_MPLY, KC_MNXT), + + /* Layer 2: "Toggle" off SpaceFn for MapleRoyals + */ + [2] = KEYMAP( + KC_ESC, 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_BSLS, KC_GRV, \ + 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_BSPC, \ + KC_LCTL, 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_UP, KC_LSFT, \ + MO(4), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + + /* Layer 3: FN layer 1 + */ + [3] = KEYMAP( + KC_NO, 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_NO, KC_NO, \ + KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, LALT(KC_F4), KC_HOME, KC_PGUP, KC_PSCR, KC_SLCK, KC_UP, KC_NO, KC_LPRN, KC_RPRN, KC_DEL, \ + MO(6), KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_END, KC_PGDN, KC_TILD, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, \ + LGUI(KC_SPC), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_CALC, KC_MENU, KC_TRNS, TG(4), \ + KC_TRNS, KC_TRNS, KC_TRNS, LT(3, KC_SPC), KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU), + + /* Layer 4: FN layer 2 + */ + [4] = KEYMAP( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_PSLS, TG(2), \ + KC_CAPS, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_NO, KC_P7, KC_P8, KC_P9, KC_PAST, KC_BSPC, \ + KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PENT, \ + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_RSFT, MO(4), \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_NO, TG(1)), + + /* Layer 5: FN layer 3 + */ + [5] = KEYMAP( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TAB , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F13, KC_F14, KC_F15, KC_F16, KC_NO, KC_TRNS, \ + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F17, KC_F18, KC_F19, KC_F20, LT(5, KC_ENT), \ + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_NO, KC_NO, KC_NO), + + /* Layer 6: FN layer 4 + */ + [6] = KEYMAP( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + LCTL(LSFT(KC_TAB)), KC_NO, LGUI(KC_UP), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + MO(6), LGUI(KC_LEFT), LGUI(KC_DOWN), LGUI(KC_RGHT), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + diff --git a/keyboards/infinity60/keymaps/hasu/keymap.c b/keyboards/infinity60/keymaps/hasu/keymap.c new file mode 100644 index 0000000000..d3728869ab --- /dev/null +++ b/keyboards/infinity60/keymaps/hasu/keymap.c @@ -0,0 +1,113 @@ +#include "infinity60.h" + +const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| + * |-----------------------------------------------------------' + * | |Gui|Alt | Space |Alt |Gui| | | + * `-----------------------------------------------------------' + */ + [0] = KEYMAP( + KC_ESC, 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_BSLS,KC_GRV, \ + 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_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(3, KC_SCLN), KC_QUOT,MT(KC_RCTL, KC_ENT), \ + OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, LT(2, KC_SLSH), KC_RSFT,TG(1), \ + KC_NO, KC_LGUI,KC_LALT, LT(4, KC_SPC), MO(4), KC_RGUI,KC_NO, KC_NO), + + /* Layer 1: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| + * |-----------------------------------------------------------| + * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | + * `-----------------------------------------------------------' + * | |Gui|Alt | Space |Alt |Gui| | | + * `-----------------------------------------------------------' + */ + [1] = KEYMAP( + KC_PWR, 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_INS, KC_DEL, \ + KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP, KC_TRNS,KC_BSPC, \ + KC_LCTL,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT,KC_ENT, \ + KC_LSFT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END, KC_PGDN,KC_DOWN,KC_RSFT,KC_TRNS, \ + KC_TRNS,KC_LGUI,KC_LALT, KC_TRNS, KC_RALT,KC_RGUI,KC_TRNS,KC_TRNS), + + /* Layer 2: Vi mode[Slash] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs| + * |-----------------------------------------------------------| + * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | + * |-----------------------------------------------------------| + * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | | + * `-----------------------------------------------------------' + * |Gui|Alt | Space |Alt |Gui| + * `-------------------------------------------' + */ + [2] = KEYMAP( + KC_GRV, 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_INS, KC_DEL, \ + KC_TAB, KC_HOME,KC_PGDN,KC_UP, KC_PGUP,KC_END, KC_HOME,KC_PGDN,KC_PGUP,KC_END, KC_NO, KC_NO, KC_NO, KC_BSPC, \ + KC_LCTL,KC_NO, KC_LEFT,KC_DOWN,KC_RGHT,KC_NO, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,KC_NO, KC_NO, KC_ENT, \ + KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_PGDN,KC_PGUP,KC_END, LT(2, KC_SLSH), KC_RSFT,KC_TRNS, \ + KC_TRNS,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_TRNS, KC_TRNS), + + /* Layer 3: Mouse mode(IJKL)[Semicolon] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| + * |-----------------------------------------------------------| + * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | + * `-----------------------------------------------------------' + * |Gui |Alt | Mb1 |Fn |Fn | + * `--------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + [3] = KEYMAP( + KC_GRV, 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_INS, KC_DEL, \ + LALT(KC_TAB), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L,KC_WH_D,KC_MS_U, KC_WH_U, KC_WH_R, ALT_T(KC_LEFT), ALT_T(KC_RGHT),LALT(KC_TAB), \ + KC_LCTL, KC_ACL0,KC_ACL1,KC_ACL2,KC_ACL2,KC_NO, KC_NO, KC_MS_L,KC_MS_D, KC_MS_R, LT(3, KC_SCLN), KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN3,KC_BTN2,KC_BTN1,ALT_T(KC_LEFT), ALT_T(KC_RGHT), KC_NO, KC_RSFT, KC_TRNS, \ + KC_TRNS, KC_LGUI,KC_LALT, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + /* Layer 4: Mouse mode(IJKL)[Space] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| + * |-----------------------------------------------------------| + * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | + * `-----------------------------------------------------------' + * |Gui |Alt | Mb1 |Fn |Fn | + * `--------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + [4] = KEYMAP( + KC_GRV, 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_INS, KC_DEL, \ + LALT(KC_TAB), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L,KC_WH_D,KC_MS_U, KC_WH_U, KC_WH_R,KC_BTN4,KC_BTN5,LALT(KC_TAB), \ + KC_LCTL, KC_VOLD,KC_VOLU,KC_MUTE,KC_NO, KC_NO, KC_NO, KC_MS_L,KC_MS_D, KC_MS_R, KC_BTN1,KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN3,KC_BTN2,KC_BTN1,ALT_T(KC_LEFT),ALT_T(KC_RGHT),KC_NO, KC_RSFT,KC_TRNS, \ + KC_TRNS, KC_LGUI,KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), + +}; + +/* + * Fn action definition + */ +const uint16_t fn_actions[] = { + +}; diff --git a/keyboards/infinity60/led.c b/keyboards/infinity60/led.c new file mode 100644 index 0000000000..aed66c7c03 --- /dev/null +++ b/keyboards/infinity60/led.c @@ -0,0 +1,24 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#include "hal.h" + +#include "led.h" + + +void led_set(uint8_t usb_led) { +} diff --git a/keyboards/infinity60/matrix.c b/keyboards/infinity60/matrix.c new file mode 100644 index 0000000000..62c165aa53 --- /dev/null +++ b/keyboards/infinity60/matrix.c @@ -0,0 +1,171 @@ +#include +#include +#include +#include "hal.h" +#include "timer.h" +#include "wait.h" +#include "print.h" +#include "matrix.h" + + +/* + * Infinity Pinusage: + * Column pins are input with internal pull-down. Row pins are output and strobe with high. + * Key is high or 1 when it turns on. + * INFINITY PRODUCTION (NO LED) + * col: { PTD1, PTD2, PTD3, PTD4, PTD5, PTD6, PTD7 } + * row: { PTB0, PTB1, PTB2, PTB3, PTB16, PTB17, PTC4, PTC5, PTD0 } + * INFINITY PRODUCTION (WITH LED) + * col: { PTD1, PTD2, PTD3, PTD4, PTD5, PTD6, PTD7 } + * row: { PTC0, PTC1, PTC2, PTC3, PTC4, PTC5, PTC6, PTC7, PTD0 } + */ +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; +static bool debouncing = false; +static uint16_t debouncing_time = 0; + + +void matrix_init(void) +{ + /* Column(sense) */ + palSetPadMode(GPIOD, 1, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOD, 2, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOD, 3, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOD, 4, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOD, 5, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOD, 6, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOD, 7, PAL_MODE_INPUT_PULLDOWN); + +#ifdef INFINITY_LED + /* Row(strobe) */ + palSetPadMode(GPIOC, 0, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 1, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 2, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 4, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 5, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 6, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 7, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOD, 0, PAL_MODE_OUTPUT_PUSHPULL); +#else + /* Row(strobe) */ + palSetPadMode(GPIOB, 0, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 1, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 2, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 3, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 17, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 4, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 5, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOD, 0, PAL_MODE_OUTPUT_PUSHPULL); +#endif + memset(matrix, 0, MATRIX_ROWS); + memset(matrix_debouncing, 0, MATRIX_ROWS); +} + +uint8_t matrix_scan(void) +{ + for (int row = 0; row < MATRIX_ROWS; row++) { + matrix_row_t data = 0; + #ifdef INFINITY_LED + // strobe row + switch (row) { + case 0: palSetPad(GPIOC, 0); break; + case 1: palSetPad(GPIOC, 1); break; + case 2: palSetPad(GPIOC, 2); break; + case 3: palSetPad(GPIOC, 3); break; + case 4: palSetPad(GPIOC, 4); break; + case 5: palSetPad(GPIOC, 5); break; + case 6: palSetPad(GPIOC, 6); break; + case 7: palSetPad(GPIOC, 7); break; + case 8: palSetPad(GPIOD, 0); break; + } + #else + // strobe row + switch (row) { + case 0: palSetPad(GPIOB, 0); break; + case 1: palSetPad(GPIOB, 1); break; + case 2: palSetPad(GPIOB, 2); break; + case 3: palSetPad(GPIOB, 3); break; + case 4: palSetPad(GPIOB, 16); break; + case 5: palSetPad(GPIOB, 17); break; + case 6: palSetPad(GPIOC, 4); break; + case 7: palSetPad(GPIOC, 5); break; + case 8: palSetPad(GPIOD, 0); break; + } + #endif + + wait_us(1); // need wait to settle pin state + + // read col data + data = (palReadPort(GPIOD)>>1); + #ifdef INFINITY_LED + // un-strobe row + switch (row) { + case 0: palClearPad(GPIOC, 0); break; + case 1: palClearPad(GPIOC, 1); break; + case 2: palClearPad(GPIOC, 2); break; + case 3: palClearPad(GPIOC, 3); break; + case 4: palClearPad(GPIOC, 4); break; + case 5: palClearPad(GPIOC, 5); break; + case 6: palClearPad(GPIOC, 6); break; + case 7: palClearPad(GPIOC, 7); break; + case 8: palClearPad(GPIOD, 0); break; + } + #else + // un-strobe row + switch (row) { + case 0: palClearPad(GPIOB, 0); break; + case 1: palClearPad(GPIOB, 1); break; + case 2: palClearPad(GPIOB, 2); break; + case 3: palClearPad(GPIOB, 3); break; + case 4: palClearPad(GPIOB, 16); break; + case 5: palClearPad(GPIOB, 17); break; + case 6: palClearPad(GPIOC, 4); break; + case 7: palClearPad(GPIOC, 5); break; + case 8: palClearPad(GPIOD, 0); break; + } + #endif + + if (matrix_debouncing[row] != data) { + matrix_debouncing[row] = data; + debouncing = true; + debouncing_time = timer_read(); + } + } + + if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { + for (int row = 0; row < MATRIX_ROWS; row++) { + matrix[row] = matrix_debouncing[row]; + } + debouncing = false; + } + return 1; +} + +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & (1</os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +# - For Teensies, FAMILY = KINETIS and SERIES is either +# KL2x (LC) or K20x (3.0,3.1,3.2). +# - For Infinity KB, SERIES = K20x +MCU_FAMILY = KINETIS +MCU_SERIES = K20x + +# Linker script to use +# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +# - NOTE: a custom ld script is needed for EEPROM on Teensy LC +# - LDSCRIPT = +# - MKL26Z64 for Teensy LC +# - MK20DX128 for Teensy 3.0 +# - MK20DX256 for Teensy 3.1 and 3.2 +# - MK20DX128BLDR4 for Infinity with Kiibohd bootloader +MCU_LDSCRIPT = MK20DX128BLDR4 + +# Startup code to use +# - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ +# - STARTUP = +# - kl2x for Teensy LC +# - k20x5 for Teensy 3.0 and Infinity KB +# - k20x7 for Teensy 3.1 and 3.2 +MCU_STARTUP = k20x5 + +# Board: it should exist either in /os/hal/boards/ +# or /boards +# - BOARD = +# - PJRC_TEENSY_LC for Teensy LC +# - PJRC_TEENSY_3 for Teensy 3.0 +# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 +# - MCHCK_K20 for Infinity KB +BOARD = MCHCK_K20 + +# Cortex version +# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 +MCU = cortex-m4 + +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +# I.e. 6 for Teensy LC; 7 for Teensy 3.x +ARMV = 7 + +# Vector table for application +# 0x00000000-0x00001000 area is occupied by bootlaoder.*/ +# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB +OPT_DEFS = -DCORTEX_VTOR_INIT=0x00001000 + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration +## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.) +MOUSEKEY_ENABLE ?= yes # Mouse keys +EXTRAKEY_ENABLE ?= yes # Audio control and System control +CONSOLE_ENABLE ?= yes # Console for debug +COMMAND_ENABLE ?= yes # Commands for debug and configuration +SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover +CUSTOM_MATRIX ?= yes # Custom matrix file \ No newline at end of file diff --git a/keyboards/infinity_chibios/MEMO.txt b/keyboards/infinity_chibios/MEMO.txt deleted file mode 100644 index e2886aa002..0000000000 --- a/keyboards/infinity_chibios/MEMO.txt +++ /dev/null @@ -1,385 +0,0 @@ -flabbergast's TMK/ChibiOS port -============================== -2015/10/16 - - -Build ------ -$ git clone -b chibios https://github.com/flabbergast/tmk_keyboard.git - -$ cd tmk_keyboard -$ git submodule add -f -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios -or -$ cd tmk_keyboard/tmk_core/tool/chibios -$ git clone -b kinetis https://github.com/flabbergast/ChibiOS.git tmk_core/tool/chibios/chibios - -$ cd tmk_keyboard/keyboard/infinity_chibios -$ make - - - - -Chibios Configuration ---------------------- -halconf.h: for HAL configuration - placed in project directory - read in chibios/os/hal/hal.mk - included in chibios/os/hal/include/hal.h -mcuconf.h: for MCU configuration - placed in project directory - included in halconf.h - - -Chibios Term ------------- -PAL = Port Abstraction Layer - palWritePad - palReadPad - palSetPad - chibios/os/hal/include/pal.h - -LLD = Low Level Driver - - -Makefile --------- - # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) - MCU_FAMILY = KINETIS - MCU_SERIES = KL2x - - # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ - # or /ld/ - MCU_LDSCRIPT = MKL26Z64 - - # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP = kl2x - - # Board: it should exist either in /os/hal/boards/ - # or /boards - BOARD = PJRC_TEENSY_LC - - MCU = cortex-m0 - - # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 - ARMV = 6 - - -halconf.h ---------- - - -mcuconf.h ---------- - - -chconf.h --------- - - -ld script ---------- ---- ../../tmk_core/tool/chibios/chibios/os/common/ports/ARMCMx/compilers/GCC/ld/MKL26Z64.ld 2015-10-15 09:08:58.732904304 +0900 -+++ ld/MKL26Z64.ld 2015-10-15 08:48:06.430215496 +0900 -@@ -27,7 +27,8 @@ - { - flash0 : org = 0x00000000, len = 0xc0 - flashcfg : org = 0x00000400, len = 0x10 -- flash : org = 0x00000410, len = 64k - 0x410 -+ flash : org = 0x00000410, len = 62k - 0x410 -+ eeprom_emu : org = 0x0000F800, len = 2k - ram : org = 0x1FFFF800, len = 8k - } - -@@ -35,6 +36,10 @@ - __ram_size__ = LENGTH(ram); - __ram_end__ = __ram_start__ + __ram_size__; - -+__eeprom_workarea_start__ = ORIGIN(eeprom_emu); -+__eeprom_workarea_size__ = LENGTH(eeprom_emu); -+__eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__; -+ - SECTIONS - { - . = 0; - - - -Configuration/Startup for Infinity 60% --------------------------------------- -Configuration: - - -Clock: -Inifinity - FEI(FLL Engaged Internal) mode with core clock:48MHz, bus clock:48MHz, flash clock:24MHz - Clock dividor: - SIM_CLKDIV1[OUTDIV1] = 0 divide-by-1 for core clock - SIM_CLKDIV1[OUTDIV2] = 0 divide-by-1 for bus clock - SIM_CLKDIV1[OUTDIV4] = 1 divide-by-2 for flash clock - Internal reference clock: - MCG_C1[IREFS] = 1 Internal Reference Select for clock source for FLL - MCG_C1[IRCLKEN] = 1 Internal Reference Clock Enable - FLL multipilication: - MCG_C4[DMX32] = 1 - MCG_C4[DRST_DRS] = 01 FLL factor 1464 * 32.768kHz = 48MHz - -chibios/os/hal/ports/KINETIS/K20x/hal_lld.c - k20x_clock_init(): called in __early_init() defined in board.c - disable watchdog and configure clock - - configurable macros: - KINETIS_NO_INIT: whether init or not - KINETIS_MCG_MODE: clock mode - KINETIS_MCG_MODE_FEI - KINETIS_MCG_MODE_PEE - hal/ports/KINETIS/K20x/hal_lld.h - - -chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.h - PALConfig pal_default_config - boardInit() - __early_init() - macro definitions for board infos, freq and mcu type - -chibios/os/hal/boards/FREESCALE_FREEDOM_K20D50M/board.c - -USB - - -Startup -------- - common/ports/ARMCMx/GCC/crt0_v[67]m.s - Reset_Handler: startup code - common/ports/ARMCMx/GCC/crt1.c - __core_init(): weak - __early_init(): weak - __late_init(): weak - __default_exit(): weak - called from Reset_Handler of crt0 - common/ports/ARMCMx/GCC/vector.c - common/ports/ARMCMx/GCC/ld/*.ld - -chibios/os/common/ports/ARMCMx/compilers/GCC/ -├── crt0_v6m.s -├── crt0_v7m.s -├── crt1.c -├── ld -│   ├── MK20DX128BLDR3.ld -│   ├── MK20DX128BLDR4.ld -│   ├── MK20DX128.ld -│   ├── MK20DX256.ld -│   ├── MKL25Z128.ld -│   ├── MKL26Z128.ld -│   ├── MKL26Z64.ld -│   └── STM32L476xG.ld -├── mk -│   ├── startup_k20x5.mk -│   ├── startup_k20x7.mk -│   ├── startup_k20x.mk -│   ├── startup_kl2x.mk -│   └── startup_stm32l4xx.mk -├── rules.ld -├── rules.mk -└── vectors.c - -chibios/os/hal/ -├── boards -│   ├── FREESCALE_FREEDOM_K20D50M -│   │   ├── board.c -│   │   ├── board.h -│   │   └── board.mk -│   ├── MCHCK_K20 -│   │   ├── board.c -│   │   ├── board.h -│   │   └── board.mk -│   ├── PJRC_TEENSY_3 -│   │   ├── board.c -│   │   ├── board.h -│   │   └── board.mk -│   ├── PJRC_TEENSY_3_1 -│   │   ├── board.c -│   │   ├── board.h -│   │   └── board.mk -│   ├── PJRC_TEENSY_LC -│   │   ├── board.c -│   │   ├── board.h -│   │   └── board.mk -│   ├── readme.txt -│   ├── simulator -│   │   ├── board.c -│   │   ├── board.h -│   │   └── board.mk -│   ├── ST_NUCLEO_F030R8 -│   │   ├── board.c -│   │   ├── board.h -│   │   ├── board.mk -│   │   └── cfg -│   │   └── board.chcfg -├── hal.mk -├── include -│   ├── adc.h -│   ├── can.h -│   ├── dac.h -│   ├── ext.h -│   ├── gpt.h -│   ├── hal_channels.h -│   ├── hal_files.h -│   ├── hal.h -│   ├── hal_ioblock.h -│   ├── hal_mmcsd.h -│   ├── hal_queues.h -│   ├── hal_streams.h -│   ├── i2c.h -│   ├── i2s.h -│   ├── icu.h -│   ├── mac.h -│   ├── mii.h -│   ├── mmc_spi.h -│   ├── pal.h -│   ├── pwm.h -│   ├── rtc.h -│   ├── sdc.h -│   ├── serial.h -│   ├── serial_usb.h -│   ├── spi.h -│   ├── st.h -│   ├── uart.h -│   └── usb.h -├── lib -│   └── streams -│   ├── chprintf.c -│   ├── chprintf.h -│   ├── memstreams.c -│   ├── memstreams.h -│   ├── nullstreams.c -│   └── nullstreams.h -├── osal -│   ├── nil -│   │   ├── osal.c -│   │   ├── osal.h -│   │   └── osal.mk -│   ├── os-less -│   │   └── ARMCMx -│   │   ├── osal.c -│   │   ├── osal.h -│   │   └── osal.mk -│   └── rt -│   ├── osal.c -│   ├── osal.h -│   └── osal.mk -├── ports -│   ├── AVR -│   ├── common -│   │   └── ARMCMx -│   │   ├── mpu.h -│   │   ├── nvic.c -│   │   └── nvic.h -│   ├── KINETIS -│   │   ├── K20x -│   │   │   ├── hal_lld.c -│   │   │   ├── hal_lld.h -│   │   │   ├── kinetis_registry.h -│   │   │   ├── platform.dox -│   │   │   ├── platform.mk -│   │   │   ├── pwm_lld.c -│   │   │   ├── pwm_lld.h -│   │   │   ├── spi_lld.c -│   │   │   └── spi_lld.h -│   │   ├── KL2x -│   │   │   ├── hal_lld.c -│   │   │   ├── hal_lld.h -│   │   │   ├── kinetis_registry.h -│   │   │   ├── platform.mk -│   │   │   ├── pwm_lld.c -│   │   │   └── pwm_lld.h -│   │   ├── LLD -│   │   │   ├── adc_lld.c -│   │   │   ├── adc_lld.h -│   │   │   ├── ext_lld.c -│   │   │   ├── ext_lld.h -│   │   │   ├── gpt_lld.c -│   │   │   ├── gpt_lld.h -│   │   │   ├── i2c_lld.c -│   │   │   ├── i2c_lld.h -│   │   │   ├── pal_lld.c -│   │   │   ├── pal_lld.h -│   │   │   ├── serial_lld.c -│   │   │   ├── serial_lld.h -│   │   │   ├── st_lld.c -│   │   │   ├── st_lld.h -│   │   │   ├── usb_lld.c -│   │   │   └── usb_lld.h -│   │   └── README.md -│   ├── LPC -│   ├── simulator -│   └── STM32 -├── src -│   ├── adc.c -│   ├── can.c -│   ├── dac.c -│   ├── ext.c -│   ├── gpt.c -│   ├── hal.c -│   ├── hal_mmcsd.c -│   ├── hal_queues.c -│   ├── i2c.c -│   ├── i2s.c -│   ├── icu.c -│   ├── mac.c -│   ├── mmc_spi.c -│   ├── pal.c -│   ├── pwm.c -│   ├── rtc.c -│   ├── sdc.c -│   ├── serial.c -│   ├── serial_usb.c -│   ├── spi.c -│   ├── st.c -│   ├── uart.c -│   └── usb.c -└── templates - ├── adc_lld.c - ├── adc_lld.h - ├── can_lld.c - ├── can_lld.h - ├── dac_lld.c - ├── dac_lld.h - ├── ext_lld.c - ├── ext_lld.h - ├── gpt_lld.c - ├── gpt_lld.h - ├── halconf.h - ├── hal_lld.c - ├── hal_lld.h - ├── i2c_lld.c - ├── i2c_lld.h - ├── i2s_lld.c - ├── i2s_lld.h - ├── icu_lld.c - ├── icu_lld.h - ├── mac_lld.c - ├── mac_lld.h - ├── mcuconf.h - ├── osal - │   ├── osal.c - │   ├── osal.h - │   └── osal.mk - ├── pal_lld.c - ├── pal_lld.h - ├── platform.mk - ├── pwm_lld.c - ├── pwm_lld.h - ├── rtc_lld.c - ├── rtc_lld.h - ├── sdc_lld.c - ├── sdc_lld.h - ├── serial_lld.c - ├── serial_lld.h - ├── spi_lld.c - ├── spi_lld.h - ├── st_lld.c - ├── st_lld.h - ├── uart_lld.c - ├── uart_lld.h - ├── usb_lld.c - └── usb_lld.h diff --git a/keyboards/infinity_chibios/Makefile b/keyboards/infinity_chibios/Makefile deleted file mode 100644 index 4e2a6f00fd..0000000000 --- a/keyboards/infinity_chibios/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -ifndef MAKEFILE_INCLUDED - include ../../Makefile -endif \ No newline at end of file diff --git a/keyboards/infinity_chibios/bootloader_defs.h b/keyboards/infinity_chibios/bootloader_defs.h deleted file mode 100644 index c67153be60..0000000000 --- a/keyboards/infinity_chibios/bootloader_defs.h +++ /dev/null @@ -1 +0,0 @@ -#define KIIBOHD_BOOTLOADER diff --git a/keyboards/infinity_chibios/chconf.h b/keyboards/infinity_chibios/chconf.h deleted file mode 100644 index 43c845739a..0000000000 --- a/keyboards/infinity_chibios/chconf.h +++ /dev/null @@ -1,524 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file templates/chconf.h - * @brief Configuration file template. - * @details A copy of this file must be placed in each project directory, it - * contains the application specific kernel settings. - * - * @addtogroup config - * @details Kernel related settings and hooks. - * @{ - */ - -#ifndef CHCONF_H -#define CHCONF_H - -#define _CHIBIOS_RT_CONF_ - -/*===========================================================================*/ -/** - * @name System timers settings - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System time counter resolution. - * @note Allowed values are 16 or 32 bits. - */ -#define CH_CFG_ST_RESOLUTION 32 - -/** - * @brief System tick frequency. - * @details Frequency of the system timer that drives the system ticks. This - * setting also defines the system tick time unit. - */ -#define CH_CFG_ST_FREQUENCY 1000 - -/** - * @brief Time delta constant for the tick-less mode. - * @note If this value is zero then the system uses the classic - * periodic tick. This value represents the minimum number - * of ticks that is safe to specify in a timeout directive. - * The value one is not valid, timeouts are rounded up to - * this value. - */ -#define CH_CFG_ST_TIMEDELTA 0 - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel parameters and options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Round robin interval. - * @details This constant is the number of system ticks allowed for the - * threads before preemption occurs. Setting this value to zero - * disables the preemption for threads with equal priority and the - * round robin becomes cooperative. Note that higher priority - * threads can still preempt, the kernel is always preemptive. - * @note Disabling the round robin preemption makes the kernel more compact - * and generally faster. - * @note The round robin preemption is not supported in tickless mode and - * must be set to zero in that case. - */ -#define CH_CFG_TIME_QUANTUM 20 - -/** - * @brief Managed RAM size. - * @details Size of the RAM area to be managed by the OS. If set to zero - * then the whole available RAM is used. The core memory is made - * available to the heap allocator and/or can be used directly through - * the simplified core memory allocator. - * - * @note In order to let the OS manage the whole RAM the linker script must - * provide the @p __heap_base__ and @p __heap_end__ symbols. - * @note Requires @p CH_CFG_USE_MEMCORE. - */ -#define CH_CFG_MEMCORE_SIZE 0 - -/** - * @brief Idle thread automatic spawn suppression. - * @details When this option is activated the function @p chSysInit() - * does not spawn the idle thread. The application @p main() - * function becomes the idle thread and must implement an - * infinite loop. - */ -#define CH_CFG_NO_IDLE_THREAD FALSE - -/* Use __WFI in the idle thread for waiting. Does lower the power - * consumption. */ -#define CORTEX_ENABLE_WFI_IDLE TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Performance options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief OS optimization. - * @details If enabled then time efficient rather than space efficient code - * is used when two possible implementations exist. - * - * @note This is not related to the compiler optimization options. - * @note The default is @p TRUE. - */ -#define CH_CFG_OPTIMIZE_SPEED TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Subsystem options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Time Measurement APIs. - * @details If enabled then the time measurement APIs are included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_TM FALSE - -/** - * @brief Threads registry APIs. - * @details If enabled then the registry APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_REGISTRY TRUE - -/** - * @brief Threads synchronization APIs. - * @details If enabled then the @p chThdWait() function is included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_WAITEXIT TRUE - -/** - * @brief Semaphores APIs. - * @details If enabled then the Semaphores APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_SEMAPHORES TRUE - -/** - * @brief Semaphores queuing mode. - * @details If enabled then the threads are enqueued on semaphores by - * priority rather than in FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE - -/** - * @brief Mutexes APIs. - * @details If enabled then the mutexes APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MUTEXES TRUE - -/** - * @brief Enables recursive behavior on mutexes. - * @note Recursive mutexes are heavier and have an increased - * memory footprint. - * - * @note The default is @p FALSE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE - -/** - * @brief Conditional Variables APIs. - * @details If enabled then the conditional variables APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#define CH_CFG_USE_CONDVARS TRUE - -/** - * @brief Conditional Variables APIs with timeout. - * @details If enabled then the conditional variables APIs with timeout - * specification are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_CONDVARS. - */ -#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE - -/** - * @brief Events Flags APIs. - * @details If enabled then the event flags APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_EVENTS TRUE - -/** - * @brief Events Flags APIs with timeout. - * @details If enabled then the events APIs with timeout specification - * are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_EVENTS. - */ -#define CH_CFG_USE_EVENTS_TIMEOUT TRUE - -/** - * @brief Synchronous Messages APIs. - * @details If enabled then the synchronous messages APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MESSAGES TRUE - -/** - * @brief Synchronous Messages queuing mode. - * @details If enabled then messages are served by priority rather than in - * FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_MESSAGES. - */ -#define CH_CFG_USE_MESSAGES_PRIORITY FALSE - -/** - * @brief Mailboxes APIs. - * @details If enabled then the asynchronous messages (mailboxes) APIs are - * included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#define CH_CFG_USE_MAILBOXES TRUE - -/** - * @brief Core Memory Manager APIs. - * @details If enabled then the core memory manager APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MEMCORE TRUE - -/** - * @brief Heap Allocator APIs. - * @details If enabled then the memory heap allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or - * @p CH_CFG_USE_SEMAPHORES. - * @note Mutexes are recommended. - */ -#define CH_CFG_USE_HEAP TRUE - -/** - * @brief Memory Pools Allocator APIs. - * @details If enabled then the memory pools allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MEMPOOLS TRUE - -/** - * @brief Dynamic Threads APIs. - * @details If enabled then the dynamic threads creation APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_WAITEXIT. - * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. - */ -#define CH_CFG_USE_DYNAMIC TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Debug options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Debug option, kernel statistics. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_STATISTICS FALSE - -/** - * @brief Debug option, system state check. - * @details If enabled the correct call protocol for system APIs is checked - * at runtime. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_SYSTEM_STATE_CHECK FALSE - -/** - * @brief Debug option, parameters checks. - * @details If enabled then the checks on the API functions input - * parameters are activated. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_CHECKS FALSE - -/** - * @brief Debug option, consistency checks. - * @details If enabled then all the assertions in the kernel code are - * activated. This includes consistency checks inside the kernel, - * runtime anomalies and port-defined checks. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_ASSERTS FALSE - -/** - * @brief Debug option, trace buffer. - * @details If enabled then the trace buffer is activated. - * - * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. - */ -#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED - -/** - * @brief Trace buffer entries. - * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is - * different from @p CH_DBG_TRACE_MASK_DISABLED. - */ -#define CH_DBG_TRACE_BUFFER_SIZE 128 - -/** - * @brief Debug option, stack checks. - * @details If enabled then a runtime stack check is performed. - * - * @note The default is @p FALSE. - * @note The stack check is performed in a architecture/port dependent way. - * It may not be implemented or some ports. - * @note The default failure mode is to halt the system with the global - * @p panic_msg variable set to @p NULL. - */ -#define CH_DBG_ENABLE_STACK_CHECK FALSE - -/** - * @brief Debug option, stacks initialization. - * @details If enabled then the threads working area is filled with a byte - * value when a thread is created. This can be useful for the - * runtime measurement of the used stack. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_FILL_THREADS FALSE - -/** - * @brief Debug option, threads profiling. - * @details If enabled then a field is added to the @p thread_t structure that - * counts the system ticks occurred while executing the thread. - * - * @note The default is @p FALSE. - * @note This debug option is not currently compatible with the - * tickless mode. - */ -#define CH_DBG_THREADS_PROFILING FALSE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel hooks - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Threads descriptor structure extension. - * @details User fields added to the end of the @p thread_t structure. - */ -#define CH_CFG_THREAD_EXTRA_FIELDS \ - /* Add threads custom fields here.*/ - -/** - * @brief Threads initialization hook. - * @details User initialization code added to the @p chThdInit() API. - * - * @note It is invoked from within @p chThdInit() and implicitly from all - * the threads creation APIs. - */ -#define CH_CFG_THREAD_INIT_HOOK(tp) { \ - /* Add threads initialization code here.*/ \ -} - -/** - * @brief Threads finalization hook. - * @details User finalization code added to the @p chThdExit() API. - */ -#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ - /* Add threads finalization code here.*/ \ -} - -/** - * @brief Context switch hook. - * @details This hook is invoked just before switching between threads. - */ -#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ - /* Context switch code here.*/ \ -} - -/** - * @brief ISR enter hook. - */ -#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ - /* IRQ prologue code here.*/ \ -} - -/** - * @brief ISR exit hook. - */ -#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ - /* IRQ epilogue code here.*/ \ -} - -/** - * @brief Idle thread enter hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to activate a power saving mode. - */ -#define CH_CFG_IDLE_ENTER_HOOK() { \ - /* Idle-enter code here.*/ \ -} - -/** - * @brief Idle thread leave hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to deactivate a power saving mode. - */ -#define CH_CFG_IDLE_LEAVE_HOOK() { \ - /* Idle-leave code here.*/ \ -} - -/** - * @brief Idle Loop hook. - * @details This hook is continuously invoked by the idle thread loop. - */ -#define CH_CFG_IDLE_LOOP_HOOK() { \ - /* Idle loop code here.*/ \ -} - -/** - * @brief System tick event hook. - * @details This hook is invoked in the system tick handler immediately - * after processing the virtual timers queue. - */ -#define CH_CFG_SYSTEM_TICK_HOOK() { \ - /* System tick event code here.*/ \ -} - -/** - * @brief System halt hook. - * @details This hook is invoked in case to a system halting error before - * the system is halted. - */ -#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ - /* System halt code here.*/ \ -} - -/** - * @brief Trace hook. - * @details This hook is invoked each time a new record is written in the - * trace buffer. - */ -#define CH_CFG_TRACE_HOOK(tep) { \ - /* Trace code here.*/ \ -} - -/** @} */ - -/*===========================================================================*/ -/* Port-specific settings (override port settings defaulted in chcore.h). */ -/*===========================================================================*/ - -#endif /* CHCONF_H */ - -/** @} */ diff --git a/keyboards/infinity_chibios/config.h b/keyboards/infinity_chibios/config.h deleted file mode 100644 index 452cc2a9fb..0000000000 --- a/keyboards/infinity_chibios/config.h +++ /dev/null @@ -1,78 +0,0 @@ -/* -Copyright 2015 Jun Wako - -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#define PREVENT_STUCK_MODIFIERS - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6464 -#define DEVICE_VER 0x0001 -/* in python2: list(u"whatever".encode('utf-16-le')) */ -/* at most 32 characters or the ugly hack in usb_main.c borks */ -#define MANUFACTURER "TMK" -#define USBSTR_MANUFACTURER 'T', '\x00', 'M', '\x00', 'K', '\x00', ' ', '\x00', '\xc6', '\x00' -#define PRODUCT "Infinity keyboard/TMK" -#define USBSTR_PRODUCT 'I', '\x00', 'n', '\x00', 'f', '\x00', 'i', '\x00', 'n', '\x00', 'i', '\x00', 't', '\x00', 'y', '\x00', ' ', '\x00', 'k', '\x00', 'e', '\x00', 'y', '\x00', 'b', '\x00', 'o', '\x00', 'a', '\x00', 'r', '\x00', 'd', '\x00', '/', '\x00', 'T', '\x00', 'M', '\x00', 'K', '\x00' - -/* key matrix size */ -#define MATRIX_ROWS 9 -#define MATRIX_COLS 7 - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 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)) \ -) - -/* Keymap for Infinity prototype */ -//#define INFINITY_PROTOTYPE - -/* Keymap for Infinity 1.1a (first revision with LED support) */ -//#define INFINITY_LED - -/* - * 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/infinity_chibios/halconf.h b/keyboards/infinity_chibios/halconf.h deleted file mode 100644 index 46b37a4f46..0000000000 --- a/keyboards/infinity_chibios/halconf.h +++ /dev/null @@ -1,353 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file templates/halconf.h - * @brief HAL configuration header. - * @details HAL configuration file, this file allows to enable or disable the - * various device drivers from your application. You may also use - * this file in order to override the device drivers default settings. - * - * @addtogroup HAL_CONF - * @{ - */ - -#ifndef _HALCONF_H_ -#define _HALCONF_H_ - -#include "mcuconf.h" - -/** - * @brief Enables the PAL subsystem. - */ -#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) -#define HAL_USE_PAL TRUE -#endif - -/** - * @brief Enables the ADC subsystem. - */ -#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) -#define HAL_USE_ADC FALSE -#endif - -/** - * @brief Enables the CAN subsystem. - */ -#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) -#define HAL_USE_CAN FALSE -#endif - -/** - * @brief Enables the DAC subsystem. - */ -#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) -#define HAL_USE_DAC FALSE -#endif - -/** - * @brief Enables the EXT subsystem. - */ -#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) -#define HAL_USE_EXT FALSE -#endif - -/** - * @brief Enables the GPT subsystem. - */ -#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) -#define HAL_USE_GPT FALSE -#endif - -/** - * @brief Enables the I2C subsystem. - */ -#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) -#define HAL_USE_I2C FALSE -#endif - -/** - * @brief Enables the I2S subsystem. - */ -#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) -#define HAL_USE_I2S FALSE -#endif - -/** - * @brief Enables the ICU subsystem. - */ -#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) -#define HAL_USE_ICU FALSE -#endif - -/** - * @brief Enables the MAC subsystem. - */ -#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) -#define HAL_USE_MAC FALSE -#endif - -/** - * @brief Enables the MMC_SPI subsystem. - */ -#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) -#define HAL_USE_MMC_SPI FALSE -#endif - -/** - * @brief Enables the PWM subsystem. - */ -#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) -#define HAL_USE_PWM FALSE -#endif - -/** - * @brief Enables the RTC subsystem. - */ -#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) -#define HAL_USE_RTC FALSE -#endif - -/** - * @brief Enables the SDC subsystem. - */ -#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) -#define HAL_USE_SDC FALSE -#endif - -/** - * @brief Enables the SERIAL subsystem. - */ -#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL FALSE -#endif - -/** - * @brief Enables the SERIAL over USB subsystem. - */ -#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL_USB TRUE -#endif - -/** - * @brief Enables the SPI subsystem. - */ -#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) -#define HAL_USE_SPI FALSE -#endif - -/** - * @brief Enables the UART subsystem. - */ -#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) -#define HAL_USE_UART FALSE -#endif - -/** - * @brief Enables the USB subsystem. - */ -#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) -#define HAL_USE_USB TRUE -#endif - -/** - * @brief Enables the WDG subsystem. - */ -#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) -#define HAL_USE_WDG FALSE -#endif - -/*===========================================================================*/ -/* ADC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) -#define ADC_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define ADC_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* CAN driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Sleep mode related APIs inclusion switch. - */ -#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) -#define CAN_USE_SLEEP_MODE TRUE -#endif - -/*===========================================================================*/ -/* I2C driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the mutual exclusion APIs on the I2C bus. - */ -#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define I2C_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* MAC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables an event sources for incoming packets. - */ -#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) -#define MAC_USE_ZERO_COPY FALSE -#endif - -/** - * @brief Enables an event sources for incoming packets. - */ -#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) -#define MAC_USE_EVENTS TRUE -#endif - -/*===========================================================================*/ -/* MMC_SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - * This option is recommended also if the SPI driver does not - * use a DMA channel and heavily loads the CPU. - */ -#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) -#define MMC_NICE_WAITING TRUE -#endif - -/*===========================================================================*/ -/* SDC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Number of initialization attempts before rejecting the card. - * @note Attempts are performed at 10mS intervals. - */ -#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) -#define SDC_INIT_RETRY 100 -#endif - -/** - * @brief Include support for MMC cards. - * @note MMC support is not yet implemented so this option must be kept - * at @p FALSE. - */ -#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) -#define SDC_MMC_SUPPORT FALSE -#endif - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - */ -#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) -#define SDC_NICE_WAITING TRUE -#endif - -/*===========================================================================*/ -/* SERIAL driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Default bit rate. - * @details Configuration parameter, this is the baud rate selected for the - * default configuration. - */ -#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) -#define SERIAL_DEFAULT_BITRATE 38400 -#endif - -/** - * @brief Serial buffers size. - * @details Configuration parameter, you can change the depth of the queue - * buffers depending on the requirements of your application. - * @note The default is 64 bytes for both the transmission and receive - * buffers. - */ -#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_BUFFERS_SIZE 16 -#endif - -/*===========================================================================*/ -/* SERIAL_USB driver related setting. */ -/*===========================================================================*/ - -/** - * @brief Serial over USB buffers size. - * @details Configuration parameter, the buffer size must be a multiple of - * the USB data endpoint maximum packet size. - * @note The default is 64 bytes for both the transmission and receive - * buffers. - */ -#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_USB_BUFFERS_SIZE 256 -#endif - -/*===========================================================================*/ -/* SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) -#define SPI_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define SPI_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* USB driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) -#define USB_USE_WAIT TRUE -#endif - -#endif /* _HALCONF_H_ */ - -/** @} */ diff --git a/keyboards/infinity_chibios/infinity_chibios.c b/keyboards/infinity_chibios/infinity_chibios.c deleted file mode 100644 index 845eda01b0..0000000000 --- a/keyboards/infinity_chibios/infinity_chibios.c +++ /dev/null @@ -1,17 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -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 . -*/ -#include "infinity_chibios.h" diff --git a/keyboards/infinity_chibios/infinity_chibios.h b/keyboards/infinity_chibios/infinity_chibios.h deleted file mode 100644 index f1ba15e489..0000000000 --- a/keyboards/infinity_chibios/infinity_chibios.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -Copyright 2014 Jun Wako - -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 . -*/ -#ifndef KEYMAP_COMMON_H -#define KEYMAP_COMMON_H - -#include "quantum.h" - -#ifdef INFINITY_PROTOTYPE - -/* Infinity prototype */ -#define KEYMAP( \ - K00, K10, K20, K30, K40, K50, K60, K70, K80, K01, K11, K21, K31, K41, K86, \ - K51, K61, K71, K81, K02, K12, K22, K32, K42, K52, K62, K72, K82, K03, \ - K13, K23, K33, K43, K53, K63, K73, K83, K04, K14, K24, K34, K44, \ - K54, K64, K74, K84, K05, K15, K25, K35, K45, K55, K65, K75, K85, \ - K06, K16, K26, K36, K46, K56, K66, K76 \ -) { \ - { K00, K01, K02, K03, K04, K05, K06 }, \ - { K10, K11, K12, K13, K14, K15, K16 }, \ - { K20, K21, K22, K23, K24, K25, K26 }, \ - { K30, K31, K32, K33, K34, K35, K36 }, \ - { K40, K41, K42, K43, K44, K45, K46 }, \ - { K50, K51, K52, K53, K54, K55, K56 }, \ - { K60, K61, K62, K63, K64, K65, K66 }, \ - { K70, K71, K72, K73, K74, K75, K76 }, \ - { K80, K81, K82, K83, K84, K85, K86 } \ -} - -#else - -/* Infinity production */ -#define KEYMAP( \ - K00, K10, K20, K30, K40, K50, K60, K70, K80, K01, K11, K21, K31, K41, K51, \ - K61, K71, K81, K02, K12, K22, K32, K42, K52, K62, K72, K82, K03, K13, \ - K23, K33, K43, K53, K63, K73, K83, K04, K14, K24, K34, K44, K54, \ - K64, K74, K84, K05, K15, K25, K35, K45, K55, K65, K75, K85, K06, \ - K16, K26, K36, K46, K56, K66, K76, K86 \ -) { \ - { K00, K01, K02, K03, K04, K05, K06 }, \ - { K10, K11, K12, K13, K14, K15, K16 }, \ - { K20, K21, K22, K23, K24, K25, K26 }, \ - { K30, K31, K32, K33, K34, K35, K36 }, \ - { K40, K41, K42, K43, K44, K45, K46 }, \ - { K50, K51, K52, K53, K54, K55, K56 }, \ - { K60, K61, K62, K63, K64, K65, K66 }, \ - { K70, K71, K72, K73, K74, K75, K76 }, \ - { K80, K81, K82, K83, K84, K85, K86 } \ -} - -#endif - -#endif diff --git a/keyboards/infinity_chibios/keymaps/default/keymap.c b/keyboards/infinity_chibios/keymaps/default/keymap.c deleted file mode 100644 index 5f3b46a367..0000000000 --- a/keyboards/infinity_chibios/keymaps/default/keymap.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "infinity_chibios.h" - -const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| - * |-----------------------------------------------------------' - * | |Gui|Alt | Space |Alt |Gui| | | - * `-----------------------------------------------------------' - */ - [0] = KEYMAP( - KC_ESC, 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_BSLS, KC_GRV, \ - 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_BSPC, \ - KC_LCTL,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,MO(1), \ - KC_NO, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_NO, KC_NO), - - /* Layer 1: HHKB mode (HHKB Fn) - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| - * |-----------------------------------------------------------| - * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * | | | | | | | +| -|End|PgD|Dow| | | - * `-----------------------------------------------------------' - * | |Gui|Alt | Space |Alt |Gui| | | - * `-----------------------------------------------------------' - */ - [1] = KEYMAP( - KC_PWR, 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_INS, KC_DEL, \ - KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ - KC_TRNS,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT,KC_PENT, \ - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END, KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), -}; - -const uint16_t fn_actions[] = { - -}; - diff --git a/keyboards/infinity_chibios/keymaps/depariel/keymap.c b/keyboards/infinity_chibios/keymaps/depariel/keymap.c deleted file mode 100755 index e68891f79e..0000000000 --- a/keyboards/infinity_chibios/keymaps/depariel/keymap.c +++ /dev/null @@ -1,82 +0,0 @@ -#include "infinity_chibios.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Bksp| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn2| - * |-----------------------------------------------------------' - * |Fn2 |Gui |Alt | Space |RAlt|Prv|PlPs|Next| - * `-----------------------------------------------------------' - */ - [0] = KEYMAP( - KC_ESC, 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_BSLS, KC_GRV, \ - 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_BSPC, \ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, LT(5, KC_ENT), \ - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, MO(4), \ - MO(4), KC_LGUI, KC_LALT, LT(3, KC_SPC), KC_RALT, KC_MPRV, KC_MPLY, KC_MNXT), - - /* Layer 1: "Toggle" off SpaceFn for League of Legends - */ - [1] = KEYMAP( - KC_ESC, 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_BSLS, KC_GRV, \ - 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_BSPC, \ - KC_LCTL, 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, MO(4), \ - MO(4), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MPRV, KC_MPLY, KC_MNXT), - - /* Layer 2: "Toggle" off SpaceFn for MapleRoyals - */ - [2] = KEYMAP( - KC_ESC, 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_BSLS, KC_GRV, \ - 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_BSPC, \ - KC_LCTL, 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_UP, KC_LSFT, \ - MO(4), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), - - /* Layer 3: FN layer 1 - */ - [3] = KEYMAP( - KC_NO, 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_NO, KC_NO, \ - KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, LALT(KC_F4), KC_HOME, KC_PGUP, KC_PSCR, KC_SLCK, KC_UP, KC_NO, KC_LPRN, KC_RPRN, KC_DEL, \ - MO(6), KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_END, KC_PGDN, KC_TILD, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, \ - LGUI(KC_SPC), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_CALC, KC_MENU, KC_TRNS, TG(4), \ - KC_TRNS, KC_TRNS, KC_TRNS, LT(3, KC_SPC), KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU), - - /* Layer 4: FN layer 2 - */ - [4] = KEYMAP( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_PSLS, TG(2), \ - KC_CAPS, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_NO, KC_P7, KC_P8, KC_P9, KC_PAST, KC_BSPC, \ - KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PENT, \ - KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_RSFT, MO(4), \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_NO, TG(1)), - - /* Layer 5: FN layer 3 - */ - [5] = KEYMAP( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TAB , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F13, KC_F14, KC_F15, KC_F16, KC_NO, KC_TRNS, \ - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F17, KC_F18, KC_F19, KC_F20, LT(5, KC_ENT), \ - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_NO, KC_NO, KC_NO), - - /* Layer 6: FN layer 4 - */ - [6] = KEYMAP( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - LCTL(LSFT(KC_TAB)), KC_NO, LGUI(KC_UP), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - MO(6), LGUI(KC_LEFT), LGUI(KC_DOWN), LGUI(KC_RGHT), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO), -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - diff --git a/keyboards/infinity_chibios/keymaps/hasu/keymap.c b/keyboards/infinity_chibios/keymaps/hasu/keymap.c deleted file mode 100644 index a1954d2587..0000000000 --- a/keyboards/infinity_chibios/keymaps/hasu/keymap.c +++ /dev/null @@ -1,113 +0,0 @@ -#include "infinity_chibios.h" - -const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| - * |-----------------------------------------------------------' - * | |Gui|Alt | Space |Alt |Gui| | | - * `-----------------------------------------------------------' - */ - [0] = KEYMAP( - KC_ESC, 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_BSLS,KC_GRV, \ - 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_BSPC, \ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(3, KC_SCLN), KC_QUOT,MT(KC_RCTL, KC_ENT), \ - OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, LT(2, KC_SLSH), KC_RSFT,TG(1), \ - KC_NO, KC_LGUI,KC_LALT, LT(4, KC_SPC), MO(4), KC_RGUI,KC_NO, KC_NO), - - /* Layer 1: HHKB mode (HHKB Fn) - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| - * |-----------------------------------------------------------| - * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * | | | | | | | +| -|End|PgD|Dow| | | - * `-----------------------------------------------------------' - * | |Gui|Alt | Space |Alt |Gui| | | - * `-----------------------------------------------------------' - */ - [1] = KEYMAP( - KC_PWR, 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_INS, KC_DEL, \ - KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP, KC_TRNS,KC_BSPC, \ - KC_LCTL,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT,KC_ENT, \ - KC_LSFT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END, KC_PGDN,KC_DOWN,KC_RSFT,KC_TRNS, \ - KC_TRNS,KC_LGUI,KC_LALT, KC_TRNS, KC_RALT,KC_RGUI,KC_TRNS,KC_TRNS), - - /* Layer 2: Vi mode[Slash] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs| - * |-----------------------------------------------------------| - * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | | - * `-----------------------------------------------------------' - * |Gui|Alt | Space |Alt |Gui| - * `-------------------------------------------' - */ - [2] = KEYMAP( - KC_GRV, 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_INS, KC_DEL, \ - KC_TAB, KC_HOME,KC_PGDN,KC_UP, KC_PGUP,KC_END, KC_HOME,KC_PGDN,KC_PGUP,KC_END, KC_NO, KC_NO, KC_NO, KC_BSPC, \ - KC_LCTL,KC_NO, KC_LEFT,KC_DOWN,KC_RGHT,KC_NO, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,KC_NO, KC_NO, KC_ENT, \ - KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_PGDN,KC_PGUP,KC_END, LT(2, KC_SLSH), KC_RSFT,KC_TRNS, \ - KC_TRNS,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_TRNS, KC_TRNS), - - /* Layer 3: Mouse mode(IJKL)[Semicolon] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Mb1 |Fn |Fn | - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - [3] = KEYMAP( - KC_GRV, 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_INS, KC_DEL, \ - LALT(KC_TAB), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L,KC_WH_D,KC_MS_U, KC_WH_U, KC_WH_R, ALT_T(KC_LEFT), ALT_T(KC_RGHT),LALT(KC_TAB), \ - KC_LCTL, KC_ACL0,KC_ACL1,KC_ACL2,KC_ACL2,KC_NO, KC_NO, KC_MS_L,KC_MS_D, KC_MS_R, LT(3, KC_SCLN), KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN3,KC_BTN2,KC_BTN1,ALT_T(KC_LEFT), ALT_T(KC_RGHT), KC_NO, KC_RSFT, KC_TRNS, \ - KC_TRNS, KC_LGUI,KC_LALT, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - /* Layer 4: Mouse mode(IJKL)[Space] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Mb1 |Fn |Fn | - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - [4] = KEYMAP( - KC_GRV, 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_INS, KC_DEL, \ - LALT(KC_TAB), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L,KC_WH_D,KC_MS_U, KC_WH_U, KC_WH_R,KC_BTN4,KC_BTN5,LALT(KC_TAB), \ - KC_LCTL, KC_VOLD,KC_VOLU,KC_MUTE,KC_NO, KC_NO, KC_NO, KC_MS_L,KC_MS_D, KC_MS_R, KC_BTN1,KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN3,KC_BTN2,KC_BTN1,ALT_T(KC_LEFT),ALT_T(KC_RGHT),KC_NO, KC_RSFT,KC_TRNS, \ - KC_TRNS, KC_LGUI,KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), - -}; - -/* - * Fn action definition - */ -const uint16_t fn_actions[] = { - -}; diff --git a/keyboards/infinity_chibios/led.c b/keyboards/infinity_chibios/led.c deleted file mode 100644 index aed66c7c03..0000000000 --- a/keyboards/infinity_chibios/led.c +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2012 Jun Wako - -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 . -*/ - -#include "hal.h" - -#include "led.h" - - -void led_set(uint8_t usb_led) { -} diff --git a/keyboards/infinity_chibios/matrix.c b/keyboards/infinity_chibios/matrix.c deleted file mode 100644 index 62c165aa53..0000000000 --- a/keyboards/infinity_chibios/matrix.c +++ /dev/null @@ -1,171 +0,0 @@ -#include -#include -#include -#include "hal.h" -#include "timer.h" -#include "wait.h" -#include "print.h" -#include "matrix.h" - - -/* - * Infinity Pinusage: - * Column pins are input with internal pull-down. Row pins are output and strobe with high. - * Key is high or 1 when it turns on. - * INFINITY PRODUCTION (NO LED) - * col: { PTD1, PTD2, PTD3, PTD4, PTD5, PTD6, PTD7 } - * row: { PTB0, PTB1, PTB2, PTB3, PTB16, PTB17, PTC4, PTC5, PTD0 } - * INFINITY PRODUCTION (WITH LED) - * col: { PTD1, PTD2, PTD3, PTD4, PTD5, PTD6, PTD7 } - * row: { PTC0, PTC1, PTC2, PTC3, PTC4, PTC5, PTC6, PTC7, PTD0 } - */ -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -static bool debouncing = false; -static uint16_t debouncing_time = 0; - - -void matrix_init(void) -{ - /* Column(sense) */ - palSetPadMode(GPIOD, 1, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 2, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 3, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 4, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 5, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 6, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 7, PAL_MODE_INPUT_PULLDOWN); - -#ifdef INFINITY_LED - /* Row(strobe) */ - palSetPadMode(GPIOC, 0, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 1, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 2, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 4, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 5, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 6, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 7, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOD, 0, PAL_MODE_OUTPUT_PUSHPULL); -#else - /* Row(strobe) */ - palSetPadMode(GPIOB, 0, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 1, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 2, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 3, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 17, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 4, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 5, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOD, 0, PAL_MODE_OUTPUT_PUSHPULL); -#endif - memset(matrix, 0, MATRIX_ROWS); - memset(matrix_debouncing, 0, MATRIX_ROWS); -} - -uint8_t matrix_scan(void) -{ - for (int row = 0; row < MATRIX_ROWS; row++) { - matrix_row_t data = 0; - #ifdef INFINITY_LED - // strobe row - switch (row) { - case 0: palSetPad(GPIOC, 0); break; - case 1: palSetPad(GPIOC, 1); break; - case 2: palSetPad(GPIOC, 2); break; - case 3: palSetPad(GPIOC, 3); break; - case 4: palSetPad(GPIOC, 4); break; - case 5: palSetPad(GPIOC, 5); break; - case 6: palSetPad(GPIOC, 6); break; - case 7: palSetPad(GPIOC, 7); break; - case 8: palSetPad(GPIOD, 0); break; - } - #else - // strobe row - switch (row) { - case 0: palSetPad(GPIOB, 0); break; - case 1: palSetPad(GPIOB, 1); break; - case 2: palSetPad(GPIOB, 2); break; - case 3: palSetPad(GPIOB, 3); break; - case 4: palSetPad(GPIOB, 16); break; - case 5: palSetPad(GPIOB, 17); break; - case 6: palSetPad(GPIOC, 4); break; - case 7: palSetPad(GPIOC, 5); break; - case 8: palSetPad(GPIOD, 0); break; - } - #endif - - wait_us(1); // need wait to settle pin state - - // read col data - data = (palReadPort(GPIOD)>>1); - #ifdef INFINITY_LED - // un-strobe row - switch (row) { - case 0: palClearPad(GPIOC, 0); break; - case 1: palClearPad(GPIOC, 1); break; - case 2: palClearPad(GPIOC, 2); break; - case 3: palClearPad(GPIOC, 3); break; - case 4: palClearPad(GPIOC, 4); break; - case 5: palClearPad(GPIOC, 5); break; - case 6: palClearPad(GPIOC, 6); break; - case 7: palClearPad(GPIOC, 7); break; - case 8: palClearPad(GPIOD, 0); break; - } - #else - // un-strobe row - switch (row) { - case 0: palClearPad(GPIOB, 0); break; - case 1: palClearPad(GPIOB, 1); break; - case 2: palClearPad(GPIOB, 2); break; - case 3: palClearPad(GPIOB, 3); break; - case 4: palClearPad(GPIOB, 16); break; - case 5: palClearPad(GPIOB, 17); break; - case 6: palClearPad(GPIOC, 4); break; - case 7: palClearPad(GPIOC, 5); break; - case 8: palClearPad(GPIOD, 0); break; - } - #endif - - if (matrix_debouncing[row] != data) { - matrix_debouncing[row] = data; - debouncing = true; - debouncing_time = timer_read(); - } - } - - if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { - for (int row = 0; row < MATRIX_ROWS; row++) { - matrix[row] = matrix_debouncing[row]; - } - debouncing = false; - } - return 1; -} - -bool matrix_is_on(uint8_t row, uint8_t col) -{ - return (matrix[row] & (1</os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) -# - For Teensies, FAMILY = KINETIS and SERIES is either -# KL2x (LC) or K20x (3.0,3.1,3.2). -# - For Infinity KB, SERIES = K20x -MCU_FAMILY = KINETIS -MCU_SERIES = K20x - -# Linker script to use -# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ -# or /ld/ -# - NOTE: a custom ld script is needed for EEPROM on Teensy LC -# - LDSCRIPT = -# - MKL26Z64 for Teensy LC -# - MK20DX128 for Teensy 3.0 -# - MK20DX256 for Teensy 3.1 and 3.2 -# - MK20DX128BLDR4 for Infinity with Kiibohd bootloader -MCU_LDSCRIPT = MK20DX128BLDR4 - -# Startup code to use -# - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ -# - STARTUP = -# - kl2x for Teensy LC -# - k20x5 for Teensy 3.0 and Infinity KB -# - k20x7 for Teensy 3.1 and 3.2 -MCU_STARTUP = k20x5 - -# Board: it should exist either in /os/hal/boards/ -# or /boards -# - BOARD = -# - PJRC_TEENSY_LC for Teensy LC -# - PJRC_TEENSY_3 for Teensy 3.0 -# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 -# - MCHCK_K20 for Infinity KB -BOARD = MCHCK_K20 - -# Cortex version -# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 -MCU = cortex-m4 - -# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 -# I.e. 6 for Teensy LC; 7 for Teensy 3.x -ARMV = 7 - -# Vector table for application -# 0x00000000-0x00001000 area is occupied by bootlaoder.*/ -# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB -OPT_DEFS = -DCORTEX_VTOR_INIT=0x00001000 - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration -## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.) -MOUSEKEY_ENABLE ?= yes # Mouse keys -EXTRAKEY_ENABLE ?= yes # Audio control and System control -CONSOLE_ENABLE ?= yes # Console for debug -COMMAND_ENABLE ?= yes # Commands for debug and configuration -SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover -CUSTOM_MATRIX ?= yes # Custom matrix file \ No newline at end of file -- cgit v1.2.1 From 3bdebd2270a40593f4779f0013f588e47b3c53fc Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 28 Aug 2016 00:52:32 +0300 Subject: Update list of community keyboards --- keyboards/readme.md | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/keyboards/readme.md b/keyboards/readme.md index 4f17962191..81a23c7e55 100644 --- a/keyboards/readme.md +++ b/keyboards/readme.md @@ -9,38 +9,47 @@ These keyboards are manufactured by the maintainers of QMK. What makes OLKB keyboards shine is a combo of lean aesthetics, compact size, and killer tactile feel. These are available through [olkb.com](http://olkb.com) as well as through [Massdrop](http://massdrop.com) from time to time, as easy to assemble kits. -* [Planck](/keyboards/planck/) - A 40% DIY powerhouse of customizability and modification capability. It's a lean, mean, typing machine. -* [Preonic](/keyboards/preonic/) - Like the Planck, but bigger. 50%. -* [Atomic](/keyboards/atomic/) - Imagine the size of the Planck. Now imagine the size of the Preonic. Now imagine _bigger_. That is the Atomic. A 60% keyboard. +* [Planck](/keyboards/planck/) — A 40% DIY powerhouse of customizability and modification capability. It's a lean, mean, typing machine. +* [Preonic](/keyboards/preonic/) — Like the Planck, but bigger. 50%. +* [Atomic](/keyboards/atomic/) — Imagine the size of the Planck. Now imagine the size of the Preonic. Now imagine _bigger_. That is the Atomic. A 60% keyboard. ### ErgoDox EZ - Erez Zukerman Made in Taiwan using advanced robotic manufacturing, the ErgoDox EZ is a fully-assembled, premium ergonomic keyboard. Its split design allows you to place both halves shoulder width, and its custom-made wrist rests and tilt/tent kit make for incredibly comfortable typing. Available on [ergodox-ez.com](https://ergodox-ez.com). -* [ErgoDox EZ](/keyboards/ergodox/) - Our one and only product. Yes, it's that awesome. Comes with either printed or blank keycaps, and 7 different keyswitch types. +* [ErgoDox EZ](/keyboards/ergodox/) — Our one and only product. Yes, it's that awesome. Comes with either printed or blank keycaps, and 7 different keyswitch types. ### Clueboard - Zach White Designed and built in Felton, CA, Clueboards keyboard emphasize quality and locally sourced components, available on [clueboard.co](http://clueboard.co) -* [Clueboard](/keyboards/clueboard/) - The 66% custom keyboard. -* [Cluepad](/keyboards/cluepad/) - A mechanical numpad with QMK superpowers. +* [Clueboard](/keyboards/clueboard/) — The 66% custom keyboard. +* [Cluecard](/keyboards/cluecard/) — A small board to help you hack on QMK. +* [Cluepad](/keyboards/cluepad/) — A mechanical numpad with QMK superpowers. ## Community-supported QMK Keyboards These keyboards are part of the QMK repository, but their manufacturers are not official maintainers of the repository. -* [alps64](/keyboards/alps64/) — A 60% keyboard for Alps keyswitches. -* [arrow_pad](/keyboards/arrow_pad) — A custom creation by IBNobody. -* [atreus](/keyboards/atreus) — Made by Technomancy. -* [bantam44](/keyboards/bantam44) — It is a 44-key 40% staggered keyboard. -* [gh60](/keyboards/gh60) — A 60% Geekhack community-driven project. -* [hhkb](/keyboards/hhkb) — The Happy Hacking keyboard can be hacked with a custom controller to run QMK. -* [jd45](/keyboards/jd45) — Another Geekhack community project, designed by jdcarpe. -* [kc60](/keyboards/kc60) — A programmable Chinese-made keyboard, lost in the mists of time. -* [kitten_paw](/keyboards/kitten_paw) — A replacement controller (2016 revision) for the Filco Majestouch by [Bathroom Epiphanies](https://github.com/BathroomEpiphanies) -* [phantom](/keyboards/phantom) — A tenkeyless kit by Teel, also from Geekhack. -* [retro_refit](/keyboards/retro_refit) — Another creation by IBNobody. -* [satan](/keyboards/satan) — A GH60 variant. -* [sixkeyboard](/keyboards/sixkeyboard) — A 6-key keyboard made by TechKeys. +* [Alps64](/keyboards/alps64) — A 60% keyboard for Alps keyswitches. +* [AMJ60](/keyboards/amj60) — DIY/Assembled compact 60% keyboard. +* [Arrow Pad](/keyboards/arrow_pad) — A custom creation by IBNobody. +* [Atreus](/keyboards/atreus) — Made by Technomancy. +* [Bantam44](/keyboards/bantam44) — It is a 44-key 40% staggered keyboard. +* [Ergodox Infinity](/keyboards/ergodox) - Ergonomic Split Keyboard by Input Club. +* [GH60](/keyboards/gh60) — A 60% Geekhack community-driven project. +* [Happy Hacking Keyboard](/keyboards/hhkb) — The Happy Hacking keyboard can be hacked with a custom controller to run QMK. +* [Infinity 60%](/keyboards/infinity60) - — Compact community keyboard by Input Club. +* [JD45](/keyboards/jd45) — Another Geekhack community project, designed by jdcarpe. +* [KC60](/keyboards/kc60) — A programmable Chinese-made keyboard, lost in the mists of time. +* [Kinesis Advantage](/keyboards/kinesis) — Contoured ergonomic keyboard by Kinesis Computer Ergonomics. +* [The Kitten Paw](/keyboards/kitten_paw) — A replacement controller (2016 revision) for the Filco Majestouch by [Bathroom Epiphanies](https://github.com/BathroomEpiphanies). +* [Lets Split](/keyboards/lets_split) - Split ortholinear 40% keyboard. +* [Phantom](/keyboards/phantom) — A tenkeyless kit by Teel, also from Geekhack. +* [Retro Refit](/keyboards/retro_refit) — Another creation by IBNobody. +* [S60-x](/keyboards/s60-x) — DIY compact keyboard designed by VinnyCordeiro for Sentraq. +* [Satan](/keyboards/satan) — A GH60 variant. +* [SixKeyBoard](/keyboards/sixkeyboard) — A 6-key keyboard made by TechKeys. +* [TheVan 44](/keyboars/tv44) — A 44-key staggered keybard by Evangs. +* [Vision Division](/keyboards/vision_division) — Full Size / Split Linear Keyboard by IBNobody. -- cgit v1.2.1 From 83eb9e4eed808113a2fc059bcd7546b17707e920 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 28 Aug 2016 01:10:14 +0300 Subject: Fix the .travis.yml so that GH_TOKEN works properly --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index f4c918a5ed..e74744a967 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,11 +9,11 @@ branches: env: global: - secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM= + matrix: + - TARGET=all-keyboards AUTOGEN=true + - TARGET=test AUTOGEN=false script: - make $TARGET AUTOGEN=$AUTOGEN -env: -- TARGET=all-keyboards AUTOGEN=true -- TARGET=test AUTOGEN=false addons: apt: packages: -- cgit v1.2.1 From 2f0395ce725581b93b68a88899c207014ee68901 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Mon, 29 Aug 2016 11:30:38 +0200 Subject: build_keyboard.mk: Restore UCIS_ENABLE support During the build system refactor, support for enabling UCIS seems to have been lost. This little patch adds that back, so that keymaps using UCIS can be compiled again. Signed-off-by: Gergely Nagy --- build_keyboard.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build_keyboard.mk b/build_keyboard.mk index 04632c1c94..03a69b1464 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -148,6 +148,11 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes) SRC += $(QUANTUM_DIR)/audio/luts.c endif +ifeq ($(strip $(UCIS_ENABLE)), yes) + OPT_DEFS += -DUCIS_ENABLE + UNICODE_ENABLE = yes +endif + ifeq ($(strip $(UNICODE_ENABLE)), yes) OPT_DEFS += -DUNICODE_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c -- cgit v1.2.1 From 42f1ce08dc09ff784add32750e55aa03e2427f5e Mon Sep 17 00:00:00 2001 From: Jack Henahan Date: Mon, 29 Aug 2016 11:35:07 -0400 Subject: jhenahan layout --- keyboards/planck/keymaps/jhenahan/Makefile | 25 +++ keyboards/planck/keymaps/jhenahan/config.h | 9 + keyboards/planck/keymaps/jhenahan/keymap.c | 314 ++++++++++++++++++++++++++++ keyboards/planck/keymaps/jhenahan/readme.md | 35 ++++ 4 files changed, 383 insertions(+) create mode 100644 keyboards/planck/keymaps/jhenahan/Makefile create mode 100644 keyboards/planck/keymaps/jhenahan/config.h create mode 100644 keyboards/planck/keymaps/jhenahan/keymap.c create mode 100644 keyboards/planck/keymaps/jhenahan/readme.md diff --git a/keyboards/planck/keymaps/jhenahan/Makefile b/keyboards/planck/keymaps/jhenahan/Makefile new file mode 100644 index 0000000000..de01ad2404 --- /dev/null +++ b/keyboards/planck/keymaps/jhenahan/Makefile @@ -0,0 +1,25 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/planck/keymaps/jhenahan/config.h b/keyboards/planck/keymaps/jhenahan/config.h new file mode 100644 index 0000000000..cd3adc41cc --- /dev/null +++ b/keyboards/planck/keymaps/jhenahan/config.h @@ -0,0 +1,9 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#define FORCE_NKRO +#define WORKMAN_SOUND COLEMAK_SOUND + +#endif diff --git a/keyboards/planck/keymaps/jhenahan/keymap.c b/keyboards/planck/keymaps/jhenahan/keymap.c new file mode 100644 index 0000000000..2bda4b6956 --- /dev/null +++ b/keyboards/planck/keymaps/jhenahan/keymap.c @@ -0,0 +1,314 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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 _WORKMAN 0 +#define _DEAD 1 +#define _QWERTY 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _ADJUST 16 + +enum planck_keycodes { + WORKMAN = SAFE_RANGE, + DEAD, + QWERTY, + LOWER, + RAISE, + PLOVER, + EXT_PLV, + TOG_PLV +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +/* Workman + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | H | T | G | Y | N | E | O | I | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | M | C | V | K | L | Dead | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_WORKMAN] = { + {KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC}, + {MT(MOD_LCTL,KC_ESC), KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, DEAD, KC_DOT, KC_SLSH, KC_ENT}, + {KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Workman Dead Layer + * ,-----------------------------------------------------------------------------------. + * | | % | & | ? | + | @ | $ | _ | [ | ] | ! | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | / | ( | = | 0 | { | } | 1 | * | ) | - | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | 6 | 7 | 8 | 9 | | | \ | 2 | 3 | 4 | 5 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | < | ~ | ` | , | # | ^ | > | | | + * `-----------------------------------------------------------------------------------' + */ +[_DEAD] = { + {XXXXXXX, KC_PERC, KC_AMPR, KC_QUES, KC_PLUS, KC_AT, KC_DLR, KC_UNDS, KC_LBRC, KC_RBRC, KC_EXLM, XXXXXXX}, + {XXXXXXX, KC_SLSH, KC_LPRN, KC_EQL, KC_0, KC_LCBR, KC_RCBR, KC_1, KC_ASTR, KC_RPRN, KC_MINS, XXXXXXX}, + {XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_PIPE, KC_BSLS, KC_2, KC_3, KC_4, KC_5, XXXXXXX}, + {XXXXXXX, XXXXXXX, KC_LT, KC_TILD, KC_GRV, KC_COMM, KC_COMM, KC_HASH, KC_CIRC, KC_GT, XXXXXXX, XXXXXXX} +}, + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | Vol+ |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Prev | Next | Vol- | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS), _______, KC_VOLU, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_MPLY} +}, + +/* Raise - KWM Interaction + * ,-----------------------------------------------------------------------------------. + * |Restrt| |TgSplt|Flotng|Parent|FlScrn|InsMrk| InsW | InsS | InsN | InsE | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | Mark |Rotate|Prefix| Term | BSP |SwpMrk|SwapW |SwapS |SwapN |SwapE | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |MarkW |MarkS |MarkN |MarkE |Monocl|Float |FocusW|FocusS|FocusN|FocusE| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {LCAG(KC_Q), XXXXXXX, LCAG(KC_S), LCAG(KC_W), LCAG(KC_D), LCAG(KC_F), LCTL(S(KC_X)), LCTL(S(KC_H)), LCTL(S(KC_J)), LCTL(S(KC_K)), LCTL(S(KC_L)), XXXXXXX}, + {XXXXXXX, LCAG(KC_M), LGUI(LCTL(KC_R)), LCAG(KC_DOT), LCAG(KC_T), LGUI(LCTL(KC_A)), LCTL(LALT(KC_M)), LCTL(LALT(KC_H)), LCTL(LALT(KC_J)), LCTL(LALT(KC_K)), LCTL(LALT(KC_L)), XXXXXXX}, + {_______, LCAG(KC_H), LCAG(KC_J), LCAG(KC_K), LCAG(KC_L), LGUI(LCTL(KC_S)), LGUI(LCTL(KC_D)), LGUI(LALT(KC_H)), LGUI(LALT(KC_J)), LGUI(LALT(KC_K)), LGUI(LALT(KC_L)), _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + +[_PLOVER] = { + {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, + {XXXXXXX, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC}, + {TOG_PLV, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_M, KC_C, XXXXXXX, XXXXXXX, KC_L, KC_COMM, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Workmn|Plover| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, WORKMAN, PLOVER, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_workman[][2] = SONG(WORKMAN_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case WORKMAN: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_workman, false, 0); + #endif + persistant_default_layer_set(1UL<<_WORKMAN); + } + return false; + break; + case DEAD: + if (record->event.pressed) { + layer_on(_DEAD); + set_oneshot_layer(_DEAD, ONESHOT_START); + clear_oneshot_layer_state(ONESHOT_PRESSED); + } + return false; + break; + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + return false; + break; + case TOG_PLV: + if (record->event.pressed) { + register_code(KC_R); + register_code(KC_W); + register_code(KC_T); + register_code(KC_C); + register_code(KC_P); + register_code(KC_O); + clear_keyboard(); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/jhenahan/readme.md b/keyboards/planck/keymaps/jhenahan/readme.md new file mode 100644 index 0000000000..1d803fe321 --- /dev/null +++ b/keyboards/planck/keymaps/jhenahan/readme.md @@ -0,0 +1,35 @@ +# jhenahan's layout + +## Layout + +The base layer is based on the +[Workman Dead](https://github.com/ojbucao/Workman/tree/master/mac) layout. The +primary interaction layer is a slightly modified Workman layout with a 'dead' +key on the third row under the middle finger. The dead key activates a layer of +special characters. + +## [Layers](http://www.keyboard-layout-editor.com/#/gists/2b875f7d5d76fe4408c0a5b3bd76ddae) +### Function Layer + +This is very slightly modified from the default, mainly just to rearrange the media keys. + +### [KWM](https://github.com/koekeishiya/kwm) Interaction Layer + +`kwm` is a tiling window manager for OS X. The keys defined in my keymap +correspond to the settings I use in +[my `kwmrc` file](https://github.com/jhenahan/dotfiles/blob/master/kwm/kwmrc). + +### QWERTY + +Just in case. + +### [Plover](http://www.openstenoproject.org/plover/) + +The Plover layer in this keymap is identical to that of the default. This layout +functions exactly as a QWERTY layout unless you're running the Plover +application. + +### Adjust Layer + +This layer is only slightly modified from the default to remove Dvorak and +Colemak and replace them with Workman. -- cgit v1.2.1 From 6d7637ae3eb4b37ab7d294818aa92ea9562df4b9 Mon Sep 17 00:00:00 2001 From: Jack Henahan Date: Mon, 29 Aug 2016 11:43:06 -0400 Subject: Update README --- keyboards/planck/keymaps/jhenahan/readme.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/jhenahan/readme.md b/keyboards/planck/keymaps/jhenahan/readme.md index 1d803fe321..a80506fc9d 100644 --- a/keyboards/planck/keymaps/jhenahan/readme.md +++ b/keyboards/planck/keymaps/jhenahan/readme.md @@ -25,9 +25,15 @@ Just in case. ### [Plover](http://www.openstenoproject.org/plover/) -The Plover layer in this keymap is identical to that of the default. This layout -functions exactly as a QWERTY layout unless you're running the Plover -application. +This layout functions exactly as a Workman layout unless you're running the Plover +application. Includes a key for toggling Plover while it's running. + +Add this in the appropriate section of your `plover.cfg` to allow this altered layout: + +``` ini +[System: English Stenotype] +keymap[keyboard] = [["#", ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "="]], ["S-", ["q", "a"]], ["T-", ["d"]], ["K-", ["s"]], ["P-", ["r"]], ["W-", ["h"]], ["H-", ["w"]], ["R-", ["t"]], ["A-", ["m"]], ["O-", ["c"]], ["*", ["y", "g", "j", "b"]], ["-E", ["l"]], ["-U", [","]], ["-F", ["f"]], ["-R", ["n"]], ["-P", ["u"]], ["-B", ["e"]], ["-L", ["p"]], ["-G", ["o"]], ["-T", [";"]], ["-S", ["i"]], ["-D", ["BackSpace"]], ["-Z", ["'"]], ["no-op", ["\\", "]", "x", ".", "/"]], ["arpeggiate", ["space"]]] +``` ### Adjust Layer -- cgit v1.2.1 From c9ea236fc35d350c0ff33de0af84d3dee7d0eb95 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Wed, 31 Aug 2016 08:21:52 +0200 Subject: process_unicode: Add get_unicode_input_mode() There may be cases where one would like to know the current Unicode input mode, without having to keep track of it themselves. Add a function that does just this. Signed-off-by: Gergely Nagy --- quantum/process_keycode/process_unicode.c | 4 ++++ quantum/process_keycode/process_unicode.h | 1 + 2 files changed, 5 insertions(+) diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index 06c1694f2e..a5d7dca21e 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -18,6 +18,10 @@ void set_unicode_input_mode(uint8_t os_target) input_mode = os_target; } +uint8_t get_unicode_input_mode(void) { + return input_mode; +} + __attribute__((weak)) void unicode_input_start (void) { switch(input_mode) { diff --git a/quantum/process_keycode/process_unicode.h b/quantum/process_keycode/process_unicode.h index 02ce3dd7e0..27f8072ee6 100644 --- a/quantum/process_keycode/process_unicode.h +++ b/quantum/process_keycode/process_unicode.h @@ -13,6 +13,7 @@ #endif void set_unicode_input_mode(uint8_t os_target); +uint8_t get_unicode_input_mode(void); void unicode_input_start(void); void unicode_input_finish(void); void register_hex(uint16_t hex); -- cgit v1.2.1 From acda2b793f69c6e0e9b9667e9ebe8a0325eb5ecd Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Thu, 1 Sep 2016 08:32:47 +0200 Subject: tap-dance: Do not start a sequence on keyup There was an odd case, which confused the hell out of tap-dance: suppose you had a number of tap-dance keys, on a layer, and as part of the tap-dance, you turned that layer off - or had it on one-shot to begin with. In this case, the keydown event would trigger the tap-dance key, but the keyup would not. This had two funky consequences: - tap-dance did not correctly register that the dance has ended. - pressing any other tap-dance key would interrupt the previous tap-dance, and potentially input unwanted characters. To fix this, we simply do not start a tap-dance sequence on keyup, only when it is pressed. This way the previous sequence has enough time to time-out and finish properly, and we don't get confused. This fixes algernon/ergodox-layout#107. Signed-off-by: Gergely Nagy --- quantum/process_keycode/process_tap_dance.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 07de3ecb8f..79ade4d000 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -65,9 +65,9 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) { highest_td = idx; action = &tap_dance_actions[idx]; - action->state.keycode = keycode; action->state.pressed = record->event.pressed; if (record->event.pressed) { + action->state.keycode = keycode; action->state.count++; action->state.timer = timer_read(); @@ -77,8 +77,9 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) { process_tap_dance_action_on_dance_finished (paction); reset_tap_dance (&paction->state); } + + last_td = keycode; } - last_td = keycode; break; -- cgit v1.2.1 From 8b2a235c8de7123187e0aa1dd950947f20a51f07 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 1 Sep 2016 18:14:39 +0100 Subject: changed order of modifiers after experimentation, updated readme --- keyboards/planck/keymaps/callum/keymap.c | 4 ++-- keyboards/planck/keymaps/callum/readme.md | 15 +++++---------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 494ed30b06..572756a383 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -38,14 +38,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | GUI | Alt | Ctrl | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps | + * | Func | Ctrl | Alt | GUI | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps | * `-----------------------------------------------------------------------------------' */ [_BASE] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} + {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} }, /* MOVE diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 030def7f77..c7ad5d163c 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -2,24 +2,19 @@ This is a layout for the grid planck, built with a few ideals in mind. These ideals are just my opinion mind! The great thing about *qmk* is that we can all afford to have different opinions about what makes a good layout: -- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided --- since they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. +- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — since they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. - The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. - There should be two of every modifier (one on each side), since otherwise certain long key combinations become hard to make. - Backspace should be in the “capslock position” as God intended. -- The keyboard should be usable without any firmware changes on any operating system. In my case that means it should work on *Windows* and *Linux* without any software modifications, while I can change the behaviour slightly on *macOS* in software since that’s my home OS. The images reflect the intended use on *macOS* **after** minor software tweaks; which will be noted. We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. ## The `BASE` layer -![](http://i.imgur.com/aEXOlWl.png) +![](http://i.imgur.com/tVNI3SE.png) This is the default layer; in [colemak](https://colemak.com). `esc` and `del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. -The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneosly, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. - -The `ctrl`, `alt`, `cmd` cluster is asymmetric around the centre so that at least one of each of the modifiers can be reached with the thumbs. The intended use is to always hit the left `cmd` and the right `ctrl`, unless an awkward key combination dictates otherwise. - -In firmware `ctrl` and `cmd`/`GUI` are swapped with respect to the image above --- I swap them to the illustrated location when using *macOS* and leave them be for *Windows* and *Linux*. (so that `cmd-z,x,c,v,...` becomes `ctrl-z,x,c,v,...` saving me some confusion) +The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. ## The `MOVE` layer ![](http://i.imgur.com/KXRSuHT.png) @@ -40,9 +35,9 @@ The symbol layer has all the numbers and their usual corresponding symbols in th Again none of the modifiers are overwritten so that shortcuts involving numbers or symbols work as expected. ## The `FUNC` layer -![](http://i.imgur.com/skxRZiH.png) +![](http://i.imgur.com/1VKFBBU.png) -The only thing of note here is that `bl+` and `bl-` are short for *backlight up* and *backlight down* respectively, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. +The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-cmd-power`.) ## Other changes from the default I have LEDs and sound disabled, simply because I have no need of them. \ No newline at end of file -- cgit v1.2.1 From 4c67ccc81ee8006190438c5f54cda871bcb2afa6 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 1 Sep 2016 18:30:49 +0100 Subject: changed some of the wording in the readme --- keyboards/planck/keymaps/callum/readme.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index c7ad5d163c..2d38e6355a 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -1,11 +1,11 @@ # callum’s planck layout -This is a layout for the grid planck, built with a few ideals in mind. These ideals are just my opinion mind! The great thing about *qmk* is that we can all afford to have different opinions about what makes a good layout: +This is a layout for the grid planck, built with a few ideals in mind: -- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — since they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. +- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. - The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. -- There should be two of every modifier (one on each side), since otherwise certain long key combinations become hard to make. -- Backspace should be in the “capslock position” as God intended. +- There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make. +- Backspace should be in the “capslock position” in the colemak tradition. We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. -- cgit v1.2.1 From e4167c8c53b0cf7c68192bbe4db368785f24b970 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Fri, 2 Sep 2016 09:03:39 +0100 Subject: fixed incorrect key combination for locking screen on macOS --- keyboards/planck/keymaps/callum/keymap.c | 4 ++-- keyboards/planck/keymaps/callum/readme.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 572756a383..6c34311339 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -137,11 +137,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case LOCK: if (record->event.pressed) { register_code(KC_RSFT); - register_code(KC_RGUI); + register_code(KC_RCTL); register_code(KC_POWER); } else { unregister_code(KC_POWER); - unregister_code(KC_RGUI); + unregister_code(KC_RCTL); unregister_code(KC_RSFT); } return false; diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 2d38e6355a..b70de3f1e2 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -14,7 +14,7 @@ We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow c This is the default layer; in [colemak](https://colemak.com). `esc` and `del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. -The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. +The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. ## The `MOVE` layer ![](http://i.imgur.com/KXRSuHT.png) @@ -37,7 +37,7 @@ Again none of the modifiers are overwritten so that shortcuts involving numbers ## The `FUNC` layer ![](http://i.imgur.com/1VKFBBU.png) -The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-cmd-power`.) +The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.) ## Other changes from the default -I have LEDs and sound disabled, simply because I have no need of them. \ No newline at end of file +I have LEDs and sound disabled, simply because I have no need of them. -- cgit v1.2.1 From a485e13afeb06ae96616ef381b03ba213efc574c Mon Sep 17 00:00:00 2001 From: profet23 Date: Fri, 2 Sep 2016 16:16:06 -0400 Subject: Adding 80 Key Ergodox Support --- keyboards/ergodox80/Makefile | 5 + keyboards/ergodox80/config.h | 31 + keyboards/ergodox80/ergodox80.c | 0 keyboards/ergodox80/ergodox80.h | 5 + keyboards/ergodox80/ergodox80/190hotfix.sh | 19 + keyboards/ergodox80/ergodox80/Makefile | 3 + keyboards/ergodox80/ergodox80/config.h | 65 ++ keyboards/ergodox80/ergodox80/ergodox80.c | 85 +++ keyboards/ergodox80/ergodox80/ergodox80.h | 122 ++++ keyboards/ergodox80/ergodox80/i2cmaster.h | 178 ++++++ keyboards/ergodox80/ergodox80/matrix.c | 382 +++++++++++ keyboards/ergodox80/ergodox80/rules.mk | 76 +++ keyboards/ergodox80/ergodox80/twimaster.c | 208 ++++++ .../ergodox80/ergodox80/util/compile_keymap.py | 710 +++++++++++++++++++++ keyboards/ergodox80/ergodox80/util/readme.md | 3 + keyboards/ergodox80/keymaps/default/default.png | Bin 0 -> 193672 bytes .../ergodox80/keymaps/default/default_highres.png | Bin 0 -> 1459389 bytes keyboards/ergodox80/keymaps/default/keymap.c | 183 ++++++ keyboards/ergodox80/keymaps/default/readme.md | 10 + keyboards/ergodox80/readme.md | 165 +++++ keyboards/ergodox80/rules.mk | 28 + 21 files changed, 2278 insertions(+) create mode 100644 keyboards/ergodox80/Makefile create mode 100644 keyboards/ergodox80/config.h create mode 100644 keyboards/ergodox80/ergodox80.c create mode 100644 keyboards/ergodox80/ergodox80.h create mode 100755 keyboards/ergodox80/ergodox80/190hotfix.sh create mode 100644 keyboards/ergodox80/ergodox80/Makefile create mode 100644 keyboards/ergodox80/ergodox80/config.h create mode 100644 keyboards/ergodox80/ergodox80/ergodox80.c create mode 100644 keyboards/ergodox80/ergodox80/ergodox80.h create mode 100644 keyboards/ergodox80/ergodox80/i2cmaster.h create mode 100644 keyboards/ergodox80/ergodox80/matrix.c create mode 100644 keyboards/ergodox80/ergodox80/rules.mk create mode 100644 keyboards/ergodox80/ergodox80/twimaster.c create mode 100644 keyboards/ergodox80/ergodox80/util/compile_keymap.py create mode 100644 keyboards/ergodox80/ergodox80/util/readme.md create mode 100644 keyboards/ergodox80/keymaps/default/default.png create mode 100644 keyboards/ergodox80/keymaps/default/default_highres.png create mode 100644 keyboards/ergodox80/keymaps/default/keymap.c create mode 100644 keyboards/ergodox80/keymaps/default/readme.md create mode 100644 keyboards/ergodox80/readme.md create mode 100644 keyboards/ergodox80/rules.mk diff --git a/keyboards/ergodox80/Makefile b/keyboards/ergodox80/Makefile new file mode 100644 index 0000000000..94fa847ff8 --- /dev/null +++ b/keyboards/ergodox80/Makefile @@ -0,0 +1,5 @@ +SUBPROJECT_DEFAULT = ergodox80 + +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif diff --git a/keyboards/ergodox80/config.h b/keyboards/ergodox80/config.h new file mode 100644 index 0000000000..5dd6daa15f --- /dev/null +++ b/keyboards/ergodox80/config.h @@ -0,0 +1,31 @@ +#ifndef KEYBOARDS_ERGODOX_CONFIG_H_ +#define KEYBOARDS_ERGODOX_CONFIG_H_ + +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 3 +#define MOUSEKEY_TIME_TO_MAX 10 + +#define TAPPING_TOGGLE 1 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +#define TAPPING_TERM 200 +#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) + +/* 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_LCTL) | MOD_BIT(KC_RCTL)) || \ + keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ +) + +#include "ergodox80/config.h" + + +#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ diff --git a/keyboards/ergodox80/ergodox80.c b/keyboards/ergodox80/ergodox80.c new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/ergodox80/ergodox80.h b/keyboards/ergodox80/ergodox80.h new file mode 100644 index 0000000000..ea40f4d455 --- /dev/null +++ b/keyboards/ergodox80/ergodox80.h @@ -0,0 +1,5 @@ +#ifndef KEYBOARDS_ERGODOX_ERGODOX_H_ +#define KEYBOARDS_ERGODOX_ERGODOX_H_ +#include "ergodox80.h" + +#endif /* KEYBOARDS_ERGODOX_ERGODOX_H_ */ diff --git a/keyboards/ergodox80/ergodox80/190hotfix.sh b/keyboards/ergodox80/ergodox80/190hotfix.sh new file mode 100755 index 0000000000..bdc3adce22 --- /dev/null +++ b/keyboards/ergodox80/ergodox80/190hotfix.sh @@ -0,0 +1,19 @@ +#!/bin/bash +#a tool to fix broken keymaps as a result of pull request #190 +#changing the declaration of matrix_scan_user() and matrix_init_user() +# +#This script will save a copy of the specified keymap as keymap.c.bak +#and then create a new keymap.c with the definion corrected. +#this script must be run from the ergodox_ez directory +if [ $# -ne 1 ]; then + echo $0: usage: ./190hotfix keymap_name + exit 1 +fi + +echo Saving backup as ./keymaps/$1/keymap.c.bak ... +mv ./keymaps/$1/keymap.c ./keymaps/$1/keymap.c.bak + +echo Modifying ./keymaps/$1/keymap.c ... +cat ./keymaps/$1/keymap.c.bak | sed -r 's/^void \* matrix_/void matrix_/'>./keymaps/$1/keymap.c + +echo Complete! diff --git a/keyboards/ergodox80/ergodox80/Makefile b/keyboards/ergodox80/ergodox80/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/ergodox80/ergodox80/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/ergodox80/ergodox80/config.h b/keyboards/ergodox80/ergodox80/config.h new file mode 100644 index 0000000000..084a044ee1 --- /dev/null +++ b/keyboards/ergodox80/ergodox80/config.h @@ -0,0 +1,65 @@ +/* +Copyright 2012 Jun Wako +Copyright 2013 Oleg Kostyuk + +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 . +*/ + +#ifndef ERGODOX_EZ_CONFIG_H +#define ERGODOX_EZ_CONFIG_H + +#include "../config.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1307 +#define DEVICE_VER 0x0001 +#define MANUFACTURER ErgoDox EZ +#define PRODUCT ErgoDox EZ +#define DESCRIPTION QMK keyboard firmware for Ergodox EZ + +/* key matrix size */ +#define MATRIX_ROWS 14 +#define MATRIX_COLS 6 + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +#define LED_BRIGHTNESS_LO 15 +#define LED_BRIGHTNESS_HI 255 + + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* + * 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 +//#define DEBUG_MATRIX_SCAN_RATE + +#endif diff --git a/keyboards/ergodox80/ergodox80/ergodox80.c b/keyboards/ergodox80/ergodox80/ergodox80.c new file mode 100644 index 0000000000..b21b1073b4 --- /dev/null +++ b/keyboards/ergodox80/ergodox80/ergodox80.c @@ -0,0 +1,85 @@ +#include "ergodox80.h" +#include "i2cmaster.h" + +bool i2c_initialized = 0; +uint8_t mcp23018_status = 0x20; + +void matrix_init_kb(void) { + // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md") + TCCR1A = 0b10101001; // set and configure fast PWM + TCCR1B = 0b00001001; // set and configure fast PWM + + // (tied to Vcc for hardware convenience) + DDRB &= ~(1<<4); // set B(4) as input + PORTB &= ~(1<<4); // set B(4) internal pull-up disabled + + // unused pins - C7, D4, D5, D7, E6 + // set as input with internal pull-ip enabled + DDRC &= ~(1<<7); + DDRD &= ~(1<<7 | 1<<5 | 1<<4); + DDRE &= ~(1<<6); + PORTC |= (1<<7); + PORTD |= (1<<7 | 1<<5 | 1<<4); + PORTE |= (1<<6); + + ergodox_blink_all_leds(); + + matrix_init_user(); +} + +void ergodox_blink_all_leds(void) +{ + ergodox_led_all_off(); + ergodox_led_all_set(LED_BRIGHTNESS_HI); + ergodox_right_led_1_on(); + _delay_ms(50); + ergodox_right_led_2_on(); + _delay_ms(50); + ergodox_right_led_3_on(); + _delay_ms(50); + ergodox_right_led_1_off(); + _delay_ms(50); + ergodox_right_led_2_off(); + _delay_ms(50); + ergodox_right_led_3_off(); + //ergodox_led_all_on(); + //_delay_ms(333); + ergodox_led_all_off(); +} + +uint8_t init_mcp23018(void) { + mcp23018_status = 0x20; + + // I2C subsystem + if (i2c_initialized == 0) { + i2c_init(); // on pins D(1,0) + i2c_initialized++; + _delay_ms(1000); + } + + // set pin direction + // - unused : input : 1 + // - input : input : 1 + // - driving : output : 0 + mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; + mcp23018_status = i2c_write(IODIRA); if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out; + i2c_stop(); + + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; + mcp23018_status = i2c_write(GPPUA); if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out; + +out: + i2c_stop(); + + return mcp23018_status; +} + + diff --git a/keyboards/ergodox80/ergodox80/ergodox80.h b/keyboards/ergodox80/ergodox80/ergodox80.h new file mode 100644 index 0000000000..8012b0a749 --- /dev/null +++ b/keyboards/ergodox80/ergodox80/ergodox80.h @@ -0,0 +1,122 @@ +#ifndef ERGODOX_EZ_H +#define ERGODOX_EZ_H + +#include "quantum.h" +#include +#include +#include "i2cmaster.h" +#include + +#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) +#define CPU_16MHz 0x00 + +// I2C aliases and register addresses (see "mcp23018.md") +#define I2C_ADDR 0b0100000 +#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) +#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define IODIRA 0x00 // i/o direction register +#define IODIRB 0x01 +#define GPPUA 0x0C // GPIO pull-up resistor register +#define GPPUB 0x0D +#define GPIOA 0x12 // general purpose i/o port register (write modifies OLAT) +#define GPIOB 0x13 +#define OLATA 0x14 // output latch register +#define OLATB 0x15 + +extern uint8_t mcp23018_status; + +void init_ergodox(void); +void ergodox_blink_all_leds(void); +uint8_t init_mcp23018(void); +uint8_t ergodox_left_leds_update(void); + +#define LED_BRIGHTNESS_LO 15 +#define LED_BRIGHTNESS_HI 255 + + +inline void ergodox_board_led_on(void) { DDRD |= (1<<6); PORTD |= (1<<6); } +inline void ergodox_right_led_1_on(void) { DDRB |= (1<<5); PORTB |= (1<<5); } +inline void ergodox_right_led_2_on(void) { DDRB |= (1<<6); PORTB |= (1<<6); } +inline void ergodox_right_led_3_on(void) { DDRB |= (1<<7); PORTB |= (1<<7); } +inline void ergodox_right_led_on(uint8_t led) { DDRB |= (1<<(led+4)); PORTB |= (1<<(led+4)); } + +inline void ergodox_board_led_off(void) { DDRD &= ~(1<<6); PORTD &= ~(1<<6); } +inline void ergodox_right_led_1_off(void) { DDRB &= ~(1<<5); PORTB &= ~(1<<5); } +inline void ergodox_right_led_2_off(void) { DDRB &= ~(1<<6); PORTB &= ~(1<<6); } +inline void ergodox_right_led_3_off(void) { DDRB &= ~(1<<7); PORTB &= ~(1<<7); } +inline void ergodox_right_led_off(uint8_t led) { DDRB &= ~(1<<(led+4)); PORTB &= ~(1<<(led+4)); } + +inline void ergodox_led_all_on(void) +{ + ergodox_board_led_on(); + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); +} + +inline void ergodox_led_all_off(void) +{ + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); +} + +inline void ergodox_right_led_1_set(uint8_t n) { OCR1A = n; } +inline void ergodox_right_led_2_set(uint8_t n) { OCR1B = n; } +inline void ergodox_right_led_3_set(uint8_t n) { OCR1C = n; } +inline void ergodox_right_led_set(uint8_t led, uint8_t n) { + (led == 1) ? (OCR1A = n) : + (led == 2) ? (OCR1B = n) : + (OCR1C = n); +} + +inline void ergodox_led_all_set(uint8_t n) +{ + ergodox_right_led_1_set(n); + ergodox_right_led_2_set(n); + ergodox_right_led_3_set(n); +} + +#define KEYMAP( \ + \ + /* left hand, spatial positions */ \ + k00,k01,k02,k03,k04,k05,k06, \ + k10,k11,k12,k13,k14,k15,k16, \ + k20,k21,k22,k23,k24,k25, \ + k30,k31,k32,k33,k34,k35,k36, \ + k40,k41,k42,k43,k44, \ + k55,k56, \ + k45,k46,k54, \ + k53,k52,k51, \ + \ + /* right hand, spatial positions */ \ + k07,k08,k09,k0A,k0B,k0C,k0D, \ + k17,k18,k19,k1A,k1B,k1C,k1D, \ + k28,k29,k2A,k2B,k2C,k2D, \ + k37,k38,k39,k3A,k3B,k3C,k3D, \ + k49,k4A,k4B,k4C,k4D, \ + k57,k58, \ + k59,k47,k48, \ + k5C,k5B,k5A ) \ + \ + /* matrix positions */ \ + { \ + { k00, k10, k20, k30, k40, KC_NO }, \ + { k01, k11, k21, k31, k41, k51 }, \ + { k02, k12, k22, k32, k42, k52 }, \ + { k03, k13, k23, k33, k43, k53 }, \ + { k04, k14, k24, k34, k44, k54 }, \ + { k05, k15, k25, k35, k45, k55 }, \ + { k06, k16, KC_NO, k36, k46, k56 }, \ + \ + { k07, k17, KC_NO, k37, k47, k57 }, \ + { k08, k18, k28, k38, k48, k58 }, \ + { k09, k19, k29, k39, k49, k59 }, \ + { k0A, k1A, k2A, k3A, k4A, k5A }, \ + { k0B, k1B, k2B, k3B, k4B, k5B }, \ + { k0C, k1C, k2C, k3C, k4C, k5C }, \ + { k0D, k1D, k2D, k3D, k4D, KC_NO } \ + } + +#endif diff --git a/keyboards/ergodox80/ergodox80/i2cmaster.h b/keyboards/ergodox80/ergodox80/i2cmaster.h new file mode 100644 index 0000000000..3917b9e6c0 --- /dev/null +++ b/keyboards/ergodox80/ergodox80/i2cmaster.h @@ -0,0 +1,178 @@ +#ifndef _I2CMASTER_H +#define _I2CMASTER_H 1 +/************************************************************************* +* Title: C include file for the I2C master interface +* (i2cmaster.S or twimaster.c) +* Author: Peter Fleury http://jump.to/fleury +* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $ +* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 +* Target: any AVR device +* Usage: see Doxygen manual +**************************************************************************/ + +#ifdef DOXYGEN +/** + @defgroup pfleury_ic2master I2C Master library + @code #include @endcode + + @brief I2C (TWI) Master Software Library + + Basic routines for communicating with I2C slave devices. This single master + implementation is limited to one bus master on the I2C bus. + + This I2c library is implemented as a compact assembler software implementation of the I2C protocol + which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c). + Since the API for these two implementations is exactly the same, an application can be linked either against the + software I2C implementation or the hardware I2C implementation. + + Use 4.7k pull-up resistor on the SDA and SCL pin. + + Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module + i2cmaster.S to your target when using the software I2C implementation ! + + Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion. + + @note + The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted + to GNU assembler and AVR-GCC C call interface. + Replaced the incorrect quarter period delays found in AVR300 with + half period delays. + + @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury + + @par API Usage Example + The following code shows typical usage of this library, see example test_i2cmaster.c + + @code + + #include + + + #define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet + + int main(void) + { + unsigned char ret; + + i2c_init(); // initialize I2C library + + // write 0x75 to EEPROM address 5 (Byte Write) + i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode + i2c_write(0x05); // write address = 5 + i2c_write(0x75); // write value 0x75 to EEPROM + i2c_stop(); // set stop conditon = release bus + + + // read previously written value back from EEPROM address 5 + i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode + + i2c_write(0x05); // write address = 5 + i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode + + ret = i2c_readNak(); // read one byte from EEPROM + i2c_stop(); + + for(;;); + } + @endcode + +*/ +#endif /* DOXYGEN */ + +/**@{*/ + +#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 +#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" +#endif + +#include + +/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */ +#define I2C_READ 1 + +/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */ +#define I2C_WRITE 0 + + +/** + @brief initialize the I2C master interace. Need to be called only once + @param void + @return none + */ +extern void i2c_init(void); + + +/** + @brief Terminates the data transfer and releases the I2C bus + @param void + @return none + */ +extern void i2c_stop(void); + + +/** + @brief Issues a start condition and sends address and transfer direction + + @param addr address and transfer direction of I2C device + @retval 0 device accessible + @retval 1 failed to access device + */ +extern unsigned char i2c_start(unsigned char addr); + + +/** + @brief Issues a repeated start condition and sends address and transfer direction + + @param addr address and transfer direction of I2C device + @retval 0 device accessible + @retval 1 failed to access device + */ +extern unsigned char i2c_rep_start(unsigned char addr); + + +/** + @brief Issues a start condition and sends address and transfer direction + + If device is busy, use ack polling to wait until device ready + @param addr address and transfer direction of I2C device + @return none + */ +extern void i2c_start_wait(unsigned char addr); + + +/** + @brief Send one byte to I2C device + @param data byte to be transfered + @retval 0 write successful + @retval 1 write failed + */ +extern unsigned char i2c_write(unsigned char data); + + +/** + @brief read one byte from the I2C device, request more data from device + @return byte read from I2C device + */ +extern unsigned char i2c_readAck(void); + +/** + @brief read one byte from the I2C device, read is followed by a stop condition + @return byte read from I2C device + */ +extern unsigned char i2c_readNak(void); + +/** + @brief read one byte from the I2C device + + Implemented as a macro, which calls either i2c_readAck or i2c_readNak + + @param ack 1 send ack, request more data from device
+ 0 send nak, read is followed by a stop condition + @return byte read from I2C device + */ +extern unsigned char i2c_read(unsigned char ack); +#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); + + +/**@}*/ +#endif diff --git a/keyboards/ergodox80/ergodox80/matrix.c b/keyboards/ergodox80/ergodox80/matrix.c new file mode 100644 index 0000000000..c352924b52 --- /dev/null +++ b/keyboards/ergodox80/ergodox80/matrix.c @@ -0,0 +1,382 @@ +/* + +Note for ErgoDox EZ customizers: Here be dragons! +This is not a file you want to be messing with. +All of the interesting stuff for you is under keymaps/ :) +Love, Erez + +Copyright 2013 Oleg Kostyuk + +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 . +*/ + +/* + * scan matrix + */ +#include +#include +#include +#include "wait.h" +#include "action_layer.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "ergodox80.h" +#include "i2cmaster.h" +#ifdef DEBUG_MATRIX_SCAN_RATE +#include "timer.h" +#endif + +/* + * This constant define not debouncing time in msecs, but amount of matrix + * scan loops which should be made to get stable debounced results. + * + * On Ergodox matrix scan rate is relatively low, because of slow I2C. + * Now it's only 317 scans/second, or about 3.15 msec/scan. + * According to Cherry specs, debouncing time is 5 msec. + * + * And so, there is no sense to have DEBOUNCE higher than 2. + */ + +#ifndef DEBOUNCE +# define DEBOUNCE 5 +#endif +static uint8_t debouncing = DEBOUNCE; + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; + +static matrix_row_t read_cols(uint8_t row); +static void init_cols(void); +static void unselect_rows(void); +static void select_row(uint8_t row); + +static uint8_t mcp23018_reset_loop; + +#ifdef DEBUG_MATRIX_SCAN_RATE +uint32_t matrix_timer; +uint32_t matrix_scan_count; +#endif + + +__attribute__ ((weak)) +void matrix_init_user(void) {} + +__attribute__ ((weak)) +void matrix_scan_user(void) {} + +__attribute__ ((weak)) +void matrix_init_kb(void) { + matrix_init_user(); +} + +__attribute__ ((weak)) +void matrix_scan_kb(void) { + matrix_scan_user(); +} + +inline +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +void matrix_init(void) +{ + // initialize row and col + + mcp23018_status = init_mcp23018(); + + + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + matrix_debouncing[i] = 0; + } + +#ifdef DEBUG_MATRIX_SCAN_RATE + matrix_timer = timer_read32(); + matrix_scan_count = 0; +#endif + + matrix_init_kb(); + +} + +void matrix_power_up(void) { + mcp23018_status = init_mcp23018(); + + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + matrix_debouncing[i] = 0; + } + +#ifdef DEBUG_MATRIX_SCAN_RATE + matrix_timer = timer_read32(); + matrix_scan_count = 0; +#endif + +} + +uint8_t matrix_scan(void) +{ + if (mcp23018_status) { // if there was an error + if (++mcp23018_reset_loop == 0) { + // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans + // this will be approx bit more frequent than once per second + print("trying to reset mcp23018\n"); + mcp23018_status = init_mcp23018(); + if (mcp23018_status) { + print("left side not responding\n"); + } else { + print("left side attached\n"); + ergodox_blink_all_leds(); + } + } + } + +#ifdef DEBUG_MATRIX_SCAN_RATE + matrix_scan_count++; + + uint32_t timer_now = timer_read32(); + if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) { + print("matrix scan frequency: "); + pdec(matrix_scan_count); + print("\n"); + + matrix_timer = timer_now; + matrix_scan_count = 0; + } +#endif + + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + select_row(i); + wait_us(30); // without this wait read unstable value. + matrix_row_t cols = read_cols(i); + if (matrix_debouncing[i] != cols) { + matrix_debouncing[i] = cols; + if (debouncing) { + debug("bounce!: "); debug_hex(debouncing); debug("\n"); + } + debouncing = DEBOUNCE; + } + unselect_rows(); + } + + if (debouncing) { + if (--debouncing) { + wait_us(1); + // this should be wait_ms(1) but has been left as-is at EZ's request + } else { + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = matrix_debouncing[i]; + } + } + } + + matrix_scan_quantum(); + + return 1; +} + +bool matrix_is_modified(void) +{ + if (debouncing) return false; + return true; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & ((matrix_row_t)1< http://jump.to/fleury +* File: $Id: twimaster.c,v 1.3 2005/07/02 11:14:21 Peter Exp $ +* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 +* Target: any AVR device with hardware TWI +* Usage: API compatible with I2C Software Library i2cmaster.h +**************************************************************************/ +#include +#include + +#include + + +/* define CPU frequency in Mhz here if not defined in Makefile */ +#ifndef F_CPU +#define F_CPU 16000000UL +#endif + +/* I2C clock in Hz */ +#define SCL_CLOCK 400000L + + +/************************************************************************* + Initialization of the I2C bus interface. Need to be called only once +*************************************************************************/ +void i2c_init(void) +{ + /* initialize TWI clock + * minimal values in Bit Rate Register (TWBR) and minimal Prescaler + * bits in the TWI Status Register should give us maximal possible + * I2C bus speed - about 444 kHz + * + * for more details, see 20.5.2 in ATmega16/32 secification + */ + + TWSR = 0; /* no prescaler */ + TWBR = 10; /* must be >= 10 for stable operation */ + +}/* i2c_init */ + + +/************************************************************************* + Issues a start condition and sends address and transfer direction. + return 0 = device accessible, 1= failed to access device +*************************************************************************/ +unsigned char i2c_start(unsigned char address) +{ + uint8_t twst; + + // send START condition + TWCR = (1<= 0: + if section['name'] == 'layout_config': + config.update(loads("\n".join( + section['code_lines'] + ))) + elif section['sub_name'].startswith('layer'): + layer_name = section['sub_name'] + config['layer_lines'][layer_name] = section['code_lines'] + + reset_section() + + def amend_section(line_index, line): + section['end_line'] = line_index + section['code_lines'].append(line) + + config = DEFAULT_CONFIG.copy() + config.update({ + 'layer_lines': collections.OrderedDict(), + 'macro_ids': {'UM'}, + 'unicode_macros': {}, + }) + + section = {} + reset_section() + + with io.open(path, encoding="utf-8") as fh: + for i, line in enumerate(fh): + if line.startswith("#"): + start_section(i, line) + elif line.startswith(" "): + amend_section(i, line[4:]) + else: + # TODO: maybe parse description + pass + + end_section() + assert 'layout' in config + return config + +# header file parsing + +IF0_RE = re.compile(r""" + ^ + #if 0 + $.*? + #endif +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +COMMENT_RE = re.compile(r""" + /\* + .*? + \*/" +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +def read_header_file(path): + with io.open(path, encoding="utf-8") as fh: + data = fh.read() + data, _ = COMMENT_RE.subn("", data) + data, _ = IF0_RE.subn("", data) + return data + + +def regex_partial(re_str_fmt, flags): + def partial(*args, **kwargs): + re_str = re_str_fmt.format(*args, **kwargs) + return re.compile(re_str, flags) + return partial + + +KEYDEF_REP = regex_partial(r""" + #define + \s + ( + (?:{}) # the prefixes + (?:\w+) # the key name + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +ENUM_RE = re.compile(r""" + ( + enum + \s\w+\s + \{ + .*? # the enum content + \} + ; + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +ENUM_KEY_REP = regex_partial(r""" + ( + {} # the prefixes + \w+ # the key name + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +def parse_keydefs(config, data): + prefix_options = "|".join(config['key_prefixes']) + keydef_re = KEYDEF_REP(prefix_options) + enum_key_re = ENUM_KEY_REP(prefix_options) + for match in keydef_re.finditer(data): + yield match.groups()[0] + + for enum_match in ENUM_RE.finditer(data): + enum = enum_match.groups()[0] + for key_match in enum_key_re.finditer(enum): + yield key_match.groups()[0] + + +def parse_valid_keys(config, out_path): + basepath = os.path.abspath(os.path.join(os.path.dirname(out_path))) + dirpaths = [] + subpaths = [] + while len(subpaths) < 6: + path = os.path.join(basepath, *subpaths) + dirpaths.append(path) + dirpaths.append(os.path.join(path, "tmk_core", "common")) + dirpaths.append(os.path.join(path, "quantum")) + subpaths.append('..') + + includes = set(config['keymaps_includes']) + includes.add("keycode.h") + + valid_keycodes = set() + for dirpath, include in it.product(dirpaths, includes): + include_path = os.path.join(dirpath, include) + if os.path.exists(include_path): + header_data = read_header_file(include_path) + valid_keycodes.update( + parse_keydefs(config, header_data) + ) + return valid_keycodes + + +# Keymap Parsing + +def iter_raw_codes(layer_lines, filler, separator): + filler_re = re.compile("[" + filler + " ]") + for line in layer_lines: + line, _ = filler_re.subn("", line.strip()) + if not line: + continue + codes = line.split(separator) + for code in codes[1:-1]: + yield code + + +def iter_indexed_codes(raw_codes, key_indexes): + key_rows = {} + key_indexes_flat = [] + + for row_index, key_indexes in enumerate(key_indexes): + for key_index in key_indexes: + key_rows[key_index] = row_index + key_indexes_flat.extend(key_indexes) + assert len(raw_codes) == len(key_indexes_flat) + for raw_code, key_index in zip(raw_codes, key_indexes_flat): + # we keep track of the row mostly for layout purposes + yield raw_code, key_index, key_rows[key_index] + + +LAYER_CHANGE_RE = re.compile(r""" + (DF|TG|MO)\(\d+\) +""", re.VERBOSE) + + +MACRO_RE = re.compile(r""" + M\(\w+\) +""", re.VERBOSE) + + +UNICODE_RE = re.compile(r""" + U[0-9A-F]{4} +""", re.VERBOSE) + + +NON_CODE = re.compile(r""" + ^[^A-Z0-9_]$ +""", re.VERBOSE) + + +def parse_uni_code(raw_code): + macro_id = "UC_" + ( + unicodedata.name(raw_code) + .replace(" ", "_") + .replace("-", "_") + ) + code = "M({})".format(macro_id) + uc_hex = "{:04X}".format(ord(raw_code)) + return code, macro_id, uc_hex + + +def parse_key_code(raw_code, key_prefixes, valid_keycodes): + if raw_code in valid_keycodes: + return raw_code + + for prefix in key_prefixes: + code = prefix + raw_code + if code in valid_keycodes: + return code + + +def parse_code(raw_code, key_prefixes, valid_keycodes): + if not raw_code: + return 'KC_TRNS', None, None + + if LAYER_CHANGE_RE.match(raw_code): + return raw_code, None, None + + if MACRO_RE.match(raw_code): + macro_id = raw_code[2:-1] + return raw_code, macro_id, None + + if UNICODE_RE.match(raw_code): + hex_code = raw_code[1:] + return parse_uni_code(chr(int(hex_code, 16))) + + if NON_CODE.match(raw_code): + return parse_uni_code(raw_code) + + code = parse_key_code(raw_code, key_prefixes, valid_keycodes) + return code, None, None + + +def parse_keymap(config, key_indexes, layer_lines, valid_keycodes): + keymap = {} + raw_codes = list(iter_raw_codes( + layer_lines, config['filler'], config['separator'] + )) + indexed_codes = iter_indexed_codes(raw_codes, key_indexes) + key_prefixes = config['key_prefixes'] + for raw_code, key_index, row_index in indexed_codes: + code, macro_id, uc_hex = parse_code( + raw_code, key_prefixes, valid_keycodes + ) + # TODO: line numbers for invalid codes + err_msg = "Could not parse key '{}' on row {}".format( + raw_code, row_index + ) + assert code is not None, err_msg + # print(repr(raw_code), repr(code), macro_id, uc_hex) + if macro_id: + config['macro_ids'].add(macro_id) + if uc_hex: + config['unicode_macros'][macro_id] = uc_hex + keymap[key_index] = (code, row_index) + return keymap + + +def parse_keymaps(config, valid_keycodes): + keymaps = collections.OrderedDict() + key_indexes = config.get( + 'key_indexes', KEYBOARD_LAYOUTS[config['layout']] + ) + # TODO: maybe validate key_indexes + + for layer_name, layer_lines, in config['layer_lines'].items(): + keymaps[layer_name] = parse_keymap( + config, key_indexes, layer_lines, valid_keycodes + ) + return keymaps + +# keymap.c output + +USERCODE = """ +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case L1: + ergodox_right_led_1_on(); + break; + case L2: + ergodox_right_led_2_on(); + break; + case L3: + ergodox_right_led_3_on(); + break; + case L4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + break; + case L5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + // case L6: + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + // case L7: + // ergodox_right_led_1_on(); + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + default: + ergodox_board_led_off(); + break; + } +}; +""" + +MACROCODE = """ +#define UC_MODE_WIN 0 +#define UC_MODE_LINUX 1 +#define UC_MODE_OSX 2 + +// TODO: allow default mode to be configured +static uint16_t unicode_mode = UC_MODE_WIN; + +uint16_t hextokeycode(uint8_t hex) {{ + if (hex == 0x0) {{ + return KC_P0; + }} + if (hex < 0xA) {{ + return KC_P1 + (hex - 0x1); + }} + return KC_A + (hex - 0xA); +}} + +void unicode_action_function(uint16_t hi, uint16_t lo) {{ + switch (unicode_mode) {{ + case UC_MODE_WIN: + register_code(KC_LALT); + + register_code(KC_PPLS); + unregister_code(KC_PPLS); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LALT); + break; + case UC_MODE_LINUX: + register_code(KC_LCTL); + register_code(KC_LSFT); + + register_code(KC_U); + unregister_code(KC_U); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LCTL); + unregister_code(KC_LSFT); + break; + case UC_MODE_OSX: + break; + }} +}} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ + if (!record->event.pressed) {{ + return MACRO_NONE; + }} + // MACRODOWN only works in this function + switch(id) {{ + case UM: + unicode_mode = (unicode_mode + 1) % 2; + break; +{macro_cases} +{unicode_macro_cases} + default: + break; + }} + return MACRO_NONE; +}}; +""" + + +UNICODE_MACRO_TEMPLATE = """ +case {macro_id}: + unicode_action_function(0x{hi:02x}, 0x{lo:02x}); + break; +""".strip() + + +def unicode_macro_cases(config): + for macro_id, uc_hex in config['unicode_macros'].items(): + hi = int(uc_hex, 16) >> 8 + lo = int(uc_hex, 16) & 0xFF + unimacro_keys = ", ".join( + "T({})".format( + "KP_" + digit if digit.isdigit() else digit + ) for digit in uc_hex + ) + yield UNICODE_MACRO_TEMPLATE.format( + macro_id=macro_id, hi=hi, lo=lo + ) + + +def iter_keymap_lines(keymap, row_indents=None): + col_widths = {} + col = 0 + # first pass, figure out the column widths + prev_row_index = None + for code, row_index in keymap.values(): + if row_index != prev_row_index: + col = 0 + if row_indents: + col = row_indents[row_index] + col_widths[col] = max(len(code), col_widths.get(col, 0)) + prev_row_index = row_index + col += 1 + + # second pass, yield the cell values + col = 0 + prev_row_index = None + for key_index in sorted(keymap): + code, row_index = keymap[key_index] + if row_index != prev_row_index: + col = 0 + yield "\n" + if row_indents: + for indent_col in range(row_indents[row_index]): + pad = " " * (col_widths[indent_col] - 4) + yield (" /*-*/" + pad) + col = row_indents[row_index] + else: + yield pad + yield " {}".format(code) + if key_index < len(keymap) - 1: + yield "," + # This will be yielded on the next iteration when + # we know that we're not at the end of a line. + pad = " " * (col_widths[col] - len(code)) + prev_row_index = row_index + col += 1 + + +def iter_keymap_parts(config, keymaps): + # includes + for include_path in config['keymaps_includes']: + yield '#include "{}"\n'.format(include_path) + + yield "\n" + + # definitions + for i, macro_id in enumerate(sorted(config['macro_ids'])): + yield "#define {} {}\n".format(macro_id, i) + + yield "\n" + + for i, layer_name in enumerate(config['layer_lines']): + yield '#define L{0:<3} {0:<5} // {1}\n'.format(i, layer_name) + + yield "\n" + + # keymaps + yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n" + + for i, layer_name in enumerate(config['layer_lines']): + # comment + layer_lines = config['layer_lines'][layer_name] + prefixed_lines = " * " + " * ".join(layer_lines) + yield "/*\n{} */\n".format(prefixed_lines) + + # keymap codes + keymap = keymaps[layer_name] + row_indents = ROW_INDENTS.get(config['layout']) + keymap_lines = "".join(iter_keymap_lines(keymap, row_indents)) + yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines) + + yield "};\n\n" + + # no idea what this is for + yield "const uint16_t PROGMEM fn_actions[] = {};\n" + + # macros + yield MACROCODE.format( + macro_cases="", + unicode_macro_cases="\n".join(unicode_macro_cases(config)), + ) + + # TODO: dynamically create blinking lights + yield USERCODE + + +def main(argv=sys.argv[1:]): + if not argv or '-h' in argv or '--help' in argv: + print(__doc__) + return 0 + + in_path = os.path.abspath(argv[0]) + if not os.path.exists(in_path): + print("No such file '{}'".format(in_path)) + return 1 + + if len(argv) > 1: + out_path = os.path.abspath(argv[1]) + else: + dirname = os.path.dirname(in_path) + out_path = os.path.join(dirname, "keymap.c") + + config = parse_config(in_path) + valid_keys = parse_valid_keys(config, out_path) + keymaps = parse_keymaps(config, valid_keys) + + with io.open(out_path, mode="w", encoding="utf-8") as fh: + for part in iter_keymap_parts(config, keymaps): + fh.write(part) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/keyboards/ergodox80/ergodox80/util/readme.md b/keyboards/ergodox80/ergodox80/util/readme.md new file mode 100644 index 0000000000..26c5e5d99c --- /dev/null +++ b/keyboards/ergodox80/ergodox80/util/readme.md @@ -0,0 +1,3 @@ +# ErgoDox EZ Utilities + +The Python script in this directory, by [mbarkhau](https://github.com/mbarkhau) allows you to write out a basic ErgoDox EZ keymap using Markdown notation, and then transpile it to C, which you can then compile. It's experimental, but if you're not comfortable using C, it's a nice option. diff --git a/keyboards/ergodox80/keymaps/default/default.png b/keyboards/ergodox80/keymaps/default/default.png new file mode 100644 index 0000000000..6575f7b5e3 Binary files /dev/null and b/keyboards/ergodox80/keymaps/default/default.png differ diff --git a/keyboards/ergodox80/keymaps/default/default_highres.png b/keyboards/ergodox80/keymaps/default/default_highres.png new file mode 100644 index 0000000000..7d9f045f43 Binary files /dev/null and b/keyboards/ergodox80/keymaps/default/default_highres.png differ diff --git a/keyboards/ergodox80/keymaps/default/keymap.c b/keyboards/ergodox80/keymaps/default/keymap.c new file mode 100644 index 0000000000..2da2c5b0e4 --- /dev/null +++ b/keyboards/ergodox80/keymaps/default/keymap.c @@ -0,0 +1,183 @@ +#include "ergodox80.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | 1 | 2 | Home | | PgUp | 3 | 4 | + * |------|------|------| |------|--------|------| + * | Space| BkSp | End | | PgDn | Tab |Enter | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_1, KC_2, KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP,KC_3, KC_4, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * |------|------|------| |------|------|------| + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,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, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+----------. + * | | | | | | | | + * |------|------|------| |------|------|----------| + * | | | | | | |BrwserBack| + * `--------------------' `------------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + 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_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox80/keymaps/default/readme.md b/keyboards/ergodox80/keymaps/default/readme.md new file mode 100644 index 0000000000..8f6dba45e9 --- /dev/null +++ b/keyboards/ergodox80/keymaps/default/readme.md @@ -0,0 +1,10 @@ +# ErgoDox EZ Default Configuration + +## Changelog + +* Feb 2, 2016 (V1.1): + * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). + +This is what we ship with out of the factory. :) The image says it all: + +![Default](default_highres.png) diff --git a/keyboards/ergodox80/readme.md b/keyboards/ergodox80/readme.md new file mode 100644 index 0000000000..3bbe98fd69 --- /dev/null +++ b/keyboards/ergodox80/readme.md @@ -0,0 +1,165 @@ +# The Easy Way + +If you can find firmware someone else has made that does what you want, that +is the easiest way to customize your ErgoDox. It requires no programming +experience or the setup of a build environment. + +Quickstart: + + - Find and download an existing firmware + [from Other Firmware Options](#other-firmware-options) + + - Then flash the firmware to your [ErgoDox Ez](#ergodox-ez) + or [ErgoDox Infinity](#ergodox-infinity) + +# Customizing Keymaps + +There are many existing keymaps in the "keymaps" directory. If you just want +to use one of them, you don't need to modify keymaps and can just build and +flash the firmware as described below. These directories each have a +"readme.md" file which describe them. + +If none of the existing keymaps suit you, you can create your own custom +keymap. This will require some experience with coding. Follow these steps +to customize a keymap: + + - Read the [qmk firmware README](https://github.com/jackhumbert/qmk_firmware) from top to bottom. Then come back here. :) + + - Clone the qmk_firmware repository + + - Set up your build environment (see below). + + - Make a new directory under "keymaps" to hold your customizations. + + - Copy an existing keymap that is close to what you want, such as + "keymaps/default/keymap.c". + + - Use an editor to modify the new "keymap.c". See "Finding the keycodes you + need" below). Try to edit the comments as well, so the "text graphics" + represent your layout correctly. + + - Compile your new firmware (see below) + + - Flash your firmware (see below) + + - Test the changes. + + - Submit your keymap as a pull request to the qmk_firmware repository so + others can use it. You will want to add a "readme.md" that describes the + keymap. + +# Build Dependencies + +Before you can build, you will need the build dependencies. There is a script +to try to do this for Linux: + + - Run the `util/install_dependencies.sh` script as root. + +For the Infinity, you need the chibios submodules to be checked out or you +will receive errors about the build process being unable to find the chibios +files. Check them out with: + + - Go to the top level repo directory and run: `git submodule update --init --recursive` + +# Flashing Firmware + +## ErgoDox Ez + +The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). + +Linux users need to modify udev rules as described on the Teensy Linux page. +Some distributions provide a binary, maybe called `teensy-loader-cli`). + +To flash the firmware: + + - Build the firmware with `make keymapname`, for example `make default` + - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g. + `ergodox_ez_default.hex` + + - Start the teensy loader. + + - Load the .hex file into it. + + - Press the Reset button by inserting a paperclip gently into the reset hole + in the top right corder. + + - Click the button in the Teensy app to download the firmware. + +## ErgoDox Infinity + +The Infinity is two completely independent keyboards, and needs to be flashed +for the left and right halves seperately. To flash them: + + - Build the firmware with `make infinity-keymapname` + + - Plug in the left hand keyboard only. + + - Press the program button (back of keyboard, above thumb pad). + + - Install the firmware with `sudo make infinity-keymapname-dfu-util` + + - Build left hand firmware with `make infinity-keymapname MASTER=right` + + - Plug in the right hand keyboard only. + + - Press the program button (back of keyboard, above thumb pad). + + - Install the firmware with `sudo make infinity-keymapname-dfu-util MASTER=right` + +More information on the Infinity firmware is available in the [TMK/chibios for +Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md) + +### Infinity Master/Two Halves + +The Infinity is two completely independent keyboards, that can connect together. +You have a few options in how you flash the firmware: + +- Flash the left half, rebuild the firmware with "MASTER=right" and then flash + the right half. This allows you to plug in either half directly to the + computer and is what the above instructions do. + +- Flash the left half, then flash the same firmware on the right. This only + works when the left half is plugged directly to the computer and the keymap + is mirrored. It saves the small extra step of rebuilding with + "MASTER=right". + +- The same as the previous one but with "MASTER=right" when you build the + firmware, then flash the same firmware to both halves. You just have to + directly connect the right half to the computer. + +- For minor changes such as changing only the keymap without having updated + any part of the firmware code itself, you can program only the MASTER half. + It is safest to program both halves though. + +# Contributing your keymap + +The QMK firmware is open-source, so it would be wonderful to have your contribution! Within a very short time after launching we already amassed dozens of user-contributed keymaps, with all sorts of creative improvements and tweaks. This is very valuable for people who aren't comfortable coding, but do want to customize their ErgoDox. To make it easy for these people to use your layout, I recommend submitting your PR in the following format. + +1. All work goes inside your keymap subdirectory (`keymaps/german` in this example). +2. `keymap.c` - this is your actual keymap file; please update the ASCII comments in the file so they correspond with what you did. +3. `readme.md` - a readme file, which GitHub would display by default when people go to your directory. Explain what's different about your keymap, what you tweaked or how it works. No specific format to follow, just communicate what you did. :) +4. Any graphics you wish to add. This is absolutely not a must. If you feel like it, you can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to make something and grab a screenshot, but it's really not a must. If you do have graphics, your readme can just embed the graphic as a link, just like I did with the default layout. + +# Finding the keycodes you need + +Let's say you want a certain key in your layout to send a colon; to figure out what keycode to use to make it do that, you're going to need `quantum/keymap_common.h`. + +That file contains a big list of all of the special, fancy keys (like, being able to send % on its own and whatnot). + +If you want to send a plain vanilla key, you can look up its code under `doc/keycode.txt`. That's where all the boring keys hang out. + +# Other Firmware Options + +There are external tools for customizing the layout, but those do not use +the featurs of this qmk firmware. These sites include: + + - [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) for Ez + - [Input Club configurator](https://input.club/configurator-ergodox) for Infinity, provides left and right files + +You can also find an existing firmware that you like, for example from: + + - [Dozens of community-contributed keymaps](http://qmk.fm/keyboards/ergodox/) + +This qmk firmware also provides the ability to customize keymaps, but requires +a toolchain to build the firmware. See below for instructions on building +firmware and customizing keymaps. diff --git a/keyboards/ergodox80/rules.mk b/keyboards/ergodox80/rules.mk new file mode 100644 index 0000000000..ac63d4eff2 --- /dev/null +++ b/keyboards/ergodox80/rules.mk @@ -0,0 +1,28 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make = Make software. +# +# make clean = Clean out built project files. +# +# That's pretty much all you need. To compile, always go make clean, +# followed by make. +# +# For advanced users only: +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +#---------------------------------------------------------------------------- +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ +SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= yes # Unicode -- cgit v1.2.1 From 36e16b46e37b3bcc1753ff0a2006179f0dd005e7 Mon Sep 17 00:00:00 2001 From: profet23 Date: Fri, 2 Sep 2016 17:18:39 -0400 Subject: Removing/editing non applicable readme --- keyboards/ergodox80/keymaps/default/default.png | Bin 193672 -> 0 bytes .../ergodox80/keymaps/default/default_highres.png | Bin 1459389 -> 0 bytes keyboards/ergodox80/keymaps/default/readme.md | 10 -- keyboards/ergodox80/readme.md | 163 +-------------------- 4 files changed, 2 insertions(+), 171 deletions(-) delete mode 100644 keyboards/ergodox80/keymaps/default/default.png delete mode 100644 keyboards/ergodox80/keymaps/default/default_highres.png delete mode 100644 keyboards/ergodox80/keymaps/default/readme.md diff --git a/keyboards/ergodox80/keymaps/default/default.png b/keyboards/ergodox80/keymaps/default/default.png deleted file mode 100644 index 6575f7b5e3..0000000000 Binary files a/keyboards/ergodox80/keymaps/default/default.png and /dev/null differ diff --git a/keyboards/ergodox80/keymaps/default/default_highres.png b/keyboards/ergodox80/keymaps/default/default_highres.png deleted file mode 100644 index 7d9f045f43..0000000000 Binary files a/keyboards/ergodox80/keymaps/default/default_highres.png and /dev/null differ diff --git a/keyboards/ergodox80/keymaps/default/readme.md b/keyboards/ergodox80/keymaps/default/readme.md deleted file mode 100644 index 8f6dba45e9..0000000000 --- a/keyboards/ergodox80/keymaps/default/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# ErgoDox EZ Default Configuration - -## Changelog - -* Feb 2, 2016 (V1.1): - * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). - -This is what we ship with out of the factory. :) The image says it all: - -![Default](default_highres.png) diff --git a/keyboards/ergodox80/readme.md b/keyboards/ergodox80/readme.md index 3bbe98fd69..b5c09f9222 100644 --- a/keyboards/ergodox80/readme.md +++ b/keyboards/ergodox80/readme.md @@ -1,165 +1,6 @@ -# The Easy Way +# Ergodox 80 key support -If you can find firmware someone else has made that does what you want, that -is the easiest way to customize your ErgoDox. It requires no programming -experience or the setup of a build environment. +This is based on the ergodox-ez qmk firmware but is for ergodoxes with 80 keys. -Quickstart: - - Find and download an existing firmware - [from Other Firmware Options](#other-firmware-options) - - Then flash the firmware to your [ErgoDox Ez](#ergodox-ez) - or [ErgoDox Infinity](#ergodox-infinity) - -# Customizing Keymaps - -There are many existing keymaps in the "keymaps" directory. If you just want -to use one of them, you don't need to modify keymaps and can just build and -flash the firmware as described below. These directories each have a -"readme.md" file which describe them. - -If none of the existing keymaps suit you, you can create your own custom -keymap. This will require some experience with coding. Follow these steps -to customize a keymap: - - - Read the [qmk firmware README](https://github.com/jackhumbert/qmk_firmware) from top to bottom. Then come back here. :) - - - Clone the qmk_firmware repository - - - Set up your build environment (see below). - - - Make a new directory under "keymaps" to hold your customizations. - - - Copy an existing keymap that is close to what you want, such as - "keymaps/default/keymap.c". - - - Use an editor to modify the new "keymap.c". See "Finding the keycodes you - need" below). Try to edit the comments as well, so the "text graphics" - represent your layout correctly. - - - Compile your new firmware (see below) - - - Flash your firmware (see below) - - - Test the changes. - - - Submit your keymap as a pull request to the qmk_firmware repository so - others can use it. You will want to add a "readme.md" that describes the - keymap. - -# Build Dependencies - -Before you can build, you will need the build dependencies. There is a script -to try to do this for Linux: - - - Run the `util/install_dependencies.sh` script as root. - -For the Infinity, you need the chibios submodules to be checked out or you -will receive errors about the build process being unable to find the chibios -files. Check them out with: - - - Go to the top level repo directory and run: `git submodule update --init --recursive` - -# Flashing Firmware - -## ErgoDox Ez - -The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). - -Linux users need to modify udev rules as described on the Teensy Linux page. -Some distributions provide a binary, maybe called `teensy-loader-cli`). - -To flash the firmware: - - - Build the firmware with `make keymapname`, for example `make default` - - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g. - `ergodox_ez_default.hex` - - - Start the teensy loader. - - - Load the .hex file into it. - - - Press the Reset button by inserting a paperclip gently into the reset hole - in the top right corder. - - - Click the button in the Teensy app to download the firmware. - -## ErgoDox Infinity - -The Infinity is two completely independent keyboards, and needs to be flashed -for the left and right halves seperately. To flash them: - - - Build the firmware with `make infinity-keymapname` - - - Plug in the left hand keyboard only. - - - Press the program button (back of keyboard, above thumb pad). - - - Install the firmware with `sudo make infinity-keymapname-dfu-util` - - - Build left hand firmware with `make infinity-keymapname MASTER=right` - - - Plug in the right hand keyboard only. - - - Press the program button (back of keyboard, above thumb pad). - - - Install the firmware with `sudo make infinity-keymapname-dfu-util MASTER=right` - -More information on the Infinity firmware is available in the [TMK/chibios for -Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md) - -### Infinity Master/Two Halves - -The Infinity is two completely independent keyboards, that can connect together. -You have a few options in how you flash the firmware: - -- Flash the left half, rebuild the firmware with "MASTER=right" and then flash - the right half. This allows you to plug in either half directly to the - computer and is what the above instructions do. - -- Flash the left half, then flash the same firmware on the right. This only - works when the left half is plugged directly to the computer and the keymap - is mirrored. It saves the small extra step of rebuilding with - "MASTER=right". - -- The same as the previous one but with "MASTER=right" when you build the - firmware, then flash the same firmware to both halves. You just have to - directly connect the right half to the computer. - -- For minor changes such as changing only the keymap without having updated - any part of the firmware code itself, you can program only the MASTER half. - It is safest to program both halves though. - -# Contributing your keymap - -The QMK firmware is open-source, so it would be wonderful to have your contribution! Within a very short time after launching we already amassed dozens of user-contributed keymaps, with all sorts of creative improvements and tweaks. This is very valuable for people who aren't comfortable coding, but do want to customize their ErgoDox. To make it easy for these people to use your layout, I recommend submitting your PR in the following format. - -1. All work goes inside your keymap subdirectory (`keymaps/german` in this example). -2. `keymap.c` - this is your actual keymap file; please update the ASCII comments in the file so they correspond with what you did. -3. `readme.md` - a readme file, which GitHub would display by default when people go to your directory. Explain what's different about your keymap, what you tweaked or how it works. No specific format to follow, just communicate what you did. :) -4. Any graphics you wish to add. This is absolutely not a must. If you feel like it, you can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to make something and grab a screenshot, but it's really not a must. If you do have graphics, your readme can just embed the graphic as a link, just like I did with the default layout. - -# Finding the keycodes you need - -Let's say you want a certain key in your layout to send a colon; to figure out what keycode to use to make it do that, you're going to need `quantum/keymap_common.h`. - -That file contains a big list of all of the special, fancy keys (like, being able to send % on its own and whatnot). - -If you want to send a plain vanilla key, you can look up its code under `doc/keycode.txt`. That's where all the boring keys hang out. - -# Other Firmware Options - -There are external tools for customizing the layout, but those do not use -the featurs of this qmk firmware. These sites include: - - - [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) for Ez - - [Input Club configurator](https://input.club/configurator-ergodox) for Infinity, provides left and right files - -You can also find an existing firmware that you like, for example from: - - - [Dozens of community-contributed keymaps](http://qmk.fm/keyboards/ergodox/) - -This qmk firmware also provides the ability to customize keymaps, but requires -a toolchain to build the firmware. See below for instructions on building -firmware and customizing keymaps. -- cgit v1.2.1 From 295ef0d9649b7482c380f38dd6157879df4af91d Mon Sep 17 00:00:00 2001 From: Major Koos Date: Fri, 2 Sep 2016 16:14:40 -0700 Subject: Add support for JD40 MKII PCB RGB Included. --- keyboards/jd40/Makefile | 74 ++++++++++++++ keyboards/jd40/config.h | 79 +++++++++++++++ keyboards/jd40/jd40.c | 26 +++++ keyboards/jd40/jd40.h | 45 +++++++++ keyboards/jd40/keymaps/default/keymap.c | 164 ++++++++++++++++++++++++++++++++ keyboards/jd40/readme.md | 17 ++++ 6 files changed, 405 insertions(+) create mode 100644 keyboards/jd40/Makefile create mode 100644 keyboards/jd40/config.h create mode 100644 keyboards/jd40/jd40.c create mode 100644 keyboards/jd40/jd40.h create mode 100644 keyboards/jd40/keymaps/default/keymap.c create mode 100644 keyboards/jd40/readme.md diff --git a/keyboards/jd40/Makefile b/keyboards/jd40/Makefile new file mode 100644 index 0000000000..242748111c --- /dev/null +++ b/keyboards/jd40/Makefile @@ -0,0 +1,74 @@ + + +# 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 ?= yes # 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 +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow + +ifndef QUANTUM_DIR + include ../../Makefile +endif + diff --git a/keyboards/jd40/config.h b/keyboards/jd40/config.h new file mode 100644 index 0000000000..e2594f4b37 --- /dev/null +++ b/keyboards/jd40/config.h @@ -0,0 +1,79 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#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 0x0001 +#define MANUFACTURER geekhack +#define PRODUCT jd40v2 +#define DESCRIPTION t.m.k. keyboard firmware for JD40 MKII + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F0, F1, F5, B4 } +#define MATRIX_COL_PINS { F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#define RGB_DI_PIN D3 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 12 // Number of LEDs +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +#endif diff --git a/keyboards/jd40/jd40.c b/keyboards/jd40/jd40.c new file mode 100644 index 0000000000..fa06356d97 --- /dev/null +++ b/keyboards/jd40/jd40.c @@ -0,0 +1,26 @@ +#include "jd40.h" + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + + // if (usb_led & (1<event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +void matrix_scan_user(void) { + +// Layer LED indicators +// ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster + uint32_t layer = layer_state; + if (layer & (1<<1)) { + //gh60_wasd_leds_on(); + } else { + //gh60_wasd_leds_off(); + } + + if (layer & (1<<2)) { + //gh60_esc_led_on(); + } else { + //gh60_esc_led_off(); + } +}; + +#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + switch (id) { + case RGBLED_TOGGLE: + //led operations + 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; + static uint8_t shift_esc_shift_mask; + // Shift + ESC = ~ + 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; + } +}; diff --git a/keyboards/jd40/readme.md b/keyboards/jd40/readme.md new file mode 100644 index 0000000000..7daa0980eb --- /dev/null +++ b/keyboards/jd40/readme.md @@ -0,0 +1,17 @@ +## jd40 mkii keyboard firmware + + Pins: + MATRIX_ROW_PINS { F0, F1, F5, B4 } + MATRIX_COL_PINS { F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2 } + RGB_DI_PIN D3 + +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/jd40 folder. +Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Amtel Flip to program your .hex file. -- cgit v1.2.1 From 11224a00fe79bcba8ed596847000b7ad8118b95f Mon Sep 17 00:00:00 2001 From: Major Koos Date: Fri, 2 Sep 2016 16:42:40 -0700 Subject: Add rules.mk file --- keyboards/jd40/rules.mk | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 keyboards/jd40/rules.mk diff --git a/keyboards/jd40/rules.mk b/keyboards/jd40/rules.mk new file mode 100644 index 0000000000..2f18fdf10d --- /dev/null +++ b/keyboards/jd40/rules.mk @@ -0,0 +1,69 @@ + + +# 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 ?= yes # 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 +KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow \ No newline at end of file -- cgit v1.2.1 From 7fd5b6581a660b2d1d6e1605533a6b6f8bda3472 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 3 Sep 2016 20:29:29 -0500 Subject: Updated readme to have better backlight breathing info. --- readme.md | 264 +++++++++++++++++++++++++------------------------------------- 1 file changed, 104 insertions(+), 160 deletions(-) diff --git a/readme.md b/readme.md index 70725bf81a..371470bc36 100644 --- a/readme.md +++ b/readme.md @@ -54,11 +54,11 @@ Here are the steps 1. Install the Windows 10 subsystem for Linux, following [these instructions](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). 2. If you have previously cloned the repository using the normal Git bash, you will need to clean up the line endings. If you have cloned it after 20th of August 2016, you are likely fine. To clean up the line endings do the following 1. Make sure that you have no changes you haven't committed by running `git status`, if you do commit them first - 2. From within the Git bash run `git rm --cached -r .` + 2. From within the Git bash run �git rm --cached -r .` 3. Followed by `git reset --hard` 3. Start the "Bash On Ubuntu On Windows" from the start menu -4. With the bash open, navigate to your Git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive. -5. Run `sudo util/install_dependencies.sh`. +4. With the bash open, navigate to your git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive. +5. Run `sudo util/install_dependencies.sh`. 6. After a while the installation will finish, and you are good to go **Note** From time to time, the dependencies might change, so just run `install_dependencies.sh` again if things are not working. @@ -69,12 +69,11 @@ Here are the steps ### Windows (Vista and later) 1. If you have ever installed WinAVR, uninstall it. 2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**. -3. If you are going to flash Infinity based keyboards you will need to install dfu-util, refer to the instructions by [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware). -4. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. -5. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. -6. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. -7. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! -8. Future build commands should be run from the MHV AVR Shell, which sets up an environment compatible with colorful build output. The standard Command Prompt will also work, but add `COLOR=false` to the end of all make commands when using it. +3. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. +4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. +5. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. +6. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! +7. Future build commands should be run from the MHV AVR Shell, which sets up an environment compatible with colorful build output. The standard Command Prompt will also work, but add `COLOR=false` to the end of all make commands when using it. ### Mac If you're using [homebrew,](http://brew.sh/) you can use the following commands: @@ -91,13 +90,9 @@ You can also try these instructions: 2. Install the Command Line Tools from `Xcode->Preferences->Downloads`. 3. Install [DFU-Programmer][dfu-prog]. -If you are going to flash Infinity based keyboards you will also need dfu-util - - brew install dfu-util - ### Linux -To ensure you are always up to date, you can just run `sudo utils/install_dependencies.sh`. That should always install all the dependencies needed. +To ensure you are always up to date, you can just run `sudo utils/install_dependencies.sh`. That should always install all the dependencies needed. You can also install things manually, but this documentation might not be always up to date with all requirements. @@ -158,107 +153,47 @@ In every keymap folder, the following files are recommended: * `config.h` - the options to configure your keymap * `keymap.c` - all of your keymap code, required * `Makefile` - the features of QMK that are enabled, required to run `make` in your keymap folder -* `readme.md` - a description of your keymap, how others might use it, and explanations of features +* `readme.md` - a description of your keymap, how others might use it, and explanations of features ## The `make` command -The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). - -**NOTE:** To abort a make command press `Ctrl-c` - -The following instruction refers to these folders. - -* The `root` (`/`) folder is the qmk_firmware folder, in which are `doc`, `keyboard`, `quantum`, etc. -* The `keyboard` folder is any keyboard project's folder, like `/keyboards/planck`. -* The `keymap` folder is any keymap's folder, like `/keyboards/planck/keymaps/default`. -* The `subproject` folder is the subproject folder of a keyboard, like `/keyboards/ergodox/ez` - -### Simple instructions for building and uploading a keyboard - -**Most keyboards have more specific instructions in the keyboard specific readme.md file, so please check that first** - -If the `keymap` folder contains a file name `Makefile` - -1. Change the directory to the `keymap` folder -2. Run `make -` - -Otherwise, if there's no `Makefile` in the `keymap` folder - -1. Enter the `keyboard` folder -2. Run `make --` - -In the above commands, replace: - -* `` with the name of your keymap -* `` with the name of the subproject (revision or sub-model of your keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`. - * If the keyboard doesn't have a subproject, or if you are happy with the default (defined in `rules.mk` file of the `keyboard` folder), you can leave it out. But remember to also remove the dash (`-`) from the command. -* `` The programmer to use. Most keyboards use `dfu`, but some use `teensy`. Infinity keyboards use `dfu-util`. Check the readme file in the keyboard folder to find out which programmer to use. - * If you don't add `----`, where: - -* `` is the name of the keyboard, for example `planck` - * Use `allkb` to compile all keyboards -* `` is the name of the subproject (revision or sub-model of the keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`. - * If the keyboard doesn't have any subprojects, it can be left out - * To compile the default subproject, you can leave it out, or specify `defaultsp` - * Use `allsp` to compile all subprojects -* `` is the name of the keymap, for example `algernon` - * Use `allkm` to compile all keymaps -* `` will be explained in more detail below. +The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). You can run `make` from the root (`/`), your keyboard folder (`/keyboards//`), or your keymap folder (`/keyboards//keymaps//`) if you have a `Makefile` there (see the example [here](/doc/keymap_makefile_example.mk)). -**Note:** When you leave some parts of the command out, you should also remove the dash (`-`). +By default, this will generate a `_.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. -As mentioned above, there are some shortcuts, when you are in a: +Below are some definitions that will be useful: -* `keyboard` folder, the command will automatically fill the `` part. So you only need to type `--` -* `subproject` folder, it will fill in both `` and `` -* `keymap` folder, then `` and `` will be filled in. If you need to specify the `` use the following syntax `-` - * Note in order to support this shortcut, the keymap needs its own Makefile (see the example [here](/doc/keymap_makefile_example.mk)) -* `keymap` folder of a `subproject`, then everything except the `` will be filled in +* The "root" (`/`) folder is the qmk_firmware folder, in which are `doc`, `keyboard`, `quantum`, etc. +* The "keyboard" folder is any keyboard project's folder, like `/keyboards/planck`. +* The "keymap" folder is any keymap's folder, like `/keyboards/planck/keymaps/default`. -The `` means the following -* If no target is given, then it's the same as `all` below -* `all` compiles the keyboard and generates a `_.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. -* `dfu`, `teensy` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for Infinity keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. **Note** that some operating systems needs root access for these commands to work, so in that case you need to run for example `sudo make dfu`. -* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems. +Below is a list of the useful `make` commands in QMK: -Some other targets are supported but, but not important enough to be documented here. Check the source code of the make files for more information. - -You can also add extra options at the end of the make command line, after the target +* `make` - builds your keyboard and keymap depending on which folder you're in. This defaults to the "default" layout (unless in a keymap folder), and Planck keyboard in the root folder + * `make keyboard=` - specifies the keyboard (only to be used in root) + * `make keymap=` - specifies the keymap (only to be used in root and keyboard folder - not needed when in keymap folder) +* `make clean` - cleans the `.build` folder, ensuring that everything is re-built +* `make dfu` - (requires dfu-programmer) builds and flashes the keymap to your keyboard once placed in reset/dfu mode (button or press `KC_RESET`). This does not work for Teensy-based keyboards like the ErgoDox EZ. + * `keyboard=` and `keymap=` are compatible with this +* `make all-keyboards` - builds all keymaps for all keyboards and outputs status of each (use in root) +* `make all-keyboards-default` - builds all default keymaps for all keyboards and outputs status of each (use in root) +* `make all-keymaps [keyboard=]` - builds all of the keymaps for whatever keyboard folder you're in, or specified by `` +* `make all-keyboards-*`, `make all-keyboards-default-*` and `make all-keymaps-* [keyboard=]` - like the normal "make-all-*" commands, but the last string aftter the `-` (for example clean) is passed to the keyboard make command. +Other, less useful functionality: * `make COLOR=false` - turns off color output * `make SILENT=true` - turns off output besides errors/warnings -* `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug) - -The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option. - -Here are some examples commands - -* `make allkb-allsp-allkm` builds everything (all keyboards, all subprojects, all keymaps). Running just `make` from the `root` will also run this. -* `make` from within a `keyboard` directory, is the same as `make keyboard-allsp-allkm`, which compiles all subprojects and keymaps of the keyboard. **NOTE** that this behaviour has changed. Previously it compiled just the default keymap. -* `make ergodox-infinity-algernon-clean` will clean the build output of the Ergodox Infinity keyboard. This example uses the full syntax and can be run from any folder with a `Makefile` -* `make dfu COLOR=false` from within a keymap folder, builds and uploads the keymap, but without color output. +* `make VERBOSE=true` - outputs all of the avr-gcc stuff (not interesting) ## The `Makefile` -There are 5 different `make` and `Makefile` locations: +There are 3 different `make` and `Makefile` locations: * root (`/`) * keyboard (`/keyboards//`) * keymap (`/keyboards//keymaps//`) -* subproject (`/keyboards//`) -* subproject keymap (`/keyboards///keymaps/`) -The root contains the code used to automatically figure out which keymap or keymaps to compile based on your current directory and commandline arguments. It's considered stable, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. **The file is required if you want to run `make` in the keymap folder.** - -For keyboards and subprojects, the make files are split in two parts `Makefile` and `rules.mk`. All settings can be found in the `rules.mk` file, while the `Makefile` is just there for support and including the root `Makefile`. Keymaps contain just one `Makefile` for simplicity. +The root contains the code used to automatically figure out which keymap or keymaps to compile based on your current directory and commandline arguments. It's considered stable, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. **It is required if you want to run `make` in the keymap folder.** ### Makefile options @@ -433,7 +368,7 @@ We've added shortcuts to make common modifier/tap (mod-tap) mappings more compac Steve Losh [described](http://stevelosh.com/blog/2012/10/a-modern-space-cadet/) the Space Cadet Shift quite well. Essentially, you hit the left Shift on its own, and you get an opening parenthesis; hit the right Shift on its own, and you get the closing one. When hit with other keys, the Shift key keeps working as it always does. Yes, it's as cool as it sounds. -To use it, use `KC_LSPO` (Left Shift, Parens Open) for your left Shift on your keymap, and `KC_RSPC` (Right Shift, Parens Close) for your right Shift. +To use it, use `KC_LSPO` (Left Shift, Parens Open) for your left Shift on your keymap, and `KC_RSPC` (Right Shift, Parens Close) for your right Shift. It's defaulted to work on US keyboards, but if your layout uses different keys for parenthesis, you can define those in your `config.h` like this: @@ -530,11 +465,11 @@ For the sake of flexibility, tap-dance actions can be either a pair of keycodes, ### Examples -Here's a simple example for a single definition: +Here's a simple example for a single definition: 1. In your `makefile`, add `TAP_DANCE_ENABLE = yes` 2. In your `config.h` (which you can copy from `qmk_firmware/keyboards/planck/config.h` to your keymap directory), add `#define TAPPING_TERM 200` -3. In your `keymap.c` file, define the variables and definitions, then add to your keymap: +3. In your `keymap.c` file, define the variables and definitions, then add to your keymap: ```c //Tap Dance Declarations @@ -550,10 +485,10 @@ qk_tap_dance_action_t tap_dance_actions[] = { }; //In Layer declaration, add tap dance item in place of a key code -TD(TD_ESC_CAPS) +TD(TD_ESC_CAPS) ``` -Here's a more complex example involving custom actions: +Here's a more complex example involving custom actions: ```c enum { @@ -828,11 +763,11 @@ To enable them, first add a new element to the `planck_keycodes` enum -- `DYNAMI Afterwards create a new layer called `_DYN`: #define _DYN 6 /* almost any other free number should be ok */ - + Below these two modifications include the `dynamic_macro.h` header: #include "dynamic_macro.h"` - + Then define the `_DYN` layer with the following keys: `DYN_REC_START1`, `DYN_MACRO_PLAY1`,`DYN_REC_START2` and `DYN_MACRO_PLAY2`. It may also contain other keys, it doesn't matter apart from the fact that you won't be able to record these keys in the dynamic macros. [_DYN]= { @@ -841,7 +776,7 @@ Then define the `_DYN` layer with the following keys: `DYN_REC_START1`, `DYN_MAC {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, - + Add the following code to the very beginning of your `process_record_user()` function: if (!process_record_dynamic_macro(keycode, record)) { @@ -1030,6 +965,66 @@ In the default script of AutoHotkey you can define custom hotkeys. The hotkeys above are for the combination CtrlAltGui and CtrlAltGuiShift plus the letter a. AutoHotkey inserts the Text right of `Send, ` when this combination is pressed. +## Backlight Breathing + +In order to enable backlight breathing, the following line must be added to your config.h file. + + #define BACKLIGHT_BREATHING + +The following function calls are used to control the breathing effect. + +* ```breathing_enable()``` - Enable the free-running breathing effect. +* ```breathing_disable()``` - Disable the free-running breathing effect immediately. +* ```breathing_self_disable()``` - Disable the free-running breathing effect after the current effect ends. +* ```breathing_toggle()``` - Toggle the free-running breathing effect. +* ```breathing_defaults()``` - Reset the speed and brightness settings of the breathing effect. + +The following function calls are used to control the maximum brightness of the breathing effect. + +* ```breathing_intensity_set(value)``` - Set the brightness of the breathing effect when it is at its max value. +* ```breathing_intensity_default()``` - Reset the brightness of the breathing effect to the default value based on the current backlight intensity. + +The following function calls are used to control the cycling speed of the breathing effect. + +* ```breathing_speed_set(value)``` - Set the speed of the breathing effect - how fast it cycles. +* ```breathing_speed_inc(value)``` - Increase the speed of the breathing effect by a fixed value. +* ```breathing_speed_dec(value)``` - Decrease the speed of the breathing effect by a fixed value. +* ```breathing_speed_default()``` - Reset the speed of the breathing effect to the default value. + +The following example shows how to enable the backlight breathing effect when the FUNCTION layer macro button is pressed: + + case MACRO_FUNCTION: + if (record->event.pressed) + { + breathing_speed_set(3); + breathing_enable(); + layer_on(LAYER_FUNCTION); + } + else + { + breathing_speed_set(1); + breathing_self_disable(); + layer_off(LAYER_FUNCTION); + } + break; + +The following example shows how to pulse the backlight on-off-on when the RAISED layer macro button is pressed: + + case MACRO_RAISED: + if (record->event.pressed) + { + layer_on(LAYER_RAISED); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST); + } + else + { + layer_off(LAYER_RAISED); + update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST); + } + break; + ## RGB Under Glow Mod ![Planck with RGB Underglow](https://raw.githubusercontent.com/jackhumbert/qmk_firmware/master/keyboards/planck/keymaps/yang/planck-with-rgb-underglow.jpg) @@ -1043,7 +1038,7 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring In order to use the underglow timer functions, you need to have `#define RGBLIGHT_TIMER` in your `config.h`, and have audio disabled (`AUDIO_ENABLE = no` in your Makefile). Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the `F4` pin by default: - + #define RGB_DI_PIN F4 // The pin your RGB strip is wired to #define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio) #define RGBLED_NUM 14 // Number of LEDs @@ -1090,15 +1085,15 @@ If your keyboard is running an Atmega chip (atmega32u4 and others), it's pretty The `USB Device descriptor parameter` block contains parameters are used to uniquely identify your keyboard, but they don't really matter to the machine. -Your `MATRIX_ROWS` and `MATRIX_COLS` are the numbers of rows and cols in your keyboard matrix - this may be different than the number of actual rows and columns on your keyboard. There are some tricks you can pull to increase the number of keys in a given matrix, but most keyboards are pretty straight-forward. +Your `MATRIX_ROWS` and `MATRIX_COLS` are the numbers of rows and cols in your keyboard matrix - this may be different than the number of actual rows and columns on your keyboard. There are some tricks you can pull to increase the number of keys in a given matrix, but most keyboards are pretty straight-forward. The `MATRIX_ROW_PINS` and `MATRIX_COL_PINS` are the pins your MCU uses on each row/column. Your schematic (if you have one) will have this information on it, and the values will vary depending on your setup. This is one of the most important things to double-check in getting your keyboard setup correctly. For the `DIODE_DIRECTION`, most hand-wiring guides will instruct you to wire the diodes in the `COL2ROW` position, but it's possible that they are in the other - people coming from EasyAVR often use `ROW2COL`. Nothing will function if this is incorrect. -`BACKLIGHT_PIN` is the pin that your PWM-controlled backlight (if one exists) is hooked-up to. Currently only B5, B6, and B7 are supported. +`BACKLIGHT_PIN` is the pin that your PWM-controlled backlight (if one exists) is hooked-up to. Currently only B5, B6, and B7 are supported. -`BACKLIGHT_BREATHING` is a fancier backlight feature, and uses one of the timers. +`BACKLIGHT_BREATHING` is a fancier backlight feature that adds breathing/pulsing/fading effects to the backlight. It uses the same timer as the normal backlight. These breathing effects must be called by code in your keymap. `BACKLIGHT_LEVELS` is how many levels exist for your backlight - max is 15, and they are computed automatically from this number. @@ -1141,55 +1136,4 @@ Here is where you can (optionally) define your `KEYMAP` function to remap your m } ``` -Each of the `kxx` variables needs to be unique, and usually follows the format `k`. You can place `KC_NO` where your dead keys are in your matrix. - -# Unit Testing - -If you are new to unit testing, then you can find many good resources on internet. However most of it is scattered around in small pieces here and there, and there's also many different opinions, so I won't give any recommendations. - -Instead I recommend these two books, explaining two different styles of Unit Testing in detail. - -* "Test Driven Development: By Example: Kent Beck" -* "Growing Object-Oriented Software, Guided By Tests: Steve Freeman, Nat Pryce" - -If you prefer videos there are Uncle Bob's [Clean Coders Videos](https://cleancoders.com/), which unfortunately cost quite a bit, especially if you want to watch many of them. But James Shore has a free [Let's Play](http://www.jamesshore.com/Blog/Lets-Play) video series. - -## Google Test and Google Mock -It's possible to Unit Test your code using [Google Test](https://github.com/google/googletest). The Google Test framework also includes another component for writing testing mocks and stubs, called "Google Mock". For information how to write the actual tests, please refer to the documentation on that site. - -## Use of C++ - -Note that Google Test and therefore any test has to be written in C++, even if the rest of the QMK codebases is written in C. This should hopefully not be a problem even if you don't know any C++, since there's quite clear documentation and examples of the required C++ features, and you can write the rest of the test code almost as you would write normal C. Note that some compiler errors which you might get can look quite scary, but just read carefully what it says, and you should be ok. - -One thing to remember, is that you have to append `extern "C"` around all of your C file includes. - -## Adding tests for new or existing features - -If you want to unit test some feature, then take a look at the existing serial_link tests, in the `quantum/serial_link/tests folder`, and follow the steps below to create a similar structure. - -1. If it doesn't already exist, add a test subfolder to the folder containing the feature. -2. Create a `testlist.mk` and a `rules.mk` file in that folder. -3. Include those files from the root folder `testlist.mk`and `build_test.mk` respectively. -4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the serial_link tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests. -5. Define the source files and required options in the `rules.mk` file. - * `_SRC` for source files - * `_DEFS` for additional defines - * `_INC` for additional include folders -6. Write the tests in a new cpp file inside the test folder you created. That file has to be one of the files included from the `rules.mk` file. - -Note how there's several different tests, each mocking out a separate part. Also note that each of them only compiles the very minimum that's needed for the tests. It's recommend that you try to do the same. For a relevant video check out [Matt Hargett "Advanced Unit Testing in C & C++](https://www.youtube.com/watch?v=Wmy6g-aVgZI) - -## Running the tests - -To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test-matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer. - -## Debugging the tests - -If there are problems with the tests, you can find the executable in the `./build/test` folder. You should be able to run those with GDB or a similar debugger. - -## Full Integration tests - -It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing. - -In that model you would emulate the input, and expect a certain output from the emulated keyboard. - +Each of the `kxx` variables needs to be unique, and usually follows the format `k`. You can place `KC_NO` where your dead keys are in your matrix. \ No newline at end of file -- cgit v1.2.1 From f065652812e6ac783db50e58a42fbb01ea817fbc Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 3 Sep 2016 20:33:34 -0500 Subject: Updated doc to contain breathing information. --- readme.md | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 144 insertions(+), 29 deletions(-) diff --git a/readme.md b/readme.md index 371470bc36..903c2b1e8c 100644 --- a/readme.md +++ b/readme.md @@ -54,10 +54,10 @@ Here are the steps 1. Install the Windows 10 subsystem for Linux, following [these instructions](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). 2. If you have previously cloned the repository using the normal Git bash, you will need to clean up the line endings. If you have cloned it after 20th of August 2016, you are likely fine. To clean up the line endings do the following 1. Make sure that you have no changes you haven't committed by running `git status`, if you do commit them first - 2. From within the Git bash run �git rm --cached -r .` + 2. From within the Git bash run `git rm --cached -r .` 3. Followed by `git reset --hard` 3. Start the "Bash On Ubuntu On Windows" from the start menu -4. With the bash open, navigate to your git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive. +4. With the bash open, navigate to your Git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive. 5. Run `sudo util/install_dependencies.sh`. 6. After a while the installation will finish, and you are good to go @@ -69,11 +69,12 @@ Here are the steps ### Windows (Vista and later) 1. If you have ever installed WinAVR, uninstall it. 2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**. -3. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. -4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. -5. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. -6. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! -7. Future build commands should be run from the MHV AVR Shell, which sets up an environment compatible with colorful build output. The standard Command Prompt will also work, but add `COLOR=false` to the end of all make commands when using it. +3. If you are going to flash Infinity based keyboards you will need to install dfu-util, refer to the instructions by [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware). +4. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. +5. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. +6. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. +7. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! +8. Future build commands should be run from the MHV AVR Shell, which sets up an environment compatible with colorful build output. The standard Command Prompt will also work, but add `COLOR=false` to the end of all make commands when using it. ### Mac If you're using [homebrew,](http://brew.sh/) you can use the following commands: @@ -90,6 +91,10 @@ You can also try these instructions: 2. Install the Command Line Tools from `Xcode->Preferences->Downloads`. 3. Install [DFU-Programmer][dfu-prog]. +If you are going to flash Infinity based keyboards you will also need dfu-util + + brew install dfu-util + ### Linux To ensure you are always up to date, you can just run `sudo utils/install_dependencies.sh`. That should always install all the dependencies needed. @@ -157,43 +162,103 @@ In every keymap folder, the following files are recommended: ## The `make` command -The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). You can run `make` from the root (`/`), your keyboard folder (`/keyboards//`), or your keymap folder (`/keyboards//keymaps//`) if you have a `Makefile` there (see the example [here](/doc/keymap_makefile_example.mk)). +The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). + +**NOTE:** To abort a make command press `Ctrl-c` + +The following instruction refers to these folders. + +* The `root` (`/`) folder is the qmk_firmware folder, in which are `doc`, `keyboard`, `quantum`, etc. +* The `keyboard` folder is any keyboard project's folder, like `/keyboards/planck`. +* The `keymap` folder is any keymap's folder, like `/keyboards/planck/keymaps/default`. +* The `subproject` folder is the subproject folder of a keyboard, like `/keyboards/ergodox/ez` + +### Simple instructions for building and uploading a keyboard + +**Most keyboards have more specific instructions in the keyboard specific readme.md file, so please check that first** + +If the `keymap` folder contains a file name `Makefile` + +1. Change the directory to the `keymap` folder +2. Run `make -` + +Otherwise, if there's no `Makefile` in the `keymap` folder + +1. Enter the `keyboard` folder +2. Run `make --` -By default, this will generate a `_.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. +In the above commands, replace: -Below are some definitions that will be useful: +* `` with the name of your keymap +* `` with the name of the subproject (revision or sub-model of your keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`. + * If the keyboard doesn't have a subproject, or if you are happy with the default (defined in `rules.mk` file of the `keyboard` folder), you can leave it out. But remember to also remove the dash (`-`) from the command. +* `` The programmer to use. Most keyboards use `dfu`, but some use `teensy`. Infinity keyboards use `dfu-util`. Check the readme file in the keyboard folder to find out which programmer to use. + * If you don't add `-` - specifies the keyboard (only to be used in root) - * `make keymap=` - specifies the keymap (only to be used in root and keyboard folder - not needed when in keymap folder) -* `make clean` - cleans the `.build` folder, ensuring that everything is re-built -* `make dfu` - (requires dfu-programmer) builds and flashes the keymap to your keyboard once placed in reset/dfu mode (button or press `KC_RESET`). This does not work for Teensy-based keyboards like the ErgoDox EZ. - * `keyboard=` and `keymap=` are compatible with this -* `make all-keyboards` - builds all keymaps for all keyboards and outputs status of each (use in root) -* `make all-keyboards-default` - builds all default keymaps for all keyboards and outputs status of each (use in root) -* `make all-keymaps [keyboard=]` - builds all of the keymaps for whatever keyboard folder you're in, or specified by `` -* `make all-keyboards-*`, `make all-keyboards-default-*` and `make all-keymaps-* [keyboard=]` - like the normal "make-all-*" commands, but the last string aftter the `-` (for example clean) is passed to the keyboard make command. -Other, less useful functionality: +The full syntax of the `make` command is the following, but parts of the command can be left out if you run it from other directories than the `root` (as you might already have noticed by reading the simple instructions). + +`---`, where: + +* `` is the name of the keyboard, for example `planck` + * Use `allkb` to compile all keyboards +* `` is the name of the subproject (revision or sub-model of the keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`. + * If the keyboard doesn't have any subprojects, it can be left out + * To compile the default subproject, you can leave it out, or specify `defaultsp` + * Use `allsp` to compile all subprojects +* `` is the name of the keymap, for example `algernon` + * Use `allkm` to compile all keymaps +* `` will be explained in more detail below. + +**Note:** When you leave some parts of the command out, you should also remove the dash (`-`). + +As mentioned above, there are some shortcuts, when you are in a: + +* `keyboard` folder, the command will automatically fill the `` part. So you only need to type `--` +* `subproject` folder, it will fill in both `` and `` +* `keymap` folder, then `` and `` will be filled in. If you need to specify the `` use the following syntax `-` + * Note in order to support this shortcut, the keymap needs its own Makefile (see the example [here](/doc/keymap_makefile_example.mk)) +* `keymap` folder of a `subproject`, then everything except the `` will be filled in + +The `` means the following +* If no target is given, then it's the same as `all` below +* `all` compiles the keyboard and generates a `_.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. +* `dfu`, `teensy` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for Infinity keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. **Note** that some operating systems needs root access for these commands to work, so in that case you need to run for example `sudo make dfu`. +* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems. + +Some other targets are supported but, but not important enough to be documented here. Check the source code of the make files for more information. + +You can also add extra options at the end of the make command line, after the target * `make COLOR=false` - turns off color output * `make SILENT=true` - turns off output besides errors/warnings -* `make VERBOSE=true` - outputs all of the avr-gcc stuff (not interesting) +* `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug) + +The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option. + +Here are some examples commands + +* `make allkb-allsp-allkm` builds everything (all keyboards, all subprojects, all keymaps). Running just `make` from the `root` will also run this. +* `make` from within a `keyboard` directory, is the same as `make keyboard-allsp-allkm`, which compiles all subprojects and keymaps of the keyboard. **NOTE** that this behaviour has changed. Previously it compiled just the default keymap. +* `make ergodox-infinity-algernon-clean` will clean the build output of the Ergodox Infinity keyboard. This example uses the full syntax and can be run from any folder with a `Makefile` +* `make dfu COLOR=false` from within a keymap folder, builds and uploads the keymap, but without color output. ## The `Makefile` -There are 3 different `make` and `Makefile` locations: +There are 5 different `make` and `Makefile` locations: * root (`/`) * keyboard (`/keyboards//`) * keymap (`/keyboards//keymaps//`) +* subproject (`/keyboards//`) +* subproject keymap (`/keyboards///keymaps/`) -The root contains the code used to automatically figure out which keymap or keymaps to compile based on your current directory and commandline arguments. It's considered stable, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. **It is required if you want to run `make` in the keymap folder.** +The root contains the code used to automatically figure out which keymap or keymaps to compile based on your current directory and commandline arguments. It's considered stable, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. **The file is required if you want to run `make` in the keymap folder.** + +For keyboards and subprojects, the make files are split in two parts `Makefile` and `rules.mk`. All settings can be found in the `rules.mk` file, while the `Makefile` is just there for support and including the root `Makefile`. Keymaps contain just one `Makefile` for simplicity. ### Makefile options @@ -1136,4 +1201,54 @@ Here is where you can (optionally) define your `KEYMAP` function to remap your m } ``` -Each of the `kxx` variables needs to be unique, and usually follows the format `k`. You can place `KC_NO` where your dead keys are in your matrix. \ No newline at end of file +Each of the `kxx` variables needs to be unique, and usually follows the format `k`. You can place `KC_NO` where your dead keys are in your matrix. + +# Unit Testing + +If you are new to unit testing, then you can find many good resources on internet. However most of it is scattered around in small pieces here and there, and there's also many different opinions, so I won't give any recommendations. + +Instead I recommend these two books, explaining two different styles of Unit Testing in detail. + +* "Test Driven Development: By Example: Kent Beck" +* "Growing Object-Oriented Software, Guided By Tests: Steve Freeman, Nat Pryce" + +If you prefer videos there are Uncle Bob's [Clean Coders Videos](https://cleancoders.com/), which unfortunately cost quite a bit, especially if you want to watch many of them. But James Shore has a free [Let's Play](http://www.jamesshore.com/Blog/Lets-Play) video series. + +## Google Test and Google Mock +It's possible to Unit Test your code using [Google Test](https://github.com/google/googletest). The Google Test framework also includes another component for writing testing mocks and stubs, called "Google Mock". For information how to write the actual tests, please refer to the documentation on that site. + +## Use of C++ + +Note that Google Test and therefore any test has to be written in C++, even if the rest of the QMK codebases is written in C. This should hopefully not be a problem even if you don't know any C++, since there's quite clear documentation and examples of the required C++ features, and you can write the rest of the test code almost as you would write normal C. Note that some compiler errors which you might get can look quite scary, but just read carefully what it says, and you should be ok. + +One thing to remember, is that you have to append `extern "C"` around all of your C file includes. + +## Adding tests for new or existing features + +If you want to unit test some feature, then take a look at the existing serial_link tests, in the `quantum/serial_link/tests folder`, and follow the steps below to create a similar structure. + +1. If it doesn't already exist, add a test subfolder to the folder containing the feature. +2. Create a `testlist.mk` and a `rules.mk` file in that folder. +3. Include those files from the root folder `testlist.mk`and `build_test.mk` respectively. +4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the serial_link tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests. +5. Define the source files and required options in the `rules.mk` file. + * `_SRC` for source files + * `_DEFS` for additional defines + * `_INC` for additional include folders +6. Write the tests in a new cpp file inside the test folder you created. That file has to be one of the files included from the `rules.mk` file. + +Note how there's several different tests, each mocking out a separate part. Also note that each of them only compiles the very minimum that's needed for the tests. It's recommend that you try to do the same. For a relevant video check out [Matt Hargett "Advanced Unit Testing in C & C++](https://www.youtube.com/watch?v=Wmy6g-aVgZI) + +## Running the tests + +To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test-matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer. + +## Debugging the tests + +If there are problems with the tests, you can find the executable in the `./build/test` folder. You should be able to run those with GDB or a similar debugger. + +## Full Integration tests + +It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing. + +In that model you would emulate the input, and expect a certain output from the emulated keyboard. -- cgit v1.2.1 From d55a705bbb362934306a3be632d6bacb99fd9de2 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 3 Sep 2016 23:21:24 -0500 Subject: Moved breathing backlighting section in readme.md --- readme.md | 120 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/readme.md b/readme.md index 903c2b1e8c..7ee3b28d43 100644 --- a/readme.md +++ b/readme.md @@ -877,6 +877,66 @@ In `quantum/keymap_extras/`, you'll see various language files - these work the You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. +## Backlight Breathing + +In order to enable backlight breathing, the following line must be added to your config.h file. + + #define BACKLIGHT_BREATHING + +The following function calls are used to control the breathing effect. + +* ```breathing_enable()``` - Enable the free-running breathing effect. +* ```breathing_disable()``` - Disable the free-running breathing effect immediately. +* ```breathing_self_disable()``` - Disable the free-running breathing effect after the current effect ends. +* ```breathing_toggle()``` - Toggle the free-running breathing effect. +* ```breathing_defaults()``` - Reset the speed and brightness settings of the breathing effect. + +The following function calls are used to control the maximum brightness of the breathing effect. + +* ```breathing_intensity_set(value)``` - Set the brightness of the breathing effect when it is at its max value. +* ```breathing_intensity_default()``` - Reset the brightness of the breathing effect to the default value based on the current backlight intensity. + +The following function calls are used to control the cycling speed of the breathing effect. + +* ```breathing_speed_set(value)``` - Set the speed of the breathing effect - how fast it cycles. +* ```breathing_speed_inc(value)``` - Increase the speed of the breathing effect by a fixed value. +* ```breathing_speed_dec(value)``` - Decrease the speed of the breathing effect by a fixed value. +* ```breathing_speed_default()``` - Reset the speed of the breathing effect to the default value. + +The following example shows how to enable the backlight breathing effect when the FUNCTION layer macro button is pressed: + + case MACRO_FUNCTION: + if (record->event.pressed) + { + breathing_speed_set(3); + breathing_enable(); + layer_on(LAYER_FUNCTION); + } + else + { + breathing_speed_set(1); + breathing_self_disable(); + layer_off(LAYER_FUNCTION); + } + break; + +The following example shows how to pulse the backlight on-off-on when the RAISED layer macro button is pressed: + + case MACRO_RAISED: + if (record->event.pressed) + { + layer_on(LAYER_RAISED); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST); + } + else + { + layer_off(LAYER_RAISED); + update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST); + } + break; + ## Other firmware shortcut keycodes * `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) @@ -1030,66 +1090,6 @@ In the default script of AutoHotkey you can define custom hotkeys. The hotkeys above are for the combination CtrlAltGui and CtrlAltGuiShift plus the letter a. AutoHotkey inserts the Text right of `Send, ` when this combination is pressed. -## Backlight Breathing - -In order to enable backlight breathing, the following line must be added to your config.h file. - - #define BACKLIGHT_BREATHING - -The following function calls are used to control the breathing effect. - -* ```breathing_enable()``` - Enable the free-running breathing effect. -* ```breathing_disable()``` - Disable the free-running breathing effect immediately. -* ```breathing_self_disable()``` - Disable the free-running breathing effect after the current effect ends. -* ```breathing_toggle()``` - Toggle the free-running breathing effect. -* ```breathing_defaults()``` - Reset the speed and brightness settings of the breathing effect. - -The following function calls are used to control the maximum brightness of the breathing effect. - -* ```breathing_intensity_set(value)``` - Set the brightness of the breathing effect when it is at its max value. -* ```breathing_intensity_default()``` - Reset the brightness of the breathing effect to the default value based on the current backlight intensity. - -The following function calls are used to control the cycling speed of the breathing effect. - -* ```breathing_speed_set(value)``` - Set the speed of the breathing effect - how fast it cycles. -* ```breathing_speed_inc(value)``` - Increase the speed of the breathing effect by a fixed value. -* ```breathing_speed_dec(value)``` - Decrease the speed of the breathing effect by a fixed value. -* ```breathing_speed_default()``` - Reset the speed of the breathing effect to the default value. - -The following example shows how to enable the backlight breathing effect when the FUNCTION layer macro button is pressed: - - case MACRO_FUNCTION: - if (record->event.pressed) - { - breathing_speed_set(3); - breathing_enable(); - layer_on(LAYER_FUNCTION); - } - else - { - breathing_speed_set(1); - breathing_self_disable(); - layer_off(LAYER_FUNCTION); - } - break; - -The following example shows how to pulse the backlight on-off-on when the RAISED layer macro button is pressed: - - case MACRO_RAISED: - if (record->event.pressed) - { - layer_on(LAYER_RAISED); - breathing_speed_set(2); - breathing_pulse(); - update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST); - } - else - { - layer_off(LAYER_RAISED); - update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST); - } - break; - ## RGB Under Glow Mod ![Planck with RGB Underglow](https://raw.githubusercontent.com/jackhumbert/qmk_firmware/master/keyboards/planck/keymaps/yang/planck-with-rgb-underglow.jpg) -- cgit v1.2.1 From f6cb08a5bd0d3c34c64691c7f51911742b562c05 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sun, 4 Sep 2016 01:07:36 -0500 Subject: Added diagonal mice macros, breathing ala Atomic --- keyboards/planck/keymaps/pvc/config.h | 9 +- keyboards/planck/keymaps/pvc/keymap.c | 428 +++++++++++++++++++--------------- 2 files changed, 238 insertions(+), 199 deletions(-) diff --git a/keyboards/planck/keymaps/pvc/config.h b/keyboards/planck/keymaps/pvc/config.h index c857a3e89d..1113372b0a 100644 --- a/keyboards/planck/keymaps/pvc/config.h +++ b/keyboards/planck/keymaps/pvc/config.h @@ -59,13 +59,8 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) -/* ws2812 RGB LED */ -#define RGB_DI_PIN D1 -#define RGBLIGHT_TIMER -#define RGBLED_NUM 28 // Number of LEDs -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_BREATHING /* * Feature disable options diff --git a/keyboards/planck/keymaps/pvc/keymap.c b/keyboards/planck/keymaps/pvc/keymap.c index 0bb7f0def2..8ff40f377c 100644 --- a/keyboards/planck/keymaps/pvc/keymap.c +++ b/keyboards/planck/keymaps/pvc/keymap.c @@ -2,48 +2,50 @@ #include "action_layer.h" #include "eeconfig.h" #include "led.h" +#include "mousekey.h" #ifdef AUDIO_ENABLE #include "audio.h" #include "song_list.h" #endif -#define LAYER_QWERTY 0 -#define LAYER_COLEMAK 1 -#define LAYER_DVORAK 2 -#define LAYER_UPPER 3 -#define LAYER_LOWER 4 -#define LAYER_FUNCTION 5 -#define LAYER_MOUSE 6 -#define LAYER_ADJUST 7 - -#define MACRO_QWERTY 0 -#define MACRO_COLEMAK 1 -#define MACRO_DVORAK 2 -#define MACRO_UPPER 3 -#define MACRO_LOWER 4 -#define MACRO_FUNCTION 5 -#define MACRO_MOUSE 6 -#define MACRO_TIMBRE_1 7 -#define MACRO_TIMBRE_2 8 -#define MACRO_TIMBRE_3 9 -#define MACRO_TIMBRE_4 10 -#define MACRO_TEMPO_U 11 -#define MACRO_TEMPO_D 12 -#define MACRO_TONE_DEFAULT 13 -#define MACRO_MUSIC_TOGGLE 14 -#define MACRO_AUDIO_TOGGLE 16 -#define MACRO_INC_VOICE 18 -#define MACRO_DEC_VOICE 19 -#define MACRO_BACKLIGHT 20 -#define MACRO_BREATH_TOGGLE 21 -#define MACRO_BREATH_SPEED_INC 23 -#define MACRO_BREATH_SPEED_DEC 24 -#define MACRO_BREATH_DEFAULT 25 +enum keyboard_layers { + LAYER_QWERTY = 0, + LAYER_UPPER, + LAYER_LOWER, + LAYER_FUNCTION, + LAYER_MOUSE, + LAYER_ADJUST, +}; +enum keyboard_macros { + MACRO_QWERTY = 0, + MACRO_UPPER, + MACRO_LOWER, + MACRO_FUNCTION, + MACRO_MOUSE, + MACRO_TIMBRE_1, + MACRO_TIMBRE_2, + MACRO_TIMBRE_3, + MACRO_TIMBRE_4, + MACRO_TEMPO_U, + MACRO_TEMPO_D, + MACRO_TONE_DEFAULT, + MACRO_MUSIC_TOGGLE, + MACRO_AUDIO_TOGGLE, + MACRO_INC_VOICE, + MACRO_DEC_VOICE, + MACRO_BACKLIGHT, + MACRO_BREATH_TOGGLE, + MACRO_BREATH_SPEED_INC, + MACRO_BREATH_SPEED_DEC, + MACRO_BREATH_DEFAULT, + MACRO_MOUSE_MOVE_UL, + MACRO_MOUSE_MOVE_UR, + MACRO_MOUSE_MOVE_DL, + MACRO_MOUSE_MOVE_DR, +}; #define M_QWRTY M(MACRO_QWERTY) -#define M_COLMK M(MACRO_COLEMAK) -#define M_DVORK M(MACRO_DVORAK) #define M_UPPER M(MACRO_UPPER) #define M_LOWER M(MACRO_LOWER) #define M_FUNCT M(MACRO_FUNCTION) @@ -60,6 +62,10 @@ #define M_BSPDU M(MACRO_BREATH_SPEED_INC) #define M_BSPDD M(MACRO_BREATH_SPEED_DEC) #define M_BDFLT M(MACRO_BREATH_DEFAULT) +#define M_MS_UL M(MACRO_MOUSE_MOVE_UL) +#define M_MS_UR M(MACRO_MOUSE_MOVE_UR) +#define M_MS_DL M(MACRO_MOUSE_MOVE_DL) +#define M_MS_DR M(MACRO_MOUSE_MOVE_DR) #define VC_UP M(MACRO_INC_VOICE) @@ -86,147 +92,124 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* QWERTY - * .-----------------------------------------------------------------------------------------------------------. - * | TAB | Q | W | E | R | T | Y | U | I | O | P | BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | Z | X | C | V | B | N | M | , | . | UP | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | SHIFT | LEFT | DOWN | RIGHT | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_QWERTY] = { // QWERTY - { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, - { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT }, - }, - -/* COLEMAK - * .-----------------------------------------------------------------------------------------------------------. - * | TAB | Q | W | F | P | G | J | L | U | Y | ; | ESC | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | Z | X | C | V | B | K | M | , | . | UP | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | SHIFT | LEFT | DOWN | RIGHT | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_COLEMAK] = { // COLEMAK - { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_ESC }, - { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT }, - }, - -/* DVORAK - * .-----------------------------------------------------------------------------------------------------------. - * | TAB | ' | , | . | P | Y | F | G | C | R | L | BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ESC | A | O | E | U | I | D | H | T | N | S | / | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_DVORAK] = { // DVORAK - { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, - { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH }, - { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT }, - }, - -/* UPPER - * .-----------------------------------------------------------------------------------------------------------. - * | PRINT | F1 | F2 | F3 | F4 | NUM LK | / | 7 | 8 | 9 | - | DEL | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | CAP LK | F5 | F6 | F7 | F8 | SCR LK | * | 4 | 5 | 6 | + | INS | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | F9 | F10 | F11 | F12 | PAUSE | | 1 | 2 | 3 | ENTER | HOME | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | | | | | 0 | 0 | | RALT | . | ENTER | END | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_UPPER] = { // UPPER - { KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_DEL }, - { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_SLCK, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_INS }, - { _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_HOME }, - { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, KC_END }, - }, - -/* LOWER - * .-----------------------------------------------------------------------------------------------------------. - * | | $ | { | [ | ( | % | # | ) | ] | } | @ | PG UP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | ^ | * | + | - | / | \ | _ | ' | " | ` | PG DN | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | & | ! | ~ | ; | : | = | < | > | ? | HOME | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | | | | | | | | | | | END | - * '-----------------------------------------------------------------------------------------------------------' - */ - - [LAYER_LOWER] = { // LOWER - { _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, KC_PGUP }, - { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, KC_PGDN }, - { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL, KC_LT, KC_GT, KC_QUES, KC_HOME }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END }, - }, - - -/* FUNCTION - * .-----------------------------------------------------------------------------------------------------------. - * | NUM LK | F13 | F14 | F15 | F16 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | PAUSE | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | CAP LK | F17 | F18 | F19 | F20 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | PRINT | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | SCR LK | F21 | F22 | F23 | F24 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUTE | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | PLAY | PLAY | LOWER | VOL UP | VOL DN | NEXT | PREV | - * '-----------------------------------------------------------------------------------------------------------' - */ - [LAYER_FUNCTION] = { // FUNCTION - { KC_NLCK, KC_F13, KC_F14, KC_F15, KC_F16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS }, - { KC_CAPS, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR }, - { KC_SLCK, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE }, - { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT }, - }, +/* LAYER = LAYER_QWERTY + .-----------------------------------------------------------------------------------------------------------. + | TAB | Q | W | E | R | T | Y | U | I | O | P | BACKSP | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ESC | A | S | D | F | G | H | J | K | L | ; | ' | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | LSHIFT | Z | X | C | V | B | N | M | , | . | UP | ENTER | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | OSHIFT | LEFT | DOWN | RIGHT | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_QWERTY] = { + { KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC }, + { KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT }, + { KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_UP , KC_ENT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT } +}, + +/* LAYER = LAYER_UPPER + .-----------------------------------------------------------------------------------------------------------. + | PRINT | F1 | F2 | F3 | F4 | NUM LK | KP / | KP 7 | KP 8 | KP 9 | KP - | DEL | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | PAUSE | F5 | F6 | F7 | F8 | SCR LK | KP * | KP 4 | KP 5 | KP 6 | KP + | INS | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | F9 | F10 | F11 | F12 | PAUSE | KP 0 | KP 1 | KP 2 | KP 3 | KP ENT | HOME | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | UPPER | KP 0 | KP 0 | ______ | RALT | KP . | KP ENT | END | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_UPPER] = { + { KC_PSCR, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_DEL }, + { KC_PAUS, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_SLCK, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_INS }, + { _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PAUS, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_HOME }, + { _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, KC_END } +}, + +/* LAYER = LAYER_LOWER + .-----------------------------------------------------------------------------------------------------------. + | ______ | $ | { | [ | ( | % | # | ) | ] | } | @ | PG UP | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ^ | * | + | - | / | \ | _ | ' | " | ` | PG DN | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | HOME | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | ______ | ______ | ______ | LOWER | ______ | ______ | ______ | END | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_LOWER] = { + { _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , KC_PGUP }, + { _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , KC_PGDN }, + { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, KC_HOME }, + { _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, KC_END } +}, + +/* LAYER = LAYER_FUNCTION + .-----------------------------------------------------------------------------------------------------------. + | XXXXXX | F13 | F14 | F15 | F16 | NUM LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | F17 | F18 | F19 | F20 | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | F21 | F22 | F23 | F24 | CAP LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | VOL UP | MUTE | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | FN | ______ | ______ | PLAY | PLAY | ______ | ______ | PREV | VOL DN | NEXT | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_FUNCTION] = { + { XXXXXXX, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { _______, KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE }, + { _______, _______, M_FUNCT, _______, _______, KC_MPLY, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT } +}, #ifdef MOUSEKEY_ENABLE - [LAYER_MOUSE] = { // MOUSE - { KC_ESC, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { _______, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, KC_MS_U, KC_MS_D, KC_MS_L, KC_MS_R }, - }, +/* LAYER = LAYER_MOUSE + .-----------------------------------------------------------------------------------------------------------. + | ESC | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS UL | MS U | MS UR | MS WHL | MS WHR | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | MS BT5 | MS BT4 | MS BT3 | MS BT2 | XXXXXX | XXXXXX | MS L | XXXXXX | MS R | XXXXXX | MS WHU | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS DL | MS D | MS DR | MS U | MS WHD | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | ______ | MS BT1 | MS BT1 | ______ | ______ | MS L | MS D | MS R | + '-----------------------------------------------------------------------------------------------------------' +*/ + +[LAYER_MOUSE] = { + { KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_UL, KC_MS_U, M_MS_UR, KC_WH_L, KC_WH_R }, + { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, XXXXXXX, KC_MS_R, XXXXXXX, KC_WH_U }, + { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_DL, KC_MS_D, M_MS_DR, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R } +}, #endif - [LAYER_ADJUST] = { // ADJUST - { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, MU_TOG, AU_TOG }, - { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, MUV_IN, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, _______ }, - }, - -/* - [LAYER_EMPTY] = { - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, }, - }, +/* LAYER = LAYER_ADJUST + .-----------------------------------------------------------------------------------------------------------. + | XXXXXX | BRTOG | BRSPD+ | BRSPD- | BRDFLT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUSIC | AUDIO | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | VOICE+ | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX | XXXXXX | LOWER | XXXXXX | TEMPO- | VOICE- | TEMPO+ | + '-----------------------------------------------------------------------------------------------------------' */ +[LAYER_ADJUST] = { + { XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG , AU_TOG }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP } +}, + }; #ifdef AUDIO_ENABLE @@ -234,10 +217,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_my_startup[][2] = SONG(ODE_TO_JOY); float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY); -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); - float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE); float tone_music_on[][2] = SONG(DOE_A_DEER); float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND); @@ -267,46 +246,38 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { - case MACRO_QWERTY: + case MACRO_BREATH_TOGGLE: if (record->event.pressed) { - persistant_default_layer_set(1UL<event.pressed) { - persistant_default_layer_set(1UL<event.pressed) { - persistant_default_layer_set(1UL<event.pressed) { - layer_on(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + breathing_defaults(); } - else + break; + + case MACRO_QWERTY: + if (record->event.pressed) { - layer_off(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + persistant_default_layer_set(1UL<event.pressed) { layer_on(LAYER_UPPER); + breathing_speed_set(2); + breathing_pulse(); update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } else @@ -323,13 +296,32 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; + case MACRO_LOWER: + if (record->event.pressed) + { + layer_on(LAYER_LOWER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + else + { + layer_off(LAYER_LOWER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + break; + case MACRO_FUNCTION: if (record->event.pressed) { + breathing_speed_set(3); + breathing_enable(); layer_on(LAYER_FUNCTION); } else { + breathing_speed_set(1); + breathing_self_disable(); layer_off(LAYER_FUNCTION); } break; @@ -352,6 +344,58 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; + case MACRO_MOUSE_MOVE_UL: + if (record->event.pressed) + { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_LEFT); + } + else + { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_LEFT); + } + break; + + case MACRO_MOUSE_MOVE_UR: + if (record->event.pressed) + { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_RIGHT); + } + else + { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_RIGHT); + } + break; + + case MACRO_MOUSE_MOVE_DL: + if (record->event.pressed) + { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_LEFT); + } + else + { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_LEFT); + } + break; + + case MACRO_MOUSE_MOVE_DR: + if (record->event.pressed) + { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_RIGHT); + } + else + { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_RIGHT); + } + break; + #endif /* MOUSEKEY_ENABLE */ #ifdef AUDIO_ENABLE -- cgit v1.2.1 From 13f3c73386da9b15b255b014f5da81cd51613ca1 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 4 Sep 2016 23:26:49 +0300 Subject: Fix the ldflags.txt and obj.txt checks There was a minor typo, which caused the files to not be generated and therefore the elf files were always linked. --- tmk_core/rules.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 79fc7119a6..e4c8aecb2c 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -332,11 +332,13 @@ $1/compiler.txt: $1/force $$(CC) --version | cmp -s - $$@ || $$(CC) --version > $$@ endef +.PRECIOUS: $(MASTER_OUTPUT)/obj.txt $(MASTER_OUTPUT)/obj.txt: $(MASTER_OUTPUT)/force - echo '$(OBJ)' | cmp -s - $$@ || echo '$(OBJ)' > $$@ + echo '$(OBJ)' | cmp -s - $@ || echo '$(OBJ)' > $@ +.PRECIOUS: $(MASTER_OUTPUT)/ldflags.txt $(MASTER_OUTPUT)/ldflags.txt: $(MASTER_OUTPUT)/force - echo '$(LDFLAGS)' | cmp -s - $$@ || echo '$(LDFLAGS)' > $$@ + echo '$(LDFLAGS)' | cmp -s - $@ || echo '$(LDFLAGS)' > $@ # We have to use static rules for the .d files for some reason -- cgit v1.2.1 From bf5941b335268748ee7877fc24cdd538a9faacd0 Mon Sep 17 00:00:00 2001 From: Samuel Ryan Goodwin Date: Mon, 5 Sep 2016 15:53:52 +0200 Subject: Add my keymap. --- keyboards/planck/keymaps/sgoodwin/Makefile | 25 +++ keyboards/planck/keymaps/sgoodwin/keymap.c | 233 ++++++++++++++++++++++++++++ keyboards/planck/keymaps/sgoodwin/readme.md | 10 ++ 3 files changed, 268 insertions(+) create mode 100644 keyboards/planck/keymaps/sgoodwin/Makefile create mode 100644 keyboards/planck/keymaps/sgoodwin/keymap.c create mode 100644 keyboards/planck/keymaps/sgoodwin/readme.md diff --git a/keyboards/planck/keymaps/sgoodwin/Makefile b/keyboards/planck/keymaps/sgoodwin/Makefile new file mode 100644 index 0000000000..581e08cd02 --- /dev/null +++ b/keyboards/planck/keymaps/sgoodwin/Makefile @@ -0,0 +1,25 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/sgoodwin/keymap.c b/keyboards/planck/keymaps/sgoodwin/keymap.c new file mode 100644 index 0000000000..4d5d3d7ef6 --- /dev/null +++ b/keyboards/planck/keymaps/sgoodwin/keymap.c @@ -0,0 +1,233 @@ +// This is sgoodwin's layout file for the Quantum project. +// It doesn't have Plover or Dvorak layers because he doesn't use that. +// It Also doesn't allow for swapping alt with CMD because that only happens in error. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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 _QWERTY 1 +#define _COLEMAK 0 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum planck_keycodes { + COLEMAK = SAFE_RANGE, + QWERTY, + LOWER, + RAISE, + BACKLIT, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |SHEnt | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Hyper| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT) }, + {ALL_T(KC_NO), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |SHEnt | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Hyper| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT) }, + {ALL_T(KC_NO), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff| | |Qwerty|Colemk| | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, _______, _______, QWERTY, COLEMAK, _______, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/sgoodwin/readme.md b/keyboards/planck/keymaps/sgoodwin/readme.md new file mode 100644 index 0000000000..dfa88f380d --- /dev/null +++ b/keyboards/planck/keymaps/sgoodwin/readme.md @@ -0,0 +1,10 @@ +# sgoodwin's Planck Layout + +Includes: + +1. No Dvorak or Plover +2. No alt-swapping +3. Right enter is shift when held down, enter when tapped. +4. Bottom left corner in normal layers is Hyper and not brightness control. +5. Brightness is instead in the bottom corner on raise/lower. + -- cgit v1.2.1 From e9ce4960c15066c14c775b1d769f1f89ec450787 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Mon, 5 Sep 2016 17:40:03 -0400 Subject: Add new ErgoDox EZ keymap, YORUIAN --- .../keymaps/yoruian/90-ergodox-yoruian.conf | 6 ++ keyboards/ergodox/keymaps/yoruian/Makefile | 13 +++ keyboards/ergodox/keymaps/yoruian/README | 102 +++++++++++++++++++++ keyboards/ergodox/keymaps/yoruian/ergodox_yoruian | 34 +++++++ keyboards/ergodox/keymaps/yoruian/keymap.c | 61 ++++++++++++ keyboards/ergodox/keymaps/yoruian/yoruian.h | 61 ++++++++++++ 6 files changed, 277 insertions(+) create mode 100644 keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf create mode 100644 keyboards/ergodox/keymaps/yoruian/Makefile create mode 100644 keyboards/ergodox/keymaps/yoruian/README create mode 100644 keyboards/ergodox/keymaps/yoruian/ergodox_yoruian create mode 100644 keyboards/ergodox/keymaps/yoruian/keymap.c create mode 100644 keyboards/ergodox/keymaps/yoruian/yoruian.h diff --git a/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf new file mode 100644 index 0000000000..c8a92c5c5b --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "ErgoDox EZ" + MatchIsKeyboard "on" + MatchProduct "ErgoDox EZ ErgoDox EZ" + Option "XkbLayout" "ergodox_ez_yoruian" +EndSection diff --git a/keyboards/ergodox/keymaps/yoruian/Makefile b/keyboards/ergodox/keymaps/yoruian/Makefile new file mode 100644 index 0000000000..b43a24c611 --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/Makefile @@ -0,0 +1,13 @@ +ifndef QUANTUM_DIR + include ../../../../Makefile +endif + +install-xorg-configuration: + install -m 0664 90-$(KEYBOARD)-$(KEYMAP).conf \ + /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf + install -m 0644 $(KEYBOARD)_$(KEYMAP) \ + /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP) + +uninstall-xorg-configuration: + -rm -f /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf + -rm -f /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP) diff --git a/keyboards/ergodox/keymaps/yoruian/README b/keyboards/ergodox/keymaps/yoruian/README new file mode 100644 index 0000000000..99b41434ef --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/README @@ -0,0 +1,102 @@ + Snarfangel's YORUIAN for the ErgoDox EZ + ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ +DEFAULT +┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ +┃ ` │ ; │ : │ - │ / │ ( │ < ┃ ┃ > │ ) │ ^ │ * │ ~ │ Γ │ σ ┃ +┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨ +┃ ⎋ │ . │ y │ o │ r │ ? │ ✦ ┃ ┃ ✦ │ j │ v │ d │ f │ w │ q ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ ⎈ │ u │ i │ a │ n │ ! ├───┨ ┠───┤ m │ h │ t │ s │ c │ ⎈ ┃ +┠───┼───┼───┼───┼───┼───┤ ❖ ┃ ┃ ❖ ├───┼───┼───┼───┼───┼───┨ +┃ λ │ ' │ " │ , │ _ │ = │ ┃ ┃ │ k │ l │ p │ g │ b │ x ┃ +┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨ +┃ ⎀ │ E │ │ │ ◆ ┃ ┃ ◆ │ │ │ z │ ⎙ ┃ +┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛ + ┏━━━┯━━━┓ ┏━━━┯━━━┓ + ┃ ⌫ │ ⌥ ┃ ┃ ⎄ │ ↹ ┃ + ┏━━━╃───┼───┨ ┠───┼───╄━━━┓ + ┃ │ │ ┃ ┃ │ │ ┃ + ┃ e │ ⇧ ├───┨ ┠───┤ ⏎ │ ␣ ┃ + ┃ │ │ ┃ ┃ │ │ ┃ + ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛ +SHIFTED +┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ +┃ 9 │ 7 │ 5 │ 3 │ 1 │ [ │ { ┃ ┃ } │ ] │ 0 │ 2 │ 4 │ 6 │ 8 ┃ +┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨ +┃ │ * │ Y │ O │ R │ \ │ ┃ ┃ │ J │ V │ D │ F │ W │ Q ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ │ U │ I │ A │ N │ | ├───┨ ┠───┤ M │ H │ T │ S │ C │ ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ │ # │ $ │ @ │ & │ + │ ┃ ┃ │ K │ L │ P │ G │ B │ X ┃ +┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨ +┃ │ │ │ │ ┃ ┃ │ │ │ Z │ ┃ +┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛ + ┏━━━┯━━━┓ ┏━━━┯━━━┓ + ┃ │ ┃ ┃ │ ┃ + ┏━━━╃───┼───┨ ┠───┼───╄━━━┓ + ┃ │ │ ┃ ┃ │ │ ┃ + ┃ │ ├───┨ ┠───┤ │ ┃ + ┃ │ │ ┃ ┃ │ │ ┃ + ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛ +λ LAYER +┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ +┃ │ │ │ │ │ │ ┃ ┃ │ │ ⑤ │ ⑥ │ ⑦ │ ⑧ │ ⑨ ┃ +┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨ +┃ │ │ │ │ │ │ ┃ ┃ │ │ ① │ ② │ ③ │ ④ │ ⑩ ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ │ │ │ │ │ ├───┨ ┠───┤ ⎉ │ ← │ ↓ │ ↑ │ → │ ⑪ ┃ +┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨ +┃ λ │ │ │ │ │ │ ┃ ┃ │ │ ⇱ │ ⎘ │ ⎗ │ ⇲ │ ⑫ ┃ +┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨ +┃ │ │ │ │ ┃ ┃ │ │ │ │ ┃ +┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛ + ┏━━━┯━━━┓ ┏━━━┯━━━┓ + ┃ │ ┃ ┃ │ ┃ + ┏━━━╃───┼───┨ ┠───┼───╄━━━┓ + ┃ │ │ ┃ ┃ │ │ ┃ + ┃ │ ├───┨ ┠───┤ │ ┃ + ┃ │ │ ┃ ┃ │ │ ┃ + ┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛ + +Installation (X only) +‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + 1. Build and flash firmware as usual + + 2. sudo make install-xorg-configuration + + 3. Restart X + +Features +‾‾‾‾‾‾‾‾ + • E on the thumb + + • Emacs-friendly + + • Symmetric control keys for finger wear levelling + + • Greek and subscript dead keys + + • Compose key for arbitrary Unicode input via ~/.XCompose + +Don't Cares +‾‾‾‾‾‾‾‾‾‾‾ + • Easy migration from QWERTY + + • Compatbility with non-XKB systems + + • Mouse emulation + + • Media keys + +Acknowledgements +‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ +Snarfangel, for designing the layout. + +The GNU FreeFont project and Steve White, for adding new keyboard +symbols. + +Xah Lee, for http://xahlee.info/comp/unicode_computing_symbols.html + +Colophon +‾‾‾‾‾‾‾‾ +This file is best-viewed with an SVN version of GNU FreeFont Mono. diff --git a/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian new file mode 100644 index 0000000000..7343143948 --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian @@ -0,0 +1,34 @@ +partial alphanumeric_keys modifier_keys +xkb_symbols "ergodox_ez_yoruian" { + include "us" + name[Group1]= "English (yoruian-1.0.0)"; + + replace key { [ Multi_key, Multi_key ] }; + replace key { [ Hyper_L, Hyper_L ] }; + replace key { [ grave, 9 ] }; + replace key { [ semicolon, 7 ] }; + replace key { [ colon, 5 ] }; + replace key { [ minus, 3 ] }; + replace key { [ slash, 1 ] }; + replace key { [ asciicircum, 0 ] }; + replace key { [ percent, 2 ] }; + replace key { [ asciitilde, 4 ] }; + replace key { [ dead_greek, 6 ] }; + replace key { [ dead_caron, 8 ] }; + replace key { [ E, E ] }; + replace key { [ period, asterisk ] }; + replace key { [ question, backslash ] }; + replace key { [ exclam, bar ] }; + replace key { [ apostrophe, numbersign ] }; + replace key { [ quotedbl, dollar ] }; + replace key { [ comma, at ] }; + replace key { [ underscore, ampersand ] }; + replace key { [ equal, plus ] }; + replace key { [ parenleft, bracketleft ] }; + replace key { [ less, braceleft ] }; + replace key { [ greater, braceright ] }; + replace key { [ parenright, bracketright ] }; + + modifier_map none { }; + modifier_map Mod3 { }; +}; diff --git a/keyboards/ergodox/keymaps/yoruian/keymap.c b/keyboards/ergodox/keymaps/yoruian/keymap.c new file mode 100644 index 0000000000..d3635ddf3f --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/keymap.c @@ -0,0 +1,61 @@ +/* + * Copyright 2016 Thomas Fitzsimmons + * + * 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 3 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 . + */ +#include "yoruian.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP\ +(9, 7, 5, 3, 1, GRV, MINS, EQL, LBRC, 0, 2, 4, 6, 8, + ES, RBRC, Y, O, R, BSLS, P3, P3, J, V, D, F, W, Q, + LC, U, I, A, N, SCLN, M, H, T, S, C, RC, + FF, QUOT, COMM, DOT, SLSH, P0, LGUI, LGUI, K, L, P, G, B, X, + IN, P1, NO, NO, LALT, LALT, NO, NO, Z, PS, + BSPC, RALT, P2, TAB, + NO, NO, + E, LSFT, NO, NO, ENT, SPC), +[1] = KEYMAP\ +(TR, TR, TR, TR, TR, TR, TR, TR, TR, F5, F6, F7, F8, F9, + TR, TR, TR, TR, TR, TR, TR, TR, TR, F1, F2, F3, F4, FT, + TR, TR, TR, TR, TR, TR, PAUS, LEFT, DOWN, UP, RGHT, FE, + TR, TR, TR, TR, TR, TR, TR, TR, TR, HOME, PGDN, PGUP, END, FW, + TR, TR, TR, TR, TR, TR, TR, TR, TR, TR, + TR, TR, TR, TR, + TR, TR, + TR, TR, TR, TR, TR, TR), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + return MACRO_NONE; +}; + +void matrix_init_user(void) { +}; + +void matrix_scan_user(void) { + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); +}; + +/* + * Local Variables: + * electric-indent-mode: nil + * End: + */ diff --git a/keyboards/ergodox/keymaps/yoruian/yoruian.h b/keyboards/ergodox/keymaps/yoruian/yoruian.h new file mode 100644 index 0000000000..1adcb7fd3f --- /dev/null +++ b/keyboards/ergodox/keymaps/yoruian/yoruian.h @@ -0,0 +1,61 @@ +/* + * Copyright 2016 Thomas Fitzsimmons + * + * 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 3 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 . + */ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + +#undef KEYMAP +#define KEYMAP\ +( \ + /* Spacial positions. */ \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \ + k20, k21, k22, k23, k24, k25, k28, k29, k2A, k2B, k2C, k2D, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \ + k40, k41, k42, k43, k44, k49, k4A, k4B, k4C, k4D, \ + k55, k56, k57, k58, \ + k54, k59, \ + k53, k52, k51, k5C, k5B, k5A) \ + \ + /* Matrix positions. */ \ + { \ + { KC_##k00, KC_##k10, KC_##k20, KC_##k30, KC_##k40, KC_NO }, \ + { KC_##k01, KC_##k11, KC_##k21, KC_##k31, KC_##k41, KC_##k51 }, \ + { KC_##k02, KC_##k12, KC_##k22, KC_##k32, KC_##k42, KC_##k52 }, \ + { KC_##k03, KC_##k13, KC_##k23, KC_##k33, KC_##k43, KC_##k53 }, \ + { KC_##k04, KC_##k14, KC_##k24, KC_##k34, KC_##k44, KC_##k54 }, \ + { KC_##k05, KC_##k15, KC_##k25, KC_##k35, KC_NO, KC_##k55 }, \ + { KC_##k06, KC_##k16, KC_NO, KC_##k36, KC_NO, KC_##k56 }, \ + { KC_##k07, KC_##k17, KC_NO, KC_##k37, KC_NO, KC_##k57 }, \ + { KC_##k08, KC_##k18, KC_##k28, KC_##k38, KC_NO, KC_##k58 }, \ + { KC_##k09, KC_##k19, KC_##k29, KC_##k39, KC_##k49, KC_##k59 }, \ + { KC_##k0A, KC_##k1A, KC_##k2A, KC_##k3A, KC_##k4A, KC_##k5A }, \ + { KC_##k0B, KC_##k1B, KC_##k2B, KC_##k3B, KC_##k4B, KC_##k5B }, \ + { KC_##k0C, KC_##k1C, KC_##k2C, KC_##k3C, KC_##k4C, KC_##k5C }, \ + { KC_##k0D, KC_##k1D, KC_##k2D, KC_##k3D, KC_##k4D, KC_NO } \ + } + +#define KC_ES KC_ESC +#define KC_LC KC_LCTL +#define KC_RC KC_RCTL +#define KC_FF MO(1) +#define KC_IN KC_INS +#define KC_PS KC_PSCR +#define KC_TR KC_TRNS +#define KC_FT KC_F10 +#define KC_FE KC_F11 +#define KC_FW KC_F12 -- cgit v1.2.1 From ce53c0643d4eaf8f13ac1140d3bd91dfa5f90e22 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Tue, 6 Sep 2016 00:09:14 -0400 Subject: Fix ergodox_yoruian XKB naming --- keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf | 2 +- keyboards/ergodox/keymaps/yoruian/ergodox_yoruian | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf index c8a92c5c5b..ce4fce3b1d 100644 --- a/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf +++ b/keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf @@ -2,5 +2,5 @@ Section "InputClass" Identifier "ErgoDox EZ" MatchIsKeyboard "on" MatchProduct "ErgoDox EZ ErgoDox EZ" - Option "XkbLayout" "ergodox_ez_yoruian" + Option "XkbLayout" "ergodox_yoruian" EndSection diff --git a/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian index 7343143948..0d13fbfd4c 100644 --- a/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian +++ b/keyboards/ergodox/keymaps/yoruian/ergodox_yoruian @@ -1,5 +1,5 @@ partial alphanumeric_keys modifier_keys -xkb_symbols "ergodox_ez_yoruian" { +xkb_symbols "ergodox_yoruian" { include "us" name[Group1]= "English (yoruian-1.0.0)"; -- cgit v1.2.1 From a3e7042084ac2a117cea129e4dd4995904f247e8 Mon Sep 17 00:00:00 2001 From: joar Date: Tue, 6 Sep 2016 16:00:08 +0200 Subject: norwegian programmer-friendly layout --- .../keyboard-layout.png | Bin 0 -> 140077 bytes .../keymaps/norwegian_programmer_osx_pc/keymap.c | 180 +++++++++++++++++++++ .../keymaps/norwegian_programmer_osx_pc/readme.md | 30 ++++ .../keyboard-layout.png | Bin 0 -> 97519 bytes .../norwegian_programmer_osx_pc_colemak/keymap.c | 180 +++++++++++++++++++++ .../norwegian_programmer_osx_pc_colemak/readme.md | 30 ++++ 6 files changed, 420 insertions(+) create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keyboard-layout.png create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keyboard-layout.png create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c create mode 100644 keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keyboard-layout.png b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keyboard-layout.png new file mode 100644 index 0000000000..544b5658e9 Binary files /dev/null and b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keyboard-layout.png differ diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c new file mode 100644 index 0000000000..1d505f8e38 --- /dev/null +++ b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/keymap.c @@ -0,0 +1,180 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_norwegian.h" + +#define BASE 0 // default layer +#define BASE_MAC 1 // default layer mac +#define NUMB_FUNC 2 // numbers and function keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Keymap 0: Basic layer PC + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | * | [ | ] | { | } | ~ |Mac/PC| | ^ | $ | ( | ) | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | + | Q | W | E | R | T | " | | ' | Y | U | I | O | P | Å | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | / | A | S | D | F | G |------| |------| H | J | K | L | Ø | Æ | + * |--------+------+------+------+------+------| ; | | = |------+------+------+------+------+--------| + * | - | Z | X | C | V | B | | | | N | M | RIGHT| DOWN | UP | _ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Alt/esc| ! | ? | : | TAB | | LEFT | _ | & | | |Num/fn| + * `----------------------------------' `----------------------------------' + * ,-------------. ,--------------. + * | # | ` | |Insert| % | + * ,------|------|------| |------+-------+------. + * | | | ´ | | Del | | | + * | Shift|Ctrl/.|------| |------| Enter |Space | + * | | |GUI/, | | Bspc | | | + * `--------------------' `---------------------' + */ +[BASE] = KEYMAP( + // left hand + KC_PAST, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, KC_FN2, TG(1), + KC_PPLS, KC_Q, KC_W, KC_E, KC_R, KC_T, NO_QUO2, + KC_PSLS, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_PMNS, KC_Z, KC_X, KC_C, KC_V, KC_B, NO_SCLN, + ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB, + KC_HASH, KC_FN7, + KC_FN6, + KC_FN1,CTL_T(KC_DOT),GUI_T(KC_COMMA), + // right hand + KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT, + NO_APOS, KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA , + KC_H, KC_J, KC_K, KC_L, NO_OSLH, NO_AE, + NO_EQL, KC_N, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_BSLS, + KC_LEFT, NO_UNDS, NO_AMPR, NO_PIPE, OSL(2), + KC_INSERT, KC_PERC, + KC_DELT, + KC_BSPC,KC_ENT,KC_SPC + ), +/* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | | | { | } | | | | | $ | | | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | ' |------+------+------+------+------+--------| + * | | | | | | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | |,/Ctrl| | | | ` | |Num/fn| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | ` | | | | + * ,------|------|------| |------+------+------. + * | | | ´ | | | | | + * | |GUI/. |------| |------| | | + * | | |crtl/,| | | | | + * `--------------------' `--------------------' + */ +[BASE_MAC] = KEYMAP( + KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, 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, NO_GRV_MAC, + KC_FN10, + KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA), + // right hand + KC_TRNS, NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC, + NO_APOS_MAC, 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, NO_BSLS_MAC, + KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 2: Number ++´ánd Fn layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | F9 | F10 | F11 | F12 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | 8 | 7 | 6 | 5 | 9 | | | | | F5 | F6 | F7 | F8 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | 4 | 3 | 2 | 1 | 0 |------| |------| | F1 | F2 | F3 | F4 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | END | PGDWN| PGUP | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | HOME | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUMB_FUNC] = KEYMAP( + NO_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + NO_PLUS, KC_8, KC_7,KC_6,KC_5, KC_9 , KC_TRNS, + NO_SLSH , KC_4 , KC_3 , KC_2 , KC_1 , KC_0, + NO_MINS, 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, + // right hand + KC_TRNS, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_F5, KC_F6 , KC_F7, KC_F8, KC_TRNS, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, + KC_TRNS, KC_HOME, KC_TRNS, KC_END, KC_PGDN, KC_PGUP, KC_TRNS, + KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +) +}; + +enum macro_id { + TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO, GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_MODS_ONESHOT(MOD_LSFT), // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift. + [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed. + [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first. + [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first. + [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed. + [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed. + [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed. + [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly + [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly + [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed +}; + + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + keyevent_t event = record->event; + + switch (id) { + case TILDE_NO: + return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); + case LESS_NO: + return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); + case GRTR_NO: + return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); + case CIRC_NO: + return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); + case ACUT_NO: + return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); + case GRV_NO: + return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); + case LESS_NO_MAC: + return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); + case GRTR_NO_MAC: + return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); + case ACUT_NO_MAC: + return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); + } + return MACRO_NONE; +}; diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md new file mode 100644 index 0000000000..f7e8baf56a --- /dev/null +++ b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc/readme.md @@ -0,0 +1,30 @@ +# Norwegian setup with osx/pc toggle + +## Motivation +I wanted a Norwegian setup that worked in a similar way on both my Mac and PC. I also wanted the keyboard to translate from a standard Norwegian keyboard OS setup. + +## Overview +The setup is created to be programmer friendly. +- Most of the symbols used in code can be activated without using layers or shift key. +- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb or the wrist. +- Navigation is prioritized, arrows below the home row. + +## PC/Mac toggle +The default setup is for Norwegian keyboard setting(on a PC(Windows or Linux) or Mac. Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard. + +## Layers +Since symbols are prioritized in this setup, numbers and function keys are on a new layer. The easiest way to use the layer switch(and also the alt key), is to push your hand right below the little finger, on the key. You will then have all your fingers free to type numbers or press function keys. + +## Tap-shift +Tap for the next character to be shifted, hold down for regular shift. + +## Comma dot and escape +Comma, dot and escape share buttons with modifier keys. Tap to access these keys, hold down to use the keys as modifier keys. + +## Numpad symbols ++-/* are implemented with the numpad keycodes. The benefit is that they will work better with shortcuts in certain programs. For some reason, the default setting in the osx terminal is to not accept numpad characters for '/' and '-'. For a solution, see https://discussions.apple.com/thread/6613968?start=0&tstart=0. +If you really need the norwegian symbols in a program, you can access them using the number toggle button. + +## Layout + +![keyboard-layout](keyboard-layout.png) diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keyboard-layout.png b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keyboard-layout.png new file mode 100644 index 0000000000..462de5c56b Binary files /dev/null and b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keyboard-layout.png differ diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c new file mode 100644 index 0000000000..acf74a47d2 --- /dev/null +++ b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/keymap.c @@ -0,0 +1,180 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_norwegian.h" + +#define BASE 0 // default layer +#define BASE_MAC 1 // default layer mac +#define NUMB_FUNC 2 // numbers and function keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Keymap 0: Basic layer PC + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | * | [ | ] | { | } | ~ |Mac/PC| | ^ | $ | ( | ) | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | + | Q | W | F | P | G | " | | ' | J | L | U | Y | Å | Æ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | / | A | R | S | T | D |------| |------| H | N | E | I | O | Ø | + * |--------+------+------+------+------+------| ; | | = |------+------+------+------+------+--------| + * | - | Z | X | C | V | B | | | | K | M | RIGHT| DOWN | UP | _ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Alt/esc| ! | ? | : | TAB | | LEFT | _ | & | | |Num/fn| + * `----------------------------------' `----------------------------------' + * ,-------------. ,--------------. + * | # | ` | |Insert| % | + * ,------|------|------| |------+-------+------. + * | | | ´ | | Del | | | + * | Shift|Ctrl/.|------| |------| Enter |Space | + * | | |GUI/, | | Bspc | | | + * `--------------------' `---------------------' + */ +[BASE] = KEYMAP( + // left hand + KC_PAST, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, KC_FN2, TG(1), + KC_PPLS, KC_Q, KC_W, KC_F, KC_P, KC_G, NO_QUO2, + KC_PSLS, KC_A, KC_R, KC_S, KC_T, KC_D, + KC_PMNS, KC_Z, KC_X, KC_C, KC_V, KC_B, NO_SCLN, + ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB, + KC_HASH, KC_FN7, + KC_FN6, + KC_FN1,CTL_T(KC_DOT),GUI_T(KC_COMMA), + // right hand + KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT, + NO_APOS, KC_J, KC_L, KC_U, KC_Y, NO_AA, NO_AE , + KC_H, KC_N, KC_E, KC_I, KC_O, NO_OSLH, + NO_EQL, KC_K, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_BSLS, + KC_LEFT, NO_UNDS, NO_AMPR, NO_PIPE, OSL(2), + KC_INSERT, KC_PERC, + KC_DELT, + KC_BSPC,KC_ENT,KC_SPC + ), +/* Keymap 1: Basic layer MAC (Same as pc, except for cmd/ctrl, which are swapped) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | | | { | } | | | | | $ | | | < | > | @ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | ' |------+------+------+------+------+--------| + * | | | | | | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | |,/Ctrl| | | | ` | |Num/fn| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | ` | | | | + * ,------|------|------| |------+------+------. + * | | | ´ | | | | | + * | |GUI/. |------| |------| | | + * | | |crtl/,| | | | | + * `--------------------' `--------------------' + */ +[BASE_MAC] = KEYMAP( + KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, 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, NO_GRV_MAC, + KC_FN10, + KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA), + // right hand + KC_TRNS, NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC, + NO_APOS_MAC, 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, NO_BSLS_MAC, + KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 2: Number ++´ánd Fn layer pc + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | F9 | F10 | F11 | F12 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | 8 | 7 | 6 | 5 | 9 | | | | | F5 | F6 | F7 | F8 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | 4 | 3 | 2 | 1 | 0 |------| |------| | F1 | F2 | F3 | F4 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | END | PGDWN| PGUP | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | HOME | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUMB_FUNC] = KEYMAP( + NO_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + NO_PLUS, KC_8, KC_7,KC_6,KC_5, KC_9 , KC_TRNS, + NO_SLSH , KC_4 , KC_3 , KC_2 , KC_1 , KC_0, + NO_MINS, 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, + // right hand + KC_TRNS, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_F5, KC_F6 , KC_F7, KC_F8, KC_TRNS, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, + KC_TRNS, KC_HOME, KC_TRNS, KC_END, KC_PGDN, KC_PGUP, KC_TRNS, + KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +) +}; + +enum macro_id { + TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO, GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_MODS_ONESHOT(MOD_LSFT), // Sticky shift light. Tap for the next keypress to be shifted. Hold for regular shift. + [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed. + [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first. + [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first. + [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed. + [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed. + [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed. + [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly + [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly + [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed +}; + + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + keyevent_t event = record->event; + + switch (id) { + case TILDE_NO: + return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); + case LESS_NO: + return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); + case GRTR_NO: + return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); + case CIRC_NO: + return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); + case ACUT_NO: + return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); + case GRV_NO: + return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); + case LESS_NO_MAC: + return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); + case GRTR_NO_MAC: + return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); + case ACUT_NO_MAC: + return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); + } + return MACRO_NONE; +}; diff --git a/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md new file mode 100644 index 0000000000..aaaec3e534 --- /dev/null +++ b/keyboards/ergodox/keymaps/norwegian_programmer_osx_pc_colemak/readme.md @@ -0,0 +1,30 @@ +# Norwegian Colemak setup with osx/pc toggle + +## Motivation +I wanted a Norwegian Colemak setup that worked in a similar way on both my Mac and PC. I also wanted the keyboard to translate from a standard Norwegian keyboard OS setup. + +## Overview +The setup is created to be programmer friendly. +- Most of the symbols used in code can be activated without using layers or shift key. +- You can reach the IDE/OS shortcut activators(Ctrl, Win/Cmd, Alt, Shift) with the thumb or the wrist. +- Navigation is prioritized, arrows below the home row. + +## PC/Mac toggle +The default setup is for Norwegian keyboard setting(not colemak software variants) on a PC(Windows or Linux) or Mac. Use the Mac/PC toggle button to switch between OSX and PC setup. The settings will be reverted to PC setup each time you restart/connect the keyboard. + +## Layers +Since symbols are prioritized in this setup, numbers and function keys are on a new layer. The easiest way to use the layer switch(and also the alt key), is to push your hand right below the little finger, on the key. You will then have all your fingers free to type numbers or press function keys. + +## Tap-shift +Tap for the next character to be shifted, hold down for regular shift. + +## Comma dot and escape +Comma, dot and escape share buttons with modifier keys. Tap to access these keys, hold down to use the keys as modifier keys. + +## Numpad symbols ++-/* are implemented with the numpad keycodes. The benefit is that they will work better with shortcuts in certain programs. For some reason, the default setting in the osx terminal is to not accept numpad characters for '/' and '-'. For a solution, see https://discussions.apple.com/thread/6613968?start=0&tstart=0. +If you really need the norwegian symbols in a program, you can access them using the number toggle button. + +## Layout + +![keyboard-layout](keyboard-layout.png) -- cgit v1.2.1 From 16e706214fad14856603fb439dc830c47ef83527 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 6 Sep 2016 14:59:12 -0500 Subject: Change NKRO size fron 16 bytes to 32 bytes. --- tmk_core/protocol/lufa/descriptor.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tmk_core/protocol/lufa/descriptor.h b/tmk_core/protocol/lufa/descriptor.h index 316650a7b1..c6c94e3618 100644 --- a/tmk_core/protocol/lufa/descriptor.h +++ b/tmk_core/protocol/lufa/descriptor.h @@ -1,4 +1,4 @@ -/* +/* * Copyright 2012,2013 Jun Wako * This file is based on: * LUFA-120219/Demos/Device/Lowlevel/KeyboardMouse @@ -129,13 +129,13 @@ typedef struct # define MOUSE_INTERFACE (KEYBOARD_INTERFACE + 1) #else # define MOUSE_INTERFACE KEYBOARD_INTERFACE -#endif +#endif #ifdef EXTRAKEY_ENABLE # define EXTRAKEY_INTERFACE (MOUSE_INTERFACE + 1) #else # define EXTRAKEY_INTERFACE MOUSE_INTERFACE -#endif +#endif #ifdef CONSOLE_ENABLE # define CONSOLE_INTERFACE (EXTRAKEY_INTERFACE + 1) @@ -171,7 +171,7 @@ typedef struct #define KEYBOARD_IN_EPNUM 1 #ifdef MOUSE_ENABLE -# define MOUSE_IN_EPNUM (KEYBOARD_IN_EPNUM + 1) +# define MOUSE_IN_EPNUM (KEYBOARD_IN_EPNUM + 1) #else # define MOUSE_IN_EPNUM KEYBOARD_IN_EPNUM #endif @@ -179,7 +179,7 @@ typedef struct #ifdef EXTRAKEY_ENABLE # define EXTRAKEY_IN_EPNUM (MOUSE_IN_EPNUM + 1) #else -# define EXTRAKEY_IN_EPNUM MOUSE_IN_EPNUM +# define EXTRAKEY_IN_EPNUM MOUSE_IN_EPNUM #endif #ifdef CONSOLE_ENABLE @@ -226,7 +226,7 @@ typedef struct #define MOUSE_EPSIZE 8 #define EXTRAKEY_EPSIZE 8 #define CONSOLE_EPSIZE 32 -#define NKRO_EPSIZE 16 +#define NKRO_EPSIZE 32 #define MIDI_STREAM_EPSIZE 64 #define CDC_NOTIFICATION_EPSIZE 8 #define CDC_EPSIZE 16 -- cgit v1.2.1 From e571d4656cd283ce8d793fe3dd2ac176b84b0bf5 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 6 Sep 2016 18:02:43 -0500 Subject: Set keyboard_nkro (used by TMK) w/ MAGIC_HOST_NKRO If NKRO is enabled, also set keyboard_nkro with MAGIC_HOST_NKRO and MAGIC_UNHOST_NKRO. --- quantum/quantum.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/quantum/quantum.c b/quantum/quantum.c index e3a20f43e0..fa86b6220f 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -27,6 +27,10 @@ static void do_code16 (uint16_t code, void (*f) (uint8_t)) { f(KC_RGUI); } +#ifdef NKRO_ENABLE + extern bool keyboard_nkro; +#endif + void register_code16 (uint16_t code) { do_code16 (code, register_code); register_code (code); @@ -223,6 +227,11 @@ bool process_record_quantum(keyrecord_t *record) { keymap_config.swap_backslash_backspace = 1; } else if (keycode == MAGIC_HOST_NKRO) { keymap_config.nkro = 1; + +#ifdef NKRO_ENABLE + clear_keyboard(); // clear to prevent stuck keys + keyboard_nkro = keymap_config.nkro; +#endif } else if (keycode == MAGIC_SWAP_ALT_GUI) { keymap_config.swap_lalt_lgui = 1; keymap_config.swap_ralt_rgui = 1; @@ -244,6 +253,10 @@ bool process_record_quantum(keyrecord_t *record) { keymap_config.swap_backslash_backspace = 0; } else if (keycode == MAGIC_UNHOST_NKRO) { keymap_config.nkro = 0; +#ifdef NKRO_ENABLE + clear_keyboard(); // clear to prevent stuck keys + keyboard_nkro = keymap_config.nkro; +#endif } else if (keycode == MAGIC_UNSWAP_ALT_GUI) { keymap_config.swap_lalt_lgui = 0; keymap_config.swap_ralt_rgui = 0; -- cgit v1.2.1 From da16733e7ab66ebd27fde21312990f5733966a52 Mon Sep 17 00:00:00 2001 From: Roman Zolotarev Date: Wed, 7 Sep 2016 07:55:22 +0800 Subject: Change CTL_T(KC_ESC) to KC_LCTRL and update readme --- .../keymaps/romanzolotarev-norman-osx/keymap.c | 30 +++++++++--------- .../keymaps/romanzolotarev-norman-osx/readme.md | 37 +++++++++++++++------- 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c index 24d0c4ecb7..2c64304404 100644 --- a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c +++ b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/keymap.c @@ -6,23 +6,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, - KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS, - CTL_T(KC_ESC), KC_A, KC_S, KC_E, KC_T, KC_G, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, - KC_F1, KC_F2, KC_F3, KC_F4, KC_LGUI, - /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE, - /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU, - /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_LALT, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, + KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS, + KC_LCTRL, KC_A, KC_S, KC_E, KC_T, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, + KC_F1, KC_F2, KC_F3, KC_F4, KC_LGUI, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_LALT, // - /*-*/ KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, - /*-*/ KC_NO, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS, - /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT, - /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - /*-*/ /*-*/ /*-*/ KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, - KC_MPLY, KC_MNXT, + /*-*/ KC_F6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + /*-*/ KC_NO, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS, + /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT, + /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + /*-*/ /*-*/ /*-*/ KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_MPLY, KC_MNXT, KC_MPRV, - KC_RALT, KC_QUOT, KC_SPC + KC_RALT, KC_QUOT, KC_SPC ) }; diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md index 80475ab21e..a86061285a 100644 --- a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md +++ b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md @@ -1,28 +1,41 @@ # Roman's Layout -There is only one layer based on [Norman layout](https://normanlayout.info/). +There is only one layer, and it is based on [Norman +layout](https://normanlayout.info/). Looking for multiple-layer layouts? -- [Symbols, arrows, plover, HJKL arrows](../romanzolotarev-norman-plover-osx-hjkl/) +- [Symbols, arrows, plover, HJKL + arrows](../romanzolotarev-norman-plover-osx-hjkl/) - [Same with IJKL arrows](../romanzolotarev-norman-plover-osx/) [![keyboard-layout](romanzolotarev-norman-osx.png)](http://www.keyboard-layout-editor.com/#/gists/9e89d54f1ea6eeeb7dab1b2d19d28195) -## Functional Keys +## How to use Vim key -- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/). -- Tap `F2` to copy screenshot to the clipboard. -- Hold `SHIFT` and tap `F2` to save screenshot as a file. -- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/). - -## CTRL/ESC - -CTRL and ESC are frequently used in Vim. +It is `CTL_T(KC_ESC)` and it works this way: - Tap `CTRL/ESC` to send `ESC`. - Hold `CTRL/ESC` to use as `CTRL`. -## Activate N-rollover +## How to activate N-rollover - Hold left `SHIFT` and right `SHIRT` and then tap `N`. + +## How to make and flash on OS X + +First you need to install few brew packages. + +```bash +brew tap osx-cross/avr +brew install dfu-programmer avr-libc teensy_loader_cli +``` + +Then you can clone this repository, make and flash your ErgoDox. + +```bash +git clone https://github.com/romanzolotarev/qmk_firmware +cd qmk_firmware/keyboards/ergodox +# Optionally tweak ./keymaps/romanzolotarev-norman-osx/keymap.c +SLEEP_LED_ENABLED=no KEYMAP=romanzolotarev-norman-osx make teensy +``` -- cgit v1.2.1 From 1406118c7123359cd66d589d22d6ecfa268e3a24 Mon Sep 17 00:00:00 2001 From: profet23 Date: Tue, 6 Sep 2016 21:59:23 -0400 Subject: Removing separate ergodox80 project. Created KEYMAP_80 in ez.h to support 80 key ergodoxes. Creating default_80 keymap as ez keymap. --- keyboards/ergodox/ez/ez.h | 41 ++ .../ergodox/ez/keymaps/default_80/ergodox80.png | Bin 0 -> 20663 bytes keyboards/ergodox/ez/keymaps/default_80/keymap.c | 183 ++++++ keyboards/ergodox/ez/keymaps/default_80/readme.md | 10 + keyboards/ergodox80/Makefile | 5 - keyboards/ergodox80/config.h | 31 - keyboards/ergodox80/ergodox80.c | 0 keyboards/ergodox80/ergodox80.h | 5 - keyboards/ergodox80/ergodox80/190hotfix.sh | 19 - keyboards/ergodox80/ergodox80/Makefile | 3 - keyboards/ergodox80/ergodox80/config.h | 65 -- keyboards/ergodox80/ergodox80/ergodox80.c | 85 --- keyboards/ergodox80/ergodox80/ergodox80.h | 122 ---- keyboards/ergodox80/ergodox80/i2cmaster.h | 178 ------ keyboards/ergodox80/ergodox80/matrix.c | 382 ----------- keyboards/ergodox80/ergodox80/rules.mk | 76 --- keyboards/ergodox80/ergodox80/twimaster.c | 208 ------ .../ergodox80/ergodox80/util/compile_keymap.py | 710 --------------------- keyboards/ergodox80/ergodox80/util/readme.md | 3 - keyboards/ergodox80/keymaps/default/keymap.c | 183 ------ keyboards/ergodox80/readme.md | 6 - keyboards/ergodox80/rules.mk | 28 - 22 files changed, 234 insertions(+), 2109 deletions(-) create mode 100644 keyboards/ergodox/ez/keymaps/default_80/ergodox80.png create mode 100644 keyboards/ergodox/ez/keymaps/default_80/keymap.c create mode 100644 keyboards/ergodox/ez/keymaps/default_80/readme.md delete mode 100644 keyboards/ergodox80/Makefile delete mode 100644 keyboards/ergodox80/config.h delete mode 100644 keyboards/ergodox80/ergodox80.c delete mode 100644 keyboards/ergodox80/ergodox80.h delete mode 100755 keyboards/ergodox80/ergodox80/190hotfix.sh delete mode 100644 keyboards/ergodox80/ergodox80/Makefile delete mode 100644 keyboards/ergodox80/ergodox80/config.h delete mode 100644 keyboards/ergodox80/ergodox80/ergodox80.c delete mode 100644 keyboards/ergodox80/ergodox80/ergodox80.h delete mode 100644 keyboards/ergodox80/ergodox80/i2cmaster.h delete mode 100644 keyboards/ergodox80/ergodox80/matrix.c delete mode 100644 keyboards/ergodox80/ergodox80/rules.mk delete mode 100644 keyboards/ergodox80/ergodox80/twimaster.c delete mode 100644 keyboards/ergodox80/ergodox80/util/compile_keymap.py delete mode 100644 keyboards/ergodox80/ergodox80/util/readme.md delete mode 100644 keyboards/ergodox80/keymaps/default/keymap.c delete mode 100644 keyboards/ergodox80/readme.md delete mode 100644 keyboards/ergodox80/rules.mk diff --git a/keyboards/ergodox/ez/ez.h b/keyboards/ergodox/ez/ez.h index db4ec867bc..124bf850e7 100644 --- a/keyboards/ergodox/ez/ez.h +++ b/keyboards/ergodox/ez/ez.h @@ -119,4 +119,45 @@ inline void ergodox_led_all_set(uint8_t n) { k0D, k1D, k2D, k3D, k4D, KC_NO } \ } +#define KEYMAP_80( \ + \ + /* left hand, spatial positions */ \ + k00,k01,k02,k03,k04,k05,k06, \ + k10,k11,k12,k13,k14,k15,k16, \ + k20,k21,k22,k23,k24,k25, \ + k30,k31,k32,k33,k34,k35,k36, \ + k40,k41,k42,k43,k44, \ + k55,k56, \ + k45,k46,k54, \ + k53,k52,k51, \ + \ + /* right hand, spatial positions */ \ + k07,k08,k09,k0A,k0B,k0C,k0D, \ + k17,k18,k19,k1A,k1B,k1C,k1D, \ + k28,k29,k2A,k2B,k2C,k2D, \ + k37,k38,k39,k3A,k3B,k3C,k3D, \ + k49,k4A,k4B,k4C,k4D, \ + k57,k58, \ + k59,k47,k48, \ + k5C,k5B,k5A ) \ + \ + /* matrix positions */ \ + { \ + { k00, k10, k20, k30, k40, KC_NO }, \ + { k01, k11, k21, k31, k41, k51 }, \ + { k02, k12, k22, k32, k42, k52 }, \ + { k03, k13, k23, k33, k43, k53 }, \ + { k04, k14, k24, k34, k44, k54 }, \ + { k05, k15, k25, k35, k45, k55 }, \ + { k06, k16, KC_NO, k36, k46, k56 }, \ + \ + { k07, k17, KC_NO, k37, k47, k57 }, \ + { k08, k18, k28, k38, k48, k58 }, \ + { k09, k19, k29, k39, k49, k59 }, \ + { k0A, k1A, k2A, k3A, k4A, k5A }, \ + { k0B, k1B, k2B, k3B, k4B, k5B }, \ + { k0C, k1C, k2C, k3C, k4C, k5C }, \ + { k0D, k1D, k2D, k3D, k4D, KC_NO } \ + } + #endif diff --git a/keyboards/ergodox/ez/keymaps/default_80/ergodox80.png b/keyboards/ergodox/ez/keymaps/default_80/ergodox80.png new file mode 100644 index 0000000000..66b9752ebc Binary files /dev/null and b/keyboards/ergodox/ez/keymaps/default_80/ergodox80.png differ diff --git a/keyboards/ergodox/ez/keymaps/default_80/keymap.c b/keyboards/ergodox/ez/keymaps/default_80/keymap.c new file mode 100644 index 0000000000..505ff29722 --- /dev/null +++ b/keyboards/ergodox/ez/keymaps/default_80/keymap.c @@ -0,0 +1,183 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | 1 | 2 | Home | | PgUp | 3 | 4 | + * |------|------|------| |------|--------|------| + * | Space| BkSp | End | | PgDn | Tab |Enter | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP_80( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_1, KC_2, KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP,KC_3, KC_4, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * |------|------|------| |------|------|------| + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP_80( + // left hand + M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,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, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+----------. + * | | | | | | | | + * |------|------|------| |------|------|----------| + * | | | | | | |BrwserBack| + * `--------------------' `------------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP_80( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + 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_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/ez/keymaps/default_80/readme.md b/keyboards/ergodox/ez/keymaps/default_80/readme.md new file mode 100644 index 0000000000..b6bbb86d2c --- /dev/null +++ b/keyboards/ergodox/ez/keymaps/default_80/readme.md @@ -0,0 +1,10 @@ +# ErgoDox 80 Default Configuration + +This is based on the default Ergodox EZ keymap. +The difference is that this keymap supports 80 key layouts. +If you own an 80 key Ergodox, use this as an example to get your desired keymap. + +**NOTE:** This layout is not physically supported by the Ergodox EZ. + + +![Default80](ergodox80.png) diff --git a/keyboards/ergodox80/Makefile b/keyboards/ergodox80/Makefile deleted file mode 100644 index 94fa847ff8..0000000000 --- a/keyboards/ergodox80/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -SUBPROJECT_DEFAULT = ergodox80 - -ifndef MAKEFILE_INCLUDED - include ../../Makefile -endif diff --git a/keyboards/ergodox80/config.h b/keyboards/ergodox80/config.h deleted file mode 100644 index 5dd6daa15f..0000000000 --- a/keyboards/ergodox80/config.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef KEYBOARDS_ERGODOX_CONFIG_H_ -#define KEYBOARDS_ERGODOX_CONFIG_H_ - -#define MOUSEKEY_DELAY 100 -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_MAX_SPEED 3 -#define MOUSEKEY_TIME_TO_MAX 10 - -#define TAPPING_TOGGLE 1 - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -#define TAPPING_TERM 200 -#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) - -/* 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_LCTL) | MOD_BIT(KC_RCTL)) || \ - keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ -) - -#include "ergodox80/config.h" - - -#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ diff --git a/keyboards/ergodox80/ergodox80.c b/keyboards/ergodox80/ergodox80.c deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/keyboards/ergodox80/ergodox80.h b/keyboards/ergodox80/ergodox80.h deleted file mode 100644 index ea40f4d455..0000000000 --- a/keyboards/ergodox80/ergodox80.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef KEYBOARDS_ERGODOX_ERGODOX_H_ -#define KEYBOARDS_ERGODOX_ERGODOX_H_ -#include "ergodox80.h" - -#endif /* KEYBOARDS_ERGODOX_ERGODOX_H_ */ diff --git a/keyboards/ergodox80/ergodox80/190hotfix.sh b/keyboards/ergodox80/ergodox80/190hotfix.sh deleted file mode 100755 index bdc3adce22..0000000000 --- a/keyboards/ergodox80/ergodox80/190hotfix.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -#a tool to fix broken keymaps as a result of pull request #190 -#changing the declaration of matrix_scan_user() and matrix_init_user() -# -#This script will save a copy of the specified keymap as keymap.c.bak -#and then create a new keymap.c with the definion corrected. -#this script must be run from the ergodox_ez directory -if [ $# -ne 1 ]; then - echo $0: usage: ./190hotfix keymap_name - exit 1 -fi - -echo Saving backup as ./keymaps/$1/keymap.c.bak ... -mv ./keymaps/$1/keymap.c ./keymaps/$1/keymap.c.bak - -echo Modifying ./keymaps/$1/keymap.c ... -cat ./keymaps/$1/keymap.c.bak | sed -r 's/^void \* matrix_/void matrix_/'>./keymaps/$1/keymap.c - -echo Complete! diff --git a/keyboards/ergodox80/ergodox80/Makefile b/keyboards/ergodox80/ergodox80/Makefile deleted file mode 100644 index 191c6bb664..0000000000 --- a/keyboards/ergodox80/ergodox80/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -ifndef MAKEFILE_INCLUDED - include ../../../Makefile -endif \ No newline at end of file diff --git a/keyboards/ergodox80/ergodox80/config.h b/keyboards/ergodox80/ergodox80/config.h deleted file mode 100644 index 084a044ee1..0000000000 --- a/keyboards/ergodox80/ergodox80/config.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -Copyright 2012 Jun Wako -Copyright 2013 Oleg Kostyuk - -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 . -*/ - -#ifndef ERGODOX_EZ_CONFIG_H -#define ERGODOX_EZ_CONFIG_H - -#include "../config.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x1307 -#define DEVICE_VER 0x0001 -#define MANUFACTURER ErgoDox EZ -#define PRODUCT ErgoDox EZ -#define DESCRIPTION QMK keyboard firmware for Ergodox EZ - -/* key matrix size */ -#define MATRIX_ROWS 14 -#define MATRIX_COLS 6 - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - -#define LED_BRIGHTNESS_LO 15 -#define LED_BRIGHTNESS_HI 255 - - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - -/* - * 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 -//#define DEBUG_MATRIX_SCAN_RATE - -#endif diff --git a/keyboards/ergodox80/ergodox80/ergodox80.c b/keyboards/ergodox80/ergodox80/ergodox80.c deleted file mode 100644 index b21b1073b4..0000000000 --- a/keyboards/ergodox80/ergodox80/ergodox80.c +++ /dev/null @@ -1,85 +0,0 @@ -#include "ergodox80.h" -#include "i2cmaster.h" - -bool i2c_initialized = 0; -uint8_t mcp23018_status = 0x20; - -void matrix_init_kb(void) { - // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md") - TCCR1A = 0b10101001; // set and configure fast PWM - TCCR1B = 0b00001001; // set and configure fast PWM - - // (tied to Vcc for hardware convenience) - DDRB &= ~(1<<4); // set B(4) as input - PORTB &= ~(1<<4); // set B(4) internal pull-up disabled - - // unused pins - C7, D4, D5, D7, E6 - // set as input with internal pull-ip enabled - DDRC &= ~(1<<7); - DDRD &= ~(1<<7 | 1<<5 | 1<<4); - DDRE &= ~(1<<6); - PORTC |= (1<<7); - PORTD |= (1<<7 | 1<<5 | 1<<4); - PORTE |= (1<<6); - - ergodox_blink_all_leds(); - - matrix_init_user(); -} - -void ergodox_blink_all_leds(void) -{ - ergodox_led_all_off(); - ergodox_led_all_set(LED_BRIGHTNESS_HI); - ergodox_right_led_1_on(); - _delay_ms(50); - ergodox_right_led_2_on(); - _delay_ms(50); - ergodox_right_led_3_on(); - _delay_ms(50); - ergodox_right_led_1_off(); - _delay_ms(50); - ergodox_right_led_2_off(); - _delay_ms(50); - ergodox_right_led_3_off(); - //ergodox_led_all_on(); - //_delay_ms(333); - ergodox_led_all_off(); -} - -uint8_t init_mcp23018(void) { - mcp23018_status = 0x20; - - // I2C subsystem - if (i2c_initialized == 0) { - i2c_init(); // on pins D(1,0) - i2c_initialized++; - _delay_ms(1000); - } - - // set pin direction - // - unused : input : 1 - // - input : input : 1 - // - driving : output : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(IODIRA); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out; - i2c_stop(); - - // set pull-up - // - unused : on : 1 - // - input : on : 1 - // - driving : off : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPPUA); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out; - -out: - i2c_stop(); - - return mcp23018_status; -} - - diff --git a/keyboards/ergodox80/ergodox80/ergodox80.h b/keyboards/ergodox80/ergodox80/ergodox80.h deleted file mode 100644 index 8012b0a749..0000000000 --- a/keyboards/ergodox80/ergodox80/ergodox80.h +++ /dev/null @@ -1,122 +0,0 @@ -#ifndef ERGODOX_EZ_H -#define ERGODOX_EZ_H - -#include "quantum.h" -#include -#include -#include "i2cmaster.h" -#include - -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 - -// I2C aliases and register addresses (see "mcp23018.md") -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) -#define IODIRA 0x00 // i/o direction register -#define IODIRB 0x01 -#define GPPUA 0x0C // GPIO pull-up resistor register -#define GPPUB 0x0D -#define GPIOA 0x12 // general purpose i/o port register (write modifies OLAT) -#define GPIOB 0x13 -#define OLATA 0x14 // output latch register -#define OLATB 0x15 - -extern uint8_t mcp23018_status; - -void init_ergodox(void); -void ergodox_blink_all_leds(void); -uint8_t init_mcp23018(void); -uint8_t ergodox_left_leds_update(void); - -#define LED_BRIGHTNESS_LO 15 -#define LED_BRIGHTNESS_HI 255 - - -inline void ergodox_board_led_on(void) { DDRD |= (1<<6); PORTD |= (1<<6); } -inline void ergodox_right_led_1_on(void) { DDRB |= (1<<5); PORTB |= (1<<5); } -inline void ergodox_right_led_2_on(void) { DDRB |= (1<<6); PORTB |= (1<<6); } -inline void ergodox_right_led_3_on(void) { DDRB |= (1<<7); PORTB |= (1<<7); } -inline void ergodox_right_led_on(uint8_t led) { DDRB |= (1<<(led+4)); PORTB |= (1<<(led+4)); } - -inline void ergodox_board_led_off(void) { DDRD &= ~(1<<6); PORTD &= ~(1<<6); } -inline void ergodox_right_led_1_off(void) { DDRB &= ~(1<<5); PORTB &= ~(1<<5); } -inline void ergodox_right_led_2_off(void) { DDRB &= ~(1<<6); PORTB &= ~(1<<6); } -inline void ergodox_right_led_3_off(void) { DDRB &= ~(1<<7); PORTB &= ~(1<<7); } -inline void ergodox_right_led_off(uint8_t led) { DDRB &= ~(1<<(led+4)); PORTB &= ~(1<<(led+4)); } - -inline void ergodox_led_all_on(void) -{ - ergodox_board_led_on(); - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); -} - -inline void ergodox_led_all_off(void) -{ - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); -} - -inline void ergodox_right_led_1_set(uint8_t n) { OCR1A = n; } -inline void ergodox_right_led_2_set(uint8_t n) { OCR1B = n; } -inline void ergodox_right_led_3_set(uint8_t n) { OCR1C = n; } -inline void ergodox_right_led_set(uint8_t led, uint8_t n) { - (led == 1) ? (OCR1A = n) : - (led == 2) ? (OCR1B = n) : - (OCR1C = n); -} - -inline void ergodox_led_all_set(uint8_t n) -{ - ergodox_right_led_1_set(n); - ergodox_right_led_2_set(n); - ergodox_right_led_3_set(n); -} - -#define KEYMAP( \ - \ - /* left hand, spatial positions */ \ - k00,k01,k02,k03,k04,k05,k06, \ - k10,k11,k12,k13,k14,k15,k16, \ - k20,k21,k22,k23,k24,k25, \ - k30,k31,k32,k33,k34,k35,k36, \ - k40,k41,k42,k43,k44, \ - k55,k56, \ - k45,k46,k54, \ - k53,k52,k51, \ - \ - /* right hand, spatial positions */ \ - k07,k08,k09,k0A,k0B,k0C,k0D, \ - k17,k18,k19,k1A,k1B,k1C,k1D, \ - k28,k29,k2A,k2B,k2C,k2D, \ - k37,k38,k39,k3A,k3B,k3C,k3D, \ - k49,k4A,k4B,k4C,k4D, \ - k57,k58, \ - k59,k47,k48, \ - k5C,k5B,k5A ) \ - \ - /* matrix positions */ \ - { \ - { k00, k10, k20, k30, k40, KC_NO }, \ - { k01, k11, k21, k31, k41, k51 }, \ - { k02, k12, k22, k32, k42, k52 }, \ - { k03, k13, k23, k33, k43, k53 }, \ - { k04, k14, k24, k34, k44, k54 }, \ - { k05, k15, k25, k35, k45, k55 }, \ - { k06, k16, KC_NO, k36, k46, k56 }, \ - \ - { k07, k17, KC_NO, k37, k47, k57 }, \ - { k08, k18, k28, k38, k48, k58 }, \ - { k09, k19, k29, k39, k49, k59 }, \ - { k0A, k1A, k2A, k3A, k4A, k5A }, \ - { k0B, k1B, k2B, k3B, k4B, k5B }, \ - { k0C, k1C, k2C, k3C, k4C, k5C }, \ - { k0D, k1D, k2D, k3D, k4D, KC_NO } \ - } - -#endif diff --git a/keyboards/ergodox80/ergodox80/i2cmaster.h b/keyboards/ergodox80/ergodox80/i2cmaster.h deleted file mode 100644 index 3917b9e6c0..0000000000 --- a/keyboards/ergodox80/ergodox80/i2cmaster.h +++ /dev/null @@ -1,178 +0,0 @@ -#ifndef _I2CMASTER_H -#define _I2CMASTER_H 1 -/************************************************************************* -* Title: C include file for the I2C master interface -* (i2cmaster.S or twimaster.c) -* Author: Peter Fleury http://jump.to/fleury -* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $ -* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 -* Target: any AVR device -* Usage: see Doxygen manual -**************************************************************************/ - -#ifdef DOXYGEN -/** - @defgroup pfleury_ic2master I2C Master library - @code #include @endcode - - @brief I2C (TWI) Master Software Library - - Basic routines for communicating with I2C slave devices. This single master - implementation is limited to one bus master on the I2C bus. - - This I2c library is implemented as a compact assembler software implementation of the I2C protocol - which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c). - Since the API for these two implementations is exactly the same, an application can be linked either against the - software I2C implementation or the hardware I2C implementation. - - Use 4.7k pull-up resistor on the SDA and SCL pin. - - Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module - i2cmaster.S to your target when using the software I2C implementation ! - - Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion. - - @note - The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted - to GNU assembler and AVR-GCC C call interface. - Replaced the incorrect quarter period delays found in AVR300 with - half period delays. - - @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury - - @par API Usage Example - The following code shows typical usage of this library, see example test_i2cmaster.c - - @code - - #include - - - #define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet - - int main(void) - { - unsigned char ret; - - i2c_init(); // initialize I2C library - - // write 0x75 to EEPROM address 5 (Byte Write) - i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode - i2c_write(0x05); // write address = 5 - i2c_write(0x75); // write value 0x75 to EEPROM - i2c_stop(); // set stop conditon = release bus - - - // read previously written value back from EEPROM address 5 - i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode - - i2c_write(0x05); // write address = 5 - i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode - - ret = i2c_readNak(); // read one byte from EEPROM - i2c_stop(); - - for(;;); - } - @endcode - -*/ -#endif /* DOXYGEN */ - -/**@{*/ - -#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 -#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" -#endif - -#include - -/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */ -#define I2C_READ 1 - -/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */ -#define I2C_WRITE 0 - - -/** - @brief initialize the I2C master interace. Need to be called only once - @param void - @return none - */ -extern void i2c_init(void); - - -/** - @brief Terminates the data transfer and releases the I2C bus - @param void - @return none - */ -extern void i2c_stop(void); - - -/** - @brief Issues a start condition and sends address and transfer direction - - @param addr address and transfer direction of I2C device - @retval 0 device accessible - @retval 1 failed to access device - */ -extern unsigned char i2c_start(unsigned char addr); - - -/** - @brief Issues a repeated start condition and sends address and transfer direction - - @param addr address and transfer direction of I2C device - @retval 0 device accessible - @retval 1 failed to access device - */ -extern unsigned char i2c_rep_start(unsigned char addr); - - -/** - @brief Issues a start condition and sends address and transfer direction - - If device is busy, use ack polling to wait until device ready - @param addr address and transfer direction of I2C device - @return none - */ -extern void i2c_start_wait(unsigned char addr); - - -/** - @brief Send one byte to I2C device - @param data byte to be transfered - @retval 0 write successful - @retval 1 write failed - */ -extern unsigned char i2c_write(unsigned char data); - - -/** - @brief read one byte from the I2C device, request more data from device - @return byte read from I2C device - */ -extern unsigned char i2c_readAck(void); - -/** - @brief read one byte from the I2C device, read is followed by a stop condition - @return byte read from I2C device - */ -extern unsigned char i2c_readNak(void); - -/** - @brief read one byte from the I2C device - - Implemented as a macro, which calls either i2c_readAck or i2c_readNak - - @param ack 1 send ack, request more data from device
- 0 send nak, read is followed by a stop condition - @return byte read from I2C device - */ -extern unsigned char i2c_read(unsigned char ack); -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); - - -/**@}*/ -#endif diff --git a/keyboards/ergodox80/ergodox80/matrix.c b/keyboards/ergodox80/ergodox80/matrix.c deleted file mode 100644 index c352924b52..0000000000 --- a/keyboards/ergodox80/ergodox80/matrix.c +++ /dev/null @@ -1,382 +0,0 @@ -/* - -Note for ErgoDox EZ customizers: Here be dragons! -This is not a file you want to be messing with. -All of the interesting stuff for you is under keymaps/ :) -Love, Erez - -Copyright 2013 Oleg Kostyuk - -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 . -*/ - -/* - * scan matrix - */ -#include -#include -#include -#include "wait.h" -#include "action_layer.h" -#include "print.h" -#include "debug.h" -#include "util.h" -#include "matrix.h" -#include "ergodox80.h" -#include "i2cmaster.h" -#ifdef DEBUG_MATRIX_SCAN_RATE -#include "timer.h" -#endif - -/* - * This constant define not debouncing time in msecs, but amount of matrix - * scan loops which should be made to get stable debounced results. - * - * On Ergodox matrix scan rate is relatively low, because of slow I2C. - * Now it's only 317 scans/second, or about 3.15 msec/scan. - * According to Cherry specs, debouncing time is 5 msec. - * - * And so, there is no sense to have DEBOUNCE higher than 2. - */ - -#ifndef DEBOUNCE -# define DEBOUNCE 5 -#endif -static uint8_t debouncing = DEBOUNCE; - -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; - -static matrix_row_t read_cols(uint8_t row); -static void init_cols(void); -static void unselect_rows(void); -static void select_row(uint8_t row); - -static uint8_t mcp23018_reset_loop; - -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - - -__attribute__ ((weak)) -void matrix_init_user(void) {} - -__attribute__ ((weak)) -void matrix_scan_user(void) {} - -__attribute__ ((weak)) -void matrix_init_kb(void) { - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -inline -uint8_t matrix_rows(void) -{ - return MATRIX_ROWS; -} - -inline -uint8_t matrix_cols(void) -{ - return MATRIX_COLS; -} - -void matrix_init(void) -{ - // initialize row and col - - mcp23018_status = init_mcp23018(); - - - unselect_rows(); - init_cols(); - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; - matrix_debouncing[i] = 0; - } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - - matrix_init_kb(); - -} - -void matrix_power_up(void) { - mcp23018_status = init_mcp23018(); - - unselect_rows(); - init_cols(); - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; - matrix_debouncing[i] = 0; - } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - -} - -uint8_t matrix_scan(void) -{ - if (mcp23018_status) { // if there was an error - if (++mcp23018_reset_loop == 0) { - // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans - // this will be approx bit more frequent than once per second - print("trying to reset mcp23018\n"); - mcp23018_status = init_mcp23018(); - if (mcp23018_status) { - print("left side not responding\n"); - } else { - print("left side attached\n"); - ergodox_blink_all_leds(); - } - } - } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif - - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - select_row(i); - wait_us(30); // without this wait read unstable value. - matrix_row_t cols = read_cols(i); - if (matrix_debouncing[i] != cols) { - matrix_debouncing[i] = cols; - if (debouncing) { - debug("bounce!: "); debug_hex(debouncing); debug("\n"); - } - debouncing = DEBOUNCE; - } - unselect_rows(); - } - - if (debouncing) { - if (--debouncing) { - wait_us(1); - // this should be wait_ms(1) but has been left as-is at EZ's request - } else { - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = matrix_debouncing[i]; - } - } - } - - matrix_scan_quantum(); - - return 1; -} - -bool matrix_is_modified(void) -{ - if (debouncing) return false; - return true; -} - -inline -bool matrix_is_on(uint8_t row, uint8_t col) -{ - return (matrix[row] & ((matrix_row_t)1< http://jump.to/fleury -* File: $Id: twimaster.c,v 1.3 2005/07/02 11:14:21 Peter Exp $ -* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 -* Target: any AVR device with hardware TWI -* Usage: API compatible with I2C Software Library i2cmaster.h -**************************************************************************/ -#include -#include - -#include - - -/* define CPU frequency in Mhz here if not defined in Makefile */ -#ifndef F_CPU -#define F_CPU 16000000UL -#endif - -/* I2C clock in Hz */ -#define SCL_CLOCK 400000L - - -/************************************************************************* - Initialization of the I2C bus interface. Need to be called only once -*************************************************************************/ -void i2c_init(void) -{ - /* initialize TWI clock - * minimal values in Bit Rate Register (TWBR) and minimal Prescaler - * bits in the TWI Status Register should give us maximal possible - * I2C bus speed - about 444 kHz - * - * for more details, see 20.5.2 in ATmega16/32 secification - */ - - TWSR = 0; /* no prescaler */ - TWBR = 10; /* must be >= 10 for stable operation */ - -}/* i2c_init */ - - -/************************************************************************* - Issues a start condition and sends address and transfer direction. - return 0 = device accessible, 1= failed to access device -*************************************************************************/ -unsigned char i2c_start(unsigned char address) -{ - uint8_t twst; - - // send START condition - TWCR = (1<= 0: - if section['name'] == 'layout_config': - config.update(loads("\n".join( - section['code_lines'] - ))) - elif section['sub_name'].startswith('layer'): - layer_name = section['sub_name'] - config['layer_lines'][layer_name] = section['code_lines'] - - reset_section() - - def amend_section(line_index, line): - section['end_line'] = line_index - section['code_lines'].append(line) - - config = DEFAULT_CONFIG.copy() - config.update({ - 'layer_lines': collections.OrderedDict(), - 'macro_ids': {'UM'}, - 'unicode_macros': {}, - }) - - section = {} - reset_section() - - with io.open(path, encoding="utf-8") as fh: - for i, line in enumerate(fh): - if line.startswith("#"): - start_section(i, line) - elif line.startswith(" "): - amend_section(i, line[4:]) - else: - # TODO: maybe parse description - pass - - end_section() - assert 'layout' in config - return config - -# header file parsing - -IF0_RE = re.compile(r""" - ^ - #if 0 - $.*? - #endif -""", re.MULTILINE | re.DOTALL | re.VERBOSE) - - -COMMENT_RE = re.compile(r""" - /\* - .*? - \*/" -""", re.MULTILINE | re.DOTALL | re.VERBOSE) - - -def read_header_file(path): - with io.open(path, encoding="utf-8") as fh: - data = fh.read() - data, _ = COMMENT_RE.subn("", data) - data, _ = IF0_RE.subn("", data) - return data - - -def regex_partial(re_str_fmt, flags): - def partial(*args, **kwargs): - re_str = re_str_fmt.format(*args, **kwargs) - return re.compile(re_str, flags) - return partial - - -KEYDEF_REP = regex_partial(r""" - #define - \s - ( - (?:{}) # the prefixes - (?:\w+) # the key name - ) # capture group end -""", re.MULTILINE | re.DOTALL | re.VERBOSE) - - -ENUM_RE = re.compile(r""" - ( - enum - \s\w+\s - \{ - .*? # the enum content - \} - ; - ) # capture group end -""", re.MULTILINE | re.DOTALL | re.VERBOSE) - - -ENUM_KEY_REP = regex_partial(r""" - ( - {} # the prefixes - \w+ # the key name - ) # capture group end -""", re.MULTILINE | re.DOTALL | re.VERBOSE) - - -def parse_keydefs(config, data): - prefix_options = "|".join(config['key_prefixes']) - keydef_re = KEYDEF_REP(prefix_options) - enum_key_re = ENUM_KEY_REP(prefix_options) - for match in keydef_re.finditer(data): - yield match.groups()[0] - - for enum_match in ENUM_RE.finditer(data): - enum = enum_match.groups()[0] - for key_match in enum_key_re.finditer(enum): - yield key_match.groups()[0] - - -def parse_valid_keys(config, out_path): - basepath = os.path.abspath(os.path.join(os.path.dirname(out_path))) - dirpaths = [] - subpaths = [] - while len(subpaths) < 6: - path = os.path.join(basepath, *subpaths) - dirpaths.append(path) - dirpaths.append(os.path.join(path, "tmk_core", "common")) - dirpaths.append(os.path.join(path, "quantum")) - subpaths.append('..') - - includes = set(config['keymaps_includes']) - includes.add("keycode.h") - - valid_keycodes = set() - for dirpath, include in it.product(dirpaths, includes): - include_path = os.path.join(dirpath, include) - if os.path.exists(include_path): - header_data = read_header_file(include_path) - valid_keycodes.update( - parse_keydefs(config, header_data) - ) - return valid_keycodes - - -# Keymap Parsing - -def iter_raw_codes(layer_lines, filler, separator): - filler_re = re.compile("[" + filler + " ]") - for line in layer_lines: - line, _ = filler_re.subn("", line.strip()) - if not line: - continue - codes = line.split(separator) - for code in codes[1:-1]: - yield code - - -def iter_indexed_codes(raw_codes, key_indexes): - key_rows = {} - key_indexes_flat = [] - - for row_index, key_indexes in enumerate(key_indexes): - for key_index in key_indexes: - key_rows[key_index] = row_index - key_indexes_flat.extend(key_indexes) - assert len(raw_codes) == len(key_indexes_flat) - for raw_code, key_index in zip(raw_codes, key_indexes_flat): - # we keep track of the row mostly for layout purposes - yield raw_code, key_index, key_rows[key_index] - - -LAYER_CHANGE_RE = re.compile(r""" - (DF|TG|MO)\(\d+\) -""", re.VERBOSE) - - -MACRO_RE = re.compile(r""" - M\(\w+\) -""", re.VERBOSE) - - -UNICODE_RE = re.compile(r""" - U[0-9A-F]{4} -""", re.VERBOSE) - - -NON_CODE = re.compile(r""" - ^[^A-Z0-9_]$ -""", re.VERBOSE) - - -def parse_uni_code(raw_code): - macro_id = "UC_" + ( - unicodedata.name(raw_code) - .replace(" ", "_") - .replace("-", "_") - ) - code = "M({})".format(macro_id) - uc_hex = "{:04X}".format(ord(raw_code)) - return code, macro_id, uc_hex - - -def parse_key_code(raw_code, key_prefixes, valid_keycodes): - if raw_code in valid_keycodes: - return raw_code - - for prefix in key_prefixes: - code = prefix + raw_code - if code in valid_keycodes: - return code - - -def parse_code(raw_code, key_prefixes, valid_keycodes): - if not raw_code: - return 'KC_TRNS', None, None - - if LAYER_CHANGE_RE.match(raw_code): - return raw_code, None, None - - if MACRO_RE.match(raw_code): - macro_id = raw_code[2:-1] - return raw_code, macro_id, None - - if UNICODE_RE.match(raw_code): - hex_code = raw_code[1:] - return parse_uni_code(chr(int(hex_code, 16))) - - if NON_CODE.match(raw_code): - return parse_uni_code(raw_code) - - code = parse_key_code(raw_code, key_prefixes, valid_keycodes) - return code, None, None - - -def parse_keymap(config, key_indexes, layer_lines, valid_keycodes): - keymap = {} - raw_codes = list(iter_raw_codes( - layer_lines, config['filler'], config['separator'] - )) - indexed_codes = iter_indexed_codes(raw_codes, key_indexes) - key_prefixes = config['key_prefixes'] - for raw_code, key_index, row_index in indexed_codes: - code, macro_id, uc_hex = parse_code( - raw_code, key_prefixes, valid_keycodes - ) - # TODO: line numbers for invalid codes - err_msg = "Could not parse key '{}' on row {}".format( - raw_code, row_index - ) - assert code is not None, err_msg - # print(repr(raw_code), repr(code), macro_id, uc_hex) - if macro_id: - config['macro_ids'].add(macro_id) - if uc_hex: - config['unicode_macros'][macro_id] = uc_hex - keymap[key_index] = (code, row_index) - return keymap - - -def parse_keymaps(config, valid_keycodes): - keymaps = collections.OrderedDict() - key_indexes = config.get( - 'key_indexes', KEYBOARD_LAYOUTS[config['layout']] - ) - # TODO: maybe validate key_indexes - - for layer_name, layer_lines, in config['layer_lines'].items(): - keymaps[layer_name] = parse_keymap( - config, key_indexes, layer_lines, valid_keycodes - ) - return keymaps - -# keymap.c output - -USERCODE = """ -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - case L1: - ergodox_right_led_1_on(); - break; - case L2: - ergodox_right_led_2_on(); - break; - case L3: - ergodox_right_led_3_on(); - break; - case L4: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - break; - case L5: - ergodox_right_led_1_on(); - ergodox_right_led_3_on(); - break; - // case L6: - // ergodox_right_led_2_on(); - // ergodox_right_led_3_on(); - // break; - // case L7: - // ergodox_right_led_1_on(); - // ergodox_right_led_2_on(); - // ergodox_right_led_3_on(); - // break; - default: - ergodox_board_led_off(); - break; - } -}; -""" - -MACROCODE = """ -#define UC_MODE_WIN 0 -#define UC_MODE_LINUX 1 -#define UC_MODE_OSX 2 - -// TODO: allow default mode to be configured -static uint16_t unicode_mode = UC_MODE_WIN; - -uint16_t hextokeycode(uint8_t hex) {{ - if (hex == 0x0) {{ - return KC_P0; - }} - if (hex < 0xA) {{ - return KC_P1 + (hex - 0x1); - }} - return KC_A + (hex - 0xA); -}} - -void unicode_action_function(uint16_t hi, uint16_t lo) {{ - switch (unicode_mode) {{ - case UC_MODE_WIN: - register_code(KC_LALT); - - register_code(KC_PPLS); - unregister_code(KC_PPLS); - - register_code(hextokeycode((hi & 0xF0) >> 4)); - unregister_code(hextokeycode((hi & 0xF0) >> 4)); - register_code(hextokeycode((hi & 0x0F))); - unregister_code(hextokeycode((hi & 0x0F))); - register_code(hextokeycode((lo & 0xF0) >> 4)); - unregister_code(hextokeycode((lo & 0xF0) >> 4)); - register_code(hextokeycode((lo & 0x0F))); - unregister_code(hextokeycode((lo & 0x0F))); - - unregister_code(KC_LALT); - break; - case UC_MODE_LINUX: - register_code(KC_LCTL); - register_code(KC_LSFT); - - register_code(KC_U); - unregister_code(KC_U); - - register_code(hextokeycode((hi & 0xF0) >> 4)); - unregister_code(hextokeycode((hi & 0xF0) >> 4)); - register_code(hextokeycode((hi & 0x0F))); - unregister_code(hextokeycode((hi & 0x0F))); - register_code(hextokeycode((lo & 0xF0) >> 4)); - unregister_code(hextokeycode((lo & 0xF0) >> 4)); - register_code(hextokeycode((lo & 0x0F))); - unregister_code(hextokeycode((lo & 0x0F))); - - unregister_code(KC_LCTL); - unregister_code(KC_LSFT); - break; - case UC_MODE_OSX: - break; - }} -}} - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ - if (!record->event.pressed) {{ - return MACRO_NONE; - }} - // MACRODOWN only works in this function - switch(id) {{ - case UM: - unicode_mode = (unicode_mode + 1) % 2; - break; -{macro_cases} -{unicode_macro_cases} - default: - break; - }} - return MACRO_NONE; -}}; -""" - - -UNICODE_MACRO_TEMPLATE = """ -case {macro_id}: - unicode_action_function(0x{hi:02x}, 0x{lo:02x}); - break; -""".strip() - - -def unicode_macro_cases(config): - for macro_id, uc_hex in config['unicode_macros'].items(): - hi = int(uc_hex, 16) >> 8 - lo = int(uc_hex, 16) & 0xFF - unimacro_keys = ", ".join( - "T({})".format( - "KP_" + digit if digit.isdigit() else digit - ) for digit in uc_hex - ) - yield UNICODE_MACRO_TEMPLATE.format( - macro_id=macro_id, hi=hi, lo=lo - ) - - -def iter_keymap_lines(keymap, row_indents=None): - col_widths = {} - col = 0 - # first pass, figure out the column widths - prev_row_index = None - for code, row_index in keymap.values(): - if row_index != prev_row_index: - col = 0 - if row_indents: - col = row_indents[row_index] - col_widths[col] = max(len(code), col_widths.get(col, 0)) - prev_row_index = row_index - col += 1 - - # second pass, yield the cell values - col = 0 - prev_row_index = None - for key_index in sorted(keymap): - code, row_index = keymap[key_index] - if row_index != prev_row_index: - col = 0 - yield "\n" - if row_indents: - for indent_col in range(row_indents[row_index]): - pad = " " * (col_widths[indent_col] - 4) - yield (" /*-*/" + pad) - col = row_indents[row_index] - else: - yield pad - yield " {}".format(code) - if key_index < len(keymap) - 1: - yield "," - # This will be yielded on the next iteration when - # we know that we're not at the end of a line. - pad = " " * (col_widths[col] - len(code)) - prev_row_index = row_index - col += 1 - - -def iter_keymap_parts(config, keymaps): - # includes - for include_path in config['keymaps_includes']: - yield '#include "{}"\n'.format(include_path) - - yield "\n" - - # definitions - for i, macro_id in enumerate(sorted(config['macro_ids'])): - yield "#define {} {}\n".format(macro_id, i) - - yield "\n" - - for i, layer_name in enumerate(config['layer_lines']): - yield '#define L{0:<3} {0:<5} // {1}\n'.format(i, layer_name) - - yield "\n" - - # keymaps - yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n" - - for i, layer_name in enumerate(config['layer_lines']): - # comment - layer_lines = config['layer_lines'][layer_name] - prefixed_lines = " * " + " * ".join(layer_lines) - yield "/*\n{} */\n".format(prefixed_lines) - - # keymap codes - keymap = keymaps[layer_name] - row_indents = ROW_INDENTS.get(config['layout']) - keymap_lines = "".join(iter_keymap_lines(keymap, row_indents)) - yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines) - - yield "};\n\n" - - # no idea what this is for - yield "const uint16_t PROGMEM fn_actions[] = {};\n" - - # macros - yield MACROCODE.format( - macro_cases="", - unicode_macro_cases="\n".join(unicode_macro_cases(config)), - ) - - # TODO: dynamically create blinking lights - yield USERCODE - - -def main(argv=sys.argv[1:]): - if not argv or '-h' in argv or '--help' in argv: - print(__doc__) - return 0 - - in_path = os.path.abspath(argv[0]) - if not os.path.exists(in_path): - print("No such file '{}'".format(in_path)) - return 1 - - if len(argv) > 1: - out_path = os.path.abspath(argv[1]) - else: - dirname = os.path.dirname(in_path) - out_path = os.path.join(dirname, "keymap.c") - - config = parse_config(in_path) - valid_keys = parse_valid_keys(config, out_path) - keymaps = parse_keymaps(config, valid_keys) - - with io.open(out_path, mode="w", encoding="utf-8") as fh: - for part in iter_keymap_parts(config, keymaps): - fh.write(part) - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/keyboards/ergodox80/ergodox80/util/readme.md b/keyboards/ergodox80/ergodox80/util/readme.md deleted file mode 100644 index 26c5e5d99c..0000000000 --- a/keyboards/ergodox80/ergodox80/util/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# ErgoDox EZ Utilities - -The Python script in this directory, by [mbarkhau](https://github.com/mbarkhau) allows you to write out a basic ErgoDox EZ keymap using Markdown notation, and then transpile it to C, which you can then compile. It's experimental, but if you're not comfortable using C, it's a nice option. diff --git a/keyboards/ergodox80/keymaps/default/keymap.c b/keyboards/ergodox80/keymaps/default/keymap.c deleted file mode 100644 index 2da2c5b0e4..0000000000 --- a/keyboards/ergodox80/keymaps/default/keymap.c +++ /dev/null @@ -1,183 +0,0 @@ -#include "ergodox80.h" -#include "debug.h" -#include "action_layer.h" -#include "version.h" - -#define BASE 0 // default layer -#define SYMB 1 // symbols -#define MDIA 2 // media keys - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Basic layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | - * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | App | LGui | | Alt |Ctrl/Esc| - * ,------|------|------| |------+--------+------. - * | 1 | 2 | Home | | PgUp | 3 | 4 | - * |------|------|------| |------|--------|------| - * | Space| BkSp | End | | PgDn | Tab |Enter | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[BASE] = KEYMAP( // layer 0 : default - // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), - KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, - ALT_T(KC_APP), KC_LGUI, - KC_1, KC_2, KC_HOME, - KC_SPC,KC_BSPC,KC_END, - // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, - KC_LALT, CTL_T(KC_ESC), - KC_PGUP,KC_3, KC_4, - KC_PGDN,KC_TAB, KC_ENT - ), -/* Keymap 1: Symbol Layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | . | 0 | = | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * |------|------|------| |------|------|------| - * | | | | | | | | - * `--------------------' `--------------------' - */ -// SYMBOLS -[SYMB] = KEYMAP( - // left hand - M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,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, - // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, - KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, - KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, - KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS -), -/* Keymap 2: Media and mouse keys - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+----------. - * | | | | | | | | - * |------|------|------| |------|------|----------| - * | | | | | | |BrwserBack| - * `--------------------' `------------------------' - */ -// MEDIA AND MOUSE -[MDIA] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, - KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - 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_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_WBAK -), -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - break; - } - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - // TODO: Make this relevant to the ErgoDox EZ. - case 1: - ergodox_right_led_1_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - default: - // none - break; - } - -}; diff --git a/keyboards/ergodox80/readme.md b/keyboards/ergodox80/readme.md deleted file mode 100644 index b5c09f9222..0000000000 --- a/keyboards/ergodox80/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -# Ergodox 80 key support - -This is based on the ergodox-ez qmk firmware but is for ergodoxes with 80 keys. - - - diff --git a/keyboards/ergodox80/rules.mk b/keyboards/ergodox80/rules.mk deleted file mode 100644 index ac63d4eff2..0000000000 --- a/keyboards/ergodox80/rules.mk +++ /dev/null @@ -1,28 +0,0 @@ -#---------------------------------------------------------------------------- -# On command line: -# -# make = Make software. -# -# make clean = Clean out built project files. -# -# That's pretty much all you need. To compile, always go make clean, -# followed by make. -# -# For advanced users only: -# make teensy = Download the hex file to the device, using teensy_loader_cli. -# (must have teensy_loader_cli installed). -# -#---------------------------------------------------------------------------- -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ -SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= yes # Unicode -- cgit v1.2.1 From 558f3ec1eb325caf706efc15e2fab26121aba442 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 6 Sep 2016 23:19:01 -0500 Subject: Use keyboard config for nkro (#7) * removing nkro references - wip * changed NKRO to be defined by keymap_config --- keyboards/planck/keymaps/pvc/Makefile | 4 +- keyboards/planck/keymaps/pvc/keymap.c | 5 +- quantum/keycode_config.h | 5 ++ quantum/keymap.h | 1 + quantum/quantum.c | 124 +++++++++++++++++++--------------- tmk_core/common/action_util.c | 10 ++- tmk_core/common/bootmagic.c | 4 -- tmk_core/common/command.c | 6 +- tmk_core/common/host.c | 5 -- tmk_core/common/host.h | 4 -- tmk_core/common/keyboard.c | 4 +- tmk_core/common/magic.c | 4 -- tmk_core/protocol/chibios/usb_main.c | 19 +++--- tmk_core/protocol/lufa/lufa.c | 9 ++- tmk_core/protocol/pjrc/usb.c | 18 +++-- tmk_core/protocol/pjrc/usb_keyboard.c | 8 ++- tmk_core/readme.md | 2 +- 17 files changed, 131 insertions(+), 101 deletions(-) diff --git a/keyboards/planck/keymaps/pvc/Makefile b/keyboards/planck/keymaps/pvc/Makefile index 0b2f060de4..19c3abc6c6 100644 --- a/keyboards/planck/keymaps/pvc/Makefile +++ b/keyboards/planck/keymaps/pvc/Makefile @@ -1,9 +1,9 @@ # Build Options -# change to "no" to disable the options, or define them in the Makefile in +# change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/pvc/keymap.c b/keyboards/planck/keymaps/pvc/keymap.c index 8ff40f377c..23aedfc998 100644 --- a/keyboards/planck/keymaps/pvc/keymap.c +++ b/keyboards/planck/keymaps/pvc/keymap.c @@ -83,6 +83,7 @@ enum keyboard_macros { #define SC_ACLS LALT(KC_F4) #define SC_CCLS LCTL(KC_F4) +#define TG_NKRO MAGIC_TOGGLE_NKRO #define OS_SHFT KC_FN0 #define _______ KC_TRNS @@ -206,7 +207,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LAYER_ADJUST] = { { XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG , AU_TOG }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX }, + { XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , TG_NKRO, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP } }, @@ -236,7 +237,7 @@ void persistant_default_layer_set(uint16_t default_layer) } const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_MODS_ONESHOT(MOD_LSFT), + [0] = ACTION_MODS_ONESHOT(MOD_RSFT), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) diff --git a/quantum/keycode_config.h b/quantum/keycode_config.h index 6216eefc90..c15b0d32f8 100644 --- a/quantum/keycode_config.h +++ b/quantum/keycode_config.h @@ -1,6 +1,9 @@ #include "eeconfig.h" #include "keycode.h" +#ifndef KEYCODE_CONFIG_H +#define KEYCODE_CONFIG_H + uint16_t keycode_config(uint16_t keycode); /* NOTE: Not portable. Bit field order depends on implementation */ @@ -19,3 +22,5 @@ typedef union { } keymap_config_t; extern keymap_config_t keymap_config; + +#endif /* KEYCODE_CONFIG_H */ diff --git a/quantum/keymap.h b/quantum/keymap.h index f2d94d75c3..98ddfd0c53 100644 --- a/quantum/keymap.h +++ b/quantum/keymap.h @@ -111,6 +111,7 @@ enum quantum_keycodes { MAGIC_UNSWAP_BACKSLASH_BACKSPACE, MAGIC_UNHOST_NKRO, MAGIC_UNSWAP_ALT_GUI, + MAGIC_TOGGLE_NKRO, // Leader key #ifndef DISABLE_LEADER diff --git a/quantum/quantum.c b/quantum/quantum.c index fa86b6220f..a16bd5443c 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -27,10 +27,6 @@ static void do_code16 (uint16_t code, void (*f) (uint8_t)) { f(KC_RGUI); } -#ifdef NKRO_ENABLE - extern bool keyboard_nkro; -#endif - void register_code16 (uint16_t code) { do_code16 (code, register_code); register_code (code); @@ -203,7 +199,7 @@ bool process_record_quantum(keyrecord_t *record) { return false; break; #endif - case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_UNSWAP_ALT_GUI: + case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO: if (record->event.pressed) { // MAGIC actions (BOOTMAGIC without the boot) if (!eeconfig_is_enabled()) { @@ -211,57 +207,73 @@ bool process_record_quantum(keyrecord_t *record) { } /* keymap config */ keymap_config.raw = eeconfig_read_keymap(); - if (keycode == MAGIC_SWAP_CONTROL_CAPSLOCK) { - keymap_config.swap_control_capslock = 1; - } else if (keycode == MAGIC_CAPSLOCK_TO_CONTROL) { - keymap_config.capslock_to_control = 1; - } else if (keycode == MAGIC_SWAP_LALT_LGUI) { - keymap_config.swap_lalt_lgui = 1; - } else if (keycode == MAGIC_SWAP_RALT_RGUI) { - keymap_config.swap_ralt_rgui = 1; - } else if (keycode == MAGIC_NO_GUI) { - keymap_config.no_gui = 1; - } else if (keycode == MAGIC_SWAP_GRAVE_ESC) { - keymap_config.swap_grave_esc = 1; - } else if (keycode == MAGIC_SWAP_BACKSLASH_BACKSPACE) { - keymap_config.swap_backslash_backspace = 1; - } else if (keycode == MAGIC_HOST_NKRO) { - keymap_config.nkro = 1; - -#ifdef NKRO_ENABLE - clear_keyboard(); // clear to prevent stuck keys - keyboard_nkro = keymap_config.nkro; -#endif - } else if (keycode == MAGIC_SWAP_ALT_GUI) { - keymap_config.swap_lalt_lgui = 1; - keymap_config.swap_ralt_rgui = 1; - } - /* UNs */ - else if (keycode == MAGIC_UNSWAP_CONTROL_CAPSLOCK) { - keymap_config.swap_control_capslock = 0; - } else if (keycode == MAGIC_UNCAPSLOCK_TO_CONTROL) { - keymap_config.capslock_to_control = 0; - } else if (keycode == MAGIC_UNSWAP_LALT_LGUI) { - keymap_config.swap_lalt_lgui = 0; - } else if (keycode == MAGIC_UNSWAP_RALT_RGUI) { - keymap_config.swap_ralt_rgui = 0; - } else if (keycode == MAGIC_UNNO_GUI) { - keymap_config.no_gui = 0; - } else if (keycode == MAGIC_UNSWAP_GRAVE_ESC) { - keymap_config.swap_grave_esc = 0; - } else if (keycode == MAGIC_UNSWAP_BACKSLASH_BACKSPACE) { - keymap_config.swap_backslash_backspace = 0; - } else if (keycode == MAGIC_UNHOST_NKRO) { - keymap_config.nkro = 0; -#ifdef NKRO_ENABLE - clear_keyboard(); // clear to prevent stuck keys - keyboard_nkro = keymap_config.nkro; -#endif - } else if (keycode == MAGIC_UNSWAP_ALT_GUI) { - keymap_config.swap_lalt_lgui = 0; - keymap_config.swap_ralt_rgui = 0; + switch (keycode) + { + case MAGIC_SWAP_CONTROL_CAPSLOCK: + keymap_config.swap_control_capslock = true; + break; + case MAGIC_CAPSLOCK_TO_CONTROL: + keymap_config.capslock_to_control = true; + break; + case MAGIC_SWAP_LALT_LGUI: + keymap_config.swap_lalt_lgui = true; + break; + case MAGIC_SWAP_RALT_RGUI: + keymap_config.swap_ralt_rgui = true; + break; + case MAGIC_NO_GUI: + keymap_config.no_gui = true; + break; + case MAGIC_SWAP_GRAVE_ESC: + keymap_config.swap_grave_esc = true; + break; + case MAGIC_SWAP_BACKSLASH_BACKSPACE: + keymap_config.swap_backslash_backspace = true; + break; + case MAGIC_HOST_NKRO: + keymap_config.nkro = true; + break; + case MAGIC_SWAP_ALT_GUI: + keymap_config.swap_lalt_lgui = true; + keymap_config.swap_ralt_rgui = true; + break; + case MAGIC_UNSWAP_CONTROL_CAPSLOCK: + keymap_config.swap_control_capslock = false; + break; + case MAGIC_UNCAPSLOCK_TO_CONTROL: + keymap_config.capslock_to_control = false; + break; + case MAGIC_UNSWAP_LALT_LGUI: + keymap_config.swap_lalt_lgui = false; + break; + case MAGIC_UNSWAP_RALT_RGUI: + keymap_config.swap_ralt_rgui = false; + break; + case MAGIC_UNNO_GUI: + keymap_config.no_gui = false; + break; + case MAGIC_UNSWAP_GRAVE_ESC: + keymap_config.swap_grave_esc = false; + break; + case MAGIC_UNSWAP_BACKSLASH_BACKSPACE: + keymap_config.swap_backslash_backspace = false; + break; + case MAGIC_UNHOST_NKRO: + keymap_config.nkro = false; + break; + case MAGIC_UNSWAP_ALT_GUI: + keymap_config.swap_lalt_lgui = false; + keymap_config.swap_ralt_rgui = false; + break; + case MAGIC_TOGGLE_NKRO: + keymap_config.nkro = !keymap_config.nkro; + break; + default: + break; } eeconfig_update_keymap(keymap_config.raw); + clear_keyboard(); // clear to prevent stuck keys + return false; } break; @@ -284,7 +296,7 @@ bool process_record_quantum(keyrecord_t *record) { unregister_mods(MOD_BIT(KC_LSFT)); } return false; - break; + // break; } case KC_RSPC: { @@ -306,7 +318,7 @@ bool process_record_quantum(keyrecord_t *record) { unregister_mods(MOD_BIT(KC_RSFT)); } return false; - break; + // break; } default: { shift_interrupted[0] = true; diff --git a/tmk_core/common/action_util.c b/tmk_core/common/action_util.c index 61ff202bef..cb4b252648 100644 --- a/tmk_core/common/action_util.c +++ b/tmk_core/common/action_util.c @@ -20,6 +20,10 @@ along with this program. If not, see . #include "action_util.h" #include "action_layer.h" #include "timer.h" +#include "keycode_config.h" + +extern keymap_config_t keymap_config; + static inline void add_key_byte(uint8_t code); static inline void del_key_byte(uint8_t code); @@ -139,7 +143,7 @@ void send_keyboard_report(void) { void add_key(uint8_t key) { #ifdef NKRO_ENABLE - if (keyboard_protocol && keyboard_nkro) { + if (keyboard_protocol && keymap_config.nkro) { add_key_bit(key); return; } @@ -150,7 +154,7 @@ void add_key(uint8_t key) void del_key(uint8_t key) { #ifdef NKRO_ENABLE - if (keyboard_protocol && keyboard_nkro) { + if (keyboard_protocol && keymap_config.nkro) { del_key_bit(key); return; } @@ -231,7 +235,7 @@ uint8_t has_anymod(void) uint8_t get_first_key(void) { #ifdef NKRO_ENABLE - if (keyboard_protocol && keyboard_nkro) { + if (keyboard_protocol && keymap_config.nkro) { uint8_t i = 0; for (; i < KEYBOARD_REPORT_BITS && !keyboard_report->nkro.bits[i]; i++) ; diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c index 6730a2a4aa..2c6bcbae56 100644 --- a/tmk_core/common/bootmagic.c +++ b/tmk_core/common/bootmagic.c @@ -83,10 +83,6 @@ void bootmagic(void) } eeconfig_update_keymap(keymap_config.raw); -#ifdef NKRO_ENABLE - keyboard_nkro = keymap_config.nkro; -#endif - /* default layer */ uint8_t default_layer = 0; if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_0)) { default_layer |= (1<<0); } diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index 476fc6fe3c..54d6117fd1 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -238,7 +238,7 @@ static void print_status(void) print_val_hex8(keyboard_protocol); print_val_hex8(keyboard_idle); #ifdef NKRO_ENABLE - print_val_hex8(keyboard_nkro); + print_val_hex8(keymap_config.nkro); #endif print_val_hex32(timer_read32()); @@ -435,8 +435,8 @@ static bool command_common(uint8_t code) // NKRO toggle case MAGIC_KC(MAGIC_KEY_NKRO): clear_keyboard(); // clear to prevent stuck keys - keyboard_nkro = !keyboard_nkro; - if (keyboard_nkro) { + keymap_config.nkro = !keymap_config.nkro; + if (keymap_config.nkro) { print("NKRO: on\n"); } else { print("NKRO: off\n"); diff --git a/tmk_core/common/host.c b/tmk_core/common/host.c index 11a05c2ddd..e12b622165 100644 --- a/tmk_core/common/host.c +++ b/tmk_core/common/host.c @@ -22,11 +22,6 @@ along with this program. If not, see . #include "util.h" #include "debug.h" - -#ifdef NKRO_ENABLE -bool keyboard_nkro = true; -#endif - static host_driver_t *driver; static uint16_t last_system_report = 0; static uint16_t last_consumer_report = 0; diff --git a/tmk_core/common/host.h b/tmk_core/common/host.h index 9814b10d2d..aeabba7107 100644 --- a/tmk_core/common/host.h +++ b/tmk_core/common/host.h @@ -28,10 +28,6 @@ along with this program. If not, see . extern "C" { #endif -#ifdef NKRO_ENABLE -extern bool keyboard_nkro; -#endif - extern uint8_t keyboard_idle; extern uint8_t keyboard_protocol; diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index c46a701b3b..371d93f3e5 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -57,6 +57,8 @@ along with this program. If not, see . # include "visualizer/visualizer.h" #endif + + #ifdef MATRIX_HAS_GHOST static bool has_ghost_in_row(uint8_t row) { @@ -106,7 +108,7 @@ void keyboard_init(void) { rgblight_init(); #endif #if defined(NKRO_ENABLE) && defined(FORCE_NKRO) - keyboard_nkro = true; + keymap_config.nkro = 1; #endif } diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c index 194e4cc026..49617a3d10 100644 --- a/tmk_core/common/magic.c +++ b/tmk_core/common/magic.c @@ -27,10 +27,6 @@ void magic(void) /* keymap config */ keymap_config.raw = eeconfig_read_keymap(); -#ifdef NKRO_ENABLE - keyboard_nkro = keymap_config.nkro; -#endif - uint8_t default_layer = 0; default_layer = eeconfig_read_default_layer(); default_layer_set((uint32_t)default_layer); diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c index e2c9d9bf14..d0c72c46c7 100644 --- a/tmk_core/protocol/chibios/usb_main.c +++ b/tmk_core/protocol/chibios/usb_main.c @@ -28,6 +28,12 @@ #include "led.h" #endif +#ifdef NKRO_ENABLE + #include "keycode_config.h" + + extern keymap_config_t keymap_config; +#endif + /* --------------------------------------------------------- * Global interface variables and declarations * --------------------------------------------------------- @@ -39,9 +45,6 @@ uint16_t keyboard_led_stats __attribute__((aligned(2))) = 0; volatile uint16_t keyboard_idle_count = 0; static virtual_timer_t keyboard_idle_timer; static void keyboard_idle_timer_cb(void *arg); -#ifdef NKRO_ENABLE -extern bool keyboard_nkro; -#endif /* NKRO_ENABLE */ report_keyboard_t keyboard_report_sent = {{0}}; #ifdef MOUSE_ENABLE @@ -943,8 +946,8 @@ static bool usb_request_hook_cb(USBDriver *usbp) { if((usbp->setup[4] == KBD_INTERFACE) && (usbp->setup[5] == 0)) { /* wIndex */ keyboard_protocol = ((usbp->setup[2]) != 0x00); /* LSB(wValue) */ #ifdef NKRO_ENABLE - keyboard_nkro = !!keyboard_protocol; - if(!keyboard_nkro && keyboard_idle) { + keymap_config.nkro = !!keyboard_protocol; + if(!keymap_config.nkro && keyboard_idle) { #else /* NKRO_ENABLE */ if(keyboard_idle) { #endif /* NKRO_ENABLE */ @@ -962,7 +965,7 @@ static bool usb_request_hook_cb(USBDriver *usbp) { keyboard_idle = usbp->setup[3]; /* MSB(wValue) */ /* arm the timer */ #ifdef NKRO_ENABLE - if(!keyboard_nkro && keyboard_idle) { + if(!keymap_config.nkro && keyboard_idle) { #else /* NKRO_ENABLE */ if(keyboard_idle) { #endif /* NKRO_ENABLE */ @@ -1089,7 +1092,7 @@ static void keyboard_idle_timer_cb(void *arg) { } #ifdef NKRO_ENABLE - if(!keyboard_nkro && keyboard_idle) { + if(!keymap_config.nkro && keyboard_idle) { #else /* NKRO_ENABLE */ if(keyboard_idle) { #endif /* NKRO_ENABLE */ @@ -1122,7 +1125,7 @@ void send_keyboard(report_keyboard_t *report) { osalSysUnlock(); #ifdef NKRO_ENABLE - if(keyboard_nkro) { /* NKRO protocol */ + if(keymap_config.nkro) { /* NKRO protocol */ /* need to wait until the previous packet has made it through */ /* can rewrite this using the synchronous API, then would wait * until *after* the packet has been transmitted. I think diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 9b201374a2..01c0e45b0b 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -52,6 +52,13 @@ #include "descriptor.h" #include "lufa.h" +#ifdef NKRO_ENABLE + #include "keycode_config.h" + + extern keymap_config_t keymap_config; +#endif + + #ifdef AUDIO_ENABLE #include #endif @@ -502,7 +509,7 @@ static void send_keyboard(report_keyboard_t *report) /* Select the Keyboard Report Endpoint */ #ifdef NKRO_ENABLE - if (keyboard_protocol && keyboard_nkro) { + if (keyboard_protocol && keymap_config.nkro) { /* Report protocol - NKRO */ Endpoint_SelectEndpoint(NKRO_IN_EPNUM); diff --git a/tmk_core/protocol/pjrc/usb.c b/tmk_core/protocol/pjrc/usb.c index 1e6ba8719a..09efbe0762 100644 --- a/tmk_core/protocol/pjrc/usb.c +++ b/tmk_core/protocol/pjrc/usb.c @@ -1,17 +1,17 @@ /* USB Keyboard Plus Debug Channel Example for Teensy USB Development Board * http://www.pjrc.com/teensy/usb_keyboard.html * Copyright (c) 2009 PJRC.COM, LLC - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -41,6 +41,12 @@ #include "action.h" #include "action_util.h" +#ifdef NKRO_ENABLE + #include "keycode_config.h" + + extern keymap_config_t keymap_config; +#endif + /************************************************************************** * @@ -694,7 +700,7 @@ ISR(USB_GEN_vect) } /* TODO: should keep IDLE rate on each keyboard interface */ #ifdef NKRO_ENABLE - if (!keyboard_nkro && keyboard_idle && (++div4 & 3) == 0) { + if (!keymap_config.nkro && keyboard_idle && (++div4 & 3) == 0) { #else if (keyboard_idle && (++div4 & 3) == 0) { #endif @@ -881,7 +887,7 @@ ISR(USB_COM_vect) #endif if (bmRequestType == 0x00 && wValue == DEVICE_REMOTE_WAKEUP) { if (bRequest == SET_FEATURE) { - remote_wakeup = true; + remote_wakeup = true; } else { remote_wakeup = false; } @@ -932,7 +938,7 @@ ISR(USB_COM_vect) if (bRequest == HID_SET_PROTOCOL) { keyboard_protocol = wValue; #ifdef NKRO_ENABLE - keyboard_nkro = !!keyboard_protocol; + keymap_config.nkro = !!keyboard_protocol; #endif clear_keyboard(); //usb_wait_in_ready(); diff --git a/tmk_core/protocol/pjrc/usb_keyboard.c b/tmk_core/protocol/pjrc/usb_keyboard.c index 4b87b5d7b5..05f4797340 100644 --- a/tmk_core/protocol/pjrc/usb_keyboard.c +++ b/tmk_core/protocol/pjrc/usb_keyboard.c @@ -30,6 +30,12 @@ #include "util.h" #include "host.h" +#ifdef NKRO_ENABLE + #include "keycode_config.h" + + extern keymap_config_t keymap_config; +#endif + // protocol setting from the host. We use exactly the same report // either way, so this variable only stores the setting since we @@ -56,7 +62,7 @@ int8_t usb_keyboard_send_report(report_keyboard_t *report) int8_t result = 0; #ifdef NKRO_ENABLE - if (keyboard_nkro) + if (keymap_config.nkro) result = send_report(report, KBD2_ENDPOINT, 0, KBD2_SIZE); else #endif diff --git a/tmk_core/readme.md b/tmk_core/readme.md index f460d0ed44..3242328516 100644 --- a/tmk_core/readme.md +++ b/tmk_core/readme.md @@ -23,7 +23,7 @@ These features can be used in your keyboard. * Mouse key - Mouse control with keyboard * System Control Key - Power Down, Sleep, Wake Up and USB Remote Wake up * Media Control Key - Volume Down/Up, Mute, Next/Prev track, Play, Stop and etc -* USB NKRO - 120 keys(+ 8 modifiers) simultaneously +* USB NKRO - 240 keys(+ 8 modifiers) simultaneously * PS/2 mouse support - PS/2 mouse(TrackPoint) as composite device * Keyboard protocols - PS/2, ADB, M0110, Sun and other old keyboard protocols * User Function - Customizable function of key with writing code -- cgit v1.2.1 From 54214b3abcae2189341d124c29336b911d88da41 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Wed, 7 Sep 2016 13:29:29 -0400 Subject: Borrowed joint Shift/Enter idea from sgoodwin mapping --- keyboards/planck/keymaps/cbbrowne/keymap.c | 2 +- keyboards/planck/keymaps/cbbrowne/readme.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 63566f862d..898f6f0e0a 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -84,7 +84,7 @@ enum macro_id { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QW] = { /* Qwerty */ {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT}, + {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, 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_QUOT }, {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md index 5af688bb17..51979f6300 100644 --- a/keyboards/planck/keymaps/cbbrowne/readme.md +++ b/keyboards/planck/keymaps/cbbrowne/readme.md @@ -77,3 +77,4 @@ doing sundry experimentation: * The jeebak keymap seems to have some neat ideas: - Number layer which is aggressive about having numbers in several places - Touch layer seems interesting + * Trying out sgoodwin's "hold Enter down to get Shift" \ No newline at end of file -- cgit v1.2.1 From e5396ca9e5ccb714a757b6559c9f7e95bf372e3f Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Wed, 7 Sep 2016 18:23:01 -0700 Subject: zweihander: rename to Makefile --- keyboards/ergodox/keymaps/zweihander-osx/Makefile | 2 ++ keyboards/ergodox/keymaps/zweihander-osx/makefile.mk | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 keyboards/ergodox/keymaps/zweihander-osx/Makefile delete mode 100644 keyboards/ergodox/keymaps/zweihander-osx/makefile.mk diff --git a/keyboards/ergodox/keymaps/zweihander-osx/Makefile b/keyboards/ergodox/keymaps/zweihander-osx/Makefile new file mode 100644 index 0000000000..6e3d088a43 --- /dev/null +++ b/keyboards/ergodox/keymaps/zweihander-osx/Makefile @@ -0,0 +1,2 @@ +# Don’t do a tricolor wave when the computer is shut down in Windows +SLEEP_LED_ENABLE = no diff --git a/keyboards/ergodox/keymaps/zweihander-osx/makefile.mk b/keyboards/ergodox/keymaps/zweihander-osx/makefile.mk deleted file mode 100644 index 6e3d088a43..0000000000 --- a/keyboards/ergodox/keymaps/zweihander-osx/makefile.mk +++ /dev/null @@ -1,2 +0,0 @@ -# Don’t do a tricolor wave when the computer is shut down in Windows -SLEEP_LED_ENABLE = no -- cgit v1.2.1 From 273a6cc688ef4c8f7964d8c62147c8697db42cde Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Wed, 7 Sep 2016 20:28:31 -0700 Subject: =?UTF-8?q?-=20Make=20thumb-accessible=20=E2=8C=A5=20and=20?= =?UTF-8?q?=E2=8C=83=20into=20right-=E2=8C=A5=20and=20right-=E2=8C=83=20-?= =?UTF-8?q?=20remove=20media-space=20and=20media-shift-space;=20put=20a=20?= =?UTF-8?q?play/pause=20key=20at=20media-m=20instead=20-=20add=20print=20s?= =?UTF-8?q?creen,=20scroll=20lock,=20and=20pause/break=20to=20the=20media?= =?UTF-8?q?=20layer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And in the readme: - don't say we don't have any Windows-specific keys - add mnemonics for thumb-alt and thumb-ctrl positioning --- keyboards/ergodox/keymaps/zweihander-osx/keymap.c | 14 +++++++------- keyboards/ergodox/keymaps/zweihander-osx/readme.markdown | 8 +++++--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/keyboards/ergodox/keymaps/zweihander-osx/keymap.c b/keyboards/ergodox/keymaps/zweihander-osx/keymap.c index d6d66fd55d..725a73e346 100644 --- a/keyboards/ergodox/keymaps/zweihander-osx/keymap.c +++ b/keyboards/ergodox/keymaps/zweihander-osx/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,------|------|------| |------+--------+------. * | | | PgUp | | PgDn | | | * | | ⇥ |------| |------| ⇥ |Enter | - * | | | L⌥ | | L⌃ | | | + * | | | R⌥ | | R⌃ | | | * `--------------------' `----------------------' */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. @@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_LGUI,KC_LEFT,KC_RGHT, KC_GRV, KC_QUOT, KC_PGUP, - KC_SPC,KC_TAB ,KC_LALT, + KC_SPC,KC_TAB ,KC_RALT, // right hand TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, MO(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, @@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_SPC , KC_ESC, KC_BSPC, KC_PGDN, - KC_LCTL, KC_TAB, KC_ENT + KC_RCTL, KC_TAB, KC_ENT ), /* Keymap 1: Symbol Layer * @@ -102,13 +102,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 2: Media keys * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F14 | F15 | | | | | | ⌘Q | ⌘W | ⌘⇧` | ⌘` | | | Power | + * | | F14 | F15 |PrtScr|SclLck| Pause| | | ⌘Q | ⌘W | ⌘⇧` | ⌘` | | | Power | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | PgUp |⌘S⌘⇥⌘R| Term | | | | ⌘] | ⌥⌘↑ | ↑ | ⌥⌘↓ | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | |Safari| PgDn | | |------| |------| ⌘[ | ← | ↓ | → | | ⏯ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | |BBEdit| | | |L⇧+Spc| Spc | ⏮ | ⏭ | | | + * | | | | | |BBEdit| | | | | ⏯ | ⏮ | ⏭ | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | |VolUp |VolDn | Mute | | | * `----------------------------------' `----------------------------------' @@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND MOUSE [MDIA] = KEYMAP( - KC_TRNS, KC_F14 , KC_F15 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, /* F14 dims screen, F15 brightens */ + KC_TRNS, KC_F14 , KC_F15 , KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, /* F14 dims screen, F15 brightens */ KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, M(SGWF), M(TMNL), KC_TRNS, KC_TRNS, KC_TRNS, M(SAFA), KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(BBED), KC_TRNS, @@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LGUI(KC_Q), LGUI(KC_W), LGUI(LSFT(KC_GRV)), LGUI(KC_GRV), KC_TRNS, KC_TRNS, KC_PWR , KC_TRNS, LGUI(KC_RBRC), LGUI(LALT(KC_UP)), KC_UP , LGUI(LALT(KC_DOWN)), KC_TRNS, KC_TRNS, LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, - KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END , diff --git a/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown b/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown index 3b7f52941a..5125a12ee1 100644 --- a/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown +++ b/keyboards/ergodox/keymaps/zweihander-osx/readme.markdown @@ -7,7 +7,7 @@ This layout is tuned for people who… ## use OS X -This layout doesn’t make any concessions for Windows use. While it should work fine in Windows, I’m not about to devote precious keyboard space to Windows-specific shortcuts. +While this layout should work fine in Windows, it’s not tuned for it. No sane person who primarily uses Windows would put this many Windows keys on a keyboard layout. ## mouse left-handed while doing other things with the right hand @@ -21,8 +21,6 @@ I tend to have my mouse in my left hand, but I like to use my other hand to make - Go Up and Close Just-Left Folder (⌥⌘↑) - Cycle through open windows in current application (⌘\` and ⌘⇧\`) - Cycle through tabs in current window (⌥⇥ and ⌥⇧⇥) -- Space (page down in browsers; Quick Look in the Finder) -- Shift-Space (page up in web browsers) Because moving letter-by-letter is way slower than moving word-by-word, I added Option (⌥) to the bottommost button on the left side. This key can be held easily while holding ; (activate media layer) and pressing J and L to move left and right by word. @@ -34,11 +32,15 @@ I wanted to preserve the feel of a number of shortcuts that involve pressing lot - Empty Trash Without Asking for Confirmation (⇧⌥⌘⌫) - Shut Down Without Asking for Confirmation (⇧⌥⌘ power) +⇧⌥⌘⌫, when you press the backspace on the right half of the keyboard, is much more satisfying than if you curl your left hand into a claw to press all the keys on the left. Try both; you’ll agree. + ## use Emacs-style shortcuts I press C-a, C-e, and C-k all the time. It’s difficult to press these key combinations with the control key on the bottom left and I’m too quick on the draw for the control function on the / key to work reliably, so the bottommost thumb button on the right side is another control key. +Having trouble remembering which thumb key is alt and which is ctrl? It’s like on the lower right of a normal keyboard — leftmost is alt, rightmost is ctrl. + ## use spreadsheets -- cgit v1.2.1 From fe2aed0d1c8d1535c160755b76186972071aed02 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 7 Sep 2016 23:50:58 -0500 Subject: Added User Print - A "light" console out option (#8) User print disables the normal print messages in the body of QMK/TMK code and is meant as a lightweight alternative to NOPRINT. Use it when you only want to do a spot of debugging but lack flash resources for allowing all of the codebase to print (and store their wasteful strings). --- keyboards/planck/keymaps/pvc/Makefile | 2 +- keyboards/planck/keymaps/pvc/config.h | 12 ++- tmk_core/common/avr/xprintf.h | 6 +- tmk_core/common/mbed/xprintf.cpp | 2 +- tmk_core/common/mbed/xprintf.h | 2 +- tmk_core/common/print.h | 168 ++++++++++++++++++++++++++++++---- 6 files changed, 166 insertions(+), 26 deletions(-) diff --git a/keyboards/planck/keymaps/pvc/Makefile b/keyboards/planck/keymaps/pvc/Makefile index 19c3abc6c6..b2ff961fa5 100644 --- a/keyboards/planck/keymaps/pvc/Makefile +++ b/keyboards/planck/keymaps/pvc/Makefile @@ -6,7 +6,7 @@ BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality diff --git a/keyboards/planck/keymaps/pvc/config.h b/keyboards/planck/keymaps/pvc/config.h index 1113372b0a..1004c8b99f 100644 --- a/keyboards/planck/keymaps/pvc/config.h +++ b/keyboards/planck/keymaps/pvc/config.h @@ -68,10 +68,18 @@ along with this program. If not, see . */ /* disable debug print */ -//#define NO_DEBUG +#ifndef NO_DEBUG +# define NO_DEBUG +#endif /* disable print */ -//#define NO_PRINT +// #ifndef NO_PRINT +// # define NO_PRINT +// #endif + +/* Only print user print statements */ +#define USER_PRINT + /* disable action features */ //#define NO_ACTION_LAYER diff --git a/tmk_core/common/avr/xprintf.h b/tmk_core/common/avr/xprintf.h index e53c0dd8e0..08d9f93a0c 100644 --- a/tmk_core/common/avr/xprintf.h +++ b/tmk_core/common/avr/xprintf.h @@ -56,8 +56,8 @@ void xitoa(long value, char radix, char width); #define xfprintf(func, format, ...) __xfprintf(func, PSTR(format), ##__VA_ARGS__) void __xprintf(const char *format_p, ...); /* Send formatted string to the registered device */ -void __xsprintf(char*, const char *format_p, ...); /* Put formatted string to the memory */ -void __xfprintf(void(*func)(uint8_t), const char *format_p, ...); /* Send formatted string to the specified device */ +// void __xsprintf(char*, const char *format_p, ...); /* Put formatted string to the memory */ +// void __xfprintf(void(*func)(uint8_t), const char *format_p, ...); /* Send formatted string to the specified device */ /* Format string is placed in the ROM. The format flags is similar to printf(). @@ -88,7 +88,7 @@ void __xfprintf(void(*func)(uint8_t), const char *format_p, ...); /* Send format /*-----------------------------------------------------------------------------*/ char xatoi(char **str, long *ret); -/* Get value of the numeral string. +/* Get value of the numeral string. str Pointer to pointer to source string diff --git a/tmk_core/common/mbed/xprintf.cpp b/tmk_core/common/mbed/xprintf.cpp index 3647ece751..b1aac2c99d 100644 --- a/tmk_core/common/mbed/xprintf.cpp +++ b/tmk_core/common/mbed/xprintf.cpp @@ -7,7 +7,7 @@ #define STRING_STACK_LIMIT 120 //TODO -int xprintf(const char* format, ...) { return 0; } +int __xprintf(const char* format, ...) { return 0; } #if 0 /* mbed Serial */ diff --git a/tmk_core/common/mbed/xprintf.h b/tmk_core/common/mbed/xprintf.h index 26bc529e5b..1e7a48c06d 100644 --- a/tmk_core/common/mbed/xprintf.h +++ b/tmk_core/common/mbed/xprintf.h @@ -7,7 +7,7 @@ extern "C" { #endif -int xprintf(const char *format, ...); +int __xprintf(const char *format, ...); #ifdef __cplusplus } diff --git a/tmk_core/common/print.h b/tmk_core/common/print.h index a1352527fc..8836c0fc7c 100644 --- a/tmk_core/common/print.h +++ b/tmk_core/common/print.h @@ -36,40 +36,140 @@ #ifndef NO_PRINT +#if defined(__AVR__) /* __AVR__ */ -#if defined(__AVR__) +# include "avr/xprintf.h" -#include "avr/xprintf.h" -#define print(s) xputs(PSTR(s)) -#define println(s) xputs(PSTR(s "\r\n")) +# ifdef USER_PRINT /* USER_PRINT */ -#ifdef __cplusplus +// Remove normal print defines +# define print(s) +# define println(s) +# undef xprintf +# define xprintf(fmt, ...) + +// Create user print defines +# define uprint(s) xputs(PSTR(s)) +# define uprintln(s) xputs(PSTR(s "\r\n")) +# define uprintf(fmt, ...) __xprintf(PSTR(fmt), ##__VA_ARGS__) + +# else /* NORMAL PRINT */ + +// Create user & normal print defines +# define print(s) xputs(PSTR(s)) +# define println(s) xputs(PSTR(s "\r\n")) +# define uprint(s) print(s) +# define uprintln(s) println(s) +# define uprintf(fmt, ...) xprintf(fmt, ...) + +# endif /* USER_PRINT / NORMAL PRINT */ + +# ifdef __cplusplus extern "C" -#endif +# endif + /* function pointer of sendchar to be used by print utility */ void print_set_sendchar(int8_t (*print_sendchar_func)(uint8_t)); -#elif defined(PROTOCOL_CHIBIOS) /* __AVR__ */ +#elif defined(PROTOCOL_CHIBIOS) /* PROTOCOL_CHIBIOS */ + +# include "chibios/printf.h" + +# ifdef USER_PRINT /* USER_PRINT */ + +// Remove normal print defines +# define print(s) +# define println(s) +# define xprintf(fmt, ...) + +// Create user print defines +# define uprint(s) printf(s) +# define uprintln(s) printf(s "\r\n") +# define uprintf printf + +# else /* NORMAL PRINT */ + +// Create user & normal print defines +# define print(s) printf(s) +# define println(s) printf(s "\r\n") +# define xprintf printf +# define uprint(s) printf(s) +# define uprintln(s) printf(s "\r\n") +# define uprintf printf -#include "chibios/printf.h" +# endif /* USER_PRINT / NORMAL PRINT */ -#define print(s) printf(s) -#define println(s) printf(s "\r\n") -#define xprintf printf +#elif defined(__arm__) /* __arm__ */ -#elif defined(__arm__) /* __AVR__ */ +# include "mbed/xprintf.h" -#include "mbed/xprintf.h" +# ifdef USER_PRINT /* USER_PRINT */ -#define print(s) xprintf(s) -#define println(s) xprintf(s "\r\n") +// Remove normal print defines +# define print(s) +# define println(s) +# define xprintf(fmt, ...) + +// Create user print defines +# define uprintf(fmt, ...) __xprintf(fmt, ...) +# define uprint(s) xprintf(s) +# define uprintln(s) xprintf(s "\r\n") + +# else /* NORMAL PRINT */ + +// Create user & normal print defines +# define xprintf(fmt, ...) __xprintf(fmt, ...) +# define print(s) xprintf(s) +# define println(s) xprintf(s "\r\n") +# define uprint(s) print(s) +# define uprintln(s) println(s) +# define uprintf(fmt, ...) xprintf(fmt, ...) + +# endif /* USER_PRINT / NORMAL PRINT */ /* TODO: to select output destinations: UART/USBSerial */ -#define print_set_sendchar(func) +# define print_set_sendchar(func) + +#endif /* __AVR__ / PROTOCOL_CHIBIOS / __arm__ */ + +// User print disables the normal print messages in the body of QMK/TMK code and +// is meant as a lightweight alternative to NOPRINT. Use it when you only want to do +// a spot of debugging but lack flash resources for allowing all of the codebase to +// print (and store their wasteful strings). +// +// !!! DO NOT USE USER PRINT CALLS IN THE BODY OF QMK/TMK !!! +// +#ifdef USER_PRINT -#endif /* __AVR__ */ +// Disable normal print +#define print_dec(data) +#define print_decs(data) +#define print_hex4(data) +#define print_hex8(data) +#define print_hex16(data) +#define print_hex32(data) +#define print_bin4(data) +#define print_bin8(data) +#define print_bin16(data) +#define print_bin32(data) +#define print_bin_reverse8(data) +#define print_bin_reverse16(data) +#define print_bin_reverse32(data) +#define print_val_dec(v) +#define print_val_decs(v) +#define print_val_hex8(v) +#define print_val_hex16(v) +#define print_val_hex32(v) +#define print_val_bin8(v) +#define print_val_bin16(v) +#define print_val_bin32(v) +#define print_val_bin_reverse8(v) +#define print_val_bin_reverse16(v) +#define print_val_bin_reverse32(v) +#else /* NORMAL_PRINT */ +//Enable normal print /* decimal */ #define print_dec(i) xprintf("%u", i) #define print_decs(i) xprintf("%d", i) @@ -99,6 +199,39 @@ void print_set_sendchar(int8_t (*print_sendchar_func)(uint8_t)); #define print_val_bin_reverse16(v) xprintf(#v ": %016b\n", bitrev16(v)) #define print_val_bin_reverse32(v) xprintf(#v ": %032lb\n", bitrev32(v)) +#endif /* USER_PRINT / NORMAL_PRINT */ + +// User Print + +/* decimal */ +#define uprint_dec(i) uprintf("%u", i) +#define uprint_decs(i) uprintf("%d", i) +/* hex */ +#define uprint_hex4(i) uprintf("%X", i) +#define uprint_hex8(i) uprintf("%02X", i) +#define uprint_hex16(i) uprintf("%04X", i) +#define uprint_hex32(i) uprintf("%08lX", i) +/* binary */ +#define uprint_bin4(i) uprintf("%04b", i) +#define uprint_bin8(i) uprintf("%08b", i) +#define uprint_bin16(i) uprintf("%016b", i) +#define uprint_bin32(i) uprintf("%032lb", i) +#define uprint_bin_reverse8(i) uprintf("%08b", bitrev(i)) +#define uprint_bin_reverse16(i) uprintf("%016b", bitrev16(i)) +#define uprint_bin_reverse32(i) uprintf("%032lb", bitrev32(i)) +/* print value utility */ +#define uprint_val_dec(v) uprintf(#v ": %u\n", v) +#define uprint_val_decs(v) uprintf(#v ": %d\n", v) +#define uprint_val_hex8(v) uprintf(#v ": %X\n", v) +#define uprint_val_hex16(v) uprintf(#v ": %02X\n", v) +#define uprint_val_hex32(v) uprintf(#v ": %04lX\n", v) +#define uprint_val_bin8(v) uprintf(#v ": %08b\n", v) +#define uprint_val_bin16(v) uprintf(#v ": %016b\n", v) +#define uprint_val_bin32(v) uprintf(#v ": %032lb\n", v) +#define uprint_val_bin_reverse8(v) uprintf(#v ": %08b\n", bitrev(v)) +#define uprint_val_bin_reverse16(v) uprintf(#v ": %016b\n", bitrev16(v)) +#define uprint_val_bin_reverse32(v) uprintf(#v ": %032lb\n", bitrev32(v)) + #else /* NO_PRINT */ #define xprintf(fmt, ...) @@ -143,5 +276,4 @@ void print_set_sendchar(int8_t (*print_sendchar_func)(uint8_t)); #define pbin_reverse(data) print_bin_reverse8(data) #define pbin_reverse16(data) print_bin_reverse16(data) - #endif -- cgit v1.2.1 From 740b4bbe463545c3547c41def88fa30abbc734fc Mon Sep 17 00:00:00 2001 From: Roman Zolotarev Date: Thu, 8 Sep 2016 21:12:34 +0800 Subject: Fix typo --- keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md index a86061285a..4fa1814fb1 100644 --- a/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md +++ b/keyboards/ergodox/keymaps/romanzolotarev-norman-osx/readme.md @@ -20,7 +20,7 @@ It is `CTL_T(KC_ESC)` and it works this way: ## How to activate N-rollover -- Hold left `SHIFT` and right `SHIRT` and then tap `N`. +- Hold left `SHIFT` and right `SHIFT` and then tap `N`. ## How to make and flash on OS X -- cgit v1.2.1 From 98e43f995d845d44976e4c4f86addb996ab79acc Mon Sep 17 00:00:00 2001 From: tong92 Date: Thu, 8 Sep 2016 23:37:13 +0900 Subject: add tong92 keymap --- keyboards/planck/keymaps/tong92/Makefile | 62 +++++++++++++ keyboards/planck/keymaps/tong92/keymap.c | 146 ++++++++++++++++++++++++++++++ keyboards/planck/keymaps/tong92/readme.md | 66 ++++++++++++++ 3 files changed, 274 insertions(+) create mode 100644 keyboards/planck/keymaps/tong92/Makefile create mode 100644 keyboards/planck/keymaps/tong92/keymap.c create mode 100644 keyboards/planck/keymaps/tong92/readme.md diff --git a/keyboards/planck/keymaps/tong92/Makefile b/keyboards/planck/keymaps/tong92/Makefile new file mode 100644 index 0000000000..e6608e74c5 --- /dev/null +++ b/keyboards/planck/keymaps/tong92/Makefile @@ -0,0 +1,62 @@ +#---------------------------------------------------------------------------- +# 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". +#---------------------------------------------------------------------------- +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/tong92/keymap.c b/keyboards/planck/keymaps/tong92/keymap.c new file mode 100644 index 0000000000..2be28fb4f6 --- /dev/null +++ b/keyboards/planck/keymaps/tong92/keymap.c @@ -0,0 +1,146 @@ +//Author: tong92 + +#include "planck.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO +#define LOWER M(1) +#define RAISE M(2) +#define GO_DEFT M(99) +# + +//MIT Layout +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* 0: Qwerty layer (Default) +* ,-----------------------------------------------------------------------. +* |Tab | q | w | e | r | t | y | u | i | o | p | BS | +* |-----------------------------------------------------------------------| +* |Ctrl | a | s | d | f | g | h | j | k | l | ; |enter| +* |-----------------------------------------------------------------------| +* |Shift| z | x | c | v | b | n | m | , | . | / |Shift| +* |-----------------------------------------------------------------------| +* | Fn |Ctrl | Win | Alt |Lower| Space |Upper| ' | [ | ] | Alt | +* `-----------------------------------------------------------------------' +*/ +[0] ={ +{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, +{KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,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}, +{MO(4), KC_RCTL,KC_LGUI,KC_LALT,LOWER,KC_SPC,KC_SPC,RAISE,KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT} +}, +/* 1: Lower layer +* ,-----------------------------------------------------------------------. +* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BS | +* |-----------------------------------------------------------------------| +* | | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | \ | +* |-----------------------------------------------------------------------| +* | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo| +* |-----------------------------------------------------------------------| +* | | | | | | SPACE |mouse| END | LEFT| DOWN|RIGHT| +* `-----------------------------------------------------------------------' +*/ +[1] ={ +{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC }, +{_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS }, +{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,KC_F12,_______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN }, +{XXXXXXX,_______,_______,_______,_______,KC_SPC,KC_SPC,_______,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT} +}, +/* 2: Upper layer +* ,-----------------------------------------------------------------------. +* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | BS | +* |-----------------------------------------------------------------------| +* | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | | | +* |-----------------------------------------------------------------------| +* | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo| +* |-----------------------------------------------------------------------| +* | | | | |mouse| SPACE | | END | LEFT| DOWN|RIGHT| +* `-----------------------------------------------------------------------' +*/ +[2] ={ +{KC_TILD,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC }, +{_______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE }, +{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN }, +{XXXXXXX,_______,_______,_______,_______,KC_SPC, KC_SPC, _______,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT} +}, +/* 4: fn layer (Window shortcuts) +* ,-----------------------------------------------------------------------. +* | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DEL | +* |-----------------------------------------------------------------------| +* | |WinLe|WinDo|WinRi| |Al+Ca|CapsL| LEFT| DOWN|RIGHT| | | +* |-----------------------------------------------------------------------| +* | |WinLW|WinRW| | |Ct+Ca|ScroL| HOME| | END | | | +* |-----------------------------------------------------------------------| +* | |DeskL|DeskR|DeskX|Task | ChangeLang| | | | | LED | +* `-----------------------------------------------------------------------' +*/ +[4] ={ +{KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX ,S(KC_CAPS) ,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DELT}, +{_______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT) ,XXXXXXX ,LALT(KC_CAPS),KC_CAPS,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX}, +{_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX ,LCTL(KC_CAPS),KC_SLCK,KC_HOME,XXXXXXX,KC_END,XXXXXXX,XXXXXXX}, +{KC_TRNS,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),LGUI(LCTL(KC_F4)),LCTL(LALT(KC_DELT)),LGUI(KC_SPC),LGUI(KC_SPC),XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,M(0)} +}, +/* 10: mouse layer +* ,-----------------------------------------------------------------------. +* | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| |RESET| +* |-----------------------------------------------------------------------| +* | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | | +* |-----------------------------------------------------------------------| +* | | | | | | | |M_AC0|M_AC1|M_AC2| | | +* |-----------------------------------------------------------------------| +* | | | | | | GO_DEFT | | | | | | +* `-----------------------------------------------------------------------' +*/ +[10] ={ +{XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET}, +{XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX}, +{XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,XXXXXXX}, +{XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX} +} + +}; +//Layout END + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case 0: + if (record->event.pressed) { + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } + break; + case 1: + if (record->event.pressed) { + layer_on(1); + update_tri_layer(1, 2, 10); + } else { + layer_off(1); + update_tri_layer(1, 2, 10); + } + break; + case 2: + if (record->event.pressed) { + layer_on(2); + update_tri_layer(1, 2, 10); + } else { + layer_off(2); + update_tri_layer(1, 2, 10); + } + break; + case 99: + if (record->event.pressed) { + layer_off(10); + layer_off(1); + layer_off(2); + layer_on(0); + update_tri_layer(0 ,1 ,2); + } + break; + } + return MACRO_NONE; +}; \ No newline at end of file diff --git a/keyboards/planck/keymaps/tong92/readme.md b/keyboards/planck/keymaps/tong92/readme.md new file mode 100644 index 0000000000..328d005f6f --- /dev/null +++ b/keyboards/planck/keymaps/tong92/readme.md @@ -0,0 +1,66 @@ +# The Tong92 Layout +- MIT Layout +- my keymap for WIndow User +- Lower && Upper Hold -> Mouse Layer +- Mouse Layer : space -> Default Layer +- No Audio + +## 1. Default Layer - Qwerty + + ,-----------------------------------------------------------------------. + |Tab | q | w | e | r | t | y | u | i | o | p | BS | + |-----------------------------------------------------------------------| + |Ctrl | a | s | d | f | g | h | j | k | l | ; |enter| + |-----------------------------------------------------------------------| + |Shift| z | x | c | v | b | n | m | , | . | / |Shift| + |-----------------------------------------------------------------------| + | Fn |Ctrl | Win | Alt |Lower| Space |Upper| ' | [ | ] | Alt | + `-----------------------------------------------------------------------' + +## 2. Lower Layer + + ,-----------------------------------------------------------------------. + | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BS | + |-----------------------------------------------------------------------| + | | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | \ | + |-----------------------------------------------------------------------| + | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo| + |-----------------------------------------------------------------------| + | | | | | | SPACE |mouse| END | LEFT| DOWN|RIGHT| + `-----------------------------------------------------------------------' + +## 3. Upper Layer + + ,-----------------------------------------------------------------------. + | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | BS | + |-----------------------------------------------------------------------| + | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | | | + |-----------------------------------------------------------------------| + | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo| + |-----------------------------------------------------------------------| + | | | | |mouse| SPACE | | END | LEFT| DOWN|RIGHT| + `-----------------------------------------------------------------------' + +## 4. Fn Layer - Window Shortcuts + + ,-----------------------------------------------------------------------. + | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DEL | + |-----------------------------------------------------------------------| + | |WinLe|WinDo|WinRi| |Al+Ca|CapsL| LEFT| DOWN|RIGHT| | | + |-----------------------------------------------------------------------| + | |WinLW|WinRW| | |Ct+Ca|ScroL| HOME| | END | | | + |-----------------------------------------------------------------------| + | |DeskL|DeskR|DeskX|Task | ChangeLang| | | | | LED | + `-----------------------------------------------------------------------' + +## 5. Mouse Layer + + ,-----------------------------------------------------------------------. + | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| |RESET| + |-----------------------------------------------------------------------| + | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | | + |-----------------------------------------------------------------------| + | | | | | | | |M_AC0|M_AC1|M_AC2| | | + |-----------------------------------------------------------------------| + | | | | | |GO_DEFAULT | | | | | | + `-----------------------------------------------------------------------' \ No newline at end of file -- cgit v1.2.1 From 08c177f00bbcae251fd9b1a46d203543c48fbaa6 Mon Sep 17 00:00:00 2001 From: Peter Ondrejka Date: Thu, 8 Sep 2016 19:22:26 +0200 Subject: fixed typo in Linux install instructions --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 7ee3b28d43..20be105dd7 100644 --- a/readme.md +++ b/readme.md @@ -97,7 +97,7 @@ If you are going to flash Infinity based keyboards you will also need dfu-util ### Linux -To ensure you are always up to date, you can just run `sudo utils/install_dependencies.sh`. That should always install all the dependencies needed. +To ensure you are always up to date, you can just run `sudo util/install_dependencies.sh`. That should always install all the dependencies needed. You can also install things manually, but this documentation might not be always up to date with all requirements. -- cgit v1.2.1 From 01163b268af3b3cf2d9a1e7300db82da187e2072 Mon Sep 17 00:00:00 2001 From: Peter Ondrejka Date: Thu, 8 Sep 2016 19:39:27 +0200 Subject: util/install_dependencies.sh made executable, fixes #738 --- util/install_dependencies.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 util/install_dependencies.sh diff --git a/util/install_dependencies.sh b/util/install_dependencies.sh old mode 100644 new mode 100755 -- cgit v1.2.1 From b83f76e1b070236344837cc6838852daa08e6436 Mon Sep 17 00:00:00 2001 From: profet23 Date: Thu, 8 Sep 2016 23:34:55 -0400 Subject: Changing keymap name to "profet_80" --- .../ergodox/ez/keymaps/default_80/ergodox80.png | Bin 20663 -> 0 bytes keyboards/ergodox/ez/keymaps/default_80/keymap.c | 183 --------------------- keyboards/ergodox/ez/keymaps/default_80/readme.md | 10 -- .../ergodox/ez/keymaps/profet_80/ergodox80.png | Bin 0 -> 20663 bytes keyboards/ergodox/ez/keymaps/profet_80/keymap.c | 183 +++++++++++++++++++++ keyboards/ergodox/ez/keymaps/profet_80/readme.md | 10 ++ 6 files changed, 193 insertions(+), 193 deletions(-) delete mode 100644 keyboards/ergodox/ez/keymaps/default_80/ergodox80.png delete mode 100644 keyboards/ergodox/ez/keymaps/default_80/keymap.c delete mode 100644 keyboards/ergodox/ez/keymaps/default_80/readme.md create mode 100644 keyboards/ergodox/ez/keymaps/profet_80/ergodox80.png create mode 100644 keyboards/ergodox/ez/keymaps/profet_80/keymap.c create mode 100644 keyboards/ergodox/ez/keymaps/profet_80/readme.md diff --git a/keyboards/ergodox/ez/keymaps/default_80/ergodox80.png b/keyboards/ergodox/ez/keymaps/default_80/ergodox80.png deleted file mode 100644 index 66b9752ebc..0000000000 Binary files a/keyboards/ergodox/ez/keymaps/default_80/ergodox80.png and /dev/null differ diff --git a/keyboards/ergodox/ez/keymaps/default_80/keymap.c b/keyboards/ergodox/ez/keymaps/default_80/keymap.c deleted file mode 100644 index 505ff29722..0000000000 --- a/keyboards/ergodox/ez/keymaps/default_80/keymap.c +++ /dev/null @@ -1,183 +0,0 @@ -#include "ergodox.h" -#include "debug.h" -#include "action_layer.h" -#include "version.h" - -#define BASE 0 // default layer -#define SYMB 1 // symbols -#define MDIA 2 // media keys - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Basic layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | - * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | App | LGui | | Alt |Ctrl/Esc| - * ,------|------|------| |------+--------+------. - * | 1 | 2 | Home | | PgUp | 3 | 4 | - * |------|------|------| |------|--------|------| - * | Space| BkSp | End | | PgDn | Tab |Enter | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[BASE] = KEYMAP_80( // layer 0 : default - // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), - KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, - ALT_T(KC_APP), KC_LGUI, - KC_1, KC_2, KC_HOME, - KC_SPC,KC_BSPC,KC_END, - // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, - KC_LALT, CTL_T(KC_ESC), - KC_PGUP,KC_3, KC_4, - KC_PGDN,KC_TAB, KC_ENT - ), -/* Keymap 1: Symbol Layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | . | 0 | = | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * |------|------|------| |------|------|------| - * | | | | | | | | - * `--------------------' `--------------------' - */ -// SYMBOLS -[SYMB] = KEYMAP_80( - // left hand - M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,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, - // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, - KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, - KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, - KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS -), -/* Keymap 2: Media and mouse keys - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+----------. - * | | | | | | | | - * |------|------|------| |------|------|----------| - * | | | | | | |BrwserBack| - * `--------------------' `------------------------' - */ -// MEDIA AND MOUSE -[MDIA] = KEYMAP_80( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, - KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - 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_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_WBAK -), -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - break; - } - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - // TODO: Make this relevant to the ErgoDox EZ. - case 1: - ergodox_right_led_1_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - default: - // none - break; - } - -}; diff --git a/keyboards/ergodox/ez/keymaps/default_80/readme.md b/keyboards/ergodox/ez/keymaps/default_80/readme.md deleted file mode 100644 index b6bbb86d2c..0000000000 --- a/keyboards/ergodox/ez/keymaps/default_80/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# ErgoDox 80 Default Configuration - -This is based on the default Ergodox EZ keymap. -The difference is that this keymap supports 80 key layouts. -If you own an 80 key Ergodox, use this as an example to get your desired keymap. - -**NOTE:** This layout is not physically supported by the Ergodox EZ. - - -![Default80](ergodox80.png) diff --git a/keyboards/ergodox/ez/keymaps/profet_80/ergodox80.png b/keyboards/ergodox/ez/keymaps/profet_80/ergodox80.png new file mode 100644 index 0000000000..66b9752ebc Binary files /dev/null and b/keyboards/ergodox/ez/keymaps/profet_80/ergodox80.png differ diff --git a/keyboards/ergodox/ez/keymaps/profet_80/keymap.c b/keyboards/ergodox/ez/keymaps/profet_80/keymap.c new file mode 100644 index 0000000000..505ff29722 --- /dev/null +++ b/keyboards/ergodox/ez/keymaps/profet_80/keymap.c @@ -0,0 +1,183 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | 1 | 2 | Home | | PgUp | 3 | 4 | + * |------|------|------| |------|--------|------| + * | Space| BkSp | End | | PgDn | Tab |Enter | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP_80( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_1, KC_2, KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP,KC_3, KC_4, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * |------|------|------| |------|------|------| + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP_80( + // left hand + M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,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, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+----------. + * | | | | | | | | + * |------|------|------| |------|------|----------| + * | | | | | | |BrwserBack| + * `--------------------' `------------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP_80( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + 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_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/ez/keymaps/profet_80/readme.md b/keyboards/ergodox/ez/keymaps/profet_80/readme.md new file mode 100644 index 0000000000..b6bbb86d2c --- /dev/null +++ b/keyboards/ergodox/ez/keymaps/profet_80/readme.md @@ -0,0 +1,10 @@ +# ErgoDox 80 Default Configuration + +This is based on the default Ergodox EZ keymap. +The difference is that this keymap supports 80 key layouts. +If you own an 80 key Ergodox, use this as an example to get your desired keymap. + +**NOTE:** This layout is not physically supported by the Ergodox EZ. + + +![Default80](ergodox80.png) -- cgit v1.2.1 From 9c2015ea7f23a69c1c585b1b366df5cbfd3e93c7 Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 8 Sep 2016 23:20:17 -0500 Subject: first commit of Absenth's Ergodox Firmware --- .../ergodox/keymaps/absenth/absenth_highres.png | Bin 0 -> 1463041 bytes keyboards/ergodox/keymaps/absenth/keymap.c | 183 +++++++++++++++++++++ keyboards/ergodox/keymaps/absenth/readme.md | 8 + 3 files changed, 191 insertions(+) create mode 100644 keyboards/ergodox/keymaps/absenth/absenth_highres.png create mode 100644 keyboards/ergodox/keymaps/absenth/keymap.c create mode 100644 keyboards/ergodox/keymaps/absenth/readme.md diff --git a/keyboards/ergodox/keymaps/absenth/absenth_highres.png b/keyboards/ergodox/keymaps/absenth/absenth_highres.png new file mode 100644 index 0000000000..c07aa8803f Binary files /dev/null and b/keyboards/ergodox/keymaps/absenth/absenth_highres.png differ diff --git a/keyboards/ergodox/keymaps/absenth/keymap.c b/keyboards/ergodox/keymaps/absenth/keymap.c new file mode 100644 index 0000000000..30f7474191 --- /dev/null +++ b/keyboards/ergodox/keymaps/absenth/keymap.c @@ -0,0 +1,183 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_BTN1, KC_BTN2, KC_TRNS, + // right hand + 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_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/keymaps/absenth/readme.md b/keyboards/ergodox/keymaps/absenth/readme.md new file mode 100644 index 0000000000..35d0aad461 --- /dev/null +++ b/keyboards/ergodox/keymaps/absenth/readme.md @@ -0,0 +1,8 @@ +# ErgoDox EZ Absenth Configuration + +## Changelog + +* Sept. 8, 2016 (V0.1): + * Made A key double as MEDIA Layer change when you hold it. Added mouse buttons to the large thumb buttons on the left side on the Media Layer. Added vi/vim style arrow keys on HJKL on media layer. + +![Absenth](absenth_highres.png) -- cgit v1.2.1 From 52121cee7a9b26a6450db33ec34c8e4c8895aafc Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 8 Sep 2016 23:32:11 -0500 Subject: Updated Image Header --- .../ergodox/keymaps/absenth/absenth_highres.png | Bin 1463041 -> 1429453 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/keyboards/ergodox/keymaps/absenth/absenth_highres.png b/keyboards/ergodox/keymaps/absenth/absenth_highres.png index c07aa8803f..a0596b2812 100644 Binary files a/keyboards/ergodox/keymaps/absenth/absenth_highres.png and b/keyboards/ergodox/keymaps/absenth/absenth_highres.png differ -- cgit v1.2.1 From e25ae23287a687468f4b32ffec9613fd4326610f Mon Sep 17 00:00:00 2001 From: shela Date: Sat, 10 Sep 2016 23:47:33 +0900 Subject: fix number of NKRO keys 32byte report = 1byte modifiers + 31byte keys 31byte * 8bit * 1key/bit = 248keys --- tmk_core/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/readme.md b/tmk_core/readme.md index 3242328516..5f135617c4 100644 --- a/tmk_core/readme.md +++ b/tmk_core/readme.md @@ -23,7 +23,7 @@ These features can be used in your keyboard. * Mouse key - Mouse control with keyboard * System Control Key - Power Down, Sleep, Wake Up and USB Remote Wake up * Media Control Key - Volume Down/Up, Mute, Next/Prev track, Play, Stop and etc -* USB NKRO - 240 keys(+ 8 modifiers) simultaneously +* USB NKRO - 248 keys(+ 8 modifiers) simultaneously * PS/2 mouse support - PS/2 mouse(TrackPoint) as composite device * Keyboard protocols - PS/2, ADB, M0110, Sun and other old keyboard protocols * User Function - Customizable function of key with writing code -- cgit v1.2.1 From a9e56186e00c000892e2d1a6567627466e611f16 Mon Sep 17 00:00:00 2001 From: Daniel Bordak Date: Sat, 10 Sep 2016 12:16:38 -0400 Subject: Fix typo --- keyboards/atreus/rules.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/atreus/rules.mk b/keyboards/atreus/rules.mk index d71f50bb2b..3a00993bd5 100644 --- a/keyboards/atreus/rules.mk +++ b/keyboards/atreus/rules.mk @@ -2,11 +2,11 @@ ifdef TEENSY2 OPT_DEFS += -DATREUS_TEENSY2 - ATRUES_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex + ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex else OPT_DEFS += -DATREUS_ASTAR OPT_DEFS += -DCATERINA_BOOTLOADER - ATRUES_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ + ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) endif @@ -79,4 +79,4 @@ UNICODE_ENABLE ?= YES # Unicode USB ?= /dev/cu.usbmodem1411 upload: build - $(ATRUES_UPLOAD_COMMAND) \ No newline at end of file + $(ATREUS_UPLOAD_COMMAND) -- cgit v1.2.1 From 70b4fc808db716ab2b6c659a1e43702c435bfbef Mon Sep 17 00:00:00 2001 From: shela Date: Sun, 11 Sep 2016 02:29:32 +0900 Subject: fix variable value of rules.mk --- keyboards/hhkb/rules.mk | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk index b43b5e23f1..e6fc7260ee 100644 --- a/keyboards/hhkb/rules.mk +++ b/keyboards/hhkb/rules.mk @@ -58,19 +58,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # 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 -CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # 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 +CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work # BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -# MIDI_ENABLE ?= YES # MIDI controls -# UNICODE_ENABLE ?= YES # Unicode -# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID +# MIDI_ENABLE ?= yes # MIDI controls +# UNICODE_ENABLE ?= yes # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID ifneq (, $(findstring yes, $(HHKB_JP))) OPT_DEFS += -DHHKB_JP -- cgit v1.2.1 From 054108d1d1702a8a51913f67f14733bbf1eebd1a Mon Sep 17 00:00:00 2001 From: Daniel Bordak Date: Sat, 10 Sep 2016 13:25:13 -0400 Subject: Update to new default keymap --- keyboards/atreus/keymaps/classic/keymap.c | 48 +++++++++++++++++++++++++++++++ keyboards/atreus/keymaps/default/keymap.c | 22 ++++++++++---- 2 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 keyboards/atreus/keymaps/classic/keymap.c diff --git a/keyboards/atreus/keymaps/classic/keymap.c b/keyboards/atreus/keymaps/classic/keymap.c new file mode 100644 index 0000000000..6ca0b2077d --- /dev/null +++ b/keyboards/atreus/keymaps/classic/keymap.c @@ -0,0 +1,48 @@ +#include "atreus.h" + +// 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 _QW 0 +#define _RS 1 +#define _LW 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QW] = { /* Qwerty */ + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT } +}, +[_RS] = { /* [> RAISE <] */ + {KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, + {KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, + {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS}, + {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL} +}, +[_LW] = { /* [> LOWER <] */ + {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, + {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12}, + {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET} +}}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/atreus/keymaps/default/keymap.c b/keyboards/atreus/keymaps/default/keymap.c index 1c4280ff56..04ad66fed8 100644 --- a/keyboards/atreus/keymaps/default/keymap.c +++ b/keyboards/atreus/keymaps/default/keymap.c @@ -18,17 +18,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT } }, +/* + * ! @ up { } || pgup 7 8 9 * + * # left down right $ || pgdn 4 5 6 + + * [ ] ( ) & || ` 1 2 3 \ + * lower insert super shift bksp ctrl || alt space fn . 0 = + */ [_RS] = { /* [> RAISE <] */ - {KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, - {KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, - {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS}, + {KC_EXLM, KC_AT, KC_UP, KC_LCBR, KC_RCBR, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, + {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_DLR, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, + {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LALT, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS}, {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL} }, +/* + * insert home up end pgup || up F7 F8 F9 F10 + * del left down right pgdn || down F4 F5 F6 F11 + * volup reset || F1 F2 F3 F12 + * voldn super shift bksp ctrl || alt space L0 prtsc scroll pause + */ [_LW] = { /* [> LOWER <] */ {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12}, - {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET} + {KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, RESET, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12}, + {KC_TRNS, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_PSCR, KC_SLCK, KC_PAUS} }}; const uint16_t PROGMEM fn_actions[] = { -- cgit v1.2.1 From 475d0b23f6139b14d6eac12c9a584e6b1fb7c569 Mon Sep 17 00:00:00 2001 From: Daniel Bordak Date: Sat, 10 Sep 2016 12:19:16 -0400 Subject: Add PCBDOWN --- keyboards/atreus/config.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h index 624d90188c..51162cde3a 100644 --- a/keyboards/atreus/config.h +++ b/keyboards/atreus/config.h @@ -37,7 +37,11 @@ along with this program. If not, see . // COLS: Left to right, ROWS: Top to bottom #if defined(ATREUS_ASTAR) # define MATRIX_ROW_PINS { D0, D1, D3, D2 } +#if defined(PCBDOWN) +# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } +#else # define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } +#endif # define UNUSED_PINS #elif defined(ATREUS_TEENSY2) # define MATRIX_ROW_PINS { D0, D1, D2, D3 } -- cgit v1.2.1 From 2a8536f00fb7e3a547fb5b626279e2e391e556d5 Mon Sep 17 00:00:00 2001 From: shela Date: Sun, 11 Sep 2016 02:46:06 +0900 Subject: Variables in Makefile are ignored in rules.mk --- keyboards/hhkb/keymaps/jp/Makefile | 2 +- keyboards/hhkb/keymaps/rdg_jp/Makefile | 2 +- keyboards/hhkb/rules.mk | 4 ---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/keyboards/hhkb/keymaps/jp/Makefile b/keyboards/hhkb/keymaps/jp/Makefile index 92986292a2..a7f700f019 100644 --- a/keyboards/hhkb/keymaps/jp/Makefile +++ b/keyboards/hhkb/keymaps/jp/Makefile @@ -1 +1 @@ -HHKB_JP=yes +OPT_DEFS += -DHHKB_JP diff --git a/keyboards/hhkb/keymaps/rdg_jp/Makefile b/keyboards/hhkb/keymaps/rdg_jp/Makefile index 92986292a2..a7f700f019 100644 --- a/keyboards/hhkb/keymaps/rdg_jp/Makefile +++ b/keyboards/hhkb/keymaps/rdg_jp/Makefile @@ -1 +1 @@ -HHKB_JP=yes +OPT_DEFS += -DHHKB_JP diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk index e6fc7260ee..a46271f023 100644 --- a/keyboards/hhkb/rules.mk +++ b/keyboards/hhkb/rules.mk @@ -72,10 +72,6 @@ CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB # UNICODE_ENABLE ?= yes # Unicode # BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID -ifneq (, $(findstring yes, $(HHKB_JP))) - OPT_DEFS += -DHHKB_JP -endif - debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION debug-on: all -- cgit v1.2.1 From 11bcdbc1f5749be19bcfee092fa36ddcff2d4442 Mon Sep 17 00:00:00 2001 From: "Daniel K. Levy" Date: Sat, 10 Sep 2016 16:37:08 -0500 Subject: Use rules.mk template in new project generator --- util/new_project.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/util/new_project.sh b/util/new_project.sh index b3535f449e..18d16e560c 100755 --- a/util/new_project.sh +++ b/util/new_project.sh @@ -20,6 +20,7 @@ sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/template.c > keyboards/$KEYBO sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/config.h > keyboards/$KEYBOARD/config.h sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/readme.md > keyboards/$KEYBOARD/readme.md sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/Makefile > keyboards/$KEYBOARD/Makefile +sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/rules.mk > keyboards/$KEYBOARD/rules.mk sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/keymaps/default/config.h > keyboards/$KEYBOARD/keymaps/default/config.h sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/keymaps/default/keymap.c > keyboards/$KEYBOARD/keymaps/default/keymap.c sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/keymaps/default/Makefile > keyboards/$KEYBOARD/keymaps/default/Makefile -- cgit v1.2.1 From 60a826923d5a6b0dbe416b0837608149ab82e470 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Thu, 8 Sep 2016 00:09:35 +0200 Subject: Added KC_APP on fn+BP_AGRV --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c index 8d77619856..7097d641d9 100644 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/bepo/keymap.c @@ -325,7 +325,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | RESET | | | Calc | Mail |Browsr|------| |------| | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | cut | copy |paste | Mute |VolDn | | | | | | | | | + * | | App | cut | copy |paste | Mute |VolDn | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -342,7 +342,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(LR_CSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, - KC_TRNS, KC_TRNS, S(KC_DELT), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD, + KC_TRNS, KC_APP, S(KC_DELT), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -- cgit v1.2.1 From 1aeb59335f2fe67613df25308a630ca453975ac0 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Sun, 11 Sep 2016 02:19:55 +0200 Subject: Fixed compilation issues after the merge --- keyboard/ergodox_ez/keymaps/bepo/keymap.c | 527 --------------------- keyboards/ergodox/keymaps/bepo_csa/keymap.c | 527 +++++++++++++++++++++ .../keymap_extras/keymap_canadian_multilingual.h | 2 +- 3 files changed, 528 insertions(+), 528 deletions(-) delete mode 100644 keyboard/ergodox_ez/keymaps/bepo/keymap.c create mode 100644 keyboards/ergodox/keymaps/bepo_csa/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/bepo/keymap.c b/keyboard/ergodox_ez/keymaps/bepo/keymap.c deleted file mode 100644 index 7097d641d9..0000000000 --- a/keyboard/ergodox_ez/keymaps/bepo/keymap.c +++ /dev/null @@ -1,527 +0,0 @@ -/* TypeMatrix-2030-like keymap */ -#include "ergodox_ez.h" -#include "debug.h" -#include "action_layer.h" -#include "action_util.h" -#include "led.h" -#include "keymap_extras/keymap_bepo.h" -#include "keymap_extras/keymap_canadian_multilingual.h" - -enum layers { - LR_BASE, // default layer - LR_CSA, // BÉPO over Canadian Multilingual (CSA) - LR_CSA_SFT, // shifted BÉPO over CSA - LR_CSA_AGR, // altgr-ed BÉPO over CSA - LR_CSA_AGR_SFT, // altgr-shifted BÉPO over CSA - LR_NUMR, // numeric layer - LR_FN, // fn layer -}; - -#define IS_CA_MULT_ENABLED() (layer_state & (1 << LR_CSA)) - -enum macros { - // Characters that do not exist in CSA and must be implemented based on unicode support - // Note: these are intentionally declared first to be used as indexes in spec_chars below - UC_NDSH, // – - UC_MDSH, // — - UC_ELPS, // … - END_UC, // indicates the last unicode character macro - // other macros - M_CSA_SFT, // toggle shift on CSA - M_CSA_AGR_SFT, // toggle shift on LR_CSA_AGR (goes to LR_CSA_AGR_SFT) - M_CSA_SFT_AGR, // toggle AltGr on LR_CSA_SFT (goes to LR_CSA_AGR_SFT) - // macros for characters that need to be un-shifted in LR_CA_MULT_SHIFT - M_1, - M_2, - M_3, - M_4, - M_5, - M_6, - M_7, - M_8, - M_9, - M_0, - M_DEGR, - M_SCLN, - M_GRV, - M_NBSP, - // macros for characters that don't have a simple key combination in LR_CA_MULT_ALTGR - M_CRC, - // other layer macros - M_DBL0, // double 0 - M_FNLR, // fn layer - M_NMAL, // num+alt -}; - -#define CSA(name) M(M_CSA_##name) // calls a CSA macro - -const uint16_t unicode_chars[] = { - [UC_NDSH] = L'–', - [UC_MDSH] = L'—', - [UC_ELPS] = L'…', -}; - -/* shortcut for unicode character macros */ -#define MUC(name) M(UC_##name) // calls a unicode macro - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Basic layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | $ | " | « | » | ( | ) | Del | | Del | @ | + | - | / | * | W | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | B | É | P | O | È |Backsp| |Backsp| ^ | V | D | L | J | Z | - * |--------+------+------+------+------+------|ace | |ace |------+------+------+------+------+--------| - * | = | A | U | I | E | , |------| |------| C | T | S | R | N | M | - * |--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| - * | LShift | À | Y | X | . | K | | | | ' | Q | G | H | F | RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | fn | LGui |numAlt| LAlt | |Alt Gr| % | App | Ç | RCtrl| - * `----------------------------------' `----------------------------------' - * ,--------------. ,-------------. - * | Esc | num | | Left |Right | - * ,------+-------+------| |------+------+------. - * | | | PgUp | | Up | | | - * |Space | Home |------| |------| End |Space | - * | | | PgDn | | Down | | | - * `---------------------' `--------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[LR_BASE] = KEYMAP( // layer 0 : default - // left hand - BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, - KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, - BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, - KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, - KC_LCTL, M(M_FNLR), KC_LGUI, M(M_NMAL), KC_LALT, - - KC_ESC, TG(LR_NUMR), - KC_PGUP, - KC_SPC, KC_HOME, KC_PGDN, - - // right hand - KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, BP_W, - KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, - BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, - KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, - BP_ALGR, BP_PERC, KC_APP, BP_CCED, KC_RCTL, - - KC_LEFT, KC_RGHT, - KC_UP, - KC_DOWN, KC_END, KC_SPC - ), -/** - * Same as default but for use with Canadian Multilingual on OS side - */ -[LR_CSA] = KEYMAP( - // left hand - KC_DLR, CSA_DQOT, CSA_LGIL, CSA_RGIL, KC_LPRN, KC_RPRN, KC_TRNS, - KC_TRNS, KC_B, CSA_ECUT, KC_P, KC_O, CSA_EGRV, KC_TRNS, - KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, - CSA(SFT), CSA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - - // right hand - KC_TRNS, KC_AT, KC_PLUS, KC_MINS, CSA_SLSH, KC_ASTR, KC_W, - KC_TRNS, CSA_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, - KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, - KC_TRNS, CSA_APOS, KC_Q, KC_G, KC_H, KC_F, CSA(SFT), - MO(LR_CSA_AGR), KC_PERC, KC_TRNS, CSA_CCED, KC_LCTL, // RCTL has a special behaviour in CSA so use LCTL - - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS - ), -/* Shifted BÉPO over Canadian Multilingual - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | # | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | | | | | ! | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | ° | | | | | ; |------| |------| | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | : | | | | | ? | | | | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | ` | | | | - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -[LR_CSA_SFT] = KEYMAP( - // left hand - KC_HASH, M(M_1), M(M_2), M(M_3), M(M_4), M(M_5), KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - M(M_DEGR),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(M_SCLN), - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_COLN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_TRNS, - M(M_NBSP), KC_TRNS, KC_TRNS, - - // right hand - KC_TRNS, M(M_6), M(M_7), M(M_8), M(M_9), M(M_0), KC_TRNS, - KC_TRNS, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, CSA_QEST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - CSA(SFT_AGR), M(M_GRV), KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, M(M_NBSP) - ), -/* AltGr-ed BÉPO over Canadian Multilingual - * "////" indicates that the key is disabled (unsupported bépo character) - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | – | — | < | > | [ | ] | | | | ^ | ± | //// | ÷ | × | dead ˘ | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | |dead '| & | œ |dead `| | | | ¡ |dead ˇ| ð | //// | ij | ////// | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | ////// | æ | ù |dead "| € | ̛’ |------| |------| © | þ | ß | ® |dead ~| dead ¯ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | \ | { | } | … | ~ | | | | ¿ |dead °| μ | //// |dead ˛| | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | //// | |dead ¸| | - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | _ | |------| |------| | _ | - * | | | | | | | | - * `--------------------' `--------------------' - */ -[LR_CSA_AGR] = KEYMAP( - // left hand - MUC(NDSH), MUC(MDSH), CSA_LESS, CSA_GRTR, CSA_LBRC, CSA_RBRC, KC_TRNS, - KC_TRNS, CSA_PIPE, CSA_DACT, KC_AMPR, CSA_OE, CSA_DGRV, KC_TRNS, - KC_NO, CSA_AE, CSA_UGRV, CSA_DTRM, CSA_EURO, CSA_RQOT, - CSA(AGR_SFT), CSA_BSLS, CSA_LCBR, CSA_RCBR, MUC(ELPS), CSA_TILD, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_UNDS, CSA(AGR_SFT), KC_TRNS, - - // right hand - KC_TRNS, M(M_CRC), CSA_PSMS, KC_NO, CSA_DVSN, CSA_TIMS, CSA_DBRV, - KC_TRNS, CSA_IXLM, CSA_DCAR, CSA_ETH, KC_NO, CSA_IJ, KC_NO, - CSA_CPRT, CSA_THRN, CSA_SRPS, CSA_RTM, CSA_DTLD, CSA_DMCR, - KC_TRNS, CSA_IQST, CSA_DRNG, CSA_MU, KC_NO, CSA_DOGO, CSA(AGR_SFT), - KC_TRNS, KC_NO, KC_TRNS, CSA_DCED, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, CSA(AGR_SFT), KC_UNDS - ), -/* AltGr-shifted BÉPO over Canadian Multilingual - * "////" indicates that the key is disabled (unsupported bépo character or unused in bépo) - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ¶ | //// | “ | ” | //// | //// | | | | //// | ¬ | ¼ | ½ | ¾ | ////// | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ¦ | ˝ | § | Œ | ` | | | | //// | //// | Ð | //// | IJ | ////// | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | ////// | Æ | Ù |dead-˙| //// | //// |------| |------| //// | Þ | ẞ | ™ | //// | º | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | //// | ‘ | ’ | //// | //// | | | | //// | //// | //// | //// | ª | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -[LR_CSA_AGR_SFT] = KEYMAP( - // left hand - CSA_PARG, KC_NO, CSA_LDQT, CSA_RDQT, KC_NO, KC_NO, KC_TRNS, - KC_TRNS, CSA_BPIP, CSA_DDCT, CSA_SECT, S(CSA_OE), M(M_GRV), KC_TRNS, - KC_NO, S(CSA_AE), S(CSA_UGRV), CSA_DDTA, KC_NO, KC_NO, - CSA(AGR_SFT), KC_NO, CSA_LQOT, CSA_RQOT, KC_NO, KC_NO, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, CSA(AGR_SFT), KC_TRNS, - - // right hand - KC_TRNS, KC_NO, CSA_NEGT, CSA_1QRT, CSA_1HLF, CSA_3QRT, KC_NO, - KC_TRNS, KC_NO, KC_NO, S(CSA_ETH), KC_NO, S(CSA_IJ), KC_NO, - KC_NO, S(CSA_THRN), S(CSA_SRPS), CSA_TM, KC_NO, CSA_ORDO, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, CSA_ORDA, CSA(AGR_SFT), - CSA(SFT_AGR), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, CSA(AGR_SFT), KC_TRNS - ), -/* Numeric Layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | | | | | Tab | / | * | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | F6 | F7 | F8 | F9 | F10 | | | | | Home | 7 | 8 | 9 | + | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | F11 | F12 | | | |------| |------| Up | End | 4 | 5 | 6 | + | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | Left | Down | Right| 1 | 2 | 3 |KpEnter | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | 0 | 00 | . |Etr/Ctl| - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | |n.lock|c.lock| - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// SYMBOLS -[LR_NUMR] = KEYMAP( - // left hand - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, - KC_TRNS, KC_F11, KC_F12, 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, - - // right hand - KC_TRNS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS, - KC_TRNS, KC_TRNS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_UP, KC_END, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_TRNS, KC_P0, M(M_DBL0),KC_PDOT, CTL_T(KC_PENT), - - KC_NLCK, KC_CAPS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS -), -/* fn layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * |~CA-mult| | | | | |Insert| |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk| - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | |VolUp | | | | | | | | Pause | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | RESET | | | Calc | Mail |Browsr|------| |------| | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | App | cut | copy |paste | Mute |VolDn | | | | | | | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | Next | | | | | - * | Mute | play |------| |------| | | - * | | | Prev | | | | | - * `--------------------' `--------------------' - */ -// MEDIA AND MOUSE -[LR_FN] = KEYMAP( - TG(LR_CSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, - RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, - KC_TRNS, KC_APP, S(KC_DELT), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_MPRV, - KC_MUTE, KC_MPLY, KC_MNXT, - - // right hand - KC_INS, KC_EJCT, KC_PWR, KC_SLEP, KC_WAKE, KC_PSCR, KC_SLCK, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, - 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 -), -}; - -const uint16_t PROGMEM fn_actions[] = { -}; - -void hold_shift(void) { - register_code(KC_LSHIFT); -} - -void release_shift(void) { - unregister_code(KC_LSHIFT); -} - -uint16_t hextokeycode(int hex) { - if (hex == 0x0) { - return KC_P0; - } else if (hex < 0xA) { - return KC_P1 + (hex - 0x1); - } else { - return KC_A + (hex - 0xA); - } -} - -void send_unicode(uint16_t unicode) -{ - // For more info on how this works per OS, see here: https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input - // Implemented for Windows: - // Pressing ALT followed by + followed by the unicode code point in hex. - // Requires registry key HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad set to String 1 - register_code(KC_LALT); - register_code(KC_PPLS); - unregister_code(KC_PPLS); - - for (int i = 12; i >= 0; i -= 4) { - register_code(hextokeycode((unicode >> i) & 0xF)); - unregister_code(hextokeycode((unicode >> i) & 0xF)); - } - - unregister_code(KC_LALT); -} - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0 ... END_UC: - if (record->event.pressed) { - send_unicode(unicode_chars[id]); - } - break; - case M_CSA_SFT: - // BÉPO over CSA: toggle shift layer - layer_invert(LR_CSA_SFT); - if (record->event.pressed) { - hold_shift(); - } else { - release_shift(); - } - break; - case M_CSA_SFT_AGR: - // BÉPO over CSA: from shift layer, momentary altgr+shift layer - layer_invert(LR_CSA_AGR); - layer_invert(LR_CSA_AGR_SFT); - if (record->event.pressed) { - // shift not needed for LR_CSA_AGR_SFT - release_shift(); - } else { - // back to shift layer - hold_shift(); - } - break; - case M_CSA_AGR_SFT: - // BÉPO over CSA: from altgr layer, momentary altgr+shift layer - layer_invert(LR_CSA_SFT); - layer_invert(LR_CSA_AGR_SFT); - break; - case M_1 ... M_0: - case M_DEGR: - case M_SCLN: - case M_GRV: - case M_NBSP: - // macros of the shift layer that require to release shift - if (record->event.pressed) { - release_shift(); - switch (id) { - case M_1 ... M_0: - register_code(KC_1 + (id - M_1)); - break; - case M_DEGR: - return MACRO(DOWN(CSA_ALTGR), D(SCLN), END); - case M_SCLN: - return MACRO(D(SCLN), END); - case M_GRV: - return MACRO(I(75), DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END); - case M_NBSP: - // use weak mod such that pressing another key will not be affected - add_weak_mods(MOD_BIT(CSA_ALTGR)); - return MACRO(D(SPACE), END); - } - } else { - hold_shift(); - switch (id) { - case M_1 ... M_0: - unregister_code(KC_1 + (id - M_1)); - break; - case M_DEGR: - return MACRO(UP(CSA_ALTGR), U(SCLN), END); - case M_SCLN: - return MACRO(U(SCLN), END); - case M_NBSP: - del_weak_mods(MOD_BIT(CSA_ALTGR)); - return MACRO(U(SPACE), END); - } - } - break; - case M_CRC: - if (record->event.pressed) { - return MACRO(I(75), TYPE(CSA_DCRC), T(SPACE), END); - } - break; - case M_DBL0: - if (record->event.pressed) { - return MACRO( I(25), T(P0), T(P0), END ); - } - break; - case M_FNLR: - layer_invert(LR_NUMR); - layer_invert(LR_FN); - break; - case M_NMAL: - layer_invert(LR_NUMR); - if (record->event.pressed) { - register_code(KC_LALT); - } else { - unregister_code(KC_LALT); - } - break; - } - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - // led 1: numeric layer - if (layer_state & (1 << LR_NUMR)) { - ergodox_right_led_1_on(); - } - // led 2: BÉPO over Canadian Multilingual - if (IS_CA_MULT_ENABLED()) { - ergodox_right_led_2_on(); - } - // led 3: caps lock - if (host_keyboard_leds() & (1< | [ | ] | | | | ^ | ± | //// | ÷ | × | dead ˘ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | |dead '| & | œ |dead `| | | | ¡ |dead ˇ| ð | //// | ij | ////// | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | ////// | æ | ù |dead "| € | ̛’ |------| |------| © | þ | ß | ® |dead ~| dead ¯ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | \ | { | } | … | ~ | | | | ¿ |dead °| μ | //// |dead ˛| | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | //// | |dead ¸| | + * `----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | _ | |------| |------| | _ | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[LR_CSA_AGR] = KEYMAP( + // left hand + MUC(NDSH), MUC(MDSH), CSA_LESS, CSA_GRTR, CSA_LBRC, CSA_RBRC, KC_TRNS, + KC_TRNS, CSA_PIPE, CSA_DACT, KC_AMPR, CSA_OE, CSA_DGRV, KC_TRNS, + KC_NO, CSA_AE, CSA_UGRV, CSA_DTRM, CSA_EURO, CSA_RQOT, + CSA(AGR_SFT), CSA_BSLS, CSA_LCBR, CSA_RCBR, MUC(ELPS), CSA_TILD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_UNDS, CSA(AGR_SFT), KC_TRNS, + + // right hand + KC_TRNS, M(M_CRC), CSA_PSMS, KC_NO, CSA_DVSN, CSA_TIMS, CSA_DBRV, + KC_TRNS, CSA_IXLM, CSA_DCAR, CSA_ETH, KC_NO, CSA_IJ, KC_NO, + CSA_CPRT, CSA_THRN, CSA_SRPS, CSA_RTM, CSA_DTLD, CSA_DMCR, + KC_TRNS, CSA_IQST, CSA_DRNG, CSA_MU, KC_NO, CSA_DOGO, CSA(AGR_SFT), + KC_TRNS, KC_NO, KC_TRNS, CSA_DCED, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, CSA(AGR_SFT), KC_UNDS + ), +/* AltGr-shifted BÉPO over Canadian Multilingual + * "////" indicates that the key is disabled (unsupported bépo character or unused in bépo) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ¶ | //// | “ | ” | //// | //// | | | | //// | ¬ | ¼ | ½ | ¾ | ////// | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ¦ | ˝ | § | Œ | ` | | | | //// | //// | Ð | //// | IJ | ////// | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | ////// | Æ | Ù |dead-˙| //// | //// |------| |------| //// | Þ | ẞ | ™ | //// | º | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | //// | ‘ | ’ | //// | //// | | | | //// | //// | //// | //// | ª | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[LR_CSA_AGR_SFT] = KEYMAP( + // left hand + CSA_PARG, KC_NO, CSA_LDQT, CSA_RDQT, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, CSA_BPIP, CSA_DDCT, CSA_SECT, S(CSA_OE), M(M_GRV), KC_TRNS, + KC_NO, S(CSA_AE), S(CSA_UGRV), CSA_DDTA, KC_NO, KC_NO, + CSA(AGR_SFT), KC_NO, CSA_LQOT, CSA_RQOT, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, CSA(AGR_SFT), KC_TRNS, + + // right hand + KC_TRNS, KC_NO, CSA_NEGT, CSA_1QRT, CSA_1HLF, CSA_3QRT, KC_NO, + KC_TRNS, KC_NO, KC_NO, S(CSA_ETH), KC_NO, S(CSA_IJ), KC_NO, + KC_NO, S(CSA_THRN), S(CSA_SRPS), CSA_TM, KC_NO, CSA_ORDO, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, CSA_ORDA, CSA(AGR_SFT), + CSA(SFT_AGR), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, CSA(AGR_SFT), KC_TRNS + ), +/* Numeric Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | | | Tab | / | * | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | F6 | F7 | F8 | F9 | F10 | | | | | Home | 7 | 8 | 9 | + | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | F11 | F12 | | | |------| |------| Up | End | 4 | 5 | 6 | + | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | Left | Down | Right| 1 | 2 | 3 |KpEnter | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | 0 | 00 | . |Etr/Ctl| + * `----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | | | |n.lock|c.lock| + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[LR_NUMR] = KEYMAP( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_F11, KC_F12, 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, + + // right hand + KC_TRNS, KC_F6, KC_F7, KC_TAB, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_TRNS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_UP, KC_END, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_TRNS, KC_P0, M(M_DBL0),KC_PDOT, CTL_T(KC_PENT), + + KC_NLCK, KC_CAPS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* fn layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |~CA-mult| | | | | |Insert| |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk| + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | |VolUp | | | | | | | | Pause | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | RESET | | | Calc | Mail |Browsr|------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | App | cut | copy |paste | Mute |VolDn | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | Next | | | | | + * | Mute | play |------| |------| | | + * | | | Prev | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[LR_FN] = KEYMAP( + TG(LR_CSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, + KC_TRNS, KC_APP, S(KC_DELT), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, + KC_MPRV, + KC_MUTE, KC_MPLY, KC_MNXT, + + // right hand + KC_INS, KC_EJCT, KC_PWR, KC_SLEP, KC_WAKE, KC_PSCR, KC_SLCK, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, + 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 +), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +void hold_shift(void) { + register_code(KC_LSHIFT); +} + +void release_shift(void) { + unregister_code(KC_LSHIFT); +} + +uint16_t hextokeycode(int hex) { + if (hex == 0x0) { + return KC_P0; + } else if (hex < 0xA) { + return KC_P1 + (hex - 0x1); + } else { + return KC_A + (hex - 0xA); + } +} + +void send_unicode(uint16_t unicode) +{ + // For more info on how this works per OS, see here: https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input + // Implemented for Windows: + // Pressing ALT followed by + followed by the unicode code point in hex. + // Requires registry key HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad set to String 1 + register_code(KC_LALT); + register_code(KC_PPLS); + unregister_code(KC_PPLS); + + for (int i = 12; i >= 0; i -= 4) { + register_code(hextokeycode((unicode >> i) & 0xF)); + unregister_code(hextokeycode((unicode >> i) & 0xF)); + } + + unregister_code(KC_LALT); +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0 ... END_UC: + if (record->event.pressed) { + send_unicode(unicode_chars[id]); + } + break; + case M_CSA_SFT: + // BÉPO over CSA: toggle shift layer + layer_invert(LR_CSA_SFT); + if (record->event.pressed) { + hold_shift(); + } else { + release_shift(); + } + break; + case M_CSA_SFT_AGR: + // BÉPO over CSA: from shift layer, momentary altgr+shift layer + layer_invert(LR_CSA_AGR); + layer_invert(LR_CSA_AGR_SFT); + if (record->event.pressed) { + // shift not needed for LR_CSA_AGR_SFT + release_shift(); + } else { + // back to shift layer + hold_shift(); + } + break; + case M_CSA_AGR_SFT: + // BÉPO over CSA: from altgr layer, momentary altgr+shift layer + layer_invert(LR_CSA_SFT); + layer_invert(LR_CSA_AGR_SFT); + break; + case M_1 ... M_0: + case M_DEGR: + case M_SCLN: + case M_GRV: + case M_NBSP: + // macros of the shift layer that require to release shift + if (record->event.pressed) { + release_shift(); + switch (id) { + case M_1 ... M_0: + register_code(KC_1 + (id - M_1)); + break; + case M_DEGR: + return MACRO(DOWN(CSA_ALTGR), D(SCLN), END); + case M_SCLN: + return MACRO(D(SCLN), END); + case M_GRV: + return MACRO(I(75), DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END); + case M_NBSP: + // use weak mod such that pressing another key will not be affected + add_weak_mods(MOD_BIT(CSA_ALTGR)); + return MACRO(D(SPACE), END); + } + } else { + hold_shift(); + switch (id) { + case M_1 ... M_0: + unregister_code(KC_1 + (id - M_1)); + break; + case M_DEGR: + return MACRO(UP(CSA_ALTGR), U(SCLN), END); + case M_SCLN: + return MACRO(U(SCLN), END); + case M_NBSP: + del_weak_mods(MOD_BIT(CSA_ALTGR)); + return MACRO(U(SPACE), END); + } + } + break; + case M_CRC: + if (record->event.pressed) { + return MACRO(I(75), TYPE(CSA_DCRC), T(SPACE), END); + } + break; + case M_DBL0: + if (record->event.pressed) { + return MACRO( I(25), T(P0), T(P0), END ); + } + break; + case M_FNLR: + layer_invert(LR_NUMR); + layer_invert(LR_FN); + break; + case M_NMAL: + layer_invert(LR_NUMR); + if (record->event.pressed) { + register_code(KC_LALT); + } else { + unregister_code(KC_LALT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + // led 1: numeric layer + if (layer_state & (1 << LR_NUMR)) { + ergodox_right_led_1_on(); + } + // led 2: BÉPO over Canadian Multilingual + if (IS_CA_MULT_ENABLED()) { + ergodox_right_led_2_on(); + } + // led 3: caps lock + if (host_keyboard_leds() & (1< Date: Sun, 11 Sep 2016 22:03:34 +0200 Subject: Added readme.md for bepo_csa --- keyboards/ergodox/keymaps/bepo_csa/readme.md | 162 +++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 keyboards/ergodox/keymaps/bepo_csa/readme.md diff --git a/keyboards/ergodox/keymaps/bepo_csa/readme.md b/keyboards/ergodox/keymaps/bepo_csa/readme.md new file mode 100644 index 0000000000..d4975b2265 --- /dev/null +++ b/keyboards/ergodox/keymaps/bepo_csa/readme.md @@ -0,0 +1,162 @@ +# BÉPO Keymap with firmware-remapping for software CSA layout + +This is a keymap intended to be used with the [BÉPO layout](http://bepo.fr), a French ergonomic layout designed by following Dvorak's principles. + +The particularity of this keymap is that it supports using the [Canadian Multilingual Standard layout](https://en.wikipedia.org/wiki/QWERTY#Canadian_Multilingual_Standard) (also known as _ACNOR keyboard_ or _CSA keyboard_, see also the [French page](https://fr.wikipedia.org/wiki/QWERTY#Clavier_canadien_multilingue_standard) which contains more details) on the OS side, by enabling the _CSA_ layer. This is especially useful for operating systems that natively provide CSA, but not BÉPO, like Windows. The CSA layout was chosen because it is probably the standard layout that provides the best character set coverage. + +This keymap is based on the [tm2030](../tm2030/) keymap, whose goal was to have a [TypeMatrix™ 2030](http://typematrix.com/2030/features.php) inspired layout for the ErgoDox EZ. + +As this keyboard is intended for French people, the rest of this page will be in French. + +# Keymap BÉPO avec support en firmware pour utilisation avec la disposition CSA en software + +Cette keymap a été conçue pour être utilisée avec la [disposition BÉPO](http://bepo.fr), la disposition francophone, ergonomique et libre basée sure les principes de Dvorak. + +La particularité de cette keymap est qu'elle supporte l'utilisation du [clavier canadien multilingue standard](https://fr.wikipedia.org/wiki/QWERTY#Clavier_canadien_multilingue_standard) (aussi appelé _clavier ACNOR_ ou _clavier CSA_) du côté du système d'exploitation, en activant la couche _CSA_. Ceci s'avère particulièrement utile pour les systèmes d'exploitations qui fournissent nativement le CSA, mais pas le BÉPO, comme Windows. Le clavier CSA a été choisi comme base car c'est probablement la disposition standard qui fournit la meilleure couverture en termes de caractères disponibles. + +Cette keymap est basée sur la keymap [tm2030](../tm2030/), dont le but est de fournir une disposition inspirée du [TypeMatrix™ 2030](http://typematrix.com/2030/features.php) pour l'ErgoDox EZ. + +## Couche de base +C'est la couche par défaut, proche du TypeMatrix, avec les différences suivantes: +- La ligne du haut (les touches `F`) et la colonne de droite sont retirées, les touches correspondantes étant déplacées ailleurs. +- Les touches situés en bas à gauche sont redisposées dans cet ordre: `Ctrl`, `fn`, `Gui`, `num+Alt`, `Alt` +- Les touches `shuffle` (`Alt+Tab`) et `desktop` ne sont pas supportés +- `W` est déplacé à la place de `=` +- `=` est déplacé sous `Tab` (au lieu d'avoir un grand `Shift`) +- `%` et `Ç` sont déplacés à la place de `Home` et `End` respectivement +- Les flèches ainsi que `PgUp`/`PgDown`/`Home`/`End` sont déplacées sur les pouces + +À noter que pour `W` et `Ç`, le but a été de ne pas les déplacer trop par rapport à la disposition BÉPO _standard_, afin de pouvoir repasser facilement sur un TypeMatrix ou un clavier traditionnel. + + +``` +,--------------------------------------------------. ,--------------------------------------------------. +| $ | " | « | » | ( | ) | Del | | Del | @ | + | - | / | * | W | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| Tab | B | É | P | O | È |Backsp| |Backsp| ^ | V | D | L | J | Z | +|--------+------+------+------+------+------|ace | |ace |------+------+------+------+------+--------| +| = | A | U | I | E | , |------| |------| C | T | S | R | N | M | +|--------+------+------+------+------+------|Enter | |Enter |------+------+------+------+------+--------| +| LShift | À | Y | X | . | K | | | | ' | Q | G | H | F | RShift | +`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + |LCtrl | fn | LGui |numAlt| LAlt | |Alt Gr| % | App | Ç | RCtrl| + `----------------------------------' `----------------------------------' + ,--------------. ,-------------. + | Esc | num | | Left |Right | + ,------+-------+------| |------+------+------. + | | | PgUp | | Up | | | + |Space | Home |------| |------| End |Space | + | | | PgDn | | Down | | | + `---------------------' `--------------------' +``` + +### Changer de couche + +- Utilisez `num` pour activer/désactiver [la couche numérique](#couche-numérique) +- Maintenez `fn` pour activer temporairement [les couches numériques et Fn](#couche-fn) +- Maintenez `numAlt` pour activer temporairement la couche numérique combinée avec `Alt` (facilite l'utilisation des raccourcis tels que `Alt`+`F4`) + +### Diodes +Les diodes de l'ErgoDox EZ (côté droit) sont utilisées de la façon suivante : + +- diode de gauche (rouge) : indique l'activation de [la couche numérique](#couche-numérique) +- diode du milieu (verte) : indique l'activation du [mode CSA](#couche-csa) +- diode de droite (bleue) : indique le verrouillage majuscules + +## Couche CSA +La couche _CSA_ est la même que la couche de base, pour une utilisation avec un clavier Canadien Multilingue configuré dans le système d'exploitation. + +Pour l'activer, appuyez sur `fn`+`$`. La [diode](#diodes) verte indique que la couche CSA est activée. + +### Limitations +Seuls les caractères présents dans le clavier CSA sont parfaitement supportés. De manière générale, il s'agit des caractères suivants : + +- toute la couche de base +- tous les caractères accessibles en `Shift` +- tous les caractères de la main gauche accessibles en `AltGr` à l'exception du `≠` +- environ la moitié des caractères de la main droite accessibles en `AltGr` et la moitié des caractères accessibles en `AltGr`+`Shift` (consultez [le fichier source](keymap.c) pour voir les caractères supportés) + +En particulier, les caractères suivants sont émulés via le support Unicode (Windows seulement): + +- le tiret cadratin (tiret long) : — +- le tiret demi-cadratin (demi tiret) : – +- les points de suspension : … + +L'implémentation actuelle ne fonctionne pas dans toutes les applications, en particulier les applications MS Office. + +Il est probable que l'utilisation de la couche CSA ne fonctionne pas correctement dans certains jeux vidéos. + +Cette fonctionnalité a été conçue et testée essentiellment pour Windows (7). + +### Détails techniques +Techniquement, la couche CSA est en réalité composée de 4 couches servant à émuler la couche de base, les appuis sur `Shift` ou `Alt` et la combinaison des deux. + +Le changement de couches se fait par des macros afin d'activer ou désactiver plusieurs couches et la touche `Shift` en même temps. + +Certains caractères sont également implémentés par des macros, notamment ceux de la couche `Shift` qui n'ont pas besoin de cette touche en CSA, comme les chiffres. + +Les caractères Unicode se basent sur une implémentation spécifique et non celle fournie dans QMK — il faudrait sans doute migrer le code. Notez la façon dont ces caractères sont déclarés tels quels dans [le code source](keymap.c) (tableau `unicode_char`). + +## Couche numérique +Couche numérique proche du TM lorsqu'on active `num`, avec les différences suivantes : + +- Le clavier numérique est déplacés de 1 vers le haut et vers la droite. +- Les flèches sont décalées de 1 vers la gauche. +- Fournit l'accès aux touches `F1` à `F12`, `caps-lock` et `num-lock`. + +La couche numérique est indiquée par la [diode](#diodes) de gauche (rouge). Caps-lock est indiqué par la diode de droite (bleue). + +La touche `numAlt` de [la couche de base](#couche-de-base) permet d'activer la couche numérique et la touche `Alt` simultanément, afin de faciliter les raccourcis claviers comme `Alt`+`F4`. + +``` +,--------------------------------------------------. ,--------------------------------------------------. +| | F1 | F2 | F3 | F4 | F5 | | | | | | Tab | / | * | - | +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| | F6 | F7 | F8 | F9 | F10 | | | | | Home | 7 | 8 | 9 | + | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| | F11 | F12 | | | |------| |------| Up | End | 4 | 5 | 6 | + | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| | | | | | | | | Left | Down | Right| 1 | 2 | 3 |KpEnter | +`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | | | | | | | | 0 | 00 | . |Etr/Ctl| + `----------------------------------' `-----------------------------------' + ,-------------. ,-------------. + | | | |n.lock|c.lock| + ,------|------|------| |------+------+------. + | | | | | | | | + | | |------| |------| | | + | | | | | | | | + `--------------------' `--------------------' +``` + +## Couche Fn +Activée simultanément avec la couche numérique lorsque l'on maintient la touche `fn`. Comme sur le TM, elle fournit l'accès aux fonctionnalités suivantes : + +- `couper`, `copier` et `coller` — attention: ne pas utiliser dans l'explorateur de fichiers. +- monter/baisser/couper le volume — seulement accessible en main gauche, contrairement au TM. +- piste précédente/suivante +- calculatrice, e-mail et page d'accueil du navigateur web +- `insert`, `power`, `sleep`, `wake`, `print screen`, `scroll-lock` et `pause` +- ~CSA: (dés)activation de [la couche CSA](#couche-csa) sur `$` +- RESET: rechargement du firmware avec Teensy-Loader (pour les développeurs) + +``` +,--------------------------------------------------. ,--------------------------------------------------. +| ~CSA | | | | | |Insert| |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk| +|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| +| | | | | | |VolUp | | | | | | | | Pause | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| RESET | | | Calc | Mail |Browsr|------| |------| | | | | | | +|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| +| | App | cut | copy |paste | Mute |VolDn | | | | | | | | | +`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' + ,-------------. ,-------------. + | | | | | | + ,------|------|------| |------+------+------. + | | | Next | | | | | + | Mute | play |------| |------| | | + | | | Prev | | | | | + `--------------------' `--------------------' +``` \ No newline at end of file -- cgit v1.2.1 From 6a7ef59629dcb6cb388649002242abdab344424b Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Mon, 12 Sep 2016 13:24:22 -0400 Subject: Ongoing experiment; have a special layer for RESET --- keyboards/planck/keymaps/cbbrowne/keymap.c | 44 +++++++++++++++++++++++++++-- keyboards/planck/keymaps/cbbrowne/readme.md | 23 +++++++++++++-- 2 files changed, 61 insertions(+), 6 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 898f6f0e0a..1bfd142e90 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -69,6 +69,7 @@ enum layers { _LW, /* Lower layer, where top line has symbols !@#$%^&*() */ _RS, /* Raised layer, where top line has digits 1234567890 */ _KP, /* Key pad */ + _ADJUST, /* Special Adjust layer coming via tri-placement */ }; enum macro_id { @@ -76,9 +77,14 @@ enum macro_id { M_USERNAME, M_RANDDIGIT, M_RANDLETTER, - M_VERSION + M_VERSION, + MACRO_UPPER, + MACRO_LOWER, }; +#define M_LOWER M(MACRO_LOWER) +#define M_UPPER M(MACRO_UPPER) + /* Note that Planck has dimensions 4 rows x 12 columns */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -86,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, 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_QUOT }, - {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, M_LOWER, KC_SPC, KC_SPC, M_UPPER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ }, [_RS] = { /* RAISE */ @@ -106,7 +112,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_LCTL, M(M_RANDDIGIT), KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_KP_MINUS, KC_4, KC_5, KC_6, KC_PIPE}, {KC_LSFT, M(M_RANDLETTER), KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_KP_PLUS, KC_1, KC_2, KC_3, KC_ENTER}, {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QW), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} -} +}, + +[_ADJUST] = { /* Adjustments - gonna shift the wild tools in here */ + { M(M_LED), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + {_______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______ }, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ } +} }; /* What is fn_actions actually used for??? */ @@ -171,6 +184,31 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) unregister_code (KC_A + rval); } break; + case MACRO_UPPER: + if (record->event.pressed) + { + layer_on(_RS); + update_tri_layer(_LW, _RS, _ADJUST); + } + else + { + layer_off(_RS); + update_tri_layer(_LW, _RS, _ADJUST); + } + break; + case MACRO_LOWER: + if (record->event.pressed) + { + layer_on(_LW); + update_tri_layer(_LW, _RS, _ADJUST); + } + else + { + layer_off(_LW); + update_tri_layer(_LW, _RS, _ADJUST); + } + break; + } return MACRO_NONE; }; diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md index 51979f6300..e9e423ed91 100644 --- a/keyboards/planck/keymaps/cbbrowne/readme.md +++ b/keyboards/planck/keymaps/cbbrowne/readme.md @@ -24,7 +24,8 @@ doing sundry experimentation: - Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random - Key [1][3] aka "e" spits out the keymap version number - * Minor use of Space Cadet Shift; my SHIFT key has switched to KC_LSP0, so that when I just hit SHIFT, I get a left parens: ( which is great for Lisping. I don't have a Right Shift, so I don't get an autoclose; I think I'll live with that until a Planck successor with more lines of keys :-) + * Trying out sgoodwin's "hold Enter down to get Shift" + 2. Some code structure ideas --------------------------------------------------- @@ -57,12 +58,29 @@ doing sundry experimentation: and shift ESC off the first column so KC_LCTL and KC_LALT can be on the first column. * I needed to swap ' and ENTER + +4. Unuseful experiments +--------------------------------------------------------- + +I have tried some things out that didn't turn out particularly well. +I'll note some of these for posterity, hopefully helpful in not doing +unwise things again... + * I tried added Workman alongside Dvorak and Colemak - Boy, oh boy, these don't help!!! - I have done 30 years of learning of Emacs key mappings, and these alternative keyboards massively mess me up -4. TODO + * Space Cadet Shift; switching L_SHIFT to KC_LSP0, so that when I + just hit SHIFT, I get a left parens. In principle, this is great + for Lisping. + - Unfortunately, there are times when mouse interfaces use SHIFT + to allow selecting multiple items, and this really interferes + with that + + + +5. TODO --------------------------------------------------------- * I use tmux quite a lot; the mollat keymap seems to have some @@ -77,4 +95,3 @@ doing sundry experimentation: * The jeebak keymap seems to have some neat ideas: - Number layer which is aggressive about having numbers in several places - Touch layer seems interesting - * Trying out sgoodwin's "hold Enter down to get Shift" \ No newline at end of file -- cgit v1.2.1 From af4c25c4753b2d212dd46090f8fc6e322b1d7537 Mon Sep 17 00:00:00 2001 From: Austin Erlandson Date: Mon, 12 Sep 2016 15:20:51 -0500 Subject: My Atreus Layout --- keyboards/atreus/keymaps/erlandsona/keymap.c | 61 ++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 keyboards/atreus/keymaps/erlandsona/keymap.c diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c new file mode 100644 index 0000000000..f1555fb1df --- /dev/null +++ b/keyboards/atreus/keymaps/erlandsona/keymap.c @@ -0,0 +1,61 @@ +// this is the style you want to emulate. +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, + +#include "atreus.h" + +// 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 BASE 0 +#define NUMS 1 +#define MOUS 2 + +// Some quick aliases, just to make it look pretty +#define _______ KC_TRNS +#define XXXXXXX KC_NO + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[BASE] = KEYMAP( /* Qwerty */ + KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , + KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , + KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_RSFT , + KC_LCTL, KC_LALT, KC_LSFT, KC_LGUI, KC_BSPC, KC_ESC , KC_ENT, KC_SPC, F(NUMS), KC_QUOT, KC_SLSH, KC_RALT), + +[NUMS] = KEYMAP( /* Numbers / Arrows / Symbols */ + KC_GRV , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_LBRC, + KC_TAB , KC_1 , KC_2 , KC_3 , KC_4 , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC, + KC_DOT , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, + _______, _______, _______, _______, KC_DEL , F(MOUS), _______, _______, _______, XXXXXXX, KC_BSLS, _______), + +[MOUS] = KEYMAP( /* Mouse and Media Keys */ + KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4, + KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3, + KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_F2, + _______, _______ , _______, _______, _______, _______ , KC_SLEP, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1) +}; + + +// I prefer this layer switching strategy to the TG and MO functions. +// so that I can get out of mouse mode just by tapping/holding my base layer FN key. +const uint16_t PROGMEM fn_actions[] = { + [BASE] = ACTION_LAYER_OFF(2, 1), // switch back to layer 0 + [NUMS] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay + [MOUS] = ACTION_LAYER_ON(2, 1) // switch to layer 2 +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; -- cgit v1.2.1 From 0c3aede09e131243017dfb89638795e7cd25c969 Mon Sep 17 00:00:00 2001 From: Austin Erlandson Date: Mon, 12 Sep 2016 18:23:24 -0500 Subject: Latest making use of overloaded modifiers... --- keyboards/atreus/keymaps/erlandsona/keymap.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c index f1555fb1df..6ca8aaed92 100644 --- a/keyboards/atreus/keymaps/erlandsona/keymap.c +++ b/keyboards/atreus/keymaps/erlandsona/keymap.c @@ -18,22 +18,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( /* Qwerty */ - KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , - KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , - KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_RSFT , - KC_LCTL, KC_LALT, KC_LSFT, KC_LGUI, KC_BSPC, KC_ESC , KC_ENT, KC_SPC, F(NUMS), KC_QUOT, KC_SLSH, KC_RALT), + KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , + KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , + SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_SLSH), + KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, ALT_T(KC_ESC), CTL_T(KC_ENT), KC_SPC, F(NUMS), KC_QUOT, KC_RALT , KC_BSLS ), [NUMS] = KEYMAP( /* Numbers / Arrows / Symbols */ - KC_GRV , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_LBRC, - KC_TAB , KC_1 , KC_2 , KC_3 , KC_4 , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC, - KC_DOT , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, - _______, _______, _______, _______, KC_DEL , F(MOUS), _______, _______, _______, XXXXXXX, KC_BSLS, _______), + KC_GRV , KC_7 , KC_8 , KC_9 , KC_0 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, + KC_TAB , KC_4 , KC_5 , KC_6 , KC_DLR, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC, + _______, KC_1 , KC_2 , KC_3 , KC_DOT, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, + _______, _______, _______, _______, KC_DEL, F(MOUS), _______, _______, _______, _______, _______, _______), [MOUS] = KEYMAP( /* Mouse and Media Keys */ - KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4, - KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3, - KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_F2, - _______, _______ , _______, _______, _______, _______ , KC_SLEP, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1) + KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4, + KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3, + KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_F2, + _______, _______ , _______, _______, _______, _______, KC_SLEP, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1) }; -- cgit v1.2.1 From cf17eb0f4360fca9ad3910c9cdf0d0ef5155b026 Mon Sep 17 00:00:00 2001 From: Austin Erlandson Date: Mon, 12 Sep 2016 18:36:41 -0500 Subject: Get rid of sleep button... --- keyboards/atreus/keymaps/erlandsona/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c index 6ca8aaed92..83871219eb 100644 --- a/keyboards/atreus/keymaps/erlandsona/keymap.c +++ b/keyboards/atreus/keymaps/erlandsona/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4, KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3, KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_F2, - _______, _______ , _______, _______, _______, _______, KC_SLEP, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1) + _______, _______ , _______, _______, _______, _______, _______, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1) }; -- cgit v1.2.1 From e9a093451ea13b18b5dc60d427244efeba593da5 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Mon, 12 Sep 2016 19:54:52 -0500 Subject: Clean up atomic keymap (#9) * Added keyboard help macros * Fixing Atomic PVC keymap / adding print help --- keyboards/atomic/keymaps/pvc/Makefile | 2 +- keyboards/atomic/keymaps/pvc/config.h | 11 +- keyboards/atomic/keymaps/pvc/keymap.c | 458 ++++++++++++++++++---------------- keyboards/planck/keymaps/pvc/keymap.c | 106 ++++++-- 4 files changed, 336 insertions(+), 241 deletions(-) diff --git a/keyboards/atomic/keymaps/pvc/Makefile b/keyboards/atomic/keymaps/pvc/Makefile index 278407e6c9..ebd75e313f 100644 --- a/keyboards/atomic/keymaps/pvc/Makefile +++ b/keyboards/atomic/keymaps/pvc/Makefile @@ -1,7 +1,7 @@ BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality diff --git a/keyboards/atomic/keymaps/pvc/config.h b/keyboards/atomic/keymaps/pvc/config.h index 70353323b6..18a7253f2e 100644 --- a/keyboards/atomic/keymaps/pvc/config.h +++ b/keyboards/atomic/keymaps/pvc/config.h @@ -150,10 +150,17 @@ along with this program. If not, see . */ /* disable debug print */ -//#define NO_DEBUG +#ifndef NO_DEBUG +# define NO_DEBUG +#endif /* disable print */ -//#define NO_PRINT +// #ifndef NO_PRINT +// # define NO_PRINT +// #endif + +/* Only print user print statements */ +#define USER_PRINT /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboards/atomic/keymaps/pvc/keymap.c b/keyboards/atomic/keymaps/pvc/keymap.c index b02e89d2c7..d10bfe3bfc 100644 --- a/keyboards/atomic/keymaps/pvc/keymap.c +++ b/keyboards/atomic/keymaps/pvc/keymap.c @@ -2,48 +2,59 @@ #include "action_layer.h" #include "eeconfig.h" #include "led.h" +#include "mousekey.h" #ifdef AUDIO_ENABLE #include "audio.h" #include "song_list.h" #endif -#define LAYER_QWERTY 0 -#define LAYER_COLEMAK 1 -#define LAYER_DVORAK 2 -#define LAYER_UPPER 3 -#define LAYER_LOWER 4 -#define LAYER_FUNCTION 5 -#define LAYER_MOUSE 6 -#define LAYER_ADJUST 7 - -#define MACRO_QWERTY 0 -#define MACRO_COLEMAK 1 -#define MACRO_DVORAK 2 -#define MACRO_UPPER 3 -#define MACRO_LOWER 4 -#define MACRO_FUNCTION 5 -#define MACRO_MOUSE 6 -#define MACRO_TIMBRE_1 7 -#define MACRO_TIMBRE_2 8 -#define MACRO_TIMBRE_3 9 -#define MACRO_TIMBRE_4 10 -#define MACRO_TEMPO_U 11 -#define MACRO_TEMPO_D 12 -#define MACRO_TONE_DEFAULT 13 -#define MACRO_MUSIC_TOGGLE 14 -#define MACRO_AUDIO_TOGGLE 16 -#define MACRO_INC_VOICE 18 -#define MACRO_DEC_VOICE 19 -#define MACRO_BACKLIGHT 20 -#define MACRO_BREATH_TOGGLE 21 -#define MACRO_BREATH_SPEED_INC 23 -#define MACRO_BREATH_SPEED_DEC 24 -#define MACRO_BREATH_DEFAULT 25 +enum keyboard_layers { + LAYER_QWERTY = 0, + LAYER_UPPER, + LAYER_LOWER, + LAYER_FUNCTION, + LAYER_MOUSE, + LAYER_ADJUST, +}; +enum keyboard_macros { + MACRO_QWERTY = 0, + MACRO_UPPER, + MACRO_LOWER, + MACRO_FUNCTION, + MACRO_MOUSE, + MACRO_TIMBRE_1, + MACRO_TIMBRE_2, + MACRO_TIMBRE_3, + MACRO_TIMBRE_4, + MACRO_TEMPO_U, + MACRO_TEMPO_D, + MACRO_TONE_DEFAULT, + MACRO_MUSIC_TOGGLE, + MACRO_AUDIO_TOGGLE, + MACRO_INC_VOICE, + MACRO_DEC_VOICE, + MACRO_BACKLIGHT, + MACRO_BREATH_TOGGLE, + MACRO_BREATH_SPEED_INC, + MACRO_BREATH_SPEED_DEC, + MACRO_BREATH_DEFAULT, + MACRO_MOUSE_MOVE_UL, + MACRO_MOUSE_MOVE_UR, + MACRO_MOUSE_MOVE_DL, + MACRO_MOUSE_MOVE_DR, + MACRO_HELP_1, + MACRO_HELP_2, + MACRO_HELP_3, + MACRO_HELP_4, + MACRO_HELP_5, + MACRO_HELP_6, + MACRO_HELP_7, + MACRO_HELP_8, + MACRO_HELP_9, +}; #define M_QWRTY M(MACRO_QWERTY) -#define M_COLMK M(MACRO_COLEMAK) -#define M_DVORK M(MACRO_DVORAK) #define M_UPPER M(MACRO_UPPER) #define M_LOWER M(MACRO_LOWER) #define M_FUNCT M(MACRO_FUNCTION) @@ -60,6 +71,19 @@ #define M_BSPDU M(MACRO_BREATH_SPEED_INC) #define M_BSPDD M(MACRO_BREATH_SPEED_DEC) #define M_BDFLT M(MACRO_BREATH_DEFAULT) +#define M_MS_UL M(MACRO_MOUSE_MOVE_UL) +#define M_MS_UR M(MACRO_MOUSE_MOVE_UR) +#define M_MS_DL M(MACRO_MOUSE_MOVE_DL) +#define M_MS_DR M(MACRO_MOUSE_MOVE_DR) +#define M_HELP1 M(MACRO_HELP_1) +#define M_HELP2 M(MACRO_HELP_2) +#define M_HELP3 M(MACRO_HELP_3) +#define M_HELP4 M(MACRO_HELP_4) +#define M_HELP5 M(MACRO_HELP_5) +#define M_HELP6 M(MACRO_HELP_6) +#define M_HELP7 M(MACRO_HELP_7) +#define M_HELP8 M(MACRO_HELP_8) +#define M_HELP9 M(MACRO_HELP_9) #define VC_UP M(MACRO_INC_VOICE) @@ -77,6 +101,7 @@ #define SC_ACLS LALT(KC_F4) #define SC_CCLS LCTL(KC_F4) +#define TG_NKRO MAGIC_TOGGLE_NKRO #define OS_SHFT KC_FN0 #define _______ KC_TRNS @@ -86,169 +111,126 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* QWERTY - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [LAYER_QWERTY] = { // QWERTY - { KC_ESC, 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_BSPC }, - { 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_DEL }, - { 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_ENT, KC_PGUP }, - { 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_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, - }, - - /* COLEMAK - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [LAYER_COLEMAK] = { // COLEMAK - { KC_ESC, 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_BSPC }, - { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, - { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, +/* LAYER = LAYER_QWERTY + .--------------------------------------------------------------------------------------------------------------------------------------. + | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP . BACKSP | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | CAP LK | A | S | D | F | G | H | J | K | L | ; | ' | ENTER . ENTER | PG UP | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT . RSHIFT | UP | PG DN | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | LCTRL | LWIN | FN | LALT | UPPER | SPACE . SPACE | LOWER | OSHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | + '--------------------------------------------------------------------------------------------------------------------------------------' +*/ +[LAYER_QWERTY] = { + { KC_ESC , 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_BSPC }, + { 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_DEL }, + { 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_ENT , KC_PGUP }, + { 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_RSFT, KC_UP , KC_PGDN }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_RALT, KC_APP , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT } }, - -/* DVORAK - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | XXXXXX . BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | DEL | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | CAPS | A | O | E | U | I | D | H | T | N | S | - | XXXXXX . ENTER | PG UP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [LAYER_DVORAK] = { // DVORAK - { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC }, - { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL }, - { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP }, - { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, - }, - -/* UPPER - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | PRINT | BR TOG | BR SP+ | BR SP- | BR RST | XXXXXX | XXXXXX | NUM LK | / | * | | NUM LK | SCR LK | XXXXXX . PAUSE | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | - | | | | INS | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | | XXXXXX . | HOME | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | | | | | | 0 | | RALT | . | ENTER | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [LAYER_UPPER] = { // UPPER - { KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS }, - { _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS }, - { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME }, - { _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END }, - { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }, - }, - -/* LOWER - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | | ^ | * | + | - | / | \ | _ | ' | " | ` | | XXXXXX . | HOME | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | | | & | ! | ~ | ; | : | = | < | > | ? | XXXXXX . | | END | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | | | | | | | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [LAYER_LOWER] = { // LOWER - { _______, 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_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS }, - { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME }, - { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, - }, - -/* FUNCTION - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | NUM LK | | | | | | | | | | | | | XXXXXX . | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | SCR LK | F13 | F14 | F15 | F16 | | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | CAP LK | F17 | F18 | F19 | F20 | | | | | | | | XXXXXX . | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | F21 | F22 | F23 | F24 | | | | | | | XXXXXX . | VOL UP | MUTE | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | | | | | | PLAY/PAUSE | | | | | | PTRACK | VOL DN | NTRACK | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [LAYER_FUNCTION] = { // FUNCTION - { KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, - { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { KC_CAPS, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXX }, - { _______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_VOLU, KC_MUTE }, - { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT }, - }, - -#ifdef MOUSEKEY_ENABLE - - [LAYER_MOUSE] = { // MOUSE - { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U }, - { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_MS_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, - }, - -#endif - - [LAYER_ADJUST] = { // ADJUST - { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MU_TOG, AU_TOG, ________________ }, - { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, - { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, MUV_IN, _______ }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, MUV_DE, _______ }, - }, - - -/* - [LAYER_EMPTY] = { // LAYER - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, _______ }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, - }, +/* LAYER = LAYER_UPPER + .--------------------------------------------------------------------------------------------------------------------------------------. + | PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | KP / | KP * | KP - | XXXXXX | XXXXXX | ______ . ______ | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | PAUSE | F1 | F2 | F3 | F4 | NUM LK | KP / | KP 7 | KP 8 | KP 9 | KP - | ______ | ______ | ______ | INS | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | F5 | F6 | F7 | F8 | CAP LK | KP * | KP 4 | KP 5 | KP 6 | KP + | ______ | ______ . ______ | HOME | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | F9 | F10 | F11 | F12 | SCR LK | KP 0 | KP 1 | KP 2 | KP 3 | KP ENT | ______ . ______ | ______ | END | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP ENT | ______ | ______ | ______ | ______ | + '--------------------------------------------------------------------------------------------------------------------------------------' */ - +[LAYER_UPPER] = { + { KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, XXXXXXX, _______, _______ }, + { KC_PAUS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS }, + { _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, KC_HOME }, + { _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, _______, KC_END }, + { _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ } +}, +/* LAYER = LAYER_LOWER + .--------------------------------------------------------------------------------------------------------------------------------------. + | PRINT | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | ______ . ______ | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | $ | { | [ | ( | % | # | ) | ] | } | @ | ______ | ______ | ______ | INS | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ^ | * | + | - | / | \ | _ | ' | " | ` | ______ | ______ . ______ | HOME | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | ______ . ______ | ______ | END | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | ______ | ______ | ______ | ______ | + '--------------------------------------------------------------------------------------------------------------------------------------' +*/ +[LAYER_LOWER] = { + { KC_PSCR, 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_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, KC_INS }, + { _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, KC_HOME }, + { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, _______, _______, _______, KC_END }, + { _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, _______, _______, _______, _______ } +}, +/* LAYER = LAYER_FUNCTION + .--------------------------------------------------------------------------------------------------------------------------------------. + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | F13 | F14 | F15 | F16 | NUM LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | F17 | F18 | F19 | F20 | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | F21 | F22 | F23 | F24 | CAP LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ______ . ______ | VOL UP | MUTE | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | FN | ______ | ______ | PLAY . PLAY | ______ | ______ | ______ | ______ | ______ | PREV | VOL DN | NEXT | + '--------------------------------------------------------------------------------------------------------------------------------------' +*/ +[LAYER_FUNCTION] = { + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { _______, KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_VOLU, KC_MUTE }, + { _______, _______, M_FUNCT, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT } +}, +/* LAYER = LAYER_MOUSE + .--------------------------------------------------------------------------------------------------------------------------------------. + | ESC | MS AC0 | MS AC1 | MS AC2 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS UL | MS U | MS UR | XXXXXX | XXXXXX | XXXXXX | MS WHL | MS WHR | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | MS BT5 | MS BT4 | MS BT3 | MS BT2 | XXXXXX | XXXXXX | MS L | XXXXXX | MS R | XXXXXX | XXXXXX | XXXXXX . XXXXXX | MS WHU | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS DL | MS D | MS DR | XXXXXX | ______ . ______ | MS U | MS WHD | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | ______ | ______ | ______ | ______ | ______ | MS BT1 . MS BT1 | ______ | ______ | ______ | ______ | ______ | MS L | MS D | MS R | + '--------------------------------------------------------------------------------------------------------------------------------------' +*/ +[LAYER_MOUSE] = { + { KC_ESC , KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_UL, KC_MS_U, M_MS_UR, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_R }, + { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, XXXXXXX, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U }, + { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_DL, KC_MS_D, M_MS_DR, XXXXXXX, _______, _______, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R } +}, +/* LAYER = LAYER_ADJUST + .--------------------------------------------------------------------------------------------------------------------------------------. + | XXXXXX | HELP 1 | HELP 2 | HELP 3 | HELP 4 | HELP 5 | HELP 6 | HELP 7 | HELP 8 | HELP 9 | XXXXXX | MUSIC | AUDIO | XXXXXX . XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | BRTOG | BRSPD+ | BRSPD- | BRDFLT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | VOICE+ | XXXXXX | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX . XXXXXX | LOWER | XXXXXX | XXXXXX | XXXXXX | XXXXXX | TEMPO- | VOICE- | TEMPO+ | + '--------------------------------------------------------------------------------------------------------------------------------------' +*/ +[LAYER_ADJUST] = { + { XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, M_HELP5, M_HELP6, M_HELP7, M_HELP8, M_HELP9, XXXXXXX, MU_TOG , AU_TOG , XXXXXXX, XXXXXXX }, + { XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP } +}, }; #ifdef AUDIO_ENABLE @@ -290,61 +272,101 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { - case MACRO_BREATH_TOGGLE: + case MACRO_HELP_1: if (record->event.pressed) { - breathing_toggle(); + uprintf("1"); } break; - case MACRO_BREATH_SPEED_INC: + case MACRO_HELP_2: if (record->event.pressed) { - breathing_speed_inc(1); + uprintf("2"); } break; - case MACRO_BREATH_SPEED_DEC: + case MACRO_HELP_3: if (record->event.pressed) { - breathing_speed_dec(1); + uprintf("3"); } break; - case MACRO_BREATH_DEFAULT: + case MACRO_HELP_4: if (record->event.pressed) { - breathing_defaults(); + uprintf("4"); } break; - case MACRO_QWERTY: + case MACRO_HELP_5: if (record->event.pressed) { - persistant_default_layer_set(1UL<event.pressed) { - persistant_default_layer_set(1UL<event.pressed) { - persistant_default_layer_set(1UL<event.pressed) + { + uprintf("8"); + } + break; + + case MACRO_HELP_9: + if (record->event.pressed) + { + uprintf("9"); + } + break; + + case MACRO_BREATH_TOGGLE: + if (record->event.pressed) + { + breathing_toggle(); + } + break; + + case MACRO_BREATH_SPEED_INC: + if (record->event.pressed) + { + breathing_speed_inc(1); + } + break; + + case MACRO_BREATH_SPEED_DEC: + if (record->event.pressed) + { + breathing_speed_dec(1); + } + break; + + case MACRO_BREATH_DEFAULT: + if (record->event.pressed) + { + breathing_defaults(); + } + break; + + case MACRO_QWERTY: + if (record->event.pressed) + { + persistant_default_layer_set(1UL<event.pressed) + { + uprintf("1"); + } + break; + + case MACRO_HELP_2: + if (record->event.pressed) + { + uprintf("2"); + } + break; + + case MACRO_HELP_3: + if (record->event.pressed) + { + uprintf("3"); + } + break; + + case MACRO_HELP_4: + if (record->event.pressed) + { + uprintf("4"); + } + break; + + case MACRO_HELP_5: + if (record->event.pressed) + { + uprintf("5"); + } + break; + + case MACRO_HELP_6: + if (record->event.pressed) + { + uprintf("6"); + } + break; + + case MACRO_HELP_7: + if (record->event.pressed) + { + uprintf("7"); + } + break; + + case MACRO_HELP_8: + if (record->event.pressed) + { + uprintf("8"); + } + break; + + case MACRO_HELP_9: + if (record->event.pressed) + { + uprintf("9"); + } + break; + case MACRO_BREATH_TOGGLE: if (record->event.pressed) { -- cgit v1.2.1 From cb1ac2a3edf637a3e2ecb53f0627212d1f5abb08 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Mon, 12 Sep 2016 20:20:31 -0500 Subject: Fixed NO_PRINT / USER_PRINT conflict warning. --- keyboards/atomic/keymaps/pvc/Makefile | 2 +- tmk_core/common/command.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/keyboards/atomic/keymaps/pvc/Makefile b/keyboards/atomic/keymaps/pvc/Makefile index ebd75e313f..c7c04485fc 100644 --- a/keyboards/atomic/keymaps/pvc/Makefile +++ b/keyboards/atomic/keymaps/pvc/Makefile @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index 54d6117fd1..fc5aad5c1d 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -261,7 +261,10 @@ static void print_status(void) #ifdef BOOTMAGIC_ENABLE static void print_eeconfig(void) { -#ifndef NO_PRINT + +// Print these variables if NO_PRINT or USER_PRINT are not defined. +#if !defined(NO_PRINT) && !defined(USER_PRINT) + print("default_layer: "); print_dec(eeconfig_read_default_layer()); print("\n"); debug_config_t dc; @@ -571,7 +574,8 @@ static uint8_t mousekey_param = 0; static void mousekey_param_print(void) { -#ifndef NO_PRINT +// Print these variables if NO_PRINT or USER_PRINT are not defined. +#if !defined(NO_PRINT) && !defined(USER_PRINT) print("\n\t- Values -\n"); print("1: delay(*10ms): "); pdec(mk_delay); print("\n"); print("2: interval(ms): "); pdec(mk_interval); print("\n"); -- cgit v1.2.1 From 6098704145c95f7854e0696e6137332e8e12faf8 Mon Sep 17 00:00:00 2001 From: Austin Erlandson Date: Tue, 13 Sep 2016 09:54:18 -0500 Subject: Small update --- keyboards/atreus/keymaps/erlandsona/keymap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c index 83871219eb..9e11ac048e 100644 --- a/keyboards/atreus/keymaps/erlandsona/keymap.c +++ b/keyboards/atreus/keymaps/erlandsona/keymap.c @@ -18,10 +18,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( /* Qwerty */ - KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , - KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , - SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_SLSH), - KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, ALT_T(KC_ESC), CTL_T(KC_ENT), KC_SPC, F(NUMS), KC_QUOT, KC_RALT , KC_BSLS ), + KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , + KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , + SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_QUOT), + KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, ALT_T(KC_ESC), CTL_T(KC_ENT), KC_SPC, F(NUMS), KC_RALT, KC_SLSH, KC_BSLS ), [NUMS] = KEYMAP( /* Numbers / Arrows / Symbols */ KC_GRV , KC_7 , KC_8 , KC_9 , KC_0 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MOUS] = KEYMAP( /* Mouse and Media Keys */ KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4, KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3, - KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_F2, + KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_R, KC_WH_U, KC_WH_D, KC_WH_L, KC_F2, _______, _______ , _______, _______, _______, _______, _______, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1) }; -- cgit v1.2.1 From 3668b295200c53e7131551bc906264ecc54e6b04 Mon Sep 17 00:00:00 2001 From: Austin Erlandson Date: Tue, 13 Sep 2016 11:16:53 -0500 Subject: Shorten TAPPING_TERM for better responsiveness of overloaded keys... --- keyboards/atreus/config.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h index 51162cde3a..a59eee18eb 100644 --- a/keyboards/atreus/config.h +++ b/keyboards/atreus/config.h @@ -49,6 +49,9 @@ along with this program. If not, see . # define UNUSED_PINS #endif +/* Make Overloaded Keys switch faster */ +#define TAPPING_TERM 175 + /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -- cgit v1.2.1 From 344929e0675f9857503b0dd2cd307984a57d61aa Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Tue, 13 Sep 2016 15:48:50 -0400 Subject: Give layers longer names --- keyboards/planck/keymaps/cbbrowne/keymap.c | 40 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 1bfd142e90..85f8e34722 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -65,10 +65,10 @@ */ enum layers { - _QW = 0, /* Qwerty mapping */ - _LW, /* Lower layer, where top line has symbols !@#$%^&*() */ - _RS, /* Raised layer, where top line has digits 1234567890 */ - _KP, /* Key pad */ + _QWERTY = 0, /* Qwerty mapping */ + _LOWER, /* Lower layer, where top line has symbols !@#$%^&*() */ + _RAISE, /* Raised layer, where top line has digits 1234567890 */ + KEYPAD, /* Key pad */ _ADJUST, /* Special Adjust layer coming via tri-placement */ }; @@ -88,30 +88,30 @@ enum macro_id { /* Note that Planck has dimensions 4 rows x 12 columns */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_QW] = { /* Qwerty */ +[_QWERTY] = { /* Qwerty */ {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, 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_QUOT }, {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, M_LOWER, KC_SPC, KC_SPC, M_UPPER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ }, -[_RS] = { /* RAISE */ +[_RAISE] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QWERTY), DF(KEYPAD), DF(KEYPAD), RESET, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -[_LW] = { /* LOWER */ +[_LOWER] = { /* LOWER */ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, _______}, - {_______, DF(_KP), _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QWERTY), DF(KEYPAD), DF(KEYPAD), RESET, _______}, + {_______, DF(KEYPAD), _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -[_KP] = { /* Key Pad */ +[KEYPAD] = { /* Key Pad */ {KC_ESC, M(M_USERNAME), M(M_VERSION), KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, {KC_LCTL, M(M_RANDDIGIT), KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_KP_MINUS, KC_4, KC_5, KC_6, KC_PIPE}, {KC_LSFT, M(M_RANDLETTER), KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_KP_PLUS, KC_1, KC_2, KC_3, KC_ENTER}, - {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QW), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} + {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QWERTY), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} }, [_ADJUST] = { /* Adjustments - gonna shift the wild tools in here */ @@ -187,25 +187,25 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case MACRO_UPPER: if (record->event.pressed) { - layer_on(_RS); - update_tri_layer(_LW, _RS, _ADJUST); + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_RS); - update_tri_layer(_LW, _RS, _ADJUST); + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; case MACRO_LOWER: if (record->event.pressed) { - layer_on(_LW); - update_tri_layer(_LW, _RS, _ADJUST); + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_LW); - update_tri_layer(_LW, _RS, _ADJUST); + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; -- cgit v1.2.1 From fdeaf1d9f8c87a0266066799fd14b808f6debe29 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Tue, 13 Sep 2016 15:49:46 -0400 Subject: Give layers longer names --- keyboards/planck/keymaps/cbbrowne/keymap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 85f8e34722..8051721cd3 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -68,7 +68,7 @@ enum layers { _QWERTY = 0, /* Qwerty mapping */ _LOWER, /* Lower layer, where top line has symbols !@#$%^&*() */ _RAISE, /* Raised layer, where top line has digits 1234567890 */ - KEYPAD, /* Key pad */ + _KEYPAD, /* Key pad */ _ADJUST, /* Special Adjust layer coming via tri-placement */ }; @@ -98,16 +98,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QWERTY), DF(KEYPAD), DF(KEYPAD), RESET, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QWERTY), DF(_KEYPAD), DF(_KEYPAD), RESET, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_LOWER] = { /* LOWER */ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QWERTY), DF(KEYPAD), DF(KEYPAD), RESET, _______}, - {_______, DF(KEYPAD), _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QWERTY), DF(_KEYPAD), DF(_KEYPAD), RESET, _______}, + {_______, DF(_KEYPAD), _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, -[KEYPAD] = { /* Key Pad */ +[_KEYPAD] = { /* Key Pad */ {KC_ESC, M(M_USERNAME), M(M_VERSION), KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, {KC_LCTL, M(M_RANDDIGIT), KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_KP_MINUS, KC_4, KC_5, KC_6, KC_PIPE}, {KC_LSFT, M(M_RANDLETTER), KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_KP_PLUS, KC_1, KC_2, KC_3, KC_ENTER}, -- cgit v1.2.1 From 5be2795ca1b8c3e555fb7fb3a2d7fca69d2db9b4 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Tue, 13 Sep 2016 16:17:51 -0400 Subject: C macros for my favorite complex keystrokes --- keyboards/planck/keymaps/cbbrowne/keymap.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 8051721cd3..fafc47e1d4 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -84,6 +84,13 @@ enum macro_id { #define M_LOWER M(MACRO_LOWER) #define M_UPPER M(MACRO_UPPER) +#define ROT_LED M(M_LED) /* Rotate LED */ +#define QWERTY DF(_QWERTY) /* Switch to QWERTY layout */ +#define KEYPAD DF(_KEYPAD) /* Switch to keypad */ +#define USERNAME M(M_USERNAME) /* shortcut for username */ +#define RANDDIG M(M_RANDDIGIT) +#define RANDALP M(M_RANDLETTER) + /* Note that Planck has dimensions 4 rows x 12 columns */ @@ -92,32 +99,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, 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_QUOT }, - {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, M_LOWER, KC_SPC, KC_SPC, M_UPPER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_TAB, ROT_LED, KC_LALT, KC_LGUI, M_LOWER, KC_SPC, KC_SPC, M_UPPER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ }, [_RAISE] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QWERTY), DF(_KEYPAD), DF(_KEYPAD), RESET, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, RESET, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_LOWER] = { /* LOWER */ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QWERTY), DF(_KEYPAD), DF(_KEYPAD), RESET, _______}, - {_______, DF(_KEYPAD), _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, RESET, _______}, + {_______, KEYPAD, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_KEYPAD] = { /* Key Pad */ - {KC_ESC, M(M_USERNAME), M(M_VERSION), KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, - {KC_LCTL, M(M_RANDDIGIT), KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_KP_MINUS, KC_4, KC_5, KC_6, KC_PIPE}, - {KC_LSFT, M(M_RANDLETTER), KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_KP_PLUS, KC_1, KC_2, KC_3, KC_ENTER}, - {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QWERTY), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} + {KC_ESC, USERNAME, M(M_VERSION), KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, + {KC_LCTL, RANDDIG, KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_KP_MINUS, KC_4, KC_5, KC_6, KC_PIPE}, + {KC_LSFT, RANDALP, KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_KP_PLUS, KC_1, KC_2, KC_3, KC_ENTER}, + {BL_STEP, ROT_LED, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, QWERTY, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} }, [_ADJUST] = { /* Adjustments - gonna shift the wild tools in here */ - { M(M_LED), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - {_______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______ }, + { ROT_LED, USERNAME, M(M_VERSION), _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + {_______, RANDDIG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + {_______, RANDALP, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______ }, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ } } }; -- cgit v1.2.1 From 5d643bb7ee8375a354693f19a6e9eae44f825532 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Tue, 13 Sep 2016 16:29:01 -0400 Subject: Got Right SHIFT + Right CTRL --- keyboards/planck/keymaps/cbbrowne/keymap.c | 6 ++++-- keyboards/planck/keymaps/cbbrowne/readme.md | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index fafc47e1d4..d6f8a6ed48 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -90,6 +90,8 @@ enum macro_id { #define USERNAME M(M_USERNAME) /* shortcut for username */ #define RANDDIG M(M_RANDDIGIT) #define RANDALP M(M_RANDLETTER) +#define CTLENTER MT(MOD_RCTL, KC_ENT) +#define SHIFTQUOTE MT(MOD_RSFT, KC_QUOT) /* Note that Planck has dimensions 4 rows x 12 columns */ @@ -97,8 +99,8 @@ enum macro_id { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = { /* Qwerty */ {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, 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_QUOT }, + {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTLENTER}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SHIFTQUOTE }, {KC_TAB, ROT_LED, KC_LALT, KC_LGUI, M_LOWER, KC_SPC, KC_SPC, M_UPPER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ }, diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md index e9e423ed91..272e042a0d 100644 --- a/keyboards/planck/keymaps/cbbrowne/readme.md +++ b/keyboards/planck/keymaps/cbbrowne/readme.md @@ -25,7 +25,12 @@ doing sundry experimentation: - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random - Key [1][3] aka "e" spits out the keymap version number * Trying out sgoodwin's "hold Enter down to get Shift" - + - Liking this Quite Well Enough... + - Applied this to both Shift and Quote + * I have added an alternate ADJUST layer that is activated via update_tri_layer() + - e.g. - LOWER+RAISE simultaneously + - This seems entirely more useful for handling my "special keys" + like the random numbers, user name, and such, than the keypad layer 2. Some code structure ideas --------------------------------------------------- -- cgit v1.2.1 From 9c574b493c3d098d2c4f2475dfc1564a182acce0 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 13 Sep 2016 22:05:10 -0500 Subject: Changed Docs, Moved RetroRefit to Handwired --- keyboards/arrow_pad/readme.md | 113 ++++++++++++++++++- keyboards/handwired/retro_refit/Makefile | 3 + keyboards/handwired/retro_refit/config.h | 123 +++++++++++++++++++++ .../handwired/retro_refit/keymaps/default/keymap.c | 33 ++++++ keyboards/handwired/retro_refit/readme.md | 60 ++++++++++ keyboards/handwired/retro_refit/retro_refit.c | 47 ++++++++ keyboards/handwired/retro_refit/retro_refit.h | 38 +++++++ keyboards/handwired/retro_refit/rules.mk | 68 ++++++++++++ keyboards/retro_refit/Makefile | 3 - keyboards/retro_refit/config.h | 123 --------------------- keyboards/retro_refit/keymaps/default/keymap.c | 33 ------ keyboards/retro_refit/readme.md | 26 ----- keyboards/retro_refit/retro_refit.c | 47 -------- keyboards/retro_refit/retro_refit.h | 38 ------- keyboards/retro_refit/rules.mk | 68 ------------ keyboards/vision_division/readme.md | 6 + 16 files changed, 488 insertions(+), 341 deletions(-) create mode 100644 keyboards/handwired/retro_refit/Makefile create mode 100644 keyboards/handwired/retro_refit/config.h create mode 100644 keyboards/handwired/retro_refit/keymaps/default/keymap.c create mode 100644 keyboards/handwired/retro_refit/readme.md create mode 100644 keyboards/handwired/retro_refit/retro_refit.c create mode 100644 keyboards/handwired/retro_refit/retro_refit.h create mode 100644 keyboards/handwired/retro_refit/rules.mk delete mode 100644 keyboards/retro_refit/Makefile delete mode 100644 keyboards/retro_refit/config.h delete mode 100644 keyboards/retro_refit/keymaps/default/keymap.c delete mode 100644 keyboards/retro_refit/readme.md delete mode 100644 keyboards/retro_refit/retro_refit.c delete mode 100644 keyboards/retro_refit/retro_refit.h delete mode 100644 keyboards/retro_refit/rules.mk diff --git a/keyboards/arrow_pad/readme.md b/keyboards/arrow_pad/readme.md index 2e9a64f2ef..d0d172272e 100644 --- a/keyboards/arrow_pad/readme.md +++ b/keyboards/arrow_pad/readme.md @@ -1,13 +1,120 @@ arrow_pad keyboard firmware ====================== +## Keyboard Info + +The ArrowPad is a wired conversion that can be made to any stand-alone keypad. It uses two main layers - a standard numpad, and a more advanced arrow cluster navigator. + +The first 24-key ArrowPad was handwired, but the PCB was wired as listed below. + +``` + pin + (Silkscreen Name if different) - + + +Note: +U2 pin 2 is the Num Lock LED and is active low. + +U2 pin 1 +Clear (Num Lock) - 1 +Enter - 2 +Esc (ESC) - 2 + + +U2 pin 3 +- - 1 + +U2 pin 4 +7 - 2 +8 - 2 +9 - 2 + +U2 pin 5 +* - 2 +Delete (BACK SPACE) - 2 + +U2 pin 6 +1 - 2 +0 - 2 +. - 2 +, - 2 + +U2 pin 7 +4 - 2 +5 - 2 +6 - 2 + +U2 pin 8 +Tab - 2 += (/) - 2 + +U2 pin 13 +Delete (BACK SPACE) - 1 +9 - 1 +6 - 1 +3 - 1 +. - 1 + +U2 pin 14 +Tab - 1 +8 - 1 +5 - 1 +2 - 1 +0 - 1 + +U2 pin 15 +Esc (ESC) - 1 += (/) - 1 +/ (*) - 1 +7 - 1 +4 - 1 +1 - 1 ++ - 1 + +U2 pin 16 +Enter - 1 +* (<--) - 1 +, - 1 + +U2 pin 17 +Fn (#NAME?) - 1 +- - 2 +Clear (Num Lock) - 2 + +U2 pin 18 +Fn (#NAME?) - 2 +* (<--) - 2 ++ - 2 +3 - 2 +2 - 2 +``` + +More info can be found on [GeekHack](https://geekhack.org/index.php?topic=73632.msg1802497#msg1802497) + +The second ArrowPad was a conversion from a 21-key Genovation keypad. It used a 2 row x 11 column matrix. + +``` +#define KEYMAP( \ + KM_ESC, KM_TAB, KM_BSL, KM_ARR, \ + KM_NUM, KM_FSL, KM_AST, KM_MIN, \ + KM___7, KM___8, KM___9, ___PLS, \ + KM___4, KM___5, KM___6, KM_PLS, \ + KM___1, KM___2, KM___3, ___ENT, \ + KM___0, _____0, KM_DOT, KM_ENT \ +) { \ + { KM_ESC, KM_TAB, KM_BSL, KM_ARR, KM___7, KM___8, KM___9, KM_PLS, KM___1, KM___2, KM___3, }, \ + { KM_NUM, KM_FSL, KM_AST, KM_MIN, KM___4, KM___5, KM___6, KM_ENT, KC_NO, KM___0, KM_DOT, }, \ +} +``` + + ## Quantum MK Firmware For the full Quantum feature list, see [the parent readme.md](/readme.md). ## Building -Download or clone the whole firmware and navigate to the keyboards/arrow_pad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. +Download or clone the whole firmware and navigate to the keyboards/arrow_pad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. Depending on which keymap you would like to use, you will have to compile slightly differently. @@ -20,7 +127,7 @@ Several version of keymap are available in advance but you are recommended to de To build the firmware binary hex file with a keymap just do `make` with a keymap like this: ``` -$ make [default|jack|] +$ make [default|pad_21|pad_24|] ``` -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. \ No newline at end of file +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/handwired/retro_refit/Makefile b/keyboards/handwired/retro_refit/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/handwired/retro_refit/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/retro_refit/config.h b/keyboards/handwired/retro_refit/config.h new file mode 100644 index 0000000000..f2194e550c --- /dev/null +++ b/keyboards/handwired/retro_refit/config.h @@ -0,0 +1,123 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#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 0x0001 +#define MANUFACTURER Nobody +#define PRODUCT retro_refit +#define DESCRIPTION Retro Refit + +/* key matrix size */ +#define MATRIX_ROWS 11 +#define MATRIX_COLS 8 + +// See note in retro_refit.h for an explanation of how this matrix is wired up +#define MATRIX_ROW_PINS { D4, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, D2, D3, C7, D5 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 0 + +/* 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 + + +/* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */ +#define FORCE_NKRO + +/* + * Magic key options + * These options allow the magic key functionality to be changed. This is useful + * if your keyboard/keypad is missing keys and you want magic key support. + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* remap magic keys */ +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +#define MAGIC_KEY_LOCK BSLS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * 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/handwired/retro_refit/keymaps/default/keymap.c b/keyboards/handwired/retro_refit/keymaps/default/keymap.c new file mode 100644 index 0000000000..405402d5e3 --- /dev/null +++ b/keyboards/handwired/retro_refit/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "retro_refit.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = + KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, NLCK, SLCK, PSCR, PAUS, \ + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, HOME, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, PGUP, \ + BSLS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, ENT, PGDN, \ + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, UP, END, \ + LCTL, LGUI, LALT, SPC, INS, DEL, LEFT, DOWN, RGHT), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/handwired/retro_refit/readme.md b/keyboards/handwired/retro_refit/readme.md new file mode 100644 index 0000000000..9f10edf9fc --- /dev/null +++ b/keyboards/handwired/retro_refit/readme.md @@ -0,0 +1,60 @@ +retro_refit keyboard firmware +====================== + +## Keyboard Info + +The retro refit keyboard used a Teensy to replace the original controller on a 386 "laptop". + +http://imgur.com/a/08Fyj + +This keyboard uses a KEYMAP macro that is a great example of using a non-standard row-column matrix. The keyboard in question had 11 rows and 8 columns, but the rows were not all horizontal, and the columns were not all vertical. For example, row 2 contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and"Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", "Left Alt", "Up Arrow", and "Down Arrow". + +The macro makes programming the keys easier and in a more straight-forward manner because it realigns the keys into a 6x15 sensible keyboard layout instead of the obtuse 11x8 matrix. Each Kxy corrisponds to a key in row x column y. + +``` +#define KEYMAP( \ + K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ + K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ + K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ + K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ + K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ + K10, K06, K25, K07, K86, K85, K95, K90, K93 \ +) { \ +{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, }, \ +{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, }, \ +{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, }, \ +{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, }, \ +{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, }, \ +{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, }, \ +{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, }, \ +{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77, }, \ +{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K85, KC_##K86, KC_##K87, }, \ +{ KC_##K90, KC_##K91, KC_NO, KC_##K93, KC_##K94, KC_##K95, KC_NO, KC_##K97, }, \ +{ KC_##KA0, KC_##KA1, KC_##KA2, KC_##KA3, KC_##KA4, KC_##KA5, KC_##KA6, KC_##KA7, } \ +} +``` + + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/retro_refit folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default +To build with the default keymap, simply run `make default`. + +### Other Keymaps +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + +``` +$ make [default|jack|] +``` + +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. \ No newline at end of file diff --git a/keyboards/handwired/retro_refit/retro_refit.c b/keyboards/handwired/retro_refit/retro_refit.c new file mode 100644 index 0000000000..3d610eba34 --- /dev/null +++ b/keyboards/handwired/retro_refit/retro_refit.c @@ -0,0 +1,47 @@ +#include "retro_refit.h" +#include "led.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + // Disable status LED on KB, enable status LED on Teensy (KB_STATUS = !TEENSY_STATUS) + DDRD |= (1<<6); + PORTD |= (1<<6); + + matrix_init_user(); +}; + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + if (usb_led & (1< - -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 . -*/ - -#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 0x0001 -#define MANUFACTURER Nobody -#define PRODUCT retro_refit -#define DESCRIPTION Retro Refit - -/* key matrix size */ -#define MATRIX_ROWS 11 -#define MATRIX_COLS 8 - -// See note in retro_refit.h for an explanation of how this matrix is wired up -#define MATRIX_ROW_PINS { D4, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, D2, D3, C7, D5 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 0 - -/* 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 - - -/* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */ -#define FORCE_NKRO - -/* - * Magic key options - * These options allow the magic key functionality to be changed. This is useful - * if your keyboard/keypad is missing keys and you want magic key support. - */ - -/* key combination for magic key command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* remap magic keys */ -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -#define MAGIC_KEY_LOCK BSLS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * 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/retro_refit/keymaps/default/keymap.c b/keyboards/retro_refit/keymaps/default/keymap.c deleted file mode 100644 index 405402d5e3..0000000000 --- a/keyboards/retro_refit/keymaps/default/keymap.c +++ /dev/null @@ -1,33 +0,0 @@ -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, -// this is the style you want to emulate. - -#include "retro_refit.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = - KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, NLCK, SLCK, PSCR, PAUS, \ - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, HOME, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, PGUP, \ - BSLS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, ENT, PGDN, \ - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, UP, END, \ - LCTL, LGUI, LALT, SPC, INS, DEL, LEFT, DOWN, RGHT), -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboards/retro_refit/readme.md b/keyboards/retro_refit/readme.md deleted file mode 100644 index 77df861cef..0000000000 --- a/keyboards/retro_refit/readme.md +++ /dev/null @@ -1,26 +0,0 @@ -retro_refit keyboard firmware -====================== - -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme.md](/readme.md). - -## Building - -Download or clone the whole firmware and navigate to the keyboards/retro_refit folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. - -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default -To build with the default keymap, simply run `make default`. - -### Other Keymaps -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. - -To build the firmware binary hex file with a keymap just do `make` with a keymap like this: - -``` -$ make [default|jack|] -``` - -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. \ No newline at end of file diff --git a/keyboards/retro_refit/retro_refit.c b/keyboards/retro_refit/retro_refit.c deleted file mode 100644 index 3d610eba34..0000000000 --- a/keyboards/retro_refit/retro_refit.c +++ /dev/null @@ -1,47 +0,0 @@ -#include "retro_refit.h" -#include "led.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - // Disable status LED on KB, enable status LED on Teensy (KB_STATUS = !TEENSY_STATUS) - DDRD |= (1<<6); - PORTD |= (1<<6); - - matrix_init_user(); -}; - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - if (usb_led & (1< Date: Wed, 14 Sep 2016 09:39:16 -0500 Subject: Copy config overrides to my keymap directory... --- keyboards/atreus/config.h | 3 - keyboards/atreus/keymaps/erlandsona/config.h | 101 +++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 keyboards/atreus/keymaps/erlandsona/config.h diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h index a59eee18eb..51162cde3a 100644 --- a/keyboards/atreus/config.h +++ b/keyboards/atreus/config.h @@ -49,9 +49,6 @@ along with this program. If not, see . # define UNUSED_PINS #endif -/* Make Overloaded Keys switch faster */ -#define TAPPING_TERM 175 - /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/atreus/keymaps/erlandsona/config.h b/keyboards/atreus/keymaps/erlandsona/config.h new file mode 100644 index 0000000000..6f0d258f50 --- /dev/null +++ b/keyboards/atreus/keymaps/erlandsona/config.h @@ -0,0 +1,101 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + + + + +/* Make Overloaded Keys switch faster */ +#define TAPPING_TERM 175 + + + + +/* USB Device descriptor parameter */ + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Technomancy +#define PRODUCT Atreus +#define DESCRIPTION q.m.k. keyboard firmware for Atreus + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +// Change this to how you wired your keyboard +// COLS: Left to right, ROWS: Top to bottom +#if defined(ATREUS_ASTAR) +# define MATRIX_ROW_PINS { D0, D1, D3, D2 } +#if defined(PCBDOWN) +# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } +#else +# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } +#endif +# define UNUSED_PINS +#elif defined(ATREUS_TEENSY2) +# define MATRIX_ROW_PINS { D0, D1, D2, D3 } +# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 } +# define UNUSED_PINS +#endif + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +//#define BACKLIGHT_LEVELS 3 + +/* 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)) \ +) + +/* + * 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 -- cgit v1.2.1 From 8a01bbc42286a60bcbca2fe9e09298fb9116811a Mon Sep 17 00:00:00 2001 From: "Lars R. Noldan" Date: Wed, 14 Sep 2016 11:54:13 -0500 Subject: Adding Space Cadet, And Correcting Ascii Keymap --- .../ergodox/keymaps/absenth/absenth_highres.png | Bin 1429453 -> 1463041 bytes keyboards/ergodox/keymaps/absenth/keymap.c | 12 ++++++------ keyboards/ergodox/keymaps/absenth/readme.md | 3 +++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/keyboards/ergodox/keymaps/absenth/absenth_highres.png b/keyboards/ergodox/keymaps/absenth/absenth_highres.png index a0596b2812..c07aa8803f 100644 Binary files a/keyboards/ergodox/keymaps/absenth/absenth_highres.png and b/keyboards/ergodox/keymaps/absenth/absenth_highres.png differ diff --git a/keyboards/ergodox/keymaps/absenth/keymap.c b/keyboards/ergodox/keymaps/absenth/keymap.c index 30f7474191..ded668e13b 100644 --- a/keyboards/ergodox/keymaps/absenth/keymap.c +++ b/keyboards/ergodox/keymaps/absenth/keymap.c @@ -15,9 +15,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * | BkSp | A/L2 | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * | LS/PO |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RS/PC | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | * `----------------------------------' `----------------------------------' @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, @@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSPC, KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, KC_LALT, CTL_T(KC_ESC), KC_PGUP, @@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | MsUp | | | | | | | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * | | |MsLeft|MsDown|MsRght| |------| |------| left | down | up | down | | Play | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | | Prev | Next | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | * ,------|------|------| |------+------+------. * | | | | | | |Brwser| - * | | |------| |------| |Back | + * | Lclk | Rclk |------| |------| |Back | * | | | | | | | | * `--------------------' `--------------------' */ diff --git a/keyboards/ergodox/keymaps/absenth/readme.md b/keyboards/ergodox/keymaps/absenth/readme.md index 35d0aad461..0c04bf4177 100644 --- a/keyboards/ergodox/keymaps/absenth/readme.md +++ b/keyboards/ergodox/keymaps/absenth/readme.md @@ -2,6 +2,9 @@ ## Changelog + +* Sept. 14, 2016 (V0.2): + * Added Space Cadet to Left and Right Shift. Pressing Left shift with no other key adds an "(" and pressing Right shift with no other key adds an ")" * Sept. 8, 2016 (V0.1): * Made A key double as MEDIA Layer change when you hold it. Added mouse buttons to the large thumb buttons on the left side on the Media Layer. Added vi/vim style arrow keys on HJKL on media layer. -- cgit v1.2.1 From e72f8dfd7e7a95fb48f672a794c69b94d2998410 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 14 Sep 2016 20:22:04 -0500 Subject: Adding WinCheck Script for windows install help --- util/Win_Check_Output.bat | 205 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 util/Win_Check_Output.bat diff --git a/util/Win_Check_Output.bat b/util/Win_Check_Output.bat new file mode 100644 index 0000000000..3d517d9403 --- /dev/null +++ b/util/Win_Check_Output.bat @@ -0,0 +1,205 @@ +@setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION +@echo OFF +set BAT_VERSION=v1.0 + +cls + +echo QMK Windows Check Output %BAT_VERSION% +echo QMK Windows Check Output %BAT_VERSION%.>%REPORT_NAME% + +:: ----------------------------------------------------------------------------- + +set MINGW_BASE_DIR=C:\MinGW +set REPORT_NAME=Win_Check_Output.txt + +set KEYMAP=atomic-pvc +set KEYMAP_CLEAN=atomic-pvc-clean + +:: ----------------------------------------------------------------------------- + +if %0 == VERBOSE (goto :Verbose_Make) else (goto :Normal_Make) + +:Normal_Make +set MAKE_CMD_LEVEL_0=make -r -f Makefile COLOR=FALSE +set MAKE_CMD_LEVEL_1=make -r -f ../Makefile COLOR=FALSE +set MAKE_CMD_LEVEL_2=make -r -f ../../Makefile COLOR=FALSE +goto :Start_Report + +:Verbose_Make +echo Verbose Mode +set MAKE_CMD_LEVEL_0=make -r -d -f Makefile COLOR=FALSE VERBOSE=TRUE +set MAKE_CMD_LEVEL_1=make -r -d -f ../Makefile COLOR=FALSE VERBOSE=TRUE +set MAKE_CMD_LEVEL_2=make -r -d -f ../../Makefile COLOR=FALSE VERBOSE=TRUE +goto :Start_Report + +:Start_Report + + +:: ----------------------------------------------------------------------------- + +set header=CURRENT DIRECTORY & call :ReportHeader + +echo %CD%>>%REPORT_NAME% 2>&1 + +echo.>>%REPORT_NAME% 2>&1 +:: ----------------------------------------------------------------------------- + +set header=CURRENT PATHS & call :ReportHeader + +for %%A in ("%path:;=";"%") do (echo %%~A>>%REPORT_NAME% 2>&1) + +echo.>>%REPORT_NAME% 2>&1 + +:: ----------------------------------------------------------------------------- + +set header=CURRENT ENVIRONMENTAL SETTINGS & call :ReportHeader + +set>>%REPORT_NAME% 2>&1 +echo.>>%REPORT_NAME% 2>&1 + +:: ----------------------------------------------------------------------------- + +set header=KEY EXECUTABLE LOCATIONS - GENERAL & call :ReportHeader + +set filename=make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion +set filename=git.exe & set version_cmd=--version & set version_find="git" & call :ReportVersion +set filename=cmp.exe & set version_cmd=--version & set version_find="cmp" & call :ReportVersion + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - AVR MCU COMPILERS & call :ReportHeader + +set filename=avr-gcc.exe & set version_cmd=--version & set version_find="avr" & call :ReportVersion +set filename=avr-objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion +set filename=avr-objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion +set filename=avr-size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion +set filename=avr-ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion +set filename=avr-nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - ARM MCU COMPILERS & call :ReportHeader + +set filename=arm-none-eabi-gcc.exe & set version_cmd=--version & set version_find="arm-none-eabi-gcc" & call :ReportVersion +set filename=arm-none-eabi-objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion +set filename=arm-none-eabi-objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion +set filename=arm-none-eabi-size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion +set filename=arm-none-eabi-ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion +set filename=arm-none-eabi-nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - NATIVE COMPILERS & call :ReportHeader + +set filename=gcc.exe & set version_cmd=--version & set version_find="gcc" & call :ReportVersion +set filename=objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion +set filename=objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion +set filename=size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion +set filename=ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion +set filename=nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - PROGRAMMERS & call :ReportHeader + +set filename=dfu-programmer.exe & set version_cmd=--version & set version_find="dfu" & call :ReportVersion +set filename=batchisp.exe & set version_cmd=-version & set version_find="batchisp" & call :ReportVersion +set filename=dfu-util.exe & call :Report +set filename=teensy_loader_cli.exe & call :Report +set filename=hid_bootloader_cli.exe & call :Report +set filename=avrdude.exe & call :Report + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - OPTIONAL & call :ReportHeader +set filename=cppcheck.exe & call :Report +set filename=doxygen.exe & call :Report +set filename=gdb-config.exe & call :Report +set filename=wget.exe & call :Report +set filename=unzip.exe & call :Report + +:: ----------------------------------------------------------------------------- + +set header=MINGW CHECK - OPTIONAL & call :ReportHeader +if exist %MINGW_BASE_DIR% (echo Expected MinGW Base Dir = %MINGW_BASE_DIR%>>%REPORT_NAME% 2>&1) else (echo Expected MinGW Base Dir = %MINGW_BASE_DIR% - Not Found>>%REPORT_NAME% 2>&1) +echo.>>%REPORT_NAME% 2>&1 +set filename=mingw32-make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion +if exist %MINGW_BASE_DIR%\bin\gcc.exe (ECHO It is not recommended to have make.exe in mingw/bin.>>%REPORT_NAME% 2>&1 & echo.>>%REPORT_NAME% 2>&1) + +:: ----------------------------------------------------------------------------- + +set header=MAKE CHECK & call :ReportHeader +if exist Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_0% & goto MakeFound) +if exist ..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_1% & goto MakeFound) +if exist ..\..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_2% & goto MakeFound) + +echo No Makfile Found.>>%REPORT_NAME% 2>&1 +echo.>>%REPORT_NAME% 2>&1 +echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 + +goto ContinueAfterMake + +:MakeFound +call :RunMake + +:ContinueAfterMake +goto ExitBatch + +:ExitBatch + echo Done! + echo. + rem type %REPORT_NAME% + echo. + echo See %REPORT_NAME% for the report. + endlocal +exit /b + +:: ----------------------------------------------------------------------------- + +:RunMake + + echo Makfile Found.>>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 + set header=MAKE CLEAN & call :ReportHeader + echo Make Command = %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 + %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1 + set header=MAKE & call :ReportHeader + echo Make Command = %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 + %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1 + echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 +exit /b + +:ReportHeader + echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 + echo %header%>>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 +exit /b + +:Report + echo Filename = %filename% >>%REPORT_NAME% 2>&1 + >%REPORT_NAME% 2>&1 + where %filename% >>%REPORT_NAME% 2> NUL + if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReport) + + :EndReport + echo.>>%REPORT_NAME% 2>&1 + >%REPORT_NAME% 2>&1 + >%REPORT_NAME% 2>&1 + where %filename% >>%REPORT_NAME% 2> NUL + if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReportVersion) + >%REPORT_NAME% 2>&1 + + (%filename% %version_cmd% | find %version_find%) >>%REPORT_NAME% 2>&1 + + :EndReportVersion + echo.>>%REPORT_NAME% 2>&1 + Date: Wed, 14 Sep 2016 21:34:28 -0500 Subject: Fixed a last minute format bug. --- util/Win_Check_Output.bat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/util/Win_Check_Output.bat b/util/Win_Check_Output.bat index 3d517d9403..f57083e6d9 100644 --- a/util/Win_Check_Output.bat +++ b/util/Win_Check_Output.bat @@ -1,6 +1,9 @@ @setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION @echo OFF set BAT_VERSION=v1.0 +set REPORT_NAME=Win_Check_Output.txt + +:: ----------------------------------------------------------------------------- cls @@ -10,7 +13,6 @@ echo QMK Windows Check Output %BAT_VERSION%.>%REPORT_NAME% :: ----------------------------------------------------------------------------- set MINGW_BASE_DIR=C:\MinGW -set REPORT_NAME=Win_Check_Output.txt set KEYMAP=atomic-pvc set KEYMAP_CLEAN=atomic-pvc-clean -- cgit v1.2.1 From bcc4213edcc5b09d2a55fa9ed705ef13ef48f7a8 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 14 Sep 2016 21:39:19 -0500 Subject: Marked the Win_Check_Output.txt file as ignored --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 07bbf13db1..153fea093c 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ CMakeLists.txt .idea .browse.VC.db* *.stackdump +util/Win_Check_Output.txt -- cgit v1.2.1 From 0d3ce58b6ba2afa16a1b566b4d06dbe01c39cf06 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 14 Sep 2016 22:53:23 -0500 Subject: Renamed to Win_Check, Removed SET for privacy. --- util/Win_Check.bat | 208 ++++++++++++++++++++++++++++++++++++++++++++++ util/Win_Check_Output.bat | 207 --------------------------------------------- 2 files changed, 208 insertions(+), 207 deletions(-) create mode 100644 util/Win_Check.bat delete mode 100644 util/Win_Check_Output.bat diff --git a/util/Win_Check.bat b/util/Win_Check.bat new file mode 100644 index 0000000000..28f89f10e2 --- /dev/null +++ b/util/Win_Check.bat @@ -0,0 +1,208 @@ +@setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION +@echo OFF +set BAT_VERSION=v1.0 +set REPORT_NAME=Win_Check_Output.txt + +:: ----------------------------------------------------------------------------- + +cls + +echo QMK Windows Check Output %BAT_VERSION% +echo QMK Windows Check Output %BAT_VERSION%.>%REPORT_NAME% + +:: ----------------------------------------------------------------------------- + +set MINGW_BASE_DIR=C:\MinGW + +set KEYMAP=atomic-pvc +set KEYMAP_CLEAN=atomic-pvc-clean + +:: ----------------------------------------------------------------------------- + +if %0 == VERBOSE (goto :Verbose_Make) else (goto :Normal_Make) + +:Normal_Make +set MAKE_CMD_LEVEL_0=make -r -f Makefile COLOR=FALSE +set MAKE_CMD_LEVEL_1=make -r -f ../Makefile COLOR=FALSE +set MAKE_CMD_LEVEL_2=make -r -f ../../Makefile COLOR=FALSE +goto :Start_Report + +:Verbose_Make +echo Verbose Mode +set MAKE_CMD_LEVEL_0=make -r -d -f Makefile COLOR=FALSE VERBOSE=TRUE +set MAKE_CMD_LEVEL_1=make -r -d -f ../Makefile COLOR=FALSE VERBOSE=TRUE +set MAKE_CMD_LEVEL_2=make -r -d -f ../../Makefile COLOR=FALSE VERBOSE=TRUE +goto :Start_Report + +:Start_Report + + +:: ----------------------------------------------------------------------------- + +set header=CURRENT DIRECTORY & call :ReportHeader + +echo %CD%>>%REPORT_NAME% 2>&1 + +echo.>>%REPORT_NAME% 2>&1 + +:: ----------------------------------------------------------------------------- + +set header=CURRENT PATHS & call :ReportHeader + +for %%A in ("%path:;=";"%") do (echo %%~A>>%REPORT_NAME% 2>&1) + +echo.>>%REPORT_NAME% 2>&1 + +:: ----------------------------------------------------------------------------- + +rem set header=CURRENT ENVIRONMENTAL SETTINGS & call :ReportHeader + +rem set>>%REPORT_NAME% 2>&1 +rem echo.>>%REPORT_NAME% 2>&1 + +:: ----------------------------------------------------------------------------- + +set header=KEY EXECUTABLE LOCATIONS - GENERAL & call :ReportHeader + +set filename=make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion +set filename=git.exe & set version_cmd=--version & set version_find="git" & call :ReportVersion +set filename=cmp.exe & set version_cmd=--version & set version_find="cmp" & call :ReportVersion + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - AVR MCU COMPILERS & call :ReportHeader + +set filename=avr-gcc.exe & set version_cmd=--version & set version_find="avr" & call :ReportVersion +set filename=avr-objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion +set filename=avr-objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion +set filename=avr-size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion +set filename=avr-ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion +set filename=avr-nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - ARM MCU COMPILERS & call :ReportHeader + +set filename=arm-none-eabi-gcc.exe & set version_cmd=--version & set version_find="arm-none-eabi-gcc" & call :ReportVersion +set filename=arm-none-eabi-objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion +set filename=arm-none-eabi-objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion +set filename=arm-none-eabi-size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion +set filename=arm-none-eabi-ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion +set filename=arm-none-eabi-nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - NATIVE COMPILERS & call :ReportHeader + +set filename=gcc.exe & set version_cmd=--version & set version_find="gcc" & call :ReportVersion +set filename=objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion +set filename=objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion +set filename=size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion +set filename=ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion +set filename=nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - PROGRAMMERS & call :ReportHeader + +set filename=dfu-programmer.exe & set version_cmd=--version & set version_find="dfu" & call :ReportVersion +set filename=batchisp.exe & set version_cmd=-version & set version_find="batchisp" & call :ReportVersion +set filename=dfu-util.exe & call :Report +set filename=teensy_loader_cli.exe & call :Report +set filename=hid_bootloader_cli.exe & call :Report +set filename=avrdude.exe & call :Report + +:: ----------------------------------------------------------------------------- + +set header=EXECUTABLE LOCATIONS - OPTIONAL & call :ReportHeader +set filename=cppcheck.exe & call :Report +set filename=doxygen.exe & call :Report +set filename=gdb-config.exe & call :Report +set filename=wget.exe & call :Report +set filename=unzip.exe & call :Report + +:: ----------------------------------------------------------------------------- + +set header=MINGW CHECK - OPTIONAL & call :ReportHeader +if exist %MINGW_BASE_DIR% (echo Expected MinGW Base Dir = %MINGW_BASE_DIR%>>%REPORT_NAME% 2>&1) else (echo Expected MinGW Base Dir = %MINGW_BASE_DIR% - Not Found>>%REPORT_NAME% 2>&1) +echo.>>%REPORT_NAME% 2>&1 +set filename=mingw32-make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion +if exist %MINGW_BASE_DIR%\bin\gcc.exe (ECHO It is not recommended to have make.exe in mingw/bin.>>%REPORT_NAME% 2>&1 & echo.>>%REPORT_NAME% 2>&1) + +:: ----------------------------------------------------------------------------- + +set header=MAKE CHECK & call :ReportHeader +if exist Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_0% & goto MakeFound) +if exist ..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_1% & goto MakeFound) +if exist ..\..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_2% & goto MakeFound) + +echo No Makfile Found.>>%REPORT_NAME% 2>&1 +echo.>>%REPORT_NAME% 2>&1 +echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 + +goto ContinueAfterMake + +:MakeFound +call :RunMake + +:ContinueAfterMake +goto ExitBatch + +:ExitBatch + echo Done! + echo. + rem type %REPORT_NAME% + echo. + echo See %REPORT_NAME% for the report. + endlocal +exit /b + +:: ----------------------------------------------------------------------------- + +:RunMake + + echo Makfile Found.>>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 + set header=MAKE CLEAN & call :ReportHeader + echo Make Command = %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 + %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1 + set header=MAKE & call :ReportHeader + echo Make Command = %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 + %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1 + echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 +exit /b + +:ReportHeader + echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 + echo %header%>>%REPORT_NAME% 2>&1 + echo.>>%REPORT_NAME% 2>&1 +exit /b + +:Report + echo Filename = %filename% >>%REPORT_NAME% 2>&1 + >%REPORT_NAME% 2>&1 + where %filename% >>%REPORT_NAME% 2> NUL + if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReport) + + :EndReport + echo.>>%REPORT_NAME% 2>&1 + >%REPORT_NAME% 2>&1 + >%REPORT_NAME% 2>&1 + where %filename% >>%REPORT_NAME% 2> NUL + if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReportVersion) + >%REPORT_NAME% 2>&1 + + (%filename% %version_cmd% | find %version_find%) >>%REPORT_NAME% 2>&1 + + :EndReportVersion + echo.>>%REPORT_NAME% 2>&1 + %REPORT_NAME% - -:: ----------------------------------------------------------------------------- - -set MINGW_BASE_DIR=C:\MinGW - -set KEYMAP=atomic-pvc -set KEYMAP_CLEAN=atomic-pvc-clean - -:: ----------------------------------------------------------------------------- - -if %0 == VERBOSE (goto :Verbose_Make) else (goto :Normal_Make) - -:Normal_Make -set MAKE_CMD_LEVEL_0=make -r -f Makefile COLOR=FALSE -set MAKE_CMD_LEVEL_1=make -r -f ../Makefile COLOR=FALSE -set MAKE_CMD_LEVEL_2=make -r -f ../../Makefile COLOR=FALSE -goto :Start_Report - -:Verbose_Make -echo Verbose Mode -set MAKE_CMD_LEVEL_0=make -r -d -f Makefile COLOR=FALSE VERBOSE=TRUE -set MAKE_CMD_LEVEL_1=make -r -d -f ../Makefile COLOR=FALSE VERBOSE=TRUE -set MAKE_CMD_LEVEL_2=make -r -d -f ../../Makefile COLOR=FALSE VERBOSE=TRUE -goto :Start_Report - -:Start_Report - - -:: ----------------------------------------------------------------------------- - -set header=CURRENT DIRECTORY & call :ReportHeader - -echo %CD%>>%REPORT_NAME% 2>&1 - -echo.>>%REPORT_NAME% 2>&1 -:: ----------------------------------------------------------------------------- - -set header=CURRENT PATHS & call :ReportHeader - -for %%A in ("%path:;=";"%") do (echo %%~A>>%REPORT_NAME% 2>&1) - -echo.>>%REPORT_NAME% 2>&1 - -:: ----------------------------------------------------------------------------- - -set header=CURRENT ENVIRONMENTAL SETTINGS & call :ReportHeader - -set>>%REPORT_NAME% 2>&1 -echo.>>%REPORT_NAME% 2>&1 - -:: ----------------------------------------------------------------------------- - -set header=KEY EXECUTABLE LOCATIONS - GENERAL & call :ReportHeader - -set filename=make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion -set filename=git.exe & set version_cmd=--version & set version_find="git" & call :ReportVersion -set filename=cmp.exe & set version_cmd=--version & set version_find="cmp" & call :ReportVersion - -:: ----------------------------------------------------------------------------- - -set header=EXECUTABLE LOCATIONS - AVR MCU COMPILERS & call :ReportHeader - -set filename=avr-gcc.exe & set version_cmd=--version & set version_find="avr" & call :ReportVersion -set filename=avr-objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion -set filename=avr-objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion -set filename=avr-size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion -set filename=avr-ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion -set filename=avr-nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion - -:: ----------------------------------------------------------------------------- - -set header=EXECUTABLE LOCATIONS - ARM MCU COMPILERS & call :ReportHeader - -set filename=arm-none-eabi-gcc.exe & set version_cmd=--version & set version_find="arm-none-eabi-gcc" & call :ReportVersion -set filename=arm-none-eabi-objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion -set filename=arm-none-eabi-objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion -set filename=arm-none-eabi-size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion -set filename=arm-none-eabi-ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion -set filename=arm-none-eabi-nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion - -:: ----------------------------------------------------------------------------- - -set header=EXECUTABLE LOCATIONS - NATIVE COMPILERS & call :ReportHeader - -set filename=gcc.exe & set version_cmd=--version & set version_find="gcc" & call :ReportVersion -set filename=objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion -set filename=objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion -set filename=size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion -set filename=ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion -set filename=nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion - -:: ----------------------------------------------------------------------------- - -set header=EXECUTABLE LOCATIONS - PROGRAMMERS & call :ReportHeader - -set filename=dfu-programmer.exe & set version_cmd=--version & set version_find="dfu" & call :ReportVersion -set filename=batchisp.exe & set version_cmd=-version & set version_find="batchisp" & call :ReportVersion -set filename=dfu-util.exe & call :Report -set filename=teensy_loader_cli.exe & call :Report -set filename=hid_bootloader_cli.exe & call :Report -set filename=avrdude.exe & call :Report - -:: ----------------------------------------------------------------------------- - -set header=EXECUTABLE LOCATIONS - OPTIONAL & call :ReportHeader -set filename=cppcheck.exe & call :Report -set filename=doxygen.exe & call :Report -set filename=gdb-config.exe & call :Report -set filename=wget.exe & call :Report -set filename=unzip.exe & call :Report - -:: ----------------------------------------------------------------------------- - -set header=MINGW CHECK - OPTIONAL & call :ReportHeader -if exist %MINGW_BASE_DIR% (echo Expected MinGW Base Dir = %MINGW_BASE_DIR%>>%REPORT_NAME% 2>&1) else (echo Expected MinGW Base Dir = %MINGW_BASE_DIR% - Not Found>>%REPORT_NAME% 2>&1) -echo.>>%REPORT_NAME% 2>&1 -set filename=mingw32-make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion -if exist %MINGW_BASE_DIR%\bin\gcc.exe (ECHO It is not recommended to have make.exe in mingw/bin.>>%REPORT_NAME% 2>&1 & echo.>>%REPORT_NAME% 2>&1) - -:: ----------------------------------------------------------------------------- - -set header=MAKE CHECK & call :ReportHeader -if exist Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_0% & goto MakeFound) -if exist ..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_1% & goto MakeFound) -if exist ..\..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_2% & goto MakeFound) - -echo No Makfile Found.>>%REPORT_NAME% 2>&1 -echo.>>%REPORT_NAME% 2>&1 -echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 - -goto ContinueAfterMake - -:MakeFound -call :RunMake - -:ContinueAfterMake -goto ExitBatch - -:ExitBatch - echo Done! - echo. - rem type %REPORT_NAME% - echo. - echo See %REPORT_NAME% for the report. - endlocal -exit /b - -:: ----------------------------------------------------------------------------- - -:RunMake - - echo Makfile Found.>>%REPORT_NAME% 2>&1 - echo.>>%REPORT_NAME% 2>&1 - set header=MAKE CLEAN & call :ReportHeader - echo Make Command = %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1 - echo.>>%REPORT_NAME% 2>&1 - %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1 - set header=MAKE & call :ReportHeader - echo Make Command = %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1 - echo.>>%REPORT_NAME% 2>&1 - %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1 - echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 - echo.>>%REPORT_NAME% 2>&1 -exit /b - -:ReportHeader - echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 - echo.>>%REPORT_NAME% 2>&1 - echo %header%>>%REPORT_NAME% 2>&1 - echo.>>%REPORT_NAME% 2>&1 -exit /b - -:Report - echo Filename = %filename% >>%REPORT_NAME% 2>&1 - >%REPORT_NAME% 2>&1 - where %filename% >>%REPORT_NAME% 2> NUL - if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReport) - - :EndReport - echo.>>%REPORT_NAME% 2>&1 - >%REPORT_NAME% 2>&1 - >%REPORT_NAME% 2>&1 - where %filename% >>%REPORT_NAME% 2> NUL - if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReportVersion) - >%REPORT_NAME% 2>&1 - - (%filename% %version_cmd% | find %version_find%) >>%REPORT_NAME% 2>&1 - - :EndReportVersion - echo.>>%REPORT_NAME% 2>&1 - Date: Thu, 15 Sep 2016 07:59:14 -0500 Subject: Fixed Win_Check Verbose mode. --- util/Win_Check.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/Win_Check.bat b/util/Win_Check.bat index 28f89f10e2..fcf452d42c 100644 --- a/util/Win_Check.bat +++ b/util/Win_Check.bat @@ -19,7 +19,7 @@ set KEYMAP_CLEAN=atomic-pvc-clean :: ----------------------------------------------------------------------------- -if %0 == VERBOSE (goto :Verbose_Make) else (goto :Normal_Make) +if %1 == VERBOSE (goto :Verbose_Make) else (goto :Normal_Make) :Normal_Make set MAKE_CMD_LEVEL_0=make -r -f Makefile COLOR=FALSE @@ -127,7 +127,7 @@ set header=MINGW CHECK - OPTIONAL & call :ReportHeader if exist %MINGW_BASE_DIR% (echo Expected MinGW Base Dir = %MINGW_BASE_DIR%>>%REPORT_NAME% 2>&1) else (echo Expected MinGW Base Dir = %MINGW_BASE_DIR% - Not Found>>%REPORT_NAME% 2>&1) echo.>>%REPORT_NAME% 2>&1 set filename=mingw32-make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion -if exist %MINGW_BASE_DIR%\bin\gcc.exe (ECHO It is not recommended to have make.exe in mingw/bin.>>%REPORT_NAME% 2>&1 & echo.>>%REPORT_NAME% 2>&1) +if exist %MINGW_BASE_DIR%\bin\make.exe (ECHO It is not recommended to have make.exe in mingw/bin.>>%REPORT_NAME% 2>&1 & echo.>>%REPORT_NAME% 2>&1) :: ----------------------------------------------------------------------------- -- cgit v1.2.1 From 24e8d01dc93c7367fbc58b79955b7c4ef6899c61 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Thu, 15 Sep 2016 11:28:12 -0400 Subject: Move ALT... --- keyboards/planck/keymaps/cbbrowne/keymap.c | 3 ++- keyboards/planck/keymaps/cbbrowne/readme.md | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index d6f8a6ed48..26a99a4e74 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -92,6 +92,7 @@ enum macro_id { #define RANDALP M(M_RANDLETTER) #define CTLENTER MT(MOD_RCTL, KC_ENT) #define SHIFTQUOTE MT(MOD_RSFT, KC_QUOT) +#define ALTRIGHT MT(MOD_LALT, KC_RGHT) /* Note that Planck has dimensions 4 rows x 12 columns */ @@ -101,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTLENTER}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SHIFTQUOTE }, - {KC_TAB, ROT_LED, KC_LALT, KC_LGUI, M_LOWER, KC_SPC, KC_SPC, M_UPPER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_TAB, KC_LALT, ROT_LED, KC_LGUI, M_LOWER, KC_SPC, KC_SPC, M_UPPER, KC_LEFT, KC_DOWN, KC_UP, ALTRIGHT} /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */ }, [_RAISE] = { /* RAISE */ diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md index 272e042a0d..184142e0c1 100644 --- a/keyboards/planck/keymaps/cbbrowne/readme.md +++ b/keyboards/planck/keymaps/cbbrowne/readme.md @@ -27,10 +27,23 @@ doing sundry experimentation: * Trying out sgoodwin's "hold Enter down to get Shift" - Liking this Quite Well Enough... - Applied this to both Shift and Quote + - It seems likely that Alt should get a right-hand-side, akin to this... + - Alt needs to move, and get a RHS + - Hence ALTRIGHT, and shifted ROT_LED over + - Emacs likes this!!! :-) + - I'm suspicious that I'll want to shift ROT_LED another location over, + so some modifier can replace the OS/KC_LGUI key * I have added an alternate ADJUST layer that is activated via update_tri_layer() - e.g. - LOWER+RAISE simultaneously - This seems entirely more useful for handling my "special keys" like the random numbers, user name, and such, than the keypad layer + * The _ADJUST layer provides a good place to have RESET + - But this isn't strictly enough; I want RESET somewhat accessible from + main layer lest an error hide that layer + - I never use the OS/KC_LGUI key (that's Command on MacOS, Windows + Key on Windows), so that's a good place to have it as a chord of + some sort + 2. Some code structure ideas --------------------------------------------------- @@ -49,8 +62,8 @@ doing sundry experimentation: only need to fit 4 symbols onto each line, rather than 12. I used enums to manage layer IDs and macro IDs so that I don't need - to care (beyond "start at 0", and arguably that's not needed) about - their values. + to care (beyond "start at 0", and arguably even that's not needed) + about their values. 3. Things I did not like about the default mapping --------------------------------------------------------- @@ -83,8 +96,6 @@ unwise things again... to allow selecting multiple items, and this really interferes with that - - 5. TODO --------------------------------------------------------- -- cgit v1.2.1 From e50f15e36019fa39798bbe4e001fe7d2c94c88e7 Mon Sep 17 00:00:00 2001 From: Austin Erlandson Date: Thu, 15 Sep 2016 10:58:28 -0500 Subject: Add IGNORE_MOD_TAP_INTERRUPT to fix overloaded mod keys sending mod on diads... --- keyboards/atreus/keymaps/erlandsona/config.h | 11 +++++++---- keyboards/atreus/keymaps/erlandsona/keymap.c | 16 ++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/keyboards/atreus/keymaps/erlandsona/config.h b/keyboards/atreus/keymaps/erlandsona/config.h index 6f0d258f50..bf09bf23aa 100644 --- a/keyboards/atreus/keymaps/erlandsona/config.h +++ b/keyboards/atreus/keymaps/erlandsona/config.h @@ -21,13 +21,16 @@ along with this program. If not, see . #include "config_common.h" - - /* Make Overloaded Keys switch faster */ #define TAPPING_TERM 175 - - +/* this makes it possible to do rolling combos (zx) + * with keys that convert to other keys on hold + * (z becomes ctrl when you hold it, + * and when this option isn't enabled, + * z rapidly followed by x actually sends Ctrl-x. That's bad.) + */ +#define IGNORE_MOD_TAP_INTERRUPT /* USB Device descriptor parameter */ diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c index 9e11ac048e..7807eb2245 100644 --- a/keyboards/atreus/keymaps/erlandsona/keymap.c +++ b/keyboards/atreus/keymaps/erlandsona/keymap.c @@ -18,16 +18,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( /* Qwerty */ - KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , - KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , - SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_QUOT), - KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, ALT_T(KC_ESC), CTL_T(KC_ENT), KC_SPC, F(NUMS), KC_RALT, KC_SLSH, KC_BSLS ), + KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , + ALT_T(KC_A), KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , + SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_QUOT), + KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, KC_ESC, KC_ENT, KC_SPC, F(NUMS), KC_RALT, KC_SLSH, KC_BSLS ), [NUMS] = KEYMAP( /* Numbers / Arrows / Symbols */ - KC_GRV , KC_7 , KC_8 , KC_9 , KC_0 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, - KC_TAB , KC_4 , KC_5 , KC_6 , KC_DLR, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC, - _______, KC_1 , KC_2 , KC_3 , KC_DOT, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, - _______, _______, _______, _______, KC_DEL, F(MOUS), _______, _______, _______, _______, _______, _______), + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, + ALT_T(KC_TAB), KC_5 , KC_6 , KC_7 , KC_8 , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC, + _______ , KC_9 , KC_0 , KC_DOT , KC_COMM, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, + _______ , _______, _______, _______, KC_DEL , F(MOUS), _______, _______, _______, _______, _______, _______), [MOUS] = KEYMAP( /* Mouse and Media Keys */ KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4, -- cgit v1.2.1 From ac6125cbea0ef2cfb9e8c79b89659128f60f0853 Mon Sep 17 00:00:00 2001 From: Austin Erlandson Date: Thu, 15 Sep 2016 11:19:54 -0500 Subject: Revert because the IGNORE_MOD_TAP_INTERRUPT flag didn't feel right. --- keyboards/atreus/keymaps/erlandsona/config.h | 10 +--------- keyboards/atreus/keymaps/erlandsona/keymap.c | 10 +++++----- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/keyboards/atreus/keymaps/erlandsona/config.h b/keyboards/atreus/keymaps/erlandsona/config.h index bf09bf23aa..d9eb1903ed 100644 --- a/keyboards/atreus/keymaps/erlandsona/config.h +++ b/keyboards/atreus/keymaps/erlandsona/config.h @@ -22,15 +22,7 @@ along with this program. If not, see . /* Make Overloaded Keys switch faster */ -#define TAPPING_TERM 175 - -/* this makes it possible to do rolling combos (zx) - * with keys that convert to other keys on hold - * (z becomes ctrl when you hold it, - * and when this option isn't enabled, - * z rapidly followed by x actually sends Ctrl-x. That's bad.) - */ -#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_TERM 150 /* USB Device descriptor parameter */ diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c index 7807eb2245..32c8826e02 100644 --- a/keyboards/atreus/keymaps/erlandsona/keymap.c +++ b/keyboards/atreus/keymaps/erlandsona/keymap.c @@ -19,15 +19,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( /* Qwerty */ KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , - ALT_T(KC_A), KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , + KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_QUOT), KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, KC_ESC, KC_ENT, KC_SPC, F(NUMS), KC_RALT, KC_SLSH, KC_BSLS ), [NUMS] = KEYMAP( /* Numbers / Arrows / Symbols */ - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, - ALT_T(KC_TAB), KC_5 , KC_6 , KC_7 , KC_8 , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC, - _______ , KC_9 , KC_0 , KC_DOT , KC_COMM, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, - _______ , _______, _______, _______, KC_DEL , F(MOUS), _______, _______, _______, _______, _______, _______), + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, + KC_TAB , KC_5 , KC_6 , KC_7 , KC_8 , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC, + _______, KC_9 , KC_0 , KC_DOT , KC_COMM, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, + _______, _______, _______, _______, KC_DEL , F(MOUS), _______, _______, _______, _______, _______, _______), [MOUS] = KEYMAP( /* Mouse and Media Keys */ KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4, -- cgit v1.2.1 From 39cbf1c221fbd6886bf098cb570785a110e1a781 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 15 Sep 2016 19:49:29 -0500 Subject: Fixed Batch Syntax on different versions of Windows --- util/Win_Check.bat | 110 ++++++++++++++++++++++++++--------------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/util/Win_Check.bat b/util/Win_Check.bat index fcf452d42c..3fdb656f9c 100644 --- a/util/Win_Check.bat +++ b/util/Win_Check.bat @@ -19,7 +19,7 @@ set KEYMAP_CLEAN=atomic-pvc-clean :: ----------------------------------------------------------------------------- -if %1 == VERBOSE (goto :Verbose_Make) else (goto :Normal_Make) +if /I "%1" EQU VERBOSE (goto :Verbose_Make) else (goto :Normal_Make) :Normal_Make set MAKE_CMD_LEVEL_0=make -r -f Makefile COLOR=FALSE @@ -39,7 +39,7 @@ goto :Start_Report :: ----------------------------------------------------------------------------- -set header=CURRENT DIRECTORY & call :ReportHeader +set HEADER=CURRENT DIRECTORY & call :ReportHeader echo %CD%>>%REPORT_NAME% 2>&1 @@ -47,7 +47,7 @@ echo.>>%REPORT_NAME% 2>&1 :: ----------------------------------------------------------------------------- -set header=CURRENT PATHS & call :ReportHeader +set HEADER=CURRENT PATHS & call :ReportHeader for %%A in ("%path:;=";"%") do (echo %%~A>>%REPORT_NAME% 2>&1) @@ -55,83 +55,83 @@ echo.>>%REPORT_NAME% 2>&1 :: ----------------------------------------------------------------------------- -rem set header=CURRENT ENVIRONMENTAL SETTINGS & call :ReportHeader +rem set HEADER=CURRENT ENVIRONMENTAL SETTINGS & call :ReportHeader rem set>>%REPORT_NAME% 2>&1 rem echo.>>%REPORT_NAME% 2>&1 :: ----------------------------------------------------------------------------- -set header=KEY EXECUTABLE LOCATIONS - GENERAL & call :ReportHeader +set HEADER=KEY EXECUTABLE LOCATIONS - GENERAL & call :ReportHeader -set filename=make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion -set filename=git.exe & set version_cmd=--version & set version_find="git" & call :ReportVersion -set filename=cmp.exe & set version_cmd=--version & set version_find="cmp" & call :ReportVersion +set FILENAME=make.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU Make" & call :ReportVersion +set FILENAME=git.exe & set VERSION_CMD=--version & set VERSION_FIND="git" & call :ReportVersion +set FILENAME=cmp.exe & set VERSION_CMD=--version & set VERSION_FIND="cmp" & call :ReportVersion :: ----------------------------------------------------------------------------- -set header=EXECUTABLE LOCATIONS - AVR MCU COMPILERS & call :ReportHeader +set HEADER=EXECUTABLE LOCATIONS - AVR MCU COMPILERS & call :ReportHeader -set filename=avr-gcc.exe & set version_cmd=--version & set version_find="avr" & call :ReportVersion -set filename=avr-objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion -set filename=avr-objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion -set filename=avr-size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion -set filename=avr-ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion -set filename=avr-nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion +set FILENAME=avr-gcc.exe & set VERSION_CMD=--version & set VERSION_FIND="avr" & call :ReportVersion +set FILENAME=avr-objcopy.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objcopy" & call :ReportVersion +set FILENAME=avr-objdump.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objdump" & call :ReportVersion +set FILENAME=avr-size.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU size" & call :ReportVersion +set FILENAME=avr-ar.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU ar" & call :ReportVersion +set FILENAME=avr-nm.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU nm" & call :ReportVersion :: ----------------------------------------------------------------------------- -set header=EXECUTABLE LOCATIONS - ARM MCU COMPILERS & call :ReportHeader +set HEADER=EXECUTABLE LOCATIONS - ARM MCU COMPILERS & call :ReportHeader -set filename=arm-none-eabi-gcc.exe & set version_cmd=--version & set version_find="arm-none-eabi-gcc" & call :ReportVersion -set filename=arm-none-eabi-objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion -set filename=arm-none-eabi-objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion -set filename=arm-none-eabi-size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion -set filename=arm-none-eabi-ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion -set filename=arm-none-eabi-nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion +set FILENAME=arm-none-eabi-gcc.exe & set VERSION_CMD=--version & set VERSION_FIND="arm-none-eabi-gcc" & call :ReportVersion +set FILENAME=arm-none-eabi-objcopy.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objcopy" & call :ReportVersion +set FILENAME=arm-none-eabi-objdump.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objdump" & call :ReportVersion +set FILENAME=arm-none-eabi-size.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU size" & call :ReportVersion +set FILENAME=arm-none-eabi-ar.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU ar" & call :ReportVersion +set FILENAME=arm-none-eabi-nm.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU nm" & call :ReportVersion :: ----------------------------------------------------------------------------- -set header=EXECUTABLE LOCATIONS - NATIVE COMPILERS & call :ReportHeader +set HEADER=EXECUTABLE LOCATIONS - NATIVE COMPILERS & call :ReportHeader -set filename=gcc.exe & set version_cmd=--version & set version_find="gcc" & call :ReportVersion -set filename=objcopy.exe & set version_cmd=--version & set version_find="GNU objcopy" & call :ReportVersion -set filename=objdump.exe & set version_cmd=--version & set version_find="GNU objdump" & call :ReportVersion -set filename=size.exe & set version_cmd=--version & set version_find="GNU size" & call :ReportVersion -set filename=ar.exe & set version_cmd=--version & set version_find="GNU ar" & call :ReportVersion -set filename=nm.exe & set version_cmd=--version & set version_find="GNU nm" & call :ReportVersion +set FILENAME=gcc.exe & set VERSION_CMD=--version & set VERSION_FIND="gcc" & call :ReportVersion +set FILENAME=objcopy.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objcopy" & call :ReportVersion +set FILENAME=objdump.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objdump" & call :ReportVersion +set FILENAME=size.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU size" & call :ReportVersion +set FILENAME=ar.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU ar" & call :ReportVersion +set FILENAME=nm.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU nm" & call :ReportVersion :: ----------------------------------------------------------------------------- -set header=EXECUTABLE LOCATIONS - PROGRAMMERS & call :ReportHeader +set HEADER=EXECUTABLE LOCATIONS - PROGRAMMERS & call :ReportHeader -set filename=dfu-programmer.exe & set version_cmd=--version & set version_find="dfu" & call :ReportVersion -set filename=batchisp.exe & set version_cmd=-version & set version_find="batchisp" & call :ReportVersion -set filename=dfu-util.exe & call :Report -set filename=teensy_loader_cli.exe & call :Report -set filename=hid_bootloader_cli.exe & call :Report -set filename=avrdude.exe & call :Report +set FILENAME=dfu-programmer.exe & set VERSION_CMD=--version & set VERSION_FIND="dfu" & call :ReportVersion +set FILENAME=batchisp.exe & set VERSION_CMD=-version & set VERSION_FIND="batchisp" & call :ReportVersion +set FILENAME=dfu-util.exe & call :Report +set FILENAME=teensy_loader_cli.exe & call :Report +set FILENAME=hid_bootloader_cli.exe & call :Report +set FILENAME=avrdude.exe & call :Report :: ----------------------------------------------------------------------------- -set header=EXECUTABLE LOCATIONS - OPTIONAL & call :ReportHeader -set filename=cppcheck.exe & call :Report -set filename=doxygen.exe & call :Report -set filename=gdb-config.exe & call :Report -set filename=wget.exe & call :Report -set filename=unzip.exe & call :Report +set HEADER=EXECUTABLE LOCATIONS - OPTIONAL & call :ReportHeader +set FILENAME=cppcheck.exe & call :Report +set FILENAME=doxygen.exe & call :Report +set FILENAME=gdb-config.exe & call :Report +set FILENAME=wget.exe & call :Report +set FILENAME=unzip.exe & call :Report :: ----------------------------------------------------------------------------- -set header=MINGW CHECK - OPTIONAL & call :ReportHeader +set HEADER=MINGW CHECK - OPTIONAL & call :ReportHeader if exist %MINGW_BASE_DIR% (echo Expected MinGW Base Dir = %MINGW_BASE_DIR%>>%REPORT_NAME% 2>&1) else (echo Expected MinGW Base Dir = %MINGW_BASE_DIR% - Not Found>>%REPORT_NAME% 2>&1) echo.>>%REPORT_NAME% 2>&1 -set filename=mingw32-make.exe & set version_cmd=--version & set version_find="GNU Make" & call :ReportVersion +set FILENAME=mingw32-make.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU Make" & call :ReportVersion if exist %MINGW_BASE_DIR%\bin\make.exe (ECHO It is not recommended to have make.exe in mingw/bin.>>%REPORT_NAME% 2>&1 & echo.>>%REPORT_NAME% 2>&1) :: ----------------------------------------------------------------------------- -set header=MAKE CHECK & call :ReportHeader +set HEADER=MAKE CHECK & call :ReportHeader if exist Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_0% & goto MakeFound) if exist ..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_1% & goto MakeFound) if exist ..\..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_2% & goto MakeFound) @@ -140,13 +140,13 @@ echo No Makfile Found.>>%REPORT_NAME% 2>&1 echo.>>%REPORT_NAME% 2>&1 echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 -goto ContinueAfterMake +goto :ContinueAfterMake :MakeFound call :RunMake :ContinueAfterMake -goto ExitBatch +goto :ExitBatch :ExitBatch echo Done! @@ -163,11 +163,11 @@ exit /b echo Makfile Found.>>%REPORT_NAME% 2>&1 echo.>>%REPORT_NAME% 2>&1 - set header=MAKE CLEAN & call :ReportHeader + set HEADER=MAKE CLEAN & call :ReportHeader echo Make Command = %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1 echo.>>%REPORT_NAME% 2>&1 %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1 - set header=MAKE & call :ReportHeader + set HEADER=MAKE & call :ReportHeader echo Make Command = %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1 echo.>>%REPORT_NAME% 2>&1 %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1 @@ -178,14 +178,14 @@ exit /b :ReportHeader echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1 echo.>>%REPORT_NAME% 2>&1 - echo %header%>>%REPORT_NAME% 2>&1 + echo %HEADER%>>%REPORT_NAME% 2>&1 echo.>>%REPORT_NAME% 2>&1 exit /b :Report - echo Filename = %filename% >>%REPORT_NAME% 2>&1 + echo Filename = %FILENAME% >>%REPORT_NAME% 2>&1 >%REPORT_NAME% 2>&1 - where %filename% >>%REPORT_NAME% 2> NUL + where %FILENAME% >>%REPORT_NAME% 2> NUL if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReport) :EndReport @@ -194,13 +194,13 @@ exit /b exit /b :ReportVersion - echo Filename = %filename% >>%REPORT_NAME% 2>&1 + echo Filename = %FILENAME% >>%REPORT_NAME% 2>&1 >%REPORT_NAME% 2>&1 - where %filename% >>%REPORT_NAME% 2> NUL + where %FILENAME% >>%REPORT_NAME% 2> NUL if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReportVersion) >%REPORT_NAME% 2>&1 - (%filename% %version_cmd% | find %version_find%) >>%REPORT_NAME% 2>&1 + (%FILENAME% %VERSION_CMD% | find %VERSION_FIND%) >>%REPORT_NAME% 2>&1 :EndReportVersion echo.>>%REPORT_NAME% 2>&1 -- cgit v1.2.1 From bbf06d516a2946816e2ad53798dac7ee901ad25b Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 15 Sep 2016 21:44:03 -0500 Subject: Added notes on vagrant file fixes, UPRINT --- doc/VAGRANT_GUIDE.md | 3 ++- readme.md | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/doc/VAGRANT_GUIDE.md b/doc/VAGRANT_GUIDE.md index c9958e16b5..439e78da7d 100644 --- a/doc/VAGRANT_GUIDE.md +++ b/doc/VAGRANT_GUIDE.md @@ -6,7 +6,8 @@ This project includes a Vagrantfile that will allow you to build a new firmware Using the `/Vagrantfile` in this repository requires you have [Vagrant](http://www.vagrantup.com/) as well as [VirtualBox](https://www.virtualbox.org/) (or [VMware Workstation](https://www.vmware.com/products/workstation) and [Vagrant VMware plugin](http://www.vagrantup.com/vmware) but the (paid) VMware plugin requires a licensed copy of VMware Workstation/Fusion). -*COMPATIBILITY NOTICE* Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12. +*COMPATIBILITY NOTICE* Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12. **Alternately, you can try running the following command:** `vagrant plugin install vagrant-vbguest` + Other than having Vagrant and Virtualbox installed and possibly a restart of your computer afterwards, you can simple run a 'vagrant up' anywhere inside the folder where you checked out this project and it will start a Linux virtual machine that contains all the tools required to build this project. There is a post Vagrant startup hint that will get you off on the right foot, otherwise you can also reference the build documentation below. diff --git a/readme.md b/readme.md index 20be105dd7..ea20b5e017 100644 --- a/readme.md +++ b/readme.md @@ -72,9 +72,11 @@ Here are the steps 3. If you are going to flash Infinity based keyboards you will need to install dfu-util, refer to the instructions by [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware). 4. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. 5. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. -6. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. -7. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! -8. Future build commands should be run from the MHV AVR Shell, which sets up an environment compatible with colorful build output. The standard Command Prompt will also work, but add `COLOR=false` to the end of all make commands when using it. +6. Open the `\util` folder. +7. Double-click on the `1-setup-path-win` batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. +8. Right-click on the `2-setup-environment-win` batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! + +If you have trouble and want to ask for help, it is useful to generate a *Win_Check_Output.txt* file by running `Win_Check.bat` in the `\util` folder. ### Mac If you're using [homebrew,](http://brew.sh/) you can use the following commands: @@ -278,11 +280,23 @@ This allows you to use the system and audio control key codes. `CONSOLE_ENABLE` -This allows you to print messages that can be read using [`hid_listen`](https://www.pjrc.com/teensy/hid_listen.html). Add this to your `Makefile`, and set it to `yes`. Then put `println`, `printf`, etc. in your keymap or anywhere in the `qmk` source. Finally, open `hid_listen` and enjoy looking at your printed messages. +This allows you to print messages that can be read using [`hid_listen`](https://www.pjrc.com/teensy/hid_listen.html). + +By default, all debug (*dprint*) print (*print*, *xprintf*), and user print (*uprint*) messages will be enabled. This will eat up a significant portion of the flash and may make the keyboard .hex file too big to program. + +To disable debug messages (*dprint*) and reduce the .hex file size, include `#define NO_DEBUG` in your `config.h` file. + +To disable print messages (*print*, *xprintf*) and user print messages (*uprint*) and reduce the .hex file size, include `#define NO_PRINT` in your `config.h` file. + +To disable print messages (*print*, *xprintf*) and **KEEP** user print messages (*uprint*), include `#define USER_PRINT` in your `config.h` file. + +To see the text, open `hid_listen` and enjoy looking at your printed messages. + +**NOTE:** Do not include *uprint* messages in anything other than your keymap code. It must not be used within the QMK system framework. Otherwise, you will bloat other people's .hex files. `COMMAND_ENABLE` -TODO +This enables magic commands, typically fired with the default magic key combo `LSHIFT+RSHIFT+KEY`. Magic commands include turning on debugging messages (`MAGIC+D`) or temporarily toggling NKRO (`MAGIC+N`). `SLEEP_LED_ENABLE` @@ -290,7 +304,7 @@ Enables your LED to breath while your computer is sleeping. Timer1 is being used `NKRO_ENABLE` -This allows for n-key rollover (default is 6) to be enabled. It is off by default, but can be forced by adding `#define FORCE_NKRO` to your config.h. +This allows the keyboard to tell the host OS that up to 248 keys are held down at once (default without NKRO is 6). NKRO is off by default, even if `NKRO_ENABLE` is set. NKRO can be forced by adding `#define FORCE_NKRO` to your config.h or by binding `MAGIC_TOGGLE_NKRO` to a key and then hitting the key. `BACKLIGHT_ENABLE` -- cgit v1.2.1 From cc7604d11670cf3155d53f0019557b249b1192c0 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Fri, 16 Sep 2016 17:15:33 -0400 Subject: Add breathing, as initial implementation with the RAISE/LOWER keys. And throw in extra macros to shorten keymaps --- keyboards/planck/keymaps/cbbrowne/config.h | 5 +++-- keyboards/planck/keymaps/cbbrowne/keymap.c | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/config.h b/keyboards/planck/keymaps/cbbrowne/config.h index 58cd2cc5bc..1e04ba61d7 100644 --- a/keyboards/planck/keymaps/cbbrowne/config.h +++ b/keyboards/planck/keymaps/cbbrowne/config.h @@ -3,6 +3,9 @@ #include "../../config.h" +#define LEADER_TIMEOUT 300 +#define BACKLIGHT_BREATHING + /* cbbrowne user configuration */ #define randadd 53 @@ -16,5 +19,3 @@ #endif - - diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 26a99a4e74..7f1601af75 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -93,6 +93,7 @@ enum macro_id { #define CTLENTER MT(MOD_RCTL, KC_ENT) #define SHIFTQUOTE MT(MOD_RSFT, KC_QUOT) #define ALTRIGHT MT(MOD_LALT, KC_RGHT) +#define MVERSION M(M_VERSION) /* Note that Planck has dimensions 4 rows x 12 columns */ @@ -116,16 +117,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, RESET, _______}, {_______, KEYPAD, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, + }, [_KEYPAD] = { /* Key Pad */ - {KC_ESC, USERNAME, M(M_VERSION), KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, + {KC_ESC, USERNAME, MVERSION, KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, {KC_LCTL, RANDDIG, KC_F5, KC_F6, KC_F7, KC_F8, KC_PGDN, KC_KP_MINUS, KC_4, KC_5, KC_6, KC_PIPE}, {KC_LSFT, RANDALP, KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL, KC_KP_PLUS, KC_1, KC_2, KC_3, KC_ENTER}, - {BL_STEP, ROT_LED, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, QWERTY, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} + {KC_TAB, KC_LALT, ROT_LED, KC_LGUI, M_LOWER, KC_SPC, KC_SPC, QWERTY, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT} }, [_ADJUST] = { /* Adjustments - gonna shift the wild tools in here */ - { ROT_LED, USERNAME, M(M_VERSION), _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + {ROT_LED,USERNAME,MVERSION, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, {_______, RANDDIG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, {_______, RANDALP, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______ }, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ } @@ -198,6 +199,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { layer_on(_RAISE); +#ifdef BACKLIGHT_ENABLE + breathing_speed_set(2); + breathing_pulse(); +#endif update_tri_layer(_LOWER, _RAISE, _ADJUST); } else @@ -210,6 +215,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { layer_on(_LOWER); +#ifdef BACKLIGHT_ENABLE + breathing_speed_set(2); + breathing_pulse(); +#endif update_tri_layer(_LOWER, _RAISE, _ADJUST); } else -- cgit v1.2.1 From 602b058b9e1ebbe043754e39007cf01427872770 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sat, 17 Sep 2016 19:40:56 +0200 Subject: - Added capslock led for KC60 keyboard (based on gitbug.com/jpec/kc60 works) --- keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c | 103 +++++++++++++++++++++ keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md | 11 +++ 2 files changed, 114 insertions(+) create mode 100644 keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c create mode 100644 keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md diff --git a/keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c b/keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c new file mode 100644 index 0000000000..0c952327b9 --- /dev/null +++ b/keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c @@ -0,0 +1,103 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "kc60.h" + +#define _QWERTY 0 +#define _FNCAPS 1 +#define _FNRIGHTSHIFT 2 + +// Fillers to make layering more clear +#define ______ KC_TRNS +#define XXXXXXX KC_NO + +// Func macro definitions. +#define S_LED FUNC(0) +#define S_LEDI FUNC(1) +#define S_LEDD FUNC(2) + +// Enable these functions using FUNC(n) macro. +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_BACKLIGHT_TOGGLE(), + [1] = ACTION_BACKLIGHT_INCREASE(), + [2] = ACTION_BACKLIGHT_DECREASE() + }; + +/* + * | | | + * | | | + * | | | + * | | | + * | | + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | Up | FN2 | + * |-----------------------------------------------------------------------------------------+ + * | FN1 | Gui | Alt | Space | AltGr | Left | Down | Right | + * `-----------------------------------------------------------------------------------------' + */ + [0] = KEYMAP( /* Basic QWERTY */ + KC_ESC, 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_BSLS, \ + 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_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_FNRIGHTSHIFT), KC_UP, \ + LT(_FNCAPS, KC_CAPS), KC_LGUI, KC_LALT, KC_SPC, KC_GRV, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT \ + ), + +/* Layer 1 + * ,-----------------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | Psc | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | Led | Led-| Led+| | Mute| Vol+| Vol-| | | | Play | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | Prev | Stop | Next | + * `-----------------------------------------------------------------------------------------' + */ + [_FNCAPS] = KEYMAP( /* Layer 1 */ + ______, 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_INS, \ + ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, ______, ______, ______, ______, ______, KC_PSCR,______, ______, ______, ______, ______, ______, \ + ______, ______, S_LED, S_LEDI, S_LEDD,______,KC_MUTE,KC_VOLU,KC_VOLD,______, ______, ______, ______,KC_MPLY, \ + ______, ______, ______, ______, KC_DEL, ______, KC_MPRV, KC_MSTP, KC_MNXT \ + ), + +/* Layer 2 + * ,-----------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | | | | | PgUp | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | Home | PgDown| End | + * `-----------------------------------------------------------------------------------------' + */ + [_FNRIGHTSHIFT] = KEYMAP( /* Layer 2 */ + ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PGUP, \ + ______, ______, ______, ______, ______, ______, KC_HOME,KC_PGDN,KC_END \ + ), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + return MACRO_NONE; +}; diff --git a/keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md b/keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md new file mode 100644 index 0000000000..c7850c37ce --- /dev/null +++ b/keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md @@ -0,0 +1,11 @@ +# Dbroqua HHKB like Layout + +* Online keyboard layout editor: *Coming soon* +* Online keyboard layout editor (caps layer): http://www.keyboard-layout-editor.com/#/gists/4136d4d1555d6f0d9403c21aaf50fd37 +* Online keyboard layout editor (fn2 layer): http://www.keyboard-layout-editor.com/#/gists/cf4955f73f339020dbb41c15364e7e4f + +# Programming Instructions: +Enter into programming mode and run the following command. +``` +$ sudo KEYMAP=dbroqua_hhkb_like make dfu +``` \ No newline at end of file -- cgit v1.2.1 From 3e128552d92714ff86d4378b4e3acccc62d6f132 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Sun, 18 Sep 2016 11:48:47 +0200 Subject: Update the ergodox/algernon keymap to v1.7 Overall changes =============== * The number row has been completely rearranged on both the **Base** and the **ADORE** layers. * The number/function key behavior was changed: function keys are now on the **Media**. * The `:`/`;` and `-`/`_` keys were put back to their thumb position on the bottom row, on both the **Base** and **ADORE** layers. * The bottom large keys on the inner side of each half now function as [tmux](http://tmux.github.io/) keys: the left to send the prefix, the right to send the `display-panes` key. The left also doubles as a GNU screen prefix key, and sends `C-a` when double tapped. * A number of functions, such as the **AppSel** layer, now require the `hid-commands` tool to be running, with the output of `hid_listen` being piped to it. ADORE ===== * `Y` and `X` have been swapped again. Media/Navigation layer ====================== * The function keys are now on this layer. * Mouse keys have been removed. * Media start/stop/prev/next have been removed. * `Print screen` has been removed. * There is only one screen lock key now. Heatmap ======= * Fixed a few issues in the finger-stats calculation. * The tool now also timestamps and saves all input lines to a logfile, which it loads on start, allowing one to continue the collection after upgrading the tool. * The heatmap tool will now colorize the stats by default. * The periodic stats are now printed in a more compact format. Tools ===== * Added a new tool, `tools/layer-notify` that listens to layer change events on the HID console, and pops up a notification on layer changes. * Another new tool, `tools/text-to-log.py` has been added that converts arbitrary text to a keylogger output, which can be fed to the heatmap generator. * A number of features have been moved to the `tools/hid-commands` utility. These generally are OS dependent, and are easier to implement on the software side. Signed-off-by: Gergely Nagy --- keyboards/ergodox/keymaps/algernon/Makefile | 4 +- .../keymaps/algernon/images/adore-layer.png | Bin 93893 -> 97225 bytes .../ergodox/keymaps/algernon/images/base-layer.png | Bin 95204 -> 102142 bytes .../ergodox/keymaps/algernon/images/heatmap.png | Bin 137912 -> 139351 bytes keyboards/ergodox/keymaps/algernon/keymap.c | 381 ++++++++++----------- keyboards/ergodox/keymaps/algernon/readme.md | 76 ++-- .../algernon/tools/heatmap-layout.ADORE.json | 132 ++----- .../algernon/tools/heatmap-layout.Dvorak.json | 129 ++----- .../ergodox/keymaps/algernon/tools/hid-commands | 61 ++++ .../ergodox/keymaps/algernon/tools/layer-notify | 12 + .../keymaps/algernon/tools/log-to-heatmap.py | 184 +++++++--- .../ergodox/keymaps/algernon/tools/max-focused | 5 - .../ergodox/keymaps/algernon/tools/text-to-log.py | 107 ++++++ 13 files changed, 616 insertions(+), 475 deletions(-) create mode 100755 keyboards/ergodox/keymaps/algernon/tools/hid-commands create mode 100755 keyboards/ergodox/keymaps/algernon/tools/layer-notify delete mode 100755 keyboards/ergodox/keymaps/algernon/tools/max-focused create mode 100755 keyboards/ergodox/keymaps/algernon/tools/text-to-log.py diff --git a/keyboards/ergodox/keymaps/algernon/Makefile b/keyboards/ergodox/keymaps/algernon/Makefile index 7c2b3ad97c..699add3dda 100644 --- a/keyboards/ergodox/keymaps/algernon/Makefile +++ b/keyboards/ergodox/keymaps/algernon/Makefile @@ -7,7 +7,7 @@ CONSOLE_ENABLE = no TAP_DANCE_ENABLE = yes KEYLOGGER_ENABLE ?= yes UCIS_ENABLE = yes -MOUSEKEY_ENABLE ?= yes +MOUSEKEY_ENABLE = no AUTOLOG_ENABLE ?= no @@ -25,6 +25,8 @@ OPT_DEFS += -DKEYLOGGER_ENABLE CONSOLE_ENABLE = yes endif +OPT_DEFS += -DUSER_PRINT + KEYMAP_VERSION = $(shell \ if [ -d "${KEYMAP_PATH}/.git" ]; then \ cd "${KEYMAP_PATH}" && git describe --abbrev=6 --dirty --always --tags --match 'v*' 2>/dev/null; \ diff --git a/keyboards/ergodox/keymaps/algernon/images/adore-layer.png b/keyboards/ergodox/keymaps/algernon/images/adore-layer.png index 3d0a5fb20c..b611fbc42a 100644 Binary files a/keyboards/ergodox/keymaps/algernon/images/adore-layer.png and b/keyboards/ergodox/keymaps/algernon/images/adore-layer.png differ diff --git a/keyboards/ergodox/keymaps/algernon/images/base-layer.png b/keyboards/ergodox/keymaps/algernon/images/base-layer.png index 7ea57aae38..2a981a4706 100644 Binary files a/keyboards/ergodox/keymaps/algernon/images/base-layer.png and b/keyboards/ergodox/keymaps/algernon/images/base-layer.png differ diff --git a/keyboards/ergodox/keymaps/algernon/images/heatmap.png b/keyboards/ergodox/keymaps/algernon/images/heatmap.png index 356035e0a6..4f55c5adff 100644 Binary files a/keyboards/ergodox/keymaps/algernon/images/heatmap.png and b/keyboards/ergodox/keymaps/algernon/images/heatmap.png differ diff --git a/keyboards/ergodox/keymaps/algernon/keymap.c b/keyboards/ergodox/keymaps/algernon/keymap.c index 9f476d8a6b..248a0ed303 100644 --- a/keyboards/ergodox/keymaps/algernon/keymap.c +++ b/keyboards/ergodox/keymaps/algernon/keymap.c @@ -8,7 +8,6 @@ #include "debug.h" #include "action_layer.h" #include "action_util.h" -#include "mousekey.h" #include "timer.h" #include "keymap_plover.h" #include "eeconfig.h" @@ -36,18 +35,6 @@ enum { A_PLVR, A_MPN, - // Function / number keys - KF_1, // 1, F1 - KF_2, // 2, F2 - KF_3, // ... - KF_4, - KF_5, - KF_6, - KF_7, - KF_8, - KF_9, - KF_10, - // Application select keys APP_SLK, // Slack APP_EMCS, // Emacs @@ -55,17 +42,6 @@ enum { APP_CHRM, // Chrome APP_MSIC, // Music - // Diagonal mouse movement - A_MUL, - A_MUR, - A_MDL, - A_MDR, - - // Mouse acceleration - A_ACL0, - A_ACL1, - A_ACL2, - // Hungarian layer keys HU_AA, // Á HU_OO, // Ó @@ -76,6 +52,18 @@ enum { HU_UE, // Ü HU_OEE, // Ő HU_UEE, // Ű + + // number/symbol keys + A_1, // 1 + A_2, // 2 + A_3, // ... + A_4, + A_5, + A_6, + A_7, + A_8, + A_9, + A_0, }; /* Fn keys */ @@ -95,7 +83,9 @@ enum { CT_CLN = 0, CT_TA, CT_LBP, - CT_RBP + CT_RBP, + CT_TMUX, + CT_TPS, }; /* States & timers */ @@ -114,6 +104,8 @@ bool log_enable = false; bool time_travel = false; +static uint8_t is_adore = 0; + /* The Keymap */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -121,13 +113,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Base Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Next/Prev | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | F12 | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | + * | Next/Prev | 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | F12 | 0 % | 2 ! | 4 # | 6 & | 8 | Plover | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| * | ~ | ' | , | . | P | Y | ( | | ) | F | G | C | R | L | \ | * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| * | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow | - * |-----------+------+------+------+------+------| : | | - |------+------+------+------+------+-----------| - * | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop | + * |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------| + * | Play/Pause| / | Q | J | K | X | | | Pane | B | M | W | V | Z | Stop | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | | | | | : | | - | | | | | * `-----------------------------------' `-----------------------------------' @@ -141,22 +133,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = KEYMAP( // left hand - M(A_MPN) ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR) -,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,TD(CT_LBP) -,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I -,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,TD(CT_CLN) -,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN) + M(A_MPN) ,M(A_9) ,M(A_7) ,M(A_5) ,M(A_3) ,M(A_1) ,KC_F11 +,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,TD(CT_LBP) +,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I +,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,TD(CT_TMUX) +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN) ,F(F_ALT),F(F_GUI) ,F(F_CTRL) ,KC_BSPC,F(F_SFT),KC_ESC // right hand - ,KC_F12 ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 - ,TD(CT_RBP),KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS - ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL - ,KC_MINS ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP - ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_F12 ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR) + ,TD(CT_RBP),KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS + ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL + ,TD(CT_TPS),KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP + ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,OSL(NMDIA),KC_DEL ,KC_LEAD @@ -166,15 +158,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 1: Adore layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Play/Pause| 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | F12 | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | + * | Play/Pause| 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | F12 | 0 % | 2 ! | 4 # | 6 & | 8 | Plover | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | `~ | Y | W | G | L | M | ( | | ) | F | H | C | P | X | \ | + * | `~ | X | W | G | L | M | ( | | ) | F | H | C | P | Y | \ | * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| * | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | Z | Q | ' | , | . | : | | - | B | K | V | J | / | | + * |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------| + * | | Z | Q | ' | , | . | | | pane | B | K | V | J | / | | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | | | | | | | | + * | | | | | : | | - | | | | | * `-----------------------------------' `-----------------------------------' * ,-------------. ,-------------. * | LAlt | GUI | | MDIA | Del | @@ -186,22 +178,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [ADORE] = KEYMAP( // left hand - KC_MPLY ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR) -,KC_GRV ,KC_Y ,KC_W ,KC_G ,KC_L ,KC_M ,TD(CT_LBP) -,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U -,KC_NO ,KC_Z ,KC_Q ,KC_QUOT,KC_COMM,KC_DOT ,TD(CT_CLN) -,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + KC_MPLY ,M(A_9) ,M(A_7) ,M(A_5) ,M(A_3) ,M(A_1) ,KC_F11 +,KC_GRV ,KC_X ,KC_W ,KC_G ,KC_L ,KC_M ,TD(CT_LBP) +,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U +,KC_NO ,KC_Z ,KC_Q ,KC_QUOT ,KC_COMM ,KC_DOT ,TD(CT_TMUX) +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN) ,F(F_ALT),F(F_GUI) ,F(F_CTRL) ,KC_BSPC,F(F_SFT),KC_ESC // right hand - ,KC_F12 ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 - ,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_X ,KC_BSLS - ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL - ,KC_MINS ,KC_B ,KC_K ,KC_V ,KC_J ,KC_SLSH ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_F12 ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR) + ,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_Y ,KC_BSLS + ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL + ,TD(CT_TPS),KC_B ,KC_K ,KC_V ,KC_J ,KC_SLSH ,KC_NO + ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,OSL(NMDIA),KC_DEL ,F(F_HUN) @@ -350,45 +342,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 5: Navigation & Media layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | MS Slow | | | | | |ScrLCK| |ScrLCK| | | | | | | + * | | F9 | F7 | F5 | F3 | F1 | | |ScrLCK| F10 | F2 | F4 | F6 | F8 | | * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | MS Normal | | Home | Up | PgUp | | | |Scroll| |MsUpL | MsUp |MsUpR | |PrintScreen| - * |-----------+------+------+------+------+------| | | Up |------+------+------+------+------+-----------| - * | MS Fast | | Left | Down | Right| |------| |------| |MsLeft| MsDn |MsRght| | | - * |-----------+------+------+------+------+------| | |Scroll|------+------+------+------+------+-----------| - * | Play/Pause| | End | Down | PgDn | | | | Down | |MsDnL | MsDn |MsDnR | | Stop | + * | | | | | | | | | | | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | | | | | | | | | | | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | Mute | VlUp | | BASE | MClk | + * | Mute | VlUp | | BASE | | * ,------|------|------| |------+------+------. - * | | | VlDn | | Prev |Left |Right | - * | SPC | Enter|------| |------| Click| Click| - * | | | ESC | | Next | | | + * | | | VlDn | | | | | + * | | |------| |------| | | + * | | | | | | | | * `--------------------' `--------------------' */ [NMDIA] = KEYMAP( // left hand - M(A_ACL0) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L) -,M(A_ACL1) ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO -,M(A_ACL2) ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO -,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_NO + KC_NO ,KC_F9 ,KC_F7 ,KC_F5 ,KC_F3 ,KC_F1 ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_MUTE ,KC_VOLU ,KC_VOLD - ,KC_SPC,KC_ENTER,KC_ESC + ,KC_NO ,KC_NO ,KC_TRNS // right hand - ,LGUI(KC_L),KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_WH_U ,KC_NO ,M(A_MUL),KC_MS_U ,M(A_MUR),KC_NO ,KC_PSCR - ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO - ,KC_WH_D ,KC_NO ,M(A_MDL),KC_MS_D ,M(A_MDR),KC_NO ,KC_MSTP + ,LGUI(KC_L),KC_F10 ,KC_F2 ,KC_F4 ,KC_F6 ,KC_F8 ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_TRNS ,KC_MS_BTN3 - ,KC_MPRV - ,KC_MNXT ,KC_BTN1 ,KC_BTN2 + ,KC_TRNS ,KC_NO + ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ), /* Keymap 6: Steno for Plover @@ -514,40 +506,62 @@ static macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_c return MACRO_NONE; } -static bool from_appsel; +static void ang_handle_num_row(uint8_t id, keyrecord_t *record) { + uint8_t idx = id - A_1; + uint8_t kc; + static bool shifted[10]; -static void ang_handle_kf (keyrecord_t *record, uint8_t id) -{ - uint8_t code = id - KF_1; + if (keyboard_report->mods & MOD_BIT(KC_LSFT) || + ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { + if (record->event.pressed) + shifted[idx] = true; + } - if (record->event.pressed) { - kf_timers[code] = timer_read (); + if (!shifted[idx]) { + kc = idx + KC_1; } else { - uint8_t kc_base; - - if (from_appsel) { - from_appsel = false; + switch (id) { + case A_8: + case A_9: + shifted[idx] = false; return; - } - if (kf_timers[code] && timer_elapsed (kf_timers[code]) > TAPPING_TERM) { - // Long press - kc_base = KC_F1; - } else { - kc_base = KC_1; + case A_7: + kc = KC_2; + break; + case A_5: + kc = KC_8; + break; + case A_3: + kc = KC_6; + break; + case A_1: + kc = KC_4; + break; + + case A_0: + kc = KC_5; + break; + case A_2: + kc = KC_1; + break; + case A_4: + kc = KC_3; + break; + case A_6: + kc = KC_7; + break; } - kf_timers[code] = 0; - code += kc_base; + } - register_code (code); - unregister_code (code); + if (record->event.pressed) { + register_code (kc); + } else { + unregister_code (kc); + shifted[idx] = false; } } -static struct { - uint8_t idx; -} m_accel_state; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { @@ -592,70 +606,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case HU_UEE: return ang_do_hun (record, KC_EQL, KC_U); -#if MOUSEKEY_ENABLE - /* Mouse movement */ - case A_MUL: - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_LEFT); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_LEFT); - } - mousekey_send(); - break; - - case A_MUR: - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_RIGHT); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_RIGHT); - } - mousekey_send(); - break; - - case A_MDL: - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_LEFT); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_LEFT); - } - mousekey_send(); - break; - - case A_MDR: - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_RIGHT); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_RIGHT); - } - mousekey_send(); - break; - - case A_ACL0 ... A_ACL2: - if (record->event.pressed) { - uint8_t idx = id - A_ACL0; - if (m_accel_state.idx == id) { - mousekey_off(m_accel_state.idx - A_ACL0 + KC_ACL0); - m_accel_state.idx = 0; - } else { - if (m_accel_state.idx) { - mousekey_off(m_accel_state.idx - A_ACL0 + KC_ACL0); - m_accel_state.idx = 0; - } - mousekey_on(KC_ACL0 + idx); - m_accel_state.idx = id; - } - } - break; -#endif - /* Plover base */ case A_PLVR: toggle_steno(record->event.pressed); @@ -667,7 +617,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) register_code (KC_LGUI); if (record->tap.count && !record->tap.interrupted) { if (record->tap.count >= 2) { - register_code (KC_W); layer_on (APPSEL); set_oneshot_layer (APPSEL, ONESHOT_START); } @@ -678,7 +627,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } else { if (record->tap.count >= 2) { - unregister_code (KC_W); clear_oneshot_layer_state (ONESHOT_PRESSED); } gui_timer = timer_read (); @@ -686,43 +634,39 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case APP_SLK: - from_appsel = true; - return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END); + if (record->event.pressed) + uprintf("CMD:appsel_slack\n"); + break; case APP_EMCS: - from_appsel = true; - return MACRODOWN(T(G), T(N), T(U), T(SPC), T(E), T(M), T(A), T(C), T(S), T(SPC), T(2), T(4), T(ENT), END); + if (record->event.pressed) + uprintf("CMD:appsel_emacs\n"); + break; case APP_TERM: - from_appsel = true; - if (!record->event.pressed) { - register_code(KC_ESC); - unregister_code(KC_ESC); - wait_ms(TAPPING_TERM + 25); - register_code(KC_DEL); - unregister_code(KC_DEL); - } + if (record->event.pressed) + uprintf("CMD:appsel_term\n"); break; case APP_CHRM: - from_appsel = true; - return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END); + if (record->event.pressed) + uprintf("CMD:appsel_chrome\n"); + break; case APP_MSIC: - from_appsel = true; - return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END); + if (record->event.pressed) + uprintf("CMD:appsel_music\n"); + break; - /* Function keys */ - case KF_1 ... KF_10: - ang_handle_kf (record, id); + // number row and symbols + case A_1 ... A_0: + ang_handle_num_row(id, record); break; } return MACRO_NONE; }; -static uint8_t is_adore = 0; - // Runs just one time when the keyboard initializes. void matrix_init_user(void) { uint8_t dl; @@ -805,6 +749,36 @@ static void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data layer_off (ARRW); } +static void ang_tap_dance_tmux_finished (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + register_code(KC_LALT); + register_code(KC_SPC); + unregister_code(KC_SPC); + unregister_code(KC_LALT); + } else { + register_code(KC_LCTL); + register_code(KC_A); + unregister_code(KC_A); + unregister_code(KC_LCTL); + } +} + +static void ang_tap_dance_tmux_pane_select (qk_tap_dance_state_t *state, void *user_data) { + uint8_t kc = KC_P; + + if (state->count >= 2) { + kc = KC_Z; + } + + register_code(KC_LALT); + register_code(KC_SPC); + unregister_code(KC_SPC); + unregister_code(KC_LALT); + + register_code(kc); + unregister_code(kc); +} + qk_tap_dance_action_t tap_dance_actions[] = { [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN) ,[CT_TA] = { @@ -813,12 +787,23 @@ qk_tap_dance_action_t tap_dance_actions[] = { } ,[CT_LBP] = ACTION_TAP_DANCE_DOUBLE (KC_LBRC, KC_LPRN) ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN) + ,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished) + ,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select) }; // Runs constantly in the background, in a loop. void matrix_scan_user(void) { + static uint32_t prev_layer_state; uint8_t layer = biton32(layer_state); bool is_arrow = false; + static char *layer_lookup[] = {"Dvorak", "ADORE", "Arrows", "AppSel", "Hungarian", "Nav/Media", "Plover"}; + + if (layer_state != prev_layer_state) { + prev_layer_state = layer_state; + if (layer_lookup[layer]) + uprintf("LAYER: %s\n", layer_lookup[layer]); + } + if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM) unregister_code (KC_LGUI); @@ -929,18 +914,7 @@ void matrix_scan_user(void) { } SEQ_TWO_KEYS (KC_W, KC_M) { - register_code (KC_LALT); - register_code (KC_F2); - unregister_code (KC_F2); - unregister_code (KC_LALT); - - wait_ms (1000); - - ang_tap (KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0); - register_code (KC_LGUI); - register_code (KC_UP); - unregister_code (KC_UP); - unregister_code (KC_LGUI); + uprintf("CMD:wm\n"); } SEQ_ONE_KEY (KC_A) { @@ -999,8 +973,11 @@ const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE bool process_record_user (uint16_t keycode, keyrecord_t *record) { #if KEYLOGGER_ENABLE if (log_enable) { - xprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col, - record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak"); + uint8_t layer = biton32(layer_state); + + if ((layer == ADORE) || (layer == BASE)) + uprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col, + record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak"); } #endif @@ -1047,8 +1024,8 @@ void qk_ucis_symbol_fallback (void) { for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) { uint8_t code; - if (qk_ucis_state.codes[i] > KF_1) - code = qk_ucis_state.codes[i] - KF_1 + KC_1; + if ((qk_ucis_state.codes[i] >= M(A_1)) && (qk_ucis_state.codes[i] <= M(A_0))) + code = qk_ucis_state.codes[i] - M(A_1) + KC_1; else code = qk_ucis_state.codes[i]; register_code(code); diff --git a/keyboards/ergodox/keymaps/algernon/readme.md b/keyboards/ergodox/keymaps/algernon/readme.md index 5e7adb3320..f15b676528 100644 --- a/keyboards/ergodox/keymaps/algernon/readme.md +++ b/keyboards/ergodox/keymaps/algernon/readme.md @@ -18,12 +18,11 @@ Some of the things in the layout only work when one uses [Spacemacs][spacemacs] * [Layouts](#layouts) - [Base layer](#base-layer) - [ADORE layer](#adore-layer) - - [Hungarian layer](#hungarian-layer) - - [Navigation and media layer](#navigation-and-media-layer) - [Steno layer](#steno-layer) - [LED states](#led-states) * [Tools](#tools) - [Heatmap](#heatmap) + - [Layer notification](#layer-notification) * [Special features](#special-features) - [Unicode Symbol Input](#unicode-symbol-input) * [Building](#building) @@ -39,7 +38,7 @@ Some of the things in the layout only work when one uses [Spacemacs][spacemacs] At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave: -* The keys on the number row double as function keys, when held for a bit longer than an usual tap. This allows me to use the function keys without having to switch layers. +* The number row is the same as in the [ADORE](#adore-layer) layer. The function keys are on the **Media** layer. * The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap. * The `GUI` key is special, because when I double-tap it, it sends `GUI + w`, which pops up an application selector. It also switches to a one-shot layer, where the number row on the left half turns into app selector macros, for the most common things I usually want to switch to. Otherwise it behaves as on a normal layout. * The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode. @@ -57,28 +56,16 @@ At its core, this is a Dvorak layout, with some minor changes. The more interest - `LEAD d` toggles logging keypress positions to the HID console. - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader. - `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode. + +The symbols on the front in the image above have the same color as the key that activates them, with the exception of the **Arrow** layer, which is just black on the front. ## ADORE layer [![ADORE layer](images/adore-layer.png)](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a) -While using the standard Dvorak layout, I encountered a number of inconveniences, and on this layer, I am playing with ideas to make the layout feel better. Initially, it was based on [Capewell-Dvorak][cpd], but that too, had shortcomings I was not happy with. So now this is something inbetween, with own observations thrown in. How it works out in the long run remains to be seen. +My experimental layout, that I keep tweaking. No full description here, because things are very much in flux. - [cpd]: http://www.michaelcapewell.com/projects/keyboard/layout_capewell-dvorak.htm - -Based on a week and a half of typing, the keys were rearranged, and the home row neatly spelled out **ADORE**, that gave the layout its name. - -## Hungarian layer - -[![Hungarian layer](images/hun-layer.png)](http://www.keyboard-layout-editor.com/#/gists/b160f6ec90d58c127c114c89f66e9dc9) - -On this layer, the accented characters are at the same position as their base variant. For some, which can have other diatribes, the long one is on top, short's on bottom. Tapping any of the accented characters takes us back to the base layer. - -## Navigation and media layer - -[![Navigation and media layer](images/nav-n-media-layer.png)](http://www.keyboard-layout-editor.com/#/gists/c59c453f9fe1a3238ba1494e7e5c6892) - -This layer is primarily for navigating with the cursor or the mouse, and some media things. +Note that the **HUN** layer does not work well with ADORE: it still has the same layout as on the [Base](#base-layer) layer. This will remain until ADORE becomes the default. ## Steno layer @@ -93,8 +80,8 @@ The primary purpose of the LEDs is to show the modifier status, a secondary, to For the layers, the following rules apply: * When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active. -* When the [Hungarian layer](#hungarian-layer) is active, the *green* and *blue* LEDs are on. -* When the [Navigation and media layer](#navigation-and-media-layer) is active, the *red* and *green* ones are on. +* When the **Hungarian** layer is active, the *green* and *blue* LEDs are on. +* When the **Media** layer is active, the *red* and *green* ones are on. * When the **ARROW** layer is active, the *red* and *blue* ones are on. * For the [Steno layer](#steno-layer), all LEDs will be turned on. @@ -129,6 +116,10 @@ The generated heatmap looks somewhat like this: ![Heatmap](images/heatmap.png) +## Layer notification + +There is a very small tool in `tools/layer-notify`, that listens to the HID console, looking for layer change events, and pops up a notification for every detected change. It is a very simple tool, mainly serving as an example. + # Building To make my workflow easier, this layout is maintained in [its own repository][algernon:ez-layout]. To build it, you will need the [QMK][qmk] firmware checked out, and this repo either checked out to something like `keyboards/ergodox_ez/algernon-master`. One way to achieve that is this: @@ -156,6 +147,43 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the # Changelog +## v1.7 + +*2016-09-18* + +### Overall changes + +* The number row has been completely rearranged on both the [Base](#base-layer) and the [ADORE](#adore-layer) layers. +* The number/function key behavior was changed: function keys are now on the **Media**. +* The `:`/`;` and `-`/`_` keys were put back to their thumb position on the bottom row, on both the [Base](#base-layer) and [ADORE](#adore-layer) layers. +* The bottom large keys on the inner side of each half now function as [tmux](http://tmux.github.io/) keys: the left to send the prefix, the right to send the `display-panes` key. The left also doubles as a GNU screen prefix key, and sends `C-a` when double tapped. +* A number of functions, such as the **AppSel** layer, now require the `hid-commands` tool to be running, with the output of `hid_listen` being piped to it. + +### ADORE + +* `Y` and `X` have been swapped again. + +### Media/Navigation layer + +* The function keys are now on this layer. +* Mouse keys have been removed. +* Media start/stop/prev/next have been removed. +* `Print screen` has been removed. +* There is only one screen lock key now. + +### Heatmap + +* Fixed a few issues in the finger-stats calculation. +* The tool now also timestamps and saves all input lines to a logfile, which it loads on start, allowing one to continue the collection after upgrading the tool. +* The heatmap tool will now colorize the stats by default. +* The periodic stats are now printed in a more compact format. + +### Tools + +* Added a new tool, `tools/layer-notify` that listens to layer change events on the HID console, and pops up a notification on layer changes. +* Another new tool, `tools/text-to-log.py` has been added that converts arbitrary text to a keylogger output, which can be fed to the heatmap generator. +* A number of features have been moved to the `tools/hid-commands` utility. These generally are OS dependent, and are easier to implement on the software side. + ## v1.6 *2016-08-24* @@ -174,7 +202,7 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the ### Miscellaneous changes * `LEAD u` now starts the symbolic unicode input system, instead of the OS-one. -* The mouse acceleration keys on the [Navigation and Media](#navigation-and-media-layer) layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off. +* The mouse acceleration keys on the **Navigation/Media** layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off. * When the **ARROW** layer is on, the *red* and *blue* LEDs light up now. ### Heatmap @@ -221,7 +249,7 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the * The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted. * The `=` and `\` keys were swapped, `=` moved to the home row, on both the [base](#base-layer) and the **experimental** layers. * The arrow and navigation keys were redone, they are now more accessible, but the navigation keys require an extra tap to access. -* The **Emacs** layer is gone, replaced by a simplified [navigation and media](#navigation-and-media-layer) layer. +* The **Emacs** layer is gone, replaced by a simplified **navigation and media** layer. * `LEAD v` types the firmware version, and the keymap version. * On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped. * The [Steno](#steno-layer) layer gained a few more `#` and `*` keys, to make it easier on my fingers. @@ -240,7 +268,7 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the - `-` on the left half was replaced by `Tab`. - `Tab`'s original position is taken by a `Media Next`/`Media Prev` key. - `:` now inputs `;` when shifted. -* `ESC` cancels the [Hungarian](#hungarian-layer) layer too, not just modifiers. +* `ESC` cancels the **Hungarian** layer too, not just modifiers. ## v1.0 diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json index 4dfa877a78..502d1e6ea4 100644 --- a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json +++ b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.ADORE.json @@ -13,18 +13,15 @@ [ { "x": 3.5, - "c": "#a7d0db", "fa": [ 0, 0, 2 ] }, - "#\n3\nF3", + "*\n5\nF5", { "x": 10.5, - "c": "#a7d0db", - "t": "#000000", "a": 4, "fa": [ 0, @@ -32,54 +29,44 @@ 2 ] }, - "*\n8\nF8" + "#\n4\nF4" ], [ { "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 2.5 }, - "@\n2\nF2", + "@\n7\nF7", { - "x": 1, - "c": "#7adabd", - "t": "#000000" + "x": 1 }, - "$\n4\nF4", + "^\n3\nF3", { "x": 8.5 }, - "&\n7\nF7", + "!\n2\nF2", { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 1 }, - "(\n9\nF9" + "&\n6\nF6" ], [ { "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" + "x": 5.5 }, - "%\n5\nF5", + "$\n1\nF1", { - "c": "#f9cd31", "a": 7, - "f": 2 + "f": 3 }, - "STENO", + "F11", { "x": 4.5, "f": 3 }, "F12", { - "c": "#7adabd", "a": 4, "f": 3, "fa": [ @@ -88,19 +75,17 @@ 2 ] }, - "^\n6\nF6" + "%\n0\nF10" ], [ { "y": -0.875, - "c": "#ffb2d2", "f": 9, "a": 6, "w": 1.5 }, "\n\n", { - "t": "#0d0d0b", "f": 3, "a": 4, "fa": [ @@ -109,23 +94,21 @@ 2 ] }, - "!\n1\nF1", + " \n9\nF9", { "x": 14.5 }, - ")\n0\nF10", + " \n8\nF8", { "a": 7, "w": 1.5 }, - "F11" + "STENO" ], [ { "y": -0.375, "x": 3.5, - "c": "#a7d0db", - "t": "#000000", "a": 6 }, "G", @@ -138,15 +121,11 @@ { "y": -0.875, "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b", "a": 6 }, "W", { "x": 1, - "c": "#7adabd", - "t": "#000000", "a": 6 }, "L", @@ -155,22 +134,17 @@ }, "H", { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 1 }, "P" ], [ { "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" + "x": 5.5 }, "M", { - "c": "#93c9b7", "a": 4, "fa": [0, 0, 0], "h": 1.5 @@ -182,7 +156,6 @@ }, "}\n)\n]", { - "c": "#7adabd", "a": 6 }, "F" @@ -190,24 +163,21 @@ [ { "y": -0.875, - "c": "#ffb07b", - "t": "#0d0d0b", "f": 3, "a": 4, "w": 1.5 }, "\n\n~\n`", { - "c": "#ffb2d2", "a": 6, "f": 3 }, - "Y", + "X", { "x": 14.5, "a": 6 }, - "X", + "Y", { "a": 4, "w": 1.5 @@ -218,8 +188,6 @@ { "y": -0.375, "x": 3.5, - "c": "#a7d0db", - "t": "#000000", "a": 6 }, "E", @@ -231,15 +199,11 @@ [ { "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 2.5 }, "O", { "x": 1, - "c": "#7adabd", - "t": "#000000", "n": true }, "I", @@ -249,18 +213,14 @@ }, "R", { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 1 }, "N" ], [ { "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" + "x": 5.5 }, "U", { @@ -271,8 +231,6 @@ [ { "y": -0.875, - "c": "#ffb2d2", - "t": "#0d0d0b", "fa": [ 6 ], @@ -308,22 +266,21 @@ { "y": -0.625, "x": 6.5, - "c": "#93c9b7", - "t": "#000000", + "a": 7, + "f": 9, "h": 1.5 }, - ";\n:", + "", { "x": 4.5, "h": 1.5 }, - "_\n-" + "" ], [ { "y": -0.75, "x": 3.5, - "c": "#a7d0db", "a": 4, "f": 3 }, @@ -339,15 +296,11 @@ { "y": -0.875, "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b", "a": 6 }, "Q", { "x": 1, - "c": "#7adabd", - "t": "#000000", "a": 4 }, "<\n,", @@ -357,9 +310,7 @@ }, "K", { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 1 }, "J" ], @@ -367,8 +318,6 @@ { "y": -0.875, "x": 5.5, - "c": "#7adabd", - "t": "#000000", "a": 4 }, ">\n.", @@ -381,15 +330,12 @@ [ { "y": -0.875, - "c": "#ffb07b", "f": 9, "w": 1.5, "g": true }, "", { - "c": "#ffb2d2", - "t": "#0d0d0b", "a": 6, "f": 3, "g": false @@ -401,8 +347,6 @@ }, "?\n/", { - "c": "#ffb07b", - "t": "#000000", "f": 9, "g": true, "w": 1.5, @@ -414,7 +358,6 @@ { "y": -0.375, "x": 3.5, - "c": "#d9dae0", "g": true, "a": 7, "f": 3 @@ -433,18 +376,16 @@ "", { "x": 1, - "c": "#d4872a", - "g": true, + "g": false, "a": 5 }, - "", + ";\n:", { "x": 8.5 }, - "", + "_\n-", { "x": 1, - "c": "#d9dae0", "g": true, "a": 7 }, @@ -472,7 +413,6 @@ "ry": 4.25, "y": -1, "x": 1, - "c": "#f9cd31", "g": false }, "Alt", @@ -489,7 +429,6 @@ ], [ { - "c": "#d4872a", "a": 7, "f": 9, "h": 2 @@ -500,15 +439,13 @@ }, "", { - "c": "#f9cd31", "f": 3 }, "Ctrl" ], [ { - "x": 2, - "c": "#e26757" + "x": 2 }, "ESC" ], @@ -518,7 +455,6 @@ "rx": 13, "y": -1, "x": -3, - "c": "#f9cd31", "f": 2 }, "MEDIA", @@ -531,7 +467,6 @@ }, "HUN", { - "c": "#d4872a", "f": 9, "h": 2 }, @@ -545,7 +480,6 @@ [ { "x": -3, - "c": "#f9cd31", "f": 2 }, "LEAD" diff --git a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json index 1248d36af7..5b4ca06c30 100644 --- a/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json +++ b/keyboards/ergodox/keymaps/algernon/tools/heatmap-layout.Dvorak.json @@ -13,18 +13,15 @@ [ { "x": 3.5, - "c": "#a7d0db", "fa": [ 0, 0, 2 ] }, - "#\n3\nF3", + "*\n5\nF5", { "x": 10.5, - "c": "#a7d0db", - "t": "#000000", "a": 4, "fa": [ 0, @@ -32,54 +29,44 @@ 2 ] }, - "*\n8\nF8" + "#\n4\nF4" ], [ { "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 2.5 }, - "@\n2\nF2", + "@\n7\nF7", { - "x": 1, - "c": "#7adabd", - "t": "#000000" + "x": 1 }, - "$\n4\nF4", + "^\n3\nF3", { "x": 8.5 }, - "&\n7\nF7", + "!\n2\nF2", { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 1 }, - "(\n9\nF9" + "&\n6\nF6" ], [ { "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" + "x": 5.5 }, - "%\n5\nF5", + "$\n1\nF1", { - "c": "#f9cd31", "a": 7, - "f": 2 + "f": 3 }, - "STENO", + "F11", { "x": 4.5, "f": 3 }, "F12", { - "c": "#7adabd", "a": 4, "f": 3, "fa": [ @@ -88,12 +75,11 @@ 2 ] }, - "^\n6\nF6" + "%\n0\nF10" ], [ { "y": -0.875, - "c": "#ffb2d2", "f": 6, "a": 6, "w": 1.5 @@ -101,7 +87,6 @@ "\n\n", { "f": 3, - "t": "#0d0d0b", "a": 4, "fa": [ 0, @@ -110,23 +95,21 @@ ] }, - "!\n1\nF1", + " \n9\nF9", { "x": 14.5 }, - ")\n0\nF10", + " \n8\nF8", { "a": 7, "w": 1.5 }, - "F11" + "STENO" ], [ { "y": -0.375, "x": 3.5, - "c": "#a7d0db", - "t": "#000000", "a": 4 }, ">\n.", @@ -140,15 +123,11 @@ { "y": -0.875, "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b", "a": 4 }, "<\n,", { "x": 1, - "c": "#7adabd", - "t": "#000000", "a": 6 }, "P", @@ -157,22 +136,17 @@ }, "G", { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 1 }, "R" ], [ { "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" + "x": 5.5 }, "Y", { - "c": "#93c9b7", "a": 4, "h": 1.5 }, @@ -183,7 +157,6 @@ }, "}\n)\n]", { - "c": "#7adabd", "a": 6 }, "F" @@ -191,14 +164,12 @@ [ { "y": -0.875, - "c": "#ffb07b", - "t": "#0d0d0b", "f": 3, + "a": 4, "w": 1.5 }, "\n\n~\n`", { - "c": "#ffb2d2", "a": 4, "f": 3 }, @@ -218,8 +189,6 @@ { "y": -0.375, "x": 3.5, - "c": "#a7d0db", - "t": "#000000", "a": 6 }, "E", @@ -231,15 +200,11 @@ [ { "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 2.5 }, "O", { "x": 1, - "c": "#7adabd", - "t": "#000000", "n": true }, "U", @@ -249,18 +214,14 @@ }, "H", { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 1 }, "N" ], [ { "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" + "x": 5.5 }, "I", { @@ -271,8 +232,6 @@ [ { "y": -0.875, - "c": "#ffb2d2", - "t": "#0d0d0b", "fa": [ 6 ], @@ -308,23 +267,22 @@ { "y": -0.625, "x": 6.5, - "c": "#93c9b7", - "t": "#000000", "a": 7, + "f": 9, "h": 1.5 }, - "(", + "", { "x": 4.5, "h": 1.5 }, - ")" + "" ], [ { "y": -0.75, "x": 3.5, - "c": "#a7d0db", + "f": 3, "a": 6 }, "J", @@ -336,15 +294,11 @@ [ { "y": -0.875, - "x": 2.5, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 2.5 }, "Q", { - "x": 1, - "c": "#7adabd", - "t": "#000000" + "x": 1 }, "K", { @@ -352,18 +306,14 @@ }, "M", { - "x": 1, - "c": "#bfbad1", - "t": "#0d0d0b" + "x": 1 }, "V" ], [ { "y": -0.875, - "x": 5.5, - "c": "#7adabd", - "t": "#000000" + "x": 5.5 }, "X", { @@ -374,14 +324,11 @@ [ { "y": -0.875, - "c": "#ffb07b", "f": 9, "w": 1.5 }, "\n\n", { - "c": "#ffb2d2", - "t": "#0d0d0b", "a": 4, "f": 3 }, @@ -392,8 +339,6 @@ }, "Z", { - "c": "#ffb07b", - "t": "#000000", "f": 9, "w": 1.5 }, @@ -403,7 +348,6 @@ { "y": -0.375, "x": 3.5, - "c": "#d9dae0", "g": true, "a": 7, "f": 3 @@ -422,7 +366,6 @@ "", { "x": 1, - "c": "#d4872a", "g": false, "a": 5 }, @@ -433,7 +376,6 @@ "_\n-", { "x": 1, - "c": "#d9dae0", "g": true, "a": 7 }, @@ -461,7 +403,6 @@ "ry": 4.25, "y": -1, "x": 1, - "c": "#f9cd31", "g": false }, "Alt", @@ -478,7 +419,6 @@ ], [ { - "c": "#d4872a", "a": 7, "f": 9, "h": 2 @@ -489,15 +429,13 @@ }, "", { - "c": "#f9cd31", "f": 3 }, "Ctrl" ], [ { - "x": 2, - "c": "#e26757" + "x": 2 }, "ESC" ], @@ -507,7 +445,6 @@ "rx": 13, "y": -1, "x": -3, - "c": "#f9cd31", "f": 2 }, "MEDIA", @@ -520,7 +457,6 @@ }, "LEAD", { - "c": "#d4872a", "f": 9, "h": 2 }, @@ -534,7 +470,6 @@ [ { "x": -3, - "c": "#f9cd31", "f": 2 }, "HUN" diff --git a/keyboards/ergodox/keymaps/algernon/tools/hid-commands b/keyboards/ergodox/keymaps/algernon/tools/hid-commands new file mode 100755 index 0000000000..f3b83cf6d1 --- /dev/null +++ b/keyboards/ergodox/keymaps/algernon/tools/hid-commands @@ -0,0 +1,61 @@ +#!/bin/bash +set -e + +cmd_wm () { + WIN="$(xdotool getactivewindow)" + wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz + xdotool windowsize ${WIN} 100% 100% + wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz +} + +_cmd_appsel () { + wmctrl -x -a $1 || true + xdotool key Escape +} + +cmd_appsel_music () { + wmctrl -x -a rhythmbox || wmctrl -x -a spotify || true + xdotool key Escape +} + +cmd_appsel_slack () { + _cmd_appsel slack +} + +cmd_appsel_emacs () { + _cmd_appsel emacs24 +} + +cmd_appsel_term () { + _cmd_appsel gnome-terminal +} + +cmd_appsel_chrome () { + _cmd_appsel chromium +} + +cmd_help () { + cat </dev/null 2>&1; then + cmd_${cmd} + fi +done + + diff --git a/keyboards/ergodox/keymaps/algernon/tools/layer-notify b/keyboards/ergodox/keymaps/algernon/tools/layer-notify new file mode 100755 index 0000000000..627c2861ef --- /dev/null +++ b/keyboards/ergodox/keymaps/algernon/tools/layer-notify @@ -0,0 +1,12 @@ +#!/bin/sh +HL="${HID_LISTEN:-$HOME/src/ext/hid_listen/hid_listen}" + +sudo "${HL}" | grep --line-buffered LAYER: | \ +(while read line; do + case $line in + LAYER:*) + layer="$(echo $(echo $line | cut -d: -f2-))" + notify-send -i mark-location-symbolic "Switched to layer: $layer" + ;; + esac + done) diff --git a/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py b/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py index 68585843be..09c737646c 100755 --- a/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py +++ b/keyboards/ergodox/keymaps/algernon/tools/log-to-heatmap.py @@ -1,12 +1,15 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 import json import os import sys import re import argparse +import time from math import floor from os.path import dirname +from subprocess import Popen, PIPE, STDOUT +from blessings import Terminal class Heatmap(object): coords = [ @@ -33,7 +36,7 @@ class Heatmap(object): [ # Row 4 [20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [], - [19, 4], [18, 2], [19, 6], [20, 4], [20, 6], + [19, 4], [18, 2], [19, 6], [20, 4], [20, 6], [], [], [], [] ], [ # Row 5 @@ -56,11 +59,13 @@ class Heatmap(object): def set_attr(orig, new): return new - def set_bg(self, (block, n), color): + def set_bg(self, coords, color): + (block, n) = coords self.set_attr_at(block, n, "c", self.set_attr, color) #self.set_attr_at(block, n, "g", self.set_attr, False) - def set_tap_info(self, (block, n), count, cap): + def set_tap_info(self, coords, count, cap): + (block, n) = coords def _set_tap_info(o, _count, _cap): ns = 4 - o.count ("\n") return o + "\n" * ns + "%.02f%%" % (float(_count) / float(_cap) * 100) @@ -87,8 +92,8 @@ class Heatmap(object): g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1] b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2] - r, g, b = [x * 255 for x in r, g, b] - return "#%02x%02x%02x" % (r, g, b) + r, g, b = [x * 255 for x in (r, g, b)] + return "#%02x%02x%02x" % (int(r), int(g), int(b)) def __init__(self, layout): self.log = {} @@ -96,7 +101,8 @@ class Heatmap(object): self.max_cnt = 0 self.layout = layout - def update_log(self, (c, r)): + def update_log(self, coords): + (c, r) = coords if not (c, r) in self.log: self.log[(c, r)] = 0 self.log[(c, r)] = self.log[(c, r)] + 1 @@ -132,18 +138,17 @@ class Heatmap(object): # right hand [0, 0, 0, 0, 0] ] - finger_map = [0, 0, 1, 2, 3, 4, 4] + finger_map = [0, 0, 1, 2, 3, 3, 3, 1, 1, 1, 2, 3, 4, 4] for (c, r) in self.log: if r == 5: # thumb cluster if c <= 6: # left side usage[0][4] = usage[0][4] + self.log[(c, r)] else: - usage[1][4] = usage[1][4] + self.log[(c, r)] + usage[1][0] = usage[1][0] + self.log[(c, r)] else: fc = c hand = 0 if fc >= 7: - fc = fc - 7 hand = 1 fm = finger_map[fc] usage[hand][fm] = usage[hand][fm] + self.log[(c, r)] @@ -157,79 +162,158 @@ class Heatmap(object): if total == 0: total = 1 stats = { + "total-keys": total, "hands": { "left": { - "usage": float(hand_usage[0]) / total * 100, + "usage": round(float(hand_usage[0]) / total * 100, 2), "fingers": { - "0 - pinky": 0, - "1 - ring": 0, - "2 - middle": 0, - "3 - index": 0, - "4 - thumb": 0, + "pinky": 0, + "ring": 0, + "middle": 0, + "index": 0, + "thumb": 0, } }, "right": { - "usage": float(hand_usage[1]) / total * 100, + "usage": round(float(hand_usage[1]) / total * 100, 2), "fingers": { - "0 - thumb": 0, - "1 - index": 0, - "2 - middle": 0, - "3 - ring": 0, - "4 - pinky": 0, + "thumb": 0, + "index": 0, + "middle": 0, + "ring": 0, + "pinky": 0, } }, } } hmap = ['left', 'right'] - fmap = ['0 - pinky', '1 - ring', '2 - middle', '3 - index', '4 - thumb', - '0 - thumb', '1 - index', '2 - middle', '3 - ring', '4 - pinky'] + fmap = ['pinky', 'ring', 'middle', 'index', 'thumb', + 'thumb', 'index', 'middle', 'ring', 'pinky'] for hand_idx in range(len(usage)): hand = usage[hand_idx] for finger_idx in range(len(hand)): - stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = float(hand[finger_idx]) / total * 100 + stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = round(float(hand[finger_idx]) / total * 100, 2) return stats def dump_all(out_dir, heatmaps): - for layer in heatmaps.keys(): + stats = {} + t = Terminal() + t.clear() + sys.stdout.write("\x1b[2J\x1b[H") + + print ('{t.underline}{outdir}{t.normal}\n'.format(t=t, outdir=out_dir)) + + keys = list(heatmaps.keys()) + keys.sort() + + for layer in keys: if len(heatmaps[layer].log) == 0: continue with open ("%s/%s.json" % (out_dir, layer), "w") as f: json.dump(heatmaps[layer].get_heatmap(), f) - print >>sys.stderr, "%s stats:" % (layer) - json.dump (heatmaps[layer].get_stats(), sys.stderr, - indent = 4, sort_keys = True) - print >>sys.stderr, "" - print >>sys.stderr, "" + stats[layer] = heatmaps[layer].get_stats() -def main(opts): + left = stats[layer]['hands']['left'] + right = stats[layer]['hands']['right'] + + print ('{t.bold}{layer}{t.normal} ({total:,} taps):'.format(t=t, layer=layer, + total=int(stats[layer]['total-keys'] / 2))) + print (('{t.underline} | ' + \ + 'left ({l[usage]:6.2f}%) | ' + \ + 'right ({r[usage]:6.2f}%) |{t.normal}').format(t=t, l=left, r=right)) + print ((' {t.bright_magenta}pinky{t.white} | {left[pinky]:6.2f}% | {right[pinky]:6.2f}% |\n' + \ + ' {t.bright_cyan}ring{t.white} | {left[ring]:6.2f}% | {right[ring]:6.2f}% |\n' + \ + ' {t.bright_blue}middle{t.white} | {left[middle]:6.2f}% | {right[middle]:6.2f}% |\n' + \ + ' {t.bright_green}index{t.white} | {left[index]:6.2f}% | {right[index]:6.2f}% |\n' + \ + ' {t.bright_red}thumb{t.white} | {left[thumb]:6.2f}% | {right[thumb]:6.2f}% |\n' + \ + '').format(left=left['fingers'], right=right['fingers'], t=t)) + +def process_line(line, heatmaps, opts, stamped_log = None): + m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line) + if not m: + return False + if stamped_log is not None: + if line.startswith("KL:"): + print ("%10.10f %s" % (time.time(), line), + file = stamped_log, end = '') + else: + print (line, + file = stamped_log, end = '') + stamped_log.flush() + + (c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4)) + if (c, r) not in opts.allowed_keys: + return False + + heatmaps[l].update_log ((c, r)) + + return True + +def setup_allowed_keys(opts): + if len(opts.only_key): + incmap={} + for v in opts.only_key: + m = re.search ('(\d+),(\d+)', v) + if not m: + continue + (c, r) = (int(m.group(1)), int(m.group(2))) + incmap[(c, r)] = True + else: + incmap={} + for r in range(0, 6): + for c in range(0, 14): + incmap[(c, r)] = True + for v in opts.ignore_key: + m = re.search ('(\d+),(\d+)', v) + if not m: + continue + (c, r) = (int(m.group(1)), int(m.group(2))) + del(incmap[(c, r)]) + + return incmap + +def main(opts): heatmaps = {"Dvorak": Heatmap("Dvorak"), "ADORE": Heatmap("ADORE") } cnt = 0 - restrict_row = opts.restrict_row out_dir = opts.outdir + if not os.path.exists(out_dir): + os.makedirs(out_dir) + + opts.allowed_keys = setup_allowed_keys(opts) + + if not opts.one_shot: + + try: + with open("%s/stamped-log" % out_dir, "r") as f: + while True: + line = f.readline() + if not line: + break + if not process_line(line, heatmaps, opts): + continue + except: + pass + + stamped_log = open ("%s/stamped-log" % (out_dir), "a+") + else: + stamped_log = None + while True: line = sys.stdin.readline() if not line: break - m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line) - if not m: + if not process_line(line, heatmaps, opts, stamped_log): continue cnt = cnt + 1 - (c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4)) - if restrict_row != -1 and r != restrict_row: - continue - if c in opts.ignore_columns: - continue - - heatmaps[l].update_log ((c, r)) - if opts.dump_interval != -1 and cnt >= opts.dump_interval: + if opts.dump_interval != -1 and cnt >= opts.dump_interval and not opts.one_shot: cnt = 0 dump_all(out_dir, heatmaps) @@ -239,11 +323,17 @@ if __name__ == "__main__": parser = argparse.ArgumentParser (description = "keylog to heatmap processor") parser.add_argument ('outdir', action = 'store', help = 'Output directory') - parser.add_argument ('--row', dest = 'restrict_row', action = 'store', type = int, - default = -1, help = 'Restrict processing to this row only') parser.add_argument ('--dump-interval', dest = 'dump_interval', action = 'store', type = int, default = 100, help = 'Dump stats and heatmap at every Nth event, -1 for dumping at EOF only') - parser.add_argument ('--ignore-column', dest = 'ignore_columns', action = 'append', type = int, - default = [], help = 'Ignore the specified columns') + parser.add_argument ('--ignore-key', dest = 'ignore_key', action = 'append', type = str, + default = [], help = 'Ignore the key at position (x, y)') + parser.add_argument ('--only-key', dest = 'only_key', action = 'append', type = str, + default = [], help = 'Only include key at position (x, y)') + parser.add_argument ('--one-shot', dest = 'one_shot', action = 'store_true', + help = 'Do not load previous data, and do not update it, either.') args = parser.parse_args() + if len(args.ignore_key) and len(args.only_key): + print ("--ignore-key and --only-key are mutually exclusive, please only use one of them!", + file = sys.stderr) + sys.exit(1) main(args) diff --git a/keyboards/ergodox/keymaps/algernon/tools/max-focused b/keyboards/ergodox/keymaps/algernon/tools/max-focused deleted file mode 100755 index 4d5220aa8b..0000000000 --- a/keyboards/ergodox/keymaps/algernon/tools/max-focused +++ /dev/null @@ -1,5 +0,0 @@ -#! /bin/sh -WIN="$(xdotool getactivewindow)" -wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz -xdotool windowsize ${WIN} 100% 100% -wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz diff --git a/keyboards/ergodox/keymaps/algernon/tools/text-to-log.py b/keyboards/ergodox/keymaps/algernon/tools/text-to-log.py new file mode 100755 index 0000000000..e068c3cbfb --- /dev/null +++ b/keyboards/ergodox/keymaps/algernon/tools/text-to-log.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 + +import os +import sys + +charmap = { + '9': [[1, 0]], + '7': [[2, 0]], '@': [[2, 5], [2, 0]], + '5': [[3, 0]], '*': [[2, 5], [3, 0]], + '3': [[4, 0]], '^': [[2, 5], [4, 0]], + '1': [[5, 0]], '$': [[2, 5], [5, 0]], + '0': [[8, 0]], '%': [[2, 5], [8, 0]], + '2': [[9, 0]], '!': [[2, 5], [9, 0]], + '4': [[10, 0]], '#': [[2, 5], [10, 0]], + '6': [[11, 0]], '&': [[2, 5], [11, 0]], + '8': [[12, 0]], + + '`': [[0, 1]], '~': [[2, 5], [0, 1]], + 'y': [[1, 1]], 'Y': [[2, 5], [1, 1]], + 'w': [[2, 1]], 'W': [[2, 5], [2, 1]], + 'g': [[3, 1]], 'G': [[2, 5], [3, 1]], + 'l': [[4, 1]], 'L': [[2, 5], [4, 1]], + 'm': [[5, 1]], 'M': [[2, 5], [5, 1]], + '[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]], + ']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]], + 'f': [[8, 1]], 'F': [[2, 5], [8, 1]], + 'h': [[9, 1]], 'H': [[2, 5], [9, 1]], + 'c': [[10, 1]], 'C': [[2, 5], [10, 1]], + 'p': [[11, 1]], 'P': [[2, 5], [11, 1]], + 'x': [[12, 1]], 'X': [[2, 5], [12, 1]], + '\\': [[13, 1]], '|': [[2, 5], [13, 1]], + + '\t': [[0, 2]], + 'a': [[1, 2]], 'A': [[2, 5], [1, 2]], + 'o': [[2, 2]], 'O': [[2, 5], [2, 2]], + 'e': [[3, 2]], 'E': [[2, 5], [3, 2]], + 'i': [[4, 2]], 'I': [[2, 5], [4, 2]], + 'u': [[5, 2]], 'U': [[2, 5], [5, 2]], + 'd': [[8, 2]], 'D': [[2, 5], [8, 2]], + 'r': [[9, 2]], 'R': [[2, 5], [9, 2]], + 't': [[10, 2]], 'T': [[2, 5], [10, 2]], + 'n': [[11, 2]], 'N': [[2, 5], [11, 2]], + 's': [[12, 2]], 'S': [[2, 5], [12, 2]], + '=': [[13, 2]], '+': [[2, 5], [13, 2]], + + 'z': [[1, 3]], 'Z': [[2, 5], [1, 3]], + 'q': [[2, 3]], 'Q': [[2, 5], [2, 3]], + '\'': [[3, 3]], '"': [[2, 5], [3, 3]], + ',': [[4, 3]], '<': [[2, 5], [4, 3]], + '.': [[5, 3]], '>': [[2, 5], [5, 3]], + 'b': [[8, 3]], 'B': [[2, 5], [8, 3]], + 'k': [[9, 3]], 'K': [[2, 5], [9, 3]], + 'v': [[10, 3]], 'V': [[2, 5], [10, 3]], + 'j': [[11, 3]], 'J': [[2, 5], [11, 3]], + '/': [[12, 3]], '?': [[2, 5], [12, 3]], + + ':': [[4, 4]], ';': [[4, 4], [4, 4]], + '-': [[9, 4]], '_': [[2, 5], [9, 4]], + + ' ': [[10, 5]], + '\n': [[11, 5]], + + ## Layered things + # Hungarian + 'á': [[9, 5], [1, 2]], 'Á': [[2, 5], [9, 5], [1, 2]], + 'ó': [[9, 5], [2, 2]], 'Ó': [[2, 5], [9, 5], [2, 2]], + 'ő': [[9, 5], [2, 1]], 'Ő': [[2, 5], [9, 5], [2, 1]], + 'ö': [[9, 5], [2, 3]], 'Ö': [[2, 5], [9, 5], [2, 3]], + 'é': [[9, 5], [3, 2]], 'É': [[2, 5], [9, 5], [3, 2]], + 'ú': [[9, 5], [4, 2]], 'Ú': [[2, 5], [9, 5], [4, 2]], + 'ű': [[9, 5], [4, 1]], 'Ű': [[2, 5], [9, 5], [4, 1]], + 'ü': [[9, 5], [4, 3]], 'Ü': [[2, 5], [9, 5], [4, 3]], + 'í': [[9, 5], [5, 2]], 'Í': [[2, 5], [9, 5], [5, 2]], +} + +def lookup_char(layer, ch): + if ch in charmap: + return charmap[ch] + return None + +def process_char(layer, ch, out=sys.stdout): + keys = lookup_char(layer, ch) + if not keys: + print ("Unknown char: %s" % ch, file=sys.stderr) + else: + for (c, r) in keys: + print ("KL: col=%d, row=%d, pressed=1, layer=%s" % (r, c, layer), file=out) + print ("KL: col=%d, row=%d, pressed=0, layer=%s" % (r, c, layer), file=out) + +def process_file(fn, layer, out=sys.stdout): + with open(fn, "r") as f: + ch = f.read(1) + while ch: + process_char(layer, ch, out) + ch = f.read(1) + +if sys.argv[1] == '-': + out='/dev/stdin' +else: + out=sys.argv[1] + +if len(sys.argv) >= 2: + layer = 'ADORE' +else: + layer = sys.argv[2] + +process_file(out, layer = layer) -- cgit v1.2.1 From edc7441800af085cada407c0593e8f83fc67ec56 Mon Sep 17 00:00:00 2001 From: Antonio Murdaca Date: Sun, 18 Sep 2016 12:42:58 +0200 Subject: util/install_dependecies.sh: fix yum packages Signed-off-by: Antonio Murdaca --- util/install_dependencies.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/util/install_dependencies.sh b/util/install_dependencies.sh index 49ac86e072..936a865938 100755 --- a/util/install_dependencies.sh +++ b/util/install_dependencies.sh @@ -68,9 +68,8 @@ elif [[ -n "$(type -P yum)" ]]; then avr-libc \ dfu-programmer \ dfu-util \ - gcc-arm-none-eabi \ - binutils-arm-none-eabi \ - libnewlib-arm-none-eabi \ + arm-none-eabi-gcc-cs \ + arm-none-eabi-newlib \ git \ diffutils # The listed eabi pacackes do unfortunately not exist for CentOS, -- cgit v1.2.1 From 94af0194ddfe8f8a3069c926170d8995de5c1781 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Mon, 19 Sep 2016 13:22:34 +0200 Subject: - Updated dbroqua layout for kc60 --- keyboards/kc60/keymaps/dbroqua/keymap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/kc60/keymaps/dbroqua/keymap.c b/keyboards/kc60/keymaps/dbroqua/keymap.c index e17827fad9..1b645ea938 100644 --- a/keyboards/kc60/keymaps/dbroqua/keymap.c +++ b/keyboards/kc60/keymaps/dbroqua/keymap.c @@ -34,9 +34,9 @@ const uint16_t PROGMEM fn_actions[] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty * ,-----------------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` | Bksp| + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | * |-----------------------------------------------------------------------------------------+ - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | * |-----------------------------------------------------------------------------------------+ * | Caps/FN1| A | S | D | F | G | H | J | K | L | ; | ' | Enter | * |-----------------------------------------------------------------------------------------+ @@ -46,11 +46,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------------' */ [0] = KEYMAP( /* Basic QWERTY */ - KC_ESC, 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_GRV, \ - 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_ESC, 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_BSLS, \ + 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_BSPC, \ LT(_FNCAPS, 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_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_FNRIGHTSHIFT), KC_UP, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_GRV, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT \ ), /* Layer 1 -- cgit v1.2.1 From 9a2e24fa98f90517a0a091b3ccd9de125457d09f Mon Sep 17 00:00:00 2001 From: dbroqua Date: Mon, 19 Sep 2016 13:36:36 +0200 Subject: - Removed HHKB like layout --- keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c | 103 --------------------- keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md | 11 --- 2 files changed, 114 deletions(-) delete mode 100644 keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c delete mode 100644 keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md diff --git a/keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c b/keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c deleted file mode 100644 index 0c952327b9..0000000000 --- a/keyboards/kc60/keymaps/dbroqua_hhkb_like/keymap.c +++ /dev/null @@ -1,103 +0,0 @@ -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, -// this is the style you want to emulate. - -#include "kc60.h" - -#define _QWERTY 0 -#define _FNCAPS 1 -#define _FNRIGHTSHIFT 2 - -// Fillers to make layering more clear -#define ______ KC_TRNS -#define XXXXXXX KC_NO - -// Func macro definitions. -#define S_LED FUNC(0) -#define S_LEDI FUNC(1) -#define S_LEDD FUNC(2) - -// Enable these functions using FUNC(n) macro. -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_BACKLIGHT_TOGGLE(), - [1] = ACTION_BACKLIGHT_INCREASE(), - [2] = ACTION_BACKLIGHT_DECREASE() - }; - -/* - * | | | - * | | | - * | | | - * | | | - * | | - */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Qwerty - * ,-----------------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - * |-----------------------------------------------------------------------------------------+ - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | - * |-----------------------------------------------------------------------------------------+ - * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter | - * |-----------------------------------------------------------------------------------------+ - * | Shift | Z | X | C | V | B | N | M | , | . | / | Up | FN2 | - * |-----------------------------------------------------------------------------------------+ - * | FN1 | Gui | Alt | Space | AltGr | Left | Down | Right | - * `-----------------------------------------------------------------------------------------' - */ - [0] = KEYMAP( /* Basic QWERTY */ - KC_ESC, 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_BSLS, \ - 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_BSPC, \ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_FNRIGHTSHIFT), KC_UP, \ - LT(_FNCAPS, KC_CAPS), KC_LGUI, KC_LALT, KC_SPC, KC_GRV, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT \ - ), - -/* Layer 1 - * ,-----------------------------------------------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | Psc | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | Led | Led-| Led+| | Mute| Vol+| Vol-| | | | Play | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | Prev | Stop | Next | - * `-----------------------------------------------------------------------------------------' - */ - [_FNCAPS] = KEYMAP( /* Layer 1 */ - ______, 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_INS, \ - ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, ______, ______, ______, ______, ______, ______, KC_PSCR,______, ______, ______, ______, ______, ______, \ - ______, ______, S_LED, S_LEDI, S_LEDD,______,KC_MUTE,KC_VOLU,KC_VOLD,______, ______, ______, ______,KC_MPLY, \ - ______, ______, ______, ______, KC_DEL, ______, KC_MPRV, KC_MSTP, KC_MNXT \ - ), - -/* Layer 2 - * ,-----------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | | | | | PgUp | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | Home | PgDown| End | - * `-----------------------------------------------------------------------------------------' - */ - [_FNRIGHTSHIFT] = KEYMAP( /* Layer 2 */ - ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PGUP, \ - ______, ______, ______, ______, ______, ______, KC_HOME,KC_PGDN,KC_END \ - ), -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - return MACRO_NONE; -}; diff --git a/keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md b/keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md deleted file mode 100644 index c7850c37ce..0000000000 --- a/keyboards/kc60/keymaps/dbroqua_hhkb_like/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Dbroqua HHKB like Layout - -* Online keyboard layout editor: *Coming soon* -* Online keyboard layout editor (caps layer): http://www.keyboard-layout-editor.com/#/gists/4136d4d1555d6f0d9403c21aaf50fd37 -* Online keyboard layout editor (fn2 layer): http://www.keyboard-layout-editor.com/#/gists/cf4955f73f339020dbb41c15364e7e4f - -# Programming Instructions: -Enter into programming mode and run the following command. -``` -$ sudo KEYMAP=dbroqua_hhkb_like make dfu -``` \ No newline at end of file -- cgit v1.2.1 From f0021c9cb9e30d47d5a3ab5ec75e59e626c3d244 Mon Sep 17 00:00:00 2001 From: "Jonathan A. Kollasch" Date: Mon, 19 Sep 2016 14:25:44 -0500 Subject: Add more shifted Dvorak key code definitions --- quantum/keymap_extras/keymap_dvorak.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/quantum/keymap_extras/keymap_dvorak.h b/quantum/keymap_extras/keymap_dvorak.h index 17f2059774..a0feed850d 100644 --- a/quantum/keymap_extras/keymap_dvorak.h +++ b/quantum/keymap_extras/keymap_dvorak.h @@ -70,6 +70,10 @@ #define DV_LCBR LSFT(DV_LBRC) #define DV_RCBR LSFT(DV_RBRC) +#define DV_DQUO LSFT(DV_QUOT) +#define DV_LABK LSFT(DV_COMM) +#define DV_RABK LSFT(DV_DOT) + #define DV_QUES LSFT(DV_SLSH) #define DV_PLUS LSFT(DV_EQL) #define DV_PIPE LSFT(DV_BSLS) -- cgit v1.2.1 From 86e85438d36014b6a6a2b20be4454b865374d47a Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Tue, 20 Sep 2016 15:45:50 -0400 Subject: Fixed Qwerty Fn layer to match documented design --- keyboards/planck/keymaps/impossible/keymap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c index e816f359a6..503976fa28 100644 --- a/keyboards/planck/keymaps/impossible/keymap.c +++ b/keyboards/planck/keymaps/impossible/keymap.c @@ -97,17 +97,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | Ctrl | ~ | [ | PgUp | ] | | | - | Up | = | | F12 | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Shift | Tab | Home | PgDn | End | Del | | Left | Down | Right | [ | ] | + * | Shift | Tab | Home | PgDn | End | Del | | Left | Down | Right | | | * |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| * |Alt/Tab| | | | | Fn/Spc| | | | | Menu |Adj/Ent| * `-----------------------------------------------------------------------------------------------' */ [_QW_FN] = { - {KC_LGUI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11}, - {_______, KC_GRAVE, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, KC_MINUS, KC_EQUAL, KC_F12}, - {_______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, KC_DELETE, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LBRACKET, KC_RBRACKET}, - {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______, KC_MENU, _______} + {KC_LGUI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11}, + {_______, KC_GRAVE, KC_LBRC, KC_PGUP, KC_RBRC, XXXXXXX, XXXXXXX, KC_MINS, KC_UP, KC_EQUAL, XXXXXXX, KC_F12}, + {_______, KC_TAB, KC_HOME, KC_PGDN, KC_END, KC_DELETE, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX}, + {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______, KC_MENU, _______} }, /* Plover layer (http://opensteno.org) -- cgit v1.2.1 From 6631abc1cb0e570271bcf33464e3af17b6fc0b87 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 20 Sep 2016 21:38:59 -0500 Subject: Made Serial and I2C not include the Other This saves 192 bytes --- keyboards/lets_split/config.h | 7 ++++++- keyboards/lets_split/i2c.c | 3 +++ keyboards/lets_split/matrix.c | 23 +++++++++++++++-------- keyboards/lets_split/rules.mk | 4 ++-- keyboards/lets_split/serial.c | 5 ++++- keyboards/lets_split/split_util.c | 8 ++++++-- 6 files changed, 36 insertions(+), 14 deletions(-) diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index ec99514aa3..f4d900accb 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -41,6 +41,11 @@ along with this program. If not, see . // #define USE_I2C +// Use serial if not using I2C +#ifndef USE_I2C +# define USE_SERIAL +#endif + // #define EE_HANDS #define I2C_MASTER_LEFT @@ -94,4 +99,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#endif \ No newline at end of file +#endif diff --git a/keyboards/lets_split/i2c.c b/keyboards/lets_split/i2c.c index c72789403e..084c890c40 100644 --- a/keyboards/lets_split/i2c.c +++ b/keyboards/lets_split/i2c.c @@ -6,6 +6,8 @@ #include #include "i2c.h" +#ifdef USE_I2C + // Limits the amount of we wait for any one i2c transaction. // Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is // 9 bits, a single transaction will take around 90μs to complete. @@ -157,3 +159,4 @@ ISR(TWI_vect) { // Reset everything, so we are ready for the next TWI interrupt TWCR |= (1<. #include "debug.h" #include "util.h" #include "matrix.h" -#include "i2c.h" -#include "serial.h" #include "split_util.h" #include "pro_micro.h" #include "config.h" +#ifdef USE_I2C +# include "i2c.h" +#else // USE_SERIAL +# include "serial.h" +#endif + #ifndef DEBOUNCE -# define DEBOUNCE 5 +# define DEBOUNCE 5 #endif #define ERROR_DISCONNECT_COUNT 5 @@ -145,6 +149,8 @@ uint8_t _matrix_scan(void) return 1; } +#ifdef USE_I2C + // Get rows from other half over i2c int i2c_transaction(void) { int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; @@ -176,7 +182,8 @@ i2c_error: // the cable is disconnceted, or something else went wrong return 0; } -#ifndef USE_I2C +#else // USE_SERIAL + int serial_transaction(void) { int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; @@ -199,7 +206,7 @@ uint8_t matrix_scan(void) #ifdef USE_I2C if( i2c_transaction() ) { -#else +#else // USE_SERIAL if( serial_transaction() ) { #endif // turn on the indicator led when halves are disconnected @@ -235,7 +242,7 @@ void matrix_slave_scan(void) { /* i2c_slave_buffer[i] = matrix[offset+i]; */ i2c_slave_buffer[i] = matrix[offset+i]; } -#else +#else // USE_SERIAL for (int i = 0; i < ROWS_PER_HAND; ++i) { serial_slave_buffer[i] = matrix[offset+i]; } @@ -290,7 +297,7 @@ static void init_cols(void) static matrix_row_t read_cols(void) { matrix_row_t result = 0; - for(int x = 0; x < MATRIX_COLS; x++) { + for(int x = 0; x < MATRIX_COLS; x++) { result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x); } return result; @@ -298,7 +305,7 @@ static matrix_row_t read_cols(void) static void unselect_rows(void) { - for(int x = 0; x < ROWS_PER_HAND; x++) { + for(int x = 0; x < ROWS_PER_HAND; x++) { _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF); _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF); } diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk index 6961fbd556..6fde8a444c 100644 --- a/keyboards/lets_split/rules.mk +++ b/keyboards/lets_split/rules.mk @@ -52,7 +52,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options -# change to "no" to disable the options, or define them in the Makefile in +# change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) @@ -71,4 +71,4 @@ RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -CUSTOM_MATRIX = yes \ No newline at end of file +CUSTOM_MATRIX = yes diff --git a/keyboards/lets_split/serial.c b/keyboards/lets_split/serial.c index f439c2f20b..6faed09ce0 100644 --- a/keyboards/lets_split/serial.c +++ b/keyboards/lets_split/serial.c @@ -10,9 +10,10 @@ #include #include #include - #include "serial.h" +#ifdef USE_SERIAL + // Serial pulse period in microseconds. Its probably a bad idea to lower this // value. #define SERIAL_DELAY 24 @@ -223,3 +224,5 @@ int serial_update_buffers(void) { sei(); return 0; } + +#endif diff --git a/keyboards/lets_split/split_util.c b/keyboards/lets_split/split_util.c index 65003a71a4..461921798f 100644 --- a/keyboards/lets_split/split_util.c +++ b/keyboards/lets_split/split_util.c @@ -6,11 +6,15 @@ #include #include "split_util.h" #include "matrix.h" -#include "i2c.h" -#include "serial.h" #include "keyboard.h" #include "config.h" +#ifdef USE_I2C +# include "i2c.h" +#else +# include "serial.h" +#endif + volatile bool isLeftHand = true; static void setup_handedness(void) { -- cgit v1.2.1 From b30e6c1c9e1c876ddf95fcc3bc727a04ca6f2abc Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 20 Sep 2016 21:46:33 -0500 Subject: Created I2C and Serial keymaps for unit testing Having a dedicated I2C keymap and a dedicated serial keymap will allow the testing suite to check both conditions. --- keyboards/lets_split/keymaps/i2c/config.h | 102 +++++++++++++ keyboards/lets_split/keymaps/i2c/keymap.c | 214 +++++++++++++++++++++++++++ keyboards/lets_split/keymaps/serial/config.h | 102 +++++++++++++ keyboards/lets_split/keymaps/serial/keymap.c | 214 +++++++++++++++++++++++++++ 4 files changed, 632 insertions(+) create mode 100644 keyboards/lets_split/keymaps/i2c/config.h create mode 100644 keyboards/lets_split/keymaps/i2c/keymap.c create mode 100644 keyboards/lets_split/keymaps/serial/config.h create mode 100644 keyboards/lets_split/keymaps/serial/keymap.c diff --git a/keyboards/lets_split/keymaps/i2c/config.h b/keyboards/lets_split/keymaps/i2c/config.h new file mode 100644 index 0000000000..2671fabf6d --- /dev/null +++ b/keyboards/lets_split/keymaps/i2c/config.h @@ -0,0 +1,102 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Wootpatoot +#define PRODUCT Lets Split +#define DESCRIPTION A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { B5, B4, E6, D7 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } + +#define CATERINA_BOOTLOADER + +#define USE_I2C + +// Use serial if not using I2C +#ifndef USE_I2C +# define USE_SERIAL +#endif + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* 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)) \ +) + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D4 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 8 // 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/lets_split/keymaps/i2c/keymap.c b/keyboards/lets_split/keymaps/i2c/keymap.c new file mode 100644 index 0000000000..0d2d94b672 --- /dev/null +++ b/keyboards/lets_split/keymaps/i2c/keymap.c @@ -0,0 +1,214 @@ +#include "lets_split.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/serial/config.h b/keyboards/lets_split/keymaps/serial/config.h new file mode 100644 index 0000000000..f4d900accb --- /dev/null +++ b/keyboards/lets_split/keymaps/serial/config.h @@ -0,0 +1,102 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Wootpatoot +#define PRODUCT Lets Split +#define DESCRIPTION A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { B5, B4, E6, D7 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } + +#define CATERINA_BOOTLOADER + +// #define USE_I2C + +// Use serial if not using I2C +#ifndef USE_I2C +# define USE_SERIAL +#endif + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* 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)) \ +) + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D4 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 8 // 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/lets_split/keymaps/serial/keymap.c b/keyboards/lets_split/keymaps/serial/keymap.c new file mode 100644 index 0000000000..0d2d94b672 --- /dev/null +++ b/keyboards/lets_split/keymaps/serial/keymap.c @@ -0,0 +1,214 @@ +#include "lets_split.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// 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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} \ No newline at end of file -- cgit v1.2.1 From 7a91cce869f7cda8a42bf071ba77ee6096772d20 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Wed, 21 Sep 2016 08:02:51 +0200 Subject: - Updated backlight levels for KC60 --- keyboards/kc60/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/kc60/config.h b/keyboards/kc60/config.h index c4a9b9ff82..29695d0b9d 100644 --- a/keyboards/kc60/config.h +++ b/keyboards/kc60/config.h @@ -62,7 +62,7 @@ along with this program. If not, see . //#define MATRIX_HAS_GHOST /* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_LEVELS 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE -- cgit v1.2.1 From e1f131db8e59c6ed3471906d3a62457d593f51af Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 21 Sep 2016 10:11:42 +0200 Subject: restore each_tap callback --- quantum/process_keycode/process_tap_dance.c | 1 + 1 file changed, 1 insertion(+) diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 79ade4d000..6ae362c4c2 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -70,6 +70,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) { action->state.keycode = keycode; action->state.count++; action->state.timer = timer_read(); + process_tap_dance_action_on_each_tap (action); if (last_td && last_td != keycode) { qk_tap_dance_action_t *paction = &tap_dance_actions[last_td - QK_TAP_DANCE]; -- cgit v1.2.1 From 0edc82f0300924394324e2f3c4d2f8f0008439db Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 21 Sep 2016 11:29:34 +0200 Subject: formatting --- quantum/process_keycode/process_tap_dance.h | 8 ++++---- readme.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h index d7b857bdc6..49b06e4508 100644 --- a/quantum/process_keycode/process_tap_dance.h +++ b/quantum/process_keycode/process_tap_dance.h @@ -39,15 +39,15 @@ typedef struct #define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) { \ .fn = { NULL, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset }, \ - .user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }) \ + .user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }), \ } #define ACTION_TAP_DANCE_FN(user_fn) { \ - .fn = { NULL, user_fn, NULL } \ + .fn = { NULL, user_fn, NULL }, \ } -#define ACTION_TAP_DANCE_FN_ADVANCED(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_reset) { \ - .fn = { user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_reset } \ +#define ACTION_TAP_DANCE_FN_ADVANCED(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset) { \ + .fn = { user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset }, \ } extern qk_tap_dance_action_t tap_dance_actions[]; diff --git a/readme.md b/readme.md index ea20b5e017..a7320202b2 100644 --- a/readme.md +++ b/readme.md @@ -526,7 +526,7 @@ This array specifies what actions shall be taken when a tap-dance key is in acti * `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held. * `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action. -* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function on when the dance action finishes (like the previous option), and the last function when the tap dance action resets. +* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function on when the dance action finishes (like the previous option), and the last function when the tap dance action resets. The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise. -- cgit v1.2.1 From cda4b534fa4921c2d8f9884aa6a144333e7b07c4 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Wed, 21 Sep 2016 11:29:43 +0200 Subject: add user_data field --- quantum/process_keycode/process_tap_dance.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h index 49b06e4508..f753cbba66 100644 --- a/quantum/process_keycode/process_tap_dance.h +++ b/quantum/process_keycode/process_tap_dance.h @@ -44,10 +44,12 @@ typedef struct #define ACTION_TAP_DANCE_FN(user_fn) { \ .fn = { NULL, user_fn, NULL }, \ + .user_data = NULL, \ } #define ACTION_TAP_DANCE_FN_ADVANCED(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset) { \ .fn = { user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset }, \ + .user_data = NULL, \ } extern qk_tap_dance_action_t tap_dance_actions[]; -- cgit v1.2.1 From 9d629719cb0da23a115ec811359ccd9b749cf8fa Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Wed, 21 Sep 2016 14:41:37 +0000 Subject: Filled Impossible Layout documentation --- keyboards/planck/keymaps/impossible/readme.md | 91 ++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/impossible/readme.md b/keyboards/planck/keymaps/impossible/readme.md index de9680b498..af85d7603b 100644 --- a/keyboards/planck/keymaps/impossible/readme.md +++ b/keyboards/planck/keymaps/impossible/readme.md @@ -1,2 +1,91 @@ -# The Default Planck Layout +# The Impossible Layout +The Impossible Layout is named such because it manages to fit in both a numpad and an inverted-T arrow cluster into the same layer as the alpha keys. + +## Main layout + +The Impossible Layout places the middle column of the alphas onto where the punctuation keys were, moving he most used punctuation to be accessed by the thumbs. Because removing the middle columns fits with the Workman layout's philosopy, Workman is used as the basis for the layout. This means the layout should be very easy to learn for Workman users, and reasonable for Colemak users. Other space gains are made by combining keys that are only ever chorded with other non symbol keys (with function-layer alternatives where needed). + +### Alpha-numeric layer + +,-----------------------------------------------------------------------------------------------. +| Q | D | R | W | B | F | U | P | J | 7 | 8 | 9 | +|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| +| A | S | H | T | G | N | E | O | I | 4 | 5 | 6 | +|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| +| Z | X | M | C | V | L | Y | K | Up | 1 | 2 | 3 | +|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| +|Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 |Adj/Ent| +`-----------------------------------------------------------------------------------------------' + +### Function layer + +,-----------------------------------------------------------------------------------------------. +| ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | +|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| +| Tab | [ | ] | - | Del | ' | ( | ) | F11 | F4 | F5 | F6 | +|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| +| Menu | | | = | \ | / | | | PgUp | F1 | F2 | F3 | +|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| +|Alt/Tab| Gui | ~ |CTL/Bsp| Fn/Ent|SFT/Spc| ; | Home | PgDn | End | F10 |Adj/Ent| +`-----------------------------------------------------------------------------------------------' + +## Qwerty + +The Qwerty layer, mostly intended for gaming use, makes use of the doubled chorded/non-symbolic keys to obtain use of the entire alpha-numeric typing area. + +### Qwerty layer + +,-----------------------------------------------------------------------------------------------. +|Gui/Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | +|-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| +| Ctrl | Q | W | E | R | T | Y | U | I | O | P | / | +|-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| +| Shift | A | S | D | F | G | H | J | K | L | ; | " | +|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| +|Alt/Tab| Z | X | C | V | Fn/SPC| B | N | M | , | . |Adj/Ent| +`-----------------------------------------------------------------------------------------------' + +### Qwerty Fn Layer + +,-----------------------------------------------------------------------------------------------. +| Gui | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | +|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| +| Ctrl | ~ | [ | PgUp | ] | | | - | Up | = | | F12 | +|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| +| Shift | Tab | Home | PgDn | End | Del | | Left | Down | Right | | | +|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| +|Alt/Tab| | | | | Fn/Spc| | | | | Menu |Adj/Ent| +`-----------------------------------------------------------------------------------------------' + +## Stenography + +The Steno/Plover layer moves the number row below the regular keys, providing a much more comfortable placement for the thumb keys. Using this layout will require a slightly different dictionary to account for different keys being adjacent to the number row. + +### Steno Layer + +,-----------------------------------------------------------------------------------------------. +| S | T | P | H | * | F | P | L | T | D | | | +|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| +| S | K | W | R | * | R | B | G | S | Z | | | +|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| +| # | # | # | # | | # | # | # | # | # | | | +|-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| +| | | A | O | | E | U | | | | |Adj/Ent| +`-----------------------------------------------------------------------------------------------' + +## Adjustments and Options + +In order to switch between layouts and change other keyboard settings, an adjustment layer is accessible from the same position over any layout. + +### Adjustment Layer + +,-----------------------------------------------------------------------------------------------. +| | | | | | | | | Insert| PrtSc | Pause | RESET | +|-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| +| | | | | | | | CapLk |Voice +| Audio |MIDIoff| | +|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| +| | | | | | | | ScrLk |Voice -| Music |MIDI on| | +|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| +| | | | | | | | Numlk |Workman| Qwerty| Plover|Adj/Ent| +`-----------------------------------------------------------------------------------------------' -- cgit v1.2.1 From 073a1f21bb4ccf8dc47ec3757e64db97d4011ab8 Mon Sep 17 00:00:00 2001 From: Stephen Christie Date: Wed, 21 Sep 2016 14:45:05 +0000 Subject: Corrected Impossible Layout readme tables --- keyboards/planck/keymaps/impossible/readme.md | 30 --------------------------- 1 file changed, 30 deletions(-) diff --git a/keyboards/planck/keymaps/impossible/readme.md b/keyboards/planck/keymaps/impossible/readme.md index af85d7603b..7b3c87b4ec 100644 --- a/keyboards/planck/keymaps/impossible/readme.md +++ b/keyboards/planck/keymaps/impossible/readme.md @@ -8,27 +8,17 @@ The Impossible Layout places the middle column of the alphas onto where the punc ### Alpha-numeric layer -,-----------------------------------------------------------------------------------------------. | Q | D | R | W | B | F | U | P | J | 7 | 8 | 9 | -|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| | A | S | H | T | G | N | E | O | I | 4 | 5 | 6 | -|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| | Z | X | M | C | V | L | Y | K | Up | 1 | 2 | 3 | -|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| |Alt/Tab|Gui/Esc| , |CTL/Bsp| Fn/Ent|SFT/SPC| . | Left | Down | Right | 0 |Adj/Ent| -`-----------------------------------------------------------------------------------------------' ### Function layer -,-----------------------------------------------------------------------------------------------. | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | -|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| | Tab | [ | ] | - | Del | ' | ( | ) | F11 | F4 | F5 | F6 | -|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| | Menu | | | = | \ | / | | | PgUp | F1 | F2 | F3 | -|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| |Alt/Tab| Gui | ~ |CTL/Bsp| Fn/Ent|SFT/Spc| ; | Home | PgDn | End | F10 |Adj/Ent| -`-----------------------------------------------------------------------------------------------' ## Qwerty @@ -36,27 +26,17 @@ The Qwerty layer, mostly intended for gaming use, makes use of the doubled chord ### Qwerty layer -,-----------------------------------------------------------------------------------------------. |Gui/Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | -|-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| | Ctrl | Q | W | E | R | T | Y | U | I | O | P | / | -|-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| | Shift | A | S | D | F | G | H | J | K | L | ; | " | -|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| |Alt/Tab| Z | X | C | V | Fn/SPC| B | N | M | , | . |Adj/Ent| -`-----------------------------------------------------------------------------------------------' ### Qwerty Fn Layer -,-----------------------------------------------------------------------------------------------. | Gui | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | -|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| | Ctrl | ~ | [ | PgUp | ] | | | - | Up | = | | F12 | -|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| | Shift | Tab | Home | PgDn | End | Del | | Left | Down | Right | | | -|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| |Alt/Tab| | | | | Fn/Spc| | | | | Menu |Adj/Ent| -`-----------------------------------------------------------------------------------------------' ## Stenography @@ -64,15 +44,10 @@ The Steno/Plover layer moves the number row below the regular keys, providing a ### Steno Layer -,-----------------------------------------------------------------------------------------------. | S | T | P | H | * | F | P | L | T | D | | | -|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| | S | K | W | R | * | R | B | G | S | Z | | | -|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| | # | # | # | # | | # | # | # | # | # | | | -|-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| | | | A | O | | E | U | | | | |Adj/Ent| -`-----------------------------------------------------------------------------------------------' ## Adjustments and Options @@ -80,12 +55,7 @@ In order to switch between layouts and change other keyboard settings, an adjust ### Adjustment Layer -,-----------------------------------------------------------------------------------------------. | | | | | | | | | Insert| PrtSc | Pause | RESET | -|-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------| | | | | | | | | CapLk |Voice +| Audio |MIDIoff| | -|-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------| | | | | | | | | ScrLk |Voice -| Music |MIDI on| | -|-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| | | | | | | | | Numlk |Workman| Qwerty| Plover|Adj/Ent| -`-----------------------------------------------------------------------------------------------' -- cgit v1.2.1 From 9e6a493172da4f36df6b35307a5796ee8cb2cbec Mon Sep 17 00:00:00 2001 From: UnderSampled Date: Wed, 21 Sep 2016 18:55:14 +0000 Subject: Fixed Impossible Layout readme tables (again) --- keyboards/planck/keymaps/impossible/readme.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/keyboards/planck/keymaps/impossible/readme.md b/keyboards/planck/keymaps/impossible/readme.md index 7b3c87b4ec..02c719197e 100644 --- a/keyboards/planck/keymaps/impossible/readme.md +++ b/keyboards/planck/keymaps/impossible/readme.md @@ -8,6 +8,8 @@ The Impossible Layout places the middle column of the alphas onto where the punc ### Alpha-numeric layer +| | | | | | | | | | | | | +|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| | Q | D | R | W | B | F | U | P | J | 7 | 8 | 9 | | A | S | H | T | G | N | E | O | I | 4 | 5 | 6 | | Z | X | M | C | V | L | Y | K | Up | 1 | 2 | 3 | @@ -15,6 +17,8 @@ The Impossible Layout places the middle column of the alphas onto where the punc ### Function layer +| | | | | | | | | | | | | +|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| | ! | @ | # | $ | % | ^ | & | * | F12 | F7 | F8 | F9 | | Tab | [ | ] | - | Del | ' | ( | ) | F11 | F4 | F5 | F6 | | Menu | | | = | \ | / | | | PgUp | F1 | F2 | F3 | @@ -26,6 +30,8 @@ The Qwerty layer, mostly intended for gaming use, makes use of the doubled chord ### Qwerty layer +| | | | | | | | | | | | | +|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| |Gui/Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | Ctrl | Q | W | E | R | T | Y | U | I | O | P | / | | Shift | A | S | D | F | G | H | J | K | L | ; | " | @@ -33,6 +39,8 @@ The Qwerty layer, mostly intended for gaming use, makes use of the doubled chord ### Qwerty Fn Layer +| | | | | | | | | | | | | +|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| | Gui | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | | Ctrl | ~ | [ | PgUp | ] | | | - | Up | = | | F12 | | Shift | Tab | Home | PgDn | End | Del | | Left | Down | Right | | | @@ -44,6 +52,8 @@ The Steno/Plover layer moves the number row below the regular keys, providing a ### Steno Layer +| | | | | | | | | | | | | +|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| | S | T | P | H | * | F | P | L | T | D | | | | S | K | W | R | * | R | B | G | S | Z | | | | # | # | # | # | | # | # | # | # | # | | | @@ -55,6 +65,8 @@ In order to switch between layouts and change other keyboard settings, an adjust ### Adjustment Layer +| | | | | | | | | | | | | +|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| | | | | | | | | | Insert| PrtSc | Pause | RESET | | | | | | | | | CapLk |Voice +| Audio |MIDIoff| | | | | | | | | | ScrLk |Voice -| Music |MIDI on| | -- cgit v1.2.1 From d4309990472895bbbe82f7ba22ed33c16f928778 Mon Sep 17 00:00:00 2001 From: Didier Loiseau Date: Fri, 23 Sep 2016 00:55:15 +0200 Subject: Fix issue #772 Meh and Hyper not working --- tmk_core/common/action.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 08ef22eb97..d485b46c77 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -155,9 +155,10 @@ void process_action(keyrecord_t *record, action_t action) action.key.mods<<4; if (event.pressed) { if (mods) { - if (IS_MOD(action.key.code)) { + if (IS_MOD(action.key.code) || action.key.code == KC_NO) { // e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless. - // this also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT) + // This also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT). + // Same applies for some keys like KC_MEH which are declared as MEH(KC_NO). add_mods(mods); } else { add_weak_mods(mods); @@ -168,7 +169,7 @@ void process_action(keyrecord_t *record, action_t action) } else { unregister_code(action.key.code); if (mods) { - if (IS_MOD(action.key.code)) { + if (IS_MOD(action.key.code) || action.key.code == KC_NO) { del_mods(mods); } else { del_weak_mods(mods); -- cgit v1.2.1 From 6e5142ca3ee7c45a0776d84ba667c5504dc85cd8 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 22 Sep 2016 22:05:12 -0400 Subject: Adds EPRM reset key --- keyboards/ergodox/keymaps/default/keymap.c | 12 ++++++++++-- keyboards/ergodox/keymaps/default/readme.md | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/keymaps/default/keymap.c b/keyboards/ergodox/keymaps/default/keymap.c index 1b80cb3a23..2f399bd181 100644 --- a/keyboards/ergodox/keymaps/default/keymap.c +++ b/keyboards/ergodox/keymaps/default/keymap.c @@ -7,6 +7,8 @@ #define SYMB 1 // symbols #define MDIA 2 // media keys +#define EPRM M(1) // Macro 1: Reset EEPROM + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * @@ -62,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | . | 0 | = | | + * | EPRM | | | | | | | . | 0 | = | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -79,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, @@ -149,6 +151,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); } break; + case 1: + if (record->event.pressed) { // For resetting EEPROM + eeconfig_init(); + } + break; } return MACRO_NONE; }; @@ -158,6 +165,7 @@ void matrix_init_user(void) { }; + // Runs constantly in the background, in a loop. void matrix_scan_user(void) { diff --git a/keyboards/ergodox/keymaps/default/readme.md b/keyboards/ergodox/keymaps/default/readme.md index 8f6dba45e9..f68138ed62 100644 --- a/keyboards/ergodox/keymaps/default/readme.md +++ b/keyboards/ergodox/keymaps/default/readme.md @@ -2,6 +2,8 @@ ## Changelog +* Sep 22, 2016: + * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM. * Feb 2, 2016 (V1.1): * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). -- cgit v1.2.1 From fad54872667d493ccd95e2171addf6c6b22343b7 Mon Sep 17 00:00:00 2001 From: TerryMathews Date: Thu, 22 Sep 2016 23:33:22 -0400 Subject: Initial support for TADA68 --- keyboards/tada68/Makefile | 3 + keyboards/tada68/config.h | 94 ++++++++++++++++++++++++++++ keyboards/tada68/keymaps/default/Makefile | 21 +++++++ keyboards/tada68/keymaps/default/keymap.c | 98 ++++++++++++++++++++++++++++++ keyboards/tada68/keymaps/default/readme.md | 1 + keyboards/tada68/readme.md | 4 ++ keyboards/tada68/rules.mk | 66 ++++++++++++++++++++ keyboards/tada68/tada68.c | 30 +++++++++ keyboards/tada68/tada68.h | 43 +++++++++++++ 9 files changed, 360 insertions(+) create mode 100644 keyboards/tada68/Makefile create mode 100644 keyboards/tada68/config.h create mode 100644 keyboards/tada68/keymaps/default/Makefile create mode 100644 keyboards/tada68/keymaps/default/keymap.c create mode 100644 keyboards/tada68/keymaps/default/readme.md create mode 100644 keyboards/tada68/readme.md create mode 100644 keyboards/tada68/rules.mk create mode 100644 keyboards/tada68/tada68.c create mode 100644 keyboards/tada68/tada68.h diff --git a/keyboards/tada68/Makefile b/keyboards/tada68/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/tada68/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/tada68/config.h b/keyboards/tada68/config.h new file mode 100644 index 0000000000..5c2b290624 --- /dev/null +++ b/keyboards/tada68/config.h @@ -0,0 +1,94 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#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 TADA +#define PRODUCT TADA68 +#define DESCRIPTION QMK keyboard firmware for TADA68 with WS2812 support + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS {D0,D1,F6,F7,D5} +#define MATRIX_COL_PINS {F0,F1,E6,C7,C6,B7,D4,B1,B0,B5,B4,D7,D6,B3,F4} +#define UNUSED_PINS + +#define BACKLIGHT_PIN B6 + +/* 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 4 + +/* Underlight configuration + */ + +#define RGB_DI_PIN F5 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 4 // 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/tada68/keymaps/default/Makefile b/keyboards/tada68/keymaps/default/Makefile new file mode 100644 index 0000000000..2a7ff27793 --- /dev/null +++ b/keyboards/tada68/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/tada68/keymaps/default/keymap.c b/keyboards/tada68/keymaps/default/keymap.c new file mode 100644 index 0000000000..da57c0343b --- /dev/null +++ b/keyboards/tada68/keymaps/default/keymap.c @@ -0,0 +1,98 @@ +#include "tada68.h" + + +// 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 + +#define _______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |~ ` | + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |Del | + * |----------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgUp| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|PgDn| + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ +[_BL] = KEYMAP_ANSI( + KC_ESC, 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_GRV, \ + 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_DEL, \ + 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_PGUP, \ + 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_PGDN, \ + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTRL, KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + * ,----------------------------------------------------------------. + * | | | | | | | | | | | | | | RESET| | + * |----------------------------------------------------------------| + * | | | | | | | | | | | |BL-|BL+|BL | | + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | | + * |----------------------------------------------------------------| + * | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | | | | + * |----------------------------------------------------------------| + * | | | | | | | | | | | + * `----------------------------------------------------------------' + */ +[_FL] = KEYMAP_ANSI( + #ifdef RGBLIGHT_ENABLE + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, \ + _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, \ + _______,_______,_______, _______, _______,_______,_______,_______,_______, _______), + #else + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ + _______,_______,_______, _______, _______,_______,_______,_______,_______, _______), + #endif +}; + +/*enum function_id { + //SHIFT_ESC, +}; + +const uint16_t PROGMEM fn_actions[] = { + //[0] = ACTION_FUNCTION(SHIFT_ESC), +}; + +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; + } +}*/ diff --git a/keyboards/tada68/keymaps/default/readme.md b/keyboards/tada68/keymaps/default/readme.md new file mode 100644 index 0000000000..36760d6b91 --- /dev/null +++ b/keyboards/tada68/keymaps/default/readme.md @@ -0,0 +1 @@ +# default TADA68 layout diff --git a/keyboards/tada68/readme.md b/keyboards/tada68/readme.md new file mode 100644 index 0000000000..552fdea529 --- /dev/null +++ b/keyboards/tada68/readme.md @@ -0,0 +1,4 @@ +TADA68 keyboard firmware +====================== + +TODO: to be updated. diff --git a/keyboards/tada68/rules.mk b/keyboards/tada68/rules.mk new file mode 100644 index 0000000000..1102584d8a --- /dev/null +++ b/keyboards/tada68/rules.mk @@ -0,0 +1,66 @@ + +# 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 ?= no # 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 ?= 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 diff --git a/keyboards/tada68/tada68.c b/keyboards/tada68/tada68.c new file mode 100644 index 0000000000..24f89048cb --- /dev/null +++ b/keyboards/tada68/tada68.c @@ -0,0 +1,30 @@ +#include "tada68.h" +#include "led.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + matrix_init_user(); + led_init_ports(); +}; + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + matrix_scan_user(); +}; + +void led_init_ports(void) { + // * Set our LED pins as output + DDRB |= (1<<2); +} + +void led_set_kb(uint8_t usb_led) { + if (usb_led & (1< Date: Fri, 23 Sep 2016 14:20:05 -0400 Subject: Disable RGB led support until a suitable pin is located --- keyboards/tada68/config.h | 9 ++++++--- keyboards/tada68/rules.mk | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/keyboards/tada68/config.h b/keyboards/tada68/config.h index 5c2b290624..5d8757936d 100644 --- a/keyboards/tada68/config.h +++ b/keyboards/tada68/config.h @@ -66,12 +66,15 @@ along with this program. If not, see . /* Underlight configuration */ -#define RGB_DI_PIN F5 +/*#define RGB_DI_PIN E2 #define RGBLIGHT_TIMER -#define RGBLED_NUM 4 // Number of LEDs +#define RGBLED_NUM 2 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 +#define RGBLIGHT_VAL_STEP 17*/ +//Disabled while I figure out a suitable pin for RGB support. +//I've tried F5, D2, D3, and E2 but it's possible the end of my +//strand is bad. New LEDs on order. /* * Feature disable options diff --git a/keyboards/tada68/rules.mk b/keyboards/tada68/rules.mk index 1102584d8a..d8ec423655 100644 --- a/keyboards/tada68/rules.mk +++ b/keyboards/tada68/rules.mk @@ -58,7 +58,7 @@ 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) +RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality (+4870) BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150) MIDI_ENABLE ?= no # MIDI controls AUDIO_ENABLE ?= no -- cgit v1.2.1 From 1a96b2cdc8895bd9f219e6c793aeee6ff7ce81f6 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 23 Sep 2016 20:57:36 -0400 Subject: Disables sleep LED by default --- keyboards/ergodox/ez/rules.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/ergodox/ez/rules.mk b/keyboards/ergodox/ez/rules.mk index 37e554b304..a9715beb85 100644 --- a/keyboards/ergodox/ez/rules.mk +++ b/keyboards/ergodox/ez/rules.mk @@ -71,6 +71,8 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 # comment out to disable the options. # +SLEEP_LED_ENABLE = no + ifndef QUANTUM_DIR include ../../../Makefile endif -- cgit v1.2.1 From f0441f08b87986f49479f1503b11a3d3f899d58e Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sun, 25 Sep 2016 16:32:06 +0200 Subject: - Added dbroqua layout for HHKB keyboard --- keyboards/hhkb/keymaps/dbroqua/keymap.c | 70 ++++++++++++++++++++++++++++++++ keyboards/hhkb/keymaps/dbroqua/readme.md | 9 ++++ 2 files changed, 79 insertions(+) create mode 100644 keyboards/hhkb/keymaps/dbroqua/keymap.c create mode 100644 keyboards/hhkb/keymaps/dbroqua/readme.md diff --git a/keyboards/hhkb/keymaps/dbroqua/keymap.c b/keyboards/hhkb/keymaps/dbroqua/keymap.c new file mode 100644 index 0000000000..ef43aae281 --- /dev/null +++ b/keyboards/hhkb/keymaps/dbroqua/keymap.c @@ -0,0 +1,70 @@ +/* + * dbroqua HHKB Layout + */ +#include "hhkb.h" + +#define BASE 0 +#define FN 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE Level: Default Layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | Left |Right| + * +-----------------------------------------------------------------------------------------+ + * | Gui | Alt | Space | AltGr | fn | + * `----------------------------------------------------------------´ + */ + [BASE] = KEYMAP( + KC_ESC, 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_BSLS, KC_GRV, \ + 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_BSPC, \ + KC_LCTL, 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_LEFT, KC_RGHT, \ + KC_LGUI, KC_LALT, /* */ KC_SPC, KC_RALT, MO(FN) + ), + + /* BASE Level: Default Layer + * ,-----------------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F0 | F11 | F12 | Ins | Del| + * |-----------------------------------------------------------------------------------------+ + * | Caps | | | | | | | | | | | Up | | | + * |-----------------------------------------------------------------------------------------+ + * | | Vol-| Vol+| Mute| | | |PrtSc| Home| PgUp| Left |Right| | + * |-----------------------------------------------------------------------------------------+ + * | | Prev| Play| Next| | | | | End |PgDwn| Down| Up | Down| + * +-----------------------------------------------------------------------------------------+ + * | | | | | | + * `----------------------------------------------------------------´ + */ + [FN] = KEYMAP( + KC_TRNS, 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_INS, KC_DEL, \ + KC_CAPS, 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_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \ + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_UP, KC_DOWN, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/hhkb/keymaps/dbroqua/readme.md b/keyboards/hhkb/keymaps/dbroqua/readme.md new file mode 100644 index 0000000000..0afebc84c8 --- /dev/null +++ b/keyboards/hhkb/keymaps/dbroqua/readme.md @@ -0,0 +1,9 @@ +# Dbroqua Layout + +* Online keyboard layout editor: http://www.keyboard-layout-editor.com/#/gists/78eaf35e80bb714eea80cb4049dedb01 + +# Programming Instructions: +Enter into programming mode and run the following command. +``` +$ sudo KEYMAP=dbroqua make dfu +``` \ No newline at end of file -- cgit v1.2.1 From 77099c777aa34e07548f64928d5d233c4cf35a5e Mon Sep 17 00:00:00 2001 From: Jeremy Cowgar Date: Sun, 25 Sep 2016 12:23:59 -0400 Subject: =?UTF-8?q?Added=20Jeremy=E2=80=99s=20Atreus=20Layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/atreus/keymaps/jeremy/keymap.c | 66 +++++++++++++++++++++++++++++++ keyboards/atreus/keymaps/jeremy/readme.md | 45 +++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 keyboards/atreus/keymaps/jeremy/keymap.c create mode 100644 keyboards/atreus/keymaps/jeremy/readme.md diff --git a/keyboards/atreus/keymaps/jeremy/keymap.c b/keyboards/atreus/keymaps/jeremy/keymap.c new file mode 100644 index 0000000000..90ec6f9049 --- /dev/null +++ b/keyboards/atreus/keymaps/jeremy/keymap.c @@ -0,0 +1,66 @@ +// This is the personal keymap of Jeremy Cowgar (@jcowgar). It is written for the programmer. + +#include "atreus.h" +#include "action_layer.h" +#include "keymap_colemak.h" + +#define PREVENT_STUCK_MODIFIERS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +#define ALPH 0 +#define NUMS 1 +#define CURS 2 +#define SYMB 3 +#define FKEY 4 + +// Some handy macros to keep the keymaps clean and easier to maintain +#define KM_SAVE LGUI(CM_S) +#define KM_CLSE LGUI(CM_W) +#define KM_OPEN LGUI(CM_O) + +#define KM_COPY LGUI(KC_C) +#define KM_CUT LGUI(KC_X) +#define KM_PAST LGUI(KC_V) +#define KM_UNDO LGUI(KC_Z) +#define KM_REDO LGUI(LSFT(KC_Z)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[ALPH] = { + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P}, + {KC_A, LT(NUMS, KC_S), LT(FKEY, KC_D), KC_F, KC_G, KC_TRNS, KC_H, KC_J, LT(CURS, KC_K), LT(SYMB, KC_L), KC_SCLN}, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH}, + {KC_LCTL, KC_ESC, KC_NO, KC_LSFT, KC_SPC, KC_LGUI, KC_ENT, KC_RSFT, KC_NO, KC_ESC, KC_RCTL} +}, +[NUMS] = { + {KC_TRNS, KC_TRNS, KC_TRNS, KC_ASTR, KC_SLSH, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_SLSH}, + {KC_TRNS, KC_TRNS, KC_EQL, KC_PLUS, KC_MINS, KC_TRNS, KC_LPRN, KC_4, KC_5, KC_6, KC_ASTR}, + {KC_TRNS, KC_TRNS, KC_DOT, KC_COMM, CM_SCLN, KC_TRNS, KC_RPRN, KC_1, KC_2, KC_3, KC_MINS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_EQL, KC_PLUS} +}, +[CURS] = { + {KC_TRNS, KC_BSPC, KC_UP, KC_DELT, KC_PGUP, KC_TRNS, KC_TRNS, KM_SAVE, KC_TRNS, KM_OPEN, KC_TRNS}, + {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KM_UNDO, KC_LALT, KC_TRNS, KC_LGUI, KC_TRNS}, + {KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_MPLY, KM_COPY, KM_REDO, KM_CLSE, KC_TRNS, KC_TRNS, KC_TRNS}, + {KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TAB, KM_CUT, KM_PAST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +[SYMB] = { + {KC_BSLS, KC_EXLM, KC_LABK, KC_RABK, CM_COLN, KC_TRNS, KC_UNDS, KC_DLR, KC_QUES, KC_TRNS, KC_PERC}, + {KC_AT, KC_AMPR, KC_LPRN, KC_RPRN, CM_SCLN, KC_TRNS, KC_COMM, KC_DOT, KC_QUOT, KC_TRNS, KC_TILD}, + {KC_HASH, KC_PIPE, KC_LCBR, KC_RCBR, KC_SLSH, KC_TRNS, KC_TRNS, KC_GRV, KC_DQT, KC_TRNS, KC_CIRC}, + {KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}, +[FKEY] = { + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} +}}; + +const uint16_t PROGMEM fn_actions[] = {}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) {} + + return MACRO_NONE; +}; diff --git a/keyboards/atreus/keymaps/jeremy/readme.md b/keyboards/atreus/keymaps/jeremy/readme.md new file mode 100644 index 0000000000..df0179a8e0 --- /dev/null +++ b/keyboards/atreus/keymaps/jeremy/readme.md @@ -0,0 +1,45 @@ +Jeremy's Atreus Key Mapping +=========================== + +I am a programmer by trade that suffers from the beginning stages of RSI. As a programmer I use letters, symbols and cursor navigation most often. To prevent strange finger gymnastics, I wrote a script to rank which non-letter characters occurred in my primary source projects most often and then placed these characters in the easiest to reach locations, for me. I made heavy use of momentary layer toggling. + +My layout is also geared toward a software based Colemak mapping. I would like it to be hardware, but I use my Laptop on the go frequently and thus my laptop keyboard. I have moved the keycaps to reflect the Colemak layout. My laptop is a MacBook Pro (2015). + +## Main Layers + +1. [Letters](http://www.keyboard-layout-editor.com/#/gists/6861cb9df09ce78efaddf8aa7471e3ac) +2. [Symbols](http://www.keyboard-layout-editor.com/#/gists/8956a18b508a78e93b9c38ec3fcccaa5) +3. [Navigation](http://www.keyboard-layout-editor.com/#/gists/6ed492b714a7f54eb1c5de09b87fd8c4) +4. [Numbers](http://www.keyboard-layout-editor.com/#/gists/399ceb5624e8388e48a3a5eacac8e973) +5. [Function Keys](http://www.keyboard-layout-editor.com/#/gists/7fd7dc24c7048316f3724b1893c64e89) + +## Notes + +### General + +Some characters can be accessed multiple ways. This was done because you may be in a given layer, such as numbers, where when doing math, you may need quick access to the parentheses characters for grouping. This prevents some layer switching. + +I own an ErgoDox and plan on porting this as a base layer, then using the extra keys the ErgoDox provides accordingly. My goal, though, is to be fully functional on this base setup and build everything into muscle memory. + +### Symbol Layer + +1. I placed characters that deal with an if statement close together, such as !, & and |. +2. All matching brace/bracket characters are together as well. + +### Number Layer + +1. Everything I did was a compromise when trying to mimic a ten-key. I did the best I could. +2. Operators are duplicated on the right and left. I do not find it comfortable to use my pinky much, so I tend to use my left hand for +, -, * and / but those were also placed on the right hand to mimic the ten-key. +3. Parentheses were added for typing on the calculator. + +### Cursor Layer + +1. It includes basic audio controls because they didn't really fit anywhere else +2. It contains basic file manipulation. I'm not sure that was a good idea. I do save all the time, but Cmd+S isn't exactly hard. +3. It contains the backspace and delete keys right on top of the left and right arrows. +4. Cmd and Opt keys are duplicated. This makes for very easy navigation, for example on a Mac, Opt+Left/Right moves word by word. It also backspaces or deletes word by word. + +### Function Layer + +1. Almost all other layers I saw grouped the F keys into a bunch of three. This only gives nine function keys in order if you attempt to stay as close to the home row as possible. I went with a group of four, which gives all twelve function keys to the right hand, one row below and above the home row. +2. I duplicated the Command and Option keys the same as on the cursor layer. This makes it dead easy to hit modified function keys such as Cmd+Opt+F5. It's also easy to toss in a Shift modifier in there with the right thumb since the bottom row is preserved. -- cgit v1.2.1 From c40ad11615b6cb1d08ec2d3b284d59df00c57c1f Mon Sep 17 00:00:00 2001 From: Dustin Date: Sun, 25 Sep 2016 19:04:20 -0700 Subject: Fix lets_split.c so that audio can be disabled Matching the use of `#ifdef AUDIO_ENABLE` used in `matrix_init_kb()` in order to compile firmware for the Let's Split keyboard without audio enabled. --- keyboards/lets_split/lets_split.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/keyboards/lets_split/lets_split.c b/keyboards/lets_split/lets_split.c index 574c116a75..c505d3a6e3 100644 --- a/keyboards/lets_split/lets_split.c +++ b/keyboards/lets_split/lets_split.c @@ -24,7 +24,9 @@ void matrix_init_kb(void) { }; void shutdown_user(void) { - PLAY_NOTE_ARRAY(tone_goodbye, false, 0); - _delay_ms(150); - stop_all_notes(); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); + #endif } -- cgit v1.2.1 From 04c0a1c3e2d9f81cd44dc7548f6135ca175edbe1 Mon Sep 17 00:00:00 2001 From: chwilk Date: Mon, 26 Sep 2016 01:04:33 -0500 Subject: Added ONEHAND_ENABLE to allow SWAP HANDS actions --- keyboards/ergodox/rules.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/ergodox/rules.mk b/keyboards/ergodox/rules.mk index ac63d4eff2..add64ec76f 100644 --- a/keyboards/ergodox/rules.mk +++ b/keyboards/ergodox/rules.mk @@ -26,3 +26,4 @@ SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work MIDI_ENABLE ?= no # MIDI controls UNICODE_ENABLE ?= yes # Unicode +ONEHAND_ENABLE ?= yes # Allow swapping hands of keyboard -- cgit v1.2.1 From 90fd0810dbd551b32e4be46f108b4974890299b9 Mon Sep 17 00:00:00 2001 From: chwilk Date: Mon, 26 Sep 2016 01:05:06 -0500 Subject: Updated kastyle keymap, including swap hands feature --- keyboards/ergodox/keymaps/kastyle/keymap.c | 98 +++++++++++++++++++----------- 1 file changed, 62 insertions(+), 36 deletions(-) diff --git a/keyboards/ergodox/keymaps/kastyle/keymap.c b/keyboards/ergodox/keymaps/kastyle/keymap.c index a920850039..4e3794a96f 100644 --- a/keyboards/ergodox/keymaps/kastyle/keymap.c +++ b/keyboards/ergodox/keymaps/kastyle/keymap.c @@ -1,3 +1,6 @@ +/* Setup to approximate a Kinesis Advantage with an eye to use in a + * Mac/OSX environment + * This version adds a hand swap feature to flip the keyboard */ #include "ergodox.h" #include "debug.h" #include "action_layer.h" @@ -18,10 +21,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * |Grv/L1| \ |AltShf| Left | Right| | Up | Down | [ | ] |Grv/L1| * `----------------------------------' `----------------------------------' * ,---------------. ,---------------. - * |Ctrl/Esc| Alt | | Alt |Ctrl/Esc| + * | LGUI |Al/Esc| |Al/Esc| RGUI | * ,------|--------|------| |------+--------+------. * | | | Home | | PgUp | | | * |Backsp| Del |------| |------| Enter | Space| @@ -31,33 +34,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // If it accepts an argument (i.e, is a function), it doesn't need KC_. // Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default - // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LGUI, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, - CTL_T(KC_ESC), ALT_T(KC_APP), - KC_HOME, - KC_BSPC,KC_DEL,KC_END, - // right hand - KC_APP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_QUOT, - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, - KC_LALT, CTL_T(KC_ESC), - KC_PGUP, - KC_PGDN,KC_ENT, KC_SPC - ), + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LGUI, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_FN1, KC_BSLS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, + KC_LGUI, ALT_T(KC_ESC), + KC_HOME, + KC_BSPC, KC_DEL, KC_END, + // right hand + KC_APP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), KC_QUOT, + MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1, + ALT_T(KC_ESC), KC_RGUI, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC +), + /* Keymap 1: Symbol Layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * | PrScr | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * | ScrLk | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * | Pause | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -74,14 +78,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // SYMBOLS [SYMB] = KEYMAP( // left hand - KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,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_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_SLCK, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, + KC_PAUS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, + KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, // right hand KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, @@ -92,6 +96,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + /* Keymap 2: Media and mouse keys * * ,--------------------------------------------------. ,--------------------------------------------------. @@ -135,10 +140,6 @@ KEYMAP( ), }; -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) -}; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function @@ -154,6 +155,31 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; +// swap-hands action needs a matrix to define the swap +const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + /* Left hand, matrix positions */ + {{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}}, + {{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}}, + {{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}}, + {{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}}, + {{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}}, + {{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}}, + {{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}}, + /* Right hand, matrix positions */ + {{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}}, + {{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}}, + {{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}}, + {{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}}, + {{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}}, + {{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}}, + {{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}}, +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_SWAP_HANDS_TAP_KEY(KC_GRV) // FN1 - Tap = Grave/Tilde - Hold Momentary swap hands +}; + + // Runs just one time when the keyboard initializes. void matrix_init_user(void) { -- cgit v1.2.1 From e1bfe13090debb25db8e44048cd0055e3680513c Mon Sep 17 00:00:00 2001 From: chwilk Date: Mon, 26 Sep 2016 15:49:10 -0500 Subject: Moved hand_swap_config array so all keyboards get it defined --- keyboards/ergodox/ergodox.c | 24 ++++++++++++++++++++++++ keyboards/ergodox/keymaps/kastyle/keymap.c | 21 --------------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/keyboards/ergodox/ergodox.c b/keyboards/ergodox/ergodox.c index e69de29bb2..c88c1ad890 100644 --- a/keyboards/ergodox/ergodox.c +++ b/keyboards/ergodox/ergodox.c @@ -0,0 +1,24 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + +// swap-hands action needs a matrix to define the swap +const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + /* Left hand, matrix positions */ + {{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}}, + {{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}}, + {{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}}, + {{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}}, + {{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}}, + {{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}}, + {{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}}, + /* Right hand, matrix positions */ + {{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}}, + {{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}}, + {{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}}, + {{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}}, + {{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}}, + {{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}}, + {{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}}, +}; + diff --git a/keyboards/ergodox/keymaps/kastyle/keymap.c b/keyboards/ergodox/keymaps/kastyle/keymap.c index 4e3794a96f..4679966869 100644 --- a/keyboards/ergodox/keymaps/kastyle/keymap.c +++ b/keyboards/ergodox/keymaps/kastyle/keymap.c @@ -155,31 +155,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; -// swap-hands action needs a matrix to define the swap -const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { - /* Left hand, matrix positions */ - {{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}}, - {{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}}, - {{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}}, - {{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}}, - {{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}}, - {{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}}, - {{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}}, - /* Right hand, matrix positions */ - {{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}}, - {{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}}, - {{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}}, - {{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}}, - {{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}}, - {{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}}, - {{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}}, -}; - const uint16_t PROGMEM fn_actions[] = { [1] = ACTION_SWAP_HANDS_TAP_KEY(KC_GRV) // FN1 - Tap = Grave/Tilde - Hold Momentary swap hands }; - // Runs just one time when the keyboard initializes. void matrix_init_user(void) { -- cgit v1.2.1 From 32cc2f6bd90233401a3590b3f975304dac6e4805 Mon Sep 17 00:00:00 2001 From: chwilk Date: Tue, 27 Sep 2016 11:27:09 -0500 Subject: Added description of kastyle keymap --- keyboards/ergodox/keymaps/kastyle/readme.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 keyboards/ergodox/keymaps/kastyle/readme.md diff --git a/keyboards/ergodox/keymaps/kastyle/readme.md b/keyboards/ergodox/keymaps/kastyle/readme.md new file mode 100644 index 0000000000..944286a818 --- /dev/null +++ b/keyboards/ergodox/keymaps/kastyle/readme.md @@ -0,0 +1,14 @@ +The kastyle keymap was originally intended to remap the ErgoDox EZ to more +closely approximate the layout of a Kinesis Advantage. Notable changes +over the stock ErgoDox layout include: + + * Re-arragnement of tab, enter, space, and delete to match the Kinesis + * Addition of print screen, pause, etc. keys following the kines-ish keymap + on L1 + * GUI keys have replaced Ctrl on the thumb keys (for Mac use), and Alt keys + are mapped to allow Esc on tap (good for Vi users) + * Most notably, the addition of a momentary one-handed mode for quick and + easy access to keys on the other half of the keyboard, e.g. while using a + mouse in one hand, one may add text to a dialogue box with the other without + having to reach across the keyboard or remove one's hand from the mouse. + -- cgit v1.2.1 From 7bca9bc402b41990cd73291758ebcbbadc6a6fd0 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:09:40 +0100 Subject: added a toggle between Mac and Windows base layers (with swapped cmd and ctrl) --- keyboards/planck/keymaps/callum/keymap.c | 59 ++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 6c34311339..b47f8eb05e 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -11,13 +11,15 @@ extern keymap_config_t keymap_config; // 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 _BASE 0 -#define _MOVE 1 -#define _SYMB 2 -#define _FUNC 3 +#define _MAC 0 +#define _WIN 1 +#define _MOVE 2 +#define _SYMB 3 +#define _FUNC 4 enum planck_keycodes { - BASE = SAFE_RANGE, + MAC = SAFE_RANGE, + WIN, MOVE, SYMB, FUNC, @@ -30,7 +32,7 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* BASE +/* BASE Mac * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | * |------+------+------+------+------+-------------+------+------+------+------+------| @@ -41,13 +43,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Func | Ctrl | Alt | GUI | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps | * `-----------------------------------------------------------------------------------' */ -[_BASE] = { +[_MAC] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} }, +/* BASE Windows + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Bksp | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Func | GUI | Alt | Ctrl | Symb |Enter |Space | Move | Ctrl | Alt | GUI |Caps | + * `-----------------------------------------------------------------------------------' + */ +[_WIN] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, + {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, + {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RCTL, KC_RALT, KC_RGUI, KC_CAPS} +}, + /* MOVE * ,-----------------------------------------------------------------------------------. * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | @@ -88,24 +108,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | * |-----------------------------------------------------------------------------------. - * | | Play | Prev | Next | BL+ | | | Lock | | | | | + * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | | | | | | | + * | | Mute | Vol- | Vol+ | BL- | | | | | | Win | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | |Reset | * `-----------------------------------------------------------------------------------' */ [_FUNC] = { {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, _______, _______}, - {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, _______, _______}, + {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, MAC, _______}, + {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, WIN, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } } }; +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { + case MAC: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_MAC); + } + return false; + break; + case WIN: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_WIN); + } + return false; + break; case MOVE: if (record->event.pressed) { layer_on(_MOVE); -- cgit v1.2.1 From f442348e50b50df37711af1e5f19c6a06f38d8dd Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:19:11 +0100 Subject: added close key for alt-f4 macro --- keyboards/planck/keymaps/callum/keymap.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index b47f8eb05e..56808aa8ca 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -23,7 +23,8 @@ enum planck_keycodes { MOVE, SYMB, FUNC, - LOCK + LOCK, + CLOSE }; // Fillers to make layering more clear @@ -110,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------------------------------. * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | | | | | Win | | + * | | Mute | Vol- | Vol+ | BL- | | |Close | | | Win | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | |Reset | * `-----------------------------------------------------------------------------------' @@ -118,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNC] = { {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, MAC, _______}, - {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, WIN, _______}, + {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, CLOSE, _______, _______, WIN, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } } @@ -183,6 +184,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case CLOSE: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_F4); + } else { + unregister_code(KC_F4); + unregister_code(KC_LALT); + } + return false; + break; } return true; } -- cgit v1.2.1 From 0c243d0d5d9edde9b96bfa05c2a504b2cbebbc7c Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:47:11 +0100 Subject: updated readme --- keyboards/planck/keymaps/callum/keymap.c | 30 ++++++------ keyboards/planck/keymaps/callum/readme.md | 81 ++++++++++++++++++++++++++----- 2 files changed, 83 insertions(+), 28 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 56808aa8ca..f5a816f4ee 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -39,9 +39,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Bksp | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | + * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | Ctrl | Alt | GUI | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps | + * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | * `-----------------------------------------------------------------------------------' */ [_MAC] = { @@ -57,9 +57,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Bksp | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | + * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | GUI | Alt | Ctrl | Symb |Enter |Space | Move | Ctrl | Alt | GUI |Caps | + * | Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | * `-----------------------------------------------------------------------------------' */ [_WIN] = { @@ -71,11 +71,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* MOVE * ,-----------------------------------------------------------------------------------. - * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | + * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | | Left | Down |Right | | | Left | Down |Right | | Del | + * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | |Pg Up |Pg Dn | | |Pg Dn |Pg Up | | | | + * | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -89,9 +89,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* SYMB * ,-----------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | - * |-----------------------------------------------------------------------------------. - * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | + * |-----------------------------------------------------------------------------------| + * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -107,13 +107,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* FUNC * ,-----------------------------------------------------------------------------------. - * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | - * |-----------------------------------------------------------------------------------. - * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | + * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | + * |-----------------------------------------------------------------------------------| + * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | |Close | | | Win | | + * | | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | |Reset | + * | | | | | | | | | | | | Reset| * `-----------------------------------------------------------------------------------' */ [_FUNC] = { diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index b70de3f1e2..8125907655 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -6,38 +6,93 @@ This is a layout for the grid planck, built with a few ideals in mind: - The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. - There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make. - Backspace should be in the “capslock position” in the colemak tradition. +- The keyboard should be usable on any operating system without software changes. For me this means being able to swap the `GUI` key and `Ctrl` key in firmware so that `Cmd-z,x,c,v,…` becomes `Ctrl-z,x,c,v,…` when swapping from macOS to Windows. -We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. +We have four layers. A `BASE` layer (which is either `BASE Mac` or `BASE Windows`), in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. ## The `BASE` layer -![](http://i.imgur.com/tVNI3SE.png) - -This is the default layer; in [colemak](https://colemak.com). `esc` and `del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. - -The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. +For Mac +``` +,-----------------------------------------------------------------------------------. +| Tab | Q | W | F | P | G | J | L | U | Y | ; | - | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Bksp | A | R | S | T | D | H | N | E | I | O | " | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| Z | X | C | V | B | K | M | , | . | / | Shift| +|------+------+------+------+------+------+------+------+------+------+------+------| +| Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | +`-----------------------------------------------------------------------------------' +``` + +For Windows +``` + ,-----------------------------------------------------------------------------------. +| Tab | Q | W | F | P | G | J | L | U | Y | ; | - | +|------+------+------+------+-------+-------------+------+------+------+------+------| +| Bksp | A | R | S | T | D | H | N | E | I | O | " | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| Z | X | C | V | B | K | M | , | . | / | Shift| +|------+------+------+------+------+------+------+------+------+------+------+------| +| Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | +`-----------------------------------------------------------------------------------' +``` + +One of the two above layers is set as the default layer at any one time; see `FUNC`. The basic layout is [colemak](https://colemak.com). `Esc` and `Del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `Caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `Enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. + +The `MOVE` and `SYMB` layers are reached by holding down the `Move` and `Symb` keys respectively. The `FUNC` layer is reached by holding down both the `Move` and `Symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. ## The `MOVE` layer -![](http://i.imgur.com/KXRSuHT.png) +``` +,-----------------------------------------------------------------------------------. +| Esc | | Home | Up | End | | | Home | Up | End | | Esc | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Del | | Left | Down | Right| | | Left | Down | Right| | Del | +|------+------+------+------+------+------|------+------+------+------+------+------| +| | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | | +`-----------------------------------------------------------------------------------' +``` This is fairly self explanatory. I almost exclusively use the right hand cluster so that movement is a one handed affair, but the left hand cluster is there if it’s needed. -On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ticking *Use PC Style Home/End #2* and *Use PC Style PageUp/PageDown* so that `home` and `end` jump you to the beginning and end of the line respectively and so that `pg up` and `pg dn` move the cursor instead of just scrolling. +On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ticking *Use PC Style Home/End #2* and *Use PC Style PageUp/PageDown* so that `Home` and `End` jump you to the beginning and end of the line respectively and so that `Pg Up` and `Pg Dn` move the cursor instead of just scrolling. None of the modifiers are overwritten so that `shift-alt-arrows` etc work as expected. ## The `SYMB` layer -![](http://i.imgur.com/thh1ne2.png) +``` +,-----------------------------------------------------------------------------------. +| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | +|-----------------------------------------------------------------------------------| +| Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | +|------+------+------+------+------+-------------+------+------+------+------+------| +| | ~ | ` | + | = | | | \ | [ | ] | { | } | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | | +`-----------------------------------------------------------------------------------' +``` The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, arranged roughly so that the most used symbols are accessible with the strongest fingers. -`esc` and `del` are repeated here since I wanted to be able to reach either, one handed, with either hand. +`Esc` and `Del` are repeated here since I wanted to be able to reach either, one handed, with either hand. Again none of the modifiers are overwritten so that shortcuts involving numbers or symbols work as expected. ## The `FUNC` layer -![](http://i.imgur.com/1VKFBBU.png) - -The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.) +``` +,-----------------------------------------------------------------------------------. +| F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | +|-----------------------------------------------------------------------------------| +| | Play | Prev | Next | BL+ | | | Lock | | | Mac | | +|------+------+------+------+------+------|------+------+------+------+------+------| +| | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | Reset| +`-----------------------------------------------------------------------------------' +``` + +`BL+` and `BL-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. `Lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.) `Close` sends `alt-f4` to make that shortcut easier to reach. `Mac` and `Win` set the default layer to the Mac and Windows `BASE` layers respecitevly. ## Other changes from the default I have LEDs and sound disabled, simply because I have no need of them. -- cgit v1.2.1 From 65f035933bc386ee2c78dda7c22419c36f441920 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:52:55 +0100 Subject: Update readme.md --- keyboards/planck/keymaps/callum/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 8125907655..2e59c00d6d 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -26,9 +26,9 @@ For Mac For Windows ``` - ,-----------------------------------------------------------------------------------. +,-----------------------------------------------------------------------------------. | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | -|------+------+------+------+-------+-------------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Bksp | A | R | S | T | D | H | N | E | I | O | " | |------+------+------+------+------+------|------+------+------+------+------+------| | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| -- cgit v1.2.1 From 1c1aa729b1c2c996c3e58fcbcec9dfebb79261eb Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:55:27 +0100 Subject: Update readme.md --- keyboards/planck/keymaps/callum/readme.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 2e59c00d6d..7a771130ab 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -15,9 +15,9 @@ For Mac ``` ,-----------------------------------------------------------------------------------. | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | -|------+------+------+------+------+-------------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Bksp | A | R | S | T | D | H | N | E | I | O | " | -|------+------+------+------+------+------|------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| |------+------+------+------+------+------+------+------+------+------+------+------| | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | @@ -30,7 +30,7 @@ For Windows | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | |------+------+------+------+------+------+------+------+------+------+------+------| | Bksp | A | R | S | T | D | H | N | E | I | O | " | -|------+------+------+------+------+------|------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| |------+------+------+------+------+------+------+------+------+------+------+------| | Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | @@ -45,9 +45,9 @@ The `MOVE` and `SYMB` layers are reached by holding down the `Move` and `Symb` k ``` ,-----------------------------------------------------------------------------------. | Esc | | Home | Up | End | | | Home | Up | End | | Esc | -|------+------+------+------+------+-------------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Del | | Left | Down | Right| | | Left | Down | Right| | Del | -|------+------+------+------+------+------|------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | | | | | | @@ -64,9 +64,9 @@ None of the modifiers are overwritten so that `shift-alt-arrows` etc work as exp ``` ,-----------------------------------------------------------------------------------. | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | -|-----------------------------------------------------------------------------------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | -|------+------+------+------+------+-------------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | | ~ | ` | + | = | | | \ | [ | ] | { | } | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | | | | | | @@ -83,9 +83,9 @@ Again none of the modifiers are overwritten so that shortcuts involving numbers ``` ,-----------------------------------------------------------------------------------. | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | -|-----------------------------------------------------------------------------------| +|------+------+------+------+------+------+------+------+------+------+------+------| | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | -|------+------+------+------+------+------|------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | | | | | Reset| -- cgit v1.2.1 From d387534687145c473bf018677dea4916717affe4 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:59:36 +0100 Subject: fixed comments --- keyboards/planck/keymaps/callum/keymap.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index f5a816f4ee..751af9eb9f 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -36,9 +36,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* BASE Mac * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Bksp | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | @@ -54,9 +54,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* BASE Windows * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Bksp | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| * | Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | @@ -72,9 +72,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* MOVE * ,-----------------------------------------------------------------------------------. * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | - * |------+------+------+------+------+-------------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | - * |------+------+------+------+------+------|------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | @@ -90,9 +90,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* SYMB * ,-----------------------------------------------------------------------------------. * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | - * |-----------------------------------------------------------------------------------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | @@ -108,9 +108,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* FUNC * ,-----------------------------------------------------------------------------------. * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | - * |-----------------------------------------------------------------------------------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | - * |------+------+------+------+------+------|------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | Reset| -- cgit v1.2.1 From 848bb6df4358b44e24b3791482a0944c78d18cdb Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Wed, 7 Sep 2016 20:45:23 +0100 Subject: changed RALT to LALT on Windows --- keyboards/planck/keymaps/callum/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 751af9eb9f..5754b17721 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RCTL, KC_RALT, KC_RGUI, KC_CAPS} + {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RCTL, KC_LALT, KC_RGUI, KC_CAPS} }, /* MOVE -- cgit v1.2.1 From ddb8eb842d354f92b1cea12e43f571ea774744ad Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Wed, 28 Sep 2016 08:04:38 +0100 Subject: removed windows layer and updated brightness keys for macOS Sierra --- keyboards/planck/keymaps/callum/keymap.c | 90 +++++--------------------------- 1 file changed, 14 insertions(+), 76 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 5754b17721..0ac1906bac 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -11,20 +11,15 @@ extern keymap_config_t keymap_config; // 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 _MAC 0 -#define _WIN 1 -#define _MOVE 2 -#define _SYMB 3 -#define _FUNC 4 +#define _BASE 0 +#define _MOVE 1 +#define _SYMB 2 +#define _FUNC 3 enum planck_keycodes { - MAC = SAFE_RANGE, - WIN, MOVE, SYMB, - FUNC, - LOCK, - CLOSE + FUNC }; // Fillers to make layering more clear @@ -33,7 +28,7 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* BASE Mac +/* BASE * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -44,31 +39,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | * `-----------------------------------------------------------------------------------' */ -[_MAC] = { +[_BASE] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} }, -/* BASE Windows - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Bksp | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | - * `-----------------------------------------------------------------------------------' - */ -[_WIN] = { - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, - {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RCTL, KC_LALT, KC_RGUI, KC_CAPS} -}, - /* MOVE * ,-----------------------------------------------------------------------------------. * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | @@ -81,9 +58,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_MOVE] = { - {KC_ESC, _______, KC_HOME, KC_UP, KC_END, _______, _______, KC_HOME, KC_UP, KC_END, _______, KC_ESC}, - {KC_DEL, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL}, - {_______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______}, + {KC_ESC, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_ESC}, + {KC_DEL, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_DEL}, + {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, XXXXXXX, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, @@ -109,41 +86,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | + * | | Play | Prev | Next | BL+ | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | + * | | Mute | Vol- | Vol+ | BL- | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | Reset| * `-----------------------------------------------------------------------------------' */ [_FUNC] = { {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, MAC, _______}, - {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, CLOSE, _______, _______, WIN, _______}, + {XXXXXXX, KC_MPLY, KC_MPRV, KC_MNXT, KC_F15, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, + {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_F14, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } } }; -void persistant_default_layer_set(uint16_t default_layer) { - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case MAC: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_MAC); - } - return false; - break; - case WIN: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_WIN); - } - return false; - break; case MOVE: if (record->event.pressed) { layer_on(_MOVE); @@ -172,28 +132,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case LOCK: - if (record->event.pressed) { - register_code(KC_RSFT); - register_code(KC_RCTL); - register_code(KC_POWER); - } else { - unregister_code(KC_POWER); - unregister_code(KC_RCTL); - unregister_code(KC_RSFT); - } - return false; - break; - case CLOSE: - if (record->event.pressed) { - register_code(KC_LALT); - register_code(KC_F4); - } else { - unregister_code(KC_F4); - unregister_code(KC_LALT); - } - return false; - break; } return true; } -- cgit v1.2.1 From 65b0eff6d863d458464c35a8571071ad4a519af5 Mon Sep 17 00:00:00 2001 From: Chris McLennon Date: Wed, 28 Sep 2016 13:24:29 -0500 Subject: Contributing new keymap to Ergodox --- keyboards/ergodox/keymaps/mclennon_osx/README.md | 5 + keyboards/ergodox/keymaps/mclennon_osx/config.h | 93 +++++++++++++++ keyboards/ergodox/keymaps/mclennon_osx/keymap.c | 144 +++++++++++++++++++++++ 3 files changed, 242 insertions(+) create mode 100644 keyboards/ergodox/keymaps/mclennon_osx/README.md create mode 100644 keyboards/ergodox/keymaps/mclennon_osx/config.h create mode 100644 keyboards/ergodox/keymaps/mclennon_osx/keymap.c diff --git a/keyboards/ergodox/keymaps/mclennon_osx/README.md b/keyboards/ergodox/keymaps/mclennon_osx/README.md new file mode 100644 index 0000000000..60980d043d --- /dev/null +++ b/keyboards/ergodox/keymaps/mclennon_osx/README.md @@ -0,0 +1,5 @@ +# Ergodox EZ for OS X + +This keymapping is designed to be reasonably familiar to an ordinary Mac keyboard while taking advantage of the Ergodox EZ's features. Caps lock instead enables a layer which allows a user to use HJKL as arrow keys and to control media. Shift and control have additional mappings on S and D to provide easier access while holding down caps lock. + +If you choose to compile this yourself, be sure to compile with `#define PREVENT_STUCK_MODIFIERS` in your `config.h`. Firmware built using [qmk_firmware](https://github.com/jackhumbert/qmk_firmware/). diff --git a/keyboards/ergodox/keymaps/mclennon_osx/config.h b/keyboards/ergodox/keymaps/mclennon_osx/config.h new file mode 100644 index 0000000000..99cbaf0003 --- /dev/null +++ b/keyboards/ergodox/keymaps/mclennon_osx/config.h @@ -0,0 +1,93 @@ +/* +Copyright 2012 Jun Wako +Copyright 2013 Oleg Kostyuk + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1307 +#define DEVICE_VER 0x0001 +#define MANUFACTURER ErgoDox EZ +#define PRODUCT ErgoDox EZ +#define DESCRIPTION t.m.k. keyboard firmware for Ergodox + +/* key matrix size */ +#define MATRIX_ROWS 14 +#define MATRIX_COLS 6 + +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 3 +#define MOUSEKEY_TIME_TO_MAX 10 + +#define TAPPING_TOGGLE 1 + +#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define ROWS (int []){ D0, D5, B5, B6 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 2 +#define TAPPING_TERM 200 +#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) + +/* 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_LCTL) | MOD_BIT(KC_RCTL)) || \ + keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ +) + +/* + * 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 +//#define DEBUG_MATRIX_SCAN_RATE + +// CUSTOM +#define PREVENT_STUCK_MODIFIERS + +#endif diff --git a/keyboards/ergodox/keymaps/mclennon_osx/keymap.c b/keyboards/ergodox/keymaps/mclennon_osx/keymap.c new file mode 100644 index 0000000000..627ff01e4a --- /dev/null +++ b/keyboards/ergodox/keymaps/mclennon_osx/keymap.c @@ -0,0 +1,144 @@ +// Media keys work on OSX, but not on Windows. +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // Default layer +#define AUXI 1 // Auxiliary layer + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ~` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | -_ | += | Bkspc | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | L1 | | Del | Y | U | I | O | P | |\ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | L1 | A | S | D | F | G |------| |------| H | J | K | L | ;: | Enter | + * |--------+------+------+------+------+------| {[ | | }] |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | <, | >. | ?/ | "' | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |LCtrl | | | | Esc | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | |Power | | + * ,------|------|------| |------+--------+------. + * | | | | | | | | + * | LGui | LAlt |------| |------| Bkspc |Space | + * | | | | | Del | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(1), + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, + KC_LCTL, KC_TRNS,KC_TRNS,KC_TRNS,KC_ESC, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_LGUI,KC_LALT,KC_TRNS, + + // right hand + KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, + KC_DELETE, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, + KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_ENT, + KC_RBRC, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_QUOT, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_PWR, KC_TRNS, + KC_TRNS, + KC_DELETE, KC_BSPC, KC_SPC + ), +/* Keymap 1: Auxiliary Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | TRNS | | | Mute | VolDn| VolUp| Play | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | TRNS | |LShift| LCtrl| | |------| |------| LEFT | DOWN | UP |RIGHT | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | LShift | | | | | | | | | MPrv | MNxt | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |LCtrl | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | LGui | LAlt |------| |------| Bkspc| Space| + * | | | | | Del | | | + * `--------------------' `--------------------' + */ +// AUXILIARY +[AUXI] = KEYMAP( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LSHIFT,KC_LCTL, KC_TRNS, KC_TRNS, + KC_LSHIFT,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_LGUI, KC_LALT, KC_TRNS, + // right hand + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS, KC_TRNS, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_TRNS, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_PWR, KC_TRNS, + KC_TRNS, + KC_DELETE, KC_BSPC, KC_SPC +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(AUXI) // FN1 - Momentary Layer 1 (Auxiliary) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; -- cgit v1.2.1 From cce294df86be7c430f8764ae3330991e66138f43 Mon Sep 17 00:00:00 2001 From: Chris McLennon Date: Wed, 28 Sep 2016 14:44:41 -0500 Subject: Remove config.h --- keyboards/ergodox/keymaps/mclennon_osx/config.h | 93 ------------------------- 1 file changed, 93 deletions(-) delete mode 100644 keyboards/ergodox/keymaps/mclennon_osx/config.h diff --git a/keyboards/ergodox/keymaps/mclennon_osx/config.h b/keyboards/ergodox/keymaps/mclennon_osx/config.h deleted file mode 100644 index 99cbaf0003..0000000000 --- a/keyboards/ergodox/keymaps/mclennon_osx/config.h +++ /dev/null @@ -1,93 +0,0 @@ -/* -Copyright 2012 Jun Wako -Copyright 2013 Oleg Kostyuk - -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x1307 -#define DEVICE_VER 0x0001 -#define MANUFACTURER ErgoDox EZ -#define PRODUCT ErgoDox EZ -#define DESCRIPTION t.m.k. keyboard firmware for Ergodox - -/* key matrix size */ -#define MATRIX_ROWS 14 -#define MATRIX_COLS 6 - -#define MOUSEKEY_DELAY 100 -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_MAX_SPEED 3 -#define MOUSEKEY_TIME_TO_MAX 10 - -#define TAPPING_TOGGLE 1 - -#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define ROWS (int []){ D0, D5, B5, B6 } - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 2 -#define TAPPING_TERM 200 -#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) - -/* 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_LCTL) | MOD_BIT(KC_RCTL)) || \ - keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ -) - -/* - * 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 -//#define DEBUG_MATRIX_SCAN_RATE - -// CUSTOM -#define PREVENT_STUCK_MODIFIERS - -#endif -- cgit v1.2.1 From 8fa41f1ca1b35e4d0535bc643082ff4197b27f2d Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Wed, 28 Sep 2016 23:15:35 +0100 Subject: big restructure now I only have to consider macOS, also added mouse, more function keys, and some neat macros --- keyboards/planck/keymaps/callum/keymap.c | 139 ++++++++++++++++++++++++++----- 1 file changed, 116 insertions(+), 23 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 0ac1906bac..38c362fcbe 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -14,12 +14,19 @@ extern keymap_config_t keymap_config; #define _BASE 0 #define _MOVE 1 #define _SYMB 2 -#define _FUNC 3 +#define _MOUSE 3 +#define _FUNC 4 enum planck_keycodes { - MOVE, + MOVE = SAFE_RANGE, SYMB, - FUNC + FUNC, + CMDLEFT, + CMDRGHT, + BELOW, + ABOVE, + VOLUP, + VOLDN }; // Fillers to make layering more clear @@ -36,14 +43,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | + * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Func | * `-----------------------------------------------------------------------------------' */ [_BASE] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} + {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, FUNC } }, /* MOVE @@ -52,16 +59,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | + * | | | | Pg Up| Pg Dn| Above| | Pg Dn| Pg Up| | Caps | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | | | | Below| | | | | | | * `-----------------------------------------------------------------------------------' */ [_MOVE] = { - {KC_ESC, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_ESC}, - {KC_DEL, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_DEL}, - {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, XXXXXXX, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + {KC_ESC, XXXXXXX, CMDLEFT, KC_UP, CMDRGHT, XXXXXXX, XXXXXXX, CMDLEFT, KC_UP, CMDRGHT, XXXXXXX, KC_ESC }, + {KC_DEL, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL }, + {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, ABOVE, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______}, + {_______, _______, _______, _______, _______, BELOW, _______, _______, _______, _______, _______, _______} }, /* SYMB @@ -82,22 +89,40 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, +/* MOUSE + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_MOUSE] = { + {XXXXXXX, XXXXXXX, KC_ACL2, KC_ACL1, KC_ACL0, XXXXXXX, XXXXXXX, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX}, + {XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX}, + {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_D, KC_WH_U, XXXXXXX, XXXXXXX, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + /* FUNC * ,-----------------------------------------------------------------------------------. - * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | + * | Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Vol+ | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Play | Prev | Next | BL+ | | | | | | | | + * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | Vol- | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | | | | | | | + * | | F21 | F22 | F23 | F24 | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | Reset| + * | | | | | Prev | Mute | Play | Next | | | | | * `-----------------------------------------------------------------------------------' */ [_FUNC] = { - {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - {XXXXXXX, KC_MPLY, KC_MPRV, KC_MNXT, KC_F15, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_F14, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } + {RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, VOLUP }, + {XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, VOLDN }, + {_______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, + {_______, _______, _______, _______, KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT, _______, _______, _______, _______} } }; @@ -107,20 +132,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case MOVE: if (record->event.pressed) { layer_on(_MOVE); - update_tri_layer(_MOVE, _SYMB, _FUNC); + update_tri_layer(_MOVE, _SYMB, _MOUSE); } else { layer_off(_MOVE); - update_tri_layer(_MOVE, _SYMB, _FUNC); + update_tri_layer(_MOVE, _SYMB, _MOUSE); } return false; break; case SYMB: if (record->event.pressed) { layer_on(_SYMB); - update_tri_layer(_MOVE, _SYMB, _FUNC); + update_tri_layer(_MOVE, _SYMB, _MOUSE); } else { layer_off(_SYMB); - update_tri_layer(_MOVE, _SYMB, _FUNC); + update_tri_layer(_MOVE, _SYMB, _MOUSE); } return false; break; @@ -132,6 +157,74 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case CMDLEFT: + if (record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_LEFT); + } else { + unregister_code(KC_LEFT); + unregister_code(KC_LGUI); + } + return false; + break; + case CMDRGHT: + if (record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_RGHT); + } else { + unregister_code(KC_RGHT); + unregister_code(KC_LGUI); + } + return false; + break; + case BELOW: + if (record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_RGHT); + unregister_code(KC_RGHT); + unregister_code(KC_LGUI); + register_code(KC_ENT); + unregister_code(KC_ENT); + } + return false; + break; + case ABOVE: + if (record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_LEFT); + unregister_code(KC_LEFT); + unregister_code(KC_LGUI); + register_code(KC_ENT); + unregister_code(KC_ENT); + register_code(KC_UP); + unregister_code(KC_UP); + } + return false; + break; + case VOLUP: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_LSFT); + register_code(KC_VOLU); + } else { + unregister_code(KC_VOLU); + unregister_code(KC_LSFT); + unregister_code(KC_LALT); + } + return false; + break; + case VOLDN: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_LSFT); + register_code(KC_VOLD); + } else { + unregister_code(KC_VOLD); + unregister_code(KC_LSFT); + unregister_code(KC_LALT); + } + return false; + break; } return true; } -- cgit v1.2.1 From 3d45860dc280c7595763256ecd4874220abf0ab2 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 28 Sep 2016 20:19:28 -0500 Subject: Updating Vision to beta layout. --- keyboards/vision_division/config.h | 19 +- keyboards/vision_division/keymaps/default/Makefile | 26 +- keyboards/vision_division/keymaps/default/config.h | 46 +- keyboards/vision_division/keymaps/default/keymap.c | 940 ++++++++++----------- keyboards/vision_division/matrix_types.h | 33 +- keyboards/vision_division/rules.mk | 2 +- keyboards/vision_division/vision_division.c | 40 + 7 files changed, 570 insertions(+), 536 deletions(-) diff --git a/keyboards/vision_division/config.h b/keyboards/vision_division/config.h index f50378ffa8..1f8466a546 100644 --- a/keyboards/vision_division/config.h +++ b/keyboards/vision_division/config.h @@ -26,10 +26,9 @@ along with this program. If not, see . /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION ROW2COL -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 - +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCING_DELAY 5 @@ -124,10 +123,18 @@ along with this program. If not, see . */ /* disable debug print */ -//#define NO_DEBUG +// #ifndef NO_DEBUG +// # define NO_DEBUG +// #endif /* disable print */ -//#define NO_PRINT +// #ifndef NO_PRINT +// # define NO_PRINT +// #endif + +/* Only print user print statements */ +// #define USER_PRINT + /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboards/vision_division/keymaps/default/Makefile b/keyboards/vision_division/keymaps/default/Makefile index ecbe7e1ab2..5a930e85ed 100644 --- a/keyboards/vision_division/keymaps/default/Makefile +++ b/keyboards/vision_division/keymaps/default/Makefile @@ -2,19 +2,19 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # 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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # 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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/vision_division/keymaps/default/config.h b/keyboards/vision_division/keymaps/default/config.h index 16740fb15b..efd43f41b4 100644 --- a/keyboards/vision_division/keymaps/default/config.h +++ b/keyboards/vision_division/keymaps/default/config.h @@ -4,25 +4,44 @@ #include "../../config.h" #include "matrix_types.h" - /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED -#define PRODUCT_ID GET_PID(NUMERIC_NORMAL, HOMING_MAX_TEENSY) #define DEVICE_VER 0x0001 #define MANUFACTURER IBNobody #define PRODUCT Vision Division #define DESCRIPTION Full / Split Keyboard - -#define MATRIX_ROWS 6 +#define MATRIX_ROWS 6 #define MATRIX_ROW_PINS { C2, C3, F4, F5, F6, F7 } -#define MATRIX_COLS GET_MATRIX_COLS(NUMERIC_NORMAL, HOMING_MAX_TEENSY) -#define MATRIX_COL_PINS GET_MATRIX_COL_PINS(NUMERIC_NORMAL, HOMING_MAX_TEENSY) +// !!! MAKE SURE THAT THE LEFT/RIGHT PCB DEFINES MATCH ON ALL OF THESE COLUMNS -#define UNUSED_PINS +// **LEFT** **RIGHT** +#define PRODUCT_ID GET_PID( NUMERIC_NORMAL, NUMERIC_MAX_TEENSY) +#define MATRIX_COLS GET_MATRIX_COLS( NUMERIC_NORMAL, NUMERIC_MAX_TEENSY) +#define MATRIX_COL_PINS GET_MATRIX_COL_PINS( NUMERIC_NORMAL, NUMERIC_MAX_TEENSY) -/*#define KEYMAP( \ +#define KEYMAP(MATRIX_LAYER, \ + k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, k11C, \ + k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, k21C, \ + k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, k31C, \ + k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, k41C, \ + k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, k51C, \ + k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, k61C \ +) \ +KEYMAP_MASTER(MATRIX_LAYER, NUMERIC_NORMAL, NUMERIC_MAX_TEENSY, \ + k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, KC_NO, KC_NO, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, k11C, \ + k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, KC_NO, KC_NO, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, k21C, \ + k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, KC_NO, KC_NO, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, k31C, \ + k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, KC_NO, KC_NO, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, k41C, \ + k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, KC_NO, KC_NO, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, k51C, \ + k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, KC_NO, KC_NO, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, k61C \ +) + +// Example Keymap Macros + +/* +#define KEYMAP(MATRIX_LAYER, \ k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, k10B, k10C, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, k11C, \ k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, k20B, k20C, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, k21C, \ k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, k30B, k30C, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, k31C, \ @@ -30,16 +49,18 @@ k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, k50B, k50C, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, k51C, \ k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, k60B, k60C, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, k61C \ ) \ -KEYMAP_MASTER(NUMERIC_MAX_TEENSY, NUMERIC_MAX, \ +KEYMAP_MASTER(MATRIX_LAYER, NUMERIC_MAX_TEENSY, NUMERIC_MAX, \ k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, k10B, k10C, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, k11C, \ k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, k20B, k20C, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, k21C, \ k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, k30B, k30C, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, k31C, \ k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, k40B, k40C, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, k41C, \ k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, k50B, k50C, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, k51C, \ k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, k60B, k60C, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, k61C \ -)*/ +) +*/ -#define KEYMAP( \ +/* +#define KEYMAP(MATRIX_LAYER, \ k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, \ k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, \ k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, \ @@ -47,7 +68,7 @@ KEYMAP_MASTER(NUMERIC_MAX_TEENSY, NUMERIC_MAX, \ k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, \ k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B \ ) \ -KEYMAP_MASTER(NUMERIC_NORMAL, HOMING_MAX_TEENSY, \ +KEYMAP_MASTER(MATRIX_LAYER, NUMERIC_NORMAL, HOMING_MAX_TEENSY, \ k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, KC_NO, KC_NO, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, KC_NO, \ k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, KC_NO, KC_NO, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, KC_NO, \ k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, KC_NO, KC_NO, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, KC_NO, \ @@ -55,5 +76,6 @@ KEYMAP_MASTER(NUMERIC_NORMAL, HOMING_MAX_TEENSY, \ k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, KC_NO, KC_NO, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, KC_NO, \ k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, KC_NO, KC_NO, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, KC_NO \ ) +*/ #endif \ No newline at end of file diff --git a/keyboards/vision_division/keymaps/default/keymap.c b/keyboards/vision_division/keymaps/default/keymap.c index b8cef9c759..64118abdce 100644 --- a/keyboards/vision_division/keymaps/default/keymap.c +++ b/keyboards/vision_division/keymaps/default/keymap.c @@ -8,46 +8,70 @@ #include "song_list.h" #endif -#define LAYER_QWERTY 0 -#define LAYER_COLEMAK 1 -#define LAYER_DVORAK 2 -#define LAYER_UPPER 3 -#define LAYER_LOWER 4 -#define LAYER_FUNCTION 5 -#define LAYER_MOUSE 6 -#define LAYER_ADJUST 7 - -#define MACRO_QWERTY 0 -#define MACRO_COLEMAK 1 -#define MACRO_DVORAK 2 -#define MACRO_UPPER 3 -#define MACRO_LOWER 4 -#define MACRO_FUNCTION 5 -#define MACRO_MOUSE 6 -#define MACRO_TIMBRE_1 7 -#define MACRO_TIMBRE_2 8 -#define MACRO_TIMBRE_3 9 -#define MACRO_TIMBRE_4 10 -#define MACRO_TEMPO_U 11 -#define MACRO_TEMPO_D 12 -#define MACRO_TONE_DEFAULT 13 -#define MACRO_MUSIC_TOGGLE 14 -#define MACRO_AUDIO_TOGGLE 16 -#define MACRO_INC_VOICE 18 -#define MACRO_DEC_VOICE 19 -#define MACRO_BACKLIGHT 20 -#define MACRO_BREATH_TOGGLE 21 -#define MACRO_BREATH_SPEED_INC 23 -#define MACRO_BREATH_SPEED_DEC 24 -#define MACRO_BREATH_DEFAULT 25 +enum keyboard_layers { + LAYER_QWERTY = 0, + LAYER_UPPER, + LAYER_LOWER, + LAYER_FUNCTION, + LAYER_MOUSE, + LAYER_ADJUST, +}; +enum keyboard_macros { + MACRO_QWERTY = 0, + MACRO_UPPER, + MACRO_LOWER, + MACRO_FUNCTION, + MACRO_MOUSE, + MACRO_TIMBRE_1, + MACRO_TIMBRE_2, + MACRO_TIMBRE_3, + MACRO_TIMBRE_4, + MACRO_TEMPO_U, + MACRO_TEMPO_D, + MACRO_TONE_DEFAULT, + MACRO_MUSIC_TOGGLE, + MACRO_AUDIO_TOGGLE, + MACRO_INC_VOICE, + MACRO_DEC_VOICE, + MACRO_BACKLIGHT, + MACRO_BREATH_TOGGLE, + MACRO_BREATH_SPEED_INC, + MACRO_BREATH_SPEED_DEC, + MACRO_BREATH_DEFAULT, + MACRO_MOUSE_MOVE_UL, + MACRO_MOUSE_MOVE_UR, + MACRO_MOUSE_MOVE_DL, + MACRO_MOUSE_MOVE_DR, + MACRO_HELP, + MACRO_HELP_1, + MACRO_HELP_2, + MACRO_HELP_3, + MACRO_HELP_4, + MACRO_HELP_5, + MACRO_HELP_6, + MACRO_HELP_7, + MACRO_HELP_8, + MACRO_HELP_9, + MACRO_HELP_0, + MACRO_GENERAL_1, + MACRO_GENERAL_2, + MACRO_GENERAL_3, + MACRO_GENERAL_4, + MACRO_GENERAL_5, + MACRO_CURSOR_UL, + MACRO_CURSOR_UR, + MACRO_CURSOR_DL, + MACRO_CURSOR_DR, + MACRO_MUTE_APP, + MACRO_COPY_CUT, +}; #define M_QWRTY M(MACRO_QWERTY) -#define M_COLMK M(MACRO_COLEMAK) -#define M_DVORK M(MACRO_DVORAK) #define M_UPPER M(MACRO_UPPER) #define M_LOWER M(MACRO_LOWER) #define M_FUNCT M(MACRO_FUNCTION) #define M_MOUSE M(MACRO_MOUSE) + #define TIMBR_1 M(MACRO_TIMBRE_1) #define TIMBR_2 M(MACRO_TIMBRE_2) #define TIMBR_3 M(MACRO_TIMBRE_3) @@ -55,15 +79,47 @@ #define TMPO_UP M(MACRO_TEMPO_U) #define TMPO_DN M(MACRO_TEMPO_D) #define TMPO_DF M(MACRO_TONE_DEFAULT) + +#define VC_UP M(MACRO_INC_VOICE) +#define VC_DOWN M(MACRO_DEC_VOICE) + #define M_BACKL M(MACRO_BACKLIGHT) #define M_BRTOG M(MACRO_BREATH_TOGGLE) #define M_BSPDU M(MACRO_BREATH_SPEED_INC) #define M_BSPDD M(MACRO_BREATH_SPEED_DEC) #define M_BDFLT M(MACRO_BREATH_DEFAULT) +#define M_MS_UL M(MACRO_MOUSE_MOVE_UL) +#define M_MS_UR M(MACRO_MOUSE_MOVE_UR) +#define M_MS_DL M(MACRO_MOUSE_MOVE_DL) +#define M_MS_DR M(MACRO_MOUSE_MOVE_DR) -#define VC_UP M(MACRO_INC_VOICE) -#define VC_DOWN M(MACRO_DEC_VOICE) +#define M_HELP M(MACRO_HELP) +#define M_HELP1 M(MACRO_HELP_1) +#define M_HELP2 M(MACRO_HELP_2) +#define M_HELP3 M(MACRO_HELP_3) +#define M_HELP4 M(MACRO_HELP_4) +#define M_HELP5 M(MACRO_HELP_5) +#define M_HELP6 M(MACRO_HELP_6) +#define M_HELP7 M(MACRO_HELP_7) +#define M_HELP8 M(MACRO_HELP_8) +#define M_HELP9 M(MACRO_HELP_9) +#define M_HELP0 M(MACRO_HELP_0) + +#define M_M1 M(MACRO_GENERAL_1) +#define M_M2 M(MACRO_GENERAL_2) +#define M_M3 M(MACRO_GENERAL_3) +#define M_M4 M(MACRO_GENERAL_4) +#define M_M5 M(MACRO_GENERAL_5) + +#define M_UL M(MACRO_CURSOR_UL) +#define M_UR M(MACRO_CURSOR_UR) +#define M_DL M(MACRO_CURSOR_DL) +#define M_DR M(MACRO_CURSOR_DR) + +#define M_MUTEA M(MACRO_MUTE_APP) + +#define M_CP_CT M(MACRO_COPY_CUT) #define SC_UNDO LCTL(KC_Z) @@ -77,6 +133,7 @@ #define SC_ACLS LALT(KC_F4) #define SC_CCLS LCTL(KC_F4) +#define TG_NKRO MAGIC_TOGGLE_NKRO #define OS_SHFT KC_FN0 #define _______ KC_TRNS @@ -84,208 +141,128 @@ #define ________________ _______, _______ #define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - -KEYMAP( \ - KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \ - KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ - KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TAB, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \ - KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_CAPS, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, \ - KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_LSFT, 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_RSFT, XXXXXXX, KC_UP, XXXXXXX, \ - KC_KP_0, KC_KP_0, KC_PDOT, KC_PENT, KC_LCTL, KC_LCTL, XXXXXXX, KC_LALT, KC_LGUI, XXXXXXX, KC_SPC, KC_SPC, XXXXXXX, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ -) - - -// [LAYER_QWERTY] = { // QWERTY -// { KC_ESC, 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_BSPC }, -// { 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_DEL }, -// { 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_ENT, KC_PGUP }, -// { 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_RSFT, KC_UP, KC_PGDN }, -// { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, -// }, - - -// /* Numeric Max / Homing Normal - Traditional -// * .-----------------------------------. .-----------------------------------. .-----------------_-----------------. .-----------------------------------. .--------------------------. -// * | | | | | | | | | | | | | | | | | | | | | | | | -// * '-----------------------------------' '-----------------------------------' '-----------------------------------' '-----------------------------------' '--------------------------' -// * .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .--------------------------. -// * | | | | | | ESC | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | | | | | | -// * |--------+--------+--------+--------| | -------+ -------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------| -// * | | | | | | TAB | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | | | | | | -// * |--------+--------+--------+ | o | -------+ -------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| '--------+--------+--------' -// * | | | | | o | CAPS | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | | -// * |--------+--------+--------+--------| o | -------+ -------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---+--------| .--------. -// * | | | | | | LSHIFT | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX | | | | -// * |--------+--------+--------+ | | -------+ -------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+--------+--------| .--------+--------+--------. -// * | | | | | LCTRL | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | | | | | | -// * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '--------------------------' -// */ - - -// /* QWERTY -// * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. -// * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| -// * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| -// * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| -// * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | -// * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| -// * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | -// * '--------------------------------------------------------------------------------------------------------------------------------------' -// */ - -// [LAYER_QWERTY] = { // QWERTY -// { KC_ESC, 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_BSPC }, -// { 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_DEL }, -// { 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_ENT, KC_PGUP }, -// { 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_RSFT, KC_UP, KC_PGDN }, -// { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, -// }, - -// /* COLEMAK -// * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. -// * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| -// * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| -// * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| -// * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | -// * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| -// * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | -// * '--------------------------------------------------------------------------------------------------------------------------------------' -// */ - -// [LAYER_COLEMAK] = { // COLEMAK -// { KC_ESC, 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_BSPC }, -// { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, -// { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, -// { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, -// { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, -// }, - -// /* DVORAK -// * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. -// * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | XXXXXX . BACKSP | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| -// * | TAB | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | DEL | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| -// * | CAPS | A | O | E | U | I | D | H | T | N | S | - | XXXXXX . ENTER | PG UP | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| -// * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | -// * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| -// * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | -// * '--------------------------------------------------------------------------------------------------------------------------------------' -// */ - -// [LAYER_DVORAK] = { // DVORAK -// { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC }, -// { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL }, -// { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP }, -// { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, -// { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, -// }, - -// /* UPPER -// * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. -// * | PRINT | BR TOG | BR SP+ | BR SP- | BR RST | XXXXXX | XXXXXX | NUM LK | / | * | | NUM LK | SCR LK | XXXXXX . PAUSE | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| -// * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | - | | | | INS | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| -// * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | | XXXXXX . | HOME | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| -// * | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END | -// * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| -// * | | | | | | 0 | | RALT | . | ENTER | | | | | -// * '--------------------------------------------------------------------------------------------------------------------------------------' -// */ - -// [LAYER_UPPER] = { // UPPER -// { KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS }, -// { _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS }, -// { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME }, -// { _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END }, -// { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }, -// }, - -// /* LOWER -// * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. -// * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| -// * | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| -// * | | ^ | * | + | - | / | \ | _ | ' | " | ` | | XXXXXX . | HOME | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| -// * | | | | & | ! | ~ | ; | : | = | < | > | ? | XXXXXX . | | END | -// * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| -// * | | | | | | | | | | | | | | | -// * '--------------------------------------------------------------------------------------------------------------------------------------' -// */ - -// [LAYER_LOWER] = { // LOWER -// { _______, 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_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS }, -// { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME }, -// { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END }, -// { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, -// }, - -// /* FUNCTION -// * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. -// * | NUM LK | | | | | | | | | | | | | XXXXXX . | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| -// * | SCR LK | F13 | F14 | F15 | F16 | | | | | | | | | | | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| -// * | CAP LK | F17 | F18 | F19 | F20 | | | | | | | | XXXXXX . | | -// * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| -// * | | F21 | F22 | F23 | F24 | | | | | | | XXXXXX . | VOL UP | MUTE | -// * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| -// * | | | | | | PLAY/PAUSE | | | | | | PTRACK | VOL DN | NTRACK | -// * '--------------------------------------------------------------------------------------------------------------------------------------' -// */ - -// [LAYER_FUNCTION] = { // FUNCTION -// { KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, -// { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, -// { KC_CAPS, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXX }, -// { _______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_VOLU, KC_MUTE }, -// { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT }, -// }, - -// #ifdef MOUSEKEY_ENABLE - -// [LAYER_MOUSE] = { // MOUSE -// { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, -// { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, -// { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U }, -// { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_MS_U, KC_WH_D }, -// { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, -// }, - -// #endif - -// [LAYER_ADJUST] = { // ADJUST -// { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MU_TOG, AU_TOG, ________________ }, -// { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, -// { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, -// { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, MUV_IN, _______ }, -// { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, MUV_DE, _______ }, -// }, - - -// /* -// [LAYER_EMPTY] = { // LAYER -// { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ }, -// { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, -// { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, -// { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, _______ }, -// { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, -// }, -// */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = +{ +/* LAYER = LAYER_QWERTY + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | FN | PRINT | SCR LK | PAUSE | | F1 | F2 | F3 | F4 | XXXXXX | F5 | F6 | F7 | F8 | XXXXXX | F9 | F10 | F11 | F12 | | VOL DN | MUTE | VOL UP | BACKLT | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | M1 | INS | HOME | PG UP | | ESC | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | BACKSP | | NUM LK | KP / | KP * | KP - | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | M2 | DEL | END | PG DN | | TAB | TAB | Q | W | E | R | T | Y | U | I | O | P | - | \ | | KP 7 | KP 8 | KP 9 | KP + | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | M3 | UL | UP | UR | | CAP LK | BACKSP | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | o | KP 4 | KP 5 | KP 6 | KP + | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | M4 | LEFT | CP/CT | RIGHT | | LSHIFT | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | RSHIFT | | KP 1 | KP 2 | KP 3 | KP Ent | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | M5 | DL | DOWN | DR | | LCTRL | XXXXXX | XXXXXX | LWIN | LALT | LOWER | SPACE . SPACE | UPPER | OSHIFT | RALT | APP | XXXXXX | RCTRL | | KP 0 | KP , | KP . | KP Ent | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' +*/ +KEYMAP(LAYER_QWERTY, \ + M_HELP , KC_PSCR, KC_SLCK, KC_PAUS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , XXXXXXX, KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_VOLD, KC_MUTE, KC_VOLU, M_BACKL, \ + M_M1 , KC_INS , KC_HOME, KC_PGUP, KC_ESC , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ + M_M2 , KC_DEL , KC_END , KC_PGDN, KC_TAB , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, KC_BSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, \ + M_M3 , M_UL , KC_UP , M_UR , KC_CAPS, KC_BSPC, 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_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, \ + M_M4 , KC_LEFT, M_CP_CT, KC_RGHT, KC_LSFT, 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_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, \ + M_M5 , M_DL , KC_DOWN, M_DR , KC_LCTL, XXXXXXX, XXXXXXX, KC_LGUI, KC_LALT, M_LOWER, KC_SPC , KC_SPC , M_UPPER, OS_SHFT, KC_RALT, KC_APP , XXXXXXX, KC_RCTL, KC_KP_0, KC_PCMM, KC_PDOT, KC_PENT \ +), +/* LAYER = LAYER_LOWER + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | ______ | ______ | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | MUTE A | ______ | ______ | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | ______ | ______ | ______ | ______ | | ______ | ______ | $ | { | [ | ( | % | # | ) | ] | } | @ | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | ______ | ______ | ______ | ______ | | ______ | ______ | ^ | * | + | - | / | \ | _ | ' | " | ` | ______ | ______ | o | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | ______ | ______ | ______ | ______ | | ______ | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | ______ | ______ | ______ | ______ | | ______ | XXXXXX | XXXXXX | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | XXXXXX | ______ | | ______ | ______ | ______ | ______ | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' +*/ +KEYMAP(LAYER_LOWER, \ + _______, _______, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, M_MUTEA, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______ \ +), +/* LAYER = LAYER_UPPER + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | ______ | ______ | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | MUTE A | ______ | ______ | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | ______ | ______ | ______ | ______ | | ______ | ______ | F1 | F2 | F3 | F4 | NUM LK | KP / | KP 7 | KP 8 | KP 9 | KP - | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | ______ | ______ | ______ | ______ | | ______ | ______ | F5 | F6 | F7 | F8 | CAP LK | KP * | KP 4 | KP 5 | KP 6 | KP + | ______ | ______ | o | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | ______ | ______ | ______ | ______ | | ______ | ______ | F9 | F10 | F11 | F12 | SCR LK | KP 0 | KP 1 | KP 2 | KP 3 | KP Ent | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | ______ | ______ | ______ | ______ | | ______ | XXXXXX | XXXXXX | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP Ent | XXXXXX | ______ | | ______ | ______ | ______ | ______ | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' +*/ +KEYMAP(LAYER_UPPER, \ + _______, _______, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, M_MUTEA, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, XXXXXXX, _______, _______, _______, _______, _______ \ +), +/* LAYER = LAYER_MOUSE + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | MS BT1 | MS AC0 | MS WHU | MS AC2 | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | MS BT2 | MS WHL | MS WHD | MS WHU | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | MS BT3 | MS UL | MS U | MS UR | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | o | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | MS BT4 | MS L | MS BT1 | MS R | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | MS BT5 | MS DL | MS D | MS DR | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' +*/ +KEYMAP(LAYER_MOUSE, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_BTN1, KC_ACL0, KC_WH_U, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_BTN3, M_MS_UL, KC_MS_U, M_MS_UR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_BTN4, KC_MS_L, KC_BTN1, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_BTN5, M_MS_DL, KC_MS_D, M_MS_DR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +), +/* LAYER = LAYER_ADJUST + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | HELP 1 | HELP 2 | HELP 3 | HELP 4 | XXXXXX | HELP 5 | HELP 6 | HELP 7 | HELP 8 | XXXXXX | HELP 9 | HELP 0 | XXXXXX | XXXXXX | | VOICE- | AUDIO | VOICE+ | MUSIC | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' + .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | o | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| + | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX . XXXXXX | LOWER | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | + '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' +*/ +KEYMAP(LAYER_ADJUST, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, XXXXXXX, M_HELP5, M_HELP6, M_HELP7, M_HELP8, XXXXXXX, M_HELP9, M_HELP0, XXXXXXX, XXXXXXX, MUV_DE , AU_TOG , MUV_IN , MU_TOG , \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ +), }; @@ -313,303 +290,290 @@ float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND); void persistant_default_layer_set(uint16_t default_layer) { - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); } const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_MODS_ONESHOT(MOD_LSFT), + [0] = ACTION_MODS_ONESHOT(MOD_LSFT), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function - switch(id) + // MACRODOWN only works in this function + switch(id) + { + + case MACRO_HELP_1: + if (record->event.pressed) + { + uprint("H1"); + } + break; + + case MACRO_HELP_2: + if (record->event.pressed) + { + uprint("H2"); + } + break; + + case MACRO_HELP_3: + if (record->event.pressed) + { + uprint("H3"); + } + break; + + case MACRO_HELP_4: + if (record->event.pressed) + { + uprint("H4"); + } + break; + + case MACRO_HELP_5: + if (record->event.pressed) + { + uprint("H5"); + } + break; + + case MACRO_HELP_6: + if (record->event.pressed) + { + uprint("H6"); + } + break; + + case MACRO_HELP_7: + if (record->event.pressed) + { + uprint("H7"); + } + break; + + case MACRO_HELP_8: + if (record->event.pressed) + { + uprint("H8"); + } + break; + + case MACRO_HELP_9: + if (record->event.pressed) + { + uprint("H9"); + } + break; + + case MACRO_BREATH_TOGGLE: + if (record->event.pressed) + { + breathing_toggle(); + } + break; + + case MACRO_BREATH_SPEED_INC: + if (record->event.pressed) + { + breathing_speed_inc(1); + } + break; + + case MACRO_BREATH_SPEED_DEC: + if (record->event.pressed) + { + breathing_speed_dec(1); + } + break; + + case MACRO_BREATH_DEFAULT: + if (record->event.pressed) + { + breathing_defaults(); + } + break; + + case MACRO_QWERTY: + if (record->event.pressed) + { + persistant_default_layer_set(1UL<event.pressed) { + layer_on(LAYER_UPPER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + else + { + layer_off(LAYER_UPPER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + break; + + case MACRO_LOWER: + if (record->event.pressed) + { + layer_on(LAYER_LOWER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + else + { + layer_off(LAYER_LOWER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + break; - // case MACRO_BREATH_TOGGLE: - // if (record->event.pressed) - // { - // breathing_toggle(); - // } - // break; - - // case MACRO_BREATH_SPEED_INC: - // if (record->event.pressed) - // { - // breathing_speed_inc(1); - // } - // break; - - // case MACRO_BREATH_SPEED_DEC: - // if (record->event.pressed) - // { - // breathing_speed_dec(1); - // } - // break; - - // case MACRO_BREATH_DEFAULT: - // if (record->event.pressed) - // { - // breathing_defaults(); - // } - // break; - - case MACRO_QWERTY: - if (record->event.pressed) - { - persistant_default_layer_set(1UL<event.pressed) - { - persistant_default_layer_set(1UL<event.pressed) - { - persistant_default_layer_set(1UL<event.pressed) - { - layer_on(LAYER_UPPER); - // breathing_speed_set(2); - // breathing_pulse(); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); - } - else - { - layer_off(LAYER_UPPER); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); - } - break; - - case MACRO_LOWER: - if (record->event.pressed) - { - layer_on(LAYER_LOWER); - // breathing_speed_set(2); - // breathing_pulse(); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); - } - else - { - layer_off(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); - } - break; - - case MACRO_FUNCTION: - if (record->event.pressed) - { - // breathing_speed_set(3); - // breathing_enable(); - layer_on(LAYER_FUNCTION); - } - else - { - // breathing_speed_set(1); - // breathing_self_disable(); - layer_off(LAYER_FUNCTION); - } - break; + case MACRO_FUNCTION: + if (record->event.pressed) + { + breathing_speed_set(3); + breathing_enable(); + layer_on(LAYER_FUNCTION); + } + else + { + breathing_speed_set(1); + breathing_self_disable(); + layer_off(LAYER_FUNCTION); + } + break; #ifdef MOUSEKEY_ENABLE - case MACRO_MOUSE: - if (record->event.pressed) - { - layer_invert(LAYER_MOUSE); - } - break; + case MACRO_MOUSE: + if (record->event.pressed) + { + layer_invert(LAYER_MOUSE); + } + break; #endif /* MOUSEKEY_ENABLE */ #ifdef AUDIO_ENABLE - case MACRO_TIMBRE_1: - if (record->event.pressed) set_timbre(TIMBRE_12); - break; - - case MACRO_TIMBRE_2: - if (record->event.pressed) set_timbre(TIMBRE_25); - break; - - case MACRO_TIMBRE_3: - if (record->event.pressed) set_timbre(TIMBRE_50); - break; - - case MACRO_TIMBRE_4: - if (record->event.pressed) set_timbre(TIMBRE_75); - break; - - case MACRO_TEMPO_U: - if (record->event.pressed) increase_tempo(10); - break; - - case MACRO_TEMPO_D: - if (record->event.pressed) decrease_tempo(10); - break; - - case MACRO_TONE_DEFAULT: - if (record->event.pressed) - { - set_timbre(TIMBRE_DEFAULT); - set_tempo(TEMPO_DEFAULT); - } - break; - -/* - case MACRO_AUDIO_TOGGLE: - if (record->event.pressed) - { - if (is_audio_on()) - { - audio_off(); - } - else - { - audio_on(); - PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); - } - } - break; - - case MACRO_MUSIC_TOGGLE: - if (record->event.pressed) - { - if (IS_LAYER_ON(LAYER_MUSIC)) - { - layer_off(LAYER_MUSIC); - stop_all_notes(); - } - else - { - PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); - layer_on(LAYER_MUSIC); - } - } - break; - case MACRO_INC_VOICE: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - voice_iterate(); - PLAY_NOTE_ARRAY(music_scale, false, STACCATO); - #endif - } - break; - - case MACRO_DEC_VOICE: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - voice_deiterate(); - PLAY_NOTE_ARRAY(music_scale, false, STACCATO); - #endif - } - break; -*/ + case MACRO_TIMBRE_1: + if (record->event.pressed) set_timbre(TIMBRE_12); + break; + + case MACRO_TIMBRE_2: + if (record->event.pressed) set_timbre(TIMBRE_25); + break; + + case MACRO_TIMBRE_3: + if (record->event.pressed) set_timbre(TIMBRE_50); + break; + + case MACRO_TIMBRE_4: + if (record->event.pressed) set_timbre(TIMBRE_75); + break; + + case MACRO_TEMPO_U: + if (record->event.pressed) increase_tempo(10); + break; + + case MACRO_TEMPO_D: + if (record->event.pressed) decrease_tempo(10); + break; + + case MACRO_TONE_DEFAULT: + if (record->event.pressed) + { + set_timbre(TIMBRE_DEFAULT); + set_tempo(TEMPO_DEFAULT); + } + break; #endif /* AUDIO_ENABLE */ #ifdef BACKLIGHT_ENABLE - case MACRO_BACKLIGHT: - if (record->event.pressed) - { - backlight_step(); - } -#endif + case MACRO_BACKLIGHT: + if (record->event.pressed) + { + backlight_step(); + } + break; +#endif /* BACKLIGHT_ENABLE */ - default: - break; + default: + break; - } - return MACRO_NONE; +} +return MACRO_NONE; }; - #ifdef AUDIO_ENABLE void matrix_init_user(void) { - set_voice(default_voice); - startup_user(); - println("Matrix Init"); + set_voice(default_voice); + startup_user(); + println("Matrix Init"); } void led_set_user(uint8_t usb_led) { - static uint8_t old_usb_led = 0; + static uint8_t old_usb_led = 0; - _delay_ms(10); // gets rid of tick + _delay_ms(10); // gets rid of tick - if (!is_playing_notes()) + if (!is_playing_notes()) + { + if ((usb_led & (1< Date: Wed, 28 Sep 2016 20:26:41 -0500 Subject: Fix #770, Fix #779 --- tmk_core/common/avr/bootloader.c | 8 ++++---- tmk_core/common/command.c | 3 --- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index fb9bf2d1c3..ad547b9853 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -38,7 +38,7 @@ * | | | | * = = = = * | | 32KB-4KB | | 128KB-8KB - * 0x6000 +---------------+ 0x1FC00 +---------------+ + * 0x7000 +---------------+ 0x1E000 +---------------+ * | Bootloader | 4KB | Bootloader | 8KB * 0x7FFF +---------------+ 0x1FFFF +---------------+ * @@ -64,8 +64,8 @@ #define BOOTLOADER_START (FLASH_SIZE - BOOTLOADER_SIZE) -/* - * Entering the Bootloader via Software +/* + * Entering the Bootloader via Software * http://www.fourwalledcubicle.com/files/LUFA/Doc/120730/html/_page__software_bootloader_start.html */ #define BOOTLOADER_RESET_KEY 0xB007B007 @@ -137,7 +137,7 @@ void bootloader_jump_after_watchdog_reset(void) #if 0 /* Jumping To The Bootloader * http://www.pjrc.com/teensy/jump_to_bootloader.html - * + * * This method doen't work when using LUFA. idk why. * - needs to initialize more regisers or interrupt setting? */ diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index fc5aad5c1d..f3e1bf6234 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -384,9 +384,6 @@ static bool command_common(uint8_t code) debug_mouse = true; } else { print("\ndebug: off\n"); - debug_matrix = false; - debug_keyboard = false; - debug_mouse = false; } break; -- cgit v1.2.1 From ce57b94908e4fb5a66190dc2a093c165aa4400f0 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 29 Sep 2016 07:47:30 +0100 Subject: added en-dash and gbp keys and updated readme --- keyboards/planck/keymaps/callum/keymap.c | 38 ++++++-- keyboards/planck/keymaps/callum/readme.md | 149 ++++++++++++------------------ 2 files changed, 91 insertions(+), 96 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 38c362fcbe..82ba83f4e4 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -25,6 +25,8 @@ enum planck_keycodes { CMDRGHT, BELOW, ABOVE, + DASH, + GBP, VOLUP, VOLDN }; @@ -55,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* MOVE * ,-----------------------------------------------------------------------------------. - * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | + * | Esc | | Cmd-L| Up | Cmd-R| | | Cmd-L| Up | Cmd-R| | Esc | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -73,9 +75,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* SYMB * ,-----------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | – | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -83,19 +85,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_SYMB] = { - {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC }, - {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, + {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DASH }, + {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, GBP }, {_______, KC_TILD, KC_GRV, KC_PLUS, KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, /* MOUSE * ,-----------------------------------------------------------------------------------. - * | | | | | | | | | | | | | + * | | | ACC-2| ACC-1| ACC-0| | | SW-L | M-U | SW-R | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | MB-3 | MB-2 | MB-1 | | | M-L | M-D | M-R | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | | | | | | SW-D | SW-U | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -201,6 +203,26 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case DASH: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_MINS); + } else { + unregister_code(KC_MINS); + unregister_code(KC_LALT); + } + return false; + break; + case GBP: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_3); + } else { + unregister_code(KC_3); + unregister_code(KC_LALT); + } + return false; + break; case VOLUP: if (record->event.pressed) { register_code(KC_LALT); diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 7a771130ab..b5997cd5ae 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -2,97 +2,70 @@ This is a layout for the grid planck, built with a few ideals in mind: -- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. +- Minimal response times should be maintained. Keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided – they inevitably send their keycode later than a normal key – interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording as our only means of getting more than one symbol out of a single physical key. - The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. - There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make. -- Backspace should be in the “capslock position” in the colemak tradition. -- The keyboard should be usable on any operating system without software changes. For me this means being able to swap the `GUI` key and `Ctrl` key in firmware so that `Cmd-z,x,c,v,…` becomes `Ctrl-z,x,c,v,…` when swapping from macOS to Windows. -We have four layers. A `BASE` layer (which is either `BASE Mac` or `BASE Windows`), in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. +We have five layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster and other movement keys; a `SYMB` layer, with numbers and symbols; a `FUNC` layer, with function keys and media keys; and a `MOUSE` layer, with mouse emulation. -## The `BASE` layer -For Mac ``` -,-----------------------------------------------------------------------------------. -| Tab | Q | W | F | P | G | J | L | U | Y | ; | - | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Bksp | A | R | S | T | D | H | N | E | I | O | " | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Shift| Z | X | C | V | B | K | M | , | . | / | Shift| -|------+------+------+------+------+------+------+------+------+------+------+------| -| Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | -`-----------------------------------------------------------------------------------' +/* BASE + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Bksp | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Func | + * `-----------------------------------------------------------------------------------' + */ + +/* MOVE + * ,-----------------------------------------------------------------------------------. + * | Esc | | Cmd-L| Up | Cmd-R| | | Cmd-L| Up | Cmd-R| | Esc | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | Pg Up| Pg Dn| Above| | Pg Dn| Pg Up| | Caps | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | Below| | | | | | | + * `-----------------------------------------------------------------------------------' + */ + +/* SYMB + * ,-----------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | – | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + +/* MOUSE + * ,-----------------------------------------------------------------------------------. + * | | | ACC-2| ACC-1| ACC-0| | | SW-L | M-U | SW-R | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | MB-3 | MB-2 | MB-1 | | | M-L | M-D | M-R | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | SW-D | SW-U | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + +/* FUNC + * ,-----------------------------------------------------------------------------------. + * | Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Vol+ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | Vol- | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F21 | F22 | F23 | F24 | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | Prev | Mute | Play | Next | | | | | + * `-----------------------------------------------------------------------------------' + */ ``` - -For Windows -``` -,-----------------------------------------------------------------------------------. -| Tab | Q | W | F | P | G | J | L | U | Y | ; | - | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Bksp | A | R | S | T | D | H | N | E | I | O | " | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Shift| Z | X | C | V | B | K | M | , | . | / | Shift| -|------+------+------+------+------+------+------+------+------+------+------+------| -| Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | -`-----------------------------------------------------------------------------------' -``` - -One of the two above layers is set as the default layer at any one time; see `FUNC`. The basic layout is [colemak](https://colemak.com). `Esc` and `Del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `Caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `Enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. - -The `MOVE` and `SYMB` layers are reached by holding down the `Move` and `Symb` keys respectively. The `FUNC` layer is reached by holding down both the `Move` and `Symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. - -## The `MOVE` layer -``` -,-----------------------------------------------------------------------------------. -| Esc | | Home | Up | End | | | Home | Up | End | | Esc | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Del | | Left | Down | Right| | | Left | Down | Right| | Del | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | | | -`-----------------------------------------------------------------------------------' -``` - -This is fairly self explanatory. I almost exclusively use the right hand cluster so that movement is a one handed affair, but the left hand cluster is there if it’s needed. - -On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ticking *Use PC Style Home/End #2* and *Use PC Style PageUp/PageDown* so that `Home` and `End` jump you to the beginning and end of the line respectively and so that `Pg Up` and `Pg Dn` move the cursor instead of just scrolling. - -None of the modifiers are overwritten so that `shift-alt-arrows` etc work as expected. - -## The `SYMB` layer -``` -,-----------------------------------------------------------------------------------. -| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | ~ | ` | + | = | | | \ | [ | ] | { | } | | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | | | -`-----------------------------------------------------------------------------------' -``` - -The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, arranged roughly so that the most used symbols are accessible with the strongest fingers. - -`Esc` and `Del` are repeated here since I wanted to be able to reach either, one handed, with either hand. - -Again none of the modifiers are overwritten so that shortcuts involving numbers or symbols work as expected. - -## The `FUNC` layer -``` -,-----------------------------------------------------------------------------------. -| F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | Play | Prev | Next | BL+ | | | Lock | | | Mac | | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | | Reset| -`-----------------------------------------------------------------------------------' -``` - -`BL+` and `BL-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. `Lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.) `Close` sends `alt-f4` to make that shortcut easier to reach. `Mac` and `Win` set the default layer to the Mac and Windows `BASE` layers respecitevly. - -## Other changes from the default -I have LEDs and sound disabled, simply because I have no need of them. -- cgit v1.2.1 From 41227856f4bfe24151009b20c0c412fe33756a4a Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:09:40 +0100 Subject: added a toggle between Mac and Windows base layers (with swapped cmd and ctrl) --- keyboards/planck/keymaps/callum/keymap.c | 59 ++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 6c34311339..b47f8eb05e 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -11,13 +11,15 @@ extern keymap_config_t keymap_config; // 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 _BASE 0 -#define _MOVE 1 -#define _SYMB 2 -#define _FUNC 3 +#define _MAC 0 +#define _WIN 1 +#define _MOVE 2 +#define _SYMB 3 +#define _FUNC 4 enum planck_keycodes { - BASE = SAFE_RANGE, + MAC = SAFE_RANGE, + WIN, MOVE, SYMB, FUNC, @@ -30,7 +32,7 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* BASE +/* BASE Mac * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | * |------+------+------+------+------+-------------+------+------+------+------+------| @@ -41,13 +43,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Func | Ctrl | Alt | GUI | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps | * `-----------------------------------------------------------------------------------' */ -[_BASE] = { +[_MAC] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} }, +/* BASE Windows + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Bksp | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Func | GUI | Alt | Ctrl | Symb |Enter |Space | Move | Ctrl | Alt | GUI |Caps | + * `-----------------------------------------------------------------------------------' + */ +[_WIN] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, + {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, + {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RCTL, KC_RALT, KC_RGUI, KC_CAPS} +}, + /* MOVE * ,-----------------------------------------------------------------------------------. * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | @@ -88,24 +108,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | * |-----------------------------------------------------------------------------------. - * | | Play | Prev | Next | BL+ | | | Lock | | | | | + * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | | | | | | | + * | | Mute | Vol- | Vol+ | BL- | | | | | | Win | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | |Reset | * `-----------------------------------------------------------------------------------' */ [_FUNC] = { {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, _______, _______}, - {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, _______, _______}, + {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, MAC, _______}, + {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, WIN, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } } }; +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { + case MAC: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_MAC); + } + return false; + break; + case WIN: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_WIN); + } + return false; + break; case MOVE: if (record->event.pressed) { layer_on(_MOVE); -- cgit v1.2.1 From b51f51c614e2bcd64202811510719f25345cb1ce Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:19:11 +0100 Subject: added close key for alt-f4 macro --- keyboards/planck/keymaps/callum/keymap.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index b47f8eb05e..56808aa8ca 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -23,7 +23,8 @@ enum planck_keycodes { MOVE, SYMB, FUNC, - LOCK + LOCK, + CLOSE }; // Fillers to make layering more clear @@ -110,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------------------------------. * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | | | | | Win | | + * | | Mute | Vol- | Vol+ | BL- | | |Close | | | Win | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | |Reset | * `-----------------------------------------------------------------------------------' @@ -118,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNC] = { {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, MAC, _______}, - {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, WIN, _______}, + {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, CLOSE, _______, _______, WIN, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } } @@ -183,6 +184,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case CLOSE: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_F4); + } else { + unregister_code(KC_F4); + unregister_code(KC_LALT); + } + return false; + break; } return true; } -- cgit v1.2.1 From 6ad8a06c734caa378296d0cfe335feda7457ed61 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:47:11 +0100 Subject: updated readme --- keyboards/planck/keymaps/callum/keymap.c | 30 ++++++------ keyboards/planck/keymaps/callum/readme.md | 81 ++++++++++++++++++++++++++----- 2 files changed, 83 insertions(+), 28 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 56808aa8ca..f5a816f4ee 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -39,9 +39,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Bksp | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | + * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | Ctrl | Alt | GUI | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps | + * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | * `-----------------------------------------------------------------------------------' */ [_MAC] = { @@ -57,9 +57,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Bksp | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | + * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | GUI | Alt | Ctrl | Symb |Enter |Space | Move | Ctrl | Alt | GUI |Caps | + * | Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | * `-----------------------------------------------------------------------------------' */ [_WIN] = { @@ -71,11 +71,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* MOVE * ,-----------------------------------------------------------------------------------. - * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | + * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | | Left | Down |Right | | | Left | Down |Right | | Del | + * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | |Pg Up |Pg Dn | | |Pg Dn |Pg Up | | | | + * | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -89,9 +89,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* SYMB * ,-----------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | - * |-----------------------------------------------------------------------------------. - * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | + * |-----------------------------------------------------------------------------------| + * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -107,13 +107,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* FUNC * ,-----------------------------------------------------------------------------------. - * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | - * |-----------------------------------------------------------------------------------. - * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | + * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | + * |-----------------------------------------------------------------------------------| + * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | |Close | | | Win | | + * | | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | |Reset | + * | | | | | | | | | | | | Reset| * `-----------------------------------------------------------------------------------' */ [_FUNC] = { diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index b70de3f1e2..8125907655 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -6,38 +6,93 @@ This is a layout for the grid planck, built with a few ideals in mind: - The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. - There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make. - Backspace should be in the “capslock position” in the colemak tradition. +- The keyboard should be usable on any operating system without software changes. For me this means being able to swap the `GUI` key and `Ctrl` key in firmware so that `Cmd-z,x,c,v,…` becomes `Ctrl-z,x,c,v,…` when swapping from macOS to Windows. -We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. +We have four layers. A `BASE` layer (which is either `BASE Mac` or `BASE Windows`), in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. ## The `BASE` layer -![](http://i.imgur.com/tVNI3SE.png) - -This is the default layer; in [colemak](https://colemak.com). `esc` and `del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. - -The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. +For Mac +``` +,-----------------------------------------------------------------------------------. +| Tab | Q | W | F | P | G | J | L | U | Y | ; | - | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Bksp | A | R | S | T | D | H | N | E | I | O | " | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| Z | X | C | V | B | K | M | , | . | / | Shift| +|------+------+------+------+------+------+------+------+------+------+------+------| +| Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | +`-----------------------------------------------------------------------------------' +``` + +For Windows +``` + ,-----------------------------------------------------------------------------------. +| Tab | Q | W | F | P | G | J | L | U | Y | ; | - | +|------+------+------+------+-------+-------------+------+------+------+------+------| +| Bksp | A | R | S | T | D | H | N | E | I | O | " | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| Z | X | C | V | B | K | M | , | . | / | Shift| +|------+------+------+------+------+------+------+------+------+------+------+------| +| Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | +`-----------------------------------------------------------------------------------' +``` + +One of the two above layers is set as the default layer at any one time; see `FUNC`. The basic layout is [colemak](https://colemak.com). `Esc` and `Del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `Caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `Enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. + +The `MOVE` and `SYMB` layers are reached by holding down the `Move` and `Symb` keys respectively. The `FUNC` layer is reached by holding down both the `Move` and `Symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. ## The `MOVE` layer -![](http://i.imgur.com/KXRSuHT.png) +``` +,-----------------------------------------------------------------------------------. +| Esc | | Home | Up | End | | | Home | Up | End | | Esc | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Del | | Left | Down | Right| | | Left | Down | Right| | Del | +|------+------+------+------+------+------|------+------+------+------+------+------| +| | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | | +`-----------------------------------------------------------------------------------' +``` This is fairly self explanatory. I almost exclusively use the right hand cluster so that movement is a one handed affair, but the left hand cluster is there if it’s needed. -On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ticking *Use PC Style Home/End #2* and *Use PC Style PageUp/PageDown* so that `home` and `end` jump you to the beginning and end of the line respectively and so that `pg up` and `pg dn` move the cursor instead of just scrolling. +On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ticking *Use PC Style Home/End #2* and *Use PC Style PageUp/PageDown* so that `Home` and `End` jump you to the beginning and end of the line respectively and so that `Pg Up` and `Pg Dn` move the cursor instead of just scrolling. None of the modifiers are overwritten so that `shift-alt-arrows` etc work as expected. ## The `SYMB` layer -![](http://i.imgur.com/thh1ne2.png) +``` +,-----------------------------------------------------------------------------------. +| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | +|-----------------------------------------------------------------------------------| +| Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | +|------+------+------+------+------+-------------+------+------+------+------+------| +| | ~ | ` | + | = | | | \ | [ | ] | { | } | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | | +`-----------------------------------------------------------------------------------' +``` The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, arranged roughly so that the most used symbols are accessible with the strongest fingers. -`esc` and `del` are repeated here since I wanted to be able to reach either, one handed, with either hand. +`Esc` and `Del` are repeated here since I wanted to be able to reach either, one handed, with either hand. Again none of the modifiers are overwritten so that shortcuts involving numbers or symbols work as expected. ## The `FUNC` layer -![](http://i.imgur.com/1VKFBBU.png) - -The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.) +``` +,-----------------------------------------------------------------------------------. +| F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | +|-----------------------------------------------------------------------------------| +| | Play | Prev | Next | BL+ | | | Lock | | | Mac | | +|------+------+------+------+------+------|------+------+------+------+------+------| +| | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | +|------+------+------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | | Reset| +`-----------------------------------------------------------------------------------' +``` + +`BL+` and `BL-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. `Lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.) `Close` sends `alt-f4` to make that shortcut easier to reach. `Mac` and `Win` set the default layer to the Mac and Windows `BASE` layers respecitevly. ## Other changes from the default I have LEDs and sound disabled, simply because I have no need of them. -- cgit v1.2.1 From ff09695897c4bdd705347e6427077e406413c26d Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:52:55 +0100 Subject: Update readme.md --- keyboards/planck/keymaps/callum/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 8125907655..2e59c00d6d 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -26,9 +26,9 @@ For Mac For Windows ``` - ,-----------------------------------------------------------------------------------. +,-----------------------------------------------------------------------------------. | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | -|------+------+------+------+-------+-------------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Bksp | A | R | S | T | D | H | N | E | I | O | " | |------+------+------+------+------+------|------+------+------+------+------+------| | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| -- cgit v1.2.1 From c593564acab7a0b1cca2c90bd0b1ffd9def59f05 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:55:27 +0100 Subject: Update readme.md --- keyboards/planck/keymaps/callum/readme.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 2e59c00d6d..7a771130ab 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -15,9 +15,9 @@ For Mac ``` ,-----------------------------------------------------------------------------------. | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | -|------+------+------+------+------+-------------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Bksp | A | R | S | T | D | H | N | E | I | O | " | -|------+------+------+------+------+------|------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| |------+------+------+------+------+------+------+------+------+------+------+------| | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | @@ -30,7 +30,7 @@ For Windows | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | |------+------+------+------+------+------+------+------+------+------+------+------| | Bksp | A | R | S | T | D | H | N | E | I | O | " | -|------+------+------+------+------+------|------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| |------+------+------+------+------+------+------+------+------+------+------+------| | Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | @@ -45,9 +45,9 @@ The `MOVE` and `SYMB` layers are reached by holding down the `Move` and `Symb` k ``` ,-----------------------------------------------------------------------------------. | Esc | | Home | Up | End | | | Home | Up | End | | Esc | -|------+------+------+------+------+-------------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Del | | Left | Down | Right| | | Left | Down | Right| | Del | -|------+------+------+------+------+------|------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | | | | | | @@ -64,9 +64,9 @@ None of the modifiers are overwritten so that `shift-alt-arrows` etc work as exp ``` ,-----------------------------------------------------------------------------------. | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | -|-----------------------------------------------------------------------------------| +|------+------+------+------+------+------+------+------+------+------+------+------| | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | -|------+------+------+------+------+-------------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | | ~ | ` | + | = | | | \ | [ | ] | { | } | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | | | | | | @@ -83,9 +83,9 @@ Again none of the modifiers are overwritten so that shortcuts involving numbers ``` ,-----------------------------------------------------------------------------------. | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | -|-----------------------------------------------------------------------------------| +|------+------+------+------+------+------+------+------+------+------+------+------| | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | -|------+------+------+------+------+------|------+------+------+------+------+------| +|------+------+------+------+------+------+------+------+------+------+------+------| | | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | | | | | Reset| -- cgit v1.2.1 From b2ecd296ae0dc366717fae8a6abb25c0639d6a43 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Tue, 6 Sep 2016 22:59:36 +0100 Subject: fixed comments --- keyboards/planck/keymaps/callum/keymap.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index f5a816f4ee..751af9eb9f 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -36,9 +36,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* BASE Mac * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Bksp | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | @@ -54,9 +54,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* BASE Windows * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Bksp | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| * | Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | @@ -72,9 +72,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* MOVE * ,-----------------------------------------------------------------------------------. * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | - * |------+------+------+------+------+-------------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | - * |------+------+------+------+------+------|------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | @@ -90,9 +90,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* SYMB * ,-----------------------------------------------------------------------------------. * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | - * |-----------------------------------------------------------------------------------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | @@ -108,9 +108,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* FUNC * ,-----------------------------------------------------------------------------------. * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | - * |-----------------------------------------------------------------------------------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | - * |------+------+------+------+------+------|------+------+------+------+------+------| + * |------+------+------+------+------+------+------+------+------+------+------+------| * | | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | Reset| -- cgit v1.2.1 From 02635e5924ea5f3b1e970e115407f62c916c4476 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Wed, 7 Sep 2016 20:45:23 +0100 Subject: changed RALT to LALT on Windows --- keyboards/planck/keymaps/callum/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 751af9eb9f..5754b17721 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RCTL, KC_RALT, KC_RGUI, KC_CAPS} + {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RCTL, KC_LALT, KC_RGUI, KC_CAPS} }, /* MOVE -- cgit v1.2.1 From fa2724360b831fffd3745bfe7b3ef50910b9132b Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Wed, 28 Sep 2016 08:04:38 +0100 Subject: removed windows layer and updated brightness keys for macOS Sierra --- keyboards/planck/keymaps/callum/keymap.c | 90 +++++--------------------------- 1 file changed, 14 insertions(+), 76 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 5754b17721..0ac1906bac 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -11,20 +11,15 @@ extern keymap_config_t keymap_config; // 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 _MAC 0 -#define _WIN 1 -#define _MOVE 2 -#define _SYMB 3 -#define _FUNC 4 +#define _BASE 0 +#define _MOVE 1 +#define _SYMB 2 +#define _FUNC 3 enum planck_keycodes { - MAC = SAFE_RANGE, - WIN, MOVE, SYMB, - FUNC, - LOCK, - CLOSE + FUNC }; // Fillers to make layering more clear @@ -33,7 +28,7 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* BASE Mac +/* BASE * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -44,31 +39,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | * `-----------------------------------------------------------------------------------' */ -[_MAC] = { +[_BASE] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} }, -/* BASE Windows - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Bksp | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | - * `-----------------------------------------------------------------------------------' - */ -[_WIN] = { - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, - {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RCTL, KC_LALT, KC_RGUI, KC_CAPS} -}, - /* MOVE * ,-----------------------------------------------------------------------------------. * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | @@ -81,9 +58,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_MOVE] = { - {KC_ESC, _______, KC_HOME, KC_UP, KC_END, _______, _______, KC_HOME, KC_UP, KC_END, _______, KC_ESC}, - {KC_DEL, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL}, - {_______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______}, + {KC_ESC, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_ESC}, + {KC_DEL, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_DEL}, + {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, XXXXXXX, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, @@ -109,41 +86,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Play | Prev | Next | BL+ | | | Lock | | | Mac | | + * | | Play | Prev | Next | BL+ | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | + * | | Mute | Vol- | Vol+ | BL- | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | Reset| * `-----------------------------------------------------------------------------------' */ [_FUNC] = { {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, MAC, _______}, - {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, CLOSE, _______, _______, WIN, _______}, + {XXXXXXX, KC_MPLY, KC_MPRV, KC_MNXT, KC_F15, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, + {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_F14, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } } }; -void persistant_default_layer_set(uint16_t default_layer) { - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case MAC: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_MAC); - } - return false; - break; - case WIN: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_WIN); - } - return false; - break; case MOVE: if (record->event.pressed) { layer_on(_MOVE); @@ -172,28 +132,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case LOCK: - if (record->event.pressed) { - register_code(KC_RSFT); - register_code(KC_RCTL); - register_code(KC_POWER); - } else { - unregister_code(KC_POWER); - unregister_code(KC_RCTL); - unregister_code(KC_RSFT); - } - return false; - break; - case CLOSE: - if (record->event.pressed) { - register_code(KC_LALT); - register_code(KC_F4); - } else { - unregister_code(KC_F4); - unregister_code(KC_LALT); - } - return false; - break; } return true; } -- cgit v1.2.1 From c762ea975a4c66da484b4cd4879e41c1457d854a Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Wed, 28 Sep 2016 23:15:35 +0100 Subject: big restructure now I only have to consider macOS, also added mouse, more function keys, and some neat macros --- keyboards/planck/keymaps/callum/keymap.c | 139 ++++++++++++++++++++++++++----- 1 file changed, 116 insertions(+), 23 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 0ac1906bac..38c362fcbe 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -14,12 +14,19 @@ extern keymap_config_t keymap_config; #define _BASE 0 #define _MOVE 1 #define _SYMB 2 -#define _FUNC 3 +#define _MOUSE 3 +#define _FUNC 4 enum planck_keycodes { - MOVE, + MOVE = SAFE_RANGE, SYMB, - FUNC + FUNC, + CMDLEFT, + CMDRGHT, + BELOW, + ABOVE, + VOLUP, + VOLDN }; // Fillers to make layering more clear @@ -36,14 +43,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | + * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Func | * `-----------------------------------------------------------------------------------' */ [_BASE] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS} + {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, FUNC } }, /* MOVE @@ -52,16 +59,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | + * | | | | Pg Up| Pg Dn| Above| | Pg Dn| Pg Up| | Caps | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | | | | Below| | | | | | | * `-----------------------------------------------------------------------------------' */ [_MOVE] = { - {KC_ESC, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_ESC}, - {KC_DEL, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_DEL}, - {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, XXXXXXX, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + {KC_ESC, XXXXXXX, CMDLEFT, KC_UP, CMDRGHT, XXXXXXX, XXXXXXX, CMDLEFT, KC_UP, CMDRGHT, XXXXXXX, KC_ESC }, + {KC_DEL, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL }, + {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, ABOVE, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______}, + {_______, _______, _______, _______, _______, BELOW, _______, _______, _______, _______, _______, _______} }, /* SYMB @@ -82,22 +89,40 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, +/* MOUSE + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_MOUSE] = { + {XXXXXXX, XXXXXXX, KC_ACL2, KC_ACL1, KC_ACL0, XXXXXXX, XXXXXXX, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX}, + {XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX}, + {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_D, KC_WH_U, XXXXXXX, XXXXXXX, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + /* FUNC * ,-----------------------------------------------------------------------------------. - * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | + * | Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Vol+ | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Play | Prev | Next | BL+ | | | | | | | | + * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | Vol- | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Mute | Vol- | Vol+ | BL- | | | | | | | | + * | | F21 | F22 | F23 | F24 | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | Reset| + * | | | | | Prev | Mute | Play | Next | | | | | * `-----------------------------------------------------------------------------------' */ [_FUNC] = { - {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - {XXXXXXX, KC_MPLY, KC_MPRV, KC_MNXT, KC_F15, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, - {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_F14, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET } + {RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, VOLUP }, + {XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, VOLDN }, + {_______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, + {_______, _______, _______, _______, KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT, _______, _______, _______, _______} } }; @@ -107,20 +132,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case MOVE: if (record->event.pressed) { layer_on(_MOVE); - update_tri_layer(_MOVE, _SYMB, _FUNC); + update_tri_layer(_MOVE, _SYMB, _MOUSE); } else { layer_off(_MOVE); - update_tri_layer(_MOVE, _SYMB, _FUNC); + update_tri_layer(_MOVE, _SYMB, _MOUSE); } return false; break; case SYMB: if (record->event.pressed) { layer_on(_SYMB); - update_tri_layer(_MOVE, _SYMB, _FUNC); + update_tri_layer(_MOVE, _SYMB, _MOUSE); } else { layer_off(_SYMB); - update_tri_layer(_MOVE, _SYMB, _FUNC); + update_tri_layer(_MOVE, _SYMB, _MOUSE); } return false; break; @@ -132,6 +157,74 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case CMDLEFT: + if (record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_LEFT); + } else { + unregister_code(KC_LEFT); + unregister_code(KC_LGUI); + } + return false; + break; + case CMDRGHT: + if (record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_RGHT); + } else { + unregister_code(KC_RGHT); + unregister_code(KC_LGUI); + } + return false; + break; + case BELOW: + if (record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_RGHT); + unregister_code(KC_RGHT); + unregister_code(KC_LGUI); + register_code(KC_ENT); + unregister_code(KC_ENT); + } + return false; + break; + case ABOVE: + if (record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_LEFT); + unregister_code(KC_LEFT); + unregister_code(KC_LGUI); + register_code(KC_ENT); + unregister_code(KC_ENT); + register_code(KC_UP); + unregister_code(KC_UP); + } + return false; + break; + case VOLUP: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_LSFT); + register_code(KC_VOLU); + } else { + unregister_code(KC_VOLU); + unregister_code(KC_LSFT); + unregister_code(KC_LALT); + } + return false; + break; + case VOLDN: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_LSFT); + register_code(KC_VOLD); + } else { + unregister_code(KC_VOLD); + unregister_code(KC_LSFT); + unregister_code(KC_LALT); + } + return false; + break; } return true; } -- cgit v1.2.1 From 2f07ad8e8a3e69eb90488bcac0540fd81448e3d0 Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 29 Sep 2016 07:47:30 +0100 Subject: added en-dash and gbp keys and updated readme --- keyboards/planck/keymaps/callum/keymap.c | 38 ++++++-- keyboards/planck/keymaps/callum/readme.md | 149 ++++++++++++------------------ 2 files changed, 91 insertions(+), 96 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index 38c362fcbe..82ba83f4e4 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -25,6 +25,8 @@ enum planck_keycodes { CMDRGHT, BELOW, ABOVE, + DASH, + GBP, VOLUP, VOLDN }; @@ -55,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* MOVE * ,-----------------------------------------------------------------------------------. - * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | + * | Esc | | Cmd-L| Up | Cmd-R| | | Cmd-L| Up | Cmd-R| | Esc | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -73,9 +75,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* SYMB * ,-----------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | – | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -83,19 +85,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_SYMB] = { - {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC }, - {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, + {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DASH }, + {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, GBP }, {_______, KC_TILD, KC_GRV, KC_PLUS, KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, /* MOUSE * ,-----------------------------------------------------------------------------------. - * | | | | | | | | | | | | | + * | | | ACC-2| ACC-1| ACC-0| | | SW-L | M-U | SW-R | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | MB-3 | MB-2 | MB-1 | | | M-L | M-D | M-R | | | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | | | | | | SW-D | SW-U | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -201,6 +203,26 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case DASH: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_MINS); + } else { + unregister_code(KC_MINS); + unregister_code(KC_LALT); + } + return false; + break; + case GBP: + if (record->event.pressed) { + register_code(KC_LALT); + register_code(KC_3); + } else { + unregister_code(KC_3); + unregister_code(KC_LALT); + } + return false; + break; case VOLUP: if (record->event.pressed) { register_code(KC_LALT); diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md index 7a771130ab..b5997cd5ae 100644 --- a/keyboards/planck/keymaps/callum/readme.md +++ b/keyboards/planck/keymaps/callum/readme.md @@ -2,97 +2,70 @@ This is a layout for the grid planck, built with a few ideals in mind: -- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording. +- Minimal response times should be maintained. Keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided – they inevitably send their keycode later than a normal key – interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording as our only means of getting more than one symbol out of a single physical key. - The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. - There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make. -- Backspace should be in the “capslock position” in the colemak tradition. -- The keyboard should be usable on any operating system without software changes. For me this means being able to swap the `GUI` key and `Ctrl` key in firmware so that `Cmd-z,x,c,v,…` becomes `Ctrl-z,x,c,v,…` when swapping from macOS to Windows. -We have four layers. A `BASE` layer (which is either `BASE Mac` or `BASE Windows`), in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys. +We have five layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster and other movement keys; a `SYMB` layer, with numbers and symbols; a `FUNC` layer, with function keys and media keys; and a `MOUSE` layer, with mouse emulation. -## The `BASE` layer -For Mac ``` -,-----------------------------------------------------------------------------------. -| Tab | Q | W | F | P | G | J | L | U | Y | ; | - | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Bksp | A | R | S | T | D | H | N | E | I | O | " | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Shift| Z | X | C | V | B | K | M | , | . | / | Shift| -|------+------+------+------+------+------+------+------+------+------+------+------| -| Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Caps | -`-----------------------------------------------------------------------------------' +/* BASE + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Bksp | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Func | + * `-----------------------------------------------------------------------------------' + */ + +/* MOVE + * ,-----------------------------------------------------------------------------------. + * | Esc | | Cmd-L| Up | Cmd-R| | | Cmd-L| Up | Cmd-R| | Esc | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | | Left | Down | Right| | | Left | Down | Right| | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | Pg Up| Pg Dn| Above| | Pg Dn| Pg Up| | Caps | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | Below| | | | | | | + * `-----------------------------------------------------------------------------------' + */ + +/* SYMB + * ,-----------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | – | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | ~ | ` | + | = | | | \ | [ | ] | { | } | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + +/* MOUSE + * ,-----------------------------------------------------------------------------------. + * | | | ACC-2| ACC-1| ACC-0| | | SW-L | M-U | SW-R | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | MB-3 | MB-2 | MB-1 | | | M-L | M-D | M-R | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | SW-D | SW-U | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + +/* FUNC + * ,-----------------------------------------------------------------------------------. + * | Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Vol+ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | Vol- | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F21 | F22 | F23 | F24 | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | Prev | Mute | Play | Next | | | | | + * `-----------------------------------------------------------------------------------' + */ ``` - -For Windows -``` -,-----------------------------------------------------------------------------------. -| Tab | Q | W | F | P | G | J | L | U | Y | ; | - | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Bksp | A | R | S | T | D | H | N | E | I | O | " | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Shift| Z | X | C | V | B | K | M | , | . | / | Shift| -|------+------+------+------+------+------+------+------+------+------+------+------| -| Func | Win | Alt | Ctrl | Symb | Enter| Space| Move | Ctrl | Alt | Win | Caps | -`-----------------------------------------------------------------------------------' -``` - -One of the two above layers is set as the default layer at any one time; see `FUNC`. The basic layout is [colemak](https://colemak.com). `Esc` and `Del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `Caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `Enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home. - -The `MOVE` and `SYMB` layers are reached by holding down the `Move` and `Symb` keys respectively. The `FUNC` layer is reached by holding down both the `Move` and `Symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls. - -## The `MOVE` layer -``` -,-----------------------------------------------------------------------------------. -| Esc | | Home | Up | End | | | Home | Up | End | | Esc | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Del | | Left | Down | Right| | | Left | Down | Right| | Del | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | | | -`-----------------------------------------------------------------------------------' -``` - -This is fairly self explanatory. I almost exclusively use the right hand cluster so that movement is a one handed affair, but the left hand cluster is there if it’s needed. - -On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ticking *Use PC Style Home/End #2* and *Use PC Style PageUp/PageDown* so that `Home` and `End` jump you to the beginning and end of the line respectively and so that `Pg Up` and `Pg Dn` move the cursor instead of just scrolling. - -None of the modifiers are overwritten so that `shift-alt-arrows` etc work as expected. - -## The `SYMB` layer -``` -,-----------------------------------------------------------------------------------. -| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | ~ | ` | + | = | | | \ | [ | ] | { | } | | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | | | -`-----------------------------------------------------------------------------------' -``` - -The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, arranged roughly so that the most used symbols are accessible with the strongest fingers. - -`Esc` and `Del` are repeated here since I wanted to be able to reach either, one handed, with either hand. - -Again none of the modifiers are overwritten so that shortcuts involving numbers or symbols work as expected. - -## The `FUNC` layer -``` -,-----------------------------------------------------------------------------------. -| F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | Play | Prev | Next | BL+ | | | Lock | | | Mac | | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | Mute | Vol- | Vol+ | BL- | | | Close| | | Win | | -|------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | | Reset| -`-----------------------------------------------------------------------------------' -``` - -`BL+` and `BL-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. `Lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.) `Close` sends `alt-f4` to make that shortcut easier to reach. `Mac` and `Win` set the default layer to the Mac and Windows `BASE` layers respecitevly. - -## Other changes from the default -I have LEDs and sound disabled, simply because I have no need of them. -- cgit v1.2.1 From 8d99140d1b80bf497b2198138d3f481e93b0fbab Mon Sep 17 00:00:00 2001 From: Adam Gausmann Date: Thu, 29 Sep 2016 14:46:10 -0500 Subject: Missing ifdef statement --- quantum/process_keycode/process_midi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 8784e64f36..577dad43ac 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -7,7 +7,9 @@ int midi_offset = 7; bool process_midi(uint16_t keycode, keyrecord_t *record) { if (keycode == MI_ON && record->event.pressed) { midi_activated = true; +#ifdef AUDIO_ENABLE music_scale_user(); +#endif return false; } @@ -63,4 +65,4 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) { return false; } return true; -} \ No newline at end of file +} -- cgit v1.2.1