summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--1-setup-path-win.bat10
-rw-r--r--README.md21
-rw-r--r--keyboard/ergodox_ez/keymaps/alexjj/keymap.c238
-rw-r--r--keyboard/ergodox_ez/keymaps/alexjj/keymap.hex1141
-rw-r--r--keyboard/ergodox_ez/keymaps/alexjj/readme.md179
-rw-r--r--keyboard/ergodox_ez/keymaps/alexjj/rl-layout.jpgbin0 -> 833107 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py710
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex1240
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c783
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md188
-rw-r--r--keyboard/ergodox_ez/keymaps/j3rn/keymap.c31
-rw-r--r--keyboard/ergodox_ez/keymaps/j3rn/readme.md7
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/keymap.c540
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.pngbin95077 -> 99031 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt14
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.pngbin108774 -> 119139 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt44
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.pngbin93001 -> 98257 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt40
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex2306
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/readme.md72
-rw-r--r--keyboard/ergodox_ez/keymaps/osx_de/keymap.c127
-rw-r--r--keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex2396
-rw-r--r--keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.pngbin749565 -> 684862 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c134
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md50
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.hex1139
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.pngbin0 -> 130692 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md13
-rw-r--r--keyboard/ergodox_ez/readme.md2
-rw-r--r--keyboard/planck/keymaps/default/keymap.c10
-rw-r--r--keyboard/planck/keymaps/nico.c69
-rw-r--r--keyboard/planck/keymaps/tak3over.c82
-rw-r--r--keyboard/preonic/Makefile4
-rw-r--r--keyboard/preonic/keymaps/default/keymap.c8
-rw-r--r--keyboard/preonic/keymaps/lock/keymap.c2
-rw-r--r--keyboard/preonic/keymaps/nerdgasm/README.md34
-rw-r--r--keyboard/preonic/keymaps/nerdgasm/keymap.c117
-rw-r--r--keyboard/preonic/preonic.c25
-rw-r--r--keyboard/preonic/preonic.h5
-rw-r--r--keyboard/preonic/preonic_music.hex1713
-rw-r--r--quantum/audio.c3
-rw-r--r--quantum/keymap_extras/keymap_german_osx.h156
-rw-r--r--tmk_core/common/action.c32
-rw-r--r--tmk_core/common/action.h4
-rw-r--r--tmk_core/common/action_layer.c77
-rw-r--r--tmk_core/common/action_layer.h11
47 files changed, 11041 insertions, 2736 deletions
diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat
index 2c15857bb..f612d0f4a 100644
--- a/1-setup-path-win.bat
+++ b/1-setup-path-win.bat
@@ -5,8 +5,14 @@ SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
SET NEWPATH1="C:\MinGW\msys\1.0\bin"
SET NEWPATH2="C:\MinGW\bin"
-:: Make sure paths exist
-IF NOT EXIST !NEWPATH1! (ECHO Path not found: %NEWPATH1% && GOTO ExitBatch)
+:: Make sure we're running with administrator privileges
+NET SESSION >nul 2>&1
+IF ERRORLEVEL 1 (
+ ECHO FAILED. Run this script with administrator privileges.
+ GOTO ExitBatch
+)
+
+:: Make sure the second path exists. The first path won't be created until the second script is run
IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch)
:: Add paths
diff --git a/README.md b/README.md
index 985733067..ab7373023 100644
--- a/README.md
+++ b/README.md
@@ -98,6 +98,27 @@ We've added shortcuts to make common modifier/tap (mod-tap) mappings more compac
`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does.
+### Prevent stuck modifiers
+
+Consider the following scenario:
+
+1. Layer 0 has a key defined as Shift.
+2. The same key is defined on layer 1 as the letter A.
+3. User presses Shift.
+4. User switches to layer 1 for whatever reason.
+5. User releases Shift, or rather the letter A.
+6. User switches back to layer 0.
+
+Shift was actually never released and is still considered pressed.
+
+If such situation bothers you add this to your `config.h`:
+
+ #define PREVENT_STUCK_MODIFIERS
+
+This option uses 5 bytes of memory per every 8 keys on the keyboard
+rounded up (5 bits per key). For example on Planck (48 keys) it uses
+(48/8)\*5 = 30 bytes.
+
### Remember: These are just aliases
These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action).
diff --git a/keyboard/ergodox_ez/keymaps/alexjj/keymap.c b/keyboard/ergodox_ez/keymaps/alexjj/keymap.c
new file mode 100644
index 000000000..448f62da0
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/alexjj/keymap.c
@@ -0,0 +1,238 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define UNIC 3 // unicode entry layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ESC | 1! | 2@ | 3# | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | -_ | += | BkSp |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | { | | } | Y | U | I | O | P | |\ |
+ * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
+ * | Win | A | S | D | F | G |------| |------| H | J | K | L | :; | '" |
+ * |--------+------+------+------+------+------| Home | | End |------+------+------+------+------+--------|
+ * | LShift |Z/Alt | X | C | V | B | | | | N | M | , | . | Alt | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |LCtrl | COPY | PASTE| Left | Right| | Down | Up |Hyper | `~ | RCtrl |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * Hyper = Ctrl+Super+Alt+Shift | ~L3 | F5 | | F2 | ~L2 |
+ * ,------|------|------| |------+------+------.
+ * | | | PgUp | | Ins | | |
+ * | Enter| BkSp |------| |------| ~L1 |Space |
+ * | | | PgDn | | 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
+ KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_HOME,
+ KC_LCTRL, LCTL(KC_C), LCTL(KC_V), KC_LEFT,KC_RGHT,
+ KC_FN3, KC_F5,
+ KC_PGUP,
+ KC_ENT,KC_BSPC,KC_PGDN,
+ // right hand
+ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,
+ KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+ KC_DOWN,KC_UP, ALL_T(KC_NO),KC_GRV, KC_RCTRL,
+ KC_F2, KC_FN2,
+ KC_INS,
+ KC_DELT,KC_FN1, KC_SPC
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |PrintScr|
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | £ | | | | | | . | 0 | = |Alt+F4|
+ * `----------------------------------' `----------------------------------'
+ * ↑ ,-------------. ,-------------.
+ * THERE! | | | | | |
+ * ,------|------|------| |------+------+------.
+ * CAD = Ctrl + Alt + Delete | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | CAD | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ 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,M(3),KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS,
+ 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, LALT(KC_F4),
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ LCTL(LALT(KC_DEL)), KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | TEENSY | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | Prev | Next | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | Lclk | Rclk | |VolDn |VolUp | Mute | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | |Brwser|
+ * | | |------| |------| |Back |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+ RESET, 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,
+ // 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_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_WBAK
+),
+/* Keymap 3: Unicode Entry
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Alt | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | + | + | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Alt | | | E | | | | | | | 7 | 8 | 9 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Alt | A | | D | F | |------| |------| | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Alt | | | C | | B | | | | | 1 | 2 | 3 | + | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | Alt | Alt | Alt | | | | 0 | 0 | 0 | + | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * WINDOWS ONLY SETUP!! | ~L3 | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | Alt | Alt |------| |------| Alt | Alt |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[UNIC] = KEYMAP( // layer 3 : Unicode Entry
+ // left hand
+ KC_LALT, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6,
+ KC_LALT, KC_TRNS, KC_TRNS, KC_E, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LALT, KC_A, KC_TRNS, KC_D, KC_F, KC_TRNS,
+ KC_LALT, KC_TRNS, KC_TRNS, KC_C, KC_TRNS, KC_B, KC_TRNS,
+ KC_LALT, KC_LALT, KC_LALT, KC_TRNS,KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_LALT,KC_LALT, KC_TRNS,
+ // right hand
+ KC_P7, KC_P8, KC_P9, KC_P0, KC_PPLS,KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_TRNS,
+ KC_P0, KC_P0, KC_P0, KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_LALT, KC_LALT
+ ),
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols)
+ [2] = ACTION_LAYER_TAP_TOGGLE(MDIA), // FN2 - Momentary Layer 2 (Media)
+ [3] = ACTION_LAYER_TAP_TOGGLE(UNIC) // FN3 - Momentary Layer 3 (Unicode entry)
+};
+
+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);
+ }
+ case 3: // this would trigger when you hit a key mapped as M(3)
+ if (record->event.pressed) {
+ return MACRO( I(255), D(LALT), T(P1), T(P5), T(P6), U(LALT), END );
+ }
+ 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;
+ case 3:
+ ergodox_right_led_3_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
diff --git a/keyboard/ergodox_ez/keymaps/alexjj/keymap.hex b/keyboard/ergodox_ez/keymaps/alexjj/keymap.hex
new file mode 100644
index 000000000..13338a892
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/alexjj/keymap.hex
@@ -0,0 +1,1141 @@
+:100000000C94C5020C940C030C940C030C940C037C
+:100010000C940C030C940C030C940C030C940C0324
+:100020000C940C030C940C030C94380C0C940A0DD7
+:100030000C940C030C940C030C940C030C940C0304
+:100040000C940C030C94AC210C940C030C940C0336
+:100050000C940C030C94381B0C940C030C940C03A0
+:100060000C940C030C940C030C940C030C940C03D4
+:100070000C940C030C940C030C940C030C940C03C4
+:100080000C940C030C940C030C940C030C940C03B4
+:100090000C940C030C940C030C940C030C940C03A4
+:1000A0000C940C030C940C030C940C03770D990D19
+:1000B0008C0E990D8C0EDE0D010E8C0E560E690EF7
+:1000C0005D115D118C118C11CF11091216141614CB
+:1000D0002212161417131713EA1316141614011408
+:1000E00075FF01E201590259015D025D015E025E88
+:1000F00002E2000000F0A1F0A2F0A329002B00E32F
+:1001000000E100E00000001E00140004001D740661
+:10011000014E001F001A0016001B0019012A0020C2
+:100120000008000700060050002800210015000903
+:100130000019004F004B00220017000A00050000C4
+:1001400000C30023002F0000004A0000003E0024EE
+:1001500000300000004D0000003B0025001C000B9B
+:100160000011000000C200260018000D0010005110
+:1001700000490027000C000E00360052002C002D14
+:100180000012000F003700007FC1002E0013003363
+:1001900000380035004C002A0031003400E500E44E
+:1001A0000000000100010001000100010000003A10
+:1001B000001E0220022202033001003B001F022128
+:1001C000022302010001003C002F0226022F000141
+:1001D0000001003D00300227023000010001003E16
+:1001E00000310235003502000001003F000100002F
+:1001F00000010000000100400001000000010000BB
+:1002000000010041005200510024020000010042A0
+:1002100000240021001E00010001004300250022EF
+:10022000001F0037000100440026002300200027A3
+:10023000000100450025022E0231002E004C05462B
+:10024000000100010001003D040000005001000118
+:100250000001000100000001000100010001000197
+:1002600000010001000100F2000100010001000195
+:1002700000F000F1000100F400010001000100F3B2
+:10028000000100F500010001000100010001000073
+:100290000001000100010000000100000001000158
+:1002A0000001000000010000000100010001000148
+:1002B000000100000001000100010001000100AA8E
+:1002C000000100010001000100AC00A900B600011E
+:1002D0000001000100AB00A80001000100010001C5
+:1002E0000001000100010001000100AE0001000159
+:1002F000000000E200E200E200E200E2000000593B
+:1003000000010004000100E20001005A00010001A8
+:10031000000100E200E2005B0008000700060001A7
+:1003200000E2005C00010009000100010001005D25
+:1003300000010001000500000001005E0001000056
+:10034000000100000001005F00010000000100004A
+:1003500000010060000100010001000000010061D7
+:10036000005F005C00590062000100620060005DF7
+:10037000005A006200E200570061005E005B00620C
+:1003800000E20057005700570057005700010001D6
+:100390000001000100010001000000160345007289
+:1003A0000067006F0044006F007800200045005A8D
+:1003B00000000016034500720067006F0044006FE4
+:1003C000007800200045005A0000000403090409D9
+:1003D000026D00040100A0FA0904000001030101FC
+:1003E00000092111010001223F00070581030800D7
+:1003F0000A090401000103010200092111010001A1
+:10040000224D000705820308000A090402000103C7
+:1004100000000009211101000122360007058303B5
+:1004200008000A090403000103000000092111016A
+:100430000001223900070584031000011201100198
+:1004400000000008EDFE0713010001020001050194
+:100450000906A101050719E029E7150025019508FE
+:10046000750181020508190129059505750191029B
+:1004700095017503910105071900297715002501DC
+:10048000957875018102C005010980A101850216D8
+:10049000010026B7001A01002AB7007510950181E6
+:1004A00000C0050C0901A1018503160100269C026C
+:1004B0001A01002A9C02751095018100C0050109EE
+:1004C00002A1010901A1000509190129051500254D
+:1004D00001950575018102950175038101050109E9
+:1004E0003009311581257F95027508810609381577
+:1004F00081257F950175088106050C0A3802158152
+:10050000257F950175088106C0C005010906A10176
+:10051000050719E029E715002501950875018102F5
+:1005200095017508810105081901290595057501D1
+:1005300091029501750391010507190029FF150026
+:1005400025FF950675088100C0000000000000002E
+:1005500000000000010204060A0F17202C3A4A5D31
+:1005600071879DB3C7DAE9F5FCFFFCF5E9DAC7B39B
+:100570009D87715D4A3A2C20170F0A06040201007C
+:100580000000000000000000000011241FBECFEF9B
+:10059000DAE0DEBFCDBF04B603FE27C08091EE01D6
+:1005A0009091EF01A091F001B091F1018730904B53
+:1005B000A740B04BD1F41092EE011092EF011092CF
+:1005C000F0011092F10114BE84B7877F84BF0FB68B
+:1005D000F894A895809160008861809360001092E3
+:1005E00060000FBEE0E0FFE3099511E0A0E0B1E09C
+:1005F000EAEFF6E402C005900D92A433B107D9F7F3
+:1006000021E0A4E3B1E001C01D92AE3EB207E1F7E4
+:100610000E947F090C947B230C940000CF93DF93FE
+:10062000EC01662319F0633059F00DC08A818823EC
+:1006300021F085EE0E94EE0F03C085EE0E94B610F9
+:100640008A81811103C080E090E002C080EE90E0DA
+:10065000DF91CF91089508956091B1017091B20139
+:100660008091B3019091B4010E94621A56985E98ED
+:1006700025982D9826982E9827982F98823039F013
+:10068000833041F0813041F4259A2D9A0895269ABD
+:100690002E9A0895279A2F9A08950C942C03569811
+:1006A0005E9825982D9826982E9827982F988FEF4A
+:1006B00090E0909389008093880090938B008093C2
+:1006C0008A0090938D0080938C00259A2D9A2FEFAD
+:1006D00080E792E0215080409040E1F700C00000A8
+:1006E000269A2E9A2FEF80E792E02150804090408A
+:1006F000E1F700C00000279A2F9A2FEF80E792E0E1
+:10070000215080409040E1F700C0000025982D98CE
+:100710002FEF80E792E0215080409040E1F700C049
+:10072000000026982E982FEF80E792E0215080401D
+:100730009040E1F700C0000027982F9856985E98E7
+:1007400025982D9826982E9827982F98089589EA0D
+:100750008093800089E08093810024982C983F98B2
+:100760008AB18F748AB96E98479A8BB1806B8BB9B6
+:10077000769A0E944F030C942B0380E28093000131
+:100780008091340181110EC00E940C0481E080939D
+:1007900034012FEF83ED90E3215080409040E1F74A
+:1007A00000C0000080E40E941204809300018111C7
+:1007B0002EC00E943C0480930001811128C00E9439
+:1007C0003C0480930001811122C08FE30E943C040D
+:1007D0008093000181111BC00E94340480E40E94B8
+:1007E000120480930001811112C08CE00E943C042D
+:1007F0008093000181110BC00E943C048093000192
+:10080000811105C08FE30E943C04809300010E9487
+:1008100034048091000108951092B9008AE0809319
+:10082000B800089594EA9093BC009091BC0097FFA3
+:10083000FCCF9091B900987F983021F0903111F061
+:1008400081E008958093BB0084E88093BC00809190
+:10085000BC0087FFFCCF8091B900887F883111F000
+:10086000803471F780E0089584E98093BC00809122
+:10087000BC0084FDFCCF08958093BB0084E8809386
+:10088000BC008091BC0087FFFCCF9091B900987F9D
+:1008900081E0983209F480E0089584E88093BC00F8
+:1008A0008091BC0087FFFCCF8091BB0008958091B0
+:1008B0000001811115C080E40E94120480930001A0
+:1008C00081110CC082E10E943C04809300018111DF
+:1008D00005C08FEF0E943C04809300010E94340405
+:1008E00084B1807F84B985B1807F85B98AB1837FE7
+:1008F0008AB98BB1837F8BB93E98469808950E9440
+:10090000BD03809300010E94570480B38C7080BBAC
+:1009100081B3836F81BBE4E4F1E0A6E3B1E011921F
+:100920001D9281E0E235F807D1F70C94A7039F925E
+:10093000AF92BF92CF92DF92EF92FF920F931F93ED
+:10094000CF93DF9380910001882379F08091350166
+:100950008F5F80933501811108C00E94BD03809391
+:100960000001811102C00E944F0386E3E82E81E05E
+:10097000F82E8701C0E0D0E0BB24B39492E0A92E0A
+:10098000CC24C394D12CC730D10500F5809100014F
+:10099000811164C080E40E941204809300018111DF
+:1009A00012C082E10E943C048093000181110BC0BF
+:1009B000C6010C2E01C0880F0A94EAF780950E94A8
+:1009C0003C04809300010E94340448C0CA30A1F066
+:1009D00028F4C83059F0C93061F005C0CC3089F036
+:1009E00070F0CD3089F0209A289810C0219A29986B
+:1009F0000DC0229A2A980AC0239A2B9807C0529AAF
+:100A000001C0539A5B9802C03E9A4698E0EAEA9584
+:100A1000F1F78FB181708B25799902C032E001C066
+:100A200030E0832B7C9902C034E001C030E0832B9E
+:100A30007D9902C028E001C020E0822B7E9902C08F
+:100A400090E101C090E0892B9FB19095991F992763
+:100A5000991F9295990F907E892B0FC0809100016C
+:100A600081114AC080E40E9412048093000188230F
+:100A700081F1912C0E943404892DD8019C91981702
+:100A800019F08C93A09201010E94570421960F5FE8
+:100A90001F4FCE30D10509F076CF80910101882318
+:100AA00069F1815080930101882339F0EFE9FFE07B
+:100AB0003197F1F700C0000021C0E4E4F1E0D70174
+:100AC0008D917D018193B4E4EB16B1E0FB06B9F79B
+:100AD00015C083E10E943C04809300018111C9CFBD
+:100AE00081E40E941204809300018111C2CF0E9410
+:100AF0004D04982E9094BECF80E0BFCF0E944D034E
+:100B000081E0DF91CF911F910F91FF90EF90DF90E7
+:100B1000CF90BF90AF909F900895E82FF0E0EC5BEE
+:100B2000FE4F8081089508958B3B910580F4883AAB
+:100B3000910548F5853A9105D8F48430910508F07F
+:100B4000B2C0019709F06EC081E090E00895803E48
+:100B5000910508F467C0883E910508F4A4C09C0183
+:100B6000205F31092031310508F05CC0906508959F
+:100B7000853A910509F459C0863A910509F058C0A3
+:100B800082E890E40895883A910509F454C0893ABE
+:100B9000910509F453C08A3A910509F452C08B3A81
+:100BA000910509F451C08C3A910509F450C08D3A71
+:100BB000910509F44FC0803B910509F44EC08E3A6F
+:100BC000910509F44DC08F3A910509F44CC0813B61
+:100BD000910509F44BC0823B910509F44AC0833B5F
+:100BE000910509F449C0843B910509F448C0853B4F
+:100BF000910509F447C0863B910509F446C0873B3F
+:100C0000910509F445C0883B910509F444C0893B2E
+:100C1000910509F443C08A3B910509F442C080E084
+:100C200094E4089580E090E0089581E890E40895C8
+:100C300083E890E4089582EE94E4089589EE94E4C4
+:100C400008958AEE94E4089585EB94E4089586EB84
+:100C500094E4089587EB94E408958CEC94E408956B
+:100C60008DEC94E4089583E895E408958AE895E48A
+:100C7000089582E995E4089584E995E4089581E270
+:100C800096E4089583E296E4089584E296E4089554
+:100C900085E296E4089586E296E4089587E296E474
+:100CA00008958AE296E40895089524E5829FC0019C
+:100CB0001124FC0126E0729FE00DF11D1124E60FC6
+:100CC000F11DEE0FFF1FE550FF4F859194910895A0
+:100CD000880F991FFC01ED58F0408591949108957B
+:100CE000880F991FFC01ED50FF4F85919491089555
+:100CF00024E5829FC0011124FC0146E0749FE00DB1
+:100D0000F11D1124E60FF11DEE0FFF1FE550FF4FFF
+:100D1000859194919C013A9521154FE1340708F48F
+:100D200027C13F512115304120F49F700E94700669
+:100D300008959C0130532115304118F49927906C87
+:100D40000895811520E5920771F40E943A144FEF3F
+:100D500084E39CE0415080409040E1F700C00000F7
+:100D60000E945D1B05C1813020E5920731F480911E
+:100D7000CD0181608093CD01FBC09C0130552115D0
+:100D8000304108F05CC0292F33272F7033272130E2
+:100D90003105E9F4AC0164E0440F551F6A95E1F7B1
+:100DA00044275370BC016370772702C0220F331FA2
+:100DB0006A95E2F73C68242B352B73E0880F991F66
+:100DC0007A95E1F780769927822B932B089522302C
+:100DD000310529F4982F8827816F906A0895233070
+:100DE0003105A1F4AC0133E0440F551F3A95E1F70A
+:100DF000407E57708370992721E030E002C0220FB7
+:100E0000331F8A95E2F7C9019C6816C0243031056A
+:100E100031F5AC0123E0440F551F2A95E1F7407EE0
+:100E200057708370992721E030E002C0220F331FF2
+:100E30008A95E2F7C9019A68842B952B08959C0145
+:100E400030572115304118F49F70906208959C012D
+:100E500030582115304118F49F70906A0895803EF3
+:100E60009105E0F4803C910558F58133910509F432
+:100E70006FC048F48932910509F463C08A32910544
+:100E800009F46DC072C089339105E9F0823891058B
+:100E9000D1F08533910509F44DC067C0833E9105BB
+:100EA00081F138F4803E9105B9F0823E9105D9F088
+:100EB0005CC0863E910561F1873E9105A1F155C068
+:100EC0000E94680608952091DF0120FD02C021FFE5
+:100ED0004CC080EE90E049C08091DF0180FFF9CFE7
+:100EE00089E390E042C08091DF0182FF0EC08091D3
+:100EF000DF0184FF03C080E090E037C083EE90E024
+:100F000034C08091DF0182FFF2CF82EE90E02DC0ED
+:100F10008091DF0183FF0BC08091DF0184FDEBCF67
+:100F200087EE90E022C08091DF0183FFF5CF86EE4F
+:100F300090E01BC08091DF0185FF07C089E290E04F
+:100F400014C08091DF0185FFF9CF85E390E00DC0EB
+:100F50008091DF0186FF07C08AE290E006C08091A1
+:100F6000DF0186FFF9CF81E390E00E9494050895A8
+:100F7000089508950C94B907809162010895CF9364
+:100F8000DF9300D01F92CDB7DEB79C018091E501C1
+:100F9000843019F593E099833B832A839093E90089
+:100FA0008FEF9091E800815095FD06C095ED9A95E0
+:100FB000F1F700008111F5CF8091E80085FF0DC0A9
+:100FC00040E050E063E070E0CE0101960E942C0A00
+:100FD0008091E8008E778093E8000F900F900F903B
+:100FE000DF91CF910895CF93DF9300D01F92CDB7BB
+:100FF000DEB72091E501243021F522E029839B838F
+:101000008A8383E08093E9008FEF9091E80081501C
+:1010100095FD06C095ED9A95F1F700008111F5CF89
+:101020008091E80085FF0DC040E050E063E070E093
+:10103000CE0101960E942C0A8091E8008E77809361
+:10104000E8000F900F900F90DF91CF9108959C01D1
+:101050008091E5018430F9F482E08093E9009FEF0C
+:101060008091E800915085FD06C085ED8A95F1F7E5
+:1010700000009111F5CF8091E80085FF0CC040E0A1
+:1010800050E065E070E0C9010E942C0A8091E80000
+:101090008E778093E8000895CF93DF93EC018091E1
+:1010A000E501843009F046C090910C019923D9F0F4
+:1010B00090910D019923B9F08093E9008FEF909101
+:1010C000E800815095FD06C095E19A95F1F7000082
+:1010D0008111F5CF8091E80085FF2CC040E050E001
+:1010E00060E170E017C081E08093E9008FEF90919C
+:1010F000E800815095FD06C095ED9A95F1F7000046
+:101100008111F5CF8091E80085FF14C040E050E0E8
+:1011100068E070E0CE010E942C0A8091E8008E7792
+:101120008093E80080E1FE01A2E5B1E001900D921C
+:101130008A95E1F7DF91CF9108958091E4018111C3
+:1011400009C00E94BD0B0E941A0C8091E2008460CD
+:101150008093E20008951092E401089508950C949C
+:1011600099210E94F31A0E949F210E94C50E0C949F
+:10117000BA0742E061EC81E00E94360B42E061EC8C
+:1011800082E00E94360B42E061EC83E00E94360B65
+:1011900042E161EC84E00C94360B8091E7018330EE
+:1011A00009F455C030F4813071F0823009F48EC0FA
+:1011B00008958A3009F47AC08B3009F460C0893010
+:1011C00009F09CC020C08091E601813A09F096C0E8
+:1011D0008091E800877F8093E8008091EA019091F8
+:1011E000EB01892B21F460E182E591E003C060E02E
+:1011F00080E090E070E00E94770A8091E8008B77B1
+:101200008093E80008958091E601813209F076C06C
+:101210008091EA019091EB01009719F0039709F092
+:101220006DC08091E800877F8093E8008091E8009E
+:1012300082FD05C08091E5018111F8CF5FC08091EA
+:10124000F100809362018091E8008B7753C0809118
+:10125000E601813A09F052C08091EA019091EB01D8
+:10126000892B09F04BC08091E800877F8093E800CC
+:101270008091E80080FFFCCF80910C0136C0809106
+:10128000E6018132D9F58091EA019091EB01892B39
+:10129000A9F58091E800877F8093E8000E946B0B9E
+:1012A0008091E80180930C010C943A148091E6013E
+:1012B000813221F58091E800877F8093E8000E94C9
+:1012C0006B0B8091E9018093630108958091E601A1
+:1012D000813AA1F48091E800877F8093E8008091B3
+:1012E000E80080FFFCCF809163018093F100809142
+:1012F000E8008E778093E8000C946B0B089584B718
+:10130000877F84BF0FB6F894A895809160008861AC
+:1013100080936000109260000FBE90E080E80FB6EE
+:10132000F89480936100909361000FBE0E94140FA7
+:101330000E94BD0B0E941A0C8091E2008460809391
+:10134000E20078940E94A50E0E94160F82E091E0C0
+:101350000E94C00E0E9487218091E501853069F4CA
+:101360000E94B21A8091E3018823B1F30E94DF1A30
+:10137000882391F30E94160AEFCF0E941C0FECCF36
+:10138000292F332723303105C9F060F4213031058E
+:1013900081F02230310509F041C08DE690E02FEC5C
+:1013A00033E040C021323105E1F02232310531F124
+:1013B00035C082E190E02CE334E034C099278130DD
+:1013C000910549F028F0029749F5EBE9F3E005C0F3
+:1013D000EBECF3E002C0E3EBF3E0849190E09F01DB
+:1013E00021C06430D8F4E62FF0E0EE0FFF1FEE5D71
+:1013F000FE4F2081318189E090E014C0643070F4A8
+:1014000070E0FB01EE0FFF1FE65EFE4F2081318191
+:10141000FB01EA5EFE4F808190E004C080E090E036
+:1014200020E030E0FA0131832083089580E189BD16
+:1014300082E189BD09B400FEFDCF8091D8008F7D87
+:101440008093D8008091E00082608093E0008091DA
+:10145000E00081FDFCCF0895CF92DF92EF92FF92E2
+:101460000F931F93CF93DF93EC018B016A010E94CE
+:101470008A0B811133C0C114D10439F0F601808187
+:101480009181081B190BC80FD91FE12CF12C0115F4
+:10149000110519F18091E80085FD16C08091E800E2
+:1014A0008E778093E800C114D10449F0F601808161
+:1014B0009181E80EF91EF182E08285E00FC00E9462
+:1014C0008A0B882321F30AC089918093F10001508F
+:1014D0001109FFEFEF1AFF0ADACF80E0DF91CF9119
+:1014E0001F910F91FF90EF90DF90CF900895209182
+:1014F000EC013091ED012617370748F061157105B1
+:1015000039F42091E8002E772093E80001C0B9015A
+:10151000FC0120E06115710579F18091E5018823D6
+:10152000F1F18530F1F18091E80083FD3CC08091BC
+:10153000E80082FD2EC08091E80080FFEBCF209173
+:10154000F3008091F20090E0922B6115710551F04B
+:101550008830910538F421912093F1006150710990
+:101560000196F3CF21E0089709F020E08091E80090
+:101570008E778093E800CECF2111CFCF0AC0809123
+:10158000E501882361F0853061F08091E80083FDFA
+:101590000AC08091E80082FFF2CF80E0089582E0E7
+:1015A000089583E0089581E008952091EC01309141
+:1015B000ED012617370748F06115710539F42091C0
+:1015C000E8002E772093E80001C0B901FC0120E07B
+:1015D0006115710591F18091E501882309F440C0FE
+:1015E000853009F43FC08091E80083FD3DC08091C3
+:1015F000E80082FD2FC08091E80080FFE9CF2091B4
+:10160000F3008091F20090E0922B6115710559F082
+:101610008830910540F424912093F1003196615077
+:1016200071090196F2CF21E0089709F020E080913E
+:10163000E8008E778093E800CBCF2111CCCF0AC091
+:101640008091E501882361F0853061F08091E800A8
+:1016500083FD0AC08091E80082FFF2CF80E0089508
+:1016600082E0089583E0089581E00895982F9730EF
+:1016700068F59093E900981739F07091EC0020918B
+:10168000ED005091F00003C0242F762F50E021FD93
+:1016900002C09F5FECCF3091EB003E7F3093EB00B8
+:1016A0003091ED003D7F3093ED003091EB003160E3
+:1016B0003093EB007093EC002093ED005093F0001A
+:1016C0002091EE0027FDE5CF80E008958F70809394
+:1016D000E90081E008958091E60187FF11C08091C3
+:1016E000E80082FD05C08091E5018111F8CF11C0AD
+:1016F0008091E8008B770BC08091E501882349F049
+:101700008091E80080FFF8CF8091E8008E77809389
+:10171000E80008952091E4003091E50095E64091BD
+:10172000EC00842F817040FF23C08091E80080FD91
+:101730001DC08091E501882399F0853099F0809152
+:10174000EB0085FD11C04091E4005091E5002417A5
+:10175000350729F3915011F09A01E1CF84E0089503
+:1017600082E0089583E0089581E0089580E008957F
+:101770004091E80042FFDDCF08950E942B0C0E94AB
+:10178000330CE0EEF0E0808181608083E8EDF0E0F2
+:1017900080818F77808319BCA7EDB0E08C918E7F1C
+:1017A0008C9380818F7E80831092E40108950F9343
+:1017B0001F93CF93DF930E942B0C0E94330CC8ED34
+:1017C000D0E088818F77888388818068888388814A
+:1017D0008F7D888319BC1092E5011092E10110926F
+:1017E000E3011092E20100EE10E0F80180818B7FAE
+:1017F000808388818160888342E060E080E00E948D
+:10180000360BE1EEF0E080818E7F8083E2EEF0E047
+:10181000808181608083808188608083F8018081FD
+:101820008E7F8083888180618883DF91CF911F9133
+:101830000F910895E8EDF0E080818F7E8083E7EDE1
+:10184000F0E080818160808384E082BF81E08093CA
+:10185000E4010C94D70BE8EDF0E080818E7F80836B
+:101860001092E20008951092DA001092E1000895BB
+:101870001F920F920FB60F9211242F933F934F9305
+:101880005F936F937F938F939F93AF93BF93EF93E8
+:10189000FF938091E10082FF0BC08091E20082FF04
+:1018A00007C08091E1008B7F8093E1000E94A40E2D
+:1018B0008091DA0080FF1FC08091D80080FF1BC09C
+:1018C0008091DA008E7F8093DA008091D90080FFCA
+:1018D0000DC080E189BD82E189BD09B400FEFDCF64
+:1018E00081E08093E5010E949D0805C019BC10921B
+:1018F000E5010E94AB088091E10080FF19C0809152
+:10190000E20080FF15C08091E2008E7F8093E200AC
+:101910008091E20080618093E2008091D800806233
+:101920008093D80019BC85E08093E5010E94AF0840
+:101930008091E10084FF30C08091E20084FF2CC0E0
+:1019400080E189BD82E189BD09B400FEFDCF8091AF
+:10195000D8008F7D8093D8008091E1008F7E8093A6
+:10196000E1008091E2008F7E8093E2008091E200AE
+:1019700081608093E2008091E101882311F084E08E
+:1019800007C08091E30087FD02C081E001C083E0D1
+:101990008093E5010E94B1088091E10083FF29C096
+:1019A0008091E20083FF25C08091E100877F8093D2
+:1019B000E10082E08093E5011092E1018091E10075
+:1019C0008E7F8093E1008091E2008E7F8093E20021
+:1019D0008091E20080618093E20042E060E080E07C
+:1019E0000E94360B8091F00088608093F0000E9486
+:1019F000AE08FF91EF91BF91AF919F918F917F9131
+:101A00006F915F914F913F912F910F900FBE0F906B
+:101A10001F9018951F920F920FB60F9211242F93BB
+:101A20003F934F935F936F937F938F939F93AF9366
+:101A3000BF93CF93DF93EF93FF93C091E900CF70F3
+:101A40008091EC00D82FD17080FDD0E81092E90091
+:101A50008091F000877F8093F00078940E944E0D73
+:101A60001092E9008091F00088608093F000CD2B07
+:101A7000CF70C093E900FF91EF91DF91CF91BF91BB
+:101A8000AF919F918F917F916F915F914F913F9116
+:101A90002F910F900FBE0F901F9018951F93CF930B
+:101AA000DF93CDB7DEB7AA970FB6F894DEBF0FBEAF
+:101AB000CDBFE6EEF1E08091F100819321E0EE3EB2
+:101AC000F207C9F70E94CD088091E80083FF24C186
+:101AD0008091E6019091E701492F50E04A3051058D
+:101AE00008F01AC1FA01EA5AFF4F0C9430238038EB
+:101AF00081F0823809F010C18091EA018F708093E3
+:101B0000E9008091EB0085FB882780F91092E900BD
+:101B100006C08091E2019091E30191118260909161
+:101B2000E800977F9093E8008093F1001092F10015
+:101B3000C8C0282F2D7F09F0EFC0882319F082300C
+:101B400061F0EAC08091E801813009F0E5C093308E
+:101B500009F080E08093E3012BC08091E8018111BE
+:101B600027C08091EA018F7009F4D6C08093E90004
+:101B70002091EB0020FF1CC0933021F48091EB00FA
+:101B8000806214C09091EB0090619093EB0021E093
+:101B900030E0A90102C0440F551F8A95E2F7409337
+:101BA000EA001092EA008091EB0088608093EB00DD
+:101BB0001092E9008091E800877F86C08111ACC057
+:101BC0001091E8011F778091E3008078812B80934A
+:101BD000E3008091E800877F8093E8000E946B0B10
+:101BE0008091E80080FFFCCF8091E30080688093C3
+:101BF000E300111102C082E001C083E08093E5019F
+:101C00008BC08058823008F087C08091E8019091A5
+:101C1000E9018C3D53E0950779F583E08A838AE2F8
+:101C200089834FB7F894DE01139620E03EE051E23D
+:101C3000E32FF0E050935700E49120FF03C0E295BA
+:101C4000EF703F5FEF708E2F90E0EA3010F0C79694
+:101C500001C0C0968D939D932F5F243149F74FBFEC
+:101C60008091E800877F8093E8006AE270E0CE010F
+:101C700001960E94770A14C0AE014F5F5F4F6091DA
+:101C8000EA010E94C009BC01892B09F445C090916A
+:101C9000E800977F9093E80089819A810E94D50A95
+:101CA0008091E8008B778093E80036C08038A1F5FA
+:101CB0008091E800877F8093E8008091E101809324
+:101CC000F1008091E8008E778093E8000E946B0B12
+:101CD00023C0811121C08091E8019091E9019927E9
+:101CE0000297D4F48091E800877F8093E800809188
+:101CF000E8018093E1010E946B0B8091E101811169
+:101D000006C08091E30087FD02C081E001C084E04D
+:101D10008093E5010E94B9088091E80083FF0AC022
+:101D20008091E800877F8093E8008091EB008062DB
+:101D30008093EB00AA960FB6F894DEBF0FBECDBF1E
+:101D4000DF91CF911F9108950895CF938091E50180
+:101D50008823A1F0C091E900CF709091EC00892F09
+:101D6000817090FD80E8C82B1092E9008091E80016
+:101D700083FD0E944E0DCF70C093E900CF9108956E
+:101D800090936901809368010895E0916801F09152
+:101D90006901309721F00190F081E02D099480E0F5
+:101DA0000895E0916801F0916901309721F0028077
+:101DB000F381E02D09940895E0916801F0916901A3
+:101DC000309721F00480F581E02D09940895209149
+:101DD0006601309167012817390771F09093670108
+:101DE00080936601E0916801F0916901309721F0DC
+:101DF0000680F781E02D09940895209164013091C7
+:101E000065012817390771F090936501809364018B
+:101E1000E0916801F0916901309721F00084F1852B
+:101E2000E02D0994089508950C94130F0E94F91A57
+:101E30000E947F040C94BF1BCF92DF92EF92FF921F
+:101E40000F931F93CF93DF93CDB7DEB72B970FB6CA
+:101E5000F894DEBF0FBECDBF0E9497048BE6C82E5C
+:101E600081E0D82E00E010E0E02E802F0E948D054A
+:101E7000F60141916F01F82EF426B1F40F5F1F4F68
+:101E80000E30110589F78FEF89838A831B820E94A8
+:101E9000021B8160782F9D838C8349815A816B81DD
+:101EA0008D810E94BF0F40C09091CD0191FF04C071
+:101EB0008B870E9493058B8520E030E04F2D50E00A
+:101EC000922FBA01022E02C0759567950A94E2F727
+:101ED00060FF24C02E83EF8221E030E0690102C060
+:101EE000CC0CDD1C9A95E2F790E08C219D21892B8A
+:101EF00009F420E028870E94021B8160782F9A87CE
+:101F000089874E815F8168858A850E94BF0FF801AD
+:101F1000E559FE4F8081C826C08206C02F5F3F4F23
+:101F20002630310569F6AACF0E94A61E0E94C50E72
+:101F300090916A018917A1F00E94C50E80936A01F1
+:101F40002B960FB6F894DEBF0FBECDBFDF91CF91B9
+:101F50001F910F91FF90EF90DF90CF900C94BA07F4
+:101F60002B960FB6F894DEBF0FBECDBFDF91CF9199
+:101F70001F910F91FF90EF90DF90CF900895CF9336
+:101F8000DF93CDB7DEB72B970FB6F894DEBF0FBE49
+:101F9000CDBF4F83588769877A878B87DE0111967B
+:101FA00086E0FD0111928A95E9F785E0FE013796FA
+:101FB00001900D928A95E1F749815A816B817C816C
+:101FC0008D819E810E94CE162B960FB6F894DEBFAF
+:101FD0000FBECDBFDF91CF9108950895CF93C82F45
+:101FE000882309F4C1C0823859F40E94C50E81FDCE
+:101FF000BBC089E30E946B190E94331A89E30CC0AD
+:10200000833879F40E94C50E80FDAEC083E50E943E
+:102010006B190E94331A83E50E94AA19CF910C9480
+:10202000331A843859F40E94C50E82FD9DC087E49E
+:102030000E946B190E94331A87E4EECF8CEF8C0F4D
+:10204000813A48F48C2F0E94EC2081118DC08C2F96
+:102050000E946B19E3CF80E28C0F883048F4C77080
+:1020600081E001C0880FCA95EAF70E94EC19D6CF2B
+:102070008BE58C0F833078F4C53A29F0C63A31F0FD
+:1020800083E890E005C081E890E002C082E890E03B
+:10209000CF910C94E70E88E58C0F833108F064C073
+:1020A000C83A39F1C93A41F1CA3A49F1CB3A51F14A
+:1020B000CC3A59F1CD3A61F1C03B69F1CE3A71F1B8
+:1020C000CF3A79F1C13B81F1C23B89F1C33B91F138
+:1020D000C43B99F1C53BA1F1C63BA9F1C73BB1F1A6
+:1020E000C83BB9F1C93BC1F1CA3BC9F180E090E0FE
+:1020F00038C082EE90E035C089EE90E032C08AEEC2
+:1021000090E02FC085EB90E02CC086EB90E029C0DA
+:1021100087EB90E026C08CEC90E023C08DEC90E043
+:1021200020C083E891E01DC08AE891E01AC082E9EE
+:1021300091E017C084E991E014C081E292E011C0FF
+:1021400083E292E00EC084E292E00BC085E292E06E
+:1021500008C086E292E005C087E292E002C08AE20F
+:1021600092E0CF910C94FD0ECF910895882309F44D
+:102170004BC0823859F40E94C50E81FF45C089E3E7
+:102180000E946B190E94331A89E30CC0833871F4E2
+:102190000E94C50E80FF38C083E50E946B190E9423
+:1021A000331A83E50E94AA190C94331A843859F41F
+:1021B0000E94C50E82FF28C087E40E946B190E940E
+:1021C000331A87E4EFCF9CEF980F913A58F390E2DF
+:1021D000980F983050F4877091E001C0990F8A955C
+:1021E000EAF7892F0E94F219DFCF9BE5980F933011
+:1021F00020F480E090E00C94E70E885A833120F4BC
+:1022000080E090E00C94FD0E0895882321F00E9458
+:10221000EC190C94331A0895882321F00E94F219C6
+:102220000C94331A0895BF92CF92DF92EF92FF92EF
+:102230000F931F93CF93DF9300D000D000D0CDB782
+:10224000DEB77C0185E0F701DE01119601900D9269
+:102250008A95E1F7F70183819481892B09F4E6C21D
+:10226000D08011811F3F21F4FFEFDF1609F4DEC299
+:10227000F7010281258122952F70C7012E830E94CC
+:10228000ED0FD9821A8389819A810E942A19182F09
+:10229000B92E0E9429190E94F0172E81002319F0EF
+:1022A0000E94091A2E81EB2DE295EF704E2F50E01F
+:1022B000FA01E05AFF4F0C9430238B2D807F9B2D29
+:1022C0009F70F92E882319F0F29480EFF8220023F2
+:1022D00049F0FF2009F457C28F2D0E94FC190E947B
+:1022E000331A51C2812F0E94B610FF2009F49EC2FA
+:1022F0008F2D0E94021A26960FB6F894DEBF0FBEED
+:10230000CDBFDF91CF911F910F91FF90EF90DF90A4
+:10231000CF90BF900C94331A3B2D307F8B2D8F7054
+:10232000303211F08295807F112319F0113021F1A4
+:102330002CC00023B9F0222309F490C1213009F008
+:102340008DC126960FB6F894DEBF0FBECDBFDF91CC
+:10235000CF911F910F91FF90EF90DF90CF90BF90A2
+:102360000C941C1A222319F0213009F45FC28E83C9
+:102370000E941F1A8E8186C1002321F0223008F0AE
+:1023800055C26CC1211152C27DC1002321F022230C
+:1023900009F464C1F8C1222309F474C109C28B2D68
+:1023A00086958695837019F08130D1F03FC2002365
+:1023B00021F0812F9B2D937002C080E090E0269643
+:1023C0000FB6F894DEBF0FBECDBFDF91CF911F9146
+:1023D0000F91FF90EF90DF90CF90BF900C94E70E9D
+:1023E000002321F0812F9B2D937002C080E090E0AC
+:1023F00026960FB6F894DEBF0FBECDBFDF91CF910A
+:102400001F910F91FF90EF90DF90CF90BF900C94B1
+:10241000FD0E812F002319F00E94AE1D02C00E9404
+:10242000161E26960FB6F894DEBF0FBECDBFDF9105
+:10243000CF911F910F91FF90EF90DF90CF90BF90C1
+:102440000C949B1E8B2D837009F075C00111EEC199
+:10245000812F829586958770880F880F912F9F70A6
+:10246000C92ED12CE12CF12C082E04C0CC0CDD1C83
+:10247000EE1CFF1C0A94D2F714FF12C00FE010E00C
+:1024800020E030E004C0000F111F221F331F8A9587
+:10249000D2F7C901B801609570958095909503C0F9
+:1024A00060E070E0CB014B2D46954695437042307D
+:1024B000C1F060F56C297D298E299F29413051F1A9
+:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139
+:1024D0001F910F91FF90EF90DF90CF90BF900C94E1
+:1024E00017186C297D298E299F2926960FB6F894F6
+:1024F000DEBF0FBECDBFDF91CF911F910F91FF9037
+:10250000EF90DF90CF90BF900C9433180E94171873
+:10251000C701B60126960FB6F894DEBF0FBECDBF39
+:10252000DF91CF911F910F91FF90EF90DF90CF90AF
+:10253000BF900C94FB17002319F08B2D817001C004
+:102540008695882309F472C1812F829586958770BC
+:10255000880F880F912F9F70C92ED12CE12CF12C60
+:10256000082E04C0CC0CDD1CEE1CFF1C0A94D2F714
+:1025700014FF12C00FE010E020E030E004C0000FB4
+:10258000111F221F331F8A95D2F7C901B801609528
+:1025900070958095909503C060E070E0CB014B2D65
+:1025A0004695469543704230C1F060F56C297D290F
+:1025B0008E299F29413051F126960FB6F894DEBF3F
+:1025C0000FBECDBFDF91CF911F910F91FF90EF9084
+:1025D000DF90CF90BF900C94F1186C297D298E2943
+:1025E0009F2926960FB6F894DEBF0FBECDBFDF91B0
+:1025F000CF911F910F91FF90EF90DF90CF90BF9000
+:102600000C940D190E94F118C701B60126960FB659
+:10261000F894DEBF0FBECDBFDF91CF911F910F9118
+:10262000FF90EF90DF90CF90BF900C94D518103FA3
+:10263000D1F118F4103E50F4A1C0123F09F463C068
+:1026400008F44CC0133F09F473C098C01F708B2D61
+:102650008F710023A1F00E946E18812F26960FB66D
+:10266000F894DEBF0FBECDBFDF91CF911F910F91C8
+:10267000FF90EF90DF90CF90BF900C9405110E94D7
+:102680008F18812F26960FB6F894DEBF0FBECDBFF0
+:10269000DF91CF911F910F91FF90EF90DF90CF903E
+:1026A000BF900C940C110023A9F02111BFC08B2DF9
+:1026B0008F7126960FB6F894DEBF0FBECDBFDF91A7
+:1026C000CF911F910F91FF90EF90DF90CF90BF902F
+:1026D0000C94B418223008F0A9C0E9CF0023A9F067
+:1026E0008B2D8F7126960FB6F894DEBF0FBECDBF2F
+:1026F000DF91CF911F910F91FF90EF90DF90CF90DE
+:10270000BF900C946E18002359F38B2D8F71269671
+:102710000FB6F894DEBF0FBECDBFDF91CF911F91F2
+:102720000F91FF90EF90DF90CF90BF900C948F1897
+:10273000002399F08B2D8F7126960FB6F894DEBF8B
+:102740000FBECDBFDF91CF911F910F91FF90EF9002
+:10275000DF90CF90BF900C94591826960FB6F8943E
+:10276000DEBF0FBECDBFDF91CF911F910F91FF90C4
+:10277000EF90DF90CF90BF900C944F180023A9F0FA
+:10278000222309F4ADCF812F26960FB6F894DEBF31
+:102790000FBECDBFDF91CF911F910F91FF90EF90B2
+:1027A000DF90CF90BF900C94EE0F222309F4ADCFB1
+:1027B000812F26960FB6F894DEBF0FBECDBFDF91F6
+:1027C000CF911F910F91FF90EF90DF90CF90BF902E
+:1027D0000C94B6104B2D4F70612FC7010E940E0351
+:1027E00026960FB6F894DEBF0FBECDBFDF91CF9116
+:1027F0001F910F91FF90EF90DF90CF90BF900C94BE
+:1028000073174B2D4F70612FC70126960FB6F894A2
+:10281000DEBF0FBECDBFDF91CF911F910F91FF9013
+:10282000EF90DF90CF90BF900C94540626960FB691
+:10283000F894DEBF0FBECDBFDF91CF911F910F91F6
+:10284000FF90EF90DF90CF90BF9008950E94091AFB
+:102850000E94191A0E94DE190E94331A0E944B1F0F
+:102860000E949B1E80E090E00E94E70E80E090E0D6
+:102870000C94FD0E0E94F9190C9426140E942A193A
+:10288000292F22952F702C3030F42A3048F4225012
+:10289000223078F405C02C3041F02F3031F009C0DF
+:1028A000803E48F0803F29F406C093FB882780F9DA
+:1028B000089580E0089581E00895CF93DF9300D0DC
+:1028C00000D01F92CDB7DEB70F900F900F900F90F2
+:1028D0000F90DF91CF910895CF93DF9300D000D078
+:1028E00000D0CDB7DEB726960FB6F894DEBF0FBE88
+:1028F000CDBFDF91CF9108951F93CF93DF93C09108
+:10290000790116E080917A01C81799F0D0E01C9FF8
+:10291000F0011D9FF00D1124E558FE4F40815181BB
+:1029200062817381848195810E946C142196C770A5
+:10293000E9CFDF91CF911F9108954091AB01509164
+:10294000AC016091AD017091AE018091AF019091A9
+:10295000B0010C946C148091B00182958F7009F0D5
+:1029600054C08091AD01882309F44FC08091790152
+:10297000A0917A014091AE015091AF016091AB01FD
+:102980007091AC01B6E08A1709F43FC090E04115A0
+:102990005105C1F17F3F11F46F3FA1F1B89FF001E4
+:1029A000B99FF00D1124E558FE4F218127132AC04D
+:1029B0002081261327C02281211124C02381348144
+:1029C0002417350710F421503109241B350B283CFE
+:1029D0003105C0F42091B0012F7020612093B00127
+:1029E00026E0289FF001299FF00D1124E058FE4FAA
+:1029F00080818F70806180838BEA91E00E94131147
+:102A00000C947C1401968770BECF0895CF92DF920C
+:102A1000EF92FF920F931F93CF93DF93CDB7DEB763
+:102A200062970FB6F894DEBF0FBECDBF8C0185E074
+:102A3000F801DE011D9601900D928A95E1F7D8010B
+:102A40004C9111965C91119712966C918091AE0108
+:102A50009091AF01009709F475C13091AB0170916D
+:102A6000AC017F3F19F43F3F09F46CC1F801C3800A
+:102A7000D480E090AD01EE2009F4BEC02091B001F9
+:102A8000C816D90628F0D601A81BB90BCD0104C081
+:102A9000809590958C0D9D1DFF24F394883C9105A5
+:102AA00078F0F12C207F09F0C4C07C2DD98AC88A27
+:102AB00089890E945D148BEA91E00E941311AFC0D6
+:102AC000822F807F09F045C0571313C0431311C0F4
+:102AD00061110FC02F7020612093B0010E949D14DE
+:102AE0008BEA91E00E9413118091B001F801858377
+:102AF0002EC0CD2819F15F3F11F44F3FF9F0F62EAB
+:102B000061111CC08091790120917A0136E0821711
+:102B100009F45BC090E0389FF001399FF00D11245B
+:102B2000E558FE4F7181571306C07081471303C0EB
+:102B30007281711103C001968770E9CFF62E66236A
+:102B400009F41CC18091B00181608093B001F12C27
+:102B500015C1571309C0431307C0611105C0809107
+:102B6000B001F8018583C8C04D875E878D859E853D
+:102B70006A8B0E943E146A898823D1F16623C1F1D1
+:102B80002091B001822F82958F7090E0029774F0AF
+:102B90008091AB019091AC0198878F831986DB8679
+:102BA000CA862C87CE0107960E94131186E0F80191
+:102BB000ABEAB1E001900D928A95E1F70E94AB1467
+:102BC0000E949D14FF24F394D9C04D875E878D85A4
+:102BD0009E850E942A19292F22952F70223008F0F5
+:102BE000C1C09F7009F0BBC0805E883008F4C6C0C9
+:102BF000C8010E941311E6CFC816D90608F453C0C5
+:102C0000F601E81BF90BCF01883C910508F450C090
+:102C1000F12C7C2DD98AC88A89890E945D14EBEA3F
+:102C2000F1E086E0DF011D928A95E9F70E949D148C
+:102C3000A5C0571314C0431312C0611110C0809176
+:102C4000B001F8018583C8010E94131186E0EBEA08
+:102C5000F1E0DF011D928A95E9F7FE2C8FC04D87C8
+:102C60005E878D859E856A8B0E943E146A898823C3
+:102C700009F4BECF662309F4BBCF2091B001822FA7
+:102C800082958F7090E002970CF490CF8091AB0109
+:102C90009091AC019A8389831B82DD82CC822E8342
+:102CA000CE01019681CF809590958C0D9D1DACCF66
+:102CB000F62E662309F49CCF571333C0431331C05B
+:102CC0002091B00120FD24C0822F82958F70482F63
+:102CD00050E041155105E1F0D80115962C93159758
+:102CE0004F30510549F08F5F982F9295907F822F3A
+:102CF0008F70892B15968C93C8010E94131186E062
+:102D0000F801ABEAB1E001900D928A95E1F78ECF20
+:102D100086E0F801ABEAB1E001900D928A95E1F707
+:102D20002DC04D875E878D859E850E943E14811142
+:102D30003DCF8091B00181608093B001C8010E94B5
+:102D400013111CC0662309F453CF4D875E878D8510
+:102D50009E850E943E14882309F44ACF27CF811113
+:102D600043CF0CC0243008F043CF9F7009F43CCF10
+:102D7000D80115969C91907F09F036CF8F2D6296E1
+:102D80000FB6F894DEBF0FBECDBFDF91CF911F917C
+:102D90000F91FF90EF90DF90CF9008951F93CF9306
+:102DA000DF93CDB7DEB72C970FB6F894DEBF0FBE1A
+:102DB000CDBF4F83588769877A878B879C87CE01E1
+:102DC00007960E940615882371F08A859B85892BBA
+:102DD00009F441C088858F3F09F065C08F818F3F1E
+:102DE00009F061C038C086E0FE013796DE01119619
+:102DF00001900D928A95E1F76A857B8561157105D1
+:102E000051F1FF81E885EF3F11F4FF3F21F120915F
+:102E10007A0130E0C90101968770992740917901C4
+:102E200050E08417950709F447C0F983EA837D834E
+:102E30006C8396E0929FD001939FB00D1124A5580A
+:102E4000BE4FFE01319601900D929A95E1F7809365
+:102E50007A010E947C1416E08091790190917A01A8
+:102E60008917B9F1189FC001112485589E4F0E94FF
+:102E70000615882371F1E09179011E9FF00111245C
+:102E8000E558FE4F40815181628173818481958133
+:102E90000E946C148091790190E0019687709927C7
+:102EA00080937901D9CF4F81588569857A858B8543
+:102EB0009C850E946C14CFCF0E943A1410927A0124
+:102EC00010927901EBEAF1E086E0DF011D928A952C
+:102ED000E9F72C960FB6F894DEBF0FBECDBFDF9199
+:102EE000CF911F910895EF92FF920F931F93CF936D
+:102EF000DF938C01892B09F46CC0F12CEE24E39450
+:102F0000E8012196F8018491843740F4843008F078
+:102F100051C0813081F0823019F15BC0853709F4EE
+:102F200044C0A8F19CE7980F903708F052C08F7703
+:102F30000E94B61041C00E5F1F4FFE01849190E2C7
+:102F4000980F983050F48770FE2D01C0FF0F8A95BE
+:102F5000EAF78F2F0E940C1A14C00E94EE0F2DC0AA
+:102F60000E5F1F4FFE01849190E2980F983060F43D
+:102F70008770FE2D01C0FF0F8A95EAF78F2F0E9400
+:102F8000121A0E94331A19C00E94B61016C00E5FA2
+:102F90001F4FFE01C491CC2381F08FE99FE0019780
+:102FA000F1F700C00000C150F6CF0E5F1F4FFE01C9
+:102FB000F49003C00E94EE0F8E018F2D882309F438
+:102FC0009FCFEFE9FFE03197F1F700C0000081509B
+:102FD000F5CFDF91CF911F910F91FF90EF90089562
+:102FE00008956093B5017093B6018093B7019093F3
+:102FF000B8010C9426140F931F930091B501109102
+:10300000B6012091B7013091B801DC01CB01802BD2
+:10301000912BA22BB32B8093B5019093B601A09373
+:10302000B701B093B8011F910F910C9426140F9320
+:103030001F930091B5011091B6012091B701309115
+:10304000B801DC01CB0180239123A223B323809319
+:10305000B5019093B601A093B701B093B8011F9149
+:103060000F910C9426140F931F930091B5011091AA
+:10307000B6012091B7013091B801DC01CB01802766
+:103080009127A227B3278093B5019093B601A0930F
+:10309000B701B093B8011F910F910C9426141092B0
+:1030A000B1011092B2011092B3011092B4010C94CC
+:1030B000261441E050E060E070E004C0440F551F6A
+:1030C000661F771F8A95D2F74093B1015093B201E2
+:1030D0006093B3017093B4010C94261441E050E066
+:1030E00060E070E004C0440F551F661F771F8A958B
+:1030F000D2F78091B1019091B201A091B301B0914A
+:10310000B401482B592B6A2B7B2B4093B101509370
+:10311000B2016093B3017093B4010C94261441E0A2
+:1031200050E060E070E004C0440F551F661F771F39
+:103130008A95D2F740955095609570958091B10130
+:103140009091B201A091B301B091B40148235923E9
+:103150006A237B234093B1015093B2016093B30182
+:103160007093B4010C94261441E050E060E070E0EC
+:1031700004C0440F551F661F771F8A95D2F78091B0
+:10318000B1019091B201A091B301B091B40148276F
+:1031900059276A277B274093B1015093B20160936E
+:1031A000B3017093B4010C9426140F931F930091F4
+:1031B000B1011091B2012091B3013091B401DC0151
+:1031C000CB01802B912BA22BB32B8093B101909339
+:1031D000B201A093B301B093B4011F910F910C946D
+:1031E00026140F931F930091B1011091B201209109
+:1031F000B3013091B401DC01CB0180239123A223E0
+:10320000B3238093B1019093B201A093B301B09323
+:10321000B4011F910F910C9426140F931F930091EA
+:10322000B1011091B2012091B3013091B401DC01E0
+:10323000CB0180279127A227B3278093B1019093D8
+:10324000B201A093B301B093B4011F910F910C94FC
+:1032500026140895CF92DF92EF92FF920F931F935F
+:10326000CF93DF938C01C090B101D090B201E09078
+:10327000B301F090B4018091B5019091B601A09195
+:10328000B701B091B801C82AD92AEA2AFB2ACFE1AE
+:10329000D0E0D701C6010C2E04C0B695A79597952E
+:1032A00087950A94D2F780FF07C0B8018C2F0E943F
+:1032B00078068130910531F4219758F7B80180E004
+:1032C0000E947806DF91CF911F910F91FF90EF90B0
+:1032D000DF90CF90089590910C019923F1F0909197
+:1032E0000D019923D1F0982F9695969596959F303C
+:1032F00080F5E0910E01F0910F01E90FF11D87704B
+:1033000021E030E0A90102C0440F551F8A95E2F781
+:10331000CA019181892B8183089520910E013091FA
+:103320000F01F90132969FEF40E05191851789F026
+:103330009F3F19F4511101C0942F4F5F4E30A9F7F0
+:103340009F3F39F0F901E90FF11D97FDFA9582834E
+:103350000895089590910C019923F9F090910D0131
+:103360009923D9F0982F9695969596959F3028F5A4
+:10337000E0910E01F0910F01E90FF11D877021E03E
+:1033800030E0A90102C0440F551F8A95E2F7CA0137
+:103390008095918189238183089520910E01309138
+:1033A0000F01F9013296205F3F4F9081891301C0D0
+:1033B00010823196E217F307C1F7089581E090E09B
+:1033C000E0910E01F0910F01E80FF91F10820196B4
+:1033D00080319105A9F708959091CC01892B8093B4
+:1033E000CC01089580959091CC0189238093CC01E4
+:1033F00008951092CC0108959091CB01892B809370
+:10340000CB01089580959091CB0189238093CB01C6
+:1034100008951092CB0108959091CA01892B809351
+:10342000CA01089580959091CA0189238093CA01A9
+:1034300008951092CA0108958093B90108951092D9
+:10344000B901089580910E0190910F01FC01319610
+:103450009C01205F3F4F80E0919191118F5FE217B7
+:10346000F307D1F70895E0910E01F0910F018091DB
+:10347000CC018083E0910E01F0910F019081809149
+:10348000CB01892B8083E0910E01F0910F01908197
+:103490008091CA01892B80838091B901882361F0D2
+:1034A000E0910E01F0910F019081892B80830E94A1
+:1034B000221A81111092B90180910E0190910F0191
+:1034C0000C94D10ECF92DF92EF92FF926C01EE241A
+:1034D000FF24C114D104E104F10421F0C701B601B5
+:1034E00020E101C020E0C72ED82EE92EFF24C11410
+:1034F000D104E104F10419F0285FC701B6016B01A2
+:103500007C0154E0F694E794D794C7945A95D1F788
+:10351000C114D104E104F10419F02C5FC701B60114
+:103520006B017C0142E0F694E794D794C7944A95E6
+:10353000D1F7C114D104E104F10419F02E5FC701E1
+:10354000B601DC01CB01B695A79597958795892B98
+:103550008A2B8B2B09F02F5F822FFF90EF90DF904B
+:10356000CF9008958091E501843029F120E488E12D
+:1035700090E00FB6F894A895809360000FBE20935A
+:10358000600080E00E94BA0783B7817F846083BFB8
+:1035900083B7816083BF7894889583B78E7F83BF1C
+:1035A0000FB6F894A89580916000886180936000C0
+:1035B000109260000FBE089508950C94DC1ACF930A
+:1035C0000E94DD1A0E9497040E94DC1AC0E08C2F32
+:1035D0000E948D05811104C0CF5FCE30C1F701C0BC
+:1035E00081E0CF9108950E943A140E94C50E0C9478
+:1035F000BA0782E084BD93E095BD9AEF97BD8093B2
+:103600006E0008952FB7F8948091CE019091CF016C
+:10361000A091D001B091D1012FBF0895CF92DF9238
+:10362000EF92FF920F931F932FB7F8944091CE0122
+:103630005091CF016091D0017091D1012FBF6A01EB
+:103640007B01EE24FF248C0120E030E0C016D1067F
+:10365000E206F30610F4415051099A01281B390B78
+:10366000C9011F910F91FF90EF90DF90CF900895C7
+:103670001F920F920FB60F9211248F939F93AF93C7
+:10368000BF938091CE019091CF01A091D001B091D4
+:10369000D1010196A11DB11D8093CE019093CF0160
+:1036A000A093D001B093D101BF91AF919F918F9121
+:1036B0000F900FBE0F901F9018950E94BD0BF894AD
+:1036C0002FEF87EA91E6215080409040E1F700C05B
+:1036D000000087E090EBDC018093EE019093EF0116
+:1036E000A093F001B093F1019CE088E10FB6F8944B
+:1036F000A895809360000FBE90936000FFCFEF927B
+:10370000FF920F931F93CF93DF93D82FC0E08C2F9E
+:103710000E948D0500E010E0E82EF12CC701002E7C
+:1037200002C0959587950A94E2F780FD06C00F5F69
+:103730001F4F0630110591F709C0602F7C2F80E0E4
+:103740000E9455068D13F3CF81E004C0CF5FCE30C9
+:10375000F1F680E0DF91CF911F910F91FF90EF90F4
+:103760000895CF93C82F8CE20E947F1B882321F0FD
+:103770008C2FCF910C947F1B80E0CF910895CF9335
+:103780000E94061D811102C00E94EC1CC5E6C150BA
+:1037900049F00E9497048FE39CE90197F1F700C07C
+:1037A0000000F5CF89E20E94B11B811113C18AE2AA
+:1037B0000E94B11B81110E94EC1C85E00E94B11B8C
+:1037C00081110E945D1B0E94111D8093CD0187E035
+:1037D0000E94B11B8823A9F18BE10E94B11B8823B1
+:1037E00051F08091CD0181FB222720F991E09227B1
+:1037F00090FB81F90EC08EE00E94B11B882361F01E
+:103800008091CD0182FB222720F991E0922790FB45
+:1038100082F98093CD0115C080E10E94B11B909187
+:10382000CD01882341F093FB222720F981E08227F4
+:1038300080FB93F904C0892F809580FB90F99093C9
+:10384000CD018091CD010E94151D0E94231D809302
+:10385000DF0180EE0E94B11B882341F08091DF01DF
+:10386000982F909590FB80F98093DF0189E30E9467
+:10387000B11B882359F08091DF0181FB222720F9B9
+:1038800091E0922790FB81F98093DF0182EE0E9404
+:10389000B11B882359F08091DF0182FB222720F998
+:1038A00091E0922790FB82F98093DF0186EE0E94DF
+:1038B000B11B882359F08091DF0183FB222720F977
+:1038C00091E0922790FB83F98093DF0183EE0E94C1
+:1038D000B11B882359F08091DF0184FB222720F956
+:1038E00091E0922790FB84F98093DF0185E30E94A9
+:1038F000B11B882359F08091DF0185FB222720F935
+:1039000091E0922790FB85F98093DF0181E30E948B
+:10391000B11B882359F08091DF0186FB222720F913
+:1039200091E0922790FB86F98093DF0181E10E946C
+:10393000B11B882359F08091DF0187FB222720F9F2
+:1039400091E0922790FB87F98093DF018091DF015E
+:103950000E94271D8091DF0187FB882780F98093D3
+:103960000D0187E20E94B11BC82F8EE10E94B11B9E
+:103970008111C2608FE10E94B11B8111C46080E29D
+:103980000E94B11B8111C86081E20E94B11B8111AC
+:10399000C06182E20E94B11B8111C06283E20E9479
+:1039A000B11B8111C06484E20E94B11B882311F015
+:1039B000C06802C0CC2329F08C2F0E941E1D6C2FE2
+:1039C00003C00E941A1D682F70E080E090E0CF9144
+:1039D0000C94F117CF9108956DEE7EEF80E090E0AA
+:1039E0000E94662360E082E090E00E94582360E03D
+:1039F00083E090E00E94582360E084E090E00E9421
+:103A0000582360E085E090E00C94582380E090E03B
+:103A10000E94522321E08D3E9E4F09F020E0822F2C
+:103A2000089582E090E00C944A23682F82E090E0B1
+:103A30000C94582383E090E00C944A23682F83E091
+:103A400090E00C94582384E090E00C944A23682F73
+:103A500084E090E00C9458238091D40180FF0BC047
+:103A60006091130185E0689FB001112475956795F9
+:103A7000759567952BC081FF09C06091130185E0A2
+:103A8000689FB00111247595679520C082FF07C01B
+:103A90006091130185E0689FB001112417C09091D7
+:103AA000D5019923D1F060911201961788F72091E2
+:103AB000130185E0289F90011124929FA001939FFC
+:103AC000500D112470E0CA010E941C23603871055A
+:103AD00040F46115710519F406C065E070E0862FA9
+:103AE00008958FE7089581E008958091D40180FFC3
+:103AF00008C06091110170E075956795759567959F
+:103B000021C081FF06C06091110170E07595679535
+:103B100019C082FF04C06091110170E010C0909143
+:103B2000D501992399F0609110019617A0F7809123
+:103B30001101899FC001112470E00E941C2360388C
+:103B4000710540F46115710519F406C061E070E07B
+:103B5000862F08958FE7089581E00895803F21F42E
+:103B60000E942C1D819504C0813F29F40E942C1DC8
+:103B70008093D8010895823F21F40E942C1D8195E5
+:103B800004C0833F29F40E942C1D8093D70108951F
+:103B9000893F19F40E94751D05C08A3F31F40E94C7
+:103BA000751D81958093D90108958B3F21F40E9462
+:103BB000751D819504C08C3F29F40E94751D80936A
+:103BC000DA010895843F21F48091D601816017C005
+:103BD000853F21F48091D601826011C0863F21F497
+:103BE0008091D60184600BC0873F21F48091D6017B
+:103BF000886005C0883F31F48091D6018061809350
+:103C0000D60108958D3F21F48091D40181600BC0CD
+:103C10008E3F21F48091D401826005C08F3F29F44A
+:103C20008091D40184608093D4010895803F39F459
+:103C30008091D80187FF6CC01092D80169C0813F84
+:103C400029F48091D8011816BCF362C09091D70175
+:103C5000823F29F497FF5CC01092D70159C0833F7F
+:103C600019F41916CCF354C0893F41F48091D9015D
+:103C700018160CF04DC01092D9014AC08A3F29F4A1
+:103C80008091D90187FF44C0F6CF8B3F39F48091F2
+:103C9000DA0187FF3DC01092DA013AC08C3F29F467
+:103CA0008091DA011816BCF333C0843F21F480916F
+:103CB000D6018E7F17C0853F21F48091D6018D7F7C
+:103CC00011C0863F21F48091D6018B7F0BC0873FC6
+:103CD00021F48091D601877F05C0883F31F480911F
+:103CE000D6018F7E8093D60113C08D3F21F4809141
+:103CF000D4018E7F0BC08E3F21F48091D4018D7F43
+:103D000005C08F3F29F48091D4018B7F8093D4012B
+:103D10008091D70181110EC08091D80181110AC014
+:103D20008091D901811106C08091DA01811102C010
+:103D30001092D501089586ED91E00E94DC0E0E945C
+:103D4000021B9093D3018093D20108951F93CF93C8
+:103D5000DF938091D2019091D3010E940E1BAC01A0
+:103D60009091D501992321F02091140130E006C0F3
+:103D7000209115018AE0289F9001112442175307D2
+:103D800008F485C08091D701C091D801D091D901A4
+:103D90001091DA01811107C0C11175C0D11173C032
+:103DA000111171C074C09F3F19F09F5F9093D501AE
+:103DB000181624F40E942C1D8093D7018091D701FE
+:103DC00087FF05C00E942C1D81958093D7011C168A
+:103DD00024F40E942C1D8093D8018091D80187FF84
+:103DE00005C00E942C1D81958093D8016091D70158
+:103DF000662331F1C091D801CC2311F1062E000CBD
+:103E0000770B880B990B0E94232223E333E343E3D0
+:103E10005FE30E9487220E94EB216093D7016C2F01
+:103E2000CC0F770B880B990B0E94232223E333E3FB
+:103E300043E35FE30E9487220E94EB216093D80155
+:103E40001D1624F40E94751D8093D9018091D9011B
+:103E500087FF05C00E94751D81958093D9011116B9
+:103E600024F40E94751D8093DA018091DA0187FFA6
+:103E700005C00E94751D81958093DA01DF91CF9175
+:103E80001F910C949B1E9F3F09F08FCFA0CFDF9115
+:103E9000CF911F910895E6EDF1E085E0DF011D92DD
+:103EA0008A95E9F71092D5011092D40108958330D4
+:103EB00081F128F4813059F08230D1F008958530B5
+:103EC00009F449C0B8F1863009F456C008958091CC
+:103ED0001501262F30E0280F311D2F3F310524F426
+:103EE000680F6093150108958FEF80931501089571
+:103EF00080911401262F30E0280F311D2F3F31050E
+:103F000024F4680F6093140108958FEF80931401D7
+:103F1000089580911301262F30E0280F311D2F3F87
+:103F2000310524F4680F6093130108958FEF809397
+:103F30001301089580911201262F30E0280F311DC2
+:103F40002F3F310524F4680F6093120108958FEF1D
+:103F500080931201089580911101262F30E0280FDF
+:103F6000311D2F3F310524F4680F6093110108952E
+:103F70008FEF80931101089580911001262F30E07A
+:103F8000280F311D2F3F310524F4680F6093100175
+:103F900008958FEF809310010895833011F128F474
+:103FA000813049F0823091F00895853081F120F11F
+:103FB0008630C1F1089580911501681720F4861BA1
+:103FC00080931501089510921501089580911401B0
+:103FD000681720F4861B8093140108951092140131
+:103FE000089580911301681720F4861B80931301B4
+:103FF000089510921301089580911201681720F41A
+:10400000861B8093120108951092120108958091E9
+:104010001101681720F4861B8093110108951092F6
+:104020001101089580911001681720F4861B809378
+:10403000100108951092100108950F931F938D3170
+:1040400009F46AC008F03FC08E3009F484C0C0F49F
+:10405000873009F46DC068F4863009F0B5C08091EE
+:10406000CD01817F8E7F8093CD0181E08093DC0143
+:10407000ACC0883009F457C08B3009F46AC0A4C0C2
+:10408000863109F466C078F4803109F477C0813153
+:1040900009F09AC00E943A1490910D0181E089279D
+:1040A00080930D0156C0893109F453C08B3109F05A
+:1040B0008BC08091CD0181FB222720F991E09227CE
+:1040C00090FB81F951C0853309F475C048F48732FB
+:1040D00009F471C008F45EC0893209F46CC074C080
+:1040E000833430F48A3308F053C0883391F16CC0C4
+:1040F000833409F460C0883409F066C00E943A1421
+:104100000FEF13ED20E3015010402040E1F700C015
+:1041100000000E945D1B1DC00E94A5210E94C50ECB
+:104120000E94BA0716C00E94111D0E94231D11C0D3
+:104130009091CD01892F8095817080FB90F929F0B5
+:10414000966098609093CD0140C0997F977F90933F
+:10415000CD0181E03AC08091CD0182FB222720F978
+:1041600091E0922790FB82F98093CD01992389F306
+:104170008091CD0181608093CD01EBCF8091CD0105
+:1041800083FB222720F991E0922790FB83F9ECCF63
+:10419000895301C08D5141E050E060E070E08A0138
+:1041A0009B0104C0000F111F221F331F8A95D2F7F5
+:1041B000C901B80104C061E070E080E090E00E94B5
+:1041C000F1170E943A14C5CF80E01F910F91089516
+:1041D00080E008950C94E820CF93C82F8091DC01F3
+:1041E000813079F018F08230E9F187C0E0910E015A
+:1041F000F0910F018081813169F0823209F07FC036
+:1042000009C0E0910E01F0910F018081813111F020
+:10421000823261F48C2F0E94EA20811104C08C2F1D
+:104220000E941D201DC081E090E01AC08C2F0E94CA
+:10423000E820811114C0C43179F048F4CB3079F012
+:10424000C03109F060C082E08093DC0108C0C9324F
+:1042500019F0C83321F057C01092DC0154C081E03E
+:10426000817053C0C93289F118F5C43171F1A8F4D5
+:10427000C73009F046C08AE08093150194E190931D
+:10428000140193E0909313018093120188E08093CE
+:10429000110188E28093100134C0CE51C63088F5F8
+:1042A000EC2FF0E0E65DFE4F80818093DB0129C0BA
+:1042B000CE34E9F020F4CB3421F56AE013C0C135E7
+:1042C00079F0C235F1F461E00DC08091DB01882303
+:1042D00019F01092DB0115C081E08093DC0115C05C
+:1042E00061E006C08091DB010E94571F0AC06AE0AE
+:1042F0008091DB010E94CD1F04C01092DC0180E0A0
+:1043000004C081E002C080E0ABCFCF910895E1E826
+:10431000F0E08081886080838081816080838FB7B6
+:10432000F89493E09093890090ED909388008FBF6C
+:104330000895EFE6F0E08081826080830895EFE6E3
+:10434000F0E080818D7F80830895EFE6F0E090813A
+:1043500082E08927808308951F920F920FB60F92F3
+:1043600011242F933F934F935F936F937F938F937A
+:104370009F93AF93BF93EF93FF938091DD01909153
+:10438000DE0101969093DE018093DD01811103C06F
+:1043900082E00E94BA07E091DE01E695E695F0E042
+:1043A000E75BFA4FE4918091DD018E1303C080E05A
+:1043B0000E94BA07FF91EF91BF91AF919F918F91AA
+:1043C0007F916F915F914F913F912F910F900FBE11
+:1043D0000F901F9018950E94F2216894B1110C94CF
+:1043E000812208950E94662288F09F5798F0B92F85
+:1043F0009927B751B0F0E1F0660F771F881F991F1A
+:104400001AF0BA95C9F714C0B13091F00E94802219
+:10441000B1E008950C948022672F782F8827B85F29
+:1044200039F0B93FCCF3869577956795B395D9F771
+:104430003EF490958095709561957F4F8F4F9F4F7B
+:104440000895E89409C097FB3EF490958095709587
+:1044500061957F4F8F4F9F4F9923A9F0F92F96E9D0
+:10446000BB279395F695879577956795B795F11145
+:10447000F8CFFAF4BB0F11F460FF1BC06F5F7F4FE2
+:104480008F4F9F4F16C0882311F096E911C07723F4
+:1044900021F09EE8872F762F05C0662371F096E8FD
+:1044A000862F70E060E02AF09A95660F771F881FCC
+:1044B000DAF7880F9695879597F9089557FD9058E4
+:1044C000440F551F59F05F3F71F04795880F97FBD8
+:1044D000991F61F09F3F79F0879508951216130692
+:1044E0001406551FF2CF4695F1DF08C016161706C1
+:1044F0001806991FF1CF86957105610508940895F6
+:10450000E894BB2766277727CB0197F908950E9487
+:104510009A220C940B230E94FD2238F00E9404235F
+:1045200020F0952311F00C94F4220C94FA2211241B
+:104530000C9481220E945E2270F3959FC1F3950F27
+:1045400050E0551F629FF001729FBB27F00DB11D17
+:10455000639FAA27F00DB11DAA1F649F6627B00DA7
+:10456000A11D661F829F2227B00DA11D621F739F90
+:10457000B00DA11D621F839FA00D611D221F749F9E
+:104580003327A00D611D231F849F600D211D822FE5
+:10459000762F6A2F11249F5750409AF0F1F088230C
+:1045A0004AF0EE0FFF1FBB1F661F771F881F915039
+:1045B0005040A9F79E3F510580F00C94F4220C94D2
+:1045C00081225F3FE4F3983ED4F386957795679513
+:1045D000B795F795E7959F5FC1F7FE2B880F911D63
+:1045E0009695879597F9089597F99F6780E870E009
+:1045F00060E008959FEF80EC089500240A94161659
+:10460000170618060906089500240A9412161306C0
+:10461000140605060895092E0394000C11F488234E
+:1046200052F0BB0F40F4BF2B11F460FF04C06F5F6A
+:104630007F4F8F4F9F4F089597FB072E16F40094DE
+:1046400007D077FD09D00E94362307FC05D03EF441
+:10465000909581959F4F0895709561957F4F08952E
+:10466000EE0FFF1F0590F491E02D0994AA1BBB1BD0
+:1046700051E107C0AA1FBB1FA617B70710F0A61B62
+:10468000B70B881F991F5A95A9F780959095BC0183
+:10469000CD010895F999FECF92BD81BDF89A992771
+:1046A00080B50895A8E1B0E042E050E00C946D239D
+:1046B000262FF999FECF1FBA92BD81BD20BD0FB63E
+:1046C000F894FA9AF99A0FBE019608950E94582319
+:1046D000272F0C945923DC01CB01FC01F999FECF63
+:1046E00006C0F2BDE1BDF89A319600B40D9241507A
+:0A46F0005040B8F70895F894FFCF8A
+:1046FA002002BC074C082708F307BF070101BA01CB
+:10470A0028080A03140A3F4D36390A05BD048704EE
+:10471A004E04E103FA0313042C0401020304050600
+:04472A000708090073
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/alexjj/readme.md b/keyboard/ergodox_ez/keymaps/alexjj/readme.md
new file mode 100644
index 000000000..239e32d39
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/alexjj/readme.md
@@ -0,0 +1,179 @@
+Englishman in New York
+===========================
+
+:microphone: :tea:
+
+About
+------
+
+After using the massdrop configurator to get the basics, I wanted to add a
+little extra to my ergodox. Notably the Hyper hotkey, the press and hold,
+and a way to have my beloved £ :pound: symbol available<sup>[1](#unicode)</sup>. Why not switch to a GB
+layout? Well the computers I use are US keymap'd and I can't always change
+that. Plus I've got used to 2/@ and 3/# and moving to the ergodox was hard
+enough. :sweat_smile:
+
+I started from the default and edited from there as I needed. It's somewhat
+similar to a regular layout, particularly R1 and shift/controls. I ended up
+with a few keys that were blank, so I'm testing out some shortcuts. Alt+F4 for
+quitting things in Windows, is one example, but I felt it was better placed on
+the 1st layer - in case of fat fingers.
+
+Layout
+-------
+
+![Layout](rl-layout.jpg "Isn't it lovely")
+
+### Base Layer
+
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+| ESC | 1! | 2@ | 3# | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | -_ | += | BkSp |
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| Tab | Q | W | E | R | T | { | | } | Y | U | I | O | P | |\ |
+|--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
+| Win | A | S | D | F | G |------| |------| H | J | K | L | :; | '" |
+|--------+------+------+------+------+------| Home | | End |------+------+------+------+------+--------|
+| LShift |Z/Alt | X | C | V | B | | | | N | M | , | . | Alt | RShift |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ |LCtrl | COPY | PASTE| Left | Right| | Down | Up |Hyper | `~ | RCtrl |
+ `----------------------------------' `----------------------------------'
+ ,-------------. ,-------------.
+ Hyper = Ctrl+Super+Alt+Shift | ~L3 | F5 | | F2 | ~L2 |
+ ,------|------|------| |------+------+------.
+ | | | PgUp | | Ins | | |
+ | Enter| BkSp |------| |------| ~L1 |Space |
+ | | | PgDn | | Del | | |
+ `--------------------' `--------------------'
+```
+
+### Symbol Layer
+
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+| | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |PrintScr|
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ | | £ | | | | | | . | 0 | = |Alt+F4|
+ `----------------------------------' `----------------------------------'
+ ↑ ,-------------. ,-------------.
+ THERE! | | | | | |
+ ,------|------|------| |------+------+------.
+ CAD = Ctrl + Alt + Delete | | | | | | | |
+ | | |------| |------| | |
+ | | | | | CAD | | |
+ `--------------------' `--------------------'
+```
+### Media Layer
+
+Not touched this, not used either.
+
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+| TEENSY | | | | | | | | | | | | | | |
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| | | | MsUp | | | | | | | | | | | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| | | | | | | | | | | | Prev | Next | | |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ | | | | Lclk | Rclk | |VolDn |VolUp | Mute | | |
+ `----------------------------------' `----------------------------------'
+ ,-------------. ,-------------.
+ | | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | |Brwser|
+ | | |------| |------| |Back |
+ | | | | | | | |
+ `--------------------' `--------------------'
+```
+### Unicode Layer
+
+Used to enter/test unicode input on Windows. All numbers are numpad keys.
+
+```
+,--------------------------------------------------. ,--------------------------------------------------.
+| Alt | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | + | + | |
+|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+| Alt | | | E | | | | | | | 7 | 8 | 9 | + | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| Alt | A | | D | F | |------| |------| | 4 | 5 | 6 | + | |
+|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+| Alt | | | C | | B | | | | | 1 | 2 | 3 | + | |
+`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ | Alt | Alt | Alt | | | | 0 | 0 | 0 | + | |
+ `----------------------------------' `----------------------------------'
+ ,-------------. ,-------------.
+ WINDOWS ONLY SETUP!! | ~L3 | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | | |
+ | Alt | Alt |------| |------| Alt | Alt |
+ | | | | | | | |
+ `--------------------' `--------------------'
+```
+
+
+Usage
+------
+
+~L1 / L2 / L3 will momentarily switch to a layer if held and another key is pressed.
+If pressed and released will remain on layer until pressed again.
+
+### Unicode
+
+This layout is for Windows only. To enter a character Press and Hold Alt, type + and hex code then release Alt.
+
+Changelog
+-----------
+
+### [0.2.1] - 2016-04-05
+
+* Changed £ to alt code in Windows. Windows sucks at unicode.
+
+### [0.2.0] - 2016-03-27
+
+* Added unicode layer
+* Moved Copy/Paste to left hand side
+* Switched Enter and Space (again)
+* Added L3 (unicode layer) toggle
+* Removed Press and Hold for Alt on right hand size (/)
+* Swapped Volume Up/Down to match arrows
+* Tried fixing £ macro
+* Removed * in the matrix function things (upstream change)
+
+### [0.1.1] - 2016-03-23
+
+* Changed £ input to a macro
+
+
+### [0.1.0] - 2016-03-22
+
+After actually using the keyboard, I've made some changes:
+
+* Swapped Enter and Space
+* Moved backspace to thumb keys (top right still remains)
+* Added Ctrl+Alt+Delete
+* Added Teensy Reset on 2nd layer
+* Switched Up and Down
+* Changed copy/paste to be Ctrl+c and Ctrl+v as KC_COPY/PASTE didn't work (in Windows)
+* Moved ~L2 to replace +L1 after learning how the function works (notes above)
+* Hopefully fixed GBP symbol (unicode enabled in MakeFile)
+
+### [0.0.1] - 2016-03-21
+
+First version
+
+
+Issues
+-------
+
+Space for feedback and notes for future improvements
+
+----
+<sup><a name="unicode">1</a></sup>: For Windows only, and you have to edit the [registry](https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input).
diff --git a/keyboard/ergodox_ez/keymaps/alexjj/rl-layout.jpg b/keyboard/ergodox_ez/keymaps/alexjj/rl-layout.jpg
new file mode 100644
index 000000000..e4e92bf46
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/alexjj/rl-layout.jpg
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py
new file mode 100644
index 000000000..7076a6ecb
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py
@@ -0,0 +1,710 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Compiler for keymap.c files
+
+This scrip will generate a keymap.c file from a simple
+markdown file with a specific layout.
+
+Usage:
+ python compile_keymap.py INPUT_PATH [OUTPUT_PATH]
+"""
+from __future__ import division
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
+import os
+import io
+import re
+import sys
+import json
+import unicodedata
+import collections
+import itertools as it
+
+PY2 = sys.version_info.major == 2
+
+if PY2:
+ chr = unichr
+
+
+KEYBOARD_LAYOUTS = {
+ # These map positions in the parsed layout to
+ # positions in the KEYMAP MATRIX
+ 'ergodox_ez': [
+ [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44],
+ [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51],
+ [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57],
+ [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64],
+ [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69],
+ [ 32, 33], [70, 71 ],
+ [ 34], [72 ],
+ [ 35, 36, 37], [73, 74, 75 ],
+ ]
+}
+
+ROW_INDENTS = {
+ 'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
+}
+
+BLANK_LAYOUTS = [
+# Compact Layout
+"""
+.------------------------------------.------------------------------------.
+| | | | | | | | | | | | | | |
+!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+| | | | | | | | | | | | | | |
+!-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+| | | | | | |-----!-----! | | | | | |
+!-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+| | | | | | | | | | | | | | |
+'-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+""",
+
+# Wide Layout
+"""
+.---------------------------------------------. .---------------------------------------------.
+| | | | | | | | ! | | | | | | |
+!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
+| | | | | | | | ! | | | | | | |
+!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
+| | | | | | |-------! !-------! | | | | | |
+!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
+| | | | | | | | ! | | | | | | |
+'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
+ | | | | | | ! | | | | |
+ '------------------------------' '------------------------------'
+ .---------------. .---------------.
+ | | | ! | |
+ .-------+-------+-------! !-------+-------+-------.
+ ! ! | | ! | ! !
+ ! ! !-------! !-------! ! !
+ | | | | ! | | |
+ '-----------------------' '-----------------------'
+""",
+]
+
+
+DEFAULT_CONFIG = {
+ "keymaps_includes": [
+ "keymap_common.h",
+ ],
+ 'filler': "-+.'!:x",
+ 'separator': "|",
+ 'default_key_prefix': ["KC_"],
+}
+
+
+SECTIONS = [
+ 'layout_config',
+ 'layers',
+]
+
+
+# Markdown Parsing
+
+ONELINE_COMMENT_RE = re.compile(r"""
+ ^ # comment must be at the start of the line
+ \s* # arbitrary whitespace
+ // # start of the comment
+ (.*) # the comment
+ $ # until the end of line
+""", re.MULTILINE | re.VERBOSE
+)
+
+INLINE_COMMENT_RE = re.compile(r"""
+ ([\,\"\[\]\{\}\d]) # anythig that might end a expression
+ \s+ # comment must be preceded by whitespace
+ // # start of the comment
+ \s # and succeded by whitespace
+ (?:[^\"\]\}\{\[]*) # the comment (except things which might be json)
+ $ # until the end of line
+""", re.MULTILINE | re.VERBOSE)
+
+TRAILING_COMMA_RE = re.compile(r"""
+ , # the comma
+ (?:\s*) # arbitrary whitespace
+ $ # only works if the trailing comma is followed by newline
+ (\s*) # arbitrary whitespace
+ ([\]\}]) # end of an array or object
+""", re.MULTILINE | re.VERBOSE)
+
+
+def loads(raw_data):
+ if isinstance(raw_data, bytes):
+ raw_data = raw_data.decode('utf-8')
+
+ raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data)
+ raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data)
+ raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data)
+ return json.loads(raw_data)
+
+
+def parse_config(path):
+ def reset_section():
+ section.update({
+ 'name': section.get('name', ""),
+ 'sub_name': "",
+ 'start_line': -1,
+ 'end_line': -1,
+ 'code_lines': [],
+ })
+
+ def start_section(line_index, line):
+ end_section()
+ if line.startswith("# "):
+ name = line[2:]
+ elif line.startswith("## "):
+ name = line[3:]
+ else:
+ name = ""
+
+ name = name.strip().replace(" ", "_").lower()
+ if name in SECTIONS:
+ section['name'] = name
+ else:
+ section['sub_name'] = name
+ section['start_line'] = line_index
+
+ def end_section():
+ if section['start_line'] >= 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/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex b/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex
new file mode 100644
index 000000000..ee1d30967
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex
@@ -0,0 +1,1240 @@
+:100000000C9412040C9456040C9456040C9456044C
+:100010000C9456040C9456040C9456040C945604F8
+:100020000C9456040C9456040C944F0F0C9421100D
+:100030000C9456040C9456040C9456040C945604D8
+:100040000C9456040C94D6240C9456040C94560428
+:100050000C9456040C94751E0C9456040C9456047F
+:100060000C9456040C9456040C9456040C945604A8
+:100070000C9456040C9456040C9456040C94560498
+:100080000C9456040C9456040C9456040C94560488
+:100090000C9456040C9456040C9456040C94560478
+:1000A0000C9456040C9456040C945604A305700545
+:1000B0005B05B505DC050F06F105F7050C063A06EC
+:1000C0002F06FA0532064605EB0523062C066D05BC
+:1000D0006405B205A905910567052605BE05140648
+:1000E0001D0629069705C705A60540051A06E5055C
+:1000F00088059D0594057C0520068B053105E805DE
+:100100008205C1052005AC055E054C057605730525
+:10011000CA059A05060637058505AF052305B80506
+:1001200003060906D3055505EE0543056A054F0587
+:10013000C405F40535062905A005BB05FD05CD055B
+:1001400052052606E2053D058E055805D9056105CF
+:1001500000063A05D005DF052C0549053F061706C0
+:1001600079053405D6057F0514058610A81093116E
+:10017000A8109311EA100D119311621175116E14EC
+:100180006E149C149C14DE141A151A171A173215C3
+:100190001A1729162916F4161A171A1708170552CE
+:1001A000045201520352010000001E001B001800FF
+:1001B0002F00010029001F0013000C003300E30092
+:1001C000E1002000090004003400E2002A002100C0
+:1001D0001A0008000600E000650022000A00120074
+:1001E0001900000049002E004A0000004D000000E8
+:1001F00002542E02025400002B0000005E30230047
+:100200000B001600050000004C0024000D0011003A
+:100210001000E4004B0025000E0015003600E6003B
+:100220002C0026000F001700370050002800270080
+:1002300014000700520051004E0035001C002D0034
+:100240001D004F000000010001000100010001003D
+:1002500000001E02300238020100010001001F02EE
+:10026000641438003000010001002002240223023F
+:1002700027020100010001002414251401000100DF
+:1002800001000100271426140100000001000100F4
+:100290000100000001000000010001000100000059
+:1002A0000100000001000100310021022D140000B6
+:1002B000010001006400250222020100010001008A
+:1002C0006402260236020100010001000100301420
+:1002D00037023830010035021F023102553002303A
+:1002E0000100010001002D0201003D30000001006D
+:1002F000010001000100010000003A0001000100BE
+:100300000100010001003B000100010001000100AB
+:1003100001003C00010001000100010001003D005E
+:10032000010001000100010001003E000100010088
+:100330000100000001004400010000000100000075
+:1003400001004500010000005300000001003F00D3
+:100350000100010001000000010040005F005C009E
+:10036000590062000100410060005D005A008500F4
+:100370000100420061005E005B0063000100430079
+:100380005500560057005800010067005400560001
+:1003900057005800000001000100010001000100A9
+:1003A00000004D30393001005B3001000100513058
+:1003B00058303C303B300100010050300130141403
+:1003C0005D30010001004A30593008145C300100F2
+:1003D0000100493057300430003000000100053082
+:1003E0000100000001000000010001000100000008
+:1003F0000100000001004F305A3037301E0200006B
+:1004000001004E3001004B30010001000100483076
+:10041000563054305330010001004C30010003309D
+:100420003A300100010052300100010001000100DA
+:1004300001000100010001000100010000000100B5
+:100440000100010001000100000042302030343082
+:1004500001000100010046302E302630333001000B
+:10046000010045302D301E300100010001004030F8
+:100470002B3022300100010001003F3025302C30AC
+:100480000100000001000100010000000100000067
+:1004900001000100010000000100000001004430E3
+:1004A000233031301F3000000100433035302A3016
+:1004B0002930010001003E302730303001000100BA
+:1004C0000100413028303230010001000100473086
+:1004D000010021300100010001000100363024300C
+:1004E0002F300100000001000100010001000100A7
+:1004F0000000010008301B30010001000100010074
+:1005000015300D301A3001000100010014300630A2
+:10051000010001000100010012300A300100010059
+:10052000010001000C301330010000000100010047
+:1005300001000000010000000100010001000000B6
+:1005400001000000010001000B30183007300000EE
+:10055000010001001C3011301030010001000100C9
+:100560000E30173001000100010001000F3019307A
+:10057000010001000100010001000930010001003B
+:10058000010001001D3001001630010000000100D3
+:100590000100010001000100000001000100010054
+:1005A0000100010001000100010001000100010043
+:1005B0000100010001000100010001000100010033
+:1005C0000100010001000100010001000100010023
+:1005D0000100000001000100010000000100000016
+:1005E0000100010001000000010000000100010005
+:1005F00001000100010000000100010001000100F4
+:1006000001000100010001000100010001000100E2
+:1006100001000100010001000100010001000100D2
+:1006200001000100010001000100010001000100C2
+:1006300001000100000016034500720067006F0012
+:1006400044006F007800200045005A0000001603A7
+:100650004500720067006F0044006F0078002000C2
+:1006600045005A0000000403090409026D0004015A
+:1006700000A0FA0904000001030101000921110191
+:100680000001223F000705810308000A0904010058
+:100690000103010200092111010001224D0007059B
+:1006A000820308000A090402000103000000092176
+:1006B000110100012236000705830308000A09041E
+:1006C000030001030000000921110100012239008B
+:1006D000070584031000011201100100000008ED5D
+:1006E000FE071301000102000105010906A1010531
+:1006F0000719E029E7150025019508750181020514
+:100700000819012905950575019102950175039157
+:1007100001050719002977150025019578750181D4
+:1007200002C005010980A101850216010026B7005B
+:100730001A01002AB700751095018100C0050C0947
+:1007400001A1018503160100269C021A01002A9CC2
+:1007500002751095018100C005010902A10109017E
+:10076000A100050919012905150025019505750147
+:100770008102950175038101050109300931158157
+:10078000257F95027508810609381581257F950119
+:1007900075088106050C0A38021581257F950175BB
+:1007A000088106C0C005010906A101050719E02955
+:1007B000E7150025019508750181029501750881ED
+:1007C0000105081901290595057501910295017525
+:1007D0000391010507190029FF150025FF950675EE
+:1007E000088100C0000000000000000000000001BF
+:1007F0000204060A0F17202C3A4A5D71879DB3C781
+:10080000DAE9F5FCFFFCF5E9DAC7B39D87715D4ACB
+:100810003A2C20170F0A0604020100000000000015
+:100820000000000011241FBECFEFDAE0DEBFCDBF15
+:1008300004B603FE24C08091F1019091F201A091D1
+:10084000F301B091F4018730904BA740B04BB9F45D
+:100850001092F1011092F2011092F3011092F40142
+:1008600014BE84B7877F84BF88E10FB6F894809365
+:100870006000109260000FBEE0E0FFE3099511E018
+:10088000A0E0B1E0E0E3FDE402C005900D92A433E6
+:10089000B107D9F711E0A4E3B1E001C01D92A13F77
+:1008A000B107E1F70E94950C0C9496260C94000079
+:1008B000282F882341F090E02A3018F4885A9F4F5F
+:1008C00008950697089582E690E008950F931F9388
+:1008D000CF93DF938C01EB0180913401909135012E
+:1008E000009709F448C0019709F089C080EE0E9482
+:1008F000F71281EE0E94F71288E10E94F71288E158
+:100900000E94BF13C801807F992724E096958795A0
+:100910002A95E1F70E945804182F0E94F712812FA0
+:100920000E94BF13802F8F700E945804182F0E94BE
+:10093000F712812F0E94BF13CE01807F992734E0E8
+:10094000969587953A95E1F70E945804D82F0E9412
+:10095000F7128D2F0E94BF138C2F8F700E945804A6
+:10096000C82F0E94F7128C2F0E94BF1380EE0E94A6
+:10097000BF1381EE3EC082EE0E94F71287E50E940F
+:10098000F71287E50E94BF13C801807F992744E0D2
+:10099000969587954A95E1F70E945804182F0E9472
+:1009A000F712812F0E94BF13802F8F700E9458046E
+:1009B000182F0E94F712812F0E94BF13CE01807F53
+:1009C000992754E0969587955A95E1F70E94580427
+:1009D000D82F0E94F7128D2F0E94BF138C2F8F707B
+:1009E0000E945804C82F0E94F7128C2F0E94BF1338
+:1009F00082EEDF91CF911F910F910C94BF13DF9185
+:100A0000CF911F910F910895FC018281882309F4F1
+:100A10003CC1862F90E08F35910508F036C1FC016E
+:100A2000EA5AFF4F0C944B26809134019091350186
+:100A3000019681709927909335018093340125C1E7
+:100A40006FEB70E019C160E970E008C061EA70E026
+:100A500013C163E870E00BC16BE570E081E290E0E8
+:100A600012C16BEB70E008C163E570E0F7CF6EEB8D
+:100A700070E002C164E070E0D4C069EB70E001C1D5
+:100A800062EB70E0F9C065E870E0F1C069E970E020
+:100A9000F3C065E570E0E2CF68EC70E0EDC069E8B6
+:100AA00070E0E5C064E770E0E2C062E970E0D6CFD4
+:100AB00066E770E0DCC063E970E0D0CF60EC70E026
+:100AC000DBC062EB70E0DDC069EA70E0D5C068EAC7
+:100AD00070E0D2C064E870E0CAC06DE970E0CCC0DC
+:100AE00067EF70E0CEC063EC70E0C6C061EC70E010
+:100AF000C3C069E570E0B2CF63EB70E0BDC064E5F0
+:100B000070E0ACCF6DEB70E0B7C066EB70E0B4C0E6
+:100B100065EB70E0B1C06AEB70E0AEC067E770E013
+:100B2000A6C060EA70E0A8C062EC70E0A5C06EE903
+:100B300070E0A2C068EB70E09FC067EB70E09CC003
+:100B400062E870E094C063E470E06BC061EB70E059
+:100B500093C066EA70E090C066EC70E08DC06EE114
+:100B600070E05FC06FE970E087C068E070E059C076
+:100B700067ED70E086C060E870E079C063EA70E01D
+:100B80007BC069EC70E078C061E870E070C066E935
+:100B900070E072C064EC70E06FC065E770E067C041
+:100BA00063E070E03EC061EB70E06BC06EEB70E044
+:100BB00068C063EB70E065C065E070E032C061E979
+:100BC00070E04CCF69E770E052C064EB70E054C055
+:100BD0006CEB70E051C06AE970E04EC068E870E00C
+:100BE00046C061E970E048C067E870E040C062E973
+:100BF00070E042C067E970E03FC068E770E037C06E
+:100C000060E770E034C069E070E00BC065EC70E054
+:100C100033C060E670E005C067EA70E02DC060E0B8
+:100C200070E082E290E02FC064EA70E025C06CEBD7
+:100C300070E027C067EC70E01FC068E970E01CC07E
+:100C400069EB70E019C06BE970E016C06FE770E007
+:100C50000EC065EA70E010C06CE970E00DC065E997
+:100C600070E00AC063E970E007C066E870E080E207
+:100C700090E009C064E970E083E090E004C06DEBAF
+:100C800070E080E090E00E94660480E090E00895CB
+:100C900008956091B3017091B4018091B501909174
+:100CA000B6010E94A11D56985E9825982D98269809
+:100CB0002E9827982F988330A9F028F4813051F08E
+:100CC000823069F012C0843041F0853071F4259A89
+:100CD0002D9A08C0259A2D9A0895259A2D9A269A1C
+:100CE0002E9A0895279A2F9A089556985E980895F7
+:100CF0000C94490656985E9825982D9826982E981B
+:100D000027982F988FEF90E0909389008093880028
+:100D100090938B0080938A0090938D0080938C0039
+:100D2000259A2D9A2FEF80E792E021508040904045
+:100D3000E1F700C00000269A2E9A2FEF80E792E09C
+:100D4000215080409040E1F700C00000279A2F9A80
+:100D50002FEF80E792E0215080409040E1F700C003
+:100D6000000025982D982FEF80E792E021508040D9
+:100D70009040E1F700C0000026982E982FEF80E702
+:100D800092E0215080409040E1F700C00000279899
+:100D90002F9856985E9825982D9826982E982798E3
+:100DA0002F98089589EA8093800089E080938100DC
+:100DB00024982C983F988AB18F748AB96E98479A74
+:100DC0008BB1806B8BB9769A0E947A060C94480698
+:100DD00080E2809300018091360181110EC00E9453
+:100DE000370781E0809336012FEF83ED90E32150A8
+:100DF00080409040E1F700C0000080E40E943D0781
+:100E00008093000181112EC00E946707809300012A
+:100E1000811128C00E94670780930001811122C0C0
+:100E20008FE30E9467078093000181111BC00E941D
+:100E30005F0780E40E943D0780930001811112C08A
+:100E40008CE00E9467078093000181110BC00E9413
+:100E5000670780930001811105C08FE30E94670737
+:100E6000809300010E945F07809100010895109215
+:100E7000B9008AE08093B800089594EA9093BC008A
+:100E80009091BC0097FFFCCF9091B900987F98306B
+:100E900021F0903111F081E008958093BB0084E847
+:100EA0008093BC008091BC0087FFFCCF8091B9008B
+:100EB000887F883111F0803471F780E0089584E9EB
+:100EC0008093BC008091BC0084FDFCCF089580938A
+:100ED000BB0084E88093BC008091BC0087FFFCCFFE
+:100EE0009091B900987F81E0983209F480E00895EC
+:100EF00084E88093BC008091BC0087FFFCCF809188
+:100F0000BB00089580910001811115C080E40E940A
+:100F10003D078093000181110CC082E10E946707A8
+:100F200080930001811105C08FEF0E9467078093B5
+:100F300000010E945F0784B1807F84B985B1807F02
+:100F400085B98AB1837F8AB98BB1837F8BB93E988B
+:100F5000469808950E94E806809300010E94820747
+:100F600080B38C7080BB81B3836F81BBE6E4F1E01A
+:100F7000A8E3B1E011921D9281E0E435F807D1F7C2
+:100F80000C94D206BF92CF92DF92EF92FF920F9312
+:100F90001F93CF93DF9380910001882379F0809194
+:100FA00037018F5F80933701811108C00E94E806E6
+:100FB00080930001811102C00E947A0608E311E0CB
+:100FC000C0E0D0E0DD24D39482E0C82EEE24E39488
+:100FD000F12CC73000F580910001811162C080E4DE
+:100FE0000E943D0780930001811112C082E10E949E
+:100FF00067078093000181110BC0C7010C2E01C04F
+:10100000880F0A94EAF780950E9467078093000191
+:101010000E945F0746C0CA30A1F028F4C83059F0DA
+:10102000C93061F005C0CC3089F070F0CD3089F066
+:10103000209A289810C0219A29980DC0229A2A989F
+:101040000AC0239A2B9807C0529A01C0539A5B9802
+:1010500002C03E9A4698E0EAEA95F1F78FB1799995
+:101060005AC092E081708D25892B7C9B02C090E054
+:1010700001C094E0892B7D9B02C090E001C098E004
+:10108000892B7E9B02C090E001C090E1892B9FB12B
+:101090009095991F9927991F9295990F907E892B6A
+:1010A0000FC08091000181114BC080E40E943D0778
+:1010B00080930001882389F1B12C0E945F078B2D5A
+:1010C000F8019081981719F08083C09201010E9465
+:1010D000820721960F5F1F4FCE30D10509F079CFDF
+:1010E00080910101882371F181508093010188234F
+:1010F00039F08FE99FE00197F1F700C0000022C0AE
+:10110000A6E4B1E0E8E3F1E081918D9391E0E6346B
+:10111000F907D1F717C090E0A5CF83E10E946707D8
+:10112000809300018111C8CF81E40E943D07809324
+:1011300000018111C1CF0E947807B82EB094BDCFB5
+:1011400080E0BECF0E94780681E0DF91CF911F91B1
+:101150000F91FF90EF90DF90CF90BF900895E82F10
+:10116000F0E0EA5BFE4F8081089508958B3B910586
+:1011700078F4883A910540F5853A9105D0F48430A9
+:10118000910508F0B1C08130910509F4ADC06BC084
+:10119000803E910508F467C0883E910508F4A4C01C
+:1011A0009C01205F31092031310508F05CC0906559
+:1011B0000895853A910509F459C0863A910509F4D4
+:1011C00058C083E890E40895883A910509F454C022
+:1011D000893A910509F453C08A3A910509F452C03D
+:1011E0008B3A910509F451C08C3A910509F450C02D
+:1011F0008D3A910509F44FC0803B910509F44EC02A
+:101200008E3A910509F44DC08F3A910509F44CC00E
+:10121000813B910509F44BC0823B910509F44AC01A
+:10122000833B910509F449C0843B910509F448C00A
+:10123000853B910509F447C0863B910509F446C0FA
+:10124000873B910509F445C0883B910509F444C0EA
+:10125000893B910509F443C08A3B910509F042C0DE
+:101260008AE296E4089580E090E0089581E890E4B1
+:10127000089582E890E4089582EE94E4089589EE5A
+:1012800094E408958AEE94E4089585EB94E4089537
+:1012900086EB94E4089587EB94E408958CEC94E451
+:1012A00008958DEC94E4089583E895E408958AE820
+:1012B00095E4089582E995E4089584E995E4089514
+:1012C00081E296E4089583E296E4089584E296E448
+:1012D000089585E296E4089586E296E4089587E20B
+:1012E00096E4089580E094E40895089596E0799F47
+:1012F000F001112494E5899FE00DF11D1124E60F02
+:10130000F11DEE0FFF1FE256FE4F85919491089557
+:10131000880F991F825E9F4FFC01859194910895DB
+:10132000880F991F82569E4FFC01859194910895D4
+:1013300026E0729FF001112444E5849FE00DF11D29
+:101340001124E60FF11DEE0FFF1FE256FE4F25910F
+:101350003491C9019A9581159F4110F4C9010895EE
+:10136000C90190528115904128F4C9019F700E94D3
+:1013700090090895C90190538115904120F4C90145
+:101380009927906C0895211580E5380769F40E942B
+:101390003D179FEF24E34CE0915020404040E1F79F
+:1013A00000C000000C949A1E213080E5380731F40B
+:1013B0008091CF0181608093CF010895C90190553C
+:1013C0008115904108F050C0832F99278F7099277D
+:1013D00081309105D9F4A9014370552702C0880FC7
+:1013E000991F4A95E2F79C68A90164E0440F551FD4
+:1013F0006A95E1F744275370842B952B73E0220FF5
+:10140000331F7A95E1F7207633271DC0823091058E
+:1014100029F4922F8827816F906A0895833091056F
+:10142000A9F4A9014370552781E090E002C0880F1C
+:10143000991F4A95E2F79C6843E0220F331F4A95B3
+:10144000E1F7207E3770822B932B08950497F1F4F7
+:10145000A9014370552781E090E002C0880F991FD1
+:101460004A95E2F79A68E8CFC901905781159041F3
+:1014700020F4C9019F7090620895C90190588115A8
+:10148000904120F4C9019F70906A0895203E310573
+:10149000E0F4203C310558F52133310509F470C0E2
+:1014A00048F42932310509F464C02A32310509F4BF
+:1014B0006EC074C029333105F1F022383105D9F0FE
+:1014C0002533310509F44EC069C0233E310589F149
+:1014D00038F4203E3105C1F0223E3105E1F05EC016
+:1014E000263E310569F1273E3105A9F157C0C901F2
+:1014F0000E94880908958091E20180FD02C081FF69
+:101500004DC080EE90E04BC08091E20180FFF9CFAA
+:1015100089E390E044C08091E20182FF0EC0809197
+:10152000E20184FF03C080E090E039C083EE90E0E8
+:1015300036C08091E20182FFF2CF82EE90E02FC0B0
+:101540008091E20183FF0BC08091E20184FDEBCF2B
+:1015500087EE90E024C08091E20183FFF5CF86EE14
+:1015600090E01DC08091E20185FF07C089E290E014
+:1015700016C08091E20185FFF9CF85E390E00FC0AE
+:101580008091E20186FF07C08AE290E008C0809166
+:10159000E20186FFF9CF81E390E001C0C9010E941A
+:1015A000B608089508950C94D20A809164010895B4
+:1015B000CF93DF9300D01F92CDB7DEB72091E80123
+:1015C000243019F523E029839B838A832093E90043
+:1015D0008FEF9091E800815095FD06C095ED9A95AA
+:1015E000F1F700008111F5CF8091E80085FF0DC073
+:1015F00040E050E063E070E0CE0101960E94420DB1
+:101600008091E8008E778093E8000F900F900F9004
+:10161000DF91CF910895CF93DF9300D01F92CDB784
+:10162000DEB72091E801243021F522E029839B8355
+:101630008A8383E08093E9008FEF9091E8008150E6
+:1016400095FD06C095ED9A95F1F700008111F5CF53
+:101650008091E80085FF0DC040E050E063E070E05D
+:10166000CE0101960E94420D8091E8008E77809312
+:10167000E8000F900F900F90DF91CF910895209187
+:10168000E8012430F1F422E02093E9002FEF3091BB
+:10169000E800215035FD06C035ED3A95F1F7000020
+:1016A0002111F5CF2091E80025FF0BC040E050E06C
+:1016B00065E070E00E94420D8091E8008E77809393
+:1016C000E8000895CF93DF93EC018091E801843026
+:1016D00009F046C090910C019923D9F090910D0129
+:1016E0009923B9F08093E9008FEF9091E800815041
+:1016F00095FD06C095E19A95F1F700008111F5CFAF
+:101700008091E80085FF2CC040E050E060E170E08F
+:1017100017C081E08093E9008FEF9091E80081503D
+:1017200095FD06C095ED9A95F1F700008111F5CF72
+:101730008091E80085FF14C040E050E068E070E070
+:10174000CE010E94420D8091E8008E778093E800E0
+:1017500080E1FE01A4E5B1E001900D928A95E1F7E8
+:10176000DF91CF9108958091E701811109C00E9416
+:10177000D40E0E94310F8091E20084608093E200D9
+:1017800008951092E701089508950C94C3240E94CF
+:10179000311E0E94C9240E94CE110C94D30A42E04B
+:1017A00061EC81E00E944E0E42E061EC82E00E941A
+:1017B0004E0E42E061EC83E00E944E0E42E161EC8D
+:1017C00084E00C944E0E8091EA01833009F455C0F8
+:1017D00030F4813071F0823009F48EC008958A307F
+:1017E00009F47AC08B3009F460C0893009F09CC0DC
+:1017F00020C08091E901813A09F096C08091E8000B
+:10180000877F8093E8008091ED019091EE01892B14
+:1018100021F060E080E090E003C060E184E591E0C9
+:1018200070E00E948B0D8091E8008B778093E80038
+:1018300008958091E901813209F076C08091ED012F
+:101840009091EE01009719F0039709F06DC0809117
+:10185000E800877F8093E8008091E80082FD05C062
+:101860008091E8018111F8CF5FC08091F1008093F1
+:1018700064018091E8008B7753C08091E901813A3F
+:1018800009F052C08091ED019091EE01892B09F091
+:101890004BC08091E800877F8093E8008091E8004A
+:1018A00080FFFCCF80910C0136C08091E90181322C
+:1018B000D9F58091ED019091EE01892BA9F58091E8
+:1018C000E800877F8093E8000E94830E8091EB01FF
+:1018D00080930C010C943D178091E901813221F530
+:1018E0008091E800877F8093E8000E94830E8091BA
+:1018F000EC018093650108958091E901813AA1F49A
+:101900008091E800877F8093E8008091E80080FF65
+:10191000FCCF809165018093F1008091E8008E7783
+:101920008093E8000C94830E089584B7877F84BF6A
+:1019300088E10FB6F89480936000109260000FBEAB
+:1019400090E080E80FB6F894809361009093610076
+:101950000FBE0E941D120E94D40E0E94310F809172
+:10196000E20084608093E20078940E94AC110E94AF
+:101970001F1282E091E00E94C9110E94B12480915F
+:10198000E801853069F40E94F41D8091E601882306
+:10199000B1F30E941C1E882391F30E942C0DEFCFFF
+:1019A0000E942512ECCF292F332723303105A9F0CF
+:1019B0006CF42130310509F442C02230310509F0C0
+:1019C00043C08DE690E02AE636E042C02132310580
+:1019D000C9F02232310519F137C0992781309105BC
+:1019E00041F08230910541F0892B71F5E6E6F6E091
+:1019F00005C0EEE4F6E002C0E6E3F6E0849190E094
+:101A00009F0126C0643000F5E62FF0E0EE0FFF1FC7
+:101A1000EE5DFE4F2081318189E090E019C0643095
+:101A200098F4E62FF0E0DF01AA0FBB1FA65EBE4FC1
+:101A30002D913C91EA5EFE4F808190E009C082E1E9
+:101A400090E027ED36E004C080E090E020E030E058
+:101A5000FA0131832083089580E189BD82E189BD47
+:101A600009B400FEFDCF8091D8008F7D8093D8000F
+:101A70008091E00082608093E0008091E00081FD31
+:101A8000FCCF0895CF92DF92EF92FF920F931F93B6
+:101A9000CF93DF937C018B01EA010E94A40E811198
+:101AA00031C0209731F088819981081B190BE80E0D
+:101AB000F91EC12CD12C0115110519F18091E800F6
+:101AC00085FD14C08091E8008E778093E800209710
+:101AD00041F0888199818C0D9D1D9983888385E0D3
+:101AE00011C00E94A40E882331F30CC0F70181912C
+:101AF0007F018093F10001501109FFEFCF1ADF0A37
+:101B0000DACF80E0DF91CF911F910F91FF90EF909E
+:101B1000DF90CF9008952091EF013091F0012617CA
+:101B2000370748F06115710539F42091E8002E77E8
+:101B30002093E80001C0B901FC0120E061157105A6
+:101B4000B9F18091E801882309F440C0853009F497
+:101B50003FC08091E80083FD3DC08091E80082FF96
+:101B600006C08091E80082FF26C080E00895809141
+:101B7000E80080FFE3CF2091F3008091F20090E035
+:101B8000922B6115710551F08830910538F421913F
+:101B90002093F100615071090196F3CF21E008977D
+:101BA00009F020E08091E8008E778093E800C6CFAE
+:101BB0002111C7CFD6CF8091E801882339F0853035
+:101BC00039F08091E80083FFCCCF04C082E0089513
+:101BD00083E0089581E008952091EF013091F001B4
+:101BE0002617370748F06115710539F42091E80090
+:101BF0002E772093E80001C0B901FC0120E06115B7
+:101C00007105C1F18091E801882309F441C0853054
+:101C100009F440C08091E80083FD3EC08091E80057
+:101C200082FF06C08091E80082FF27C080E008950F
+:101C30008091E80080FFE3CF2091F3008091F200D3
+:101C400090E0922B6115710559F08830910540F4B0
+:101C500024912093F1003196615071090196F2CFE1
+:101C600021E0089709F020E08091E8008E778093CA
+:101C7000E800C5CF2111C6CFD5CF8091E8018823D8
+:101C800039F0853039F08091E80083FFCBCF04C074
+:101C900082E0089583E0089581E00895982F9730B9
+:101CA00058F59093E900981739F07091EC00209165
+:101CB000ED005091F00003C0242F762F50E021FF5B
+:101CC00019C03091EB003E7F3093EB003091ED0076
+:101CD0003D7F3093ED003091EB0031603093EB00AD
+:101CE0007093EC002093ED005093F0002091EE00F3
+:101CF00027FF07C09F5FD3CF8F708093E90081E0FB
+:101D0000089580E008958091E90187FD05C08091E4
+:101D1000E80080FF0EC012C08091E80082FD05C07F
+:101D20008091E8018111F8CF08958091E8008B77C8
+:101D300008C08091E8018111EACF08958091E80000
+:101D40008E778093E80008958091E4009091E500FB
+:101D500045E62091EC0020FF21C02091E80020FD05
+:101D600021C02091E801222389F0253089F02091BB
+:101D7000EB0025FD0FC02091E4003091E50028170D
+:101D8000390739F3415041F0C901E3CF82E00895AA
+:101D900083E0089581E0089584E008952091E800AB
+:101DA00022FFDFCF80E008950E94420F0E944A0F79
+:101DB000E0EEF0E0808181608083E8EDF0E08081FA
+:101DC0008F77808319BCA7EDB0E08C918E7F8C93C8
+:101DD00080818F7E80831092E70108950F931F9377
+:101DE000CF93DF930E94420F0E944A0FC8EDD0E0CC
+:101DF00088818F77888388818068888388818F7DB8
+:101E0000888319BC1092E8011092E4011092E60157
+:101E10001092E50100EE10E0F80180818B7F808355
+:101E200088818160888342E060E080E00E944E0EFD
+:101E3000E1EEF0E080818E7F8083E2EEF0E0808151
+:101E400081608083808188608083F80180818E7FBB
+:101E50008083888180618883DF91CF911F910F916A
+:101E60000895E8EDF0E080818F7E8083E7EDF0E07B
+:101E700080818160808384E082BF81E08093E7017C
+:101E80000C94EE0EE8EDF0E080818E7F808310925E
+:101E9000E20008951092DA001092E10008951F9276
+:101EA0000F920FB60F9211242F933F934F935F938E
+:101EB0006F937F938F939F93AF93BF93EF93FF9312
+:101EC0008091E10082FF0BC08091E20082FF07C099
+:101ED0008091E1008B7F8093E1000E94AB118091A3
+:101EE000DA0080FF1FC08091D80080FF1BC0809166
+:101EF000DA008E7F8093DA008091D90080FF0DC0D8
+:101F000080E189BD82E189BD09B400FEFDCF81E099
+:101F10008093E8010E94B30B05C019BC1092E80140
+:101F20000E94C10B8091E10080FF19C08091E20006
+:101F300080FF15C08091E2008E7F8093E200809147
+:101F4000E20080618093E2008091D80080628093FB
+:101F5000D80019BC85E08093E8010E94C50B8091F0
+:101F6000E10084FF30C08091E20084FF2CC080E15A
+:101F700089BD82E189BD09B400FEFDCF8091D80002
+:101F80008F7D8093D8008091E1008F7E8093E10067
+:101F90008091E2008F7E8093E2008091E200816078
+:101FA0008093E2008091E401882311F084E007C06F
+:101FB0008091E30087FF02C083E001C081E080934D
+:101FC000E8010E94C70B8091E10083FF29C0809146
+:101FD000E20083FF25C08091E100877F8093E100CC
+:101FE00082E08093E8011092E4018091E1008E7F0D
+:101FF0008093E1008091E2008E7F8093E2008091E7
+:10200000E20080618093E20042E060E080E00E94B4
+:102010004E0E8091F00088608093F0000E94C40B07
+:10202000FF91EF91BF91AF919F918F917F916F91B0
+:102030005F914F913F912F910F900FBE0F901F9086
+:1020400018951F920F920FB60F9211242F933F9362
+:102050004F935F936F937F938F939F93AF93BF93B0
+:10206000CF93EF93FF93C091E900CF708091EC0084
+:102070001092E9008091F000877F8093F0007894BF
+:102080000E945D101092E9008091F00088608093BA
+:10209000F000C093E900FF91EF91CF91BF91AF9114
+:1020A0009F918F917F916F915F914F913F912F9170
+:1020B0000F900FBE0F901F9018951F93CF93DF9333
+:1020C000CDB7DEB7AA970FB6F894DEBF0FBECDBF6F
+:1020D000E9EEF1E08091F100819321E0E13FF20728
+:1020E000C9F70E94E30B8091E80083FF1CC1209197
+:1020F000E9013091EA01832F90E08A30910508F0E0
+:1021000012C1FC01EB54FF4F0C944B26203881F098
+:10211000223809F008C18091ED018F708093E900A9
+:102120008091EB0085FB882780F91092E90006C0BA
+:102130008091E5019091E601911182609091E80013
+:10214000977F9093E8008093F1001092F100C5C052
+:10215000822F8D7F09F0E7C0222319F0223061F031
+:10216000E2C08091EB01813009F0DDC0333009F02D
+:1021700080E08093E60128C08091EB01811124C0AA
+:102180002091ED012F7009F4CEC02093E9008091D9
+:10219000EB0080FF19C08091EB00333011F48062B6
+:1021A00011C080618093EB0081E090E0022E01C0BD
+:1021B000880F0A94EAF78093EA001092EA0080916F
+:1021C000EB0088608093EB001092E9008091E800BA
+:1021D000877F86C02111A7C01091EB011F778091E6
+:1021E000E3008078812B8093E3008091E800877F73
+:1021F0008093E8000E94830E8091E80080FFFCCF6E
+:102200008091E30080688093E300112311F083E064
+:1022100001C082E08093E80186C02058223008F097
+:1022200082C08091EB019091EC018C3D23E09207FC
+:1022300079F583E08A838AE289834FB7F894DE01D7
+:10224000139620E03EE051E2E32FF0E05093570078
+:10225000E49120FF03C0E295EF703F5FEF708E2F97
+:1022600090E0EA3010F0C79601C0C0968D939D9320
+:102270002F5F243149F74FBF8091E800877F80931B
+:10228000E8006AE270E0CE0101960E948B0D14C056
+:10229000AE014F5F5F4F6091ED010E94D30C00973C
+:1022A00009F441C02091E800277F2093E800BC0199
+:1022B00089819A810E94EC0D8091E8008B77809350
+:1022C000E80031C0203879F58091E800877F80935D
+:1022D000E8008091E4018093F1008091E8008E771E
+:1022E0008093E8000E94830E1EC021111CC09091B3
+:1022F000EB019230C0F48091E800877F8093E80082
+:102300009093E4010E94830E8091E401811104C046
+:102310008091E30087FF02C084E001C081E08093E8
+:10232000E8010E94CF0B8091E80083FF0AC08091F2
+:10233000E800877F8093E8008091EB0080628093C3
+:10234000EB00AA960FB6F894DEBF0FBECDBFDF91AB
+:10235000CF911F9108950895CF938091E80188232C
+:10236000B1F08091E9008F709091EC0090FF02C075
+:1023700090E801C090E0C92FC82B1092E90080912D
+:10238000E80083FD0E945D10CF70C093E900CF91FB
+:10239000089590936B0180936A010895E0916A011A
+:1023A000F0916B01309721F00190F081E02D0994BC
+:1023B00080E00895E0916A01F0916B01309721F07F
+:1023C0000280F381E02D09940895E0916A01F09173
+:1023D0006B01309721F00480F581E02D0994089578
+:1023E00020916801309169018217930771F09093F1
+:1023F000690180936801E0916A01F0916B01309767
+:1024000021F00680F781E02D09940895209166015E
+:10241000309167018217930771F090936701809361
+:102420006601E0916A01F0916B01309721F0008420
+:10243000F185E02D0994089508950C941C120E94D2
+:10244000371E0E94AA070C94FD1ECF92DF92EF92D6
+:10245000FF920F931F93CF93DF93CDB7DEB72B97E8
+:102460000FB6F894DEBF0FBECDBF0E94C2073DE697
+:10247000E32E31E0F32E00E010E0C02E802F0E940A
+:10248000AF08F701D1907F01D826B1F40F5F1F4F3D
+:102490000E30110591F78FEF89838A831B820E948A
+:1024A000401E8160782F9D838C8349815A816B8186
+:1024B0008D810E94C81241C09091CF0191FF04C04C
+:1024C0008B870E94B5088B8520E030E04D2D50E0D1
+:1024D000922FBA01022E02C0759567950A94E2F711
+:1024E00060FF25C02E83CF82EE24E394F12C02C03E
+:1024F000EE0CFF1C9A95E2F790E08E219F2121E0DF
+:10250000892B09F420E028870E94401E8160782FE3
+:102510009A8789874E815F8168858A850E94C81263
+:10252000F801E359FE4F80818E25808306C02F5F1E
+:102530003F4F2630310561F6A9CF0E94E12110916D
+:102540006C010E94CE111817A1F00E94CE11809349
+:102550006C012B960FB6F894DEBF0FBECDBFDF9196
+:10256000CF911F910F91FF90EF90DF90CF900C943F
+:10257000D30A2B960FB6F894DEBF0FBECDBFDF9106
+:10258000CF911F910F91FF90EF90DF90CF90089522
+:10259000CF93DF93CDB7DEB72B970FB6F894DEBF9E
+:1025A0000FBECDBF4F83588769877A878B87DE013F
+:1025B000119686E0FD0111928A95E9F785E0FE010A
+:1025C000379601900D928A95E1F749815A816B8186
+:1025D0007C818D819E810E94091A2B960FB6F894FA
+:1025E000DEBF0FBECDBFDF91CF9108950895CF9389
+:1025F000C82F882309F4C1C0823859F40E94CE1133
+:1026000081FDBBC089E30E94A81C0E94721D89E362
+:102610000CC0833879F40E94CE1180FDAEC083E5F2
+:102620000E94A81C0E94721D83E50E94E81CCF91A5
+:102630000C94721D843859F40E94CE1182FD9DC005
+:1026400087E40E94A81C0E94721D87E4EECF8CEFE5
+:102650008C0F813A48F48C2F0E94192481118DC06F
+:102660008C2F0E94A81CE3CF80E28C0F883048F4A6
+:10267000C77081E001C0880FCA95EAF70E94291D42
+:10268000D6CF8BE58C0F833078F4C53A29F0C63A63
+:1026900031F482E890E005C081E890E002C083E870
+:1026A00090E0CF910C94F01188E58C0F833108F005
+:1026B00064C0C83A39F1C93A41F1CA3A49F1CB3A52
+:1026C00051F1CC3A59F1CD3A61F1C03B69F1CE3AC2
+:1026D00071F1CF3A79F1C13B81F1C23B89F1C33B42
+:1026E00091F1C43B99F1C53BA1F1C63BA9F1C73BB0
+:1026F000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2A6
+:1027000092E038C082EE90E035C089EE90E032C0B1
+:102710008AEE90E02FC085EB90E02CC086EB90E035
+:1027200029C087EB90E026C08CEC90E023C08DECB4
+:1027300090E020C083E891E01DC08AE891E01AC0D3
+:1027400082E991E017C084E991E014C081E292E04F
+:1027500011C083E292E00EC084E292E00BC085E2F9
+:1027600092E008C086E292E005C087E292E002C0F3
+:1027700080E090E0CF910C940612CF9108958823C9
+:1027800009F44BC0823859F40E94CE1181FF45C034
+:1027900089E30E94A81C0E94721D89E30CC0833843
+:1027A00071F40E94CE1180FF38C083E50E94A81CFE
+:1027B0000E94721D83E50E94E81C0C94721D8438EF
+:1027C00059F40E94CE1182FF28C087E40E94A81C01
+:1027D0000E94721D87E4EFCF9CEF980F913A58F357
+:1027E00090E2980F983050F4877091E001C0990FF3
+:1027F0008A95EAF7892F0E942F1DDFCF9BE5980F5E
+:10280000933020F480E090E00C94F011885A8331EA
+:1028100020F480E090E00C9406120895882321F0C3
+:102820000E94291D0C94721D0895882321F00E9496
+:102830002F1D0C94721D0895CF92DF92EF92FF929C
+:102840000F931F93CF93DF93CDB7DEB728970FB6C3
+:10285000F894DEBF0FBECDBF8C0185E0F801DE012C
+:10286000119601900D928A95E1F7F801D080E180F0
+:10287000F280258122952F7083819481892B39F0F4
+:10288000FFEFEF1206C081E0DF1203C003C081E05A
+:1028900001C080E080FDCEC2C8012F830E94F612E5
+:1028A000D982EA8289819A810E94661C9E838887E8
+:1028B0000E94651C0E94381B2F814E816885FF2075
+:1028C00029F00E94461D68854E812F81E42FE295F4
+:1028D000EF70F0E0E154FF4F0C944B26842F807F83
+:1028E000142F1F70882311F01295107FFF2059F0CC
+:1028F000112309F454C2812F68870E94391D0E9458
+:10290000721D68854CC2862F0E94BF13112309F4E3
+:1029100091C2812F0E943F1D28960FB6F894DEBF0A
+:102920000FBECDBFDF91CF911F910F91FF90EF9020
+:10293000DF90CF900C94721D342F307F842F8F70D6
+:10294000303211F08295807F662319F0613019F1E1
+:102950002BC0FF20B1F0222309F493C1213009F0EC
+:1029600090C128960FB6F894DEBF0FBECDBFDF91A1
+:10297000CF911F910F91FF90EF90DF90CF900C942B
+:10298000591D222319F0213009F454C28E830E946C
+:102990005C1D8E8189C1FF2021F0223008F04AC2DF
+:1029A00070C1211147C280C1FF2021F0222309F408
+:1029B00068C1F5C1222309F477C105C2242F2695E9
+:1029C0002695237030E02115310521F021303105A5
+:1029D000C9F030C2FF2021F0862F942F937002C0DF
+:1029E00080E090E028960FB6F894DEBF0FBECDBF12
+:1029F000DF91CF911F910F91FF90EF90DF90CF90DB
+:102A00000C94F011FF2021F0862F942F937002C0B8
+:102A100080E090E028960FB6F894DEBF0FBECDBFE1
+:102A2000DF91CF911F910F91FF90EF90DF90CF90AA
+:102A30000C940612862FFF2019F00E94E92002C094
+:102A40000E94512128960FB6F894DEBF0FBECDBF6D
+:102A5000DF91CF911F910F91FF90EF90DF90CF907A
+:102A60000C94D621842F837009F076C0F110E2C156
+:102A7000262F229526952770220F220F862F8F70E2
+:102A8000C82ED12CE12CF12C022E04C0CC0CDD1C64
+:102A9000EE1CFF1C0A94D2F764FF10C06FE070E0D8
+:102AA00080E090E004C0660F771F881F991F2A9569
+:102AB000D2F7609570958095909503C060E070E0C6
+:102AC000CB01242F269526952370422F50E04230CB
+:102AD0005105D1F04330510559F16C297D298E29DA
+:102AE0009F294130510541F128960FB6F894DEBF79
+:102AF0000FBECDBFDF91CF911F910F91FF90EF904F
+:102B0000DF90CF900C945D1B6C297D298E299F2925
+:102B100028960FB6F894DEBF0FBECDBFDF91CF91E0
+:102B20001F910F91FF90EF90DF90CF900C94771B47
+:102B30000E945D1BC701B60128960FB6F894DEBF50
+:102B40000FBECDBFDF91CF911F910F91FF90EF90FE
+:102B5000DF90CF900C94431BFF2019F0842F8170DD
+:102B600001C08695882309F465C1262F22952695F4
+:102B70002770220F220F862F8F70C82ED12CE12CA8
+:102B8000F12C022E04C0CC0CDD1CEE1CFF1C0A94A0
+:102B9000D2F764FF10C06FE070E080E090E004C006
+:102BA000660F771F881F991F2A95D2F76095709539
+:102BB0008095909503C060E070E0CB01242F2695AE
+:102BC00026952370422F50E042305105D1F043301A
+:102BD000510559F16C297D298E299F2941305105D4
+:102BE00041F128960FB6F894DEBF0FBECDBFDF913E
+:102BF000CF911F910F91FF90EF90DF90CF900C94A9
+:102C0000311C6C297D298E299F2928960FB6F894AE
+:102C1000DEBF0FBECDBFDF91CF911F910F91FF900F
+:102C2000EF90DF90CF900C944B1C0E94311CC70199
+:102C3000B60128960FB6F894DEBF0FBECDBFDF9168
+:102C4000CF911F910F91FF90EF90DF90CF900C9458
+:102C5000171C603FC9F118F4603E50F49BC0623FFE
+:102C600009F460C008F44AC0633F09F46FC092C021
+:102C7000162F1F70842F8F71FF2099F00E94B01BB8
+:102C8000812F28960FB6F894DEBF0FBECDBFDF911F
+:102C9000CF911F910F91FF90EF90DF90CF900C9408
+:102CA0000E140E94D11B812F28960FB6F894DEBF18
+:102CB0000FBECDBFDF91CF911F910F91FF90EF908D
+:102CC000DF90CF900C941514FF20A1F02111B2C019
+:102CD000842F8F7128960FB6F894DEBF0FBECDBF3C
+:102CE000DF91CF911F910F91FF90EF90DF90CF90E8
+:102CF0000C94F61B223008F09DC0EACFFF20A1F013
+:102D0000842F8F7128960FB6F894DEBF0FBECDBF0B
+:102D1000DF91CF911F910F91FF90EF90DF90CF90B7
+:102D20000C94B01BFF2061F3842F8F7128960FB68F
+:102D3000F894DEBF0FBECDBFDF91CF911F910F91F1
+:102D4000FF90EF90DF90CF900C94D11BFF2091F07B
+:102D5000842F8F7128960FB6F894DEBF0FBECDBFBB
+:102D6000DF91CF911F910F91FF90EF90DF90CF9067
+:102D70000C949B1B28960FB6F894DEBF0FBECDBFF8
+:102D8000DF91CF911F910F91FF90EF90DF90CF9047
+:102D90000C94911BFF20A1F0222309F4B1CF862FC0
+:102DA00028960FB6F894DEBF0FBECDBFDF91CF914E
+:102DB0001F910F91FF90EF90DF90CF900C94F7123E
+:102DC000222309F4B1CF862F28960FB6F894DEBFE0
+:102DD0000FBECDBFDF91CF911F910F91FF90EF906C
+:102DE000DF90CF900C94BF134F70C8010E94040570
+:102DF00028960FB6F894DEBF0FBECDBFDF91CF91FE
+:102E00001F910F91FF90EF90DF90CF900C94B61A26
+:102E10004F70C80128960FB6F894DEBF0FBECDBF25
+:102E2000DF91CF911F910F91FF90EF90DF90CF90A6
+:102E30000C94750928960FB6F894DEBF0FBECDBF6F
+:102E4000DF91CF911F910F91FF90EF90DF90CF9086
+:102E500008950E94461D0E94561D0E941B1D0E943F
+:102E6000721D0E9482220E94D62180E090E00E9482
+:102E7000F01180E090E00C9406120E94361D0C9434
+:102E800029170E94661C292F22952F7030E02C30C4
+:102E900031054CF42A3031056CF4225031092230CE
+:102EA000310590F407C02C30310551F02F30310539
+:102EB00039F00AC0803E10F0803F31F481E008957F
+:102EC00093FB882780F9089580E00895CF93DF93DE
+:102ED00000D000D01F92CDB7DEB70F900F900F90AB
+:102EE0000F900F90DF91CF910895CF93DF9300D093
+:102EF00000D000D0CDB7DEB726960FB6F894DEBF6F
+:102F00000FBECDBFDF91CF9108951F93CF93DF9375
+:102F1000C0917B0116E080917C01C81799F0D0E048
+:102F20001C9FF0011D9FF00D1124E358FE4F4081BE
+:102F3000518162817381848195810E9475172196E8
+:102F4000C770E9CFDF91CF911F9108954091AD01F6
+:102F50005091AE016091AF017091B0018091B101CB
+:102F60009091B2010C947517CF938091B201829524
+:102F70008F7009F05FC08091AF01882309F45AC0B7
+:102F800020917B01A0917C016091AD017091AE0117
+:102F90008091B0019091B10131E06F3F09F030E0D4
+:102FA000B32FC6E02A1709F445C0009721F07F3FF0
+:102FB00021F44B2F03C041E001C040E030E040FD70
+:102FC00035C0C29FF001C39FF00D1124E358FE4F9E
+:102FD000418174132BC04081641328C04281411188
+:102FE00025C0438154814817590710F441505109B5
+:102FF000481B590B483C5105C8F48091B2018F70B1
+:1030000080618093B20186E0829FF001839FF00D82
+:103010001124EE57FE4F80818F70806180838DEA8E
+:1030200091E00E941C14CF910C9485172F5F3F4FA5
+:103030002770B8CFCF910895CF92DF92EF92FF9291
+:103040000F931F93CF93DF93CDB7DEB762970FB681
+:10305000F894DEBF0FBECDBF8C0185E0F801DE0124
+:103060001D9601900D928A95E1F7D8014C91119629
+:103070005C91119712966C9112971396ED90FC90BB
+:1030800014977091AD01E091AE012091B0013091A3
+:10309000B1012115310531F0EF3F31F481E07F3F7F
+:1030A00019F403C081E001C080E0B82FB170CB2ECD
+:1030B00080FD6CC1D090AF01DD2009F4F5C0F09126
+:1030C000B201E216F30638F0C701821B930B883C6D
+:1030D000910548F09BC0209530952E0D3F1D283C52
+:1030E000310508F093C08F2F807F09F052C0E5139F
+:1030F00014C0741312C0D62E61110FC0FF70F0619E
+:10310000F093B2010E94A6178DEA91E00E941C1470
+:103110008091B201F80185836CC1EF2831F05F3FE7
+:1031200031F481E04F3F19F403C081E001C080E039
+:1031300080FD03C081E0862701C080E0F82FF17098
+:10314000FF2E80FF1CC080917B0120917C0136E026
+:10315000821709F428C190E0389FF001399FF00DE3
+:103160001124E358FE4F7181571306C07081471335
+:1031700003C07281671303C001968770E9CFD62E12
+:10318000662309F436C18091B20181608093B20157
+:1031900053C0E51308C0741306C0611104C0D80100
+:1031A0001596FC93AEC04D875E878D859E856A8B94
+:1031B0000E9441176A89882329F1D62E662311F1CE
+:1031C0002091B201822F82958F7090E002970CF4CB
+:1031D00060C08091AD019091AE0198878F83198670
+:1031E000FB86EA862C87CE01079651C0E51731F1A0
+:1031F0004D875E878D859E856A8B0E9441176A89FF
+:1032000081112EC0C8010E941C14A4C08F2F807F82
+:1032100069F77E2DF98AE88A89890E9466178DEA06
+:1032200091E00E941C14EDEAF1E086E0DF011D92BE
+:103230008A95E9F70E94A617D12CDBC07413D8CF6A
+:103240006111D6CFD8011596FC93C8010E941C14B9
+:10325000EDEAF1E086E0DF011D928A95E9F7C9C049
+:10326000D62E662379F22091B201822F82958F703B
+:1032700090E0029774F08091AD019091AE019A8335
+:1032800089831B82FD82EC822E83CE0101960E94EF
+:103290001C1486E0F801ADEAB1E001900D928A9528
+:1032A000E1F70E94B4176FC0E216F30628F0C701D9
+:1032B000821B930B9C0104C0209530952E0D3F1D61
+:1032C000283C310508F052C0D62E662309F49ACF67
+:1032D000E5132CC074132AC08091B20180FD1DC07B
+:1032E000982F92959F70C9F0D80115968C931597D9
+:1032F0009F3039F09F5F9295907F8F70892B159644
+:103300008C93C8010E941C1486E0F801ADEAB1E07C
+:1033100001900D928A95E1F736C086E0F801ADEA9A
+:10332000B1E001900D928A95E1F763C04D875E8709
+:103330008D859E850E944117882379F086E0F801EB
+:10334000ADEAB1E001900D928A95E1F70E94B417C1
+:103350000E94A617DD24D3944CC08091B2018160F5
+:103360008093B201C8010E941C1443C07E2DF98ACB
+:10337000E88A89890E946617EDEAF1E086E0DF01BC
+:103380001D928A95E9F70E94A61733C0662309F4B7
+:1033900039CF4D875E878D859E850E944117882392
+:1033A00009F430CFCBCF4D875E878D859E850E94F7
+:1033B000661C292F22952F7030E0223031052CF425
+:1033C0009F7041F0811106C00CC0243031052CF4EF
+:1033D0009F7049F4805E883020F0C8010E941C1460
+:1033E000CF2CDC2C06C0D80115969C91907F91F7CC
+:1033F000F8CF8D2D62960FB6F894DEBF0FBECDBF0D
+:10340000DF91CF911F910F91FF90EF90DF90CF90C0
+:1034100008951F93CF93DF93CDB7DEB72C970FB6E8
+:10342000F894DEBF0FBECDBF4F83588769877A8778
+:103430008B879C87CE0107960E941C188823C1F0B9
+:103440002F8138858A859B85892B31F03F3F11F08C
+:1034500080E003C02F3FE1F781E0811147C04F8139
+:10346000588569857A858B859C850E9475173EC035
+:1034700086E0FE013796DE01119601900D928A9545
+:10348000E1F7FF81E8854A855B854115510531F0FB
+:10349000EF3F31F481E0FF3F19F403C081E001C048
+:1034A00080E080FD23C020917C0130E0C9010196BD
+:1034B0008770992760917B0170E086179707F1F17B
+:1034C000F983EA835D834C8396E0929FD001939FBA
+:1034D000B00D1124A358BE4FFE01319601900D92FC
+:1034E0009A95E1F780937C010E94851716E0809100
+:1034F0007B0190917C01891779F1189FC0011124FB
+:1035000083589E4F0E941C18882331F1E0917B0163
+:103510001E9FF0011124E358FE4F408151816281CA
+:103520007381848195810E94751780917B0190E061
+:1035300001968770992780937B01D9CF0E943D1710
+:1035400010927C0110927B01EDEAF1E086E0DF0150
+:103550001D928A95E9F7CACF2C960FB6F894DEBF74
+:103560000FBECDBFDF91CF911F910895EF92FF92D3
+:103570000F931F93CF93DF939C01009709F471C0C1
+:10358000F12CEE24E394E9012196F901849184372A
+:1035900040F4843008F056C0813081F0823021F14F
+:1035A00060C0853709F449C0C0F19CE7980F903797
+:1035B00008F057C08F770E94BF1346C089010E5F85
+:1035C0001F4FFE01849190E2980F983050F487705D
+:1035D000FE2D01C0FF0F8A95EAF78F2F0E94491D2B
+:1035E00015C00E94F71214C089010E5F1F4FFE0123
+:1035F000849190E2980F983068F48770FE2D01C096
+:10360000FF0F8A95EAF78F2F0E944F1D0E94721DAF
+:10361000E8011AC00E94BF13FBCF2E5F3F4FFE018F
+:10362000C491CC2341F08FE99FE00197F1F700C0EE
+:103630000000C150F6CFE90107C0FE01F490E90196
+:10364000229602C00E94F7128F2D882341F0EFE9E5
+:10365000FFE03197F1F700C000008150F6CF9E01E6
+:1036600092CFDF91CF911F910F91FF90EF9008952E
+:1036700008956093B7017093B8018093B901909356
+:10368000BA010C9429170F931F930091B701109161
+:10369000B8012091B9013091BA01062B172B282BC4
+:1036A000392B0093B7011093B8012093B9013093DF
+:1036B000BA011F910F910C9429170F931F9300913A
+:1036C000B7011091B8012091B9013091BA010623D8
+:1036D0001723282339230093B7011093B8012093AF
+:1036E000B9013093BA011F910F910C9429170F93D0
+:1036F0001F930091B7011091B8012091B901309149
+:10370000BA0106271727282739270093B7011093F6
+:10371000B8012093B9013093BA011F910F910C9415
+:1037200029171092B3011092B4011092B5011092B2
+:10373000B6010C94291741E050E060E070E004C04D
+:10374000440F551F661F771F8A95D2F74093B30128
+:103750005093B4016093B5017093B6010C9429178E
+:1037600041E050E060E070E004C0440F551F661F68
+:10377000771F8A95D2F78091B3019091B401A091FF
+:10378000B501B091B601842B952BA62BB72B809356
+:10379000B3019093B401A093B501B093B6010C941A
+:1037A000291741E050E060E070E004C0440F551F6D
+:1037B000661F771F8A95D2F7409550956095709552
+:1037C0008091B3019091B401A091B501B091B6017F
+:1037D00084239523A623B7238093B3019093B40148
+:1037E000A093B501B093B6010C94291741E050E0C5
+:1037F00060E070E004C0440F551F661F771F8A9574
+:10380000D2F78091B3019091B401A091B501B0912C
+:10381000B60184279527A627B7278093B3019093F5
+:10382000B401A093B501B093B6010C9429170F937E
+:103830001F930091B3011091B4012091B501309113
+:10384000B601062B172B282B392B0093B3011093AD
+:10385000B4012093B5013093B6011F910F910C94E0
+:1038600029170F931F930091B3011091B401209178
+:10387000B5013091B601062317232823392300937D
+:10388000B3011093B4012093B5013093B6011F9199
+:103890000F910C9429170F931F930091B30110916E
+:1038A000B4012091B5013091B601062717272827CA
+:1038B00039270093B3011093B4012093B5013093DD
+:1038C000B6011F910F910C9429170895CF92DF92A2
+:1038D000EF92FF920F931F93CF93DF93EC01C09071
+:1038E000B701D090B801E090B901F090BA01809191
+:1038F000B3019091B401A091B501B091B601C82A6D
+:10390000D92AEA2AFB2A0FE110E0B701A601002E0E
+:1039100004C076956795579547950A94D2F740FF6E
+:1039200007C0BE01802F0E9498098130910539F4AB
+:103930000150110950F7BE0180E00E949809DF9103
+:10394000CF911F910F91FF90EF90DF90CF9008954E
+:1039500090910C019923D9F090910D019923B9F020
+:10396000982F9695969596959F3088F5E0910E0143
+:10397000F0910F01E90FF11D877021E030E001C0E7
+:10398000220F8A95EAF78181822B818308954091E5
+:103990000E0150910F0120E030E09FEFFA01E20F9D
+:1039A000F31F6281681799F09F3F19F4611101C0FC
+:1039B000922F2F5F3F4F2E30310581F79F3F39F017
+:1039C000FA01E90FF11D97FDFA9582830895089594
+:1039D00090910C019923E1F090910D019923C1F090
+:1039E000982F9695969596959F3020F5E0910E012B
+:1039F000F0910F01E90FF11D877021E030E001C067
+:103A0000220F8A95EAF72095818128232183089542
+:103A100040910E0150910F0120E030E0FA01E20FD9
+:103A2000F31F9281981301C012822F5F3F4F2E30F7
+:103A30003105A1F7089581E090E0E0910E01F09149
+:103A40000F01E80FF91F1082019680319105A9F747
+:103A500008959091CE01982B9093CE010895809572
+:103A60009091CE0198239093CE0108951092CE01AB
+:103A700008959091CD01982B9093CD010895809554
+:103A80009091CD0198239093CD0108951092CD018E
+:103A900008959091CC01982B9093CC010895809536
+:103AA0009091CC0198239093CC0108951092CC0171
+:103AB00008958093BB0108951092BB010895409131
+:103AC0000E0150910F0120E030E080E0FA01E20F9A
+:103AD000F31F918191118F5F2F5F3F4F2F30310581
+:103AE000A9F70895E0910E01F0910F018091CE01A8
+:103AF0008083E0910E01F0910F0180819091CD01C2
+:103B0000892B8083E0910E01F0910F0180819091CB
+:103B1000CC01892B80839091BB01992361F0E091C6
+:103B20000E01F0910F018081892B80830E945F1D1F
+:103B300081111092BB0180910E0190910F010C94A4
+:103B4000DA11CF92DF92EF92FF920F931F936C01E5
+:103B5000EE24FF24C114D104E104F10421F46B012B
+:103B60007C0180E001C080E133272F2D1E2D0D2D1B
+:103B7000011511052105310519F0885F68017901EA
+:103B800097018601A4E03695279517950795AA9584
+:103B9000D1F7011511052105310519F08C5F680178
+:103BA000790197018601F2E03695279517950795DB
+:103BB000FA95D1F7011511052105310519F08E5F30
+:103BC00068017901B701A6017695679557954795E4
+:103BD000452B462B472B09F08F5F1F910F91FF90CC
+:103BE000EF90DF90CF9008958091E801843009F143
+:103BF0001092D00120E488E190E00FB6F894A895E7
+:103C0000809360000FBE2093600083B7817F846043
+:103C100083BF83B7816083BF7894889583B78E7F95
+:103C200083BF88E10FB6F894809360001092600023
+:103C30000FBE089508950895CF930E941A1E0E9402
+:103C4000C2070E941B1EC0E08C2F0E94AF0881118A
+:103C500005C0CF5FCE30C1F780E001C081E0CF91D9
+:103C600008950E943D170E94CE110C94D30A82E061
+:103C700084BD93E095BD9AEF97BD80936E00089543
+:103C80002FB7F8948091D1019091D201A091D301E6
+:103C9000B091D4012FBF0895CF92DF92EF92FF929F
+:103CA0000F931F932FB7F8944091D1015091D201F7
+:103CB0006091D3017091D4012FBF6A017B01EE2482
+:103CC000FF248C0120E030E0C016D106E206F306A6
+:103CD00010F441505109481B590BCA011F910F9113
+:103CE000FF90EF90DF90CF9008951F920F920FB644
+:103CF0000F9211248F939F93AF93BF938091D10123
+:103D00009091D201A091D301B091D4010196A11D4F
+:103D1000B11D8093D1019093D201A093D301B093B0
+:103D2000D401BF91AF919F918F910F900FBE0F90D3
+:103D30001F9018950E94D40EF8942FEF87EA91E611
+:103D4000215080409040E1F700C0000087E090EBF8
+:103D5000DC018093F1019093F201A093F301B09301
+:103D6000F4012CE088E190E00FB6F894A8958093D8
+:103D700060000FBE20936000FFCFEF92FF920F9381
+:103D80001F93CF93DF93E82EF12C8F2D0E94AF0865
+:103D9000C0E0D0E0082F10E098010C2E02C035954D
+:103DA00027950A94E2F720FD05C02196C630D1057B
+:103DB00099F709C06C2F7F2D80E00E947609E812E8
+:103DC000F4CF81E005C0F3948EE0F812DECF80E0FE
+:103DD000DF91CF911F910F91FF90EF900895CF93B6
+:103DE000C82F8CE20E94BD1E882321F08C2FCF911A
+:103DF0000C94BD1E80E0CF910895CF930E94422085
+:103E0000811102C00E942820C5E6C15049F00E94DD
+:103E1000C2078FE39CE90197F1F700C00000F5CFDE
+:103E200089E20E94EF1E811111C18AE20E94EF1EF9
+:103E300081110E94282085E00E94EF1E81110E94BE
+:103E40009A1E0E944D208093CF0187E00E94EF1EB2
+:103E5000882399F18BE10E94EF1E882351F0909105
+:103E6000CF0191FB882780F921E0822780FB91F91F
+:103E700022C08EE00E94EF1E882351F09091CF0166
+:103E800092FB882780F921E0822780FB92F913C0FA
+:103E900080E10E94EF1E9091CF01882341F093FBB7
+:103EA000882780F921E0822780FB93F904C0892FBD
+:103EB000809580FB90F99093CF018091CF010E9473
+:103EC00051200E945F208093E20180EE0E94EF1E4D
+:103ED000882341F08091E201982F909590FB80F922
+:103EE0008093E20189E30E94EF1E882359F09091AC
+:103EF000E20191FB882780F921E0822780FB91F97C
+:103F00009093E20182EE0E94EF1E882359F0909177
+:103F1000E20192FB882780F921E0822780FB92F959
+:103F20009093E20186EE0E94EF1E882359F0909153
+:103F3000E20193FB882780F921E0822780FB93F937
+:103F40009093E20183EE0E94EF1E882359F0909136
+:103F5000E20194FB882780F921E0822780FB94F915
+:103F60009093E20185E30E94EF1E882359F090911F
+:103F7000E20195FB882780F921E0822780FB95F9F3
+:103F80009093E20181E30E94EF1E882359F0909103
+:103F9000E20196FB882780F921E0822780FB96F9D1
+:103FA0009093E20181E10E94EF1E882359F09091E5
+:103FB000E20197FB882780F921E0822780FB97F9AF
+:103FC0009093E2018091E2010E9463208091E201DE
+:103FD00087FB882780F980930D0187E20E94EF1EFE
+:103FE000C82F8EE10E94EF1E8111C2608FE10E94F6
+:103FF000EF1E8111C46080E20E94EF1E8111C86033
+:1040000081E20E94EF1E8111C06182E20E94EF1ED8
+:104010008111C06283E20E94EF1E8111C06484E2BC
+:104020000E94EF1E882311F0C06802C0CC2329F043
+:104030008C2F0E945A206C2F03C00E945620682F9C
+:1040400070E080E090E0CF910C94391BCF910895FF
+:104050006DEE7EEF80E090E00E94812660E082E0DD
+:1040600090E00E94732660E083E090E00E94732657
+:1040700060E084E090E00E94732660E085E090E0DC
+:104080000C94732680E090E00E946D2621E08D3E26
+:104090009E4F09F020E0822F089582E090E00C947A
+:1040A0006526682F82E090E00C94732683E090E010
+:1040B0000C946526682F83E090E00C94732684E0CE
+:1040C00090E00C946526682F84E090E00C947326B1
+:1040D0008091D70180FF0BC06091130185E0689F3C
+:1040E000B001112475956795759567952AC081FF74
+:1040F00009C06091130185E0689FB0011124759596
+:1041000067951FC082FF07C06091130185E0689F1B
+:10411000B001112416C04091D8014423C9F0609128
+:104120001201461788F72091130185E0289F90011E
+:104130001124429FC001439F900D112470E00E9402
+:1041400037266038710540F46115710539F002C0F9
+:1041500065E070E0862F08958FE7089581E0089567
+:104160008091D70180FF08C06091110170E07595C2
+:1041700067957595679521C081FF06C06091110113
+:1041800070E07595679519C082FF04C060911101B8
+:1041900070E010C08091D8018823C1F060911001B7
+:1041A0008617A0F790911101989FC001112470E02B
+:1041B0000E9437266038710528F46115710521F0D9
+:1041C000862F08958FE7089581E0089561E070E0FB
+:1041D000F4CF803F21F40E946820819504C0813F84
+:1041E00029F40E9468208093DB010895823F21F426
+:1041F0000E946820819504C0833F29F40E946820B2
+:104200008093DA010895893F19F40E94B02005C017
+:104210008A3F31F40E94B02081958093DC0108959B
+:104220008B3F21F40E94B020819504C08C3F29F47B
+:104230000E94B0208093DD010895843F21F4809195
+:10424000D901816017C0853F21F48091D901826036
+:1042500011C0863F21F48091D90184600BC0873F53
+:1042600021F48091D901886005C0883F31F48091A4
+:10427000D90180618093D90108958D3F21F4809107
+:10428000D70181600BC08E3F21F48091D7018260FD
+:1042900005C08F3F29F48091D70184608093D701B6
+:1042A0000895803F39F48091DB0187FF6CC0109244
+:1042B000DB0169C0813F29F48091DB011816BCF352
+:1042C00062C09091DA01823F29F497FF5CC010929E
+:1042D000DA0159C0833F19F41916CCF354C0893F51
+:1042E00041F48091DC0118160CF04DC01092DC01F5
+:1042F0004AC08A3F29F48091DC0187FF44C0F6CF91
+:104300008B3F39F48091DD0187FF3DC01092DD01C4
+:104310003AC08C3F29F48091DD011816BCF333C0FC
+:10432000843F21F48091D9018E7F17C0853F21F40D
+:104330008091D9018D7F11C0863F21F48091D901F0
+:104340008B7F0BC0873F21F48091D901877F05C007
+:10435000883F31F48091D9018F7E8093D90113C0B9
+:104360008D3F21F48091D7018E7F0BC08E3F21F4C9
+:104370008091D7018D7F05C08F3F29F48091D701AF
+:104380008B7F8093D7018091DA0181110EC08091DB
+:10439000DB0181110AC08091DC01811106C080918E
+:1043A000DD01811102C01092D801089589ED91E0DC
+:1043B0000E94E5110E94401E9093D6018093D50182
+:1043C00008951F93CF93DF938091D5019091D601EB
+:1043D0000E944C1E4091D801442321F020911401E9
+:1043E00030E006C0209115015AE0259F900111246C
+:1043F0008217930708F482C08091DA011091DB01E3
+:10440000D091DC01C091DD01811107C0111105C0FF
+:10441000D11103C0CC2309F471C04F3F19F04F5F95
+:104420004093D801181624F40E9468208093DA0182
+:104430008091DA0187FF05C00E94682081958093F2
+:10444000DA01111624F40E9468208093DB01809128
+:10445000DB0187FF05C00E94682081958093DB0106
+:104460006091DA01662339F11091DB01112319F112
+:10447000772767FD7095872F972F0E94482523E3A4
+:1044800033E343E35FE30E94AC250E94152560936C
+:10449000DA01612F772767FD7095872F972F0E948C
+:1044A000482523E333E343E35FE30E94AC250E9406
+:1044B00015256093DB011D1624F40E94B020809323
+:1044C000DC018091DC0187FF05C00E94B02081954E
+:1044D0008093DC011C1624F40E94B0208093DD013F
+:1044E0008091DD0187FF05C00E94B02081958093F7
+:1044F000DD01DF91CF911F910C94D621DF91CF91F7
+:104500001F910895E9EDF1E085E0DF011D928A95A4
+:10451000E9F71092D8011092D7010895833081F104
+:1045200028F4813059F08230D1F00895853009F4B3
+:1045300049C0B8F1863009F456C00895209115019C
+:10454000862F90E0820F911D8F3F910520F4620F1E
+:104550006093150108958FEF8093150108952091C0
+:104560001401862F90E0820F911D8F3F910520F45A
+:10457000620F6093140108958FEF809314010895E2
+:1045800020911301862F90E0820F911D8F3F91059E
+:1045900020F4620F6093130108958FEF809313014D
+:1045A000089520911201862F90E0820F911D8F3F78
+:1045B000910520F4620F6093120108958FEF8093AC
+:1045C0001201089520911101862F90E0820F911D14
+:1045D0008F3F910520F4620F6093110108958FEFD2
+:1045E00080931101089520911001862F90E0820F91
+:1045F000911D8F3F910520F4620F60931001089583
+:104600008FEF809310010895833011F128F48130E9
+:1046100049F0823091F00895853081F120F18630A3
+:10462000C1F1089580911501681720F4861B8093CD
+:1046300015010895109215010895809114016817CD
+:1046400020F4861B8093140108951092140108959C
+:1046500080911301681720F4861B8093130108953D
+:1046600010921301089580911201681720F4861B9F
+:104670008093120108951092120108958091110102
+:10468000681720F4861B8093110108951092110180
+:10469000089580911001681720F4861B8093100103
+:1046A00008951092100108958D3109F442C020F54B
+:1046B0008E3009F47CC070F4873009F45EC020F4B9
+:1046C000863009F442C033C08830D1F18B3009F410
+:1046D000AAC02DC0863109F4A6C038F4803109F48F
+:1046E00070C0813109F47EC022C0893109F49BC0B9
+:1046F0008B3109F452C01BC0853309F48CC048F4D7
+:10470000873209F488C008F478C0893209F483C07C
+:104710000EC0833438F48A3308F06DC0883309F44E
+:1047200082C005C0833409F476C08834C1F080E0CB
+:1047300008950E94CF240E94CE110E94D30A73C014
+:104740000E944D200E945F206EC08091CF01817F2A
+:104750008E7F8093CF0181E08093DF0108950E94D6
+:104760003D172FEF83ED90E3215080409040E1F71B
+:1047700000C000000E949A1E56C09091CF01892F60
+:104780008095817080FB90F919F09660986027C041
+:10479000997F977F9093CF0146C09091CF0191FB75
+:1047A000882780F921E0822780FB91F913C090913E
+:1047B000CF0192FB882780F921E0822780FB92F9C4
+:1047C00009C09091CF0193FB882780F921E08227CF
+:1047D00080FB93F99093CF01882329F19160909306
+:1047E000CF0108950E943D1780910D0191E0892726
+:1047F00080930D0118C027EC01C023EE280F61E063
+:1048000070E080E090E004C0660F771F881F991F5A
+:104810002A95D2F704C061E070E080E090E00E9449
+:10482000391B0E943D1781E0089580E0089580E0E3
+:104830000895CF93C82F8091DF01813079F018F06F
+:104840008230D1F184C0A0910E01B0910F018C9102
+:10485000813169F0823209F07CC009C0A0910E015B
+:10486000B0910F018C91813111F0823249F48C2F7B
+:104870000E94152481111DC08C2F0E9454231AC040
+:104880008C2F0E941724811114C0C43179F048F490
+:10489000CB3079F0C03109F060C082E08093DF0155
+:1048A00008C0C93219F0C83321F057C01092DF0197
+:1048B00054C081E0817053C0C93289F118F5C43108
+:1048C00071F1A8F4C73009F046C08AE08093150161
+:1048D00094E19093140193E090931301809312015B
+:1048E00088E08093110188E28093100134C0CE519A
+:1048F000C63088F5EC2FF0E0E65DFE4F80818093B6
+:10490000DE0129C0CE34E9F020F4CB3421F56AE091
+:1049100013C0C13579F0C235F1F461E00DC080916A
+:10492000DE01882319F01092DE0115C081E080932A
+:10493000DF0115C061E006C08091DE010E948E2279
+:104940000AC06AE08091DE010E94042304C0109234
+:10495000DF0180E004C081E002C080E0ABCFCF91F6
+:104960000895E1E8F0E08081886080838081816043
+:1049700080838FB7F89493E09093890090ED9093A3
+:1049800088008FBF0895EFE6F0E080818260808329
+:104990000895EFE6F0E080818D7F80830895EFE653
+:1049A000F0E0808192E08927808308951F920F9222
+:1049B0000FB60F9211242F933F934F935F936F93F2
+:1049C0007F938F939F93AF93BF93EF93FF938091C8
+:1049D000E0019091E10101969093E1018093E00163
+:1049E000811103C082E00E94D30AE091E101E695C3
+:1049F000E695F0E0EC51F84FE4918091E0018E13E0
+:104A000003C080E00E94D30AFF91EF91BF91AF9164
+:104A10009F918F917F916F915F914F913F912F91D6
+:104A20000F900FBE0F901F90189504D06894B1118D
+:104A30008DC0089570D088F09F5790F0B92F9927B6
+:104A4000B751A0F0D1F0660F771F881F991F1AF099
+:104A5000BA95C9F712C0B13081F077D0B1E00895AE
+:104A600074C0672F782F8827B85F39F0B93FCCF32F
+:104A7000869577956795B395D9F73EF4909580958F
+:104A8000709561957F4F8F4F9F4F0895E89409C0AF
+:104A900097FB3EF490958095709561957F4F8F4F71
+:104AA0009F4F9923A9F0F92F96E9BB279395F69587
+:104AB000879577956795B795F111F8CFFAF4BB0F05
+:104AC00011F460FF1BC06F5F7F4F8F4F9F4F16C069
+:104AD000882311F096E911C0772321F09EE8872FF3
+:104AE000762F05C0662371F096E8862F70E060E0AF
+:104AF0002AF09A95660F771F881FDAF7880F969528
+:104B0000879597F9089557FD9058440F551F59F010
+:104B10005F3F71F04795880F97FB991F61F09F3FAA
+:104B200079F087950895121613061406551FF2CFD3
+:104B30004695F1DF08C0161617061806991FF1CF23
+:104B400086957105610508940895E894BB2766274A
+:104B50007727CB0197F908950BD078C069D028F05A
+:104B60006ED018F0952309F05AC05FC01124EECF23
+:104B7000CADFA0F3959FD1F3950F50E0551F629FB8
+:104B8000F001729FBB27F00DB11D639FAA27F00DA6
+:104B9000B11DAA1F649F6627B00DA11D661F829FCD
+:104BA0002227B00DA11D621F739FB00DA11D621FB2
+:104BB000839FA00D611D221F749F3327A00D611DCF
+:104BC000231F849F600D211D822F762F6A2F1124B1
+:104BD0009F5750408AF0E1F088234AF0EE0FFF1F04
+:104BE000BB1F661F771F881F91505040A9F79E3F3B
+:104BF000510570F014C0AACF5F3FECF3983EDCF390
+:104C0000869577956795B795F795E7959F5FC1F777
+:104C1000FE2B880F911D9695879597F9089597F922
+:104C20009F6780E870E060E008959FEF80EC089552
+:104C300000240A941616170618060906089500247B
+:104C40000A9412161306140605060895092E0394F5
+:104C5000000C11F4882352F0BB0F40F4BF2B11F469
+:104C600060FF04C06F5F7F4F8F4F9F4F089597FB8A
+:104C7000072E16F4009407D077FD09D00E94512624
+:104C800007FC05D03EF4909581959F4F089570954F
+:104C900061957F4F0895EE0FFF1F0590F491E02D71
+:104CA0000994AA1BBB1B51E107C0AA1FBB1FA61773
+:104CB000B70710F0A61BB70B881F991F5A95A9F7C5
+:104CC00080959095BC01CD010895F999FECF92BDD4
+:104CD00081BDF89A992780B50895A8E1B0E042E037
+:104CE00050E00C948826262FF999FECF1FBA92BD6A
+:104CF00081BD20BD0FB6F894FA9AF99A0FBE0196BD
+:104D000008950E947326272F0C947426DC01CB0192
+:104D1000FC01F999FECF06C0F2BDE1BDF89A3196CB
+:104D200000B40D9241505040B8F70895F894FFCF69
+:104D30002002D50A620B3F0B0B0BD80A0101BC0104
+:104D400028080A03140A3F4D3639A50758072207D9
+:104D5000E9067C069506AE06C706010203040506B1
+:044D60000708090037
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
new file mode 100644
index 000000000..d8911af41
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
@@ -0,0 +1,783 @@
+#include "ergodox_ez.h"
+#include "action_layer.h"
+#include "keymap_common.h"
+#include "keymap_extras/keymap_german.h"
+
+#define UC_ASYMPTOTICALLY_EQUAL_TO 0
+#define UC_DIVISION_SIGN 1
+#define UC_DOWNWARDS_ARROW 2
+#define UC_ELEMENT_OF 3
+#define UC_EMPTY_SET 4
+#define UC_FOR_ALL 5
+#define UC_GREEK_CAPITAL_LETTER_ALPHA 6
+#define UC_GREEK_CAPITAL_LETTER_BETA 7
+#define UC_GREEK_CAPITAL_LETTER_CHI 8
+#define UC_GREEK_CAPITAL_LETTER_DELTA 9
+#define UC_GREEK_CAPITAL_LETTER_EPSILON 10
+#define UC_GREEK_CAPITAL_LETTER_ETA 11
+#define UC_GREEK_CAPITAL_LETTER_GAMMA 12
+#define UC_GREEK_CAPITAL_LETTER_IOTA 13
+#define UC_GREEK_CAPITAL_LETTER_KAPPA 14
+#define UC_GREEK_CAPITAL_LETTER_LAMDA 15
+#define UC_GREEK_CAPITAL_LETTER_MU 16
+#define UC_GREEK_CAPITAL_LETTER_NU 17
+#define UC_GREEK_CAPITAL_LETTER_OMEGA 18
+#define UC_GREEK_CAPITAL_LETTER_OMICRON 19
+#define UC_GREEK_CAPITAL_LETTER_PHI 20
+#define UC_GREEK_CAPITAL_LETTER_PI 21
+#define UC_GREEK_CAPITAL_LETTER_PSI 22
+#define UC_GREEK_CAPITAL_LETTER_RHO 23
+#define UC_GREEK_CAPITAL_LETTER_SIGMA 24
+#define UC_GREEK_CAPITAL_LETTER_TAU 25
+#define UC_GREEK_CAPITAL_LETTER_THETA 26
+#define UC_GREEK_CAPITAL_LETTER_UPSILON 27
+#define UC_GREEK_CAPITAL_LETTER_XI 28
+#define UC_GREEK_CAPITAL_LETTER_ZETA 29
+#define UC_GREEK_SMALL_LETTER_ALPHA 30
+#define UC_GREEK_SMALL_LETTER_BETA 31
+#define UC_GREEK_SMALL_LETTER_CHI 32
+#define UC_GREEK_SMALL_LETTER_DELTA 33
+#define UC_GREEK_SMALL_LETTER_EPSILON 34
+#define UC_GREEK_SMALL_LETTER_ETA 35
+#define UC_GREEK_SMALL_LETTER_FINAL_SIGMA 36
+#define UC_GREEK_SMALL_LETTER_GAMMA 37
+#define UC_GREEK_SMALL_LETTER_IOTA 38
+#define UC_GREEK_SMALL_LETTER_KAPPA 39
+#define UC_GREEK_SMALL_LETTER_LAMDA 40
+#define UC_GREEK_SMALL_LETTER_MU 41
+#define UC_GREEK_SMALL_LETTER_NU 42
+#define UC_GREEK_SMALL_LETTER_OMEGA 43
+#define UC_GREEK_SMALL_LETTER_OMICRON 44
+#define UC_GREEK_SMALL_LETTER_PHI 45
+#define UC_GREEK_SMALL_LETTER_PI 46
+#define UC_GREEK_SMALL_LETTER_PSI 47
+#define UC_GREEK_SMALL_LETTER_RHO 48
+#define UC_GREEK_SMALL_LETTER_SIGMA 49
+#define UC_GREEK_SMALL_LETTER_TAU 50
+#define UC_GREEK_SMALL_LETTER_THETA 51
+#define UC_GREEK_SMALL_LETTER_UPSILON 52
+#define UC_GREEK_SMALL_LETTER_XI 53
+#define UC_GREEK_SMALL_LETTER_ZETA 54
+#define UC_INFINITY 55
+#define UC_LEFTWARDS_ARROW 56
+#define UC_MULTIPLICATION_SIGN 57
+#define UC_NOT_AN_ELEMENT_OF 58
+#define UC_NOT_EQUAL_TO 59
+#define UC_PLUS_MINUS_SIGN 60
+#define UC_RIGHTWARDS_ARROW 61
+#define UC_SUBSCRIPT_EIGHT 62
+#define UC_SUBSCRIPT_FIVE 63
+#define UC_SUBSCRIPT_FOUR 64
+#define UC_SUBSCRIPT_NINE 65
+#define UC_SUBSCRIPT_ONE 66
+#define UC_SUBSCRIPT_SEVEN 67
+#define UC_SUBSCRIPT_SIX 68
+#define UC_SUBSCRIPT_THREE 69
+#define UC_SUBSCRIPT_TWO 70
+#define UC_SUBSCRIPT_ZERO 71
+#define UC_SUPERSCRIPT_EIGHT 72
+#define UC_SUPERSCRIPT_FIVE 73
+#define UC_SUPERSCRIPT_FOUR 74
+#define UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N 75
+#define UC_SUPERSCRIPT_NINE 76
+#define UC_SUPERSCRIPT_ONE 77
+#define UC_SUPERSCRIPT_SEVEN 78
+#define UC_SUPERSCRIPT_SIX 79
+#define UC_SUPERSCRIPT_THREE 80
+#define UC_SUPERSCRIPT_TWO 81
+#define UC_SUPERSCRIPT_ZERO 82
+#define UC_THERE_DOES_NOT_EXIST 83
+#define UC_THERE_EXISTS 84
+#define UC_UPWARDS_ARROW 85
+#define UC_VULGAR_FRACTION_ONE_EIGHTH 86
+#define UC_VULGAR_FRACTION_ONE_FIFTH 87
+#define UC_VULGAR_FRACTION_ONE_HALF 88
+#define UC_VULGAR_FRACTION_ONE_QUARTER 89
+#define UC_VULGAR_FRACTION_ONE_SIXTH 90
+#define UC_VULGAR_FRACTION_ONE_THIRD 91
+#define UC_VULGAR_FRACTION_THREE_QUARTERS 92
+#define UC_VULGAR_FRACTION_TWO_THIRDS 93
+#define UM 94
+
+#define L0 0 // layer_0
+#define L1 1 // layer_1
+#define L2 2 // layer_2
+#define L3 3 // layer_3
+#define L4 4 // layer_4
+#define L5 5 // layer_5
+#define L6 6 // layer_6
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * .------------------------------------.------------------------------------.
+ * |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT|
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * |INS |TG(2)| !M(UM)|DELT |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | APP | ! PGUP| ! !
+ * ! ! !-----! !-----! ! !
+ * |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
+ * '-----------------' '-----------------'
+ */
+[L0] = KEYMAP(
+ MO(5), DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT,
+ MO(4), DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME,
+ MO(1), DE_U, DE_I, DE_A, DE_E, DE_O,
+ MO(3), DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END,
+ KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_INS, TG(2),
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_APP,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, KC_LSFT, KC_ESC,
+ DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC,
+ TG(2), DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z,
+ /*-*/ DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS,
+ KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y,
+ /*-*/ /*-*/ KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT,
+ M(UM), KC_DELT,
+ KC_PGUP,
+ KC_PGDN, KC_ENTER, KC_SPACE
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | |EXLM|DQOT|PARA| | | | | | | | |RING| |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | ← | ↓ | → |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L1] = KEYMAP(
+ KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS,
+ KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC,
+ KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL, KC_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, DE_RING, KC_TRNS,
+ KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS,
+ /*-*/ DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST,
+ KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS,
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW),
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! P0 |PCMM|PDOT|PENT|PENT|
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L2] = KEYMAP(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL,
+ KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS,
+ /*-*/ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS,
+ KC_NLCK, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS,
+ /*-*/ /*-*/ KC_P0, KC_PCMM, KC_PDOT, KC_PENT, KC_PENT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | | | |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L3] = KEYMAP(
+ KC_TRNS, M(UC_SUPERSCRIPT_ONE), M(UC_SUPERSCRIPT_TWO), M(UC_SUPERSCRIPT_THREE), M(UC_SUPERSCRIPT_FOUR), M(UC_SUPERSCRIPT_FIVE), M(UC_FOR_ALL),
+ KC_TRNS, M(UC_MULTIPLICATION_SIGN), M(UC_VULGAR_FRACTION_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_VULGAR_FRACTION_ONE_QUARTER), M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS,
+ KC_TRNS, KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET),
+ KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), KC_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, M(UC_SUPERSCRIPT_SIX), M(UC_SUPERSCRIPT_SEVEN), M(UC_SUPERSCRIPT_EIGHT), M(UC_SUPERSCRIPT_NINE), M(UC_SUPERSCRIPT_ZERO), KC_TRNS,
+ KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS, M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ M(UC_INFINITY), M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), KC_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
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | θ | | | | | | β | μ | | | | ψ |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | | | |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L4] = KEYMAP(
+ KC_TRNS, M(UC_SUBSCRIPT_ONE), M(UC_SUBSCRIPT_TWO), M(UC_SUBSCRIPT_THREE), M(UC_SUBSCRIPT_FOUR), M(UC_SUBSCRIPT_FIVE), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI), M(UC_GREEK_SMALL_LETTER_PI), M(UC_GREEK_SMALL_LETTER_PHI), M(UC_GREEK_SMALL_LETTER_OMEGA), M(UC_GREEK_SMALL_LETTER_GAMMA), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA), M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON),
+ KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_THETA), KC_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, M(UC_SUBSCRIPT_SIX), M(UC_SUBSCRIPT_SEVEN), M(UC_SUBSCRIPT_EIGHT), M(UC_SUBSCRIPT_NINE), M(UC_SUBSCRIPT_ZERO), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA), M(UC_GREEK_SMALL_LETTER_XI), M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_SMALL_LETTER_ZETA),
+ /*-*/ M(UC_GREEK_SMALL_LETTER_SIGMA), M(UC_GREEK_SMALL_LETTER_NU), M(UC_GREEK_SMALL_LETTER_RHO), M(UC_GREEK_SMALL_LETTER_TAU), M(UC_GREEK_SMALL_LETTER_DELTA), M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA),
+ KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA), M(UC_GREEK_SMALL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_PSI),
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | | | | | | | | | | | | | |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | Θ | | | | | | Β | Μ | | | | Ψ |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | | | |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L5] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI), M(UC_GREEK_CAPITAL_LETTER_PI), M(UC_GREEK_CAPITAL_LETTER_PHI), M(UC_GREEK_CAPITAL_LETTER_OMEGA), M(UC_GREEK_CAPITAL_LETTER_GAMMA), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA), M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON),
+ KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_THETA), KC_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, M(UC_GREEK_CAPITAL_LETTER_ETA), M(UC_GREEK_CAPITAL_LETTER_XI), M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ZETA),
+ /*-*/ M(UC_GREEK_CAPITAL_LETTER_SIGMA), M(UC_GREEK_CAPITAL_LETTER_NU), M(UC_GREEK_CAPITAL_LETTER_RHO), M(UC_GREEK_CAPITAL_LETTER_TAU), M(UC_GREEK_CAPITAL_LETTER_DELTA), KC_TRNS,
+ KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA), M(UC_GREEK_CAPITAL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_PSI),
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/*
+ * .------------------------------------.------------------------------------.
+ * | | | | | | | | | | | | | | |
+ * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ * | | | | | | | | | | | | | | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | | | | |-----!-----! | | | | | |
+ * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ * | | | | | | | | | | | | | | |
+ * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ * | | | | | | ! | | | | |
+ * '------------------------' '------------------------'
+ * .-----------. .-----------.
+ * | | | ! | |
+ * .-----+-----+-----! !-----+-----+-----.
+ * ! ! | | ! | ! !
+ * ! ! !-----! !-----! ! !
+ * | | | | ! | | |
+ * '-----------------' '-----------------'
+ */
+[L6] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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[] = {};
+
+#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;
+
+case UC_GREEK_SMALL_LETTER_OMICRON:
+ unicode_action_function(0x03, 0xbf);
+ break;
+case UC_LEFTWARDS_ARROW:
+ unicode_action_function(0x21, 0x90);
+ break;
+case UC_GREEK_CAPITAL_LETTER_RHO:
+ unicode_action_function(0x03, 0xa1);
+ break;
+case UC_SUBSCRIPT_THREE:
+ unicode_action_function(0x20, 0x83);
+ break;
+case UC_VULGAR_FRACTION_ONE_EIGHTH:
+ unicode_action_function(0x21, 0x5b);
+ break;
+case UC_GREEK_SMALL_LETTER_LAMDA:
+ unicode_action_function(0x03, 0xbb);
+ break;
+case UC_VULGAR_FRACTION_ONE_THIRD:
+ unicode_action_function(0x21, 0x53);
+ break;
+case UC_GREEK_SMALL_LETTER_XI:
+ unicode_action_function(0x03, 0xbe);
+ break;
+case UC_THERE_DOES_NOT_EXIST:
+ unicode_action_function(0x22, 0x04);
+ break;
+case UC_SUPERSCRIPT_ONE:
+ unicode_action_function(0x00, 0xb9);
+ break;
+case UC_GREEK_SMALL_LETTER_BETA:
+ unicode_action_function(0x03, 0xb2);
+ break;
+case UC_SUBSCRIPT_FIVE:
+ unicode_action_function(0x20, 0x85);
+ break;
+case UC_GREEK_CAPITAL_LETTER_IOTA:
+ unicode_action_function(0x03, 0x99);
+ break;
+case UC_VULGAR_FRACTION_ONE_FIFTH:
+ unicode_action_function(0x21, 0x55);
+ break;
+case UC_GREEK_SMALL_LETTER_PSI:
+ unicode_action_function(0x03, 0xc8);
+ break;
+case UC_SUBSCRIPT_NINE:
+ unicode_action_function(0x20, 0x89);
+ break;
+case UC_SUPERSCRIPT_FOUR:
+ unicode_action_function(0x20, 0x74);
+ break;
+case UC_RIGHTWARDS_ARROW:
+ unicode_action_function(0x21, 0x92);
+ break;
+case UC_SUPERSCRIPT_SIX:
+ unicode_action_function(0x20, 0x76);
+ break;
+case UC_DOWNWARDS_ARROW:
+ unicode_action_function(0x21, 0x93);
+ break;
+case UC_GREEK_SMALL_LETTER_PI:
+ unicode_action_function(0x03, 0xc0);
+ break;
+case UC_SUPERSCRIPT_TWO:
+ unicode_action_function(0x00, 0xb2);
+ break;
+case UC_GREEK_CAPITAL_LETTER_OMEGA:
+ unicode_action_function(0x03, 0xa9);
+ break;
+case UC_GREEK_CAPITAL_LETTER_PSI:
+ unicode_action_function(0x03, 0xa8);
+ break;
+case UC_SUBSCRIPT_FOUR:
+ unicode_action_function(0x20, 0x84);
+ break;
+case UC_GREEK_CAPITAL_LETTER_NU:
+ unicode_action_function(0x03, 0x9d);
+ break;
+case UC_DIVISION_SIGN:
+ unicode_action_function(0x00, 0xf7);
+ break;
+case UC_GREEK_SMALL_LETTER_SIGMA:
+ unicode_action_function(0x03, 0xc3);
+ break;
+case UC_GREEK_SMALL_LETTER_RHO:
+ unicode_action_function(0x03, 0xc1);
+ break;
+case UC_VULGAR_FRACTION_ONE_SIXTH:
+ unicode_action_function(0x21, 0x59);
+ break;
+case UC_GREEK_SMALL_LETTER_GAMMA:
+ unicode_action_function(0x03, 0xb3);
+ break;
+case UC_VULGAR_FRACTION_TWO_THIRDS:
+ unicode_action_function(0x21, 0x54);
+ break;
+case UC_GREEK_SMALL_LETTER_NU:
+ unicode_action_function(0x03, 0xbd);
+ break;
+case UC_GREEK_SMALL_LETTER_ZETA:
+ unicode_action_function(0x03, 0xb6);
+ break;
+case UC_GREEK_SMALL_LETTER_EPSILON:
+ unicode_action_function(0x03, 0xb5);
+ break;
+case UC_GREEK_SMALL_LETTER_KAPPA:
+ unicode_action_function(0x03, 0xba);
+ break;
+case UC_SUPERSCRIPT_SEVEN:
+ unicode_action_function(0x20, 0x77);
+ break;
+case UC_GREEK_CAPITAL_LETTER_PI:
+ unicode_action_function(0x03, 0xa0);
+ break;
+case UC_GREEK_SMALL_LETTER_FINAL_SIGMA:
+ unicode_action_function(0x03, 0xc2);
+ break;
+case UC_GREEK_CAPITAL_LETTER_XI:
+ unicode_action_function(0x03, 0x9e);
+ break;
+case UC_GREEK_SMALL_LETTER_THETA:
+ unicode_action_function(0x03, 0xb8);
+ break;
+case UC_GREEK_SMALL_LETTER_ETA:
+ unicode_action_function(0x03, 0xb7);
+ break;
+case UC_SUBSCRIPT_TWO:
+ unicode_action_function(0x20, 0x82);
+ break;
+case UC_ASYMPTOTICALLY_EQUAL_TO:
+ unicode_action_function(0x22, 0x43);
+ break;
+case UC_GREEK_SMALL_LETTER_ALPHA:
+ unicode_action_function(0x03, 0xb1);
+ break;
+case UC_GREEK_CAPITAL_LETTER_PHI:
+ unicode_action_function(0x03, 0xa6);
+ break;
+case UC_GREEK_SMALL_LETTER_PHI:
+ unicode_action_function(0x03, 0xc6);
+ break;
+case UC_INFINITY:
+ unicode_action_function(0x22, 0x1e);
+ break;
+case UC_GREEK_CAPITAL_LETTER_OMICRON:
+ unicode_action_function(0x03, 0x9f);
+ break;
+case UC_ELEMENT_OF:
+ unicode_action_function(0x22, 0x08);
+ break;
+case UC_MULTIPLICATION_SIGN:
+ unicode_action_function(0x00, 0xd7);
+ break;
+case UC_SUBSCRIPT_ZERO:
+ unicode_action_function(0x20, 0x80);
+ break;
+case UC_GREEK_CAPITAL_LETTER_SIGMA:
+ unicode_action_function(0x03, 0xa3);
+ break;
+case UC_GREEK_SMALL_LETTER_OMEGA:
+ unicode_action_function(0x03, 0xc9);
+ break;
+case UC_SUBSCRIPT_ONE:
+ unicode_action_function(0x20, 0x81);
+ break;
+case UC_GREEK_CAPITAL_LETTER_ZETA:
+ unicode_action_function(0x03, 0x96);
+ break;
+case UC_GREEK_SMALL_LETTER_TAU:
+ unicode_action_function(0x03, 0xc4);
+ break;
+case UC_SUPERSCRIPT_FIVE:
+ unicode_action_function(0x20, 0x75);
+ break;
+case UC_THERE_EXISTS:
+ unicode_action_function(0x22, 0x03);
+ break;
+case UC_PLUS_MINUS_SIGN:
+ unicode_action_function(0x00, 0xb1);
+ break;
+case UC_VULGAR_FRACTION_THREE_QUARTERS:
+ unicode_action_function(0x00, 0xbe);
+ break;
+case UC_SUPERSCRIPT_THREE:
+ unicode_action_function(0x00, 0xb3);
+ break;
+case UC_EMPTY_SET:
+ unicode_action_function(0x22, 0x05);
+ break;
+case UC_UPWARDS_ARROW:
+ unicode_action_function(0x21, 0x91);
+ break;
+case UC_SUPERSCRIPT_NINE:
+ unicode_action_function(0x20, 0x79);
+ break;
+case UC_GREEK_SMALL_LETTER_DELTA:
+ unicode_action_function(0x03, 0xb4);
+ break;
+case UC_GREEK_SMALL_LETTER_MU:
+ unicode_action_function(0x03, 0xbc);
+ break;
+case UC_GREEK_CAPITAL_LETTER_KAPPA:
+ unicode_action_function(0x03, 0x9a);
+ break;
+case UC_SUBSCRIPT_EIGHT:
+ unicode_action_function(0x20, 0x88);
+ break;
+case UC_GREEK_CAPITAL_LETTER_ALPHA:
+ unicode_action_function(0x03, 0x91);
+ break;
+case UC_SUBSCRIPT_SEVEN:
+ unicode_action_function(0x20, 0x87);
+ break;
+case UC_GREEK_CAPITAL_LETTER_BETA:
+ unicode_action_function(0x03, 0x92);
+ break;
+case UC_GREEK_CAPITAL_LETTER_ETA:
+ unicode_action_function(0x03, 0x97);
+ break;
+case UC_SUPERSCRIPT_EIGHT:
+ unicode_action_function(0x20, 0x78);
+ break;
+case UC_SUPERSCRIPT_ZERO:
+ unicode_action_function(0x20, 0x70);
+ break;
+case UC_NOT_AN_ELEMENT_OF:
+ unicode_action_function(0x22, 0x09);
+ break;
+case UC_GREEK_SMALL_LETTER_UPSILON:
+ unicode_action_function(0x03, 0xc5);
+ break;
+case UC_NOT_EQUAL_TO:
+ unicode_action_function(0x22, 0x60);
+ break;
+case UC_GREEK_CAPITAL_LETTER_CHI:
+ unicode_action_function(0x03, 0xa7);
+ break;
+case UC_FOR_ALL:
+ unicode_action_function(0x22, 0x00);
+ break;
+case UC_GREEK_CAPITAL_LETTER_TAU:
+ unicode_action_function(0x03, 0xa4);
+ break;
+case UC_VULGAR_FRACTION_ONE_QUARTER:
+ unicode_action_function(0x00, 0xbc);
+ break;
+case UC_GREEK_SMALL_LETTER_CHI:
+ unicode_action_function(0x03, 0xc7);
+ break;
+case UC_GREEK_CAPITAL_LETTER_THETA:
+ unicode_action_function(0x03, 0x98);
+ break;
+case UC_GREEK_SMALL_LETTER_IOTA:
+ unicode_action_function(0x03, 0xb9);
+ break;
+case UC_GREEK_CAPITAL_LETTER_LAMDA:
+ unicode_action_function(0x03, 0x9b);
+ break;
+case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N:
+ unicode_action_function(0x20, 0x7f);
+ break;
+case UC_GREEK_CAPITAL_LETTER_UPSILON:
+ unicode_action_function(0x03, 0xa5);
+ break;
+case UC_GREEK_CAPITAL_LETTER_MU:
+ unicode_action_function(0x03, 0x9c);
+ break;
+case UC_GREEK_CAPITAL_LETTER_EPSILON:
+ unicode_action_function(0x03, 0x95);
+ break;
+case UC_GREEK_CAPITAL_LETTER_GAMMA:
+ unicode_action_function(0x03, 0x93);
+ break;
+case UC_SUBSCRIPT_SIX:
+ unicode_action_function(0x20, 0x86);
+ break;
+case UC_GREEK_CAPITAL_LETTER_DELTA:
+ unicode_action_function(0x03, 0x94);
+ break;
+case UC_VULGAR_FRACTION_ONE_HALF:
+ unicode_action_function(0x00, 0xbd);
+ break;
+ default:
+ 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) {
+ 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;
+ }
+};
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md
new file mode 100644
index 000000000..2c9e0a837
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md
@@ -0,0 +1,188 @@
+# ManuNeo Ergodox Keyboard Layout
+
+Compile this file to a `keymap.c` file using `compile_keymap.py`
+
+ python compile_keymap.py keymaps/german-manuneo/keymap.md
+
+Tested with python 2.7 and python 3.4
+
+
+# Layout Config
+
+ {
+ "layout": "ergodox_ez",
+ "keymaps_includes": [
+ "ergodox_ez.h",
+ "action_layer.h",
+ "keymap_common.h",
+ "keymap_extras/keymap_german.h",
+ ],
+ "key_prefixes": ["DE_", "KC_"],
+ "macros": {
+ // TODO: implement macros
+ // "MUC": "",
+ },
+ // TODO: implement default unicode mode
+ }
+
+
+# Layers
+
+
+## Layer 0
+
+ .------------------------------------.------------------------------------.
+ |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT|
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ |INS |TG(2)| !M(UM)|DELT |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | APP | ! PGUP| ! !
+ ! ! !-----! !-----! ! !
+ |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
+ '-----------------' '-----------------'
+
+
+## Layer 1
+
+ .------------------------------------.------------------------------------.
+ | |EXLM|DQOT|PARA| | | | | | | | |RING| |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | ← | ↓ | → |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+## Layer 2
+
+ .------------------------------------.------------------------------------.
+ | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! P0 |PCMM|PDOT|PENT|PENT|
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+
+## Layer 3
+
+http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html
+
+ .------------------------------------.------------------------------------.
+ | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+## Layer 4
+
+
+ .------------------------------------.------------------------------------.
+ | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | θ | | | | | | β | μ | | | | ψ |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+## Layer 5
+
+ .------------------------------------.------------------------------------.
+ | | | | | | | | | | | | | | |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | Θ | | | | | | Β | Μ | | | | Ψ |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
+
+## Layer 6
+
+ .------------------------------------.------------------------------------.
+ | | | | | | | | | | | | | | |
+ !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
+ | | | | | | | | | | | | | | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | | | | |-----!-----! | | | | | |
+ !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
+ | | | | | | | | | | | | | | |
+ '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
+ | | | | | | ! | | | | |
+ '------------------------' '------------------------'
+ .-----------. .-----------.
+ | | | ! | |
+ .-----+-----+-----! !-----+-----+-----.
+ ! ! | | ! | ! !
+ ! ! !-----! !-----! ! !
+ | | | | ! | | |
+ '-----------------' '-----------------'
+
diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c
index b5463cb72..6e271321d 100644
--- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c
+++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c
@@ -14,11 +14,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' |
+ * |Ctrl/Esc|A / L2| S | D | F | G |------| |------| H | J | K | L | ; | ' |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | ~L1 | '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
+ * | ~L1 | ~L2 |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | Home | | PgUp |Ctrl/Esc|
@@ -34,9 +34,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// left hand
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS,
- CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
+ CTL_T(KC_ESC), 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_FN1, KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
+ KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_HOME,
KC_END,
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// right hand
KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_EQL, 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,
+ KC_H, KC_J, KC_K, KC_L, 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,
@@ -99,13 +99,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | MsUp | | | | | | | | | | | |
+ * | | | | | | | | | | | | Lclk | Rclk | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
+ * | | | | | | |------| |------|MsLeft|MsDown| MsUp |MsRght| | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
+ * | | | | | | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
@@ -116,19 +116,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
-KEYMAP(
+[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, KC_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_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_BTN1, KC_BTN2, KC_TRNS, KC_TRNS,
+ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, 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,
@@ -138,7 +138,8 @@ KEYMAP(
};
const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols)
+ [2] = ACTION_LAYER_TAP_TOGGLE(MDIA) // FN2 - Momentary Layer 2 (Media)
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
diff --git a/keyboard/ergodox_ez/keymaps/j3rn/readme.md b/keyboard/ergodox_ez/keymaps/j3rn/readme.md
index b0c4d267b..fc4b64042 100644
--- a/keyboard/ergodox_ez/keymaps/j3rn/readme.md
+++ b/keyboard/ergodox_ez/keymaps/j3rn/readme.md
@@ -1,10 +1,10 @@
-# J3RN's Mac-centric Ergodox EZ keymap
+# J3RN's Mac-centric ErgoDox EZ keymap
## Motivation
-Essentially, I wanted to switch to a layout that was less jarring than the default Ergodox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key).
+Essentially, I wanted to switch to a layout that was less jarring than the default ErgoDox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key).
-## How is it different from the default Ergodox EZ layout?
+## How is it different from the default ErgoDox EZ layout?
This layout more closely resembles that of the Mac keyboard, and has some other goodness baked in. Here is a rundown of what that means:
@@ -18,6 +18,7 @@ This layout more closely resembles that of the Mac keyboard, and has some other
### Other changes
- **The button to the left of "A" is Ctrl/Esc instead of Backspace.** This is actually how I have the keyboard on my Macbook set up to be, since it's loads more convenient than a CAPS LOCK key. This is the Ctrl key I find myself using most.
+- **Mouse uses Vim-style navigation**. To activate "Media mode," hold the 'a' key. This allows you to move the mouse around with hjkl just like in Vim. Additionally, right and left click are the conveniently placed 'i' and 'o' keys.
- **The key to the right of "5" and the key to left of "6" are "[" and "]", respectively, instead of Left and Right.** There is a more convenient set of Left and Right already present. Truth be told, I don't really use these keys, as they are a stretch to reach.
- **The Toggle L1 keys have been replaced by the otherwise displaced "-" and "=".** They are laid out, left-to-right, in the same order as on the Mac keyboard. Honestly, they are not terribly conveniently placed, and their placement might change in a later version. I found that I did not toggle L1 frequently at all, and found using the momentary keys to access L1 to fit my workflow better.
- **The "~"/L1 key in the bottom-left is now just momentary L1.** The "~" key was moved to the top-left as mentioned before, and I like to keep my multi-use keys to a minimum due to the latency for them to switch from "press" to "hold."
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c
index 4dd6d883c..3a999f266 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c
+++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c
@@ -1,149 +1,421 @@
#include "ergodox_ez.h"
+#include "led.h"
#include "debug.h"
#include "action_layer.h"
-#define BASE 0 // default layer
-#define SYMB 1 // symbols
-#define MDIA 2 // media keys
+#define BASE 0 // default layer
+#define LOCK 1 // layer lock keys
+#define SYMB_MO 2 // symbols momentary layer
+#define SYMB_TG 3 // symbols lock layer
+#define SYMB_XX 4 // symbols exit layer
+#define MDIA_MO 5 // media momentary layer
+#define MDIA_TG 6 // media lock layer
+#define MDIA_XX 7 // media exit layer
+#define UNLOCK 8 // clear to base layer
/*
- * Ordinary Ergodox EZ keyboard layout, v2
+ * Ordinary Ergodox EZ keyboard layout, v3
* modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
* Details: http://nicholas.rinard.us/2016/03/ergodox-ez-layout.html
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
/* Keymap 0: Basic layer
*
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | Grv | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | = |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | MDIA \ |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | SYMB | A | S | D | F | G |------| |------| H | J | K | L | ; | SYMB ' |
- * |--------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+--------|
- * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * |LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh |RCtrl |
- * `----------------------------------' `----------------------------------'
- * ,---------------. ,---------------.
- * | Home | End | | Left | Right |
- * ,------|--------|------| |------+--------+------.
- * | | | PgUp | | Up | | |
- * |Backsp| Del |------| |------| Enter | Space|
- * | | | PgDn | | Down | | |;
- * `----------------------' `----------------------'
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | LOCK Grv | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | = LOCK |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ Media |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | ' Symbol |
+ * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------|
+ * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift |
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * |LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh |RCtrl |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Home | End | | Left | Right|
+ * ,------|------|------| |------+------+------.
+ * | | | PgUp | | Up | | |
+ * |Backsp| Del |------| |------| Enter| 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_ESC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
- MO(SYMB), KC_A, KC_S, KC_D, KC_F, KC_G,
- KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, LSFT(KC_TAB),
- KC_LCTL, MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI,
- KC_HOME, KC_END,
- KC_PGUP,
- KC_BSPC, KC_DEL, KC_PGDN,
+[BASE] = KEYMAP(
+// left hand
+ LT(LOCK, KC_GRV),KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC
+,LT(MDIA_MO, KC_TAB),KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC
+,MO(SYMB_MO) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G
+,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB)
+,KC_LCTL ,MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI
+
+ ,KC_HOME,KC_END
+ ,KC_PGUP
+ ,KC_BSPC,KC_DEL ,KC_PGDN
// right hand
- KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
- KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, LT(MDIA, KC_BSLS),
- KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(SYMB, KC_QUOT),
- KC_TAB, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH),KC_RSFT,
- KC_RGUI, KC_RALT, ALL_T(KC_NO),MEH_T(KC_NO), KC_RCTL,
- KC_LEFT, KC_RGHT,
- KC_UP,
- KC_DOWN, KC_ENT, KC_SPC
+ ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,LT(LOCK, KC_EQL)
+ ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,LT(MDIA_MO, KC_BSLS)
+ ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,LT(SYMB_MO, KC_QUOT)
+ ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT
+ ,KC_RGUI,KC_RALT,ALL_T(KC_NO),MEH_T(KC_NO),KC_RCTL
+
+ ,KC_LEFT ,KC_RGHT
+ ,KC_UP
+ ,KC_DOWN ,KC_ENT ,KC_SPC
),
-/* Keymap 1: Symbol Layer
+
+/* Keymap 1: Layer Lock Keys
*
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | Esc | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | MDIA | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | F12 |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | |
- * |--------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+--------|
- * | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | CAPS |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | 0 | . | = | + | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | Left | Right| | Home | End |
- * ,------|------|------| |------+------+------.
- * | | | Up | | PgUp | | |
- * |Space |Enter |------| |------|BackSp| Del |
- * | | | Down | | PgDn | | |
- * `--------------------' `--------------------'
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | | Esc | | | | | | | | | | | | | |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | Media LOCK| | | | | | | | | | | | | | Media LOCK|
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * |Symbol LOCK| | | | | |------| |------| | | | | |Symbol LOCK|
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | Caps LOCK| | | | | | | | | | | | | | Caps LOCK|
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
*/
-// SYMBOLS
-[SYMB] = KEYMAP(
- // left hand
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- MO(MDIA), KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_AMPR,LSFT(KC_COMM),
- 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_TAB,
- KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
- KC_LEFT,KC_RGHT,
- KC_UP,
- KC_SPC,KC_ENT,KC_DOWN,
- // right hand
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- LSFT(KC_DOT), KC_PIPE, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_F12,
- KC_SLSH, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS,
- LSFT(KC_TAB), KC_BSLS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_CAPS,
- KC_P0, KC_DOT, KC_PEQL, KC_PPLS, KC_PENT,
- KC_HOME, KC_END,
- KC_PGUP,
- KC_PGDN, KC_BSPC, KC_DEL
+[LOCK] = KEYMAP(
+// left hand
+ KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_FN3 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_FN2 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_CAPS ,KC_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_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN3
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN2
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+ ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ),
+
+/* Keymap 2: Symbol Momentary Layer
+ *
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | Media | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | Media |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | Symbol | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | Symbol |
+ * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------|
+ * | Shift | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | Shift |
+ * `-----------+------+------+------+------+-------------' `------------+------+------+------+------+------------'
+ * | | | | | | | 0 | . | = | + | Entr |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Left | Right| | Home | End |
+ * ,------|------|------| |------+------+------.
+ * | | | Up | | PgUp | | |
+ * |Space |Enter |------| |------|BackSp| Del |
+ * | | | Down | | PgDn | | |
+ * `--------------------' `--------------------'
+ */
+[SYMB_MO] = KEYMAP(
+// left hand
+ KC_FN2 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS
+,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
+,MO(SYMB_MO) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV
+,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_LEFT ,KC_RGHT
+ ,KC_UP
+ ,KC_SPC ,KC_ENT ,KC_DOWN
+ // right hand
+ ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_FN2
+ ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO)
+ ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(SYMB_MO)
+ ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT
+ ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT
+ ,KC_HOME ,KC_END
+ ,KC_PGUP
+ ,KC_PGDN ,KC_BSPC ,KC_DEL
),
-/* Keymap 2: Media and mouse keys
+
+/* Keymap 3: Symbol Lock Layer
+ *
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | Lock | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | Lock |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | Media | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | Media |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | |
+ * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------|
+ * | Shift | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | Shift |
+ * `-----------+------+------+------+------+-------------' `------------+------+------+------+------+------------'
+ * | | | | | | | 0 | . | = | + | Entr |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Left | Right| | Home | End |
+ * ,------|------|------| |------+------+------.
+ * | | | Up | | PgUp | | |
+ * |Space |Enter |------| |------|BackSp| Del |
+ * | | | Down | | PgDn | | |
+ * `--------------------' `--------------------'
+ */
+[SYMB_TG] = KEYMAP( // layer 3 : return key for symbol lock layer
+// left hand
+ MO(SYMB_XX) ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS
+,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
+,MO(UNLOCK) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV
+,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_LEFT ,KC_RGHT
+ ,KC_UP
+ ,KC_SPC ,KC_ENT ,KC_DOWN
+ // right hand
+ ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,MO(SYMB_XX)
+ ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO)
+ ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(UNLOCK)
+ ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT
+ ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT
+ ,KC_HOME ,KC_END
+ ,KC_PGUP
+ ,KC_PGDN ,KC_BSPC ,KC_DEL
+ ),
+
+/* Keymap 4: Symbol Unlock Layer
*
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | Esc |ShutDn| Sleep| Mute |Vol Dn|Vol Up| | | | |PrtSc | PgUp |MyComp| Mail | |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | MsUp |ScrlUp| |ScrlUp| |ScrlUp| |ScrlUp| Up | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | |MsLeft|MsDown|MsRght| |------| |------| Home | Left | Down | Right| End | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | |MsDown|ScrlDn| |ScrlDn| |ScrlDn| |ScrlDn| Down | | | |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | Lclk | Rclk | | | PgDn | | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | Stop |Refrsh| | Prev | Next |
- * ,------|------|------| |------+------+------.
- * |Brwser|Brwser|Search| |VolUp | | |
- * |Back | Fwd |------| |------| Stop | Play-|
- * | | | Home | |VolDn | | Pause|
- * `--------------------' `--------------------'
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | | Esc | | | | | | | | | | | | | |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | Unlock | | | | | | | | | | | | | | Unlock |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | | | | | |------| |------| | | | | | |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK |
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
*/
-// MEDIA AND MOUSE
-[MDIA] = KEYMAP(
- KC_ESC, KC_PWR, KC_SLEP, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS,
- MO(MDIA), KC_TRNS, KC_TRNS, KC_MS_U, KC_WH_U, KC_TRNS, KC_WH_U,
- KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_D, KC_TRNS, KC_TRNS, KC_WH_D,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_WH_D,
- KC_WSTP, KC_WREF,
- KC_WSCH,
- KC_WBAK, KC_TRNS, KC_WHOM,
+[SYMB_XX] = KEYMAP(
+// left hand
+ KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,TG(MDIA_TG) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_FN1 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_CAPS ,KC_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_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,TG(MDIA_TG)
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ),
+
+/* Keymap 5: Media Momentary Layer
+ *
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | |ShutDn| | MsUp | | |ScrlUp| |ScrlUp|PrtScr| Home | Up | PgUp | Mail | |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | Sleep|MsLeft|MsDown|MsRght| |------| |------|NumLok| Left | Down | Right|MyComp| |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | | |MsDown| | |ScrlDn| |ScrlDn| | End | Down | PgDn | | |
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * | Mute |Vol Dn|Vol Up| Lclk | Rclk | |Insert|Delete| | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Stop |Refrsh| | Prev | Next |
+ * ,------|------|------| |------+------+------.
+ * |Brwser|Brwser|Search| |VolUp | | |
+ * |Back | Fwd |------| |------| Stop | Play-|
+ * | | | Home | |VolDn | | Pause|
+ * `--------------------' `--------------------'
+ */
+[MDIA_MO] = KEYMAP(
+// left hand
+ KC_FN3 ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS
+,MO(MDIA_MO) ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U
+,MO(SYMB_MO) ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS
+,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D
+,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2
+ ,KC_WSTP ,KC_WREF
+ ,KC_WSCH
+ ,KC_WBAK ,KC_TRNS ,KC_WHOM
// right hand
- KC_TRNS, KC_TRNS, KC_PSCR, KC_PGUP, KC_MYCM, KC_MAIL, KC_TRNS,
- KC_WH_U, KC_TRNS, KC_WH_U, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_END, KC_TRNS,
- KC_WH_D, KC_TRNS, KC_WH_D, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_PGDN, KC_TRNS,KC_TRNS, KC_TRNS,
- KC_MPRV, KC_MNXT,
- KC_VOLU,
- KC_VOLD, KC_MSTP, KC_MPLY
+ ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_FN3
+ ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(MDIA_MO)
+ ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,MO(SYMB_MO)
+ ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT
+ ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_MPRV ,KC_MNXT
+ ,KC_VOLU
+ ,KC_VOLD ,KC_MSTP ,KC_MPLY
),
+
+/* Keymap 6: Media Lock Layer
+ *
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | |ShutDn| | MsUp | | |ScrlUp| |ScrlUp|PrtScr| Home | Up | PgUp | Mail | |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | Sleep|MsLeft|MsDown|MsRght| |------| |------|NumLok| Left | Down | Right|MyComp| |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | | |MsDown| | |ScrlDn| |ScrlDn| | End | Down | PgDn | | |
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * | Mute |Vol Dn|Vol Up| Lclk | Rclk | |Insert|Delete| | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Stop |Refrsh| | Prev | Next |
+ * ,------|------|------| |------+------+------.
+ * |Brwser|Brwser|Search| |VolUp | | |
+ * |Back | Fwd |------| |------| Stop | Play-|
+ * | | | Home | |VolDn | | Pause|
+ * `--------------------' `--------------------'
+ */
+[MDIA_TG] = KEYMAP(
+// left hand
+ MO(MDIA_XX) ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS
+,MO(UNLOCK) ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U
+,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS
+,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D
+,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2
+ ,KC_WSTP ,KC_WREF
+ ,KC_WSCH
+ ,KC_WBAK ,KC_TRNS ,KC_WHOM
+ // right hand
+ ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,MO(MDIA_XX)
+ ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(UNLOCK)
+ ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO
+ ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT
+ ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_MPRV ,KC_MNXT
+ ,KC_VOLU
+ ,KC_VOLD ,KC_MSTP ,KC_MPLY
+ ),
+
+/* Keymap 7: Media Unlock Layer
+ *
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | | Esc | | | | | | | | | | | | | |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | Unlock | | | | | | | | | | | | | | Unlock |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | | | | | |------| |------| | | | | | |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK |
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+[MDIA_XX] = KEYMAP(
+// left hand
+ KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_FN1 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_CAPS ,KC_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_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+ ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ),
+
+/* Keymap 8: Unlock Layer
+ *
+ * ,-----------------------------------------------------. ,-----------------------------------------------------.
+ * | Unlock | | | | | | | | | | | | | | Unlock |
+ * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
+ * | | | | | | | | | | | | | | | |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | | | | | |------| |------| | | | | | |
+ * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
+ * | | | | | | | | | | | | | | | |
+ * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+[UNLOCK] = KEYMAP(
+// left hand
+ KC_FN1 ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+ ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS
+ ,KC_TRNS,KC_TRNS ,KC_TRNS
+
+ // right hand
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+
+ ,KC_TRNS ,KC_TRNS
+ ,KC_TRNS
+ ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ )
};
const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+ [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer
+ ,[2] = ACTION_LAYER_INVERT(SYMB_TG, ON_PRESS) // FN2 - toggle to Symbols on press
+ ,[3] = ACTION_LAYER_INVERT(MDIA_TG, ON_PRESS) // FN3 - toggle to Media on press
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
@@ -168,25 +440,31 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
+ uint8_t layer = biton32(layer_state);
- uint8_t layer = biton32(layer_state);
+ // do not change lights for locking and unlocking
+ if(layer == UNLOCK || layer == LOCK || layer == SYMB_XX || layer == MDIA_XX) {
+ return;
+ }
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;
+
+ // caps lock turns on red light
+ if(host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+ ergodox_right_led_1_on();
}
+ // symbol lock turns on green light
+ if(layer == SYMB_MO || layer == SYMB_TG) {
+ ergodox_right_led_2_on();
+ }
+
+ // media lock turns on blue light
+ if(layer == MDIA_MO || layer == MDIA_TG) {
+ ergodox_right_led_3_on();
+ }
};
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png
index b32b95533..69af8df4e 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt
index 727775ea2..04792f2df 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt
@@ -1,24 +1,24 @@
[{x:3.5},"#\n3",{x:10.5},"*\n8"],
[{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"],
[{y:-0.875,x:5.5},"%\n5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc"},"_\n\n\n\n\n\n-","^\n6"],
-[{y:-0.875,c:"#73ab6a",w:1.5},"~\n\n\n\n\n\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{t:"#000000\n\n\n\n#0000ff",w:1.5},"+\n\n\n\n\n\n="],
-[{y:-0.375,x:3.5,t:"#000000"},"E",{x:10.5},"I"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n~\n\n\n\nLock\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#2277ff",w:1.5},"+\n\nShift\n\n\n\n=\nLock"],
+[{y:-0.375,x:3.5,c:"#cccccc"},"E",{x:10.5},"I"],
[{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"],
[{y:-0.875,x:5.5},"T",{h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]","Y"],
-[{y:-0.875,c:"#73ab6a",w:1.5},"Tab",{c:"#cccccc"},"Q",{x:14.5},"P",{c:"#2277ff",fa:[0,0,0,1],w:1.5},"|\n\\\nMedia\nL2"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Media\n\nTab\n\n\n\nShift",{c:"#cccccc"},"Q",{x:14.5},"P",{c:"#2277ff",w:1.5},"|\n\\\nMedia\n\n\n\n\nShift"],
[{y:-0.375,x:3.5,c:"#cccccc"},"D",{x:10.5},"K"],
[{y:-0.875,x:2.5},"S",{x:1},"F",{x:8.5},"J",{x:1},"L"],
[{y:-0.875,x:5.5},"G",{x:6.5},"H"],
-[{y:-0.875,c:"#2277ff",w:1.5},"Symbols\n\n\nL1",{c:"#cccccc"},"A",{x:14.5},":\n;",{c:"#2277ff",w:1.5},"\"\n'\nSymbols\nL1"],
-[{y:-0.625,x:6.5,c:"#bfbf67",h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#cccccc"},"A",{x:14.5},":\n;",{c:"#2277ff",w:1.5},"\"\n'\nSymbols\n\n\n\n\nShift"],
+[{y:-0.625,x:6.5,c:"#54d6de",fa:[0,0,0,1],h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"],
[{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"],
[{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."],
[{y:-0.875,x:5.5},"B",{x:6.5},"N"],
-[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\nShift",{c:"#cccccc"},"Z\n\nCtrl",{x:14.5},"?\n/\nCtrl",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift"],
+[{y:-0.875,c:"#2277ff",fa:[0,1,0,1,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5,f:3},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"],
[{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"],
[{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"],
[{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"],
-[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bfbf67"},"Home","End"],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Home","End"],
[{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"],
[{x:2},"Page\n\n\n\n\n\nDown"],
[{r:-30,rx:13,y:-1,x:-3},"Left","Right"],
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png
index 89d15e450..9c0e8bba3 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt
index 4237f0820..c7bd272ec 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt
@@ -1,27 +1,27 @@
-[{x:3.5,c:"#9988bb"},"Vol\n\n\n\n\n\nMute",{x:10.5,c:"#ccffff"},"Page\n\n\n\n\n\nUp"],
-[{y:-0.875,x:2.5,c:"#9988bb"},"Sleep",{x:1},"Vol\n\n\n\n\n\nDown",{x:8.5},"Print\n\n\n\n\n\nScreen",{x:1},"Home\n\n\n\n\n\nDir"],
-[{y:-0.875,x:5.5},"Vol\n\n\n\n\n\nUp",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
-[{y:-0.875,c:"#ff4444",a:4,w:1.5},"Esc",{c:"#9988bb"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Email",{c:"#cccccc",a:7,w:1.5},""],
-[{y:-0.375,x:3.5,c:"#ccffff",a:4},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"],
-[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#99ffff",a:4},"Scroll\n\n\n\n\n\nUp",{x:8.5},"Scroll\n\n\n\n\n\nUp",{x:1,c:"#cccccc",a:7},""],
-[{y:-0.875,x:5.5},"",{c:"#99ffff",a:4,h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#cccccc",a:7},""],
-[{y:-0.875,c:"#000000",t:"#ff0000",a:4,fa:[0,0,0,1],w:1.5},"Media\n\n\nL2",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#000000",t:"#ff0000",a:4,w:1.5},"\n\nMedia\nL2"],
-[{y:-0.375,x:3.5,c:"#ccffff",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
+[{x:3.5,c:"#99de2a"},"F13",{x:10.5},"F18"],
+[{y:-0.875,x:2.5},"F12",{x:1},"F14",{x:8.5},"F17",{x:1},"F19"],
+[{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#99de2a",a:4},"F16"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"],
+[{y:-0.375,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"],
+[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#ffb063",a:4},"Scroll\n\n\n\n\n\nUp",{x:8.5},"Home",{x:1},"Page\n\n\n\n\n\nUp"],
+[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{c:"#ffb063",a:4,h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#e6e067"},"Print\n\n\n\n\n\nScreen"],
+[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#e6e067",t:"#000000"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Mail",{c:"#000000",t:"#ff0000",w:1.5},"\n\nMedia\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#ff8500",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nLeft",{x:1},"Mouse\n\n\n\n\n\nRight",{x:8.5},"Cursor\n\n\n\n\n\nLeft",{x:1},"Cursor\n\n\n\n\n\nRight"],
-[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{x:6.5,c:"#ccffff",a:4},"Home"],
-[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\nL1",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5,c:"#ccffff",a:4},"End",{c:"#cccccc",a:7,w:1.5},""],
-[{y:-0.625,x:6.5,c:"#99ffff",a:4,h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"],
-[{y:-0.75,x:3.5,c:"#ccffff"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
-[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#99ffff",a:4},"Scroll\n\n\n\n\n\nDown",{x:8.5},"Scroll\n\n\n\n\n\nDown",{x:1,c:"#cccccc",a:7},""],
-[{y:-0.875,x:5.5},"",{x:6.5},""],
-[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
-[{y:-0.375,x:3.5,c:"#ccffff",a:4},"Left\n\n\n\n\n\nClick",{x:10.5},"Page\n\n\n\n\n\nDown"],
-[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#ccffff",a:4},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#cccccc",a:7},"",{x:1},""],
-[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
-[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bbaacc",a:4},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"],
+[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{x:6.5,c:"#e6e067",a:4},"Num\n\n\n\n\n\nLock"],
+[{y:-0.875,c:"#cccccc",a:7,w:1.5},"",{c:"#e6e067",a:4},"Sleep",{x:14.5},"My\n\n\n\n\n\nComp",{c:"#cccccc",a:7,w:1.5},""],
+[{y:-0.625,x:6.5,c:"#ffb063",a:4,h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"],
+[{y:-0.75,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"],
+[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#ffb063",a:4},"Scroll\n\n\n\n\n\nDown",{x:8.5},"End",{x:1},"Page\n\n\n\n\n\nDown"],
+[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{x:6.5},""],
+[{y:-0.875,c:"#2277ff",a:4,fa:[0,1,0,0,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063"},"Delete"],
+[{y:-0.875,x:2.5,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{x:1,c:"#ff8500"},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert",{x:1,c:"#cccccc",a:7},""],
+[{y:-0.75,x:0.5,c:"#e6e067",a:4},"Mute","Vol\n\n\n\n\n\nDown",{x:14.5,c:"#cccccc",a:7},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#cfc82b",a:4},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"],
[{h:2},"< Web\n\n\nBrowser",{h:2},"Web >\n\n\nBrowser","Search\n\n\nBrowser"],
[{x:2},"Home\n\n\nBrowser"],
[{r:-30,rx:13,y:-1,x:-3},"Prev\n\n\nAudio\n\n\nTrack","Next\n\n\nAudio\n\n\nTrack"],
-[{x:-3,c:"#9988bb"},"Vol\n\n\n\n\n\nUp",{c:"#bbaacc",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"],
-[{x:-3,c:"#9988bb"},"Vol\n\n\n\n\n\nDown"]
+[{x:-3,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#cfc82b",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"],
+[{x:-3,c:"#e6e067"},"Vol\n\n\n\n\n\nDown"]
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png
index 7522af333..2538fbeb3 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt
index dda15f71b..098a08d2f 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt
@@ -1,24 +1,24 @@
-[{x:3.5,c:"#a3a3a3"},"F3",{x:10.5},"F8"],
+[{x:3.5,c:"#99de2a"},"F3",{x:10.5},"F8"],
[{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"],
-[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#a3a3a3",a:4},"F6"],
-[{y:-0.875,c:"#ff4444",w:1.5},"Esc",{c:"#a3a3a3"},"F1",{x:14.5},"F10",{w:1.5},"F11"],
-[{y:-0.375,x:3.5,c:"#bbc6ed"},"{",{x:10.5,c:"#bed4ba"},"8"],
-[{y:-0.875,x:2.5,c:"#bbc6ed"},"@",{x:1},"}",{x:8.5,c:"#bed4ba"},"7",{x:1},"9"],
-[{y:-0.875,x:5.5,c:"#bbc6ed"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"],
-[{y:-0.875,c:"#2277ff",fa:[0,0,0,1],w:1.5},"Media\n\n\nL2",{c:"#bbc6ed"},"!",{x:14.5,c:"#bed4ba"},"/",{c:"#a3a3a3",w:1.5},"F12"],
-[{y:-0.375,x:3.5,c:"#bbc6ed"},"(",{x:10.5,c:"#bed4ba"},"5"],
-[{y:-0.875,x:2.5,c:"#bbc6ed"},"$",{x:1},")",{x:8.5,c:"#bed4ba"},"4",{x:1},"6"],
-[{y:-0.875,x:5.5,c:"#bbc6ed"},"`",{x:6.5},"/"],
-[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\nL1",{c:"#bbc6ed",t:"#000000"},"#",{x:14.5,c:"#bed4ba"},"*",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSymbols\nL1"],
-[{y:-0.625,x:6.5,c:"#bfbf67",t:"#000000",h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"],
-[{y:-0.75,x:3.5,c:"#bbc6ed"},"[",{x:10.5,c:"#bed4ba"},"2"],
-[{y:-0.875,x:2.5,c:"#bbc6ed"},"^",{x:1},"]",{x:8.5,c:"#bed4ba"},"1",{x:1},"3"],
-[{y:-0.875,x:5.5,c:"#bbc6ed"},"~",{x:6.5},"\\"],
-[{y:-0.875,c:"#cccccc",a:7,w:1.5},"",{c:"#bbc6ed",a:4},"%",{x:14.5,c:"#bed4ba"},"-",{c:"#2277ff",w:1.5},"\n\nCaps Lock"],
-[{y:-0.375,x:3.5,c:"#cccccc",a:7},"",{x:10.5,c:"#bed4ba",a:4},"."],
-[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1},"",{x:8.5,c:"#bed4ba",a:4},"0",{x:1},"="],
-[{y:-0.75,x:0.5,c:"#cccccc",a:7},"","",{x:14.5,c:"#bed4ba",a:4},"+","Enter"],
-[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bfbf67"},"Left","Right"],
+[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#99de2a",a:4},"F6"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"],
+[{y:-0.375,x:3.5,c:"#c4e0bf"},"{",{x:10.5,c:"#89b087"},"8"],
+[{y:-0.875,x:2.5,c:"#c4e0bf"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"],
+[{y:-0.875,x:5.5,c:"#c4e0bf"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"],
+[{y:-0.875,c:"#2277ff",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#c4e0bf"},"!",{x:14.5,c:"#89b087"},"/",{c:"#2277ff",w:1.5},"\n\nMedia\n\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#c4e0bf"},"(",{x:10.5,c:"#89b087"},"5"],
+[{y:-0.875,x:2.5,c:"#c4e0bf"},"$",{x:1},")",{x:8.5,c:"#89b087"},"4",{x:1},"6"],
+[{y:-0.875,x:5.5,c:"#c4e0bf"},"`",{x:6.5},"/"],
+[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#c4e0bf",t:"#000000"},"#",{x:14.5,c:"#89b087"},"*",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSymbols\n\n\n\n\nShift"],
+[{y:-0.625,x:6.5,c:"#54d6de",t:"#000000",fa:[0,0,0,1],h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"],
+[{y:-0.75,x:3.5,c:"#c4e0bf"},"[",{x:10.5,c:"#89b087"},"2"],
+[{y:-0.875,x:2.5,c:"#c4e0bf"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"],
+[{y:-0.875,x:5.5,c:"#c4e0bf"},"~",{x:6.5},"\\"],
+[{y:-0.875,c:"#2277ff",f2:1,w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#c4e0bf"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"],
+[{y:-0.375,x:3.5,c:"#cccccc",a:7},"",{x:10.5,c:"#89b087",a:4},"."],
+[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1},"",{x:8.5,c:"#89b087",a:4},"0",{x:1},"="],
+[{y:-0.75,x:0.5,c:"#cccccc",a:7},"","",{x:14.5,c:"#89b087",a:4},"+","Enter"],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Left","Right"],
[{h:2},"Space",{h:2},"Enter","Up"],
[{x:2},"Down"],
[{r:-30,rx:13,y:-1,x:-3},"Home","End"],
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
index 1a0859846..b726e5e92 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
@@ -1,1119 +1,1189 @@
-:100000000C9465020C94A9020C94A9020C94A90208
-:100010000C94A9020C94A9020C94A9020C94A902B4
-:100020000C94A9020C94A9020C94B00B0C94820CB1
-:100030000C94A9020C94A9020C94A9020C94A90294
-:100040000C94A9020C940B210C94A9020C94A90203
-:100050000C94A9020C94AD1A0C94A9020C94A90258
-:100060000C94A9020C94A9020C94A9020C94A90264
-:100070000C94A9020C94A9020C94A9020C94A90254
-:100080000C94A9020C94A9020C94A9020C94A90244
-:100090000C94A9020C94A9020C94A9020C94A90234
-:1000A0000C94A9020C94A9020C94A902E70C090D66
-:1000B000F40D090DF40D4B0D6E0DF40DC30DD60DA1
-:1000C000C310C310F110F11033116F116F136F13C0
-:1000D00087116F137E127E1249136F136F135D1316
-:1000E0000000F0A135002B000152E100E00000000B
-:1000F0001E00140004001D7100774E001F001A003E
-:1001000016001B00007F4C002000080007000600BE
-:10011000E2002A002100150009001900E3004B004D
-:10012000220017000A00050000004A0029002F00E5
-:1001300000002B0200004D002D00300000002B00BD
-:100140000000500023001C000B00110000004F00B5
-:10015000240018000D001000E700520025000C00DC
-:100160000E003600E6002C00260012000F003700BB
-:10017000007F2800270013003300387100775100FA
-:100180002E0031823481E500E40000002900025293
-:1001900001000100010000003A001E0220022202BC
-:1001A000010051003B001F02210223020100280030
-:1001B0003C002F0226022F0001002C003D003002DF
-:1001C00027023000010052003E00240235003502B3
-:1001D000000050000100360200002B0000004F001C
-:1001E0000100370200002B0200004A003F003102EC
-:1001F0003800310000004D0040005F005C005900F5
-:1002000062004B00410060005D005A0037004C0066
-:10021000420061005E005B0067002A00430054005A
-:100220005500560057004E004400450001003900BB
-:1002300058000000290002520100010001000000E6
-:10024000A5000100010001000100B500A6000100A9
-:10025000F200010001000100A800F000F100F1002F
-:10026000F400B600AA00F900F3000100FA00B4009F
-:10027000A9000100010001000000B8000100F90020
-:100280000000FA000000B9000100F9000000FA00C7
-:100290000000AC00010001004A0001000000AB00BA
-:1002A0004600F9005000FA000100A9004B0052007E
-:1002B000510051004E00AE00B30001004F0001009C
-:1002C0000100AD00B10001004D0001000100AA00D5
-:1002D00001000100010001000100000016034500BB
-:1002E000720067006F0044006F0078002000450036
-:1002F0005A00000016034500720067006F004400BA
-:100300006F007800200045005A0000000403090433
-:1003100009026D00040100A0FA09040000010301B4
-:100320000100092111010001223F00070581030896
-:10033000000A090401000103010200092111010062
-:1003400001224D000705820308000A09040200018A
-:100350000300000009211101000122360007058376
-:100360000308000A09040300010300000009211129
-:100370000100012239000705840310000112011059
-:100380000100000008EDFE07130100010200010555
-:10039000010906A101050719E029E71500250195C6
-:1003A0000875018102050819012905950575019156
-:1003B000029501750391010507190029771500259C
-:1003C00001957875018102C005010980A1018502AE
-:1003D00016010026B7001A01002AB7007510950112
-:1003E0008100C0050C0901A1018503160100269CAE
-:1003F000021A01002A9C02751095018100C00501B6
-:100400000902A1010901A100050919012905150029
-:10041000250195057501810295017503810105018D
-:10042000093009311581257F950275088106093843
-:100430001581257F950175088106050C0A3802157E
-:1004400081257F950175088106C0C005010906A1B7
-:1004500001050719E029E7150025019508750181B7
-:100460000295017508810105081901290595057591
-:100470000191029501750391010507190029FF15E6
-:100480000025FF950675088100C0000000000000EF
-:100490000000000000010204060A0F17202C3A4A4F
-:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2
-:1004B000B39D87715D4A3A2C20170F0A060402018A
-:1004C0000000000000000000000011241FBECFEF5C
-:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A
-:1004E0009091EF01A091F001B091F1018730904B14
-:1004F000A740B04BB9F41092EE011092EF011092A8
-:10050000F0011092F10114BE84B7877F84BF88E1A7
-:100510000FB6F89480936000109260000FBEE0E088
-:10052000FFE3099511E0A0E0B1E0EAE9F5E402C0DB
-:1005300005900D92A433B107D9F721E0A4E3B1E00F
-:1005400001C01D92AE3EB207E1F70E94F6080C947E
-:10055000CB220C94000061110BC0FC018281882326
-:1005600021F085EE0E94570F03C085EE0E941F10F8
-:1005700080E090E0089508956091B1017091B2011A
-:100580008091B3019091B4010E94D91956985E9858
-:1005900025982D9826982E9827982F98813019F015
-:1005A000823021F00895259A2D9A0895269A2E9A40
-:1005B00008950C94BC0256985E9825982D9826981C
-:1005C0002E9827982F988FEF90E090938900809332
-:1005D000880090938B0080938A0090938D00809385
-:1005E0008C00259A2D9A2FEF80E792E021508040D1
-:1005F0009040E1F700C00000269A2E9A2FEF80E786
-:1006000092E0215080409040E1F700C00000279A1E
-:100610002F9A2FEF80E792E0215080409040E1F741
-:1006200000C0000025982D982FEF80E792E0215020
-:1006300080409040E1F700C0000026982E982FEFF0
-:1006400080E792E0215080409040E1F700C0000038
-:1006500027982F9856985E9825982D9826982E982A
-:1006600027982F98089589EA8093800089E08093E5
-:10067000810024982C983F988AB18F748AB96E981B
-:10068000479A8BB1806B8BB9769A0E94DB020C94EF
-:10069000BB0280E2809300018091340181110EC081
-:1006A0000E94980381E0809334012FEF83ED90E363
-:1006B000215080409040E1F700C0000080E40E949B
-:1006C0009E038093000181112EC00E94C803809375
-:1006D0000001811128C00E94C8038093000181118C
-:1006E00022C08FE30E94C8038093000181111BC0C8
-:1006F0000E94C00380E40E949E0380930001811148
-:1007000012C08CE00E94C8038093000181110BC0CD
-:100710000E94C80380930001811105C08FE30E94ED
-:10072000C803809300010E94C003809100010895D6
-:100730001092B9008AE08093B800089594EA9093EB
-:10074000BC009091BC0097FFFCCF9091B900987FBE
-:10075000983021F0903111F081E008958093BB0032
-:1007600084E88093BC008091BC0087FFFCCF80911F
-:10077000B900887F883111F0803471F780E00895E6
-:1007800084E98093BC008091BC0084FDFCCF089577
-:100790008093BB0084E88093BC008091BC0087FFFD
-:1007A000FCCF9091B900987F81E0983209F480E005
-:1007B000089584E88093BC008091BC0087FFFCCF43
-:1007C0008091BB00089580910001811115C080E4E3
-:1007D0000E949E038093000181110CC082E10E945F
-:1007E000C80380930001811105C08FEF0E94C803E8
-:1007F000809300010E94C00384B1807F84B985B1D9
-:10080000807F85B98AB1837F8AB98BB1837F8BB9A9
-:100810003E98469808950E944903809300010E94E3
-:10082000E30380B38C7080BB81B3836F81BBE4E44E
-:10083000F1E0A6E3B1E011921D9281E0E235F80704
-:10084000D1F70C943303BF92CF92DF92EF92FF92D5
-:100850000F931F93CF93DF9380910001882379F04A
-:10086000809135018F5F80933501811108C00E940E
-:10087000490380930001811102C00E94DB0206E35C
-:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455
-:10089000E394F12CC73000F580910001811162C012
-:1008A00080E40E949E0380930001811112C082E1C6
-:1008B0000E94C8038093000181110BC0C7010C2E58
-:1008C00001C0880F0A94EAF780950E94C8038093BC
-:1008D00000010E94C00346C0CA30A1F028F4C8300D
-:1008E00059F0C93061F005C0CC3089F070F0CD30DE
-:1008F00089F0209A289810C0219A29980DC0229A30
-:100900002A980AC0239A2B9807C0529A01C0539A7A
-:100910005B9802C03E9A4698E0EAEA95F1F78FB1FB
-:1009200079995AC092E081708D25892B7C9B02C0F9
-:1009300090E001C094E0892B7D9B02C090E001C053
-:1009400098E0892B7E9B02C090E001C090E1892B4A
-:100950009FB19095991F9927991F9295990F907E15
-:10096000892B0FC08091000181114BC080E40E944F
-:100970009E0380930001882389F1B12C0E94C0035B
-:100980008B2DF8019081981719F08083C092010196
-:100990000E94E30321960F5F1F4FCE30D10509F06F
-:1009A00079CF80910101882371F1815080930101F9
-:1009B000882339F08FE99FE00197F1F700C000002C
-:1009C00022C0A4E4B1E0E6E3F1E081918D9391E0EF
-:1009D000E434F907D1F717C090E0A5CF83E10E9476
-:1009E000C803809300018111C8CF81E40E949E0357
-:1009F000809300018111C1CF0E94D903B82EB09419
-:100A0000BDCF80E0BECF0E94D90281E0DF91CF91BF
-:100A10001F910F91FF90EF90DF90CF90BF900895BE
-:100A2000E82FF0E0EC5BFE4F8081089508958B3B4A
-:100A3000910578F4883A910540F5853A9105D0F40E
-:100A40008430910508F0B1C08130910509F4ADC042
-:100A50006BC0803E910508F467C0883E910508F49C
-:100A6000A4C09C01205F31092031310508F05CC031
-:100A700090650895853A910509F459C0863A910523
-:100A800009F458C083E890E40895883A910509F480
-:100A900054C0893A910509F453C08A3A910509F482
-:100AA00052C08B3A910509F451C08C3A910509F472
-:100AB00050C08D3A910509F44FC0803B910509F46F
-:100AC0004EC08E3A910509F44DC08F3A910509F454
-:100AD0004CC0813B910509F44BC0823B910509F460
-:100AE0004AC0833B910509F449C0843B910509F450
-:100AF00048C0853B910509F447C0863B910509F440
-:100B000046C0873B910509F445C0883B910509F42F
-:100B100044C0893B910509F443C08A3B910509F023
-:100B200042C08AE296E4089580E090E0089581E86A
-:100B300090E4089582E890E4089582EE94E40895A4
-:100B400089EE94E408958AEE94E4089585EB94E4A4
-:100B5000089586EB94E4089587EB94E408958CEC73
-:100B600094E408958DEC94E4089583E895E4089561
-:100B70008AE895E4089582E995E4089584E995E486
-:100B8000089581E296E4089583E296E4089584E26C
-:100B900096E4089585E296E4089586E296E4089541
-:100BA00087E296E4089580E094E40895089596E03D
-:100BB000799FF001112494E5899FE00DF11D112426
-:100BC000E60FF11DEE0FFF1FEC51FF4F8591949141
-:100BD0000895880F991F805A9040FC018591949147
-:100BE0000895880F991F80529F4FFC018591949121
-:100BF000089526E0729FF001112444E5849FE00DE2
-:100C0000F11D1124E60FF11DEE0FFF1FEC51FF4FF8
-:100C100025913491C9019A9581159F4110F4C9011C
-:100C20000895C90190528115904128F4C9019F701F
-:100C30000E94F1050895C90190538115904120F457
-:100C4000C9019927906C0895211580E5380769F44A
-:100C50000E9490139FEF24E34CE0915020404040CD
-:100C6000E1F700C000000C94D21A213080E538076B
-:100C700031F48091CC0181608093CC010895C90149
-:100C800090558115904108F050C0832F99278F709F
-:100C9000992781309105D9F4A9014370552702C0E5
-:100CA000880F991F4A95E2F79C68A90164E0440FF8
-:100CB000551F6A95E1F744275370842B952B73E0F9
-:100CC000220F331F7A95E1F7207633271DC082303B
-:100CD000910529F4922F8827816F906A08958330B7
-:100CE0009105A9F4A9014370552781E090E002C065
-:100CF000880F991F4A95E2F79C6843E0220F331F43
-:100D00004A95E1F7207E3770822B932B0895049744
-:100D1000F1F4A9014370552781E090E002C0880FEB
-:100D2000991F4A95E2F79A68E8CFC9019057811553
-:100D3000904120F4C9019F7090620895C9019058B4
-:100D40008115904120F4C9019F70906A0895203E5A
-:100D50003105E0F4203C310558F52133310509F423
-:100D600070C048F42932310509F464C02A323105D3
-:100D700009F46EC074C029333105F1F02238310511
-:100D8000D9F02533310509F44EC069C0233E310541
-:100D900089F138F4203E3105C1F0223E3105E1F001
-:100DA0005EC0263E310569F1273E3105A9F157C0E5
-:100DB000C9010E94E90508958091DF0180FD02C00C
-:100DC00081FF4DC080EE90E04BC08091DF0180FF3D
-:100DD000F9CF89E390E044C08091DF0182FF0EC02B
-:100DE0008091DF0184FF03C080E090E039C083EE92
-:100DF00090E036C08091DF0182FFF2CF82EE90E07A
-:100E00002FC08091DF0183FF0BC08091DF0184FD43
-:100E1000EBCF87EE90E024C08091DF0183FFF5CF18
-:100E200086EE90E01DC08091DF0185FF07C089E25A
-:100E300090E016C08091DF0185FFF9CF85E390E057
-:100E40000FC08091DF0186FF07C08AE290E008C0F2
-:100E50008091DF0186FFF9CF81E390E001C0C901F5
-:100E60000E941705089508950C943307809162013C
-:100E70000895CF93DF9300D01F92CDB7DEB72091B6
-:100E8000E501243019F523E029839B838A8320938D
-:100E9000E9008FEF9091E800815095FD06C095ED37
-:100EA0009A95F1F700008111F5CF8091E80085FF58
-:100EB0000DC040E050E063E070E0CE0101960E947A
-:100EC000A3098091E8008E778093E8000F900F903F
-:100ED0000F90DF91CF910895CF93DF9300D01F92B1
-:100EE000CDB7DEB72091E501243021F522E029833A
-:100EF0009B838A8383E08093E9008FEF9091E800E1
-:100F0000815095FD06C095ED9A95F1F7000081118D
-:100F1000F5CF8091E80085FF0DC040E050E063E030
-:100F200070E0CE0101960E94A3098091E8008E77BF
-:100F30008093E8000F900F900F90DF91CF9108956C
-:100F40002091E5012430F1F422E02093E9002FEF15
-:100F50003091E800215035FD06C035ED3A95F1F7A6
-:100F600000002111F5CF2091E80025FF0BC040E0E3
-:100F700050E065E070E00E94A3098091E8008E7760
-:100F80008093E8000895CF93DF93EC018091E50111
-:100F9000843009F046C090910C019923D9F09091CA
-:100FA0000D019923B9F08093E9008FEF9091E8004B
-:100FB000815095FD06C095E19A95F1F700008111E9
-:100FC000F5CF8091E80085FF2CC040E050E060E163
-:100FD00070E017C081E08093E9008FEF9091E80006
-:100FE000815095FD06C095ED9A95F1F700008111AD
-:100FF000F5CF8091E80085FF14C040E050E068E044
-:1010000070E0CE010E94A3098091E8008E77809362
-:10101000E80080E1FE01A2E5B1E001900D928A9521
-:10102000E1F7DF91CF9108958091E401811109C02A
-:101030000E94350B0E94920B8091E20084608093A5
-:10104000E20008951092E401089508950C94F820A8
-:101050000E94691A0E94FE200E942F0E0C943407F1
-:1010600042E061EC81E00E94AF0A42E061EC82E084
-:101070000E94AF0A42E061EC83E00E94AF0A42E1C5
-:1010800061EC84E00C94AF0A8091E701833009F4AD
-:1010900055C030F4813071F0823009F48EC008956B
-:1010A0008A3009F47AC08B3009F460C0893009F0C5
-:1010B0009CC020C08091E601813A09F096C08091E1
-:1010C000E800877F8093E8008091EA019091EB012E
-:1010D000892B21F060E080E090E003C060E182E5D0
-:1010E00091E070E00E94EC098091E8008B7780939A
-:1010F000E80008958091E601813209F076C0809180
-:10110000EA019091EB01009719F0039709F06DC087
-:101110008091E800877F8093E8008091E80082FD5D
-:1011200005C08091E5018111F8CF5FC08091F10089
-:10113000809362018091E8008B7753C08091E60133
-:10114000813A09F052C08091EA019091EB01892B1C
-:1011500009F04BC08091E800877F8093E800809180
-:10116000E80080FFFCCF80910C0136C08091E60141
-:101170008132D9F58091EA019091EB01892BA9F593
-:101180008091E800877F8093E8000E94E40A8091C4
-:10119000E80180930C010C9490138091E601813258
-:1011A00021F58091E800877F8093E8000E94E40A9F
-:1011B0008091E9018093630108958091E601813A6D
-:1011C000A1F48091E800877F8093E8008091E80097
-:1011D00080FFFCCF809163018093F1008091E80053
-:1011E0008E778093E8000C94E40A089584B7877F93
-:1011F00084BF88E10FB6F89480936000109260007D
-:101200000FBE90E080E80FB6F89480936100909351
-:1012100061000FBE0E947E0E0E94350B0E94920B51
-:101220008091E20084608093E20078940E940D0E29
-:101230000E94800E82E091E00E942A0E0E94E62029
-:101240008091E501853069F40E942C1A8091E301B8
-:101250008823B1F30E94541A882391F30E948D09C8
-:10126000EFCF0E94860EECCF292F33272330310594
-:10127000A9F06CF42130310509F442C02230310567
-:1012800009F043C08DE690E020E133E042C0213216
-:101290003105C9F02232310519F137C09927813063
-:1012A000910541F08230910541F0892B71F5ECE018
-:1012B000F3E005C0E4EFF2E002C0ECEDF2E084916F
-:1012C00090E09F0126C0643000F5E62FF0E0EE0FBD
-:1012D000FF1FEE5DFE4F2081318189E090E019C053
-:1012E000643098F4E62FF0E0DF01AA0FBB1FA65E82
-:1012F000BE4F2D913C91EA5EFE4F808190E009C087
-:1013000082E190E02DE733E004C080E090E020E04F
-:1013100030E0FA0131832083089580E189BD82E1C4
-:1013200089BD09B400FEFDCF8091D8008F7D8093E8
-:10133000D8008091E00082608093E0008091E0001E
-:1013400081FDFCCF0895CF92DF92EF92FF920F9331
-:101350001F93CF93DF937C018B01EA010E94050B61
-:10136000811131C0209731F088819981081B190BB8
-:10137000E80EF91EC12CD12C0115110519F180912F
-:10138000E80085FD14C08091E8008E778093E80026
-:10139000209741F0888199818C0D9D1D99838883C8
-:1013A00085E011C00E94050B882331F30CC0F701C2
-:1013B00081917F018093F10001501109FFEFCF1A55
-:1013C000DF0ADACF80E0DF91CF911F910F91FF907C
-:1013D000EF90DF90CF9008952091EC013091ED01D6
-:1013E0002617370748F06115710539F42091E80098
-:1013F0002E772093E80001C0B901FC0120E06115BF
-:101400007105B9F18091E501882309F440C0853068
-:1014100009F43FC08091E80083FD3DC08091E80061
-:1014200082FF06C08091E80082FF26C080E0089518
-:101430008091E80080FFE3CF2091F3008091F200DB
-:1014400090E0922B6115710551F08830910538F4C8
-:1014500021912093F100615071090196F3CF21E0B1
-:10146000089709F020E08091E8008E778093E800EB
-:10147000C6CF2111C7CFD6CF8091E501882339F09F
-:10148000853039F08091E80083FFCCCF04C082E042
-:10149000089583E0089581E008952091EC01309152
-:1014A000ED012617370748F06115710539F42091D1
-:1014B000E8002E772093E80001C0B901FC0120E08C
-:1014C00061157105C1F18091E501882309F441C0DE
-:1014D000853009F440C08091E80083FD3EC08091D2
-:1014E000E80082FF06C08091E80082FF27C080E00C
-:1014F00008958091E80080FFE3CF2091F300809170
-:10150000F20090E0922B6115710559F08830910539
-:1015100040F424912093F1003196615071090196B5
-:10152000F2CF21E0089709F020E08091E8008E7763
-:101530008093E800C5CF2111C6CFD5CF8091E501BA
-:10154000882339F0853039F08091E80083FFCBCFD4
-:1015500004C082E0089583E0089581E00895982F03
-:10156000973058F59093E900981739F07091EC0096
-:101570002091ED005091F00003C0242F762F50E011
-:1015800021FF19C03091EB003E7F3093EB0030918A
-:10159000ED003D7F3093ED003091EB0031603093F2
-:1015A000EB007093EC002093ED005093F00020913D
-:1015B000EE0027FF07C09F5FD3CF8F708093E900B5
-:1015C00081E0089580E008958091E60187FD05C0DF
-:1015D0008091E80080FF0EC012C08091E80082FD7B
-:1015E00005C08091E5018111F8CF08958091E80050
-:1015F0008B7708C08091E5018111EACF0895809131
-:10160000E8008E778093E80008958091E40090913F
-:10161000E50045E62091EC0020FF21C02091E80084
-:1016200020FD21C02091E501222389F0253089F099
-:101630002091EB0025FD0FC02091E4003091E500E2
-:101640002817390739F3415041F0C901E3CF82E04F
-:10165000089583E0089581E0089584E0089520913D
-:10166000E80022FFDFCF80E008950E94A30B0E94D4
-:10167000AB0BE0EEF0E0808181608083E8EDF0E08C
-:1016800080818F77808319BCA7EDB0E08C918E7F2D
-:101690008C9380818F7E80831092E40108950F9354
-:1016A0001F93CF93DF930E94A30B0E94AB0BC8ED57
-:1016B000D0E088818F77888388818068888388815B
-:1016C0008F7D888319BC1092E5011092E101109280
-:1016D000E3011092E20100EE10E0F80180818B7FBF
-:1016E000808388818160888342E060E080E00E949E
-:1016F000AF0AE1EEF0E080818E7F8083E2EEF0E0E1
-:10170000808181608083808188608083F80180810E
-:101710008E7F8083888180618883DF91CF911F9144
-:101720000F910895E8EDF0E080818F7E8083E7EDF2
-:10173000F0E080818160808384E082BF81E08093DB
-:10174000E4010C944F0BE8EDF0E080818E7F808304
-:101750001092E20008951092DA001092E1000895CC
-:101760001F920F920FB60F9211242F933F934F9316
-:101770005F936F937F938F939F93AF93BF93EF93F9
-:10178000FF938091E10082FF0BC08091E20082FF15
-:1017900007C08091E1008B7F8093E1000E940C0ED6
-:1017A0008091DA0080FF1FC08091D80080FF1BC0AD
-:1017B0008091DA008E7F8093DA008091D90080FFDB
-:1017C0000DC080E189BD82E189BD09B400FEFDCF75
-:1017D00081E08093E5010E94140805C019BC1092B5
-:1017E000E5010E9422088091E10080FF19C08091EC
-:1017F000E20080FF15C08091E2008E7F8093E200BE
-:101800008091E20080618093E2008091D800806244
-:101810008093D80019BC85E08093E5010E942608DA
-:101820008091E10084FF30C08091E20084FF2CC0F1
-:1018300080E189BD82E189BD09B400FEFDCF8091C0
-:10184000D8008F7D8093D8008091E1008F7E8093B7
-:10185000E1008091E2008F7E8093E2008091E200BF
-:1018600081608093E2008091E101882311F084E09F
-:1018700007C08091E30087FF02C083E001C081E0E0
-:101880008093E5010E9428088091E10083FF29C030
-:101890008091E20083FF25C08091E100877F8093E3
-:1018A000E10082E08093E5011092E1018091E10086
-:1018B0008E7F8093E1008091E2008E7F8093E20032
-:1018C0008091E20080618093E20042E060E080E08D
-:1018D0000E94AF0A8091F00088608093F0000E941F
-:1018E0002508FF91EF91BF91AF919F918F917F91CB
-:1018F0006F915F914F913F912F910F900FBE0F907D
-:101900001F9018951F920F920FB60F9211242F93CC
-:101910003F934F935F936F937F938F939F93AF9377
-:10192000BF93CF93EF93FF93C091E900CF70809165
-:10193000EC001092E9008091F000877F8093F00026
-:1019400078940E94BE0C1092E9008091F0008860AB
-:101950008093F000C093E900FF91EF91CF91BF9188
-:10196000AF919F918F917F916F915F914F913F9137
-:101970002F910F900FBE0F901F9018951F93CF932C
-:10198000DF93CDB7DEB7AA970FB6F894DEBF0FBED0
-:10199000CDBFE6EEF1E08091F100819321E0EE3ED3
-:1019A000F207C9F70E9444088091E80083FF1CC138
-:1019B0002091E6013091E701832F90E08A30910574
-:1019C00008F012C1FC01EA5AFF4F0C948022203823
-:1019D00081F0223809F008C18091EA018F7080936C
-:1019E000E9008091EB0085FB882780F91092E900DF
-:1019F00006C08091E2019091E30191118260909183
-:101A0000E800977F9093E8008093F1001092F10036
-:101A1000C5C0822F8D7F09F0E7C0222319F0223044
-:101A200061F0E2C08091E801813009F0DDC033301F
-:101A300009F080E08093E30128C08091E8018111E2
-:101A400024C02091EA012F7009F4CEC02093E90050
-:101A50008091EB0080FF19C08091EB00333011F4CE
-:101A6000806211C080618093EB0081E090E0022EE3
-:101A700001C0880F0A94EAF78093EA001092EA0006
-:101A80008091EB0088608093EB001092E9008091D8
-:101A9000E800877F86C02111A7C01091E8011F7759
-:101AA0008091E3008078812B8093E3008091E800AF
-:101AB000877F8093E8000E94E40A8091E80080FF1D
-:101AC000FCCF8091E30080688093E300112311F044
-:101AD00083E001C082E08093E50186C02058223077
-:101AE00008F082C08091E8019091E9018C3D23E0EB
-:101AF000920779F583E08A838AE289834FB7F89465
-:101B0000DE01139620E03EE051E2E32FF0E0509337
-:101B10005700E49120FF03C0E295EF703F5FEF7044
-:101B20008E2F90E0EA3010F0C79601C0C0968D93DA
-:101B30009D932F5F243149F74FBF8091E800877F45
-:101B40008093E8006AE270E0CE0101960E94EC0901
-:101B500014C0AE014F5F5F4F6091EA010E943409EB
-:101B6000009709F441C02091E800277F2093E80006
-:101B7000BC0189819A810E944D0A8091E8008B778F
-:101B80008093E80031C0203879F58091E800877FA4
-:101B90008093E8008091E1018093F1008091E8005A
-:101BA0008E778093E8000E94E40A1EC021111CC0B9
-:101BB0009091E8019230C0F48091E800877F809393
-:101BC000E8009093E1010E94E40A8091E101811113
-:101BD00004C08091E30087FF02C084E001C081E07F
-:101BE0008093E5010E9430088091E80083FF0AC0DD
-:101BF0008091E800877F8093E8008091EB0080620D
-:101C00008093EB00AA960FB6F894DEBF0FBECDBF4F
-:101C1000DF91CF911F9108950895CF938091E501B1
-:101C20008823B1F08091E9008F709091EC0090FFD3
-:101C300002C090E801C090E0C92FC82B1092E900C3
-:101C40008091E80083FD0E94BE0CCF70C093E90034
-:101C5000CF91089590936901809368010895E09170
-:101C60006801F0916901309721F00190F081E02D39
-:101C7000099480E00895E0916801F091690130973E
-:101C800021F00280F381E02D09940895E09168012C
-:101C9000F0916901309721F00480F581E02D0994DD
-:101CA000089520916601309167018217930771F0C2
-:101CB0009093670180936601E0916801F09169015A
-:101CC000309721F00680F781E02D09940895209146
-:101CD0006401309165018217930771F0909365015B
-:101CE00080936401E0916801F0916901309721F0DF
-:101CF0000084F185E02D0994089508950C947D0EDB
-:101D00000E946F1A0E940B040C94351BCF92DF9235
-:101D1000EF92FF920F931F93CF93DF93CDB7DEB770
-:101D20002B970FB6F894DEBF0FBECDBF0E942304E1
-:101D30003BE6E32E31E0F32E00E010E0C02E802FD2
-:101D40000E941005F701D1907F01D826B1F40F5FF2
-:101D50001F4F0E30110591F78FEF89838A831B8205
-:101D60000E94781A8160782F9D838C8349815A81E3
-:101D70006B818D810E94290F41C09091CC0191FF10
-:101D800004C08B870E9416058B8520E030E04D2D26
-:101D900050E0922FBA01022E02C0759567950A9401
-:101DA000E2F760FF25C02E83CF82EE24E394F12C6E
-:101DB00002C0EE0CFF1C9A95E2F790E08E219F2165
-:101DC00021E0892B09F420E028870E94781A81609D
-:101DD000782F9A8789874E815F8168858A850E94DE
-:101DE000290FF801E559FE4F80818E25808306C0BA
-:101DF0002F5F3F4F2630310561F6A9CF0E94191E93
-:101E000010916A010E942F0E1817A1F00E942F0E48
-:101E100080936A012B960FB6F894DEBF0FBECDBF3C
-:101E2000DF91CF911F910F91FF90EF90DF90CF90B6
-:101E30000C9434072B960FB6F894DEBF0FBECDBFBF
-:101E4000DF91CF911F910F91FF90EF90DF90CF9096
-:101E50000895CF93DF93CDB7DEB72B970FB6F894E5
-:101E6000DEBF0FBECDBF4F83588769877A878B87C8
-:101E7000DE01119686E0FD0111928A95E9F785E071
-:101E8000FE01379601900D928A95E1F749815A81BA
-:101E90006B817C818D819E810E945C162B960FB692
-:101EA000F894DEBF0FBECDBFDF91CF910895CF93E1
-:101EB000C82F882309F4C1C0823859F40E942F0E1C
-:101EC00081FDBBC089E30E94F9180E94B31989E320
-:101ED0000CC0833879F40E942F0E80FDAEC083E5DC
-:101EE0000E94F9180E94B31983E50E943919CF9115
-:101EF0000C94B319843859F40E942F0E82FD9DC0B2
-:101F000087E40E94F9180E94B31987E4EECF8CEFA2
-:101F10008C0F813A48F48C2F0E944E2081118DC085
-:101F20008C2F0E94F918E3CF80E28C0F883048F4A0
-:101F3000C77081E001C0880FCA95EAF70E947A193C
-:101F4000D6CF8BE58C0F833078F4C53A29F0C63AAA
-:101F500031F482E890E005C081E890E002C083E8B7
-:101F600090E0CF910C94510E88E58C0F833108F0EE
-:101F700064C0C83A39F1C93A41F1CA3A49F1CB3A99
-:101F800051F1CC3A59F1CD3A61F1C03B69F1CE3A09
-:101F900071F1CF3A79F1C13B81F1C23B89F1C33B89
-:101FA00091F1C43B99F1C53BA1F1C63BA9F1C73BF7
-:101FB000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2ED
-:101FC00092E038C082EE90E035C089EE90E032C0F9
-:101FD0008AEE90E02FC085EB90E02CC086EB90E07D
-:101FE00029C087EB90E026C08CEC90E023C08DECFC
-:101FF00090E020C083E891E01DC08AE891E01AC01B
-:1020000082E991E017C084E991E014C081E292E096
-:1020100011C083E292E00EC084E292E00BC085E240
-:1020200092E008C086E292E005C087E292E002C03A
-:1020300080E090E0CF910C94670ECF9108958823B3
-:1020400009F44BC0823859F40E942F0E81FF45C01D
-:1020500089E30E94F9180E94B31989E30CC0833800
-:1020600071F40E942F0E80FF38C083E50E94F9189A
-:102070000E94B31983E50E9439190C94B31984386E
-:1020800059F40E942F0E82FF28C087E40E94F9189D
-:102090000E94B31987E4EFCF9CEF980F913A58F361
-:1020A00090E2980F983050F4877091E001C0990F3A
-:1020B0008A95EAF7892F0E948019DFCF9BE5980F58
-:1020C000933020F480E090E00C94510E885A8331D4
-:1020D00020F480E090E00C94670E0895882321F0AE
-:1020E0000E947A190C94B3190895882321F00E9454
-:1020F00080190C94B3190895CF92DF92EF92FF925A
-:102100000F931F93CF93DF93CDB7DEB728970FB60A
-:10211000F894DEBF0FBECDBF8C0185E0F801DE0173
-:10212000119601900D928A95E1F7F8014081318175
-:10213000F280258122952F7083819481892B31F043
-:102140003F3F31F481E04F3F19F403C081E001C00B
-:1021500080E080FDC4C249833A8389819A812F83BC
-:102160000E94B7189E8388870E94B6180E9489171C
-:102170004E81E42FE295EF70F0E0E05AFF4F2F819F
-:1021800068850C948022842F807F142F1F708823F1
-:1021900011F01295107FFF2059F0112309F454C259
-:1021A000812F68870E948A190E94B31968854CC2E2
-:1021B000862F0E941F10112309F491C2812F0E94C3
-:1021C000901928960FB6F894DEBF0FBECDBFDF91F1
-:1021D000CF911F910F91FF90EF90DF90CF900C94D3
-:1021E000B319342F307F842F8F70303211F08295E5
-:1021F000807F662319F0613019F12BC0FF20B1F008
-:10220000222309F493C1213009F090C128960FB61A
-:10221000F894DEBF0FBECDBFDF91CF911F910F911C
-:10222000FF90EF90DF90CF900C949A19222319F031
-:10223000213009F454C28E830E949D198E8189C178
-:10224000FF2021F0223008F04AC270C1211147C29C
-:1022500080C1FF2021F0222309F468C1F5C12223A7
-:1022600009F477C105C2242F26952695237030E006
-:102270002115310521F021303105C9F030C2FF2090
-:1022800021F0862F942F937002C080E090E0289672
-:102290000FB6F894DEBF0FBECDBFDF91CF911F9177
-:1022A0000F91FF90EF90DF90CF900C94510EFF2094
-:1022B00021F0862F942F937002C080E090E0289642
-:1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147
-:1022D0000F91FF90EF90DF90CF900C94670E862FB8
-:1022E000FF2019F00E94211D02C00E94891D28961E
-:1022F0000FB6F894DEBF0FBECDBFDF91CF911F9117
-:102300000F91FF90EF90DF90CF900C940E1E842FD2
-:10231000837009F076C0F110E2C1262F2295269530
-:102320002770220F220F862F8F70C82ED12CE12C00
-:10233000F12C022E04C0CC0CDD1CEE1CFF1C0A94F8
-:10234000D2F764FF10C06FE070E080E090E004C05E
-:10235000660F771F881F991F2A95D2F76095709591
-:102360008095909503C060E070E0CB01242F269506
-:1023700026952370422F50E042305105D1F0433072
-:10238000510559F16C297D298E299F29413051052C
-:1023900041F128960FB6F894DEBF0FBECDBFDF9196
-:1023A000CF911F910F91FF90EF90DF90CF900C9401
-:1023B000AE176C297D298E299F2928960FB6F8948F
-:1023C000DEBF0FBECDBFDF91CF911F910F91FF9068
-:1023D000EF90DF90CF900C94C8170E94AE17C70102
-:1023E000B60128960FB6F894DEBF0FBECDBFDF91C1
-:1023F000CF911F910F91FF90EF90DF90CF900C94B1
-:102400009417FF2019F0842F817001C086958823CE
-:1024100009F465C1262F229526952770220F220FD9
-:10242000862F8F70C82ED12CE12CF12C022E04C0E7
-:10243000CC0CDD1CEE1CFF1C0A94D2F764FF10C00C
-:102440006FE070E080E090E004C0660F771F881FA7
-:10245000991F2A95D2F7609570958095909503C045
-:1024600060E070E0CB01242F269526952370422F43
-:1024700050E042305105D1F04330510559F16C29FB
-:102480007D298E299F294130510541F128960FB6AB
-:10249000F894DEBF0FBECDBFDF91CF911F910F919A
-:1024A000FF90EF90DF90CF900C9482186C297D29DB
-:1024B0008E299F2928960FB6F894DEBF0FBECDBF98
-:1024C000DF91CF911F910F91FF90EF90DF90CF9010
-:1024D0000C949C180E948218C701B60128960FB66A
-:1024E000F894DEBF0FBECDBFDF91CF911F910F914A
-:1024F000FF90EF90DF90CF900C946818603FC9F187
-:1025000018F4603E50F49BC0623F09F460C008F4C8
-:102510004AC0633F09F46FC092C0162F1F70842F0A
-:102520008F71FF2099F00E940118812F28960FB615
-:10253000F894DEBF0FBECDBFDF91CF911F910F91F9
-:10254000FF90EF90DF90CF900C946E100E942218B5
-:10255000812F28960FB6F894DEBF0FBECDBFDF9156
-:10256000CF911F910F91FF90EF90DF90CF900C943F
-:102570007510FF20A1F02111B2C0842F8F71289611
-:102580000FB6F894DEBF0FBECDBFDF91CF911F9184
-:102590000F91FF90EF90DF90CF900C94471822306E
-:1025A00008F09DC0EACFFF20A1F0842F8F712896FC
-:1025B0000FB6F894DEBF0FBECDBFDF91CF911F9154
-:1025C0000F91FF90EF90DF90CF900C940118FF20B7
-:1025D00061F3842F8F7128960FB6F894DEBF0FBE7B
-:1025E000CDBFDF91CF911F910F91FF90EF90DF90C2
-:1025F000CF900C942218FF2091F0842F8F71289691
-:102600000FB6F894DEBF0FBECDBFDF91CF911F9103
-:102610000F91FF90EF90DF90CF900C94EC172896DD
-:102620000FB6F894DEBF0FBECDBFDF91CF911F91E3
-:102630000F91FF90EF90DF90CF900C94E217FF2066
-:10264000A1F0222309F4B1CF862F28960FB6F89473
-:10265000DEBF0FBECDBFDF91CF911F910F91FF90D5
-:10266000EF90DF90CF900C94570F222309F4B1CF55
-:10267000862F28960FB6F894DEBF0FBECDBFDF9130
-:10268000CF911F910F91FF90EF90DF90CF900C941E
-:102690001F104F70C8010E94AB0228960FB6F89425
-:1026A000DEBF0FBECDBFDF91CF911F910F91FF9085
-:1026B000EF90DF90CF900C9409174F70C8012896C7
-:1026C0000FB6F894DEBF0FBECDBFDF91CF911F9143
-:1026D0000F91FF90EF90DF90CF900C94D605289645
-:1026E0000FB6F894DEBF0FBECDBFDF91CF911F9123
-:1026F0000F91FF90EF90DF90CF9008950E9497196F
-:102700000E946C190E94B3190E94BA1E0E940E1EEC
-:1027100080E090E00E94510E80E090E00C94670E03
-:102720000E9487190C947E130E94B718292F2295B6
-:102730002F7030E02C3031054CF42A3031056CF428
-:10274000225031092230310590F407C02C30310578
-:1027500051F02F30310539F00AC0803E10F0803F33
-:1027600031F481E0089593FB882780F9089580E093
-:102770000895CF93DF9300D000D01F92CDB7DEB77E
-:102780000F900F900F900F900F90DF91CF910895C1
-:10279000CF93DF9300D000D000D0CDB7DEB7269620
-:1027A0000FB6F894DEBF0FBECDBFDF91CF91089575
-:1027B0001F93CF93DF93C091790116E080917A0146
-:1027C000C81799F0D0E01C9FF0011D9FF00D112457
-:1027D000E558FE4F408151816281738184819581EA
-:1027E0000E94C8132196C770E9CFDF91CF911F9146
-:1027F00008954091AB015091AC016091AD01709191
-:10280000AE018091AF019091B0010C94C813CF93A9
-:102810008091B00182958F7009F05FC08091AD0109
-:10282000882309F45AC020917901A0917A0160911E
-:10283000AB017091AC018091AE019091AF0131E09C
-:102840006F3F09F030E0B32FC6E02A1709F445C006
-:10285000009721F07F3F21F44B2F03C041E001C0DE
-:1028600040E030E040FD35C0C29FF001C39FF00D55
-:102870001124E558FE4F418174132BC0408164132D
-:1028800028C04281411125C043815481481759070E
-:1028900010F441505109481B590B483C5105C8F4EC
-:1028A0008091B0018F7080618093B00186E0829F3B
-:1028B000F001839FF00D1124E058FE4F80818F704E
-:1028C000806180838BEA91E00E947C10CF910C9410
-:1028D000D8132F5F3F4F2770B8CFCF910895CF9275
-:1028E000DF92EF92FF920F931F93CF93DF93CDB7B9
-:1028F000DEB762970FB6F894DEBF0FBECDBF8C0176
-:1029000085E0F801DE011D9601900D928A95E1F7B0
-:10291000D8014C9111965C91119712966C91129777
-:102920001396ED90FC9014977091AB01E091AC017F
-:102930002091AE013091AF012115310531F0EF3F0B
-:1029400031F481E07F3F19F403C081E001C080E0F1
-:10295000B82FB170CB2E80FD6CC1D090AD01DD20C1
-:1029600009F4F5C0F091B001E216F30638F0C701A2
-:10297000821B930B883C910548F09BC020953095B5
-:102980002E0D3F1D283C310508F093C08F2F807F0E
-:1029900009F052C0E51314C0741312C0D62E611191
-:1029A0000FC0FF70F061F093B0010E94F9138BEA41
-:1029B00091E00E947C108091B001F80185836CC188
-:1029C000EF2831F05F3F31F481E04F3F19F403C04D
-:1029D00081E001C080E080FD03C081E0862701C066
-:1029E00080E0F82FF170FF2E80FF1CC080917901EC
-:1029F00020917A0136E0821709F428C190E0389FCF
-:102A0000F001399FF00D1124E558FE4F71815713E5
-:102A100006C07081471303C07281671303C001961B
-:102A20008770E9CFD62E662309F436C18091B001B4
-:102A300081608093B00153C0E51308C0741306C0D1
-:102A4000611104C0D8011596FC93AEC04D875E8716
-:102A50008D859E856A8B0E9494136A89882329F14B
-:102A6000D62E662311F12091B001822F82958F70AE
-:102A700090E002970CF460C08091AB019091AC01A2
-:102A800098878F831986FB86EA862C87CE01079666
-:102A900051C0E51731F14D875E878D859E856A8B24
-:102AA0000E9494136A8981112EC0C8010E947C1073
-:102AB000A4C08F2F807F69F77E2DF98AE88A8989E3
-:102AC0000E94B9138BEA91E00E947C10EBEAF1E0DE
-:102AD00086E0DF011D928A95E9F70E94F913D12C57
-:102AE000DBC07413D8CF6111D6CFD8011596FC93F3
-:102AF000C8010E947C10EBEAF1E086E0DF011D9244
-:102B00008A95E9F7C9C0D62E662379F22091B001E3
-:102B1000822F82958F7090E0029774F08091AB01C4
-:102B20009091AC019A8389831B82FD82EC822E8373
-:102B3000CE0101960E947C1086E0F801ABEAB1E07C
-:102B400001900D928A95E1F70E9407146FC0E2167A
-:102B5000F30628F0C701821B930B9C0104C020954B
-:102B600030952E0D3F1D283C310508F052C0D62E61
-:102B7000662309F49ACFE5132CC074132AC0809100
-:102B8000B00180FD1DC0982F92959F70C9F0D801AB
-:102B900015968C9315979F3039F09F5F9295907F93
-:102BA0008F70892B15968C93C8010E947C1086E04B
-:102BB000F801ABEAB1E001900D928A95E1F736C0D9
-:102BC00086E0F801ABEAB1E001900D928A95E1F759
-:102BD00063C04D875E878D859E850E9494138823F0
-:102BE00079F086E0F801ABEAB1E001900D928A95A8
-:102BF000E1F70E9407140E94F913DD24D3944CC01E
-:102C00008091B00181608093B001C8010E947C1066
-:102C100043C07E2DF98AE88A89890E94B913EBEABC
-:102C2000F1E086E0DF011D928A95E9F70E94F91331
-:102C300033C0662309F439CF4D875E878D859E8525
-:102C40000E949413882309F430CFCBCF4D875E8741
-:102C50008D859E850E94B718292F22952F7030E010
-:102C6000223031052CF49F7041F0811106C00CC058
-:102C7000243031052CF49F7049F4805E883020F0B8
-:102C8000C8010E947C10CF2CDC2C06C0D801159600
-:102C90009C91907F91F7F8CF8D2D62960FB6F894A6
-:102CA000DEBF0FBECDBFDF91CF911F910F91FF907F
-:102CB000EF90DF90CF9008951F93CF93DF93CDB720
-:102CC000DEB72C970FB6F894DEBF0FBECDBF4F8393
-:102CD000588769877A878B879C87CE0107960E94E1
-:102CE0006F148823C1F02F8138858A859B85892BB5
-:102CF00031F03F3F11F080E003C02F3FE1F781E06A
-:102D0000811147C04F81588569857A858B859C855F
-:102D10000E94C8133EC086E0FE013796DE01119680
-:102D200001900D928A95E1F7FF81E8854A855B85E0
-:102D30004115510531F0EF3F31F481E0FF3F19F4C7
-:102D400003C081E001C080E080FD23C020917A01B2
-:102D500030E0C9010196877099276091790170E090
-:102D600086179707F1F1F983EA835D834C8396E038
-:102D7000929FD001939FB00D1124A558BE4FFE0124
-:102D8000319601900D929A95E1F780937A010E9415
-:102D9000D81316E08091790190917A01891779F121
-:102DA000189FC001112485589E4F0E946F148823DC
-:102DB00031F1E09179011E9FF0011124E558FE4F99
-:102DC0004081518162817381848195810E94C81301
-:102DD0008091790190E0019687709927809379011D
-:102DE000D9CF0E94901310927A0110927901EBEAE8
-:102DF000F1E086E0DF011D928A95E9F7CACF2C96B3
-:102E00000FB6F894DEBF0FBECDBFDF91CF911F91FB
-:102E10000895EF92FF920F931F93CF93DF93FC01DE
-:102E2000009709F46FC0F12CEE24E394EF01219692
-:102E30008491843740F4843008F055C0813081F0AB
-:102E4000823021F15FC0853709F447C0C0F19CE7AB
-:102E5000980F903708F056C08F770E941F1045C01A
-:102E60008F010E5F1F4FFE01849190E2980F983002
-:102E700050F48770FE2D01C0FF0F8A95EAF78F2F5F
-:102E80000E948A1915C00E94570F14C08F010E5F4F
-:102E90001F4FFE01849190E2980F983068F487707C
-:102EA000FE2D01C0FF0F8A95EAF78F2F0E9490191F
-:102EB0000E94B319E80119C00E941F10FBCFCF0177
-:102EC0000296FE01C491CC2361F0EFE9FFE0319757
-:102ED000F1F700C00000C150F6CFCF010296FE010D
-:102EE000F490EC0102C00E94570F8F2D882341F00F
-:102EF000EFE9FFE03197F1F700C000008150F6CF15
-:102F0000FE0194CFDF91CF911F910F91FF90EF9031
-:102F1000089508956093B5017093B6018093B70149
-:102F20009093B8010C947E130F931F930091B501F9
-:102F30001091B6012091B7013091B801062B172BE3
-:102F4000282B392B0093B5011093B6012093B701BC
-:102F50003093B8011F910F910C947E130F931F9320
-:102F60000091B5011091B6012091B7013091B801DF
-:102F700006231723282339230093B5011093B601A4
-:102F80002093B7013093B8011F910F910C947E13D9
-:102F90000F931F930091B5011091B6012091B701D5
-:102FA0003091B80106271727282739270093B50144
-:102FB0001093B6012093B7013093B8011F910F9180
-:102FC0000C947E131092B1011092B2011092B301D1
-:102FD0001092B4010C947E1341E050E060E070E088
-:102FE00004C0440F551F661F771F8A95D2F7409380
-:102FF000B1015093B2016093B3017093B4010C948A
-:103000007E1341E050E060E070E004C0440F551FC3
-:10301000661F771F8A95D2F78091B1019091B20116
-:10302000A091B301B091B401842B952BA62BB72BA3
-:103030008093B1019093B201A093B301B093B40116
-:103040000C947E1341E050E060E070E004C0440F57
-:10305000551F661F771F8A95D2F74095509560954A
-:1030600070958091B1019091B201A091B301B0919E
-:10307000B40184239523A623B7238093B1019093B1
-:10308000B201A093B301B093B4010C947E1341E05C
-:1030900050E060E070E004C0440F551F661F771FCA
-:1030A0008A95D2F78091B1019091B201A091B301BC
-:1030B000B091B40184279527A627B7278093B10143
-:1030C0009093B201A093B301B093B4010C947E131A
-:1030D0000F931F930091B1011091B2012091B301A0
-:1030E0003091B401062B172B282B392B0093B101FB
-:1030F0001093B2012093B3013093B4011F910F914B
-:103100000C947E130F931F930091B1011091B201A3
-:103110002091B3013091B4010623172328233923CA
-:103120000093B1011093B2012093B3013093B40125
-:103130001F910F910C947E130F931F930091B10177
-:103140001091B2012091B3013091B40106271727E5
-:10315000282739270093B1011093B2012093B301BE
-:103160003093B4011F910F910C947E130895CF9268
-:10317000DF92EF92FF920F931F93CF93DF93EC01B7
-:10318000C090B501D090B601E090B701F090B801C1
-:103190008091B1019091B201A091B301B091B401BD
-:1031A000C82AD92AEA2AFB2A0FE110E0B701A601B2
-:1031B000002E04C076956795579547950A94D2F7E7
-:1031C00040FF07C0BE01802F0E94F90581309105A4
-:1031D00039F40150110950F7BE0180E00E94F90551
-:1031E000DF91CF911F910F91FF90EF90DF90CF90E3
-:1031F000089590910C019923D9F090910D01992394
-:10320000B9F0982F9695969596959F3088F5E09110
-:103210000E01F0910F01E90FF11D877021E030E000
-:1032200001C0220F8A95EAF78181822B818308955C
-:1032300040910E0150910F0120E030E09FEFFA0124
-:10324000E20FF31F6281681799F09F3F19F4611133
-:1032500001C0922F2F5F3F4F2E30310581F79F3FE6
-:1032600039F0FA01E90FF11D97FDFA95828308956F
-:10327000089590910C019923E1F090910D0199230B
-:10328000C1F0982F9695969596959F3020F5E091F0
-:103290000E01F0910F01E90FF11D877021E030E080
-:1032A00001C0220F8A95EAF7209581812823218386
-:1032B000089540910E0150910F0120E030E0FA0195
-:1032C000E20FF31F9281981301C012822F5F3F4FCC
-:1032D0002E303105A1F7089581E090E0E0910E01D4
-:1032E000F0910F01E80FF91F1082019680319105CE
-:1032F000A9F708959091CB01982B9093CB01089555
-:1033000080959091CB0198239093CB0108951092D2
-:10331000CB0108959091CA01982B9093CA0108950A
-:1033200080959091CA0198239093CA0108951092B4
-:10333000CA0108958093B90108951092B9010895C2
-:1033400040910E0150910F0120E030E080E0FA0141
-:10335000E20FF31F918191118F5F2F5F3F4F2F304D
-:103360003105A9F70895E0910E01F0910F018091C8
-:10337000CB018083E0910E01F0910F01808190914B
-:10338000CA01892B80839091B901992361F0E09162
-:103390000E01F0910F018081892B80830E94A0197A
-:1033A00081111092B90180910E0190910F010C943E
-:1033B0003B0ECF92DF92EF92FF920F931F936C011F
-:1033C000EE24FF24C114D104E104F10421F46B01C3
-:1033D0007C0180E001C080E133272F2D1E2D0D2DB3
-:1033E000011511052105310519F0885F6801790182
-:1033F00097018601A4E03695279517950795AA951C
-:10340000D1F7011511052105310519F08C5F68010F
-:10341000790197018601F2E0369527951795079572
-:10342000FA95D1F7011511052105310519F08E5FC7
-:1034300068017901B701A60176956795579547957B
-:10344000452B462B472B09F08F5F1F910F91FF9063
-:10345000EF90DF90CF9008958091E501843009F1DD
-:103460001092CD0120E488E190E00FB6F894A89581
-:10347000809360000FBE2093600083B7817F8460DB
-:1034800083BF83B7816083BF7894889583B78E7F2D
-:1034900083BF88E10FB6F8948093600010926000BB
-:1034A0000FBE089508950895CF930E94521A0E9466
-:1034B00023040E94531AC0E08C2F0E941005811132
-:1034C00005C0CF5FCE30C1F780E001C081E0CF9171
-:1034D00008950E9490130E942F0E0C94340782E0EE
-:1034E00084BD93E095BD9AEF97BD80936E000895DB
-:1034F0002FB7F8948091CE019091CF01A091D00187
-:10350000B091D1012FBF0895CF92DF92EF92FF9239
-:103510000F931F932FB7F8944091CE015091CF0194
-:103520006091D0017091D1012FBF6A017B01EE241F
-:10353000FF248C0120E030E0C016D106E206F3063D
-:1035400010F441505109481B590BCA011F910F91AA
-:10355000FF90EF90DF90CF9008951F920F920FB6DB
-:103560000F9211248F939F93AF93BF938091CE01BD
-:103570009091CF01A091D001B091D1010196A11DF0
-:10358000B11D8093CE019093CF01A093D001B09351
-:10359000D101BF91AF919F918F910F900FBE0F906E
-:1035A0001F9018950E94350BF8942FEF87EA91E64B
-:1035B000215080409040E1F700C0000087E090EB90
-:1035C000DC018093EE019093EF01A093F001B093A2
-:1035D000F1012CE088E190E00FB6F894A895809373
-:1035E00060000FBE20936000FFCFEF92FF920F9319
-:1035F0001F93CF93DF93E82EF12C8F2D0E9410059F
-:10360000C0E0D0E0082F10E098010C2E02C03595E4
-:1036100027950A94E2F720FD05C02196C630D10512
-:1036200099F709C06C2F7F2D80E00E94D705E81222
-:10363000F4CF81E005C0F3948EE0F812DECF80E095
-:10364000DF91CF911F910F91FF90EF900895CF934D
-:10365000C82F8CE20E94F51A882321F08C2FCF917D
-:103660000C94F51A80E0CF910895CF930E947A1CB4
-:10367000811102C00E94601CC5E6C15049F00E9441
-:1036800023048FE39CE90197F1F700C00000F5CF18
-:1036900089E20E94271B811111C18AE20E94271B27
-:1036A00081110E94601C85E00E94271B81110E94ED
-:1036B000D21A0E94851C8093CC0187E00E94271BB0
-:1036C000882399F18BE10E94271B882351F0909168
-:1036D000CC0191FB882780F921E0822780FB91F9BA
-:1036E00022C08EE00E94271B882351F09091CC01CC
-:1036F00092FB882780F921E0822780FB92F913C092
-:1037000080E10E94271B9091CC01882341F093FB1C
-:10371000882780F921E0822780FB93F904C0892F54
-:10372000809580FB90F99093CC018091CC010E9410
-:10373000891C0E94971C8093DF0180EE0E94271B4A
-:10374000882341F08091DF01982F909590FB80F9BC
-:103750008093DF0189E30E94271B882359F0909111
-:10376000DF0191FB882780F921E0822780FB91F916
-:103770009093DF0182EE0E94271B882359F09091DD
-:10378000DF0192FB882780F921E0822780FB92F9F4
-:103790009093DF0186EE0E94271B882359F09091B9
-:1037A000DF0193FB882780F921E0822780FB93F9D2
-:1037B0009093DF0183EE0E94271B882359F090919C
-:1037C000DF0194FB882780F921E0822780FB94F9B0
-:1037D0009093DF0185E30E94271B882359F0909185
-:1037E000DF0195FB882780F921E0822780FB95F98E
-:1037F0009093DF0181E30E94271B882359F0909169
-:10380000DF0196FB882780F921E0822780FB96F96B
-:103810009093DF0181E10E94271B882359F090914A
-:10382000DF0197FB882780F921E0822780FB97F949
-:103830009093DF018091DF010E949B1C8091DF014A
-:1038400087FB882780F980930D0187E20E94271B60
-:10385000C82F8EE10E94271B8111C2608FE10E9458
-:10386000271B8111C46080E20E94271B8111C86060
-:1038700081E20E94271B8111C06182E20E94271B06
-:103880008111C06283E20E94271B8111C06484E21F
-:103890000E94271B882311F0C06802C0CC2329F0A6
-:1038A0008C2F0E94921C6C2F03C00E948E1C682FCC
-:1038B00070E080E090E0CF910C948A17CF9108954A
-:1038C0006DEE7EEF80E090E00E94B62260E082E044
-:1038D00090E00E94A82260E083E090E00E94A8228D
-:1038E00060E084E090E00E94A82260E085E090E043
-:1038F0000C94A82280E090E00E94A22221E08D3E5C
-:103900009E4F09F020E0822F089582E090E00C9411
-:103910009A22682F82E090E00C94A82283E090E045
-:103920000C949A22682F83E090E00C94A82284E003
-:1039300090E00C949A22682F84E090E00C94A822E6
-:103940008091D40180FF0BC06091130185E0689FD6
-:10395000B001112475956795759567952AC081FF0B
-:1039600009C06091130185E0689FB001112475952D
-:1039700067951FC082FF07C06091130185E0689FB3
-:10398000B001112416C04091D5014423C9F06091C3
-:103990001201461788F72091130185E0289F9001B6
-:1039A0001124429FC001439F900D112470E00E949A
-:1039B0006C226038710540F46115710539F002C060
-:1039C00065E070E0862F08958FE7089581E00895FF
-:1039D0008091D40180FF08C06091110170E075955D
-:1039E00067957595679521C081FF06C060911101AB
-:1039F00070E07595679519C082FF04C06091110150
-:103A000070E010C08091D5018823C1F06091100151
-:103A10008617A0F790911101989FC001112470E0C2
-:103A20000E946C226038710528F46115710521F03F
-:103A3000862F08958FE7089581E0089561E070E092
-:103A4000F4CF803F21F40E94A01C819504C0813FE7
-:103A500029F40E94A01C8093D8010895823F21F48C
-:103A60000E94A01C819504C0833F29F40E94A01CE1
-:103A70008093D7010895893F19F40E94E81C05C07E
-:103A80008A3F31F40E94E81C81958093D901089502
-:103A90008B3F21F40E94E81C819504C08C3F29F4DF
-:103AA0000E94E81C8093DA010895843F21F48091FC
-:103AB000D601816017C0853F21F48091D6018260D4
-:103AC00011C0863F21F48091D60184600BC0873FEE
-:103AD00021F48091D601886005C0883F31F480913F
-:103AE000D60180618093D60108958D3F21F48091A5
-:103AF000D40181600BC08E3F21F48091D40182609B
-:103B000005C08F3F29F48091D40184608093D40153
-:103B10000895803F39F48091D80187FF6CC01092DE
-:103B2000D80169C0813F29F48091D8011816BCF3EF
-:103B300062C09091D701823F29F497FF5CC0109238
-:103B4000D70159C0833F19F41916CCF354C0893FEB
-:103B500041F48091D90118160CF04DC01092D90192
-:103B60004AC08A3F29F48091D90187FF44C0F6CF2B
-:103B70008B3F39F48091DA0187FF3DC01092DA0162
-:103B80003AC08C3F29F48091DA011816BCF333C097
-:103B9000843F21F48091D6018E7F17C0853F21F4A8
-:103BA0008091D6018D7F11C0863F21F48091D6018E
-:103BB0008B7F0BC0873F21F48091D601877F05C0A2
-:103BC000883F31F48091D6018F7E8093D60113C057
-:103BD0008D3F21F48091D4018E7F0BC08E3F21F464
-:103BE0008091D4018D7F05C08F3F29F48091D4014D
-:103BF0008B7F8093D4018091D70181110EC0809179
-:103C0000D80181110AC08091D901811106C080912B
-:103C1000DA01811102C01092D501089586ED91E07C
-:103C20000E94460E0E94781A9093D3018093D2018D
-:103C300008951F93CF93DF938091D2019091D30188
-:103C40000E94841A4091D501442321F0209114014F
-:103C500030E006C0209115015AE0259F9001112403
-:103C60008217930708F482C08091D7011091D80180
-:103C7000D091D901C091DA01811107C0111105C09D
-:103C8000D11103C0CC2309F471C04F3F19F04F5F2D
-:103C90004093D501181624F40E94A01C8093D701EC
-:103CA0008091D70187FF05C00E94A01C8195809359
-:103CB000D701111624F40E94A01C8093D801809192
-:103CC000D80187FF05C00E94A01C81958093D80170
-:103CD0006091D701662339F11091D801112319F1B0
-:103CE000772767FD7095872F972F0E947D2123E30B
-:103CF00033E343E35FE30E94E1210E944A216093A2
-:103D0000D701612F772767FD7095872F972F0E9426
-:103D10007D2123E333E343E35FE30E94E1210E943B
-:103D20004A216093D8011D1624F40E94E81C809358
-:103D3000D9018091D90187FF05C00E94E81C8195B7
-:103D40008093D9011C1624F40E94E81C8093DA01A8
-:103D50008091DA0187FF05C00E94E81C819580935D
-:103D6000DA01DF91CF911F910C940E1EDF91CF915C
-:103D70001F910895E6EDF1E085E0DF011D928A953F
-:103D8000E9F71092D5011092D4010895833081F1A2
-:103D900028F4813059F08230D1F00895853009F44B
-:103DA00049C0B8F1863009F456C008952091150134
-:103DB000862F90E0820F911D8F3F910520F4620FB6
-:103DC0006093150108958FEF809315010895209158
-:103DD0001401862F90E0820F911D8F3F910520F4F2
-:103DE000620F6093140108958FEF8093140108957A
-:103DF00020911301862F90E0820F911D8F3F910536
-:103E000020F4620F6093130108958FEF80931301E4
-:103E1000089520911201862F90E0820F911D8F3F0F
-:103E2000910520F4620F6093120108958FEF809343
-:103E30001201089520911101862F90E0820F911DAB
-:103E40008F3F910520F4620F6093110108958FEF69
-:103E500080931101089520911001862F90E0820F28
-:103E6000911D8F3F910520F4620F6093100108951A
-:103E70008FEF809310010895833011F128F4813081
-:103E800049F0823091F00895853081F120F186303B
-:103E9000C1F1089580911501681720F4861B809365
-:103EA0001501089510921501089580911401681765
-:103EB00020F4861B80931401089510921401089534
-:103EC00080911301681720F4861B809313010895D5
-:103ED00010921301089580911201681720F4861B37
-:103EE000809312010895109212010895809111019A
-:103EF000681720F4861B8093110108951092110118
-:103F0000089580911001681720F4861B809310019A
-:103F100008951092100108958D3109F442C020F5E2
-:103F20008E3009F479C070F4873009F45EC020F453
-:103F3000863009F442C033C08830D1F18B3009F4A7
-:103F4000A7C02DC0863109F4A3C038F4803109F42C
-:103F50006DC0813109F47BC022C0893109F498C059
-:103F60008B3109F44FC01BC0853309F479C048F484
-:103F7000873209F475C008F478C0893209F470C03A
-:103F80000EC0833438F48A3308F071C0883309F4E2
-:103F90007FC005C0833409F463C08834C1F080E079
-:103FA00008950E9404210E942F0E0E94340770C0C1
-:103FB0000E94851C0E94971C6BC08091CC01817F60
-:103FC0008E7F8093CC0181E08093DC0108950E9474
-:103FD00090132FEF83ED90E3215080409040E1F764
-:103FE00000C000000E94D21A53C09091CC01892FCA
-:103FF000817090FF03C0917F9E7F26C09160909357
-:10400000CC0146C09091CC0191FB882780F921E03A
-:10401000822780FB91F913C09091CC0192FB8827F5
-:1040200080F921E0822780FB92F909C09091CC01B0
-:1040300093FB882780F921E0822780FB93F99093F6
-:10404000CC01882329F191609093CC0108950E94BE
-:10405000901380910D0191E0892780930D0118C084
-:1040600061E070E080E090E00FC023EE01C027EC3B
-:10407000280F61E070E080E090E004C0660F771FD9
-:10408000881F991F2A95D2F70E948A170E949013C1
-:1040900081E0089580E0089580E00895CF93C82FCF
-:1040A0008091DC01813079F018F08230D1F184C048
-:1040B000A0910E01B0910F018C91813169F0823293
-:1040C00009F07CC009C0A0910E01B0910F018C9144
-:1040D000813111F0823249F48C2F0E944A208111E3
-:1040E0001DC08C2F0E948C1F1AC08C2F0E944C2048
-:1040F000811114C0C43179F048F4CB3079F0C0316B
-:1041000009F060C082E08093DC0108C0C93219F078
-:10411000C83321F057C01092DC0154C081E0817097
-:1041200053C0C93289F118F5C43171F1A8F4C73010
-:1041300009F046C08AE08093150194E19093140140
-:1041400093E0909313018093120188E08093110112
-:1041500088E28093100134C0CE51C63088F5EC2F30
-:10416000F0E0E65DFE4F80818093DB0129C0CE3414
-:10417000E9F020F4CB3421F56AE013C0C13579F0C1
-:10418000C235F1F461E00DC08091DB01882319F0A4
-:104190001092DB0115C081E08093DC0115C061E065
-:1041A00006C08091DB010E94C61E0AC06AE08091B1
-:1041B000DB010E943C1F04C01092DC0180E004C0BF
-:1041C00081E002C080E0ABCFCF910895E1E8F0E05C
-:1041D0008081886080838081816080838FB7F8943C
-:1041E00093E09093890090ED909388008FBF08959D
-:1041F000EFE6F0E08081826080830895EFE6F0E0F2
-:1042000080818D7F80830895EFE6F0E0808192E0E9
-:104210008927808308951F920F920FB60F92112461
-:104220002F933F934F935F936F937F938F939F93BE
-:10423000AF93BF93EF93FF938091DD019091DE01E7
-:1042400001969093DE018093DD01811103C082E02D
-:104250000E943407E091DE01E695E695F0E0E6572E
-:10426000FB4FE4918091DD018E1303C080E00E943A
-:104270003407FF91EF91BF91AF919F918F917F9103
-:104280006F915F914F913F912F910F900FBE0F90C3
-:104290001F90189504D06894B1118DC0089570D006
-:1042A00088F09F5790F0B92F9927B751A0F0D1F01F
-:1042B000660F771F881F991F1AF0BA95C9F712C0A9
-:1042C000B13081F077D0B1E0089574C0672F782FB6
-:1042D0008827B85F39F0B93FCCF386957795679515
-:1042E000B395D9F73EF490958095709561957F4F81
-:1042F0008F4F9F4F0895E89409C097FB3EF4909527
-:104300008095709561957F4F8F4F9F4F9923A9F0AE
-:10431000F92F96E9BB279395F6958795779567953D
-:10432000B795F111F8CFFAF4BB0F11F460FF1BC081
-:104330006F5F7F4F8F4F9F4F16C0882311F096E914
-:1043400011C0772321F09EE8872F762F05C06623C2
-:1043500071F096E8862F70E060E02AF09A95660F7B
-:10436000771F881FDAF7880F9695879597F9089534
-:1043700057FD9058440F551F59F05F3F71F0479516
-:10438000880F97FB991F61F09F3F79F087950895FB
-:10439000121613061406551FF2CF4695F1DF08C01A
-:1043A000161617061806991FF1CF86957105610537
-:1043B00008940895E894BB2766277727CB0197F9DF
-:1043C00008950BD078C069D028F06ED018F09523EE
-:1043D00009F05AC05FC01124EECFCADFA0F3959F49
-:1043E000D1F3950F50E0551F629FF001729FBB27DC
-:1043F000F00DB11D639FAA27F00DB11DAA1F649F88
-:104400006627B00DA11D661F829F2227B00DA11D3A
-:10441000621F739FB00DA11D621F839FA00D611DC0
-:10442000221F749F3327A00D611D231F849F600DE1
-:10443000211D822F762F6A2F11249F5750408AF01A
-:10444000E1F088234AF0EE0FFF1FBB1F661F771FA6
-:10445000881F91505040A9F79E3F510570F014C03D
-:10446000AACF5F3FECF3983EDCF38695779567958E
-:10447000B795F795E7959F5FC1F7FE2B880F911DC4
-:104480009695879597F9089597F99F6780E870E06A
-:1044900060E008959FEF80EC089500240A941616BA
-:1044A000170618060906089500240A941216130622
-:1044B000140605060895092E0394000C11F48823B0
-:1044C00052F0BB0F40F4BF2B11F460FF04C06F5FCC
-:1044D0007F4F8F4F9F4F089597FB072E16F4009440
-:1044E00007D077FD09D00E94862207FC05D03EF454
-:1044F000909581959F4F0895709561957F4F089590
-:10450000EE0FFF1F0590F491E02D0994AA1BBB1B31
-:1045100051E107C0AA1FBB1FA617B70710F0A61BC3
-:10452000B70B881F991F5A95A9F780959095BC01E4
-:10453000CD010895F999FECF92BD81BDF89A9927D2
-:1045400080B50895A8E1B0E042E050E00C94BD22AF
-:10455000262FF999FECF1FBA92BD81BD20BD0FB69F
-:10456000F894FA9AF99A0FBE019608950E94A8222B
-:10457000272F0C94A922DC01CB01FC01F999FECF75
-:1045800006C0F2BDE1BDF89A319600B40D924150DB
-:0A4590005040B8F70895F894FFCFEB
-:10459A0020023607C307A0076C0739070101BA01D1
-:1045AA0028080A03140A3F4D36394B04FE03C80390
-:1045BA008F0322033B0354036D0301020304050620
-:0445CA0007080900D5
+:100000000C945F040C94A3040C94A3040C94A30418
+:100010000C94A3040C94A3040C94A3040C94A304C4
+:100020000C94A3040C94A3040C94BC0D0C948E0E9D
+:100030000C94A3040C94A3040C94A3040C94A304A4
+:100040000C94A3040C9439230C94A3040C94A304DF
+:100050000C94A3040C94DB1C0C94A3040C94A30434
+:100060000C94A3040C94A3040C94A3040C94A30474
+:100070000C94A3040C94A3040C94A3040C94A30464
+:100080000C94A3040C94A3040C94A3040C94A30454
+:100090000C94A3040C94A3040C94A3040C94A30444
+:1000A0000C94A3040C94A3040C94A304F30E150F56
+:1000B0000010150F0010570F7A0F0010CF0FE20F2E
+:1000C000D612D61204130413461382138215821516
+:1000D0009A138215911491145C158215821570156E
+:1000E000000000810889248935812B850252E100B6
+:1000F000E00000001E00140004001D0000774E0008
+:100100001F001A0016001B00007F4C002000080092
+:1001100007000600E2002A0021001500090019006E
+:10012000E3004B00220017000A00050000004A000F
+:1001300029002F0000002B0200004D002D00300090
+:1001400000002B000000500023001C000B001100D9
+:1001500000004F00240018000D001000E7005200BE
+:1001600025000C000E003600E6002C0026001200D0
+:100170000F003700007F28002700130033003800ED
+:10018000007751002E8131853482E500E4000000C3
+:100190000100C300C2003900010000002900010075
+:1001A0000100010001000100010001000100010047
+:1001B0000100010001000100010001000100010037
+:1001C0000100010001000100010001000100010027
+:1001D0000100010000000100010001000000010019
+:1001E000000001000100010000000100000001000A
+:1001F00001000100010001000000010001000100F8
+:1002000001000100010001000100010001000100E6
+:1002100001000100010001000100010001000100D6
+:100220000100010001000100010001000100C30004
+:10023000C200390001000000C20005520252E10074
+:10024000010000003A001E022002220201005100BB
+:100250003B001F0221022302010028003C002F0264
+:1002600026022F0001002C003D0030022702300042
+:10027000010052003E00240235003502000050000B
+:100280000100360200002B0000004F000100370281
+:1002900000002B0200004A003F003102380031000C
+:1002A00000004D004000240021001E0027004B00EC
+:1002B0004100250022001F0037004C0042002600AC
+:1002C000230020002E002A004300380025022D00C4
+:1002D0002E024E00C20005520252E5002800000026
+:1002E000045205520852E100010000003A001E02CB
+:1002F00020022202010051003B001F0221022302C2
+:10030000010028003C002F0226022F0001002C00D3
+:100310003D00300227023000010052003E0024025E
+:1003200035003502000050000100360200002B00AD
+:1003300000004F000100370200002B0200004A00BD
+:100340003F0031023800310000004D004000240021
+:1003500021001E0027004B004100250022001F0045
+:1003600037004C0042002600230020002E002A0007
+:100370004300380025022D002E024E000452055283
+:100380000852E5002800000001000654C1003900B1
+:10039000010000002900010001000100010001002E
+:1003A0000100010001000100010001000100010045
+:1003B0000100010001000100010001000100010035
+:1003C0000100010001000100010001000000010026
+:1003D0000100010000000100000001000100010017
+:1003E0000000010000000100010001000100010007
+:1003F00000000100010001000100010001000100F6
+:1004000001000100010001000100010001000100E4
+:1004100001000100010001000100010001000100D4
+:100420000100010001000654C10039000100000074
+:10043000C30005520252E100A8000000440066001B
+:10044000A6000100AA00B50045000100F20001006D
+:10045000A90001006800F000F100F100F400B6000E
+:1004600069000100F3000100F500B4006A0001001A
+:10047000010001000000B8000100F9000000FA00CE
+:100480000000B9000100F9000000FA000000AC0013
+:100490006B004600530001000000AB006C004A00F6
+:1004A00050004D004900A9006D005200510051005C
+:1004B0004C00AE006E004B004F004E000100AD003E
+:1004C0006F00B100B30001000100AA00C300055293
+:1004D0000252E50001000000075208520000E1004E
+:1004E000A800000044006600A6000100AA00B500B4
+:1004F00045000100F2000100A90001006800F000C1
+:10050000F100F100F400B60069000100F300010001
+:10051000F500B4006A000100010001000000B8000D
+:100520000100F9000000FA000000B9000100F90024
+:100530000000FA000000AC006B0046005300010010
+:100540000000AB006C004A0050004D004900A900BB
+:100550006D005200510051004C00AE006E004B0087
+:100560004F004E000100AD006F00B100B30001006C
+:100570000100AA00075208520000E5000100000037
+:100580000100C10001003900010000002900010044
+:100590000100010001000100010001000100010053
+:1005A0000100010001000100010001000100010043
+:1005B0000100010001000100010001000100010033
+:1005C0000100010000000100010001000000010025
+:1005D0000000010001000100000001000000010016
+:1005E0000100010001000100000001000100010004
+:1005F00001000100010001000100010001000100F3
+:1006000001000100010001000100010001000100E2
+:100610000100010001000100010001000100C10012
+:100620000100390001000000C100010001000100CB
+:10063000010000002900010001000100010001008B
+:1006400001000100010001000100010001000100A2
+:100650000100010001000100010001000100010092
+:100660000100010001000100010001000000010083
+:100670000100010000000100000001000100010074
+:100680000000010000000100010001000100010064
+:100690000000010001000100010001000100010053
+:1006A0000100010001000100010001000100010042
+:1006B0000100010001000100010001000100010032
+:1006C00001000100C1000100010001000100000063
+:1006D00016034500720067006F0044006F00780049
+:1006E000200045005A000000160345007200670014
+:1006F0006F0044006F007800200045005A000000A1
+:100700000403090409026D00040100A0FA090400B1
+:10071000000103010100092111010001223F00072E
+:1007200005810308000A0904010001030102000910
+:100730002111010001224D000705820308000A096A
+:10074000040200010300000009211101000122360A
+:10075000000705830308000A0904030001030000E1
+:10076000000921110100012239000705840310004E
+:10077000011201100100000008EDFE071301000145
+:1007800002000105010906A101050719E029E71585
+:1007900000250195087501810205081901290595B3
+:1007A000057501910295017503910105071900294D
+:1007B0007715002501957875018102C00501098032
+:1007C000A101850216010026B7001A01002AB70010
+:1007D000751095018100C0050C0901A10185031662
+:1007E0000100269C021A01002A9C027510950181C5
+:1007F00000C005010902A1010901A10005091901B3
+:1008000029051500250195057501810295017503DE
+:1008100081010501093009311581257F950275088F
+:10082000810609381581257F950175088106050C1B
+:100830000A38021581257F950175088106C0C0051B
+:10084000010906A101050719E029E7150025019511
+:1008500008750181029501750881010508190129B2
+:10086000059505750191029501750391010507191B
+:100870000029FF150025FF950675088100C00000BE
+:10088000000000000000000000010204060A0F172B
+:10089000202C3A4A5D71879DB3C7DAE9F5FCFFFC6D
+:1008A000F5E9DAC7B39D87715D4A3A2C20170F0A24
+:1008B00006040201000000000000000000001124F6
+:1008C0001FBECFEFDAE0DEBFCDBF04B603FE24C00B
+:1008D0008091EF019091F001A091F101B091F201AE
+:1008E0008730904BA740B04BB9F41092EF011092B3
+:1008F000F0011092F1011092F20114BE84B7877FCB
+:1009000084BF88E10FB6F894809360001092600075
+:100910000FBEE0E0FFE3099511E0A0E0B1E0E6EFF3
+:10092000F9E402C005900D92A433B107D9F721E094
+:10093000A4E3B1E001C01D92AF3EB207E1F70E940F
+:10094000020B0C94F9240C94000061110BC0FC0103
+:100950008281882321F085EE0E94631103C085EE19
+:100960000E942B1280E090E008950895CF9360914B
+:10097000B1017091B2018091B3019091B4010E94D4
+:10098000071CC82F8130F9F08430E9F089EF8C0F13
+:100990008230C8F056985E9825982D9826982E9803
+:1009A00027982F980E943B1081FF02C0259A2D9A0C
+:1009B0008EEF8C0F823010F4269A2E9AC550C230DA
+:1009C00010F4279A2F9ACF9108950C94B604569854
+:1009D0005E9825982D9826982E9827982F988FEF17
+:1009E00090E0909389008093880090938B0080938F
+:1009F0008A0090938D0080938C00259A2D9A2FEF7A
+:100A000080E792E0215080409040E1F700C0000074
+:100A1000269A2E9A2FEF80E792E021508040904056
+:100A2000E1F700C00000279A2F9A2FEF80E792E0AD
+:100A3000215080409040E1F700C0000025982D989B
+:100A40002FEF80E792E0215080409040E1F700C016
+:100A5000000026982E982FEF80E792E021508040EA
+:100A60009040E1F700C0000027982F9856985E98B4
+:100A700025982D9826982E9827982F98089589EADA
+:100A80008093800089E08093810024982C983F987F
+:100A90008AB18F748AB96E98479A8BB1806B8BB983
+:100AA000769A0E94E7040C94B50480E280930001DA
+:100AB0008091340181110EC00E94A40581E08093D1
+:100AC00034012FEF83ED90E3215080409040E1F717
+:100AD00000C0000080E40E94AA05809300018111FB
+:100AE0002EC00E94D40580930001811128C00E946D
+:100AF000D40580930001811122C08FE30E94D405A8
+:100B00008093000181111BC00E94CC0580E40E94EB
+:100B1000AA0580930001811112C08CE00E94D405C7
+:100B20008093000181110BC00E94D40580930001C5
+:100B3000811105C08FE30E94D405809300010E94BB
+:100B4000CC058091000108951092B9008AE080934D
+:100B5000B800089594EA9093BC009091BC0097FF70
+:100B6000FCCF9091B900987F983021F0903111F02E
+:100B700081E008958093BB0084E88093BC0080915D
+:100B8000BC0087FFFCCF8091B900887F883111F0CD
+:100B9000803471F780E0089584E98093BC008091EF
+:100BA000BC0084FDFCCF08958093BB0084E8809353
+:100BB000BC008091BC0087FFFCCF9091B900987F6A
+:100BC00081E0983209F480E0089584E88093BC00C5
+:100BD0008091BC0087FFFCCF8091BB00089580917D
+:100BE0000001811115C080E40E94AA0580930001D4
+:100BF00081110CC082E10E94D40580930001811113
+:100C000005C08FEF0E94D405809300010E94CC059F
+:100C100084B1807F84B985B1807F85B98AB1837FB3
+:100C20008AB98BB1837F8BB93E98469808950E940C
+:100C30005505809300010E94EF0580B38C7080BB46
+:100C400081B3836F81BBE4E4F1E0A6E3B1E01192EC
+:100C50001D9281E0E235F807D1F70C943F05BF9271
+:100C6000CF92DF92EF92FF920F931F93CF93DF9378
+:100C700080910001882379F0809135018F5F809306
+:100C80003501811108C00E94550580930001811132
+:100C900002C00E94E70406E311E0C0E0D0E0DD24DA
+:100CA000D39482E0C82EEE24E394F12CC73000F5F3
+:100CB00080910001811162C080E40E94AA058093A6
+:100CC0000001811112C082E10E94D40580930001CD
+:100CD00081110BC0C7010C2E01C0880F0A94EAF7DE
+:100CE00080950E94D405809300010E94CC0546C0E7
+:100CF000CA30A1F028F4C83059F0C93061F005C0FD
+:100D0000CC3089F070F0CD3089F0209A289810C04E
+:100D1000219A29980DC0229A2A980AC0239A2B98C2
+:100D200007C0529A01C0539A5B9802C03E9A4698F7
+:100D3000E0EAEA95F1F78FB179995AC092E08170B3
+:100D40008D25892B7C9B02C090E001C094E0892B0B
+:100D50007D9B02C090E001C098E0892B7E9B02C081
+:100D600090E001C090E1892B9FB19095991F992740
+:100D7000991F9295990F907E892B0FC08091000149
+:100D800081114BC080E40E94AA0580930001882352
+:100D900089F1B12C0E94CC058B2DF8019081981718
+:100DA00019F08083C09201010E94EF0521960F5F28
+:100DB0001F4FCE30D10509F079CF809101018823F2
+:100DC00071F1815080930101882339F08FE99FE010
+:100DD0000197F1F700C0000022C0A4E4B1E0E6E30F
+:100DE000F1E081918D9391E0E434F907D1F717C0D8
+:100DF00090E0A5CF83E10E94D4058093000181118A
+:100E0000C8CF81E40E94AA05809300018111C1CF5F
+:100E10000E94E505B82EB094BDCF80E0BECF0E9401
+:100E2000E50481E0DF91CF911F910F91FF90EF904A
+:100E3000DF90CF90BF900895E82FF0E0EC5BFE4F7D
+:100E40008081089508958B3B910578F4883A910547
+:100E500040F5853A9105D0F48430910508F0B1C091
+:100E60008130910509F4ADC06BC0803E910508F456
+:100E700067C0883E910508F4A4C09C01205F310939
+:100E80002031310508F05CC090650895853A9105E0
+:100E900009F459C0863A910509F458C083E890E4F2
+:100EA0000895883A910509F454C0893A910509F4E6
+:100EB00053C08A3A910509F452C08B3A910509F45E
+:100EC00051C08C3A910509F450C08D3A910509F44E
+:100ED0004FC0803B910509F44EC08E3A910509F44C
+:100EE0004DC08F3A910509F44CC0813B910509F43E
+:100EF0004BC0823B910509F44AC0833B910509F43C
+:100F000049C0843B910509F448C0853B910509F42B
+:100F100047C0863B910509F446C0873B910509F41B
+:100F200045C0883B910509F444C0893B910509F40B
+:100F300043C08A3B910509F042C08AE296E40895D5
+:100F400080E090E0089581E890E4089582E890E4DC
+:100F5000089582EE94E4089589EE94E408958AEE6B
+:100F600094E4089585EB94E4089586EB94E4089561
+:100F700087EB94E408958CEC94E408958DEC94E46C
+:100F8000089583E895E408958AE895E4089582E950
+:100F900095E4089584E995E4089581E296E408953E
+:100FA00083E296E4089584E296E4089585E296E467
+:100FB000089586E296E4089587E296E4089580E035
+:100FC00094E40895089596E0799FF001112494E542
+:100FD000899FE00DF11D1124E60FF11DEE0FFF1F9B
+:100FE000E851FF4F859194910895880F991F805A79
+:100FF0009040FC01859194910895880F991F80522B
+:101000009F4FFC0185919491089526E0729FF00115
+:10101000112444E5849FE00DF11D1124E60FF11D1C
+:10102000EE0FFF1FE851FF4F25913491C9019A95AA
+:1010300081159F4110F4C9010895C901905281158D
+:10104000904128F4C9019F700E94FD070895C901CD
+:1010500090538115904120F4C9019927906C08950F
+:10106000211580E5380769F40E94A5159FEF24E358
+:101070004CE0915020404040E1F700C000000C944B
+:10108000001D213080E5380731F48091CD01816069
+:101090008093CD010895C90190558115904108F0C4
+:1010A00050C0832F99278F70992781309105D9F4EB
+:1010B000A9014370552702C0880F991F4A95E2F78E
+:1010C0009C68A90164E0440F551F6A95E1F7442725
+:1010D0005370842B952B73E0220F331F7A95E1F721
+:1010E000207633271DC08230910529F4922F88275E
+:1010F000816F906A089583309105A9F4A901437026
+:10110000552781E090E002C0880F991F4A95E2F7C9
+:101110009C6843E0220F331F4A95E1F7207E377029
+:10112000822B932B08950497F1F4A901437055275E
+:1011300081E090E002C0880F991F4A95E2F79A6813
+:10114000E8CFC90190578115904120F4C9019F70E3
+:1011500090620895C90190588115904120F4C90109
+:101160009F70906A0895203E3105E0F4203C3105DF
+:1011700058F52133310509F470C048F4293231059E
+:1011800009F464C02A32310509F46EC074C02933F1
+:101190003105F1F022383105D9F02533310509F454
+:1011A0004EC069C0233E310589F138F4203E310537
+:1011B000C1F0223E3105E1F05EC0263E310569F105
+:1011C000273E3105A9F157C0C9010E94F5070895CE
+:1011D0008091E00180FD02C081FF4DC080EE90E073
+:1011E0004BC08091E00180FFF9CF89E390E044C0DB
+:1011F0008091E00182FF0EC08091E00184FF03C076
+:1012000080E090E039C083EE90E036C08091E0014C
+:1012100082FFF2CF82EE90E02FC08091E00183FF49
+:101220000BC08091E00184FDEBCF87EE90E024C0FD
+:101230008091E00183FFF5CF86EE90E01DC08091A4
+:10124000E00185FF07C089E290E016C08091E001CF
+:1012500085FFF9CF85E390E00FC08091E00186FF24
+:1012600007C08AE290E008C08091E00186FFF9CFD4
+:1012700081E390E001C0C9010E9423070895089509
+:101280000C943F09809162010895CF93DF9300D0C1
+:101290001F92CDB7DEB72091E601243019F523E087
+:1012A00029839B838A832093E9008FEF9091E80044
+:1012B000815095FD06C095ED9A95F1F700008111DA
+:1012C000F5CF8091E80085FF0DC040E050E063E07D
+:1012D00070E0CE0101960E94AF0B8091E8008E77FE
+:1012E0008093E8000F900F900F90DF91CF910895B9
+:1012F000CF93DF9300D01F92CDB7DEB72091E601E8
+:10130000243021F522E029839B838A8383E0809324
+:10131000E9008FEF9091E800815095FD06C095EDB2
+:101320009A95F1F700008111F5CF8091E80085FFD3
+:101330000DC040E050E063E070E0CE0101960E94F5
+:10134000AF0B8091E8008E778093E8000F900F90AC
+:101350000F90DF91CF9108952091E6012430F1F4B0
+:1013600022E02093E9002FEF3091E800215035FD75
+:1013700006C035ED3A95F1F700002111F5CF209127
+:10138000E80025FF0BC040E050E065E070E00E94FF
+:10139000AF0B8091E8008E778093E8000895CF939B
+:1013A000DF93EC018091E601843009F046C0909112
+:1013B0000C019923D9F090910D019923B9F08093F4
+:1013C000E9008FEF9091E800815095FD06C095E10E
+:1013D0009A95F1F700008111F5CF8091E80085FF23
+:1013E0002CC040E050E060E170E017C081E08093E5
+:1013F000E9008FEF9091E800815095FD06C095EDD2
+:101400009A95F1F700008111F5CF8091E80085FFF2
+:1014100014C040E050E068E070E0CE010E94AF0BE5
+:101420008091E8008E778093E80080E1FE01A2E5DC
+:10143000B1E001900D928A95E1F7DF91CF91089587
+:101440008091E501811109C00E94410D0E949E0D0D
+:101450008091E20084608093E20008951092E5019B
+:10146000089508950C9426230E94971C0E942C2313
+:101470000E943B100C94400942E061EC81E00E9424
+:10148000BB0C42E061EC82E00E94BB0C42E061ECEC
+:1014900083E00E94BB0C42E161EC84E00C94BB0C45
+:1014A0008091E801833009F455C030F4813071F047
+:1014B000823009F48EC008958A3009F47AC08B30E6
+:1014C00009F460C0893009F09CC020C08091E70118
+:1014D000813A09F096C08091E800877F8093E80008
+:1014E0008091EB019091EC01892B21F060E080E08C
+:1014F00090E003C060E182E591E070E00E94F80BAB
+:101500008091E8008B778093E80008958091E7014F
+:10151000813209F076C08091EB019091EC01009747
+:1015200019F0039709F06DC08091E800877F8093E0
+:10153000E8008091E80082FD05C08091E6018111FC
+:10154000F8CF5FC08091F100809362018091E80044
+:101550008B7753C08091E701813A09F052C08091A6
+:10156000EB019091EC01892B09F04BC08091E800D0
+:10157000877F8093E8008091E80080FFFCCF809116
+:101580000C0136C08091E7018132D9F58091EB01E1
+:101590009091EC01892BA9F58091E800877F8093D9
+:1015A000E8000E94F00C8091E90180930C010C94FA
+:1015B000A5158091E701813221F58091E800877FB0
+:1015C0008093E8000E94F00C8091EA01809363010F
+:1015D00008958091E701813AA1F48091E800877F26
+:1015E0008093E8008091E80080FFFCCF8091630148
+:1015F0008093F1008091E8008E778093E8000C944E
+:10160000F00C089584B7877F84BF88E10FB6F89403
+:1016100080936000109260000FBE90E080E80FB6EB
+:10162000F89480936100909361000FBE0E948A102D
+:101630000E94410D0E949E0D8091E2008460809383
+:10164000E20078940E9419100E948C1082E091E0D0
+:101650000E9436100E9414238091E601853069F4BF
+:101660000E945A1C8091E4018823B1F30E94821CDD
+:10167000882391F30E94990BEFCF0E949210ECCF38
+:10168000292F332723303105A9F06CF4213031059F
+:1016900009F442C02230310509F043C08DE690E0E4
+:1016A00024E037E042C021323105C9F02232310551
+:1016B00019F137C099278130910541F082309105A9
+:1016C00041F0892B71F5E0E0F7E005C0E8EEF6E0C7
+:1016D00002C0E0EDF6E0849190E09F0126C0643006
+:1016E00000F5E62FF0E0EE0FFF1FEE5DFE4F2081CC
+:1016F000318189E090E019C0643098F4E62FF0E081
+:10170000DF01AA0FBB1FA65EBE4F2D913C91EA5E82
+:10171000FE4F808190E009C082E190E021E737E050
+:1017200004C080E090E020E030E0FA0131832083C3
+:10173000089580E189BD82E189BD09B400FEFDCF35
+:101740008091D8008F7D8093D8008091E0008260E6
+:101750008093E0008091E00081FDFCCF0895CF925E
+:10176000DF92EF92FF920F931F93CF93DF937C0151
+:101770008B01EA010E94110D811131C0209731F0D7
+:1017800088819981081B190BE80EF91EC12CD12CF8
+:101790000115110519F18091E80085FD14C08091B3
+:1017A000E8008E778093E800209741F08881998146
+:1017B0008C0D9D1D9983888385E011C00E94110DB9
+:1017C000882331F30CC0F70181917F018093F100F0
+:1017D00001501109FFEFCF1ADF0ADACF80E0DF9165
+:1017E000CF911F910F91FF90EF90DF90CF900895D0
+:1017F0002091ED013091EE012617370748F0611571
+:10180000710539F42091E8002E772093E80001C09B
+:10181000B901FC0120E061157105B9F18091E60183
+:10182000882309F440C0853009F43FC08091E80066
+:1018300083FD3DC08091E80082FF06C08091E800F2
+:1018400082FF26C080E008958091E80080FFE3CF0A
+:101850002091F3008091F20090E0922B61157105C8
+:1018600051F08830910538F421912093F1006150B6
+:1018700071090196F3CF21E0089709F020E08091EB
+:10188000E8008E778093E800C6CF2111C7CFD6CF6E
+:101890008091E601882339F0853039F08091E800A5
+:1018A00083FFCCCF04C082E0089583E0089581E0F7
+:1018B00008952091ED013091EE012617370748F089
+:1018C0006115710539F42091E8002E772093E80026
+:1018D00001C0B901FC0120E061157105C1F18091E1
+:1018E000E601882309F441C0853009F440C08091A5
+:1018F000E80083FD3EC08091E80082FF06C0809131
+:10190000E80082FF27C080E008958091E80080FF12
+:10191000E3CF2091F3008091F20090E0922B6115CB
+:10192000710559F08830910540F424912093F1001D
+:101930003196615071090196F2CF21E0089709F0C4
+:1019400020E08091E8008E778093E800C5CF2111D8
+:10195000C6CFD5CF8091E601882339F0853039F0A4
+:101960008091E80083FFCBCF04C082E0089583E03C
+:10197000089581E00895982F973058F59093E900E5
+:10198000981739F07091EC002091ED005091F00023
+:1019900003C0242F762F50E021FF19C03091EB00B7
+:1019A0003E7F3093EB003091ED003D7F3093ED00B2
+:1019B0003091EB0031603093EB007093EC0020939A
+:1019C000ED005093F0002091EE0027FF07C09F5FCD
+:1019D000D3CF8F708093E90081E0089580E008956F
+:1019E0008091E70187FD05C08091E80080FF0EC06F
+:1019F00012C08091E80082FD05C08091E60181114E
+:101A0000F8CF08958091E8008B7708C08091E601B7
+:101A10008111EACF08958091E8008E778093E800E5
+:101A200008958091E4009091E50045E62091EC0056
+:101A300020FF21C02091E80020FD21C02091E60177
+:101A4000222389F0253089F02091EB0025FD0FC07D
+:101A50002091E4003091E5002817390739F341500F
+:101A600041F0C901E3CF82E0089583E0089581E069
+:101A7000089584E008952091E80022FFDFCF80E000
+:101A800008950E94AF0D0E94B70DE0EEF0E0808156
+:101A900081608083E8EDF0E080818F77808319BCDE
+:101AA000A7EDB0E08C918E7F8C9380818F7E8083B8
+:101AB0001092E50108950F931F93CF93DF930E9437
+:101AC000AF0D0E94B70DC8EDD0E088818F77888375
+:101AD00088818068888388818F7D888319BC109273
+:101AE000E6011092E2011092E4011092E30100EE8F
+:101AF00010E0F80180818B7F8083888181608883FA
+:101B000042E060E080E00E94BB0CE1EEF0E080810A
+:101B10008E7F8083E2EEF0E080818160808380812F
+:101B200088608083F80180818E7F808388818061D6
+:101B30008883DF91CF911F910F910895E8EDF0E038
+:101B400080818F7E8083E7EDF0E0808181608083FB
+:101B500084E082BF81E08093E5010C945B0DE8EDA9
+:101B6000F0E080818E7F80831092E20008951092D1
+:101B7000DA001092E10008951F920F920FB60F92B3
+:101B800011242F933F934F935F936F937F938F9382
+:101B90009F93AF93BF93EF93FF938091E10082FFF8
+:101BA0000BC08091E20082FF07C08091E1008B7F33
+:101BB0008093E1000E9418108091DA0080FF1FC01E
+:101BC0008091D80080FF1BC08091DA008E7F8093C7
+:101BD000DA008091D90080FF0DC080E189BD82E1EB
+:101BE00089BD09B400FEFDCF81E08093E6010E942B
+:101BF000200A05C019BC1092E6010E942E0A8091AD
+:101C0000E10080FF19C08091E20080FF15C0809143
+:101C1000E2008E7F8093E2008091E20080618093F9
+:101C2000E2008091D80080628093D80019BC85E0E2
+:101C30008093E6010E94320A8091E10084FF30C067
+:101C40008091E20084FF2CC080E189BD82E189BDE2
+:101C500009B400FEFDCF8091D8008F7D8093D8001D
+:101C60008091E1008F7E8093E1008091E2008F7E81
+:101C70008093E2008091E20081608093E200809195
+:101C8000E201882311F084E007C08091E30087FF20
+:101C900002C083E001C081E08093E6010E94340A23
+:101CA0008091E10083FF29C08091E20083FF25C07D
+:101CB0008091E100877F8093E10082E08093E601DC
+:101CC0001092E2018091E1008E7F8093E10080918B
+:101CD000E2008E7F8093E2008091E2008061809339
+:101CE000E20042E060E080E00E94BB0C8091F000E6
+:101CF00088608093F0000E94310AFF91EF91BF91BC
+:101D0000AF919F918F917F916F915F914F913F9193
+:101D10002F910F900FBE0F901F9018951F920F924A
+:101D20000FB60F9211242F933F934F935F936F93AE
+:101D30007F938F939F93AF93BF93CF93EF93FF9333
+:101D4000C091E900CF708091EC001092E900809181
+:101D5000F000877F8093F00078940E94CA0E109262
+:101D6000E9008091F00088608093F000C093E90062
+:101D7000FF91EF91CF91BF91AF919F918F917F9103
+:101D80006F915F914F913F912F910F900FBE0F90E8
+:101D90001F9018951F93CF93DF93CDB7DEB7AA9707
+:101DA0000FB6F894DEBF0FBECDBFE7EEF1E0809135
+:101DB000F100819321E0EF3EF207C9F70E94500A3B
+:101DC0008091E80083FF1CC12091E7013091E80178
+:101DD000832F90E08A30910508F012C1FC01EA5A85
+:101DE000FF4F0C94AE24203881F0223809F008C14E
+:101DF0008091EB018F708093E9008091EB0085FB6F
+:101E0000882780F91092E90006C08091E301909143
+:101E1000E401911182609091E800977F9093E8002F
+:101E20008093F1001092F100C5C0822F8D7F09F0E0
+:101E3000E7C0222319F0223061F0E2C08091E9016D
+:101E4000813009F0DDC0333009F080E08093E40197
+:101E500028C08091E901811124C02091EB012F70ED
+:101E600009F4CEC02093E9008091EB0080FF19C0F7
+:101E70008091EB00333011F4806211C08061809357
+:101E8000EB0081E090E0022E01C0880F0A94EAF78F
+:101E90008093EA001092EA008091EB0088608093C2
+:101EA000EB001092E9008091E800877F86C0211145
+:101EB000A7C01091E9011F778091E3008078812B02
+:101EC0008093E3008091E800877F8093E8000E9480
+:101ED000F00C8091E80080FFFCCF8091E3008068E7
+:101EE0008093E300112311F083E001C082E080932E
+:101EF000E60186C02058223008F082C08091E901B6
+:101F00009091EA018C3D23E0920779F583E08A8382
+:101F10008AE289834FB7F894DE01139620E03EE011
+:101F200051E2E32FF0E050935700E49120FF03C00B
+:101F3000E295EF703F5FEF708E2F90E0EA3010F087
+:101F4000C79601C0C0968D939D932F5F243149F7AA
+:101F50004FBF8091E800877F8093E8006AE270E0DD
+:101F6000CE0101960E94F80B14C0AE014F5F5F4F87
+:101F70006091EB010E94400B009709F441C0209151
+:101F8000E800277F2093E800BC0189819A810E94A4
+:101F9000590C8091E8008B778093E80031C020389D
+:101FA00079F58091E800877F8093E8008091E201D5
+:101FB0008093F1008091E8008E778093E8000E9482
+:101FC000F00C1EC021111CC09091E9019230C0F4A8
+:101FD0008091E800877F8093E8009093E2010E945F
+:101FE000F00C8091E201811104C08091E30087FF31
+:101FF00002C084E001C081E08093E6010E943C0AB7
+:102000008091E80083FF0AC08091E800877F809379
+:10201000E8008091EB0080628093EB00AA960FB6F7
+:10202000F894DEBF0FBECDBFDF91CF911F91089511
+:102030000895CF938091E6018823B1F08091E90063
+:102040008F709091EC0090FF02C090E801C090E08A
+:10205000C92FC82B1092E9008091E80083FD0E94EF
+:10206000CA0ECF70C093E900CF9108959093690193
+:10207000809368010895E0916801F09169013097BB
+:1020800021F00190F081E02D099480E00895E09125
+:102090006801F0916901309721F00280F381E02D11
+:1020A00009940895E0916801F0916901309721F059
+:1020B0000480F581E02D0994089520916601309106
+:1020C00067018217930771F090936701809366010F
+:1020D000E0916801F0916901309721F00680F78165
+:1020E000E02D0994089520916401309165018217D3
+:1020F000930771F09093650180936401E09168010A
+:10210000F0916901309721F00084F185E02D099468
+:10211000089508950C9489100E949D1C0E94170632
+:102120000C94631DCF92DF92EF92FF920F931F9357
+:10213000CF93DF93CDB7DEB72B970FB6F894DEBF02
+:102140000FBECDBF0E942F063BE6E32E31E0F32EFB
+:1021500000E010E0C02E802F0E941C07F701D190F4
+:102160007F01D826B1F40F5F1F4F0E30110591F794
+:102170008FEF89838A831B820E94A61C8160782F3F
+:102180009D838C8349815A816B818D810E94351199
+:1021900041C09091CD0191FF04C08B870E9422071E
+:1021A0008B8520E030E04D2D50E0922FBA01022EB9
+:1021B00002C0759567950A94E2F760FF25C02E83EB
+:1021C000CF82EE24E394F12C02C0EE0CFF1C9A9512
+:1021D000E2F790E08E219F2121E0892B09F420E095
+:1021E00028870E94A61C8160782F9A8789874E8154
+:1021F0005F8168858A850E943511F801E559FE4F97
+:1022000080818E25808306C02F5F3F4F26303105A9
+:1022100061F6A9CF0E94472010916A010E943B10ED
+:102220001817A1F00E943B1080936A012B960FB6FD
+:10223000F894DEBF0FBECDBFDF91CF911F910F91FC
+:10224000FF90EF90DF90CF900C9440092B960FB643
+:10225000F894DEBF0FBECDBFDF91CF911F910F91DC
+:10226000FF90EF90DF90CF900895CF93DF93CDB79D
+:10227000DEB72B970FB6F894DEBF0FBECDBF4F83EE
+:10228000588769877A878B87DE01119686E0FD0182
+:1022900011928A95E9F785E0FE01379601900D923B
+:1022A0008A95E1F749815A816B817C818D819E817C
+:1022B0000E9471182B960FB6F894DEBF0FBECDBFEB
+:1022C000DF91CF910895CF93C82F882309F4C1C01F
+:1022D000823859F40E943B1081FDBBC089E30E9403
+:1022E0000E1B0E94D81B89E30CC0833879F40E942E
+:1022F0003B1080FDAEC083E50E940E1B0E94D81BE0
+:1023000083E50E944E1BCF910C94D81B843859F45E
+:102310000E943B1082FD9DC087E40E940E1B0E941C
+:10232000D81B87E4EECF8CEF8C0F813A48F48C2FCA
+:102330000E947C2281118DC08C2F0E940E1BE3CF46
+:1023400080E28C0F883048F4C77081E001C0880FAC
+:10235000CA95EAF70E948F1BD6CF8BE58C0F83308E
+:1023600078F4C53A29F0C63A31F482E890E005C025
+:1023700081E890E002C083E890E0CF910C945D107A
+:1023800088E58C0F833108F064C0C83A39F1C93A46
+:1023900041F1CA3A49F1CB3A51F1CC3A59F1CD3A2F
+:1023A00061F1C03B69F1CE3A71F1CF3A79F1C13BAD
+:1023B00081F1C23B89F1C33B91F1C43B99F1C53B2B
+:1023C000A1F1C63BA9F1C73BB1F1C83BB9F1C93B8B
+:1023D000C1F1CA3BC9F58AE292E038C082EE90E0D2
+:1023E00035C089EE90E032C08AEE90E02FC085EBD8
+:1023F00090E02CC086EB90E029C087EB90E026C0EF
+:102400008CEC90E023C08DEC90E020C083E891E05C
+:102410001DC08AE891E01AC082E991E017C084E902
+:1024200091E014C081E292E011C083E292E00EC01C
+:1024300084E292E00BC085E292E008C086E292E07E
+:1024400005C087E292E002C080E090E0CF910C945A
+:102450007310CF910895882309F44BC0823859F442
+:102460000E943B1081FF45C089E30E940E1B0E9421
+:10247000D81B89E30CC0833871F40E943B1080FFA5
+:1024800038C083E50E940E1B0E94D81B83E50E9482
+:102490004E1B0C94D81B843859F40E943B1082FFC9
+:1024A00028C087E40E940E1B0E94D81B87E4EFCF50
+:1024B0009CEF980F913A58F390E2980F983050F4AF
+:1024C000877091E001C0990F8A95EAF7892F0E94E1
+:1024D000951BDFCF9BE5980F933020F480E090E0D0
+:1024E0000C945D10885A833120F480E090E00C94C5
+:1024F00073100895882321F00E948F1B0C94D81B21
+:102500000895882321F00E94951B0C94D81B0895F0
+:10251000CF92DF92EF92FF920F931F93CF93DF93AF
+:10252000CDB7DEB728970FB6F894DEBF0FBECDBF8C
+:102530008C0185E0F801DE01119601900D928A95DB
+:10254000E1F7F80140813181F280258122952F70D9
+:1025500083819481892B31F03F3F31F481E04F3FFB
+:1025600019F403C081E001C080E080FDCBC2498343
+:102570003A8389819A812F830E94CC1A9E8388870F
+:102580000E94CB1A0E949E192F814E816885FF20E0
+:1025900029F00E94AC1B68854E812F81E42FE295C3
+:1025A000EF70F0E0E05AFF4F0C94AE24842F807F50
+:1025B000142F1F70882311F01295107FFF2059F0FF
+:1025C000112309F454C2812F68870E949F1B0E9427
+:1025D000D81B68854CC2862F0E942B12112309F448
+:1025E00091C2812F0E94A51B28960FB6F894DEBFDA
+:1025F0000FBECDBFDF91CF911F910F91FF90EF9054
+:10260000DF90CF900C94D81B342F307F842F8F70A5
+:10261000303211F08295807F662319F0613019F114
+:102620002BC0FF20B1F0222309F493C1213009F01F
+:1026300090C128960FB6F894DEBF0FBECDBFDF91D4
+:10264000CF911F910F91FF90EF90DF90CF900C945E
+:10265000BF1B222319F0213009F454C28E830E943B
+:10266000C21B8E8189C1FF2021F0223008F04AC2AE
+:1026700070C1211147C280C1FF2021F0222309F43B
+:1026800068C1F5C1222309F477C105C2242F26951C
+:102690002695237030E02115310521F021303105D8
+:1026A000C9F030C2FF2021F0862F942F937002C012
+:1026B00080E090E028960FB6F894DEBF0FBECDBF45
+:1026C000DF91CF911F910F91FF90EF90DF90CF900E
+:1026D0000C945D10FF2021F0862F942F937002C080
+:1026E00080E090E028960FB6F894DEBF0FBECDBF15
+:1026F000DF91CF911F910F91FF90EF90DF90CF90DE
+:102700000C947310862FFF2019F00E944F1F02C0F7
+:102710000E94B71F28960FB6F894DEBF0FBECDBF3C
+:10272000DF91CF911F910F91FF90EF90DF90CF90AD
+:102730000C943C20842F837009F076C0F110E2C124
+:10274000262F229526952770220F220F862F8F7015
+:10275000C82ED12CE12CF12C022E04C0CC0CDD1C97
+:10276000EE1CFF1C0A94D2F764FF10C06FE070E00B
+:1027700080E090E004C0660F771F881F991F2A959C
+:10278000D2F7609570958095909503C060E070E0F9
+:10279000CB01242F269526952370422F50E04230FE
+:1027A0005105D1F04330510559F16C297D298E290D
+:1027B0009F294130510541F128960FB6F894DEBFAC
+:1027C0000FBECDBFDF91CF911F910F91FF90EF9082
+:1027D000DF90CF900C94C3196C297D298E299F29F5
+:1027E00028960FB6F894DEBF0FBECDBFDF91CF9114
+:1027F0001F910F91FF90EF90DF90CF900C94DD1917
+:102800000E94C319C701B60128960FB6F894DEBF1F
+:102810000FBECDBFDF91CF911F910F91FF90EF9031
+:10282000DF90CF900C94A919FF2019F0842F8170AC
+:1028300001C08695882309F465C1262F2295269527
+:102840002770220F220F862F8F70C82ED12CE12CDB
+:10285000F12C022E04C0CC0CDD1CEE1CFF1C0A94D3
+:10286000D2F764FF10C06FE070E080E090E004C039
+:10287000660F771F881F991F2A95D2F7609570956C
+:102880008095909503C060E070E0CB01242F2695E1
+:1028900026952370422F50E042305105D1F043304D
+:1028A000510559F16C297D298E299F294130510507
+:1028B00041F128960FB6F894DEBF0FBECDBFDF9171
+:1028C000CF911F910F91FF90EF90DF90CF900C94DC
+:1028D000971A6C297D298E299F2928960FB6F8947E
+:1028E000DEBF0FBECDBFDF91CF911F910F91FF9043
+:1028F000EF90DF90CF900C94B11A0E94971AC70105
+:10290000B60128960FB6F894DEBF0FBECDBFDF919B
+:10291000CF911F910F91FF90EF90DF90CF900C948B
+:102920007D1A603FC9F118F4603E50F49BC0623FCD
+:1029300009F460C008F44AC0633F09F46FC092C054
+:10294000162F1F70842F8F71FF2099F00E94161A86
+:10295000812F28960FB6F894DEBF0FBECDBFDF9152
+:10296000CF911F910F91FF90EF90DF90CF900C943B
+:102970007A120E94371A812F28960FB6F894DEBF7C
+:102980000FBECDBFDF91CF911F910F91FF90EF90C0
+:10299000DF90CF900C948112FF20A1F02111B2C0E2
+:1029A000842F8F7128960FB6F894DEBF0FBECDBF6F
+:1029B000DF91CF911F910F91FF90EF90DF90CF901B
+:1029C0000C945C1A223008F09DC0EACFFF20A1F0E1
+:1029D000842F8F7128960FB6F894DEBF0FBECDBF3F
+:1029E000DF91CF911F910F91FF90EF90DF90CF90EB
+:1029F0000C94161AFF2061F3842F8F7128960FB65E
+:102A0000F894DEBF0FBECDBFDF91CF911F910F9124
+:102A1000FF90EF90DF90CF900C94371AFF2091F049
+:102A2000842F8F7128960FB6F894DEBF0FBECDBFEE
+:102A3000DF91CF911F910F91FF90EF90DF90CF909A
+:102A40000C94011A28960FB6F894DEBF0FBECDBFC6
+:102A5000DF91CF911F910F91FF90EF90DF90CF907A
+:102A60000C94F719FF20A1F0222309F4B1CF862F8F
+:102A700028960FB6F894DEBF0FBECDBFDF91CF9181
+:102A80001F910F91FF90EF90DF90CF900C94631106
+:102A9000222309F4B1CF862F28960FB6F894DEBF13
+:102AA0000FBECDBFDF91CF911F910F91FF90EF909F
+:102AB000DF90CF900C942B124F70C8010E94A50498
+:102AC00028960FB6F894DEBF0FBECDBFDF91CF9131
+:102AD0001F910F91FF90EF90DF90CF900C941E19F3
+:102AE0004F70C80128960FB6F894DEBF0FBECDBF59
+:102AF000DF91CF911F910F91FF90EF90DF90CF90DA
+:102B00000C94E20728960FB6F894DEBF0FBECDBF37
+:102B1000DF91CF911F910F91FF90EF90DF90CF90B9
+:102B200008950E94AC1B0E94BC1B0E94811B0E9446
+:102B3000D81B0E94E8200E943C2080E090E00E9488
+:102B40005D1080E090E00C9473100E949C1B0C942C
+:102B500091150E94CC1A292F22952F7030E02C302D
+:102B600031054CF42A3031056CF422503109223001
+:102B7000310590F407C02C30310551F02F3031056C
+:102B800039F00AC0803E10F0803F31F481E00895B2
+:102B900093FB882780F9089580E00895CF93DF9311
+:102BA00000D000D01F92CDB7DEB70F900F900F90DE
+:102BB0000F900F90DF91CF910895CF93DF9300D0C6
+:102BC00000D000D0CDB7DEB726960FB6F894DEBFA2
+:102BD0000FBECDBFDF91CF9108951F93CF93DF93A9
+:102BE000C091790116E080917A01C81799F0D0E080
+:102BF0001C9FF0011D9FF00D1124E558FE4F4081F0
+:102C0000518162817381848195810E94DD152196B5
+:102C1000C770E9CFDF91CF911F9108954091AB012B
+:102C20005091AC016091AD017091AE018091AF0106
+:102C30009091B0010C94DD15CF938091B0018295F5
+:102C40008F7009F05FC08091AD01882309F45AC0EC
+:102C500020917901A0917A016091AB017091AC0152
+:102C60008091AE019091AF0131E06F3F09F030E00B
+:102C7000B32FC6E02A1709F445C0009721F07F3F23
+:102C800021F44B2F03C041E001C040E030E040FDA3
+:102C900035C0C29FF001C39FF00D1124E558FE4FCF
+:102CA000418174132BC04081641328C042814111BB
+:102CB00025C0438154814817590710F441505109E8
+:102CC000481B590B483C5105C8F48091B0018F70E6
+:102CD00080618093B00186E0829FF001839FF00DB8
+:102CE0001124E058FE4F80818F70806180838BEAD1
+:102CF00091E00E948812CF910C94ED152F5F3F4F09
+:102D00002770B8CFCF910895CF92DF92EF92FF92C4
+:102D10000F931F93CF93DF93CDB7DEB762970FB6B4
+:102D2000F894DEBF0FBECDBF8C0185E0F801DE0157
+:102D30001D9601900D928A95E1F7D8014C9111965C
+:102D40005C91119712966C9112971396ED90FC90EE
+:102D500014977091AB01E091AC012091AE013091DC
+:102D6000AF012115310531F0EF3F31F481E07F3FB4
+:102D700019F403C081E001C080E0B82FB170CB2E00
+:102D800080FD6CC1D090AD01DD2009F4F5C0F0915B
+:102D9000B001E216F30638F0C701821B930B883CA2
+:102DA000910548F09BC0209530952E0D3F1D283C85
+:102DB000310508F093C08F2F807F09F052C0E513D2
+:102DC00014C0741312C0D62E61110FC0FF70F061D1
+:102DD000F093B0010E940E168BEA91E00E948812D7
+:102DE0008091B001F80185836CC1EF2831F05F3F1D
+:102DF00031F481E04F3F19F403C081E001C080E06D
+:102E000080FD03C081E0862701C080E0F82FF170CB
+:102E1000FF2E80FF1CC08091790120917A0136E05D
+:102E2000821709F428C190E0389FF001399FF00D16
+:102E30001124E558FE4F7181571306C07081471366
+:102E400003C07281671303C001968770E9CFD62E45
+:102E5000662309F436C18091B00181608093B0018E
+:102E600053C0E51308C0741306C0611104C0D80133
+:102E70001596FC93AEC04D875E878D859E856A8BC7
+:102E80000E94A9156A89882329F1D62E662311F19B
+:102E90002091B001822F82958F7090E002970CF400
+:102EA00060C08091AB019091AC0198878F831986A7
+:102EB000FB86EA862C87CE01079651C0E51731F1D3
+:102EC0004D875E878D859E856A8B0E94A9156A89CC
+:102ED00081112EC0C8010E948812A4C08F2F807F4C
+:102EE00069F77E2DF98AE88A89890E94CE158BEAD6
+:102EF00091E00E948812EBEAF1E086E0DF011D928A
+:102F00008A95E9F70E940E16D12CDBC07413D8CF36
+:102F10006111D6CFD8011596FC93C8010E94881282
+:102F2000EBEAF1E086E0DF011D928A95E9F7C9C07E
+:102F3000D62E662379F22091B001822F82958F7070
+:102F400090E0029774F08091AB019091AC019A836C
+:102F500089831B82FD82EC822E83CE0101960E9422
+:102F6000881286E0F801ABEAB1E001900D928A95F3
+:102F7000E1F70E941C166FC0E216F30628F0C701A5
+:102F8000821B930B9C0104C0209530952E0D3F1D94
+:102F9000283C310508F052C0D62E662309F49ACF9A
+:102FA000E5132CC074132AC08091B00180FD1DC0B0
+:102FB000982F92959F70C9F0D80115968C9315970C
+:102FC0009F3039F09F5F9295907F8F70892B159677
+:102FD0008C93C8010E94881286E0F801ABEAB1E048
+:102FE00001900D928A95E1F736C086E0F801ABEAD0
+:102FF000B1E001900D928A95E1F763C04D875E873D
+:103000008D859E850E94A915882379F086E0F801B8
+:10301000ABEAB1E001900D928A95E1F70E941C168F
+:103020000E940E16DD24D3944CC08091B0018160C3
+:103030008093B001C8010E94881243C07E2DF98A96
+:10304000E88A89890E94CE15EBEAF1E086E0DF018B
+:103050001D928A95E9F70E940E1633C0662309F483
+:1030600039CF4D875E878D859E850E94A91588235F
+:1030700009F430CFCBCF4D875E878D859E850E942A
+:10308000CC1A292F22952F7030E0223031052CF4F4
+:103090009F7041F0811106C00CC0243031052CF422
+:1030A0009F7049F4805E883020F0C8010E94881229
+:1030B000CF2CDC2C06C0D80115969C91907F91F7FF
+:1030C000F8CF8D2D62960FB6F894DEBF0FBECDBF40
+:1030D000DF91CF911F910F91FF90EF90DF90CF90F4
+:1030E00008951F93CF93DF93CDB7DEB72C970FB61C
+:1030F000F894DEBF0FBECDBF4F83588769877A87AC
+:103100008B879C87CE0107960E9484168823C1F086
+:103110002F8138858A859B85892B31F03F3F11F0BF
+:1031200080E003C02F3FE1F781E0811147C04F816C
+:10313000588569857A858B859C850E94DD153EC002
+:1031400086E0FE013796DE01119601900D928A9578
+:10315000E1F7FF81E8854A855B854115510531F02E
+:10316000EF3F31F481E0FF3F19F403C081E001C07B
+:1031700080E080FD23C020917A0130E0C9010196F2
+:10318000877099276091790170E086179707F1F1B0
+:10319000F983EA835D834C8396E0929FD001939FED
+:1031A000B00D1124A558BE4FFE01319601900D922D
+:1031B0009A95E1F780937A010E94ED1516E08091CF
+:1031C000790190917A01891779F1189FC001112432
+:1031D00085589E4F0E948416882331F1E091790131
+:1031E0001E9FF0011124E558FE4F408151816281FC
+:1031F0007381848195810E94DD158091790190E031
+:1032000001968770992780937901D9CF0E94A515DF
+:1032100010927A0110927901EBEAF1E086E0DF0189
+:103220001D928A95E9F7CACF2C960FB6F894DEBFA7
+:103230000FBECDBFDF91CF911F910895EF92FF9206
+:103240000F931F93CF93DF93FC01009709F46FC096
+:10325000F12CEE24E394EF0121968491843740F41D
+:10326000843008F055C0813081F0823021F15FC098
+:10327000853709F447C0C0F19CE7980F903708F0F4
+:1032800056C08F770E942B1245C08F010E5F1F4FD3
+:10329000FE01849190E2980F983050F48770FE2DD3
+:1032A00001C0FF0F8A95EAF78F2F0E94AF1B15C050
+:1032B0000E94631114C08F010E5F1F4FFE018491A5
+:1032C00090E2980F983068F48770FE2D01C0FF0FD0
+:1032D0008A95EAF78F2F0E94B51B0E94D81BE80140
+:1032E00019C00E942B12FBCFCF010296FE01C491A0
+:1032F000CC2361F0EFE9FFE03197F1F700C0000067
+:10330000C150F6CFCF010296FE01F490EC0102C04D
+:103310000E9463118F2D882341F0EFE9FFE0319780
+:10332000F1F700C000008150F6CFFE0194CFDF918D
+:10333000CF911F910F91FF90EF90089508956093A2
+:10334000B5017093B6018093B7019093B8010C94C6
+:1033500091150F931F930091B5011091B601209123
+:10336000B7013091B801062B172B282B392B00936E
+:10337000B5011093B6012093B7013093B8011F91A6
+:103380000F910C9491150F931F930091B50110911B
+:10339000B6012091B7013091B801062317232823E5
+:1033A00039230093B5011093B6012093B7013093F0
+:1033B000B8011F910F910C9491150F931F930091D9
+:1033C000B5011091B6012091B7013091B8010627DF
+:1033D0001727282739270093B5011093B6012093AA
+:1033E000B7013093B8011F910F910C949115109271
+:1033F000B1011092B2011092B3011092B4010C9479
+:10340000911541E050E060E070E004C0440F551FAA
+:10341000661F771F8A95D2F74093B1015093B2018E
+:103420006093B3017093B4010C94911541E050E0A6
+:1034300060E070E004C0440F551F661F771F8A9537
+:10344000D2F78091B1019091B201A091B301B091F6
+:10345000B401842B952BA62BB72B8093B1019093AD
+:10346000B201A093B301B093B4010C94911541E063
+:1034700050E060E070E004C0440F551F661F771FE6
+:103480008A95D2F740955095609570958091B101DD
+:103490009091B201A091B301B091B401842395231E
+:1034A000A623B7238093B1019093B201A093B301F7
+:1034B000B093B4010C94911541E050E060E070E0ED
+:1034C00004C0440F551F661F771F8A95D2F780915D
+:1034D000B1019091B201A091B301B091B4018427E0
+:1034E0009527A627B7278093B1019093B201A093A7
+:1034F000B301B093B4010C9491150F931F930091F5
+:10350000B1011091B2012091B3013091B401062BA9
+:10351000172B282B392B0093B1011093B201209364
+:10352000B3013093B4011F910F910C9491150F9337
+:103530001F930091B1011091B2012091B30130911C
+:10354000B40106231723282339230093B1011093D4
+:10355000B2012093B3013093B4011F910F910C94E9
+:1035600091150F931F930091B1011091B201209119
+:10357000B3013091B4010627172728273927009374
+:10358000B1011093B2012093B3013093B4011F91A4
+:103590000F910C9491150895CF92DF92EF92FF92C4
+:1035A0000F931F93CF93DF93EC01C090B501D090A0
+:1035B000B601E090B701F090B8018091B10190910F
+:1035C000B201A091B301B091B401C82AD92AEA2A64
+:1035D000FB2A0FE110E0B701A601002E04C076958A
+:1035E0006795579547950A94D2F740FF07C0BE01EB
+:1035F000802F0E9405088130910539F4015011098E
+:1036000050F7BE0180E00E940508DF91CF911F9125
+:103610000F91FF90EF90DF90CF90089590910C0163
+:103620009923D9F090910D019923B9F0982F96958F
+:10363000969596959F3088F5E0910E01F0910F01D7
+:10364000E90FF11D877021E030E001C0220F8A955B
+:10365000EAF78181822B8183089540910E01509178
+:103660000F0120E030E09FEFFA01E20FF31F6281CB
+:10367000681799F09F3F19F4611101C0922F2F5FD5
+:103680003F4F2E30310581F79F3F39F0FA01E90FA6
+:10369000F11D97FDFA9582830895089590910C018C
+:1036A0009923E1F090910D019923C1F0982F9695FF
+:1036B000969596959F3020F5E0910E01F0910F01BF
+:1036C000E90FF11D877021E030E001C0220F8A95DB
+:1036D000EAF72095818128232183089540910E01E6
+:1036E00050910F0120E030E0FA01E20FF31F9281C8
+:1036F000981301C012822F5F3F4F2E303105A1F782
+:10370000089581E090E0E0910E01F0910F01E80F43
+:10371000F91F1082019680319105A9F708959091C3
+:10372000CC01982B9093CC01089580959091CC0179
+:1037300098239093CC0108951092CC010895909114
+:10374000CB01982B9093CB01089580959091CB015C
+:1037500098239093CB0108951092CB0108959091F6
+:10376000CA01982B9093CA01089580959091CA013F
+:1037700098239093CA0108951092CA0108958093E6
+:10378000B90108951092B901089540910E01509128
+:103790000F0120E030E080E0FA01E20FF31F918199
+:1037A00091118F5F2F5F3F4F2F303105A9F708959B
+:1037B000E0910E01F0910F018091CC018083E091A6
+:1037C0000E01F0910F0180819091CB01892B8083B4
+:1037D000E0910E01F0910F0180819091CA01892B37
+:1037E00080839091B901992361F0E0910E01F091ED
+:1037F0000F018081892B80830E94C51B811110924B
+:10380000B90180910E0190910F010C944710CF9255
+:10381000DF92EF92FF920F931F936C01EE24FF242F
+:10382000C114D104E104F10421F46B017C0180E0B6
+:1038300001C080E133272F2D1E2D0D2D01151105FF
+:103840002105310519F0885F68017901970186012A
+:10385000A4E03695279517950795AA95D1F70115F8
+:1038600011052105310519F08C5F68017901970177
+:103870008601F2E03695279517950795FA95D1F7C9
+:10388000011511052105310519F08E5F68017901D7
+:10389000B701A6017695679557954795452B462B19
+:1038A000472B09F08F5F1F910F91FF90EF90DF90F2
+:1038B000CF9008958091E601843009F11092CE01F5
+:1038C00020E488E190E00FB6F894A895809360001A
+:1038D0000FBE2093600083B7817F846083BF83B76E
+:1038E000816083BF7894889583B78E7F83BF88E19A
+:1038F0000FB6F89480936000109260000FBE089598
+:1039000008950895CF930E94801C0E942F060E9464
+:10391000811CC0E08C2F0E941C07811105C0CF5F65
+:10392000CE30C1F780E001C081E0CF9108950E94C0
+:10393000A5150E943B100C94400982E084BD93E0E1
+:1039400095BD9AEF97BD80936E0008952FB7F894B8
+:103950008091CF019091D001A091D101B091D2017D
+:103960002FBF0895CF92DF92EF92FF920F931F9394
+:103970002FB7F8944091CF015091D0016091D101BF
+:103980007091D2012FBF6A017B01EE24FF248C01CC
+:1039900020E030E0C016D106E206F30610F44150F4
+:1039A0005109481B590BCA011F910F91FF90EF90CD
+:1039B000DF90CF9008951F920F920FB60F921124AF
+:1039C0008F939F93AF93BF938091CF019091D0013C
+:1039D000A091D101B091D2010196A11DB11D80939A
+:1039E000CF019093D001A093D101B093D201BF91A8
+:1039F000AF919F918F910F900FBE0F901F901895D0
+:103A00000E94410DF8942FEF87EA91E62150804003
+:103A10009040E1F700C0000087E090EBDC0180936C
+:103A2000EF019093F001A093F101B093F2012CE02B
+:103A300088E190E00FB6F894A895809360000FBEDF
+:103A400020936000FFCFEF92FF920F931F93CF93CD
+:103A5000DF93E82EF12C8F2D0E941C07C0E0D0E0F0
+:103A6000082F10E098010C2E02C0359527950A9476
+:103A7000E2F720FD05C02196C630D10599F709C0AF
+:103A80006C2F7F2D80E00E94E307E812F4CF81E0E5
+:103A900005C0F3948EE0F812DECF80E0DF91CF9185
+:103AA0001F910F91FF90EF900895CF93C82F8CE254
+:103AB0000E94231D882321F08C2FCF910C94231D6D
+:103AC00080E0CF910895CF930E94A81E811102C07B
+:103AD0000E948E1EC5E6C15049F00E942F068FE35A
+:103AE0009CE90197F1F700C00000F5CF89E20E9440
+:103AF000551D811111C18AE20E94551D81110E943C
+:103B00008E1E85E00E94551D81110E94001D0E949D
+:103B1000B31E8093CD0187E00E94551D882399F143
+:103B20008BE10E94551D882351F09091CD0191FBAE
+:103B3000882780F921E0822780FB91F922C08EE05E
+:103B40000E94551D882351F09091CD0192FB88274A
+:103B500080F921E0822780FB92F913C080E10E9466
+:103B6000551D9091CD01882341F093FB882780F962
+:103B700021E0822780FB93F904C0892F809580FB88
+:103B800090F99093CD018091CD010E94B71E0E94C3
+:103B9000C51E8093E00180EE0E94551D882341F0F0
+:103BA0008091E001982F909590FB80F98093E0013F
+:103BB00089E30E94551D882359F09091E00191FB03
+:103BC000882780F921E0822780FB91F99093E0011A
+:103BD00082EE0E94551D882359F09091E00192FBDE
+:103BE000882780F921E0822780FB92F99093E001F9
+:103BF00086EE0E94551D882359F09091E00193FBB9
+:103C0000882780F921E0822780FB93F99093E001D7
+:103C100083EE0E94551D882359F09091E00194FB9A
+:103C2000882780F921E0822780FB94F99093E001B6
+:103C300085E30E94551D882359F09091E00195FB82
+:103C4000882780F921E0822780FB95F99093E00195
+:103C500081E30E94551D882359F09091E00196FB65
+:103C6000882780F921E0822780FB96F99093E00174
+:103C700081E10E94551D882359F09091E00197FB46
+:103C8000882780F921E0822780FB97F99093E00153
+:103C90008091E0010E94C91E8091E00187FB882786
+:103CA00080F980930D0187E20E94551DC82F8EE197
+:103CB0000E94551D8111C2608FE10E94551D811126
+:103CC000C46080E20E94551D8111C86081E20E949B
+:103CD000551D8111C06182E20E94551D8111C06293
+:103CE00083E20E94551D8111C06484E20E94551D2B
+:103CF000882311F0C06802C0CC2329F08C2F0E94C9
+:103D0000C01E6C2F03C00E94BC1E682F70E080E0B4
+:103D100090E0CF910C949F19CF9108956DEE7EEFB6
+:103D200080E090E00E94E42460E082E090E00E9465
+:103D3000D62460E083E090E00E94D62460E084E036
+:103D400090E00E94D62460E085E090E00C94D624B8
+:103D500080E090E00E94D02421E08D3E9E4F09F04B
+:103D600020E0822F089582E090E00C94C824682F10
+:103D700082E090E00C94D62483E090E00C94C82478
+:103D8000682F83E090E00C94D62484E090E00C94BB
+:103D9000C824682F84E090E00C94D6248091D5014B
+:103DA00080FF0BC06091130185E0689FB001112472
+:103DB00075956795759567952AC081FF09C06091D3
+:103DC000130185E0689FB0011124759567951FC0A8
+:103DD00082FF07C06091130185E0689FB001112444
+:103DE00016C04091D6014423C9F0609112014617D4
+:103DF00088F72091130185E0289F90011124429FAC
+:103E0000C001439F900D112470E00E949A246038F5
+:103E1000710540F46115710539F002C065E070E08C
+:103E2000862F08958FE7089581E008958091D50148
+:103E300080FF08C06091110170E0759567957595D8
+:103E4000679521C081FF06C06091110170E07595F2
+:103E5000679519C082FF04C06091110170E010C025
+:103E60008091D6018823C1F0609110018617A0F7D8
+:103E700090911101989FC001112470E00E949A2432
+:103E80006038710528F46115710521F0862F0895B9
+:103E90008FE7089581E0089561E070E0F4CF803FFE
+:103EA00021F40E94CE1E819504C0813F29F40E9416
+:103EB000CE1E8093D9010895823F21F40E94CE1E28
+:103EC000819504C0833F29F40E94CE1E8093D801BF
+:103ED0000895893F19F40E94161F05C08A3F31F4E6
+:103EE0000E94161F81958093DA0108958B3F21F47B
+:103EF0000E94161F819504C08C3F29F40E94161F52
+:103F00008093DB010895843F21F48091D701816083
+:103F100017C0853F21F48091D701826011C0863F90
+:103F200021F48091D70184600BC0873F21F48091F8
+:103F3000D701886005C0883F31F48091D701806146
+:103F40008093D70108958D3F21F48091D501816040
+:103F50000BC08E3F21F48091D501826005C08F3F58
+:103F600029F48091D50184608093D5010895803F24
+:103F700039F48091D90187FF6CC01092D90169C0D2
+:103F8000813F29F48091D9011816BCF362C0909149
+:103F9000D801823F29F497FF5CC01092D80159C024
+:103FA000833F19F41916CCF354C0893F41F4809132
+:103FB000DA0118160CF04DC01092DA014AC08A3F9F
+:103FC00029F48091DA0187FF44C0F6CF8B3F39F4A2
+:103FD0008091DB0187FF3DC01092DB013AC08C3F2E
+:103FE00029F48091DB011816BCF333C0843F21F41F
+:103FF0008091D7018E7F17C0853F21F48091D70132
+:104000008D7F11C0863F21F48091D7018B7F0BC03B
+:10401000873F21F48091D701877F05C0883F31F425
+:104020008091D7018F7E8093D70113C08D3F21F4FB
+:104030008091D5018E7F0BC08E3F21F48091D501F8
+:104040008D7F05C08F3F29F48091D5018B7F8093B0
+:10405000D5018091D80181110EC08091D9018111C3
+:104060000AC08091DA01811106C08091DB018111C3
+:1040700002C01092D601089587ED91E00E9452107F
+:104080000E94A61C9093D4018093D30108951F939E
+:10409000CF93DF938091D3019091D4010E94B21C01
+:1040A0004091D601442321F02091140130E006C054
+:1040B000209115015AE0259F900111248217930742
+:1040C00008F482C08091D8011091D901D091DA0111
+:1040D000C091DB01811107C0111105C0D11103C0CE
+:1040E000CC2309F471C04F3F19F04F5F4093D601C4
+:1040F000181624F40E94CE1E8093D8018091D80116
+:1041000087FF05C00E94CE1E81958093D8011116AD
+:1041100024F40E94CE1E8093D9018091D90187FF9B
+:1041200005C00E94CE1E81958093D9016091D8016F
+:10413000662339F11091D901112319F1772767FD11
+:104140007095872F972F0E94AB2323E333E343E33C
+:104150005FE30E940F240E9478236093D801612FAF
+:10416000772767FD7095872F972F0E94AB2323E356
+:1041700033E343E35FE30E940F240E9478236093BC
+:10418000D9011D1624F40E94161F8093DA01809134
+:10419000DA0187FF05C00E94161F81958093DA011E
+:1041A0001C1624F40E94161F8093DB018091DB0112
+:1041B00087FF05C00E94161F81958093DB01DF9168
+:1041C000CF911F910C943C20DF91CF911F910895C6
+:1041D000E7EDF1E085E0DF011D928A95E9F71092A5
+:1041E000D6011092D5010895833081F128F48130F1
+:1041F00059F08230D1F00895853009F449C0B8F102
+:10420000863009F456C0089520911501862F90E05C
+:10421000820F911D8F3F910520F4620F609315016D
+:1042200008958FEF80931501089520911401862F32
+:1042300090E0820F911D8F3F910520F4620F6093F3
+:10424000140108958FEF80931401089520911301B4
+:10425000862F90E0820F911D8F3F910520F4620F11
+:104260006093130108958FEF8093130108952091B7
+:104270001201862F90E0820F911D8F3F910520F44F
+:10428000620F6093120108958FEF809312010895D9
+:1042900020911101862F90E0820F911D8F3F910593
+:1042A00020F4620F6093110108958FEF8093110144
+:1042B000089520911001862F90E0820F911D8F3F6D
+:1042C000910520F4620F6093100108958FEF8093A1
+:1042D00010010895833011F128F4813049F08230C3
+:1042E00091F00895853081F120F18630C1F1089573
+:1042F00080911501681720F4861B8093150108959D
+:1043000010921501089580911401681720F4861BFE
+:10431000809314010895109214010895809113015F
+:10432000681720F4861B80931301089510921301DF
+:10433000089580911201681720F4861B8093120162
+:10434000089510921201089580911101681720F4C8
+:10435000861B809311010895109211010895809198
+:104360001001681720F4861B8093100108951092A5
+:10437000100108958D3109F442C020F58E3009F402
+:1043800079C070F4873009F45EC020F4863009F4F7
+:1043900042C033C08830D1F18B3009F4A7C02DC0A2
+:1043A000863109F4A3C038F4803109F46DC081313D
+:1043B00009F47BC022C0893109F498C08B3109F41B
+:1043C0004FC01BC0853309F479C048F4873209F423
+:1043D00075C008F478C0893209F470C00EC0833407
+:1043E00038F48A3308F071C0883309F47FC005C0FF
+:1043F000833409F463C08834C1F080E008950E94DA
+:1044000032230E943B100E94400970C00E94B31EDC
+:104410000E94C51E6BC08091CD01817F8E7F8093ED
+:10442000CD0181E08093DD0108950E94A5152FEF55
+:1044300083ED90E3215080409040E1F700C0000000
+:104440000E94001D53C09091CD01892F817090FF73
+:1044500003C0917F9E7F26C091609093CD0146C09E
+:104460009091CD0191FB882780F921E0822780FB84
+:1044700091F913C09091CD0192FB882780F921E03A
+:10448000822780FB92F909C09091CD0193FB882788
+:1044900080F921E0822780FB93F99093CD01882356
+:1044A00029F191609093CD0108950E94A515809106
+:1044B0000D0191E0892780930D0118C061E070E043
+:1044C00080E090E00FC023EE01C027EC280F61E0F0
+:1044D00070E080E090E004C0660F771F881F991F8E
+:1044E0002A95D2F70E949F190E94A51581E0089590
+:1044F00080E0089580E00895CF93C82F8091DD017A
+:10450000813079F018F08230D1F184C0A0910E0191
+:10451000B0910F018C91813169F0823209F07CC039
+:1045200009C0A0910E01B0910F018C91813111F061
+:10453000823249F48C2F0E94782281111DC08C2F69
+:104540000E94BA211AC08C2F0E947A22811114C0B5
+:10455000C43179F048F4CB3079F0C03109F060C053
+:1045600082E08093DD0108C0C93219F0C83321F020
+:1045700057C01092DD0154C081E0817053C0C93230
+:1045800089F118F5C43171F1A8F4C73009F046C0BB
+:104590008AE08093150194E19093140193E0909345
+:1045A00013018093120188E08093110188E28093C7
+:1045B000100134C0CE51C63088F5EC2FF0E0E65D36
+:1045C000FE4F80818093DC0129C0CE34E9F020F4D5
+:1045D000CB3421F56AE013C0C13579F0C235F1F46E
+:1045E00061E00DC08091DC01882319F01092DC019C
+:1045F00015C081E08093DD0115C061E006C08091A7
+:10460000DC010E94F4200AC06AE08091DC010E9473
+:104610006A2104C01092DD0180E004C081E002C084
+:1046200080E0ABCFCF910895E1E8F0E08081886031
+:1046300080838081816080838FB7F89493E090932A
+:10464000890090ED909388008FBF0895EFE6F0E029
+:104650008081826080830895EFE6F0E080818D7F25
+:1046600080830895EFE6F0E0808192E089278083DF
+:1046700008951F920F920FB60F9211242F933F931C
+:104680004F935F936F937F938F939F93AF93BF935A
+:10469000EF93FF938091DE019091DF01019690935B
+:1046A000DF018093DE01811103C082E00E94400996
+:1046B000E091DF01E695E695F0E0E258F74FE491EE
+:1046C0008091DE018E1303C080E00E944009FF91BB
+:1046D000EF91BF91AF919F918F917F916F915F917A
+:1046E0004F913F912F910F900FBE0F901F901895F3
+:1046F00004D06894B1118DC0089570D088F09F5790
+:1047000090F0B92F9927B751A0F0D1F0660F771F1D
+:10471000881F991F1AF0BA95C9F712C0B13081F0FD
+:1047200077D0B1E0089574C0672F782F8827B85FDD
+:1047300039F0B93FCCF3869577956795B395D9F75E
+:104740003EF490958095709561957F4F8F4F9F4F68
+:104750000895E89409C097FB3EF490958095709574
+:1047600061957F4F8F4F9F4F9923A9F0F92F96E9BD
+:10477000BB279395F695879577956795B795F11132
+:10478000F8CFFAF4BB0F11F460FF1BC06F5F7F4FCF
+:104790008F4F9F4F16C0882311F096E911C07723E1
+:1047A00021F09EE8872F762F05C0662371F096E8EA
+:1047B000862F70E060E02AF09A95660F771F881FB9
+:1047C000DAF7880F9695879597F9089557FD9058D1
+:1047D000440F551F59F05F3F71F04795880F97FBC5
+:1047E000991F61F09F3F79F087950895121613067F
+:1047F0001406551FF2CF4695F1DF08C016161706AE
+:104800001806991FF1CF86957105610508940895E2
+:10481000E894BB2766277727CB0197F908950BD03B
+:1048200078C069D028F06ED018F0952309F05AC0EE
+:104830005FC01124EECFCADFA0F3959FD1F3950F8F
+:1048400050E0551F629FF001729FBB27F00DB11D14
+:10485000639FAA27F00DB11DAA1F649F6627B00DA4
+:10486000A11D661F829F2227B00DA11D621F739F8D
+:10487000B00DA11D621F839FA00D611D221F749F9B
+:104880003327A00D611D231F849F600D211D822FE2
+:10489000762F6A2F11249F5750408AF0E1F0882329
+:1048A0004AF0EE0FFF1FBB1F661F771F881F915036
+:1048B0005040A9F79E3F510570F014C0AACF5F3F4A
+:1048C000ECF3983EDCF3869577956795B795F79569
+:1048D000E7959F5FC1F7FE2B880F911D96958795F1
+:1048E00097F9089597F99F6780E870E060E0089570
+:1048F0009FEF80EC089500240A94161617061806F8
+:104900000906089500240A941216130614060506D3
+:104910000895092E0394000C11F4882352F0BB0F64
+:1049200040F4BF2B11F460FF04C06F5F7F4F8F4FC7
+:104930009F4F089597FB072E16F4009407D077FD3C
+:1049400009D00E94B42407FC05D03EF490958195CF
+:104950009F4F0895709561957F4F0895EE0FFF1F4B
+:104960000590F491E02D0994AA1BBB1B51E107C0EF
+:10497000AA1FBB1FA617B70710F0A61BB70B881FEF
+:10498000991F5A95A9F780959095BC01CD0108957E
+:10499000F999FECF92BD81BDF89A992780B5089507
+:1049A000A8E1B0E042E050E00C94EB24262FF99906
+:1049B000FECF1FBA92BD81BD20BD0FB6F894FA9A02
+:1049C000F99A0FBE019608950E94D624272F0C94C1
+:1049D000D724DC01CB01FC01F999FECF06C0F2BD62
+:1049E000E1BDF89A319600B40D9241505040B8F7AD
+:0649F0000895F894FFCFCA
+:1049F60020024209CF09AC09780945090101BA012B
+:104A060028080A03140A3F4D36393F08F207BC0747
+:104A1600830716072F0748076107010203040506E7
+:044A26000708090074
:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md
index 1cfea06dd..f100dd1c5 100644
--- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md
+++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md
@@ -1,9 +1,75 @@
-# The Ordinary Layout, a familiar and powerful layout
+# The Ordinary Layout, a familiar and powerful layout #
-The Ordinary Layout is intended to be unremarkably mundane and remarkably useful. This layout maintains most key positions from common QWERTY keyboards and features enhanced Symbol and Media layers compared to the default Ergodox EZ layout.
+The Ordinary Layout is intended to be unremarkably mundane and remarkably useful. This layout maintains most key positions from common QWERTY keyboards, and it features enhanced Symbol and Media layers compared to the default Ergodox EZ layout.
-Full details about the rationale behind this layout [are available](http://nicholas.rinard.us/2016/03/ergodox-ez-layout.html).
+The Ordinary Layout is supposed to look mostly like a normal keyboard, except in the ways that the Ergodox key arrangement is unique. The thumbs are responsible for space, enter, plus both forward and backward delete; with only a couple exceptions, all other keys are in the same place they are found on traditional keyboards.
+
+Nicholas Keene
+ordinarylayout@nicholaskeene.com
+no rights reserved, use for any purposes, credit me if you are a nice person
+
+## The Base Layout ##
+
+* The light blue keys are modifiers: traditional Control, Option, and Command keys, plus Hyper and Meh
+* The dark blue keys are Shift keys: Capitals Shift (traditional shift), Symbol Shift, and Media Shift; plus a Shift Lock key
+* Several dark blue keys double for entry of characters which would typically be in those locations
+* The turquoise keys are text navigation and manipulation
+* The red keys is Escape and it is always found in that location no matter what
![Ordinary base layout](ordinary-base.png)
+
+This layout puts the modifier keys along the bottom of the keyboard where they are on most keyboards. They are in the regular order, with the addition of Hyper and Meh keys. On the outside edges are the Shift keys. The traditional shift key is called Capitals Shift and it is in the normal location. Above that are Symbols Shift and Media Shift. Each Shift key momentarily switches the layout to that layer, and if you use the Shift Lock button you can lock the layout to that layer.
+
+Touch typists will also find tilde, tab, equals/plus, slash/pipe, and quote/double-quote sharing space on those Shift keys where they would probably be on a common keyboard. Other than the turquoise keys the only buttons which move to new locations are the Brackets and Dash and Escape. Most touch typists dont touch-type brackets or dash anyway so only Escape really requires retraining of muscle memory, and see below for the Special Escape Sequence.
+
+The four big turquoise keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me! I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another.
+
+The Forward Tab and Backward Tab keys are in their locations mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code.
+
+## The Symbols Layer ##
+
+* The light green keys are the eponymous symbols
+* The bright green keys are F-Keys
+* The dark green keys constitute a number pad
+* The turquoise keys are the *reverse* of the turquoise keys on the base layer
+
![Ordinary symbol layout](ordinary-symbol.png)
+
+The Ergodox EZ ships with the "Coder Layer" which I like to call the Symbols layer. There are some significant improvements in The Ordinary Layout over the default layout.
+
+The symbol keys are mostly the same as on the default layout, which did a good job in this regard, but with a few enhancements:
+
+* Angle brackets on this layer mean that curly, square, and angle brackets are all available on different layers of the same two buttons. Also, they mean that all kinds of brackets, including parentheses, are available on both the Base and Symbols layers.
+* The slash, backslash, and pipe characters are grouped together as a memory aid.
+* The & and | symbols are juxtaposed as a memory aid
+
+The number pad area here, in green, includes all four arithmetic operations in the same order found on most number pads and features an Enter key. The keycodes emitted here are normal numeric keycodes, not the number-pad specific keycodes emitted by most number pads, because this layout does not use a Num Lock key to switch the buttons between numeric keycodes and navigational keycodes. See the explanation in The Media Layout section about navigation using these same buttons.
+
+Finally, consider the turquoise text-nav keys. Here in the Symbols layer, these are *reversed* from the base layer, with most keys mirrored, but the Delete keys shifted to maintain the directional significance of their arrangement. This is powerful! Often I find myself using the mouse with my right hand, and the left hand needs to press Enter. Instead of reaching the left hand over to the right side of the keyboard, now I simply tap Symbols to reverse the yellow keys, and Enter is right where it should be.
+
+## The Media Layer ##
+
+* The dark orange keys on the left move the mouse cursor
+* The dark orange keys on the right move the text cursor
+* The light orange keys are for scrolling and paging
+* The bright green keys are more F-keys
+* The dark yellow keys signal Web and Audio applications
+* The light yellow keys signal the operating system
+
![Ordinary media layout](ordinary-media.png)
+
+This layer was inspired by the Media layer on the Ergodox EZ but takes it farther. The Fingerworks TouchStream keyboard had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents.
+
+Moreover, the orange keys on the right overlay the numberpad from the Symbols Layer, such that in the Media Layer the same keys can be used as if they were a number pad in navigational mode (Num Lock off). For instance, in traditional number pads the '3' key became 'Page Down', and so it is here. This means a user can do text navigation without moving either hand.
+
+## Switching Between Layers ##
+
+The three Shift keys correspond to three logical layers on top of the ever-present base layer, and are represented in the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. Shift keys work in the expected way: press them and the keys shift to that layer; release them and the keys shift back to the base layer. The Ordinary Layout also features a Shift Lock key to keep a layer active indefinitely. Hold down the Shift Lock key then press any Shift key to lock to that layer. Or, hold down the Shift key and press the Shift Lock key; either way works. To revert to the base layer, use the Shift Lock key again in combination with the Shift key.
+
+This layout attempts to treat the Capitals Shift layer the same as the other two Shift layers, but internally they are different which causes some inconsistencies. For instance, it is possible to switch from any layer to any other layer, and to lock to any layer, *except* it is not possible to go from Media to Symbols. You must exit the Media layer before engaging the Symbols layer. Also, the Caps Lock feature must be triggered by first pressing the Shift Lock key then a Capitals Shift key; it doesn't work if you press the Shift key first (instead you get the secondary symbol associated with the Shift Lock button).
+
+## Special Escape Sequence ##
+
+In the Ordinary Layout, the most unsatisfying key location is the Escape key which rightly belongs segregated on its own way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location and the nearest one, in the top left corner, was assigned to the tilde button which is traditionally found in that location. The Escape key is important so it features prominently on the other top corner on the left side of the keyboard, and is always there in all layers. Nevertheless, alas, it isn't Ordinary to put the escape in that different corner!
+
+That tilde key has a second function as the Shift Lock key and that makes possible a special feature. To make this layout as Ordinary as possible, the Escape key can *also* be accessed by pressing Shift Lock then the 1 button right next to it. This easy gesture is a way to partially maintain the ease of flicking your wrist to the left and tapping Escape. This gesture works in all layers.
diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c
index b31d0edcd..dffcb21da 100644
--- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c
+++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c
@@ -13,9 +13,11 @@
#define M_CTRL_CMDV 1
#define M_CTRL_CMDC 2
#define M_MEH_SH_ACUT 3
-#define M_DE_PLUS_CTRLALT 12
-#define M_DE_CIRC_CTRLCMD 13
+#define M_DE_OSX_PLUS_CTRLALT 12
+#define M_DE_OSX_CIRC_CTRLCMD 13
#define M_TOGGLE_5 14
+#define M_CTL_SFT_HASH 15
+#define M_LGUI_SHFT 16
#define SM_SMILE 4
#define SM_SMIRK 5
@@ -30,19 +32,19 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | ESC | 1 | 2 | 3 | 4 | 5 |CMD-V | |CMD-C | 6 | 7 | 8 | 9 | 0 | ß |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | LALT | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/RALT|
- * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------|
- * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * |</L1| ^° |AltShf| Left | Right| | Up | Down | CMD-SHIFT | + | #/L1 |
- * `----------------------------------' `----------------------------------'
+ * ,-----------------------------------------------------. ,--------------------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 |CTL_SFT/#| |CTL_SFT/#| 6 | 7 | 8 | 9 | 0 | ß |
+ * |--------+------+------+------+------+----------------| |---------+------+------+------+------+------+--------|
+ * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | LALT | A | S | D | F | G |---------| |---------| H | J | K | L | ö | ä/RALT|
+ * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------|
+ * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift |
+ * `--------+------+------+------+------+----------------' `-------------+------+------+------+------+--------'
+ * |</L1| ^°/CTRL_CMD | +/CTRL_ALT | UP | DOWN| | Left | Right | CMD-SHFT| ALT-SHIFT | +/L1 |
+ * `------------------------------------------' `---------------------------------------------'
* ,-------------. ,---------------.
- * | MDIA | Meh | | Hyper| NUM |
+ * |`/Meh | Media| | NUM | ´/Hyper |
* ,------|------|------| |------+--------+------.
* | | | Home | | PgUp | | |
* | Back-| Del |------| |------| Enter | Space|
@@ -53,21 +55,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Otherwise, it needs KC_*
[BASE] = KEYMAP( // layer 0 : default
// left hand
- KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, M(M_CTRL_CMDV),
- KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI,
- KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G,
- KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT,
- LT(SYMB,DE_LESS), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), LALT(KC_LSFT), LGUI(KC_LSFT),
- M(M_MEH_SH_ACUT), TG(2),
+ KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(M_CTL_SFT_HASH),
+ KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI,
+ KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G,
+ KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT,
+ LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), KC_UP, KC_DOWN,
+ M(M_MEH_SH_ACUT), TG(MDIA),
KC_HOME,
KC_BSPC,KC_DEL, LT(SMLY,KC_END),
// right hand
- M(M_CTRL_CMDC), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS,
- KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UE,
- DE_H, DE_J, DE_K, DE_L, DE_OE, ALT_T(DE_AE),
- KC_RALT, DE_N, DE_M, DE_COMM,DE_DOT, CTL_T(DE_MINS), KC_RSFT,
- KC_LEFT, KC_UP,KC_DOWN,KC_RIGHT, LT(SYMB,DE_HASH),
- TG(4), ALL_T(DE_ACUT),
+ M(M_CTL_SFT_HASH), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS,
+ KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE,
+ DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE),
+ KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM,DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT,
+ KC_LEFT, KC_RIGHT,LGUI(KC_LSFT),LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS),
+ TG(NUMB), ALL_T(DE_OSX_ACUT),
KC_PGUP,
KC_PGDN,KC_ENT, KC_SPC
),
@@ -76,42 +78,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | | L5 | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | < | > | ! | ? | | | | | \ | [ | ] | | | # | F12 |
+ * | | < | > | ! | ? | | | | | \ | [ | ] | < | > | ! |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | |
+ * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | # |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | ^ | % | | | ~ | | | | & | < | > | " | ' | ? |
+ * | | | ^ | % | | | ~ | | | | | | ~ | ^ | UP | | $ |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | | . | ! | |
+ * | | | | | | | ' | LEFT| DOWN | RIGHT | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
- * | | | | | |
+ * | | | | F13 | F12 |
* ,------|------|------| |------+------+------.
- * | | | | | | | |
+ * | | | | | F14 | | |
* | | |------| |------| | |
- * | | | | | | | |
+ * | | | | | F15 | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = KEYMAP(
// left hand
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- KC_TRNS,DE_LESS,DE_MORE,DE_EXLM,DE_QST, KC_TRNS,KC_TRNS,
- KC_TRNS,DE_HASH,DE_DLR, DE_BSLS,DE_SLSH,KC_DOT,
- KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,DE_PIPE,DE_TILD,KC_TRNS,
+ KC_TRNS,DE_OSX_LESS,DE_OSX_MORE,DE_OSX_EXLM,DE_OSX_QST, KC_TRNS,KC_TRNS,
+ KC_TRNS,DE_OSX_HASH,DE_OSX_DLR, DE_OSX_BSLS,DE_OSX_SLSH,KC_DOT,
+ KC_TRNS,KC_TRNS,DE_OSX_LESS,DE_OSX_PERC,DE_OSX_PIPE,DE_OSX_TILD,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_DEL,KC_TRNS,
// right hand
- M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12,
- DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS,
- KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST,
- KC_TRNS,KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
+ M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM,
+ DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, LALT(KC_8), LALT(KC_9), DE_OSX_HASH,
+ KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, DE_OSX_CIRC, KC_UP, DE_OSX_MINS, LSFT(KC_4),
+ DE_OSX_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS,
+ KC_F13, KC_F12,
+ KC_F14,
+ KC_F15, KC_TRNS, KC_TRNS
),
/* Keymap 2: Media and mouse keys
*
@@ -135,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
-KEYMAP(
+[MDIA] = KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
@@ -177,7 +179,7 @@ KEYMAP(
* | | | | | | | |
* `--------------------' `----------------------'
*/
-KEYMAP(
+[SMLY] = KEYMAP(
KC_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,
@@ -197,7 +199,7 @@ KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS
),
//number pad
-KEYMAP(
+[NUMB] = KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
@@ -209,9 +211,9 @@ KEYMAP(
// 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, LSFT(KC_RBRC), KC_F12,
- KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_MINS,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_OSX_MINS,
KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
- KC_0,KC_DOT, KC_0, DE_EQL, KC_TRNS,
+ KC_0,KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
@@ -238,7 +240,7 @@ KEYMAP(
* | | | F4 | | | | |
* `--------------------' `----------------------'
*/
-KEYMAP(
+[EGOS] = KEYMAP(
KC_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_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -308,11 +310,30 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (timer_elapsed(start) > 150){
return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
} else {
- return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_ACUT here, as macro needs KC_ prefix
+ return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_OSX_ACUT here, as macro needs KC_ prefix
}
}
break;
- case M_DE_CIRC_CTRLCMD:
+ case M_LGUI_SHFT:
+ if (record->event.pressed){
+ return MACRO(D(LGUI),D(LSFT),END);
+ }else{
+ return MACRO(U(LGUI),U(LSFT),END);
+ }
+ break;
+ case M_CTL_SFT_HASH:
+ if (record->event.pressed) {
+ start=timer_read();
+ return MACRO(D(LCTRL),D(LSFT),END);
+ } else {
+ if (timer_elapsed(start) > 150){
+ return MACRO(U(LCTRL),U(LSFT),END);
+ } else {
+ return MACRO(U(LCTRL),U(LSFT),T(BSLS),END);
+ }
+ }
+ break;
+ case M_DE_OSX_CIRC_CTRLCMD:
if (record->event.pressed) {
start = timer_read();
return MACRO(D(LCTRL),D(LGUI),END);
@@ -324,7 +345,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
}
break;
- case M_DE_PLUS_CTRLALT:
+ case M_DE_OSX_PLUS_CTRLALT:
if (record->event.pressed) {
start = timer_read();
return MACRO(D(LCTRL),D(LALT),END);
diff --git a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex
index fde7201c1..c7cb8d863 100644
--- a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex
+++ b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex
@@ -1,1199 +1,1197 @@
-:100000000C94F0030C9437040C9437040C943704CC
-:100010000C9437040C9437040C9437040C94370474
-:100020000C9437040C9437040C94370E0C94090F7D
-:100030000C9437040C9437040C9437040C94370454
-:100040000C9437040C947D230C9437040C943704DF
-:100050000C9437040C940F1D0C9437040C94370443
-:100060000C9437040C9437040C9437040C94370424
-:100070000C9437040C9437040C9437040C94370414
-:100080000C9437040C9437040C9437040C94370404
-:100090000C9437040C9437040C9437040C943704F4
-:1000A0000C9437040C9437040C943704470451041F
-:1000B00069048104C904CF04F004D504EB04E1040D
-:1000C000E604DB04B1049904F504760F980F8B1055
-:1000D000980F8B10DD0F00108B1055106810521305
-:1000E000521381138113C413FE130B160B1617142E
-:1000F0000B160C150C15DF150B160B16F61501E17A
-:100100000137023702E10138023801E201250225F8
-:1001100002E20001E10137023702E1013802380151
-:10012000E10130023002E10001E10137023702E172
-:100130000138023801E10107020702E1000135023E
-:1001400035012002200001E10137023702E10138C8
-:10015000023801E10125022502E10001E101360238
-:100160003602E10138023801E10125022502E100F1
-:1001700001E10136023602E10138023801E10126CF
-:10018000022602E10001E10137023702E1013802F3
-:100190003801E10126022602E10002E002E201301C
-:1001A00002300002E002E20001E001E20002E002AF
-:1001B000E3016402640002E002E30001E001E30005
-:1001C00002E002E2012E022E02E10002E002E10260
-:1001D000E20001E001E101E20002E001E3010602C8
-:1001E0000602E30002E00001E00002E001E3011981
-:1001F000021902E30002E00001E0000000F0A1F0BB
-:10020000A329002B00E200E100358100001E00144C
-:100210000004001D710D304D831F001A0016001BD5
-:10022000000C304C002000080007000600E1042A02
-:10023000002100150009001900E1084A00220017FA
-:10024000000A000500000003300130E3000000E276
-:1002500000000002540230E7000000E60000000445
-:100260005423001C000B00110000002E7F240018F6
-:10027000000D00100050004B0025000C000E003651
-:100280000052002C00260012000F003700510028F9
-:100290000027001300330038714F004E002D002F4F
-:1002A000003474E50031810000010001000100010B
-:1002B00000010000003A003500310001000100019A
-:1002C000003B0035022102350001004C003C001EBD
-:1002D0000224062202010001003D002D0224022416
-:1002E00004010001003E000100370011040000017C
-:1002F000000100010000000100000001000E3001BB
-:100300000000000100000001003F00240624022339
-:100310000200000100400022042502350001000116
-:100320000041002304260235023700010042002468
-:100330000425041F021E020100430031002604317F
-:1003400002010001004400450001002D02010000EF
-:100350000001000100010001000100000001000196
-:100360000001000100010001000100F400F200FBA7
-:1003700000010001000100F000F100FA000100019D
-:10038000000100F500F300FC00010001000100F98C
-:1003900000FA00F600000001000100010000000169
-:1003A0000000000100A800010000000100000001A1
-:1003B0000001000100A900AA0000000100010001E5
-:1003C000000100010001000100010001000100AC7A
-:1003D000000100B600010001000100AB0050000167
-:1003E00000010001000100520051000100AE0001B7
-:1003F00000010001004F00000001000100010001A8
-:1004000000010000000100010001000100010001E5
-:1004100000010001000100010001000100010001D4
-:1004200000010001000100010001000100010001C4
-:1004300000010001000100010001000100000001B5
-:100440000001000100000001000000010004300173
-:1004500000000001000000010005300630093001F5
-:1004600000000001000A300B3008300100010001DB
-:10047000000100073001000100010001000100013E
-:100480000001000100010001000100010001000164
-:100490000001000100010001000100010001000055
-:1004A0000001000100010001000100000001000145
-:1004B00000010001000100010001000100500001E5
-:1004C0000001000100010052005100010001000183
-:1004D00000010001004F00010001000100010001C6
-:1004E0000001000100000001000100010000000106
-:1004F00000000001000100010000000100000001F7
-:10050000003F00520051002302000001004000247F
-:100510000021001E00270001004100250022001FCD
-:1005200000370001004200260023002000270001C0
-:10053000004300300230002402270201004400453D
-:1005400000380001000100000001000100E100018D
-:1005500000E0000000010001000100010001003D79
-:100560000001000100010001000100E000010001A4
-:10057000000100010001002C000100010001000148
-:100580000001003C00010001000100010000003AF0
-:1005900000010001000000010000003B000E3001DE
-:1005A0000000000100000001000100010001000145
-:1005B0000000000100010001000100010001000134
-:1005C0000001000100010001000100010001000123
-:1005D0000001000100010001000100010001000113
-:1005E0000001000100010001000100010001000004
-:1005F0000016034500720067006F0044006F00782A
-:1006000000200045005A00000016034500720067F4
-:10061000006F0044006F007800200045005A000081
-:10062000000403090409026D00040100A0FA090492
-:1006300000000103010100092111010001223F0016
-:100640000705810308000A090401000103010200F3
-:10065000092111010001224D000705820308000A4B
-:100660000904020001030000000921110100012218
-:1006700036000705830308000A090403000103008C
-:10068000000009211101000122390007058403102F
-:1006900000011201100100000008EDFE0713010027
-:1006A0000102000105010906A101050719E029E77A
-:1006B0001500250195087501810205081901290514
-:1006C00095057501910295017503910105071900C2
-:1006D000297715002501957875018102C00501096A
-:1006E00080A101850216010026B7001A01002AB771
-:1006F00000751095018100C0050C0901A101850359
-:10070000160100269C021A01002A9C027510950110
-:100710008100C005010902A1010901A10005091913
-:1007200001290515002501950575018102950175C1
-:100730000381010501093009311581257F95027575
-:1007400008810609381581257F9501750881060500
-:100750000C0A38021581257F950175088106C0C0F5
-:1007600005010906A101050719E029E71500250182
-:100770009508750181029501750881010508190127
-:1007800029059505750191029501750391010507EC
-:10079000190029FF150025FF950675088100C00086
-:1007A00000000000000000000000010204060A0F23
-:1007B00017202C3A4A5D71879DB3C7DAE9F5FCFF33
-:1007C000FCF5E9DAC7B39D87715D4A3A2C20170F13
-:1007D0000A06040201000000000000000000000002
-:1007E00011241FBECFEFDAE0DEBFCDBF04B603FE9B
-:1007F00027C08091EF019091F001A091F101B0919B
-:10080000F2018730904BA740B04BD1F41092EF012A
-:100810001092F0011092F1011092F20114BE84B70F
-:10082000877F84BF0FB6F894A89580916000886197
-:1008300080936000109260000FBEE0E0FFE3099536
-:1008400011E0A0E0B1E0ECE9FAE402C005900D92FD
-:10085000A433B107D9F721E0A4E3B1E001C01D92B0
-:10086000AF3EB207E1F70E947E0B0C944C250C942E
-:100870000000462F50E04F30510508F0DEC0FA016D
-:10088000EA5AFF4FDC0112968C910C9401258823C3
-:1008900021F085EE0E94EC11D0C085EE0E94B412CA
-:1008A000CCC0882349F00E94D91C909335018093D5
-:1008B000340188EF91E008958091340190913501E1
-:1008C0000E94E51C873991050CF0A8C08AEE91E0E2
-:1008D0000895882349F00E94D91C90933501809394
-:1008E000340187EE91E008958091340190913501B3
-:1008F0000E94E51C873991050CF093C089ED91E0C9
-:100900000895882349F00E94D91C90933501809363
-:10091000340182ED91E00895809134019091350188
-:100920000E94E51C873991050CF07EC080EC91E0B7
-:100930000895882349F00E94D91C90933501809333
-:1009400034018BEB91E00895809134019091350151
-:100950000E94E51C873991050CF069C08DEA91E091
-:100960000895882349F00E94D91C90933501809303
-:10097000340188EA91E00895809134019091350125
-:100980000E94E51C873991050CF054C08AE991E07A
-:100990000895882309F451C085E891E008958823DB
-:1009A00009F44BC080E791E00895882309F445C01D
-:1009B0008BE591E00895882309F43FC086E491E037
-:1009C00008958823D1F18DE391E008958823A9F15A
-:1009D00088E291E00895882381F183E191E0089510
-:1009E000882359F18EEF90E00895882331F18091AA
-:1009F000B3019091B401A091B501B091B60120E28C
-:100A0000822780729927AA27BB278093B3019093EE
-:100A1000B401A093B501B093B6010FC085EF91E08A
-:100A2000089584EE91E008958BEC91E0089586EBB3
-:100A300091E0089583EA91E0089580E090E00895C0
-:100A400008956091B3017091B4018091B5019091C6
-:100A5000B6010E943C1C56985E9825982D982698C1
-:100A60002E9827982F988330C1F028F4813041F0D8
-:100A7000823049F00895843049F0853051F008956E
-:100A8000259A2D9A0895269A2E9A0895259A2D9A98
-:100A900004C0259A2D9A269A2E9A279A2F9A08955D
-:100AA0000C94210556985E9825982D9826982E9896
-:100AB00027982F988FEF90E090938900809388007B
-:100AC00090938B0080938A0090938D0080938C008C
-:100AD000259A2D9A2FEF80E792E021508040904098
-:100AE000E1F700C00000269A2E9A2FEF80E792E0EF
-:100AF000215080409040E1F700C00000279A2F9AD3
-:100B00002FEF80E792E0215080409040E1F700C055
-:100B1000000025982D982FEF80E792E0215080402B
-:100B20009040E1F700C0000026982E982FEF80E754
-:100B300092E0215080409040E1F700C000002798EB
-:100B40002F9856985E9825982D9826982E98279835
-:100B50002F98089589EA8093800089E0809381002E
-:100B600024982C983F988AB18F748AB96E98479AC6
-:100B70008BB1806B8BB9769A0E9452050C9420053C
-:100B800080E2809300018091360181110EC00E94A5
-:100B90000F0681E0809336012FEF83ED90E3215023
-:100BA00080409040E1F700C0000080E40E941506FC
-:100BB0008093000181112EC00E943F0680930001A6
-:100BC000811128C00E943F0680930001811122C03C
-:100BD0008FE30E943F068093000181111BC00E9499
-:100BE000370680E40E94150680930001811112C02F
-:100BF0008CE00E943F068093000181110BC00E948F
-:100C00003F0680930001811105C08FE30E943F06DB
-:100C1000809300010E943706809100010895109290
-:100C2000B9008AE08093B800089594EA9093BC00DC
-:100C30009091BC0097FFFCCF9091B900987F9830BD
-:100C400021F0903111F081E008958093BB0084E899
-:100C50008093BC008091BC0087FFFCCF8091B900DD
-:100C6000887F883111F0803471F780E0089584E93D
-:100C70008093BC008091BC0084FDFCCF08958093DC
-:100C8000BB0084E88093BC008091BC0087FFFCCF50
-:100C90009091B900987F81E0983209F480E008953E
-:100CA00084E88093BC008091BC0087FFFCCF8091DA
-:100CB000BB00089580910001811115C080E40E945D
-:100CC00015068093000181110CC082E10E943F064D
-:100CD00080930001811105C08FEF0E943F06809331
-:100CE00000010E94370684B1807F84B985B1807F7E
-:100CF00085B98AB1837F8AB98BB1837F8BB93E98DE
-:100D0000469808950E94C005809300010E945A06EB
-:100D100080B38C7080BB81B3836F81BBE6E4F1E06C
-:100D2000A8E3B1E011921D9281E0E435F807D1F714
-:100D30000C94AA059F92AF92BF92CF92DF92EF924E
-:100D4000FF920F931F93CF93DF938091000188232D
-:100D500079F0809137018F5F80933701811108C04E
-:100D60000E94C00580930001811102C00E945205BB
-:100D700088E3E82E81E0F82E8701C0E0D0E0BB24B4
-:100D8000B39492E0A92ECC24C394D12CC730D105C2
-:100D900000F580910001811164C080E40E94150675
-:100DA00080930001811112C082E10E943F0680936E
-:100DB000000181110BC0C6010C2E01C0880F0A94DE
-:100DC000EAF780950E943F06809300010E94370653
-:100DD00048C0CA30A1F028F4C83059F0C93061F0D9
-:100DE00005C0CC3089F070F0CD3089F0209A289879
-:100DF00010C0219A29980DC0229A2A980AC0239AD5
-:100E00002B9807C0529A01C0539A5B9802C03E9A31
-:100E10004698E0EAEA95F1F78FB181708B257999D0
-:100E200002C032E001C030E0832B7C9902C034E084
-:100E300001C030E0832B7D9902C028E001C020E092
-:100E4000822B7E9902C090E101C090E0892B9FB176
-:100E50009095991F9927991F9295990F907E892BAC
-:100E60000FC08091000181114AC080E40E941506E4
-:100E700080930001882381F1912C0E943706892DEF
-:100E8000D8019C91981719F08C93A09201010E94AF
-:100E90005A0621960F5F1F4FCE30D10509F076CF4D
-:100EA00080910101882369F1815080930101882399
-:100EB00039F0EFE9FFE03197F1F700C0000021C001
-:100EC000E6E4F1E0D7018D917D018193B6E4EB1664
-:100ED000B1E0FB06B9F715C083E10E943F0680939D
-:100EE00000018111C9CF81E40E94150680930001A1
-:100EF0008111C2CF0E945006982E9094BECF80E000
-:100F0000BFCF0E94500581E0DF91CF911F910F91DB
-:100F1000FF90EF90DF90CF90BF90AF909F9008959B
-:100F2000E82FF0E0EA5BFE4F8081089508958B3B47
-:100F3000910580F4883A910548F5853A9105D8F4F1
-:100F40008430910508F0B2C0019709F06EC081E0CD
-:100F500090E00895803E910508F467C0883E9105B1
-:100F600008F4A4C09C01205F31092031310508F04C
-:100F70005CC090650895853A910509F459C0863A98
-:100F8000910509F058C082E890E40895883A9105E7
-:100F900009F454C0893A910509F453C08A3A91057D
-:100FA00009F452C08B3A910509F451C08C3A91056D
-:100FB00009F450C08D3A910509F44FC0803B91056A
-:100FC00009F44EC08E3A910509F44DC08F3A91054F
-:100FD00009F44CC0813B910509F44BC0823B91055B
-:100FE00009F44AC0833B910509F449C0843B91054B
-:100FF00009F448C0853B910509F447C0863B91053B
-:1010000009F446C0873B910509F445C0883B91052A
-:1010100009F444C0893B910509F443C08A3B91051A
-:1010200009F442C080E094E4089580E090E00895DF
-:1010300081E890E4089583E890E4089582EE94E4D2
-:10104000089589EE94E408958AEE94E4089585EB7A
-:1010500094E4089586EB94E4089587EB94E408956E
-:101060008CEC94E408958DEC94E4089583E895E481
-:1010700008958AE895E4089582E995E4089584E95D
-:1010800095E4089581E296E4089583E296E4089554
-:1010900084E296E4089585E296E4089586E296E473
-:1010A000089587E296E408958AE296E40895089503
-:1010B00024E5829FC0011124FC0126E0729FE00D0F
-:1010C000F11D1124E60FF11DEE0FFF1FEF5FFD4F25
-:1010D000859194910895880F991FFC01E558FF4F61
-:1010E000859194910895880F991FFC01E550FE4F5A
-:1010F00085919491089524E5829FC0011124FC01FB
-:1011000046E0749FE00DF11D1124E60FF11DEE0F76
-:10111000FF1FEF5FFD4F859194919C013A9521153A
-:101120004FE1340708F425C13F512115304120F427
-:101130009F700E94730808959C013053211530411F
-:1011400018F49927906C0895811520E5920769F4A9
-:101150000E942D164FEF84E39CE041508040904068
-:10116000E1F700C000000C94341D813020E59207A7
-:1011700031F48091CE0181608093CE0108959C016D
-:1011800030552115304108F05CC0292F33272F70CE
-:10119000332721303105E9F4AC0164E0440F551FD9
-:1011A0006A95E1F744275370BC016370772702C04A
-:1011B000220F331F6A95E2F73C68242B352B73E02E
-:1011C000880F991F7A95E1F780769927822B932BC8
-:1011D00008952230310529F4982F8827816F906A6D
-:1011E000089523303105A1F4AC0133E0440F551FBD
-:1011F0003A95E1F7407E57708370992721E030E0FF
-:1012000002C0220F331F8A95E2F7C9019C6816C0FD
-:101210002430310531F5AC0123E0440F551F2A95E8
-:10122000E1F7407E57708370992721E030E002C0DB
-:10123000220F331F8A95E2F7C9019A68842B952BF8
-:1012400008959C0130572115304118F49F70906229
-:1012500008959C0130582115304118F49F70906A10
-:101260000895803E9105E0F4803C910558F5813366
-:10127000910509F46FC048F48932910509F463C0FF
-:101280008A32910509F46DC072C089339105E9F085
-:1012900082389105D1F08533910509F44DC067C0BE
-:1012A000833E910581F138F4803E9105B9F0823E8C
-:1012B0009105D9F05CC0863E910561F1873E9105AC
-:1012C000A1F155C00E946B0808952091E00120FD16
-:1012D00002C021FF4CC080EE90E049C08091E00147
-:1012E00080FFF9CF89E390E042C08091E00182FF66
-:1012F0000EC08091E00184FF03C080E090E037C021
-:1013000083EE90E034C08091E00182FFF2CF82EE64
-:1013100090E02DC08091E00183FF0BC08091E0013F
-:1013200084FDEBCF87EE90E022C08091E00183FF47
-:10133000F5CF86EE90E01BC08091E00185FF07C0ED
-:1013400089E290E014C08091E00185FFF9CF85E348
-:1013500090E00DC08091E00186FF07C08AE290E036
-:1013600006C08091E00186FFF9CF81E390E00E9402
-:10137000970708950895809164010895CF93DF93AE
-:1013800000D01F92CDB7DEB79C018091E60184307A
-:1013900019F593E099833B832A839093E9008FEFBB
-:1013A0009091E800815095FD06C095ED9A95F1F772
-:1013B00000008111F5CF8091E80085FF0DC040E06D
-:1013C00050E063E070E0CE0101960E942B0C80910A
-:1013D000E8008E778093E8000F900F900F90DF91D8
-:1013E000CF910895CF93DF9300D01F92CDB7DEB792
-:1013F0002091E601243021F522E029839B838A8312
-:1014000083E08093E9008FEF9091E800815095FD93
-:1014100006C095ED9A95F1F700008111F5CF809106
-:10142000E80085FF0DC040E050E063E070E0CE01D1
-:1014300001960E942B0C8091E8008E778093E80043
-:101440000F900F900F90DF91CF9108959C018091A4
-:10145000E6018430F9F482E08093E9009FEF809107
-:10146000E800915085FD06C085ED8A95F1F70000F2
-:101470009111F5CF8091E80085FF0CC040E050E06D
-:1014800065E070E0C9010E942B0C8091E8008E7726
-:101490008093E8000895CF93DF93EC018091E601FB
-:1014A000843009F046C090910C019923D9F09091B5
-:1014B0000D019923B9F08093E9008FEF9091E80036
-:1014C000815095FD06C095E19A95F1F700008111D4
-:1014D000F5CF8091E80085FF2CC040E050E060E14E
-:1014E00070E017C081E08093E9008FEF9091E800F1
-:1014F000815095FD06C095ED9A95F1F70000811198
-:10150000F5CF8091E80085FF14C040E050E068E02E
-:1015100070E0CE010E942B0C8091E8008E778093C2
-:10152000E80080E1FE01A4E5B1E001900D928A950A
-:10153000E1F7DF91CF9108958091E501811109C014
-:101540000E94BC0D0E94190E8091E200846080937D
-:10155000E20008951092E501089508950C946A231D
-:101560000E94CA1C0E9470230E94C4100C94BA09E5
-:1015700042E061EC81E00E94350D42E061EC82E0E6
-:101580000E94350D42E061EC83E00E94350D42E19E
-:1015900061EC84E00C94350D8091E801833009F40E
-:1015A00055C030F4813071F0823009F48EC0089556
-:1015B0008A3009F47AC08B3009F460C0893009F0B0
-:1015C0009CC020C08091E701813A09F096C08091CB
-:1015D000E800877F8093E8008091EB019091EC0117
-:1015E000892B21F460E184E591E003C060E080E0B4
-:1015F00090E070E00E94760C8091E8008B778093F9
-:10160000E80008958091E701813209F076C0809169
-:10161000EB019091EC01009719F0039709F06DC070
-:101620008091E800877F8093E8008091E80082FD48
-:1016300005C08091E6018111F8CF5FC08091F10073
-:10164000809364018091E8008B7753C08091E7011B
-:10165000813A09F052C08091EB019091EC01892B05
-:1016600009F04BC08091E800877F8093E80080916B
-:10167000E80080FFFCCF80910C0136C08091E7012B
-:101680008132D9F58091EB019091EC01892BA9F57C
-:101690008091E800877F8093E8000E946A0D809126
-:1016A000E90180930C010C942D168091E7018132A1
-:1016B00021F58091E800877F8093E8000E946A0D01
-:1016C0008091EA018093650108958091E701813A54
-:1016D000A1F48091E800877F8093E8008091E80082
-:1016E00080FFFCCF809165018093F1008091E8003C
-:1016F0008E778093E8000C946A0D089584B7877FF5
-:1017000084BF0FB6F894A89580916000886180939B
-:101710006000109260000FBE90E080E80FB6F89471
-:1017200080936100909361000FBE0E9413110E948C
-:10173000BC0D0E94190E8091E20084608093E2004B
-:1017400078940E94A4100E94151182E091E00E94FA
-:10175000BF100E9458238091E601853069F40E94F1
-:101760008C1C8091E4018823B1F30E94B61C88236D
-:1017700091F30E94150CEFCF0E941B11ECCF292F83
-:10178000332723303105C9F060F42130310581F071
-:101790002230310509F041C08DE690E025E236E0C7
-:1017A00040C021323105E1F02232310531F135C03E
-:1017B00082E190E022E936E034C09927813091053A
-:1017C00049F028F0029749F5E1EFF5E005C0E1E2C4
-:1017D000F6E002C0E9E0F6E0849190E09F0121C0CC
-:1017E0006430D8F4E62FF0E0EE0FFF1FEE5DFE4F01
-:1017F0002081318189E090E014C0643070F470E0A1
-:10180000FB01EE0FFF1FE65EFE4F20813181FB01E1
-:10181000EA5EFE4F808190E004C080E090E020E02E
-:1018200030E0FA0131832083089580E189BD82E1AF
-:1018300089BD09B400FEFDCF8091D8008F7D8093D3
-:10184000D8008091E00082608093E0008091E00009
-:1018500081FDFCCF0895CF92DF92EF92FF920F931C
-:101860001F93CF93DF93EC018B016A010E94890DD6
-:10187000811133C0C114D10439F0F6018081918106
-:10188000081B190BC80FD91FE12CF12C01151105EC
-:1018900019F18091E80085FD16C08091E8008E77EF
-:1018A0008093E800C114D10449F0F6018081918150
-:1018B000E80EF91EF182E08285E00FC00E94890DDA
-:1018C000882321F30AC089918093F1000150110906
-:1018D000FFEFEF1AFF0ADACF80E0DF91CF911F917F
-:1018E0000F91FF90EF90DF90CF9008952091ED0140
-:1018F0003091EE012617370748F06115710539F46C
-:101900002091E8002E772093E80001C0B901FC0186
-:1019100020E06115710579F18091E6018823F1F1EC
-:101920008530F1F18091E80083FD3CC08091E800B2
-:1019300082FD2EC08091E80080FFEBCF2091F30064
-:101940008091F20090E0922B6115710551F0883082
-:10195000910538F421912093F100615071090196AD
-:10196000F3CF21E0089709F020E08091E8008E771E
-:101970008093E800CECF2111CFCF0AC08091E6013D
-:10198000882361F0853061F08091E80083FD0AC012
-:101990008091E80082FFF2CF80E0089582E0089510
-:1019A00083E0089581E008952091ED013091EE01EA
-:1019B0002617370748F06115710539F42091E800C2
-:1019C0002E772093E80001C0B901FC0120E06115E9
-:1019D000710591F18091E601882309F440C08530BA
-:1019E00009F43FC08091E80083FD3DC08091E8008C
-:1019F00082FD2FC08091E80080FFE9CF2091F300A5
-:101A00008091F20090E0922B6115710559F08830B9
-:101A1000910540F424912093F100319661507109B1
-:101A20000196F2CF21E0089709F020E08091E800CC
-:101A30008E778093E800CBCF2111CCCF0AC0809164
-:101A4000E601882361F0853061F08091E80083FD34
-:101A50000AC08091E80082FFF2CF80E0089582E022
-:101A6000089583E0089581E00895982F973068F5F0
-:101A70009093E900981739F07091EC002091ED00F7
-:101A80005091F00003C0242F762F50E021FD02C0BA
-:101A90009F5FECCF3091EB003E7F3093EB003091B5
-:101AA000ED003D7F3093ED003091EB0031603093DD
-:101AB000EB007093EC002093ED005093F000209128
-:101AC000EE0027FDE5CF80E008958F708093E90058
-:101AD00081E008958091E70187FF11C08091E800BF
-:101AE00082FD05C08091E6018111F8CF11C080917F
-:101AF000E8008B770BC08091E601882349F0809144
-:101B0000E80080FFF8CF8091E8008E778093E800AE
-:101B100008952091E4003091E50095E64091EC00B5
-:101B2000842F817040FF23C08091E80080FD1DC09C
-:101B30008091E601882399F0853099F08091EB003F
-:101B400085FD11C04091E4005091E5002417350750
-:101B500029F3915011F09A01E1CF84E0089582E0D9
-:101B6000089583E0089581E0089580E0089540910C
-:101B7000E80042FFDDCF08950E942A0E0E94320E37
-:101B8000E0EEF0E0808181608083E8EDF0E080812C
-:101B90008F77808319BCA7EDB0E08C918E7F8C93FA
-:101BA00080818F7E80831092E50108950F931F93AB
-:101BB000CF93DF930E942A0E0E94320EC8EDD0E030
-:101BC00088818F77888388818068888388818F7DEA
-:101BD000888319BC1092E6011092E2011092E40190
-:101BE0001092E30100EE10E0F80180818B7F80838A
-:101BF00088818160888342E060E080E00E94350D4A
-:101C0000E1EEF0E080818E7F8083E2EEF0E0808183
-:101C100081608083808188608083F80180818E7FED
-:101C20008083888180618883DF91CF911F910F919C
-:101C30000895E8EDF0E080818F7E8083E7EDF0E0AD
-:101C400080818160808384E082BF81E08093E501B0
-:101C50000C94D60DE8EDF0E080818E7F80831092A9
-:101C6000E20008951092DA001092E10008951F92A8
-:101C70000F920FB60F9211242F933F934F935F93C0
-:101C80006F937F938F939F93AF93BF93EF93FF9344
-:101C90008091E10082FF0BC08091E20082FF07C0CB
-:101CA0008091E1008B7F8093E1000E94A3108091DE
-:101CB000DA0080FF1FC08091D80080FF1BC0809198
-:101CC000DA008E7F8093DA008091D90080FF0DC00A
-:101CD00080E189BD82E189BD09B400FEFDCF81E0CC
-:101CE0008093E6010E949C0A05C019BC1092E6018F
-:101CF0000E94AA0A8091E10080FF19C08091E20051
-:101D000080FF15C08091E2008E7F8093E200809179
-:101D1000E20080618093E2008091D800806280932D
-:101D2000D80019BC85E08093E6010E94AE0A80913C
-:101D3000E10084FF30C08091E20084FF2CC080E18C
-:101D400089BD82E189BD09B400FEFDCF8091D80034
-:101D50008F7D8093D8008091E1008F7E8093E10099
-:101D60008091E2008F7E8093E2008091E2008160AA
-:101D70008093E2008091E201882311F084E007C0A3
-:101D80008091E30087FD02C081E001C083E0809381
-:101D9000E6010E94B00A8091E10083FF29C0809192
-:101DA000E20083FF25C08091E100877F8093E100FE
-:101DB00082E08093E6011092E2018091E1008E7F43
-:101DC0008093E1008091E2008E7F8093E200809119
-:101DD000E20080618093E20042E060E080E00E94E7
-:101DE000350D8091F00088608093F0000E94AD0A6C
-:101DF000FF91EF91BF91AF919F918F917F916F91E3
-:101E00005F914F913F912F910F900FBE0F901F90B8
-:101E100018951F920F920FB60F9211242F933F9394
-:101E20004F935F936F937F938F939F93AF93BF93E2
-:101E3000CF93DF93EF93FF93C091E900CF70809130
-:101E4000EC00D82FD17080FDD0E81092E90080918D
-:101E5000F000877F8093F00078940E944D0F1092DD
-:101E6000E9008091F00088608093F000CD2BCF7066
-:101E7000C093E900FF91EF91DF91CF91BF91AF91B6
-:101E80009F918F917F916F915F914F913F912F9192
-:101E90000F900FBE0F901F9018951F93CF93DF9355
-:101EA000CDB7DEB7AA970FB6F894DEBF0FBECDBF91
-:101EB000E7EEF1E08091F100819321E0EF3EF2073F
-:101EC000C9F70E94CC0A8091E80083FF24C1809169
-:101ED000E7019091E801492F50E04A30510508F0A0
-:101EE0001AC1FA01EB59FF4F0C940125803881F09B
-:101EF000823809F010C18091EB018F708093E90066
-:101F00008091EB0085FB882780F91092E90006C0DC
-:101F10008091E3019091E401911182609091E80039
-:101F2000977F9093E8008093F1001092F100C8C071
-:101F3000282F2D7F09F0EFC0882319F0823061F03F
-:101F4000EAC08091E901813009F0E5C0933009F0E1
-:101F500080E08093E4012BC08091E901811127C0CA
-:101F60008091EB018F7009F4D6C08093E900209135
-:101F7000EB0020FF1CC0933021F48091EB008062C5
-:101F800014C09091EB0090619093EB0021E030E061
-:101F9000A90102C0440F551F8A95E2F74093EA0059
-:101FA0001092EA008091EB0088608093EB00109221
-:101FB000E9008091E800877F86C08111ACC0109154
-:101FC000E9011F778091E3008078812B8093E30003
-:101FD0008091E800877F8093E8000E946A0D8091DD
-:101FE000E80080FFFCCF8091E30080688093E300ED
-:101FF000111102C082E001C083E08093E6018BC032
-:102000008058823008F087C08091E9019091EA0100
-:102010008C3D53E0950779F583E08A838AE28983D2
-:102020004FB7F894DE01139620E03EE051E2E32F33
-:10203000F0E050935700E49120FF03C0E295EF7069
-:102040003F5FEF708E2F90E0EA3010F0C79601C02E
-:10205000C0968D939D932F5F243149F74FBF809198
-:10206000E800877F8093E8006AE270E0CE01019685
-:102070000E94760C14C0AE014F5F5F4F6091EB0180
-:102080000E94BF0BBC01892B09F445C09091E80068
-:10209000977F9093E80089819A810E94D40C809167
-:1020A000E8008B778093E80036C08038A1F58091F6
-:1020B000E800877F8093E8008091E2018093F1003F
-:1020C0008091E8008E778093E8000E946A0D23C01B
-:1020D000811121C08091E9019091EA01992702972D
-:1020E000D4F48091E800877F8093E8008091E90133
-:1020F0008093E2010E946A0D8091E201811106C085
-:102100008091E30087FD02C081E001C084E08093FC
-:10211000E6010E94B80A8091E80083FF0AC080911E
-:10212000E800877F8093E8008091EB0080628093D5
-:10213000EB00AA960FB6F894DEBF0FBECDBFDF91BD
-:10214000CF911F9108950895CF938091E601882340
-:10215000A1F0C091E900CF709091EC00892F8170BF
-:1021600090FD80E8C82B1092E9008091E80083FD83
-:102170000E944D0FCF70C093E900CF9108959093C6
-:102180006B0180936A010895E0916A01F0916B01FF
-:10219000309721F00190F081E02D099480E00895BE
-:1021A000E0916A01F0916B01309721F00280F38198
-:1021B000E02D09940895E0916A01F0916B01309748
-:1021C00021F00480F581E02D0994089520916801A3
-:1021D000309169012817390771F090936901809354
-:1021E0006801E0916A01F0916B01309721F006805F
-:1021F000F781E02D099408952091660130916701DF
-:102200002817390771F09093670180936601E09178
-:102210006A01F0916B01309721F00084F185E02D87
-:102220000994089508950C9412110E94D01C0E94E4
-:1022300082060C94961DCF92DF92EF92FF920F933D
-:102240001F93CF93DF93CDB7DEB72B970FB6F894DC
-:10225000DEBF0FBECDBF0E949A068DE6C82E81E07C
-:10226000D82E00E010E0E02E802F0E949007F601AB
-:1022700041916F01F82EF426B1F40F5F1F4F0E301D
-:10228000110589F78FEF89838A831B820E94D91CED
-:102290008160782F9D838C8349815A816B818D81E8
-:1022A0000E94BE1140C09091CE0191FF04C08B8767
-:1022B0000E9496078B8520E030E04F2D50E0922F52
-:1022C000BA01022E02C0759567950A94E2F760FF85
-:1022D00024C02E83EF8221E030E0690102C0CC0CE3
-:1022E000DD1C9A95E2F790E08C219D21892B09F461
-:1022F00020E028870E94D91C8160782F9A878987DF
-:102300004E815F8168858A850E94BE11F801E3597C
-:10231000FE4F8081C826C08206C02F5F3F4F263007
-:10232000310569F6AACF0E947D200E94C4109091C9
-:102330006C018917A1F00E94C41080936C012B9648
-:102340000FB6F894DEBF0FBECDBFDF91CF911F91C6
-:102350000F91FF90EF90DF90CF900C94BA092B96DD
-:102360000FB6F894DEBF0FBECDBFDF91CF911F91A6
-:102370000F91FF90EF90DF90CF900895CF93DF9370
-:10238000CDB7DEB72B970FB6F894DEBF0FBECDBF2B
-:102390004F83588769877A878B87DE01119686E09D
-:1023A000FD0111928A95E9F785E0FE0137960190CB
-:1023B0000D928A95E1F749815A816B817C818D81EB
-:1023C0009E810E94C1182B960FB6F894DEBF0FBEF7
-:1023D000CDBFDF91CF910895CF93C82F882309F403
-:1023E000C1C0823859F40E94C41081FDBBC089E38A
-:1023F0000E945E1B0E94161C89E30CC0833879F48E
-:102400000E94C41080FDAEC083E50E945E1B0E9446
-:10241000161C83E50E949D1BCF910C94161C8438DA
-:1024200059F40E94C41082FD9DC087E40E945E1B87
-:102430000E94161C87E4EECF8CEF8C0F813A48F493
-:102440008C2F0E94BD2281118DC08C2F0E945E1B9B
-:10245000E3CF80E28C0F883048F4C77081E001C080
-:10246000880FCA95EAF70E94DF1BD6CF8BE58C0F49
-:10247000833078F4C53A29F0C63A31F083E890E029
-:1024800005C081E890E002C082E890E0CF910C9412
-:10249000E61088E58C0F833108F064C0C83A39F142
-:1024A000C93A41F1CA3A49F1CB3A51F1CC3A59F122
-:1024B000CD3A61F1C03B69F1CE3A71F1CF3A79F191
-:1024C000C13B81F1C23B89F1C33B91F1C43B99F11E
-:1024D000C53BA1F1C63BA9F1C73BB1F1C83BB9F17E
-:1024E000C93BC1F1CA3BC9F180E090E038C082EE3F
-:1024F00090E035C089EE90E032C08AEE90E02FC0C7
-:1025000085EB90E02CC086EB90E029C087EB90E053
-:1025100026C08CEC90E023C08DEC90E020C083E8D6
-:1025200091E01DC08AE891E01AC082E991E017C0ED
-:1025300084E991E014C081E292E011C083E292E06C
-:102540000EC084E292E00BC085E292E008C086E211
-:1025500092E005C087E292E002C08AE292E0CF9169
-:102560000C94FC10CF910895882309F44BC0823855
-:1025700059F40E94C41081FF45C089E30E945E1B8C
-:102580000E94161C89E30CC0833871F40E94C410A9
-:1025900080FF38C083E50E945E1B0E94161C83E505
-:1025A0000E949D1B0C94161C843859F40E94C41080
-:1025B00082FF28C087E40E945E1B0E94161C87E4ED
-:1025C000EFCF9CEF980F913A58F390E2980F983024
-:1025D00050F4877091E001C0990F8A95EAF7892F2E
-:1025E0000E94E51BDFCF9BE5980F933020F480E03D
-:1025F00090E00C94E610885A833120F480E090E05B
-:102600000C94FC100895882321F00E94DF1B0C9489
-:10261000161C0895882321F00E94E51B0C94161CBB
-:102620000895BF92CF92DF92EF92FF920F931F9384
-:10263000CF93DF9300D000D000D0CDB7DEB77C01C0
-:1026400085E0F701DE01119601900D928A95E1F780
-:10265000F70183819481892B09F4DDC29081818106
-:102660008F3F19F49F3F09F4D6C2F70102812581FB
-:1026700022952F7099838A8389819A812E830E9463
-:102680001D1B182FB92E0E941C1B0E94E319EB2D55
-:10269000E295EF704E2F50E0FA01E159FF4F2E8185
-:1026A0000C9401258B2D807F9B2D9F70F92E882304
-:1026B00019F0F29480EFF822002349F0FF2009F48A
-:1026C00057C28F2D0E94EF1B0E94161C51C2812FF2
-:1026D0000E94B412FF2009F49EC28F2D0E94F51BA8
-:1026E00026960FB6F894DEBF0FBECDBFDF91CF9117
-:1026F0001F910F91FF90EF90DF90CF90BF900C94BF
-:10270000161C3B2D307F8B2D8F70303211F082954F
-:10271000807F112319F0113021F12CC00023B9F072
-:10272000222309F490C1213009F08DC126960FB6FD
-:10273000F894DEBF0FBECDBFDF91CF911F910F91F7
-:10274000FF90EF90DF90CF90BF900C94FF1B22235F
-:1027500019F0213009F45FC28E830E94021C8E8121
-:1027600086C1002321F0223008F055C26CC121112E
-:1027700052C27DC1002321F0222309F464C1F8C1B3
-:10278000222309F474C109C28B2D86958695837026
-:1027900019F08130D1F03FC2002321F0812F9B2D11
-:1027A000937002C080E090E026960FB6F894DEBFEA
-:1027B0000FBECDBFDF91CF911F910F91FF90EF9092
-:1027C000DF90CF90BF900C94E610002321F0812F72
-:1027D0009B2D937002C080E090E026960FB6F8948F
-:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044
-:1027F000EF90DF90CF90BF900C94FC10812F0023BE
-:1028000019F00E94851F02C00E94ED1F26960FB688
-:10281000F894DEBF0FBECDBFDF91CF911F910F9116
-:10282000FF90EF90DF90CF90BF900C9472208B2D93
-:10283000837009F075C00111EEC1812F82958695D4
-:102840008770880F880F912F9F70C92ED12CE12C93
-:10285000F12C082E04C0CC0CDD1CEE1CFF1C0A94CD
-:10286000D2F714FF12C00FE010E020E030E004C007
-:10287000000F111F221F331F8A95D2F7C901B8011B
-:10288000609570958095909503C060E070E0CB01F5
-:102890004B2D4695469543704230C1F060F56C294A
-:1028A0007D298E299F29413051F126960FB6F89443
-:1028B000DEBF0FBECDBFDF91CF911F910F91FF9073
-:1028C000EF90DF90CF90BF900C940A1A6C297D296D
-:1028D0008E299F2926960FB6F894DEBF0FBECDBF76
-:1028E000DF91CF911F910F91FF90EF90DF90CF90EC
-:1028F000BF900C94261A0E940A1AC701B6012696A8
-:102900000FB6F894DEBF0FBECDBFDF91CF911F9100
-:102910000F91FF90EF90DF90CF90BF900C94EE1945
-:10292000002319F08B2D817001C08695882309F44E
-:1029300072C1812F829586958770880F880F912F9D
-:102940009F70C92ED12CE12CF12C082E04C0CC0C88
-:10295000DD1CEE1CFF1C0A94D2F714FF12C00FE01E
-:1029600010E020E030E004C0000F111F221F331FD1
-:102970008A95D2F7C901B8016095709580959095B8
-:1029800003C060E070E0CB014B2D46954695437047
-:102990004230C1F060F56C297D298E299F29413094
-:1029A00051F126960FB6F894DEBF0FBECDBFDF9172
-:1029B000CF911F910F91FF90EF90DF90CF90BF903C
-:1029C0000C94E41A6C297D298E299F2926960FB62E
-:1029D000F894DEBF0FBECDBFDF91CF911F910F9155
-:1029E000FF90EF90DF90CF90BF900C94001B0E945F
-:1029F000E41AC701B60126960FB6F894DEBF0FBEE3
-:102A0000CDBFDF91CF911F910F91FF90EF90DF909D
-:102A1000CF90BF900C94C81A103FD1F118F4103E1B
-:102A200050F4A1C0123F09F463C008F44CC0133F36
-:102A300009F473C098C01F708B2D8F710023A1F013
-:102A40000E94611A812F26960FB6F894DEBF0FBE42
-:102A5000CDBFDF91CF911F910F91FF90EF90DF904D
-:102A6000CF90BF900C9403130E94821A812F269658
-:102A70000FB6F894DEBF0FBECDBFDF91CF911F918F
-:102A80000F91FF90EF90DF90CF90BF900C940A13BE
-:102A90000023A9F02111BFC08B2D8F7126960FB690
-:102AA000F894DEBF0FBECDBFDF91CF911F910F9184
-:102AB000FF90EF90DF90CF90BF900C94A71A223038
-:102AC00008F0A9C0E9CF0023A9F08B2D8F712696BD
-:102AD0000FB6F894DEBF0FBECDBFDF91CF911F912F
-:102AE0000F91FF90EF90DF90CF90BF900C94611A00
-:102AF000002359F38B2D8F7126960FB6F894DEBF05
-:102B00000FBECDBFDF91CF911F910F91FF90EF903E
-:102B1000DF90CF90BF900C94821A002399F08B2DF8
-:102B20008F7126960FB6F894DEBF0FBECDBFDF9132
-:102B3000CF911F910F91FF90EF90DF90CF90BF90BA
-:102B40000C944C1A26960FB6F894DEBF0FBECDBF7C
-:102B5000DF91CF911F910F91FF90EF90DF90CF9079
-:102B6000BF900C94421A0023A9F0222309F4ADCFA0
-:102B7000812F26960FB6F894DEBF0FBECDBFDF9132
-:102B8000CF911F910F91FF90EF90DF90CF90BF906A
-:102B90000C94EC11222309F4ADCF812F26960FB6A9
-:102BA000F894DEBF0FBECDBFDF91CF911F910F9183
-:102BB000FF90EF90DF90CF90BF900C94B4124B2D0C
-:102BC0004F70612FC7010E94390426960FB6F89402
-:102BD000DEBF0FBECDBFDF91CF911F910F91FF9050
-:102BE000EF90DF90CF90BF900C9466194B2D4F70F3
-:102BF000612FC70126960FB6F894DEBF0FBECDBF7A
-:102C0000DF91CF911F910F91FF90EF90DF90CF90C8
-:102C1000BF900C94570826960FB6F894DEBF0FBEEF
-:102C2000CDBFDF91CF911F910F91FF90EF90DF907B
-:102C3000CF90BF9008950E94FC1B0E94D11B0E9460
-:102C4000161C0E9422210E94722080E090E00E94C7
-:102C5000E61080E090E00C94FC100E94EC1B0C94B9
-:102C60001B160E941D1B292F22952F702C3030F42B
-:102C70002A3048F42250223078F405C02C3041F03C
-:102C80002F3031F009C0803E48F0803F29F406C063
-:102C900093FB882780F9089580E0089581E00895E6
-:102CA000CF93DF9300D000D01F92CDB7DEB70F9047
-:102CB0000F900F900F900F90DF91CF910895CF93C9
-:102CC000DF9300D000D000D0CDB7DEB726960FB688
-:102CD000F894DEBF0FBECDBFDF91CF9108951F9353
-:102CE000CF93DF93C0917B0116E080917C01C817E0
-:102CF00099F0D0E01C9FF0011D9FF00D1124E358C6
-:102D0000FE4F4081518162817381848195810E944F
-:102D10005F162196C770E9CFDF91CF911F9108957B
-:102D20004091AD015091AE016091AF017091B00141
-:102D30008091B1019091B2010C945F168091B20123
-:102D400082958F7009F054C08091AF01882309F4F7
-:102D50004FC080917B01A0917C014091B0015091C6
-:102D6000B1016091AD017091AE01B6E08A1709F42E
-:102D70003FC090E041155105C1F17F3F11F46F3F15
-:102D8000A1F1B89FF001B99FF00D1124E358FE4F57
-:102D9000218127132AC02081261327C022812111D7
-:102DA00024C0238134812417350710F421503109C0
-:102DB000241B350B283C3105C0F42091B2012F7043
-:102DC00020612093B20126E0289FF001299FF00D99
-:102DD0001124EE57FE4F80818F70806180838DEAD1
-:102DE00091E00E9411130C946F1601968770BECF6C
-:102DF0000895CF92DF92EF92FF920F931F93CF939C
-:102E0000DF93CDB7DEB762970FB6F894DEBF0FBE83
-:102E1000CDBF8C0185E0F801DE011D9601900D9279
-:102E20008A95E1F7D8014C9111965C911197129611
-:102E30006C918091B0019091B101009709F475C136
-:102E40003091AD017091AE017F3F19F43F3F09F41D
-:102E50006CC1F801C380D480E090AF01EE2009F48A
-:102E6000BEC02091B201C816D90628F0D601A81B11
-:102E7000B90BCD0104C0809590958C0D9D1DFF244C
-:102E8000F394883C910578F0F12C207F09F0C4C0C0
-:102E90007C2DD98AC88A89890E9450168DEA91E0D2
-:102EA0000E941113AFC0822F807F09F045C05713D5
-:102EB00013C0431311C061110FC02F702061209304
-:102EC000B2010E9490168DEA91E00E941113809148
-:102ED000B201F80185832EC0CD2819F15F3F11F4AE
-:102EE0004F3FF9F0F62E61111CC080917B012091BB
-:102EF0007C0136E0821709F45BC090E0389FF00156
-:102F0000399FF00D1124E358FE4F7181571306C00D
-:102F10007081471303C07281711103C001968770DD
-:102F2000E9CFF62E662309F41CC18091B2018160BD
-:102F30008093B201F12C15C1571309C0431307C088
-:102F4000611105C08091B201F8018583C8C04D8729
-:102F50005E878D859E856A8B0E9431166A898823DB
-:102F6000D1F16623C1F12091B201822F82958F7039
-:102F700090E0029774F08091AD019091AE01988736
-:102F80008F831986DB86CA862C87CE0107960E941E
-:102F9000111386E0F801ADEAB1E001900D928A9537
-:102FA000E1F70E949E160E949016FF24F394D9C068
-:102FB0004D875E878D859E850E941D1B292F22953A
-:102FC0002F70223008F0C1C09F7009F0BBC0805E36
-:102FD000883008F4C6C0C8010E941113E6CFC81695
-:102FE000D90608F453C0F601E81BF90BCF01883C61
-:102FF000910508F450C0F12C7C2DD98AC88A8989A2
-:103000000E945016EDEAF1E086E0DF011D928A95FC
-:10301000E9F70E949016A5C0571314C0431312C0BD
-:10302000611110C08091B201F8018583C8010E942E
-:10303000111386E0EDEAF1E0DF011D928A95E9F7D0
-:10304000FE2C8FC04D875E878D859E856A8B0E9482
-:1030500031166A89882309F4BECF662309F4BBCFF1
-:103060002091B201822F82958F7090E002970CF42C
-:1030700090CF8091AD019091AE019A8389831B829C
-:10308000DD82CC822E83CE01019681CF80959095F2
-:103090008C0D9D1DACCFF62E662309F49CCF5713E3
-:1030A00033C0431331C02091B20120FD24C0822FD0
-:1030B00082958F70482F50E041155105E1F0D801FD
-:1030C00015962C9315974F30510549F08F5F982F27
-:1030D0009295907F822F8F70892B15968C93C801C3
-:1030E0000E94111386E0F801ADEAB1E001900D9263
-:1030F0008A95E1F78ECF86E0F801ADEAB1E0019064
-:103100000D928A95E1F72DC04D875E878D859E854E
-:103110000E94311681113DCF8091B2018160809370
-:10312000B201C8010E9411131CC0662309F453CFD9
-:103130004D875E878D859E850E943116882309F410
-:103140004ACF27CF811143CF0CC0243008F043CFA2
-:103150009F7009F43CCFD80115969C91907F09F09F
-:1031600036CF8F2D62960FB6F894DEBF0FBECDBF5F
-:10317000DF91CF911F910F91FF90EF90DF90CF9053
-:1031800008951F93CF93DF93CDB7DEB72C970FB67B
-:10319000F894DEBF0FBECDBF4F83588769877A870B
-:1031A0008B879C87CE0107960E94F916882371F0C1
-:1031B0008A859B85892B09F441C088858F3F09F05A
-:1031C00065C08F818F3F09F061C038C086E0FE0185
-:1031D0003796DE01119601900D928A95E1F76A8586
-:1031E0007B856115710551F1FF81E885EF3F11F491
-:1031F000FF3F21F120917C0130E0C90101968770E9
-:10320000992740917B0150E08417950709F447C046
-:10321000F983EA837D836C8396E0929FD001939F2C
-:10322000B00D1124A358BE4FFE01319601900D92AE
-:103230009A95E1F780937C010E946F1616E08091C9
-:103240007B0190917C018917B9F1189FC00111246D
-:1032500083589E4F0E94F916882371F1E0917B01FB
-:103260001E9FF0011124E358FE4F4081518162817D
-:103270007381848195810E945F1680917B0190E02B
-:1032800001968770992780937B01D9CF4F8158850C
-:1032900069857A858B859C850E945F16CFCF0E94B9
-:1032A0002D1610927C0110927B01EDEAF1E086E090
-:1032B000DF011D928A95E9F72C960FB6F894DEBFD0
-:1032C0000FBECDBFDF91CF911F910895EF92FF9276
-:1032D0000F931F93CF93DF938C01892B09F46CC05C
-:1032E000F12CEE24E394E8012196F80184918437CF
-:1032F00040F4843008F051C0813081F0823019F1FF
-:103300005BC0853709F444C0A8F19CE7980F90375B
-:1033100008F052C08F770E94B41241C00E5F1F4F59
-:10332000FE01849190E2980F983050F48770FE2D42
-:1033300001C0FF0F8A95EAF78F2F0E94EF1B14C080
-:103340000E94EC112DC00E5F1F4FFE01849190E290
-:10335000980F983060F48770FE2D01C0FF0F8A959A
-:10336000EAF78F2F0E94F51B0E94161C19C00E94BD
-:10337000B41216C00E5F1F4FFE01C491CC2381F022
-:103380008FE99FE00197F1F700C00000C150F6CF30
-:103390000E5F1F4FFE01F49003C00E94EC118E01DE
-:1033A0008F2D882309F49FCFEFE9FFE03197F1F7E4
-:1033B00000C000008150F5CFDF91CF911F910F9198
-:1033C000FF90EF90089508956093B7017093B8014E
-:1033D0008093B9019093BA010C941B160F931F931D
-:1033E0000091B7011091B8012091B9013091BA0153
-:1033F000DC01CB01802B912BA22BB32B8093B70147
-:103400009093B801A093B901B093BA011F910F91A5
-:103410000C941B160F931F930091B7011091B801E4
-:103420002091B9013091BA01DC01CB0180239123B5
-:10343000A223B3238093B7019093B801A093B9015D
-:10344000B093BA011F910F910C941B160F931F9309
-:103450000091B7011091B8012091B9013091BA01E2
-:10346000DC01CB0180279127A227B3278093B701E6
-:103470009093B801A093B901B093BA011F910F9135
-:103480000C941B161092B3011092B4011092B50166
-:103490001092B6010C941B1641E050E060E070E021
-:1034A00004C0440F551F661F771F8A95D2F74093BB
-:1034B000B3015093B4016093B5017093B6010C94BD
-:1034C0001B1641E050E060E070E004C0440F551F5F
-:1034D000661F771F8A95D2F78091B3019091B4014E
-:1034E000A091B501B091B601482B592B6A2B7B2BCB
-:1034F0004093B3015093B4016093B5017093B6014A
-:103500000C941B1641E050E060E070E004C0440FF2
-:10351000551F661F771F8A95D2F740955095609585
-:1035200070958091B3019091B401A091B501B091D3
-:10353000B601482359236A237B234093B301509358
-:10354000B4016093B5017093B6010C941B1641E071
-:1035500050E060E070E004C0440F551F661F771F05
-:103560008A95D2F78091B3019091B401A091B501F1
-:10357000B091B601482759276A277B274093B301AA
-:103580005093B4016093B5017093B6010C941B166F
-:103590000F931F930091B3011091B4012091B501D5
-:1035A0003091B601DC01CB01802B912BA22BB32BE8
-:1035B0008093B3019093B401A093B501B093B60189
-:1035C0001F910F910C941B160F931F930091B30141
-:1035D0001091B4012091B5013091B601DC01CB010D
-:1035E00080239123A223B3238093B3019093B4014A
-:1035F000A093B501B093B6011F910F910C941B16C7
-:103600000F931F930091B3011091B4012091B50164
-:103610003091B601DC01CB0180279127A227B32787
-:103620008093B3019093B401A093B501B093B60118
-:103630001F910F910C941B160895CF92DF92EF9279
-:10364000FF920F931F93CF93DF938C01C090B30130
-:10365000D090B401E090B501F090B6018091B7012F
-:103660009091B801A091B901B091BA01C82AD92AA4
-:10367000EA2AFB2ACFE1D0E0D701C6010C2E04C014
-:10368000B695A795979587950A94D2F780FF07C0BE
-:10369000B8018C2F0E947B088130910531F421976D
-:1036A00058F7B80180E00E947B08DF91CF911F910D
-:1036B0000F91FF90EF90DF90CF90089590910C01C3
-:1036C0009923F1F090910D019923D1F0982F9695BF
-:1036D000969596959F3080F5E0910E01F0910F013F
-:1036E000E90FF11D877021E030E0A90102C0440F0D
-:1036F000551F8A95E2F7CA019181892B818308952C
-:1037000020910E0130910F01F90132969FEF40E0B8
-:103710005191851789F09F3F19F4511101C0942FE1
-:103720004F5F4E30A9F79F3F39F0F901E90FF11DC6
-:1037300097FDFA9582830895089590910C0199233D
-:10374000F9F090910D019923D9F0982F96959695BF
-:1037500096959F3028F5E0910E01F0910F01E90F49
-:10376000F11D877021E030E0A90102C0440F551F10
-:103770008A95E2F7CA018095918189238183089512
-:1037800020910E0130910F01F9013296205F3F4FD9
-:103790009081891301C010823196E217F307C1F7B7
-:1037A000089581E090E0E0910E01F0910F01E80FA3
-:1037B000F91F1082019680319105A9F70895909123
-:1037C000CD01892B8093CD01089580959091CD01F5
-:1037D00089238093CD0108951092CD010895909191
-:1037E000CC01892B8093CC01089580959091CC01D8
-:1037F00089238093CC0108951092CC010895809381
-:10380000BB0108951092BB01089580910E01909123
-:103810000F01FC0131969C01205F3F4F80E09191A8
-:1038200091118F5FE217F307D1F70895E0910E0130
-:10383000F0910F018091CD018083E0910E01F09114
-:103840000F0190818091CC01892B80838091BB01F5
-:10385000882361F0E0910E01F0910F019081892B96
-:1038600080830E94051C81111092BB0180910E0182
-:1038700090910F010C94D010CF92DF92EF92FF92B3
-:103880006C01EE24FF24C114D104E104F10421F001
-:10389000C701B60120E101C020E0C72ED82EE92ED5
-:1038A000FF24C114D104E104F10419F0285FC70119
-:1038B000B6016B017C0154E0F694E794D794C79469
-:1038C0005A95D1F7C114D104E104F10419F02C5F29
-:1038D000C701B6016B017C0142E0F694E794D794EE
-:1038E000C7944A95D1F7C114D104E104F10419F049
-:1038F0002E5FC701B601DC01CB01B695A795979560
-:103900008795892B8A2B8B2B09F02F5F822FFF90B5
-:10391000EF90DF90CF9008958091E601843011F10F
-:1039200020E488E190E00FB6F894A89580936000B9
-:103930000FBE2093600083B7817F846083BF83B70D
-:10394000816083BF7894889583B78E7F83BF0FB6DD
-:10395000F894A8958091600088618093600010922F
-:1039600060000FBE089508950C94B31CCF930E947D
-:10397000B41C0E949A060E94B31CC0E08C2F0E94C7
-:103980009007811104C0CF5FCE30C1F701C081E044
-:10399000CF9108950E942D160E94C4100C94BA096C
-:1039A00082E084BD93E095BD9AEF97BD80936E0051
-:1039B00008952FB7F8948091CF019091D001A091F4
-:1039C000D101B091D2012FBF0895CF92DF92EF9233
-:1039D000FF920F931F932FB7F8944091CF0150910E
-:1039E000D0016091D1017091D2012FBF6A017B019A
-:1039F000EE24FF248C0120E030E0C016D106E20660
-:103A0000F30610F4415051099A01281B390BC901E2
-:103A10001F910F91FF90EF90DF90CF9008951F922C
-:103A20000F920FB60F9211248F939F93AF93BF9372
-:103A30008091CF019091D001A091D101B091D2019C
-:103A40000196A11DB11D8093CF019093D001A09349
-:103A5000D101B093D201BF91AF919F918F910F90FF
-:103A60000FBE0F901F9018950E94BC0DF8942FEF79
-:103A700087EA91E6215080409040E1F700C00000C5
-:103A800087E090EBDC018093EF019093F001A0932D
-:103A9000F101B093F2019CE088E10FB6F894A8958B
-:103AA000809360000FBE90936000FFCFEF92FF9273
-:103AB0000F931F93CF93DF93D82FC0E08C2F0E94DA
-:103AC000900700E010E0E82EF12CC701002E02C0A4
-:103AD000959587950A94E2F780FD06C00F5F1F4F0A
-:103AE0000630110591F709C0602F7C2F80E00E94FD
-:103AF00058088D13F3CF81E004C0CF5FCE30F1F6CC
-:103B000080E0DF91CF911F910F91FF90EF9008958A
-:103B1000CF93C82F8CE20E94561D882321F08C2F52
-:103B2000CF910C94561D80E0CF910895CF930E94C1
-:103B3000DD1E811102C00E94C31EC5E6C15049F0BE
-:103B40000E949A068FE39CE90197F1F700C00000FC
-:103B5000F5CF89E20E94881D811113C18AE20E947B
-:103B6000881D81110E94C31E85E00E94881D81115D
-:103B70000E94341D0E94E81E8093CE0187E00E94BF
-:103B8000881D8823A9F18BE10E94881D882351F0AC
-:103B90008091CE0181FB222720F991E0922790FBB2
-:103BA00081F90EC08EE00E94881D882361F080910B
-:103BB000CE0182FB222720F991E0922790FB82F927
-:103BC0008093CE0115C080E10E94881D9091CE01A6
-:103BD000882341F093FB222720F981E0822780FB94
-:103BE00093F904C0892F809580FB90F99093CE01C2
-:103BF0008091CE010E94EC1E0E94FA1E8093E0018B
-:103C000080EE0E94881D882341F08091E001982F6A
-:103C1000909590FB80F98093E00189E30E94881DD4
-:103C2000882359F08091E00181FB222720F991E05F
-:103C3000922790FB81F98093E00182EE0E94881D1B
-:103C4000882359F08091E00182FB222720F991E03E
-:103C5000922790FB82F98093E00186EE0E94881DF6
-:103C6000882359F08091E00183FB222720F991E01D
-:103C7000922790FB83F98093E00183EE0E94881DD8
-:103C8000882359F08091E00184FB222720F991E0FC
-:103C9000922790FB84F98093E00185E30E94881DC0
-:103CA000882359F08091E00185FB222720F991E0DB
-:103CB000922790FB85F98093E00181E30E94881DA3
-:103CC000882359F08091E00186FB222720F991E0BA
-:103CD000922790FB86F98093E00181E10E94881D84
-:103CE000882359F08091E00187FB222720F991E099
-:103CF000922790FB87F98093E0018091E0010E9478
-:103D0000FE1E8091E00187FB882780F980930D01DA
-:103D100087E20E94881DC82F8EE10E94881D8111B4
-:103D2000C2608FE10E94881D8111C46080E20E9400
-:103D3000881D8111C86081E20E94881D8111C061C7
-:103D400082E20E94881D8111C06283E20E94881D68
-:103D50008111C06484E20E94881D882311F0C0682C
-:103D600002C0CC2329F08C2F0E94F51E6C2F03C0BB
-:103D70000E94F11E682F70E080E090E0CF910C94DB
-:103D8000E419CF9108956DEE7EEF80E090E00E94FF
-:103D9000372560E082E090E00E94292560E083E022
-:103DA00090E00E94292560E084E090E00E942925AF
-:103DB00060E085E090E00C94292580E090E00E948E
-:103DC000232521E08D3E9E4F09F020E0822F0895AB
-:103DD00082E090E00C941B25682F82E090E00C9428
-:103DE000292583E090E00C941B25682F83E090E068
-:103DF0000C94292584E090E00C941B25682F84E026
-:103E000090E00C9429258091D50180FF0BC0609132
-:103E1000130185E0689FB00111247595679575952C
-:103E200067952BC081FF09C06091130185E0689FF1
-:103E3000B00111247595679520C082FF07C060917D
-:103E4000130185E0689FB001112417C09091D6013D
-:103E50009923D1F060911201961788F720911301F0
-:103E600085E0289F90011124929FA001939F500DFF
-:103E7000112470E0CA010E94ED246038710540F4FD
-:103E80006115710519F406C065E070E0862F08958C
-:103E90008FE7089581E008958091D50180FF08C0E3
-:103EA0006091110170E0759567957595679521C0D2
-:103EB00081FF06C06091110170E07595679519C08A
-:103EC00082FF04C06091110170E010C09091D60192
-:103ED000992399F0609110019617A0F78091110134
-:103EE000899FC001112470E00E94ED2460387105A3
-:103EF00040F46115710519F406C061E070E0862F89
-:103F000008958FE7089581E00895803F21F40E948D
-:103F1000031F819504C0813F29F40E94031F8093F1
-:103F2000D9010895823F21F40E94031F819504C0A6
-:103F3000833F29F40E94031F8093D8010895893F8D
-:103F400019F40E944C1F05C08A3F31F40E944C1F97
-:103F500081958093DA0108958B3F21F40E944C1FD4
-:103F6000819504C08C3F29F40E944C1F8093DB0193
-:103F70000895843F21F48091D701816017C0853F67
-:103F800021F48091D701826011C0863F21F4809195
-:103F9000D70184600BC0873F21F48091D7018860EE
-:103FA00005C0883F31F48091D70180618093D701AB
-:103FB00008958D3F21F48091D50181600BC08E3F23
-:103FC00021F48091D501826005C08F3F29F4809152
-:103FD000D50184608093D5010895803F39F48091A4
-:103FE000D90187FF6CC01092D90169C0813F29F4C3
-:103FF0008091D9011816BCF362C09091D801823F1C
-:1040000029F497FF5CC01092D80159C0833F19F47E
-:104010001916CCF354C0893F41F48091DA01181687
-:104020000CF04DC01092DA014AC08A3F29F4809109
-:10403000DA0187FF44C0F6CF8B3F39F48091DB0172
-:1040400087FF3DC01092DB013AC08C3F29F480917C
-:10405000DB011816BCF333C0843F21F48091D701F3
-:104060008E7F17C0853F21F48091D7018D7F11C0CD
-:10407000863F21F48091D7018B7F0BC0873F21F4CD
-:104080008091D701877F05C0883F31F48091D701A7
-:104090008F7E8093D70113C08D3F21F48091D5018D
-:1040A0008E7F0BC08E3F21F48091D5018D7F05C09E
-:1040B0008F3F29F48091D5018B7F8093D50180912A
-:1040C000D80181110EC08091D90181110AC080915F
-:1040D000DA01811106C08091DB01811102C01092CA
-:1040E000D601089587ED91E00E94DB100E94D91C53
-:1040F0009093D4018093D30108951F93CF93DF93BE
-:104100008091D3019091D4010E94E51CAC01909163
-:10411000D601992321F02091140130E006C02091AE
-:1041200015018AE0289F900111244217530708F4D3
-:1041300085C08091D801C091D901D091DA01109148
-:10414000DB01811107C0C11175C0D11173C01111FC
-:1041500071C074C09F3F19F09F5F9093D6011816ED
-:1041600024F40E94031F8093D8018091D80187FF17
-:1041700005C00E94031F81958093D8011C1624F46A
-:104180000E94031F8093D9018091D90187FF05C048
-:104190000E94031F81958093D9016091D801662305
-:1041A00031F1C091D901CC2311F1062E000C770B0F
-:1041B000880B990B0E94F42323E333E343E35FE38B
-:1041C0000E9458240E94BC236093D8016C2FCC0F0E
-:1041D000770B880B990B0E94F42323E333E343E32B
-:1041E0005FE30E9458240E94BC236093D9011D16EE
-:1041F00024F40E944C1F8093DA018091DA0187FF3A
-:1042000005C00E944C1F81958093DA01111624F499
-:104210000E944C1F8093DB018091DB0187FF05C06A
-:104220000E944C1F81958093DB01DF91CF911F91FC
-:104230000C9472209F3F09F08FCFA0CFDF91CF91D8
-:104240001F910895E7EDF1E085E0DF011D928A9569
-:10425000E9F71092D6011092D5010895833081F1CB
-:1042600028F4813059F08230D1F00895853009F476
-:1042700049C0B8F1863009F456C0089580911501FF
-:10428000262F30E0280F311D2F3F310524F4680F11
-:104290006093150108958FEF809315010895809123
-:1042A0001401262F30E0280F311D2F3F310524F453
-:1042B000680F6093140108958FEF8093140108959F
-:1042C00080911301262F30E0280F311D2F3F31053B
-:1042D00024F4680F6093130108958FEF8093130106
-:1042E000089580911201262F30E0280F311D2F3FB5
-:1042F000310524F4680F6093120108958FEF8093C5
-:104300001201089580911101262F30E0280F311DF0
-:104310002F3F310524F4680F6093110108958FEF4A
-:1043200080931101089580911001262F30E0280F0D
-:10433000311D2F3F310524F4680F6093100108955B
-:104340008FEF809310010895833011F128F48130AC
-:1043500049F0823091F00895853081F120F1863066
-:10436000C1F1089580911501681720F4861B809390
-:104370001501089510921501089580911401681790
-:1043800020F4861B8093140108951092140108955F
-:1043900080911301681720F4861B80931301089500
-:1043A00010921301089580911201681720F4861B62
-:1043B00080931201089510921201089580911101C5
-:1043C000681720F4861B8093110108951092110143
-:1043D000089580911001681720F4861B80931001C6
-:1043E00008951092100108950F931F938D3109F4D1
-:1043F0006BC008F03FC08E3009F47DC0C0F4873038
-:1044000009F46EC068F4863009F0AFC08091CE0127
-:10441000817F8E7F8093CE0181E08093DD01A6C0F5
-:10442000883009F458C08B3009F49BC09EC0863197
-:1044300009F497C078F4803109F470C0813109F033
-:1044400094C00E942D1690910D0181E089278093E0
-:104450000D0187C0893109F484C08B3109F085C012
-:104460008091CE0181FB222720F991E0922790FBD9
-:1044700081F94AC0853309F45BC048F4873209F4F6
-:1044800057C008F45AC0893209F452C06EC0833450
-:1044900038F48A3308F067C0883309F462C065C015
-:1044A000833409F445C0883409F05FC00E942D169A
-:1044B0000FEF13ED20E3015010402040E1F700C062
-:1044C00000000E94341D4DC00E9476230E94C4103B
-:1044D0000E94BA0946C00E94E81E0E94FA1E41C00E
-:1044E0009091CE01892F817090FF12C0917F9E7FA5
-:1044F0009093CE013BC08091CE0182FB222720F910
-:1045000091E0922790FB82F98093CE01992349F1A3
-:104510008091CE0181608093CE0123C08091CE0135
-:1045200083FB222720F991E0922790FB83F9ECCFBF
-:1045300061E070E080E090E010C08D5141E050E01B
-:1045400060E070E08A019B0104C0000F111F221F70
-:10455000331F8A95D2F7C901B8010E94E4190E945D
-:104560002D1681E003C08953E9CF80E01F910F91A0
-:10457000089580E008950C94B922CF93C82F8091BC
-:10458000DD01813079F018F08230E9F187C0E091E7
-:104590000E01F0910F018081813169F0823209F0C2
-:1045A0007FC009C0E0910E01F0910F01808181313F
-:1045B00011F0823261F48C2F0E94BB22811104C061
-:1045C0008C2F0E94F4211DC081E090E01AC08C2F36
-:1045D0000E94B922811114C0C43179F048F4CB3063
-:1045E00079F0C03109F060C082E08093DD0108C03D
-:1045F000C93219F0C83321F057C01092DD0154C000
-:1046000081E0817053C0C93289F118F5C43171F16C
-:10461000A8F4C73009F046C08AE08093150194E100
-:104620009093140193E0909313018093120188E01A
-:104630008093110188E28093100134C0CE51C630BE
-:1046400088F5EC2FF0E0E65DFE4F80818093DC0181
-:1046500029C0CE34E9F020F4CB3421F56AE013C050
-:10466000C13579F0C235F1F461E00DC08091DC0113
-:10467000882319F01092DC0115C081E08093DD01E0
-:1046800015C061E006C08091DC010E942E210AC0A5
-:104690006AE08091DC010E94A42104C01092DD0137
-:1046A00080E004C081E002C080E0ABCFCF910895EC
-:1046B000E1E8F0E080818860808380818160808390
-:1046C0008FB7F89493E09093890090ED90938800D1
-:1046D0008FBF0895EFE6F0E08081826080830895C7
-:1046E000EFE6F0E080818D7F80830895EFE6F0E0D3
-:1046F000908182E08927808308951F920F920FB6E0
-:104700000F9211242F933F934F935F936F937F9357
-:104710008F939F93AF93BF93EF93FF938091DE01AD
-:104720009091DF0101969093DF018093DE0181116A
-:1047300003C082E00E94BA09E091DF01E695E695A8
-:10474000F0E0E156F84FE4918091DE018E1303C052
-:1047500080E00E94BA09FF91EF91BF91AF919F91C4
-:104760008F917F916F915F914F913F912F910F901A
-:104770000FBE0F901F9018950E94C3236894B1112B
-:104780000C94522408950E94372488F09F5798F083
-:10479000B92F9927B751B0F0E1F0660F771F881F46
-:1047A000991F1AF0BA95C9F714C0B13091F00E9460
-:1047B0005124B1E008950C945124672F782F882755
-:1047C000B85F39F0B93FCCF3869577956795B39587
-:1047D000D9F73EF490958095709561957F4F8F4FF6
-:1047E0009F4F0895E89409C097FB3EF490958095FB
-:1047F000709561957F4F8F4F9F4F9923A9F0F92FA7
-:1048000096E9BB279395F695879577956795B79524
-:10481000F111F8CFFAF4BB0F11F460FF1BC06F5F0A
-:104820007F4F8F4F9F4F16C0882311F096E911C01C
-:10483000772321F09EE8872F762F05C0662371F03D
-:1048400096E8862F70E060E02AF09A95660F771F51
-:10485000881FDAF7880F9695879597F9089557FD81
-:104860009058440F551F59F05F3F71F04795880FDE
-:1048700097FB991F61F09F3F79F087950895121675
-:1048800013061406551FF2CF4695F1DF08C0161621
-:1048900017061806991FF1CF8695710561050894D2
-:1048A0000895E894BB2766277727CB0197F90895E9
-:1048B0000E946B240C94DC240E94CE2438F00E94C9
-:1048C000D52420F0952311F00C94C5240C94CB240E
-:1048D00011240C9452240E942F2470F3959FC1F34D
-:1048E000950F50E0551F629FF001729FBB27F00D9E
-:1048F000B11D639FAA27F00DB11DAA1F649F6627F3
-:10490000B00DA11D661F829F2227B00DA11D621F41
-:10491000739FB00DA11D621F839FA00D611D221FFB
-:10492000749F3327A00D611D231F849F600D211DDF
-:10493000822F762F6A2F11249F5750409AF0F1F062
-:1049400088234AF0EE0FFF1FBB1F661F771F881FCB
-:1049500091505040A9F79E3F510580F00C94C5241A
-:104960000C9452245F3FE4F3983ED4F386957795F8
-:104970006795B795F795E7959F5FC1F7FE2B880F71
-:10498000911D9695879597F9089597F99F6780E807
-:1049900070E060E008959FEF80EC089500240A9491
-:1049A0001616170618060906089500240A9412160A
-:1049B0001306140605060895092E0394000C11F43D
-:1049C000882352F0BB0F40F4BF2B11F460FF04C0EA
-:1049D0006F5F7F4F8F4F9F4F089597FB072E16F401
-:1049E000009407D077FD09D00E94072507FC05D069
-:1049F0003EF4909581959F4F0895709561957F4FF6
-:104A00000895EE0FFF1F0590F491E02D0994AA1B65
-:104A1000BB1B51E107C0AA1FBB1FA617B70710F0A9
-:104A2000A61BB70B881F991F5A95A9F780959095DB
-:104A3000BC01CD010895F999FECF92BD81BDF89AD0
-:104A4000992780B50895A8E1B0E042E050E00C94C9
-:104A50003E25262FF999FECF1FBA92BD81BD20BDFC
-:104A60000FB6F894FA9AF99A0FBE019608950E942B
-:104A70002925272F0C942A25DC01CB01FC01F9996B
-:104A8000FECF06C0F2BDE1BDF89A319600B40D929A
-:0C4A900041505040B8F70895F894FFCF53
-:104A9C002002BB094B0A260AF209BE090101BC011E
-:104AAC0028080A03140A3F4D363960071307DD0640
-:104ABC00A4063706500669068206010203040506A1
-:044ACC0007080900CE
-:00000001FF
+:100000000C94F0030C9434040C9434040C943404D5
+:100010000C9434040C9434040C9434040C94340480
+:100020000C9434040C9434040C94210E0C94F30EB0
+:100030000C9434040C9434040C9434040C94340460
+:100040000C9434040C9478230C9434040C943404ED
+:100050000C9434040C94091D0C9434040C94340452
+:100060000C9434040C9434040C9434040C94340430
+:100070000C9434040C9434040C9434040C94340420
+:100080000C9434040C9434040C9434040C94340410
+:100090000C9434040C9434040C9434040C94340400
+:1000A0000C9434040C9434040C94340444044E042E
+:1000B00066047E04C604CC04ED04D204E804DE0425
+:1000C000E304D804AE049604F204600F820F7010AB
+:1000D000820F7010C70FEA0F70103F1052103413C8
+:1000E000341363136313A613E413FD15FD15FD13F9
+:1000F000FD15FE14FE14D115FD15FD15E81501E1E1
+:100100000137023702E10138023801E201250225F8
+:1001100002E20001E10137023702E1013802380151
+:10012000E10130023002E10001E10137023702E172
+:100130000138023801E10107020702E1000135023E
+:1001400035012002200001E10137023702E10138C8
+:10015000023801E10125022502E10001E101360238
+:100160003602E10138023801E10125022502E100F1
+:1001700001E10136023602E10138023801E10126CF
+:10018000022602E10001E10137023702E1013802F3
+:100190003801E10126022602E10002E002E201301C
+:1001A00002300002E002E20001E001E20002E002AF
+:1001B000E3016402640002E002E30001E001E30005
+:1001C00002E002E2012E022E02E10002E002E10260
+:1001D000E20001E001E101E20002E001E3010602C8
+:1001E0000602E30002E00001E00002E001E3011981
+:1001F000021902E30002E00001E0000000F0A1F0BB
+:10020000A329002B00E200E100358100001E00144C
+:100210000004001D710D304D831F001A0016001BD5
+:10022000000C304C00200008000700060052002A95
+:1002300000210015000900190051004A0022001792
+:10024000000A00050000000330E101E3000000E2C5
+:1002500000000002543100E7000000E60000000446
+:100260005423001C000B00110000002E7F240018F6
+:10027000000D00100050004B0025000C000E003651
+:10028000004F002C00260012000F003700E1082864
+:10029000002700130033003871E1044E002D002FB9
+:1002A000003474E50030810000010001000100010C
+:1002B00000010000003A003500310001000100019A
+:1002C000003B0035022102350001004C003C001EBD
+:1002D0000224062202010001003D002D0224022416
+:1002E00004010001003E000100370011040000017C
+:1002F000000100010000000100000001000E3001BB
+:100300000000000100000068003F002406240224D1
+:100310000400004500400022042502110431026956
+:100320000041002304260264005000010042003511
+:100330000025045200510001004300350226043814
+:10034000004F006A0044001E02310021020100003B
+:100350000001000100010001000100000001000196
+:100360000001000100010001000100F400F200FBA7
+:1003700000010001000100F000F100FA000100019D
+:10038000000100F500F300FC00010001000100F98C
+:1003900000FA00F600000001000100010000000169
+:1003A0000000000100A800010000000100000001A1
+:1003B0000001000100A900AA0000000100010001E5
+:1003C000000100010001000100010001000100AC7A
+:1003D000000100B600010001000100AB0050000167
+:1003E00000010001000100520051000100AE0001B7
+:1003F00000010001004F00000001000100010001A8
+:1004000000010000000100010001000100010001E5
+:1004100000010001000100010001000100010001D4
+:1004200000010001000100010001000100010001C4
+:1004300000010001000100010001000100000001B5
+:100440000001000100000001000000010004300173
+:1004500000000001000000010005300630093001F5
+:1004600000000001000A300B3008300100010001DB
+:10047000000100073001000100010001000100013E
+:100480000001000100010001000100010001000164
+:100490000001000100010001000100010001000055
+:1004A0000001000100010001000100000001000145
+:1004B00000010001000100010001000100500001E5
+:1004C0000001000100010052005100010001000183
+:1004D00000010001004F00010001000100010001C6
+:1004E0000001000100000001000100010000000106
+:1004F00000000001000100010000000100000001F7
+:10050000003F00520051002302000001004000247F
+:100510000021001E00270001004100250022001FCD
+:1005200000370001004200260023002000360001B1
+:10053000004300300230002402270201004400453D
+:1005400000380001000100000001000100E100018D
+:1005500000E0000000010001000100010001003D79
+:100560000001000100010001000100E000010001A4
+:10057000000100010001002C000100010001000148
+:100580000001003C00010001000100010000003AF0
+:1005900000010001000000010000003B000E3001DE
+:1005A0000000000100000001000100010001000145
+:1005B0000000000100010001000100010001000134
+:1005C0000001000100010001000100010001000123
+:1005D0000001000100010001000100010001000113
+:1005E0000001000100010001000100010001000004
+:1005F0000016034500720067006F0044006F00782A
+:1006000000200045005A00000016034500720067F4
+:10061000006F0044006F007800200045005A000081
+:10062000000403090409026D00040100A0FA090492
+:1006300000000103010100092111010001223F0016
+:100640000705810308000A090401000103010200F3
+:10065000092111010001224D000705820308000A4B
+:100660000904020001030000000921110100012218
+:1006700036000705830308000A090403000103008C
+:10068000000009211101000122390007058403102F
+:1006900000011201100100000008EDFE0713010027
+:1006A0000102000105010906A101050719E029E77A
+:1006B0001500250195087501810205081901290514
+:1006C00095057501910295017503910105071900C2
+:1006D000297715002501957875018102C00501096A
+:1006E00080A101850216010026B7001A01002AB771
+:1006F00000751095018100C0050C0901A101850359
+:10070000160100269C021A01002A9C027510950110
+:100710008100C005010902A1010901A10005091913
+:1007200001290515002501950575018102950175C1
+:100730000381010501093009311581257F95027575
+:1007400008810609381581257F9501750881060500
+:100750000C0A38021581257F950175088106C0C0F5
+:1007600005010906A101050719E029E71500250182
+:100770009508750181029501750881010508190127
+:1007800029059505750191029501750391010507EC
+:10079000190029FF150025FF950675088100C00086
+:1007A00000000000000000000000010204060A0F23
+:1007B00017202C3A4A5D71879DB3C7DAE9F5FCFF33
+:1007C000FCF5E9DAC7B39D87715D4A3A2C20170F13
+:1007D0000A06040201000000000000000000000002
+:1007E00011241FBECFEFDAE0DEBFCDBF04B603FE9B
+:1007F00024C08091F0019091F101A091F201B0919B
+:10080000F3018730904BA740B04BB9F41092F00140
+:100810001092F1011092F2011092F30114BE84B70C
+:10082000877F84BF88E10FB6F894809360001092B0
+:1008300060000FBEE0E0FFE3099511E0A0E0B1E049
+:10084000E4E7FAE402C005900D92A433B107D9F7AA
+:1008500011E0A4E3B1E001C01D92A03FB107E1F7B0
+:100860000E94650B0C9438250C940000462F50E034
+:100870004F30510508F0DEC0DC01FA01EA5AFF4FA3
+:1008800012968C910C94ED24882321F085EE0E9421
+:10089000D111D0C085EE0E949912CCC0882349F0B6
+:1008A0000E94D31C909335018093340188EF91E02E
+:1008B000089580913401909135010E94DF1C8739A1
+:1008C00091050CF0A8C08AEE91E00895882349F0C4
+:1008D0000E94D31C909335018093340187EE91E000
+:1008E000089580913401909135010E94DF1C873971
+:1008F00091050CF093C089ED91E00895882349F0AB
+:100900000E94D31C909335018093340182ED91E0D5
+:10091000089580913401909135010E94DF1C873940
+:1009200091050CF07EC080EC91E00895882349F099
+:100930000E94D31C90933501809334018BEB91E09E
+:10094000089580913401909135010E94DF1C873910
+:1009500091050CF069C08DEA91E00895882349F073
+:100960000E94D31C909335018093340188EA91E072
+:10097000089580913401909135010E94DF1C8739E0
+:1009800091050CF054C08AE991E00895882309F498
+:1009900051C085E891E00895882309F44BC080E7B1
+:1009A00091E00895882309F445C08BE591E008950E
+:1009B000882309F43FC086E491E008958823D1F1AB
+:1009C0008DE391E008958823A9F188E291E00895EC
+:1009D000882381F183E191E00895882359F18EEF16
+:1009E00090E00895882331F18091B3019091B40192
+:1009F000A091B501B091B60120E2822780729927BB
+:100A0000AA27BB278093B3019093B401A093B501AB
+:100A1000B093B6010FC085EF91E0089584EE91E0A8
+:100A200008958BEC91E0089586EB91E0089583EAB8
+:100A300091E0089580E090E0089508956091B301F9
+:100A40007091B4018091B5019091B6010E94381C5B
+:100A500056985E9825982D9826982E9827982F9826
+:100A60008330C1F028F4813041F0823049F008959C
+:100A7000843049F0853051F00895259A2D9A0895D3
+:100A8000269A2E9A0895259A2D9A04C0259A2D9A71
+:100A9000269A2E9A279A2F9A08950C941E055698F6
+:100AA0005E9825982D9826982E9827982F988FEF46
+:100AB00090E0909389008093880090938B008093BE
+:100AC0008A0090938D0080938C00259A2D9A2FEFA9
+:100AD00080E792E0215080409040E1F700C00000A4
+:100AE000269A2E9A2FEF80E792E021508040904086
+:100AF000E1F700C00000279A2F9A2FEF80E792E0DD
+:100B0000215080409040E1F700C0000025982D98CA
+:100B10002FEF80E792E0215080409040E1F700C045
+:100B2000000026982E982FEF80E792E02150804019
+:100B30009040E1F700C0000027982F9856985E98E3
+:100B400025982D9826982E9827982F98089589EA09
+:100B50008093800089E08093810024982C983F98AE
+:100B60008AB18F748AB96E98479A8BB1806B8BB9B2
+:100B7000769A0E944F050C941D0580E28093000137
+:100B80008091360181110EC00E940C0681E0809395
+:100B900036012FEF83ED90E3215080409040E1F744
+:100BA00000C0000080E40E941206809300018111C1
+:100BB0002EC00E943C0680930001811128C00E9433
+:100BC0003C0680930001811122C08FE30E943C0605
+:100BD0008093000181111BC00E94340680E40E94B2
+:100BE000120680930001811112C08CE00E943C0625
+:100BF0008093000181110BC00E943C06809300018C
+:100C0000811105C08FE30E943C06809300010E9481
+:100C100034068091000108951092B9008AE0809313
+:100C2000B800089594EA9093BC009091BC0097FF9F
+:100C3000FCCF9091B900987F983021F0903111F05D
+:100C400081E008958093BB0084E88093BC0080918C
+:100C5000BC0087FFFCCF8091B900887F883111F0FC
+:100C6000803471F780E0089584E98093BC0080911E
+:100C7000BC0084FDFCCF08958093BB0084E8809382
+:100C8000BC008091BC0087FFFCCF9091B900987F99
+:100C900081E0983209F480E0089584E88093BC00F4
+:100CA0008091BC0087FFFCCF8091BB0008958091AC
+:100CB0000001811115C080E40E941206809300019A
+:100CC00081110CC082E10E943C06809300018111D9
+:100CD00005C08FEF0E943C06809300010E943406FD
+:100CE00084B1807F84B985B1807F85B98AB1837FE3
+:100CF0008AB98BB1837F8BB93E98469808950E943C
+:100D0000BD05809300010E94570680B38C7080BBA4
+:100D100081B3836F81BBA8E3B1E0E6E4F1E08EE04C
+:100D20008E0F11921D928E13FCCF0C94A705BF92CB
+:100D3000CF92DF92EF92FF920F931F93CF93DF93A7
+:100D400080910001882379F0809137018F5F809333
+:100D50003701811108C00E94BD05809300018111F7
+:100D600002C00E944F0508E311E0C0E0D0E0DD249E
+:100D7000D39482E0C82EEE24E394F12CC730D10541
+:100D800000F580910001811164C080E40E94120688
+:100D900080930001811112C082E10E943C06809381
+:100DA000000181110BC0C7010C2E01C0880F0A94ED
+:100DB000EAF780950E943C06809300010E94340669
+:100DC00048C0CA30A1F028F4C83059F0C93061F0E9
+:100DD00005C0CC3089F070F0CD3089F0209A289889
+:100DE00010C0219A29980DC0229A2A980AC0239AE5
+:100DF0002B9807C0529A01C0539A5B9802C03E9A42
+:100E0000469890EA9A95F1F79FB1799902C082E0ED
+:100E100001C080E091709D25982B7C9902C084E0F0
+:100E200001C080E0892B7D9902C038E001C030E02C
+:100E3000832B7E9902C020E101C020E0822B9FB16C
+:100E40009095991F9927991F9295990F907E892BBC
+:100E50000FC080910001811149C080E40E941206F8
+:100E600080930001882379F1B12C0E9434068B2DE8
+:100E7000F8019081981719F08083C09201010E94B7
+:100E8000570621960F5F1F4FCE30D10509F076CF60
+:100E900080910101882361F18150809301018823B1
+:100EA00039F08FE99FE00197F1F700C0000020C002
+:100EB000A6E4B1E0E8E3F1E0CF01825F91919D9378
+:100EC0008E13FCCF15C083E10E943C068093000185
+:100ED0008111CACF81E40E94120680930001811122
+:100EE000C3CF0E944D06B82EB094BFCF80E0C0CFD4
+:100EF0000E944D0581E0DF91CF911F910F91FF90EE
+:100F0000EF90DF90CF90BF900895E82FF0E0EA5B7C
+:100F1000FE4F8081089508958B3B910578F4883ABF
+:100F2000910540F5853A9105D0F48430910508F09B
+:100F3000B1C08130910509F4ADC06BC0803E910510
+:100F400008F467C0883E910508F4A4C09C01205FA6
+:100F500031092031310508F05CC090650895853A6B
+:100F6000910509F459C0863A910509F058C082E804
+:100F700090E40895883A910509F454C0893A91059E
+:100F800009F453C08A3A910509F452C08B3A91058D
+:100F900009F451C08C3A910509F450C08D3A91057D
+:100FA00009F44FC0803B910509F44EC08E3A91057B
+:100FB00009F44DC08F3A910509F44CC0813B91056D
+:100FC00009F44BC0823B910509F44AC0833B91056B
+:100FD00009F449C0843B910509F448C0853B91055B
+:100FE00009F447C0863B910509F446C0873B91054B
+:100FF00009F445C0883B910509F444C0893B91053B
+:1010000009F443C08A3B910509F442C080E094E4AE
+:10101000089580E090E0089581E890E4089583E8E1
+:1010200090E4089582EE94E4089589EE94E408959E
+:101030008AEE94E4089585EB94E4089586EB94E4B5
+:10104000089587EB94E408958CEC94E408958DEC76
+:1010500094E4089583E895E408958AE895E4089572
+:1010600082E995E4089584E995E4089581E296E49F
+:10107000089583E296E4089584E296E4089585E273
+:1010800096E4089586E296E4089587E296E408954A
+:101090008AE296E40895089596E0799FF00111247C
+:1010A00094E5899FE00DF11D1124E60FF11DEE0F6F
+:1010B000FF1FEF5FFD4F859194910895880F991F51
+:1010C000FC01E558FF4F859194910895880F991F71
+:1010D000FC01E550FE4F85919491089526E0729FA2
+:1010E000F001112444E5849FE00DF11D1124E60F69
+:1010F000F11DEE0FFF1FEF5FFD4F859194919C0155
+:101100003A9521154FE1340708F41AC13F512115D2
+:10111000304120F49F700E94660808959C0130536E
+:101120002115304118F49927906C0895811520E518
+:10113000920769F40E941F164FEF84E39CE0415030
+:1011400080409040E1F700C000000C942E1D8130DB
+:1011500020E5920731F48091CE0181608093CE0129
+:1011600008959C0130552115304108F051C0292FB8
+:1011700033272F70332721303105D9F4AC01437068
+:10118000552702C0220F331F4A95E2F73C68AC0195
+:1011900064E0440F551F6A95E1F744275370242BF0
+:1011A000352B73E0880F991F7A95E1F780769927A0
+:1011B0001DC02230310529F4982F8827816F906A4D
+:1011C000089523303105A9F4AC014370552721E07F
+:1011D00030E002C0220F331F4A95E2F73C6843E03B
+:1011E000880F991F4A95E1F7807E9770822B932B89
+:1011F000089524303105E1F4AC014370552721E016
+:1012000030E002C0220F331F4A95E2F73A68E7CF79
+:101210009C0130572115304118F49F709062089559
+:101220009C0130582115304118F49F70906A089540
+:10123000803E9105E0F4803C910558F5813391059D
+:1012400009F46FC048F48932910509F463C08A3209
+:10125000910509F46DC072C089339105E9F08238B7
+:101260009105D1F08533910509F44DC067C0833EE7
+:10127000910581F138F4803E9105B9F0823E9105E7
+:10128000D9F05CC0863E910561F1873E9105A1F1E0
+:1012900055C00E945E0808952091E10120FD02C022
+:1012A00021FF4CC080EE90E049C08091E10180FFB9
+:1012B000F9CF89E390E042C08091E10182FF0EC046
+:1012C0008091E10184FF03C080E090E037C083EEAD
+:1012D00090E034C08091E10182FFF2CF82EE90E095
+:1012E0002DC08091E10183FF0BC08091E10184FD5D
+:1012F000EBCF87EE90E022C08091E10183FFF5CF34
+:1013000086EE90E01BC08091E10185FF07C089E275
+:1013100090E014C08091E10185FFF9CF85E390E072
+:101320000DC08091E10186FF07C08AE290E006C00F
+:101330008091E10186FFF9CF81E390E00E948C0764
+:10134000089508950C94A109809164010895CF93A4
+:10135000DF9300D01F92CDB7DEB79C018091E701EB
+:10136000843019F593E099833B832A839093E900B5
+:101370008FEF9091E800815095FD06C095ED9A950C
+:10138000F1F700008111F5CF8091E80085FF0DC0D5
+:1013900040E050E063E070E0CE0101960E94110C45
+:1013A0008091E8008E778093E8000F900F900F9067
+:1013B000DF91CF910895CF93DF9300D01F92CDB7E7
+:1013C000DEB72091E701243021F522E029839B83B9
+:1013D0008A8383E08093E9008FEF9091E800815049
+:1013E00095FD06C095ED9A95F1F700008111F5CFB6
+:1013F0008091E80085FF0DC040E050E063E070E0C0
+:10140000CE0101960E94110C8091E8008E778093A6
+:10141000E8000F900F900F90DF91CF9108952091E9
+:10142000E7012430F1F422E02093E9002FEF30911E
+:10143000E800215035FD06C035ED3A95F1F7000082
+:101440002111F5CF2091E80025FF0BC040E050E0CE
+:1014500065E070E00E94110C8091E8008E77809327
+:10146000E8000895CF93DF93EC019091E701943069
+:1014700009F046C080910C018823D9F080910D01BC
+:101480008823B9F09093E9008FEF9091E8008150A4
+:1014900095FD06C095E19A95F1F700008111F5CF11
+:1014A0008091E80085FF2CC040E050E060E170E0F2
+:1014B00017C081E08093E9008FEF9091E8008150A0
+:1014C00095FD06C095ED9A95F1F700008111F5CFD5
+:1014D0008091E80085FF14C040E050E068E070E0D3
+:1014E000CE010E94110C8091E8008E778093E80075
+:1014F00080E1FE01A4E5B1E001900D928A95E1F74B
+:10150000DF91CF9108958091E601811109C00E9479
+:10151000A60D0E94030E8091E20084608093E20099
+:1015200008951092E601089508950C9465230E9491
+:10153000C41C0E946B230E94A9100C94A20942E0D3
+:1015400061EC81E00E94200D42E061EC82E00E94AB
+:10155000200D42E061EC83E00E94200D42E161EC4D
+:1015600084E00C94200D8091E901833009F455C08A
+:1015700030F4813071F0823009F48EC008958A30E1
+:1015800009F47AC08B3009F460C0893009F09CC03E
+:1015900020C08091E801813A09F096C08091E8006E
+:1015A000877F8093E8008091EC019091ED01892B79
+:1015B00021F460E184E591E003C060E080E090E028
+:1015C00070E00E945C0C8091E8008B778093E800CB
+:1015D00008958091E801813209F076C08091EC0194
+:1015E0009091ED01009719F0039709F06DC080917B
+:1015F000E800877F8093E8008091E80082FD05C0C5
+:101600008091E7018111F8CF5FC08091F100809354
+:1016100064018091E8008B7753C08091E801813AA2
+:1016200009F052C08091EC019091ED01892B09F0F5
+:101630004BC08091E800877F8093E8008091E800AC
+:1016400080FFFCCF80910C0136C08091E80181328F
+:10165000D9F58091EC019091ED01892BA9F580914C
+:10166000E800877F8093E8000E94550D8091EA0191
+:1016700080930C010C941F168091E801813221F5B2
+:101680008091E800877F8093E8000E94550D80914B
+:10169000EB018093650108958091E801813AA1F4FE
+:1016A0008091E800877F8093E8008091E80080FFC8
+:1016B000FCCF809165018093F1008091E8008E77E6
+:1016C0008093E8000C94550D089584B7877F84BFFC
+:1016D00088E10FB6F89480936000109260000FBE0E
+:1016E00090E080E80FB6F8948093610090936100D9
+:1016F0000FBE0E94F8100E94A60D0E94030E80915A
+:10170000E20084608093E20078940E9489100E9435
+:10171000FA1082E091E00E94A4100E94532380916D
+:10172000E701853069F40E94881C8091E5018823D7
+:10173000B1F30E94B01C882391F30E94FB0BEFCF02
+:101740000E940011ECCF292F332723303105C9F037
+:1017500064F42130310581F02230310509F043C0B5
+:101760008DE690E025E236E042C021323105F1F00D
+:101770002232310541F137C082E190E022E936E0C2
+:1017800036C099278130910541F08230910541F0B2
+:10179000892B49F5E1E2F6E005C0E9E0F6E002C098
+:1017A000E1EFF5E0849190E09F0121C06430D8F42E
+:1017B000E62FF0E0EE0FFF1FEE5DFE4F208131813E
+:1017C00089E090E014C0643070F470E0FB01EE0F2B
+:1017D000FF1FE65EFE4F20813181FB01EA5EFE4F76
+:1017E000808190E004C080E090E020E030E0FA01E9
+:1017F00031832083089580E189BD82E189BD09B4E8
+:1018000000FEFDCF8091D8008F7D8093D80080911D
+:10181000E00082608093E0008091E00081FDFCCFD9
+:101820000895CF92DF92EF92FF920F931F93CF9381
+:10183000DF93EC018B016A010E94740D811133C0AA
+:10184000C114D10439F0F60180819181081B190B74
+:10185000C80FD91FE12CF12C0115110519F1809148
+:10186000E80085FD16C08091E8008E778093E8003F
+:10187000C114D10449F0F60180819181E80EF91E6E
+:10188000F182E08285E00FC00E94740D882321F36D
+:101890000AC089918093F10001501109FFEFEF1AFE
+:1018A000FF0ADACF80E0DF91CF911F910F91FF9077
+:1018B000EF90DF90CF9008952091EE013091EF01ED
+:1018C0002617370748F06115710539F42091E800B3
+:1018D0002E772093E80001C0B90140E06115710541
+:1018E000A9F12091E701222309F443C0253009F42E
+:1018F00042C02091E80023FD40C02091E80022FD75
+:1019000032C02091E80020FFE9CF4091F300209100
+:10191000F20030E0342BFC01CF016115710559F064
+:101920002830310540F481918093F10061507109B4
+:101930002F5F3F4FF1CF41E02830310509F040E003
+:101940002091E8002E772093E800C8CF4111C9CF3D
+:101950000AC08091E701882361F0853061F08091B1
+:10196000E80083FD0AC08091E80082FFF2CF80E0AA
+:10197000089582E0089583E0089581E0089520911C
+:10198000EE013091EF012617370748F06115710518
+:1019900039F42091E8002E772093E80001C0B901C6
+:1019A000FC0120E06115710591F18091E701882328
+:1019B00009F440C0853009F43FC08091E80083FD00
+:1019C0003DC08091E80082FD2FC08091E80080FF3B
+:1019D000E9CF2091F3008091F20090E0922B611505
+:1019E000710559F08830910540F424912093F1005D
+:1019F0003196615071090196F2CF21E0089709F004
+:101A000020E08091E8008E778093E800CBCF211111
+:101A1000CCCF0AC08091E701882361F0853061F066
+:101A20008091E80083FD0AC08091E80082FFF2CF38
+:101A300080E0089582E0089583E0089581E00895AC
+:101A4000982F973058F59093E900981739F07091D6
+:101A5000EC002091ED005091F00003C0242F762F70
+:101A600050E021FF19C03091EB003E7F3093EB0036
+:101A70003091ED003D7F3093ED003091EB0031600F
+:101A80003093EB007093EC002093ED005093F00046
+:101A90002091EE0027FF07C09F5FD3CF8F70809308
+:101AA000E90081E0089580E008958091E80187FFD2
+:101AB00011C08091E80082FD05C08091E70181118D
+:101AC000F8CF11C08091E8008B770BC08091E701BF
+:101AD000882349F08091E80080FFF8CF8091E800EA
+:101AE0008E778093E80008952091E4003091E5001E
+:101AF00095E64091EC00842F817040FF22C08091D8
+:101B0000E80080FD1CC08091E701882391F08530BA
+:101B100091F08091EB0085FD10C04091E400509160
+:101B2000E5004217530729F39A01915011F784E019
+:101B3000089582E0089583E0089581E0089580E0AB
+:101B400008954091E80042FFDECF08950E94140EF0
+:101B50000E941C0EE0EEF0E0808181608083E8ED61
+:101B6000F0E080818F77808319BCA7EDB0E08C9185
+:101B70008E7F8C9380818F7E80831092E601089502
+:101B80000F931F93CF93DF930E94140E0E941C0E9D
+:101B9000C8EDD0E088818F778883888180688883CA
+:101BA00088818F7D888319BC1092E7011092E30130
+:101BB0001092E5011092E40100EE10E0F80180813E
+:101BC0008B7F808388818160888342E060E080E051
+:101BD0000E94200DE1EEF0E080818E7F8083E2EEB6
+:101BE000F0E0808181608083808188608083F8015B
+:101BF00080818E7F8083888180618883DF91CF910F
+:101C00001F910F910895E8EDF0E080818F7E808331
+:101C1000E7EDF0E080818160808384E082BF81E035
+:101C20008093E6010C94C00DE8EDF0E080818E7F9A
+:101C300080831092E20008951092DA001092E10081
+:101C400008951F920F920FB60F9211242F933F9376
+:101C50004F935F936F937F938F939F93AF93BF93B4
+:101C6000EF93FF938091E10082FF0BC08091E2002F
+:101C700082FF07C08091E1008B7F8093E1000E948A
+:101C800088108091DA0080FF1FC08091D80080FF0B
+:101C90001BC08091DA008E7F8093DA008091D9009A
+:101CA00080FF0DC080E189BD82E189BD09B400FEDD
+:101CB000FDCF81E08093E7010E94830A05C019BC33
+:101CC0001092E7010E94910A8091E10080FF19C003
+:101CD0008091E20080FF15C08091E2008E7F8093AA
+:101CE000E2008091E20080618093E2008091D80060
+:101CF00080628093D80019BC85E08093E7010E9440
+:101D0000950A8091E10084FF30C08091E20084FF59
+:101D10002CC080E189BD82E189BD09B400FEFDCF00
+:101D20008091D8008F7D8093D8008091E1008F7ED4
+:101D30008093E1008091E2008F7E8093E2008091A9
+:101D4000E20081608093E2008091E301882311F03A
+:101D500084E007C08091E30087FD02C081E001C0FC
+:101D600083E08093E7010E94970A8091E10083FF5E
+:101D700029C08091E20083FF25C08091E100877F28
+:101D80008093E10082E08093E7011092E30180916B
+:101D9000E1008E7F8093E1008091E2008E7F80934E
+:101DA000E2008091E20080618093E20042E060E026
+:101DB00080E00E94200D8091F00088608093F00008
+:101DC0000E94940AFF91EF91BF91AF919F918F91E3
+:101DD0007F916F915F914F913F912F910F900FBE27
+:101DE0000F901F9018951F920F920FB60F9211240B
+:101DF0002F933F934F935F936F937F938F939F9313
+:101E0000AF93BF93CF93DF93EF93FF93C091E9001C
+:101E1000CF708091EC00D82FD17080FDD0E8109267
+:101E2000E9008091F000877F8093F00078940E9411
+:101E3000370F1092E9008091F00088608093F000E5
+:101E4000CD2BCF70C093E900FF91EF91DF91CF913F
+:101E5000BF91AF919F918F917F916F915F914F91C2
+:101E60003F912F910F900FBE0F901F9018951F93C9
+:101E7000CF93DF93CDB7DEB7AA970FB6F894DEBF46
+:101E80000FBECDBFE8EEF1E088E08E0F9091F1003B
+:101E900091938E13FBCF0E94B30A8091E80083FFD9
+:101EA0001FC18091E8019091E901492F50E04A302B
+:101EB000510508F015C1FA01EB59FF4F0C94ED24C0
+:101EC000803881F0823809F00BC18091EC018F706D
+:101ED0008093E9008091EB0085FB882780F91092C0
+:101EE000E90006C08091E4019091E50191118260C2
+:101EF0009091E800977F9093E8008093F100109212
+:101F0000F100C8C0282F2D7F09F0EAC0882319F0FE
+:101F1000823061F0E5C08091EA01813009F0E0C0D3
+:101F2000933009F080E08093E5012BC08091EA01B5
+:101F3000811127C08091EC018F7009F4D1C080938A
+:101F4000E9002091EB0020FF1CC0933021F4809128
+:101F5000EB00806214C09091EB0090619093EB00D5
+:101F600021E030E0A90102C0440F551F8A95E2F735
+:101F70004093EA001092EA008091EB008860809321
+:101F8000EB001092E9008091E800877F86C0811104
+:101F9000A7C01091EA011F778091E3008078812B20
+:101FA0008093E3008091E800877F8093E8000E949F
+:101FB000550D8091E80080FFFCCF8091E3008068A0
+:101FC0008093E300111102C082E001C083E080939E
+:101FD000E70186C08058823008F082C08091EA0113
+:101FE0009091EB018C3D53E0950779F583E08A836E
+:101FF0008AE289834FB7F894DE01139620E03EE031
+:1020000051E2E32FF0E050935700E49120FF03C02A
+:10201000E295EF703F5FEF708E2F90E0EA3010F0A6
+:10202000C79601C0C0968D939D932F5F243149F7C9
+:102030004FBF8091E800877F8093E8006AE270E0FC
+:10204000CE0101960E945C0C14C0AE014F5F5F4F41
+:102050006091EC010E94A30BBC01892B09F440C0E4
+:102060009091E800977F9093E80089819A810E947F
+:10207000BF0C8091E8008B778093E80031C08038F6
+:1020800079F58091E800877F8093E8008091E301F3
+:102090008093F1008091E8008E778093E8000E94A1
+:1020A000550D1EC081111CC09091EA019230C0F400
+:1020B0008091E800877F8093E8009093E3010E947D
+:1020C000550D8091E301811106C08091E30087FDE9
+:1020D00002C081E001C084E08093E7010E949F0A72
+:1020E0008091E80083FF0AC08091E800877F809399
+:1020F000E8008091EB0080628093EB00AA960FB617
+:10210000F894DEBF0FBECDBFDF91CF911F91089530
+:102110000895CF938091E7018823A1F0C091E90051
+:10212000CF709091EC00892F817090FD80E8C82BD2
+:102130001092E9008091E80083FD0E94370FCF7074
+:10214000C093E900CF91089590936B0180936A0149
+:102150000895E0916A01F0916B01309721F00190B0
+:10216000F081E02D099480E00895E0916A01F091FA
+:102170006B01309721F00280F381E02D09940895DE
+:10218000E0916A01F0916B01309721F00480F581B4
+:10219000E02D09940895209168013091690182171A
+:1021A000930771F09093690180936801E0916A014F
+:1021B000F0916B01309721F00680F781E02D0994B2
+:1021C000089520916601309167018217930771F09D
+:1021D0009093670180936601E0916A01F0916B0131
+:1021E000309721F00084F185E02D09940895089539
+:1021F0000C94F7100E94CA1C0E947F060C94901D3C
+:10220000CF92DF92EF92FF920F931F93CF93DF93C2
+:10221000CDB7DEB72B970FB6F894DEBF0FBECDBF9C
+:102220000E9497068DE6C82E81E0D82E00E010E0CF
+:10223000E02E802F0E948507F60141916F01F42E58
+:10224000F826B1F40F5F1F4F0E30110589F78FEF9D
+:1022500089838A831B820E94D31C8160782F9D838F
+:102260008C8349815A816B818D810E94A31140C06A
+:102270009091CE0191FF04C08B870E948B078B85C4
+:1022800020E030E04F2D50E0922FBA01022E02C024
+:10229000759567950A94E2F760FF24C02E83EF825C
+:1022A00021E030E0690102C0CC0CDD1C9A95E2F718
+:1022B00090E08C219D21892B09F420E028870E9441
+:1022C000D31C8160782F9A8789874E815F816885CA
+:1022D0008A850E94A311F801E359FE4F8081C82628
+:1022E000C08206C02F5F3F4F2630310569F6AACF66
+:1022F0000E94772010916C010E94A9101817A1F07C
+:102300000E94A91080936C012B960FB6F894DEBF43
+:102310000FBECDBFDF91CF911F910F91FF90EF9036
+:10232000DF90CF900C94A2092B960FB6F894DEBFE5
+:102330000FBECDBFDF91CF911F910F91FF90EF9016
+:10234000DF90CF900895CF93DF93CDB7DEB72B9773
+:102350000FB6F894DEBF0FBECDBF4F835887698795
+:102360007A878B87DE01119686E0FD0111928A95AE
+:10237000E9F785E0FE01379601900D928A95E1F725
+:1023800049815A816B817C818D819E810E94B9181F
+:102390002B960FB6F894DEBF0FBECDBFDF91CF9165
+:1023A0000895CF93882309F4C2C0C82F823859F406
+:1023B0000E94A91081FDBBC089E30E94551B0E94A9
+:1023C000121C89E30CC0833879F40E94A91080FDA7
+:1023D000AEC083E50E94551B0E94121C83E50E943B
+:1023E000971BCF910C94121C843859F40E94A910A9
+:1023F00082FD9DC087E40E94551B0E94121C87E449
+:10240000EECF8CEF8C0F813A48F48C2F0E94B822CB
+:1024100081118DC08C2F0E94551BE3CF80E28C0F61
+:10242000883048F4C77081E001C0880FCA95EAF788
+:102430000E94DB1BD6CF8BE58C0F833078F4C53A36
+:1024400029F0C63A31F083E890E005C081E890E0D9
+:1024500002C082E890E0CF910C94CB1088E58C0FFD
+:10246000833108F064C0C83A39F1C93A41F1CA3A37
+:1024700049F1CB3A51F1CC3A59F1CD3A61F1C03B37
+:1024800069F1CE3A71F1CF3A79F1C13B81F1C23BAA
+:1024900089F1C33B91F1C43B99F1C53BA1F1C63B26
+:1024A000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B86
+:1024B000C9F180E090E038C082EE90E035C089EE4E
+:1024C00090E032C08AEE90E02FC085EB90E02CC007
+:1024D00086EB90E029C087EB90E026C08CEC90E082
+:1024E00023C08DEC90E020C083E891E01DC08AE815
+:1024F00091E01AC082E991E017C084E991E014C02C
+:1025000081E292E011C083E292E00EC084E292E0A8
+:102510000BC085E292E008C086E292E005C087E247
+:1025200092E002C08AE292E0CF910C94E110CF9148
+:102530000895882309F44BC0823859F40E94A910E9
+:1025400081FF45C089E30E94551B0E94121C89E34C
+:102550000CC0833871F40E94A91080FF38C083E555
+:102560000E94551B0E94121C83E50E94971B0C942D
+:10257000121C843859F40E94A91082FF28C087E4F5
+:102580000E94551B0E94121C87E4EFCF9CEF980F0E
+:10259000913A58F390E2980F983050F4877091E098
+:1025A00001C0990F8A95EAF7892F0E94E11BDFCFBE
+:1025B0009BE5980F933020F480E090E00C94CB10D2
+:1025C000885A833120F480E090E00C94E110089563
+:1025D000882321F00E94DB1B0C94121C0895882391
+:1025E00021F00E94E11B0C94121C0895BF92CF921F
+:1025F000DF92EF92FF920F931F93CF93DF9300D060
+:1026000000D000D0CDB7DEB725E0FC01DE01119689
+:1026100001900D922A95E1F7FC0140813181028100
+:10262000258122952F7063817481672B09F4E5C29F
+:102630003F3F19F44F3F09F4E0C27C0149833A83DC
+:1026400089819A812E830E94141B182FB92E0E9413
+:10265000131B0E94DA19EB2DE295EF70F0E0E159BF
+:10266000FF4F2E810C94ED248B2D807F9B2D9F702E
+:10267000F92E882319F0F29480EFF822002349F014
+:10268000FF2009F467C28F2D0E94EB1B0E94121CD1
+:1026900061C2812F0E949912FF2009F4AEC28F2DD2
+:1026A0000E94F11B26960FB6F894DEBF0FBECDBF79
+:1026B000DF91CF911F910F91FF90EF90DF90CF901E
+:1026C000BF900C94121C3B2D307F8B2D8F703032BD
+:1026D00011F08295807F112319F0113021F12CC067
+:1026E0000023B9F0222309F4A0C1213009F09DC1D3
+:1026F00026960FB6F894DEBF0FBECDBFDF91CF9107
+:102700001F910F91FF90EF90DF90CF90BF900C94AE
+:10271000FB1B222319F0213009F46FC28E830E9423
+:10272000FE1B8E8196C1002321F0223008F065C285
+:102730007CC1211162C28DC1002321F0222309F442
+:1027400074C108C2222309F484C119C22B2D269515
+:102750002695237030E02115310521F02130310517
+:10276000D1F04BC2002321F0812F9B2D937002C02A
+:1027700080E090E026960FB6F894DEBF0FBECDBF86
+:10278000DF91CF911F910F91FF90EF90DF90CF904D
+:10279000BF900C94CB10002321F0812F9B2D9370C0
+:1027A00002C080E090E026960FB6F894DEBF0FBE20
+:1027B000CDBFDF91CF911F910F91FF90EF90DF90F0
+:1027C000CF90BF900C94E110812F002319F00E944C
+:1027D0007F1F02C00E94E71F26960FB6F894DEBF47
+:1027E0000FBECDBFDF91CF911F910F91FF90EF9062
+:1027F000DF90CF90BF900C946C208B2D837009F0EC
+:102800007BC00111FAC1812F829586958770880F50
+:10281000880F912F9F70C92ED12CE12CF12C082EFE
+:1028200004C0CC0CDD1CEE1CFF1C0A94D2F714FF74
+:1028300012C04FE050E060E070E004C0440F551F4C
+:10284000661F771F8A95D2F7CB01BA016095709504
+:102850008095909503C060E070E0CB012B2D26950C
+:1028600026952370422F50E042305105D9F0433075
+:10287000510569F16C297D298E299F294130510527
+:1028800051F126960FB6F894DEBF0FBECDBFDF9193
+:10289000CF911F910F91FF90EF90DF90CF90BF905D
+:1028A0000C94011A6C297D298E299F2926960FB632
+:1028B000F894DEBF0FBECDBFDF91CF911F910F9176
+:1028C000FF90EF90DF90CF90BF900C941D1A0E9464
+:1028D000011AC701B60126960FB6F894DEBF0FBEE7
+:1028E000CDBFDF91CF911F910F91FF90EF90DF90BF
+:1028F000CF90BF900C94E519002319F08B2D8170B7
+:1029000001C08695882309F478C1812F8295869528
+:102910008770880F880F912F9F70C92ED12CE12CC2
+:10292000F12C082E04C0CC0CDD1CEE1CFF1C0A94FC
+:10293000D2F714FF12C04FE050E060E070E004C036
+:10294000440F551F661F771F8A95D2F7CB01BA0136
+:10295000609570958095909503C060E070E0CB0124
+:102960002B2D269526952370422F50E0423051059D
+:10297000D9F04330510569F16C297D298E299F29B1
+:102980004130510551F126960FB6F894DEBF0FBEC7
+:10299000CDBFDF91CF911F910F91FF90EF90DF900E
+:1029A000CF90BF900C94DB1A6C297D298E299F292A
+:1029B00026960FB6F894DEBF0FBECDBFDF91CF9144
+:1029C0001F910F91FF90EF90DF90CF90BF900C94EC
+:1029D000F71A0E94DB1AC701B60126960FB6F894C3
+:1029E000DEBF0FBECDBFDF91CF911F910F91FF9042
+:1029F000EF90DF90CF90BF900C94BF1A103FD1F1B1
+:102A000018F4103E50F4A1C0123F09F463C008F45A
+:102A10004CC0133F09F473C098C01F708B2D8F7189
+:102A20000023A1F00E94581A812F26960FB6F89421
+:102A3000DEBF0FBECDBFDF91CF911F910F91FF90F1
+:102A4000EF90DF90CF90BF900C94E8120E94791A1B
+:102A5000812F26960FB6F894DEBF0FBECDBFDF9153
+:102A6000CF911F910F91FF90EF90DF90CF90BF908B
+:102A70000C94EF120023A9F02111BFC08B2D8F7190
+:102A800026960FB6F894DEBF0FBECDBFDF91CF9173
+:102A90001F910F91FF90EF90DF90CF90BF900C941B
+:102AA0009E1A223008F0A9C0E9CF0023A9F08B2D8F
+:102AB0008F7126960FB6F894DEBF0FBECDBFDF91A3
+:102AC000CF911F910F91FF90EF90DF90CF90BF902B
+:102AD0000C94581A002359F38B2D8F7126960FB63C
+:102AE000F894DEBF0FBECDBFDF91CF911F910F9144
+:102AF000FF90EF90DF90CF90BF900C94791A002355
+:102B000099F08B2D8F7126960FB6F894DEBF0FBE0D
+:102B1000CDBFDF91CF911F910F91FF90EF90DF908C
+:102B2000CF90BF900C94431A26960FB6F894DEBF50
+:102B30000FBECDBFDF91CF911F910F91FF90EF900E
+:102B4000DF90CF90BF900C94391A0023A9F0222374
+:102B500009F4ADCF812F26960FB6F894DEBF0FBED5
+:102B6000CDBFDF91CF911F910F91FF90EF90DF903C
+:102B7000CF90BF900C94D111222309F4ADCF812FB7
+:102B800026960FB6F894DEBF0FBECDBFDF91CF9172
+:102B90001F910F91FF90EF90DF90CF90BF900C941A
+:102BA00099124B2D4F70612FC7010E943604269653
+:102BB0000FB6F894DEBF0FBECDBFDF91CF911F914E
+:102BC0000F91FF90EF90DF90CF90BF900C945D1924
+:102BD0004B2D4F70612FC70126960FB6F894DEBFBC
+:102BE0000FBECDBFDF91CF911F910F91FF90EF905E
+:102BF000DF90CF90BF900C944B0826960FB6F894B8
+:102C0000DEBF0FBECDBFDF91CF911F910F91FF901F
+:102C1000EF90DF90CF90BF9008950E94F81B0E9424
+:102C2000CD1B0E94121C0E941D210E946C2080E07E
+:102C300090E00E94CB1080E090E00C94E1100E94A4
+:102C4000E81B0C940D160E94141B292F22952F703F
+:102C500030E02C3031054CF42A3031056CF4225030
+:102C600031092230310588F407C02C30310549F094
+:102C70002F30310531F009C0803E48F0803F29F403
+:102C800006C093FB882780F9089580E0089581E0CD
+:102C90000895CF93DF9300D000D01F92CDB7DEB759
+:102CA0000F900F900F900F900F90DF91CF9108959C
+:102CB000CF93DF9300D000D000D0CDB7DEB72696FB
+:102CC0000FB6F894DEBF0FBECDBFDF91CF91089550
+:102CD0001F93CF93DF93C0917B0116E080917C011D
+:102CE000C81799F0D0E01C9FF0011D9FF00D112432
+:102CF000E358FE4F408151816281738184819581C7
+:102D00000E9458162196C770E9CFDF91CF911F918D
+:102D100008954091AD015091AE016091AF01709165
+:102D2000B0018091B1019091B2010C94581680913C
+:102D3000B20182958F7009F054C08091AF01882351
+:102D400009F44FC080917B01A0917C016091AD019D
+:102D50007091AE014091B0015091B101B6E08A1777
+:102D600009F43FC090E041155105C1F17F3F11F4D6
+:102D70006F3FA1F1B89FF001B99FF00D1124E35806
+:102D8000FE4F218172132AC02081621327C0228145
+:102D9000211124C0238134812417350710F42150D8
+:102DA0003109241B350B283C3105C0F42091B201B8
+:102DB0002F7020612093B20126E0289FF001299F07
+:102DC000F00D1124EE57FE4F80818F70806180835B
+:102DD0008DEA91E00E94F6120C94681601968770B5
+:102DE000BECF0895CF92DF92EF92FF920F931F9381
+:102DF000CF93DF93CDB7DEB762970FB6F894DEBFFF
+:102E00000FBECDBF8C0185E0F801DE011D9601905B
+:102E10000D928A95E1F7D8014C9111965C9111972A
+:102E200012966C9112971396CD90DC901497309176
+:102E3000AD017091AE018091B0019091B101009708
+:102E400009F46BC17F3F19F43F3F09F466C1E0907C
+:102E5000AF01EE2009F4C0C02091B201C816D90616
+:102E600028F0F601E81BF90BCF0104C0809590957E
+:102E70008C0D9D1DFF24F394883C910578F0F12C76
+:102E8000207F09F0C6C07C2DD98AC88A89890E9412
+:102E900049168DEA91E00E94F612B1C0822F807F20
+:102EA00009F046C0751314C0341312C0611110C06C
+:102EB0002F7020612093B2010E9489168DEA91E063
+:102EC0000E94F6128091B201D80115968C932EC003
+:102ED000CD2819F15F3F11F44F3FF9F0F62E611143
+:102EE0001CC080917B0120917C0136E0821709F49F
+:102EF0005AC090E0389FF001399FF00D1124E3583B
+:102F0000FE4F7181571306C07081471303C0728151
+:102F1000711103C001968770E9CFF62E662309F47C
+:102F200018C18091B20181608093B201F12C11C16E
+:102F3000751308C0341306C0611104C08091B2013A
+:102F4000D801C3C04D875E878D859E856A8B0E94A0
+:102F500023166A898823E1F16623D1F12091B20119
+:102F6000822F82958F7090E0029774F08091AD016E
+:102F70009091AE0198878F831986DB86CA862C874D
+:102F8000CE0107960E94F61286E0F801ADEAB1E0A4
+:102F900001900D928A95E1F70E9497160E9489167A
+:102FA000FF24F394D6C04D875E878D859E850E9451
+:102FB000141B292F22952F7030E0223031050CF0A0
+:102FC000BCC09F7009F0B6C0805E883008F4C1C0F4
+:102FD000C8010E94F612E4CFC816D90608F453C0FF
+:102FE000F601E81BF90BCF01883C910508F450C0AD
+:102FF000F12C7C2DD98AC88A89890E944916EDEA6C
+:10300000F1E086E0DF011D928A95E9F70E948916BA
+:10301000A0C0751314C0341312C0611110C0809188
+:10302000B201F8018583C8010E94F61286E0EDEA3C
+:10303000F1E0DF011D928A95E9F7FE2C8AC04D87E9
+:103040005E878D859E856A8B0E9423166A898823F8
+:1030500009F4BECF662309F4BBCF2091B201822FC1
+:1030600082958F7090E002970CF48ECF8091AD0125
+:103070009091AE019A8389831B82DD82CC822E835C
+:10308000CE0101967FCF809590958C0D9D1DACCF84
+:10309000F62E662309F49CCF75132EC034132CC072
+:1030A0002091B20120FD1FC0822F82958F70D9F030
+:1030B000D80115962C9315978F3049F08F5F982F74
+:1030C0009295907F822F8F70892B15968C93C801D3
+:1030D0000E94F61286E0F801ADEAB1E001900D928F
+:1030E0008A95E1F793CF86E0F801ADEAB1E001906F
+:1030F0000D928A95E1F72DC04D875E878D859E855F
+:103100000E942316811140CF8091B201816080938B
+:10311000B201C8010E94F6121CC0662309F458CF00
+:103120004D875E878D859E850E942316882309F42E
+:103130004FCF2ACF811148CF0CC0243031050CF07D
+:1031400047CF9F7009F440CFF8019581907F09F037
+:103150003BCF8F2D62960FB6F894DEBF0FBECDBF6A
+:10316000DF91CF911F910F91FF90EF90DF90CF9063
+:1031700008951F93CF93DF93CDB7DEB72C970FB68B
+:10318000F894DEBF0FBECDBF4F83588769877A871B
+:103190008B879C87CE0107960E94F216882369F0E0
+:1031A0008F8198852A853B85232BF1F19F3F09F07C
+:1031B00063C08F3F09F060C037C086E0FE013796DC
+:1031C000DE01119601900D928A95E1F76F81788565
+:1031D000EA85FB85309741F17F3F11F46F3F21F184
+:1031E00020917C0130E0C9010196877099274091B8
+:1031F0007B0150E08417950709F447C069837A83FF
+:10320000FD83EC8396E0929FD001939FB00D112433
+:10321000A358BE4FFE01319601900D929A95E1F7A9
+:1032200080937C010E94681616E080917B0190914A
+:103230007C018917C1F1189FC001112483589E4F4A
+:103240000E94F216882379F1E0917B011E9FF00124
+:103250001124E358FE4F4081518162817381848142
+:1032600095810E94581680917B0190E001968770AD
+:10327000992780937B01D9CF4F81588569857A85BD
+:103280008B859C850E945816CFCF0E941F161092E6
+:103290007C0110927B01EDEAF1E086E0DF011D92F6
+:1032A0008A95E9F7C1CF2C960FB6F894DEBF0FBE12
+:1032B000CDBFDF91CF911F910895EF92FF920F93B1
+:1032C0001F93CF93DF938C01892B09F46CC0F12CF1
+:1032D000EE24E394E8012196F8018491843740F4C8
+:1032E000843008F051C0813081F0823019F15BC028
+:1032F000853709F444C0A8F19CE7980F903708F08F
+:1033000052C08F770E94991241C00E5F1F4FFE017D
+:10331000C49180E28C0F883048F4C7708E2D01C0B4
+:10332000880FCA95EAF70E94EB1B14C08C2F0E94ED
+:10333000D1112DC00E5F1F4FFE01C49180E28C0F92
+:10334000883058F4C7708E2D01C0880FCA95EAF7EF
+:103350000E94F11B0E94121C1AC08C2F0E9499120D
+:1033600016C00E5F1F4FFE01C491CC2381F08FE980
+:103370009FE00197F1F700C00000C150F6CF0E5F4B
+:103380001F4FFE01F49003C00E94D1118E018F2DBA
+:10339000882309F49FCFEFE9FFE03197F1F700C0F0
+:1033A00000008150F5CFDF91CF911F910F91FF90D9
+:1033B000EF90089508956093B7017093B8018093DA
+:1033C000B9019093BA010C940D160F931F930091BD
+:1033D000B7011091B8012091B9013091BA01DC0117
+:1033E000CB01802B912BA22BB32B8093B701909311
+:1033F000B801A093B901B093BA011F910F910C9439
+:103400000D160F931F930091B7011091B8012091F1
+:10341000B9013091BA01DC01CB0180239123A223B1
+:10342000B3238093B7019093B801A093B901B093EF
+:10343000BA011F910F910C940D160F931F930091D9
+:10344000B7011091B8012091B9013091BA01DC01A6
+:10345000CB0180279127A227B3278093B7019093B0
+:10346000B801A093B901B093BA011F910F910C94C8
+:103470000D161092B3011092B4011092B501109282
+:10348000B6010C940D1641E050E060E070E004C01D
+:10349000440F551F661F771F8A95D2F74093B301DB
+:1034A0005093B4016093B5017093B6010C940D165E
+:1034B00041E050E060E070E004C0440F551F661F1B
+:1034C000771F8A95D2F78091B3019091B401A091B2
+:1034D000B501B091B601482B592B6A2B7B2B409339
+:1034E000B3015093B4016093B5017093B6010C948D
+:1034F0000D1641E050E060E070E004C0440F551F3D
+:10350000661F771F8A95D2F7409550956095709504
+:103510008091B3019091B401A091B501B091B60131
+:10352000482359236A237B234093B3015093B4016A
+:103530006093B5017093B6010C940D1641E050E014
+:1035400060E070E004C0440F551F661F771F8A9526
+:10355000D2F78091B3019091B401A091B501B091DF
+:10356000B601482759276A277B274093B301509318
+:10357000B4016093B5017093B6010C940D160F93CE
+:103580001F930091B3011091B4012091B5013091C6
+:10359000B601DC01CB01802B912BA22BB32B8093A6
+:1035A000B3019093B401A093B501B093B6011F91FC
+:1035B0000F910C940D160F931F930091B30110916E
+:1035C000B4012091B5013091B601DC01CB0180231B
+:1035D0009123A223B3238093B3019093B401A093CA
+:1035E000B501B093B6011F910F910C940D160F9376
+:1035F0001F930091B3011091B4012091B501309156
+:10360000B601DC01CB0180279127A227B327809345
+:10361000B3019093B401A093B501B093B6011F918B
+:103620000F910C940D160895CF92DF92EF92FF92B6
+:103630000F931F93CF93DF938C01C090B701D0906D
+:10364000B801E090B901F090BA014091B3015091F6
+:10365000B4016091B5017091B601C42AD52AE62A59
+:10366000F72ACFE1D0E0D701C6010C2E04C0B695F1
+:10367000A795979587950A94D2F780FF07C0B80160
+:103680008C2F0E946E088130910531F4219758F7F4
+:10369000B80180E00E946E08DF91CF911F910F91D9
+:1036A000FF90EF90DF90CF90089590910C019923B7
+:1036B00021F090910D01911109C020910E013091DE
+:1036C0000F01F90132969FEF40E01FC0982F9695A9
+:1036D000969596959F3050F5E0910E01F0910F016F
+:1036E000E90FF11D877021E030E0A90102C0440F0D
+:1036F000551F8A95E2F7CA019181892B818308952C
+:103700009F3F39F04F5F4E3041F051915813F8CF41
+:103710000DC05111F7CF942FF5CF9F3F39F0F9012C
+:10372000E90FF11D97FDFA95828308950895909110
+:103730000C01992321F090910D01911109C0209164
+:103740000E0130910F01F9013296205F3F4F1FC0EB
+:10375000982F9695969596959F30F0F4E0910E01EE
+:10376000F0910F01E90FF11D877021E030E0A90110
+:1037700002C0440F551F8A95E2F7CA0180959181D6
+:103780008923818308953196E217F30729F0908108
+:103790009813F9CF1082F7CF089581E090E0E0917F
+:1037A0000E01F0910F01E80FF91F10820196803190
+:1037B0009105A9F708959091CD01892B8093CD01B2
+:1037C000089580959091CD0189238093CD0108952E
+:1037D0001092CD0108959091CC01892B8093CC015A
+:1037E000089580959091CC0189238093CC01089510
+:1037F0001092CC0108958093BB0108951092BB01F3
+:10380000089580910E0190910F01FC0131969C0169
+:10381000205F3F4F80E0919191118F5FE217F30796
+:10382000D1F70895E0910E01F0910F018091CD0143
+:103830008083E0910E01F0910F0190818091CC0185
+:10384000892B80838091BB01882361F0E0910E0178
+:10385000F0910F019081892B80830E94011C8111BE
+:103860001092BB0180910E0190910F010C94B51044
+:10387000CF92DF92EF92FF926C01EE24FF24C114ED
+:10388000D104E104F10421F0C701B60120E101C037
+:1038900020E0C72ED82EE92EFF24C114D104E10464
+:1038A000F10419F0285FC701B6016B017C0154E0F7
+:1038B000F694E794D794C7945A95D1F7C114D104DC
+:1038C000E104F10419F02C5FC701B6016B017C0122
+:1038D00042E0F694E794D794C7944A95D1F7C1147F
+:1038E000D104E104F10419F02E5FC701B601DC0137
+:1038F000CB01B695A79597958795892B8A2B8B2B0E
+:1039000009F02F5F822FFF90EF90DF90CF90089506
+:103910008091E701843009F11092CF0120E488E121
+:1039200090E00FB6F894A895809360000FBE2093A6
+:10393000600083B7817F846083BF83B7816083BF6A
+:103940007894889583B78E7F83BF88E10FB6F8940B
+:1039500080936000109260000FBE0895089508954E
+:10396000CF930E94AE1C0E9497060E94AF1CC0E03D
+:103970008C2F0E948507811104C0CF5FCE30C1F724
+:1039800001C081E0CF9108950E941F160E94A910E6
+:103990000C94A20982E084BD93E095BD9AEF97BD97
+:1039A00080936E0008952FB7F8948091D001909184
+:1039B000D101A091D201B091D3012FBF0895CF9230
+:1039C000DF92EF92FF920F931F932FB7F8944091DD
+:1039D000D0015091D1016091D2017091D3012FBFDC
+:1039E0006A017B01EE24FF248C0120E030E0C01648
+:1039F000D106E206F30610F4415051099A01281B42
+:103A0000390BC9011F910F91FF90EF90DF90CF907C
+:103A100008951F920F920FB60F9211248F939F93C8
+:103A2000AF93BF938091D0019091D101A091D20129
+:103A3000B091D3010196A11DB11D8093D001909347
+:103A4000D101A093D201B093D301BF91AF919F91C7
+:103A50008F910F900FBE0F901F9018950E94A60D8A
+:103A6000F8942FEF87EA91E6215080409040E1F7EB
+:103A700000C0000087E090EBDC018093F0019093A0
+:103A8000F101A093F201B093F3019CE088E10FB63D
+:103A9000F894A895809360000FBE90936000FFCFCC
+:103AA000EF92FF920F931F93CF93DF93D82FC0E035
+:103AB0008C2F0E94850700E010E0E82EF12CC70152
+:103AC000002E02C0959587950A94E2F780FD06C006
+:103AD0000F5F1F4F0630110591F709C0602F7C2F33
+:103AE00080E00E944C08D813F3CF81E004C0CF5F80
+:103AF000CE30F1F680E0DF91CF911F910F91FF90D2
+:103B0000EF900895CF93C82F8CE20E94501D882318
+:103B100021F08C2FCF910C94501D80E0CF9108950F
+:103B2000CF930E94D71E811102C00E94BD1EC5E620
+:103B3000C15049F00E9497068FE39CE90197F1F785
+:103B400000C00000F5CF89E20E94821D811113C1DF
+:103B50008AE20E94821D81110E94BD1E85E00E94A2
+:103B6000821D81110E942E1D0E94E21E8093CE01B3
+:103B700087E00E94821D8823A9F18BE10E94821DAB
+:103B8000882351F08091CE0181FB222720F991E01A
+:103B9000922790FB81F90EC08EE00E94821D88233F
+:103BA00061F08091CE0182FB222720F991E09227DB
+:103BB00090FB82F98093CE0115C080E10E94821DA6
+:103BC0009091CE01882341F093FB222720F981E0D8
+:103BD000822780FB93F904C0892F809580FB90F9A0
+:103BE0009093CE018091CE010E94E61E0E94F41EA9
+:103BF0008093E10180EE0E94821D882341F0809134
+:103C0000E101982F909590FB80F98093E10189E381
+:103C10000E94821D882359F08091E10181FB2227B7
+:103C200020F991E0922790FB81F98093E10182EEE7
+:103C30000E94821D882359F08091E10182FB222796
+:103C400020F991E0922790FB82F98093E10186EEC2
+:103C50000E94821D882359F08091E10183FB222775
+:103C600020F991E0922790FB83F98093E10183EEA4
+:103C70000E94821D882359F08091E10184FB222754
+:103C800020F991E0922790FB84F98093E10185E38C
+:103C90000E94821D882359F08091E10185FB222733
+:103CA00020F991E0922790FB85F98093E10181E36F
+:103CB0000E94821D882359F08091E10186FB222712
+:103CC00020F991E0922790FB86F98093E10181E150
+:103CD0000E94821D882359F08091E10187FB2227F1
+:103CE00020F991E0922790FB87F98093E101809180
+:103CF000E1010E94F81E8091E10187FB882780F98D
+:103D000080930D0187E20E94821DC82F8EE10E94E0
+:103D1000821D8111C2608FE10E94821D8111C460E9
+:103D200080E20E94821D8111C86081E20E94821D92
+:103D30008111C06182E20E94821D8111C06283E212
+:103D40000E94821D8111C06484E20E94821D88232A
+:103D500011F0C06802C0CC2329F08C2F0E94EF1E06
+:103D60006C2F03C00E94EB1E682F70E080E090E093
+:103D7000CF910C94DB19CF9108956DEE7EEF80E02A
+:103D800090E00E94232560E082E090E00E941525EB
+:103D900060E083E090E00E94152560E084E090E020
+:103DA0000E94152560E085E090E00C94152580E0E8
+:103DB00090E00E940F2521E08D3E9E4F09F020E00B
+:103DC000822F089582E090E00C940725682F82E00E
+:103DD00090E00C94152583E090E00C940725682F63
+:103DE00083E090E00C94152584E090E00C94072586
+:103DF000682F84E090E00C9415258091D60180FF17
+:103E00000BC06091130185E0689FB0011124759586
+:103E10006795759567952BC081FF09C06091130167
+:103E200085E0689FB00111247595679520C082FFD9
+:103E300007C06091130185E0689FB001112417C08D
+:103E40009091D7019923D1F060911201961788F7CC
+:103E50002091130185E0289F90011124929FA001D9
+:103E6000939F500D112470E0CA010E94D92460383C
+:103E7000710540F46115710539F002C065E070E02C
+:103E8000862F08958FE7089581E008958091D601E7
+:103E900080FF08C06091110170E075956795759578
+:103EA000679521C081FF06C06091110170E0759592
+:103EB000679519C082FF04C06091110170E010C0C5
+:103EC0009091D7019923C1F0609110019617A0F746
+:103ED00080911101899FC001112470E00E94D924B2
+:103EE0006038710528F46115710521F0862F089559
+:103EF0008FE7089581E0089561E070E0F4CF803F9E
+:103F000021F40E94FD1E819504C0813F29F40E9486
+:103F1000FD1E8093DA010895823F21F40E94FD1E68
+:103F2000819504C0833F29F40E94FD1E8093D9012E
+:103F30000895893F19F40E94461F05C08A3F31F455
+:103F40000E94461F81958093DB0108958B3F21F4E9
+:103F50000E94461F819504C08C3F29F40E94461F91
+:103F60008093DC010895843F21F48091D801816021
+:103F700017C0853F21F48091D801826011C0863F2F
+:103F800021F48091D80184600BC0873F21F4809197
+:103F9000D801886005C0883F31F48091D8018061E4
+:103FA0008093D80108958D3F21F48091D6018160DE
+:103FB0000BC08E3F21F48091D601826005C08F3FF7
+:103FC00029F48091D60184608093D6010895803FC2
+:103FD00039F48091DA0187FF6CC01092DA0169C070
+:103FE000813F29F48091DA011816BCF362C09091E8
+:103FF000D901823F29F497FF5CC01092D90159C0C2
+:10400000833F19F41916CCF354C0893F41F48091D1
+:10401000DB0118160CF04DC01092DB014AC08A3F3C
+:1040200029F48091DB0187FF44C0F6CF8B3F39F440
+:104030008091DC0187FF3DC01092DC013AC08C3FCB
+:1040400029F48091DC011816BCF333C0843F21F4BD
+:104050008091D8018E7F17C0853F21F48091D801CF
+:104060008D7F11C0863F21F48091D8018B7F0BC0DA
+:10407000873F21F48091D801877F05C0883F31F4C4
+:104080008091D8018F7E8093D80113C08D3F21F499
+:104090008091D6018E7F0BC08E3F21F48091D60196
+:1040A0008D7F05C08F3F29F48091D6018B7F80934F
+:1040B000D6018091D90181110EC08091DA01811160
+:1040C0000AC08091DB01811106C08091DC01811161
+:1040D00002C01092D701089588ED91E00E94C010AF
+:1040E0000E94D31C9093D5018093D40108951F930F
+:1040F000CF93DF938091D4019091D5010E94DF1C72
+:10410000AC019091D701992321F02091140130E066
+:1041100006C0209115018AE0289F900111244217C2
+:10412000530708F486C08091D901C091DA01D0917B
+:10413000DB011091DC01811107C0C11176C0D111E2
+:1041400074C0111172C075C09F3F19F09F5F9093AA
+:10415000D701181624F40E94FD1E8093D901809186
+:10416000D90187FF05C00E94FD1E81958093D9016A
+:104170001C1624F40E94FD1E8093DA018091DA015E
+:1041800087FF05C00E94FD1E81958093DA01609132
+:10419000D901662339F1C091DA01CC2319F17727CF
+:1041A00067FD7095872F972F0E94EA2323E333E35F
+:1041B00043E35FE30E944E240E94B7236093D9013A
+:1041C0006C2F772767FD7095872F972F0E94EA2322
+:1041D00023E333E343E35FE30E944E240E94B723CB
+:1041E0006093DA011D1624F40E94461F8093DB01C0
+:1041F0008091DB0187FF05C00E94461F8195809357
+:10420000DB01111624F40E94461F8093DC0180918B
+:10421000DC0187FF05C00E94461F81958093DC0169
+:10422000DF91CF911F910C946C209F3F09F08ECFAE
+:1042300096CFDF91CF911F910895E8EDF1E085E0F1
+:10424000DF011D928A95E9F71092D7011092D601ED
+:104250000895833081F128F4813059F08230D1F013
+:104260000895853009F449C0B8F1863009F456C084
+:10427000089580911501262F30E0280F311D2F3F22
+:10428000310524F4680F6093150108958FEF809332
+:104290001501089580911401262F30E0280F311D5B
+:1042A0002F3F310524F4680F6093140108958FEFB8
+:1042B00080931401089580911301262F30E0280F78
+:1042C000311D2F3F310524F4680F609313010895C9
+:1042D0008FEF80931301089580911201262F30E013
+:1042E000280F311D2F3F310524F4680F6093120110
+:1042F00008958FEF80931201089580911101262F68
+:1043000030E0280F311D2F3F310524F4680F6093F2
+:10431000110108958FEF809311010895809110018C
+:10432000262F30E0280F311D2F3F310524F4680F70
+:104330006093100108958FEF8093100108958330EA
+:1043400011F128F4813049F0823091F008958530E0
+:1043500081F120F18630C1F108958091150168172F
+:1043600020F4861B8093150108951092150108957D
+:1043700080911401681720F4861B8093140108951E
+:1043800010921401089580911301681720F4861B80
+:1043900080931301089510921301089580911201E2
+:1043A000681720F4861B8093120108951092120161
+:1043B000089580911101681720F4861B80931101E4
+:1043C000089510921101089580911001681720F44A
+:1043D000861B8093100108951092100108950F9389
+:1043E0001F938D3109F46BC008F03FC08E3009F483
+:1043F0007DC0C0F4873009F46EC068F4863009F0DF
+:10440000AFC08091CE01817F8E7F8093CE0181E00D
+:104410008093DE01A6C0883009F458C08B3009F4BF
+:104420009BC09EC0863109F497C078F4803109F4AE
+:1044300070C0813109F094C00E941F1690910D0147
+:1044400081E0892780930D0187C0893109F484C0F8
+:104450008B3109F085C08091CE0181FB222720F9A4
+:1044600091E0922790FB81F94AC0853309F45BC043
+:1044700048F4873209F457C008F45AC0893209F465
+:1044800052C06EC0833438F48A3308F067C0883372
+:1044900009F462C065C0833409F445C0883409F06A
+:1044A0005FC00E941F160FEF13ED20E30150104074
+:1044B0002040E1F700C000000E942E1D4DC00E9468
+:1044C00071230E94A9100E94A20946C00E94E21E08
+:1044D0000E94F41E41C09091CE01892F817090FFFF
+:1044E00012C0917F9E7F9093CE013BC08091CE0100
+:1044F00082FB222720F991E0922790FB82F980939A
+:10450000CE01992349F18091CE0181608093CE0143
+:1045100023C08091CE0183FB222720F991E09227CE
+:1045200090FB83F9ECCF61E070E080E090E010C098
+:104530008D5141E050E060E070E08A019B0104C0D1
+:10454000000F111F221F331F8A95D2F7C901B8012E
+:104550000E94DB190E941F1681E003C08953E9CF36
+:1045600080E01F910F91089580E0089580E0089504
+:10457000CF93C82F8091DE01813079F018F082301E
+:10458000E9F187C0E0910E01F0910F018081813146
+:1045900069F0823209F07FC009C0E0910E01F0910C
+:1045A0000F018081813111F0823261F48C2F0E94E1
+:1045B000B422811104C08C2F0E94EF211DC081E024
+:1045C00090E01AC08C2F0E94B622811114C0C43111
+:1045D00079F048F4CB3079F0C03109F060C082E066
+:1045E0008093DE0108C0C93219F0C83321F057C0EA
+:1045F0001092DE0154C081E0817053C0C93289F14C
+:1046000018F5C43171F1A8F4C73009F046C08AE04A
+:104610008093150194E19093140193E0909313011A
+:104620008093120188E08093110188E28093100149
+:1046300034C0CE51C63088F5EC2FF0E0E65DFE4F79
+:1046400080818093DD0129C0CE34E9F020F4CB34A1
+:1046500021F56AE013C0C13579F0C235F1F461E0AB
+:104660000DC08091DD01882319F01092DD0115C085
+:1046700081E08093DE0115C061E006C08091DD011C
+:104680000E9429210AC06AE08091DD010E949F21D9
+:1046900004C01092DE0180E004C081E002C080E02E
+:1046A000ABCFCF910895E1E8F0E08081886080830E
+:1046B0008081816080838FB7F89493E09093890024
+:1046C00090ED909388008FBF0895EFE6F0E0808131
+:1046D000826080830895EFE6F0E080818D7F8083A3
+:1046E0000895EFE6F0E0908182E0892780830895C5
+:1046F0001F920F920FB60F9211242F933F934F9357
+:104700005F936F937F938F939F93AF93BF93EF9339
+:10471000FF938091DF019091E00101969093E00179
+:104720008093DF01811103C082E00E94A209E09121
+:10473000E001E695E695F0E0E156F84FE4918091CE
+:10474000DF018E1303C080E00E94A209FF91EF9168
+:10475000BF91AF919F918F917F916F915F914F9199
+:104760003F912F910F900FBE0F901F90189504D07E
+:104770006894B1118DC0089570D088F09F5790F063
+:10478000B92F9927B751A0F0D1F0660F771F881F76
+:10479000991F1AF0BA95C9F712C0B13081F077D0DD
+:1047A000B1E0089574C0672F782F8827B85F39F07B
+:1047B000B93FCCF3869577956795B395D9F73EF4D5
+:1047C00090958095709561957F4F8F4F9F4F08957D
+:1047D000E89409C097FB3EF490958095709561959B
+:1047E0007F4F8F4F9F4F9923A9F0F92F96E9BB2751
+:1047F0009395F695879577956795B795F111F8CFCD
+:10480000FAF4BB0F11F460FF1BC06F5F7F4F8F4F37
+:104810009F4F16C0882311F096E911C0772321F02D
+:104820009EE8872F762F05C0662371F096E8862FC5
+:1048300070E060E02AF09A95660F771F881FDAF71C
+:10484000880F9695879597F9089557FD9058440FCE
+:10485000551F59F05F3F71F04795880F97FB991FDF
+:1048600061F09F3F79F0879508951216130614069C
+:10487000551FF2CF4695F1DF08C016161706180629
+:10488000991FF1CF86957105610508940895E89404
+:10489000BB2766277727CB0197F908950BD078C0FF
+:1048A00069D028F06ED018F0952309F05AC05FC087
+:1048B0001124EECFCADFA0F3959FD1F3950F50E0FE
+:1048C000551F629FF001729FBB27F00DB11D639FC2
+:1048D000AA27F00DB11DAA1F649F6627B00DA11D68
+:1048E000661F829F2227B00DA11D621F739FB00D0E
+:1048F000A11D621F839FA00D611D221F749F33277E
+:10490000A00D611D231F849F600D211D822F762F16
+:104910006A2F11249F5750408AF0E1F088234AF013
+:10492000EE0FFF1FBB1F661F771F881F915050405F
+:10493000A9F79E3F510570F014C0AACF5F3FECF37A
+:10494000983EDCF3869577956795B795F795E7954B
+:104950009F5FC1F7FE2B880F911D9695879597F95C
+:10496000089597F99F6780E870E060E008959FEFF1
+:1049700080EC089500240A941616170618060906F6
+:10498000089500240A9412161306140605060895C5
+:10499000092E0394000C11F4882352F0BB0F40F44D
+:1049A000BF2B11F460FF04C06F5F7F4F8F4F9F4F8D
+:1049B000089597FB072E16F4009407D077FD09D0D1
+:1049C0000E94F32407FC05D03EF4909581959F4FFB
+:1049D0000895709561957F4F0895EE0FFF1F059024
+:1049E000F491E02D0994AA1BBB1B51E107C0AA1F3B
+:1049F000BB1FA617B70710F0A61BB70B881F991F80
+:104A00005A95A9F780959095BC01CD010895F99923
+:104A1000FECF92BD81BDF89A992780B50895A8E18F
+:104A2000B0E042E050E00C942A25262FF999FECF01
+:104A30001FBA92BD81BD20BD0FB6F894FA9AF99ABB
+:104A40000FBE019608950E941525272F0C94162558
+:104A5000DC01CB01FC01F999FECF06C0F2BDE1BD3E
+:104A6000F89A319600B40D9241505040B8F708952D
+:044A7000F894FFCFE8
+:104A74002002A409320A0F0ADB09A7090101BC01BB
+:104A840028080A03140A3F4D363960071307DD0668
+:104A9400A4063706500669068206010203040506C9
+:044AA40007080900F6
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png b/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png
index 1d5226974..8e709ee26 100644
--- a/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png
+++ b/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c
new file mode 100644
index 000000000..7c9f67381
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/keymap.c
@@ -0,0 +1,134 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define SYMB 1
+#define PLVR 2
+#define ARRW 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = KEYMAP(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F14,
+ KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, TG(PLVR),
+ 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_LALT, KC_LGUI,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_MUTE,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, CTL_T(KC_ESC), KC_FN1,
+ //
+ /*-*/ KC_F15, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ /*-*/ KC_BSLS, 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_RALT, KC_F4, KC_F5, KC_F6,
+ KC_MPLY, KC_MNXT,
+ KC_MPRV,
+ KC_FN3, KC_QUOT, KC_SPC
+ ),
+ [SYMB] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC,
+ KC_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_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ /*-*/ /*-*/ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_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
+ ),
+ [PLVR] = KEYMAP(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
+ KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
+ KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_C, KC_V, KC_NO,
+ //
+ /*-*/ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ /*-*/ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ /*-*/ /*-*/ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ /*-*/ KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ /*-*/ /*-*/ /*-*/ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_NO, KC_N, KC_M
+ ),
+ [ARRW] = KEYMAP(
+ KC_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_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
+ 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,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_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_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_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[] = {
+ [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
+ [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
+ [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
+};
+
+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) {
+ case SYMB:
+ ergodox_right_led_1_on();
+ break;
+ case PLVR:
+ ergodox_right_led_2_on();
+ break;
+ case ARRW:
+ ergodox_right_led_3_on();
+ break;
+ default:
+ break;
+ }
+};
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md
new file mode 100644
index 000000000..4188d2b50
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/readme.md
@@ -0,0 +1,50 @@
+# Roman's Layout
+
+There are four layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **SYMB** for numbers and symbols.
+- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
+- **ARRW** for navigation (same fingers for arrows as HJKL on QWERTY).
+
+Looking for IJKL arrows? [Here we
+go](../romanzolotarev-norman-plover-osx/).
+
+[![keyboard-layout](romanzolotarev-norman-plover-osx-hjkl.png)](rttp://www.keyboard-layout-editor.com/#/gists/56ffedceb0668dda47c993e7271563e0)
+
+## Switching
+
+- Tap `SYMB` to toggle **SYMB**.
+- Tap `ARRW` to toggle **ARRW**.
+- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
+- Tap `PLVR` to toggle **PLVR**.
+
+## LEDs
+
+- Red: SYMB is on.
+- Green: PLVR is on.
+- Blue: ARRW is on.
+
+## Functional Keys
+
+- 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/).
+- Tap `F14`, `F15` to adjust display brightness.
+
+**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
+`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
+you ErgoDox. Enjoy!
+
+## CTRL/ESC
+
+Both of those keys are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
+- Then you can activate **PLVR** and use ErgoDox EZ for steno.
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.hex b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.hex
new file mode 100644
index 000000000..c341ba2b2
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.hex
@@ -0,0 +1,1139 @@
+:100000000C94BB020C94FF020C94FF020C94FF02B0
+:100010000C94FF020C94FF020C94FF020C94FF025C
+:100020000C94FF020C94FF020C94090C0C94DB0C52
+:100030000C94FF020C94FF020C94FF020C94FF023C
+:100040000C94FF020C94A9210C94FF020C94FF0263
+:100050000C94FF020C94341B0C94FF020C94FF02CE
+:100060000C94FF020C94FF020C94FF020C94FF020C
+:100070000C94FF020C94FF020C94FF020C94FF02FC
+:100080000C94FF020C94FF020C94FF020C94FF02EC
+:100090000C94FF020C94FF020C94FF020C94FF02DC
+:1000A0000C94FF020C94FF020C94FF02480D6A0DA1
+:1000B000580E6A0D580EAF0DD20D580E270E3A0E7F
+:1000C0002611261163116311A611E411FD13FD130E
+:1000D000FD11FD13FE12FE12D113FD13FD13E813E3
+:1000E0000000F0A1F0A2F0A335002B002971E1007F
+:1000F0003A0000001E00140004001D003B00C10077
+:100100001F001A0016001B003C0029712000070088
+:1001100008000600E2002A0021000900170019006B
+:10012000E300A90022000E000A0005000000AA005A
+:100130006900025400002F000000A8006A0031008E
+:10014000000030000000AE0023000D001C00130072
+:100150000000AB002400180011001000E700AC0004
+:10016000250015000C003600E6002C0026000F00CC
+:10017000120037003D003400270033000B00380028
+:100180003E00C3002E002D002800E5003F000000C7
+:1001900001000100010001000100000001001E003B
+:1001A0001E0201000100010001001F001F020100EA
+:1001B00001000100010020002002010001000100F7
+:1001C00001002100210201000100010001002200C4
+:1001D00022020100000001000100010000000100F6
+:1001E000000001000100010000000100000001000A
+:1001F000010023002302010000000100010024008F
+:100200002402010001000100010025002502010077
+:10021000010001000100260026020100010001008A
+:100220000100270027020100010001000100010078
+:1002300001000100010000000000000000000000BB
+:100240000100000000001E00140004000100000076
+:1002500000001F001A001600010019000000200015
+:10026000080007000000060000002100150009003A
+:10027000000001000000220017000A000000010039
+:10028000010001000000000000000100010000006A
+:100290000000000000000100000023001C000B0013
+:1002A000000001000000240018000D000000010003
+:1002B000000025000C000E000000100000002600C9
+:1002C00012000F000000110000002700130033008F
+:1002D00000000000000000002F00340000000000BB
+:1002E0000100010001000100010000000100010007
+:1002F000010001000100010001000100F200010005
+:100300000100010001000100F000010001000100F6
+:1003100001000100F100F4000100010001000100F2
+:10032000F300F500000001000100010000000100E1
+:1003300000000100010001000000010000000100B8
+:100340000100010050000100000001000100010057
+:1003500051000100010001000100010052000100F4
+:1003600001000100010001004F0001000100010037
+:100370000100010001000100010001000100010075
+:100380000100010001000000160345007200670033
+:100390006F0044006F007800200045005A00000004
+:1003A00016034500720067006F0044006F0078007C
+:1003B000200045005A0000000403090409026D00F2
+:1003C000040100A0FA090400000103010100092151
+:1003D00011010001223F000705810308000A0904FA
+:1003E00001000103010200092111010001224D0059
+:1003F0000705820308000A09040200010300000047
+:100400000921110100012236000705830308000AB3
+:100410000904030001030000000921110100012269
+:1004200039000705840310000112011001000000CB
+:1004300008EDFE071301000102000105010906A1F4
+:1004400001050719E029E7150025019508750181C7
+:100450000205081901290595057501910295017597
+:100460000391010507190029771500250195787575
+:10047000018102C005010980A10185021601002643
+:10048000B7001A01002AB700751095018100C00558
+:100490000C0901A1018503160100269C021A010026
+:1004A0002A9C02751095018100C005010902A10175
+:1004B0000901A10005091901290515002501950566
+:1004C000750181029501750381010501093009312A
+:1004D0001581257F95027508810609381581257FCC
+:1004E000950175088106050C0A38021581257F954E
+:1004F0000175088106C0C005010906A1010507199B
+:10050000E029E7150025019508750181029501751F
+:1005100008810105081901290595057501910295C4
+:1005200001750391010507190029FF150025FF95A5
+:100530000675088100C000000000000000000000F7
+:1005400000010204060A0F17202C3A4A5D71879DAC
+:10055000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AB
+:100560005D4A3A2C20170F0A060402010000000021
+:1005700000000000000011241FBECFEFDAE0DEBF54
+:10058000CDBF04B603FE24C08091EF019091F0012D
+:10059000A091F101B091F2018730904BA740B04B90
+:1005A000B9F41092EF011092F0011092F101109243
+:1005B000F20114BE84B7877F84BF88E10FB6F89438
+:1005C00080936000109260000FBEE0E0FFE30995A9
+:1005D00011E0A0E0B1E0E6EDF6E402C005900D9276
+:1005E000A433B107D9F711E0A4E3B1E001C01D9233
+:1005F000AF3EB107E1F70E944D090C9469230C94BA
+:10060000000061110BC0FC018281882321F085EE7E
+:100610000E94BA0F03C085EE0E94821080E090E035
+:10062000089508956091B1017091B2018091B30174
+:100630009091B4010E94601A56985E9825982D9862
+:1006400026982E9827982F98823039F0833041F0E1
+:10065000813041F4259A2D9A0895269A2E9A08956C
+:10066000279A2F9A08950C94120356985E9825980D
+:100670002D9826982E9827982F988FEF90E090939A
+:1006800089008093880090938B0080938A009093D8
+:100690008D0080938C00259A2D9A2FEF80E792E0B1
+:1006A000215080409040E1F700C00000269A2E9A29
+:1006B0002FEF80E792E0215080409040E1F700C0AA
+:1006C0000000279A2F9A2FEF80E792E02150804078
+:1006D0009040E1F700C0000025982D982FEF80E7AB
+:1006E00092E0215080409040E1F700C00000269841
+:1006F0002E982FEF80E792E0215080409040E1F764
+:1007000000C0000027982F9856985E9825982D983D
+:1007100026982E9827982F98089589EA809380002C
+:1007200089E08093810024982C983F988AB18F7437
+:100730008AB96E98479A8BB1806B8BB9769A0E9472
+:1007400035030C94110380E2809300018091340101
+:1007500081110EC00E94F20381E0809334012FEFDB
+:1007600083ED90E3215080409040E1F700C000000D
+:1007700080E40E94F8038093000181112EC00E9442
+:10078000220480930001811128C00E9422048093DA
+:100790000001811122C08FE30E9422048093000196
+:1007A00081111BC00E941A0480E40E94F803809308
+:1007B0000001811112C08CE00E942204809300018C
+:1007C00081110BC00E94220480930001811105C099
+:1007D0008FE30E942204809300010E941A048091FA
+:1007E000000108951092B9008AE08093B80008953E
+:1007F00094EA9093BC009091BC0097FFFCCF90913D
+:10080000B900987F983021F0903111F081E008957F
+:100810008093BB0084E88093BC008091BC0087FF7C
+:10082000FCCF8091B900887F883111F0803471F756
+:1008300080E0089584E98093BC008091BC0084FD31
+:10084000FCCF08958093BB0084E88093BC00809126
+:10085000BC0087FFFCCF9091B900987F81E098326F
+:1008600009F480E0089584E88093BC008091BC0086
+:1008700087FFFCCF8091BB0008958091000181111A
+:1008800015C080E40E94F8038093000181110CC020
+:1008900082E10E94220480930001811105C08FEF44
+:1008A0000E942204809300010E941A0484B1807F78
+:1008B00084B985B1807F85B98AB1837F8AB98BB1CC
+:1008C000837F8BB93E98469808950E94A303809336
+:1008D00000010E943D0480B38C7080BB81B3836FA4
+:1008E00081BBA6E3B1E0E4E4F1E08EE08E0F11926B
+:1008F0001D928E13FCCF0C948D03BF92CF92DF928A
+:10090000EF92FF920F931F93CF93DF93809100019B
+:10091000882379F0809135018F5F809335018111B3
+:1009200008C00E94A30380930001811102C00E94AD
+:10093000350306E311E0C0E0D0E0DD24D39482E08B
+:10094000C82EEE24E394F12CC730D10500F5809138
+:100950000001811164C080E40E94F80380930001CB
+:10096000811112C082E10E94220480930001811152
+:100970000BC0C7010C2E01C0880F0A94EAF78095BE
+:100980000E942204809300010E941A0448C0CA30C9
+:10099000A1F028F4C83059F0C93061F005C0CC305E
+:1009A00089F070F0CD3089F0209A289810C0219AF3
+:1009B00029980DC0229A2A980AC0239A2B9807C01A
+:1009C000529A01C0539A5B9802C03E9A469890EAA8
+:1009D0009A95F1F79FB1799902C082E001C080E059
+:1009E00091709D25982B7C9902C084E001C080E025
+:1009F000892B7D9902C038E001C030E0832B7E99BD
+:100A000002C020E101C020E0822B9FB19095991F88
+:100A10009927991F9295990F907E892B0FC08091ED
+:100A20000001811149C080E40E94F8038093000115
+:100A3000882379F1B12C0E941A048B2DF801908142
+:100A4000981719F08083C09201010E943D042196FD
+:100A50000F5F1F4FCE30D10509F076CF8091010195
+:100A6000882361F1815080930101882339F08FE957
+:100A70009FE00197F1F700C0000020C0A4E4B1E0BE
+:100A8000E6E3F1E0CF01825F91919D938E13FCCF5D
+:100A900015C083E10E942204809300018111CACF16
+:100AA00081E40E94F803809300018111C3CF0E946A
+:100AB0003304B82EB094BFCF80E0C0CF0E94330380
+:100AC00081E0DF91CF911F910F91FF90EF90DF9028
+:100AD000CF90BF900895E82FF0E0EC5BFE4F80814F
+:100AE000089508958B3B910578F4883A910540F577
+:100AF000853A9105D0F48430910508F0B1C0813079
+:100B0000910509F4ADC06BC0803E910508F467C043
+:100B1000883E910508F4A4C09C01205F3109203172
+:100B2000310508F05CC090650895853A910509F497
+:100B300059C0863A910509F058C082E890E40895BA
+:100B4000883A910509F454C0893A910509F453C0D3
+:100B50008A3A910509F452C08B3A910509F451C0C3
+:100B60008C3A910509F450C08D3A910509F44FC0B3
+:100B7000803B910509F44EC08E3A910509F44DC0B1
+:100B80008F3A910509F44CC0813B910509F44BC0A3
+:100B9000823B910509F44AC0833B910509F449C0A1
+:100BA000843B910509F448C0853B910509F447C091
+:100BB000863B910509F446C0873B910509F445C081
+:100BC000883B910509F444C0893B910509F443C071
+:100BD0008A3B910509F442C080E094E4089580E0E6
+:100BE00090E0089581E890E4089583E890E4089502
+:100BF00082EE94E4089589EE94E408958AEE94E4F4
+:100C0000089585EB94E4089586EB94E4089587EBCA
+:100C100094E408958CEC94E408958DEC94E40895A4
+:100C200083E895E408958AE895E4089582E995E4D7
+:100C3000089584E995E4089581E296E4089583E2B5
+:100C400096E4089584E296E4089585E296E4089592
+:100C500086E296E4089587E296E408958AE296E4AF
+:100C60000895089596E0799FF001112494E5899FF5
+:100C7000E00DF11D1124E60FF11DEE0FFF1FE851ED
+:100C8000FF4F859194910895880F991FFC01E05AB8
+:100C9000F040859194910895880F991FFC01E052CE
+:100CA000FF4F85919491089526E0729FF0011124E1
+:100CB00044E5849FE00DF11D1124E60FF11DEE0FB8
+:100CC000FF1FE851FF4F859194919C013A952115A2
+:100CD0004FE1340708F41CC13F512115304120F485
+:100CE0009F700E944C0608959C013053211530419D
+:100CF00018F49927906C0895811520E5920771F4F6
+:100D00000E9421144FEF84E39CE0415080409040CA
+:100D1000E1F700C000000E94591BFAC0813020E5B5
+:100D2000920731F48091CD0181608093CD01F0C0B4
+:100D30009C0130552115304108F051C0292F33272F
+:100D40002F70332721303105D9F4AC01437055277A
+:100D500002C0220F331F4A95E2F73C68AC0164E001
+:100D6000440F551F6A95E1F744275370242B352B08
+:100D700073E0880F991F7A95E1F7807699271DC057
+:100D80002230310529F4982F8827816F906A0895C1
+:100D900023303105A9F4AC014370552721E030E040
+:100DA00002C0220F331F4A95E2F73C6843E0880FE8
+:100DB000991F4A95E1F7807E9770822B932B0895B7
+:100DC00024303105E1F4AC014370552721E030E0D7
+:100DD00002C0220F331F4A95E2F73A68E7CF9C0121
+:100DE00030572115304118F49F70906208959C018E
+:100DF00030582115304118F49F70906A0895803E54
+:100E00009105E0F4803C910558F58133910509F492
+:100E10006FC048F48932910509F463C08A329105A4
+:100E200009F46DC072C089339105E9F082389105EB
+:100E3000D1F08533910509F44DC067C0833E91051B
+:100E400081F138F4803E9105B9F0823E9105D9F0E8
+:100E50005CC0863E910561F1873E9105A1F155C0C8
+:100E60000E94440608952091E00120FD02C021FF68
+:100E70004CC080EE90E049C08091E00180FFF9CF46
+:100E800089E390E042C08091E00182FF0EC0809132
+:100E9000E00184FF03C080E090E037C083EE90E083
+:100EA00034C08091E00182FFF2CF82EE90E02DC04D
+:100EB0008091E00183FF0BC08091E00184FDEBCFC6
+:100EC00087EE90E022C08091E00183FFF5CF86EEAF
+:100ED00090E01BC08091E00185FF07C089E290E0AF
+:100EE00014C08091E00185FFF9CF85E390E00DC04B
+:100EF0008091E00186FF07C08AE290E006C0809101
+:100F0000E00186FFF9CF81E390E00E947205089529
+:100F1000089508950C948907809162010895CF93F4
+:100F2000DF9300D01F92CDB7DEB79C018091E60120
+:100F3000843019F593E099833B832A839093E900E9
+:100F40008FEF9091E800815095FD06C095ED9A9540
+:100F5000F1F700008111F5CF8091E80085FF0DC009
+:100F600040E050E063E070E0CE0101960E94F90994
+:100F70008091E8008E778093E8000F900F900F909B
+:100F8000DF91CF910895CF93DF9300D01F92CDB71B
+:100F9000DEB72091E601243021F522E029839B83EE
+:100FA0008A8383E08093E9008FEF9091E80081507D
+:100FB00095FD06C095ED9A95F1F700008111F5CFEA
+:100FC0008091E80085FF0DC040E050E063E070E0F4
+:100FD000CE0101960E94F9098091E8008E778093F6
+:100FE000E8000F900F900F90DF91CF91089520911E
+:100FF000E6012430F1F422E02093E9002FEF309154
+:10100000E800215035FD06C035ED3A95F1F70000B6
+:101010002111F5CF2091E80025FF0BC040E050E002
+:1010200065E070E00E94F9098091E8008E77809376
+:10103000E8000895CF93DF93EC019091E60194309E
+:1010400009F046C080910C018823D9F080910D01F0
+:101050008823B9F09093E9008FEF9091E8008150D8
+:1010600095FD06C095E19A95F1F700008111F5CF45
+:101070008091E80085FF2CC040E050E060E170E026
+:1010800017C081E08093E9008FEF9091E8008150D4
+:1010900095FD06C095ED9A95F1F700008111F5CF09
+:1010A0008091E80085FF14C040E050E068E070E007
+:1010B000CE010E94F9098091E8008E778093E800C4
+:1010C00080E1FE01A2E5B1E001900D928A95E1F781
+:1010D000DF91CF9108958091E501811109C00E94AF
+:1010E0008E0B0E94EB0B8091E20084608093E20003
+:1010F00008951092E501089508950C9496210E9498
+:10110000EF1A0E949C210E94910E0C948A0742E0E3
+:1011100061EC81E00E94080B42E061EC82E00E94F9
+:10112000080B42E061EC83E00E94080B42E161ECB5
+:1011300084E00C94080B8091E801833009F455C0D9
+:1011400030F4813071F0823009F48EC008958A3015
+:1011500009F47AC08B3009F460C0893009F09CC072
+:1011600020C08091E701813A09F096C08091E800A3
+:10117000877F8093E8008091EB019091EC01892BAF
+:1011800021F460E182E591E003C060E080E090E05E
+:1011900070E00E94440A8091E8008B778093E80019
+:1011A00008958091E701813209F076C08091EB01CA
+:1011B0009091EC01009719F0039709F06DC08091B0
+:1011C000E800877F8093E8008091E80082FD05C0F9
+:1011D0008091E6018111F8CF5FC08091F10080938A
+:1011E00062018091E8008B7753C08091E701813ADA
+:1011F00009F052C08091EB019091EC01892B09F02C
+:101200004BC08091E800877F8093E8008091E800E0
+:1012100080FFFCCF80910C0136C08091E7018132C4
+:10122000D9F58091EB019091EC01892BA9F5809182
+:10123000E800877F8093E8000E943D0B8091E901E0
+:1012400080930C010C9421148091E701813221F5E7
+:101250008091E800877F8093E8000E943D0B809199
+:10126000EA018093630108958091E701813AA1F436
+:101270008091E800877F8093E8008091E80080FFFC
+:10128000FCCF809163018093F1008091E8008E771C
+:101290008093E8000C943D0B089584B7877F84BF4A
+:1012A00088E10FB6F89480936000109260000FBE42
+:1012B00090E080E80FB6F89480936100909361000D
+:1012C0000FBE0E94E00E0E948E0B0E94EB0B8091DD
+:1012D000E20084608093E20078940E94710E0E9484
+:1012E000E20E82E091E00E948C0E0E9484218091A7
+:1012F000E601853069F40E94B01A8091E4018823E8
+:10130000B1F30E94DB1A882391F30E94E309EFCF27
+:101310000E94E80EECCF292F332723303105C9F086
+:1013200064F42130310581F02230310509F043C0E9
+:101330008DE690E02CEB33E042C021323105F1F034
+:101340002232310541F137C082E190E029E234E0F8
+:1013500036C099278130910541F08230910541F0E6
+:10136000892B49F5E8EBF3E005C0E0EAF3E002C0C1
+:10137000E8E8F3E0849190E09F0121C06430D8F464
+:10138000E62FF0E0EE0FFF1FEE5DFE4F2081318172
+:1013900089E090E014C0643070F470E0FB01EE0F5F
+:1013A000FF1FE65EFE4F20813181FB01EA5EFE4FAA
+:1013B000808190E004C080E090E020E030E0FA011D
+:1013C00031832083089580E189BD82E189BD09B41C
+:1013D00000FEFDCF8091D8008F7D8093D800809152
+:1013E000E00082608093E0008091E00081FDFCCF0E
+:1013F0000895CF92DF92EF92FF920F931F93CF93B6
+:10140000DF93EC018B016A010E945C0B811133C0F8
+:10141000C114D10439F0F60180819181081B190BA8
+:10142000C80FD91FE12CF12C0115110519F180917C
+:10143000E80085FD16C08091E8008E778093E80073
+:10144000C114D10449F0F60180819181E80EF91EA2
+:10145000F182E08285E00FC00E945C0B882321F3BB
+:101460000AC089918093F10001501109FFEFEF1A32
+:10147000FF0ADACF80E0DF91CF911F910F91FF90AB
+:10148000EF90DF90CF9008952091ED013091EE0123
+:101490002617370748F06115710539F42091E800E7
+:1014A0002E772093E80001C0B90140E06115710575
+:1014B000A9F12091E601222309F443C0253009F463
+:1014C00042C02091E80023FD40C02091E80022FDA9
+:1014D00032C02091E80020FFE9CF4091F300209135
+:1014E000F20030E0342BFC01CF016115710559F099
+:1014F0002830310540F481918093F10061507109E9
+:101500002F5F3F4FF1CF41E02830310509F040E037
+:101510002091E8002E772093E800C8CF4111C9CF71
+:101520000AC08091E601882361F0853061F08091E6
+:10153000E80083FD0AC08091E80082FFF2CF80E0DE
+:10154000089582E0089583E0089581E00895209150
+:10155000ED013091EE012617370748F0611571054E
+:1015600039F42091E8002E772093E80001C0B901FA
+:10157000FC0120E06115710591F18091E60188235D
+:1015800009F440C0853009F43FC08091E80083FD34
+:101590003DC08091E80082FD2FC08091E80080FF6F
+:1015A000E9CF2091F3008091F20090E0922B611539
+:1015B000710559F08830910540F424912093F10091
+:1015C0003196615071090196F2CF21E0089709F038
+:1015D00020E08091E8008E778093E800CBCF211146
+:1015E000CCCF0AC08091E601882361F0853061F09C
+:1015F0008091E80083FD0AC08091E80082FFF2CF6D
+:1016000080E0089582E0089583E0089581E00895E0
+:10161000982F973058F59093E900981739F070910A
+:10162000EC002091ED005091F00003C0242F762FA4
+:1016300050E021FF19C03091EB003E7F3093EB006A
+:101640003091ED003D7F3093ED003091EB00316043
+:101650003093EB007093EC002093ED005093F0007A
+:101660002091EE0027FF07C09F5FD3CF8F7080933C
+:10167000E90081E0089580E008958091E70187FF07
+:1016800011C08091E80082FD05C08091E6018111C2
+:10169000F8CF11C08091E8008B770BC08091E601F4
+:1016A000882349F08091E80080FFF8CF8091E8001E
+:1016B0008E778093E80008952091E4003091E50052
+:1016C00095E64091EC00842F817040FF22C080910C
+:1016D000E80080FD1CC08091E601882391F08530F0
+:1016E00091F08091EB0085FD10C04091E400509195
+:1016F000E5004217530729F39A01915011F784E04E
+:10170000089582E0089583E0089581E0089580E0DF
+:1017100008954091E80042FFDECF08950E94FC0B3F
+:101720000E94040CE0EEF0E0808181608083E8EDAF
+:10173000F0E080818F77808319BCA7EDB0E08C91B9
+:101740008E7F8C9380818F7E80831092E501089537
+:101750000F931F93CF93DF930E94FC0B0E94040C06
+:10176000C8EDD0E088818F778883888180688883FE
+:1017700088818F7D888319BC1092E6011092E20166
+:101780001092E4011092E30100EE10E0F801808174
+:101790008B7F808388818160888342E060E080E085
+:1017A0000E94080BE1EEF0E080818E7F8083E2EE04
+:1017B000F0E0808181608083808188608083F8018F
+:1017C00080818E7F8083888180618883DF91CF9143
+:1017D0001F910F910895E8EDF0E080818F7E808366
+:1017E000E7EDF0E080818160808384E082BF81E06A
+:1017F0008093E5010C94A80BE8EDF0E080818E7FEA
+:1018000080831092E20008951092DA001092E100B5
+:1018100008951F920F920FB60F9211242F933F93AA
+:101820004F935F936F937F938F939F93AF93BF93E8
+:10183000EF93FF938091E10082FF0BC08091E20063
+:1018400082FF07C08091E1008B7F8093E1000E94BE
+:10185000700E8091DA0080FF1FC08091D80080FF59
+:101860001BC08091DA008E7F8093DA008091D900CE
+:1018700080FF0DC080E189BD82E189BD09B400FE11
+:10188000FDCF81E08093E6010E946B0805C019BC82
+:101890001092E6010E9479088091E10080FF19C052
+:1018A0008091E20080FF15C08091E2008E7F8093DE
+:1018B000E2008091E20080618093E2008091D80094
+:1018C00080628093D80019BC85E08093E6010E9475
+:1018D0007D088091E10084FF30C08091E20084FFA8
+:1018E0002CC080E189BD82E189BD09B400FEFDCF35
+:1018F0008091D8008F7D8093D8008091E1008F7E09
+:101900008093E1008091E2008F7E8093E2008091DD
+:10191000E20081608093E2008091E201882311F06F
+:1019200084E007C08091E30087FD02C081E001C030
+:1019300083E08093E6010E947F088091E10083FFAD
+:1019400029C08091E20083FF25C08091E100877F5C
+:101950008093E10082E08093E6011092E2018091A1
+:10196000E1008E7F8093E1008091E2008E7F809382
+:10197000E2008091E20080618093E20042E060E05A
+:1019800080E00E94080B8091F00088608093F00056
+:101990000E947C08FF91EF91BF91AF919F918F9131
+:1019A0007F916F915F914F913F912F910F900FBE5B
+:1019B0000F901F9018951F920F920FB60F9211243F
+:1019C0002F933F934F935F936F937F938F939F9347
+:1019D000AF93BF93CF93DF93EF93FF93C091E90051
+:1019E000CF708091EC00D82FD17080FDD0E810929C
+:1019F000E9008091F000877F8093F00078940E9446
+:101A00001F0D1092E9008091F00088608093F00033
+:101A1000CD2BCF70C093E900FF91EF91DF91CF9173
+:101A2000BF91AF919F918F917F916F915F914F91F6
+:101A30003F912F910F900FBE0F901F9018951F93FD
+:101A4000CF93DF93CDB7DEB7AA970FB6F894DEBF7A
+:101A50000FBECDBFE7EEF1E088E08E0F9091F10070
+:101A600091938E13FBCF0E949B088091E80083FF27
+:101A70001FC18091E7019091E801492F50E04A3061
+:101A8000510508F015C1FA01EA5AFF4F0C941E23C4
+:101A9000803881F0823809F00BC18091EB018F70A2
+:101AA0008093E9008091EB0085FB882780F91092F4
+:101AB000E90006C08091E3019091E40191118260F8
+:101AC0009091E800977F9093E8008093F100109246
+:101AD000F100C8C0282F2D7F09F0EAC0882319F033
+:101AE000823061F0E5C08091E901813009F0E0C009
+:101AF000933009F080E08093E4012BC08091E901EC
+:101B0000811127C08091EB018F7009F4D1C08093BF
+:101B1000E9002091EB0020FF1CC0933021F480915C
+:101B2000EB00806214C09091EB0090619093EB0009
+:101B300021E030E0A90102C0440F551F8A95E2F769
+:101B40004093EA001092EA008091EB008860809355
+:101B5000EB001092E9008091E800877F86C0811138
+:101B6000A7C01091E9011F778091E3008078812B55
+:101B70008093E3008091E800877F8093E8000E94D3
+:101B80003D0B8091E80080FFFCCF8091E3008068EE
+:101B90008093E300111102C082E001C083E08093D2
+:101BA000E60186C08058823008F082C08091E90149
+:101BB0009091EA018C3D53E0950779F583E08A83A3
+:101BC0008AE289834FB7F894DE01139620E03EE065
+:101BD00051E2E32FF0E050935700E49120FF03C05F
+:101BE000E295EF703F5FEF708E2F90E0EA3010F0DB
+:101BF000C79601C0C0968D939D932F5F243149F7FE
+:101C00004FBF8091E800877F8093E8006AE270E030
+:101C1000CE0101960E94440A14C0AE014F5F5F4F8F
+:101C20006091EB010E948B09BC01892B09F440C033
+:101C30009091E800977F9093E80089819A810E94B3
+:101C4000A70A8091E8008B778093E80031C0803844
+:101C500079F58091E800877F8093E8008091E20128
+:101C60008093F1008091E8008E778093E8000E94D5
+:101C70003D0B1EC081111CC09091E9019230C0F44F
+:101C80008091E800877F8093E8009093E2010E94B2
+:101C90003D0B8091E201811106C08091E30087FD38
+:101CA00002C081E001C084E08093E6010E948708C1
+:101CB0008091E80083FF0AC08091E800877F8093CD
+:101CC000E8008091EB0080628093EB00AA960FB64B
+:101CD000F894DEBF0FBECDBFDF91CF911F91089565
+:101CE0000895CF938091E6018823A1F0C091E90087
+:101CF000CF709091EC00892F817090FD80E8C82B07
+:101D00001092E9008091E80083FD0E941F0DCF70C2
+:101D1000C093E900CF910895909369018093680181
+:101D20000895E0916801F0916901309721F00190E8
+:101D3000F081E02D099480E00895E0916801F09130
+:101D40006901309721F00280F381E02D0994089514
+:101D5000E0916801F0916901309721F00480F581EC
+:101D6000E02D099408952091660130916701821752
+:101D7000930771F09093670180936601E091680189
+:101D8000F0916901309721F00680F781E02D0994E8
+:101D9000089520916401309165018217930771F0D5
+:101DA0009093650180936401E0916801F09169016D
+:101DB000309721F00084F185E02D0994089508956D
+:101DC0000C94DF0E0E94F51A0E9465040C94BB1B54
+:101DD000CF92DF92EF92FF920F931F93CF93DF93F7
+:101DE000CDB7DEB72B970FB6F894DEBF0FBECDBFD1
+:101DF0000E947D048BE6C82E81E0D82E00E010E022
+:101E0000E02E802F0E946B05F60141916F01F42EA8
+:101E1000F826B1F40F5F1F4F0E30110589F78FEFD1
+:101E200089838A831B820E94FE1A8160782F9D839A
+:101E30008C8349815A816B818D810E948B0F40C0B8
+:101E40009091CD0191FF04C08B870E9471058B8515
+:101E500020E030E04F2D50E0922FBA01022E02C058
+:101E6000759567950A94E2F760FF24C02E83EF8290
+:101E700021E030E0690102C0CC0CDD1C9A95E2F74C
+:101E800090E08C219D21892B09F420E028870E9475
+:101E9000FE1A8160782F9A8789874E815F816885D5
+:101EA0008A850E948B0FF801E559FE4F8081C82674
+:101EB000C08206C02F5F3F4F2630310569F6AACF9A
+:101EC0000E94A21E10916A010E94910E1817A1F0A3
+:101ED0000E94910E80936A012B960FB6F894DEBF94
+:101EE0000FBECDBFDF91CF911F910F91FF90EF906B
+:101EF000DF90CF900C948A072B960FB6F894DEBF34
+:101F00000FBECDBFDF91CF911F910F91FF90EF904A
+:101F1000DF90CF900895CF93DF93CDB7DEB72B97A7
+:101F20000FB6F894DEBF0FBECDBF4F8358876987C9
+:101F30007A878B87DE01119686E0FD0111928A95E2
+:101F4000E9F785E0FE01379601900D928A95E1F759
+:101F500049815A816B817C818D819E810E94BB1653
+:101F60002B960FB6F894DEBF0FBECDBFDF91CF9199
+:101F700008950895CF93882309F4C2C0C82F8238EA
+:101F800059F40E94910E81FDBBC089E30E9464193F
+:101F90000E94311A89E30CC0833879F40E94910EB3
+:101FA00080FDAEC083E50E9464190E94311A83E56A
+:101FB0000E94A619CF910C94311A843859F40E94CA
+:101FC000910E82FD9DC087E40E9464190E94311A1F
+:101FD00087E4EECF8CEF8C0F813A48F48C2F0E946F
+:101FE000E92081118DC08C2F0E946419E3CF80E21B
+:101FF0008C0F883048F4C77081E001C0880FCA9503
+:10200000EAF70E94EA19D6CF8BE58C0F833078F47B
+:10201000C53A29F0C63A31F083E890E005C081E87E
+:1020200090E002C082E890E0CF910C94B30E88E576
+:102030008C0F833108F064C0C83A39F1C93A41F1D4
+:10204000CA3A49F1CB3A51F1CC3A59F1CD3A61F162
+:10205000C03B69F1CE3A71F1CF3A79F1C13B81F1E0
+:10206000C23B89F1C33B91F1C43B99F1C53BA1F15E
+:10207000C63BA9F1C73BB1F1C83BB9F1C93BC1F1BE
+:10208000CA3BC9F180E090E038C082EE90E035C0F4
+:1020900089EE90E032C08AEE90E02FC085EB90E0B0
+:1020A0002CC086EB90E029C087EB90E026C08CEC3A
+:1020B00090E023C08DEC90E020C083E891E01DC04B
+:1020C0008AE891E01AC082E991E017C084E991E0C2
+:1020D00014C081E292E011C083E292E00EC084E27B
+:1020E00092E00BC085E292E008C086E292E005C073
+:1020F00087E292E002C08AE292E0CF910C94C90E8E
+:10210000CF910895882309F44BC0823859F40E9476
+:10211000910E81FF45C089E30E9464190E94311A23
+:1021200089E30CC0833871F40E94910E80FF38C09F
+:1021300083E50E9464190E94311A83E50E94A61962
+:102140000C94311A843859F40E94910E82FF28C0F1
+:1021500087E40E9464190E94311A87E4EFCF9CEF54
+:10216000980F913A58F390E2980F983050F4877096
+:1021700091E001C0990F8A95EAF7892F0E94F01922
+:10218000DFCF9BE5980F933020F480E090E00C9433
+:10219000B30E885A833120F480E090E00C94C90E8D
+:1021A0000895882321F00E94EA190C94311A0895A9
+:1021B000882321F00E94F0190C94311A0895BF92DF
+:1021C000CF92DF92EF92FF920F931F93CF93DF9303
+:1021D00000D000D000D0CDB7DEB725E0FC01DE0195
+:1021E000119601900D922A95E1F7FC01D0801181A2
+:1021F0000281258122952F7043815481452B09F45A
+:10220000FCC21F3F21F4FFEFDF1609F4F6C27C0188
+:102210002E830E94B90FD9821A8369817A81802F17
+:102220000E946019182FB92E0E9415190E94DC1700
+:102230002E81002319F00E94071A2E81EB2DE295C2
+:10224000EF70F0E0E05AFF4F0C941E238B2D807F3F
+:102250009B2D9F70F92E882319F0F29480EFF822BD
+:10226000002389F0FF2009F475C280E2810F8830D5
+:1022700020F48F2D0E94EA1903C08F2D0E94FA19B5
+:102280000E94311A67C2812F0E948210FF2009F438
+:10229000B4C2105E8F2D183018F40E94F01902C0DD
+:1022A0000E94001A26960FB6F894DEBF0FBECDBF6F
+:1022B000DF91CF911F910F91FF90EF90DF90CF9022
+:1022C000BF900C94311A3B2D307F8B2D8F703032A4
+:1022D00011F08295807F112319F0113021F12CC06B
+:1022E0000023B9F0222309F4A0C1213009F09DC1D7
+:1022F00026960FB6F894DEBF0FBECDBFDF91CF910B
+:102300001F910F91FF90EF90DF90CF90BF900C94B2
+:102310001A1A222319F0213009F46FC28E830E9409
+:102320001D1A8E8196C1002321F0223008F065C26B
+:102330007CC1211162C28DC1002321F0222309F446
+:1023400074C108C2222309F484C119C22B2D269519
+:102350002695237030E02115310521F0213031051B
+:10236000D1F04BC2002321F0812F9B2D937002C02E
+:1023700080E090E026960FB6F894DEBF0FBECDBF8A
+:10238000DF91CF911F910F91FF90EF90DF90CF9051
+:10239000BF900C94B30E002321F0812F9B2D9370DE
+:1023A00002C080E090E026960FB6F894DEBF0FBE24
+:1023B000CDBFDF91CF911F910F91FF90EF90DF90F4
+:1023C000CF90BF900C94C90E812F002319F00E946A
+:1023D000AA1D02C00E94121E26960FB6F894DEBFF8
+:1023E0000FBECDBFDF91CF911F910F91FF90EF9066
+:1023F000DF90CF90BF900C94971E8B2D837009F0C7
+:102400007BC00111FAC1812F829586958770880F54
+:10241000880F912F9F70C92ED12CE12CF12C082E02
+:1024200004C0CC0CDD1CEE1CFF1C0A94D2F714FF78
+:1024300012C04FE050E060E070E004C0440F551F50
+:10244000661F771F8A95D2F7CB01BA016095709508
+:102450008095909503C060E070E0CB012B2D269510
+:1024600026952370422F50E042305105D9F0433079
+:10247000510569F16C297D298E299F29413051052B
+:1024800051F126960FB6F894DEBF0FBECDBFDF9197
+:10249000CF911F910F91FF90EF90DF90CF90BF9061
+:1024A0000C9403186C297D298E299F2926960FB636
+:1024B000F894DEBF0FBECDBFDF91CF911F910F917A
+:1024C000FF90EF90DF90CF90BF900C941F180E9468
+:1024D0000318C701B60126960FB6F894DEBF0FBEEB
+:1024E000CDBFDF91CF911F910F91FF90EF90DF90C3
+:1024F000CF90BF900C94E717002319F08B2D8170BB
+:1025000001C08695882309F478C1812F829586952C
+:102510008770880F880F912F9F70C92ED12CE12CC6
+:10252000F12C082E04C0CC0CDD1CEE1CFF1C0A9400
+:10253000D2F714FF12C04FE050E060E070E004C03A
+:10254000440F551F661F771F8A95D2F7CB01BA013A
+:10255000609570958095909503C060E070E0CB0128
+:102560002B2D269526952370422F50E042305105A1
+:10257000D9F04330510569F16C297D298E299F29B5
+:102580004130510551F126960FB6F894DEBF0FBECB
+:10259000CDBFDF91CF911F910F91FF90EF90DF9012
+:1025A000CF90BF900C94DD186C297D298E299F292E
+:1025B00026960FB6F894DEBF0FBECDBFDF91CF9148
+:1025C0001F910F91FF90EF90DF90CF90BF900C94F0
+:1025D000F9180E94DD18C701B60126960FB6F894C7
+:1025E000DEBF0FBECDBFDF91CF911F910F91FF9046
+:1025F000EF90DF90CF90BF900C94C118103FD1F1B5
+:1026000018F4103E50F4A1C0123F09F463C008F45E
+:102610004CC0133F09F473C098C01F708B2D8F718D
+:102620000023A1F00E945A18812F26960FB6F89425
+:10263000DEBF0FBECDBFDF91CF911F910F91FF90F5
+:10264000EF90DF90CF90BF900C94D1100E947B1838
+:10265000812F26960FB6F894DEBF0FBECDBFDF9157
+:10266000CF911F910F91FF90EF90DF90CF90BF908F
+:102670000C94D8100023A9F02111BFC08B2D8F71AD
+:1026800026960FB6F894DEBF0FBECDBFDF91CF9177
+:102690001F910F91FF90EF90DF90CF90BF900C941F
+:1026A000A018223008F0A9C0E9CF0023A9F08B2D93
+:1026B0008F7126960FB6F894DEBF0FBECDBFDF91A7
+:1026C000CF911F910F91FF90EF90DF90CF90BF902F
+:1026D0000C945A18002359F38B2D8F7126960FB640
+:1026E000F894DEBF0FBECDBFDF91CF911F910F9148
+:1026F000FF90EF90DF90CF90BF900C947B18002359
+:1027000099F08B2D8F7126960FB6F894DEBF0FBE11
+:10271000CDBFDF91CF911F910F91FF90EF90DF9090
+:10272000CF90BF900C94451826960FB6F894DEBF54
+:102730000FBECDBFDF91CF911F910F91FF90EF9012
+:10274000DF90CF90BF900C943B180023A9F0222378
+:1027500009F4ADCF812F26960FB6F894DEBF0FBED9
+:10276000CDBFDF91CF911F910F91FF90EF90DF9040
+:10277000CF90BF900C94BA0F222309F4ADCF812FD4
+:1027800026960FB6F894DEBF0FBECDBFDF91CF9176
+:102790001F910F91FF90EF90DF90CF90BF900C941E
+:1027A00082104B2D4F70612FC7010E9401032696A6
+:1027B0000FB6F894DEBF0FBECDBFDF91CF911F9152
+:1027C0000F91FF90EF90DF90CF90BF900C945F1728
+:1027D0004B2D4F70612FC70126960FB6F894DEBFC0
+:1027E0000FBECDBFDF91CF911F910F91FF90EF9062
+:1027F000DF90CF90BF900C94310626960FB6F894D8
+:10280000DEBF0FBECDBFDF91CF911F910F91FF9023
+:10281000EF90DF90CF90BF9008950E94071A0E941A
+:10282000171A0E94DC190E94311A0E94481F0E9448
+:10283000971E80E090E00E94B30E80E090E00C9440
+:10284000C90E0E94F7190C940D140E945519292FD6
+:1028500022952F7030E02C3031054CF42A303105B0
+:102860006CF4225031092230310588F407C02C3035
+:10287000310549F02F30310531F009C0803E48F074
+:10288000803F29F406C093FB882780F9089580E0F3
+:10289000089581E00895CF93DF9300D000D01F9278
+:1028A000CDB7DEB70F900F900F900F900F90DF9184
+:1028B000CF910895CF93DF9300D000D000D0CDB753
+:1028C000DEB726960FB6F894DEBF0FBECDBFDF9100
+:1028D000CF9108951F93CF93DF93C091790116E0B4
+:1028E00080917A01C81799F0D0E01C9FF0011D9FDC
+:1028F000F00D1124E558FE4F4081518162817381B2
+:10290000848195810E945A142196C770E9CFDF9186
+:10291000CF911F9108954091AB015091AC0160910E
+:10292000AD017091AE018091AF019091B0010C9416
+:102930005A148091B00182958F7009F054C0809133
+:10294000AD01882309F44FC080917901A0917A01EB
+:102950006091AB017091AC014091AE015091AF011B
+:10296000B6E08A1709F43FC090E041155105C1F166
+:102970007F3F11F46F3FA1F1B89FF001B99FF00DB7
+:102980001124E558FE4F218172132AC02081621361
+:1029900027C02281211124C02381348124173507C7
+:1029A00010F421503109241B350B283C3105C0F4AB
+:1029B0002091B0012F7020612093B00126E0289F64
+:1029C000F001299FF00D1124E058FE4F80818F7097
+:1029D000806180838BEA91E00E94DF100C946A147E
+:1029E00001968770BECF0895CF92DF92EF92FF924B
+:1029F0000F931F93CF93DF93CDB7DEB762970FB6D8
+:102A0000F894DEBF0FBECDBF8C0185E0F801DE017A
+:102A10001D9601900D928A95E1F7D8014C9111967F
+:102A20005C91119712966C9112971396CD90DC9051
+:102A300014973091AB017091AC018091AE019091EF
+:102A4000AF01009709F46BC17F3F19F43F3F09F4D0
+:102A500066C1E090AD01EE2009F4C0C02091B00144
+:102A6000C816D90628F0F601E81BF90BCF0104C0FF
+:102A7000809590958C0D9D1DFF24F394883C9105C5
+:102A800078F0F12C207F09F0C6C07C2DD98AC88A45
+:102A900089890E944B148BEA91E00E94DF10B1C03B
+:102AA000822F807F09F046C0751314C0341312C002
+:102AB000611110C02F7020612093B0010E948B140F
+:102AC0008BEA91E00E94DF108091B001D801159649
+:102AD0008C932EC0CD2819F15F3F11F44F3FF9F0D0
+:102AE000F62E61111CC08091790120917A0136E0A7
+:102AF000821709F45AC090E0389FF001399FF00D19
+:102B00001124E558FE4F7181571306C07081471399
+:102B100003C07281711103C001968770E9CFF62E50
+:102B2000662309F418C18091B00181608093B001DF
+:102B3000F12C11C1751308C0341306C0611104C013
+:102B40008091B001D801C3C04D875E878D859E8579
+:102B50006A8B0E9425146A898823E1F16623D1F1EA
+:102B60002091B001822F82958F7090E0029774F0CF
+:102B70008091AB019091AC0198878F831986DB8699
+:102B8000CA862C87CE0107960E94DF1086E0F801E6
+:102B9000ABEAB1E001900D928A95E1F70E94991499
+:102BA0000E948B14FF24F394D6C04D875E878D85D9
+:102BB0009E850E945519292F22952F7030E02230D2
+:102BC00031050CF0BCC09F7009F0B6C0805E883043
+:102BD00008F4C1C0C8010E94DF10E4CFC816D906AE
+:102BE00008F453C0F601E81BF90BCF01883C9105AE
+:102BF00008F450C0F12C7C2DD98AC88A89890E949A
+:102C00004B14EBEAF1E086E0DF011D928A95E9F7CB
+:102C10000E948B14A0C0751314C0341312C061112C
+:102C200010C08091B001F8018583C8010E94DF10B7
+:102C300086E0EBEAF1E0DF011D928A95E9F7FE2CD0
+:102C40008AC04D875E878D859E856A8B0E9425147C
+:102C50006A89882309F4BECF662309F4BBCF20918B
+:102C6000B001822F82958F7090E002970CF48ECF86
+:102C70008091AB019091AC019A8389831B82DD82A4
+:102C8000CC822E83CE0101967FCF809590958C0DBE
+:102C90009D1DACCFF62E662309F49CCF75132EC074
+:102CA00034132CC02091B00120FD1FC0822F8295CB
+:102CB0008F70D9F0D80115962C9315978F3049F065
+:102CC0008F5F982F9295907F822F8F70892B15960A
+:102CD0008C93C8010E94DF1086E0F801ABEAB1E0F6
+:102CE00001900D928A95E1F793CF86E0F801ABEA67
+:102CF000B1E001900D928A95E1F72DC04D875E8776
+:102D00008D859E850E942514811140CF8091B00150
+:102D100081608093B001C8010E94DF101CC066234F
+:102D200009F458CF4D875E878D859E850E942514B6
+:102D3000882309F44FCF2ACF811148CF0CC024300B
+:102D400031050CF047CF9F7009F440CFF801958111
+:102D5000907F09F03BCF8F2D62960FB6F894DEBFBF
+:102D60000FBECDBFDF91CF911F910F91FF90EF90DC
+:102D7000DF90CF9008951F93CF93DF93CDB7DEB749
+:102D80002C970FB6F894DEBF0FBECDBF4F83588788
+:102D900069877A878B879C87CE0107960E94F414F7
+:102DA000882369F08F8198852A853B85232BF1F153
+:102DB0009F3F09F063C08F3F09F060C037C086E0D5
+:102DC000FE013796DE01119601900D928A95E1F78A
+:102DD0006F817885EA85FB85309741F17F3F11F45B
+:102DE0006F3F21F120917A0130E0C901019687708F
+:102DF00099274091790150E08417950709F447C05D
+:102E000069837A83FD83EC8396E0929FD001939F40
+:102E1000B00D1124A558BE4FFE01319601900D92C0
+:102E20009A95E1F780937A010E946A1416E08091E6
+:102E3000790190917A018917C1F1189FC00111247D
+:102E400085589E4F0E94F414882379F1E09179010E
+:102E50001E9FF0011124E558FE4F4081518162818F
+:102E60007381848195810E945A148091790190E048
+:102E700001968770992780937901D9CF4F81588522
+:102E800069857A858B859C850E945A14CFCF0E94D4
+:102E9000211410927A0110927901EBEAF1E086E0B8
+:102EA000DF011D928A95E9F7C1CF2C960FB6F894F1
+:102EB000DEBF0FBECDBFDF91CF911F910895EF927E
+:102EC000FF920F931F93CF93DF938C01892B09F40B
+:102ED0006CC0F12CEE24E394E8012196F801849172
+:102EE000843740F4843008F051C0813081F0823062
+:102EF00019F15BC0853709F444C0A8F19CE7980F2D
+:102F0000903708F052C08F770E94821041C00E5F48
+:102F10001F4FFE01C49180E28C0F883048F4C770C7
+:102F20008E2D01C0880FCA95EAF70E940A1A14C0B4
+:102F30008C2F0E94BA0F2DC00E5F1F4FFE01C4914F
+:102F400080E28C0F883058F4C7708E2D01C0880F36
+:102F5000CA95EAF70E94101A0E94311A1AC08C2FE3
+:102F60000E94821016C00E5F1F4FFE01C491CC2339
+:102F700081F08FE99FE00197F1F700C00000C15098
+:102F8000F6CF0E5F1F4FFE01F49003C00E94BA0FF0
+:102F90008E018F2D882309F49FCFEFE9FFE0319751
+:102FA000F1F700C000008150F5CFDF91CF911F9164
+:102FB0000F91FF90EF90089508956093B50170937D
+:102FC000B6018093B7019093B8010C940D140F9340
+:102FD0001F930091B5011091B6012091B701309176
+:102FE000B801DC01CB01802B912BA22BB32B80935A
+:102FF000B5019093B601A093B701B093B8011F91AA
+:103000000F910C940D140F931F930091B501109123
+:10301000B6012091B7013091B801DC01CB018023CA
+:103020009123A223B3238093B5019093B601A0937B
+:10303000B701B093B8011F910F910C940D140F9329
+:103040001F930091B5011091B6012091B701309105
+:10305000B801DC01CB0180279127A227B3278093F9
+:10306000B5019093B601A093B701B093B8011F9139
+:103070000F910C940D141092B1011092B2011092A4
+:10308000B3011092B4010C940D1441E050E060E0E3
+:1030900070E004C0440F551F661F771F8A95D2F752
+:1030A0004093B1015093B2016093B3017093B401A6
+:1030B0000C940D1441E050E060E070E004C0440F57
+:1030C000551F661F771F8A95D2F78091B1019091A5
+:1030D000B201A091B301B091B401482B592B6A2BD6
+:1030E0007B2B4093B1015093B2016093B301709375
+:1030F000B4010C940D1441E050E060E070E004C0B5
+:10310000440F551F661F771F8A95D2F7409550953B
+:10311000609570958091B1019091B201A091B30139
+:10312000B091B401482359236A237B234093B10112
+:103130005093B2016093B3017093B4010C940D14D9
+:1031400041E050E060E070E004C0440F551F661F8E
+:10315000771F8A95D2F78091B1019091B201A09129
+:10316000B301B091B401482759276A277B274093C0
+:10317000B1015093B2016093B3017093B4010C9408
+:103180000D140F931F930091B1011091B201209182
+:10319000B3013091B401DC01CB01802B912BA22B28
+:1031A000B32B8093B1019093B201A093B301B0937C
+:1031B000B4011F910F910C940D140F931F93009164
+:1031C000B1011091B2012091B3013091B401DC0141
+:1031D000CB0180239123A223B3238093B101909349
+:1031E000B201A093B301B093B4011F910F910C945D
+:1031F0000D140F931F930091B1011091B201209112
+:10320000B3013091B401DC01CB0180279127A227C3
+:10321000B3278093B1019093B201A093B301B0930F
+:10322000B4011F910F910C940D140895CF92DF9269
+:10323000EF92FF920F931F93CF93DF938C01C09077
+:10324000B501D090B601E090B701F090B80180913F
+:10325000B1019091B201A091B301B091B401C82A1B
+:10326000D92AEA2AFB2ACFE1D0E0D701C6010C2EE9
+:1032700004C0B695A795979587950A94D2F780FFD5
+:1032800006C0B8018C2F0E945406019721F42197A3
+:1032900060F780E001C08C2FDF91CF911F910F91DB
+:1032A000FF90EF90DF90CF900895CF93DF93EC01E4
+:1032B0000E941619BE010E945406DF91CF91089515
+:1032C000CB010E945519089590910C01992321F08A
+:1032D00090910D01911109C020910E0130910F01C3
+:1032E000F90132969FEF40E01FC0982F9695969572
+:1032F00096959F3050F5E0910E01F0910F01E90F86
+:10330000F11D877021E030E0A90102C0440F551F74
+:103310008A95E2F7CA019181892B818308959F3FA5
+:1033200039F04F5F4E3041F051915813F8CF0DC036
+:103330005111F7CF942FF5CF9F3F39F0F901E90FE5
+:10334000F11D97FDFA9582830895089590910C01DF
+:10335000992321F090910D01911109C020910E0146
+:1033600030910F01F9013296205F3F4F1FC0982F17
+:103370009695969596959F30F0F4E0910E01F09118
+:103380000F01E90FF11D877021E030E0A90102C0B3
+:10339000440F551F8A95E2F7CA01809591818923D0
+:1033A000818308953196E217F30729F090819813ED
+:1033B000F9CF1082F7CF089581E090E0E0910E01FF
+:1033C000F0910F01E80FF91F1082019680319105ED
+:1033D000A9F708959091CC01892B8093CC01089591
+:1033E00080959091CC0189238093CC01089510920F
+:1033F000CC0108959091CB01892B8093CB01089546
+:1034000080959091CB0189238093CB0108951092F0
+:10341000CB0108959091CA01892B8093CA01089528
+:1034200080959091CA0189238093CA0108951092D2
+:10343000CA0108958093B90108951092B9010895C1
+:1034400080910E0190910F01FC0131969C01205F4B
+:103450003F4F80E0919191118F5FE217F307D1F711
+:103460000895E0910E01F0910F018091CC018083CD
+:10347000E0910E01F0910F0190818091CB01892B99
+:103480008083E0910E01F0910F0190818091CA013B
+:10349000892B80838091B901882361F0E0910E012E
+:1034A000F0910F019081892B80830E94201A811155
+:1034B0001092B90180910E0190910F010C949D0E14
+:1034C000CF92DF92EF92FF926C01EE24FF24C114A1
+:1034D000D104E104F10421F0C701B60120E101C0EB
+:1034E00020E0C72ED82EE92EFF24C114D104E10418
+:1034F000F10419F0285FC701B6016B017C0154E0AB
+:10350000F694E794D794C7945A95D1F7C114D1048F
+:10351000E104F10419F02C5FC701B6016B017C01D5
+:1035200042E0F694E794D794C7944A95D1F7C11432
+:10353000D104E104F10419F02E5FC701B601DC01EA
+:10354000CB01B695A79597958795892B8A2B8B2BC1
+:1035500009F02F5F822FFF90EF90DF90CF900895BA
+:103560008091E601843021F11092CE0120E488E1BF
+:1035700090E00FB6F894A895809360000FBE20935A
+:10358000600080E00E948A0783B7817F846083BFE8
+:1035900083B7816083BF7894889583B78E7F83BF1C
+:1035A00088E10FB6F89480936000109260000FBE1F
+:1035B000089508950895CF930E94D91A0E947D041A
+:1035C0000E94DA1AC0E08C2F0E946B05811104C0A2
+:1035D000CF5FCE30C1F701C081E0CF9108950E9446
+:1035E00021140E94910E0C948A0782E084BD93E01E
+:1035F00095BD9AEF97BD80936E0008952FB7F8940C
+:103600008091CF019091D001A091D101B091D201D0
+:103610002FBF0895CF92DF92EF92FF920F931F93E7
+:103620002FB7F8944091CF015091D0016091D10112
+:103630007091D2012FBF6A017B01EE24FF248C011F
+:1036400020E030E0C016D106E206F30610F4415047
+:1036500051099A01281B390BC9011F910F91FF9045
+:10366000EF90DF90CF9008951F920F920FB60F92B8
+:1036700011248F939F93AF93BF938091CF0190912B
+:10368000D001A091D101B091D2010196A11DB11D2F
+:103690008093CF019093D001A093D101B093D20138
+:1036A000BF91AF919F918F910F900FBE0F901F9080
+:1036B00018950E948E0BF8942FEF87EA91E621501F
+:1036C00080409040E1F700C0000087E090EBDC0113
+:1036D0008093EF019093F001A093F101B093F20178
+:1036E0009CE088E10FB6F894A895809360000FBE27
+:1036F00090936000FFCFEF92FF920F931F93CF93B1
+:10370000DF93D82FC0E08C2F0E946B0500E010E003
+:10371000E82EF12CC701002E02C0959587950A94DA
+:10372000E2F780FD06C00F5F1F4F0630110591F7CD
+:1037300009C0602F7C2F80E00E943206D813F3CF9F
+:1037400081E004C0CF5FCE30F1F680E0DF91CF9111
+:103750001F910F91FF90EF900895CF93C82F8CE2A7
+:103760000E947B1B882321F08C2FCF910C947B1B14
+:1037700080E0CF910895CF930E94021D811102C075
+:103780000E94E81CC5E6C15049F00E947D048FE309
+:103790009CE90197F1F700C00000F5CF89E20E9493
+:1037A000AD1B811113C18AE20E94AD1B81110E94E1
+:1037B000E81C85E00E94AD1B81110E94591B0E94EC
+:1037C0000D1D8093CD0187E00E94AD1B8823A9F1D8
+:1037D0008BE10E94AD1B882351F08091CD0181FBCC
+:1037E000222720F991E0922790FB81F90EC08EE00C
+:1037F0000E94AD1B882361F08091CD0182FB2227BE
+:1038000020F991E0922790FB82F98093CD0115C0B9
+:1038100080E10E94AD1B9091CD01882341F093FB84
+:10382000222720F981E0822780FB93F904C0892FA9
+:10383000809580FB90F99093CD018091CD010E94FD
+:10384000111D0E941F1D8093E00180EE0E94AD1BA0
+:10385000882341F08091E001982F909590FB80F9AA
+:103860008093E00189E30E94AD1B882359F0809189
+:10387000E00181FB222720F991E0922790FB81F95A
+:103880008093E00182EE0E94AD1B882359F0809165
+:10389000E00182FB222720F991E0922790FB82F938
+:1038A0008093E00186EE0E94AD1B882359F0809141
+:1038B000E00183FB222720F991E0922790FB83F916
+:1038C0008093E00183EE0E94AD1B882359F0809124
+:1038D000E00184FB222720F991E0922790FB84F9F4
+:1038E0008093E00185E30E94AD1B882359F080910D
+:1038F000E00185FB222720F991E0922790FB85F9D2
+:103900008093E00181E30E94AD1B882359F08091F0
+:10391000E00186FB222720F991E0922790FB86F9AF
+:103920008093E00181E10E94AD1B882359F08091D2
+:10393000E00187FB222720F991E0922790FB87F98D
+:103940008093E0018091E0010E94231D8091E001BD
+:1039500087FB882780F980930D0187E20E94AD1BC9
+:10396000C82F8EE10E94AD1B8111C2608FE10E94C1
+:10397000AD1B8111C46080E20E94AD1B8111C86043
+:1039800081E20E94AD1B8111C06182E20E94AD1BE9
+:103990008111C06283E20E94AD1B8111C06484E288
+:1039A0000E94AD1B882311F0C06802C0CC2329F00F
+:1039B0008C2F0E941A1D6C2F03C00E94161D682FA9
+:1039C00070E080E090E0CF910C94DD17CF910895E6
+:1039D0006DEE7EEF80E090E00E94542360E082E094
+:1039E00090E00E94462360E083E090E00E9446233E
+:1039F00060E084E090E00E94462360E085E090E093
+:103A00000C94462380E090E00E94402321E08D3E0C
+:103A10009E4F09F020E0822F089582E090E00C9400
+:103A20003823682F82E090E00C94462383E090E0F6
+:103A30000C943823682F83E090E00C94462384E0B4
+:103A400090E00C943823682F84E090E00C94462397
+:103A50008091D50180FF0BC06091130185E0689FC4
+:103A6000B001112475956795759567952BC081FFF9
+:103A700009C06091130185E0689FB001112475951C
+:103A8000679520C082FF07C06091130185E0689FA1
+:103A9000B001112417C09091D6019923D1F0609103
+:103AA0001201961788F72091130185E0289F900155
+:103AB0001124929FA001939F500D112470E0CA0120
+:103AC0000E940A236038710540F46115710539F0D0
+:103AD00002C065E070E0862F08958FE7089581E0C9
+:103AE00008958091D50180FF08C06091110170E0B8
+:103AF000759567957595679521C081FF06C06091A2
+:103B0000110170E07595679519C082FF04C060913E
+:103B1000110170E010C09091D6019923C1F060911D
+:103B200010019617A0F780911101899FC0011124FF
+:103B300070E00E940A236038710528F46115710550
+:103B400021F0862F08958FE7089581E0089561E0C0
+:103B500070E0F4CF803F21F40E94281D819504C0BD
+:103B6000813F29F40E94281D8093D9010895823F46
+:103B700021F40E94281D819504C0833F29F40E94EE
+:103B8000281D8093D8010895893F19F40E94711D62
+:103B900005C08A3F31F40E94711D81958093DA013E
+:103BA00008958B3F21F40E94711D819504C08C3FC4
+:103BB00029F40E94711D8093DB010895843F21F454
+:103BC0008091D701816017C0853F21F48091D70192
+:103BD000826011C0863F21F48091D70184600BC0C0
+:103BE000873F21F48091D701886005C0883F31F478
+:103BF0008091D70180618093D70108958D3F21F492
+:103C00008091D50181600BC08E3F21F48091D50158
+:103C1000826005C08F3F29F48091D5018460809334
+:103C2000D5010895803F39F48091D90187FF6CC098
+:103C30001092D90169C0813F29F48091D9011816E9
+:103C4000BCF362C09091D801823F29F497FF5CC019
+:103C50001092D80159C0833F19F41916CCF354C0FF
+:103C6000893F41F48091DA0118160CF04DC0109292
+:103C7000DA014AC08A3F29F48091DA0187FF44C003
+:103C8000F6CF8B3F39F48091DB0187FF3DC0109266
+:103C9000DB013AC08C3F29F48091DB011816BCF39C
+:103CA00033C0843F21F48091D7018E7F17C0853FB8
+:103CB00021F48091D7018D7F11C0863F21F480913E
+:103CC000D7018B7F0BC0873F21F48091D701877F7D
+:103CD00005C0883F31F48091D7018F7E8093D70152
+:103CE00013C08D3F21F48091D5018E7F0BC08E3F94
+:103CF00021F48091D5018D7F05C08F3F29F48091FB
+:103D0000D5018B7F8093D5018091D80181110EC0A0
+:103D10008091D90181110AC08091DA01811106C018
+:103D20008091DB01811102C01092D601089587EDC8
+:103D300091E00E94A80E0E94FE1A9093D4018093F5
+:103D4000D30108951F93CF93DF938091D301909176
+:103D5000D4010E940A1BAC019091D601992321F055
+:103D60002091140130E006C0209115018AE0289FBF
+:103D7000900111244217530708F486C08091D8019E
+:103D8000C091D901D091DA011091DB01811107C0F6
+:103D9000C11176C0D11174C0111172C075C09F3F9E
+:103DA00019F09F5F9093D601181624F40E94281DE5
+:103DB0008093D8018091D80187FF05C00E94281DFB
+:103DC00081958093D8011C1624F40E94281D8093AD
+:103DD000D9018091D90187FF05C00E94281D8195D6
+:103DE0008093D9016091D801662339F1C091D9013E
+:103DF000CC2319F1772767FD7095872F972F0E94A5
+:103E00001B2223E333E343E35FE30E947F220E940C
+:103E1000E8216093D8016C2F772767FD7095872F75
+:103E2000972F0E941B2223E333E343E35FE30E94C7
+:103E30007F220E94E8216093D9011D1624F40E947C
+:103E4000711D8093DA018091DA0187FF05C00E941D
+:103E5000711D81958093DA01111624F40E94711D61
+:103E60008093DB018091DB0187FF05C00E94711DFB
+:103E700081958093DB01DF91CF911F910C94971E68
+:103E80009F3F09F08ECF96CFDF91CF911F9108957C
+:103E9000E7EDF1E085E0DF011D928A95E9F71092E8
+:103EA000D6011092D5010895833081F128F4813034
+:103EB00059F08230D1F00895853009F449C0B8F145
+:103EC000863009F456C0089580911501262F30E000
+:103ED000280F311D2F3F310524F4680F6093150121
+:103EE00008958FEF80931501089580911401262F76
+:103EF00030E0280F311D2F3F310524F4680F609307
+:103F0000140108958FEF8093140108958091130197
+:103F1000262F30E0280F311D2F3F310524F4680F84
+:103F20006093130108958FEF80931301089580919A
+:103F30001201262F30E0280F311D2F3F310524F4C8
+:103F4000680F6093120108958FEF80931201089516
+:103F500080911101262F30E0280F311D2F3F3105B0
+:103F600024F4680F6093110108958FEF809311017D
+:103F7000089580911001262F30E0280F311D2F3F2A
+:103F8000310524F4680F6093100108958FEF80933A
+:103F900010010895833011F128F4813049F0823006
+:103FA00091F00895853081F120F18630C1F10895B6
+:103FB00080911501681720F4861B809315010895E0
+:103FC00010921501089580911401681720F4861B42
+:103FD00080931401089510921401089580911301A3
+:103FE000681720F4861B8093130108951092130123
+:103FF000089580911201681720F4861B80931201A6
+:10400000089510921201089580911101681720F40B
+:10401000861B8093110108951092110108958091DB
+:104020001001681720F4861B8093100108951092E8
+:10403000100108950F931F938D3109F46AC008F0A1
+:104040003FC08E3009F484C0C0F4873009F46DC0DD
+:1040500068F4863009F0B5C08091CD01817F8E7FF4
+:104060008093CD0181E08093DD01ACC0883009F4FC
+:1040700057C08B3009F46AC0A4C0863109F466C009
+:1040800078F4803109F477C0813109F09AC00E9438
+:10409000211490910D0181E0892780930D0156C074
+:1040A000893109F453C08B3109F08BC08091CD0167
+:1040B00081FB222720F991E0922790FB81F951C0E2
+:1040C000853309F475C048F4873209F471C008F4E7
+:1040D0005EC0893209F46CC074C0833430F48A3312
+:1040E00008F053C0883391F16CC0833409F460C088
+:1040F000883409F066C00E9421140FEF13ED20E30D
+:10410000015010402040E1F700C000000E94591B00
+:104110001DC00E94A2210E94910E0E948A0716C013
+:104120000E940D1D0E941F1D11C09091CD01892F6D
+:104130008095817080FB90F929F09660986090934B
+:10414000CD0140C0997F977F9093CD0181E03AC027
+:104150008091CD0182FB222720F991E0922790FBEC
+:1041600082F98093CD01992389F38091CD018160FB
+:104170008093CD01EBCF8091CD0183FB222720F9E5
+:1041800091E0922790FB83F9ECCF895301C08D51C8
+:1041900041E050E060E070E08A019B0104C0000F44
+:1041A000111F221F331F8A95D2F7C901B80104C01D
+:1041B00061E070E080E090E00E94DD170E94211431
+:1041C000C5CF80E01F910F91089580E0089580E0B1
+:1041D0000895CF93C82F8091DD01813079F018F0D8
+:1041E0008230E9F187C0E0910E01F0910F018081EA
+:1041F000813169F0823209F07FC009C0E0910E017F
+:10420000F0910F018081813111F0823261F48C2FA5
+:104210000E94E520811104C08C2F0E941A201DC02D
+:1042200081E090E01AC08C2F0E94E720811114C019
+:10423000C43179F048F4CB3079F0C03109F060C076
+:1042400082E08093DD0108C0C93219F0C83321F043
+:1042500057C01092DD0154C081E0817053C0C93253
+:1042600089F118F5C43171F1A8F4C73009F046C0DE
+:104270008AE08093150194E19093140193E0909368
+:1042800013018093120188E08093110188E28093EA
+:10429000100134C0CE51C63088F5EC2FF0E0E65D59
+:1042A000FE4F80818093DC0129C0CE34E9F020F4F8
+:1042B000CB3421F56AE013C0C13579F0C235F1F491
+:1042C00061E00DC08091DC01882319F01092DC01BF
+:1042D00015C081E08093DD0115C061E006C08091CA
+:1042E000DC010E94541F0AC06AE08091DC010E9438
+:1042F000CA1F04C01092DD0180E004C081E002C04A
+:1043000080E0ABCFCF910895E1E8F0E08081886054
+:1043100080838081816080838FB7F89493E090934D
+:10432000890090ED909388008FBF0895EFE6F0E04C
+:104330008081826080830895EFE6F0E080818D7F48
+:1043400080830895EFE6F0E0908182E08927808302
+:1043500008951F920F920FB60F9211242F933F933F
+:104360004F935F936F937F938F939F93AF93BF937D
+:10437000EF93FF938091DE019091DF01019690937E
+:10438000DF018093DE01811103C082E00E948A0771
+:10439000E091DF01E695E695F0E0EA5CFA4FE49102
+:1043A0008091DE018E1303C080E00E948A07FF9196
+:1043B000EF91BF91AF919F918F917F916F915F919D
+:1043C0004F913F912F910F900FBE0F901F90189516
+:1043D00004D06894B1118DC0089570D088F09F57B3
+:1043E00090F0B92F9927B751A0F0D1F0660F771F41
+:1043F000881F991F1AF0BA95C9F712C0B13081F021
+:1044000077D0B1E0089574C0672F782F8827B85F00
+:1044100039F0B93FCCF3869577956795B395D9F781
+:104420003EF490958095709561957F4F8F4F9F4F8B
+:104430000895E89409C097FB3EF490958095709597
+:1044400061957F4F8F4F9F4F9923A9F0F92F96E9E0
+:10445000BB279395F695879577956795B795F11155
+:10446000F8CFFAF4BB0F11F460FF1BC06F5F7F4FF2
+:104470008F4F9F4F16C0882311F096E911C0772304
+:1044800021F09EE8872F762F05C0662371F096E80D
+:10449000862F70E060E02AF09A95660F771F881FDC
+:1044A000DAF7880F9695879597F9089557FD9058F4
+:1044B000440F551F59F05F3F71F04795880F97FBE8
+:1044C000991F61F09F3F79F08795089512161306A2
+:1044D0001406551FF2CF4695F1DF08C016161706D1
+:1044E0001806991FF1CF8695710561050894089506
+:1044F000E894BB2766277727CB0197F908950BD05F
+:1045000078C069D028F06ED018F0952309F05AC011
+:104510005FC01124EECFCADFA0F3959FD1F3950FB2
+:1045200050E0551F629FF001729FBB27F00DB11D37
+:10453000639FAA27F00DB11DAA1F649F6627B00DC7
+:10454000A11D661F829F2227B00DA11D621F739FB0
+:10455000B00DA11D621F839FA00D611D221F749FBE
+:104560003327A00D611D231F849F600D211D822F05
+:10457000762F6A2F11249F5750408AF0E1F088234C
+:104580004AF0EE0FFF1FBB1F661F771F881F915059
+:104590005040A9F79E3F510570F014C0AACF5F3F6D
+:1045A000ECF3983EDCF3869577956795B795F7958C
+:1045B000E7959F5FC1F7FE2B880F911D9695879514
+:1045C00097F9089597F99F6780E870E060E0089593
+:1045D0009FEF80EC089500240A941616170618061B
+:1045E0000906089500240A941216130614060506F7
+:1045F0000895092E0394000C11F4882352F0BB0F88
+:1046000040F4BF2B11F460FF04C06F5F7F4F8F4FEA
+:104610009F4F089597FB072E16F4009407D077FD5F
+:1046200009D00E94242307FC05D03EF49095819583
+:104630009F4F0895709561957F4F0895EE0FFF1F6E
+:104640000590F491E02D0994AA1BBB1B51E107C012
+:10465000AA1FBB1FA617B70710F0A61BB70B881F12
+:10466000991F5A95A9F780959095BC01CD010895A1
+:10467000F999FECF92BD81BDF89A992780B508952A
+:10468000A8E1B0E042E050E00C945B23262FF999BA
+:10469000FECF1FBA92BD81BD20BD0FB6F894FA9A25
+:1046A000F99A0FBE019608950E944623272F0C9475
+:1046B0004723DC01CB01FC01F999FECF06C0F2BD16
+:1046C000E1BDF89A319600B40D9241505040B8F7D0
+:0646D0000895F894FFCFED
+:1046D60020028C071A08F707C3078F070101BA01E2
+:1046E60028080A03140A3F4D3639F704AA0474044D
+:1046F6003B04CE03E7030004190401020304050684
+:044706000708090097
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.png
new file mode 100644
index 000000000..cdc535f79
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/romanzolotarev-norman-plover-osx-hjkl.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md
index 9eb4c24db..804c52a76 100644
--- a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md
@@ -5,7 +5,10 @@ There are four layers:
- **BASE** is [Norman layout](https://normanlayout.info/).
- **SYMB** for numbers and symbols.
- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
-- **ARRW** for navigation.
+- **ARRW** for navigation (same fingers for arrows as IJKL on QWERTY).
+
+Looking for HJKL arrows? [Here we
+go](../romanzolotarev-norman-plover-osx-hjkl/).
[![keyboard-layout](romanzolotarev-norman-plover-osx.png)](http://www.keyboard-layout-editor.com/#/gists/8ebcb701ecb763944417)
@@ -28,11 +31,11 @@ There are four layers:
- 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/).
-- Tap `F14`, `F15` to adjust display brightness.
-
-**IMPORTANT**: If you have another keyboard connected via Bluetooth, then `F14` and `F15` will not work.
-Turn off that Bluetooth keyboard. Re-plug you ErgoDox. Enjoy!
+- Tap `F14`, `F15` to adjust display brightness.
+**IMPORTANT**: If you have another keyboard connected via Bluetooth, then
+`F14` and `F15` will not work. Turn off that Bluetooth keyboard. Re-plug
+you ErgoDox. Enjoy!
## CTRL/ESC
diff --git a/keyboard/ergodox_ez/readme.md b/keyboard/ergodox_ez/readme.md
index c1d0bd5dc..4afb42c8f 100644
--- a/keyboard/ergodox_ez/readme.md
+++ b/keyboard/ergodox_ez/readme.md
@@ -15,7 +15,7 @@ This requires a little bit of familiarity with coding.
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 [pjrc.com/teensy/gcc.html](https://www.pjrc.com/teensy/gcc.html)
+3. Set up a build environment as per [the build guide](/BUILD_GUIDE.md)
- Using a Mac and have homebrew? just run `brew tap osx-cross/avr && brew install avr-libc`
4. Copy `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.
diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index f1c7b5610..30ad87760 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QW] = {
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_CM] = {
@@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_DV] = {
@@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_RS] = {
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LW] = {
diff --git a/keyboard/planck/keymaps/nico.c b/keyboard/planck/keymaps/nico.c
new file mode 100644
index 000000000..e81fd80a4
--- /dev/null
+++ b/keyboard/planck/keymaps/nico.c
@@ -0,0 +1,69 @@
+// 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 "backlight.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 _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+
+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},
+ {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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_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},
+ {KC_LCTL, 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 },
+ {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_DV] = { /* 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_LCTL, 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 },
+ {M(0), KC_ESC, KC_LALT, KC_LGUI, F(1), KC_SPC, KC_SPC, F(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_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(_CM), DF(_DV), RESET, KC_TRNS},
+ {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, 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(_CM), DF(_DV), RESET, KC_TRNS},
+ {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_KEY(MO(_LW), KC_BSPC), // Tap for backspace, hold for LOWER
+ [2] = ACTION_LAYER_TAP_KEY(MO(_RS), KC_ENT), // Tap for enter, hold for RAISE
+};
+
+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);
+ backlight_step();
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
diff --git a/keyboard/planck/keymaps/tak3over.c b/keyboard/planck/keymaps/tak3over.c
index c49af7d0e..7d8243dfa 100644
--- a/keyboard/planck/keymaps/tak3over.c
+++ b/keyboard/planck/keymaps/tak3over.c
@@ -1,9 +1,7 @@
// 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.
//
-// Custom style by tak3over. Dropped the dvorak layer as it was not being used by me. Shifted over
-// keys to make room for a second function key on the left side. Now has a keypad and most all
-// standard keyboard keys. Including Delete. See TK layer.
+//Dropped the Dvorak layer and added two my layer buttons. Both Raise and lower can be accessed from either side now.
#include "planck.h"
#ifdef BACKLIGHT_ENABLE
@@ -16,9 +14,9 @@
// entirely and just use numbers.
#define _QW 0
#define _CM 1
-#define _TK 2
-#define _LW 3
-#define _RS 4
+#define _LW 2
+#define _RS 3
+#define _FN 4
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -30,16 +28,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QW] = {
{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_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
-
/* Colemak
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
@@ -48,68 +45,65 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right
* `-----------------------------------------------------------------------------------'
*/
[_CM] = {
{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_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 },
- {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {KC_LCTL, KC_LALT, KC_LGUI, MO(_FN), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
-
-/* TenKey, Arrow, and Function key Layer
+/* Raise
* ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | Left | Up | Down | Right| Del | * | 4 | 5 | 6 | + | / |
+ * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Home | PGUP | PGDN | End | Ins | . | 1 | 2 | 3 | - |Enter |
+ * | Shift| F7 | F8 | F9 | F10 | F11 | F12 | _ | + | { | } |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Left | Down | Up |Right |
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_TK] = {
+[_RS] = {
{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_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_DEL, KC_ASTR, KC_4, KC_5, KC_6, KC_PLUS, KC_SLSH},
- {KC_LSFT, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_INS, KC_DOT, KC_1, KC_2, KC_3, KC_MINS, KC_ENT },
- {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_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}
},
-
-/* Raise
+/* Lower
* ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * | Esc | Reset| Ins | Home | PGUP |Colemk| Left | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Brite | Reset|Enter |
+ * | Shift| Brite| Del | End | PGDN |Qwerty| Del | _ | + | { | } |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_RS] = {
- {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(_CM), M(0), 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}
+[_LW] = {
+ {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, RESET, KC_INS, KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_TRNS, M(0), KC_DEL, KC_END, KC_PGDN, DF(_QW), KC_DEL, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_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}
},
-
-/* Lower
+/* Function
* ,-----------------------------------------------------------------------------------.
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * | Esc | GUI | X | C | V | Z | Left | Down | Up |Right | Del | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Brite | Reset|Enter |
+ * |Shift | Ctrl | X | C | V | Z | Next | Mute | Vol- | Vol+ | Play |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
+ * | Ctrl | Alt | GUI |Func |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_LW] = {
- {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(_CM), M(0), 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}
+[_FN] = {
+ {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_RGUI, KC_X, KC_C, KC_V, KC_Z, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_BSLS},
+ {KC_TRNS, KC_RCTL, KC_X, KC_C, KC_V, KC_Z, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_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}
}
};
diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile
index 89c48e50a..664aff732 100644
--- a/keyboard/preonic/Makefile
+++ b/keyboard/preonic/Makefile
@@ -139,8 +139,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
# 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
-# AUDIO_ENABLE = YES # Audio output on port C6
+MIDI_ENABLE = YES # MIDI controls
+AUDIO_ENABLE = YES # Audio output on port C6
# UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time.
diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c
index 392197f1d..784670784 100644
--- a/keyboard/preonic/keymaps/default/keymap.c
+++ b/keyboard/preonic/keymaps/default/keymap.c
@@ -60,13 +60,9 @@ const uint16_t PROGMEM fn_actions[] = {
float start_up[][2] = {
{440.0*pow(2.0,(67)/12.0), 600},
- {0, 50},
{440.0*pow(2.0,(64)/12.0), 400},
- {0, 50},
{440.0*pow(2.0,(55)/12.0), 400},
- {0, 50},
{440.0*pow(2.0,(60)/12.0), 400},
- {0, 50},
{440.0*pow(2.0,(64)/12.0), 1000},
};
@@ -88,9 +84,9 @@ 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_init_user(void) {
#ifdef AUDIO_ENABLE
init_notes();
- play_notes(&start_up, 9, false);
+ play_notes(&start_up, 5, false);
#endif
}
diff --git a/keyboard/preonic/keymaps/lock/keymap.c b/keyboard/preonic/keymaps/lock/keymap.c
index e253f2581..cfb7f0803 100644
--- a/keyboard/preonic/keymaps/lock/keymap.c
+++ b/keyboard/preonic/keymaps/lock/keymap.c
@@ -99,7 +99,7 @@ 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_init_user(void) {
init_notes();
play_notes(&start_up, 9, false);
}
diff --git a/keyboard/preonic/keymaps/nerdgasm/README.md b/keyboard/preonic/keymaps/nerdgasm/README.md
new file mode 100644
index 000000000..d2f43bbdb
--- /dev/null
+++ b/keyboard/preonic/keymaps/nerdgasm/README.md
@@ -0,0 +1,34 @@
+# The Default Planck Layout
+
+ 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},
+ {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 },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_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},
+ {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 },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_DV] = { /* 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 },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_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(_CM), DF(_DV), 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}
+ },
+ [_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(_CM), DF(_DV), 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}
+ }
+ }; \ No newline at end of file
diff --git a/keyboard/preonic/keymaps/nerdgasm/keymap.c b/keyboard/preonic/keymaps/nerdgasm/keymap.c
new file mode 100644
index 000000000..818102fbd
--- /dev/null
+++ b/keyboard/preonic/keymaps/nerdgasm/keymap.c
@@ -0,0 +1,117 @@
+// 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 "preonic.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
+
+// 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 _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+ {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_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 },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_CM] = { /* Colemak */
+ {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_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 },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+ {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_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 },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[_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_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(_CM), DF(_DV), 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}
+},
+[_LW] = { /* LOWER */
+ {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_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(_CM), DF(_DV), 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}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+// Guitar Notes
+#define N_E 13180.5
+#define N_B 9870.8
+#define N_G 15680.0
+#define N_D 11740.7
+#define N_E 13180.5
+
+float start_up[][2] = {
+ { N_E, 500 },
+ { 0, 50 },
+ { N_E, 500 },
+ { 0, 50 },
+ { N_E, 500 },
+ { 0, 50 },
+ { N_B, 500 },
+ { 0, 50 },
+ { N_E, 1000 },
+ { 0, 50 },
+ { N_G, 1500 },
+ { 0, 50 },
+};
+
+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);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+#ifdef AUDIO_ENABLE
+ init_notes();
+ play_notes(&start_up, 12, false);
+#endif
+}
+
+void process_action_user(keyrecord_t *record) {
+#ifdef AUDIO_ENABLE
+ if (record->event.pressed) {
+ float keypress[][2] = {
+ {440.0*pow(2.0,(record->event.key.col*7)/12.0), 600}
+ };
+ play_notes(&keypress, 1, false);
+ }
+#endif
+}
diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c
index a678f7b09..f639f247a 100644
--- a/keyboard/preonic/preonic.c
+++ b/keyboard/preonic/preonic.c
@@ -1,16 +1,21 @@
#include "preonic.h"
__attribute__ ((weak))
-void * matrix_init_user(void) {
+void matrix_init_user(void) {
};
__attribute__ ((weak))
-void * matrix_scan_user(void) {
+void matrix_scan_user(void) {
};
-void * matrix_init_kb(void) {
+__attribute__ ((weak))
+void process_action_user(keyrecord_t *record) {
+
+};
+
+void matrix_init_kb(void) {
#ifdef BACKLIGHT_ENABLE
backlight_init_ports();
#endif
@@ -24,13 +29,13 @@ void * matrix_init_kb(void) {
DDRE |= (1<<6);
PORTE |= (1<<6);
- if (matrix_init_user) {
- (*matrix_init_user)();
- }
+ matrix_init_user();
};
-void * matrix_scan_kb(void) {
- if (matrix_scan_user) {
- (*matrix_scan_user)();
- }
+void matrix_scan_kb(void) {
+ matrix_scan_user();
};
+
+void process_action_kb(keyrecord_t *record) {
+ process_action_user(record);
+} \ No newline at end of file
diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h
index 42d212329..51ed9ba39 100644
--- a/keyboard/preonic/preonic.h
+++ b/keyboard/preonic/preonic.h
@@ -44,7 +44,8 @@
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
}
-void * matrix_init_user(void);
-void * matrix_scan_user(void);
+void matrix_init_user(void);
+void matrix_scan_user(void);
+void process_action_kb(keyrecord_t *record);
#endif
diff --git a/keyboard/preonic/preonic_music.hex b/keyboard/preonic/preonic_music.hex
new file mode 100644
index 000000000..603693bff
--- /dev/null
+++ b/keyboard/preonic/preonic_music.hex
@@ -0,0 +1,1713 @@
+:100000000C9410030C9454030C9454030C94540358
+:100010000C9454030C9454030C9454030C94540304
+:100020000C9454030C9454030C9410170C94E21782
+:100030000C94BD290C9454030C9454030C94540355
+:100040000C9454030C9454030C9454030C945403D4
+:100050000C9454030C942A2A0C9454030C945403C7
+:100060000C9454030C9454030C9454030C945403B4
+:100070000C9454030C9454030C9454030C945403A4
+:100080000C94440E0C9454030C9454030C94540399
+:100090000C9454030C9454030C9454030C94540384
+:1000A0000C9454030C9454030C9454030763423689
+:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9
+:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD
+:1000D0000000803F08000000BE922449123EABAAF7
+:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52
+:1000F000AA3E00000000BF000000803F000000009A
+:1001000000084178D3BB4387D1133D190E3CC3BDD2
+:100110004282AD2B3E68EC8276BED98FE1A93E4C7F
+:1001200080EFFFBE01C4FF7F3F00000000003500EC
+:100130001E001F00200021002200230024002500B3
+:10014000260027002A002B0014001A0008001500C2
+:1001500017001C0018000C00120013002A002900D0
+:1001600004001600070009000A000B000D000E0035
+:100170000F0033003400E1001D001B0006001900D1
+:10018000050011001000360037003800280000304C
+:10019000E000E200E30003522C002C000452500067
+:1001A000510052004F0035001E001F0020002100AA
+:1001B0002200230024002500260027002A002B000F
+:1001C00014001A00090013000A000D000F001800A7
+:1001D0001C0033002A002900040015001600170037
+:1001E00007000B00110008000C0012003400E100B1
+:1001F0001D001B000600190005000E00100036004F
+:100200003700380028000030E000E200E30003522D
+:100210002C002C0004525000510052004F003500B9
+:100220001E001F00200021002200230024002500C2
+:10023000260027002A002B00340036003700130068
+:100240001C0009000A00060015000F002A00290002
+:1002500004001200080018000C0007000B00170033
+:10026000110016003800E100330014000D000E00EC
+:100270001B00050010001A0019001D0028000030A6
+:10028000E000E200E30003522C002C000452500076
+:10029000510052004F0035001E001F0020002100B9
+:1002A0002200230024002500260027002A00350212
+:1002B0001E021F0220022102220223022402250222
+:1002C000260227022A0001003A003B003C003D00C4
+:1002D0003E003F002D022E022F02300231020100AB
+:1002E00040004100420043004400450000530153D8
+:1002F0000253005001000100010001000100010053
+:10030000010001000100AB00AA00A900AE00350009
+:100310001E001F00200021002200230024002500D1
+:10032000260027002A0035001E001F0020002100A3
+:100330002200230024002500260027002A000100B7
+:100340003A003B003C003D003E003F002D002E00E7
+:100350002F00300031000100400041004200430006
+:1003600044004500005301530253005001000100B6
+:100370000100010001000100010001000100AB00CB
+:10038000AA00A900AE00006000600060006000608C
+:10039000006000600060006000600060006000605D
+:1003A000006000600060006000600060006000604D
+:1003B000006000600060006000600060006000603D
+:1003C000006000600060006000600060006000602D
+:1003D000006000600060006000600060006000601D
+:1003E00000600060006000300100010001000100B9
+:1003F00001000100010000600060006000602A034D
+:1004000054006800650020005000720065006F0015
+:100410006E006900630020004B00650079006200F7
+:100420006F0061007200640000002C034F00720036
+:10043000740068006F006C0069006E006500610068
+:10044000720020004B006500790062006F006100BF
+:100450007200640073000000040309040902D00064
+:10046000060100A0FA0904000001030101000921AE
+:1004700011010001223F000705810308000A090459
+:1004800001000103010200092111010001224D00B8
+:100490000705820308000A090402000103000000A6
+:1004A0000921110100012236000705830308000A13
+:1004B00009040300020300000009211101000122C8
+:1004C0002000070584032000010705040320000124
+:1004D00009040400000101000009240100010900D1
+:1004E00001050904050002010300000724010001C1
+:1004F0004100062402010100062402020200092430
+:1005000003010301020100092403020401010100A7
+:100510000905060240000500000525010101090545
+:1005200085024000050000052501010312011001AC
+:1005300000000008EDFE61600100010200010631CB
+:10054000FF0974A1010975150025FF952075088123
+:10055000020976150025FF952075089102C0050156
+:100560000980A101850216010026B7001A01002AA0
+:10057000B700751095018100C0050C0901A1018526
+:1005800003160100269C021A01002A9C0275109590
+:10059000018100C005010902A1010901A1000509AD
+:1005A000190129051500250195057501810295019F
+:1005B000750381010501093009311581257F9502F7
+:1005C0007508810609381581257F95017508810612
+:1005D000050C0A38021581257F950175088106C032
+:1005E000C005010906A101050719E029E715002545
+:1005F00001950875018102950175088101050819A9
+:100600000129059505750191029501750391010573
+:1006100007190029FF150025FF950675088100C000
+:1006200011241FBECFEFDAE0DEBFCDBF04B603FE5C
+:1006300024C08091050490910604A0910704B09114
+:1006400008048730904BA740B04BB9F410920504D2
+:1006500010920604109207041092080414BE84B786
+:10066000877F84BF88E10FB6F89480936000109272
+:1006700060000FBEE0E0F8E3099512E0A0E0B1E011
+:10068000E6ECF9E602C005900D92A832B107D9F761
+:1006900014E0A8E2B2E001C01D92A530B107E1F775
+:1006A0000E94C8130C94E1340C94000061111DC029
+:1006B000FC018281882351F085EE0E94901E0E94E9
+:1006C000BC3080E290E0A0E0B0E007C085EE0E9480
+:1006D000581F81E090E0A0E0B0E08093E1029093A9
+:1006E000E202A093E302B093E40280E090E0089578
+:1006F0000E94370E40E050E069E070E080E091E059
+:100700000C94880F08950E948B036E9A769A0C942D
+:1007100078030C948203279A2F988FEF9FEF909382
+:100720008700809386008AE08093800089E180932F
+:1007300081000C94653081110BC080918000877F0F
+:100740008093800010928D0010928C002F98089555
+:100750002F98833041F480918000886080938000DE
+:100760008FEF9FEF12C0909180009860909380006F
+:1007700023E030E0281B3109220F331F8FEF9FEF5A
+:1007800002C0969587952A95E2F790938D00809305
+:100790008C0008958B3B910568F4883A910530F5FB
+:1007A000853A9105C0F48430910598F4019709F0D9
+:1007B0006FC071C0803E910508F46AC0883E910503
+:1007C00040F09C01205F31092031310508F060C004
+:1007D0005CC09C01A1C0853A910509F45FC0863ACE
+:1007E000910509F45EC023E830E496C0883A91058B
+:1007F00009F45AC0893A910509F459C08A3A910519
+:1008000009F458C08B3A910509F457C08C3A910508
+:1008100009F456C08D3A910509F455C0803B910505
+:1008200009F454C08E3A910509F453C08F3A9105EA
+:1008300009F452C0813B910509F451C0823B9105F6
+:1008400009F450C0833B910509F44FC0843B9105E6
+:1008500009F44EC0853B910509F44DC0863B9105D6
+:1008600009F44CC0873B910509F44BC0883B9105C6
+:1008700009F44AC0893B910509F449C08A3B9105B6
+:1008800009F048C02AE236E447C09C01306544C004
+:1008900020E030E041C021E030E03EC021E830E41B
+:1008A0003BC022E830E438C022EE34E435C029EE03
+:1008B00034E432C02AEE34E42FC025EB34E42CC0FB
+:1008C00026EB34E429C027EB34E426C02CEC34E4D6
+:1008D00023C02DEC34E420C023E835E41DC02AE811
+:1008E00035E41AC022E935E417C024E935E414C020
+:1008F00021E236E411C023E236E40EC024E236E4FD
+:100900000BC025E236E408C026E236E405C027E243
+:1009100036E402C020E034E4C90108959CE0799FE8
+:10092000F00111249CE3899FE00DF11D1124E60FD5
+:10093000F11DEE0FFF1FE25DFE4F25913491C901BD
+:100940000895880F991F82559040FC01259134919C
+:10095000C9010895880F991F825D9E4FFC01259162
+:100960003491C90108950E948E049C019A958115C5
+:100970009F4110F4C9010895C90190528115904119
+:1009800028F4C9019F700E94AA040895C9019053D8
+:100990008115904120F4C9019927906C0895C901EF
+:1009A0009054409728F4C9018F709927946D089549
+:1009B000203180E4380719F480E091ED0895213169
+:1009C00090E4390719F480E090ED0895223140E475
+:1009D000340719F480E092ED0895233180E438075C
+:1009E00019F480E093ED0895211590E53907A1F4FD
+:1009F0000E948B2340E065E088E491E00E94880F2C
+:100A00002FEF44E38CE0215040408040E1F700C0EC
+:100A100000000E944F2A1EC1213090E5390731F4B1
+:100A20008091F10281608093F10214C1C901905557
+:100A30008115904108F062C0432F55274F7055270C
+:100A400041305105F9F4C90174E0880F991F7A9576
+:100A5000E1F788279370B901E3E0660F771FEA9505
+:100A6000E1F760767727862B972B9C6823703327D6
+:100A700002C0440F551F2A95E2F74F715527842B6A
+:100A8000952B08954230510529F4922F8827816FC4
+:100A9000906A089543305105B9F4C90153E0880FB5
+:100AA000991F5A95E1F7807E97702370332741E0B4
+:100AB00050E002C0440F551F2A95E2F74F715527A9
+:100AC000842B952B9C6808954430510589F5C90104
+:100AD00043E0880F991F4A95E1F7807E9770237055
+:100AE000332741E050E002C0440F551F2A95E2F73A
+:100AF0004F715527842B952B9A680895C9019056FC
+:100B00008115904118F4C901906F0895C90190575B
+:100B10008115904120F4C9019F7090620895C90128
+:100B200090588115904120F4C9019F70906A0895F2
+:100B3000203E3105E0F4203C310568F521333105D4
+:100B400009F475C048F42932310509F46BC02A3222
+:100B5000310509F07BC075C02933310501F1223818
+:100B60003105E9F02533310509F070C051C0233E4D
+:100B70003105B1F140F4203E3105D1F0223E31057E
+:100B800009F064C01CC0263E310579F1273E3105CD
+:100B900009F05CC038C0C9010E94A1040895809189
+:100BA000020380FD02C081FF51C080EE90E04FC083
+:100BB0008091020380FFF9CF89E390E048C08091E3
+:100BC000020382FF0AC08091020384FF03C080E019
+:100BD00090E03DC083EE90E03AC082EE90E037C0F6
+:100BE0008091020382FFEFCFF8CF8091020383FF51
+:100BF00007C08091020384FDEACF87EE90E027C012
+:100C000086EE90E024C08091020383FFF2CFF8CFFC
+:100C10008091020385FF03C089E290E018C085E35C
+:100C200090E015C08091020385FDF9CFF5CF80914A
+:100C3000020386FF03C08AE290E009C081E390E0EE
+:100C400006C08091020386FDF9CFF5CFC9010E944D
+:100C5000CA030895089508950C942B065F926F922D
+:100C60007F928F929F92AF92BF92CF92DF92EF923C
+:100C7000FF920F931F93CF93DF93CDB7DEB72A97E1
+:100C80000FB6F894DEBF0FBECDBF9E012F5F3F4F62
+:100C90004E018BE0880E911C60E070E000E010E0F7
+:100CA000E12CF12CC12CD12CA12CB12C8AE0782E76
+:100CB000622E532E41E050E0E3E9F1E0A62DB52D80
+:100CC000872D01900D928A95E1F7F901819191911B
+:100CD0009F01FC01E07FFF27E032F10559F48F709E
+:100CE0009927FA0102C0EE0FFF1F8A95E2F7AE2A9C
+:100CF000BF2A37C0E033F10559F48F709927FA0104
+:100D000002C0EE0FFF1F8A95E2F7CE2ADF2A29C024
+:100D1000E034F10559F48F709927FA0102C0EE0F03
+:100D2000FF1F8A95E2F7EE2AFF2A1BC0E035F10586
+:100D300059F48F709927FA0102C0EE0FFF1F8A95B0
+:100D4000E2F70E2B1F2B0DC0E036F10551F48F702A
+:100D50009927FA0102C0EE0FFF1F8A95E2F76E2B6A
+:100D60007F2B2815390509F0A7CF94B18A2D8095DE
+:100D7000892384B985B18A2985B997B18C2D80954D
+:100D8000892387B988B18C2988B99AB18E2D80952D
+:100D900089238AB98BB18E298BB99DB1802F80951B
+:100DA00089238DB98EB1802B8EB990B3862F809513
+:100DB000892380BB81B3862B81BB2A960FB6F8941A
+:100DC000DEBF0FBECDBFDF91CF911F910F91FF907E
+:100DD000EF90DF90CF90BF90AF909F908F907F90DB
+:100DE0006F905F9008955F926F927F928F929F9223
+:100DF000AF92BF92CF92DF92EF92FF920F931F9329
+:100E0000CF93DF93CDB7DEB768970FB6F894DEBF08
+:100E10000FBECDBF85B7806885BF85B7806885BFA9
+:100E20000E942E069E012F5F3F4F4E0189E1880EE2
+:100E3000911C60E070E000E010E0E12CF12CC12C8E
+:100E4000D12CA12CB12C98E1792E622E532E41E0A9
+:100E500050E0EDE9F1E0A62DB52D872D01900D9222
+:100E60008A95E1F7F901819191919F01FC01E07F61
+:100E7000FF27E032F10559F48F709927FA0102C07B
+:100E8000EE0FFF1F8A95E2F7AE2ABF2A37C0E03384
+:100E9000F10559F48F709927FA0102C0EE0FFF1F78
+:100EA0008A95E2F7CE2ADF2A29C0E034F10559F409
+:100EB0008F709927FA0102C0EE0FFF1F8A95E2F7A3
+:100EC000EE2AFF2A1BC0E035F10559F48F709927EF
+:100ED000FA0102C0EE0FFF1F8A95E2F70E2B1F2BBF
+:100EE0000DC0E036F10551F48F709927FA0102C068
+:100EF000EE0FFF1F8A95E2F76E2B7F2B2815390521
+:100F000009F0A7CF94B18A2D8095892384B985B142
+:100F10008A2985B997B18C2D8095892387B988B1A5
+:100F20008C2988B99AB18E2D809589238AB98BB185
+:100F30008E298BB99DB1802F809589238DB98EB173
+:100F4000802B8EB990B3862F8095892380BB81B387
+:100F5000862B81BB10922902109228021092330234
+:100F60001092320210922B0210922A021092350235
+:100F70001092340210922D0210922C02109237021D
+:100F80001092360210922F0210922E021092390205
+:100F900010923802109231021092300210923B02ED
+:100FA00010923A0268960FB6F894DEBF0FBECDBF1E
+:100FB000DF91CF911F910F91FF90EF90DF90CF9035
+:100FC000BF90AF909F908F907F906F905F900C94A8
+:100FD00083035F926F927F928F929F92AF92BF92A4
+:100FE000CF92DF92EF92FF920F931F93CF93DF93F5
+:100FF000CDB7DEB7A2970FB6F894DEBF0FBECDBF58
+:101000007E0149E1E40EF11C22E3C22E22E0D22E41
+:101010005E0153E2A50EB11C3AE0532E470101E0F8
+:1010200010E048E1642E55E0752EE3E9F1E0D401CB
+:10103000852D01900D928A95E1F7F70181919191AB
+:101040007F019C01207F33272032310589F424B1B0
+:101050008F709927A80102C0440F551F8A95E2F7A7
+:10106000CA01242B24B995B18095892385B94FC035
+:101070002033310589F427B18F709927F80102C018
+:10108000EE0FFF1F8A95E2F7CF012E2B27B998B1FB
+:101090008095892388B93BC02034310589F42AB171
+:1010A0008F709927A80102C0440F551F8A95E2F757
+:1010B000CA01242B2AB99BB1809589238BB927C0FB
+:1010C0002035310589F42DB18F709927F80102C0C0
+:1010D000EE0FFF1F8A95E2F7CF012E2B2DB99EB19F
+:1010E000809589238EB913C02036310581F420B351
+:1010F0008F709927A80102C0440F551F8A95E2F707
+:10110000CA01242B20BB91B38095892381BB50EA6F
+:101110005A95F1F7BE016F5F7F4F80E090E020E0CD
+:1011200030E0EDE9F1E0DE011196462D01900D92DF
+:101130004A95E1F7FB0141915191BF01FA01E07F2E
+:10114000FF27E032F10511F4E3B113C0E033F105FC
+:1011500011F4E6B10EC0E034F10511F4E9B109C0B3
+:10116000E035F10511F4ECB104C0E036F105B9F455
+:10117000EFB1F0E04F70552702C0F595E7954A951D
+:10118000E2F7E0FD08C0A801022E02C0440F551F7F
+:101190000A94E2F702C040E050E0842B952B2F5FC9
+:1011A0003F4F2C30310509F0BCCFF6012081318151
+:1011B0002817390721F091838083709270010E9473
+:1011C0002E06F2E0CF0ED11CEA14FB0409F02DCF5D
+:1011D000809170018823A1F1815080937001882350
+:1011E00039F08FE99FE00197F1F700C0000028C0B7
+:1011F00080913202909133029093290280932802C9
+:10120000809134029091350290932B0280932A02B0
+:10121000809136029091370290932D0280932C0298
+:10122000809138029091390290932F0280932E0280
+:1012300080913A0290913B02909331028093300268
+:101240000E94890381E0A2960FB6F894DEBF0FBE1C
+:10125000CDBFDF91CF911F910F91FF90EF90DF9065
+:10126000CF90BF90AF909F908F907F906F905F9046
+:101270000895E82FF0E0EE0FFF1FE85DFD4F80813D
+:10128000918108950895CF92DF92EF92FF920F938C
+:101290001F93CF93DF93CDB7DEB7CC5BD2400FB6B1
+:1012A000F894DEBF0FBECDBF8C01862F642F88233C
+:1012B00079F0F80192812FE7482F992329F084E0F3
+:1012C00093E00E94EC1904C084E093E00E94FC19B2
+:1012D000F80180818B3091F59181943009F0A8C29A
+:1012E0009281809173019923B1F08F5F8093730194
+:1012F00096E4E5EBF1E0DE01A958BD4F01900D92B7
+:101300009A95E1F7E0917101F0917201EE0FFF1FE4
+:1013100027E732E036C096E4E5EBF1E0DE01AF5CB2
+:10132000BD4F01900D929A95E1F7E0917101F09116
+:101330007201EE0FFF1F21E332E093C08A3009F003
+:10134000CBC0F8019181943009F072C292818091F2
+:101350007301992309F473C081508093730196E45B
+:10136000E5EBF1E0DE01A551BE4F01900D929A959B
+:10137000E1F7E0917101F0917201EE0FFF1F2BEE8A
+:1013800031E02C0F3D1FE20FF31F60817181680F68
+:10139000711D882777FD8095982F0E94003220E0EC
+:1013A00030E040E451E40E94653120E030E040E864
+:1013B00050E40E94FD309B01AC0160E070E080E0F1
+:1013C00090E40E94173321E230ED42E053E40E94A2
+:1013D000B4324CE050E00E94E30F20E04BE760E0C5
+:1013E00084E093E00E94DC1920E04BE761E084E0B8
+:1013F00093E00E94DC1920E04BE762E084E093E098
+:101400000E94DC1920E04BE763E084E093E00E9457
+:10141000DC1920E04BE764E084E093E0C454DD4F46
+:101420000FB6F894DEBF0FBECDBFDF91CF911F91F5
+:101430000F91FF90EF90DF90CF900C94DC1996E421
+:10144000E5EBF1E0DE01AB55BE4F01900D929A95B0
+:10145000E1F7E0917101F0917201EE0FFF1F25EAB3
+:1014600031E02C0F3D1FE20FF31F60817181680F87
+:10147000711D882777FD8095982F0E94003220E00B
+:1014800030E040E451E40E94653120E030E040E883
+:1014900050E40E94FD309B01AC0160E070E080E010
+:1014A00090E40E94173321E230ED42E053E40E94C1
+:1014B000B4320E94130DC454DD4F0FB6F894DEBF52
+:1014C0000FBECDBFDF91CF911F910F91FF90EF9095
+:1014D000DF90CF900C94E60C893009F0D3C0F8016E
+:1014E0009181943009F0A4C19281992309F4A0C19B
+:1014F0008091710190917201019690937201809395
+:10150000710120E04BE760E084E093E00E94DC1989
+:1015100020E04BE761E084E093E00E94DC1920E0EA
+:101520004BE762E084E093E00E94DC1920E04BE7A7
+:1015300063E084E093E00E94DC1920E04BE764E084
+:1015400084E093E00E94DC190E94E60C00E010E0C9
+:10155000E6E4FE2E80917301E5EBF1E0DE01A15A95
+:10156000BE4F9F2D01900D929A95E1F7E091710188
+:10157000F0917201E00FF11FEE0FFF1F2FE531E038
+:101580002C0F3D1FE20FF31F60817181680F711DE9
+:10159000882777FD8095982F0E94003220E030E068
+:1015A00040E451E40E94653120E030E040E850E43E
+:1015B0000E94FD309B01AC0160E070E080E090E4AF
+:1015C0000E94173321E230ED42E053E40E94B4322E
+:1015D0004CE050E00E94E30F3FEF87EE93E0315084
+:1015E00080409040E1F700C0000080917301E5EB7E
+:1015F000F1E0DE01A75EBE4F9F2D01900D929A95FE
+:10160000E1F7E0917101F0917201E00FF11FEE0F2F
+:10161000FF1F29E131E02C0F3D1FE20FF31F608116
+:101620007181680F711D882777FD8095982F0E9422
+:10163000003220E030E040E451E40E94653120E0D7
+:1016400030E040E850E40E94FD309B01AC0160E0D6
+:1016500070E080E090E40E94173321E230ED42E038
+:1016600053E40E94B4320E94130D8FEF9CE7019760
+:10167000F1F700C000000F5F1F4F0830110509F09F
+:1016800069CF94C1883009F0D3C0F80191819430BA
+:1016900009F0CEC09281992309F4CAC080917101EA
+:1016A000909172010197909372018093710120E0F3
+:1016B0004BE760E084E093E00E94DC1920E04BE718
+:1016C00061E084E093E00E94DC1920E04BE762E0F7
+:1016D00084E093E00E94DC1920E04BE763E084E0C3
+:1016E00093E00E94DC1920E04BE764E084E093E0A3
+:1016F0000E94DC190E94E60C00E010E056E4F52E92
+:1017000080917301E5EBF1E0DE01AD52BF4F9F2DFB
+:1017100001900D929A95E1F7E0917101F0917201BB
+:10172000E00FF11FEE0FFF1F23ED30E02C0F3D1FE8
+:10173000E20FF31F60817181680F711D882777FDAB
+:101740008095982F0E94003220E030E040E451E480
+:101750000E94653120E030E040E850E40E94FD3016
+:101760009B01AC0160E070E080E090E40E941733E0
+:1017700021E230ED42E053E40E94B4324CE050E00C
+:101780000E94E30F3FEF87EE93E03150804090409E
+:10179000E1F700C0000080917301E5EBF1E0DE01AC
+:1017A000A357BF4F9F2D01900D929A95E1F7E091BD
+:1017B0007101F0917201E00FF11FEE0FFF1F2DE894
+:1017C00030E02C0F3D1FE20FF31F60817181680F25
+:1017D000711D882777FD8095982F0E94003220E0A8
+:1017E00030E040E451E40E94653120E030E040E820
+:1017F00050E40E94FD309B01AC0160E070E080E0AD
+:1018000090E40E94173321E230ED42E053E40E945D
+:10181000B4320E94130D8FEF9CE70197F1F700C0DF
+:1018200000000F5F1F4F0830110509F069CFBEC0DF
+:10183000F801228190917301222309F45DC026E40E
+:10184000E5EBF1E0DE01A95BBF4F01900D922A9517
+:10185000E1F7E0917101F0917201E80FF11DEE0FD7
+:10186000FF1F27E430E02C0F3D1FE20FF31F6081C4
+:101870007181690F711D882777FD8095982F0E94CF
+:10188000003220E030E040E451E40E9465316B0119
+:101890007C01F801818165E070E0681B710988278F
+:1018A00077FD8095982F0E9400329B01AC01C70103
+:1018B000B6010E94FD309B01AC0160E070E080E069
+:1018C00090E40E94173321E230ED42E053E40E949D
+:1018D000B4324FE050E0C454DD4F0FB6F894DEBF91
+:1018E0000FBECDBFDF91CF911F910F91FF90EF9071
+:1018F000DF90CF900C94E30F26E4E5EBF1E0DE01FE
+:10190000119601900D922A95E1F7E0917101F09105
+:101910007201E80FF11DEE0FFF1F21E030E02C0FE8
+:101920003D1FE20FF31F60817181690F711D8827D0
+:1019300077FD8095982F0E94003220E030E040E44F
+:1019400051E40E9465316B017C01F801818165E001
+:1019500070E0681B7109882777FD8095982F0E9499
+:1019600000329B01AC01C701B6010E94FD309B0112
+:10197000AC0160E070E080E090E40E94173321E267
+:1019800030ED42E053E40E94B432C454DD4F0FB650
+:10199000F894DEBF0FBECDBFDF91CF911F910F91A5
+:1019A000FF90EF90DF90CF900C94130DC454DD4F57
+:1019B0000FB6F894DEBF0FBECDBFDF91CF911F9160
+:1019C0000F91FF90EF90DF90CF90089510928702D3
+:1019D00010928602809171008D7F809371008091BA
+:1019E00090008F77809390001092480210924702E7
+:1019F0001092800210928102109282021092830251
+:101A000010927F0210927E02EEE5F2E0AEE4B2E0C8
+:101A100011921192119211921D921D9282E0EE3755
+:101A2000F807B1F708956F927F928F929F92AF92CD
+:101A3000BF92CF92DF92EF92FF920F931F93CF93BB
+:101A4000DF936B017C010EE712E04CE5A42E42E02F
+:101A5000B42EC7E0D0E0A7019601F80192918291DF
+:101A6000729162918F010E946131882349F0219720
+:101A7000F2E0AF1AB108CF3F8FEFD80761F734C05B
+:101A8000F8011082118212821382F50111821082F4
+:101A9000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01AA
+:101AA000AA0FBB1FA25BBD4FCE011AC00196448195
+:101AB0005581668177814083518362837383148269
+:101AC00015821682178212962D913C9113971196CA
+:101AD0003C932E9313961C921E9212973496129654
+:101AE0008730910519F7C3CF8091860290918702C4
+:101AF000019797FD05C0909387028093860204C0EA
+:101B00001092870210928602E0918602F09187027D
+:101B10003097C9F4809171008D7F8093710080911E
+:101B200090008F7780939000109280021092810233
+:101B3000109282021092830210927F0210927E0213
+:101B40001092470285C03197DF01AA0FBB1FAA0F71
+:101B5000BB1FA25ABD4FCD90DD90ED90FC90EE0FD3
+:101B6000FF1FE25BFD4FC081D181609080027090C9
+:101B700081028090820290908302A7019601662DD7
+:101B8000772D882D992D0E94613187FF25C0262D44
+:101B9000372D482D592DC701B6010E94FC3020E099
+:101BA00030E04AEF54E40E9465315B018C012A2D3C
+:101BB0003B2D402F512F662D772D882D992D0E947A
+:101BC000FD303B014C01A7019601772D992D0E9414
+:101BD0006131181664F72EC0A7019601662D772D86
+:101BE000882D992D0E94B032181634F5A701960160
+:101BF000662D772D882D992D0E94FC3020E030E055
+:101C00004AEF54E40E9465315B018C012A2D3B2D83
+:101C1000402F512F662D772D882D992D0E94FC3055
+:101C20003B014C01A7019601772D992D0E94B032FE
+:101C300087FFECCF10924D02C0928002D0928102B9
+:101C4000E0928202F0928302D0937F02C0937E02E0
+:101C5000DF91CF911F910F91FF90EF90DF90CF9088
+:101C6000BF90AF909F908F907F906F9008953E9A15
+:101C7000E1E7F0E080818D7F808382E080939000B7
+:101C80008AE18093910008951F920F920FB60F92F0
+:101C90001124CF92DF92EF92FF922F933F934F93B5
+:101CA0005F936F937F938F939F93AF93BF93CF93E4
+:101CB000DF93EF93FF9380914702882309F479C063
+:101CC00020E030E0A9016091800270918102809152
+:101CD0008202909183020E94B03218160CF069C003
+:101CE00020E030E040E251E46091490270914A0204
+:101CF00080914B0290914C020E94B0321816BCF4B5
+:101D00008091840290918502019660918602709183
+:101D100087020E949C3490938502809384021092E3
+:101D2000490210924A0210924B0210924C02C0914A
+:101D30008402D0918502CC0FDD1FCC0FDD1FC25A6B
+:101D4000DD4F288139814A815B8160E074E284E75C
+:101D50009BE40E9465310E94CD317093970060939F
+:101D60009600288139814A815B8160E074E284E7D2
+:101D70009BE40E9465310E94CD3175956795709303
+:101D800099006093980020E030E040E85FE36091C4
+:101D9000490270914A0280914B0290914C020E943C
+:101DA000FD306093490270934A0280934B029093F6
+:101DB0004C0280914802882309F493C0C0904302EA
+:101DC000D0904402E0904502F090460220E030E0DE
+:101DD000A901C701B6010E94B0321816F4F4A70198
+:101DE000960160E074E284E79BE40E9465310E9402
+:101DF000CD317093970060939600A701960160E043
+:101E000074E284E79BE40E9465310E94CD317595B0
+:101E10006795709399006093980060913D0270916E
+:101E20003E026F5F7F4F70933E0260933D0280E001
+:101E300090E00E94FE3120913F023091400240919B
+:101E40004102509142020E94B03287FD4AC0809107
+:101E50003C028F5F80933C029091F1038917A0F0C0
+:101E60008091F603882319F010923C020DC08091F6
+:101E700071008D7F80937100809190008F778093A7
+:101E80009000109248022DC0E091F203F091F3030C
+:101E900080913C0298E0899FE00DF11D1124808122
+:101EA0009181A281B3818093430290934402A093D5
+:101EB0004502B093460220E030E040E85EE36481F2
+:101EC0007581868197810E94B43260933F0270933E
+:101ED0004002809341029093420210923E0210927F
+:101EE0003D02FF91EF91DF91CF91BF91AF919F9113
+:101EF0008F917F916F915F914F913F912F91FF90C3
+:101F0000EF90DF90CF900F900FBE0F901F9018951D
+:101F10000F931F93CF93DF9300D0CDB7DEB78C0123
+:101F200080914702882331F04A8369830E94E60C3E
+:101F300069814A8181E0809348021093F303009302
+:101F4000F2036093F1034093F6031092490210925A
+:101F50004A0210924B0210924C0210923C02F8017D
+:101F600040815181628173814093430250934402C6
+:101F7000609345027093460220E030E040E85EE363
+:101F800064817581868197810E94B43260933F029B
+:101F900070934002809341029093420210923E025D
+:101FA00010923D0280917100826080937100809157
+:101FB00090008068809390000F900F90DF91CF91F8
+:101FC0001F910F9108956F927F928F929F92AF927F
+:101FD000BF92CF92DF92EF92FF920F931F93CF9316
+:101FE000DF936B017C01EA018091480281110E941C
+:101FF000E60C81E08093470220E030E0A901C701B0
+:10200000B6010E94B03218160CF09AC0609080029F
+:1020100070908102809082029090830220E030E0F4
+:10202000A901662D772D882D992D0E94613181118E
+:1020300028C0C0928002D0928102E0928202F09287
+:102040008302D0937F02C0937E028091860290919A
+:102050008702FC01EE0FFF1FEE0FFF1FE25AFD4F3C
+:10206000C082D182E282F382FC01EE0FFF1FE25BAD
+:10207000FD4FD183C083019690938702809386029F
+:102080005FC0A7019601662D772D882D992D0E949E
+:10209000613187FF25C0262D372D482D592DC701C9
+:1020A000B6010E94FC3020E030E04AEF54E40E9488
+:1020B00065315B018C012A2D3B2D402F512F662D60
+:1020C000772D882D992D0E94FD303B014C01A701F1
+:1020D0009601772D992D0E946131181664F7A9CFCA
+:1020E000A7019601662D772D882D992D0E94B0327B
+:1020F00018160CF09ECFA7019601662D772D882D1E
+:10210000992D0E94FC3020E030E04AEF54E40E9418
+:1021100065315B018C012A2D3B2D402F512F662DFF
+:10212000772D882D992D0E94FC303B014C01A70191
+:102130009601772D992D0E94B03287FFECCF79CF91
+:10214000809171008260809371008091900080681E
+:1021500080939000DF91CF911F910F91FF90EF90AE
+:10216000DF90CF90BF90AF909F908F907F906F90B7
+:102170000895809191020895CF93DF9300D01F922C
+:10218000CDB7DEB72091FB03243021F523E029836E
+:102190009B838A832093E9008FEF06C095ED9A9583
+:1021A000F1F70000882329F09091E800815095FF15
+:1021B000F5CF8091E80085FF0DC040E050E063E07E
+:1021C00070E0CE0101960E94A6148091E8008E77FF
+:1021D0008093E8000F900F900F90DF91CF910895BA
+:1021E000CF93DF9300D01F92CDB7DEB72091FB03D2
+:1021F000243029F522E029839B838A8383E080931E
+:10220000E9008FEF06C095ED9A95F1F7000088235D
+:1022100029F09091E800815095FFF5CF8091E8007A
+:1022200085FF0DC040E050E063E070E0CE01019614
+:102230000E94A6148091E8008E778093E8000F90AA
+:102240000F900F90DF91CF9108952091FB032430E0
+:10225000F9F422E02093E9002FEF06C035ED3A951E
+:10226000F1F70000222329F03091E800215035FFDA
+:10227000F5CF2091E80025FF0BC040E050E065E07D
+:1022800070E00E94A6148091E8008E778093E800A9
+:102290000895CF93DF93EC018091FB03843041F5E7
+:1022A00081E08093E9008FEF06C095ED9A95F1F7F4
+:1022B0000000882329F09091E800815095FFF5CF28
+:1022C0008091E80085FF14C040E050E068E070E0D5
+:1022D000CE010E94A6148091E8008E778093E800DA
+:1022E00088E0FE01A9E8B2E001900D928A95E1F73D
+:1022F000DF91CF910895BF92CF92DF92EF92FF923C
+:102300000F931F93CF93DF937C01B62EE90100E07A
+:1023100010E0C42ED12C0BC04991202F2B0D2F770C
+:102320004F776FE0C7010E94DC190F5F1F4F0C153C
+:102330001D0594F3DF91CF911F910F91FF90EF90C6
+:10234000DF90CF90BF90089570E06F5F7F4F6F7008
+:1023500077270C94DC190F931F93CF93C42F63300E
+:10236000710509F04AC0842F807F803849F1803997
+:1023700009F043C0622F6F7770E080E090E00E9428
+:10238000003220E030E040E451E40E9465319B01DE
+:10239000AC0160E070E080E090E40E9417330F77BA
+:1023A00010E023E0159507952A95E1F72DEC3CEC1C
+:1023B00042E053E40E94B432A8010E94E30F1DC022
+:1023C000622F6F7770E080E090E00E94003220E0A2
+:1023D00030E040E451E40E9465319B01AC0160E0D3
+:1023E00070E080E090E40E9417332DEC3CEC42E07A
+:1023F00053E40E94B4320E94130DCC3F29F4CF91D4
+:102400001F910F910C94E60CCF911F910F9108959D
+:102410000F931F93CF93DF93CDB7DEB727970FB6F8
+:10242000F894DEBF0FBECDBF8C0114C08A810E941C
+:10243000B6199A819D839B819E839C819F83811184
+:102440001EC089818430B1F08730A1F08630A1F0C0
+:102450008530A1F0BE016F5F7F4F84E791E00E945D
+:10246000231D8111E3CF84E791E00E94141D0E9497
+:102470008F190DC083E003C082E001C081E0AE018E
+:102480004B5F5F4F682FC8010E94491AE3CF279620
+:102490000FB6F894DEBF0FBECDBFDF91CF911F9175
+:1024A0000F910895EF92FF920F93CF93DF9300D097
+:1024B00000D000D0CDB7DEB77B014A832B830C83DD
+:1024C000842F2E834D830E94B6192E814D81811158
+:1024D0001BC082E0E816F10479F083E0E816F1040D
+:1024E00021F0EA94EF2821F50BC0073F11F487E0B3
+:1024F00001C084E089830BC0273FD9F786E0FACF7B
+:10250000473FB9F785E0F6CF42954F704983BE014A
+:102510006F5F7F4F84E791E00E94D91C84E791E0D0
+:102520000E94F71C84E791E00E94141D0E948F19FD
+:1025300026960FB6F894DEBF0FBECDBFDF91CF91C8
+:102540000F91FF90EF9008958091FA03811109C0D7
+:102550000E9495160E94F2168091E200846080939A
+:10256000E20008951092FA030895089508950C94D6
+:10257000B229809192028F5F8093920262E30E945F
+:102580007C34911135C0109292028091930288237D
+:1025900079F18091FB03843049F58091E9008F70D7
+:1025A0009091EC0090FF02C090E801C090E0982B61
+:1025B00084E08093E9008091EB0080FF14C080915B
+:1025C000EE0087FD03C00FC01092F1008091E8007B
+:1025D00085FDFACF8091E80080FF05C08091E8007A
+:1025E0008E778093E8009F709093E9001092930299
+:1025F000089542E061EC81E00E940B1642E061EC3C
+:1026000082E00E940B1642E061EC83E00E940B1610
+:1026100042E261EC84E00E940B1642E361E885E04F
+:102620000E940B1642E360E886E00C940B16809142
+:10263000FD03833009F454C030F4813071F08230EE
+:1026400009F0A5C08CC08A3009F479C08B3009F438
+:102650005FC0893009F09BC020C08091FC03813AA3
+:1026600009F095C08091E800877F8093E800809111
+:10267000000490910104892B21F060E080E090E05B
+:1026800003C068E089E892E070E00E944415809100
+:10269000E8008B778093E80008958091FC038132F5
+:1026A00009F075C08091000490910104892B09F014
+:1026B0006EC08091E800877F8093E80005C080911C
+:1026C000FB03882309F463C08091E80082FFF7CF01
+:1026D0008091F100809391028091E8008B7753C044
+:1026E0008091FC03813A09F052C0809100049091DE
+:1026F0000104892B09F04BC08091E800877F80930B
+:10270000E8008091E80080FFFCCF80918A0136C00C
+:102710008091FC038132D9F58091000490910104ED
+:10272000892BA9F58091E800877F8093E8000E94BB
+:1027300042168091FE0380938A010C948B23809132
+:10274000FC03813221F58091E800877F8093E800C7
+:102750000E9442168091FF03809388020895809121
+:10276000FC03813AA1F48091E800877F8093E80020
+:102770008091E80080FFFCCF809188028093F10077
+:102780008091E8008E778093E8000C9442160895BB
+:1027900084E093E00E94181A62E572E184E093E01D
+:1027A0000E946E1A68E072E184E093E00E94721A5F
+:1027B00084B7877F84BF88E10FB6F8948093600068
+:1027C000109260000FBE90E080E80FB6F8948093FE
+:1027D0006100909361000FBE0E949C1D0E9495169F
+:1027E0000E94F2168091E20084608093E200789467
+:1027F0006BEA71E184E093E00E94141A64EA71E1EB
+:1028000084E093E00E940C1A6BE771E184E093E0AE
+:102810000E94101A0E94370E0E948F190E949E1D5E
+:1028200080E891E00E94481D0BC00E946C298091B5
+:10283000F903882329F00E949A2981110E9490149B
+:102840008091FB03853089F384E093E00E94211C92
+:102850000E94A81DF5CF292F332723303105B1F071
+:102860004CF42130310509F44DC02230310509F016
+:102870004EC007C02132310541F12232310591F1BC
+:1028800046C0E0EDF0E08CE594E045C0992781304A
+:10289000910569F08230910589F0892B09F037C0E4
+:1028A000E8E5F4E0E491F0E088E594E034C0EAE2A1
+:1028B000F4E0E491F0E08AE294E02DC0EEEFF3E082
+:1028C000E491F0E08EEF93E026C0643000F5E62F4F
+:1028D000F0E0EE0FFF1FE550FE4F80819181E9E0AF
+:1028E000F0E019C0643098F4E62FF0E0DF01AA0FA1
+:1028F000BB1FAD5FBD4F8D919C91E55FFD4FE081AA
+:10290000F0E009C0E2E1F0E08CE295E004C0E0E034
+:10291000F0E080E090E0DA018D939C93CF01089580
+:1029200080E189BD82E189BD09B400FEFDCF8091BF
+:10293000D8008F7D8093D8008091E00082608093E2
+:10294000E0008091E00081FDFCCF0895BF92CF921E
+:10295000DF92EF92FF920F931F93CF93DF937C014F
+:102960008B01EA010E946316B82E811133C02097B3
+:1029700031F028813981021B130BE20EF31EC12CAA
+:10298000D12C23C08091E80085FD15C08091E8001E
+:102990008E778093E800209749F0888199818C0D8B
+:1029A0009D1D9983888325E0B22E14C00E94631672
+:1029B000882359F00EC0F70181917F018093F100C7
+:1029C00001501109FFEFCF1ADF0A01151105D1F6E9
+:1029D00001C0B82E8B2DDF91CF911F910F91FF90E9
+:1029E000EF90DF90CF90BF900895BF92CF92DF928B
+:1029F000EF92FF920F931F93CF93DF937C018B0194
+:102A0000EA010E946316B82E811133C0209731F07D
+:102A100028813981021B130BE20EF31EC12CD12C2D
+:102A200023C08091E80085FD15C08091E8008B7778
+:102A30008093E800209749F0888199818C0D9D1D35
+:102A40009983888345E0B42E14C00E9463168823BE
+:102A500059F00EC08091F100F70181937F01015080
+:102A60001109FFEFCF1ADF0A01151105D1F601C0D8
+:102A7000B82E8B2DDF91CF911F910F91FF90EF908A
+:102A8000DF90CF90BF9008954091020450910304CD
+:102A90004617570748F06115710539F44091E80071
+:102AA0004E774093E80001C0BA01FC0140E033C01A
+:102AB0008091FB03882309F444C0853009F443C0A6
+:102AC0008091E80083FD41C08091E80082FD33C021
+:102AD0008091E80080FF1FC09091F3008091F20088
+:102AE000392F20E0A901482BCA0106C0419140932B
+:102AF000F1006150710901966115710519F0883076
+:102B00009105A0F341E0089709F040E08091E800CA
+:102B10008E778093E8006115710551F64111C8CF99
+:102B20000AC08091FB03882361F0853061F08091B9
+:102B3000E80083FD0AC08091E80082FFF2CF80E0C8
+:102B4000089582E0089583E0089581E0089540911A
+:102B50000204509103044617570748F061157105A8
+:102B600039F44091E8004E774093E80001C0BA0183
+:102B7000FC0140E034C08091FB03882309F445C088
+:102B8000853009F444C08091E80083FD42C0809103
+:102B9000E80082FD34C08091E80080FF20C0909161
+:102BA000F3008091F200392F20E0A901482BCA01DF
+:102BB00007C044914093F10031966150710901962C
+:102BC0006115710519F08830910598F341E0089777
+:102BD00009F040E08091E8008E778093E80061156D
+:102BE000710549F64111C7CF0AC08091FB038823C4
+:102BF00061F0853061F08091E80083FD0AC080912A
+:102C0000E80082FFF2CF80E0089582E0089583E03B
+:102C1000089581E00895982F2CC09093E9009817AB
+:102C200039F07091EC002091ED005091F00003C05C
+:102C3000242F762F50E021FD02C09F5F1AC03091F3
+:102C4000EB003E7F3093EB003091ED003D7F309301
+:102C5000ED003091EB0031603093EB007093EC00AD
+:102C60002093ED005093F0002091EE0027FDE5CF7A
+:102C700007C0973090F28F708093E90081E008954B
+:102C800080E008958091FC0387FD05C08091E800F5
+:102C900080FF0EC012C08091E80082FD05C08091C7
+:102CA000FB038111F8CF08958091E8008B7708C06D
+:102CB0008091FB038111EACF08958091E8008E771F
+:102CC0008093E80008958091E4009091E50045E646
+:102CD0002091EC0020FD1FC023C02091FB03222384
+:102CE00091F0253091F02091EB0025FD10C020914E
+:102CF000E4003091E5002817390751F34150C9012C
+:102D000039F784E0089582E0089583E0089581E032
+:102D1000089580E008952091E80020FFDECFF9CFEC
+:102D20002091E80022FFD9CFF4CF0E9403170E9420
+:102D30000B17E0EEF0E0808181608083E8EDF0E049
+:102D400080818F77808319BCA7EDB0E08C918E7F56
+:102D50008C9380818F7E80831092FA0308950F9365
+:102D60001F93CF93DF930E9403170E940B17C8EDA8
+:102D7000D0E088818F778883888180688883888184
+:102D80008F7D888319BC1092FB031092F703109279
+:102D9000F9031092F80300EE10E0F80180818B7FB8
+:102DA000808388818160888342E060E080E00E94C7
+:102DB0000B16E1EEF0E080818E7F8083E2EEF0E0A2
+:102DC000808181608083808188608083F801808138
+:102DD0008E7F8083888180618883DF91CF911F916E
+:102DE0000F910895E8EDF0E080818F7E8083E7ED1C
+:102DF000F0E080818160808384E082BF81E0809305
+:102E0000FA030C94AF16E8EDF0E080818E7F8083AA
+:102E10001092E20008951092DA001092E1000895F5
+:102E20001F920F920FB60F9211242F933F934F933F
+:102E30005F936F937F938F939F93AF93BF93EF9322
+:102E4000FF938091E10082FF0BC08091E20082FF3E
+:102E500007C08091E1008B7F8093E1000E94B9124E
+:102E60008091DA0080FF1FC08091D80080FF1BC0D6
+:102E70008091DA008E7F8093DA008091D90080FF04
+:102E80000DC080E189BD82E189BD09B400FEFDCF9E
+:102E900081E08093FB030E94A41205C019BC10922C
+:102EA000FB030E94B2128091E10080FF19C0809163
+:102EB000E20080FF15C08091E2008E7F8093E200E7
+:102EC0008091E20080618093E2008091D80080626E
+:102ED0008093D80019BC85E08093FB030E94B61252
+:102EE0008091E10084FF30C08091E20084FF2CC01B
+:102EF00080E189BD82E189BD09B400FEFDCF8091EA
+:102F0000D8008F7D8093D8008091E1008F7E8093E0
+:102F1000E1008091E2008F7E8093E2008091E200E8
+:102F200081608093E2008091F703882311F084E0B0
+:102F300007C08091E30087FF02C083E001C081E009
+:102F40008093FB030E94B7128091E10083FF29C0A8
+:102F50008091E20083FF25C08091E100877F80930C
+:102F6000E10082E08093FB031092F7038091E1007F
+:102F70008E7F8093E1008091E2008E7F8093E2005B
+:102F80008091E20080618093E20042E060E080E0B6
+:102F90000E940B168091F00088608093F0000E94E0
+:102FA000B512FF91EF91BF91AF919F918F917F915A
+:102FB0006F915F914F913F912F910F900FBE0F90A6
+:102FC0001F9018951F920F920FB60F9211242F93F6
+:102FD0003F934F935F936F937F938F939F93AF93A1
+:102FE000BF93CF93EF93FF938091E9008F709091FF
+:102FF000EC0090FF02C090E801C090E0C92FC82B00
+:103000001092E9008091F000877F8093F00078941F
+:103010000E9426181092E9008091F0008860809349
+:10302000F000CF70C093E900FF91EF91CF91BF9175
+:10303000AF919F918F917F916F915F914F913F9150
+:103040002F910F900FBE0F901F9018951F93CF9345
+:10305000DF93CDB7DEB7AC970FB6F894DEBF0FBEE7
+:10306000CDBFECEFF3E08091F100819324E0E430F8
+:10307000F207C9F70E9417138091E80083FF37C158
+:103080008091FC039091FD03953009F488C038F4D9
+:103090009130B1F170F0933009F029C131C098300E
+:1030A00009F4F8C0993009F404C1963009F01FC141
+:1030B0009DC0803821F0823809F019C108C0809184
+:1030C000F8039091F903992389F082600FC08091F1
+:1030D0000004909101048F7099278093E9008091FA
+:1030E000EB0085FB882780F91092E9009091E800B9
+:1030F000977F9093E8008093F1001092F100D5C083
+:10310000882319F0823009F0F2C08F7121F08230EB
+:1031100009F0EDC00BC08091FE03813009F0E7C0DB
+:10312000933009F080E08093F9032FC08091FE0373
+:1031300081112BC080910004909101048F70992718
+:10314000009709F4D4C08093E9002091EB0020FFA0
+:103150001CC02091FD03233021F48091EB0080629C
+:1031600012C09091EB0090619093EB0021E030E071
+:1031700001C0220F8A95EAF72093EA001092EA0034
+:103180008091EB0088608093EB001092E9008091C1
+:10319000E800877F8093E8000E944216A8C0811152
+:1031A000A6C08091FE039091FF038F779927182F77
+:1031B0009091E3009078982B9093E3008091E80041
+:1031C000877F8093E8000E9442168091E80080FF8C
+:1031D000FCCF8091E30080688093E300112311F01D
+:1031E00083E001C082E08093FB0381C0805882307D
+:1031F00008F07DC08091FE039091FF038C3D23E099
+:10320000920779F583E08A838AE289834FB7F8943D
+:10321000DE01139620E03EE051E2E32FF0E0509310
+:103220005700E49120FF03C0E295EF703F5FEF701D
+:103230008E2F90E0EA3010F0C79601C0C0968D93B3
+:103240009D932F5F243149F74FBF8091E800877F1E
+:103250008093E8006AE270E0CE0101960E94441576
+:1032600013C0AE01455D5F4F609100040E942B14B6
+:103270000097E9F12091E800277F2093E800BC0146
+:103280008BA59CA50E94A7158091E8008B77809361
+:10329000E8002DC0803859F58091E800877F809341
+:1032A000E8008091F7038093F1008091E8008E7729
+:1032B00071CF81111CC09091FE039230C0F48091B7
+:1032C000E800877F8093E8009093F7030E944216FE
+:1032D0008091F703811104C08091E30087FF02C051
+:1032E00084E001C081E08093FB030E94F912809189
+:1032F000E80083FF0AC08091E800877F8093E800A0
+:103300008091EB0080628093EB00AC960FB6F8944E
+:10331000DEBF0FBECDBFDF91CF911F910895CF9338
+:103320008091FB038823B1F08091E9008F70909128
+:10333000EC0090FF02C090E801C090E0C92FC82BBC
+:103340001092E9008091E80083FD0E942618CF705A
+:10335000C093E900CF910895881F8827881F08959A
+:1033600091E0883F08F490E0892F0895982F907F8E
+:10337000903B99F038F4903981F0903A71F09038A0
+:10338000C9F40BC0903DA1F018F4903C99F410C022
+:10339000903E19F0903F71F402C083E00895E82F49
+:1033A000E15FEF3038F4F0E0E15FFD4F8081089598
+:1033B00082E0089580E008950F932F774F776F7024
+:1033C000606BDC01ED91FC91022F242F462F63E00E
+:1033D00070E009950F9108950F932F774F776F70D5
+:1033E0006069DC01ED91FC91022F242F462F63E0F0
+:1033F00070E009950F9108950F932F774F776F70B5
+:103400006068DC01ED91FC91022F242F462F63E0D0
+:1034100070E009950F910895FC017383628308950C
+:10342000FC01738F628F0895FC01758F648F08957E
+:10343000CF93DF93EC011DA21FA21EA2BC01685D09
+:103440007F4F40EC88519F4F0E94551C1B821A826F
+:103450001D821C821F821E82198618861B861A8670
+:103460001D861C861F861E86198A188A1B8A1A8A40
+:103470001D8A1C8A1F8A1E8A198E188E1B8E1A8E10
+:103480001D8E1C8E1F8E1E8E19A218A2DF91CF9149
+:103490000895CF92DF92FF920F931F93CF93DF9304
+:1034A0001F92CDB7DEB7F62E6A018C0108511F4F6F
+:1034B00008C0F60161916F01C80149830E945C1C3C
+:1034C00049818C2D841B8F15A0F30F90DF91CF9134
+:1034D0001F910F91FF90DF90CF900895FC017183B1
+:1034E00060830895FC0171A360A30895AF92BF9219
+:1034F000CF92DF92EF92FF920F931F93CF93DF93C0
+:1035000000D01F92CDB7DEB77C016B01142FB22E15
+:10351000A02EDC0195968C9195978430F1F45A9603
+:10352000ED91FC915B97309709F4D8C0CB010197DE
+:1035300063E070E00E948834DB01AA0FBB1FA60F76
+:10354000B71F49832A830B834C2D4A1B9E012F5F93
+:103550003F4FBD01C7010995B1C06230710509F443
+:1035600053C06330710529F06130710509F09CC0CA
+:1035700083C0842F807F803A01F130F48038B9F025
+:10358000803909F0ABC00DC0803EE9F0803F09F101
+:10359000803B09F0A3C0D7011296ED91FC911397DF
+:1035A00023C0D7011496ED91FC9115971DC0D7014A
+:1035B0001696ED91FC91179717C0D7011896ED91CB
+:1035C000FC91199711C0D7011A96ED91FC911B97A8
+:1035D0000BC0423F09F082C0D7011C96ED91FC91CF
+:1035E0001D97309731F47AC0309709F477C0123FB5
+:1035F00021F42A2D4B2D62EF04C0612F6F702A2D0C
+:103600004B2DC70109955AC0842F807F803D59F00A
+:10361000803F79F0803C09F061C0D7011E96ED91A2
+:10362000FC911F9719C0D7015096ED91FC915197CD
+:1036300013C0433F31F4D7015296ED91FC9153975B
+:1036400008C0413F09F04AC0D7015496ED91FC9162
+:103650005597309741F442C0309709F43FC0133F6B
+:1036600011F0113F19F44B2D612F03C0612F6F70C2
+:103670004B2DC701099522C0842F0E94B0198823C1
+:1036800031F0D7015696ED91FC91579707C0163F40
+:1036900029F5D7015896ED91FC9159973097F1F0A3
+:1036A000612FC70109950AC064307105A8F416C0DE
+:1036B0000A2D2B2D412FB601C7010995D7015E9622
+:1036C000ED91FC915F97309789F00A2D2B2D412FBA
+:1036D000B601C70109950AC0C12CD12CD7015C964F
+:1036E000ED91FC915D97309719F7E8CF0F900F900F
+:1036F0000F90DF91CF911F910F91FF90EF90DF908E
+:10370000CF90BF90AF900895EF92FF920F931F93C9
+:10371000CF93DF93EC01162F862F0E94B0198823D8
+:1037200069F0FDA081E08DA300E020E0412F61E081
+:1037300070E0CE010E94761AFDA27CC0812F0E940B
+:10374000AC194DA1882309F440C0443029F01AA3D4
+:1037500021E030E03FA32EA3812F0E94B6198130D3
+:1037600031F070F0823051F0833059F507C08DA3ED
+:1037700000E020E0412F61E070E01EC08DA35AC040
+:10378000103F19F0173FE9F404C084E08DA31AA399
+:103790003FC02EA13FA1C90163E070E00E948834C0
+:1037A0008C0F9D1FFC0112A3B9016F5F7F4F7FA398
+:1037B0006EA30CA12BA14AA1CE010E94761A1DA2D4
+:1037C00039C01DA21FA21EA235C0442399F12EA10B
+:1037D0003FA1C90163E070E00E9488347C01FE01D2
+:1037E000E80FF91F12A3B9016F5F7F4F7FA36EA38C
+:1037F0008130910591F082E0E816F104D9F40CA132
+:103800002BA14AA1CE010E94761A8DA1843091F09D
+:1038100081E090E09FA38EA30DC0423059F400E0F8
+:103820002BA14AA1CE010E94761A8DA1843011F0FD
+:10383000FFA2EEA2DF91CF911F910F91FF90EF9029
+:103840000895CF92DF92EF92FF920F931F93CF9341
+:10385000DF93EC01E8A1F9A1309709F009958E01F9
+:1038600008511F4FC8010E948E1CE12CF12CC82E5C
+:10387000D12C0FC060E0C8010E94A21C682FCE01AD
+:103880000E94841B61E0C8010E94B31C8FEFE81AFC
+:10389000F80AEC14FD0470F3DF91CF911F910F91A2
+:1038A000FF90EF90DF90CF900895FC0142837483E6
+:1038B00063831182108208950F931F93CF93DF9338
+:1038C000EC01062F0E94D41C182F298130E0C90179
+:1038D00001966A8170E00E949C34488150E0841710
+:1038E000950729F4812F0E94D71C80E012C0EB813C
+:1038F000FC81E20FF31F00832981822F90E0019663
+:103900006A8170E00E949C348983812F0E94D71CB9
+:1039100081E0DF91CF911F910F910895CF93DF93B5
+:10392000EC010E94D41C29819881291710F0C22F24
+:1039300002C0CA81C20FC91B0E94D71C8C2FDF9105
+:10394000CF910895FC012081862F90E0820F911D78
+:10395000628170E00E949C340380F481E02DE80FC6
+:10396000F91F808108950F931F93CF93DF931F92C8
+:10397000CDB7DEB78C0169830E94D41C482FF801B3
+:1039800080816981262F30E0280F311D6281C901B5
+:1039900070E00E949C348083842F0F90DF91CF9140
+:1039A0001F910F910C94D71C8FB7F89408958FBF77
+:1039B0000895FC01CB012091FB032430B1F4218157
+:1039C0002F702093E90040E050E064E070E00E9436
+:1039D000A61481110BC09091E80095FD07C090914D
+:1039E000E8009E779093E800089582E00895209182
+:1039F000FB032430A9F4FC0181818F708093E900DE
+:103A00003091F3002091F200932F80E0822B892BDC
+:103A100049F08091E8008E778093E8000C9463165B
+:103A200082E0089580E008952091FB03243051F452
+:103A3000FC0121812F702093E9002091E80020FDF6
+:103A40000C94F71C0895FC01CB012091FB0324305A
+:103A500011F080E0089526812F702093E9002091D5
+:103A6000E80022FFF6CF2091E80025FFF2CF40E0EA
+:103A700050E064E070E00E94F5148091E80085FD5C
+:103A800005C08091E8008B778093E80081E008957D
+:103A900090939502809394020895E0919402F0919E
+:103AA0009502309721F00190F081E02D099480E09B
+:103AB0000895E0919402F0919502309721F00280F0
+:103AC000F381E02D09940895E0919402F09195021C
+:103AD000309721F00480F581E02D0994089520911C
+:103AE0009602309197028217930771F09093970294
+:103AF00080939602E0919402F0919502309721F024
+:103B00000680F781E02D0994089520919802309164
+:103B100099028217930771F090939902809398020B
+:103B2000E0919402F0919502309721F00084F185A4
+:103B3000E02D0994089508950C949B1D0E94E62998
+:103B40000E94F3060E94BA2A0C9465300C942C064D
+:103B50005F926F927F928F929F92AF92BF92CF921D
+:103B6000DF92EF92FF920F931F93CF93DF93CDB726
+:103B7000DEB72A970FB6F894DEBF0FBECDBF0E9406
+:103B8000E9079AE9C92E92E0D92E00E010E0AA24B4
+:103B9000A394B12C502E802F0E9439093C01F601CC
+:103BA000E190F1906F01E826F926E114F10431F477
+:103BB0000F5F1F4F0530110569F73AC08091F10280
+:103BC00081FD0E94420920E030E04501022E02C042
+:103BD000880C991C0A94E2F7C4018E219F21892B3D
+:103BE00009F12E835F826820792081E0672809F43B
+:103BF00080E088870E94EF298160782F9A878987E3
+:103C00004E815F8168858A850E94611EF801EE0FF2
+:103C1000FF1FE656FD4F808191818825992591836C
+:103C2000808316C02F5F3F4F2C30310571F6C0CF17
+:103C30008FEF89838A831B820E94EF298160782F0E
+:103C40009D838C8349815A816B818D810E94611E85
+:103C50000E94A72D1091A4020E944D1D1817D9F0A3
+:103C60000E944D1D8093A4022A960FB6F894DEBFE1
+:103C70000FBECDBFDF91CF911F910F91FF90EF90BD
+:103C8000DF90CF90BF90AF909F908F907F906F907C
+:103C90005F900C94A61D2A960FB6F894DEBF0FBE57
+:103CA000CDBFDF91CF911F910F91FF90EF90DF90EB
+:103CB000CF90BF90AF909F908F907F906F905F90CC
+:103CC0000895CF93DF93CDB7DEB72B970FB6F89457
+:103CD000DEBF0FBECDBF4F83588769877A878B873A
+:103CE000DE01119686E0FD0111928A95E9F785E0E3
+:103CF000FE01379601900D928A95E1F749815A812C
+:103D00006B817C818D819E810E944A262B960FB605
+:103D1000F894DEBF0FBECDBFDF91CF910895089517
+:103D2000CF93C82F882309F4C1C0823859F40E9468
+:103D30004D1D81FDBBC089E30E94B1280E943D2931
+:103D400089E30CC0833879F40E944D1D80FDAEC01C
+:103D500083E50E94B1280E943D2983E50E94D32873
+:103D6000CF910C943D29843859F40E944D1D82FD59
+:103D70009DC087E40E94B1280E943D2987E4EECFD0
+:103D80008450813A48F48C2F0E94C72F81118EC035
+:103D90008C2F0E94B128E4CF8C2F805E883050F4A5
+:103DA000C77081E090E001C0880FCA95EAF70E94D1
+:103DB000F428D6CF8C2F855A833078F4C53A29F071
+:103DC000C63A31F482E890E005C081E890E002C094
+:103DD00083E890E0CF910C946F1D8C2F885A83312B
+:103DE00008F064C0C83A39F1C93A41F1CA3A49F118
+:103DF000CB3A51F1CC3A59F1CD3A61F1C03B69F17E
+:103E0000CE3A71F1CF3A79F1C13B81F1C23B89F1F0
+:103E1000C33B91F1C43B99F1C53BA1F1C63BA9F16C
+:103E2000C73BB1F1C83BB9F1C93BC1F1CA3BC9F5C8
+:103E30008AE292E038C082EE90E035C089EE90E0F0
+:103E400032C08AEE90E02FC085EB90E02CC086EB6C
+:103E500090E029C087EB90E026C08CEC90E023C076
+:103E60008DEC90E020C083E891E01DC08AE891E0ED
+:103E70001AC082E991E017C084E991E014C081E2A0
+:103E800092E011C083E292E00EC084E292E00BC0A7
+:103E900085E292E008C086E292E005C087E292E007
+:103EA00002C080E090E0CF910C94851DCF910895E1
+:103EB000882309F44DC0823859F40E944D1D81FFBA
+:103EC00047C089E30E94B1280E943D2989E30CC0C4
+:103ED000833871F40E944D1D80FF3AC083E50E9433
+:103EE000B1280E943D2983E50E94D3280C943D29E6
+:103EF000843859F40E944D1D82FF2AC087E40E9435
+:103F0000B1280E943D2987E4EFCF982F9450913A31
+:103F100008F4EACF982F905E983058F4282F277035
+:103F200081E090E001C0880F2A95EAF70E94FA2804
+:103F3000DDCF982F955A933020F480E090E00C94D8
+:103F40006F1D885A833120F480E090E00C94851D29
+:103F50000895882321F00E94F4280C943D290895A7
+:103F6000882321F00E94FA280C943D290895BF92DD
+:103F7000CF92DF92EF92FF920F931F93CF93DF9335
+:103F8000CDB7DEB727970FB6F894DEBF0FBECDBF13
+:103F90008C0185E0F801DE01119601900D928A9561
+:103FA000E1F7F801D080E180F280558152955F7091
+:103FB00083819481892B41F0FFEFEF1208C081E0EB
+:103FC00090E0DF1631F003C081E090E002C080E0B5
+:103FD00090E080FD7CC3C8015E830E948F1ED98261
+:103FE000EA8289819A810E946E28B92E8F830E946D
+:103FF0006D280E9495275E816F81FF2021F00E942D
+:1040000011296F815E812B2D22952F7030E0253094
+:10401000310509F4E6C06CF4243031050CF0A2C07F
+:104020004B2D407F8B2D8F70223031050CF045C019
+:1040300017C02C3031054CF42A3031050CF0E7C1A3
+:104040002830310509F043C3E5C02D30310509F4AE
+:10405000BAC20CF4A2C22F30310509F038C323C311
+:10406000182F411101C002C01295107FFF2059F096
+:10407000112309F46BC2812F6F830E9404290E94CF
+:104080003D296F8163C2862F0E94581F112309F4B6
+:104090001EC3812F0E940A2927960FB6F894DEBF0F
+:1040A0000FBECDBFDF91CF911F910F91FF90EF9089
+:1040B000DF90CF90BF900C943D29403211F0829553
+:1040C000807F662319F0613071F523C0FF20B1F0C5
+:1040D000511101C032C0513081F527960FB6F894C6
+:1040E000DEBF0FBECDBFDF91CF911F910F91FF902B
+:1040F000EF90DF90CF90BF900C942429511101C014
+:1041000003C0513009F4E3C28E830E9427298E81B7
+:104110009AC1FF2021F0563008F0D9C20EC05530A8
+:1041200008F0D5C290C1FF20C9F0552331F0F80145
+:10413000958190FF0BC29F70958327960FB6F894D8
+:10414000DEBF0FBECDBFDF91CF911F910F91FF90CA
+:10415000EF90DF90CF90BF900C94A91F552309F4E6
+:1041600072C109C22B2D26952695237030E02115AA
+:10417000310529F02130310509F0A9C219C0FF200D
+:1041800021F0862F9B2D937002C080E090E027964F
+:104190000FB6F894DEBF0FBECDBFDF91CF911F9158
+:1041A0000F91FF90EF90DF90CF90BF900C946F1D18
+:1041B000FF2021F0862F9B2D937002C080E090E0BD
+:1041C00027960FB6F894DEBF0FBECDBFDF91CF911B
+:1041D0001F910F91FF90EF90DF90CF90BF900C94C4
+:1041E000851D862FFF2019F00E94AD2C02C00E9471
+:1041F000152D27960FB6F894DEBF0FBECDBFDF9109
+:10420000CF911F910F91FF90EF90DF90CF90BF90D3
+:104210000C949C2D8B2D837009F079C0F11057C23E
+:10422000262F229526952770220F220F862F8F701A
+:10423000C82ED12CE12CF12C022E04C0CC0CDD1C9C
+:10424000EE1CFF1C0A94D2F764FF10C06FE070E010
+:1042500080E090E004C0660F771F881F991F2A95A1
+:10426000D2F7609570958095909503C060E070E0FE
+:10427000CB012B2D269526952370422F50E04230FE
+:104280005105D9F04330510569F16C297D298E29FA
+:104290009F294130510551F127960FB6F894DEBFA2
+:1042A0000FBECDBFDF91CF911F910F91FF90EF9087
+:1042B000DF90CF90BF900C94AA276C297D298E297E
+:1042C0009F2927960FB6F894DEBF0FBECDBFDF91B2
+:1042D000CF911F910F91FF90EF90DF90CF90BF9003
+:1042E0000C94BC270E94AA27C701B60127960FB6D7
+:1042F000F894DEBF0FBECDBFDF91CF911F910F911C
+:10430000FF90EF90DF90CF90BF900C949827FF2004
+:1043100019F08B2D817001C08695882309F4D7C1CF
+:10432000262F229526952770220F220F862F8F7019
+:10433000C82ED12CE12CF12C022E04C0CC0CDD1C9B
+:10434000EE1CFF1C0A94D2F764FF10C06FE070E00F
+:1043500080E090E004C0660F771F881F991F2A95A0
+:10436000D2F7609570958095909503C060E070E0FD
+:10437000CB012B2D269526952370422F50E04230FD
+:104380005105D9F04330510569F16C297D298E29F9
+:104390009F294130510551F127960FB6F894DEBFA1
+:1043A0000FBECDBFDF91CF911F910F91FF90EF9086
+:1043B000DF90CF90BF900C9449286C297D298E29DD
+:1043C0009F2927960FB6F894DEBF0FBECDBFDF91B1
+:1043D000CF911F910F91FF90EF90DF90CF90BF9002
+:1043E0000C945B280E944928C701B60127960FB696
+:1043F000F894DEBF0FBECDBFDF91CF911F910F911B
+:10440000FF90EF90DF90CF90BF900C943728603FE3
+:1044100059F120F4603E08F494C008C0623F09F4EA
+:1044200067C0F0F1633F09F08CC065C0162F1F70A4
+:104430008B2D8F71FF2021F00E94E227812F7DCEEE
+:104440000E94FD27812F27960FB6F894DEBF0FBE7E
+:10445000CDBFDF91CF911F910F91FF90EF90DF9033
+:10446000CF90BF900C94B01FFF20B1F0553008F0F2
+:104470002EC18B2D8F7127960FB6F894DEBF0FBE1D
+:10448000CDBFDF91CF911F910F91FF90EF90DF9003
+:10449000CF90BF900C941C28563008F018C1E9CF7B
+:1044A000FF2099F08B2D8F7127960FB6F894DEBF01
+:1044B0000FBECDBFDF91CF911F910F91FF90EF9075
+:1044C000DF90CF90BF900C94E2278B2D8F712796B1
+:1044D0000FB6F894DEBF0FBECDBFDF91CF911F9115
+:1044E0000F91FF90EF90DF90CF90BF900C94FD273D
+:1044F000F110EBCFD7CFFF2099F08B2D8F7127963E
+:104500000FB6F894DEBF0FBECDBFDF91CF911F91E4
+:104510000F91FF90EF90DF90CF90BF900C94D32736
+:1045200027960FB6F894DEBF0FBECDBFDF91CF91B7
+:104530001F910F91FF90EF90DF90CF90BF900C9460
+:10454000CE27FF20A9F0552309F4ACCF862F27965C
+:104550000FB6F894DEBF0FBECDBFDF91CF911F9194
+:104560000F91FF90EF90DF90CF90BF900C94901E32
+:10457000552309F4AACF862F27960FB6F894DEBFED
+:104580000FBECDBFDF91CF911F910F91FF90EF90A4
+:10459000DF90CF90BF900C94581F4B2D4F70C801E7
+:1045A0000E94560327960FB6F894DEBF0FBECDBF0C
+:1045B000DF91CF911F910F91FF90EF90DF90CF90FF
+:1045C000BF900C940027F11082C09B2D9F70492F43
+:1045D00050E04230510599F144F44115510569F01C
+:1045E0004130510509F073C019C043305105C1F184
+:1045F0004430510509F06BC044C027960FB6F894BB
+:10460000DEBF0FBECDBFDF91CF911F910F91FF9005
+:10461000EF90DF90CF90BF900C94763027960FB636
+:10462000F894DEBF0FBECDBFDF91CF911F910F91E8
+:10463000FF90EF90DF90CF90BF900C948D30279635
+:104640000FB6F894DEBF0FBECDBFDF91CF911F91A3
+:104650000F91FF90EF90DF90CF90BF900C94A93016
+:1046600027960FB6F894DEBF0FBECDBFDF91CF9176
+:104670001F910F91FF90EF90DF90CF90BF900C941F
+:10468000BC30862F27960FB6F894DEBF0FBECDBF85
+:10469000DF91CF911F910F91FF90EF90DF90CF901E
+:1046A000BF900C94E0304B2D4F70C80127960FB689
+:1046B000F894DEBF0FBECDBFDF91CF911F910F9158
+:1046C000FF90EF90DF90CF90BF900C944309279616
+:1046D0000FB6F894DEBF0FBECDBFDF91CF911F9113
+:1046E0000F91FF90EF90DF90CF90BF9008950E94C0
+:1046F00011290E9421290E94E6280E943D290E943A
+:10470000482E0E949C2D80E090E00E946F1D80E06A
+:1047100090E00C94851D0E9401290C9477230E943F
+:104720006E28292F22952F7030E02C3031054CF463
+:104730002A3031056CF4225031092230310590F4D1
+:1047400007C02C30310551F02F30310559F406C027
+:10475000803E10F0803F31F481E0089593FB88277C
+:1047600080F9089580E00895CF93DF9300D000D0C2
+:104770001F92CDB7DEB70F900F900F900F900F9054
+:10478000DF91CF910895CF93DF9300D000D000D078
+:10479000CDB7DEB726960FB6F894DEBF0FBECDBFFD
+:1047A000DF91CF9108951F93CF93DF93C091DB02E8
+:1047B00016E012C0D0E01C9FF0011D9FF00D1124E7
+:1047C000E555FD4F408151816281738184819581DE
+:1047D0000E94C3232196C7708091DC02C813EACFE0
+:1047E000DF91CF911F9108954091A5025091A602AB
+:1047F0006091A7027091A8028091A9029091AA02EB
+:104800000C94C3230F931F93CF93DF938091AA023D
+:1048100082958F7009F069C08091A702882309F4FE
+:1048200064C0A091DB02D091DC02B091A502C091DE
+:10483000A6028091A8029091A90221E030E0BF3F3A
+:1048400011F020E030E0122FBC016095709506E079
+:104850004AC0009721F0CF3F29F4212F05C021E065
+:1048600030E002C020E030E020FD3BC04A2F50E0A5
+:10487000049FF001059FF00D1124E555FD4F2181A6
+:10488000C2132FC02081B2132CC02281211129C054
+:10489000238134812817390718F0281B390B02C0EF
+:1048A000260F371F283C3105E0F48091AA028F7053
+:1048B00080618093AA0286E0849FF001859FF00DBD
+:1048C0001124E055FD4F80818F708061808385EADF
+:1048D00092E00E94B71FDF91CF911F910F910C942E
+:1048E000D323AF5FA770AD13B4CFDF91CF911F91EA
+:1048F0000F910895EF92FF920F931F93CF93DF9341
+:10490000CDB7DEB762970FB6F894DEBF0FBECDBF4E
+:104910008C0185E0F801DE011D9601900D928A95CB
+:10492000E1F7D8014C9111965C91119712966C9118
+:1049300012971396ED90FC9014977091A502E09158
+:10494000A6028091A8029091A902009739F0EF3F4A
+:1049500041F421E030E07F3F31F003C021E030E05E
+:1049600002C020E030E020FD5CC12091A70222239C
+:1049700009F4F1C0E816F90628F09701281B390B55
+:10498000C90104C0809590958E0D9F1D883C9105AE
+:1049900008F098C08091AA02982F907F09F064C017
+:1049A000E51314C0741312C0611110C08F708061C0
+:1049B0008093AA020E94F42385EA92E00E94B71F26
+:1049C0008091AA02D80115968C9343C1EF2839F043
+:1049D0005F3F41F481E090E04F3F31F003C081E060
+:1049E00090E002C080E090E080FD03C081E0862777
+:1049F00002C080E090E080FF2EC08091DB02209119
+:104A0000DC0236E013C090E0389FF001399FF00DD2
+:104A10001124E555FD4F7181571306C0708147136E
+:104A200003C07281671317C0019687708213EBCFA2
+:104A300012C19F7059F0882309F40BC107C09F7001
+:104A400029F0F8019581907F09F403C1805E8830D8
+:104A500008F4FFC0D2C0662309F4FBC08091AA020B
+:104A600081608093AA02F5C0E51308C0741306C0E4
+:104A7000611104C0D80115968C939DC04D875E8747
+:104A80008D859E856A8B0E948F236A89882309F40D
+:104A9000B4C0662309F4B1C02091AA02822F829586
+:104AA0008F7090E002970CF4C6C08091A50290919F
+:104AB000A60298878F831986FB86EA862C87CE010B
+:104AC000079646C08091AA02982F907F59F47E2DB8
+:104AD000F98AE88A89890E94B42385EA92E00E94D3
+:104AE000B71F95C0E51311C074130FC061110DC03D
+:104AF000F8018583C8010E94B71FE5EAF2E086E06D
+:104B0000DF011D928A95E9F7A2C04D875E878D85EA
+:104B10009E856A8B0E948F236A89882309F46DC061
+:104B2000662309F46AC02091AA02822F82958F70B1
+:104B300090E002970CF47FC08091A5029091A602AC
+:104B40009A8389831B82FD82EC822E83CE0101969B
+:104B50000E94B71F70C0E816F90628F09701281BBD
+:104B6000390BC90104C0809590958E0D9F1D883C1E
+:104B7000910508F046C0662309F43FC0E51330C034
+:104B800074132EC02091AA0220FD21C0322F32952D
+:104B90003F70832F90E00097D1F0D80115962C93A9
+:104BA00015970F9741F0832F8F5F8295807F2F702D
+:104BB000282B15962C93C8010E94B71F86E0F80198
+:104BC000A5EAB2E001900D928A95E1F73EC086E039
+:104BD000F801A5EAB2E001900D928A95E1F737C09D
+:104BE0004D875E878D859E850E948F23811123C00E
+:104BF0008091AA0281608093AA02C8010E94B71F17
+:104C000026C07E2DF98AE88A89890E94B423E5EAC4
+:104C1000F2E086E0DF011D928A95E9F70E94F42315
+:104C200018C0662351F34D875E878D859E850E944F
+:104C30008F23882311F386E0F801A5EAB2E0019002
+:104C40000D928A95E1F70E9402240E94F42381E0EC
+:104C500014C080E012C04D875E878D859E850E94BE
+:104C60006E28292F22952F7030E0223031050CF468
+:104C7000E0CE243031050CF6E2CE62960FB6F89401
+:104C8000DEBF0FBECDBFDF91CF911F910F91FF907F
+:104C9000EF9008951F93CF93DF93CDB7DEB72C9796
+:104CA0000FB6F894DEBF0FBECDBF4F83588769871C
+:104CB0007A878B879C87CE0107960E947A24882367
+:104CC000D9F02F8138858A859B85892B39F03F3F24
+:104CD00019F080E090E004C02F3FD9F781E090E028
+:104CE000892B09F06DC04F81588569857A858B8540
+:104CF0009C850E94C32364C086E0FE013796DE01D6
+:104D0000119601900D928A95E1F7FF81E8854A8519
+:104D10005B854115510539F0EF3F41F481E090E0AA
+:104D2000FF3F31F003C081E090E002C080E090E0FE
+:104D300080FD46C02091DC0230E0C90101968770F9
+:104D400099276091DB0270E08617970709F440C04D
+:104D5000F983EA835D834C8396E0929FD001939F11
+:104D6000B00D1124A555BD4FFE01319601900D9255
+:104D70009A95E1F78093DC020E94D32321C0189F0B
+:104D8000C001112485559D4F0E947A24882371F11A
+:104D9000E091DB021E9FF0011124E555FD4F40819B
+:104DA000518162817381848195810E94C3238091A6
+:104DB000DB0290E00196877099278093DB0201C0A7
+:104DC00016E08091DB029091DC028913D8CF0EC0EF
+:104DD0000E948B231092DC021092DB02E5EAF2E0E3
+:104DE00086E0DF011D928A95E9F7EACF2C960FB68F
+:104DF000F894DEBF0FBECDBFDF91CF911F91089514
+:104E0000DF92EF92FF920F931F93CF93DF93EC010A
+:104E1000009709F46EC0D12CEE24E394F12C8E019E
+:104E20000F5F1F4FFE018491843748F4843008F0EF
+:104E30004CC0813071F0823009F05BC01EC08537F4
+:104E400009F43FC080F1982F9458903708F051C072
+:104E50003FC02296F8018491982F905E983050F4CC
+:104E60008770FE2D01C0FF0F8A95EAF78F2F0E94F1
+:104E7000142913C00E94901E2FC02296F80184911D
+:104E8000982F905E983060F48770FE2D01C0FF0F60
+:104E90008A95EAF78F2F0E941A290E943D291CC08B
+:104EA0000E94581F19C02296F801049107C08FE98B
+:104EB0009FE00197F1F700C0000001500111F7CF0A
+:104EC0000BC02296F801D49007C00E94901E03C028
+:104ED0008F770E94581FE8018D2D07C08150EFE9A0
+:104EE000FFE03197F1F700C00000882309F497CF65
+:104EF000F5CFDF91CF911F910F91FF90EF90DF9051
+:104F000008956093E1027093E2028093E30290932C
+:104F1000E4020C9477236093DD027093DE028093A9
+:104F2000DF029093E0020C94772308950C9481277C
+:104F30000F931F930091E1021091E2022091E3028E
+:104F40003091E402602B712B822B932B1F910F91D8
+:104F50000C9481270F931F930091E1021091E202BC
+:104F60002091E3023091E402602371238223932392
+:104F70001F910F910C9481270F931F930091E102D1
+:104F80001091E2022091E3023091E4026027712740
+:104F9000822793271F910F910C94812760E070E086
+:104FA000CB010C948B2741E050E060E070E004C03E
+:104FB000440F551F661F771F8A95D2F7CB01BA01A0
+:104FC0000C948B2741E050E060E070E004C0440F97
+:104FD000551F661F771F8A95D2F78091DD02909149
+:104FE000DE02A091DF02B091E002482B592B6A2B20
+:104FF0007B2BCB01BA010C948B2741E050E060E0A1
+:1050000070E004C0440F551F661F771F8A95D2F7C2
+:1050100040955095609570958091DD029091DE02EB
+:10502000A091DF02B091E002482359236A237B2339
+:10503000CB01BA010C948B2741E050E060E070E0B6
+:1050400004C0440F551F661F771F8A95D2F78091C1
+:10505000DD029091DE02A091DF02B091E0024827CC
+:1050600059276A277B27CB01BA010C948B270F9312
+:105070001F930091DD021091DE022091DF0230913A
+:10508000E002602B712B822B932B1F910F910C94BC
+:105090008B270F931F930091DD021091DE02209168
+:1050A000DF023091E00260237123822393231F915A
+:1050B0000F910C948B270F931F930091DD02109199
+:1050C000DE022091DF023091E00260277127822703
+:1050D00093271F910F910C948B270895CF92DF9205
+:1050E000EF92FF920F931F93CF93DF93EC01C09049
+:1050F000E102D090E202E090E302F090E4028091BD
+:10510000DD029091DE02A091DF02B091E002C82A98
+:10511000D92AEA2AFB2A0FE110E0B701A601002EE6
+:1051200004C076956795579547950A94D2F740FF46
+:1051300008C0BE01802F0E94B3048130910509F0A0
+:1051400007C00150110948F7BE0180E00E94B30476
+:10515000DF91CF911F910F91FF90EF90DF90CF9053
+:10516000089540918B0150918C0120E030E09FEF39
+:10517000FA01E20FF31F62816817A1F09F3F19F453
+:10518000611101C0922F2F5F3F4F2630310581F70B
+:1051900007C0FA01E90FF11D97FDFA958283089582
+:1051A0009F3FB9F7089540918B0150918C0120E009
+:1051B00030E0FA01E20FF31F9281981301C01282CE
+:1051C0002F5F3F4F26303105A1F7089581E090E031
+:1051D000E0918B01F0918C01E80FF91F108201968C
+:1051E00088309105A9F708959091E502982B909346
+:1051F000E502089580959091E50298239093E50249
+:1052000008951092E50208959091E602982B9093EC
+:10521000E602089580959091E60298239093E60225
+:1052200008951092E60208959091E702982B9093CA
+:10523000E702089580959091E70298239093E70202
+:1052400008951092E70208958093E802089510925D
+:10525000E802089540918B0150918C0120E030E0EC
+:1052600080E0FA01E20FF31F918191118F5F2F5FB0
+:105270003F4F27303105A9F70895E0918B01F09158
+:105280008C018091E5028083E0918B01F0918C018B
+:1052900080819091E602892B8083E0918B01F091CF
+:1052A0008C0180819091E702892B80839091E802A4
+:1052B000992361F0E0918B01F0918C018081892B21
+:1052C00080830E942A2981110E94272980918B01C5
+:1052D00090918C010C94591D8091FB03843039F11D
+:1052E0001092F20220E488E190E00FB6F894A895BD
+:1052F000809360000FBE2093600080E00E949B03BB
+:1053000080E00E942C0683B7817F846083BF83B7CF
+:10531000816083BF7894889583B78E7F83BF88E14F
+:105320000FB6F89480936000109260000FBE08954D
+:1053300008950895CF9380E00E949B030E949829CE
+:105340000E94E9070E949929C0E08C2F0E94390928
+:10535000892B29F4CF5FC530C1F780E001C081E01F
+:10536000CF9108950E948B2380E00E949B030E94AE
+:1053700065300E944D1D0C942C061F920F920FB6A3
+:105380000F9211248F939F93AF93BF938091F2025A
+:10539000811113C08091F3029091F402A091F50263
+:1053A000B091F6024196A11DB11D8093F302909336
+:1053B000F402A093F502B093F602BF91AF919F91D2
+:1053C0008F910F900FBE0F901F90189582E084BDB3
+:1053D00093E095BD9AEF97BD80936E0008958FB7C7
+:1053E000F8944091F3025091F4026091F5027091AB
+:1053F000F6028FBFCA010895CF92DF92EF92FF921B
+:105400000F931F932FB7F8944091F3025091F40239
+:105410006091F5027091F6022FBF6A017B01EE24C4
+:10542000FF248C0120E030E0C016D106E206F3062E
+:1054300020F09A01281B390B05C09C01209530955E
+:10544000240F351FC9011F910F91FF90EF90DF903E
+:10545000CF9008951F920F920FB60F9211248F9341
+:105460009F93AF93BF938091F3029091F402A09128
+:10547000F502B091F6020196A11DB11D8093F302D1
+:105480009093F402A093F502B093F602BF91AF910E
+:105490009F918F910F900FBE0F901F9018950E94B3
+:1054A0009516F8942FEF87EA91E6215080409040BE
+:1054B000E1F700C0000087E090EBDC018093050479
+:1054C00090930604A0930704B09308042CE088E1AD
+:1054D00090E00FB6F894A895809360000FBE2093DB
+:1054E0006000FFCFCF92DF92EF92FF920F931F9356
+:1054F000CF93DF93C82ED12C01E010E08D2D0E94B8
+:1055000039097C01C0E0D0E098010C2E02C0220FC6
+:10551000331F0A94E2F72E213F21232B29F42196F1
+:10552000CC30D10589F708C06C2F7D2D80E00E941A
+:105530008E04C812F4CF06C0D39485E0D812DECF13
+:1055400080E001C081E0DF91CF911F910F91FF902A
+:10555000EF90DF90CF900895CF93C82F8CE20E94F8
+:10556000722A882321F08C2FCF910C94722A80E02C
+:10557000CF910895CF930E94FD2B811102C00E940C
+:10558000DE2BC5E608C00E94E9078FE39CE901977E
+:10559000F1F700C00000C150B1F789E20E94AC2AC7
+:1055A00081110AC18AE20E94AC2A81110E94DE2B7D
+:1055B00085E00E94AC2A81110E944F2A0E94082C8B
+:1055C0008093F10287E00E94AC2A882399F18BE155
+:1055D0000E94AC2A882351F09091F10291FB882718
+:1055E00080F921E0822780FB91F922C08EE00E94A1
+:1055F000AC2A882351F09091F10292FB882780F920
+:1056000021E0822780FB92F913C080E10E94AC2A3E
+:105610009091F102882341F093FB882780F921E0E3
+:10562000822780FB93F904C0892F809580FB90F935
+:105630009093F1028091F1020E940C2C0E941A2C8E
+:105640008093020380EE0E94AC2A882341F080916F
+:105650000203982F909590FB80F98093020389E3D1
+:105660000E94AC2A882359F09091020391FB88276D
+:1056700080F921E0822780FB91F99093020382EE6A
+:105680000E94AC2A882359F09091020392FB88274C
+:1056900080F921E0822780FB92F99093020386EE45
+:1056A0000E94AC2A882359F09091020393FB88272B
+:1056B00080F921E0822780FB93F99093020383EE27
+:1056C0000E94AC2A882359F09091020394FB88270A
+:1056D00080F921E0822780FB94F99093020385E30F
+:1056E0000E94AC2A882359F09091020395FB8827E9
+:1056F00080F921E0822780FB95F99093020381E3F2
+:105700000E94AC2A882359F09091020396FB8827C7
+:1057100080F921E0822780FB96F99093020381E1D2
+:105720000E94AC2A882359F09091020397FB8827A6
+:1057300080F921E0822780FB97F990930203809102
+:1057400002030E941E2C87E20E94AC2AC82F8EE121
+:105750000E94AC2A8111C2608FE10E94AC2A8111A3
+:10576000C46080E20E94AC2A8111C86081E20E947C
+:10577000AC2A8111C06182E20E94AC2A8111C06210
+:1057800083E20E94AC2A8111C06484E20E94AC2AA8
+:10579000882311F0C06802C0CC2329F08C2F0E940E
+:1057A000152C6C2F03C00E94112C682F70E080E034
+:1057B00090E0CF910C949627CF9108956DEE7EEFF7
+:1057C00080E090E00E94CC3460E082E090E00E94B3
+:1057D000BE3460E083E090E00E94BE3460E084E08C
+:1057E00090E00E94BE3460E085E090E00E94BE340C
+:1057F00060E086E090E00C94BE3480E090E00E948F
+:10580000B83421E08D3E9E4F09F020E0822F0895AC
+:1058100082E090E00C94B034682F82E090E00C9429
+:10582000BE3483E090E00C94B034682F83E090E0C5
+:105830000C94BE3484E090E00C94B034682F84E083
+:1058400090E00C94BE3486E090E00C94B034682F65
+:1058500086E090E00C94BE348091FF0280FF0BC084
+:105860006091900185E0689FB0011124759567955E
+:10587000759567952AC081FF09C06091900185E008
+:10588000689FB0011124759567951FC082FF07C0FE
+:105890006091900185E0689FB001112416C040918D
+:1058A000F9024423C9F060918F01461788F72091CF
+:1058B000900185E0289F90011124429FC001439FE1
+:1058C000900D112470E00E949C346038710540F402
+:1058D0006115710539F002C065E070E0862F08950A
+:1058E0008FE7089581E008958091FF0280FF08C04E
+:1058F00060918E0170E0759567957595679521C0EB
+:1059000081FF06C060918E0170E07595679519C0A2
+:1059100082FF04C060918E0170E010C08091F90296
+:105920008823C1F060918D018617A0F790918E01B8
+:10593000989FC001112470E00E949C34603871056A
+:1059400028F46115710521F0862F08958FE70895D9
+:1059500081E0089561E070E0F4CF803F21F40E947F
+:105960002C2C819504C0813F29F40E942C2C80931B
+:10597000FC020895823F21F40E942C2C819504C0E2
+:10598000833F29F40E942C2C8093FB020895893FC9
+:1059900019F40E94742C05C08A3F31F40E94742CC3
+:1059A00081958093FD0208958B3F21F40E94742C11
+:1059B000819504C08C3F29F40E94742C8093FE02D0
+:1059C0000895843F21F48091FA02816017C0853FD9
+:1059D00021F48091FA02826011C0863F21F4809107
+:1059E000FA0284600BC0873F21F48091FA0288603C
+:1059F00005C0883F31F48091FA0280618093FA02F9
+:105A000008958D3F21F48091FF0281600BC08E3F8D
+:105A100021F48091FF02826005C08F3F29F48091BC
+:105A2000FF0284608093FF020895803F29F48091F3
+:105A3000FC0287FF6EC007C0813F41F48091FC02E9
+:105A400018160CF066C01092FC0263C09091FB0225
+:105A5000823F19F497FF5DC005C0833F31F41916EA
+:105A60000CF057C01092FB0254C0893F31F4809172
+:105A7000FD0218160CF04DC006C08A3F39F4809123
+:105A8000FD0287FF46C01092FD0243C08B3F29F400
+:105A90008091FE0287FF3DC006C08C3F39F48091A3
+:105AA000FE021816B4F51092FE0233C0843F21F4B2
+:105AB0008091FA028E7F05C0853F31F48091FA0211
+:105AC0008D7F8093FA0225C0863F21F48091FA02EF
+:105AD0008B7FF7CF873F21F48091FA02877FF1CF48
+:105AE000883F21F48091FA028F7EEBCF8D3F21F425
+:105AF0008091FF028E7F0BC08E3F21F48091FF02C8
+:105B00008D7F05C08F3F29F48091FF028B7F8093AA
+:105B1000FF028091FB0281110EC08091FC02811175
+:105B20000AC08091FD02811106C08091FE028111A0
+:105B300002C01092F90208958AEF92E00E94641D5B
+:105B40000E94EF299093F8028093F7020895CF9373
+:105B50008091F7029091F8020E94FC294091F9028D
+:105B6000442321F02091910130E006C02091920160
+:105B70005AE0259F900111248217930708F486C0EC
+:105B80008091FB0281110DC09091FC02911109C01E
+:105B90009091FD02911105C09091FE02992309F4A4
+:105BA00075C04F3F19F04F5F4093F902181624F467
+:105BB0000E942C2C8093FB028091FB0287FF05C082
+:105BC0000E942C2C81958093FB028091FC02181678
+:105BD00024F40E942C2C8093FC028091FC0287FF0D
+:105BE00005C00E942C2C81958093FC026091FB02E1
+:105BF000662339F1C091FC02CC2319F1772767FDA8
+:105C00007095872F972F0E94003223E333E343E3FD
+:105C10005FE30E94B4320E94CD316093FB026C2F8F
+:105C2000772767FD7095872F972F0E94003223E317
+:105C300033E343E35FE30E94B4320E94CD316093CB
+:105C4000FC028091FD02181624F40E94742C8093AB
+:105C5000FD028091FD0287FF05C00E94742C819592
+:105C60008093FD028091FE02181624F40E94742C89
+:105C70008093FE028091FE0287FF05C00E94742C73
+:105C800081958093FE02CF910C949C2DCF91089525
+:105C9000EAEFF2E085E0DF011D928A95E9F71092C4
+:105CA000F9021092FF020895833089F130F48130B7
+:105CB00061F0823009F06EC019C0853009F449C026
+:105CC000B8F1863009F066C055C020919201862F48
+:105CD00090E0820F911D8F3F910520F4620F609339
+:105CE000920108958FEF8093920108952091910180
+:105CF000862F90E0820F911D8F3F910520F4620F57
+:105D00006093910108958FEF809391010895209100
+:105D10009001862F90E0820F911D8F3F910520F416
+:105D2000620F6093900108958FEF80939001089522
+:105D300020918F01862F90E0820F911D8F3F91055A
+:105D400020F4620F60938F0108958FEF80938F018D
+:105D5000089520918E01862F90E0820F911D8F3F34
+:105D6000910520F4620F60938E0108958FEF809368
+:105D70008E01089520918D01862F90E0820F911D54
+:105D80008F3F910520F4620F60938D0108958FEF8E
+:105D900080938D010895833021F130F4813059F0E2
+:105DA000823009F049C012C0853089F128F186306F
+:105DB00009F042C037C080919201681720F4861B19
+:105DC000809392010895109292010895809191011B
+:105DD000681720F4861B8093910108951092910119
+:105DE000089580919001681720F4861B809390019C
+:105DF000089510929001089580918F01681720F402
+:105E0000861B80938F01089510928F0108958091D1
+:105E10008E01681720F4861B80938E0108951092DE
+:105E20008E01089580918D01681720F4861B809360
+:105E30008D01089510928D01089541E050E060E0D9
+:105E400070E004C0440F551F661F771F8A95D2F774
+:105E5000CB01BA010E9496270C948B23873200F560
+:105E60008E3108F089C08E3009F469C060F4873043
+:105E700009F44DC018F4863049F531C0883041F13D
+:105E80008B3021F57EC0863109F47BC018F4803157
+:105E9000E9F45FC0893109F474C08B31B9F445C0AD
+:105EA000883309F46EC048F4893209F467C0853339
+:105EB00009F464C0873251F461C0833409F45EC0D0
+:105EC00018F48A3318F056C0883499F080E00895A9
+:105ED0000E94082C0E941A2C0E94232C52C08091F0
+:105EE000F102817F8E7F8093F10281E08093000335
+:105EF00008950E948B232FEF83ED90E32150804083
+:105F00009040E1F700C000000E944F2A3AC09091F3
+:105F1000F102892F8095817080FB90F919F09660CD
+:105F2000986025C0997F977F22C09091F10291FBE4
+:105F3000882780F921E0822780FB91F913C0909196
+:105F4000F10292FB882780F921E0822780FB92F9F9
+:105F500009C09091F10293FB882780F921E0822704
+:105F600080FB93F99093F102882359F0916090930C
+:105F7000F10207C0895303C08D5101C080E00E9427
+:105F80001D2F81E0089580E0089580E00895CF936B
+:105F9000C82F80910003813071F020F0823009F029
+:105FA00089C037C0A0918B01B0918C018C91823255
+:105FB00009F082C007C0A0918B01B0918C018C9137
+:105FC000823249F48C2F0E94C32F81111EC08C2F66
+:105FD0000E942E2F1CC08C2F0E94C52F811115C02E
+:105FE000C43169F030F4CB3081F0C03109F068C0C1
+:105FF00009C0C93221F0C83309F062C006C010924E
+:1060000000035EC082E08093000381E090E0817035
+:106010005AC0C932C9F060F4C431B1F020F4C730BD
+:1060200009F04CC034C0CE51C63008F047C017C08C
+:10603000CE3439F120F4CB3409F040C01CC0C13556
+:10604000C1F0C235D9F513C080910103882319F03E
+:106050001092010333C081E08093000334C0EC2F21
+:10606000F0E0E25EFD4F80818093010327C061E094
+:1060700003C061E007C06AE0809101030E94542ED2
+:106080001DC06AE0809101030E94CB2E17C08EE1F3
+:106090008093920182E3809391018AE08093900142
+:1060A00084E180938F0188E080938E0188E2809361
+:1060B0008D0104C01092000380E005C081E003C0A0
+:1060C00080E090E0A4CFCF9108950E94FD2B811134
+:1060D00002C00E94DE2B0E94232C8093040480FFC8
+:1060E00002C0869501C080E00C949B03809104045B
+:1060F000982F9695292F30E0233031054CF49F5F7F
+:10610000990F8170892B8160809304040E94272C51
+:106110008091040486950C949B0380910404982F2D
+:10612000969591F09158990F8170892B8093040472
+:106130008E7F91E009F490E08091040490FB80F957
+:10614000809304040E94272C8091040486950C946B
+:106150009B0380910404982F909590FB80F9809385
+:1061600004040E94272C8091040480FF02C08695BD
+:1061700001C080E00C949B0330910404232F2695EA
+:106180002F5F2F77822F90E0317004972CF4220F2D
+:10619000232B2093040402C0309304048091040450
+:1061A000282F2E7F91E009F490E090FB80F98093F6
+:1061B00004040E94272C8091040486950C949B0370
+:1061C00020910404922F96959827990F822F817021
+:1061D000892B809304048E7F91E009F490E08091F4
+:1061E000040490FB80F9809304040E94272C809182
+:1061F000040486950C949B035058BB27AA270ED005
+:1062000075C166D130F06BD120F031F49F3F11F4AD
+:106210001EF45BC10EF4E095E7FB51C1E92F77D185
+:1062200080F3BA17620773078407950718F071F4B3
+:106230009EF58FC10EF4E0950B2EBA2FA02D0B0109
+:10624000B90190010C01CA01A0011124FF27591BBB
+:1062500099F0593F50F4503E68F11A16F040A22FC1
+:10626000232F342F4427585FF3CF46953795279532
+:10627000A795F0405395C9F77EF41F16BA0B620B31
+:10628000730B840BBAF09150A1F0FF0FBB1F661F78
+:10629000771F881FC2F70EC0BA0F621F731F841FBB
+:1062A00048F4879577956795B795F7959E3F08F0E1
+:1062B000B3CF9395880F08F09927EE0F97958795A0
+:1062C0000895D9D008F481E008950CD00FC107D10A
+:1062D00040F0FED030F021F45F3F19F0F0C05111D2
+:1062E00039C1F3C014D198F39923C9F35523B1F3FD
+:1062F000951B550BBB27AA2762177307840738F035
+:106300009F5F5F4F220F331F441FAA1FA9F333D093
+:106310000E2E3AF0E0E830D091505040E695001C47
+:10632000CAF729D0FE2F27D0660F771F881FBB1F03
+:10633000261737074807AB07B0E809F0BB0B802DDD
+:10634000BF01FF2793585F4F2AF09E3F510568F029
+:10635000B6C000C15F3FECF3983EDCF386957795BD
+:106360006795B795F7959F5FC9F7880F911D96952B
+:10637000879597F90895E1E0660F771F881FBB1F87
+:10638000621773078407BA0720F0621B730B840B34
+:10639000BA0BEE1F88F7E095089504D06894B11108
+:1063A000D9C00895BCD088F09F5790F0B92F992795
+:1063B000B751A0F0D1F0660F771F881F991F1AF010
+:1063C000BA95C9F712C0B13081F0C3D0B1E00895D9
+:1063D000C0C0672F782F8827B85F39F0B93FCCF35A
+:1063E000869577956795B395D9F73EF49095809506
+:1063F000709561957F4F8F4F9F4F0895E89409C026
+:1064000097FB3EF490958095709561957F4F8F4FE7
+:106410009F4F9923A9F0F92F96E9BB279395F695FD
+:10642000879577956795B795F111F8CFFAF4BB0F7B
+:1064300011F460FF1BC06F5F7F4F8F4F9F4F16C0DF
+:10644000882311F096E911C0772321F09EE8872F69
+:10645000762F05C0662371F096E8862F70E060E025
+:106460002AF09A95660F771F881FDAF7880F96959E
+:10647000879597F90895990F0008550FAA0BE0E842
+:10648000FEEF16161706E807F907C0F012161306F6
+:10649000E407F50798F0621B730B840B950B39F436
+:1064A0000A2661F0232B242B252B21F408950A269C
+:1064B00009F4A140A6958FEF811D811D089597F9DC
+:1064C0009F6780E870E060E008959FEF80EC08959A
+:1064D00000240A94161617061806090608950024C3
+:1064E0000A9412161306140605060895092E03943D
+:1064F000000C11F4882352F0BB0F40F4BF2B11F4B1
+:1065000060FF04C06F5F7F4F8F4F9F4F089557FD0F
+:106510009058440F551F59F05F3F71F04795880F11
+:1065200097FB991F61F09F3F79F0879508951216A8
+:1065300013061406551FF2CF4695F1DF08C0161654
+:1065400017061806991FF1CF869571056105089405
+:106550000895E894BB2766277727CB0197F908951C
+:106560008ADF08F48FEF08950BD0C0CFB1DF28F099
+:10657000B6DF18F0952309F0A2CFA7CF1124EACFF8
+:10658000C6DFA0F3959FD1F3950F50E0551F629F92
+:10659000F001729FBB27F00DB11D639FAA27F00D7C
+:1065A000B11DAA1F649F6627B00DA11D661F829FA3
+:1065B0002227B00DA11D621F739FB00DA11D621F88
+:1065C000839FA00D611D221F749F3327A00D611DA5
+:1065D000231F849F600D211D822F762F6A2F112487
+:1065E0009F5750408AF0E1F088234AF0EE0FFF1FDA
+:1065F000BB1F661F771F881F91505040A9F79E3F11
+:10660000510570F05CCFA6CF5F3FECF3983EDCF312
+:10661000869577956795B795F795E7959F5FC1F74D
+:10662000FE2B880F911D9695879597F90895FA018D
+:10663000EE0FFF1F30962105310599F161157105A7
+:1066400061F48038BFE39B0749F168949038810575
+:1066500061F08038BFEF9B0741F0992342F5FF3F7F
+:10666000E1053105210511F1E8940894E795D90178
+:10667000AA2329F4AB2FBE2FF85FD0F310C0FF5F21
+:1066800070F4A695E0F7F73950F019F0FF3A38F4B6
+:106690009F779F930CD00F9007FC905808953EF081
+:1066A00014CF60E070E080E89FE308954FE79F77A4
+:1066B0005F934F933F932F939ED02F913F914F9194
+:1066C0005F9152DF05C019F40EF0F9CE42CFFDCE36
+:1066D00026DFC8F39638C0F707F80F92E8942BE34B
+:1066E0003AEA48EB5FE74EDF0F920F920F924DB7F9
+:1066F0005EB70F92C0D0ECEAF0E016D04F915F91F8
+:10670000EF91FF91E595EE1FFF1F49F0FE57E068FE
+:106710004427EE0F441FFA95E1F74195550B32D00F
+:106720000F9007FE26C00895DF93CF931F930F931A
+:10673000FF92EF92DF927B018C01689405C0DA2E04
+:10674000EF011EDFFE01E894A59125913591459159
+:106750005591AEF3EF0162DDFE019701A801DA94D5
+:1067600079F7DF90EF90FF900F911F91CF91DF911C
+:1067700008959B01AC0160E070E080E89FE3A5CD47
+:106780009ECEACC0CCDEE8F39923D9F3940F511D13
+:10679000BBF39150504094F059F0882332F0660FCB
+:1067A000771F881F91505040C1F79E3F510544F715
+:1067B000880F911D9695879597F908955F3FACF0E6
+:1067C000983E9CF0BB27869577956795B79508F41A
+:1067D000B1609395C1F7BB0F58F711F460FFE8CF94
+:1067E0006F5F7F4F8F4F9F4FE3CFB4CE0EF076C0D9
+:1067F0006CCE689464CE93DEC8F39923D1F3C6F3CC
+:10680000DF93CF931F930F93FF92C92FDD27882328
+:106810002AF02197660F771F881FDAF720E030E013
+:1068200040E85FEB9FE3883920F0803E30F021960E
+:106830008F77E3DCE4EDF0E003C0DFDCE1E0F1E0E2
+:1068400073DF8B01BE01EC01FB2E6F57710975954B
+:10685000771F880B990BD4DD28E132E741E35FE332
+:106860008FDEAF2D9801AE01FF900F911F91CF9158
+:10687000DF91D4DC3BCEFA01DC01AA0FBB1F9B01E8
+:10688000AC01BF5728F422273327442750781FC074
+:10689000B75188F4AB2F0024469537952795011CF6
+:1068A000A395D2F3002069F0220F331F441FB39544
+:1068B000DAF30DD0A1CC61307105A0E88A07B946A2
+:1068C00030F49B01AC0166277727882790783096B3
+:1068D00021F0208331834283538308959F3F31F019
+:1068E000915020F4879577956795B795880F911DFE
+:1068F0009695879597F90895991B79E004C0991F9B
+:10690000961708F0961B881F7A95C9F78095089509
+:10691000AA1BBB1B51E107C0AA1FBB1FA617B707C5
+:1069200010F0A61BB70B881F991F5A95A9F78095E1
+:106930009095BC01CD01089597FB072E16F40094A5
+:1069400007D077FD09D00E94883407FC05D03EF4BB
+:10695000909581959F4F0895709561957F4F08950B
+:10696000F999FECF92BD81BDF89A992780B5089517
+:10697000A8E1B0E042E050E00C94D334262FF9991E
+:10698000FECF1FBA92BD81BD20BD0FB6F894FA9A12
+:10699000F99A0FBE019608950E94BE34272F0C94D9
+:1069A000BF34DC01CB01FC01F999FECF06C0F2BD7A
+:1069B000E1BDF89A319600B40D9241505040B8F7BD
+:0669C0000895F894FFCFDA
+:1069C60055D0A446000016440000000000004842CE
+:1069D60061978A460000C843000000000000484254
+:1069E60055D024460000C84300000000000048427D
+:1069F60000005C460000C84300000000000048425A
+:106A060061978A4600007A4455D0A4460000C843E0
+:106A1600000000000000484200005C460000C84339
+:106A2600000000000000484255D0244600001644ED
+:106A36000507000C05854000000106400000010026
+:106A4600B91049112511F010BC1001E902280814EB
+:106A56000A321E4200450025002600430061006000
+:106A660000200037006400650066006700440046A9
+:106A7600002400470000000200040005000700098A
+:106A8600000B000C000E001000110013001500177B
+:106A96000018001A001C001D001F002100230024FE
+:106AA600002600280029002B002D002F0030003280
+:106AB6000034003500370039003B006E048704A01F
+:106AC60004B904E10594055E053E053F4D362002F6
+:106AD60003020000010001010101010001010102A0
+:086AE60003040506070809007E
+:00000001FF
diff --git a/quantum/audio.c b/quantum/audio.c
index 3a3a1a491..f29d941d7 100644
--- a/quantum/audio.c
+++ b/quantum/audio.c
@@ -247,6 +247,9 @@ ISR(TIMER3_COMPA_vect) {
if (note_frequency > 0) {
ICR3 = (int)(((double)F_CPU) / note_frequency); // Set max to the period
OCR3A = (int)(((double)F_CPU) / note_frequency) >> 1; // Set compare to half the period
+ } else {
+ ICR3 = 0;
+ OCR3A = 0;
}
#endif
diff --git a/quantum/keymap_extras/keymap_german_osx.h b/quantum/keymap_extras/keymap_german_osx.h
index da91b4bf4..d0b77fb80 100644
--- a/quantum/keymap_extras/keymap_german_osx.h
+++ b/quantum/keymap_extras/keymap_german_osx.h
@@ -9,92 +9,92 @@
// Alt gr
// normal characters
-#define DE_Z KC_Y
-#define DE_Y KC_Z
+#define DE_OSX_Z KC_Y
+#define DE_OSX_Y KC_Z
-#define DE_A KC_A
-#define DE_B KC_B
-#define DE_C KC_C
-#define DE_D KC_D
-#define DE_E KC_E
-#define DE_F KC_F
-#define DE_G KC_G
-#define DE_H KC_H
-#define DE_I KC_I
-#define DE_J KC_J
-#define DE_K KC_K
-#define DE_L KC_L
-#define DE_M KC_M
-#define DE_N KC_N
-#define DE_O KC_O
-#define DE_P KC_P
-#define DE_Q KC_Q
-#define DE_R KC_R
-#define DE_S KC_S
-#define DE_T KC_T
-#define DE_U KC_U
-#define DE_V KC_V
-#define DE_W KC_W
-#define DE_X KC_X
+#define DE_OSX_A KC_A
+#define DE_OSX_B KC_B
+#define DE_OSX_C KC_C
+#define DE_OSX_D KC_D
+#define DE_OSX_E KC_E
+#define DE_OSX_F KC_F
+#define DE_OSX_G KC_G
+#define DE_OSX_H KC_H
+#define DE_OSX_I KC_I
+#define DE_OSX_J KC_J
+#define DE_OSX_K KC_K
+#define DE_OSX_L KC_L
+#define DE_OSX_M KC_M
+#define DE_OSX_N KC_N
+#define DE_OSX_O KC_O
+#define DE_OSX_P KC_P
+#define DE_OSX_Q KC_Q
+#define DE_OSX_R KC_R
+#define DE_OSX_S KC_S
+#define DE_OSX_T KC_T
+#define DE_OSX_U KC_U
+#define DE_OSX_V KC_V
+#define DE_OSX_W KC_W
+#define DE_OSX_X KC_X
-#define DE_0 KC_0
-#define DE_1 KC_1
-#define DE_2 KC_2
-#define DE_3 KC_3
-#define DE_4 KC_4
-#define DE_5 KC_5
-#define DE_6 KC_6
-#define DE_7 KC_7
-#define DE_8 KC_8
-#define DE_9 KC_9
+#define DE_OSX_0 KC_0
+#define DE_OSX_1 KC_1
+#define DE_OSX_2 KC_2
+#define DE_OSX_3 KC_3
+#define DE_OSX_4 KC_4
+#define DE_OSX_5 KC_5
+#define DE_OSX_6 KC_6
+#define DE_OSX_7 KC_7
+#define DE_OSX_8 KC_8
+#define DE_OSX_9 KC_9
-#define DE_DOT KC_DOT
-#define DE_COMM KC_COMM
+#define DE_OSX_DOT KC_DOT
+#define DE_OSX_COMM KC_COMM
-#define DE_SS KC_MINS
-#define DE_AE KC_QUOT
-#define DE_UE KC_LBRC
-#define DE_OE KC_SCLN
+#define DE_OSX_SS KC_MINS
+#define DE_OSX_AE KC_QUOT
+#define DE_OSX_UE KC_LBRC
+#define DE_OSX_OE KC_SCLN
-#define DE_CIRC KC_NUBS // accent circumflex ^ and ring °
-#define DE_ACUT KC_EQL // accent acute ´ and grave `
-#define DE_PLUS KC_RBRC // + and * and ~
-#define DE_HASH KC_BSLS // # and '
-#define DE_LESS KC_GRV // < and > and |
-#define DE_MINS KC_SLSH // - and _
+#define DE_OSX_CIRC KC_NUBS // accent circumflex ^ and ring °
+#define DE_OSX_ACUT KC_EQL // accent acute ´ and grave `
+#define DE_OSX_PLUS KC_RBRC // + and * and ~
+#define DE_OSX_HASH KC_BSLS // # and '
+#define DE_OSX_LESS KC_GRV // < and > and |
+#define DE_OSX_MINS KC_SLSH // - and _
// shifted characters
-#define DE_RING LSFT(DE_CIRC) // °
-#define DE_EXLM LSFT(KC_1) // !
-#define DE_DQOT LSFT(KC_2) // "
-#define DE_PARA LSFT(KC_3) // §
-#define DE_DLR LSFT(KC_4) // $
-#define DE_PERC LSFT(KC_5) // %
-#define DE_AMPR LSFT(KC_6) // &
-#define DE_SLSH LSFT(KC_7) // /
-#define DE_LPRN LSFT(KC_8) // (
-#define DE_RPRN LSFT(KC_9) // )
-#define DE_EQL LSFT(KC_0) // =
-#define DE_QST LSFT(DE_SS) // ?
-#define DE_GRV LSFT(DE_ACUT) // `
-#define DE_ASTR LSFT(DE_PLUS) // *
-#define DE_QUOT LSFT(DE_HASH) // '
-#define DE_MORE LSFT(DE_LESS) // >
-#define DE_COLN LSFT(KC_DOT) // :
-#define DE_SCLN LSFT(KC_COMM) // ;
-#define DE_UNDS LSFT(DE_MINS) // _
+#define DE_OSX_RING LSFT(DE_OSX_CIRC) // °
+#define DE_OSX_EXLM LSFT(KC_1) // !
+#define DE_OSX_DQOT LSFT(KC_2) // "
+#define DE_OSX_PARA LSFT(KC_3) // §
+#define DE_OSX_DLR LSFT(KC_4) // $
+#define DE_OSX_PERC LSFT(KC_5) // %
+#define DE_OSX_AMPR LSFT(KC_6) // &
+#define DE_OSX_SLSH LSFT(KC_7) // /
+#define DE_OSX_LPRN LSFT(KC_8) // (
+#define DE_OSX_RPRN LSFT(KC_9) // )
+#define DE_OSX_EQL LSFT(KC_0) // =
+#define DE_OSX_QST LSFT(DE_OSX_SS) // ?
+#define DE_OSX_GRV LSFT(DE_OSX_ACUT) // `
+#define DE_OSX_ASTR LSFT(DE_OSX_PLUS) // *
+#define DE_OSX_QUOT LSFT(DE_OSX_HASH) // '
+#define DE_OSX_MORE LSFT(DE_OSX_LESS) // >
+#define DE_OSX_COLN LSFT(KC_DOT) // :
+#define DE_OSX_SCLN LSFT(KC_COMM) // ;
+#define DE_OSX_UNDS LSFT(DE_OSX_MINS) // _
// Alt-ed characters
-#define DE_SQ2 LALT(KC_2) // ²
-#define DE_SQ3 LALT(KC_3) // ³
-#define DE_LCBR LALT(KC_8) // {
-#define DE_LBRC LALT(KC_5) // [
-#define DE_RBRC LALT(KC_6) // ]
-#define DE_RCBR LALT(KC_9) // }
-#define DE_BSLS LALT(LSFT(KC_7)) // backslash
-#define DE_AT LALT(DE_L) // @
-#define DE_EURO LALT(KC_E) // €
-#define DE_TILD LALT(DE_N) // ~
-#define DE_PIPE LALT(DE_7) // |
+#define DE_OSX_SQ2 LALT(KC_2) // ²
+#define DE_OSX_SQ3 LALT(KC_3) // ³
+#define DE_OSX_LCBR LALT(KC_8) // {
+#define DE_OSX_LBRC LALT(KC_5) // [
+#define DE_OSX_RBRC LALT(KC_6) // ]
+#define DE_OSX_RCBR LALT(KC_9) // }
+#define DE_OSX_BSLS LALT(LSFT(KC_7)) // backslash
+#define DE_OSX_AT LALT(DE_OSX_L) // @
+#define DE_OSX_EURO LALT(KC_E) // €
+#define DE_OSX_TILD LALT(DE_OSX_N) // ~
+#define DE_OSX_PIPE LALT(DE_OSX_7) // |
#endif
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index 2ccc0e0b9..f9e6c17dc 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -53,6 +53,22 @@ void action_exec(keyevent_t event)
#endif
}
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+bool disable_action_cache = false;
+
+void process_action_nocache(keyrecord_t *record)
+{
+ disable_action_cache = true;
+ process_action(record);
+ disable_action_cache = false;
+}
+#else
+void process_action_nocache(keyrecord_t *record)
+{
+ process_action(record);
+}
+#endif
+
__attribute__ ((weak))
void process_action_kb(keyrecord_t *record) {}
@@ -67,7 +83,7 @@ void process_action(keyrecord_t *record)
process_action_kb(record);
- action_t action = layer_switch_get_action(event.key);
+ action_t action = store_or_get_action(event.pressed, event.key);
dprint("ACTION: "); debug_action(action);
#ifndef NO_ACTION_LAYER
dprint(" layer_state: "); layer_debug();
@@ -88,14 +104,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();
}
}
diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h
index 9f528af4b..44ec3047b 100644
--- a/tmk_core/common/action.h
+++ b/tmk_core/common/action.h
@@ -62,6 +62,10 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt);
void process_action_kb(keyrecord_t *record);
/* Utilities for actions. */
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+extern bool disable_action_cache;
+#endif
+void process_action_nocache(keyrecord_t *record);
void process_action(keyrecord_t *record);
void register_code(uint8_t code);
void unregister_code(uint8_t code);
diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c
index c535615f4..fc721a732 100644
--- a/tmk_core/common/action_layer.c
+++ b/tmk_core/common/action_layer.c
@@ -110,9 +110,71 @@ void layer_debug(void)
}
#endif
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+uint8_t source_layers_cache[MAX_LAYER_BITS][(MATRIX_ROWS * MATRIX_COLS + 7) / 8] = {0};
+void update_source_layers_cache(keypos_t key, uint8_t layer)
+{
+ const uint8_t key_number = key.col + (key.row * MATRIX_COLS);
+ const uint8_t storage_row = key_number / 8;
+ const uint8_t storage_bit = key_number % 8;
-action_t layer_switch_get_action(keypos_t key)
+ for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) {
+ source_layers_cache[bit_number][storage_row] ^=
+ (-((layer & (1U << bit_number)) != 0)
+ ^ source_layers_cache[bit_number][storage_row])
+ & (1U << storage_bit);
+ }
+}
+
+uint8_t read_source_layers_cache(keypos_t key)
+{
+ const uint8_t key_number = key.col + (key.row * MATRIX_COLS);
+ const uint8_t storage_row = key_number / 8;
+ const uint8_t storage_bit = key_number % 8;
+ uint8_t layer = 0;
+
+ for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) {
+ layer |=
+ ((source_layers_cache[bit_number][storage_row]
+ & (1U << storage_bit)) != 0)
+ << bit_number;
+ }
+
+ return layer;
+}
+#endif
+
+/*
+ * Make sure the action triggered when the key is released is the same
+ * one as the one triggered on press. It's important for the mod keys
+ * when the layer is switched after the down event but before the up
+ * event as they may get stuck otherwise.
+ */
+action_t store_or_get_action(bool pressed, keypos_t key)
+{
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+ if (disable_action_cache) {
+ return layer_switch_get_action(key);
+ }
+
+ uint8_t layer;
+
+ if (pressed) {
+ layer = layer_switch_get_layer(key);
+ update_source_layers_cache(key, layer);
+ }
+ else {
+ layer = read_source_layers_cache(key);
+ }
+ return action_for_key(layer, key);
+#else
+ return layer_switch_get_action(key);
+#endif
+}
+
+
+int8_t layer_switch_get_layer(keypos_t key)
{
action_t action;
action.code = ACTION_TRANSPARENT;
@@ -124,15 +186,18 @@ action_t layer_switch_get_action(keypos_t key)
if (layers & (1UL<<i)) {
action = action_for_key(i, key);
if (action.code != ACTION_TRANSPARENT) {
- return action;
+ return i;
}
}
}
/* fall back to layer 0 */
- action = action_for_key(0, key);
- return action;
+ return 0;
#else
- action = action_for_key(biton32(default_layer_state), key);
- return action;
+ return biton32(default_layer_state);
#endif
}
+
+action_t layer_switch_get_action(keypos_t key)
+{
+ return action_for_key(layer_switch_get_layer(key), key);
+}
diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h
index b6da353cf..3a4b1e334 100644
--- a/tmk_core/common/action_layer.h
+++ b/tmk_core/common/action_layer.h
@@ -70,6 +70,17 @@ void layer_xor(uint32_t state);
#define layer_debug()
#endif
+/* pressed actions cache */
+#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
+/* The number of bits needed to represent the layer number: log2(32). */
+#define MAX_LAYER_BITS 5
+void update_source_layers_cache(keypos_t key, uint8_t layer);
+uint8_t read_source_layers_cache(keypos_t key);
+#endif
+action_t store_or_get_action(bool pressed, keypos_t key);
+
+/* return the topmost non-transparent layer currently associated with key */
+int8_t layer_switch_get_layer(keypos_t key);
/* return action depending on current layer status */
action_t layer_switch_get_action(keypos_t key);