From 5daf24b1a5e2d6b07c90b87d9225db4d28aa2aa2 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Wed, 4 May 2016 22:17:47 -0500 Subject: The Ordinary Layout is the most natural and powerful layout for the Ergodox EZ. Come check it out. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 104 +- .../ergodox_ez/keymaps/ordinary/ordinary-base.png | Bin 99031 -> 100472 bytes .../ergodox_ez/keymaps/ordinary/ordinary-base.txt | 10 +- .../ergodox_ez/keymaps/ordinary/ordinary-media.png | Bin 123651 -> 124173 bytes .../ergodox_ez/keymaps/ordinary/ordinary-media.txt | 4 +- .../keymaps/ordinary/ordinary-symbol.png | Bin 103944 -> 103677 bytes .../keymaps/ordinary/ordinary-symbol.txt | 2 +- keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex | 2411 ++++++++++---------- keyboard/ergodox_ez/keymaps/ordinary/readme.md | 2 +- 9 files changed, 1284 insertions(+), 1249 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 871bda672..6905cbc7a 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -4,25 +4,27 @@ #include "action_layer.h" #include "action_util.h" -#define BASE 0 // default layer -#define SYMB 1 // symbols layer -#define MDIA 2 // media layer -#define LOCK 3 // shift-lock layer - -#define LSymb 0 // left symbol-shift key -#define LMdia 1 // left media-shift key -#define LLock 2 // left shift-lock key -#define RSymb 3 // right symbol-shift key -#define RMdia 4 // right media-shift key -#define RLock 5 // right shift-lock key - -#define MUL 6 // mouse up left -#define MUR 7 // mouse up right -#define MDL 8 // mouse down left -#define MDR 9 // mouse down right +#define BASE 0 // default layer +#define SYMB 1 // symbols layer +#define MDIA 2 // media layer +#define LOCK 3 // shift-lock layer + +#define LCaps 10 // left caps-shift key +#define LSymb 11 // left symbol-shift key +#define LMdia 12 // left media-shift key +#define LLock 13 // left shift-lock key +#define RCaps 20 // right caps-shift key +#define RSymb 21 // right symbol-shift key +#define RMdia 22 // right media-shift key +#define RLock 23 // right shift-lock key + +#define MUL 30 // mouse up left +#define MUR 31 // mouse up right +#define MDL 32 // mouse down left +#define MDR 33 // mouse down right /* - * The Ordinary Layout for the Ergodox EZ keyboard, v3.14 + * The Ordinary Layout for the Ergodox EZ keyboard, v3.141 * * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com * @@ -41,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol | * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------| - * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift | + * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | LShift | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | * `-----------------------------------' `-----------------------------------' @@ -50,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,------|------|------| |------+------+------. * | | | PgUp | | Up | | | * |Backsp| Del |------| |------| Enter| Space| - * | | | PgDn | | Down | | | + * | | | PgDn | | Down | | |Aa * `--------------------' `--------------------' */ [BASE] = KEYMAP( @@ -58,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { F(LLock) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC ,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,M(LSymb) ,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) +,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) ,KC_LCTL ,KC_MEH ,KC_HYPR,KC_LALT,KC_LGUI ,KC_HOME,KC_END ,KC_PGUP @@ -67,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RLock) ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb) - ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT + ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps) ,KC_RGUI,KC_RALT,KC_HYPR ,KC_MEH ,KC_RCTL ,KC_LEFT ,KC_RGHT ,KC_UP @@ -125,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------| * | | Sleep |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | MyComp | | * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------| - * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | | + * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | RShift | | * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------' * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl| * `---------------------------------------------' `---------------------------------------------' @@ -151,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS ,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_MAIL ,KC_TRNS ,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_TRNS - ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS + ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_RSFT ,KC_TRNS ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL ,KC_MPRV ,KC_MNXT ,KC_VOLU @@ -213,6 +215,7 @@ const uint16_t PROGMEM fn_actions[] = { ,[RLock] = ACTION_MACRO_TAP(RLock) }; +uint16_t caps_shift = 0; uint16_t symb_shift = 0; // there are two shift keys for each layer, and two lock uint16_t mdia_shift = 0; // keys; we increment a counter for each key pressed and uint16_t shift_lock = 0; // decrement when released. @@ -223,15 +226,30 @@ bool mdia_lock = false; // key the lock flag is toggled const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - // shift and lock between layers + // shift and lock between layers?L? + + case LCaps: // both caps-shift keys trigger Left Shift + case RCaps: // so they don't interfere with the magic combo + if (record->event.pressed && !record->tap.count) { + if(++caps_shift > 2) caps_shift = 2; + if(shift_lock) { + register_code(KC_CAPS); + unregister_code(KC_CAPS); + } + register_code(KC_LSFT); + } else { + if(--caps_shift < 0) caps_shift = 0; + if(!caps_shift) unregister_code(KC_LSFT); + } + break; case LSymb: if (record->event.pressed) { - symb_shift++; + if(++symb_shift > 2) symb_shift = 2; if(shift_lock) symb_lock = !symb_lock; layer_on(SYMB); } else { - symb_shift--; + if(--symb_shift < 0) symb_shift = 0; if((!symb_shift) && (!symb_lock)) layer_off(SYMB); } break; @@ -241,7 +259,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_TAB); } else { - mdia_shift++; + if(++mdia_shift > 2) mdia_shift = 2; if(shift_lock) mdia_lock = !mdia_lock; layer_on(MDIA); } @@ -249,7 +267,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_TAB); } else { - mdia_shift--; + if(--mdia_shift < 0) mdia_shift = 0; if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); } } @@ -257,20 +275,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case LLock: if (record->event.pressed) { - shift_lock++; - if(symb_shift) symb_lock = !symb_lock; - if(mdia_shift) mdia_lock = !mdia_lock; - if(!record->tap.count && (keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))) { + if(++shift_lock > 2) shift_lock = 2; + if(caps_shift) { register_code(KC_CAPS); unregister_code(KC_CAPS); } + if(symb_shift) symb_lock = !symb_lock; + if(mdia_shift) mdia_lock = !mdia_lock; layer_on(LOCK); } else { if(record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { register_code(KC_GRV); unregister_code(KC_GRV); } - shift_lock--; + if(--shift_lock < 0) shift_lock = 0; if(!shift_lock) layer_off(LOCK); } break; @@ -280,7 +298,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_QUOT); } else { - symb_shift++; + if(++symb_shift > 2) symb_shift = 2; if(shift_lock) symb_lock = !symb_lock; layer_on(SYMB); } @@ -288,7 +306,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_QUOT); } else { - symb_shift--; + if(--symb_shift < 0) symb_shift = 0; if((!symb_shift) && (!symb_lock)) layer_off(SYMB); } } @@ -299,7 +317,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->tap.count && !shift_lock) { register_code(KC_BSLS); } else { - mdia_shift++; + if(++mdia_shift > 2) mdia_shift = 2; if(shift_lock) mdia_lock = !mdia_lock; layer_on(MDIA); } @@ -307,7 +325,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if(record->tap.count && !shift_lock) { unregister_code(KC_BSLS); } else { - mdia_shift--; + if(--mdia_shift < 0) mdia_shift = 0; if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); } } @@ -315,20 +333,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case RLock: if (record->event.pressed) { - shift_lock++; + if(++shift_lock > 2) shift_lock = 2; + if(caps_shift) { + register_code(KC_CAPS); + unregister_code(KC_CAPS); + } if(symb_shift) symb_lock = !symb_lock; if(mdia_shift) mdia_lock = !mdia_lock; - if(!record->tap.count && (keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); - } layer_on(LOCK); } else { if (record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { register_code(KC_EQL); unregister_code(KC_EQL); } - shift_lock--; + if(--shift_lock < 0) shift_lock = 0; if(!shift_lock) layer_off(LOCK); } break; diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png index 69af8df4e..2864031b1 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt index 04792f2df..66cd05503 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt @@ -14,12 +14,12 @@ [{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",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"], +[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#77aaff",f:3},"Option\n\n\nLAlt",{x:10.5,f:3},"Option\n\n\nRAlt"], +[{y:-0.875,x:2.5},"Hyper",{x:1,f:3},"Cmd\n\n\nSuper",{x:8.5,f:3},"Cmd\n\n\nSuper",{x:1},"Hyper"], +[{y:-0.75,x:0.5,f:3},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh",{f:3},"Ctrl\n\n\nRCtrl"], [{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"], +[{f:3,h:2},"< Del\n\n\nBackspace",{f:3,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"], [{x:-3},"Up",{h:2},"Enter",{h:2},"Space"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png index f3fed3cdb..85b08cc09 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt index f1ecd5fdc..815e2f5ba 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt @@ -14,8 +14,8 @@ [{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},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#ffb063"},"End",{x:1},"Page\n\n\n\n\n\nDown"], [{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#cccccc",a:7},""], -[{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"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063"},"Delete\n\n\nOption"], +[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5,c:"#77aaff",a:4},"RShift",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063",fa:[0,0,0,1]},"Delete\n\n\nOption"], [{y:-0.875,x:2.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert\n\n\nCmd",{x:1,c:"#77aaff"},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Crtl\n\n\nRCtrl"], [{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ccbb00"},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png index 8a0cfd63f..2cf2cb2b1 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt index 93f632e95..4b6a6cb95 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt @@ -14,7 +14,7 @@ [{y:-0.75,x:3.5,c:"#bbddbb"},"[",{x:10.5,c:"#89b087"},"2"], [{y:-0.875,x:2.5,c:"#bbddbb"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"], [{y:-0.875,x:5.5,c:"#bbddbb"},"~",{x:6.5},"\\"], -[{y:-0.875,c:"#2277ff",f2:1,w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#bbddbb"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], +[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#bbddbb"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5,c:"#89b087"},".\n\n\nOption"], [{y:-0.875,x:2.5,c:"#77aaff"},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5,c:"#89b087"},"0\n\n\nCmd",{x:1},"=\n\n\nHyper"], [{y:-0.75,x:0.5,c:"#77aaff"},"Ctrl\n\n\nLCtrl","Meh",{x:14.5,c:"#89b087"},"+\n\n\nMeh","Enter\n\n\nCtrl"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 6a42b7098..25fdc5171 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex @@ -1,1198 +1,1215 @@ -:100000000C94C7020C940B030C940B030C940B037D -:100010000C940B030C940B030C940B030C940B0328 -:100020000C940B030C940B030C942A0E0C94FC0EF2 -:100030000C940B030C940B030C940B030C940B0308 -:100040000C940B030C947B230C940B030C940B0368 -:100050000C940B030C941F1D0C940B030C940B03BA -:100060000C940B030C940B030C940B030C940B03D8 -:100070000C940B030C940B030C940B030C940B03C8 -:100080000C940B030C940B030C940B030C940B03B8 -:100090000C940B030C940B030C940B030C940B03A8 -:1000A0000C940B030C940B030C940B031C034E03D6 -:1000B0009A0335035E032D044A044D0450045E0484 -:1000C000610F830F6E10830F6E10C50FE80F6E1057 -:1000D0003D1050104A134A138B138B13CD13091480 -:1000E000091609162114091618151815E31509160D -:1000F0000916F71500C801C802C803C804C805C816 -:10010000022001200030E100E00000001E00140089 -:1001100004001D0000074E001F001A0016001B00FF -:10012000000F4C002000080007000600E2002A0033 -:100130002100150009001900E3004B002200170000 -:100140000A00050000004A0029002F0000002B02D1 -:1001500000004D002D00300000002B00000050007A -:1001600023001C000B00110000004F0024001800A9 -:100170000D001000E700520025000C000E003600B4 -:10018000E6002C00260012000F003700000F2800A8 -:100190002700130033003800000751000520042019 -:1001A0000320E500E400000001000100010001005F -:1001B000E00000003A001E02200222020007510067 -:1001C0003B001F0221022302000F28003C002F02E7 -:1001D00026022F00E2002C003D00300227023000F2 -:1001E000E30052003E0024023500350200005000BA -:1001F0002900360200002B0000004F002D003702BE -:1002000000002B0200004A003F003102380031009C -:1002100000004D004000240021001E0027784B0004 -:100220004100250022001F0037744C0042002600C8 -:10023000230020002E7F2A004300380025022D00D5 -:100240002E774E000100010001000100287100001E -:100250000100010001000100E00000004400660010 -:10026000A60000000007B50045000630F200083087 -:10027000F60000006800F000F100F100F400B600A4 -:1002800069000730F3000930F500B4006A00A900E6 -:10029000AA00A8000000B8002900F9000000FA0038 -:1002A0000000B9000000F9000000FA000000AC00F6 -:1002B0006B004600530000000000AB006C004A00D9 -:1002C00050004D004978A9006D00520051005100C6 -:1002D0004C74AE006E004B004F004E00000FAD009E -:1002E0006F00B100B30000000007AA000100010088 -:1002F00001000100E40000000100010001003900DC -:1003000001000000290001000100010001000100BE -:1003100001000100010001000100010001000100D5 -:1003200001000100010001000100010001000100C5 -:1003300001000100010001000100010000000100B6 -:1003400001000100000001000000010001000100A7 -:100350000000010000000100010001000100010097 -:100360000000010001000100010001000100010086 -:100370000100010001000100010001000100010075 -:1003800001000100010001002A000100010001003C -:10039000010001000100010001003900010000001E -:1003A00016034500720067006F0044006F0078007C -:1003B000200045005A000000160345007200670047 -:1003C0006F0044006F007800200045005A000000D4 -:1003D0000403090409026D00040100A0FA090400E5 -:1003E000000103010100092111010001223F000762 -:1003F00005810308000A0904010001030102000944 -:100400002111010001224D000705820308000A099D -:10041000040200010300000009211101000122363D -:10042000000705830308000A090403000103000014 -:100430000009211101000122390007058403100081 -:10044000011201100100000008EDFE071301000178 -:1004500002000105010906A101050719E029E715B8 -:1004600000250195087501810205081901290595E6 -:100470000575019102950175039101050719002980 -:100480007715002501957875018102C00501098065 -:10049000A101850216010026B7001A01002AB70043 -:1004A000751095018100C0050C0901A10185031695 -:1004B0000100269C021A01002A9C027510950181F8 -:1004C00000C005010902A1010901A10005091901E6 -:1004D0002905150025019505750181029501750312 -:1004E00081010501093009311581257F95027508C3 -:1004F000810609381581257F950175088106050C4F -:100500000A38021581257F950175088106C0C0054E -:10051000010906A101050719E029E7150025019544 -:1005200008750181029501750881010508190129E5 -:10053000059505750191029501750391010507194E -:100540000029FF150025FF950675088100C00000F1 -:10055000000000000000000000010204060A0F175E -:10056000202C3A4A5D71879DB3C7DAE9F5FCFFFCA0 -:10057000F5E9DAC7B39D87715D4A3A2C20170F0A57 -:100580000604020100000000000000000000112429 -:100590001FBECFEFDAE0DEBFCDBF04B603FE24C03E -:1005A0008091F6019091F701A091F801B091F901C5 -:1005B0008730904BA740B04BB9F41092F6011092DF -:1005C000F7011092F8011092F90114BE84B7877FE9 -:1005D00084BF88E10FB6F8948093600010926000A9 -:1005E0000FBEE0E0FFE3099511E0A0E0B1E0E4E830 -:1005F000FAE402C005900D92A433B107D9F721E0C7 -:10060000A4E3B1E001C01D92A63FB207E1F70E944A -:10061000700B0C9440250C940000DC01462F50E038 -:100620004A30510508F05DC14A5A5F4F12962C912D -:100630001297FA010C94F02480913A0190913B01B9 -:100640002223F1F0019690933B0180933A0180912F -:10065000360190913701892B31F08091350191E07D -:1006600089278093350181E09AC015968C91807F0F -:100670002111BFC009F0D5C080913A0190913B0192 -:10068000019790933B0180933A01892B09F029C18E -:1006900080913501811125C181E0A8C015968C910A -:1006A000807F222349F12091360130913701882340 -:1006B00081F02115310569F48BE2C1C015968C914A -:1006C000807F222319F12091360130913701811169 -:1006D000B1C0809138019091390101969093390110 -:1006E00080933801232B31F08091340191E08927E8 -:1006F0008093340182E053C0882351F08091360109 -:1007000090913701892B21F48BE2A4C081119AC00A -:10071000809138019091390101979093390180932C -:100720003801892B09F0DDC0809134018111D9C0D5 -:1007300082E05CC015963C912223A1F180913601A4 -:100740009091370101969093370180933601809103 -:100750003A0190913B01892B31F08091350191E074 -:100760008927809335018091380190913901892B37 -:1007700031F08091340191E0892780933401307FFA -:1007800069F4E0910E01F0910F018081827231F0E5 -:1007900089E30E94D21189E30E949A1283E00E94A9 -:1007A0009D1A9FC0832F807FA1F030FD12C08091E1 -:1007B0003A0190913B01892B61F48091380190912D -:1007C0003901892B31F485E30E94D21185E30E941F -:1007D0009A128091360190913701019790933701D9 -:1007E00080933601892B09F07CC083E00E94BE1AF9 -:1007F00078C02091360130913701882329F02115E6 -:10080000310511F484E31BC080913A0190913B01C2 -:10081000019690933B0180933A01232B09F01DCF61 -:1008200022CF8091360190913701892B09F024CF96 -:1008300084E310C02115310509F04BCF81E30E94FC -:10084000D2114FC08091360190913701892B09F068 -:100850005FCF81E30E949A1244C015963C9121110A -:100860006DCF832F807F09F4B4CF30FDB2CF80915C -:100870003A0190913B01892B09F0ABCF809138016F -:1008800090913901892B09F0A4CF8EE20E94D211F8 -:100890008EE29DCF80EF90E005C080EF90E010C029 -:1008A00081EF90E0222329F00E94931F82EF90E0D5 -:1008B0000DC00E94FB1F82EF90E00FC081EF90E01F -:1008C000222339F00E94931F83EF90E00E94931F30 -:1008D00006C00E94FB1F83EF90E00E94FB1F0E9456 -:1008E000802080E090E008950895E0910E01F0915D -:1008F0000F018081827219F0259A2D9A06C00E94FC -:10090000A91081FDF9CF25982D988091B90181FF1B -:1009100003C0269A2E9A02C026982E988091B9017B -:1009200082FF03C0279A2F9A089527982F98089539 -:100930000C94750456985E9825982D9826982E98B4 -:1009400027982F988FEF90E09093890080938800EC -:1009500090938B0080938A0090938D0080938C00FD -:10096000259A2D9A2FEF80E792E021508040904009 -:10097000E1F700C00000269A2E9A2FEF80E792E060 -:10098000215080409040E1F700C00000279A2F9A44 -:100990002FEF80E792E0215080409040E1F700C0C7 -:1009A000000025982D982FEF80E792E0215080409D -:1009B0009040E1F700C0000026982E982FEF80E7C6 -:1009C00092E0215080409040E1F700C0000027985D -:1009D0002F9856985E9825982D9826982E982798A7 -:1009E0002F98089589EA8093800089E080938100A0 -:1009F00024982C983F988AB18F748AB96E98479A38 -:100A00008BB1806B8BB9769A0E949A040C94740413 -:100A100080E28093000180913C0181110EC00E9410 -:100A2000570581E080933C012FEF83ED90E3215047 -:100A300080409040E1F700C0000080E40E945D0526 -:100A40008093000181112EC00E94870580930001D0 -:100A5000811128C00E94870580930001811122C066 -:100A60008FE30E9487058093000181111BC00E94C3 -:100A70007F0580E40E945D0580930001811112C012 -:100A80008CE00E9487058093000181110BC00E94B9 -:100A9000870580930001811105C08FE30E948705BF -:100AA000809300010E947F058091000108951092BB -:100AB000B9008AE08093B800089594EA9093BC004E -:100AC0009091BC0097FFFCCF9091B900987F98302F -:100AD00021F0903111F081E008958093BB0084E80B -:100AE0008093BC008091BC0087FFFCCF8091B9004F -:100AF000887F883111F0803471F780E0089584E9AF -:100B00008093BC008091BC0084FDFCCF089580934D -:100B1000BB0084E88093BC008091BC0087FFFCCFC1 -:100B20009091B900987F81E0983209F480E00895AF -:100B300084E88093BC008091BC0087FFFCCF80914B -:100B4000BB00089580910001811115C080E40E94CE -:100B50005D058093000181110CC082E10E94870530 -:100B600080930001811105C08FEF0E94870580935B -:100B700000010E947F0584B1807F84B985B1807FA8 -:100B800085B98AB1837F8AB98BB1837F8BB93E984F -:100B9000469808950E940805809300010E94A205CE -:100BA00080B38C7080BB81B3836F81BBECE4F1E0D8 -:100BB000AEE3B1E011921D9281E0EA35F807D1F77A -:100BC0000C94F204BF92CF92DF92EF92FF920F93B8 -:100BD0001F93CF93DF9380910001882379F0809158 -:100BE0003D018F5F80933D01811108C00E9408057F -:100BF00080930001811102C00E949A040EE311E06B -:100C0000C0E0D0E0DD24D39482E0C82EEE24E3944B -:100C1000F12CC73000F580910001811162C080E4A1 -:100C20000E945D0580930001811112C082E10E9443 -:100C300087058093000181110BC0C7010C2E01C0F4 -:100C4000880F0A94EAF780950E9487058093000137 -:100C50000E947F0546C0CA30A1F028F4C83059F080 -:100C6000C93061F005C0CC3089F070F0CD3089F02A -:100C7000209A289810C0219A29980DC0229A2A9863 -:100C80000AC0239A2B9807C0529A01C0539A5B98C6 -:100C900002C03E9A4698E0EAEA95F1F78FB1799959 -:100CA0005AC092E081708D25892B7C9B02C090E018 -:100CB00001C094E0892B7D9B02C090E001C098E0C8 -:100CC000892B7E9B02C090E001C090E1892B9FB1EF -:100CD0009095991F9927991F9295990F907E892B2E -:100CE0000FC08091000181114BC080E40E945D051E -:100CF00080930001882389F1B12C0E947F058B2D00 -:100D0000F8019081981719F08083C09201010E9428 -:100D1000A20521960F5F1F4FCE30D10509F079CF84 -:100D200080910101882371F1815080930101882312 -:100D300039F08FE99FE00197F1F700C0000022C071 -:100D4000ACE4B1E0EEE3F1E081918D9391E0EC341D -:100D5000F907D1F717C090E0A5CF83E10E9487057E -:100D6000809300018111C8CF81E40E945D058093CA -:100D700000018111C1CF0E949805B82EB094BDCF5B -:100D800080E0BECF0E94980481E0DF91CF911F9157 -:100D90000F91FF90EF90DF90CF90BF900895E82FD4 -:100DA000F0E0E45BFE4F808108950895089596E099 -:100DB000799FF001112494E5899FE00DF11D112424 -:100DC000E60FF11DEE0FFF1FE050FF4F859194914C -:100DD0000895880F991F8C589040FC01859194913B -:100DE0000895880F991F8C509F4FFC018591949115 -:100DF00008950F931F93CF93DF93EC01811520E3A8 -:100E0000920730F5811530E2930708F0B1C08B3BB3 -:100E1000910588F4883A910508F058C0853A910503 -:100E200008F049C08430910508F043C08130910535 -:100E300009F4B2C1AEC18F3F910509F0D0F5803FF2 -:100E4000910508F092C0805E9109089790F1A1C1C8 -:100E5000C11581E5D807A8F4C23090E5D90708F09C -:100E60009FC0C11520E5D20709F486C008F092C0E2 -:100E7000C11580E4D80708F08CC18E011127106CD1 -:100E8000CCC1C11590E8D90758F4C11520E7D207A5 -:100E900008F07BC1C11530E6D30708F423C179C13E -:100EA000C11580E9D80708F074C18E011F70106A5F -:100EB000B4C18E01B2C1853A910509F470C1863A78 -:100EC000910509F46FC103E810E4A7C1883A9105C0 -:100ED00009F46BC1893A910509F46AC18A3A91050E -:100EE00009F469C18B3A910509F468C18C3A9105FE -:100EF00009F467C18D3A910509F466C1803B9105FB -:100F000009F465C18E3A910509F464C18F3A9105DF -:100F100009F463C1813B910509F462C1823B9105EB -:100F200009F461C1833B910509F460C1843B9105DB -:100F300009F45FC1853B910509F45EC1863B9105CB -:100F400009F45DC1873B910509F45CC1883B9105BB -:100F500009F45BC1893B910509F45AC18A3B9105AB -:100F600009F059C10AE216E458C18C01106555C157 -:100F70009F700E94F10652C10E942C169FEF24E33D -:100F80003CE0915020403040E1F700C000000E945A -:100F9000441D43C18091D50181608093D5013DC13D -:100FA0000E94EC1E811102C00E94D21E0E94091FE5 -:100FB00090E09093F6018093F501C23080E5D80768 -:100FC00021F48091F501816086C0C43090E5D90795 -:100FD00021F48091F50182607EC0C63020E5D20701 -:100FE00021F48091F501846076C0C83030E5D307E4 -:100FF00019F48091F50127C0CA3080E5D80721F4A3 -:101000008091F501806167C0CC3090E5D90721F46B -:101010008091F50180625FC0CE3020E5D20721F4D7 -:101020008091F501806457C0C03130E5D30721F4C9 -:101030008091F50180684FC0C23180E5D80729F45E -:101040008091F5018460886046C0C33090E5D9077F -:1010500021F48091F5018E7F3EC0C53020E5D20796 -:1010600021F48091F5018D7F36C0C73030E5D3077C -:1010700021F48091F5018B7F2EC0C93080E5D8071F -:1010800019F48091F50126C0CB3090E5D90721F401 -:101090008091F5018F7E1FC0CD3020E5D20721F46D -:1010A0008091F5018F7D17C0CF3030E5D30721F453 -:1010B0008091F5018F7B0FC0C13180E5D80721F405 -:1010C0008091F5018F7707C0C331D04531F480910D -:1010D000F5018B7F877F8093F5018091F5010E9458 -:1010E0000D1F9BC08D2F99278F70992781309105F7 -:1010F000E9F48E01037011279C0102C0220F331FF7 -:101100000A95E2F789011C68CE0164E0880F991FF7 -:101110006A95E1F788279370082B192B73E0CC0FA1 -:10112000DD1F7A95E1F7C076DD272CC0823091056E -:1011300029F41C2F0027016F106A6FC083309105BE -:1011400061F4CE018370992701E010E002C0000F26 -:10115000111F8A95E2F71C680EC0049709F05DC064 -:10116000CE018370992701E010E002C0000F111F2B -:101170008A95E2F71A6843E0CC0FDD1F4A95E1F744 -:10118000C07ED7700C2B1D2B48C08E011F701062C3 -:1011900044C000E010E041C001E010E03EC001E8C2 -:1011A00010E43BC002E810E438C002EE14E435C09D -:1011B00009EE14E432C00AEE14E42FC005EB14E487 -:1011C0002CC006EB14E429C007EB14E426C00CEC99 -:1011D00014E423C00DEC14E420C003E815E41DC0A2 -:1011E0000AE815E41AC002E915E417C004E915E499 -:1011F00014C001E216E411C003E216E40EC004E2DA -:1012000016E40BC005E216E408C006E216E405C0C9 -:1012100007E216E402C000E014E4C801DF91CF91B8 -:101220001F910F91089596E0799FF001112494E5A4 -:10123000899FE00DF11D1124E60FF11DEE0FFF1F38 -:10124000E050FF4F85919491803E9105E0F4803C01 -:10125000910558F58133910509F46FC048F489323E -:10126000910509F463C08A32910509F46DC072C01A -:1012700089339105E9F082389105D1F085339105E4 -:1012800009F44DC067C0833E910581F138F4803E7A -:101290009105B9F0823E9105D9F05CC0863E91057A -:1012A00061F1873E9105A1F155C00E94E9060895BC -:1012B0002091F50120FD02C021FF4CC080EE90E09E -:1012C00049C08091F50180FFF9CF89E390E042C0E9 -:1012D0008091F50182FF0EC08091F50184FF03C06B -:1012E00080E090E037C083EE90E034C08091F5015B -:1012F00082FFF2CF82EE90E02DC08091F50183FF56 -:101300000BC08091F50184FDEBCF87EE90E022C009 -:101310008091F50183FFF5CF86EE90E01BC08091B0 -:10132000F50185FF07C089E290E014C08091F501C6 -:1013300085FFF9CF85E390E00DC08091F50186FF30 -:1013400007C08AE290E006C08091F50186FFF9CFE0 -:1013500081E390E00E94F906089508950C94AD0988 -:1013600080916A010895CF93DF9300D01F92CDB78B -:10137000DEB72091EC01243019F523E029839B830B -:101380008A832093E9008FEF9091E800815095FDCA -:1013900006C095ED9A95F1F700008111F5CF809187 -:1013A000E80085FF0DC040E050E063E070E0CE0152 -:1013B00001960E941D0C8091E8008E778093E800D2 -:1013C0000F900F900F90DF91CF910895CF93DF93FF -:1013D00000D01F92CDB7DEB72091EC01243021F56B -:1013E00022E029839B838A8383E08093E9008FEF47 -:1013F0009091E800815095FD06C095ED9A95F1F722 -:1014000000008111F5CF8091E80085FF0DC040E01C -:1014100050E063E070E0CE0101960E941D0C8091C7 -:10142000E8008E778093E8000F900F900F90DF9187 -:10143000CF9108952091EC012430F1F422E0209323 -:10144000E9002FEF3091E800215035FD06C035ED61 -:101450003A95F1F700002111F5CF2091E80025FF22 -:101460000BC040E050E065E070E00E941D0C8091F0 -:10147000E8008E778093E8000895CF93DF93EC0126 -:101480008091EC01843009F046C090910C019923C1 -:10149000D9F090910D019923B9F08093E9008FEF75 -:1014A0009091E800815095FD06C095E19A95F1F77D -:1014B00000008111F5CF8091E80085FF2CC040E04D -:1014C00050E060E170E017C081E08093E9008FEFA9 -:1014D0009091E800815095FD06C095ED9A95F1F741 -:1014E00000008111F5CF8091E80085FF14C040E035 -:1014F00050E068E070E0CE010E941D0C8091E80091 -:101500008E778093E80080E1FE01AAE5B1E00190CA -:101510000D928A95E1F7DF91CF9108958091EB01CB -:10152000811109C00E94AF0D0E940C0E8091E20053 -:1015300084608093E20008951092EB01089508956D -:101540000C9468230E94DB1C0E946E230E94A91049 -:101550000C94AE0942E061EC81E00E94290D42E06A -:1015600061EC82E00E94290D42E061EC83E00E9480 -:10157000290D42E161EC84E00C94290D8091EE018B -:10158000833009F455C030F4813071F0823009F4B1 -:101590008EC008958A3009F47AC08B3009F460C097 -:1015A000893009F09CC020C08091ED01813A09F09A -:1015B00096C08091E800877F8093E8008091F101D8 -:1015C0009091F201892B21F060E080E090E003C06F -:1015D00060E18AE591E070E00E94660C8091E8008D -:1015E0008B778093E80008958091ED01813209F0B6 -:1015F00076C08091F1019091F201009719F0039764 -:1016000009F06DC08091E800877F8093E8008091A9 -:10161000E80082FD05C08091EC018111F8CF5FC028 -:101620008091F10080936A018091E8008B7753C02C -:101630008091ED01813A09F052C08091F1019091C1 -:10164000F201892B09F04BC08091E800877F8093DD -:10165000E8008091E80080FFFCCF80910C0136C04B -:101660008091ED018132D9F58091F1019091F201E3 -:10167000892BA9F58091E800877F8093E8000E947C -:101680005E0D8091EF0180930C010C942C168091DB -:10169000ED01813221F58091E800877F8093E80099 -:1016A0000E945E0D8091F00180936B0108958091FE -:1016B000ED01813AA1F48091E800877F8093E800F2 -:1016C0008091E80080FFFCCF80916B018093F10056 -:1016D0008091E8008E778093E8000C945E0D089569 -:1016E00084B7877F84BF88E10FB6F8948093600049 -:1016F000109260000FBE90E080E80FB6F8948093DF -:101700006100909361000FBE0E94F8100E94AF0D1F -:101710000E940C0E8091E20084608093E200789435 -:101720000E9487100E94FA1082E091E00E94A410AB -:101730000E9456238091EC01853069F40E949B1C25 -:101740008091EA018823B1F30E94C61C882391F39B -:101750000E94070CEFCF0E940011ECCF292F3327F6 -:1017600023303105A9F06CF42130310509F442C071 -:101770002230310509F043C08DE690E024ED33E0DE -:1017800042C021323105C9F02232310519F137C08A -:1017900099278130910541F08230910541F0892BE4 -:1017A00071F5E0EDF3E005C0E8EBF3E002C0E0EA3C -:1017B000F3E0849190E09F0126C0643000F5E62FAD -:1017C000F0E0EE0FFF1FEE5DFE4F2081318189E0DA -:1017D00090E019C0643098F4E62FF0E0DF01AA0F22 -:1017E000BB1FA65EBE4F2D913C91EA5EFE4F8081ED -:1017F00090E009C082E190E021E434E004C080E0A0 -:1018000090E020E030E0FA0131832083089580E108 -:1018100089BD82E189BD09B400FEFDCF8091D80069 -:101820008F7D8093D8008091E00082608093E000FB -:101830008091E00081FDFCCF0895CF92DF92EF927E -:10184000FF920F931F93CF93DF937C018B01EA01EB -:101850000E947F0D811131C0209731F088819981DC -:10186000081B190BE80EF91EC12CD12C011511050E -:1018700019F18091E80085FD14C08091E8008E7711 -:101880008093E800209741F0888199818C0D9D1DFF -:101890009983888385E011C00E947F0D882331F3EE -:1018A0000CC0F70181917F018093F1000150110973 -:1018B000FFEFCF1ADF0ADACF80E0DF91CF911F91DF -:1018C0000F91FF90EF90DF90CF9008952091F3015A -:1018D0003091F4012617370748F06115710539F486 -:1018E0002091E8002E772093E80001C0B901FC01A7 -:1018F00020E061157105B9F18091EC01882309F4AC -:1019000040C0853009F43FC08091E80083FD3DC0B0 -:101910008091E80082FF06C08091E80082FF26C027 -:1019200080E008958091E80080FFE3CF2091F300EC -:101930008091F20090E0922B6115710551F0883092 -:10194000910538F421912093F100615071090196BD -:10195000F3CF21E0089709F020E08091E8008E772E -:101960008093E800C6CF2111C7CFD6CF8091EC017C -:10197000882339F0853039F08091E80083FFCCCF9F -:1019800004C082E0089583E0089581E008952091E5 -:10199000F3013091F4012617370748F061157105FE -:1019A00039F42091E8002E772093E80001C0B901B6 -:1019B000FC0120E061157105C1F18091EC018823E3 -:1019C00009F441C0853009F440C08091E80083FDEE -:1019D0003EC08091E80082FF06C08091E80082FF4F -:1019E00027C080E008958091E80080FFE3CF209138 -:1019F000F3008091F20090E0922B6115710559F08F -:101A00008830910540F424912093F1003196615083 -:101A100071090196F2CF21E0089709F020E080914A -:101A2000E8008E778093E800C5CF2111C6CFD5CFCF -:101A30008091EC01882339F0853039F08091E800FD -:101A400083FFCBCF04C082E0089583E0089581E056 -:101A50000895982F973058F59093E900981739F02A -:101A60007091EC002091ED005091F00003C0242F04 -:101A7000762F50E021FF19C03091EB003E7F30936C -:101A8000EB003091ED003D7F3093ED003091EB00A5 -:101A900031603093EB007093EC002093ED00509395 -:101AA000F0002091EE0027FF07C09F5FD3CF8F701B -:101AB0008093E90081E0089580E008958091ED0130 -:101AC00087FD05C08091E80080FF0EC012C08091A4 -:101AD000E80082FD05C08091EC018111F8CF0895E6 -:101AE0008091E8008B7708C08091EC018111EACFEA -:101AF00008958091E8008E778093E80008958091A2 -:101B0000E4009091E50045E62091EC0020FF21C023 -:101B10002091E80020FD21C02091EC01222389F0D2 -:101B2000253089F02091EB0025FD0FC02091E400C5 -:101B30003091E5002817390739F3415041F0C901C8 -:101B4000E3CF82E0089583E0089581E0089584E082 -:101B500008952091E80022FFDFCF80E008950E94E1 -:101B60001D0E0E94250EE0EEF0E0808181608083F2 -:101B7000E8EDF0E080818F77808319BCA7EDB0E0BD -:101B80008C918E7F8C9380818F7E80831092EB016D -:101B900008950F931F93CF93DF930E941D0E0E9411 -:101BA000250EC8EDD0E088818F7788838881806892 -:101BB000888388818F7D888319BC1092EC011092F4 -:101BC000E8011092EA011092E90100EE10E0F8013C -:101BD00080818B7F808388818160888342E060E0A0 -:101BE00080E00E94290DE1EEF0E080818E7F80830D -:101BF000E2EEF0E080818160808380818860808374 -:101C0000F80180818E7F8083888180618883DF9165 -:101C1000CF911F910F910895E8EDF0E080818F7EC4 -:101C20008083E7EDF0E080818160808384E082BF83 -:101C300081E08093EB010C94C90DE8EDF0E0808128 -:101C40008E7F80831092E20008951092DA00109245 -:101C5000E10008951F920F920FB60F9211242F9357 -:101C60003F934F935F936F937F938F939F93AF9324 -:101C7000BF93EF93FF938091E10082FF0BC08091AF -:101C8000E20082FF07C08091E1008B7F8093E1003A -:101C90000E9486108091DA0080FF1FC08091D800DA -:101CA00080FF1BC08091DA008E7F8093DA008091E4 -:101CB000D90080FF0DC080E189BD82E189BD09B4F2 -:101CC00000FEFDCF81E08093EC010E948E0A05C0EA -:101CD00019BC1092EC010E949C0A8091E10080FFE7 -:101CE00019C08091E20080FF15C08091E2008E7FD4 -:101CF0008093E2008091E20080618093E200809115 -:101D0000D80080628093D80019BC85E08093EC01F4 -:101D10000E94A00A8091E10084FF30C08091E2001F -:101D200084FF2CC080E189BD82E189BD09B400FE39 -:101D3000FDCF8091D8008F7D8093D8008091E10005 -:101D40008F7E8093E1008091E2008F7E8093E2009D -:101D50008091E20081608093E2008091E801882315 -:101D600011F084E007C08091E30087FF02C083E0A8 -:101D700001C081E08093EC010E94A20A8091E10001 -:101D800083FF29C08091E20083FF25C08091E1009C -:101D9000877F8093E10082E08093EC011092E8015C -:101DA0008091E1008E7F8093E1008091E2008E7F40 -:101DB0008093E2008091E20080618093E20042E043 -:101DC00060E080E00E94290D8091F000886080939F -:101DD000F0000E949F0AFF91EF91BF91AF919F91F8 -:101DE0008F917F916F915F914F913F912F910F90C4 -:101DF0000FBE0F901F9018951F920F920FB60F9263 -:101E000011242F933F934F935F936F937F938F93FF -:101E10009F93AF93BF93CF93EF93FF93C091E9004C -:101E2000CF708091EC001092E9008091F000877FE4 -:101E30008093F00078940E94380F1092E90080910E -:101E4000F00088608093F000C093E900FF91EF916B -:101E5000CF91BF91AF919F918F917F916F915F9142 -:101E60004F913F912F910F900FBE0F901F9018959B -:101E70001F93CF93DF93CDB7DEB7AA970FB6F89431 -:101E8000DEBF0FBECDBFEDEEF1E08091F10081939A -:101E900021E0E53FF207C9F70E94BE0A8091E80001 -:101EA00083FF1CC12091ED013091EE01832F90E062 -:101EB0008A30910508F012C1FC01E05AFF4F0C94E2 -:101EC000F024203881F0223809F008C18091F10116 -:101ED0008F708093E9008091EB0085FB882780F963 -:101EE0001092E90006C08091E9019091EA019111F8 -:101EF00082609091E800977F9093E8008093F100D2 -:101F00001092F100C5C0822F8D7F09F0E7C0222317 -:101F100019F0223061F0E2C08091EF01813009F0C8 -:101F2000DDC0333009F080E08093EA0128C0809161 -:101F3000EF01811124C02091F1012F7009F4CEC06E -:101F40002093E9008091EB0080FF19C08091EB00A5 -:101F5000333011F4806211C080618093EB0081E026 -:101F600090E0022E01C0880F0A94EAF78093EA00FD -:101F70001092EA008091EB0088608093EB00109251 -:101F8000E9008091E800877F86C02111A7C01091E9 -:101F9000EF011F778091E3008078812B8093E3002D -:101FA0008091E800877F8093E8000E945E0D809119 -:101FB000E80080FFFCCF8091E30080688093E3001D -:101FC000112311F083E001C082E08093EC0186C010 -:101FD0002058223008F082C08091EF019091F001EA -:101FE0008C3D23E0920779F583E08A838AE2898336 -:101FF0004FB7F894DE01139620E03EE051E2E32F64 -:10200000F0E050935700E49120FF03C0E295EF7099 -:102010003F5FEF708E2F90E0EA3010F0C79601C05E -:10202000C0968D939D932F5F243149F74FBF8091C8 -:10203000E800877F8093E8006AE270E0CE010196B5 -:102040000E94660C14C0AE014F5F5F4F6091F101BA -:102050000E94AE0B009709F441C02091E800277F51 -:102060002093E800BC0189819A810E94C70C80916D -:10207000E8008B778093E80031C0203879F58091B3 -:10208000E800877F8093E8008091E8018093F10069 -:102090008091E8008E778093E8000E945E0D1EC05C -:1020A00021111CC09091EF019230C0F48091E800A2 -:1020B000877F8093E8009093E8010E945E0D8091F5 -:1020C000E801811104C08091E30087FF02C084E031 -:1020D00001C081E08093EC010E94AA0A8091E8008F -:1020E00083FF0AC08091E800877F8093E800809199 -:1020F000EB0080628093EB00AA960FB6F894DEBFE7 -:102100000FBECDBFDF91CF911F9108950895CF935A -:102110008091EC018823B1F08091E9008F7090915B -:10212000EC0090FF02C090E801C090E0C92FC82BDE -:102130001092E9008091E80083FD0E94380FCF7073 -:10214000C093E900CF91089590937101809370013D -:102150000895E0917001F0917101309721F00190A4 -:10216000F081E02D099480E00895E0917001F091F4 -:102170007101309721F00280F381E02D09940895D8 -:10218000E0917001F0917101309721F00480F581A8 -:10219000E02D0994089520916E0130916F0182170E -:1021A000930771F090936F0180936E01E09170013D -:1021B000F0917101309721F00680F781E02D0994AC -:1021C000089520916C0130916D018217930771F091 -:1021D00090936D0180936C01E0917001F091710119 -:1021E000309721F00084F185E02D09940895089539 -:1021F0000C94F7100E94E11C0E94CA050C94A71DC4 -:10220000CF92DF92EF92FF920F931F93CF93DF93C2 -:10221000CDB7DEB72B970FB6F894DEBF0FBECDBF9C -:102220000E94E20533E7E32E31E0F32E00E010E0F8 -:10223000C02E802F0E94CF06F701D1907F01D826B3 -:10224000B1F40F5F1F4F0E30110591F78FEF8983A7 -:102250008A831B820E94EA1C8160782F9D838C8375 -:1022600049815A816B818D810E94A31141C0909157 -:10227000D50191FF04C08B870E94D5068B8520E095 -:1022800030E04D2D50E0922FBA01022E02C075951C -:1022900067950A94E2F760FF25C02E83CF82EE2473 -:1022A000E394F12C02C0EE0CFF1C9A95E2F790E04B -:1022B0008E219F2121E0892B09F420E028870E94AC -:1022C000EA1C8160782F9A8789874E815F816885B3 -:1022D0008A850E94A311F801ED58FE4F80818E255A -:1022E000808306C02F5F3F4F2630310561F6A9CFAE -:1022F0000E948B20109172010E94A9101817A1F062 -:102300000E94A910809372012B960FB6F894DEBF3D -:102310000FBECDBFDF91CF911F910F91FF90EF9036 -:10232000DF90CF900C94AE092B960FB6F894DEBFD9 -:102330000FBECDBFDF91CF911F910F91FF90EF9016 -:10234000DF90CF900895CF93DF93CDB7DEB72B9773 -:102350000FB6F894DEBF0FBECDBF4F835887698795 -:102360007A878B87DE01119686E0FD0111928A95AE -:10237000E9F785E0FE01379601900D928A95E1F725 -:1023800049815A816B817C818D819E810E94F818E0 -:102390002B960FB6F894DEBF0FBECDBFDF91CF9165 -:1023A00008950895CF93C82F882309F4C1C08238B7 -:1023B00059F40E94A91081FDBBC089E30E94A21BB1 -:1023C0000E946C1C89E30CC0833879F40E94A91028 -:1023D00080FDAEC083E50E94A21B0E946C1C83E5B9 -:1023E0000E94E21BCF910C946C1C843859F40E941B -:1023F000A91082FD9DC087E40E94A21B0E946C1C54 -:1024000087E4EECF8CEF8C0F813A48F48C2F0E943A -:10241000BE2281118DC08C2F0E94A21BE3CF80E2CF -:102420008C0F883048F4C77081E001C0880FCA95CE -:10243000EAF70E94231CD6CF8BE58C0F833078F40B -:10244000C53A29F0C63A31F482E890E005C081E847 -:1024500090E002C083E890E0CF910C94CB1088E527 -:102460008C0F833108F064C0C83A39F1C93A41F1A0 -:10247000CA3A49F1CB3A51F1CC3A59F1CD3A61F12E -:10248000C03B69F1CE3A71F1CF3A79F1C13B81F1AC -:10249000C23B89F1C33B91F1C43B99F1C53BA1F12A -:1024A000C63BA9F1C73BB1F1C83BB9F1C93BC1F18A -:1024B000CA3BC9F58AE292E038C082EE90E035C0AE -:1024C00089EE90E032C08AEE90E02FC085EB90E07C -:1024D0002CC086EB90E029C087EB90E026C08CEC06 -:1024E00090E023C08DEC90E020C083E891E01DC017 -:1024F0008AE891E01AC082E991E017C084E991E08E -:1025000014C081E292E011C083E292E00EC084E246 -:1025100092E00BC085E292E008C086E292E005C03E -:1025200087E292E002C080E090E0CF910C94E1104D -:10253000CF910895882309F44BC0823859F40E9442 -:10254000A91081FF45C089E30E94A21B0E946C1C58 -:1025500089E30CC0833871F40E94A91080FF38C051 -:1025600083E50E94A21B0E946C1C83E50E94E21B73 -:102570000C946C1C843859F40E94A91082FF28C066 -:1025800087E40E94A21B0E946C1C87E4EFCF9CEFA3 -:10259000980F913A58F390E2980F983050F4877062 -:1025A00091E001C0990F8A95EAF7892F0E94291CB2 -:1025B000DFCF9BE5980F933020F480E090E00C94FF -:1025C000CB10885A833120F480E090E00C94E11025 -:1025D0000895882321F00E94231C0C946C1C0895FC -:1025E000882321F00E94291C0C946C1C0895CF9222 -:1025F000DF92EF92FF920F931F93CF93DF93CDB7AC -:10260000DEB728970FB6F894DEBF0FBECDBF8C01A2 -:1026100085E0F801DE01119601900D928A95E1F7AF -:10262000F801D080E180F280558152955F7023815E -:102630003481232B39F0FFEFEF1206C081E0DF1267 -:1026400003C003C081E001C080E080FDE2C2C80198 -:102650005F830E94D111D982EA8269817A818F2DAC -:102660000E949E1B9E8388870E94521B0E94251AEF -:102670004E815F816885FF2029F00E94401C68859B -:102680005F814E81E42FE295EF70F0E0E659FF4F55 -:102690000C94F024842F807F142F1F70882311F056 -:1026A0001295107FFF20B1F0112309F467C280E278 -:1026B000860F883028F4812F68870E94231C04C06D -:1026C000812F68870E94331C688568870E946C1C74 -:1026D000688554C2862F68870E949A1268851123E4 -:1026E00009F497C2605E812F683018F40E94291C9B -:1026F00002C00E94391C28960FB6F894DEBF0FBEA8 -:10270000CDBFDF91CF911F910F91FF90EF90DF90A0 -:10271000CF900C946C1C242F207F842F8F7020323C -:1027200011F08295807F662319F0613019F12BC07A -:10273000FF20B1F0552309F493C1513009F090C145 -:1027400028960FB6F894DEBF0FBECDBFDF91CF91B4 -:102750001F910F91FF90EF90DF90CF900C94531C3E -:10276000552319F0513009F454C28E830E94561C2F -:102770008E8189C1FF2021F0523008F04AC270C119 -:10278000511147C280C1FF2021F0552309F468C1CF -:10279000F5C1552309F477C105C2242F2695269546 -:1027A000237030E02115310521F021303105C9F0C9 -:1027B00030C2FF2021F0862F942F937002C080E05A -:1027C00090E028960FB6F894DEBF0FBECDBFDF9124 -:1027D000CF911F910F91FF90EF90DF90CF900C94CD -:1027E000CB10FF2021F0862F942F937002C080E041 -:1027F00090E028960FB6F894DEBF0FBECDBFDF91F4 -:10280000CF911F910F91FF90EF90DF90CF900C949C -:10281000E110862FFF2019F00E94931F02C00E9432 -:10282000FB1F28960FB6F894DEBF0FBECDBFDF9119 -:10283000CF911F910F91FF90EF90DF90CF900C946C -:102840008020842F837009F076C0F110E2C1262F1A -:10285000229526952770220F220F862F8F70C82E63 -:10286000D12CE12CF12C022E04C0CC0CDD1CEE1C72 -:10287000FF1C0A94D2F764FF10C06FE070E080E0A4 -:1028800090E004C0660F771F881F991F2A95D2F722 -:10289000609570958095909503C060E070E0CB01E5 -:1028A000242F269526952370422F50E04230510563 -:1028B000D1F04330510559F16C297D298E299F298A -:1028C0004130510541F128960FB6F894DEBF0FBE96 -:1028D000CDBFDF91CF911F910F91FF90EF90DF90CF -:1028E000CF900C944A1A6C297D298E299F2928960D -:1028F0000FB6F894DEBF0FBECDBFDF91CF911F9111 -:102900000F91FF90EF90DF90CF900C94641A0E948B -:102910004A1AC701B60128960FB6F894DEBF0FBE5B -:10292000CDBFDF91CF911F910F91FF90EF90DF907E -:10293000CF900C94301AFF2019F0842F817001C0C1 -:102940008695882309F465C1262F22952695277040 -:10295000220F220F862F8F70C82ED12CE12CF12C44 -:10296000022E04C0CC0CDD1CEE1CFF1C0A94D2F716 -:1029700064FF10C06FE070E080E090E004C0660F7C -:10298000771F881F991F2A95D2F7609570958095BB -:10299000909503C060E070E0CB01242F269526952A -:1029A0002370422F50E042305105D1F043305105A1 -:1029B00059F16C297D298E299F294130510541F11A -:1029C00028960FB6F894DEBF0FBECDBFDF91CF9132 -:1029D0001F910F91FF90EF90DF90CF900C941E1BF2 -:1029E0006C297D298E299F2928960FB6F894DEBF81 -:1029F0000FBECDBFDF91CF911F910F91FF90EF9050 -:102A0000DF90CF900C94381B0E941E1BC701B601AB -:102A100028960FB6F894DEBF0FBECDBFDF91CF91E1 -:102A20001F910F91FF90EF90DF90CF900C94041BBB -:102A3000603FC9F118F4603E50F49BC0623F09F456 -:102A400060C008F44AC0633F09F46FC092C0162FFB -:102A50001F70842F8F71FF2099F00E949D1A812F83 -:102A600028960FB6F894DEBF0FBECDBFDF91CF9191 -:102A70001F910F91FF90EF90DF90CF900C94E9128F -:102A80000E94BE1A812F28960FB6F894DEBF0FBEA3 -:102A9000CDBFDF91CF911F910F91FF90EF90DF900D -:102AA000CF900C94F012FF20A1F05111B2C0842FEE -:102AB0008F7128960FB6F894DEBF0FBECDBFDF91A1 -:102AC000CF911F910F91FF90EF90DF90CF900C94DA -:102AD000E31A523008F09DC0EACFFF20A1F0842F06 -:102AE0008F7128960FB6F894DEBF0FBECDBFDF9171 -:102AF000CF911F910F91FF90EF90DF90CF900C94AA -:102B00009D1AFF2061F3842F8F7128960FB6F894D9 -:102B1000DEBF0FBECDBFDF91CF911F910F91FF9010 -:102B2000EF90DF90CF900C94BE1AFF2091F0842F8D -:102B30008F7128960FB6F894DEBF0FBECDBFDF9120 -:102B4000CF911F910F91FF90EF90DF90CF900C9459 -:102B5000881A28960FB6F894DEBF0FBECDBFDF915E -:102B6000CF911F910F91FF90EF90DF90CF900C9439 -:102B70007E1AFF20A1F0552309F4B1CF862F2896A5 -:102B80000FB6F894DEBF0FBECDBFDF91CF911F917E -:102B90000F91FF90EF90DF90CF900C94D2115523BE -:102BA00009F4B1CF862F28960FB6F894DEBF0FBE7A -:102BB000CDBFDF91CF911F910F91FF90EF90DF90EC -:102BC000CF900C949A124F70C8010E940D03289662 -:102BD0000FB6F894DEBF0FBECDBFDF91CF911F912E -:102BE0000F91FF90EF90DF90CF900C94A5194F704C -:102BF000C80128960FB6F894DEBF0FBECDBFDF9197 -:102C0000CF911F910F91FF90EF90DF90CF900C9498 -:102C1000D60628960FB6F894DEBF0FBECDBFDF9163 -:102C2000CF911F910F91FF90EF90DF90CF9008957B -:102C30000E94401C0E94501C0E94151C0E946C1C8B -:102C40000E942C210E94802080E090E00E94CB1006 -:102C500080E090E00C94E1100E94301C0C94181657 -:102C60000E94931B292F22952F7030E02C303105C4 -:102C70004CF42A3031056CF42250310922303105F0 -:102C800090F407C02C30310551F02F30310539F068 -:102C90000AC0803E10F0803F31F481E0089593FB3C -:102CA000882780F9089580E00895CF93DF9300D0BE -:102CB00000D01F92CDB7DEB70F900F900F900F90FE -:102CC0000F90DF91CF910895CF93DF9300D000D084 -:102CD00000D0CDB7DEB726960FB6F894DEBF0FBE94 -:102CE000CDBFDF91CF9108951F93CF93DF93C09114 -:102CF000810116E080918201C81799F0D0E01C9FF5 -:102D0000F0011D9FF00D1124ED57FE4F40815181C0 -:102D100062817381848195810E9464162196C770B7 -:102D2000E9CFDF91CF911F9108954091B301509168 -:102D3000B4016091B5017091B6018091B701909195 -:102D4000B8010C946416CF938091B80182958F706E -:102D500009F05FC08091B501882309F45AC0209121 -:102D60008101A09182016091B3017091B4018091C1 -:102D7000B6019091B70131E06F3F09F030E0B32F19 -:102D8000C6E02A1709F445C0009721F07F3F21F4DF -:102D90004B2F03C041E001C040E030E040FD35C0B2 -:102DA000C29FF001C39FF00D1124ED57FE4F4181EA -:102DB00074132BC04081641328C04281411125C087 -:102DC000438154814817590710F441505109481B59 -:102DD000590B483C5105C8F48091B8018F7080614F -:102DE0008093B80186E0829FF001839FF00D11244B -:102DF000E857FE4F80818F708061808383EB91E084 -:102E00000E94F712CF910C9474162F5F3F4F2770DA -:102E1000B8CFCF910895CF92DF92EF92FF920F93A8 -:102E20001F93CF93DF93CDB7DEB762970FB6F894B9 -:102E3000DEBF0FBECDBF8C0185E0F801DE011D961F -:102E400001900D928A95E1F7D8014C9111965C9111 -:102E5000119712966C9112971396ED90FC9014971F -:102E60007091B301E091B4012091B6013091B701A6 -:102E70002115310531F0EF3F31F481E07F3F19F446 -:102E800003C081E001C080E0B82FB170CB2E80FD7F -:102E90006CC1D090B501DD2009F4F5C0F091B80106 -:102EA000E216F30638F0C701821B930B883C9105AC -:102EB00048F09BC0209530952E0D3F1D283C3105D4 -:102EC00008F093C08F2F807F09F052C0E51314C023 -:102ED000741312C0D62E61110FC0FF70F061F09311 -:102EE000B8010E94951683EB91E00E94F712809141 -:102EF000B801F80185836CC1EF2831F05F3F31F4F0 -:102F000081E04F3F19F403C081E001C080E080FD03 -:102F100003C081E0862701C080E0F82FF170FF2E0A -:102F200080FF1CC0809181012091820136E08217D0 -:102F300009F428C190E0389FF001399FF00D112469 -:102F4000ED57FE4F7181571306C07081471303C0C0 -:102F50007281671303C001968770E9CFD62E66236E -:102F600009F436C18091B80181608093B80153C0E3 -:102F7000E51308C0741306C0611104C0D80115968A -:102F8000FC93AEC04D875E878D859E856A8B0E94BF -:102F900030166A89882329F1D62E662311F12091F3 -:102FA000B801822F82958F7090E002970CF460C078 -:102FB0008091B3019091B40198878F831986FB8625 -:102FC000EA862C87CE01079651C0E51731F14D876F -:102FD0005E878D859E856A8B0E9430166A89811175 -:102FE0002EC0C8010E94F712A4C08F2F807F69F7FE -:102FF0007E2DF98AE88A89890E94551683EB91E033 -:103000000E94F712E3EBF1E086E0DF011D928A9562 -:10301000E9F70E949516D12CDBC07413D8CF61114B -:10302000D6CFD8011596FC93C8010E94F712E3EBA6 -:10303000F1E086E0DF011D928A95E9F7C9C0D62E3E -:10304000662379F22091B801822F82958F7090E0EB -:10305000029774F08091B3019091B4019A838983AF -:103060001B82FD82EC822E83CE0101960E94F71214 -:1030700086E0F801A3EBB1E001900D928A95E1F7AB -:103080000E94A3166FC0E216F30628F0C701821B48 -:10309000930B9C0104C0209530952E0D3F1D283CBC -:1030A000310508F052C0D62E662309F49ACFE513F5 -:1030B0002CC074132AC08091B80180FD1DC0982FC8 -:1030C00092959F70C9F0D80115968C9315979F30F3 -:1030D00039F09F5F9295907F8F70892B15968C9316 -:1030E000C8010E94F71286E0F801A3EBB1E001905D -:1030F0000D928A95E1F736C086E0F801A3EBB1E0C6 -:1031000001900D928A95E1F763C04D875E878D85AA -:103110009E850E943016882379F086E0F801A3EBA3 -:10312000B1E001900D928A95E1F70E94A3160E94EA -:103130009516DD24D3944CC08091B80181608093B2 -:10314000B801C8010E94F71243C07E2DF98AE88AAF -:1031500089890E945516E3EBF1E086E0DF011D92BC -:103160008A95E9F70E94951633C0662309F439CF92 -:103170004D875E878D859E850E943016882309F4D1 -:1031800030CFCBCF4D875E878D859E850E94931B68 -:10319000292F22952F7030E0223031052CF49F70BA -:1031A00041F0811106C00CC0243031052CF49F7011 -:1031B00049F4805E883020F0C8010E94F712CF2CBD -:1031C000DC2C06C0D80115969C91907F91F7F8CF22 -:1031D0008D2D62960FB6F894DEBF0FBECDBFDF9186 -:1031E000CF911F910F91FF90EF90DF90CF900895B6 -:1031F0001F93CF93DF93CDB7DEB72C970FB6F8941C -:10320000DEBF0FBECDBF4F83588769877A878B8714 -:103210009C87CE0107960E940B178823C1F02F814F -:1032200038858A859B85892B31F03F3F11F080E0FE -:1032300003C02F3FE1F781E0811147C04F815885DE -:1032400069857A858B859C850E9464163EC086E0E0 -:10325000FE013796DE01119601900D928A95E1F7F5 -:10326000FF81E8854A855B854115510531F0EF3FC7 -:1032700031F481E0FF3F19F403C081E001C080E038 -:1032800080FD23C02091820130E0C9010196877042 -:1032900099276091810170E086179707F1F1F98312 -:1032A000EA835D834C8396E0929FD001939FB00D9B -:1032B0001124AD57BE4FFE01319601900D929A95A3 -:1032C000E1F7809382010E94741616E080918101DB -:1032D00090918201891779F1189FC00111248D57AF -:1032E0009E4F0E940B17882331F1E09181011E9FB0 -:1032F000F0011124ED57FE4F4081518162817381AD -:10330000848195810E9464168091810190E00196EC -:103310008770992780938101D9CF0E942C16109233 -:10332000820110928101E3EBF1E086E0DF011D9262 -:103330008A95E9F7CACF2C960FB6F894DEBF0FBE78 -:10334000CDBFDF91CF911F910895EF92FF920F9320 -:103350001F93CF93DF93FC01009709F46FC0F12C0A -:10336000EE24E394EF0121968491843740F4843075 -:1033700008F055C0813081F0823021F15FC085377F -:1033800009F447C0C0F19CE7980F903708F056C089 -:103390008F770E949A1245C08F010E5F1F4FFE016A -:1033A000849190E2980F983050F48770FE2D01C000 -:1033B000FF0F8A95EAF78F2F0E94431C15C00E94C9 -:1033C000D21114C08F010E5F1F4FFE01849190E255 -:1033D000980F983068F48770FE2D01C0FF0F8A9512 -:1033E000EAF78F2F0E94491C0E946C1CE80119C04B -:1033F0000E949A12FBCFCF010296FE01C491CC230A -:1034000061F0EFE9FFE03197F1F700C00000C15033 -:10341000F6CFCF010296FE01F490EC0102C00E94AB -:10342000D2118F2D882341F0EFE9FFE03197F1F7BA -:1034300000C000008150F6CFFE0194CFDF91CF9104 -:103440001F910F91FF90EF90089508956093BD0133 -:103450007093BE018093BF019093C0010C94181625 -:103460000F931F930091BD011091BE012091BF01E8 -:103470003091C001062B172B282B392B0093BD014F -:103480001093BE012093BF013093C0011F910F9193 -:103490000C9418160F931F930091BD011091BE015B -:1034A0002091BF013091C00106231723282339231F -:1034B0000093BD011093BE012093BF013093C00162 -:1034C0001F910F910C9418160F931F930091BD013B -:1034D0001091BE012091BF013091C001062717272E -:1034E000282739270093BD011093BE012093BF0107 -:1034F0003093C0011F910F910C9418161092B901CE -:103500001092BA011092BB011092BC010C941816D3 -:1035100041E050E060E070E004C0440F551F661FBA -:10352000771F8A95D2F74093B9015093BA016093FF -:10353000BB017093BC010C94181641E050E060E0B0 -:1035400070E004C0440F551F661F771F8A95D2F79D -:103550008091B9019091BA01A091BB01B091BC01D9 -:10356000842B952BA62BB72B8093B9019093BA018E -:10357000A093BB01B093BC010C94181641E050E03D -:1035800060E070E004C0440F551F661F771F8A95E6 -:10359000D2F740955095609570958091B9019091C2 -:1035A000BA01A091BB01B091BC0184239523A6234D -:1035B000B7238093B9019093BA01A093BB01B09354 -:1035C000BC010C94181641E050E060E070E004C0CB -:1035D000440F551F661F771F8A95D2F78091B90156 -:1035E0009091BA01A091BB01B091BC0184279527AD -:1035F000A627B7278093B9019093BA01A093BB0186 -:10360000B093BC010C9418160F931F930091B9014D -:103610001091BA012091BB013091BC01062B172BF0 -:10362000282B392B0093B9011093BA012093BB01C9 -:103630003093BC011F910F910C9418160F931F9398 -:103640000091B9011091BA012091BB013091BC01E8 -:1036500006231723282339230093B9011093BA01B5 -:103660002093BB013093BC011F910F910C9418164D -:103670000F931F930091B9011091BA012091BB01E2 -:103680003091BC0106271727282739270093B90155 -:103690001093BA012093BB013093BC011F910F918D -:1036A0000C9418160895CF92DF92EF92FF920F9329 -:1036B0001F93CF93DF93EC01C090BD01D090BE016A -:1036C000E090BF01F090C0018091B9019091BA01E2 -:1036D000A091BB01B091BC01C82AD92AEA2AFB2AD1 -:1036E0000FE110E0B701A601002E04C076956795A2 -:1036F000579547950A94D2F740FD05C0015011092E -:1037000088F780E007C0BE01802F0E94130901974F -:10371000A9F3802FDF91CF911F910F91FF90EF9030 -:10372000DF90CF900895CF93DF93EC010E94531B5D -:10373000BE010E941309DF91CF910895CB010E9431 -:10374000931B089590910C019923D9F090910D014C -:103750009923B9F0982F9695969596959F3088F570 -:10376000E0910E01F0910F01E90FF11D877021E04A -:1037700030E001C0220F8A95EAF78181822B818394 -:10378000089540910E0150910F0120E030E09FEF2D -:10379000FA01E20FF31F6281681799F09F3F19F455 -:1037A000611101C0922F2F5F3F4F2E30310581F7FD -:1037B0009F3F39F0FA01E90FF11D97FDFA958283D9 -:1037C0000895089590910C019923E1F090910D01D5 -:1037D0009923C1F0982F9695969596959F3020F550 -:1037E000E0910E01F0910F01E90FF11D877021E0CA -:1037F00030E001C0220F8A95EAF7209581812823C5 -:103800002183089540910E0150910F0120E030E096 -:10381000FA01E20FF31F9281981301C012822F5F09 -:103820003F4F2E303105A1F7089581E090E0E091FF -:103830000E01F0910F01E80FF91F108201968031FF -:103840009105A9F708959091D401982B9093D401F4 -:10385000089580959091D40198239093D401089570 -:103860001092D40108959091D301982B9093D30195 -:10387000089580959091D30198239093D301089552 -:103880001092D30108959091D201982B9093D20178 -:10389000089580959091D20198239093D201089534 -:1038A0001092D20108958093C10108951092C10130 -:1038B000089540910E0150910F0120E030E080E02A -:1038C000FA01E20FF31F918191118F5F2F5F3F4F3C -:1038D0002F303105A9F70895E0910E01F0910F0105 -:1038E0008091D4018083E0910E01F0910F018081DD -:1038F0009091D301892B8083E0910E01F0910F010B -:1039000080819091D201892B80839091C10199236C -:1039100061F0E0910E01F0910F018081892B80838D -:103920000E94591C81111092C10180910E01909149 -:103930000F010C94B5108091EC01843021F11092AC -:10394000D60120E488E190E00FB6F894A895809322 -:1039500060000FBE2093600080E00E94AE0983B734 -:10396000817F846083BF83B7816083BF78948895AB -:1039700083B78E7F83BF88E10FB6F8948093600091 -:10398000109260000FBE089508950895CF930E948D -:10399000C41C0E94E2050E94C51CC0E08C2F0E943E -:1039A000CF06811105C0CF5FCE30C1F780E001C0E6 -:1039B00081E0CF9108950E942C160E94A9100C94CA -:1039C000AE0982E084BD93E095BD9AEF97BD8093E8 -:1039D0006E0008952FB7F8948091D7019091D80187 -:1039E000A091D901B091DA012FBF0895CF92DF9253 -:1039F000EF92FF920F931F932FB7F8944091D70146 -:103A00005091D8016091D9017091DA012FBF6A01FC -:103A10007B01EE24FF248C0120E030E0C016D106AB -:103A2000E206F30610F441505109481B590BCA0134 -:103A30001F910F91FF90EF90DF90CF9008951F920C -:103A40000F920FB60F9211248F939F93AF93BF9352 -:103A50008091D7019091D801A091D901B091DA015C -:103A60000196A11DB11D8093D7019093D801A09319 -:103A7000D901B093DA01BF91AF919F918F910F90CF -:103A80000FBE0F901F9018950E94AF0DF8942FEF66 -:103A900087EA91E6215080409040E1F700C00000A5 -:103AA00087E090EBDC018093F6019093F701A093FF -:103AB000F801B093F9012CE088E190E00FB6F8949A -:103AC000A895809360000FBE20936000FFCFEF9217 -:103AD000FF920F931F93CF93DF93E82EF12C8F2D3E -:103AE0000E94CF06C0E0D0E0082F10E098010C2E15 -:103AF00002C0359527950A94E2F720FD05C021966E -:103B0000C630D10599F709C06C2F7F2D80E00E9447 -:103B1000D706E812F4CF81E005C0F3948EE0F812E6 -:103B2000DECF80E0DF91CF911F910F91FF90EF905A -:103B30000895CF93C82F8CE20E94671D882321F03F -:103B40008C2FCF910C94671D80E0CF910895CF9377 -:103B50000E94EC1E811102C00E94D21EC5E6C15017 -:103B600049F00E94E2058FE39CE90197F1F700C05C -:103B70000000F5CF89E20E94991D811111C18AE2EE -:103B80000E94991D81110E94D21E85E00E94991DFC -:103B900081110E94441D0E94F71E8093D50187E089 -:103BA0000E94991D882399F18BE10E94991D882319 -:103BB00051F09091D50191FB882780F921E082276F -:103BC00080FB91F922C08EE00E94991D882351F05C -:103BD0009091D50192FB882780F921E0822780FB14 -:103BE00092F913C080E10E94991D9091D50188231C -:103BF00041F093FB882780F921E0822780FB93F92D -:103C000004C0892F809580FB90F99093D501809115 -:103C1000D5010E94FB1E0E94091F8093F50180EED2 -:103C20000E94991D882341F08091F501982F90956D -:103C300090FB80F98093F50189E30E94991D882308 -:103C400059F09091F50191FB882780F921E08227B6 -:103C500080FB91F99093F50182EE0E94991D8823D3 -:103C600059F09091F50192FB882780F921E0822795 -:103C700080FB92F99093F50186EE0E94991D8823AE -:103C800059F09091F50193FB882780F921E0822774 -:103C900080FB93F99093F50183EE0E94991D882390 -:103CA00059F09091F50194FB882780F921E0822753 -:103CB00080FB94F99093F50185E30E94991D882378 -:103CC00059F09091F50195FB882780F921E0822732 -:103CD00080FB95F99093F50181E30E94991D88235B -:103CE00059F09091F50196FB882780F921E0822711 -:103CF00080FB96F99093F50181E10E94991D88233C -:103D000059F09091F50197FB882780F921E08227EF -:103D100080FB97F99093F5018091F5010E940D1FAA -:103D20008091F50187FB882780F980930D0187E258 -:103D30000E94991DC82F8EE10E94991D8111C260B9 -:103D40008FE10E94991D8111C46080E20E94991D3B -:103D50008111C86081E20E94991D8111C06182E2D7 -:103D60000E94991D8111C06283E20E94991D8111F8 -:103D7000C06484E20E94991D882311F0C06802C0CB -:103D8000CC2329F08C2F0E94041F6C2F03C00E94AB -:103D9000001F682F70E080E090E0CF910C94261A0D -:103DA000CF9108956DEE7EEF80E090E00E942A258D -:103DB00060E082E090E00E94182560E083E090E0FF -:103DC0000E94182560E084E090E00E94182560E0E1 -:103DD00085E090E00C94182580E090E00E94122588 -:103DE00021E08D3E9E4F09F020E0822F089582E071 -:103DF00090E00C940A25682F82E090E00C9418253E -:103E000083E090E00C940A25682F83E090E00C9406 -:103E1000182584E090E00C940A25682F84E090E057 -:103E20000C9418258091DD0180FF0BC06091130177 -:103E300085E0689FB0011124759567957595679524 -:103E40002AC081FF09C06091130185E0689FB0011D -:103E50001124759567951FC082FF07C060911301FB -:103E600085E0689FB001112416C04091DE01442313 -:103E7000C9F060911201461788F72091130185E07F -:103E8000289F90011124429FC001439F900D11244F -:103E900070E00E94DC246038710540F46115710502 -:103EA00039F002C065E070E0862F08958FE708952D -:103EB00081E008958091DD0180FF08C060911101CB -:103EC00070E0759567957595679521C081FF06C06F -:103ED0006091110170E07595679519C082FF04C06B -:103EE0006091110170E010C08091DE018823C1F063 -:103EF000609110018617A0F790911101989FC00161 -:103F0000112470E00E94DC246038710528F46115EA -:103F1000710521F0862F08958FE7089581E00895B7 -:103F200061E070E0F4CF803F21F40E94121F819580 -:103F300004C0813F29F40E94121F8093E10108957B -:103F4000823F21F40E94121F819504C0833F29F40F -:103F50000E94121F8093E0010895893F19F40E9486 -:103F60005A1F05C08A3F31F40E945A1F81958093E1 -:103F7000E20108958B3F21F40E945A1F819504C0ED -:103F80008C3F29F40E945A1F8093E3010895843FD7 -:103F900021F48091DF01816017C0853F21F4809179 -:103FA000DF01826011C0863F21F48091DF018460CF -:103FB0000BC0873F21F48091DF01886005C0883FF6 -:103FC00031F48091DF0180618093DF0108958D3F9E -:103FD00021F48091DD0181600BC08E3F21F480913E -:103FE000DD01826005C08F3F29F48091DD0184608E -:103FF0008093DD010895803F39F48091E10187FFCE -:104000006CC01092E10169C0813F29F48091E10107 -:104010001816BCF362C09091E001823F29F497FF2B -:104020005CC01092E00159C0833F19F41916CCF31B -:1040300054C0893F41F48091E20118160CF04DC044 -:104040001092E2014AC08A3F29F48091E20187FF81 -:1040500044C0F6CF8B3F39F48091E30187FF3DC028 -:104060001092E3013AC08C3F29F48091E3011816C5 -:10407000BCF333C0843F21F48091DF018E7F17C0F1 -:10408000853F21F48091DF018D7F11C0863F21F4AF -:104090008091DF018B7F0BC0873F21F48091DF018E -:1040A000877F05C0883F31F48091DF018F7E809348 -:1040B000DF0113C08D3F21F48091DD018E7F0BC0A5 -:1040C0008E3F21F48091DD018D7F05C08F3F29F463 -:1040D0008091DD018B7F8093DD018091E001811172 -:1040E0000EC08091E10181110AC08091E20181112D -:1040F00006C08091E301811102C01092DE01089593 -:104100008FED91E00E94C0100E94EA1C9093DC01A8 -:104110008093DB0108951F93CF93DF938091DB01A0 -:104120009091DC010E94F61C4091DE01442321F0B5 -:104130002091140130E006C0209115015AE0259F1E -:10414000900111248217930708F482C08091E00146 -:104150001091E101D091E201C091E301811107C00A -:10416000111105C0D11103C0CC2309F471C04F3F18 -:1041700019F04F5F4093DE01181624F40E94121FBD -:104180008093E0018091E00187FF05C00E94121F2B -:1041900081958093E001111624F40E94121F8093F0 -:1041A000E1018091E10187FF05C00E94121F819506 -:1041B0008093E1016091E001662339F11091E10102 -:1041C000112319F1772767FD7095872F972F0E948C -:1041D000ED2323E333E343E35FE30E9451240E9492 -:1041E000BA236093E001612F772767FD7095872FD1 -:1041F000972F0E94ED2323E333E343E35FE30E9421 -:1042000051240E94BA236093E1011D1624F40E94F8 -:104210005A1F8093E2018091E20187FF05C00E944E -:104220005A1F81958093E2011C1624F40E945A1FA4 -:104230008093E3018091E30187FF05C00E945A1F2C -:1042400081958093E301DF91CF911F910C948020A1 -:10425000DF91CF911F910895EFEDF1E085E0DF014F -:104260001D928A95E9F71092DE011092DD01089502 -:10427000833081F128F4813059F08230D1F00895F3 -:10428000853009F449C0B8F1863009F456C0089564 -:1042900020911501862F90E0820F911D8F3F91058F -:1042A00020F4620F6093150108958FEF809315013C -:1042B000089520911401862F90E0820F911D8F3F69 -:1042C000910520F4620F6093140108958FEF80939D -:1042D0001401089520911301862F90E0820F911D03 -:1042E0008F3F910520F4620F6093130108958FEFC3 -:1042F00080931301089520911201862F90E0820F80 -:10430000911D8F3F910520F4620F60931201089573 -:104310008FEF80931201089520911101862F90E074 -:10432000820F911D8F3F910520F4620F6093110160 -:1043300008958FEF80931101089520911001862F29 -:1043400090E0820F911D8F3F910520F4620F6093E2 -:10435000100108958FEF809310010895833011F1BB -:1043600028F4813049F0823091F00895853081F150 -:1043700020F18630C1F1089580911501681720F46D -:10438000861B809315010895109215010895809160 -:104390001401681720F4861B80931401089510926D -:1043A0001401089580911301681720F4861B8093EF -:1043B0001301089510921301089580911201681756 -:1043C00020F4861B80931201089510921201089523 -:1043D00080911101681720F4861B809311010895C4 -:1043E00010921101089580911001681720F4861B26 -:1043F0008093100108951092100108958D3109F4F1 -:1044000042C020F58E3009F477C070F4873009F48B -:1044100059C018F48630F1F134C0883009F4A8C0CE -:104420008B3009F4A5C02DC0863109F4A1C038F441 -:10443000803109F472C0813109F479C022C0893118 -:1044400009F496C08B3109F44DC01BC0853309F4C3 -:1044500087C048F4873209F483C008F473C08932F6 -:1044600009F47EC00EC0833438F48A3308F068C083 -:10447000883309F47DC005C0833409F471C08834E1 -:1044800099F080E008950E9474230E94A9100E9470 -:10449000AE096EC08091D501817F8E7F8093D5015A -:1044A00081E08093E50108950E942C162FEF83EDA3 -:1044B00090E3215080409040E1F700C000000E944E -:1044C000441D56C09091D501892F8095817080FB45 -:1044D00090F919F0966098601DC0997F977F90932E -:1044E000D50146C09091D50191FB882780F921E044 -:1044F000822780FB91F909C09091D50192FB882712 -:1045000080F921E0822780FB92F99093D5018823DE -:1045100079F191609093D50108959091D50193FB25 -:10452000882780F921E0822780FB93F9EECF0E9453 -:104530002C1680910D0191E0892780930D0118C000 -:1045400027EC01C023EE280F61E070E080E090E0EE -:1045500004C0660F771F881F991F2A95D2F704C0E1 -:1045600061E070E080E090E00E94261A0E942C1624 -:1045700081E0089580E0089580E00895CF93C82FEA -:104580008091E501813079F018F08230D1F184C05A -:10459000A0910E01B0910F018C91813169F08232AE -:1045A00009F07CC009C0A0910E01B0910F018C915F -:1045B000813111F0823249F48C2F0E94BA2281118C -:1045C0001DC08C2F0E94FE211AC08C2F0E94BC227D -:1045D000811114C0C43179F048F4CB3079F0C03186 -:1045E00009F060C082E08093E50108C0C93219F08B -:1045F000C83321F057C01092E50154C081E08170AA -:1046000053C0C93289F118F5C43171F1A8F4C7302B -:1046100009F046C08AE08093150194E1909314015B -:1046200093E0909313018093120188E0809311012D -:1046300088E28093100134C0CE51C63088F5EC2F4B -:10464000F0E0E65DFE4F80818093E40129C0CE3426 -:10465000E9F020F4CB3421F56AE013C0C13579F0DC -:10466000C235F1F461E00DC08091E401882319F0B6 -:104670001092E40115C081E08093E50115C061E06E -:1046800006C08091E4010E9438210AC06AE080914E -:10469000E4010E94AE2104C01092E50180E004C054 -:1046A00081E002C080E0ABCFCF910895E1E8F0E077 -:1046B0008081886080838081816080838FB7F89457 -:1046C00093E09093890090ED909388008FBF0895B8 -:1046D000EFE6F0E08081826080830895EFE6F0E00D -:1046E00080818D7F80830895EFE6F0E0808192E005 -:1046F0008927808308951F920F920FB60F9211247D -:104700002F933F934F935F936F937F938F939F93D9 -:10471000AF93BF93EF93FF938091E6019091E701F0 -:1047200001969093E7018093E601811103C082E036 -:104730000E94AE09E091E701E695E695F0E0E25BC4 -:10474000FA4FE4918091E6018E1303C080E00E944D -:10475000AE09FF91EF91BF91AF919F918F917F91A2 -:104760006F915F914F913F912F910F900FBE0F90DE -:104770001F90189504D06894B1118DC0089570D021 -:1047800088F09F5790F0B92F9927B751A0F0D1F03A -:10479000660F771F881F991F1AF0BA95C9F712C0C4 -:1047A000B13081F077D0B1E0089574C0672F782FD1 -:1047B0008827B85F39F0B93FCCF386957795679530 -:1047C000B395D9F73EF490958095709561957F4F9C -:1047D0008F4F9F4F0895E89409C097FB3EF4909542 -:1047E0008095709561957F4F8F4F9F4F9923A9F0CA -:1047F000F92F96E9BB279395F69587957795679559 -:10480000B795F111F8CFFAF4BB0F11F460FF1BC09C -:104810006F5F7F4F8F4F9F4F16C0882311F096E92F -:1048200011C0772321F09EE8872F762F05C06623DD -:1048300071F096E8862F70E060E02AF09A95660F96 -:10484000771F881FDAF7880F9695879597F908954F -:1048500057FD9058440F551F59F05F3F71F0479531 -:10486000880F97FB991F61F09F3F79F08795089516 -:10487000121613061406551FF2CF4695F1DF08C035 -:10488000161617061806991FF1CF86957105610552 -:1048900008940895E894BB2766277727CB0197F9FA -:1048A00008950BD078C069D028F06ED018F0952309 -:1048B00009F05AC05FC01124EECFCADFA0F3959F64 -:1048C000D1F3950F50E0551F629FF001729FBB27F7 -:1048D000F00DB11D639FAA27F00DB11DAA1F649FA3 -:1048E0006627B00DA11D661F829F2227B00DA11D56 -:1048F000621F739FB00DA11D621F839FA00D611DDC -:10490000221F749F3327A00D611D231F849F600DFC -:10491000211D822F762F6A2F11249F5750408AF035 -:10492000E1F088234AF0EE0FFF1FBB1F661F771FC1 -:10493000881F91505040A9F79E3F510570F014C058 -:10494000AACF5F3FECF3983EDCF3869577956795A9 -:10495000B795F795E7959F5FC1F7FE2B880F911DDF -:104960009695879597F9089597F99F6780E870E085 -:1049700060E008959FEF80EC089500240A941616D5 -:10498000170618060906089500240A94121613063D -:10499000140605060895092E0394000C11F48823CB -:1049A00052F0BB0F40F4BF2B11F460FF04C06F5FE7 -:1049B0007F4F8F4F9F4F089597FB072E16F400945B -:1049C00007D077FD09D00E94F62407FC05D03EF4FD -:1049D000909581959F4F0895709561957F4F0895AB -:1049E000EE0FFF1F0590F491E02D0994AA1BBB1B4D -:1049F00051E107C0AA1FBB1FA617B70710F0A61BDF -:104A0000B70B881F991F5A95A9F780959095BC01FF -:104A1000CD010895F999FECF92BD81BDF89A9927ED -:104A200080B50895A8E1B0E042E050E00C94322552 -:104A3000262FF999FECF92BD81BDF89A019700B457 -:104A4000021639F01FBA20BD0FB6F894FA9AF99AF7 -:104A50000FBE08950196272F0E9419250C94182542 -:104A6000DC01CB01FC01F999FECF06C0F2BDE1BD2E -:104A7000F89A319600B40D9241505040B8F708951D -:044A8000F894FFCFD8 -:104A84002002B0093D0A1A0AE609B3090101C2016C -:104A940028080A03140A3F4D36390F05C2048C0452 -:104AA4005304E603FF03180431040102030405065A -:044AB40007080900E6 +:100000000C94E7020C942B030C942B030C942B03FD +:100010000C942B030C942B030C942B030C942B03A8 +:100020000C942B030C942B030C94B10E0C94830FA3 +:100030000C942B030C942B030C942B030C942B0388 +:100040000C942B030C9402240C942B030C942B0380 +:100050000C942B030C94A61D0C942B030C942B03D3 +:100060000C942B030C942B030C942B030C942B0358 +:100070000C942B030C942B030C942B030C942B0348 +:100080000C942B030C942B030C942B030C942B0338 +:100090000C942B030C942B030C942B030C942B0328 +:1000A0000C942B030C942B030C942B033B036A033B +:1000B000A603DF03F804F804F804F804F804F804CD +:1000C0003B038A03C3036704F804F804F804F80444 +:1000D000F804F804BB04C504CF04E104E80F0A10D7 +:1000E000F5100A10F5104C106F10F510C410D71051 +:1000F000D113D11312141214541490149016901694 +:10010000A81490169F159F156A16901690167E16C5 +:1001100000000000000000000000000000000000DF +:100120000000000000000BC80CC80DC80000000053 +:100130000000000000000000000015C816C817C825 +:100140000D200C200B300A30E00000001E001400CF +:1001500004001D0000074E001F001A0016001B00BF +:10016000000F4C002000080007000600E2002A00F3 +:100170002100150009001900E3004B0022001700C0 +:100180000A00050000004A0029002F0000002B0291 +:1001900000004D002D00300000002B00000050003A +:1001A00023001C000B00110000004F002400180069 +:1001B0000D001000E700520025000C000E00360074 +:1001C000E6002C00260012000F003700000F280068 +:1001D00027001300330038000007510017201620B5 +:1001E00015201430E40000000100010001000100AE +:1001F000E00000003A001E02200222020007510027 +:100200003B001F0221022302000F28003C002F02A6 +:1002100026022F00E2002C003D00300227023000B1 +:10022000E30052003E002402350035020000500079 +:100230002900360200002B0000004F002D0037027D +:1002400000002B0200004A003F003102380031005C +:1002500000004D004000240021001E0027784B00C4 +:100260004100250022001F0037744C004200260088 +:10027000230020002E7F2A004300380025022D0095 +:100280002E774E00010001000100010028710000DE +:100290000100010001000100E000000044006600D0 +:1002A000A60000000007B50045001E30F200203017 +:1002B000F60000006800F000F100F100F400B60064 +:1002C00069001F30F3002130F500B4006A00A90076 +:1002D000AA00A8000000B8002900F9000000FA00F8 +:1002E0000000B9000000F9000000FA000000AC00B6 +:1002F0006B004600530000000000AB006C004A0099 +:1003000050004D004978A9006D0052005100510085 +:100310004C74AE006E004B004F004E00000FAD005D +:100320006F00B100B300E5000007AA000100010062 +:1003300001000100E400000001000100010039009B +:10034000010000002900010001000100010001007E +:100350000100010001000100010001000100010095 +:100360000100010001000100010001000100010085 +:100370000100010001000100010001000000010076 +:100380000100010000000100000001000100010067 +:100390000000010000000100010001000100010057 +:1003A0000000010001000100010001000100010046 +:1003B0000100010001000100010001000100010035 +:1003C00001000100010001002A00010001000100FC +:1003D00001000100010001000100390001000000DE +:1003E00016034500720067006F0044006F0078003C +:1003F000200045005A000000160345007200670007 +:100400006F0044006F007800200045005A00000093 +:100410000403090409026D00040100A0FA090400A4 +:10042000000103010100092111010001223F000721 +:1004300005810308000A0904010001030102000903 +:100440002111010001224D000705820308000A095D +:1004500004020001030000000921110100012236FD +:10046000000705830308000A0904030001030000D4 +:100470000009211101000122390007058403100041 +:10048000011201100100000008EDFE071301000138 +:1004900002000105010906A101050719E029E71578 +:1004A00000250195087501810205081901290595A6 +:1004B0000575019102950175039101050719002940 +:1004C0007715002501957875018102C00501098025 +:1004D000A101850216010026B7001A01002AB70003 +:1004E000751095018100C0050C0901A10185031655 +:1004F0000100269C021A01002A9C027510950181B8 +:1005000000C005010902A1010901A10005091901A5 +:1005100029051500250195057501810295017503D1 +:1005200081010501093009311581257F9502750882 +:10053000810609381581257F950175088106050C0E +:100540000A38021581257F950175088106C0C0050E +:10055000010906A101050719E029E7150025019504 +:1005600008750181029501750881010508190129A5 +:10057000059505750191029501750391010507190E +:100580000029FF150025FF950675088100C00000B1 +:10059000000000000000000000010204060A0F171E +:1005A000202C3A4A5D71879DB3C7DAE9F5FCFFFC60 +:1005B000F5E9DAC7B39D87715D4A3A2C20170F0A17 +:1005C00006040201000000000000000000001124E9 +:1005D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FE +:1005E0008091F8019091F901A091FA01B091FB017D +:1005F0008730904BA740B04BB9F41092F80110929D +:10060000F9011092FA011092FB0114BE84B7877FA2 +:1006100084BF88E10FB6F894809360001092600068 +:100620000FBEE0E0FFE3099511E0A0E0B1E0E2E9F0 +:10063000FBE402C005900D92A433B107D9F721E085 +:10064000A4E3B1E001C01D92A83FB207E1F70E9408 +:10065000F70B0C94C7250C940000DC01462F50E0EA +:100660004A5051094831510508F0C2C14A5A5F4FFA +:10067000FA010C94772512962C91129780913C01E7 +:1006800090913D012223E1F015962C91207FC1F439 +:1006900001968330910510F082E090E090933D0147 +:1006A00080933C018091360190913701892B31F084 +:1006B00089E30E94591289E30E94211381EEF9C057 +:1006C000019790933D0180933C01892B09F090C1E3 +:1006D00081EEFAC012962C9180913A0190913B01E3 +:1006E000222331F101968330910510F082E090E0F1 +:1006F00090933B0180933A018091360190913701AC +:10070000892B31F08091350191E089278093350163 +:1007100081E078C012969C91129715968C91807FFB +:1007200091119CC009F0B7C080913A0190913B01B2 +:10073000019790933B0180933A01892B09F058C1AE +:1007400080913501811154C181E085C012969C9140 +:10075000129715968C91807F992359F0209136013C +:10076000309137018823B9F121153105A1F58BE2CC +:10077000A0C0882391F08091360190913701892B98 +:1007800061F48BE2A1C012969C91129715968C9100 +:10079000807F91111AC009F08FC08091380190912B +:1007A000390101979093390180933801892B09F021 +:1007B0001FC18091340181111BC182E04CC012968F +:1007C0008C911297882309F187C0209136013091CE +:1007D0003701811169C080913801909139010196EA +:1007E0008330910510F082E090E09093390180937E +:1007F0003801232B31F08091340191E089278093D7 +:10080000340182E00E94241BF3C015968C91982F2E +:10081000907FA1F080FD12C080913A0190913B0140 +:10082000892B61F48091380190913901892B31F441 +:1008300085E30E94591285E30E94211380913601BD +:100840009091370101979093370180933601892B5E +:1008500009F0CEC083E00E94451BCAC0209136013A +:1008600030913701882329F02115310511F484E3F3 +:1008700020C080913A0190913B010196833091050F +:1008800010F082E090E090933B0180933A01232B9B +:1008900009F038CF3DCF8091360190913701892BF7 +:1008A00009F042CF84E310C02115310509F093CF40 +:1008B00081E30E9459129CC08091360190913701CA +:1008C000892B09F06ACF81E30E94211391C012960F +:1008D0008C9112978823A1F1809136019091370174 +:1008E00001968330910510F082E090E090933701FB +:1008F0008093360180913C0190913D01892B31F02C +:1009000089E30E94591289E30E94211380913A01E0 +:1009100090913B01892B31F08091350191E089273D +:10092000809335018091380190913901892B31F004 +:100930008091340191E089278093340183E062CF74 +:1009400015968C91982F907F09F478CF80FD76CF03 +:1009500080913A0190913B01892B09F06FCF8091F2 +:10096000380190913901892B09F068CF8EE20E94FD +:1009700059128EE261CF12968C91882319F080EF84 +:1009800090E013C080EF90E017C012968C918823FE +:1009900019F080EF90E01BC080EF90E021C012962C +:1009A0008C91882339F081EF90E00E941A2082EF29 +:1009B00090E011C081EF90E00E94822082EF90E0F1 +:1009C00013C012968C91882349F081EF90E00E9429 +:1009D0001A2083EF90E00E941A2008C081EF90E077 +:1009E0000E94822083EF90E00E9482200E940721D3 +:1009F00080E090E008950895E0910E01F0910F01DC +:100A00008081827219F0259A2D9A06C00E943011B9 +:100A100081FDF9CF25982D988091BB0181FF03C0FE +:100A2000269A2E9A02C026982E988091BB0182FFAA +:100A300003C0279A2F9A089527982F9808950C9409 +:100A4000FC0456985E9825982D9826982E982798FD +:100A50002F988FEF90E09093890080938800909377 +:100A60008B0080938A0090938D0080938C00259A50 +:100A70002D9A2FEF80E792E0215080409040E1F7DF +:100A800000C00000269A2E9A2FEF80E792E02150B6 +:100A900080409040E1F700C00000279A2F9A2FEF86 +:100AA00080E792E0215080409040E1F700C00000D4 +:100AB00025982D982FEF80E792E0215080409040BC +:100AC000E1F700C0000026982E982FEF80E792E013 +:100AD000215080409040E1F700C0000027982F98F7 +:100AE00056985E9825982D9826982E9827982F9896 +:100AF000089589EA8093800089E08093810024989A +:100B00002C983F988AB18F748AB96E98479A8BB1A6 +:100B1000806B8BB9769A0E9421050C94FB0480E2CD +:100B20008093000180913E0181110EC00E94DE057C +:100B300081E080933E012FEF83ED90E321508040D0 +:100B40009040E1F700C0000080E40E94E40580933B +:100B5000000181112EC00E940E06809300018111B8 +:100B600028C00E940E0680930001811122C08FE3ED +:100B70000E940E068093000181111BC00E94060690 +:100B800080E40E94E40580930001811112C08CE092 +:100B90000E940E068093000181110BC00E940E0678 +:100BA00080930001811105C08FE30E940E0680939F +:100BB00000010E9406068091000108951092B9007C +:100BC0008AE08093B800089594EA9093BC009091D5 +:100BD000BC0097FFFCCF9091B900987F983021F02E +:100BE000903111F081E008958093BB0084E88093F8 +:100BF000BC008091BC0087FFFCCF8091B900887F4A +:100C0000883111F0803471F780E0089584E9809391 +:100C1000BC008091BC0084FDFCCF08958093BB0094 +:100C200084E88093BC008091BC0087FFFCCF90914A +:100C3000B900987F81E0983209F480E0089584E853 +:100C40008093BC008091BC0087FFFCCF8091BB00EB +:100C5000089580910001811115C080E40E94E4058F +:100C60008093000181110CC082E10E940E068093E6 +:100C70000001811105C08FEF0E940E0680930001D4 +:100C80000E94060684B1807F84B985B1807F85B9D2 +:100C90008AB1837F8AB98BB1837F8BB93E9846989E +:100CA00008950E948F05809300010E94290680B359 +:100CB0008C7080BB81B3836F81BBEEE4F1E0A0E474 +:100CC000B1E011921D9281E0EC35F807D1F70C9458 +:100CD0007905BF92CF92DF92EF92FF920F931F930D +:100CE000CF93DF9380910001882379F080913F01B9 +:100CF0008F5F80933F01811108C00E948F05809310 +:100D00000001811102C00E94210500E411E0C0E051 +:100D1000D0E0DD24D39482E0C82EEE24E394F12CBD +:100D2000C73000F580910001811162C080E40E940B +:100D3000E40580930001811112C082E10E940E0639 +:100D40008093000181110BC0C7010C2E01C0880FD8 +:100D50000A94EAF780950E940E06809300010E9493 +:100D6000060646C0CA30A1F028F4C83059F0C93090 +:100D700061F005C0CC3089F070F0CD3089F0209A58 +:100D8000289810C0219A29980DC0229A2A980AC042 +:100D9000239A2B9807C0529A01C0539A5B9802C0BD +:100DA0003E9A4698E0EAEA95F1F78FB179995AC0F0 +:100DB00092E081708D25892B7C9B02C090E001C060 +:100DC00094E0892B7D9B02C090E001C098E0892BC4 +:100DD0007E9B02C090E001C090E1892B9FB190956D +:100DE000991F9927991F9295990F907E892B0FC073 +:100DF0008091000181114BC080E40E94E405809342 +:100E00000001882389F1B12C0E9406068B2DF80180 +:100E10009081981719F08083C09201010E942906E1 +:100E200021960F5F1F4FCE30D10509F079CF809109 +:100E30000101882371F1815080930101882339F0E9 +:100E40008FE99FE00197F1F700C0000022C0AEE4F7 +:100E5000B1E0E0E4F1E081918D9391E0EE34F907A7 +:100E6000D1F717C090E0A5CF83E10E940E068093D2 +:100E700000018111C8CF81E40E94E4058093000144 +:100E80008111C1CF0E941F06B82EB094BDCF80E063 +:100E9000BECF0E941F0581E0DF91CF911F910F917E +:100EA000FF90EF90DF90CF90BF900895E82FF0E093 +:100EB000E25BFE4F808108950895089596E0799F42 +:100EC000F001112494E5899FE00DF11D1124E60F36 +:100ED000F11DEE0FFF1FE05CFE4F85919491089588 +:100EE000880F991F80579040FC0185919491089537 +:100EF000880F991F805F9E4FFC0185919491089502 +:100F00000F931F93CF93DF93EC01811520E392079A +:100F100030F5811530E2930708F0B1C08B3B9105A5 +:100F200088F4883A910508F058C0853A910508F090 +:100F300049C08430910508F043C08130910509F41F +:100F4000B2C1AEC18F3F910509F0D0F5803F910548 +:100F500008F092C0805E9109089790F1A1C1C11577 +:100F600081E5D807A8F4C23090E5D90708F09FC002 +:100F7000C11520E5D20709F486C008F092C0C1155A +:100F800080E4D80708F08CC18E011127106CCCC109 +:100F9000C11590E8D90758F4C11520E7D20708F029 +:100FA0007BC1C11530E6D30708F423C179C1C1154F +:100FB00080E9D80708F074C18E011F70106AB4C1AF +:100FC0008E01B2C1853A910509F470C1863A910546 +:100FD00009F46FC103E810E4A7C1883A910509F448 +:100FE0006BC1893A910509F46AC18A3A910509F4FD +:100FF00069C18B3A910509F468C18C3A910509F4ED +:1010000067C18D3A910509F466C1803B910509F4E9 +:1010100065C18E3A910509F464C18F3A910509F4CE +:1010200063C1813B910509F462C1823B910509F4DA +:1010300061C1833B910509F460C1843B910509F4CA +:101040005FC1853B910509F45EC1863B910509F4BA +:101050005DC1873B910509F45CC1883B910509F4AA +:101060005BC1893B910509F45AC18A3B910509F09E +:1010700059C10AE216E458C18C01106555C19F7030 +:101080000E94780752C10E94B3169FEF24E33CE010 +:10109000915020403040E1F700C000000E94CB1D7D +:1010A00043C18091D70181608093D7013DC10E94E7 +:1010B000731F811102C00E94591F0E94901F90E06F +:1010C0009093F8018093F701C23080E5D80721F4AE +:1010D0008091F701816086C0C43090E5D90721F482 +:1010E0008091F70182607EC0C63020E5D20721F4EE +:1010F0008091F701846076C0C83030E5D30719F4D9 +:101100008091F70127C0CA3080E5D80721F480918B +:10111000F701806167C0CC3090E5D90721F4809158 +:10112000F70180625FC0CE3020E5D20721F48091C4 +:10113000F701806457C0C03130E5D30721F48091B6 +:10114000F70180684FC0C23180E5D80729F480914B +:10115000F7018460886046C0C33090E5D90721F468 +:101160008091F7018E7F3EC0C53020E5D20721F483 +:101170008091F7018D7F36C0C73030E5D30721F469 +:101180008091F7018B7F2EC0C93080E5D80719F414 +:101190008091F70126C0CB3090E5D90721F48091EA +:1011A000F7018F7E1FC0CD3020E5D20721F480915A +:1011B000F7018F7D17C0CF3030E5D30721F4809140 +:1011C000F7018F7B0FC0C13180E5D80721F48091F2 +:1011D000F7018F7707C0C331D04531F48091F70113 +:1011E0008B7F877F8093F7018091F7010E94941F86 +:1011F0009BC08D2F99278F70992781309105E9F435 +:101200008E01037011279C0102C0220F331F0A9523 +:10121000E2F789011C68CE0164E0880F991F6A9586 +:10122000E1F788279370082B192B73E0CC0FDD1F93 +:101230007A95E1F7C076DD272CC08230910529F43C +:101240001C2F0027016F106A6FC08330910561F475 +:10125000CE018370992701E010E002C0000F111F3A +:101260008A95E2F71C680EC0049709F05DC0CE01B4 +:101270008370992701E010E002C0000F111F8A95CA +:10128000E2F71A6843E0CC0FDD1F4A95E1F7C07E14 +:10129000D7700C2B1D2B48C08E011F70106244C0EC +:1012A00000E010E041C001E010E03EC001E810E4C1 +:1012B0003BC002E810E438C002EE14E435C009EE89 +:1012C00014E432C00AEE14E42FC005EB14E42CC081 +:1012D00006EB14E429C007EB14E426C00CEC14E47C +:1012E00023C00DEC14E420C003E815E41DC00AE897 +:1012F00015E41AC002E915E417C004E915E414C0A6 +:1013000001E216E411C003E216E40EC004E216E4A2 +:101310000BC005E216E408C006E216E405C007E2C9 +:1013200016E402C000E014E4C801DF91CF911F91E0 +:101330000F91089596E0799FF001112494E5899F1B +:10134000E00DF11D1124E60FF11DEE0FFF1FE05C13 +:10135000FE4F85919491803E9105E0F4803C91058B +:1013600058F58133910509F46FC048F4893291052D +:1013700009F463C08A32910509F46DC072C08933E3 +:101380009105E9F082389105D1F08533910509F492 +:101390004DC067C0833E910581F138F4803E9105D0 +:1013A000B9F0823E9105D9F05CC0863E910561F1AD +:1013B000873E9105A1F155C00E94700708952091C4 +:1013C000F70120FD02C021FF4CC080EE90E049C033 +:1013D0008091F70180FFF9CF89E390E042C08091CE +:1013E000F70182FF0EC08091F70184FF03C080E007 +:1013F00090E037C083EE90E034C08091F70182FF27 +:10140000F2CF82EE90E02DC08091F70183FF0BC0F8 +:101410008091F70184FDEBCF87EE90E022C08091B0 +:10142000F70183FFF5CF86EE90E01BC08091F701B6 +:1014300085FF07C089E290E014C08091F70185FF25 +:10144000F9CF85E390E00DC08091F70186FF07C0DA +:101450008AE290E006C08091F70186FFF9CF81E330 +:1014600090E00E948007089508950C94340A8091BA +:101470006C010895CF93DF9300D01F92CDB7DEB7F4 +:101480002091EE01243019F523E029839B838A8380 +:101490002093E9008FEF9091E800815095FD06C000 +:1014A00095ED9A95F1F700008111F5CF8091E80054 +:1014B00085FF0DC040E050E063E070E0CE01019692 +:1014C0000E94A40C8091E8008E778093E8000F9032 +:1014D0000F900F90DF91CF910895CF93DF9300D0BD +:1014E0001F92CDB7DEB72091EE01243021F522E026 +:1014F00029839B838A8383E08093E9008FEF909117 +:10150000E800815095FD06C095ED9A95F1F7000031 +:101510008111F5CF8091E80085FF0DC040E050E0DB +:1015200063E070E0CE0101960E94A40C8091E80077 +:101530008E778093E8000F900F900F90DF91CF91FE +:1015400008952091EE012430F1F422E02093E90087 +:101550002FEF3091E800215035FD06C035ED3A956A +:10156000F1F700002111F5CF2091E80025FF0BC015 +:1015700040E050E065E070E00E94A40C8091E8003B +:101580008E778093E8000895CF93DF93EC018091EC +:10159000EE01843009F046C090910C019923D9F0F6 +:1015A00090910D019923B9F08093E9008FEF90910C +:1015B000E800815095FD06C095E19A95F1F700008D +:1015C0008111F5CF8091E80085FF2CC040E050E00C +:1015D00060E170E017C081E08093E9008FEF9091A7 +:1015E000E800815095FD06C095ED9A95F1F7000051 +:1015F0008111F5CF8091E80085FF14C040E050E0F4 +:1016000068E070E0CE010E94A40C8091E8008E7723 +:101610008093E80080E1FE01ACE5B1E001900D921D +:101620008A95E1F7DF91CF9108958091ED018111C5 +:1016300009C00E94360E0E94930E8091E2008460E1 +:101640008093E20008951092ED01089508950C949E +:10165000EF230E94621D0E94F5230E9430110C941A +:10166000350A42E061EC81E00E94B00D42E061EC9D +:1016700082E00E94B00D42E061EC83E00E94B00D78 +:1016800042E161EC84E00C94B00D8091F001833074 +:1016900009F455C030F4813071F0823009F48EC005 +:1016A00008958A3009F47AC08B3009F460C089301B +:1016B00009F09CC020C08091EF01813A09F096C0EA +:1016C0008091E800877F8093E8008091F3019091FA +:1016D000F401892B21F060E080E090E003C060E13C +:1016E0008CE591E070E00E94ED0C8091E8008B7732 +:1016F0008093E80008958091EF01813209F076C06F +:101700008091F3019091F401009719F0039709F08B +:101710006DC08091E800877F8093E8008091E800A9 +:1017200082FD05C08091EE018111F8CF5FC08091EC +:10173000F10080936C018091E8008B7753C0809119 +:10174000EF01813A09F052C08091F3019091F401C8 +:10175000892B09F04BC08091E800877F8093E800D7 +:101760008091E80080FFFCCF80910C0136C0809111 +:10177000EF018132D9F58091F3019091F401892B29 +:10178000A9F58091E800877F8093E8000E94E50D2D +:101790008091F10180930C010C94B3168091EF01BC +:1017A000813221F58091E800877F8093E8000E94D4 +:1017B000E50D8091F20180936D0108958091EF0114 +:1017C000813AA1F48091E800877F8093E8008091BE +:1017D000E80080FFFCCF80916D018093F100809143 +:1017E000E8008E778093E8000C94E50D089584B7A7 +:1017F000877F84BF88E10FB6F894809360001092D1 +:1018000060000FBE90E080E80FB6F894809361000E +:10181000909361000FBE0E947F110E94360E0E94BD +:10182000930E8091E20084608093E20078940E949D +:101830000E110E94811182E091E00E942B110E9402 +:10184000DD238091EE01853069F40E94221D809194 +:10185000EC018823B1F30E944D1D882391F30E946F +:101860008E0CEFCF0E948711ECCF292F3327233026 +:101870003105A9F06CF42130310509F442C0223061 +:10188000310509F043C08DE690E024E134E042C028 +:1018900021323105C9F02232310519F137C09927BB +:1018A0008130910541F08230910541F0892B71F52D +:1018B000E0E1F4E005C0E8EFF3E002C0E0EEF3E0C1 +:1018C000849190E09F0126C0643000F5E62FF0E09F +:1018D000EE0FFF1FEE5DFE4F2081318189E090E029 +:1018E00019C0643098F4E62FF0E0DF01AA0FBB1FA7 +:1018F000A65EBE4F2D913C91EA5EFE4F808190E046 +:1019000009C082E190E021E834E004C080E090E08A +:1019100020E030E0FA0131832083089580E189BD21 +:1019200082E189BD09B400FEFDCF8091D8008F7D92 +:101930008093D8008091E00082608093E0008091E5 +:10194000E00081FDFCCF0895CF92DF92EF92FF92ED +:101950000F931F93CF93DF937C018B01EA010E94C9 +:10196000060E811131C0209731F088819981081BC2 +:10197000190BE80EF91EC12CD12C0115110519F116 +:101980008091E80085FD14C08091E8008E778093F7 +:10199000E800209741F0888199818C0D9D1D9983E5 +:1019A000888385E011C00E94060E882331F30CC0A5 +:1019B000F70181917F018093F10001501109FFEF40 +:1019C000CF1ADF0ADACF80E0DF91CF911F910F911C +:1019D000FF90EF90DF90CF9008952091F501309126 +:1019E000F6012617370748F06115710539F4209183 +:1019F000E8002E772093E80001C0B901FC0120E047 +:101A000061157105B9F18091EE01882309F440C098 +:101A1000853009F43FC08091E80083FD3DC080918E +:101A2000E80082FF06C08091E80082FF26C080E0C7 +:101A300008958091E80080FFE3CF2091F30080912A +:101A4000F20090E0922B6115710551F088309105FC +:101A500038F421912093F100615071090196F3CF80 +:101A600021E0089709F020E08091E8008E778093CC +:101A7000E800C6CF2111C7CFD6CF8091EE018823D1 +:101A800039F0853039F08091E80083FFCCCF04C075 +:101A900082E0089583E0089581E008952091F501A2 +:101AA0003091F6012617370748F06115710539F4B2 +:101AB0002091E8002E772093E80001C0B901FC01D5 +:101AC00020E061157105C1F18091EE01882309F4D0 +:101AD00041C0853009F440C08091E80083FD3EC0DC +:101AE0008091E80082FF06C08091E80082FF27C055 +:101AF00080E008958091E80080FFE3CF2091F3001B +:101B00008091F20090E0922B6115710559F08830B8 +:101B1000910540F424912093F100319661507109B0 +:101B20000196F2CF21E0089709F020E08091E800CB +:101B30008E778093E800C5CF2111C6CFD5CF809195 +:101B4000EE01882339F0853039F08091E80083FF79 +:101B5000CBCF04C082E0089583E0089581E008952A +:101B6000982F973058F59093E900981739F07091B5 +:101B7000EC002091ED005091F00003C0242F762F4F +:101B800050E021FF19C03091EB003E7F3093EB0015 +:101B90003091ED003D7F3093ED003091EB003160EE +:101BA0003093EB007093EC002093ED005093F00025 +:101BB0002091EE0027FF07C09F5FD3CF8F708093E7 +:101BC000E90081E0089580E008958091EF0187FDAC +:101BD00005C08091E80080FF0EC012C08091E8002F +:101BE00082FD05C08091EE018111F8CF08958091AA +:101BF000E8008B7708C08091EE018111EACF08954B +:101C00008091E8008E778093E80008958091E40049 +:101C10009091E50045E62091EC0020FF21C0209145 +:101C2000E80020FD21C02091EE01222389F025301B +:101C300089F02091EB0025FD0FC02091E400309148 +:101C4000E5002817390739F3415041F0C901E3CFC6 +:101C500082E0089583E0089581E0089584E0089586 +:101C60002091E80022FFDFCF80E008950E94A40EBB +:101C70000E94AC0EE0EEF0E0808181608083E8EDB0 +:101C8000F0E080818F77808319BCA7EDB0E08C9164 +:101C90008E7F8C9380818F7E80831092ED010895DA +:101CA0000F931F93CF93DF930E94A40E0E94AC0E5C +:101CB000C8EDD0E088818F778883888180688883A9 +:101CC00088818F7D888319BC1092EE011092EA0101 +:101CD0001092EC011092EB0100EE10E0F80180810F +:101CE0008B7F808388818160888342E060E080E030 +:101CF0000E94B00DE1EEF0E080818E7F8083E2EE05 +:101D0000F0E0808181608083808188608083F80139 +:101D100080818E7F8083888180618883DF91CF91ED +:101D20001F910F910895E8EDF0E080818F7E808310 +:101D3000E7EDF0E080818160808384E082BF81E014 +:101D40008093ED010C94500EE8EDF0E080818E7FE1 +:101D500080831092E20008951092DA001092E10060 +:101D600008951F920F920FB60F9211242F933F9355 +:101D70004F935F936F937F938F939F93AF93BF9393 +:101D8000EF93FF938091E10082FF0BC08091E2000E +:101D900082FF07C08091E1008B7F8093E1000E9469 +:101DA0000D118091DA0080FF1FC08091D80080FF64 +:101DB0001BC08091DA008E7F8093DA008091D90079 +:101DC00080FF0DC080E189BD82E189BD09B400FEBC +:101DD000FDCF81E08093EE010E94150B05C019BC78 +:101DE0001092EE010E94230B8091E10080FF19C048 +:101DF0008091E20080FF15C08091E2008E7F809389 +:101E0000E2008091E20080618093E2008091D8003E +:101E100080628093D80019BC85E08093EE010E9417 +:101E2000270B8091E10084FF30C08091E20084FFA5 +:101E30002CC080E189BD82E189BD09B400FEFDCFDF +:101E40008091D8008F7D8093D8008091E1008F7EB3 +:101E50008093E1008091E2008F7E8093E200809188 +:101E6000E20081608093E2008091EA01882311F012 +:101E700084E007C08091E30087FF02C083E001C0D7 +:101E800081E08093EE010E94290B8091E10083FFA5 +:101E900029C08091E20083FF25C08091E100877F07 +:101EA0008093E10082E08093EE011092EA0180913C +:101EB000E1008E7F8093E1008091E2008E7F80932D +:101EC000E2008091E20080618093E20042E060E005 +:101ED00080E00E94B00D8091F00088608093F00057 +:101EE0000E94260BFF91EF91BF91AF919F918F912F +:101EF0007F916F915F914F913F912F910F900FBE06 +:101F00000F901F9018951F920F920FB60F921124E9 +:101F10002F933F934F935F936F937F938F939F93F1 +:101F2000AF93BF93CF93EF93FF93C091E900CF702E +:101F30008091EC001092E9008091F000877F8093FF +:101F4000F00078940E94BF0F1092E9008091F00099 +:101F500088608093F000C093E900FF91EF91CF91EA +:101F6000BF91AF919F918F917F916F915F914F91B1 +:101F70003F912F910F900FBE0F901F9018951F93B8 +:101F8000CF93DF93CDB7DEB7AA970FB6F894DEBF35 +:101F90000FBECDBFEFEEF1E08091F100819321E023 +:101FA000E73FF207C9F70E94450B8091E80083FFE5 +:101FB0001CC12091EF013091F001832F90E08A3015 +:101FC000910508F012C1FC01E259FF4F0C947725EE +:101FD000203881F0223809F008C18091F3018F7018 +:101FE0008093E9008091EB0085FB882780F91092AF +:101FF000E90006C08091EB019091EC0191118260A3 +:102000009091E800977F9093E8008093F100109200 +:10201000F100C5C0822F8D7F09F0E7C0222319F09F +:10202000223061F0E2C08091F101813009F0DDC021 +:10203000333009F080E08093EC0128C08091F101F9 +:10204000811124C02091F3012F7009F4CEC0209398 +:10205000E9008091EB0080FF19C08091EB003330E4 +:1020600011F4806211C080618093EB0081E090E008 +:10207000022E01C0880F0A94EAF78093EA001092BA +:10208000EA008091EB0088608093EB001092E900F9 +:102090008091E800877F86C02111A7C01091F101CF +:1020A0001F778091E3008078812B8093E3008091FB +:1020B000E800877F8093E8000E94E50D8091E800AA +:1020C00080FFFCCF8091E30080688093E3001123C0 +:1020D00011F083E001C082E08093EE0186C02058B9 +:1020E000223008F082C08091F1019091F2018C3D84 +:1020F00023E0920779F583E08A838AE289834FB7E8 +:10210000F894DE01139620E03EE051E2E32FF0E088 +:1021100050935700E49120FF03C0E295EF703F5FBA +:10212000EF708E2F90E0EA3010F0C79601C0C09695 +:102130008D939D932F5F243149F74FBF8091E80025 +:10214000877F8093E8006AE270E0CE0101960E94EA +:10215000ED0C14C0AE014F5F5F4F6091F3010E9420 +:10216000350C009709F441C02091E800277F2093A7 +:10217000E800BC0189819A810E944E0D8091E8009F +:102180008B778093E80031C0203879F58091E800A2 +:10219000877F8093E8008091EA018093F10080912D +:1021A000E8008E778093E8000E94E50D1EC02111A3 +:1021B0001CC09091F1019230C0F48091E800877FBB +:1021C0008093E8009093EA010E94E50D8091EA0176 +:1021D000811104C08091E30087FF02C084E001C048 +:1021E00081E08093EE010E94310B8091E80083FF33 +:1021F0000AC08091E800877F8093E8008091EB001F +:1022000080628093EB00AA960FB6F894DEBF0FBEF3 +:10221000CDBFDF91CF911F9108950895CF93809105 +:10222000EE018823B1F08091E9008F709091EC006D +:1022300090FF02C090E801C090E0C92FC82B109217 +:10224000E9008091E80083FD0E94BF0FCF70C0932A +:10225000E900CF91089590937301809372010895DE +:10226000E0917201F0917301309721F00190F081BB +:10227000E02D099480E00895E0917201F0917301DE +:10228000309721F00280F381E02D09940895E091C8 +:102290007201F0917301309721F00480F581E02DF7 +:1022A000099408952091700130917101821793076C +:1022B00071F09093710180937001E0917201F0913F +:1022C0007301309721F00680F781E02D099408957D +:1022D00020916E0130916F018217930771F09093F6 +:1022E0006F0180936E01E0917201F091730130975C +:1022F00021F00084F185E02D0994089508950C944F +:102300007E110E94681D0E9451060C942E1ECF92D1 +:10231000DF92EF92FF920F931F93CF93DF93CDB78E +:10232000DEB72B970FB6F894DEBF0FBECDBF0E946D +:10233000690635E7E32E31E0F32E00E010E0C02E11 +:10234000802F0E945607F701D1907F01D826B1F463 +:102350000F5F1F4F0E30110591F78FEF89838A832E +:102360001B820E94711D8160782F9D838C8349811F +:102370005A816B818D810E942A1241C09091D701B0 +:1023800091FF04C08B870E945C078B8520E030E0C2 +:102390004D2D50E0922FBA01022E02C0759567951F +:1023A0000A94E2F760FF25C02E83CF82EE24E394E7 +:1023B000F12C02C0EE0CFF1C9A95E2F790E08E2102 +:1023C0009F2121E0892B09F420E028870E94711DBC +:1023D0008160782F9A8789874E815F8168858A8599 +:1023E0000E942A12F801EB58FE4F80818E258083CF +:1023F00006C02F5F3F4F2630310561F6A9CF0E94FE +:102400001221109174010E9430111817A1F00E943E +:102410003011809374012B960FB6F894DEBF0FBE77 +:10242000CDBFDF91CF911F910F91FF90EF90DF9083 +:10243000CF900C94350A2B960FB6F894DEBF0FBEE2 +:10244000CDBFDF91CF911F910F91FF90EF90DF9063 +:10245000CF900895CF93DF93CDB7DEB72B970FB60C +:10246000F894DEBF0FBECDBF4F83588769877A8748 +:102470008B87DE01119686E0FD0111928A95E9F7BE +:1024800085E0FE01379601900D928A95E1F749812A +:102490005A816B817C818D819E810E947F192B9650 +:1024A0000FB6F894DEBF0FBECDBFDF91CF91089578 +:1024B0000895CF93C82F882309F4C1C0823859F4F6 +:1024C0000E94301181FDBBC089E30E94291C0E943B +:1024D000F31C89E30CC0833879F40E94301180FD2D +:1024E000AEC083E50E94291C0E94F31C83E50E9474 +:1024F000691CCF910C94F31C843859F40E9430115C +:1025000082FD9DC087E40E94291C0E94F31C87E481 +:10251000EECF8CEF8C0F813A48F48C2F0E9445232C +:1025200081118DC08C2F0E94291CE3CF80E28C0F7B +:10253000883048F4C77081E001C0880FCA95EAF777 +:102540000E94AA1CD6CF8BE58C0F833078F4C53A55 +:1025500029F0C63A31F482E890E005C081E890E0C5 +:1025600002C083E890E0CF910C94521188E58C0F63 +:10257000833108F064C0C83A39F1C93A41F1CA3A26 +:1025800049F1CB3A51F1CC3A59F1CD3A61F1C03B26 +:1025900069F1CE3A71F1CF3A79F1C13B81F1C23B99 +:1025A00089F1C33B91F1C43B99F1C53BA1F1C63B15 +:1025B000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B75 +:1025C000C9F58AE292E038C082EE90E035C089EE2B +:1025D00090E032C08AEE90E02FC085EB90E02CC0F6 +:1025E00086EB90E029C087EB90E026C08CEC90E071 +:1025F00023C08DEC90E020C083E891E01DC08AE804 +:1026000091E01AC082E991E017C084E991E014C01A +:1026100081E292E011C083E292E00EC084E292E097 +:102620000BC085E292E008C086E292E005C087E236 +:1026300092E002C080E090E0CF910C946811CF91BD +:102640000895882309F44BC0823859F40E94301150 +:1026500081FF45C089E30E94291C0E94F31C89E385 +:102660000CC0833871F40E94301180FF38C083E5BC +:102670000E94291C0E94F31C83E50E94691C0C9493 +:10268000F31C843859F40E94301182FF28C087E47B +:102690000E94291C0E94F31C87E4EFCF9CEF980F47 +:1026A000913A58F390E2980F983050F4877091E087 +:1026B00001C0990F8A95EAF7892F0E94B01CDFCFDD +:1026C0009BE5980F933020F480E090E00C94521139 +:1026D000885A833120F480E090E00C9468110895CA +:1026E000882321F00E94AA1C0C94F31C08958823CF +:1026F00021F00E94B01C0C94F31C0895CF92DF923D +:10270000EF92FF920F931F93CF93DF93CDB7DEB776 +:1027100028970FB6F894DEBF0FBECDBF8C0185E0C1 +:10272000F801DE01119601900D928A95E1F7F8010A +:10273000D080E180F280558152955F702381348191 +:10274000232B39F0FFEFEF1206C081E0DF1203C048 +:1027500003C081E001C080E080FDE2C2C8015F8368 +:102760000E945812D982EA8269817A818F2D0E9453 +:10277000251C9E8388870E94D91B0E94AC1A4E811B +:102780005F816885FF2029F00E94C71C68855F81F2 +:102790004E81E42FE295EF70F0E0E858FF4F0C9483 +:1027A0007725842F807F142F1F70882311F01295B6 +:1027B000107FFF20B1F0112309F467C280E2860F79 +:1027C000883028F4812F68870E94AA1C04C0812FBA +:1027D00068870E94BA1C688568870E94F31C688518 +:1027E00054C2862F68870E9421136885112309F43B +:1027F00097C2605E812F683018F40E94B01C02C03E +:102800000E94C01C28960FB6F894DEBF0FBECDBF45 +:10281000DF91CF911F910F91FF90EF90DF90CF90BC +:102820000C94F31C242F207F842F8F70203211F002 +:102830008295807F662319F0613019F12BC0FF204B +:10284000B1F0552309F493C1513009F090C1289695 +:102850000FB6F894DEBF0FBECDBFDF91CF911F91B1 +:102860000F91FF90EF90DF90CF900C94DA1C5523DE +:1028700019F0513009F454C28E830E94DD1C8E8100 +:1028800089C1FF2021F0523008F04AC270C15111B5 +:1028900047C280C1FF2021F0552309F468C1F5C16A +:1028A000552309F477C105C2242F26952695237058 +:1028B00030E02115310521F021303105C9F030C259 +:1028C000FF2021F0862F942F937002C080E090E0CB +:1028D00028960FB6F894DEBF0FBECDBFDF91CF9123 +:1028E0001F910F91FF90EF90DF90CF900C945211B9 +:1028F000FF2021F0862F942F937002C080E090E09B +:1029000028960FB6F894DEBF0FBECDBFDF91CF91F2 +:102910001F910F91FF90EF90DF90CF900C94681172 +:10292000862FFF2019F00E941A2002C00E948220E8 +:1029300028960FB6F894DEBF0FBECDBFDF91CF91C2 +:102940001F910F91FF90EF90DF90CF900C94072193 +:10295000842F837009F076C0F110E2C1262F2295F2 +:1029600026952770220F220F862F8F70C82ED12C0C +:10297000E12CF12C022E04C0CC0CDD1CEE1CFF1C43 +:102980000A94D2F764FF10C06FE070E080E090E03E +:1029900004C0660F771F881F991F2A95D2F760958C +:1029A00070958095909503C060E070E0CB01242F76 +:1029B000269526952370422F50E042305105D1F0E4 +:1029C0004330510559F16C297D298E299F294130C9 +:1029D000510541F128960FB6F894DEBF0FBECDBF6A +:1029E000DF91CF911F910F91FF90EF90DF90CF90EB +:1029F0000C94D11A6C297D298E299F2928960FB60F +:102A0000F894DEBF0FBECDBFDF91CF911F910F9124 +:102A1000FF90EF90DF90CF900C94EB1A0E94D11AA8 +:102A2000C701B60128960FB6F894DEBF0FBECDBF22 +:102A3000DF91CF911F910F91FF90EF90DF90CF909A +:102A40000C94B71AFF2019F0842F817001C086956D +:102A5000882309F465C1262F229526952770220F19 +:102A6000220F862F8F70C82ED12CE12CF12C022E34 +:102A700004C0CC0CDD1CEE1CFF1C0A94D2F764FFD2 +:102A800010C06FE070E080E090E004C0660F771F38 +:102A9000881F991F2A95D2F760957095809590951B +:102AA00003C060E070E0CB01242F269526952370AB +:102AB000422F50E042305105D1F04330510559F1D9 +:102AC0006C297D298E299F294130510541F1289695 +:102AD0000FB6F894DEBF0FBECDBFDF91CF911F912F +:102AE0000F91FF90EF90DF90CF900C94A51B6C2975 +:102AF0007D298E299F2928960FB6F894DEBF0FBE38 +:102B0000CDBFDF91CF911F910F91FF90EF90DF909C +:102B1000CF900C94BF1B0E94A51BC701B60128963D +:102B20000FB6F894DEBF0FBECDBFDF91CF911F91DE +:102B30000F91FF90EF90DF90CF900C948B1B603F34 +:102B4000C9F118F4603E50F49BC0623F09F460C0C4 +:102B500008F44AC0633F09F46FC092C0162F1F707B +:102B6000842F8F71FF2099F00E94241B812F2896BB +:102B70000FB6F894DEBF0FBECDBFDF91CF911F918E +:102B80000F91FF90EF90DF90CF900C9470130E9404 +:102B9000451B812F28960FB6F894DEBF0FBECDBF20 +:102BA000DF91CF911F910F91FF90EF90DF90CF9029 +:102BB0000C947713FF20A1F05111B2C0842F8F71B4 +:102BC00028960FB6F894DEBF0FBECDBFDF91CF9130 +:102BD0001F910F91FF90EF90DF90CF900C946A1BA4 +:102BE000523008F09DC0EACFFF20A1F0842F8F71F2 +:102BF00028960FB6F894DEBF0FBECDBFDF91CF9100 +:102C00001F910F91FF90EF90DF90CF900C94241BB9 +:102C1000FF2061F3842F8F7128960FB6F894DEBFE2 +:102C20000FBECDBFDF91CF911F910F91FF90EF901D +:102C3000DF90CF900C94451BFF2091F0842F8F7173 +:102C400028960FB6F894DEBF0FBECDBFDF91CF91AF +:102C50001F910F91FF90EF90DF90CF900C940F1B7E +:102C600028960FB6F894DEBF0FBECDBFDF91CF918F +:102C70001F910F91FF90EF90DF90CF900C94051B68 +:102C8000FF20A1F0552309F4B1CF862F28960FB667 +:102C9000F894DEBF0FBECDBFDF91CF911F910F9192 +:102CA000FF90EF90DF90CF900C945912552309F4C8 +:102CB000B1CF862F28960FB6F894DEBF0FBECDBFDA +:102CC000DF91CF911F910F91FF90EF90DF90CF9008 +:102CD0000C9421134F70C8010E942D0328960FB643 +:102CE000F894DEBF0FBECDBFDF91CF911F910F9142 +:102CF000FF90EF90DF90CF900C942C1A4F70C8018A +:102D000028960FB6F894DEBF0FBECDBFDF91CF91EE +:102D10001F910F91FF90EF90DF90CF900C945D0783 +:102D200028960FB6F894DEBF0FBECDBFDF91CF91CE +:102D30001F910F91FF90EF90DF90CF9008950E9428 +:102D4000C71C0E94D71C0E949C1C0E94F31C0E945E +:102D5000B3210E94072180E090E00E94521180E0A0 +:102D600090E00C9468110E94B71C0C949F160E946E +:102D70001A1C292F22952F7030E02C3031054CF48D +:102D80002A3031056CF4225031092230310590F49B +:102D900007C02C30310551F02F30310539F00AC011 +:102DA000803E10F0803F31F481E0089593FB882746 +:102DB00080F9089580E00895CF93DF9300D000D08C +:102DC0001F92CDB7DEB70F900F900F900F900F901E +:102DD000DF91CF910895CF93DF9300D000D000D042 +:102DE000CDB7DEB726960FB6F894DEBF0FBECDBFC7 +:102DF000DF91CF9108951F93CF93DF93C09183010B +:102E000016E080918401C81799F0D0E01C9FF00172 +:102E10001D9FF00D1124EB57FE4F408151816281BF +:102E20007381848195810E94EB162196C770E9CF4A +:102E3000DF91CF911F9108954091B5015091B60156 +:102E40006091B7017091B8018091B9019091BA0178 +:102E50000C94EB16CF938091BA0182958F7009F094 +:102E60005FC08091B701882309F45AC02091830183 +:102E7000A09184016091B5017091B6018091B80173 +:102E80009091B90131E06F3F09F030E0B32FC6E017 +:102E90002A1709F445C0009721F07F3F21F44B2FFA +:102EA00003C041E001C040E030E040FD35C0C29FBA +:102EB000F001C39FF00D1124EB57FE4F41817413B5 +:102EC0002BC04081641328C04281411125C0438139 +:102ED00054814817590710F441505109481B590BA8 +:102EE000483C5105C8F48091BA018F70806180938D +:102EF000BA0186E0829FF001839FF00D1124E6570E +:102F0000FE4F80818F708061808385EB91E00E940D +:102F10007E13CF910C94FB162F5F3F4F2770B8CFD5 +:102F2000CF910895CF92DF92EF92FF920F931F936C +:102F3000CF93DF93CDB7DEB762970FB6F894DEBFBD +:102F40000FBECDBF8C0185E0F801DE011D9601901A +:102F50000D928A95E1F7D8014C9111965C911197E9 +:102F600012966C9112971396ED90FC9014977091B5 +:102F7000B501E091B6012091B8013091B901211558 +:102F8000310531F0EF3F31F481E07F3F19F403C0A8 +:102F900081E001C080E0B82FB170CB2E80FD6CC104 +:102FA000D090B701DD2009F4F5C0F091BA01E21626 +:102FB000F30638F0C701821B930B883C910548F05B +:102FC0009BC0209530952E0D3F1D283C310508F003 +:102FD00093C08F2F807F09F052C0E51314C0741383 +:102FE00012C0D62E61110FC0FF70F061F093BA01CC +:102FF0000E941C1785EB91E00E947E138091BA011C +:10300000F80185836CC1EF2831F05F3F31F481E036 +:103010004F3F19F403C081E001C080E080FD03C090 +:1030200081E0862701C080E0F82FF170FF2E80FF3D +:103030001CC0809183012091840136E0821709F43D +:1030400028C190E0389FF001399FF00D1124EB5713 +:10305000FE4F7181571306C07081471303C0728100 +:10306000671303C001968770E9CFD62E662309F453 +:1030700036C18091BA0181608093BA0153C0E513D3 +:1030800008C0741306C0611104C0D8011596FC93E2 +:10309000AEC04D875E878D859E856A8B0E94B71670 +:1030A0006A89882329F1D62E662311F12091BA016D +:1030B000822F82958F7090E002970CF460C080910F +:1030C000B5019091B60198878F831986FB86EA86B1 +:1030D0002C87CE01079651C0E51731F14D875E87E9 +:1030E0008D859E856A8B0E94B7166A8981112EC0D4 +:1030F000C8010E947E13A4C08F2F807F69F77E2DA8 +:10310000F98AE88A89890E94DC1685EB91E00E94A1 +:103110007E13E5EBF1E086E0DF011D928A95E9F789 +:103120000E941C17D12CDBC07413D8CF6111D6CFED +:10313000D8011596FC93C8010E947E13E5EBF1E0DF +:1031400086E0DF011D928A95E9F7C9C0D62E662375 +:1031500079F22091BA01822F82958F7090E00297C8 +:1031600074F08091B5019091B6019A8389831B8296 +:10317000FD82EC822E83CE0101960E947E1386E0B2 +:10318000F801A5EBB1E001900D928A95E1F70E945C +:103190002A176FC0E216F30628F0C701821B930BB3 +:1031A0009C0104C0209530952E0D3F1D283C310513 +:1031B00008F052C0D62E662309F49ACFE5132CC02E +:1031C00074132AC08091BA0180FD1DC0982F92957A +:1031D0009F70C9F0D80115968C9315979F3039F0E0 +:1031E0009F5F9295907F8F70892B15968C93C80165 +:1031F0000E947E1386E0F801A5EBB1E001900D92EC +:103200008A95E1F736C086E0F801A5EBB1E00190C0 +:103210000D928A95E1F763C04D875E878D859E8507 +:103220000E94B716882379F086E0F801A5EBB1E09B +:1032300001900D928A95E1F70E942A170E941C17AF +:10324000DD24D3944CC08091BA0181608093BA018F +:10325000C8010E947E1343C07E2DF98AE88A8989BD +:103260000E94DC16E5EBF1E086E0DF011D928A9515 +:10327000E9F70E941C1733C0662309F439CF4D8744 +:103280005E878D859E850E94B716882309F430CF0E +:10329000CBCF4D875E878D859E850E941A1C292F76 +:1032A00022952F7030E0223031052CF49F7041F0D0 +:1032B000811106C00CC0243031052CF49F7049F4F4 +:1032C000805E883020F0C8010E947E13CF2CDC2C59 +:1032D00006C0D80115969C91907F91F7F8CF8D2D5F +:1032E00062960FB6F894DEBF0FBECDBFDF91CF91CF +:1032F0001F910F91FF90EF90DF90CF9008951F9353 +:10330000CF93DF93CDB7DEB72C970FB6F894DEBF1F +:103310000FBECDBF4F83588769877A878B879C877D +:10332000CE0107960E9492178823C1F02F8138851D +:103330008A859B85892B31F03F3F11F080E003C0E7 +:103340002F3FE1F781E0811147C04F8158856985A2 +:103350007A858B859C850E94EB163EC086E0FE0137 +:103360003796DE01119601900D928A95E1F7FF8163 +:10337000E8854A855B854115510531F0EF3F31F411 +:1033800081E0FF3F19F403C081E001C080E080FDCF +:1033900023C02091840130E0C901019687709927EC +:1033A0006091830170E086179707F1F1F983EA8352 +:1033B0005D834C8396E0929FD001939FB00D1124C2 +:1033C000AB57BE4FFE01319601900D929A95E1F7F1 +:1033D000809384010E94FB1616E0809183019091F6 +:1033E0008401891779F1189FC00111248B579E4FD2 +:1033F0000E949217882331F1E09183011E9FF00112 +:103400001124EB57FE4F4081518162817381848189 +:1034100095810E94EB168091830190E00196877060 +:10342000992780938301D9CF0E94B316109284010B +:1034300010928301E5EBF1E086E0DF011D928A95B1 +:10344000E9F7CACF2C960FB6F894DEBF0FBECDBFFA +:10345000DF91CF911F910895EF92FF920F931F93E9 +:10346000CF93DF93FC01009709F46FC0F12CEE2499 +:10347000E394EF0121968491843740F4843008F07E +:1034800055C0813081F0823021F15FC0853709F469 +:1034900047C0C0F19CE7980F903708F056C08F776F +:1034A0000E94211345C08F010E5F1F4FFE018491C2 +:1034B00090E2980F983050F48770FE2D01C0FF0FF6 +:1034C0008A95EAF78F2F0E94CA1C15C00E945912D4 +:1034D00014C08F010E5F1F4FFE01849190E2980F80 +:1034E000983068F48770FE2D01C0FF0F8A95EAF7C7 +:1034F0008F2F0E94D01C0E94F31CE80119C00E946B +:103500002113FBCFCF010296FE01C491CC2361F0C1 +:10351000EFE9FFE03197F1F700C00000C150F6CFAE +:10352000CF010296FE01F490EC0102C00E945912F4 +:103530008F2D882341F0EFE9FFE03197F1F700C0CC +:1035400000008150F6CFFE0194CFDF91CF911F9103 +:103550000F91FF90EF90089508956093BF017093CD +:10356000C0018093C1019093C2010C949F160F93E8 +:103570001F930091BF011091C0012091C1013091B2 +:10358000C201062B172B282B392B0093BF01109358 +:10359000C0012093C1013093C2011F910F910C947F +:1035A0009F160F931F930091BF011091C0012091AE +:1035B000C1013091C2010623172328233923009328 +:1035C000BF011093C0012093C1013093C2011F912C +:1035D0000F910C949F160F931F930091BF011091B0 +:1035E000C0012091C1013091C20106271727282769 +:1035F00039270093BF011093C0012093C10130937C +:10360000C2011F910F910C949F161092BB01109252 +:10361000BC011092BD011092BE010C949F1641E0B6 +:1036200050E060E070E004C0440F551F661F771F34 +:103630008A95D2F74093BB015093BC016093BD01C2 +:103640007093BE010C949F1641E050E060E070E082 +:1036500004C0440F551F661F771F8A95D2F78091CB +:10366000BB019091BC01A091BD01B091BE01842B22 +:10367000952BA62BB72B8093BB019093BC01A093F5 +:10368000BD01B093BE010C949F1641E050E060E094 +:1036900070E004C0440F551F661F771F8A95D2F74C +:1036A00040955095609570958091BB019091BC01BB +:1036B000A091BD01B091BE0184239523A623B72319 +:1036C0008093BB019093BC01A093BD01B093BE0158 +:1036D0000C949F1641E050E060E070E004C0440F9D +:1036E000551F661F771F8A95D2F78091BB01909175 +:1036F000BC01A091BD01B091BE0184279527A627EA +:10370000B7278093BB019093BC01A093BD01B093F8 +:10371000BE010C949F160F931F930091BB01109153 +:10372000BC012091BD013091BE01062B172B282B27 +:10373000392B0093BB011093BC012093BD01309342 +:10374000BE011F910F910C949F160F931F93009130 +:10375000BB011091BC012091BD013091BE01062337 +:103760001723282339230093BB011093BC01209316 +:10377000BD013093BE011F910F910C949F160F93C2 +:103780001F930091BB011091BC012091BD013091AC +:10379000BE0106271727282739270093BB0110935E +:1037A000BC012093BD013093BE011F910F910C9479 +:1037B0009F160895CF92DF92EF92FF920F931F937F +:1037C000CF93DF93EC01C090BF01D090C001E09097 +:1037D000C101F090C2018091BB019091BC01A09108 +:1037E000BD01B091BE01C82AD92AEA2AFB2A0FE1FD +:1037F00010E0B701A601002E04C076956795579595 +:1038000047950A94D2F740FD05C00150110988F789 +:1038100080E007C0BE01802F0E949A090197A9F39A +:10382000802FDF91CF911F910F91FF90EF90DF904C +:10383000CF900895CF93DF93EC010E94DA1BBE0175 +:103840000E949A09DF91CF910895CB010E941A1C22 +:10385000089590910C019923D9F090910D0199232D +:10386000B9F0982F9695969596959F3088F5E091AA +:103870000E01F0910F01E90FF11D877021E030E09A +:1038800001C0220F8A95EAF78181822B81830895F6 +:1038900040910E0150910F0120E030E09FEFFA01BE +:1038A000E20FF31F6281681799F09F3F19F46111CD +:1038B00001C0922F2F5F3F4F2E30310581F79F3F80 +:1038C00039F0FA01E90FF11D97FDFA958283089509 +:1038D000089590910C019923E1F090910D019923A5 +:1038E000C1F0982F9695969596959F3020F5E0918A +:1038F0000E01F0910F01E90FF11D877021E030E01A +:1039000001C0220F8A95EAF720958181282321831F +:10391000089540910E0150910F0120E030E0FA012E +:10392000E20FF31F9281981301C012822F5F3F4F65 +:103930002E303105A1F7089581E090E0E0910E016D +:10394000F0910F01E80FF91F108201968031910567 +:10395000A9F708959091D601982B9093D6010895D8 +:1039600080959091D60198239093D6010895109256 +:10397000D60108959091D501982B9093D501089583 +:1039800080959091D50198239093D5010895109238 +:10399000D50108959091D401982B9093D401089566 +:1039A00080959091D40198239093D401089510921A +:1039B000D40108958093C30108951092C30108951E +:1039C00040910E0150910F0120E030E080E0FA01BB +:1039D000E20FF31F918191118F5F2F5F3F4F2F30C7 +:1039E0003105A9F70895E0910E01F0910F01809142 +:1039F000D6018083E0910E01F0910F0180819091BA +:103A0000D501892B8083E0910E01F0910F01808117 +:103A10009091D401892B80839091C301992361F007 +:103A2000E0910E01F0910F018081892B80830E942B +:103A3000E01C81111092C30180910E0190910F0141 +:103A40000C943C118091EE01843021F11092D80148 +:103A500020E488E190E00FB6F894A8958093600088 +:103A60000FBE2093600080E00E94350A83B7817FFB +:103A7000846083BF83B7816083BF7894889583B760 +:103A80008E7F83BF88E10FB6F89480936000109218 +:103A900060000FBE089508950895CF930E944B1DB6 +:103AA0000E9469060E944C1DC0E08C2F0E945607A0 +:103AB000811105C0CF5FCE30C1F780E001C081E049 +:103AC000CF9108950E94B3160E9430110C94350ACC +:103AD00082E084BD93E095BD9AEF97BD80936E0020 +:103AE00008952FB7F8948091D9019091DA01A091AF +:103AF000DB01B091DC012FBF0895CF92DF92EF92EE +:103B0000FF920F931F932FB7F8944091D9015091D2 +:103B1000DA016091DB017091DC012FBF6A017B014A +:103B2000EE24FF248C0120E030E0C016D106E2062E +:103B3000F30610F441505109481B590BCA011F915B +:103B40000F91FF90EF90DF90CF9008951F920F920A +:103B50000FB60F9211248F939F93AF93BF938091D1 +:103B6000D9019091DA01A091DB01B091DC010196BD +:103B7000A11DB11D8093D9019093DA01A093DB01BF +:103B8000B093DC01BF91AF919F918F910F900FBEC9 +:103B90000F901F9018950E94360EF8942FEF87EA29 +:103BA00091E6215080409040E1F700C0000087E09E +:103BB00090EBDC018093F8019093F901A093FA0156 +:103BC000B093FB012CE088E190E00FB6F894A89543 +:103BD000809360000FBE20936000FFCFEF92FF92B2 +:103BE0000F931F93CF93DF93E82EF12C8F2D0E941C +:103BF0005607C0E0D0E0082F10E098010C2E02C05C +:103C0000359527950A94E2F720FD05C02196C63028 +:103C1000D10599F709C06C2F7F2D80E00E945E07C7 +:103C2000E812F4CF81E005C0F3948EE0F812DECF05 +:103C300080E0DF91CF911F910F91FF90EF90089559 +:103C4000CF93C82F8CE20E94EE1D882321F08C2F89 +:103C5000CF910C94EE1D80E0CF910895CF930E94F8 +:103C6000731F811102C00E94591FC5E6C15049F05F +:103C70000E9469068FE39CE90197F1F700C00000FC +:103C8000F5CF89E20E94201E811111C18AE20E94B3 +:103C9000201E81110E94591F85E00E94201E811163 +:103CA0000E94CB1D0E947E1F8093D70187E00E9457 +:103CB000201E882399F18BE10E94201E882351F059 +:103CC0009091D70191FB882780F921E0822780FB22 +:103CD00091F922C08EE00E94201E882351F090911D +:103CE000D70192FB882780F921E0822780FB92F997 +:103CF00013C080E10E94201E9091D701882341F0DB +:103D000093FB882780F921E0822780FB93F904C088 +:103D1000892F809580FB90F99093D7018091D701EE +:103D20000E94821F0E94901F8093F70180EE0E94E4 +:103D3000201E882341F08091F701982F909590FBE9 +:103D400080F98093F70189E30E94201E882359F0AF +:103D50009091F70191FB882780F921E0822780FB71 +:103D600091F99093F70182EE0E94201E882359F06A +:103D70009091F70192FB882780F921E0822780FB50 +:103D800092F99093F70186EE0E94201E882359F045 +:103D90009091F70193FB882780F921E0822780FB2F +:103DA00093F99093F70183EE0E94201E882359F027 +:103DB0009091F70194FB882780F921E0822780FB0E +:103DC00094F99093F70185E30E94201E882359F00F +:103DD0009091F70195FB882780F921E0822780FBED +:103DE00095F99093F70181E30E94201E882359F0F2 +:103DF0009091F70196FB882780F921E0822780FBCC +:103E000096F99093F70181E10E94201E882359F0D2 +:103E10009091F70197FB882780F921E0822780FBAA +:103E200097F99093F7018091F7010E94941F809178 +:103E3000F70187FB882780F980930D0187E20E94B4 +:103E4000201EC82F8EE10E94201E8111C2608FE1CA +:103E50000E94201E8111C46080E20E94201E8111F8 +:103E6000C86081E20E94201E8111C06182E20E942E +:103E7000201E8111C06283E20E94201E8111C06455 +:103E800084E20E94201E882311F0C06802C0CC2367 +:103E900029F08C2F0E948B1F6C2F03C00E94871F5C +:103EA000682F70E080E090E0CF910C94AD1ACF9134 +:103EB00008956DEE7EEF80E090E00E94B12560E015 +:103EC00082E090E00E949F2560E083E090E00E9405 +:103ED0009F2560E084E090E00E949F2560E085E0FF +:103EE00090E00C949F2580E090E00E94992521E0CD +:103EF0008D3E9E4F09F020E0822F089582E090E0F1 +:103F00000C949125682F82E090E00C949F2583E02B +:103F100090E00C949125682F83E090E00C949F250D +:103F200084E090E00C949125682F84E090E00C945C +:103F30009F258091DF0180FF0BC06091130185E018 +:103F4000689FB001112475956795759567952AC08E +:103F500081FF09C06091130185E0689FB0011124C1 +:103F6000759567951FC082FF07C06091130185E0BA +:103F7000689FB001112416C04091E0014423C9F0AC +:103F800060911201461788F72091130185E0289F60 +:103F900090011124429FC001439F900D112470E0B5 +:103FA0000E9463256038710540F46115710539F090 +:103FB00002C065E070E0862F08958FE7089581E0E4 +:103FC00008958091DF0180FF08C06091110170E0C9 +:103FD000759567957595679521C081FF06C06091BD +:103FE000110170E07595679519C082FF04C060915A +:103FF000110170E010C08091E0018823C1F0609150 +:1040000010018617A0F790911101989FC00111240B +:1040100070E00E9463256038710528F46115710510 +:1040200021F0862F08958FE7089581E0089561E0DB +:1040300070E0F4CF803F21F40E94991F819504C065 +:10404000813F29F40E94991F8093E3010895823FE4 +:1040500021F40E94991F819504C0833F29F40E9496 +:10406000991F8093E2010895893F19F40E94E11F8E +:1040700005C08A3F31F40E94E11F81958093E401DD +:1040800008958B3F21F40E94E11F819504C08C3F6D +:1040900029F40E94E11F8093E5010895843F21F4F3 +:1040A0008091E101816017C0853F21F48091E10199 +:1040B000826011C0863F21F48091E10184600BC0D1 +:1040C000873F21F48091E101886005C0883F31F489 +:1040D0008091E10180618093E10108958D3F21F499 +:1040E0008091DF0181600BC08E3F21F48091DF0160 +:1040F000826005C08F3F29F48091DF018460809346 +:10410000DF010895803F39F48091E30187FF6CC09F +:104110001092E30169C0813F29F48091E3011816F0 +:10412000BCF362C09091E201823F29F497FF5CC02A +:104130001092E20159C0833F19F41916CCF354C010 +:10414000893F41F48091E40118160CF04DC01092A3 +:10415000E4014AC08A3F29F48091E40187FF44C00A +:10416000F6CF8B3F39F48091E50187FF3DC0109277 +:10417000E5013AC08C3F29F48091E5011816BCF3A3 +:1041800033C0843F21F48091E1018E7F17C0853FC9 +:1041900021F48091E1018D7F11C0863F21F480914F +:1041A000E1018B7F0BC0873F21F48091E101877F84 +:1041B00005C0883F31F48091E1018F7E8093E10159 +:1041C00013C08D3F21F48091DF018E7F0BC08E3FA5 +:1041D00021F48091DF018D7F05C08F3F29F480910C +:1041E000DF018B7F8093DF018091E20181110EC09E +:1041F0008091E30181110AC08091E401811106C020 +:104200008091E501811102C01092E001089581EED4 +:1042100091E00E9447110E94711D9093DE018093EE +:10422000DD0108951F93CF93DF938091DD0190917D +:10423000DE010E947D1D4091E001442321F0209188 +:10424000140130E006C0209115015AE0259F90012D +:1042500011248217930708F482C08091E201109123 +:10426000E301D091E401C091E501811107C0111172 +:1042700005C0D11103C0CC2309F471C04F3F19F020 +:104280004F5F4093E001181624F40E94991F809319 +:10429000E2018091E20187FF05C00E94991F81958C +:1042A0008093E201111624F40E94991F8093E30188 +:1042B0008091E30187FF05C00E94991F819580933B +:1042C000E3016091E201662339F11091E3011123CA +:1042D00019F1772767FD7095872F972F0E94742417 +:1042E00023E333E343E35FE30E94D8240E944124A5 +:1042F0006093E201612F772767FD7095872F972FD5 +:104300000E94742423E333E343E35FE30E94D82451 +:104310000E9441246093E3011D1624F40E94E11FD2 +:104320008093E4018091E40187FF05C00E94E11FB2 +:1043300081958093E4011C1624F40E94E11F809370 +:10434000E5018091E50187FF05C00E94E11F81958D +:104350008093E501DF91CF911F910C940721DF91AC +:10436000CF911F910895E1EEF1E085E0DF011D920C +:104370008A95E9F71092E0011092DF0108958330E9 +:1043800081F128F4813059F08230D1F008958530E0 +:1043900009F449C0B8F1863009F456C00895209157 +:1043A0001501862F90E0820F911D8F3F910520F41B +:1043B000620F6093150108958FEF809315010895A2 +:1043C00020911401862F90E0820F911D8F3F91055F +:1043D00020F4620F6093140108958FEF809314010D +:1043E000089520911301862F90E0820F911D8F3F39 +:1043F000910520F4620F6093130108958FEF80936D +:104400001301089520911201862F90E0820F911DD3 +:104410008F3F910520F4620F6093120108958FEF92 +:1044200080931201089520911101862F90E0820F50 +:10443000911D8F3F910520F4620F60931101089543 +:104440008FEF80931101089520911001862F90E045 +:10445000820F911D8F3F910520F4620F6093100130 +:1044600008958FEF809310010895833011F128F49F +:10447000813049F0823091F00895853081F120F14A +:104480008630C1F1089580911501681720F4861BCC +:1044900080931501089510921501089580911401DB +:1044A000681720F4861B809314010895109214015C +:1044B000089580911301681720F4861B80931301DF +:1044C000089510921301089580911201681720F445 +:1044D000861B809312010895109212010895809115 +:1044E0001101681720F4861B809311010895109222 +:1044F0001101089580911001681720F4861B8093A4 +:10450000100108951092100108958D3109F442C0F0 +:1045100020F58E3009F477C070F4873009F459C063 +:1045200018F48630F1F134C0883009F4A8C08B301B +:1045300009F4A5C02DC0863109F4A1C038F480313A +:1045400009F472C0813109F479C022C0893109F4BB +:1045500096C08B3109F44DC01BC0853309F487C068 +:1045600048F4873209F483C008F473C0893209F42F +:104570007EC00EC0833438F48A3308F068C08833B4 +:1045800009F47DC005C0833409F471C0883499F002 +:1045900080E008950E94FB230E9430110E94350A9A +:1045A0006EC08091D701817F8E7F8093D70181E09B +:1045B0008093E70108950E94B3162FEF83ED90E3F7 +:1045C000215080409040E1F700C000000E94CB1DC8 +:1045D00056C09091D701892F8095817080FB90F90A +:1045E00019F0966098601DC0997F977F9093D701CE +:1045F00046C09091D70191FB882780F921E082275E +:1046000080FB91F909C09091D70192FB882780F92E +:1046100021E0822780FB92F99093D701882379F1DA +:1046200091609093D70108959091D70193FB8827CB +:1046300080F921E0822780FB93F9EECF0E94B31628 +:1046400080910D0191E0892780930D0118C027EC1E +:1046500001C023EE280F61E070E080E090E004C02C +:10466000660F771F881F991F2A95D2F704C061E053 +:1046700070E080E090E00E94AD1A0E94B31681E0E5 +:10468000089580E0089580E00895CF93C82F809129 +:10469000E701813079F018F08230D1F184C0A09127 +:1046A0000E01B0910F018C91813169F0823209F0D5 +:1046B0007CC009C0A0910E01B0910F018C91813195 +:1046C00011F0823249F48C2F0E94412381111DC0C8 +:1046D0008C2F0E9485221AC08C2F0E9443238111A7 +:1046E00014C0C43179F048F4CB3079F0C03109F00E +:1046F00060C082E08093E70108C0C93219F0C83376 +:1047000021F057C01092E70154C081E0817053C07E +:10471000C93289F118F5C43171F1A8F4C73009F034 +:1047200046C08AE08093150194E19093140193E0D0 +:10473000909313018093120188E08093110188E225 +:104740008093100134C0CE51C63088F5EC2FF0E0D4 +:10475000E65DFE4F80818093E60129C0CE34E9F00A +:1047600020F4CB3421F56AE013C0C13579F0C235AD +:10477000F1F461E00DC08091E601882319F01092F8 +:10478000E60115C081E08093E70115C061E006C035 +:104790008091E6010E94BF210AC06AE08091E60193 +:1047A0000E94352204C01092E70180E004C081E03D +:1047B00002C080E0ABCFCF910895E1E8F0E08081C6 +:1047C000886080838081816080838FB7F89493E0D4 +:1047D0009093890090ED909388008FBF0895EFE645 +:1047E000F0E08081826080830895EFE6F0E08081D0 +:1047F0008D7F80830895EFE6F0E0808192E0892745 +:10480000808308951F920F920FB60F9211242F9359 +:104810003F934F935F936F937F938F939F93AF9348 +:10482000BF93EF93FF938091E8019091E901019686 +:104830009093E9018093E801811103C082E00E9416 +:10484000350AE091E901E695E695F0E0E257FA4F86 +:10485000E4918091E8018E1303C080E00E94350A44 +:10486000FF91EF91BF91AF919F918F917F916F9148 +:104870005F914F913F912F910F900FBE0F901F901E +:10488000189504D06894B1118DC0089570D088F047 +:104890009F5790F0B92F9927B751A0F0D1F0660F2C +:1048A000771F881F991F1AF0BA95C9F712C0B13047 +:1048B00081F077D0B1E0089574C0672F782F8827F2 +:1048C000B85F39F0B93FCCF3869577956795B39586 +:1048D000D9F73EF490958095709561957F4F8F4FF5 +:1048E0009F4F0895E89409C097FB3EF490958095FA +:1048F000709561957F4F8F4F9F4F9923A9F0F92FA6 +:1049000096E9BB279395F695879577956795B79523 +:10491000F111F8CFFAF4BB0F11F460FF1BC06F5F09 +:104920007F4F8F4F9F4F16C0882311F096E911C01B +:10493000772321F09EE8872F762F05C0662371F03C +:1049400096E8862F70E060E02AF09A95660F771F50 +:10495000881FDAF7880F9695879597F9089557FD80 +:104960009058440F551F59F05F3F71F04795880FDD +:1049700097FB991F61F09F3F79F087950895121674 +:1049800013061406551FF2CF4695F1DF08C0161620 +:1049900017061806991FF1CF8695710561050894D1 +:1049A0000895E894BB2766277727CB0197F90895E8 +:1049B0000BD078C069D028F06ED018F0952309F09C +:1049C0005AC05FC01124EECFCADFA0F3959FD1F388 +:1049D000950F50E0551F629FF001729FBB27F00DAD +:1049E000B11D639FAA27F00DB11DAA1F649F662702 +:1049F000B00DA11D661F829F2227B00DA11D621F51 +:104A0000739FB00DA11D621F839FA00D611D221F0A +:104A1000749F3327A00D611D231F849F600D211DEE +:104A2000822F762F6A2F11249F5750408AF0E1F091 +:104A300088234AF0EE0FFF1FBB1F661F771F881FDA +:104A400091505040A9F79E3F510570F014C0AACF75 +:104A50005F3FECF3983EDCF3869577956795B795C5 +:104A6000F795E7959F5FC1F7FE2B880F911D9695EF +:104A7000879597F9089597F99F6780E870E060E05F +:104A800008959FEF80EC089500240A9416161706E7 +:104A900018060906089500240A941216130614062F +:104AA00005060895092E0394000C11F4882352F092 +:104AB000BB0F40F4BF2B11F460FF04C06F5F7F4F4A +:104AC0008F4F9F4F089597FB072E16F4009407D041 +:104AD00077FD09D00E947D2507FC05D03EF4909516 +:104AE00081959F4F0895709561957F4F0895EE0FC2 +:104AF000FF1F0590F491E02D0994AA1BBB1B51E107 +:104B000007C0AA1FBB1FA617B70710F0A61BB70B3D +:104B1000881F991F5A95A9F780959095BC01CD01E2 +:104B20000895F999FECF92BD81BDF89A992780B575 +:104B30000895A8E1B0E042E050E00C94B925262F9A +:104B4000F999FECF92BD81BDF89A019700B4021683 +:104B500039F01FBA20BD0FB6F894FA9AF99A0FBE31 +:104B600008950196272F0E94A0250C949F25DC0113 +:104B7000CB01FC01F999FECF06C0F2BDE1BDF89A68 +:104B8000319600B40D9241505040B8F70895F89412 +:024B9000FFCF55 +:104B92002002370AC40AA10A6D0A3A0A0101C401B5 +:104BA20028080A03140A3F4D36394F050205CC0482 +:104BB200930426043F045804710401020304050609 +:044BC20007080900D7 :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md index f264dd48f..163b5d902 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md +++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md @@ -67,7 +67,7 @@ Alas, the yellow keys have at best spotty success with common software. Good luc ## Switching Between Layers ## -In addition to Symbols and Media the Ordinary Layout treats the Capitals as a logical layer. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. +In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. (Note: it is exactly the same as pressing the *left* shift key; the *right* shift key is only available on the Media layer because holding both shift keys is the 'magic' command combo for this keyboard so it is inconviently locate to minimize accidents.) Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock layers using the Shift key in conjunction with the Shift Lock key. For instance, the widely and rightly loathed Caps Lock is engaged by pressing the Shift Lock button then Capitals Shift. Or, hold down the Shift key and press the Shift Lock key; it works either way. All the Shift keys work this way. -- cgit v1.2.3-24-g4f1b From 356dba7e6109907d07d3ab9713e850be3f9b3f27 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 5 May 2016 12:05:09 -0400 Subject: updates atreus's column mapping --- keyboard/atreus/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/atreus/config.h b/keyboard/atreus/config.h index ca0cd7e47..55d3b62b9 100644 --- a/keyboard/atreus/config.h +++ b/keyboard/atreus/config.h @@ -36,7 +36,7 @@ along with this program. If not, see . // Change this to how you wired your keyboard // COLS: Left to right, ROWS: Top to bottom #if defined(ATREUS_ASTAR) - #define COLS (int []){ B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } + #define COLS (int []){ D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } #define ROWS (int []){ D0, D1, D3, D2 } #elif defined(ATREUS_TEENSY2) #define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0} -- cgit v1.2.3-24-g4f1b From d4520cd3ac7550fc7243e9a76824d9ba674875c6 Mon Sep 17 00:00:00 2001 From: Tom Duckering Date: Thu, 5 May 2016 23:27:28 +0100 Subject: Referencing the hex file (#309) Seems that this is a typo. When I used the hex file it worked so presuming that means it's right ;) --- quantum/tools/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quantum/tools/README.md b/quantum/tools/README.md index 070214423..5f355256d 100644 --- a/quantum/tools/README.md +++ b/quantum/tools/README.md @@ -1,6 +1,6 @@ `eeprom_reset.hex` is to reset the eeprom on the Atmega32u4, like this: dfu-programmer atmega32u4 erase - dfu-programmer atmega32u4 flash --eeprom eeprom-reset.bin + dfu-programmer atmega32u4 flash --eeprom eeprom_reset.hex - You'll need to reflash afterwards, because DFU requires the flash to be erased before messing with the eeprom. \ No newline at end of file + You'll need to reflash afterwards, because DFU requires the flash to be erased before messing with the eeprom. -- cgit v1.2.3-24-g4f1b From 74e97eefd7ae76f9ddcb76890a30aa9038804cdb Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Thu, 5 May 2016 18:41:37 -0700 Subject: Adds oneshot layer and oneshot tap toggling (#308) This commit is mostly a cherry-pick from `ahtn` at https://github.com/tmk/tmk_keyboard/pull/255. These are the changes: * Adds ACTION_LAYER_ONESHOT * Adds ONESHOT_TAP_TOGGLE * Mentions sticky keys in the docs on oneshot. --- tmk_core/common/action.c | 97 +++++++++++++++++++++++++++++++++++++++---- tmk_core/common/action_code.h | 5 ++- tmk_core/common/action_util.c | 70 +++++++++++++++++++++++++++++-- tmk_core/common/action_util.h | 20 +++++++++ tmk_core/doc/keymap.md | 8 +++- 5 files changed, 186 insertions(+), 14 deletions(-) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index f9e6c17dc..081e90b2d 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -74,6 +74,7 @@ void process_action_kb(keyrecord_t *record) {} void process_action(keyrecord_t *record) { + bool do_release_oneshot = false; keyevent_t event = record->event; #ifndef NO_ACTION_TAPPING uint8_t tap_count = record->tap.count; @@ -81,6 +82,13 @@ void process_action(keyrecord_t *record) if (IS_NOEVENT(event)) { return; } +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + if (has_oneshot_layer_timed_out()) { + dprintf("Oneshot layer: timeout\n"); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } +#endif + process_action_kb(record); action_t action = store_or_get_action(event.pressed, event.key); @@ -95,6 +103,15 @@ void process_action(keyrecord_t *record) // clear the potential weak mods left by previously pressed keys clear_weak_mods(); } + +#ifndef NO_ACTION_ONESHOT + // notice we only clear the one shot layer if the pressed key is not a modifier. + if (is_oneshot_layer_active() && event.pressed && !IS_MOD(action.key.code)) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + do_release_oneshot = !is_oneshot_layer_active(); + } +#endif + switch (action.kind.id) { /* Key and Mods */ case ACT_LMODS: @@ -139,24 +156,37 @@ void process_action(keyrecord_t *record) // Oneshot modifier if (event.pressed) { if (tap_count == 0) { + dprint("MODS_TAP: Oneshot: 0\n"); register_mods(mods); - } - else if (tap_count == 1) { + } else if (tap_count == 1) { dprint("MODS_TAP: Oneshot: start\n"); set_oneshot_mods(mods); - } - else { + #if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 + } else if (tap_count == ONESHOT_TAP_TOGGLE) { + dprint("MODS_TAP: Toggling oneshot"); + clear_oneshot_mods(); + set_oneshot_locked_mods(mods); + register_mods(mods); + #endif + } else { register_mods(mods); } } else { if (tap_count == 0) { clear_oneshot_mods(); unregister_mods(mods); - } - else if (tap_count == 1) { + } else if (tap_count == 1) { // Retain Oneshot mods - } - else { + #if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 + if (mods & get_mods()) { + clear_oneshot_locked_mods(); + clear_oneshot_mods(); + unregister_mods(mods); + } + } else if (tap_count == ONESHOT_TAP_TOGGLE) { + // Toggle Oneshot Layer + #endif + } else { clear_oneshot_mods(); unregister_mods(mods); } @@ -309,6 +339,44 @@ void process_action(keyrecord_t *record) event.pressed ? layer_move(action.layer_tap.val) : layer_clear(); break; + #ifndef NO_ACTION_ONESHOT + case OP_ONESHOT: + // Oneshot modifier + #if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 + do_release_oneshot = false; + if (event.pressed) { + del_mods(get_oneshot_locked_mods()); + if (get_oneshot_layer_state() == ONESHOT_TOGGLED) { + reset_oneshot_layer(); + layer_off(action.layer_tap.val); + break; + } else if (tap_count < ONESHOT_TAP_TOGGLE) { + layer_on(action.layer_tap.val); + set_oneshot_layer(action.layer_tap.val, ONESHOT_START); + } + } else { + add_mods(get_oneshot_locked_mods()); + if (tap_count >= ONESHOT_TAP_TOGGLE) { + reset_oneshot_layer(); + clear_oneshot_locked_mods(); + set_oneshot_layer(action.layer_tap.val, ONESHOT_TOGGLED); + } else { + clear_oneshot_layer_state(ONESHOT_PRESSED); + } + } + #else + if (event.pressed) { + layer_on(action.layer_tap.val); + set_oneshot_layer(action.layer_tap.val, ONESHOT_START); + } else { + clear_oneshot_layer_state(ONESHOT_PRESSED); + if (tap_count > 1) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } + } + #endif + break; + #endif default: /* tap key */ if (event.pressed) { @@ -372,6 +440,18 @@ void process_action(keyrecord_t *record) default: break; } + +#ifndef NO_ACTION_ONESHOT + /* Because we switch layers after a oneshot event, we need to release the + * key before we leave the layer or no key up event will be generated. + */ + if (do_release_oneshot && !(get_oneshot_layer_state() & ONESHOT_PRESSED ) ) { + record->event.pressed = false; + layer_on(get_oneshot_layer()); + process_action(record); + layer_off(get_oneshot_layer()); + } +#endif } @@ -560,6 +640,7 @@ bool is_tap_key(keypos_t key) switch (action.layer_tap.code) { case 0x00 ... 0xdf: case OP_TAP_TOGGLE: + case OP_ONESHOT: return true; } return false; diff --git a/tmk_core/common/action_code.h b/tmk_core/common/action_code.h index 2b0b0b077..ca729aaec 100644 --- a/tmk_core/common/action_code.h +++ b/tmk_core/common/action_code.h @@ -76,7 +76,8 @@ along with this program. If not, see . * 101E|LLLL|1111 0001 On/Off (0xF1) [NOT TAP] * 101E|LLLL|1111 0010 Off/On (0xF2) [NOT TAP] * 101E|LLLL|1111 0011 Set/Clear (0xF3) [NOT TAP] - * 101E|LLLL|1111 xxxx Reserved (0xF4-FF) + * 101E|LLLL|1111 0100 One Shot Layer (0xF4) [TAP] + * 101E|LLLL|1111 xxxx Reserved (0xF5-FF) * ELLLL: layer 0-31(E: extra bit for layer 16-31) * * @@ -250,6 +251,7 @@ enum layer_pram_tap_op { OP_ON_OFF, OP_OFF_ON, OP_SET_CLEAR, + OP_ONESHOT, }; #define ACTION_LAYER_BITOP(op, part, bits, on) (ACT_LAYER<<12 | (op)<<10 | (on)<<8 | (part)<<5 | ((bits)&0x1f)) #define ACTION_LAYER_TAP(layer, key) (ACT_LAYER_TAP<<12 | (layer)<<8 | (key)) @@ -266,6 +268,7 @@ enum layer_pram_tap_op { #define ACTION_LAYER_ON_OFF(layer) ACTION_LAYER_TAP((layer), OP_ON_OFF) #define ACTION_LAYER_OFF_ON(layer) ACTION_LAYER_TAP((layer), OP_OFF_ON) #define ACTION_LAYER_SET_CLEAR(layer) ACTION_LAYER_TAP((layer), OP_SET_CLEAR) +#define ACTION_LAYER_ONESHOT(layer) ACTION_LAYER_TAP((layer), OP_ONESHOT) #define ACTION_LAYER_MODS(layer, mods) ACTION_LAYER_TAP((layer), 0xe0 | ((mods)&0x0f)) /* With Tapping */ #define ACTION_LAYER_TAP_KEY(layer, key) ACTION_LAYER_TAP((layer), (key)) diff --git a/tmk_core/common/action_util.c b/tmk_core/common/action_util.c index a2d6577b2..61ff202be 100644 --- a/tmk_core/common/action_util.c +++ b/tmk_core/common/action_util.c @@ -18,6 +18,7 @@ along with this program. If not, see . #include "report.h" #include "debug.h" #include "action_util.h" +#include "action_layer.h" #include "timer.h" static inline void add_key_byte(uint8_t code); @@ -47,11 +48,70 @@ report_keyboard_t *keyboard_report = &(report_keyboard_t){}; #ifndef NO_ACTION_ONESHOT static int8_t oneshot_mods = 0; +static int8_t oneshot_locked_mods = 0; +int8_t get_oneshot_locked_mods(void) { return oneshot_locked_mods; } +void set_oneshot_locked_mods(int8_t mods) { oneshot_locked_mods = mods; } +void clear_oneshot_locked_mods(void) { oneshot_locked_mods = 0; } #if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) static int16_t oneshot_time = 0; +inline bool has_oneshot_mods_timed_out() { + return TIMER_DIFF_16(timer_read(), oneshot_time) >= ONESHOT_TIMEOUT; +} #endif #endif +/* oneshot layer */ +#ifndef NO_ACTION_ONESHOT +/* oneshot_layer_data bits +* LLLL LSSS +* where: +* L => are layer bits +* S => oneshot state bits +*/ +static int8_t oneshot_layer_data = 0; + +inline uint8_t get_oneshot_layer(void) { return oneshot_layer_data >> 3; } +inline uint8_t get_oneshot_layer_state(void) { return oneshot_layer_data & 0b111; } + +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) +static int16_t oneshot_layer_time = 0; +inline bool has_oneshot_layer_timed_out() { + return TIMER_DIFF_16(timer_read(), oneshot_layer_time) >= ONESHOT_TIMEOUT && + !(get_oneshot_layer_state() & ONESHOT_TOGGLED); +} +#endif + +/* Oneshot layer */ +void set_oneshot_layer(uint8_t layer, uint8_t state) +{ + oneshot_layer_data = layer << 3 | state; + layer_on(layer); +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + oneshot_layer_time = timer_read(); +#endif +} +void reset_oneshot_layer(void) { + oneshot_layer_data = 0; +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + oneshot_layer_time = 0; +#endif +} +void clear_oneshot_layer_state(oneshot_fullfillment_t state) +{ + uint8_t start_state = oneshot_layer_data; + oneshot_layer_data &= ~state; + if (!get_oneshot_layer_state() && start_state != oneshot_layer_data) { + layer_off(get_oneshot_layer()); +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + oneshot_layer_time = 0; +#endif + } +} +bool is_oneshot_layer_active(void) +{ + return get_oneshot_layer_state(); +} +#endif void send_keyboard_report(void) { keyboard_report->mods = real_mods; @@ -60,7 +120,7 @@ void send_keyboard_report(void) { #ifndef NO_ACTION_ONESHOT if (oneshot_mods) { #if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) - if (TIMER_DIFF_16(timer_read(), oneshot_time) >= ONESHOT_TIMEOUT) { + if (has_oneshot_mods_timed_out()) { dprintf("Oneshot: timeout\n"); clear_oneshot_mods(); } @@ -70,6 +130,7 @@ void send_keyboard_report(void) { clear_oneshot_mods(); } } + #endif host_keyboard_send(keyboard_report); } @@ -143,11 +204,12 @@ void clear_oneshot_mods(void) oneshot_time = 0; #endif } +uint8_t get_oneshot_mods(void) +{ + return oneshot_mods; +} #endif - - - /* * inspect keyboard state */ diff --git a/tmk_core/common/action_util.h b/tmk_core/common/action_util.h index 1a95cec10..dd0c4c2bf 100644 --- a/tmk_core/common/action_util.h +++ b/tmk_core/common/action_util.h @@ -56,10 +56,30 @@ void clear_macro_mods(void); /* oneshot modifier */ void set_oneshot_mods(uint8_t mods); +uint8_t get_oneshot_mods(void); void clear_oneshot_mods(void); void oneshot_toggle(void); void oneshot_enable(void); void oneshot_disable(void); +bool has_oneshot_mods_timed_out(void); + +int8_t get_oneshot_locked_mods(void); +void set_oneshot_locked_mods(int8_t mods); +void clear_oneshot_locked_mods(void); + +typedef enum { + ONESHOT_PRESSED = 0b01, + ONESHOT_OTHER_KEY_PRESSED = 0b10, + ONESHOT_START = 0b11, + ONESHOT_TOGGLED = 0b100 +} oneshot_fullfillment_t; +void set_oneshot_layer(uint8_t layer, uint8_t state); +uint8_t get_oneshot_layer(void); +void clear_oneshot_layer_state(oneshot_fullfillment_t state); +void reset_oneshot_layer(void); +bool is_oneshot_layer_active(void); +uint8_t get_oneshot_layer_state(void); +bool has_oneshot_layer_timed_out(void); /* inspect */ uint8_t has_anykey(void); diff --git a/tmk_core/doc/keymap.md b/tmk_core/doc/keymap.md index d4a129b20..4d42fbe5c 100644 --- a/tmk_core/doc/keymap.md +++ b/tmk_core/doc/keymap.md @@ -528,14 +528,20 @@ This is a feature to assign both toggle layer and momentary switch layer action ### 4.3 Oneshot Modifier -This runs onetime effects which modify only on just one following key. It works as normal modifier key when holding down while oneshot modifier when tapping. +This runs onetime effects which modify only on just one following key. It works as normal modifier key when holding down while oneshot modifier when tapping. The behavior of oneshot modifiers is similar to the [sticky keys](https://en.wikipedia.org/wiki/StickyKeys) functionality found in most operating systems. ACTION_MODS_ONESHOT(MOD_LSFT) +Oneshot layer key: + + ACTION_LAYER_ONESHOT(MY_LAYER) + Say you want to type 'The', you have to push and hold Shift key before type 't' then release it before type 'h' and 'e', otherwise you'll get 'THe' or 'the' unintentionally. With Oneshot Modifier you can tap Shift then type 't', 'h' and 'e' normally, you don't need to holding Shift key properly here. This mean you can release Shift before 't' is pressed down. Oneshot effect is cancel unless following key is pressed down within `ONESHOT_TIMEOUT` of `config.h`. No timeout when it is `0` or not defined. +Most implementations of sticky keys allow you to lock a modifier by double tapping the modifier. The layer then remains locked untill the modifier is tapped again. To enable this behaviour for oneshot modifiers set `ONESHOT_TAP_TOGGLE` to the number taps required. The feature is disabled if `ONESHOT_TAP_TOGGLE<2` or not defined. + ### 4.4 Tap Toggle Mods Similar to layer tap toggle, this works as a momentary modifier when holding, but toggles on with several taps. A single tap will 'unstick' the modifier again. -- cgit v1.2.3-24-g4f1b From 41b3e399b1d43db9574c6016951d92974b3d93e7 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 5 May 2016 21:50:51 -0400 Subject: adds keycode shortcuts for OSL and OSM --- quantum/keymap_common.c | 8 ++++++++ quantum/keymap_common.h | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 5e78d1157..8f00f9cc3 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -272,6 +272,14 @@ static action_t keycode_to_action(uint16_t keycode) // Set default layer int layer = keycode & 0xFF; action.code = ACTION_LAYER_TOGGLE(layer); + } else if (type == 0x5) { + // OSL(layer) - One-shot layer + int layer = keycode & 0xFF; + action.code = ACTION_LAYER_ONESHOT(layer); + } else if (type == 0x6) { + // OSM(mod) - One-shot mod + int mod = keycode & 0xFF; + action.code = ACTION_MODS_ONESHOT(mod); } break; #ifdef MIDI_ENABLE diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 0ede0296b..ae10bc78d 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -205,6 +205,12 @@ extern const uint16_t fn_actions[]; // Toggle to layer - 256 layer max #define TG(layer) (layer | 0x5400) +// One-shot layer - 256 layer max +#define OSL(layer) (layer | 0x5500) + +// One-shot mod +#define OSM(layer) (layer | 0x5600) + // M-od, T-ap - 256 keycode max #define MT(mod, kc) (kc | 0x7000 | ((mod & 0xF) << 8)) #define CTL_T(kc) MT(0x1, kc) -- cgit v1.2.3-24-g4f1b From f293bf23404ea380e779a791e8c6a78d0a2fc45e Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:19:29 -0400 Subject: [Jack & Erez] Removes duplicate reference, sorts whitespace --- quantum/quantum.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/quantum/quantum.mk b/quantum/quantum.mk index 4a076eca4..ff34c463a 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -28,8 +28,9 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) endif ifeq ($(strip $(AUDIO_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/audio/audio.c $(QUANTUM_DIR)/audio/voices.c - SRC += $(QUANTUM_DIR)/audio/audio.c $(QUANTUM_DIR)/audio/luts.c + SRC += $(QUANTUM_DIR)/audio/audio.c + SRC += $(QUANTUM_DIR)/audio/voices.c + SRC += $(QUANTUM_DIR)/audio/luts.c endif ifeq ($(strip $(UNICODE_ENABLE)), yes) -- cgit v1.2.3-24-g4f1b From 8ffc73fcbdddf4ba11aa18658d9aaf7bdd9145c5 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:19:59 -0400 Subject: [Jack & Erez] Adds an option for user-specific config.h files --- tmk_core/rules.mk | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 860fc1a93..69c7985b4 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -142,6 +142,9 @@ CFLAGS += $(CSTANDARD) ifdef CONFIG_H CFLAGS += -include $(CONFIG_H) endif +ifdef CONFIG_USER_H + CFLAGS += -include $(CONFIG_USER_H) +endif #---------------- Compiler Options C++ ---------------- @@ -176,6 +179,9 @@ CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) ifdef CONFIG_H CPPFLAGS += -include $(CONFIG_H) endif +ifdef CONFIG_USER_H + CPPFLAGS += -include $(CONFIG_USER_H) +endif #---------------- Assembler Options ---------------- @@ -192,6 +198,9 @@ ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) ifdef CONFIG_H ASFLAGS += -include $(CONFIG_H) endif +ifdef CONFIG_USER_H + ASFLAGS += -include $(CONFIG_USER_H) +endif #---------------- Library Options ---------------- -- cgit v1.2.3-24-g4f1b From 3a9d1c4279d4ccc6430e65f8d4d3ff2a6b11dac1 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:23:32 -0400 Subject: [Jack & Erez] Enables config_user.h per keymap --- keyboard/ergodox_ez/Makefile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/keyboard/ergodox_ez/Makefile b/keyboard/ergodox_ez/Makefile index 5dfcca2c8..3a07ec254 100644 --- a/keyboard/ergodox_ez/Makefile +++ b/keyboard/ergodox_ez/Makefile @@ -101,6 +101,22 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: ht # MIDI_ENABLE = yes # MIDI controls # UNICODE_ENABLE = yes # Unicode +# If you want to have your own config_user.h, you can just put it in +# your keymap directory. Anything you set there will take precedence +# over the global config.h. +ifneq ("$(wildcard keymaps/$(KEYMAP)/config_user.h)","") +CONFIG_USER_H = keymaps/$(KEYMAP)/config_user.h +endif + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif +endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax -- cgit v1.2.3-24-g4f1b From cd30f971ae61aa5b676cb9140792b750b1e5b664 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:24:09 -0400 Subject: [Jack & Erez] Creates a makefile.mk and a config file for the experimental layout --- keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h | 8 ++++++++ keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h create mode 100644 keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h b/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h new file mode 100644 index 000000000..d19c2783c --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "config.h" +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 3000 + +#endif diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk b/keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk new file mode 100644 index 000000000..4c3a314ed --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk @@ -0,0 +1,5 @@ +# Having a file like this allows you to override Makefile definitions +# for your own particular keymap + +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + -- cgit v1.2.3-24-g4f1b From 9bb368a5fb55e069aafb49007871a7045e6d964f Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:44:24 -0400 Subject: [Jack & Erez] Defines MOD_HYPR and MOD_MEH --- quantum/keymap_common.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index ae10bc78d..ab80ea45c 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -67,6 +67,9 @@ extern const uint16_t fn_actions[]; #define MEH(kc) kc | 0x0700 #define LCAG(kc) kc | 0x0D00 // Modifier Ctrl Alt and GUI +#define MOD_HYPR 0xf +#define MOD_MEH 0x7 + #define RCTL(kc) kc | 0x1100 #define RSFT(kc) kc | 0x1200 #define RALT(kc) kc | 0x1400 -- cgit v1.2.3-24-g4f1b From bf6f3fe7f4571ea8907fc9dcc0befbd6c5ac0f73 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 22:58:06 -0400 Subject: [Erez & Jack] Updates docs with one-shot information and config_user.h --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bb1cca1ed..3e6eb1fa3 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,10 @@ If your keymap directory has a file called `makefile.mk` (note the lowercase fil So let's say your keyboard's makefile has `CONSOLE_ENABLE = yes` (or maybe doesn't even list the `CONSOLE_ENABLE` option, which would cause it to revert to the global Quantum default). You want your particular keymap to not have the debug console, so you make a file called `makefile.mk` and specify `CONSOLE_ENABLE = no`. +### Customizing config.h on a per-keymap basis + +If you use the ErgoDox EZ, you can make a `config_user.h` file in your keymap directory and use it to override any `config.h` settings you don't like. Anything you set there will take precedence over the global `config.h` for the ErgoDox EZ. To see an example of this, check out `keymaps/erez_experimental`. + ## Quick aliases to common actions Your keymap can include shortcuts to common operations (called "function actions" in tmk). @@ -41,10 +45,13 @@ Your keymap can include shortcuts to common operations (called "function actions `MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. +`OSL(layer)` - momentary switch to *layer*, as a one-shot operation. So if you have a key that's defined as `OSL(1)`, and you tap that key, then only the very next keystroke would come from layer 1. You would drop back to layer zero immediately after that one keystroke. That's handy if you have a layer full of custom shortcuts -- for example, a dedicated key for closing a window. So you tap your one-shot layer mod, then tap that magic 'close window' key, and keep typing like a boss. Layer 1 would remain active as long as you hold that key down, too (so you can use it like a momentary toggle-layer key with extra powers). + `LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). `TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. + ### Fun with modifier keys * `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias @@ -83,14 +90,19 @@ The following shortcuts automatically add `LSFT()` to keycodes to get commonly u KC_PIPE | KC_COLN : +`OSM(mod)` - this is a "one shot" modifier. So let's say you have your left Shift key defined as `OSM(MOD_LSFT)`. Tap it, let go, and Shift is "on" -- but only for the next character you'll type. So to write "The", you don't need to hold down Shift -- you tap it, tap t, and move on with life. And if you hold down the left Shift key, it just works as a left Shift key, as you would expect (so you could type THE). There's also a magical, secret way to "lock" a modifier by tapping it multiple times. If you want to learn more about that, open an issue. :) + `MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. -These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): +These are the values you can use for the `mod` in `MT()` and `OSM()` (right-hand modifiers are not available for `MT()`): * MOD_LCTL * MOD_LSFT * MOD_LALT * MOD_LGUI + * MOD_HYPR + * MOD_MEH + These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. -- cgit v1.2.3-24-g4f1b From 78bd31f28e16458ed8f2f8a7a1fe97b4a9f3f6af Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 5 May 2016 23:18:46 -0400 Subject: Uses @eltang's famous macro! Still not perfect though :( --- .../erez_experimental/erez_experimental.hex | 2243 ++++++++++---------- .../ergodox_ez/keymaps/erez_experimental/keymap.c | 69 +- 2 files changed, 1162 insertions(+), 1150 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index ab32e94dd..edbead276 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -1,235 +1,235 @@ -:100000000C9465020C94A9020C94A9020C94A90208 -:100010000C94A9020C94A9020C94A9020C94A902B4 -:100020000C94A9020C94A9020C94A00C0C94720DCF -:100030000C94A9020C94A9020C94A9020C94A90294 -:100040000C94A9020C9446220C94A9020C94A902C7 -:100050000C94A9020C94EA1B0C94A9020C94A9021A -:100060000C94A9020C94A9020C94A9020C94A90264 -:100070000C94A9020C94A9020C94A9020C94A90254 -:100080000C94A9020C94A9020C94A9020C94A90244 -:100090000C94A9020C94A9020C94A9020C94A90234 -:1000A0000C94A9020C94A9020C94A902D70DF90D85 -:1000B000E40EF90DE40E3B0E5E0EE40EB30EC60E1A -:1000C000C011C0110112011243127F127F147F145C -:1000D00097127F148E138E1359147F147F146D148E -:1000E0000000F0A12E004C002A00003035810000F5 -:1000F0001E00140004001D7134004D001F001A0082 -:1001000016001B00E104C1002000080007000600E3 -:1001100050002C0021001500090019004F004A0072 -:10012000220017000A000500000065745000015409 -:1001300000002F7F0000E3004F00015400003077E3 -:100140000000E20023001C000B00110000002971D8 -:10015000240018000D74100052004B0025000C0004 -:100160000E00360051002800260012000F00370054 -:100170002F002B81270013003382387130004E008E -:100180002D003100347801302D0000000100010005 -:1001900001000100010000003A001E0022002602BA -:1001A000010001003B001F002300270201000100A5 -:1001B0003C00200024002F004B0101003D002100E5 -:1001C000250030004E0101003E00010026002700FE -:1001D000000001000100010000000100000001001A -:1001E0000100010000000100000001003F000100CB -:1001F0002402310200000100400022022D022602EA -:100200000100010041002E002D0027020100010025 -:1002100042001F0213002000010001004300010002 -:100220002E02010001000100440045000100010010 -:1002300001000000010001000100010001000000B8 -:1002400001000100010001000100010001000100A6 -:10025000F2000100010001000100F000F1000100C6 -:10026000F400010001000100F3000100F5000100AD -:100270000100010001000100000001000100010077 -:100280000000010000000100010001000000010069 -:100290000000010001000100010001000000010058 -:1002A0000100010001000100A9000100010001009E -:1002B0000100AC00AA00B600010001000100AB0083 -:1002C000A80001000100010001000100010001007F -:1002D00001000100AE00010001000000160345000E -: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 -:1004D000DAE0DEBFCDBF04B603FE24C08091F00198 -:1004E0009091F101A091F201B091F3018730904B0E -:1004F000A740B04BB9F41092F0011092F1011092A4 -:10050000F2011092F30114BE84B7877F84BF88E1A3 -:100510000FB6F89480936000109260000FBEE0E088 -:10052000FFE3099511E0A0E0B1E0EAE1F8E402C0E0 -:1005300005900D92A433B107D9F711E0A4E3B1E01F -:1005400001C01D92A03FB107E1F70E94E6090C949B -:100550000B240C940000662319F06130F1F03DC0CB -:10056000FC018281882341F00E94B51B90933501E4 -:100570008093340181EE1CC080913401909135014B -:100580000E94C11B8634910534F486E20E94481013 -:1005900086E20E94101181EE1EC0FC018281882338 -:1005A00051F00E94B51B909335018093340185EE84 -:1005B0000E94481012C080913401909135010E9430 -:1005C000C11B8634910534F487E20E94481087E20B -:1005D0000E94101185EE0E94101180E090E00895B5 -:1005E00008956091B3017091B4018091B50190912B -:1005F000B6010E94131B56985E9825982D98269850 -:100600002E9827982F98813019F0823021F0089584 -:10061000259A2D9A0895269A2E9A08950C94F102FF -:1006200056985E9825982D9826982E9827982F985A -:100630008FEF90E0909389008093880090938B00D7 -:1006400080938A0090938D0080938C00259A2D9A38 -:100650002FEF80E792E0215080409040E1F700C00A -:100660000000269A2E9A2FEF80E792E021508040DA -:100670009040E1F700C00000279A2F9A2FEF80E703 -:1006800092E0215080409040E1F700C000002598A2 -:100690002D982FEF80E792E0215080409040E1F7C5 -:1006A00000C0000026982E982FEF80E792E021509E -:1006B00080409040E1F700C0000027982F9856989E -:1006C0005E9825982D9826982E9827982F9808950B -:1006D00089EA8093800089E08093810024982C9897 -:1006E0003F988AB18F748AB96E98479A8BB1806BA4 -:1006F0008BB9769A0E9410030C94F00280E28093EA -:1007000000018091360181110EC00E94CD0381E06D -:10071000809336012FEF83ED90E32150804090408D -:10072000E1F700C0000080E40E94D3038093000141 -:1007300081112EC00E94FD0380930001811128C009 -:100740000E94FD0380930001811122C08FE30E946B -:10075000FD038093000181111BC00E94F50380E41A -:100760000E94D30380930001811112C08CE00E948B -:10077000FD038093000181110BC00E94FD03809353 -:100780000001811105C08FE30E94FD0380930001E9 -:100790000E94F5038091000108951092B9008AE04B -:1007A0008093B800089594EA9093BC009091BC00A7 -:1007B00097FFFCCF9091B900987F983021F090314D -:1007C00011F081E008958093BB0084E88093BC0021 -:1007D0008091BC0087FFFCCF8091B900887F883171 -:1007E00011F0803471F780E0089584E98093BC00B3 -:1007F0008091BC0084FDFCCF08958093BB0084E809 -:100800008093BC008091BC0087FFFCCF9091B90021 -:10081000987F81E0983209F480E0089584E880931D -:10082000BC008091BC0087FFFCCF8091BB00089585 -:1008300080910001811115C080E40E94D303809350 -:10084000000181110CC082E10E94FD038093000130 -:10085000811105C08FEF0E94FD03809300010E946B -:10086000F50384B1807F84B985B1807F85B98AB171 -:10087000837F8AB98BB1837F8BB93E984698089560 -:100880000E947E03809300010E94180480B38C7044 -:1008900080BB81B3836F81BBE6E4F1E0A8E3B1E004 -:1008A00011921D9281E0E435F807D1F70C946803AA -:1008B000BF92CF92DF92EF92FF920F931F93CF934D -:1008C000DF9380910001882379F0809137018F5F59 -:1008D00080933701811108C00E947E03809300013C -:1008E000811102C00E94100308E311E0C0E0D0E0D3 -:1008F000DD24D39482E0C82EEE24E394F12CC7309B -:1009000000F580910001811162C080E40E94D30350 -:1009100080930001811112C082E10E94FD03809347 -:10092000000181110BC0C7010C2E01C0880F0A9471 -:10093000EAF780950E94FD03809300010E94F50371 -:1009400046C0CA30A1F028F4C83059F0C93061F06F -:1009500005C0CC3089F070F0CD3089F0209A28980D -:1009600010C0219A29980DC0229A2A980AC0239A69 -:100970002B9807C0529A01C0539A5B9802C03E9AC6 -:100980004698E0EAEA95F1F78FB179995AC092E07A -:1009900081708D25892B7C9B02C090E001C094E082 -:1009A000892B7D9B02C090E001C098E0892B7E9B43 -:1009B00002C090E001C090E1892B9FB19095991FF2 -:1009C0009927991F9295990F907E892B0FC080913E -:1009D000000181114BC080E40E94D3038093000189 -:1009E000882389F1B12C0E94F5038B2DF8019081A9 -:1009F000981719F08083C09201010E941804219673 -:100A00000F5F1F4FCE30D10509F079CF80910101E2 -:100A1000882371F1815080930101882339F08FE997 -:100A20009FE00197F1F700C0000022C0A6E4B1E00A -:100A3000E8E3F1E081918D9391E0E634F907D1F795 -:100A400017C090E0A5CF83E10E94FD0380930001D1 -:100A50008111C8CF81E40E94D303809300018111EA -:100A6000C1CF0E940E04B82EB094BDCF80E0BECF9F -:100A70000E940E0381E0DF91CF911F910F91FF90B3 -:100A8000EF90DF90CF90BF900895E82FF0E0EA5B01 -:100A9000FE4F808108950895089596E0799FF001B2 -:100AA000112494E5899FE00DF11D1124E60FF11D3D -:100AB000EE0FFF1FEC51FF4F859194910895880F21 -:100AC000991F805A9040FC01859194910895880F58 -:100AD000991F80529F4FFC018591949108950F9327 -:100AE0001F93CF93DF93EC01811520E3920730F53C -:100AF000811530E2930708F0B1C08B3B910588F473 -:100B0000883A910508F058C0853A910508F049C027 -:100B10008430910508F043C08130910509F4B2C1D9 -:100B2000AEC18F3F910509F0D0F5803F910508F0E7 -:100B300092C0805E9109089790F1A1C1C11581E52D -:100B4000D807A8F4C23090E5D90708F09FC0C115B6 -:100B500020E5D20709F486C008F092C0C11580E4F0 -:100B6000D80708F08CC18E011127106CCCC1C115BB -:100B700090E8D90758F4C11520E7D20708F07BC1E7 -:100B8000C11530E6D30708F423C179C1C11580E946 -:100B9000D80708F074C18E011F70106AB4C18E01AD -:100BA000B2C1853A910509F470C1863A910509F4FC -:100BB0006FC103E810E4A7C1883A910509F46BC13D -:100BC000893A910509F46AC18A3A910509F469C123 -:100BD0008B3A910509F468C18C3A910509F467C113 -:100BE0008D3A910509F466C1803B910509F465C110 -:100BF0008E3A910509F464C18F3A910509F463C1F5 -:100C0000813B910509F462C1823B910509F461C100 -:100C1000833B910509F460C1843B910509F45FC1F0 -:100C2000853B910509F45EC1863B910509F45DC1E0 -:100C3000873B910509F45CC1883B910509F45BC1D0 -:100C4000893B910509F45AC18A3B910509F059C1C4 -:100C50000AE216E458C18C01106555C19F700E94CC -:100C6000670552C10E94A2149FEF24E33CE091501B -:100C700020403040E1F700C000000E940F1C43C13B -:100C80008091CF0181608093CF013DC10E94B71D4B -:100C9000811102C00E949D1D0E94D41D90E090937E -:100CA000F0018093EF01C23080E5D80721F48091F4 -:100CB000EF01816086C0C43090E5D90721F48091AE -:100CC000EF0182607EC0C63020E5D20721F480911A -:100CD000EF01846076C0C83030E5D30719F4809105 -:100CE000EF0127C0CA3080E5D80721F48091EF01D9 -:100CF000806167C0CC3090E5D90721F48091EF0185 -:100D000080625FC0CE3020E5D20721F48091EF01F0 -:100D1000806457C0C03130E5D30721F48091EF01E2 -:100D200080684FC0C23180E5D80729F48091EF0177 -:100D30008460886046C0C33090E5D90721F4809173 -:100D4000EF018E7F3EC0C53020E5D20721F48091AF -:100D5000EF018D7F36C0C73030E5D30721F4809195 -:100D6000EF018B7F2EC0C93080E5D80719F4809140 -:100D7000EF0126C0CB3090E5D90721F48091EF0137 -:100D80008F7E1FC0CD3020E5D20721F48091EF0186 -:100D90008F7D17C0CF3030E5D30721F48091EF016C -:100DA0008F7B0FC0C13180E5D80721F48091EF011E -:100DB0008F7707C0C331D04531F48091EF018B7F2D -:100DC000877F8093EF018091EF010E94D81D9BC027 -:100DD0008D2F99278F70992781309105E9F48E0125 -:100DE000037011279C0102C0220F331F0A95E2F7FE -:100DF00089011C68CE0164E0880F991F6A95E1F7AC -:100E000088279370082B192B73E0CC0FDD1F7A9580 -:100E1000E1F7C076DD272CC08230910529F41C2F24 -:100E20000027016F106A6FC08330910561F4CE0115 -:100E30008370992701E010E002C0000F111F8A950E -:100E4000E2F71C680EC0049709F05DC0CE01837004 -:100E5000992701E010E002C0000F111F8A95E2F708 -:100E60001A6843E0CC0FDD1F4A95E1F7C07ED770CA -:100E70000C2B1D2B48C08E011F70106244C000E077 +:100000000C945C020C94A0020C94A0020C94A0022C +:100010000C94A0020C94A0020C94A0020C94A002D8 +:100020000C94A0020C94A0020C94970C0C94690DF3 +:100030000C94D61B0C94A0020C94A0020C94A00269 +:100040000C94A0020C94A0020C94A0020C94A002A8 +:100050000C94A0020C943D1C0C94A0020C94A002E1 +:100060000C94A0020C94A0020C94A0020C94A00288 +:100070000C94A0020C94A0020C94A0020C94A00278 +:100080000C94A0020C94A0020C94A0020C94A00268 +:100090000C94A0020C94A0020C94A0020C94A00258 +:1000A0000C94A0020C94A0020C94A002CE0DF00DB2 +:1000B000DB0EF00DDB0E320E550EDB0EAA0EBD0E62 +:1000C000CC11CC11FB11FB1146126812CF13CF13C8 +:1000D0007312CF131C131C13C013CF13CF13C913E8 +:1000E0002913291329132913291329132913291330 +:1000F0002913291329132913291329132913291320 +:100100003A1348134F13561360130000F0A100C8B0 +:1001100001C82E004C002A000030358100001E006E +:10012000140004001D7134004D001F001A00160059 +:100130001B00E104C1002000080007000600500079 +:100140002C0021001500090019004F004A00220070 +:1001500017000A00050000006574500001540000FB +:100160002F7F0000E3004F000154000030770000B3 +:10017000E20023001C000B00110000002971240084 +:1001800018000D74100052004B0025000C000E00EA +:10019000360051002800260012000F0037002F0003 +:1001A0002B81270013003382387130004E002D0060 +:1001B0003100347801302D00000001000100010001 +:1001C0000100010000003A001E002200260201008A +:1001D00001003B001F0023002702010001003C003A +:1001E000200024002F004B0101003D0021002500CC +:1001F00030004E0101003E000100260027000000F3 +:1002000001000100010000000100000001000100E8 +:10021000010000000100000001003F000100240275 +:10022000310200000100400022022D0226020100DE +:10023000010041002E002D002702010001004200B4 +:100240001F021300200001000100430001002E02E4 +:10025000010001000100440045000100010001000F +:100260000000010001000100010001000000010088 +:100270000100010001000100010001000100F20085 +:100280000100010001000100F000F1000100F40094 +:10029000010001000100F3000100F5000100010070 +:1002A0000100010001000000010001000100000048 +:1002B0000100000001000100010000000100000039 +:1002C0000100010001000100010000000100010027 +:1002D000010001000100A90001000100010001006E +:1002E000AC00AA00B600010001000100AB00A800AC +:1002F00001000100010001000100010001000100F6 +:100300000100AE000100010000001603450072006C +:1003100067006F0044006F007800200045005A001D +:10032000000016034500720067006F0044006F0074 +:100330007800200045005A00000004030904090267 +:100340006D00040100A0FA0904000001030101008E +:10035000092111010001223F000705810308000A5D +:100360000904010001030102000921110100012219 +:100370004D000705820308000A090402000103007A +:10038000000009211101000122360007058303083E +:10039000000A090403000103000000092111010003 +:1003A0000122390007058403100001120110010029 +:1003B000000008EDFE07130100010200010501091C +:1003C00006A101050719E029E71500250195087523 +:1003D000018102050819012905950575019102950C +:1003E000017503910105071900297715002501956D +:1003F0007875018102C005010980A10185021601FD +:100400000026B7001A01002AB70075109501810077 +:10041000C0050C0901A1018503160100269C021AE2 +:1004200001002A9C02751095018100C00501090296 +:10043000A1010901A10005091901290515002501DE +:10044000950575018102950175038101050109304A +:1004500009311581257F95027508810609381581B6 +:10046000257F950175088106050C0A38021581253E +:100470007F950175088106C0C005010906A1010527 +:100480000719E029E71500250195087501810295F6 +:100490000175088101050819012905950575019166 +:1004A000029501750391010507190029FF15002523 +:1004B000FF950675088100C011241FBECFEFDAE05A +:1004C000DEBFCDBF04B603FE24C08091F20190913F +:1004D000F301A091F401B091F5018730904BA74052 +:1004E000B04BB9F41092F2011092F3011092F401A2 +:1004F0001092F50114BE84B7877F84BF88E10FB6E0 +:10050000F89480936000109260000FBEE0E0FFE37B +:10051000099511E0A0E0B1E0EAEEF7E402C0059031 +:100520000D92A433B107D9F711E0A4E3B1E001C003 +:100530001D92A23FB107E1F70E94DF090C94F3235B +:100540000C940000CF93DF93EC01662319F0613027 +:1005500079F031C08A818823C9F082E00E94561167 +:100560008D81982F907F71F080FD0CC086E21BC0BA +:100570008A818823D9F082E00E9456118D81982FBC +:10058000907F71F48D818F708D8315C08D81807FF8 +:1005900019F086E20E94071182E00E945D110BC0F3 +:1005A00080FDF0CF87E20E943F1005C08D81807FE3 +:1005B00099F387E2EFCF80E090E0DF91CF9108954B +:1005C00008956091B1017091B2018091B301909151 +:1005D000B4010E943D1B56985E9825982D98269848 +:1005E0002E9827982F98813019F0823021F00895A5 +:1005F000259A2D9A0895269A2E9A08950C94E10230 +:1006000056985E9825982D9826982E9827982F987A +:100610008FEF90E0909389008093880090938B00F7 +:1006200080938A0090938D0080938C00259A2D9A58 +:100630002FEF80E792E0215080409040E1F700C02A +:100640000000269A2E9A2FEF80E792E021508040FA +:100650009040E1F700C00000279A2F9A2FEF80E723 +:1006600092E0215080409040E1F700C000002598C2 +:100670002D982FEF80E792E0215080409040E1F7E5 +:1006800000C0000026982E982FEF80E792E02150BE +:1006900080409040E1F700C0000027982F985698BE +:1006A0005E9825982D9826982E9827982F9808952B +:1006B00089EA8093800089E08093810024982C98B7 +:1006C0003F988AB18F748AB96E98479A8BB1806BC4 +:1006D0008BB9769A0E9400030C94E00280E280932A +:1006E00000018091340181110EC00E94BD0381E0A0 +:1006F000809334012FEF83ED90E3215080409040B0 +:10070000E1F700C0000080E40E94C3038093000171 +:1007100081112EC00E94ED0380930001811128C039 +:100720000E94ED0380930001811122C08FE30E949B +:10073000ED038093000181111BC00E94E50380E45A +:100740000E94C30380930001811112C08CE00E94BB +:10075000ED038093000181110BC00E94ED03809393 +:100760000001811105C08FE30E94ED038093000119 +:100770000E94E5038091000108951092B9008AE07B +:100780008093B800089594EA9093BC009091BC00C7 +:1007900097FFFCCF9091B900987F983021F090316D +:1007A00011F081E008958093BB0084E88093BC0041 +:1007B0008091BC0087FFFCCF8091B900887F883191 +:1007C00011F0803471F780E0089584E98093BC00D3 +:1007D0008091BC0084FDFCCF08958093BB0084E829 +:1007E0008093BC008091BC0087FFFCCF9091B90042 +:1007F000987F81E0983209F480E0089584E880933E +:10080000BC008091BC0087FFFCCF8091BB000895A5 +:1008100080910001811115C080E40E94C303809380 +:10082000000181110CC082E10E94ED038093000160 +:10083000811105C08FEF0E94ED03809300010E949B +:10084000E50384B1807F84B985B1807F85B98AB1A1 +:10085000837F8AB98BB1837F8BB93E984698089580 +:100860000E946E03809300010E94080480B38C7084 +:1008700080BB81B3836F81BBE4E4F1E0A6E3B1E028 +:1008800011921D9281E0E235F807D1F70C945803DC +:10089000BF92CF92DF92EF92FF920F931F93CF936D +:1008A000DF9380910001882379F0809135018F5F7B +:1008B00080933501811108C00E946E03809300016E +:1008C000811102C00E94000306E311E0C0E0D0E005 +:1008D000DD24D39482E0C82EEE24E394F12CC730BB +:1008E00000F580910001811162C080E40E94C30381 +:1008F00080930001811112C082E10E94ED03809378 +:10090000000181110BC0C7010C2E01C0880F0A9491 +:10091000EAF780950E94ED03809300010E94E503B1 +:1009200046C0CA30A1F028F4C83059F0C93061F08F +:1009300005C0CC3089F070F0CD3089F0209A28982D +:1009400010C0219A29980DC0229A2A980AC0239A89 +:100950002B9807C0529A01C0539A5B9802C03E9AE6 +:100960004698E0EAEA95F1F78FB179995AC092E09A +:1009700081708D25892B7C9B02C090E001C094E0A2 +:10098000892B7D9B02C090E001C098E0892B7E9B63 +:1009900002C090E001C090E1892B9FB19095991F12 +:1009A0009927991F9295990F907E892B0FC080915E +:1009B000000181114BC080E40E94C30380930001B9 +:1009C000882389F1B12C0E94E5038B2DF8019081D9 +:1009D000981719F08083C09201010E9408042196A3 +:1009E0000F5F1F4FCE30D10509F079CF8091010103 +:1009F000882371F1815080930101882339F08FE9B8 +:100A00009FE00197F1F700C0000022C0A4E4B1E02C +:100A1000E6E3F1E081918D9391E0E434F907D1F7B9 +:100A200017C090E0A5CF83E10E94ED038093000101 +:100A30008111C8CF81E40E94C3038093000181111A +:100A4000C1CF0E94FE03B82EB094BDCF80E0BECFD0 +:100A50000E94FE0281E0DF91CF911F910F91FF90E4 +:100A6000EF90DF90CF90BF900895E82FF0E0EC5B1F +:100A7000FE4F808108950895089596E0799FF001D2 +:100A8000112494E5899FE00DF11D1124E60FF11D5D +:100A9000EE0FFF1FEE5EFE4F859194910895880F33 +:100AA000991F86579040FC01859194910895880F75 +:100AB000991F865F9E4FFC018591949108950F9335 +:100AC0001F93CF93DF93EC01811520E3920730F55C +:100AD000811530E2930708F0B1C08B3B910588F493 +:100AE000883A910508F058C0853A910508F049C048 +:100AF0008430910508F043C08130910509F4C2C1EA +:100B0000BEC18F3F910509F0D0F5803F910508F0F7 +:100B100092C0805E9109089790F1B1C1C11581E53D +:100B2000D807A8F4C23090E5D90708F09FC0C115D6 +:100B300020E5D20709F486C008F092C0C11580E410 +:100B4000D80708F09CC18E011127106CDCC1C115BB +:100B500090E8D90758F4C11520E7D20708F08BC1F7 +:100B6000C11530E6D30708F423C189C1C11580E956 +:100B7000D80708F084C18E011F70106AC4C18E01AD +:100B8000C2C1853A910509F480C1863A910509F4FC +:100B90007FC103E810E4B7C1883A910509F47BC12D +:100BA000893A910509F47AC18A3A910509F479C123 +:100BB0008B3A910509F478C18C3A910509F477C113 +:100BC0008D3A910509F476C1803B910509F475C110 +:100BD0008E3A910509F474C18F3A910509F473C1F5 +:100BE000813B910509F472C1823B910509F471C101 +:100BF000833B910509F470C1843B910509F46FC1F1 +:100C0000853B910509F46EC1863B910509F46DC1E0 +:100C1000873B910509F46CC1883B910509F46BC1D0 +:100C2000893B910509F46AC18A3B910509F069C1C4 +:100C30000AE216E468C18C01106565C19F700E94CC +:100C4000570562C10E9419149FEF24E33CE09150C4 +:100C500020403040E1F700C000000E94621C53C1F8 +:100C60008091D30181608093D3014DC10E940A1EFF +:100C7000811102C00E94F01D0E94271E90E09093F7 +:100C8000F2018093F101C23080E5D80721F4809110 +:100C9000F101816086C0C43090E5D90721F48091CC +:100CA000F10182607EC0C63020E5D20721F4809138 +:100CB000F101846076C0C83030E5D30719F4809123 +:100CC000F10127C0CA3080E5D80721F48091F101F5 +:100CD000806167C0CC3090E5D90721F48091F101A3 +:100CE00080625FC0CE3020E5D20721F48091F1010F +:100CF000806457C0C03130E5D30721F48091F10101 +:100D000080684FC0C23180E5D80729F48091F10195 +:100D10008460886046C0C33090E5D90721F4809193 +:100D2000F1018E7F3EC0C53020E5D20721F48091CD +:100D3000F1018D7F36C0C73030E5D30721F48091B3 +:100D4000F1018B7F2EC0C93080E5D80719F480915E +:100D5000F10126C0CB3090E5D90721F48091F10153 +:100D60008F7E1FC0CD3020E5D20721F48091F101A4 +:100D70008F7D17C0CF3030E5D30721F48091F1018A +:100D80008F7B0FC0C13180E5D80721F48091F1013C +:100D90008F7707C0C331D04531F48091F1018B7F4B +:100DA000877F8093F1018091F1010E942B1EABC0DF +:100DB0008D2F99278F70992781309105E9F48E0145 +:100DC000037011279C0102C0220F331F0A95E2F71E +:100DD00089011C68CE01E4E0880F991FEA95E1F7CC +:100DE00088279370082B192BF3E0CC0FDD1FFA95A1 +:100DF000E1F7C076DD272CC08230910529F41C2F45 +:100E00000027016F106A7FC08330910561F4CE0125 +:100E10008370992701E010E002C0000F111F8A952E +:100E2000E2F71C680EC084309105A9F4CE018370EE +:100E3000992701E010E002C0000F111F8A95E2F728 +:100E40001A6863E0CC0FDD1F6A95E1F7C07ED770AA +:100E50000C2B1D2B58C08530910529F41C2F002721 +:100E6000046F106A50C0069709F04DC0CF71DD279E +:100E70001C2F002702C08E011F70106244C000E0CA :100E800010E041C001E010E03EC001E810E43BC0CA :100E900002E810E438C002EE14E435C009EE14E4B0 :100EA00032C00AEE14E42FC005EB14E42CC006EBAC @@ -240,43 +240,43 @@ :100EF00005E216E408C006E216E405C007E216E4BF :100F000002C000E014E4C801DF91CF911F910F915E :100F1000089596E0799FF001112494E5899FE00DF2 -:100F2000F11D1124E60FF11DEE0FFF1FEC51FF4FD5 +:100F2000F11D1124E60FF11DEE0FFF1FEE5EFE4FC7 :100F300085919491803E9105E0F4803C910558F5AF :100F40008133910509F46FC048F48932910509F4A1 :100F500063C08A32910509F46DC072C0893391056E :100F6000E9F082389105D1F08533910509F44DC03F :100F700067C0833E910581F138F4803E9105B9F058 :100F8000823E9105D9F05CC0863E910561F1873EB5 -:100F90009105A1F155C00E945F0508952091EF01D0 +:100F90009105A1F155C00E944F0508952091F101DE :100FA00020FD02C021FF4CC080EE90E049C080913E -:100FB000EF0180FFF9CF89E390E042C08091EF011B -:100FC00082FF0EC08091EF0184FF03C080E090E0BB -:100FD00037C083EE90E034C08091EF0182FFF2CF02 -:100FE00082EE90E02DC08091EF0183FF0BC08091D5 -:100FF000EF0184FDEBCF87EE90E022C08091EF01FE -:1010000083FFF5CF86EE90E01BC08091EF0185FF56 -:1010100007C089E290E014C08091EF0185FFF9CF0D -:1010200085E390E00DC08091EF0186FF07C08AE262 -:1010300090E006C08091EF0186FFF9CF81E390E058 -:101040000E946F05089508950C942308809164010F +:100FB000F10180FFF9CF89E390E042C08091F10117 +:100FC00082FF0EC08091F10184FF03C080E090E0B9 +:100FD00037C083EE90E034C08091F10182FFF2CF00 +:100FE00082EE90E02DC08091F10183FF0BC08091D3 +:100FF000F10184FDEBCF87EE90E022C08091F101FA +:1010000083FFF5CF86EE90E01BC08091F10185FF54 +:1010100007C089E290E014C08091F10185FFF9CF0B +:1010200085E390E00DC08091F10186FF07C08AE260 +:1010300090E006C08091F10186FFF9CF81E390E056 +:101040000E945F05089508950C9423088091620121 :101050000895CF93DF9300D01F92CDB7DEB72091D4 -:10106000E601243019F523E029839B838A832093AA +:10106000E801243019F523E029839B838A832093A8 :10107000E9008FEF9091E800815095FD06C095ED55 :101080009A95F1F700008111F5CF8091E80085FF76 :101090000DC040E050E063E070E0CE0101960E9498 -:1010A000930A8091E8008E778093E8000F900F906C +:1010A0008A0A8091E8008E778093E8000F900F9075 :1010B0000F90DF91CF910895CF93DF9300D01F92CF -:1010C000CDB7DEB72091E601243021F522E0298357 +:1010C000CDB7DEB72091E801243021F522E0298355 :1010D0009B838A8383E08093E9008FEF9091E800FF :1010E000815095FD06C095ED9A95F1F700008111AC :1010F000F5CF8091E80085FF0DC040E050E063E04F -:1011000070E0CE0101960E94930A8091E8008E77EC +:1011000070E0CE0101960E948A0A8091E8008E77F5 :101110008093E8000F900F900F90DF91CF9108958A -:101120002091E6012430F1F422E02093E9002FEF32 +:101120002091E8012430F1F422E02093E9002FEF30 :101130003091E800215035FD06C035ED3A95F1F7C4 :1011400000002111F5CF2091E80025FF0BC040E001 -:1011500050E065E070E00E94930A8091E8008E778D -:101160008093E8000895CF93DF93EC018091E6012E +:1011500050E065E070E00E948A0A8091E8008E7796 +:101160008093E8000895CF93DF93EC018091E8012C :10117000843009F046C090910C019923D9F09091E8 :101180000D019923B9F08093E9008FEF9091E80069 :10119000815095FD06C095E19A95F1F70000811107 @@ -284,876 +284,873 @@ :1011B00070E017C081E08093E9008FEF9091E80024 :1011C000815095FD06C095ED9A95F1F700008111CB :1011D000F5CF8091E80085FF14C040E050E068E062 -:1011E00070E0CE010E94930A8091E8008E77809390 -:1011F000E80080E1FE01A4E5B1E001900D928A953E -:10120000E1F7DF91CF9108958091E501811109C047 -:101210000E94250C0E94820C8091E20084608093E1 -:10122000E20008951092E501089508950C94332288 -:101230000E94A61B0E9439220E941F0F0C942408B2 -:1012400042E061EC81E00E949F0B42E061EC82E0B1 -:101250000E949F0B42E061EC83E00E949F0B42E101 -:1012600061EC84E00C949F0B8091E801833009F4D9 -:1012700055C030F4813071F0823009F48EC0089589 -:101280008A3009F47AC08B3009F460C0893009F0E3 -:101290009CC020C08091E701813A09F096C08091FE -:1012A000E800877F8093E8008091EB019091EC014A -:1012B000892B21F060E080E090E003C060E184E5EC -:1012C00091E070E00E94DC0A8091E8008B778093C7 -:1012D000E80008958091E701813209F076C080919D -:1012E000EB019091EC01009719F0039709F06DC0A4 -:1012F0008091E800877F8093E8008091E80082FD7C -:1013000005C08091E6018111F8CF5FC08091F100A6 -:10131000809364018091E8008B7753C08091E7014E -:10132000813A09F052C08091EB019091EC01892B38 -:1013300009F04BC08091E800877F8093E80080919E -:10134000E80080FFFCCF80910C0136C08091E7015E -:101350008132D9F58091EB019091EC01892BA9F5AF -:101360008091E800877F8093E8000E94D40B8091F1 -:10137000E90180930C010C94A2148091E701813261 -:1013800021F58091E800877F8093E8000E94D40BCC -:101390008091EA018093650108958091E701813A87 -:1013A000A1F48091E800877F8093E8008091E800B5 -:1013B00080FFFCCF809165018093F1008091E8006F -:1013C0008E778093E8000C94D40B089584B7877FC0 -:1013D00084BF88E10FB6F89480936000109260009B -:1013E0000FBE90E080E80FB6F89480936100909370 -:1013F00061000FBE0E946E0F0E94250C0E94820C9D -:101400008091E20084608093E20078940E94FD0E57 -:101410000E94700F82E091E00E941A0F0E94212228 -:101420008091E601853069F40E94661B8091E40199 -:101430008823B1F30E94911B882391F30E947D0AB7 -:10144000EFCF0E94760FECCF292F332723303105C1 -:10145000A9F06CF42130310509F442C02230310585 -:1014600009F043C08DE690E020E133E042C0213234 -:101470003105C9F02232310519F137C09927813081 -:10148000910541F08230910541F0892B71F5ECE036 -:10149000F3E005C0E4EFF2E002C0ECEDF2E084918D -:1014A00090E09F0126C0643000F5E62FF0E0EE0FDB -:1014B000FF1FEE5DFE4F2081318189E090E019C071 -:1014C000643098F4E62FF0E0DF01AA0FBB1FA65EA0 -:1014D000BE4F2D913C91EA5EFE4F808190E009C0A5 -:1014E00082E190E02DE733E004C080E090E020E06E -:1014F00030E0FA0131832083089580E189BD82E1E3 -:1015000089BD09B400FEFDCF8091D8008F7D809306 -:10151000D8008091E00082608093E0008091E0003C -:1015200081FDFCCF0895CF92DF92EF92FF920F934F -:101530001F93CF93DF937C018B01EA010E94F50B8F -:10154000811131C0209731F088819981081B190BD6 -:10155000E80EF91EC12CD12C0115110519F180914D -:10156000E80085FD14C08091E8008E778093E80044 -:10157000209741F0888199818C0D9D1D99838883E6 -:1015800085E011C00E94F50B882331F30CC0F701F0 -:1015900081917F018093F10001501109FFEFCF1A73 -:1015A000DF0ADACF80E0DF91CF911F910F91FF909A -:1015B000EF90DF90CF9008952091ED013091EE01F2 -:1015C0002617370748F06115710539F42091E800B6 -:1015D0002E772093E80001C0B901FC0120E06115DD -:1015E0007105B9F18091E601882309F440C0853086 -:1015F00009F43FC08091E80083FD3DC08091E80080 -:1016000082FF06C08091E80082FF26C080E0089536 -:101610008091E80080FFE3CF2091F3008091F200F9 -:1016200090E0922B6115710551F08830910538F4E6 -:1016300021912093F100615071090196F3CF21E0CF -:10164000089709F020E08091E8008E778093E80009 -:10165000C6CF2111C7CFD6CF8091E601882339F0BC -:10166000853039F08091E80083FFCCCF04C082E060 -:10167000089583E0089581E008952091ED0130916F -:10168000EE012617370748F06115710539F42091EE -:10169000E8002E772093E80001C0B901FC0120E0AA -:1016A00061157105C1F18091E601882309F441C0FB -:1016B000853009F440C08091E80083FD3EC08091F0 -:1016C000E80082FF06C08091E80082FF27C080E02A -:1016D00008958091E80080FFE3CF2091F30080918E -:1016E000F20090E0922B6115710559F08830910558 -:1016F00040F424912093F1003196615071090196D4 -:10170000F2CF21E0089709F020E08091E8008E7781 -:101710008093E800C5CF2111C6CFD5CF8091E601D7 -:10172000882339F0853039F08091E80083FFCBCFF2 -:1017300004C082E0089583E0089581E00895982F21 -:10174000973058F59093E900981739F07091EC00B4 -:101750002091ED005091F00003C0242F762F50E02F -:1017600021FF19C03091EB003E7F3093EB003091A8 -:10177000ED003D7F3093ED003091EB003160309310 -:10178000EB007093EC002093ED005093F00020915B -:10179000EE0027FF07C09F5FD3CF8F708093E900D3 -:1017A00081E0089580E008958091E70187FD05C0FC -:1017B0008091E80080FF0EC012C08091E80082FD99 -:1017C00005C08091E6018111F8CF08958091E8006D -:1017D0008B7708C08091E6018111EACF089580914E -:1017E000E8008E778093E80008958091E40090915E -:1017F000E50045E62091EC0020FF21C02091E800A3 -:1018000020FD21C02091E601222389F0253089F0B6 -:101810002091EB0025FD0FC02091E4003091E50000 -:101820002817390739F3415041F0C901E3CF82E06D -:10183000089583E0089581E0089584E0089520915B -:10184000E80022FFDFCF80E008950E94930C0E9401 -:101850009B0CE0EEF0E0808181608083E8EDF0E0B9 -:1018600080818F77808319BCA7EDB0E08C918E7F4B -:101870008C9380818F7E80831092E50108950F9371 -:101880001F93CF93DF930E94930C0E949B0CC8ED93 -:10189000D0E088818F778883888180688883888179 -:1018A0008F7D888319BC1092E6011092E20110929C -:1018B000E4011092E30100EE10E0F80180818B7FDB -:1018C000808388818160888342E060E080E00E94BC -:1018D0009F0BE1EEF0E080818E7F8083E2EEF0E00E -:1018E000808181608083808188608083F80180812D -:1018F0008E7F8083888180618883DF91CF911F9163 -:101900000F910895E8EDF0E080818F7E8083E7ED10 -:10191000F0E080818160808384E082BF81E08093F9 -:10192000E5010C943F0CE8EDF0E080818E7F808330 -:101930001092E20008951092DA001092E1000895EA -:101940001F920F920FB60F9211242F933F934F9334 -:101950005F936F937F938F939F93AF93BF93EF9317 -:10196000FF938091E10082FF0BC08091E20082FF33 -:1019700007C08091E1008B7F8093E1000E94FC0E04 -:101980008091DA0080FF1FC08091D80080FF1BC0CB -:101990008091DA008E7F8093DA008091D90080FFF9 -:1019A0000DC080E189BD82E189BD09B400FEFDCF93 -:1019B00081E08093E6010E94040905C019BC1092E1 -:1019C000E6010E9412098091E10080FF19C0809118 -:1019D000E20080FF15C08091E2008E7F8093E200DC -:1019E0008091E20080618093E2008091D800806263 -:1019F0008093D80019BC85E08093E6010E94160907 -:101A00008091E10084FF30C08091E20084FF2CC00F -:101A100080E189BD82E189BD09B400FEFDCF8091DE -:101A2000D8008F7D8093D8008091E1008F7E8093D5 -:101A3000E1008091E2008F7E8093E2008091E200DD -:101A400081608093E2008091E201882311F084E0BC -:101A500007C08091E30087FF02C083E001C081E0FE -:101A60008093E6010E9418098091E10083FF29C05C -:101A70008091E20083FF25C08091E100877F809301 -:101A8000E10082E08093E6011092E2018091E100A2 -:101A90008E7F8093E1008091E2008E7F8093E20050 -:101AA0008091E20080618093E20042E060E080E0AB -:101AB0000E949F0B8091F00088608093F0000E944C -:101AC0001509FF91EF91BF91AF919F918F917F91F8 -:101AD0006F915F914F913F912F910F900FBE0F909B -:101AE0001F9018951F920F920FB60F9211242F93EB -:101AF0003F934F935F936F937F938F939F93AF9396 -:101B0000BF93CF93EF93FF93C091E900CF70809183 -:101B1000EC001092E9008091F000877F8093F00044 -:101B200078940E94AE0D1092E9008091F0008860D8 -:101B30008093F000C093E900FF91EF91CF91BF91A6 -:101B4000AF919F918F917F916F915F914F913F9155 -:101B50002F910F900FBE0F901F9018951F93CF934A -:101B6000DF93CDB7DEB7AA970FB6F894DEBF0FBEEE -:101B7000CDBFE7EEF1E08091F100819321E0EF3EEF -:101B8000F207C9F70E9434098091E80083FF1CC165 -:101B90002091E7013091E801832F90E08A30910590 -:101BA00008F012C1FC01EA5AFF4F0C94BB23203805 -:101BB00081F0223809F008C18091EB018F70809389 -:101BC000E9008091EB0085FB882780F91092E900FD -:101BD00006C08091E3019091E4019111826090919F -:101BE000E800977F9093E8008093F1001092F10055 -:101BF000C5C0822F8D7F09F0E7C0222319F0223063 -:101C000061F0E2C08091E901813009F0DDC033303C -:101C100009F080E08093E40128C08091E9018111FE -:101C200024C02091EB012F7009F4CEC02093E9006D -:101C30008091EB0080FF19C08091EB00333011F4EC -:101C4000806211C080618093EB0081E090E0022E01 -:101C500001C0880F0A94EAF78093EA001092EA0024 -:101C60008091EB0088608093EB001092E9008091F6 -:101C7000E800877F86C02111A7C01091E9011F7776 -:101C80008091E3008078812B8093E3008091E800CD -:101C9000877F8093E8000E94D40B8091E80080FF4A -:101CA000FCCF8091E30080688093E300112311F062 -:101CB00083E001C082E08093E60186C02058223094 -:101CC00008F082C08091E9019091EA018C3D23E007 -:101CD000920779F583E08A838AE289834FB7F89483 -:101CE000DE01139620E03EE051E2E32FF0E0509356 -:101CF0005700E49120FF03C0E295EF703F5FEF7063 -:101D00008E2F90E0EA3010F0C79601C0C0968D93F8 -:101D10009D932F5F243149F74FBF8091E800877F63 -:101D20008093E8006AE270E0CE0101960E94DC0A2E -:101D300014C0AE014F5F5F4F6091EB010E94240A17 -:101D4000009709F441C02091E800277F2093E80024 -:101D5000BC0189819A810E943D0B8091E8008B77BC -:101D60008093E80031C0203879F58091E800877FC2 -:101D70008093E8008091E2018093F1008091E80077 -:101D80008E778093E8000E94D40B1EC021111CC0E6 -:101D90009091E9019230C0F48091E800877F8093B0 -:101DA000E8009093E2010E94D40B8091E20181113E -:101DB00004C08091E30087FF02C084E001C081E09D -:101DC0008093E6010E9420098091E80083FF0AC009 -:101DD0008091E800877F8093E8008091EB0080622B -:101DE0008093EB00AA960FB6F894DEBF0FBECDBF6E -:101DF000DF91CF911F9108950895CF938091E601CF -:101E00008823B1F08091E9008F709091EC0090FFF1 -:101E100002C090E801C090E0C92FC82B1092E900E1 -:101E20008091E80083FD0E94AE0DCF70C093E90061 -:101E3000CF91089590936B0180936A010895E0918A -:101E40006A01F0916B01309721F00190F081E02D53 -:101E5000099480E00895E0916A01F0916B01309758 -:101E600021F00280F381E02D09940895E0916A0148 -:101E7000F0916B01309721F00480F581E02D0994F9 -:101E8000089520916801309169018217930771F0DC -:101E90009093690180936801E0916A01F0916B0170 -:101EA000309721F00680F781E02D09940895209164 -:101EB0006601309167018217930771F09093670173 -:101EC00080936601E0916A01F0916B01309721F0F7 -:101ED0000084F185E02D0994089508950C946D0F08 -:101EE0000E94AC1B0E9440040C94721CCF92DF92A3 -:101EF000EF92FF920F931F93CF93DF93CDB7DEB78F -:101F00002B970FB6F894DEBF0FBECDBF0E945804CA -:101F10003DE6E32E31E0F32E00E010E0C02E802FEE -:101F20000E944505F701D1907F01D826B1F40F5FDB -:101F30001F4F0E30110591F78FEF89838A831B8223 -:101F40000E94B51B8160782F9D838C8349815A81C3 -:101F50006B818D810E94191041C09091CF0191FF3A -:101F600004C08B870E944B058B8520E030E04D2D0F -:101F700050E0922FBA01022E02C0759567950A941F -:101F8000E2F760FF25C02E83CF82EE24E394F12C8C -:101F900002C0EE0CFF1C9A95E2F790E08E219F2183 -:101FA00021E0892B09F420E028870E94B51B81607D -:101FB000782F9A8789874E815F8168858A850E94FC -:101FC0001910F801E359FE4F80818E25808306C0E9 -:101FD0002F5F3F4F2630310561F6A9CF0E94561F73 -:101FE00010916C010E941F0F1817A1F00E941F0F83 -:101FF00080936C012B960FB6F894DEBF0FBECDBF59 -:10200000DF91CF911F910F91FF90EF90DF90CF90D4 -:102010000C9424082B960FB6F894DEBF0FBECDBFEC -:10202000DF91CF911F910F91FF90EF90DF90CF90B4 -:102030000895CF93DF93CDB7DEB72B970FB6F89403 -:10204000DEBF0FBECDBF4F83588769877A878B87E6 -:10205000DE01119686E0FD0111928A95E9F785E08F -:10206000FE01379601900D928A95E1F749815A81D8 -:102070006B817C818D819E810E946E172B960FB69D -:10208000F894DEBF0FBECDBFDF91CF9108950895C4 -:10209000CF93C82F882309F4C1C0823859F40E9415 -:1020A0001F0F81FDBBC089E30E941A1A0E94E41A27 -:1020B00089E30CC0833879F40E941F0F80FDAEC005 -:1020C00083E50E941A1A0E94E41A83E50E945A1AB4 -:1020D000CF910C94E41A843859F40E941F0F82FDAA -:1020E0009DC087E40E941A1A0E94E41A87E4EECF8A -:1020F0008CEF8C0F813A48F48C2F0E94892181113A -:102100008DC08C2F0E941A1AE3CF80E28C0F88308A -:1021100048F4C77081E001C0880FCA95EAF70E94B1 -:102120009B1AD6CF8BE58C0F833078F4C53A29F013 -:10213000C63A31F482E890E005C081E890E002C040 -:1021400083E890E0CF910C94410F88E58C0F8331A8 -:1021500008F064C0C83A39F1C93A41F1CA3A49F1C4 -:10216000CB3A51F1CC3A59F1CD3A61F1C03B69F12A -:10217000CE3A71F1CF3A79F1C13B81F1C23B89F19D -:10218000C33B91F1C43B99F1C53BA1F1C63BA9F119 -:10219000C73BB1F1C83BB9F1C93BC1F1CA3BC9F575 -:1021A0008AE292E038C082EE90E035C089EE90E09D -:1021B00032C08AEE90E02FC085EB90E02CC086EB19 -:1021C00090E029C087EB90E026C08CEC90E023C023 -:1021D0008DEC90E020C083E891E01DC08AE891E09A -:1021E0001AC082E991E017C084E991E014C081E24D -:1021F00092E011C083E292E00EC084E292E00BC054 -:1022000085E292E008C086E292E005C087E292E0B3 -:1022100002C080E090E0CF910C94570FCF910895C9 -:10222000882309F44BC0823859F40E941F0F81FFA4 -:1022300045C089E30E941A1A0E94E41A89E30CC07F -:10224000833871F40E941F0F80FF38C083E50E941D -:102250001A1A0E94E41A83E50E945A1A0C94E41A8E -:10226000843859F40E941F0F82FF28C087E40E941F -:102270001A1A0E94E41A87E4EFCF9CEF980F913A64 -:1022800058F390E2980F983050F4877091E001C0B5 -:10229000990F8A95EAF7892F0E94A11ADFCF9BE553 -:1022A000980F933020F480E090E00C94410F885A0E -:1022B000833120F480E090E00C94570F0895882338 -:1022C00021F00E949B1A0C94E41A0895882321F0AF -:1022D0000E94A11A0C94E41A0895CF92DF92EF9213 -:1022E000FF920F931F93CF93DF93CDB7DEB728975D -:1022F0000FB6F894DEBF0FBECDBF8C0185E0F801AC -:10230000DE01119601900D928A95E1F7F801D080D7 -:10231000E180F280558152955F7023813481232BB7 -:1023200039F0FFEFEF1206C081E0DF1203C003C0F7 -:1023300081E001C080E080FDE2C2C8015F830E94AD -:102340004710D982EA8269817A818F2D0E94161AFC -:102350009E8388870E94CA190E949D184E815F81C2 -:102360006885FF2029F00E94B81A68855F814E8138 -:10237000E42FE295EF70F0E0E05AFF4F0C94BB239E -:10238000842F807F142F1F70882311F01295107FE7 -:10239000FF20B1F0112309F467C280E2860F883074 -:1023A00028F4812F68870E949B1A04C0812F6887B8 -:1023B0000E94AB1A688568870E94E41A688554C237 -:1023C000862F68870E9410116885112309F497C22F -:1023D000605E812F683018F40E94A11A02C00E942A -:1023E000B11A28960FB6F894DEBF0FBECDBFDF91AD -:1023F000CF911F910F91FF90EF90DF90CF900C94B1 -:10240000E41A242F207F842F8F70203211F08295C0 -:10241000807F662319F0613019F12BC0FF20B1F0E5 -:10242000552309F493C1513009F090C128960FB695 -:10243000F894DEBF0FBECDBFDF91CF911F910F91FA -:10244000FF90EF90DF90CF900C94CB1A552319F0AA -:10245000513009F454C28E830E94CE1A8E8189C1F4 -:10246000FF2021F0523008F04AC270C1511147C21A -:1024700080C1FF2021F0552309F468C1F5C155231F -:1024800009F477C105C2242F26952695237030E0E4 -:102490002115310521F021303105C9F030C2FF206E -:1024A00021F0862F942F937002C080E090E0289650 -:1024B0000FB6F894DEBF0FBECDBFDF91CF911F9155 -:1024C0000F91FF90EF90DF90CF900C94410FFF2081 -:1024D00021F0862F942F937002C080E090E0289620 -:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125 -:1024F0000F91FF90EF90DF90CF900C94570F862FA5 -:10250000FF2019F00E945E1E02C00E94C61E28967F -:102510000FB6F894DEBF0FBECDBFDF91CF911F91F4 -:102520000F91FF90EF90DF90CF900C944B1F842F72 -:10253000837009F076C0F110E2C1262F229526950E -:102540002770220F220F862F8F70C82ED12CE12CDE -:10255000F12C022E04C0CC0CDD1CEE1CFF1C0A94D6 -:10256000D2F764FF10C06FE070E080E090E004C03C -:10257000660F771F881F991F2A95D2F7609570956F -:102580008095909503C060E070E0CB01242F2695E4 -:1025900026952370422F50E042305105D1F0433050 -:1025A000510559F16C297D298E299F29413051050A -:1025B00041F128960FB6F894DEBF0FBECDBFDF9174 -:1025C000CF911F910F91FF90EF90DF90CF900C94DF -:1025D000C2186C297D298E299F2928960FB6F89458 -:1025E000DEBF0FBECDBFDF91CF911F910F91FF9046 -:1025F000EF90DF90CF900C94DC180E94C218C701B6 -:10260000B60128960FB6F894DEBF0FBECDBFDF919E -:10261000CF911F910F91FF90EF90DF90CF900C948E -:10262000A818FF2019F0842F817001C08695882397 -:1026300009F465C1262F229526952770220F220FB7 -:10264000862F8F70C82ED12CE12CF12C022E04C0C5 -:10265000CC0CDD1CEE1CFF1C0A94D2F764FF10C0EA -:102660006FE070E080E090E004C0660F771F881F85 -:10267000991F2A95D2F7609570958095909503C023 -:1026800060E070E0CB01242F269526952370422F21 -:1026900050E042305105D1F04330510559F16C29D9 -:1026A0007D298E299F294130510541F128960FB689 -:1026B000F894DEBF0FBECDBFDF91CF911F910F9178 -:1026C000FF90EF90DF90CF900C9496196C297D29A4 -:1026D0008E299F2928960FB6F894DEBF0FBECDBF76 -:1026E000DF91CF911F910F91FF90EF90DF90CF90EE -:1026F0000C94B0190E949619C701B60128960FB61E -:10270000F894DEBF0FBECDBFDF91CF911F910F9127 -:10271000FF90EF90DF90CF900C947C19603FC9F14F -:1027200018F4603E50F49BC0623F09F460C008F4A6 -:102730004AC0633F09F46FC092C0162F1F70842FE8 -:102740008F71FF2099F00E941519812F28960FB6DE -:10275000F894DEBF0FBECDBFDF91CF911F910F91D7 -:10276000FF90EF90DF90CF900C945F110E9436198C -:10277000812F28960FB6F894DEBF0FBECDBFDF9134 -:10278000CF911F910F91FF90EF90DF90CF900C941D -:102790006611FF20A1F05111B2C0842F8F712896CD -:1027A0000FB6F894DEBF0FBECDBFDF91CF911F9162 -:1027B0000F91FF90EF90DF90CF900C945B19523007 -:1027C00008F09DC0EACFFF20A1F0842F8F712896DA -:1027D0000FB6F894DEBF0FBECDBFDF91CF911F9132 -:1027E0000F91FF90EF90DF90CF900C941519FF2080 -:1027F00061F3842F8F7128960FB6F894DEBF0FBE59 -:10280000CDBFDF91CF911F910F91FF90EF90DF909F -:10281000CF900C943619FF2091F0842F8F71289659 -:102820000FB6F894DEBF0FBECDBFDF91CF911F91E1 -:102830000F91FF90EF90DF90CF900C9400192896A5 -:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1 -:102850000F91FF90EF90DF90CF900C94F618FF202F -:10286000A1F0552309F4B1CF862F28960FB6F8941E -:10287000DEBF0FBECDBFDF91CF911F910F91FF90B3 -:10288000EF90DF90CF900C944810552309F4B1CF0E -:10289000862F28960FB6F894DEBF0FBECDBFDF910E -:1028A000CF911F910F91FF90EF90DF90CF900C94FC -:1028B00010114F70C8010E94AB0228960FB6F89411 -:1028C000DEBF0FBECDBFDF91CF911F910F91FF9063 -:1028D000EF90DF90CF900C941B184F70C801289692 -:1028E0000FB6F894DEBF0FBECDBFDF91CF911F9121 -:1028F0000F91FF90EF90DF90CF900C944C052896AD -:102900000FB6F894DEBF0FBECDBFDF91CF911F9100 -:102910000F91FF90EF90DF90CF9008950E94B81A2A -:102920000E94C81A0E948D1A0E94E41A0E94F71F82 -:102930000E944B1F80E090E00E94410F80E090E0F9 -:102940000C94570F0E94A81A0C948E140E940B1A14 -:10295000292F22952F7030E02C3031054CF42A308D -:1029600031056CF4225031092230310590F407C052 -:102970002C30310551F02F30310539F00AC0803E3E -:1029800010F0803F31F481E0089593FB882780F9AF -:10299000089580E00895CF93DF9300D000D01F9278 -:1029A000CDB7DEB70F900F900F900F900F90DF9183 -:1029B000CF910895CF93DF9300D000D000D0CDB752 -:1029C000DEB726960FB6F894DEBF0FBECDBFDF91FF -:1029D000CF9108951F93CF93DF93C0917B0116E0B1 -:1029E00080917C01C81799F0D0E01C9FF0011D9FD9 -:1029F000F00D1124E358FE4F4081518162817381B3 -:102A0000848195810E94DA142196C770E9CFDF9105 -:102A1000CF911F9108954091AD015091AE01609109 -:102A2000AF017091B0018091B1019091B2010C940D -:102A3000DA14CF938091B20182958F7009F05FC054 -:102A40008091AF01882309F45AC020917B01A091A5 -:102A50007C016091AD017091AE018091B0019091C7 -:102A6000B10131E06F3F09F030E0B32FC6E02A1723 -:102A700009F445C0009721F07F3F21F44B2F03C09C -:102A800041E001C040E030E040FD35C0C29FF001B0 -:102A9000C39FF00D1124E358FE4F418174132BC0E6 -:102AA0004081641328C04281411125C04381548173 -:102AB0004817590710F441505109481B590B483C1D -:102AC0005105C8F48091B2018F7080618093B2018A -:102AD00086E0829FF001839FF00D1124EE57FE4F98 -:102AE00080818F70806180838DEA91E00E946D11FA -:102AF000CF910C94EA142F5F3F4F2770B8CFCF913E -:102B00000895CF92DF92EF92FF920F931F93CF938E -:102B1000DF93CDB7DEB762970FB6F894DEBF0FBE76 -:102B2000CDBF8C0185E0F801DE011D9601900D926C -:102B30008A95E1F7D8014C9111965C911197129604 -:102B40006C9112971396ED90FC9014977091AD01D3 -:102B5000E091AE012091B0013091B1012115310514 -:102B600031F0EF3F31F481E07F3F19F403C081E0A1 -:102B700001C080E0B82FB170CB2E80FD6CC1D09029 -:102B8000AF01DD2009F4F5C0F091B201E216F306C1 -:102B900038F0C701821B930B883C910548F09BC01D -:102BA000209530952E0D3F1D283C310508F093C02F -:102BB0008F2F807F09F052C0E51314C0741312C028 -:102BC000D62E61110FC0FF70F061F093B2010E9428 -:102BD0000B158DEA91E00E946D118091B201F80110 -:102BE00085836CC1EF2831F05F3F31F481E04F3FC6 -:102BF00019F403C081E001C080E080FD03C081E0E2 -:102C0000862701C080E0F82FF170FF2E80FF1CC0E6 -:102C100080917B0120917C0136E0821709F428C164 -:102C200090E0389FF001399FF00D1124E358FE4FDA -:102C30007181571306C07081471303C072816713F7 -:102C400003C001968770E9CFD62E662309F436C1FA -:102C50008091B20181608093B20153C0E51308C036 -:102C6000741306C0611104C0D8011596FC93AEC060 -:102C70004D875E878D859E856A8B0E94A6146A8922 -:102C8000882329F1D62E662311F12091B201822FDB -:102C900082958F7090E002970CF460C08091AD0136 -:102CA0009091AE0198878F831986FB86EA862C87E0 -:102CB000CE01079651C0E51731F14D875E878D85AE -:102CC0009E856A8B0E94A6146A8981112EC0C80154 -:102CD0000E946D11A4C08F2F807F69F77E2DF98A25 -:102CE000E88A89890E94CB148DEA91E00E946D11D7 -:102CF000EDEAF1E086E0DF011D928A95E9F70E9496 -:102D00000B15D12CDBC07413D8CF6111D6CFD801ED -:102D10001596FC93C8010E946D11EDEAF1E086E082 -:102D2000DF011D928A95E9F7C9C0D62E662379F294 -:102D30002091B201822F82958F7090E0029774F0FB -:102D40008091AD019091AE019A8389831B82FD82AF -:102D5000EC822E83CE0101960E946D1186E0F8016F -:102D6000ADEAB1E001900D928A95E1F70E94191544 -:102D70006FC0E216F30628F0C701821B930B9C017B -:102D800004C0209530952E0D3F1D283C310508F0DC -:102D900052C0D62E662309F49ACFE5132CC07413C3 -:102DA0002AC08091B20180FD1DC0982F92959F701E -:102DB000C9F0D80115968C9315979F3039F09F5F15 -:102DC0009295907F8F70892B15968C93C8010E94E5 -:102DD0006D1186E0F801ADEAB1E001900D928A959F -:102DE000E1F736C086E0F801ADEAB1E001900D925E -:102DF0008A95E1F763C04D875E878D859E850E9429 -:102E0000A614882379F086E0F801ADEAB1E00190DC -:102E10000D928A95E1F70E9419150E940B15DD2489 -:102E2000D3944CC08091B20181608093B201C801FB -:102E30000E946D1143C07E2DF98AE88A89890E941B -:102E4000CB14EDEAF1E086E0DF011D928A95E9F707 -:102E50000E940B1533C0662309F439CF4D875E8776 -:102E60008D859E850E94A614882309F430CFCBCF90 -:102E70004D875E878D859E850E940B1A292F22958E -:102E80002F7030E0223031052CF49F7041F0811119 -:102E900006C00CC0243031052CF49F7049F4805ECC -:102EA000883020F0C8010E946D11CF2CDC2C06C0A8 -:102EB000D80115969C91907F91F7F8CF8D2D629651 -:102EC0000FB6F894DEBF0FBECDBFDF91CF911F913B -:102ED0000F91FF90EF90DF90CF9008951F93CF93C5 -:102EE000DF93CDB7DEB72C970FB6F894DEBF0FBED9 -:102EF000CDBF4F83588769877A878B879C87CE01A0 -:102F000007960E9481158823C1F02F8138858A8514 -:102F10009B85892B31F03F3F11F080E003C02F3FAC -:102F2000E1F781E0811147C04F81588569857A8535 -:102F30008B859C850E94DA143EC086E0FE013796A0 -:102F4000DE01119601900D928A95E1F7FF81E885E7 -:102F50004A855B854115510531F0EF3F31F481E041 -:102F6000FF3F19F403C081E001C080E080FD23C071 -:102F700020917C0130E0C90101968770992760910A -:102F80007B0170E086179707F1F1F983EA835D838F -:102F90004C8396E0929FD001939FB00D1124A358CB -:102FA000BE4FFE01319601900D929A95E1F7809304 -:102FB0007C010E94EA1416E080917B0190917C01D3 -:102FC000891779F1189FC001112483589E4F0E94E0 -:102FD0008115882331F1E0917B011E9FF0011124BE -:102FE000E358FE4F408151816281738184819581D4 -:102FF0000E94DA1480917B0190E0019687709927F6 -:1030000080937B01D9CF0E94A21410927C01109270 -:103010007B01EDEAF1E086E0DF011D928A95E9F798 -:10302000CACF2C960FB6F894DEBF0FBECDBFDF918E -:10303000CF911F910895EF92FF920F931F93CF931B -:10304000DF939C01009709F471C0F12CEE24E39406 -:10305000E9012196F9018491843740F4843008F025 -:1030600056C0813081F0823021F160C0853709F48B -:1030700049C0C0F19CE7980F903708F057C08F7790 -:103080000E94101146C089010E5F1F4FFE018491FE -:1030900090E2980F983050F48770FE2D01C0FF0F1A -:1030A0008A95EAF78F2F0E94BB1A15C00E9448101C -:1030B00014C089010E5F1F4FFE01849190E2980FAA -:1030C000983068F48770FE2D01C0FF0F8A95EAF7EB -:1030D0008F2F0E94C11A0E94E41AE8011AC00E94B0 -:1030E0001011FBCF2E5F3F4FFE01C491CC2341F066 -:1030F0008FE99FE00197F1F700C00000C150F6CFC3 -:10310000E90107C0FE01F490E901229602C00E9485 -:1031100048108F2D882341F0EFE9FFE03197F1F758 -:1031200000C000008150F6CF9E0192CFDF91CF9179 -:103130001F910F91FF90EF90089508956093B7014C -:103140007093B8018093B9019093BA010C948E14D6 -:103150000F931F930091B7011091B8012091B9010D -:103160003091BA01062B172B282B392B0093B7016E -:103170001093B8012093B9013093BA011F910F91B8 -:103180000C948E140F931F930091B7011091B80106 -:103190002091B9013091BA0106231723282339233E -:1031A0000093B7011093B8012093B9013093BA018D -:1031B0001F910F910C948E140F931F930091B701E0 -:1031C0001091B8012091B9013091BA010627172753 -:1031D000282739270093B7011093B8012093B9012C -:1031E0003093BA011F910F910C948E141092B30179 -:1031F0001092B4011092B5011092B6010C948E1485 -:1032000041E050E060E070E004C0440F551F661FCD -:10321000771F8A95D2F74093B3015093B40160931E -:10322000B5017093B6010C948E1441E050E060E05B -:1032300070E004C0440F551F661F771F8A95D2F7B0 -:103240008091B3019091B401A091B501B091B60104 -:10325000842B952BA62BB72B8093B3019093B401AD -:10326000A093B501B093B6010C948E1441E050E0E8 -:1032700060E070E004C0440F551F661F771F8A95F9 -:10328000D2F740955095609570958091B3019091DB -:10329000B401A091B501B091B60184239523A62372 -:1032A000B7238093B3019093B401A093B501B09379 -:1032B000B6010C948E1441E050E060E070E004C070 -:1032C000440F551F661F771F8A95D2F78091B3016F -:1032D0009091B401A091B501B091B60184279527D2 -:1032E000A627B7278093B3019093B401A093B501AB -:1032F000B093B6010C948E140F931F930091B301F9 -:103300001091B4012091B5013091B601062B172B15 -:10331000282B392B0093B3011093B4012093B501EE -:103320003093B6011F910F910C948E140F931F933D -:103330000091B3011091B4012091B5013091B60113 -:1033400006231723282339230093B3011093B401D4 -:103350002093B5013093B6011F910F910C948E14F8 -:103360000F931F930091B3011091B4012091B50107 -:103370003091B60106271727282739270093B30174 -:103380001093B4012093B5013093B6011F910F91B2 -:103390000C948E140895CF92DF92EF92FF920F93C8 -:1033A0001F93CF93DF93EC01C090B701D090B80189 -:1033B000E090B901F090BA018091B3019091B4010D -:1033C000A091B501B091B601C82AD92AEA2AFB2AF0 -:1033D0000FE110E0B701A601002E04C076956795B5 -:1033E000579547950A94D2F740FD05C00150110941 -:1033F00088F780E007C0BE01802F0E9489070197EF -:10340000A9F3802FDF91CF911F910F91FF90EF9043 -:10341000DF90CF900895CF93DF93EC010E94CB19FA -:10342000BE010E948907DF91CF910895CB010E94D0 -:103430000B1A089590910C019923D9F090910D01E8 -:103440009923B9F0982F9695969596959F3088F583 -:10345000E0910E01F0910F01E90FF11D877021E05D -:1034600030E001C0220F8A95EAF78181822B8183A7 -:10347000089540910E0150910F0120E030E09FEF40 -:10348000FA01E20FF31F6281681799F09F3F19F468 -:10349000611101C0922F2F5F3F4F2E30310581F710 -:1034A0009F3F39F0FA01E90FF11D97FDFA958283EC -:1034B0000895089590910C019923E1F090910D01E8 -:1034C0009923C1F0982F9695969596959F3020F563 -:1034D000E0910E01F0910F01E90FF11D877021E0DD -:1034E00030E001C0220F8A95EAF7209581812823D8 -:1034F0002183089540910E0150910F0120E030E0AA -:10350000FA01E20FF31F9281981301C012822F5F1C -:103510003F4F2E303105A1F7089581E090E0E09112 -:103520000E01F0910F01E80FF91F10820196803112 -:103530009105A9F708959091CE01982B9093CE0113 -:10354000089580959091CE0198239093CE0108958F -:103550001092CE0108959091CD01982B9093CD01BA -:10356000089580959091CD0198239093CD01089571 -:103570001092CD0108959091CC01982B9093CC019D -:10358000089580959091CC0198239093CC01089553 -:103590001092CC0108958093BB0108951092BB0155 -:1035A000089540910E0150910F0120E030E080E03D -:1035B000FA01E20FF31F918191118F5F2F5F3F4F4F -:1035C0002F303105A9F70895E0910E01F0910F0118 -:1035D0008091CE018083E0910E01F0910F018081F6 -:1035E0009091CD01892B8083E0910E01F0910F0124 -:1035F00080819091CC01892B80839091BB0199238C -:1036000061F0E0910E01F0910F018081892B8083A0 -:103610000E94D11A81111092BB0180910E019091EC -:103620000F010C942B0FCF92DF92EF92FF920F932A -:103630001F936C01EE24FF24C114D104E104F104B2 -:1036400021F46B017C0180E001C080E133272F2D44 -:103650001E2D0D2D011511052105310519F0885F6D -:103660006801790197018601A4E0369527951795A1 -:103670000795AA95D1F7011511052105310519F016 -:103680008C5F6801790197018601F2E036952795F4 -:1036900017950795FA95D1F7011511052105310503 -:1036A00019F08E5F68017901B701A60176956795DB -:1036B00057954795452B462B472B09F08F5F1F9158 -:1036C0000F91FF90EF90DF90CF9008958091E601E9 -:1036D000843021F11092D00120E488E190E00FB60F -:1036E000F894A895809360000FBE2093600080E05E -:1036F0000E94240883B7817F846083BF83B7816081 -:1037000083BF7894889583B78E7F83BF88E10FB697 -:10371000F89480936000109260000FBE08950895A1 -:103720000895CF930E948F1B0E9458040E94901B03 -:10373000C0E08C2F0E944505811105C0CF5FCE30BF -:10374000C1F780E001C081E0CF9108950E94A214EA -:103750000E941F0F0C94240882E084BD93E095BD65 -:103760009AEF97BD80936E0008952FB7F8948091DB -:10377000D1019091D201A091D301B091D4012FBF7A -:103780000895CF92DF92EF92FF920F931F932FB77E -:10379000F8944091D1015091D2016091D301709180 -:1037A000D4012FBF6A017B01EE24FF248C0120E0AD -:1037B00030E0C016D106E206F30610F4415051097C -:1037C000481B590BCA011F910F91FF90EF90DF909A -:1037D000CF9008951F920F920FB60F9211248F93DE -:1037E0009F93AF93BF938091D1019091D201A0910B -:1037F000D301B091D4010196A11DB11D8093D101D7 -:103800009093D201A093D301B093D401BF91AF9113 -:103810009F918F910F900FBE0F901F9018950E944F -:10382000250CF8942FEF87EA91E6215080409040D4 -:10383000E1F700C0000087E090EBDC018093F0012D -:103840009093F101A093F201B093F3012CE088E191 -:1038500090E00FB6F894A895809360000FBE209377 -:103860006000FFCFEF92FF920F931F93CF93DF93F0 -:10387000E82EF12C8F2D0E944505C0E0D0E0082FE6 -:1038800010E098010C2E02C0359527950A94E2F7B6 -:1038900020FD05C02196C630D10599F709C06C2FCF -:1038A0007F2D80E00E944D05E812F4CF81E005C035 -:1038B000F3948EE0F812DECF80E0DF91CF911F917C -:1038C0000F91FF90EF900895CF93C82F8CE20E9444 -:1038D000321C882321F08C2FCF910C94321C80E075 -:1038E000CF910895CF930E94B71D811102C00E940D -:1038F0009D1DC5E6C15049F00E9458048FE39CE924 -:103900000197F1F700C00000F5CF89E20E94641C26 -:10391000811111C18AE20E94641C81110E949D1DC7 -:1039200085E00E94641C81110E940F1C0E94C21D30 -:103930008093CF0187E00E94641C882399F18BE17A -:103940000E94641C882351F09091CF0191FB88273D -:1039500080F921E0822780FB91F922C08EE00E944D -:10396000641C882351F09091CF0192FB882780F945 -:1039700021E0822780FB92F913C080E10E94641C41 -:103980009091CF01882341F093FB882780F921E0B3 -:10399000822780FB93F904C0892F809580FB90F9E2 -:1039A0009093CF018091CF010E94C61D0E94D41D2B -:1039B0008093EF0180EE0E94641C882341F0809187 -:1039C000EF01982F909590FB80F98093EF0189E3A8 -:1039D0000E94641C882359F09091EF0191FB882785 -:1039E00080F921E0822780FB91F99093EF0182EE2C -:1039F0000E94641C882359F09091EF0192FB882764 -:103A000080F921E0822780FB92F99093EF0186EE06 -:103A10000E94641C882359F09091EF0193FB882742 -:103A200080F921E0822780FB93F99093EF0183EEE8 -:103A30000E94641C882359F09091EF0194FB882721 -:103A400080F921E0822780FB94F99093EF0185E3D0 -:103A50000E94641C882359F09091EF0195FB882700 -:103A600080F921E0822780FB95F99093EF0181E3B3 -:103A70000E94641C882359F09091EF0196FB8827DF -:103A800080F921E0822780FB96F99093EF0181E194 -:103A90000E94641C882359F09091EF0197FB8827BE -:103AA00080F921E0822780FB97F99093EF018091C4 -:103AB000EF010E94D81D8091EF0187FB882780F9D4 -:103AC00080930D0187E20E94641CC82F8EE10E9442 -:103AD000641C8111C2608FE10E94641C8111C4606A -:103AE00080E20E94641C8111C86081E20E94641C13 -:103AF0008111C06182E20E94641C8111C06283E274 -:103B00000E94641C8111C06484E20E94641C8823AA -:103B100011F0C06802C0CC2329F08C2F0E94CF1D69 -:103B20006C2F03C00E94CB1D682F70E080E090E0F6 -:103B3000CF910C949E18CF9108956DEE7EEF80E0AA -:103B400090E00E94F52360E082E090E00E94E32391 -:103B500060E083E090E00E94E32360E084E090E096 -:103B60000E94E32360E085E090E00C94E32380E092 -:103B700090E00E94DD2321E08D3E9E4F09F020E081 -:103B8000822F089582E090E00C94D523682F82E084 -:103B900090E00C94E32383E090E00C94D523682F0D -:103BA00083E090E00C94E32384E090E00C94D52330 -:103BB000682F84E090E00C94E3238091D70180FF8C -:103BC0000BC06091130185E0689FB00111247595C9 -:103BD0006795759567952AC081FF09C060911301AB -:103BE00085E0689FB0011124759567951FC082FF1D -:103BF00007C06091130185E0689FB001112416C0D1 -:103C00004091D8014423C9F060911201461788F70A -:103C10002091130185E0289F90011124429FC0014B -:103C2000439F900D112470E00E94A7236038710516 -:103C300040F46115710539F002C065E070E0862F2F -:103C400008958FE7089581E008958091D70180FF5E -:103C500008C06091110170E075956795759567953D -:103C600021C081FF06C06091110170E075956795D4 -:103C700019C082FF04C06091110170E010C08091F2 -:103C8000D8018823C1F0609110018617A0F79091A8 -:103C90001101989FC001112470E00E94A723603891 -:103CA000710528F46115710521F0862F08958FE7BD -:103CB000089581E0089561E070E0F4CF803F21F441 -:103CC0000E94DD1D819504C0813F29F40E94DD1D05 -:103CD0008093DB010895823F21F40E94DD1D8195D0 -:103CE00004C0833F29F40E94DD1D8093DA0108950A -:103CF000893F19F40E94251E05C08A3F31F40E94B5 -:103D0000251E81958093DC0108958B3F21F40E944C -:103D1000251E819504C08C3F29F40E94251E8093A6 -:103D2000DD010895843F21F48091D901816017C09D -:103D3000853F21F48091D901826011C0863F21F432 -:103D40008091D90184600BC0873F21F48091D90113 -:103D5000886005C0883F31F48091D90180618093EB -:103D6000D90108958D3F21F48091D70181600BC066 -:103D70008E3F21F48091D701826005C08F3F29F4E6 -:103D80008091D70184608093D7010895803F39F4F2 -:103D90008091DB0187FF6CC01092DB0169C0813F1D -:103DA00029F48091DB011816BCF362C09091DA010E -:103DB000823F29F497FF5CC01092DA0159C0833F1B -:103DC00019F41916CCF354C0893F41F48091DC01F9 -:103DD00018160CF04DC01092DC014AC08A3F29F43D -:103DE0008091DC0187FF44C0F6CF8B3F39F480918E -:103DF000DD0187FF3DC01092DD013AC08C3F29F400 -:103E00008091DD011816BCF333C0843F21F480910A -:103E1000D9018E7F17C0853F21F48091D9018D7F14 -:103E200011C0863F21F48091D9018B7F0BC0873F61 -:103E300021F48091D901877F05C0883F31F48091BA -:103E4000D9018F7E8093D90113C08D3F21F48091D9 -:103E5000D7018E7F0BC08E3F21F48091D7018D7FDB -:103E600005C08F3F29F48091D7018B7F8093D701C4 -:103E70008091DA0181110EC08091DB0181110AC0AD -:103E80008091DC01811106C08091DD01811102C0A9 -:103E90001092D801089589ED91E00E94360F0E949A -:103EA000B51B9093D6018093D50108951F93CF93AE -:103EB000DF938091D5019091D6010E94C11B409162 -:103EC000D801442321F02091140130E006C0209154 -:103ED00015015AE0259F900111248217930708F4D9 -:103EE00082C08091DA011091DB01D091DC01C09198 -:103EF000DD01811107C0111105C0D11103C0CC2310 -:103F000009F471C04F3F19F04F5F4093D801181664 -:103F100024F40E94DD1D8093DA018091DA0187FF8D -:103F200005C00E94DD1D81958093DA01111624F4ED -:103F30000E94DD1D8093DB018091DB0187FF05C0BE -:103F40000E94DD1D81958093DB016091DA0166237B -:103F500039F11091DB01112319F1772767FD709575 -:103F6000872F972F0E94B82223E333E343E35FE3D5 -:103F70000E941C230E9485226093DA01612F77271B -:103F800067FD7095872F972F0E94B82223E333E3B4 -:103F900043E35FE30E941C230E9485226093DB01C0 -:103FA0001D1624F40E94251E8093DC018091DC0103 -:103FB00087FF05C00E94251E81958093DC011C1699 -:103FC00024F40E94251E8093DD018091DD0187FF8E -:103FD00005C00E94251E81958093DD01DF91CF9160 -:103FE0001F910C944B1FDF91CF911F910895E9ED24 -:103FF000F1E085E0DF011D928A95E9F71092D80182 -:104000001092D7010895833081F128F4813059F05E -:104010008230D1F00895853009F449C0B8F1863076 -:1040200009F456C0089520911501862F90E0820F63 -:10403000911D8F3F910520F4620F60931501089543 -:104040008FEF80931501089520911401862F90E041 -:10405000820F911D8F3F910520F4620F6093140130 -:1040600008958FEF80931401089520911301862FF6 -:1040700090E0820F911D8F3F910520F4620F6093B5 -:10408000130108958FEF8093130108952091120179 -:10409000862F90E0820F911D8F3F910520F4620FD3 -:1040A0006093120108958FEF80931201089520917B -:1040B0001101862F90E0820F911D8F3F910520F412 -:1040C000620F6093110108958FEF8093110108959D -:1040D00020911001862F90E0820F911D8F3F910556 -:1040E00020F4620F6093100108958FEF8093100108 -:1040F0000895833011F128F4813049F0823091F035 -:104100000895853081F120F18630C1F108958091C4 -:104110001501681720F4861B8093150108951092ED -:104120001501089580911401681720F4861B80936F -:1041300014010895109214010895809113016817D5 -:1041400020F4861B809313010895109213010895A3 -:1041500080911201681720F4861B80931201089544 -:1041600010921201089580911101681720F4861BA6 -:10417000809311010895109211010895809110010A -:10418000681720F4861B8093100108951092100187 -:1041900008958D3109F442C020F58E3009F477C0BE -:1041A00070F4873009F459C018F48630F1F134C046 -:1041B000883009F4A8C08B3009F4A5C02DC0863121 -:1041C00009F4A1C038F4803109F472C0813109F4D6 -:1041D00079C022C0893109F496C08B3109F44DC0F1 -:1041E0001BC0853309F487C048F4873209F483C0C3 -:1041F00008F473C0893209F47EC00EC0833438F4E9 -:104200008A3308F068C0883309F47DC005C0833460 -:1042100009F471C0883499F080E008950E943F222B -:104220000E941F0F0E9424086EC08091CF01817FE1 -:104230008E7F8093CF0181E08093DF0108950E94FB -:10424000A2142FEF83ED90E3215080409040E1F7DE -:1042500000C000000E940F1C56C09091CF01892F12 -:104260008095817080FB90F919F0966098601DC070 -:10427000997F977F9093CF0146C09091CF0191FB9A -:10428000882780F921E0822780FB91F909C090916D -:10429000CF0192FB882780F921E0822780FB92F9E9 -:1042A0009093CF01882379F191609093CF01089585 -:1042B0009091CF0193FB882780F921E0822780FB32 -:1042C00093F9EECF0E94A21480910D0191E089270D -:1042D00080930D0118C027EC01C023EE280F61E088 -:1042E00070E080E090E004C0660F771F881F991F80 -:1042F0002A95D2F704C061E070E080E090E00E946F -:104300009E180E94A21481E0089580E0089580E044 -:104310000895CF93C82F8091DF01813079F018F094 -:104320008230D1F184C0A0910E01B0910F018C9127 -:10433000813169F0823209F07CC009C0A0910E0180 -:10434000B0910F018C91813111F0823249F48C2FA0 -:104350000E94852181111DC08C2F0E94C9201AC086 -:104360008C2F0E948721811114C0C43179F048F448 -:10437000CB3079F0C03109F060C082E08093DF017A -:1043800008C0C93219F0C83321F057C01092DF01BC -:1043900054C081E0817053C0C93289F118F5C4312D -:1043A00071F1A8F4C73009F046C08AE08093150186 -:1043B00094E19093140193E0909313018093120180 -:1043C00088E08093110188E28093100134C0CE51BF -:1043D000C63088F5EC2FF0E0E65DFE4F80818093DB -:1043E000DE0129C0CE34E9F020F4CB3421F56AE0B7 -:1043F00013C0C13579F0C235F1F461E00DC0809190 -:10440000DE01882319F01092DE0115C081E080934F -:10441000DF0115C061E006C08091DE010E9403202B -:104420000AC06AE08091DE010E94792004C01092E7 -:10443000DF0180E004C081E002C080E0ABCFCF911B -:104440000895E1E8F0E08081886080838081816068 -:1044500080838FB7F89493E09093890090ED9093C8 -:1044600088008FBF0895EFE6F0E08081826080834E -:104470000895EFE6F0E080818D7F80830895EFE678 -:10448000F0E0808192E08927808308951F920F9247 -:104490000FB60F9211242F933F934F935F936F9317 -:1044A0007F938F939F93AF93BF93EF93FF938091ED -:1044B000E0019091E10101969093E1018093E00188 -:1044C000811103C082E00E942408E091E101E69599 -:1044D000E695F0E0E657FB4FE4918091E0018E1302 -:1044E00003C080E00E942408FF91EF91BF91AF913B -:1044F0009F918F917F916F915F914F913F912F91FC -:104500000F900FBE0F901F90189504D06894B111B2 -:104510008DC0089570D088F09F5790F0B92F9927DB -:10452000B751A0F0D1F0660F771F881F991F1AF0BE -:10453000BA95C9F712C0B13081F077D0B1E00895D3 -:1045400074C0672F782F8827B85F39F0B93FCCF354 -:10455000869577956795B395D9F73EF490958095B4 -:10456000709561957F4F8F4F9F4F0895E89409C0D4 -:1045700097FB3EF490958095709561957F4F8F4F96 -:104580009F4F9923A9F0F92F96E9BB279395F695AC -:10459000879577956795B795F111F8CFFAF4BB0F2A -:1045A00011F460FF1BC06F5F7F4F8F4F9F4F16C08E -:1045B000882311F096E911C0772321F09EE8872F18 -:1045C000762F05C0662371F096E8862F70E060E0D4 -:1045D0002AF09A95660F771F881FDAF7880F96954D -:1045E000879597F9089557FD9058440F551F59F036 -:1045F0005F3F71F04795880F97FB991F61F09F3FD0 -:1046000079F087950895121613061406551FF2CFF8 -:104610004695F1DF08C0161617061806991FF1CF48 -:1046200086957105610508940895E894BB2766276F -:104630007727CB0197F908950BD078C069D028F07F -:104640006ED018F0952309F05AC05FC01124EECF48 -:10465000CADFA0F3959FD1F3950F50E0551F629FDD -:10466000F001729FBB27F00DB11D639FAA27F00DCB -:10467000B11DAA1F649F6627B00DA11D661F829FF2 -:104680002227B00DA11D621F739FB00DA11D621FD7 -:10469000839FA00D611D221F749F3327A00D611DF4 -:1046A000231F849F600D211D822F762F6A2F1124D6 -:1046B0009F5750408AF0E1F088234AF0EE0FFF1F29 -:1046C000BB1F661F771F881F91505040A9F79E3F60 -:1046D000510570F014C0AACF5F3FECF3983EDCF3B5 -:1046E000869577956795B795F795E7959F5FC1F79D -:1046F000FE2B880F911D9695879597F9089597F948 -:104700009F6780E870E060E008959FEF80EC089577 -:1047100000240A94161617061806090608950024A0 -:104720000A9412161306140605060895092E03941A -:10473000000C11F4882352F0BB0F40F4BF2B11F48E -:1047400060FF04C06F5F7F4F8F4F9F4F089597FBAF -:10475000072E16F4009407D077FD09D00E94C123DC -:1047600007FC05D03EF4909581959F4F0895709574 -:1047700061957F4F0895EE0FFF1F0590F491E02D96 -:104780000994AA1BBB1B51E107C0AA1FBB1FA61798 -:10479000B70710F0A61BB70B881F991F5A95A9F7EA -:1047A00080959095BC01CD010895F999FECF92BDF9 -:1047B00081BDF89A992780B50895A8E1B0E042E05C -:1047C00050E00C94FD23262FF999FECF92BD81BDB8 -:1047D000F89A019700B4021639F01FBA20BD0FB63F -:1047E000F894FA9AF99A0FBE08950196272F0E941D -:1047F000E4230C94E323DC01CB01FC01F999FECF07 -:1048000006C0F2BDE1BDF89A319600B40D92415058 -:0A4810005040B8F70895F894FFCF68 -:10481A0020022608B30890085C0829080101BC0197 -:10482A0028080A03140A3F4D36394B04FE03C8030D -:10483A008F0322033B0354036D030102030405069D -:04484A000708090052 +:1011E00070E0CE010E948A0A8091E8008E77809399 +:1011F000E80080E1FE01A2E5B1E001900D928A9540 +:10120000E1F7DF91CF9108958091E701811109C045 +:101210000E941C0C0E94790C8091E20084608093F3 +:10122000E20008951092E7010895089508950C943E +:10123000D01B42E061EC81E00E94960B42E061EC41 +:1012400082E00E94960B42E061EC83E00E94960BE4 +:1012500042E161EC84E00C94960B8091EA018330CA +:1012600009F455C030F4813071F0823009F48EC039 +:1012700008958A3009F47AC08B3009F460C089304F +:1012800009F09CC020C08091E901813A09F096C024 +:101290008091E800877F8093E8008091ED01909134 +:1012A000EE01892B21F060E080E090E003C060E176 +:1012B00082E591E070E00E94D30A8091E8008B778C +:1012C0008093E80008958091E901813209F076C0A9 +:1012D0008091ED019091EE01009719F0039709F0CC +:1012E0006DC08091E800877F8093E8008091E800DE +:1012F00082FD05C08091E8018111F8CF5FC0809127 +:10130000F100809362018091E8008B7753C0809157 +:10131000E901813A09F052C08091ED019091EE010E +:10132000892B09F04BC08091E800877F8093E8000B +:101330008091E80080FFFCCF80910C0136C0809145 +:10134000E9018132D9F58091ED019091EE01892B6F +:10135000A9F58091E800877F8093E8000E94CB0B7D +:101360008091EB0180930C010C9419148091E90198 +:10137000813221F58091E800877F8093E8000E9408 +:10138000CB0B8091EC018093630108958091E9017A +:10139000813AA1F48091E800877F8093E8008091F2 +:1013A000E80080FFFCCF809163018093F100809181 +:1013B000E8008E778093E8000C94CB0B089584B7F7 +:1013C000877F84BF88E10FB6F89480936000109205 +:1013D00060000FBE90E080E80FB6F8948093610043 +:1013E000909361000FBE0E94650F0E941C0C0E942A +:1013F000790C8091E20084608093E20078940E94EE +:10140000F40E0E94670F82E091E00E94110F80911C +:10141000E801853069F40E94901B8091E6018823E1 +:10142000B1F30E94BB1B882391F30E94740AEFCF93 +:101430000E946D0FECCF292F332723303105A9F0FF +:101440006CF42130310509F442C02230310509F035 +:1014500043C08DE690E02EE333E042C021323105F7 +:10146000C9F02232310519F137C099278130910531 +:1014700041F08230910541F0892B71F5EAE3F3E008 +:1014800005C0E2E2F3E002C0EAE0F3E0849190E01C +:101490009F0126C0643000F5E62FF0E0EE0FFF1F3D +:1014A000EE5DFE4F2081318189E090E019C064300B +:1014B00098F4E62FF0E0DF01AA0FBB1FA65EBE4F37 +:1014C0002D913C91EA5EFE4F808190E009C082E15F +:1014D00090E02BEA33E004C080E090E020E030E0D0 +:1014E000FA0131832083089580E189BD82E189BDBD +:1014F00009B400FEFDCF8091D8008F7D8093D80085 +:101500008091E00082608093E0008091E00081FDA6 +:10151000FCCF0895CF92DF92EF92FF920F931F932B +:10152000CF93DF937C018B01EA010E94EC0B8111C8 +:1015300031C0209731F088819981081B190BE80E82 +:10154000F91EC12CD12C0115110519F18091E8006B +:1015500085FD14C08091E8008E778093E800209785 +:1015600041F0888199818C0D9D1D9983888385E048 +:1015700011C00E94EC0B882331F30CC0F70181915C +:101580007F018093F10001501109FFEFCF1ADF0AAC +:10159000DACF80E0DF91CF911F910F91FF90EF9014 +:1015A000DF90CF9008952091EF013091F001261740 +:1015B000370748F06115710539F42091E8002E775E +:1015C0002093E80001C0B901FC0120E0611571051C +:1015D000B9F18091E801882309F440C0853009F40D +:1015E0003FC08091E80083FD3DC08091E80082FF0C +:1015F00006C08091E80082FF26C080E008958091B7 +:10160000E80080FFE3CF2091F3008091F20090E0AA +:10161000922B6115710551F08830910538F42191B4 +:101620002093F100615071090196F3CF21E00897F2 +:1016300009F020E08091E8008E778093E800C6CF23 +:101640002111C7CFD6CF8091E801882339F08530AA +:1016500039F08091E80083FFCCCF04C082E0089588 +:1016600083E0089581E008952091EF013091F00129 +:101670002617370748F06115710539F42091E80005 +:101680002E772093E80001C0B901FC0120E061152C +:101690007105C1F18091E801882309F441C08530CA +:1016A00009F440C08091E80083FD3EC08091E800CD +:1016B00082FF06C08091E80082FF27C080E0089585 +:1016C0008091E80080FFE3CF2091F3008091F20049 +:1016D00090E0922B6115710559F08830910540F426 +:1016E00024912093F1003196615071090196F2CF57 +:1016F00021E0089709F020E08091E8008E77809340 +:10170000E800C5CF2111C6CFD5CF8091E80188234D +:1017100039F0853039F08091E80083FFCBCF04C0E9 +:1017200082E0089583E0089581E00895982F97302E +:1017300058F59093E900981739F07091EC002091DA +:10174000ED005091F00003C0242F762F50E021FFD0 +:1017500019C03091EB003E7F3093EB003091ED00EB +:101760003D7F3093ED003091EB0031603093EB0022 +:101770007093EC002093ED005093F0002091EE0068 +:1017800027FF07C09F5FD3CF8F708093E90081E070 +:10179000089580E008958091E90187FD05C080915A +:1017A000E80080FF0EC012C08091E80082FD05C0F5 +:1017B0008091E8018111F8CF08958091E8008B773E +:1017C00008C08091E8018111EACF08958091E80076 +:1017D0008E778093E80008958091E4009091E50071 +:1017E00045E62091EC0020FF21C02091E80020FD7B +:1017F00021C02091E801222389F0253089F0209131 +:10180000EB0025FD0FC02091E4003091E500281782 +:10181000390739F3415041F0C901E3CF82E008951F +:1018200083E0089581E0089584E008952091E80020 +:1018300022FFDFCF80E008950E948A0C0E94920C64 +:10184000E0EEF0E0808181608083E8EDF0E080816F +:101850008F77808319BCA7EDB0E08C918E7F8C933D +:1018600080818F7E80831092E70108950F931F93EC +:10187000CF93DF930E948A0C0E94920CC8EDD0E0B7 +:1018800088818F77888388818068888388818F7D2D +:10189000888319BC1092E8011092E4011092E601CD +:1018A0001092E50100EE10E0F80180818B7F8083CB +:1018B00088818160888342E060E080E00E94960B2E +:1018C000E1EEF0E080818E7F8083E2EEF0E08081C7 +:1018D00081608083808188608083F80180818E7F31 +:1018E0008083888180618883DF91CF911F910F91E0 +:1018F0000895E8EDF0E080818F7E8083E7EDF0E0F1 +:1019000080818160808384E082BF81E08093E701F1 +:101910000C94360CE8EDF0E080818E7F808310928D +:10192000E20008951092DA001092E10008951F92EB +:101930000F920FB60F9211242F933F934F935F9303 +:101940006F937F938F939F93AF93BF93EF93FF9387 +:101950008091E10082FF0BC08091E20082FF07C00E +:101960008091E1008B7F8093E1000E94F30E8091D3 +:10197000DA0080FF1FC08091D80080FF1BC08091DB +:10198000DA008E7F8093DA008091D90080FF0DC04D +:1019900080E189BD82E189BD09B400FEFDCF81E00F +:1019A0008093E8010E94040905C019BC1092E80167 +:1019B0000E9412098091E10080FF19C08091E2002D +:1019C00080FF15C08091E2008E7F8093E2008091BD +:1019D000E20080618093E2008091D8008062809371 +:1019E000D80019BC85E08093E8010E941609809117 +:1019F000E10084FF30C08091E20084FF2CC080E1D0 +:101A000089BD82E189BD09B400FEFDCF8091D80077 +:101A10008F7D8093D8008091E1008F7E8093E100DC +:101A20008091E2008F7E8093E2008091E2008160ED +:101A30008093E2008091E401882311F084E007C0E4 +:101A40008091E30087FF02C083E001C081E08093C2 +:101A5000E8010E9417098091E10083FF29C080916D +:101A6000E20083FF25C08091E100877F8093E10041 +:101A700082E08093E8011092E4018091E1008E7F82 +:101A80008093E1008091E2008E7F8093E20080915C +:101A9000E20080618093E20042E060E080E00E942A +:101AA000960B8091F00088608093F0000E941509E9 +:101AB000FF91EF91BF91AF919F918F917F916F9126 +:101AC0005F914F913F912F910F900FBE0F901F90FC +:101AD00018951F920F920FB60F9211242F933F93D8 +:101AE0004F935F936F937F938F939F93AF93BF9326 +:101AF000CF93EF93FF93C091E900CF708091EC00FA +:101B00001092E9008091F000877F8093F000789434 +:101B10000E94A50D1092E9008091F00088608093EA +:101B2000F000C093E900FF91EF91CF91BF91AF9189 +:101B30009F918F917F916F915F914F913F912F91E5 +:101B40000F900FBE0F901F9018951F93CF93DF93A8 +:101B5000CDB7DEB7AA970FB6F894DEBF0FBECDBFE4 +:101B6000E9EEF1E08091F100819321E0E13FF2079D +:101B7000C9F70E942D098091E80083FF1CC12091C4 +:101B8000E9013091EA01832F90E08A30910508F055 +:101B900012C1FC01EA5AFF4F0C94A323203881F0B4 +:101BA000223809F008C18091ED018F708093E9001F +:101BB0008091EB0085FB882780F91092E90006C030 +:101BC0008091E5019091E601911182609091E80089 +:101BD000977F9093E8008093F1001092F100C5C0C8 +:101BE000822F8D7F09F0E7C0222319F0223061F0A7 +:101BF000E2C08091EB01813009F0DDC0333009F0A3 +:101C000080E08093E60128C08091EB01811124C01F +:101C10002091ED012F7009F4CEC02093E90080914E +:101C2000EB0080FF19C08091EB00333011F480622B +:101C300011C080618093EB0081E090E0022E01C032 +:101C4000880F0A94EAF78093EA001092EA008091E4 +:101C5000EB0088608093EB001092E9008091E8002F +:101C6000877F86C02111A7C01091EB011F7780915B +:101C7000E3008078812B8093E3008091E800877FE8 +:101C80008093E8000E94CB0B8091E80080FFFCCF9E +:101C90008091E30080688093E300112311F083E0DA +:101CA00001C082E08093E80186C02058223008F00D +:101CB00082C08091EB019091EC018C3D23E0920772 +:101CC00079F583E08A838AE289834FB7F894DE014D +:101CD000139620E03EE051E2E32FF0E050935700EE +:101CE000E49120FF03C0E295EF703F5FEF708E2F0D +:101CF00090E0EA3010F0C79601C0C0968D939D9396 +:101D00002F5F243149F74FBF8091E800877F809390 +:101D1000E8006AE270E0CE0101960E94D30A14C086 +:101D2000AE014F5F5F4F6091ED010E941B0A00976B +:101D300009F441C02091E800277F2093E800BC010E +:101D400089819A810E94340B8091E8008B7780937F +:101D5000E80031C0203879F58091E800877F8093D2 +:101D6000E8008091E4018093F1008091E8008E7793 +:101D70008093E8000E94CB0B1EC021111CC09091E3 +:101D8000EB019230C0F48091E800877F8093E800F7 +:101D90009093E4010E94CB0B8091E401811104C077 +:101DA0008091E30087FF02C084E001C081E080935E +:101DB000E8010E9419098091E80083FF0AC0809120 +:101DC000E800877F8093E8008091EB008062809339 +:101DD000EB00AA960FB6F894DEBF0FBECDBFDF9121 +:101DE000CF911F9108950895CF938091E8018823A2 +:101DF000B1F08091E9008F709091EC0090FF02C0EB +:101E000090E801C090E0C92FC82B1092E9008091A2 +:101E1000E80083FD0E94A50DCF70C093E900CF912B +:101E2000089590936901809368010895E091680195 +:101E3000F0916901309721F00190F081E02D099433 +:101E400080E00895E0916801F0916901309721F0F8 +:101E50000280F381E02D09940895E0916801F091EA +:101E60006901309721F00480F581E02D09940895EF +:101E700020916601309167018217930771F090936A +:101E8000670180936601E0916801F09169013097E4 +:101E900021F00680F781E02D0994089520916401D6 +:101EA000309165018217930771F0909365018093DB +:101EB0006401E0916801F0916901309721F000849C +:101EC000F185E02D0994089508950C94640F0E9403 +:101ED000FF1B0E9430040C94C51CCF92DF92EF923E +:101EE000FF920F931F93CF93DF93CDB7DEB72B975E +:101EF0000FB6F894DEBF0FBECDBF0E9448043BE68C +:101F0000E32E31E0F32E00E010E0C02E802F0E947F +:101F10003505F701D1907F01D826B1F40F5F1F4F2F +:101F20000E30110591F78FEF89838A831B820E94FF +:101F3000081C8160782F9D838C8349815A816B8135 +:101F40008D810E94101041C09091D30191FF04C077 +:101F50008B870E943B058B8520E030E04D2D50E0C3 +:101F6000922FBA01022E02C0759567950A94E2F786 +:101F700060FF25C02E83CF82EE24E394F12C02C0B3 +:101F8000EE0CFF1C9A95E2F790E08E219F2121E054 +:101F9000892B09F420E028870E94081C8160782F93 +:101FA0009A8789874E815F8168858A850E94101093 +:101FB000F801E559FE4F80818E25808306C02F5F92 +:101FC0003F4F2630310561F6A9CF0E94A91F10911D +:101FD0006A010E94160F1817A1F00E94160F809335 +:101FE0006A012B960FB6F894DEBF0FBECDBFDF910E +:101FF000CF911F910F91FF90EF90DF90CF900C94B5 +:1020000024082B960FB6F894DEBF0FBECDBFDF912C +:10201000CF911F910F91FF90EF90DF90CF90089597 +:10202000CF93DF93CDB7DEB72B970FB6F894DEBF13 +:102030000FBECDBF4F83588769877A878B87DE01B4 +:10204000119686E0FD0111928A95E9F785E0FE017F +:10205000379601900D928A95E1F749815A816B81FB +:102060007C818D819E810E94E9162B960FB6F89493 +:10207000DEBF0FBECDBFDF91CF9108950895CF93FE +:10208000C82F882309F4C1C0823859F40E94160F62 +:1020900081FDBBC089E30E94301A0E94071B89E3BF +:1020A0000CC0833879F40E94160F80FDAEC083E522 +:1020B0000E94301A0E94071B83E50E94701ACF917C +:1020C0000C94071B843859F40E94160F82FD9DC0A2 +:1020D00087E40E94301A0E94071B87E4EECF8CEF42 +:1020E0008C0F813A48F48C2F0E94D52181118DC02C +:1020F0008C2F0E94301AE3CF80E28C0F883048F496 +:10210000C77081E001C0880FCA95EAF70E94B41A2F +:10211000D6CF8BE58C0F833078F4C53A29F0C63AD8 +:1021200031F482E890E005C081E890E002C083E8E5 +:1021300090E0CF910C94380F88E58C0F833108F034 +:1021400064C0C83A39F1C93A41F1CA3A49F1CB3AC7 +:1021500051F1CC3A59F1CD3A61F1C03B69F1CE3A37 +:1021600071F1CF3A79F1C13B81F1C23B89F1C33BB7 +:1021700091F1C43B99F1C53BA1F1C63BA9F1C73B25 +:10218000B1F1C83BB9F1C93BC1F1CA3BC9F58AE21B +:1021900092E038C082EE90E035C089EE90E032C027 +:1021A0008AEE90E02FC085EB90E02CC086EB90E0AB +:1021B00029C087EB90E026C08CEC90E023C08DEC2A +:1021C00090E020C083E891E01DC08AE891E01AC049 +:1021D00082E991E017C084E991E014C081E292E0C5 +:1021E00011C083E292E00EC084E292E00BC085E26F +:1021F00092E008C086E292E005C087E292E002C069 +:1022000080E090E0CF910C944E0FCF9108958823F9 +:1022100009F44BC0823859F40E94160F81FF45C063 +:1022200089E30E94301A0E94071B89E30CC083389F +:1022300071F40E94160F80FF38C083E50E94301AA7 +:102240000E94071B83E50E94701A0C94071B8438B8 +:1022500059F40E94160F82FF28C087E40E94301AAA +:102260000E94071B87E4EFCF9CEF980F913A58F339 +:1022700090E2980F983050F4877091E001C0990F68 +:102280008A95EAF7892F0E94BA1ADFCF9BE5980F4B +:10229000933020F480E090E00C94380F885A83311A +:1022A00020F480E090E00C944E0F0895882321F0F4 +:1022B0000E94B41A0C94071B0895882321F00E94F1 +:1022C000BA1A0C94071B08958F929F92AF92BF92F7 +:1022D000CF92DF92EF92FF920F931F93CF93DF93F2 +:1022E00000D000D01F92CDB7DEB77C0185E0F701AA +:1022F000DE01119601900D928A95E1F7F701D080E9 +:1023000011810281B580B2942FE0B2222381348101 +:10231000232B39F01F3F39F481E0FFEFDF1203C0B8 +:1023200003C081E001C080E080FD5DC20E94CB1946 +:10233000882319F082E00E940E1AC7010E943E1005 +:10234000D9821A8369817A81802F0E949119182F6E +:10235000C92E0E9445190E94181801110E94D11A15 +:102360000E94291A882379F0002369F080E2810F06 +:10237000883048F082E00E940E1A0E94291ADD245B +:10238000D394D82601C0D12CEC2DE295EF70F0E06B +:10239000E05AFF4F0C94A3238C2D807F9C2D9F70BF +:1023A000B92E882319F0B29490EFB922002389F056 +:1023B000BB2009F4DAC180E2810F883020F48B2D34 +:1023C0000E94B41A03C08B2D0E94C41A0E94071BDE +:1023D000CCC1812F0E940711BB2009F4E0C1105E1F +:1023E0008B2D183018F40E94BA1A02C00E94CA1A23 +:1023F0000E94071BD4C18C2D807F9C2D9F70A92E1D +:10240000803219F0A29480EFA822112319F0113024 +:1024100049F132C0002391F0BB2091F181E0B81264 +:1024200004C08A2D0E94E41ABAC192E0B91228C0F1 +:102430000E94ED1A8A2D0E94981922C0BB2079F0C3 +:10244000E1E0BE1208C00E94B11A8A2109F4A7C1B6 +:102450000E949B1904C0F2E0BF1609F4A0C10E94BB +:10246000ED1A12C0002329F081E08B1508F497C102 +:1024700007C0B11094C108C0002321F0B11075C18C +:102480008A2DEFC0B11078C18A2DF1C02C2D269570 +:102490002695237030E02115310521F021303105DA +:1024A00061F07DC1002321F0812F9C2D937002C02B +:1024B00080E090E00E94380F72C1002321F0812F4C +:1024C0009C2D937002C080E090E00E944E0F67C187 +:1024D000812F002319F00E94B11E02C00E94191F13 +:1024E0000E949E1F5CC18C2D837009F04FC00111AA +:1024F00056C1212F229526952770220F220F812F5A +:102500008F70882E912CA12CB12C022E04C0880C27 +:10251000991CAA1CBB1C0A94D2F714FF10C06FE0D0 +:1025200070E080E090E004C0660F771F881F991F5D +:102530002A95D2F7609570958095909503C060E0DC +:1025400070E0CB012C2D269526952370422F50E06C +:102550004230510569F04330510589F068297929E5 +:102560008A299B294130510571F00E943D1817C1FD +:10257000682979298A299B290E94571810C10E942D +:102580003D18C501B4010E94231809C1002319F0A8 +:102590008C2D817001C08695882309F400C1212FFC +:1025A000229526952770220F220F812F8F70882E5B +:1025B000912CA12CB12C022E04C0880C991CAA1CB1 +:1025C000BB1C0A94D2F714FF10C06FE070E080E0EB +:1025D00090E004C0660F771F881F991F2A95D2F7D5 +:1025E000609570958095909503C060E070E0CB0198 +:1025F0002C2D269526952370422F50E04230510510 +:1026000069F04330510589F0682979298A299B2985 +:102610004130510571F00E941119C1C06829792912 +:102620008A299B290E942B19BAC00E941119C50141 +:10263000B4010E94F718B3C0412F50E0FA01E05EE8 +:10264000F109E531F10508F08BC0E059FF4F0C941A +:10265000A3231F708C2D8F71002331F00E949018DE +:10266000812F0E9456119BC00E94B118812F0E9499 +:102670005D1195C0002339F0B11091C08C2D8F7180 +:102680000E94D6188CC091E09B1508F488C0F6CF44 +:10269000002339F08C2D8F710E94901880C0002388 +:1026A000C9F38C2D8F710E94B11879C0002329F0D5 +:1026B0008C2D8F710E947B1872C00E9471186FC0A0 +:1026C0000023C9F00E9495190E94BA1A0E94C719E6 +:1026D000843029F40E94071A8C2D8F7171C0E1E0BB +:1026E000EB1508F480C01C2D1F71812F0E949018DB +:1026F00063E0812F0EC00E9495190E94B41AF1E088 +:10270000FB15D0F40E94071A0E949B1964E08C2DDF +:102710008F710F900F900F900F900F90DF91CF91CE +:102720001F910F91FF90EF90DF90CF90BF90AF90EF +:102730009F908F900C94F71981E00F900F900F905D +:102740000F900F90DF91CF911F910F91FF90EF901D +:10275000DF90CF90BF90AF909F908F900C940E1A07 +:10276000002339F0BB2009F495CF812F0E943F1040 +:1027700016C0BB2009F495CF812F0E9407110FC00E +:102780004C2D4F70612FC7010E94A2020E94961724 +:1027900006C04C2D4F70612FC7010E943C05DD2003 +:1027A00011F10E94C71980FD1EC0F70112820E941C +:1027B000C1190E949018C7010E9464110E94C1199A +:1027C0000F900F900F900F900F90DF91CF911F916E +:1027D0000F91FF90EF90DF90CF90BF90AF909F90C0 +:1027E0008F900C94B1180F900F900F900F900F9046 +:1027F000DF91CF911F910F91FF90EF90DF90CF90DD +:10280000BF90AF909F908F9008950E94D11A0E9420 +:10281000E11A0E94A31A0E94071B0E944A200E94EC +:102820009E1F80E090E00E94380F80E090E00C94C2 +:102830004E0F0E94C11A0C9405140E948619292F6C +:1028400022952F7030E02C3031054CF42A303105C0 +:102850006CF42250310922303105B0F407C02C301D +:10286000310571F02F30310559F00EC0803F31F045 +:1028700018F4803E48F402C0843F31F481E00895AA +:1028800093FB882780F9089580E00895CF93DF9324 +:1028900000D000D01F92CDB7DEB70F900F900F90F1 +:1028A0000F900F90DF91CF910895CF93DF9300D0D9 +:1028B00000D000D0CDB7DEB726960FB6F894DEBFB5 +:1028C0000FBECDBFDF91CF9108951F93CF93DF93BC +:1028D000C091790116E080917A01C81799F0D0E093 +:1028E0001C9FF0011D9FF00D1124E558FE4F408103 +:1028F000518162817381848195810E945514219652 +:10290000C770E9CFDF91CF911F9108954091AB013E +:102910005091AC016091AD017091AE018091AF0119 +:102920009091B0010C945514CF938091B001829591 +:102930008F7009F05FC08091AD01882309F45AC0FF +:1029400020917901A0917A016091AB017091AC0165 +:102950008091AE019091AF0131E06F3F09F030E01E +:10296000B32FC6E02A1709F445C0009721F07F3F36 +:1029700021F44B2F03C041E001C040E030E040FDB6 +:1029800035C0C29FF001C39FF00D1124E558FE4FE2 +:10299000418174132BC04081641328C042814111CE +:1029A00025C0438154814817590710F441505109FB +:1029B000481B590B483C5105C8F48091B0018F70F9 +:1029C00080618093B00186E0829FF001839FF00DCB +:1029D0001124E058FE4F80818F70806180838BEAE4 +:1029E00091E00E946411CF910C9465142F5F3F4FCA +:1029F0002770B8CFCF910895CF92DF92EF92FF92D8 +:102A00000F931F93CF93DF93CDB7DEB762970FB6C7 +:102A1000F894DEBF0FBECDBF8C0185E0F801DE016A +:102A20001D9601900D928A95E1F7D8014C9111966F +:102A30005C91119712966C9112971396ED90FC9001 +:102A400014977091AB01E091AC012091AE013091EF +:102A5000AF012115310531F0EF3F31F481E07F3FC7 +:102A600019F403C081E001C080E0B82FB170CB2E13 +:102A700080FD6CC1D090AD01DD2009F4F5C0F0916E +:102A8000B001E216F30638F0C701821B930B883CB5 +:102A9000910548F09BC0209530952E0D3F1D283C98 +:102AA000310508F093C08F2F807F09F052C0E513E5 +:102AB00014C0741312C0D62E61110FC0FF70F061E4 +:102AC000F093B0010E9486148BEA91E00E94641199 +:102AD0008091B001F80185836CC1EF2831F05F3F30 +:102AE00031F481E04F3F19F403C081E001C080E080 +:102AF00080FD03C081E0862701C080E0F82FF170DF +:102B0000FF2E80FF1CC08091790120917A0136E070 +:102B1000821709F428C190E0389FF001399FF00D29 +:102B20001124E558FE4F7181571306C07081471379 +:102B300003C07281671303C001968770E9CFD62E58 +:102B4000662309F436C18091B00181608093B001A1 +:102B500053C0E51308C0741306C0611104C0D80146 +:102B60001596FC93AEC04D875E878D859E856A8BDA +:102B70000E941D146A89882329F1D62E662311F13B +:102B80002091B001822F82958F7090E002970CF413 +:102B900060C08091AB019091AC0198878F831986BA +:102BA000FB86EA862C87CE01079651C0E51731F1E6 +:102BB0004D875E878D859E856A8B0E941D146A896C +:102BC00081112EC0C8010E946411A4C08F2F807F84 +:102BD00069F77E2DF98AE88A89890E9446148BEA72 +:102BE00091E00E946411EBEAF1E086E0DF011D92C2 +:102BF0008A95E9F70E948614D12CDBC07413D8CFD4 +:102C00006111D6CFD8011596FC93C8010E946411BA +:102C1000EBEAF1E086E0DF011D928A95E9F7C9C091 +:102C2000D62E662379F22091B001822F82958F7083 +:102C300090E0029774F08091AB019091AC019A837F +:102C400089831B82FD82EC822E83CE0101960E9435 +:102C5000641186E0F801ABEAB1E001900D928A952B +:102C6000E1F70E9494146FC0E216F30628F0C70142 +:102C7000821B930B9C0104C0209530952E0D3F1DA7 +:102C8000283C310508F052C0D62E662309F49ACFAD +:102C9000E5132CC074132AC08091B00180FD1DC0C3 +:102CA000982F92959F70C9F0D80115968C9315971F +:102CB0009F3039F09F5F9295907F8F70892B15968A +:102CC0008C93C8010E94641186E0F801ABEAB1E080 +:102CD00001900D928A95E1F736C086E0F801ABEAE3 +:102CE000B1E001900D928A95E1F763C04D875E8750 +:102CF0008D859E850E941D14882379F086E0F80159 +:102D0000ABEAB1E001900D928A95E1F70E9494142C +:102D10000E948614DD24D3944CC08091B001816060 +:102D20008093B001C8010E94641143C07E2DF98ACE +:102D3000E88A89890E944614EBEAF1E086E0DF0127 +:102D40001D928A95E9F70E94861433C0662309F420 +:102D500039CF4D875E878D859E850E941D148823FF +:102D600009F430CFCBCF4D875E878D859E850E943D +:102D70008619292F22952F7030E0223031052CF44E +:102D80009F7041F0811106C00CC0243031052CF435 +:102D90009F7049F4805E883020F0C8010E94641161 +:102DA000CF2CDC2C06C0D80115969C91907F91F712 +:102DB000F8CF8D2D62960FB6F894DEBF0FBECDBF53 +:102DC000DF91CF911F910F91FF90EF90DF90CF9007 +:102DD00008951F93CF93DF93CDB7DEB72C970FB62F +:102DE000F894DEBF0FBECDBF4F83588769877A87BF +:102DF0008B879C87CE0107960E94FC148823C1F024 +:102E00002F8138858A859B85892B31F03F3F11F0D2 +:102E100080E003C02F3FE1F781E0811147C04F817F +:102E2000588569857A858B859C850E9455143EC09E +:102E300086E0FE013796DE01119601900D928A958B +:102E4000E1F7FF81E8854A855B854115510531F041 +:102E5000EF3F31F481E0FF3F19F403C081E001C08E +:102E600080E080FD23C020917A0130E0C901019605 +:102E7000877099276091790170E086179707F1F1C3 +:102E8000F983EA835D834C8396E0929FD001939F00 +:102E9000B00D1124A558BE4FFE01319601900D9240 +:102EA0009A95E1F780937A010E94651416E080916B +:102EB000790190917A01891779F1189FC001112445 +:102EC00085589E4F0E94FC14882331F1E0917901CE +:102ED0001E9FF0011124E558FE4F4081518162810F +:102EE0007381848195810E9455148091790190E0CD +:102EF00001968770992780937901D9CF0E94191480 +:102F000010927A0110927901EBEAF1E086E0DF019C +:102F10001D928A95E9F7CACF2C960FB6F894DEBFBA +:102F20000FBECDBFDF91CF911F910895EF92FF9219 +:102F30000F931F93CF93DF939C01009709F471C007 +:102F4000F12CEE24E394E9012196F9018491843770 +:102F500040F4843008F056C0813081F0823021F195 +:102F600060C0853709F449C0C0F19CE7980F9037DD +:102F700008F057C08F770E94071146C089010E5F85 +:102F80001F4FFE01849190E2980F983050F48770A3 +:102F9000FE2D01C0FF0F8A95EAF78F2F0E94D41AE9 +:102FA00015C00E943F1014C089010E5F1F4FFE0123 +:102FB000849190E2980F983068F48770FE2D01C0DC +:102FC000FF0F8A95EAF78F2F0E94DA1A0E94071BDB +:102FD000E8011AC00E940711FBCF2E5F3F4FFE0190 +:102FE000C491CC2341F08FE99FE00197F1F700C035 +:102FF0000000C150F6CFE90107C0FE01F490E901DD +:10300000229602C00E943F108F2D882341F0EFE9E5 +:10301000FFE03197F1F700C000008150F6CF9E012C +:1030200092CFDF91CF911F910F91FF90EF90089574 +:1030300008956093B5017093B6018093B7019093A2 +:10304000B8010C9405140F931F930091B5011091D2 +:10305000B6012091B7013091B801062B172B282B10 +:10306000392B0093B5011093B6012093B70130932B +:10307000B8011F910F910C9405140F931F930091A9 +:10308000B5011091B6012091B7013091B801062326 +:103090001723282339230093B5011093B6012093F9 +:1030A000B7013093B8011F910F910C9405140F9341 +:1030B0001F930091B5011091B6012091B701309195 +:1030C000B80106271727282739270093B501109341 +:1030D000B6012093B7013093B8011F910F910C9462 +:1030E00005141092B1011092B2011092B301109226 +:1030F000B4010C94051441E050E060E070E004C0BD +:10310000440F551F661F771F8A95D2F74093B10170 +:103110005093B2016093B3017093B4010C94051401 +:1031200041E050E060E070E004C0440F551F661FAE +:10313000771F8A95D2F78091B1019091B201A09149 +:10314000B301B091B401842B952BA62BB72B8093A0 +:10315000B1019093B201A093B301B093B4010C9468 +:10316000051441E050E060E070E004C0440F551FDA +:10317000661F771F8A95D2F7409550956095709598 +:103180008091B1019091B201A091B301B091B401CD +:1031900084239523A623B7238093B1019093B20192 +:1031A000A093B301B093B4010C94051441E050E036 +:1031B00060E070E004C0440F551F661F771F8A95BA +:1031C000D2F78091B1019091B201A091B301B09179 +:1031D000B40184279527A627B7278093B101909340 +:1031E000B201A093B301B093B4010C9405140F93F2 +:1031F0001F930091B1011091B2012091B301309160 +:10320000B401062B172B282B392B0093B1011093F7 +:10321000B2012093B3013093B4011F910F910C942C +:1032200005140F931F930091B1011091B2012091E9 +:10323000B3013091B40106231723282339230093C7 +:10324000B1011093B2012093B3013093B4011F91E7 +:103250000F910C9405140F931F930091B1011091DD +:10326000B2012091B3013091B40106271727282716 +:1032700039270093B1011093B2012093B301309329 +:10328000B4011F910F910C9405140895CF92DF9211 +:10329000EF92FF920F931F93CF93DF93EC01C090B7 +:1032A000B501D090B601E090B701F090B8018091DF +:1032B000B1019091B201A091B301B091B401C82ABB +:1032C000D92AEA2AFB2A0FE110E0B701A601002E55 +:1032D00004C076956795579547950A94D2F740FDB7 +:1032E00005C00150110988F780E007C0BE01802F9A +:1032F0000E9489070197A9F3802FDF91CF911F9139 +:103300000F91FF90EF90DF90CF900895CF93DF93D0 +:10331000EC010E944619BE010E948907DF91CF91FE +:103320000895CB010E94861908958091BE010895E9 +:103330008093BE0108951092BE0108950E94081C5A +:103340002091BC013091BD018217930750F00E947B +:10335000081C2091BC013091BD01821B930B9C0184 +:103360000AC00E94081C2091BC013091BD0120952B +:103370003095280F391F81E0283B3B4008F480E05E +:1033800008958091BB0185958595859508958091D7 +:10339000BB01877008950E94081C2091B9013091EB +:1033A000BA018217930768F00E94081C2091B901A6 +:1033B0003091BA01821B930B883B9B4078F480E0EC +:1033C00014C00E94081C2091B9013091BA012095C7 +:1033D0003095280F391F283B3B4088F38091BB0173 +:1033E00082FB882780F991E089278170089598E011 +:1033F000899F90011124622B6093BB010E94901859 +:103400000E94081C9093BA018093B901089510920C +:10341000BB011092BA011092B90108954091BB010D +:10342000809584238093BB01982F977089F450E096 +:10343000282F332727FD30954217530749F08595EC +:10344000859585950E94B1181092BA011092B90124 +:1034500008959091BB01977081E009F480E0089590 +:1034600090910C019923D9F090910D019923B9F015 +:10347000982F9695969596959F3088F5E0910E0138 +:10348000F0910F01E90FF11D877021E030E001C0DC +:10349000220F8A95EAF78181822B818308954091DA +:1034A0000E0150910F0120E030E09FEFFA01E20F92 +:1034B000F31F6281681799F09F3F19F4611101C0F1 +:1034C000922F2F5F3F4F2E30310581F79F3F39F00C +:1034D000FA01E90FF11D97FDFA9582830895089589 +:1034E00090910C019923E1F090910D019923C1F085 +:1034F000982F9695969596959F3020F5E0910E0120 +:10350000F0910F01E90FF11D877021E030E001C05B +:10351000220F8A95EAF72095818128232183089537 +:1035200040910E0150910F0120E030E0FA01E20FCE +:10353000F31F9281981301C012822F5F3F4F2E30EC +:103540003105A1F7089581E090E0E0910E01F0913E +:103550000F01E80FF91F1082019680319105A9F73C +:1035600008958091D20108959091D201982B909363 +:10357000D201089580959091D20198239093D20121 +:1035800008951092D20108959091D101982B9093B3 +:10359000D101089580959091D10198239093D10104 +:1035A00008951092D10108959091D001982B909395 +:1035B000D001089580959091D00198239093D001E7 +:1035C00008951092D00108958093BF010E94081CB5 +:1035D0009093BD018093BC0108951092BF01109299 +:1035E000BD011092BC01089540910E0150910F0150 +:1035F00020E030E080E0FA01E20FF31F91819111A9 +:103600008F5F2F5F3F4F2F303105A9F70895E0916D +:103610000E01F0910F018091D2018083E0910E01A3 +:10362000F0910F0180819091D101892B8083E091ED +:103630000E01F0910F0180819091D001892B808340 +:103640008091BF01882399F00E949E1981110E94E8 +:10365000ED1AE0910E01F0910F0180819091BF0170 +:10366000892B80830E94F41A81110E94ED1A8091A7 +:103670000E0190910F010C94220FCF92DF92EF92E6 +:10368000FF920F931F936C01EE24FF24C114D10409 +:10369000E104F10421F46B017C0180E001C080E1D0 +:1036A00033272F2D1E2D0D2D011511052105310557 +:1036B00019F0885F6801790197018601A4E03695C9 +:1036C000279517950795AA95D1F70115110521059D +:1036D000310519F08C5F6801790197018601F2E0EC +:1036E0003695279517950795FA95D1F70115110588 +:1036F0002105310519F08E5F68017901B701A60136 +:103700007695679557954795452B462B472B09F09E +:103710008F5F1F910F91FF90EF90DF90CF900895F2 +:103720008091E801843021F11092D40120E488E1F5 +:1037300090E00FB6F894A895809360000FBE209398 +:10374000600080E00E94240883B7817F846083BF8B +:1037500083B7816083BF7894889583B78E7F83BF5A +:1037600088E10FB6F89480936000109260000FBE5D +:10377000089508950895CF930E94B91B0E944804AC +:103780000E94BA1BC0E08C2F0E943505811105C034 +:10379000CF5FCE30C1F780E001C081E0CF910895C6 +:1037A0000E9419140E94160F0C9424081F920F9265 +:1037B0000FB60F9211248F939F93AF93BF93809175 +:1037C000D401811113C08091D5019091D601A091AF +:1037D000D701B091D8014196A11DB11D8093D501AB +:1037E0009093D601A093D701B093D801BF91AF9128 +:1037F0009F918F910F900FBE0F901F90189582E0B0 +:1038000084BD93E095BD9AEF97BD80936E000895B7 +:103810002FB7F8948091D5019091D601A091D7014E +:10382000B091D8012FBF0895CF92DF92EF92FF920F +:103830000F931F932FB7F8944091D5015091D60163 +:103840006091D7017091D8012FBF6A017B01EE24EE +:10385000FF248C0120E030E0C016D106E206F3061A +:1038600010F441505109481B590BCA011F910F9187 +:10387000FF90EF90DF90CF9008951F920F920FB6B8 +:103880000F9211248F939F93AF93BF938091D50193 +:103890009091D601A091D701B091D8010196A11DB8 +:1038A000B11D8093D5019093D601A093D701B09319 +:1038B000D801BF91AF919F918F910F900FBE0F9044 +:1038C0001F9018950E941C0CF8942FEF87EA91E640 +:1038D000215080409040E1F700C0000087E090EB6D +:1038E000DC018093F2019093F301A093F401B09373 +:1038F000F5012CE088E190E00FB6F894A89580934C +:1039000060000FBE20936000FFCFEF92FF920F93F5 +:103910001F93CF93DF93E82EF12C8F2D0E94350556 +:10392000C0E0D0E0082F10E098010C2E02C03595C1 +:1039300027950A94E2F720FD05C02196C630D105EF +:1039400099F709C06C2F7F2D80E00E943D05E81299 +:10395000F4CF81E005C0F3948EE0F812DECF80E072 +:10396000DF91CF911F910F91FF90EF900895CF932A +:10397000C82F8CE20E94851C882321F08C2FCF91C8 +:103980000C94851C80E0CF910895CF930E940A1E6D +:10399000811102C00E94F01DC5E6C15049F00E948D +:1039A00048048FE39CE90197F1F700C00000F5CFD0 +:1039B00089E20E94B71C811111C18AE20E94B71CE2 +:1039C00081110E94F01D85E00E94B71C81110E94A8 +:1039D000621C0E94151E8093D30187E00E94B71CD1 +:1039E000882399F18BE10E94B71C882351F09091B4 +:1039F000D30191FB882780F921E0822780FB91F990 +:103A000022C08EE00E94B71C882351F09091D30110 +:103A100092FB882780F921E0822780FB92F913C06E +:103A200080E10E94B71C9091D301882341F093FB61 +:103A3000882780F921E0822780FB93F904C0892F31 +:103A4000809580FB90F99093D3018091D3010E94DF +:103A5000191E0E94271E8093F10180EE0E94B71C60 +:103A6000882341F08091F101982F909590FB80F987 +:103A70008093F10189E30E94B71C882359F090914B +:103A8000F10191FB882780F921E0822780FB91F9E1 +:103A90009093F10182EE0E94B71C882359F0909117 +:103AA000F10192FB882780F921E0822780FB92F9BF +:103AB0009093F10186EE0E94B71C882359F09091F3 +:103AC000F10193FB882780F921E0822780FB93F99D +:103AD0009093F10183EE0E94B71C882359F09091D6 +:103AE000F10194FB882780F921E0822780FB94F97B +:103AF0009093F10185E30E94B71C882359F09091BF +:103B0000F10195FB882780F921E0822780FB95F958 +:103B10009093F10181E30E94B71C882359F09091A2 +:103B2000F10196FB882780F921E0822780FB96F936 +:103B30009093F10181E10E94B71C882359F0909184 +:103B4000F10197FB882780F921E0822780FB97F914 +:103B50009093F1018091F1010E942B1E8091F1015F +:103B600087FB882780F980930D0187E20E94B71CAC +:103B7000C82F8EE10E94B71C8111C2608FE10E94A4 +:103B8000B71C8111C46080E20E94B71C8111C8601B +:103B900081E20E94B71C8111C06182E20E94B71CC1 +:103BA0008111C06283E20E94B71C8111C06484E26B +:103BB0000E94B71C882311F0C06802C0CC2329F0F2 +:103BC0008C2F0E94221E6C2F03C00E941E1E682F85 +:103BD00070E080E090E0CF910C941918CF91089597 +:103BE0006DEE7EEF80E090E00E94DD2360E082E0F9 +:103BF00090E00E94CB2360E083E090E00E94CB2322 +:103C000060E084E090E00E94CB2360E085E090E0FB +:103C10000C94CB2380E090E00E94C52321E08D3EF0 +:103C20009E4F09F020E0822F089582E090E00C94EE +:103C3000BD23682F82E090E00C94CB2383E090E0DA +:103C40000C94BD23682F83E090E00C94CB2384E098 +:103C500090E00C94BD23682F84E090E00C94CB237B +:103C60008091DB0180FF0BC06091130185E0689FAC +:103C7000B001112475956795759567952AC081FFE8 +:103C800009C06091130185E0689FB001112475950A +:103C900067951FC082FF07C06091130185E0689F90 +:103CA000B001112416C04091DC014423C9F0609199 +:103CB0001201461788F72091130185E0289F900193 +:103CC0001124429FC001439F900D112470E00E9477 +:103CD0008F236038710540F46115710539F002C019 +:103CE00065E070E0862F08958FE7089581E00895DC +:103CF0008091DB0180FF08C06091110170E0759533 +:103D000067957595679521C081FF06C06091110187 +:103D100070E07595679519C082FF04C0609111012C +:103D200070E010C08091DC018823C1F06091100127 +:103D30008617A0F790911101989FC001112470E09F +:103D40000E948F236038710528F46115710521F0F8 +:103D5000862F08958FE7089581E0089561E070E06F +:103D6000F4CF803F21F40E94301E819504C0813F32 +:103D700029F40E94301E8093DF010895823F21F4D0 +:103D80000E94301E819504C0833F29F40E94301E9A +:103D90008093DE010895893F19F40E94781E05C0C2 +:103DA0008A3F31F40E94781E81958093E001089546 +:103DB0008B3F21F40E94781E819504C08C3F29F42A +:103DC0000E94781E8093E1010895843F21F4809140 +:103DD000DD01816017C0853F21F48091DD018260A3 +:103DE00011C0863F21F48091DD0184600BC0873FC4 +:103DF00021F48091DD01886005C0883F31F4809115 +:103E0000DD0180618093DD0108958D3F21F4809173 +:103E1000DB0181600BC08E3F21F48091DB01826069 +:103E200005C08F3F29F48091DB0184608093DB0122 +:103E30000895803F39F48091DF0187FF6CC01092B4 +:103E4000DF0169C0813F29F48091DF011816BCF3BE +:103E500062C09091DE01823F29F497FF5CC010920E +:103E6000DE0159C0833F19F41916CCF354C0893FC1 +:103E700041F48091E00118160CF04DC01092E00161 +:103E80004AC08A3F29F48091E00187FF44C0F6CF01 +:103E90008B3F39F48091E10187FF3DC01092E10131 +:103EA0003AC08C3F29F48091E1011816BCF333C06D +:103EB000843F21F48091DD018E7F17C0853F21F47E +:103EC0008091DD018D7F11C0863F21F48091DD015D +:103ED0008B7F0BC0873F21F48091DD01877F05C078 +:103EE000883F31F48091DD018F7E8093DD0113C026 +:103EF0008D3F21F48091DB018E7F0BC08E3F21F43A +:103F00008091DB018D7F05C08F3F29F48091DB011B +:103F10008B7F8093DB018091DE0181110EC0809147 +:103F2000DF0181110AC08091E001811106C08091FA +:103F3000E101811102C01092DC0108958DED91E044 +:103F40000E942D0F0E94081C9093DA018093D901E2 +:103F500008951F93CF93DF938091D9019091DA0157 +:103F60000E94141C4091DC01442321F02091140193 +:103F700030E006C0209115015AE0259F90011124E0 +:103F80008217930708F482C08091DE011091DF014F +:103F9000D091E001C091E101811107C0111105C06C +:103FA000D11103C0CC2309F471C04F3F19F04F5F0A +:103FB0004093DC01181624F40E94301E8093DE0129 +:103FC0008091DE0187FF05C00E94301E819580939D +:103FD000DE01111624F40E94301E8093DF018091CF +:103FE000DF0187FF05C00E94301E81958093DF01AD +:103FF0006091DE01662339F11091DF01112319F17F +:10400000772767FD7095872F972F0E94A02223E3C3 +:1040100033E343E35FE30E9404230E946D22609335 +:10402000DE01612F772767FD7095872F972F0E94FC +:10403000A02223E333E343E35FE30E9404230E94CF +:104040006D226093DF011D1624F40E94781E809378 +:10405000E0018091E00187FF05C00E94781E8195F4 +:104060008093E0011C1624F40E94781E8093E101E5 +:104070008091E10187FF05C00E94781E81958093A1 +:10408000E101DF91CF911F910C949E1FDF91CF91A1 +:104090001F910895EDEDF1E085E0DF011D928A9515 +:1040A000E9F71092DC011092DB010895833081F171 +:1040B00028F4813059F08230D1F00895853009F428 +:1040C00049C0B8F1863009F456C008952091150111 +:1040D000862F90E0820F911D8F3F910520F4620F93 +:1040E0006093150108958FEF809315010895209135 +:1040F0001401862F90E0820F911D8F3F910520F4CF +:10410000620F6093140108958FEF80931401089556 +:1041100020911301862F90E0820F911D8F3F910512 +:1041200020F4620F6093130108958FEF80931301C1 +:10413000089520911201862F90E0820F911D8F3FEC +:10414000910520F4620F6093120108958FEF809320 +:104150001201089520911101862F90E0820F911D88 +:104160008F3F910520F4620F6093110108958FEF46 +:1041700080931101089520911001862F90E0820F05 +:10418000911D8F3F910520F4620F609310010895F7 +:104190008FEF809310010895833011F128F481305E +:1041A00049F0823091F00895853081F120F1863018 +:1041B000C1F1089580911501681720F4861B809342 +:1041C0001501089510921501089580911401681742 +:1041D00020F4861B80931401089510921401089511 +:1041E00080911301681720F4861B809313010895B2 +:1041F00010921301089580911201681720F4861B14 +:104200008093120108951092120108958091110176 +:10421000681720F4861B80931101089510921101F4 +:10422000089580911001681720F4861B8093100177 +:1042300008951092100108958B3109F46AC008F5B1 +:104240008E3009F470C070F4873009F452C018F44D +:104250008630B9F134C0883009F4A1C08B3009F43C +:104260009EC02DC0813109F479C020F4803109F459 +:1042700064C025C0863109F492C0893109F48FC029 +:104280001EC0853309F483C060F4873209F47FC00F +:1042900020F48E3108F06DC012C0893209F477C065 +:1042A0000EC0833438F48A3308F061C0883309F4CF +:1042B00076C005C0833409F46AC0883461F080E0B8 +:1042C00008958091D301817F8E7F8093D30181E017 +:1042D0008093E30108950E9419142FEF83ED90E37A +:1042E000215080409040E1F700C000000E94621C15 +:1042F00056C09091D301892F8095817080FB90F9F1 +:1043000019F09660986027C0997F977F9093D301AA +:1043100046C09091D30191FB882780F921E0822744 +:1043200080FB91F913C09091D30192FB882780F90B +:1043300021E0822780FB92F909C09091D30193FB81 +:10434000882780F921E0822780FB93F99093D3019D +:10435000882329F191609093D30108950E94191444 +:1043600080910D0191E0892780930D0118C027EC01 +:1043700001C023EE280F61E070E080E090E004C00F +:10438000660F771F881F991F2A95D2F704C061E036 +:1043900070E080E090E00E9419180E94191481E0FA +:1043A000089580E0089580E00895CF93C82F80910C +:1043B000E301813079F018F08230D1F184C0A0910E +:1043C0000E01B0910F018C91813169F0823209F0B8 +:1043D0007CC009C0A0910E01B0910F018C91813178 +:1043E00011F0823249F48C2F0E94D12181111DC01D +:1043F0008C2F0E941C211AC08C2F0E94D321811166 +:1044000014C0C43179F048F4CB3079F0C03109F0F0 +:1044100060C082E08093E30108C0C93219F0C8335C +:1044200021F057C01092E30154C081E0817053C065 +:10443000C93289F118F5C43171F1A8F4C73009F017 +:1044400046C08AE08093150194E19093140193E0B3 +:10445000909313018093120188E08093110188E208 +:104460008093100134C0CE51C63088F5EC2FF0E0B7 +:10447000E65DFE4F80818093E20129C0CE34E9F0F1 +:1044800020F4CB3421F56AE013C0C13579F0C23590 +:10449000F1F461E00DC08091E201882319F01092DF +:1044A000E20115C081E08093E30115C061E006C020 +:1044B0008091E2010E9456200AC06AE08091E201E8 +:1044C0000E94CC2004C01092E30180E004C081E08F +:1044D00002C080E0ABCFCF91089504D06894B111B1 +:1044E0008DC0089570D088F09F5790F0B92F99270C +:1044F000B751A0F0D1F0660F771F881F991F1AF0EF +:10450000BA95C9F712C0B13081F077D0B1E0089503 +:1045100074C0672F782F8827B85F39F0B93FCCF384 +:10452000869577956795B395D9F73EF490958095E4 +:10453000709561957F4F8F4F9F4F0895E89409C004 +:1045400097FB3EF490958095709561957F4F8F4FC6 +:104550009F4F9923A9F0F92F96E9BB279395F695DC +:10456000879577956795B795F111F8CFFAF4BB0F5A +:1045700011F460FF1BC06F5F7F4F8F4F9F4F16C0BE +:10458000882311F096E911C0772321F09EE8872F48 +:10459000762F05C0662371F096E8862F70E060E004 +:1045A0002AF09A95660F771F881FDAF7880F96957D +:1045B000879597F9089557FD9058440F551F59F066 +:1045C0005F3F71F04795880F97FB991F61F09F3F00 +:1045D00079F087950895121613061406551FF2CF29 +:1045E0004695F1DF08C0161617061806991FF1CF79 +:1045F00086957105610508940895E894BB276627A0 +:104600007727CB0197F908950BD078C069D028F0AF +:104610006ED018F0952309F05AC05FC01124EECF78 +:10462000CADFA0F3959FD1F3950F50E0551F629F0D +:10463000F001729FBB27F00DB11D639FAA27F00DFB +:10464000B11DAA1F649F6627B00DA11D661F829F22 +:104650002227B00DA11D621F739FB00DA11D621F07 +:10466000839FA00D611D221F749F3327A00D611D24 +:10467000231F849F600D211D822F762F6A2F112406 +:104680009F5750408AF0E1F088234AF0EE0FFF1F59 +:10469000BB1F661F771F881F91505040A9F79E3F90 +:1046A000510570F014C0AACF5F3FECF3983EDCF3E5 +:1046B000869577956795B795F795E7959F5FC1F7CD +:1046C000FE2B880F911D9695879597F9089597F978 +:1046D0009F6780E870E060E008959FEF80EC0895A8 +:1046E00000240A94161617061806090608950024D1 +:1046F0000A9412161306140605060895092E03944B +:10470000000C11F4882352F0BB0F40F4BF2B11F4BE +:1047100060FF04C06F5F7F4F8F4F9F4F089597FBDF +:10472000072E16F4009407D077FD09D00E94A92324 +:1047300007FC05D03EF4909581959F4F08957095A4 +:1047400061957F4F0895EE0FFF1F0590F491E02DC6 +:104750000994AA1BBB1B51E107C0AA1FBB1FA617C8 +:10476000B70710F0A61BB70B881F991F5A95A9F71A +:1047700080959095BC01CD010895F999FECF92BD29 +:1047800081BDF89A992780B50895A8E1B0E042E08C +:1047900050E00C94E523262FF999FECF92BD81BD00 +:1047A000F89A019700B4021639F01FBA20BD0FB66F +:1047B000F894FA9AF99A0FBE08950196272F0E944D +:1047C000CC230C94CB23DC01CB01FC01F999FECF67 +:1047D00006C0F2BDE1BDF89A319600B40D92415089 +:0A47E0005040B8F70895F894FFCF99 +:1047EA0020022608B30890085C0829080101C001C4 +:1047FA0028080A03140A3F4D363979042C04F603B3 +:10480A00BD035003690382039B03010203040506E7 +:04481A000708090082 :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index bf5a974bf..f257dbee3 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -140,7 +140,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; 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_MACRO_TAP(0), // Eric Tang's Famous Macro! + [3] = ACTION_MACRO_TAP(1) // Eric Tang's Famous Macro! }; static uint16_t key_timer; @@ -148,33 +150,46 @@ static uint16_t key_timer; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - case 0: { - if (record->event.pressed) { - key_timer = timer_read(); // if the key is being pressed, we start the timer. - register_code(KC_LSFT); // we're now holding down Shift. - } else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down"). - if (timer_elapsed(key_timer) < 70) { // the threshhold we pick for counting something as a tap. - register_code(KC_9); // sending 9 while Shift is held down gives us an opening paren - unregister_code(KC_9); // now let's let go of that key - } - unregister_code(KC_LSFT); // let's release the Shift key now. - } - break; - } - case 1: { - if (record->event.pressed) { - key_timer = timer_read(); // Now we're doing the same thing, only for the right shift/close paren key - register_code(KC_RSFT); - } else { - if (timer_elapsed(key_timer) < 70) { - register_code(KC_0); - unregister_code(KC_0); - } - unregister_code(KC_RSFT); - } - break; + case 0: + if (record->event.pressed) { + register_mods(MOD_BIT(KC_LSFT)); + if (record->tap.count && !record->tap.interrupted) { + register_code(KC_9); + } + else { + record->tap.count = 0; + } + } + else { + if (record->tap.count) { + unregister_code(KC_9); + } + else { + } + unregister_mods(MOD_BIT(KC_LSFT)); + } + break; + + case 1: + if (record->event.pressed) { + register_mods(MOD_BIT(KC_LSFT)); + if (record->tap.count && !record->tap.interrupted) { + register_code(KC_0); + } + else { + record->tap.count = 0; + } + } + else { + if (record->tap.count) { + unregister_code(KC_0); + } + else { + } + unregister_mods(MOD_BIT(KC_LSFT)); + } + break; } - } return MACRO_NONE; }; -- cgit v1.2.3-24-g4f1b From 90a65347294e93ee23c1f24c6ae342a42e6c2b29 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Thu, 5 May 2016 22:55:55 -0500 Subject: The Ordinary Layout is extraordinarily familiar and powerful --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 197 +- .../ergodox_ez/keymaps/ordinary/ordinary-base.png | Bin 100472 -> 99605 bytes .../ergodox_ez/keymaps/ordinary/ordinary-base.txt | 10 +- .../ergodox_ez/keymaps/ordinary/ordinary-media.png | Bin 124173 -> 124144 bytes .../ergodox_ez/keymaps/ordinary/ordinary-media.txt | 8 +- .../keymaps/ordinary/ordinary-special.png | Bin 0 -> 63065 bytes .../keymaps/ordinary/ordinary-special.txt | 27 + .../keymaps/ordinary/ordinary-symbol.png | Bin 103677 -> 103735 bytes .../keymaps/ordinary/ordinary-symbol.txt | 4 +- keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex | 2415 ++++++++++---------- keyboard/ergodox_ez/keymaps/ordinary/readme.md | 37 +- 11 files changed, 1373 insertions(+), 1325 deletions(-) create mode 100644 keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png create mode 100644 keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 6905cbc7a..6af3720fd 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -7,26 +7,29 @@ #define BASE 0 // default layer #define SYMB 1 // symbols layer #define MDIA 2 // media layer -#define LOCK 3 // shift-lock layer +#define SPEC 3 // special layer #define LCaps 10 // left caps-shift key #define LSymb 11 // left symbol-shift key #define LMdia 12 // left media-shift key -#define LLock 13 // left shift-lock key -#define RCaps 20 // right caps-shift key -#define RSymb 21 // right symbol-shift key -#define RMdia 22 // right media-shift key -#define RLock 23 // right shift-lock key +#define LSpec 13 // left special-shift key +#define RCaps 14 // right caps-shift key +#define RSymb 15 // right symbol-shift key +#define RMdia 16 // right media-shift key +#define RSpec 17 // right special-shift key -#define MUL 30 // mouse up left -#define MUR 31 // mouse up right -#define MDL 32 // mouse down left -#define MDR 33 // mouse down right +#define MUL 20 // mouse up left +#define MUR 21 // mouse up right +#define MDL 22 // mouse down left +#define MDR 23 // mouse down right /* - * The Ordinary Layout for the Ergodox EZ keyboard, v3.141 + * The Ordinary Layout for the Ergodox EZ keyboard, v4 * * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com + * + * No rights reserved. This software is in the public domain. + * Credit me if you are friendly but if you're a jerk don't bother. * * Details: readme.md * https://github.com/nrrkeene/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/ordinary @@ -36,37 +39,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /******* Base Layer ******************************************************************************************************** * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Lock `~ | 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 | , | . | / | LShift | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | - * `-----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | Home | End | | Left | Right| - * ,------|------|------| |------+------+------. - * | | | PgUp | | Up | | | - * |Backsp| Del |------| |------| Enter| Space| - * | | | PgDn | | Down | | |Aa - * `--------------------' `--------------------' + * ,------------------------------------------------------. ,------------------------------------------------------. + * | Special `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | =+ Special | + * |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------| + * | 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 |------+------+------+------+------+------------| + * | Capitals | Z | X | C | V | B | -Tab | | | N | M | , | . | / | Capitals | + * `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------' + * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | Home | End | | Left | Right| + * ,------|------|------| |------+------+------. + * | | | PgUp | | Up | | | + * |Backsp| Del |------| |------| Enter| Space| + * | | | PgDn | | Down | | | + * `--------------------' `--------------------' */ [BASE] = KEYMAP( // left hand - F(LLock) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC + F(LSpec),KC_1,KC_2,KC_3 ,KC_4 ,KC_5 ,KC_ESC ,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G -,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) +,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) ,KC_LCTL ,KC_MEH ,KC_HYPR,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 ,F(RLock) + ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec) ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb) ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps) @@ -127,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------| * | | Sleep |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | MyComp | | * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------| - * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | RShift | | + * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | | * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------' * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl| * `---------------------------------------------' `---------------------------------------------' @@ -153,14 +156,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS ,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_MAIL ,KC_TRNS ,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_TRNS - ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_RSFT ,KC_TRNS + ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL ,KC_MPRV ,KC_MNXT ,KC_VOLU ,KC_VOLD ,KC_MSTP ,KC_MPLY ), -/******* Lock Layer ******************************************************************************************************** +/******* Special Layer ***************************************************************************************************** * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | Esc | | | | | | | | | | | | Bspc | | @@ -169,7 +172,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| * | | | | | | |------| |------| | | | | | | * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK | + * | | | | | | | | | | | | | | | RShift | * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -181,12 +184,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ -[LOCK] = KEYMAP( +[SPEC] = KEYMAP( // left hand KC_TRNS ,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_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 ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -196,7 +199,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_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_RSFT ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -206,65 +209,77 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - // the six faux shift keys are implemented as macro taps - [LSymb] = ACTION_MACRO_TAP(LSymb) + // the faux shift keys are implemented as macro taps + [LCaps] = ACTION_MACRO_TAP(LCaps) + ,[LSymb] = ACTION_MACRO_TAP(LSymb) ,[LMdia] = ACTION_MACRO_TAP(LMdia) - ,[LLock] = ACTION_MACRO_TAP(LLock) + ,[LSpec] = ACTION_MACRO_TAP(LSpec) + ,[RCaps] = ACTION_MACRO_TAP(RCaps) ,[RSymb] = ACTION_MACRO_TAP(RSymb) ,[RMdia] = ACTION_MACRO_TAP(RMdia) - ,[RLock] = ACTION_MACRO_TAP(RLock) + ,[RSpec] = ACTION_MACRO_TAP(RSpec) }; uint16_t caps_shift = 0; -uint16_t symb_shift = 0; // there are two shift keys for each layer, and two lock -uint16_t mdia_shift = 0; // keys; we increment a counter for each key pressed and -uint16_t shift_lock = 0; // decrement when released. +uint16_t symb_shift = 0; +uint16_t mdia_shift = 0; -bool symb_lock = false; // when shift-lock is used in conjunction with a shift -bool mdia_lock = false; // key the lock flag is toggled +bool symb_lock = false; +bool mdia_lock = false; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { - // shift and lock between layers?L? + // There are two shift keys for each layer so we increment a layer_shift var when one + // is pressed and decrement when one is released. If both are pressed at the same time + // then the layer is locked (or unlocked). The shift counts are bound between 0 and 2 + // only because sometimes rapid pressing led to irregular events; this way the states + // are self healing during use. case LCaps: // both caps-shift keys trigger Left Shift case RCaps: // so they don't interfere with the magic combo if (record->event.pressed && !record->tap.count) { if(++caps_shift > 2) caps_shift = 2; - if(shift_lock) { + if(caps_shift == 2) { register_code(KC_CAPS); unregister_code(KC_CAPS); + } else if(caps_shift == 1) { + register_code(KC_LSFT); } - register_code(KC_LSFT); } else { if(--caps_shift < 0) caps_shift = 0; - if(!caps_shift) unregister_code(KC_LSFT); + if(caps_shift == 0) unregister_code(KC_LSFT); } break; case LSymb: if (record->event.pressed) { if(++symb_shift > 2) symb_shift = 2; - if(shift_lock) symb_lock = !symb_lock; - layer_on(SYMB); + if(symb_shift == 2) { + symb_lock = !symb_lock; + } else if(symb_shift == 1) { + layer_on(SYMB); + } } else { if(--symb_shift < 0) symb_shift = 0; - if((!symb_shift) && (!symb_lock)) layer_off(SYMB); + if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB); } break; case LMdia: if (record->event.pressed) { - if (record->tap.count && !shift_lock) { + if (record->tap.count && (!mdia_shift) && (!mdia_lock)) { register_code(KC_TAB); } else { if(++mdia_shift > 2) mdia_shift = 2; - if(shift_lock) mdia_lock = !mdia_lock; - layer_on(MDIA); + if(mdia_shift == 2) { + mdia_lock = !mdia_lock; + } else if(mdia_shift == 1) { + layer_on(MDIA); + } } } else { - if(record->tap.count && !shift_lock) { + if(record->tap.count && (!mdia_shift) && (!mdia_lock)) { unregister_code(KC_TAB); } else { if(--mdia_shift < 0) mdia_shift = 0; @@ -273,37 +288,36 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case LLock: + case LSpec: if (record->event.pressed) { - if(++shift_lock > 2) shift_lock = 2; - if(caps_shift) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); - } - if(symb_shift) symb_lock = !symb_lock; - if(mdia_shift) mdia_lock = !mdia_lock; - layer_on(LOCK); - } else { - if(record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { + if (record->tap.count && !record->tap.interrupted) { register_code(KC_GRV); + } else { + layer_on(SPEC); + } + } else { + if(record->tap.count && !record->tap.interrupted) { unregister_code(KC_GRV); + } else { + layer_off(SPEC); } - if(--shift_lock < 0) shift_lock = 0; - if(!shift_lock) layer_off(LOCK); } break; case RSymb: if (record->event.pressed) { - if (record->tap.count && !shift_lock) { + if (record->tap.count && (!symb_shift) && (!symb_lock)) { register_code(KC_QUOT); } else { if(++symb_shift > 2) symb_shift = 2; - if(shift_lock) symb_lock = !symb_lock; - layer_on(SYMB); + if(symb_shift == 2) { + symb_lock = !symb_lock; + } else if(symb_shift == 1) { + layer_on(SYMB); + } } } else { - if(record->tap.count && !shift_lock) { + if(record->tap.count && symb_shift == 0) { unregister_code(KC_QUOT); } else { if(--symb_shift < 0) symb_shift = 0; @@ -314,15 +328,18 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case RMdia: if (record->event.pressed) { - if (record->tap.count && !shift_lock) { + if (record->tap.count && (!mdia_shift) && (!mdia_lock)) { register_code(KC_BSLS); } else { if(++mdia_shift > 2) mdia_shift = 2; - if(shift_lock) mdia_lock = !mdia_lock; - layer_on(MDIA); + if(mdia_shift == 2) { + mdia_lock = !mdia_lock; + } else if(mdia_shift == 1) { + layer_on(MDIA); + } } } else { - if(record->tap.count && !shift_lock) { + if(record->tap.count && (!mdia_shift) && (!mdia_lock)) { unregister_code(KC_BSLS); } else { if(--mdia_shift < 0) mdia_shift = 0; @@ -331,23 +348,19 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case RLock: + case RSpec: if (record->event.pressed) { - if(++shift_lock > 2) shift_lock = 2; - if(caps_shift) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); + if (record->tap.count && !record->tap.interrupted) { + register_code(KC_EQL); + } else { + layer_on(SPEC); } - if(symb_shift) symb_lock = !symb_lock; - if(mdia_shift) mdia_lock = !mdia_lock; - layer_on(LOCK); } else { - if (record->tap.count && !record->tap.interrupted && !symb_shift && !mdia_shift) { - register_code(KC_EQL); + if(record->tap.count && !record->tap.interrupted) { unregister_code(KC_EQL); + } else { + layer_off(SPEC); } - if(--shift_lock < 0) shift_lock = 0; - if(!shift_lock) layer_off(LOCK); } break; diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png index 2864031b1..9c561a10a 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt index 66cd05503..25731ea2e 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt @@ -1,7 +1,7 @@ [{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:"#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.875,c:"#2277ff",w:1.5},"Special\n\n~\n\n\n\nShift\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#2277ff",w:1.5},"+\n\nSpecial\n\n\n\n=\nShift"], [{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"], @@ -15,11 +15,11 @@ [{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\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#77aaff",f:3},"Option\n\n\nLAlt",{x:10.5,f:3},"Option\n\n\nRAlt"], -[{y:-0.875,x:2.5},"Hyper",{x:1,f:3},"Cmd\n\n\nSuper",{x:8.5,f:3},"Cmd\n\n\nSuper",{x:1},"Hyper"], -[{y:-0.75,x:0.5,f:3},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh",{f:3},"Ctrl\n\n\nRCtrl"], +[{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:"#54d6de"},"Home","End"], -[{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], +[{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"], [{x:-3},"Up",{h:2},"Enter",{h:2},"Space"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png index 85b08cc09..99e5ed80b 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt index 815e2f5ba..4eccc9f35 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt @@ -1,7 +1,7 @@ [{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.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#737373",a:7},"",{c:"#99de2a",a:4},"F16"], +[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n\n\n\n\nShift",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], [{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},"Mouse\n\n\n\n\n\nUpLeft",{x:1},"Mouse\n\n\n\n\n\nUpRgt",{x:8.5,c:"#ffb063"},"Home",{x:1},"Page\n\n\n\n\n\nUp"], [{y:-0.875,x:5.5,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#ffb063",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"], @@ -13,8 +13,8 @@ [{y:-0.625,x:6.5,c:"#ffb063",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},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#ffb063"},"End",{x:1},"Page\n\n\n\n\n\nDown"], -[{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#cccccc",a:7},""], -[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5,c:"#77aaff",a:4},"RShift",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#737373",a:7},""], +[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#737373",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,w:1.5},"\n\nCapitals\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063",fa:[0,0,0,1]},"Delete\n\n\nOption"], [{y:-0.875,x:2.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert\n\n\nCmd",{x:1,c:"#77aaff"},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Crtl\n\n\nRCtrl"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png new file mode 100644 index 000000000..6eecf447e Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt new file mode 100644 index 000000000..a08827c6d --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt @@ -0,0 +1,27 @@ +[{x:3.5,a:7},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""], +[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#54d6de"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.375,x:3.5},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{x:6.5},""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""], +[{y:-0.75,x:3.5},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{x:6.5},""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"], +[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.75,x:0.5},"","",{x:14.5},"",""], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""], +[{h:2},"",{h:2},"",""], +[{x:2},""], +[{r:-30,rx:13,y:-1,x:-3},"",""], +[{x:-3},"",{h:2},"",{h:2},""], +[{x:-3},""] + diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png index 2cf2cb2b1..e4de64a96 100644 Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png differ diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt index 4b6a6cb95..e199f5c59 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt @@ -1,7 +1,7 @@ [{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:"#bbddbb"},"_\n\n\n\n\n\n-",{c:"#99de2a"},"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.875,c:"#2277ff",w:1.5},"Special\n\n\n\n\n\nShift",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#bbddbb"},"{",{x:10.5,c:"#89b087"},"8"], [{y:-0.875,x:2.5,c:"#bbddbb"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"], [{y:-0.875,x:5.5,c:"#bbddbb"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"], @@ -22,6 +22,6 @@ [{h:2},"Space",{h:2},"Enter","Up"], [{x:2},"Down"], [{r:-30,rx:13,y:-1,x:-3},"Home","End"], -[{x:-3},"Page\n\n\n\n\n\nUp",{f:3,h:2},"< Del\n\n\nBackspace",{f:3,h:2},"Del >\n\n\nDelete"], +[{x:-3},"Page\n\n\n\n\n\nUp",{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete"], [{x:-3},"Page\n\n\n\n\n\nDown"] diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 25fdc5171..347b49464 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex @@ -1,1215 +1,1202 @@ -:100000000C94E7020C942B030C942B030C942B03FD -:100010000C942B030C942B030C942B030C942B03A8 -:100020000C942B030C942B030C94B10E0C94830FA3 -:100030000C942B030C942B030C942B030C942B0388 -:100040000C942B030C9402240C942B030C942B0380 -:100050000C942B030C94A61D0C942B030C942B03D3 -:100060000C942B030C942B030C942B030C942B0358 -:100070000C942B030C942B030C942B030C942B0348 -:100080000C942B030C942B030C942B030C942B0338 -:100090000C942B030C942B030C942B030C942B0328 -:1000A0000C942B030C942B030C942B033B036A033B -:1000B000A603DF03F804F804F804F804F804F804CD -:1000C0003B038A03C3036704F804F804F804F80444 -:1000D000F804F804BB04C504CF04E104E80F0A10D7 -:1000E000F5100A10F5104C106F10F510C410D71051 -:1000F000D113D11312141214541490149016901694 -:10010000A81490169F159F156A16901690167E16C5 -:1001100000000000000000000000000000000000DF -:100120000000000000000BC80CC80DC80000000053 -:100130000000000000000000000015C816C817C825 -:100140000D200C200B300A30E00000001E001400CF -:1001500004001D0000074E001F001A0016001B00BF -:10016000000F4C002000080007000600E2002A00F3 -:100170002100150009001900E3004B0022001700C0 -:100180000A00050000004A0029002F0000002B0291 -:1001900000004D002D00300000002B00000050003A -:1001A00023001C000B00110000004F002400180069 -:1001B0000D001000E700520025000C000E00360074 -:1001C000E6002C00260012000F003700000F280068 -:1001D00027001300330038000007510017201620B5 -:1001E00015201430E40000000100010001000100AE -:1001F000E00000003A001E02200222020007510027 -:100200003B001F0221022302000F28003C002F02A6 -:1002100026022F00E2002C003D00300227023000B1 -:10022000E30052003E002402350035020000500079 -:100230002900360200002B0000004F002D0037027D -:1002400000002B0200004A003F003102380031005C -:1002500000004D004000240021001E0027784B00C4 -:100260004100250022001F0037744C004200260088 -:10027000230020002E7F2A004300380025022D0095 -:100280002E774E00010001000100010028710000DE -:100290000100010001000100E000000044006600D0 -:1002A000A60000000007B50045001E30F200203017 -:1002B000F60000006800F000F100F100F400B60064 -:1002C00069001F30F3002130F500B4006A00A90076 -:1002D000AA00A8000000B8002900F9000000FA00F8 -:1002E0000000B9000000F9000000FA000000AC00B6 -:1002F0006B004600530000000000AB006C004A0099 -:1003000050004D004978A9006D0052005100510085 -:100310004C74AE006E004B004F004E00000FAD005D -:100320006F00B100B300E5000007AA000100010062 -:1003300001000100E400000001000100010039009B -:10034000010000002900010001000100010001007E -:100350000100010001000100010001000100010095 -:100360000100010001000100010001000100010085 -:100370000100010001000100010001000000010076 -:100380000100010000000100000001000100010067 -:100390000000010000000100010001000100010057 -:1003A0000000010001000100010001000100010046 -:1003B0000100010001000100010001000100010035 -:1003C00001000100010001002A00010001000100FC -:1003D00001000100010001000100390001000000DE -:1003E00016034500720067006F0044006F0078003C -:1003F000200045005A000000160345007200670007 -:100400006F0044006F007800200045005A00000093 -:100410000403090409026D00040100A0FA090400A4 -:10042000000103010100092111010001223F000721 -:1004300005810308000A0904010001030102000903 -:100440002111010001224D000705820308000A095D -:1004500004020001030000000921110100012236FD -:10046000000705830308000A0904030001030000D4 -:100470000009211101000122390007058403100041 -:10048000011201100100000008EDFE071301000138 -:1004900002000105010906A101050719E029E71578 -:1004A00000250195087501810205081901290595A6 -:1004B0000575019102950175039101050719002940 -:1004C0007715002501957875018102C00501098025 -:1004D000A101850216010026B7001A01002AB70003 -:1004E000751095018100C0050C0901A10185031655 -:1004F0000100269C021A01002A9C027510950181B8 -:1005000000C005010902A1010901A10005091901A5 -:1005100029051500250195057501810295017503D1 -:1005200081010501093009311581257F9502750882 -:10053000810609381581257F950175088106050C0E -:100540000A38021581257F950175088106C0C0050E -:10055000010906A101050719E029E7150025019504 -:1005600008750181029501750881010508190129A5 -:10057000059505750191029501750391010507190E -:100580000029FF150025FF950675088100C00000B1 -:10059000000000000000000000010204060A0F171E -:1005A000202C3A4A5D71879DB3C7DAE9F5FCFFFC60 -:1005B000F5E9DAC7B39D87715D4A3A2C20170F0A17 -:1005C00006040201000000000000000000001124E9 -:1005D0001FBECFEFDAE0DEBFCDBF04B603FE24C0FE -:1005E0008091F8019091F901A091FA01B091FB017D -:1005F0008730904BA740B04BB9F41092F80110929D -:10060000F9011092FA011092FB0114BE84B7877FA2 -:1006100084BF88E10FB6F894809360001092600068 -:100620000FBEE0E0FFE3099511E0A0E0B1E0E2E9F0 -:10063000FBE402C005900D92A433B107D9F721E085 -:10064000A4E3B1E001C01D92A83FB207E1F70E9408 -:10065000F70B0C94C7250C940000DC01462F50E0EA -:100660004A5051094831510508F0C2C14A5A5F4FFA -:10067000FA010C94772512962C91129780913C01E7 -:1006800090913D012223E1F015962C91207FC1F439 -:1006900001968330910510F082E090E090933D0147 -:1006A00080933C018091360190913701892B31F084 -:1006B00089E30E94591289E30E94211381EEF9C057 -:1006C000019790933D0180933C01892B09F090C1E3 -:1006D00081EEFAC012962C9180913A0190913B01E3 -:1006E000222331F101968330910510F082E090E0F1 -:1006F00090933B0180933A018091360190913701AC -:10070000892B31F08091350191E089278093350163 -:1007100081E078C012969C91129715968C91807FFB -:1007200091119CC009F0B7C080913A0190913B01B2 -:10073000019790933B0180933A01892B09F058C1AE -:1007400080913501811154C181E085C012969C9140 -:10075000129715968C91807F992359F0209136013C -:10076000309137018823B9F121153105A1F58BE2CC -:10077000A0C0882391F08091360190913701892B98 -:1007800061F48BE2A1C012969C91129715968C9100 -:10079000807F91111AC009F08FC08091380190912B -:1007A000390101979093390180933801892B09F021 -:1007B0001FC18091340181111BC182E04CC012968F -:1007C0008C911297882309F187C0209136013091CE -:1007D0003701811169C080913801909139010196EA -:1007E0008330910510F082E090E09093390180937E -:1007F0003801232B31F08091340191E089278093D7 -:10080000340182E00E94241BF3C015968C91982F2E -:10081000907FA1F080FD12C080913A0190913B0140 -:10082000892B61F48091380190913901892B31F441 -:1008300085E30E94591285E30E94211380913601BD -:100840009091370101979093370180933601892B5E -:1008500009F0CEC083E00E94451BCAC0209136013A -:1008600030913701882329F02115310511F484E3F3 -:1008700020C080913A0190913B010196833091050F -:1008800010F082E090E090933B0180933A01232B9B -:1008900009F038CF3DCF8091360190913701892BF7 -:1008A00009F042CF84E310C02115310509F093CF40 -:1008B00081E30E9459129CC08091360190913701CA -:1008C000892B09F06ACF81E30E94211391C012960F -:1008D0008C9112978823A1F1809136019091370174 -:1008E00001968330910510F082E090E090933701FB -:1008F0008093360180913C0190913D01892B31F02C -:1009000089E30E94591289E30E94211380913A01E0 -:1009100090913B01892B31F08091350191E089273D -:10092000809335018091380190913901892B31F004 -:100930008091340191E089278093340183E062CF74 -:1009400015968C91982F907F09F478CF80FD76CF03 -:1009500080913A0190913B01892B09F06FCF8091F2 -:10096000380190913901892B09F068CF8EE20E94FD -:1009700059128EE261CF12968C91882319F080EF84 -:1009800090E013C080EF90E017C012968C918823FE -:1009900019F080EF90E01BC080EF90E021C012962C -:1009A0008C91882339F081EF90E00E941A2082EF29 -:1009B00090E011C081EF90E00E94822082EF90E0F1 -:1009C00013C012968C91882349F081EF90E00E9429 -:1009D0001A2083EF90E00E941A2008C081EF90E077 -:1009E0000E94822083EF90E00E9482200E940721D3 -:1009F00080E090E008950895E0910E01F0910F01DC -:100A00008081827219F0259A2D9A06C00E943011B9 -:100A100081FDF9CF25982D988091BB0181FF03C0FE -:100A2000269A2E9A02C026982E988091BB0182FFAA -:100A300003C0279A2F9A089527982F9808950C9409 -:100A4000FC0456985E9825982D9826982E982798FD -:100A50002F988FEF90E09093890080938800909377 -:100A60008B0080938A0090938D0080938C00259A50 -:100A70002D9A2FEF80E792E0215080409040E1F7DF -:100A800000C00000269A2E9A2FEF80E792E02150B6 -:100A900080409040E1F700C00000279A2F9A2FEF86 -:100AA00080E792E0215080409040E1F700C00000D4 -:100AB00025982D982FEF80E792E0215080409040BC -:100AC000E1F700C0000026982E982FEF80E792E013 -:100AD000215080409040E1F700C0000027982F98F7 -:100AE00056985E9825982D9826982E9827982F9896 -:100AF000089589EA8093800089E08093810024989A -:100B00002C983F988AB18F748AB96E98479A8BB1A6 -:100B1000806B8BB9769A0E9421050C94FB0480E2CD -:100B20008093000180913E0181110EC00E94DE057C -:100B300081E080933E012FEF83ED90E321508040D0 -:100B40009040E1F700C0000080E40E94E40580933B -:100B5000000181112EC00E940E06809300018111B8 -:100B600028C00E940E0680930001811122C08FE3ED -:100B70000E940E068093000181111BC00E94060690 -:100B800080E40E94E40580930001811112C08CE092 -:100B90000E940E068093000181110BC00E940E0678 -:100BA00080930001811105C08FE30E940E0680939F -:100BB00000010E9406068091000108951092B9007C -:100BC0008AE08093B800089594EA9093BC009091D5 -:100BD000BC0097FFFCCF9091B900987F983021F02E -:100BE000903111F081E008958093BB0084E88093F8 -:100BF000BC008091BC0087FFFCCF8091B900887F4A -:100C0000883111F0803471F780E0089584E9809391 -:100C1000BC008091BC0084FDFCCF08958093BB0094 -:100C200084E88093BC008091BC0087FFFCCF90914A -:100C3000B900987F81E0983209F480E0089584E853 -:100C40008093BC008091BC0087FFFCCF8091BB00EB -:100C5000089580910001811115C080E40E94E4058F -:100C60008093000181110CC082E10E940E068093E6 -:100C70000001811105C08FEF0E940E0680930001D4 -:100C80000E94060684B1807F84B985B1807F85B9D2 -:100C90008AB1837F8AB98BB1837F8BB93E9846989E -:100CA00008950E948F05809300010E94290680B359 -:100CB0008C7080BB81B3836F81BBEEE4F1E0A0E474 -:100CC000B1E011921D9281E0EC35F807D1F70C9458 -:100CD0007905BF92CF92DF92EF92FF920F931F930D -:100CE000CF93DF9380910001882379F080913F01B9 -:100CF0008F5F80933F01811108C00E948F05809310 -:100D00000001811102C00E94210500E411E0C0E051 -:100D1000D0E0DD24D39482E0C82EEE24E394F12CBD -:100D2000C73000F580910001811162C080E40E940B -:100D3000E40580930001811112C082E10E940E0639 -:100D40008093000181110BC0C7010C2E01C0880FD8 -:100D50000A94EAF780950E940E06809300010E9493 -:100D6000060646C0CA30A1F028F4C83059F0C93090 -:100D700061F005C0CC3089F070F0CD3089F0209A58 -:100D8000289810C0219A29980DC0229A2A980AC042 -:100D9000239A2B9807C0529A01C0539A5B9802C0BD -:100DA0003E9A4698E0EAEA95F1F78FB179995AC0F0 -:100DB00092E081708D25892B7C9B02C090E001C060 -:100DC00094E0892B7D9B02C090E001C098E0892BC4 -:100DD0007E9B02C090E001C090E1892B9FB190956D -:100DE000991F9927991F9295990F907E892B0FC073 -:100DF0008091000181114BC080E40E94E405809342 -:100E00000001882389F1B12C0E9406068B2DF80180 -:100E10009081981719F08083C09201010E942906E1 -:100E200021960F5F1F4FCE30D10509F079CF809109 -:100E30000101882371F1815080930101882339F0E9 -:100E40008FE99FE00197F1F700C0000022C0AEE4F7 -:100E5000B1E0E0E4F1E081918D9391E0EE34F907A7 -:100E6000D1F717C090E0A5CF83E10E940E068093D2 -:100E700000018111C8CF81E40E94E4058093000144 -:100E80008111C1CF0E941F06B82EB094BDCF80E063 -:100E9000BECF0E941F0581E0DF91CF911F910F917E -:100EA000FF90EF90DF90CF90BF900895E82FF0E093 -:100EB000E25BFE4F808108950895089596E0799F42 -:100EC000F001112494E5899FE00DF11D1124E60F36 -:100ED000F11DEE0FFF1FE05CFE4F85919491089588 -:100EE000880F991F80579040FC0185919491089537 -:100EF000880F991F805F9E4FFC0185919491089502 -:100F00000F931F93CF93DF93EC01811520E392079A -:100F100030F5811530E2930708F0B1C08B3B9105A5 -:100F200088F4883A910508F058C0853A910508F090 -:100F300049C08430910508F043C08130910509F41F -:100F4000B2C1AEC18F3F910509F0D0F5803F910548 -:100F500008F092C0805E9109089790F1A1C1C11577 -:100F600081E5D807A8F4C23090E5D90708F09FC002 -:100F7000C11520E5D20709F486C008F092C0C1155A -:100F800080E4D80708F08CC18E011127106CCCC109 -:100F9000C11590E8D90758F4C11520E7D20708F029 -:100FA0007BC1C11530E6D30708F423C179C1C1154F -:100FB00080E9D80708F074C18E011F70106AB4C1AF -:100FC0008E01B2C1853A910509F470C1863A910546 -:100FD00009F46FC103E810E4A7C1883A910509F448 -:100FE0006BC1893A910509F46AC18A3A910509F4FD -:100FF00069C18B3A910509F468C18C3A910509F4ED -:1010000067C18D3A910509F466C1803B910509F4E9 -:1010100065C18E3A910509F464C18F3A910509F4CE -:1010200063C1813B910509F462C1823B910509F4DA -:1010300061C1833B910509F460C1843B910509F4CA -:101040005FC1853B910509F45EC1863B910509F4BA -:101050005DC1873B910509F45CC1883B910509F4AA -:101060005BC1893B910509F45AC18A3B910509F09E -:1010700059C10AE216E458C18C01106555C19F7030 -:101080000E94780752C10E94B3169FEF24E33CE010 -:10109000915020403040E1F700C000000E94CB1D7D -:1010A00043C18091D70181608093D7013DC10E94E7 -:1010B000731F811102C00E94591F0E94901F90E06F -:1010C0009093F8018093F701C23080E5D80721F4AE -:1010D0008091F701816086C0C43090E5D90721F482 -:1010E0008091F70182607EC0C63020E5D20721F4EE -:1010F0008091F701846076C0C83030E5D30719F4D9 -:101100008091F70127C0CA3080E5D80721F480918B -:10111000F701806167C0CC3090E5D90721F4809158 -:10112000F70180625FC0CE3020E5D20721F48091C4 -:10113000F701806457C0C03130E5D30721F48091B6 -:10114000F70180684FC0C23180E5D80729F480914B -:10115000F7018460886046C0C33090E5D90721F468 -:101160008091F7018E7F3EC0C53020E5D20721F483 -:101170008091F7018D7F36C0C73030E5D30721F469 -:101180008091F7018B7F2EC0C93080E5D80719F414 -:101190008091F70126C0CB3090E5D90721F48091EA -:1011A000F7018F7E1FC0CD3020E5D20721F480915A -:1011B000F7018F7D17C0CF3030E5D30721F4809140 -:1011C000F7018F7B0FC0C13180E5D80721F48091F2 -:1011D000F7018F7707C0C331D04531F48091F70113 -:1011E0008B7F877F8093F7018091F7010E94941F86 -:1011F0009BC08D2F99278F70992781309105E9F435 -:101200008E01037011279C0102C0220F331F0A9523 -:10121000E2F789011C68CE0164E0880F991F6A9586 -:10122000E1F788279370082B192B73E0CC0FDD1F93 -:101230007A95E1F7C076DD272CC08230910529F43C -:101240001C2F0027016F106A6FC08330910561F475 -:10125000CE018370992701E010E002C0000F111F3A -:101260008A95E2F71C680EC0049709F05DC0CE01B4 -:101270008370992701E010E002C0000F111F8A95CA -:10128000E2F71A6843E0CC0FDD1F4A95E1F7C07E14 -:10129000D7700C2B1D2B48C08E011F70106244C0EC -:1012A00000E010E041C001E010E03EC001E810E4C1 -:1012B0003BC002E810E438C002EE14E435C009EE89 -:1012C00014E432C00AEE14E42FC005EB14E42CC081 -:1012D00006EB14E429C007EB14E426C00CEC14E47C -:1012E00023C00DEC14E420C003E815E41DC00AE897 -:1012F00015E41AC002E915E417C004E915E414C0A6 -:1013000001E216E411C003E216E40EC004E216E4A2 -:101310000BC005E216E408C006E216E405C007E2C9 -:1013200016E402C000E014E4C801DF91CF911F91E0 -:101330000F91089596E0799FF001112494E5899F1B -:10134000E00DF11D1124E60FF11DEE0FFF1FE05C13 -:10135000FE4F85919491803E9105E0F4803C91058B -:1013600058F58133910509F46FC048F4893291052D -:1013700009F463C08A32910509F46DC072C08933E3 -:101380009105E9F082389105D1F08533910509F492 -:101390004DC067C0833E910581F138F4803E9105D0 -:1013A000B9F0823E9105D9F05CC0863E910561F1AD -:1013B000873E9105A1F155C00E94700708952091C4 -:1013C000F70120FD02C021FF4CC080EE90E049C033 -:1013D0008091F70180FFF9CF89E390E042C08091CE -:1013E000F70182FF0EC08091F70184FF03C080E007 -:1013F00090E037C083EE90E034C08091F70182FF27 -:10140000F2CF82EE90E02DC08091F70183FF0BC0F8 -:101410008091F70184FDEBCF87EE90E022C08091B0 -:10142000F70183FFF5CF86EE90E01BC08091F701B6 -:1014300085FF07C089E290E014C08091F70185FF25 -:10144000F9CF85E390E00DC08091F70186FF07C0DA -:101450008AE290E006C08091F70186FFF9CF81E330 -:1014600090E00E948007089508950C94340A8091BA -:101470006C010895CF93DF9300D01F92CDB7DEB7F4 -:101480002091EE01243019F523E029839B838A8380 -:101490002093E9008FEF9091E800815095FD06C000 -:1014A00095ED9A95F1F700008111F5CF8091E80054 -:1014B00085FF0DC040E050E063E070E0CE01019692 -:1014C0000E94A40C8091E8008E778093E8000F9032 -:1014D0000F900F90DF91CF910895CF93DF9300D0BD -:1014E0001F92CDB7DEB72091EE01243021F522E026 -:1014F00029839B838A8383E08093E9008FEF909117 -:10150000E800815095FD06C095ED9A95F1F7000031 -:101510008111F5CF8091E80085FF0DC040E050E0DB -:1015200063E070E0CE0101960E94A40C8091E80077 -:101530008E778093E8000F900F900F90DF91CF91FE -:1015400008952091EE012430F1F422E02093E90087 -:101550002FEF3091E800215035FD06C035ED3A956A -:10156000F1F700002111F5CF2091E80025FF0BC015 -:1015700040E050E065E070E00E94A40C8091E8003B -:101580008E778093E8000895CF93DF93EC018091EC -:10159000EE01843009F046C090910C019923D9F0F6 -:1015A00090910D019923B9F08093E9008FEF90910C -:1015B000E800815095FD06C095E19A95F1F700008D -:1015C0008111F5CF8091E80085FF2CC040E050E00C -:1015D00060E170E017C081E08093E9008FEF9091A7 -:1015E000E800815095FD06C095ED9A95F1F7000051 -:1015F0008111F5CF8091E80085FF14C040E050E0F4 -:1016000068E070E0CE010E94A40C8091E8008E7723 -:101610008093E80080E1FE01ACE5B1E001900D921D -:101620008A95E1F7DF91CF9108958091ED018111C5 -:1016300009C00E94360E0E94930E8091E2008460E1 -:101640008093E20008951092ED01089508950C949E -:10165000EF230E94621D0E94F5230E9430110C941A -:10166000350A42E061EC81E00E94B00D42E061EC9D -:1016700082E00E94B00D42E061EC83E00E94B00D78 -:1016800042E161EC84E00C94B00D8091F001833074 -:1016900009F455C030F4813071F0823009F48EC005 -:1016A00008958A3009F47AC08B3009F460C089301B -:1016B00009F09CC020C08091EF01813A09F096C0EA -:1016C0008091E800877F8093E8008091F3019091FA -:1016D000F401892B21F060E080E090E003C060E13C -:1016E0008CE591E070E00E94ED0C8091E8008B7732 -:1016F0008093E80008958091EF01813209F076C06F -:101700008091F3019091F401009719F0039709F08B -:101710006DC08091E800877F8093E8008091E800A9 -:1017200082FD05C08091EE018111F8CF5FC08091EC -:10173000F10080936C018091E8008B7753C0809119 -:10174000EF01813A09F052C08091F3019091F401C8 -:10175000892B09F04BC08091E800877F8093E800D7 -:101760008091E80080FFFCCF80910C0136C0809111 -:10177000EF018132D9F58091F3019091F401892B29 -:10178000A9F58091E800877F8093E8000E94E50D2D -:101790008091F10180930C010C94B3168091EF01BC -:1017A000813221F58091E800877F8093E8000E94D4 -:1017B000E50D8091F20180936D0108958091EF0114 -:1017C000813AA1F48091E800877F8093E8008091BE -:1017D000E80080FFFCCF80916D018093F100809143 -:1017E000E8008E778093E8000C94E50D089584B7A7 -:1017F000877F84BF88E10FB6F894809360001092D1 -:1018000060000FBE90E080E80FB6F894809361000E -:10181000909361000FBE0E947F110E94360E0E94BD -:10182000930E8091E20084608093E20078940E949D -:101830000E110E94811182E091E00E942B110E9402 -:10184000DD238091EE01853069F40E94221D809194 -:10185000EC018823B1F30E944D1D882391F30E946F -:101860008E0CEFCF0E948711ECCF292F3327233026 -:101870003105A9F06CF42130310509F442C0223061 -:10188000310509F043C08DE690E024E134E042C028 -:1018900021323105C9F02232310519F137C09927BB -:1018A0008130910541F08230910541F0892B71F52D -:1018B000E0E1F4E005C0E8EFF3E002C0E0EEF3E0C1 -:1018C000849190E09F0126C0643000F5E62FF0E09F -:1018D000EE0FFF1FEE5DFE4F2081318189E090E029 -:1018E00019C0643098F4E62FF0E0DF01AA0FBB1FA7 -:1018F000A65EBE4F2D913C91EA5EFE4F808190E046 -:1019000009C082E190E021E834E004C080E090E08A -:1019100020E030E0FA0131832083089580E189BD21 -:1019200082E189BD09B400FEFDCF8091D8008F7D92 -:101930008093D8008091E00082608093E0008091E5 -:10194000E00081FDFCCF0895CF92DF92EF92FF92ED -:101950000F931F93CF93DF937C018B01EA010E94C9 -:10196000060E811131C0209731F088819981081BC2 -:10197000190BE80EF91EC12CD12C0115110519F116 -:101980008091E80085FD14C08091E8008E778093F7 -:10199000E800209741F0888199818C0D9D1D9983E5 -:1019A000888385E011C00E94060E882331F30CC0A5 -:1019B000F70181917F018093F10001501109FFEF40 -:1019C000CF1ADF0ADACF80E0DF91CF911F910F911C -:1019D000FF90EF90DF90CF9008952091F501309126 -:1019E000F6012617370748F06115710539F4209183 -:1019F000E8002E772093E80001C0B901FC0120E047 -:101A000061157105B9F18091EE01882309F440C098 -:101A1000853009F43FC08091E80083FD3DC080918E -:101A2000E80082FF06C08091E80082FF26C080E0C7 -:101A300008958091E80080FFE3CF2091F30080912A -:101A4000F20090E0922B6115710551F088309105FC -:101A500038F421912093F100615071090196F3CF80 -:101A600021E0089709F020E08091E8008E778093CC -:101A7000E800C6CF2111C7CFD6CF8091EE018823D1 -:101A800039F0853039F08091E80083FFCCCF04C075 -:101A900082E0089583E0089581E008952091F501A2 -:101AA0003091F6012617370748F06115710539F4B2 -:101AB0002091E8002E772093E80001C0B901FC01D5 -:101AC00020E061157105C1F18091EE01882309F4D0 -:101AD00041C0853009F440C08091E80083FD3EC0DC -:101AE0008091E80082FF06C08091E80082FF27C055 -:101AF00080E008958091E80080FFE3CF2091F3001B -:101B00008091F20090E0922B6115710559F08830B8 -:101B1000910540F424912093F100319661507109B0 -:101B20000196F2CF21E0089709F020E08091E800CB -:101B30008E778093E800C5CF2111C6CFD5CF809195 -:101B4000EE01882339F0853039F08091E80083FF79 -:101B5000CBCF04C082E0089583E0089581E008952A -:101B6000982F973058F59093E900981739F07091B5 -:101B7000EC002091ED005091F00003C0242F762F4F -:101B800050E021FF19C03091EB003E7F3093EB0015 -:101B90003091ED003D7F3093ED003091EB003160EE -:101BA0003093EB007093EC002093ED005093F00025 -:101BB0002091EE0027FF07C09F5FD3CF8F708093E7 -:101BC000E90081E0089580E008958091EF0187FDAC -:101BD00005C08091E80080FF0EC012C08091E8002F -:101BE00082FD05C08091EE018111F8CF08958091AA -:101BF000E8008B7708C08091EE018111EACF08954B -:101C00008091E8008E778093E80008958091E40049 -:101C10009091E50045E62091EC0020FF21C0209145 -:101C2000E80020FD21C02091EE01222389F025301B -:101C300089F02091EB0025FD0FC02091E400309148 -:101C4000E5002817390739F3415041F0C901E3CFC6 -:101C500082E0089583E0089581E0089584E0089586 -:101C60002091E80022FFDFCF80E008950E94A40EBB -:101C70000E94AC0EE0EEF0E0808181608083E8EDB0 -:101C8000F0E080818F77808319BCA7EDB0E08C9164 -:101C90008E7F8C9380818F7E80831092ED010895DA -:101CA0000F931F93CF93DF930E94A40E0E94AC0E5C -:101CB000C8EDD0E088818F778883888180688883A9 -:101CC00088818F7D888319BC1092EE011092EA0101 -:101CD0001092EC011092EB0100EE10E0F80180810F -:101CE0008B7F808388818160888342E060E080E030 -:101CF0000E94B00DE1EEF0E080818E7F8083E2EE05 -:101D0000F0E0808181608083808188608083F80139 -:101D100080818E7F8083888180618883DF91CF91ED -:101D20001F910F910895E8EDF0E080818F7E808310 -:101D3000E7EDF0E080818160808384E082BF81E014 -:101D40008093ED010C94500EE8EDF0E080818E7FE1 -:101D500080831092E20008951092DA001092E10060 -:101D600008951F920F920FB60F9211242F933F9355 -:101D70004F935F936F937F938F939F93AF93BF9393 -:101D8000EF93FF938091E10082FF0BC08091E2000E -:101D900082FF07C08091E1008B7F8093E1000E9469 -:101DA0000D118091DA0080FF1FC08091D80080FF64 -:101DB0001BC08091DA008E7F8093DA008091D90079 -:101DC00080FF0DC080E189BD82E189BD09B400FEBC -:101DD000FDCF81E08093EE010E94150B05C019BC78 -:101DE0001092EE010E94230B8091E10080FF19C048 -:101DF0008091E20080FF15C08091E2008E7F809389 -:101E0000E2008091E20080618093E2008091D8003E -:101E100080628093D80019BC85E08093EE010E9417 -:101E2000270B8091E10084FF30C08091E20084FFA5 -:101E30002CC080E189BD82E189BD09B400FEFDCFDF -:101E40008091D8008F7D8093D8008091E1008F7EB3 -:101E50008093E1008091E2008F7E8093E200809188 -:101E6000E20081608093E2008091EA01882311F012 -:101E700084E007C08091E30087FF02C083E001C0D7 -:101E800081E08093EE010E94290B8091E10083FFA5 -:101E900029C08091E20083FF25C08091E100877F07 -:101EA0008093E10082E08093EE011092EA0180913C -:101EB000E1008E7F8093E1008091E2008E7F80932D -:101EC000E2008091E20080618093E20042E060E005 -:101ED00080E00E94B00D8091F00088608093F00057 -:101EE0000E94260BFF91EF91BF91AF919F918F912F -:101EF0007F916F915F914F913F912F910F900FBE06 -:101F00000F901F9018951F920F920FB60F921124E9 -:101F10002F933F934F935F936F937F938F939F93F1 -:101F2000AF93BF93CF93EF93FF93C091E900CF702E -:101F30008091EC001092E9008091F000877F8093FF -:101F4000F00078940E94BF0F1092E9008091F00099 -:101F500088608093F000C093E900FF91EF91CF91EA -:101F6000BF91AF919F918F917F916F915F914F91B1 -:101F70003F912F910F900FBE0F901F9018951F93B8 -:101F8000CF93DF93CDB7DEB7AA970FB6F894DEBF35 -:101F90000FBECDBFEFEEF1E08091F100819321E023 -:101FA000E73FF207C9F70E94450B8091E80083FFE5 -:101FB0001CC12091EF013091F001832F90E08A3015 -:101FC000910508F012C1FC01E259FF4F0C947725EE -:101FD000203881F0223809F008C18091F3018F7018 -:101FE0008093E9008091EB0085FB882780F91092AF -:101FF000E90006C08091EB019091EC0191118260A3 -:102000009091E800977F9093E8008093F100109200 -:10201000F100C5C0822F8D7F09F0E7C0222319F09F -:10202000223061F0E2C08091F101813009F0DDC021 -:10203000333009F080E08093EC0128C08091F101F9 -:10204000811124C02091F3012F7009F4CEC0209398 -:10205000E9008091EB0080FF19C08091EB003330E4 -:1020600011F4806211C080618093EB0081E090E008 -:10207000022E01C0880F0A94EAF78093EA001092BA -:10208000EA008091EB0088608093EB001092E900F9 -:102090008091E800877F86C02111A7C01091F101CF -:1020A0001F778091E3008078812B8093E3008091FB -:1020B000E800877F8093E8000E94E50D8091E800AA -:1020C00080FFFCCF8091E30080688093E3001123C0 -:1020D00011F083E001C082E08093EE0186C02058B9 -:1020E000223008F082C08091F1019091F2018C3D84 -:1020F00023E0920779F583E08A838AE289834FB7E8 -:10210000F894DE01139620E03EE051E2E32FF0E088 -:1021100050935700E49120FF03C0E295EF703F5FBA -:10212000EF708E2F90E0EA3010F0C79601C0C09695 -:102130008D939D932F5F243149F74FBF8091E80025 -:10214000877F8093E8006AE270E0CE0101960E94EA -:10215000ED0C14C0AE014F5F5F4F6091F3010E9420 -:10216000350C009709F441C02091E800277F2093A7 -:10217000E800BC0189819A810E944E0D8091E8009F -:102180008B778093E80031C0203879F58091E800A2 -:10219000877F8093E8008091EA018093F10080912D -:1021A000E8008E778093E8000E94E50D1EC02111A3 -:1021B0001CC09091F1019230C0F48091E800877FBB -:1021C0008093E8009093EA010E94E50D8091EA0176 -:1021D000811104C08091E30087FF02C084E001C048 -:1021E00081E08093EE010E94310B8091E80083FF33 -:1021F0000AC08091E800877F8093E8008091EB001F -:1022000080628093EB00AA960FB6F894DEBF0FBEF3 -:10221000CDBFDF91CF911F9108950895CF93809105 -:10222000EE018823B1F08091E9008F709091EC006D -:1022300090FF02C090E801C090E0C92FC82B109217 -:10224000E9008091E80083FD0E94BF0FCF70C0932A -:10225000E900CF91089590937301809372010895DE -:10226000E0917201F0917301309721F00190F081BB -:10227000E02D099480E00895E0917201F0917301DE -:10228000309721F00280F381E02D09940895E091C8 -:102290007201F0917301309721F00480F581E02DF7 -:1022A000099408952091700130917101821793076C -:1022B00071F09093710180937001E0917201F0913F -:1022C0007301309721F00680F781E02D099408957D -:1022D00020916E0130916F018217930771F09093F6 -:1022E0006F0180936E01E0917201F091730130975C -:1022F00021F00084F185E02D0994089508950C944F -:102300007E110E94681D0E9451060C942E1ECF92D1 -:10231000DF92EF92FF920F931F93CF93DF93CDB78E -:10232000DEB72B970FB6F894DEBF0FBECDBF0E946D -:10233000690635E7E32E31E0F32E00E010E0C02E11 -:10234000802F0E945607F701D1907F01D826B1F463 -:102350000F5F1F4F0E30110591F78FEF89838A832E -:102360001B820E94711D8160782F9D838C8349811F -:102370005A816B818D810E942A1241C09091D701B0 -:1023800091FF04C08B870E945C078B8520E030E0C2 -:102390004D2D50E0922FBA01022E02C0759567951F -:1023A0000A94E2F760FF25C02E83CF82EE24E394E7 -:1023B000F12C02C0EE0CFF1C9A95E2F790E08E2102 -:1023C0009F2121E0892B09F420E028870E94711DBC -:1023D0008160782F9A8789874E815F8168858A8599 -:1023E0000E942A12F801EB58FE4F80818E258083CF -:1023F00006C02F5F3F4F2630310561F6A9CF0E94FE -:102400001221109174010E9430111817A1F00E943E -:102410003011809374012B960FB6F894DEBF0FBE77 -:10242000CDBFDF91CF911F910F91FF90EF90DF9083 -:10243000CF900C94350A2B960FB6F894DEBF0FBEE2 -:10244000CDBFDF91CF911F910F91FF90EF90DF9063 -:10245000CF900895CF93DF93CDB7DEB72B970FB60C -:10246000F894DEBF0FBECDBF4F83588769877A8748 -:102470008B87DE01119686E0FD0111928A95E9F7BE -:1024800085E0FE01379601900D928A95E1F749812A -:102490005A816B817C818D819E810E947F192B9650 -:1024A0000FB6F894DEBF0FBECDBFDF91CF91089578 -:1024B0000895CF93C82F882309F4C1C0823859F4F6 -:1024C0000E94301181FDBBC089E30E94291C0E943B -:1024D000F31C89E30CC0833879F40E94301180FD2D -:1024E000AEC083E50E94291C0E94F31C83E50E9474 -:1024F000691CCF910C94F31C843859F40E9430115C -:1025000082FD9DC087E40E94291C0E94F31C87E481 -:10251000EECF8CEF8C0F813A48F48C2F0E9445232C -:1025200081118DC08C2F0E94291CE3CF80E28C0F7B -:10253000883048F4C77081E001C0880FCA95EAF777 -:102540000E94AA1CD6CF8BE58C0F833078F4C53A55 -:1025500029F0C63A31F482E890E005C081E890E0C5 -:1025600002C083E890E0CF910C94521188E58C0F63 -:10257000833108F064C0C83A39F1C93A41F1CA3A26 -:1025800049F1CB3A51F1CC3A59F1CD3A61F1C03B26 -:1025900069F1CE3A71F1CF3A79F1C13B81F1C23B99 -:1025A00089F1C33B91F1C43B99F1C53BA1F1C63B15 -:1025B000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B75 -:1025C000C9F58AE292E038C082EE90E035C089EE2B -:1025D00090E032C08AEE90E02FC085EB90E02CC0F6 -:1025E00086EB90E029C087EB90E026C08CEC90E071 -:1025F00023C08DEC90E020C083E891E01DC08AE804 -:1026000091E01AC082E991E017C084E991E014C01A -:1026100081E292E011C083E292E00EC084E292E097 -:102620000BC085E292E008C086E292E005C087E236 -:1026300092E002C080E090E0CF910C946811CF91BD -:102640000895882309F44BC0823859F40E94301150 -:1026500081FF45C089E30E94291C0E94F31C89E385 -:102660000CC0833871F40E94301180FF38C083E5BC -:102670000E94291C0E94F31C83E50E94691C0C9493 -:10268000F31C843859F40E94301182FF28C087E47B -:102690000E94291C0E94F31C87E4EFCF9CEF980F47 -:1026A000913A58F390E2980F983050F4877091E087 -:1026B00001C0990F8A95EAF7892F0E94B01CDFCFDD -:1026C0009BE5980F933020F480E090E00C94521139 -:1026D000885A833120F480E090E00C9468110895CA -:1026E000882321F00E94AA1C0C94F31C08958823CF -:1026F00021F00E94B01C0C94F31C0895CF92DF923D -:10270000EF92FF920F931F93CF93DF93CDB7DEB776 -:1027100028970FB6F894DEBF0FBECDBF8C0185E0C1 -:10272000F801DE01119601900D928A95E1F7F8010A -:10273000D080E180F280558152955F702381348191 -:10274000232B39F0FFEFEF1206C081E0DF1203C048 -:1027500003C081E001C080E080FDE2C2C8015F8368 -:102760000E945812D982EA8269817A818F2D0E9453 -:10277000251C9E8388870E94D91B0E94AC1A4E811B -:102780005F816885FF2029F00E94C71C68855F81F2 -:102790004E81E42FE295EF70F0E0E858FF4F0C9483 -:1027A0007725842F807F142F1F70882311F01295B6 -:1027B000107FFF20B1F0112309F467C280E2860F79 -:1027C000883028F4812F68870E94AA1C04C0812FBA -:1027D00068870E94BA1C688568870E94F31C688518 -:1027E00054C2862F68870E9421136885112309F43B -:1027F00097C2605E812F683018F40E94B01C02C03E -:102800000E94C01C28960FB6F894DEBF0FBECDBF45 -:10281000DF91CF911F910F91FF90EF90DF90CF90BC -:102820000C94F31C242F207F842F8F70203211F002 -:102830008295807F662319F0613019F12BC0FF204B -:10284000B1F0552309F493C1513009F090C1289695 -:102850000FB6F894DEBF0FBECDBFDF91CF911F91B1 -:102860000F91FF90EF90DF90CF900C94DA1C5523DE -:1028700019F0513009F454C28E830E94DD1C8E8100 -:1028800089C1FF2021F0523008F04AC270C15111B5 -:1028900047C280C1FF2021F0552309F468C1F5C16A -:1028A000552309F477C105C2242F26952695237058 -:1028B00030E02115310521F021303105C9F030C259 -:1028C000FF2021F0862F942F937002C080E090E0CB -:1028D00028960FB6F894DEBF0FBECDBFDF91CF9123 -:1028E0001F910F91FF90EF90DF90CF900C945211B9 -:1028F000FF2021F0862F942F937002C080E090E09B -:1029000028960FB6F894DEBF0FBECDBFDF91CF91F2 -:102910001F910F91FF90EF90DF90CF900C94681172 -:10292000862FFF2019F00E941A2002C00E948220E8 -:1029300028960FB6F894DEBF0FBECDBFDF91CF91C2 -:102940001F910F91FF90EF90DF90CF900C94072193 -:10295000842F837009F076C0F110E2C1262F2295F2 -:1029600026952770220F220F862F8F70C82ED12C0C -:10297000E12CF12C022E04C0CC0CDD1CEE1CFF1C43 -:102980000A94D2F764FF10C06FE070E080E090E03E -:1029900004C0660F771F881F991F2A95D2F760958C -:1029A00070958095909503C060E070E0CB01242F76 -:1029B000269526952370422F50E042305105D1F0E4 -:1029C0004330510559F16C297D298E299F294130C9 -:1029D000510541F128960FB6F894DEBF0FBECDBF6A -:1029E000DF91CF911F910F91FF90EF90DF90CF90EB -:1029F0000C94D11A6C297D298E299F2928960FB60F -:102A0000F894DEBF0FBECDBFDF91CF911F910F9124 -:102A1000FF90EF90DF90CF900C94EB1A0E94D11AA8 -:102A2000C701B60128960FB6F894DEBF0FBECDBF22 -:102A3000DF91CF911F910F91FF90EF90DF90CF909A -:102A40000C94B71AFF2019F0842F817001C086956D -:102A5000882309F465C1262F229526952770220F19 -:102A6000220F862F8F70C82ED12CE12CF12C022E34 -:102A700004C0CC0CDD1CEE1CFF1C0A94D2F764FFD2 -:102A800010C06FE070E080E090E004C0660F771F38 -:102A9000881F991F2A95D2F760957095809590951B -:102AA00003C060E070E0CB01242F269526952370AB -:102AB000422F50E042305105D1F04330510559F1D9 -:102AC0006C297D298E299F294130510541F1289695 -:102AD0000FB6F894DEBF0FBECDBFDF91CF911F912F -:102AE0000F91FF90EF90DF90CF900C94A51B6C2975 -:102AF0007D298E299F2928960FB6F894DEBF0FBE38 -:102B0000CDBFDF91CF911F910F91FF90EF90DF909C -:102B1000CF900C94BF1B0E94A51BC701B60128963D -:102B20000FB6F894DEBF0FBECDBFDF91CF911F91DE -:102B30000F91FF90EF90DF90CF900C948B1B603F34 -:102B4000C9F118F4603E50F49BC0623F09F460C0C4 -:102B500008F44AC0633F09F46FC092C0162F1F707B -:102B6000842F8F71FF2099F00E94241B812F2896BB -:102B70000FB6F894DEBF0FBECDBFDF91CF911F918E -:102B80000F91FF90EF90DF90CF900C9470130E9404 -:102B9000451B812F28960FB6F894DEBF0FBECDBF20 -:102BA000DF91CF911F910F91FF90EF90DF90CF9029 -:102BB0000C947713FF20A1F05111B2C0842F8F71B4 -:102BC00028960FB6F894DEBF0FBECDBFDF91CF9130 -:102BD0001F910F91FF90EF90DF90CF900C946A1BA4 -:102BE000523008F09DC0EACFFF20A1F0842F8F71F2 -:102BF00028960FB6F894DEBF0FBECDBFDF91CF9100 -:102C00001F910F91FF90EF90DF90CF900C94241BB9 -:102C1000FF2061F3842F8F7128960FB6F894DEBFE2 -:102C20000FBECDBFDF91CF911F910F91FF90EF901D -:102C3000DF90CF900C94451BFF2091F0842F8F7173 -:102C400028960FB6F894DEBF0FBECDBFDF91CF91AF -:102C50001F910F91FF90EF90DF90CF900C940F1B7E -:102C600028960FB6F894DEBF0FBECDBFDF91CF918F -:102C70001F910F91FF90EF90DF90CF900C94051B68 -:102C8000FF20A1F0552309F4B1CF862F28960FB667 -:102C9000F894DEBF0FBECDBFDF91CF911F910F9192 -:102CA000FF90EF90DF90CF900C945912552309F4C8 -:102CB000B1CF862F28960FB6F894DEBF0FBECDBFDA -:102CC000DF91CF911F910F91FF90EF90DF90CF9008 -:102CD0000C9421134F70C8010E942D0328960FB643 -:102CE000F894DEBF0FBECDBFDF91CF911F910F9142 -:102CF000FF90EF90DF90CF900C942C1A4F70C8018A -:102D000028960FB6F894DEBF0FBECDBFDF91CF91EE -:102D10001F910F91FF90EF90DF90CF900C945D0783 -:102D200028960FB6F894DEBF0FBECDBFDF91CF91CE -:102D30001F910F91FF90EF90DF90CF9008950E9428 -:102D4000C71C0E94D71C0E949C1C0E94F31C0E945E -:102D5000B3210E94072180E090E00E94521180E0A0 -:102D600090E00C9468110E94B71C0C949F160E946E -:102D70001A1C292F22952F7030E02C3031054CF48D -:102D80002A3031056CF4225031092230310590F49B -:102D900007C02C30310551F02F30310539F00AC011 -:102DA000803E10F0803F31F481E0089593FB882746 -:102DB00080F9089580E00895CF93DF9300D000D08C -:102DC0001F92CDB7DEB70F900F900F900F900F901E -:102DD000DF91CF910895CF93DF9300D000D000D042 -:102DE000CDB7DEB726960FB6F894DEBF0FBECDBFC7 -:102DF000DF91CF9108951F93CF93DF93C09183010B -:102E000016E080918401C81799F0D0E01C9FF00172 -:102E10001D9FF00D1124EB57FE4F408151816281BF -:102E20007381848195810E94EB162196C770E9CF4A -:102E3000DF91CF911F9108954091B5015091B60156 -:102E40006091B7017091B8018091B9019091BA0178 -:102E50000C94EB16CF938091BA0182958F7009F094 -:102E60005FC08091B701882309F45AC02091830183 -:102E7000A09184016091B5017091B6018091B80173 -:102E80009091B90131E06F3F09F030E0B32FC6E017 -:102E90002A1709F445C0009721F07F3F21F44B2FFA -:102EA00003C041E001C040E030E040FD35C0C29FBA -:102EB000F001C39FF00D1124EB57FE4F41817413B5 -:102EC0002BC04081641328C04281411125C0438139 -:102ED00054814817590710F441505109481B590BA8 -:102EE000483C5105C8F48091BA018F70806180938D -:102EF000BA0186E0829FF001839FF00D1124E6570E -:102F0000FE4F80818F708061808385EB91E00E940D -:102F10007E13CF910C94FB162F5F3F4F2770B8CFD5 -:102F2000CF910895CF92DF92EF92FF920F931F936C -:102F3000CF93DF93CDB7DEB762970FB6F894DEBFBD -:102F40000FBECDBF8C0185E0F801DE011D9601901A -:102F50000D928A95E1F7D8014C9111965C911197E9 -:102F600012966C9112971396ED90FC9014977091B5 -:102F7000B501E091B6012091B8013091B901211558 -:102F8000310531F0EF3F31F481E07F3F19F403C0A8 -:102F900081E001C080E0B82FB170CB2E80FD6CC104 -:102FA000D090B701DD2009F4F5C0F091BA01E21626 -:102FB000F30638F0C701821B930B883C910548F05B -:102FC0009BC0209530952E0D3F1D283C310508F003 -:102FD00093C08F2F807F09F052C0E51314C0741383 -:102FE00012C0D62E61110FC0FF70F061F093BA01CC -:102FF0000E941C1785EB91E00E947E138091BA011C -:10300000F80185836CC1EF2831F05F3F31F481E036 -:103010004F3F19F403C081E001C080E080FD03C090 -:1030200081E0862701C080E0F82FF170FF2E80FF3D -:103030001CC0809183012091840136E0821709F43D -:1030400028C190E0389FF001399FF00D1124EB5713 -:10305000FE4F7181571306C07081471303C0728100 -:10306000671303C001968770E9CFD62E662309F453 -:1030700036C18091BA0181608093BA0153C0E513D3 -:1030800008C0741306C0611104C0D8011596FC93E2 -:10309000AEC04D875E878D859E856A8B0E94B71670 -:1030A0006A89882329F1D62E662311F12091BA016D -:1030B000822F82958F7090E002970CF460C080910F -:1030C000B5019091B60198878F831986FB86EA86B1 -:1030D0002C87CE01079651C0E51731F14D875E87E9 -:1030E0008D859E856A8B0E94B7166A8981112EC0D4 -:1030F000C8010E947E13A4C08F2F807F69F77E2DA8 -:10310000F98AE88A89890E94DC1685EB91E00E94A1 -:103110007E13E5EBF1E086E0DF011D928A95E9F789 -:103120000E941C17D12CDBC07413D8CF6111D6CFED -:10313000D8011596FC93C8010E947E13E5EBF1E0DF -:1031400086E0DF011D928A95E9F7C9C0D62E662375 -:1031500079F22091BA01822F82958F7090E00297C8 -:1031600074F08091B5019091B6019A8389831B8296 -:10317000FD82EC822E83CE0101960E947E1386E0B2 -:10318000F801A5EBB1E001900D928A95E1F70E945C -:103190002A176FC0E216F30628F0C701821B930BB3 -:1031A0009C0104C0209530952E0D3F1D283C310513 -:1031B00008F052C0D62E662309F49ACFE5132CC02E -:1031C00074132AC08091BA0180FD1DC0982F92957A -:1031D0009F70C9F0D80115968C9315979F3039F0E0 -:1031E0009F5F9295907F8F70892B15968C93C80165 -:1031F0000E947E1386E0F801A5EBB1E001900D92EC -:103200008A95E1F736C086E0F801A5EBB1E00190C0 -:103210000D928A95E1F763C04D875E878D859E8507 -:103220000E94B716882379F086E0F801A5EBB1E09B -:1032300001900D928A95E1F70E942A170E941C17AF -:10324000DD24D3944CC08091BA0181608093BA018F -:10325000C8010E947E1343C07E2DF98AE88A8989BD -:103260000E94DC16E5EBF1E086E0DF011D928A9515 -:10327000E9F70E941C1733C0662309F439CF4D8744 -:103280005E878D859E850E94B716882309F430CF0E -:10329000CBCF4D875E878D859E850E941A1C292F76 -:1032A00022952F7030E0223031052CF49F7041F0D0 -:1032B000811106C00CC0243031052CF49F7049F4F4 -:1032C000805E883020F0C8010E947E13CF2CDC2C59 -:1032D00006C0D80115969C91907F91F7F8CF8D2D5F -:1032E00062960FB6F894DEBF0FBECDBFDF91CF91CF -:1032F0001F910F91FF90EF90DF90CF9008951F9353 -:10330000CF93DF93CDB7DEB72C970FB6F894DEBF1F -:103310000FBECDBF4F83588769877A878B879C877D -:10332000CE0107960E9492178823C1F02F8138851D -:103330008A859B85892B31F03F3F11F080E003C0E7 -:103340002F3FE1F781E0811147C04F8158856985A2 -:103350007A858B859C850E94EB163EC086E0FE0137 -:103360003796DE01119601900D928A95E1F7FF8163 -:10337000E8854A855B854115510531F0EF3F31F411 -:1033800081E0FF3F19F403C081E001C080E080FDCF -:1033900023C02091840130E0C901019687709927EC -:1033A0006091830170E086179707F1F1F983EA8352 -:1033B0005D834C8396E0929FD001939FB00D1124C2 -:1033C000AB57BE4FFE01319601900D929A95E1F7F1 -:1033D000809384010E94FB1616E0809183019091F6 -:1033E0008401891779F1189FC00111248B579E4FD2 -:1033F0000E949217882331F1E09183011E9FF00112 -:103400001124EB57FE4F4081518162817381848189 -:1034100095810E94EB168091830190E00196877060 -:10342000992780938301D9CF0E94B316109284010B -:1034300010928301E5EBF1E086E0DF011D928A95B1 -:10344000E9F7CACF2C960FB6F894DEBF0FBECDBFFA -:10345000DF91CF911F910895EF92FF920F931F93E9 -:10346000CF93DF93FC01009709F46FC0F12CEE2499 -:10347000E394EF0121968491843740F4843008F07E -:1034800055C0813081F0823021F15FC0853709F469 -:1034900047C0C0F19CE7980F903708F056C08F776F -:1034A0000E94211345C08F010E5F1F4FFE018491C2 -:1034B00090E2980F983050F48770FE2D01C0FF0FF6 -:1034C0008A95EAF78F2F0E94CA1C15C00E945912D4 -:1034D00014C08F010E5F1F4FFE01849190E2980F80 -:1034E000983068F48770FE2D01C0FF0F8A95EAF7C7 -:1034F0008F2F0E94D01C0E94F31CE80119C00E946B -:103500002113FBCFCF010296FE01C491CC2361F0C1 -:10351000EFE9FFE03197F1F700C00000C150F6CFAE -:10352000CF010296FE01F490EC0102C00E945912F4 -:103530008F2D882341F0EFE9FFE03197F1F700C0CC -:1035400000008150F6CFFE0194CFDF91CF911F9103 -:103550000F91FF90EF90089508956093BF017093CD -:10356000C0018093C1019093C2010C949F160F93E8 -:103570001F930091BF011091C0012091C1013091B2 -:10358000C201062B172B282B392B0093BF01109358 -:10359000C0012093C1013093C2011F910F910C947F -:1035A0009F160F931F930091BF011091C0012091AE -:1035B000C1013091C2010623172328233923009328 -:1035C000BF011093C0012093C1013093C2011F912C -:1035D0000F910C949F160F931F930091BF011091B0 -:1035E000C0012091C1013091C20106271727282769 -:1035F00039270093BF011093C0012093C10130937C -:10360000C2011F910F910C949F161092BB01109252 -:10361000BC011092BD011092BE010C949F1641E0B6 -:1036200050E060E070E004C0440F551F661F771F34 -:103630008A95D2F74093BB015093BC016093BD01C2 -:103640007093BE010C949F1641E050E060E070E082 -:1036500004C0440F551F661F771F8A95D2F78091CB -:10366000BB019091BC01A091BD01B091BE01842B22 -:10367000952BA62BB72B8093BB019093BC01A093F5 -:10368000BD01B093BE010C949F1641E050E060E094 -:1036900070E004C0440F551F661F771F8A95D2F74C -:1036A00040955095609570958091BB019091BC01BB -:1036B000A091BD01B091BE0184239523A623B72319 -:1036C0008093BB019093BC01A093BD01B093BE0158 -:1036D0000C949F1641E050E060E070E004C0440F9D -:1036E000551F661F771F8A95D2F78091BB01909175 -:1036F000BC01A091BD01B091BE0184279527A627EA -:10370000B7278093BB019093BC01A093BD01B093F8 -:10371000BE010C949F160F931F930091BB01109153 -:10372000BC012091BD013091BE01062B172B282B27 -:10373000392B0093BB011093BC012093BD01309342 -:10374000BE011F910F910C949F160F931F93009130 -:10375000BB011091BC012091BD013091BE01062337 -:103760001723282339230093BB011093BC01209316 -:10377000BD013093BE011F910F910C949F160F93C2 -:103780001F930091BB011091BC012091BD013091AC -:10379000BE0106271727282739270093BB0110935E -:1037A000BC012093BD013093BE011F910F910C9479 -:1037B0009F160895CF92DF92EF92FF920F931F937F -:1037C000CF93DF93EC01C090BF01D090C001E09097 -:1037D000C101F090C2018091BB019091BC01A09108 -:1037E000BD01B091BE01C82AD92AEA2AFB2A0FE1FD -:1037F00010E0B701A601002E04C076956795579595 -:1038000047950A94D2F740FD05C00150110988F789 -:1038100080E007C0BE01802F0E949A090197A9F39A -:10382000802FDF91CF911F910F91FF90EF90DF904C -:10383000CF900895CF93DF93EC010E94DA1BBE0175 -:103840000E949A09DF91CF910895CB010E941A1C22 -:10385000089590910C019923D9F090910D0199232D -:10386000B9F0982F9695969596959F3088F5E091AA -:103870000E01F0910F01E90FF11D877021E030E09A -:1038800001C0220F8A95EAF78181822B81830895F6 -:1038900040910E0150910F0120E030E09FEFFA01BE -:1038A000E20FF31F6281681799F09F3F19F46111CD -:1038B00001C0922F2F5F3F4F2E30310581F79F3F80 -:1038C00039F0FA01E90FF11D97FDFA958283089509 -:1038D000089590910C019923E1F090910D019923A5 -:1038E000C1F0982F9695969596959F3020F5E0918A -:1038F0000E01F0910F01E90FF11D877021E030E01A -:1039000001C0220F8A95EAF720958181282321831F -:10391000089540910E0150910F0120E030E0FA012E -:10392000E20FF31F9281981301C012822F5F3F4F65 -:103930002E303105A1F7089581E090E0E0910E016D -:10394000F0910F01E80FF91F108201968031910567 -:10395000A9F708959091D601982B9093D6010895D8 -:1039600080959091D60198239093D6010895109256 -:10397000D60108959091D501982B9093D501089583 -:1039800080959091D50198239093D5010895109238 -:10399000D50108959091D401982B9093D401089566 -:1039A00080959091D40198239093D401089510921A -:1039B000D40108958093C30108951092C30108951E -:1039C00040910E0150910F0120E030E080E0FA01BB -:1039D000E20FF31F918191118F5F2F5F3F4F2F30C7 -:1039E0003105A9F70895E0910E01F0910F01809142 -:1039F000D6018083E0910E01F0910F0180819091BA -:103A0000D501892B8083E0910E01F0910F01808117 -:103A10009091D401892B80839091C301992361F007 -:103A2000E0910E01F0910F018081892B80830E942B -:103A3000E01C81111092C30180910E0190910F0141 -:103A40000C943C118091EE01843021F11092D80148 -:103A500020E488E190E00FB6F894A8958093600088 -:103A60000FBE2093600080E00E94350A83B7817FFB -:103A7000846083BF83B7816083BF7894889583B760 -:103A80008E7F83BF88E10FB6F89480936000109218 -:103A900060000FBE089508950895CF930E944B1DB6 -:103AA0000E9469060E944C1DC0E08C2F0E945607A0 -:103AB000811105C0CF5FCE30C1F780E001C081E049 -:103AC000CF9108950E94B3160E9430110C94350ACC -:103AD00082E084BD93E095BD9AEF97BD80936E0020 -:103AE00008952FB7F8948091D9019091DA01A091AF -:103AF000DB01B091DC012FBF0895CF92DF92EF92EE -:103B0000FF920F931F932FB7F8944091D9015091D2 -:103B1000DA016091DB017091DC012FBF6A017B014A -:103B2000EE24FF248C0120E030E0C016D106E2062E -:103B3000F30610F441505109481B590BCA011F915B -:103B40000F91FF90EF90DF90CF9008951F920F920A -:103B50000FB60F9211248F939F93AF93BF938091D1 -:103B6000D9019091DA01A091DB01B091DC010196BD -:103B7000A11DB11D8093D9019093DA01A093DB01BF -:103B8000B093DC01BF91AF919F918F910F900FBEC9 -:103B90000F901F9018950E94360EF8942FEF87EA29 -:103BA00091E6215080409040E1F700C0000087E09E -:103BB00090EBDC018093F8019093F901A093FA0156 -:103BC000B093FB012CE088E190E00FB6F894A89543 -:103BD000809360000FBE20936000FFCFEF92FF92B2 -:103BE0000F931F93CF93DF93E82EF12C8F2D0E941C -:103BF0005607C0E0D0E0082F10E098010C2E02C05C -:103C0000359527950A94E2F720FD05C02196C63028 -:103C1000D10599F709C06C2F7F2D80E00E945E07C7 -:103C2000E812F4CF81E005C0F3948EE0F812DECF05 -:103C300080E0DF91CF911F910F91FF90EF90089559 -:103C4000CF93C82F8CE20E94EE1D882321F08C2F89 -:103C5000CF910C94EE1D80E0CF910895CF930E94F8 -:103C6000731F811102C00E94591FC5E6C15049F05F -:103C70000E9469068FE39CE90197F1F700C00000FC -:103C8000F5CF89E20E94201E811111C18AE20E94B3 -:103C9000201E81110E94591F85E00E94201E811163 -:103CA0000E94CB1D0E947E1F8093D70187E00E9457 -:103CB000201E882399F18BE10E94201E882351F059 -:103CC0009091D70191FB882780F921E0822780FB22 -:103CD00091F922C08EE00E94201E882351F090911D -:103CE000D70192FB882780F921E0822780FB92F997 -:103CF00013C080E10E94201E9091D701882341F0DB -:103D000093FB882780F921E0822780FB93F904C088 -:103D1000892F809580FB90F99093D7018091D701EE -:103D20000E94821F0E94901F8093F70180EE0E94E4 -:103D3000201E882341F08091F701982F909590FBE9 -:103D400080F98093F70189E30E94201E882359F0AF -:103D50009091F70191FB882780F921E0822780FB71 -:103D600091F99093F70182EE0E94201E882359F06A -:103D70009091F70192FB882780F921E0822780FB50 -:103D800092F99093F70186EE0E94201E882359F045 -:103D90009091F70193FB882780F921E0822780FB2F -:103DA00093F99093F70183EE0E94201E882359F027 -:103DB0009091F70194FB882780F921E0822780FB0E -:103DC00094F99093F70185E30E94201E882359F00F -:103DD0009091F70195FB882780F921E0822780FBED -:103DE00095F99093F70181E30E94201E882359F0F2 -:103DF0009091F70196FB882780F921E0822780FBCC -:103E000096F99093F70181E10E94201E882359F0D2 -:103E10009091F70197FB882780F921E0822780FBAA -:103E200097F99093F7018091F7010E94941F809178 -:103E3000F70187FB882780F980930D0187E20E94B4 -:103E4000201EC82F8EE10E94201E8111C2608FE1CA -:103E50000E94201E8111C46080E20E94201E8111F8 -:103E6000C86081E20E94201E8111C06182E20E942E -:103E7000201E8111C06283E20E94201E8111C06455 -:103E800084E20E94201E882311F0C06802C0CC2367 -:103E900029F08C2F0E948B1F6C2F03C00E94871F5C -:103EA000682F70E080E090E0CF910C94AD1ACF9134 -:103EB00008956DEE7EEF80E090E00E94B12560E015 -:103EC00082E090E00E949F2560E083E090E00E9405 -:103ED0009F2560E084E090E00E949F2560E085E0FF -:103EE00090E00C949F2580E090E00E94992521E0CD -:103EF0008D3E9E4F09F020E0822F089582E090E0F1 -:103F00000C949125682F82E090E00C949F2583E02B -:103F100090E00C949125682F83E090E00C949F250D -:103F200084E090E00C949125682F84E090E00C945C -:103F30009F258091DF0180FF0BC06091130185E018 -:103F4000689FB001112475956795759567952AC08E -:103F500081FF09C06091130185E0689FB0011124C1 -:103F6000759567951FC082FF07C06091130185E0BA -:103F7000689FB001112416C04091E0014423C9F0AC -:103F800060911201461788F72091130185E0289F60 -:103F900090011124429FC001439F900D112470E0B5 -:103FA0000E9463256038710540F46115710539F090 -:103FB00002C065E070E0862F08958FE7089581E0E4 -:103FC00008958091DF0180FF08C06091110170E0C9 -:103FD000759567957595679521C081FF06C06091BD -:103FE000110170E07595679519C082FF04C060915A -:103FF000110170E010C08091E0018823C1F0609150 -:1040000010018617A0F790911101989FC00111240B -:1040100070E00E9463256038710528F46115710510 -:1040200021F0862F08958FE7089581E0089561E0DB -:1040300070E0F4CF803F21F40E94991F819504C065 -:10404000813F29F40E94991F8093E3010895823FE4 -:1040500021F40E94991F819504C0833F29F40E9496 -:10406000991F8093E2010895893F19F40E94E11F8E -:1040700005C08A3F31F40E94E11F81958093E401DD -:1040800008958B3F21F40E94E11F819504C08C3F6D -:1040900029F40E94E11F8093E5010895843F21F4F3 -:1040A0008091E101816017C0853F21F48091E10199 -:1040B000826011C0863F21F48091E10184600BC0D1 -:1040C000873F21F48091E101886005C0883F31F489 -:1040D0008091E10180618093E10108958D3F21F499 -:1040E0008091DF0181600BC08E3F21F48091DF0160 -:1040F000826005C08F3F29F48091DF018460809346 -:10410000DF010895803F39F48091E30187FF6CC09F -:104110001092E30169C0813F29F48091E3011816F0 -:10412000BCF362C09091E201823F29F497FF5CC02A -:104130001092E20159C0833F19F41916CCF354C010 -:10414000893F41F48091E40118160CF04DC01092A3 -:10415000E4014AC08A3F29F48091E40187FF44C00A -:10416000F6CF8B3F39F48091E50187FF3DC0109277 -:10417000E5013AC08C3F29F48091E5011816BCF3A3 -:1041800033C0843F21F48091E1018E7F17C0853FC9 -:1041900021F48091E1018D7F11C0863F21F480914F -:1041A000E1018B7F0BC0873F21F48091E101877F84 -:1041B00005C0883F31F48091E1018F7E8093E10159 -:1041C00013C08D3F21F48091DF018E7F0BC08E3FA5 -:1041D00021F48091DF018D7F05C08F3F29F480910C -:1041E000DF018B7F8093DF018091E20181110EC09E -:1041F0008091E30181110AC08091E401811106C020 -:104200008091E501811102C01092E001089581EED4 -:1042100091E00E9447110E94711D9093DE018093EE -:10422000DD0108951F93CF93DF938091DD0190917D -:10423000DE010E947D1D4091E001442321F0209188 -:10424000140130E006C0209115015AE0259F90012D -:1042500011248217930708F482C08091E201109123 -:10426000E301D091E401C091E501811107C0111172 -:1042700005C0D11103C0CC2309F471C04F3F19F020 -:104280004F5F4093E001181624F40E94991F809319 -:10429000E2018091E20187FF05C00E94991F81958C -:1042A0008093E201111624F40E94991F8093E30188 -:1042B0008091E30187FF05C00E94991F819580933B -:1042C000E3016091E201662339F11091E3011123CA -:1042D00019F1772767FD7095872F972F0E94742417 -:1042E00023E333E343E35FE30E94D8240E944124A5 -:1042F0006093E201612F772767FD7095872F972FD5 -:104300000E94742423E333E343E35FE30E94D82451 -:104310000E9441246093E3011D1624F40E94E11FD2 -:104320008093E4018091E40187FF05C00E94E11FB2 -:1043300081958093E4011C1624F40E94E11F809370 -:10434000E5018091E50187FF05C00E94E11F81958D -:104350008093E501DF91CF911F910C940721DF91AC -:10436000CF911F910895E1EEF1E085E0DF011D920C -:104370008A95E9F71092E0011092DF0108958330E9 -:1043800081F128F4813059F08230D1F008958530E0 -:1043900009F449C0B8F1863009F456C00895209157 -:1043A0001501862F90E0820F911D8F3F910520F41B -:1043B000620F6093150108958FEF809315010895A2 -:1043C00020911401862F90E0820F911D8F3F91055F -:1043D00020F4620F6093140108958FEF809314010D -:1043E000089520911301862F90E0820F911D8F3F39 -:1043F000910520F4620F6093130108958FEF80936D -:104400001301089520911201862F90E0820F911DD3 -:104410008F3F910520F4620F6093120108958FEF92 -:1044200080931201089520911101862F90E0820F50 -:10443000911D8F3F910520F4620F60931101089543 -:104440008FEF80931101089520911001862F90E045 -:10445000820F911D8F3F910520F4620F6093100130 -:1044600008958FEF809310010895833011F128F49F -:10447000813049F0823091F00895853081F120F14A -:104480008630C1F1089580911501681720F4861BCC -:1044900080931501089510921501089580911401DB -:1044A000681720F4861B809314010895109214015C -:1044B000089580911301681720F4861B80931301DF -:1044C000089510921301089580911201681720F445 -:1044D000861B809312010895109212010895809115 -:1044E0001101681720F4861B809311010895109222 -:1044F0001101089580911001681720F4861B8093A4 -:10450000100108951092100108958D3109F442C0F0 -:1045100020F58E3009F477C070F4873009F459C063 -:1045200018F48630F1F134C0883009F4A8C08B301B -:1045300009F4A5C02DC0863109F4A1C038F480313A -:1045400009F472C0813109F479C022C0893109F4BB -:1045500096C08B3109F44DC01BC0853309F487C068 -:1045600048F4873209F483C008F473C0893209F42F -:104570007EC00EC0833438F48A3308F068C08833B4 -:1045800009F47DC005C0833409F471C0883499F002 -:1045900080E008950E94FB230E9430110E94350A9A -:1045A0006EC08091D701817F8E7F8093D70181E09B -:1045B0008093E70108950E94B3162FEF83ED90E3F7 -:1045C000215080409040E1F700C000000E94CB1DC8 -:1045D00056C09091D701892F8095817080FB90F90A -:1045E00019F0966098601DC0997F977F9093D701CE -:1045F00046C09091D70191FB882780F921E082275E -:1046000080FB91F909C09091D70192FB882780F92E -:1046100021E0822780FB92F99093D701882379F1DA -:1046200091609093D70108959091D70193FB8827CB -:1046300080F921E0822780FB93F9EECF0E94B31628 -:1046400080910D0191E0892780930D0118C027EC1E -:1046500001C023EE280F61E070E080E090E004C02C -:10466000660F771F881F991F2A95D2F704C061E053 -:1046700070E080E090E00E94AD1A0E94B31681E0E5 -:10468000089580E0089580E00895CF93C82F809129 -:10469000E701813079F018F08230D1F184C0A09127 -:1046A0000E01B0910F018C91813169F0823209F0D5 -:1046B0007CC009C0A0910E01B0910F018C91813195 -:1046C00011F0823249F48C2F0E94412381111DC0C8 -:1046D0008C2F0E9485221AC08C2F0E9443238111A7 -:1046E00014C0C43179F048F4CB3079F0C03109F00E -:1046F00060C082E08093E70108C0C93219F0C83376 -:1047000021F057C01092E70154C081E0817053C07E -:10471000C93289F118F5C43171F1A8F4C73009F034 -:1047200046C08AE08093150194E19093140193E0D0 -:10473000909313018093120188E08093110188E225 -:104740008093100134C0CE51C63088F5EC2FF0E0D4 -:10475000E65DFE4F80818093E60129C0CE34E9F00A -:1047600020F4CB3421F56AE013C0C13579F0C235AD -:10477000F1F461E00DC08091E601882319F01092F8 -:10478000E60115C081E08093E70115C061E006C035 -:104790008091E6010E94BF210AC06AE08091E60193 -:1047A0000E94352204C01092E70180E004C081E03D -:1047B00002C080E0ABCFCF910895E1E8F0E08081C6 -:1047C000886080838081816080838FB7F89493E0D4 -:1047D0009093890090ED909388008FBF0895EFE645 -:1047E000F0E08081826080830895EFE6F0E08081D0 -:1047F0008D7F80830895EFE6F0E0808192E0892745 -:10480000808308951F920F920FB60F9211242F9359 -:104810003F934F935F936F937F938F939F93AF9348 -:10482000BF93EF93FF938091E8019091E901019686 -:104830009093E9018093E801811103C082E00E9416 -:10484000350AE091E901E695E695F0E0E257FA4F86 -:10485000E4918091E8018E1303C080E00E94350A44 -:10486000FF91EF91BF91AF919F918F917F916F9148 -:104870005F914F913F912F910F900FBE0F901F901E -:10488000189504D06894B1118DC0089570D088F047 -:104890009F5790F0B92F9927B751A0F0D1F0660F2C -:1048A000771F881F991F1AF0BA95C9F712C0B13047 -:1048B00081F077D0B1E0089574C0672F782F8827F2 -:1048C000B85F39F0B93FCCF3869577956795B39586 -:1048D000D9F73EF490958095709561957F4F8F4FF5 -:1048E0009F4F0895E89409C097FB3EF490958095FA -:1048F000709561957F4F8F4F9F4F9923A9F0F92FA6 -:1049000096E9BB279395F695879577956795B79523 -:10491000F111F8CFFAF4BB0F11F460FF1BC06F5F09 -:104920007F4F8F4F9F4F16C0882311F096E911C01B -:10493000772321F09EE8872F762F05C0662371F03C -:1049400096E8862F70E060E02AF09A95660F771F50 -:10495000881FDAF7880F9695879597F9089557FD80 -:104960009058440F551F59F05F3F71F04795880FDD -:1049700097FB991F61F09F3F79F087950895121674 -:1049800013061406551FF2CF4695F1DF08C0161620 -:1049900017061806991FF1CF8695710561050894D1 -:1049A0000895E894BB2766277727CB0197F90895E8 -:1049B0000BD078C069D028F06ED018F0952309F09C -:1049C0005AC05FC01124EECFCADFA0F3959FD1F388 -:1049D000950F50E0551F629FF001729FBB27F00DAD -:1049E000B11D639FAA27F00DB11DAA1F649F662702 -:1049F000B00DA11D661F829F2227B00DA11D621F51 -:104A0000739FB00DA11D621F839FA00D611D221F0A -:104A1000749F3327A00D611D231F849F600D211DEE -:104A2000822F762F6A2F11249F5750408AF0E1F091 -:104A300088234AF0EE0FFF1FBB1F661F771F881FDA -:104A400091505040A9F79E3F510570F014C0AACF75 -:104A50005F3FECF3983EDCF3869577956795B795C5 -:104A6000F795E7959F5FC1F7FE2B880F911D9695EF -:104A7000879597F9089597F99F6780E870E060E05F -:104A800008959FEF80EC089500240A9416161706E7 -:104A900018060906089500240A941216130614062F -:104AA00005060895092E0394000C11F4882352F092 -:104AB000BB0F40F4BF2B11F460FF04C06F5F7F4F4A -:104AC0008F4F9F4F089597FB072E16F4009407D041 -:104AD00077FD09D00E947D2507FC05D03EF4909516 -:104AE00081959F4F0895709561957F4F0895EE0FC2 -:104AF000FF1F0590F491E02D0994AA1BBB1B51E107 -:104B000007C0AA1FBB1FA617B70710F0A61BB70B3D -:104B1000881F991F5A95A9F780959095BC01CD01E2 -:104B20000895F999FECF92BD81BDF89A992780B575 -:104B30000895A8E1B0E042E050E00C94B925262F9A -:104B4000F999FECF92BD81BDF89A019700B4021683 -:104B500039F01FBA20BD0FB6F894FA9AF99A0FBE31 -:104B600008950196272F0E94A0250C949F25DC0113 -:104B7000CB01FC01F999FECF06C0F2BDE1BDF89A68 -:104B8000319600B40D9241505040B8F70895F89412 -:024B9000FFCF55 -:104B92002002370AC40AA10A6D0A3A0A0101C401B5 -:104BA20028080A03140A3F4D36394F050205CC0482 -:104BB200930426043F045804710401020304050609 -:044BC20007080900D7 +:100000000C94D7020C941B030C941B030C941B033D +:100010000C941B030C941B030C941B030C941B03E8 +:100020000C941B030C941B030C944A0E0C941C0F91 +:100030000C941B030C941B030C941B030C941B03C8 +:100040000C941B030C949B230C941B030C941B0318 +:100050000C941B030C943F1D0C941B030C941B036A +:100060000C941B030C941B030C941B030C941B0398 +:100070000C941B030C941B030C941B030C941B0388 +:100080000C941B030C941B030C941B030C941B0378 +:100090000C941B030C941B030C941B030C941B0368 +:1000A0000C941B030C941B030C941B032B035F0386 +:1000B0008403C2032B036803A603D00391049104B5 +:1000C00054045E0468047A04810FA30F8E10A30FFA +:1000D0008E10E50F08108E105D1070106A136A13F1 +:1000E000AB13AB13ED132914291629164114291645 +:1000F00038153815031629162916171600000000A2 +:1001000000000000000000000000000000000000EF +:100110000AC80BC80CC80DC80EC80FC810C811C833 +:100120000D200C200B300A30E00000001E001400EF +:1001300004001D0000074E001F001A0016001B00DF +:10014000000F4C002000080007000600E2002A0013 +:100150002100150009001900E3004B0022001700E0 +:100160000A00050000004A0029002F0000002B02B1 +:1001700000004D002D00300000002B00000050005A +:1001800023001C000B00110000004F002400180089 +:100190000D001000E700520025000C000E00360094 +:1001A000E6002C00260012000F003700000F280088 +:1001B00027001300330038000007510011201020E1 +:1001C0000F200E30E40000000100010001000100DA +:1001D000E00000003A001E02200222020007510047 +:1001E0003B001F0221022302000F28003C002F02C7 +:1001F00026022F00E2002C003D00300227023000D2 +:10020000E30052003E002402350035020000500099 +:100210002900360200002B0000004F002D0037029D +:1002200000002B0200004A003F003102380031007C +:1002300000004D004000240021001E0027784B00E4 +:100240004100250022001F0037744C0042002600A8 +:10025000230020002E7F2A004300380025022D00B5 +:100260002E774E00010001000100010028710000FE +:100270000100010001000100E000000044006600F0 +:10028000A60000000007B50045001430F20016304B +:10029000F60000006800F000F100F100F400B60084 +:1002A00069001530F3001730F500B4006A00A900AA +:1002B000AA00A8000000B8002900F9000000FA0018 +:1002C0000000B9000000F9000000FA000000AC00D6 +:1002D0006B004600530000000000AB006C004A00B9 +:1002E00050004D004978A9006D00520051005100A6 +:1002F0004C74AE006E004B004F004E00000FAD007E +:100300006F00B100B30000000007AA000100010067 +:1003100001000100E40000000100010001000100F3 +:10032000010000002900010001000100010001009E +:1003300001000100010001000100010001000100B5 +:1003400001000100010001000100010001000100A5 +:100350000100010001000100010001000000010096 +:100360000100010000000100000001000100010087 +:100370000000010000000100010001000100010077 +:100380000000010001000100010001000100010066 +:100390000100010001000100010001000100010055 +:1003A00001000100010001002A000100010001001C +:1003B00001000100010001000100E5000100000052 +:1003C00016034500720067006F0044006F0078005C +:1003D000200045005A000000160345007200670027 +:1003E0006F0044006F007800200045005A000000B4 +:1003F0000403090409026D00040100A0FA090400C5 +:10040000000103010100092111010001223F000741 +:1004100005810308000A0904010001030102000923 +:100420002111010001224D000705820308000A097D +:10043000040200010300000009211101000122361D +:10044000000705830308000A0904030001030000F4 +:100450000009211101000122390007058403100061 +:10046000011201100100000008EDFE071301000158 +:1004700002000105010906A101050719E029E71598 +:1004800000250195087501810205081901290595C6 +:100490000575019102950175039101050719002960 +:1004A0007715002501957875018102C00501098045 +:1004B000A101850216010026B7001A01002AB70023 +:1004C000751095018100C0050C0901A10185031675 +:1004D0000100269C021A01002A9C027510950181D8 +:1004E00000C005010902A1010901A10005091901C6 +:1004F00029051500250195057501810295017503F2 +:1005000081010501093009311581257F95027508A2 +:10051000810609381581257F950175088106050C2E +:100520000A38021581257F950175088106C0C0052E +:10053000010906A101050719E029E7150025019524 +:1005400008750181029501750881010508190129C5 +:10055000059505750191029501750391010507192E +:100560000029FF150025FF950675088100C00000D1 +:10057000000000000000000000010204060A0F173E +:10058000202C3A4A5D71879DB3C7DAE9F5FCFFFC80 +:10059000F5E9DAC7B39D87715D4A3A2C20170F0A37 +:1005A0000604020100000000000000000000112409 +:1005B0001FBECFEFDAE0DEBFCDBF04B603FE24C01E +:1005C0008091F6019091F701A091F801B091F901A5 +:1005D0008730904BA740B04BB9F41092F6011092BF +:1005E000F7011092F8011092F90114BE84B7877FC9 +:1005F00084BF88E10FB6F894809360001092600089 +:100600000FBEE0E0FFE3099511E0A0E0B1E0E4EC0B +:10061000FAE402C005900D92A433B107D9F721E0A6 +:10062000A4E3B1E001C01D92A63FB207E1F70E942A +:10063000900B0C9460250C940000DC01462F50E0D8 +:100640004A5051094E30510508F06BC14A5A5F4F6C +:10065000FA010C94102512962C91129780913A0170 +:1006600090913B012223F9F015962C91207FD9F42B +:1006700001968330910510F082E090E090933B0169 +:1006800080933A0180913A0190913B01823091052B +:1006900029F489E30E94F21189E30EC0019709F061 +:1006A00040C181EEFAC0019790933B0180933A01DB +:1006B000892B09F036C181EE0E94BA1232C112961E +:1006C0002C918091380190913901222379F090C0CA +:1006D00012963C91129715962C9180913801909129 +:1006E0003901207F31117AC009F09FC001979093A2 +:1006F000390180933801892B09F013C180913501AC +:1007000081110FC181E067C012963C911297159636 +:100710002C918091360190913701207F332361F035 +:10072000222309F491C0009709F08EC02091340172 +:1007300021118AC08BE2B1C02223B1F00097A1F44D +:1007400020913401211110C08BE2B6CF12963C915A +:10075000129715962C918091360190913701207F48 +:10076000311168C009F08DC00197909337018093D3 +:100770003601892B09F0D5C0809134018111D1C097 +:1007800082E029C012969C91129715968C9199231C +:10079000B1F0982F907F79F080FD0DC085E37DC08A +:1007A00012969C91129715968C91992379F0982F17 +:1007B000907F09F06FC083E00E94BD1AB2C0982FED +:1007C000907F41F080FD06C085E376CF982F907F23 +:1007D00009F066C083E00E94DE1AA3C0222341F024 +:1007E000009731F420913501211102C084E355C0F6 +:1007F00001968330910510F082E090E090933901EA +:1008000080933801809138019091390182309105AF +:1008100029F0019709F085C081E0CECF80913501A4 +:1008200091E08927809335017CC0009709F05ECF65 +:1008300084E342CF222341F0009731F42091340128 +:10084000211102C081E329C001968330910510F087 +:1008500082E090E0909337018093360180913601D9 +:10086000909137018230910529F0019709F059C024 +:1008700082E0A2CF8091340191E0892780933401F6 +:1008800050C0009709F070CF2091340121116CCF36 +:1008900081E312CF80FD8FCF8EE20E94F21141C022 +:1008A00080FD98CF8EE208CF12968C91882319F0A4 +:1008B00080EF90E013C080EF90E017C012968C910B +:1008C000882319F080EF90E01BC080EF90E021C0FA +:1008D00012968C91882339F081EF90E00E94B31F2B +:1008E00082EF90E011C081EF90E00E941B2082EF28 +:1008F00090E013C012968C91882349F081EF90E02C +:100900000E94B31F83EF90E00E94B31F08C081EFE5 +:1009100090E00E941B2083EF90E00E941B200E9429 +:10092000A02080E090E008950895E0910E01F091FC +:100930000F018081827219F0259A2D9A06C00E94BB +:10094000C91081FDF9CF25982D988091B90181FFBB +:1009500003C0269A2E9A02C026982E988091B9013B +:1009600082FF03C0279A2F9A089527982F980895F9 +:100970000C94950456985E9825982D9826982E9854 +:1009800027982F988FEF90E09093890080938800AC +:1009900090938B0080938A0090938D0080938C00BD +:1009A000259A2D9A2FEF80E792E0215080409040C9 +:1009B000E1F700C00000269A2E9A2FEF80E792E020 +:1009C000215080409040E1F700C00000279A2F9A04 +:1009D0002FEF80E792E0215080409040E1F700C087 +:1009E000000025982D982FEF80E792E0215080405D +:1009F0009040E1F700C0000026982E982FEF80E786 +:100A000092E0215080409040E1F700C0000027981C +:100A10002F9856985E9825982D9826982E98279866 +:100A20002F98089589EA8093800089E0809381005F +:100A300024982C983F988AB18F748AB96E98479AF7 +:100A40008BB1806B8BB9769A0E94BA040C94940493 +:100A500080E28093000180913C0181110EC00E94D0 +:100A6000770581E080933C012FEF83ED90E32150E7 +:100A700080409040E1F700C0000080E40E947D05C6 +:100A80008093000181112EC00E94A7058093000170 +:100A9000811128C00E94A70580930001811122C006 +:100AA0008FE30E94A7058093000181111BC00E9463 +:100AB0009F0580E40E947D0580930001811112C092 +:100AC0008CE00E94A7058093000181110BC00E9459 +:100AD000A70580930001811105C08FE30E94A7053F +:100AE000809300010E949F0580910001089510925B +:100AF000B9008AE08093B800089594EA9093BC000E +:100B00009091BC0097FFFCCF9091B900987F9830EE +:100B100021F0903111F081E008958093BB0084E8CA +:100B20008093BC008091BC0087FFFCCF8091B9000E +:100B3000887F883111F0803471F780E0089584E96E +:100B40008093BC008091BC0084FDFCCF089580930D +:100B5000BB0084E88093BC008091BC0087FFFCCF81 +:100B60009091B900987F81E0983209F480E008956F +:100B700084E88093BC008091BC0087FFFCCF80910B +:100B8000BB00089580910001811115C080E40E948E +:100B90007D058093000181110CC082E10E94A705B0 +:100BA00080930001811105C08FEF0E94A7058093FB +:100BB00000010E949F0584B1807F84B985B1807F48 +:100BC00085B98AB1837F8AB98BB1837F8BB93E980F +:100BD000469808950E942805809300010E94C2054E +:100BE00080B38C7080BB81B3836F81BBECE4F1E098 +:100BF000AEE3B1E011921D9281E0EA35F807D1F73A +:100C00000C941205BF92CF92DF92EF92FF920F9356 +:100C10001F93CF93DF9380910001882379F0809117 +:100C20003D018F5F80933D01811108C00E9428051E +:100C300080930001811102C00E94BA040EE311E00A +:100C4000C0E0D0E0DD24D39482E0C82EEE24E3940B +:100C5000F12CC73000F580910001811162C080E461 +:100C60000E947D0580930001811112C082E10E94E3 +:100C7000A7058093000181110BC0C7010C2E01C094 +:100C8000880F0A94EAF780950E94A70580930001D7 +:100C90000E949F0546C0CA30A1F028F4C83059F020 +:100CA000C93061F005C0CC3089F070F0CD3089F0EA +:100CB000209A289810C0219A29980DC0229A2A9823 +:100CC0000AC0239A2B9807C0529A01C0539A5B9886 +:100CD00002C03E9A4698E0EAEA95F1F78FB1799919 +:100CE0005AC092E081708D25892B7C9B02C090E0D8 +:100CF00001C094E0892B7D9B02C090E001C098E088 +:100D0000892B7E9B02C090E001C090E1892B9FB1AE +:100D10009095991F9927991F9295990F907E892BED +:100D20000FC08091000181114BC080E40E947D05BD +:100D300080930001882389F1B12C0E949F058B2D9F +:100D4000F8019081981719F08083C09201010E94E8 +:100D5000C20521960F5F1F4FCE30D10509F079CF24 +:100D600080910101882371F18150809301018823D2 +:100D700039F08FE99FE00197F1F700C0000022C031 +:100D8000ACE4B1E0EEE3F1E081918D9391E0EC34DD +:100D9000F907D1F717C090E0A5CF83E10E94A7051E +:100DA000809300018111C8CF81E40E947D0580936A +:100DB00000018111C1CF0E94B805B82EB094BDCFFB +:100DC00080E0BECF0E94B80481E0DF91CF911F91F7 +:100DD0000F91FF90EF90DF90CF90BF900895E82F94 +:100DE000F0E0E45BFE4F808108950895089596E059 +:100DF000799FF001112494E5899FE00DF11D1124E4 +:100E0000E60FF11DEE0FFF1FE05EFE4F85919491FE +:100E10000895880F991F84589040FC018591949102 +:100E20000895880F991F84509F4FFC0185919491DC +:100E300008950F931F93CF93DF93EC01811520E367 +:100E4000920730F5811530E2930708F0B1C08B3B73 +:100E5000910588F4883A910508F058C0853A9105C3 +:100E600008F049C08430910508F043C081309105F5 +:100E700009F4B2C1AEC18F3F910509F0D0F5803FB2 +:100E8000910508F092C0805E9109089790F1A1C188 +:100E9000C11581E5D807A8F4C23090E5D90708F05C +:100EA0009FC0C11520E5D20709F486C008F092C0A2 +:100EB000C11580E4D80708F08CC18E011127106C91 +:100EC000CCC1C11590E8D90758F4C11520E7D20765 +:100ED00008F07BC1C11530E6D30708F423C179C1FE +:100EE000C11580E9D80708F074C18E011F70106A1F +:100EF000B4C18E01B2C1853A910509F470C1863A38 +:100F0000910509F46FC103E810E4A7C1883A91057F +:100F100009F46BC1893A910509F46AC18A3A9105CD +:100F200009F469C18B3A910509F468C18C3A9105BD +:100F300009F467C18D3A910509F466C1803B9105BA +:100F400009F465C18E3A910509F464C18F3A91059F +:100F500009F463C1813B910509F462C1823B9105AB +:100F600009F461C1833B910509F460C1843B91059B +:100F700009F45FC1853B910509F45EC1863B91058B +:100F800009F45DC1873B910509F45CC1883B91057B +:100F900009F45BC1893B910509F45AC18A3B91056B +:100FA00009F059C10AE216E458C18C01106555C117 +:100FB0009F700E94110752C10E944C169FEF24E3BC +:100FC0003CE0915020403040E1F700C000000E941A +:100FD000641D43C18091D50181608093D5013DC1DD +:100FE0000E940C1F811102C00E94F21E0E94291F44 +:100FF00090E09093F6018093F501C23080E5D80728 +:1010000021F48091F501816086C0C43090E5D90754 +:1010100021F48091F50182607EC0C63020E5D207C0 +:1010200021F48091F501846076C0C83030E5D307A3 +:1010300019F48091F50127C0CA3080E5D80721F462 +:101040008091F501806167C0CC3090E5D90721F42B +:101050008091F50180625FC0CE3020E5D20721F497 +:101060008091F501806457C0C03130E5D30721F489 +:101070008091F50180684FC0C23180E5D80729F41E +:101080008091F5018460886046C0C33090E5D9073F +:1010900021F48091F5018E7F3EC0C53020E5D20756 +:1010A00021F48091F5018D7F36C0C73030E5D3073C +:1010B00021F48091F5018B7F2EC0C93080E5D807DF +:1010C00019F48091F50126C0CB3090E5D90721F4C1 +:1010D0008091F5018F7E1FC0CD3020E5D20721F42D +:1010E0008091F5018F7D17C0CF3030E5D30721F413 +:1010F0008091F5018F7B0FC0C13180E5D80721F4C5 +:101100008091F5018F7707C0C331D04531F48091CC +:10111000F5018B7F877F8093F5018091F5010E9417 +:101120002D1F9BC08D2F99278F7099278130910596 +:10113000E9F48E01037011279C0102C0220F331FB6 +:101140000A95E2F789011C68CE0164E0880F991FB7 +:101150006A95E1F788279370082B192B73E0CC0F61 +:10116000DD1F7A95E1F7C076DD272CC0823091052E +:1011700029F41C2F0027016F106A6FC0833091057E +:1011800061F4CE018370992701E010E002C0000FE6 +:10119000111F8A95E2F71C680EC0049709F05DC024 +:1011A000CE018370992701E010E002C0000F111FEB +:1011B0008A95E2F71A6843E0CC0FDD1F4A95E1F704 +:1011C000C07ED7700C2B1D2B48C08E011F70106283 +:1011D00044C000E010E041C001E010E03EC001E882 +:1011E00010E43BC002E810E438C002EE14E435C05D +:1011F00009EE14E432C00AEE14E42FC005EB14E447 +:101200002CC006EB14E429C007EB14E426C00CEC58 +:1012100014E423C00DEC14E420C003E815E41DC061 +:101220000AE815E41AC002E915E417C004E915E458 +:1012300014C001E216E411C003E216E40EC004E299 +:1012400016E40BC005E216E408C006E216E405C089 +:1012500007E216E402C000E014E4C801DF91CF9178 +:101260001F910F91089596E0799FF001112494E564 +:10127000899FE00DF11D1124E60FF11DEE0FFF1FF8 +:10128000E05EFE4F85919491803E9105E0F4803CB4 +:10129000910558F58133910509F46FC048F48932FE +:1012A000910509F463C08A32910509F46DC072C0DA +:1012B00089339105E9F082389105D1F085339105A4 +:1012C00009F44DC067C0833E910581F138F4803E3A +:1012D0009105B9F0823E9105D9F05CC0863E91053A +:1012E00061F1873E9105A1F155C00E94090708955B +:1012F0002091F50120FD02C021FF4CC080EE90E05E +:1013000049C08091F50180FFF9CF89E390E042C0A8 +:101310008091F50182FF0EC08091F50184FF03C02A +:1013200080E090E037C083EE90E034C08091F5011A +:1013300082FFF2CF82EE90E02DC08091F50183FF15 +:101340000BC08091F50184FDEBCF87EE90E022C0C9 +:101350008091F50183FFF5CF86EE90E01BC0809170 +:10136000F50185FF07C089E290E014C08091F50186 +:1013700085FFF9CF85E390E00DC08091F50186FFF0 +:1013800007C08AE290E006C08091F50186FFF9CFA0 +:1013900081E390E00E941907089508950C94CD0907 +:1013A00080916A010895CF93DF9300D01F92CDB74B +:1013B000DEB72091EC01243019F523E029839B83CB +:1013C0008A832093E9008FEF9091E800815095FD8A +:1013D00006C095ED9A95F1F700008111F5CF809147 +:1013E000E80085FF0DC040E050E063E070E0CE0112 +:1013F00001960E943D0C8091E8008E778093E80072 +:101400000F900F900F90DF91CF910895CF93DF93BE +:1014100000D01F92CDB7DEB72091EC01243021F52A +:1014200022E029839B838A8383E08093E9008FEF06 +:101430009091E800815095FD06C095ED9A95F1F7E1 +:1014400000008111F5CF8091E80085FF0DC040E0DC +:1014500050E063E070E0CE0101960E943D0C809167 +:10146000E8008E778093E8000F900F900F90DF9147 +:10147000CF9108952091EC012430F1F422E02093E3 +:10148000E9002FEF3091E800215035FD06C035ED21 +:101490003A95F1F700002111F5CF2091E80025FFE2 +:1014A0000BC040E050E065E070E00E943D0C809190 +:1014B000E8008E778093E8000895CF93DF93EC01E6 +:1014C0008091EC01843009F046C090910C01992381 +:1014D000D9F090910D019923B9F08093E9008FEF35 +:1014E0009091E800815095FD06C095E19A95F1F73D +:1014F00000008111F5CF8091E80085FF2CC040E00D +:1015000050E060E170E017C081E08093E9008FEF68 +:101510009091E800815095FD06C095ED9A95F1F700 +:1015200000008111F5CF8091E80085FF14C040E0F4 +:1015300050E068E070E0CE010E943D0C8091E80030 +:101540008E778093E80080E1FE01AAE5B1E001908A +:101550000D928A95E1F7DF91CF9108958091EB018B +:10156000811109C00E94CF0D0E942C0E8091E200D3 +:1015700084608093E20008951092EB01089508952D +:101580000C9488230E94FB1C0E948E230E94C91089 +:101590000C94CE0942E061EC81E00E94490D42E0EA +:1015A00061EC82E00E94490D42E061EC83E00E9420 +:1015B000490D42E161EC84E00C94490D8091EE010B +:1015C000833009F455C030F4813071F0823009F471 +:1015D0008EC008958A3009F47AC08B3009F460C057 +:1015E000893009F09CC020C08091ED01813A09F05A +:1015F00096C08091E800877F8093E8008091F10198 +:101600009091F201892B21F060E080E090E003C02E +:1016100060E18AE591E070E00E94860C8091E8002C +:101620008B778093E80008958091ED01813209F075 +:1016300076C08091F1019091F201009719F0039723 +:1016400009F06DC08091E800877F8093E800809169 +:10165000E80082FD05C08091EC018111F8CF5FC0E8 +:101660008091F10080936A018091E8008B7753C0EC +:101670008091ED01813A09F052C08091F101909181 +:10168000F201892B09F04BC08091E800877F80939D +:10169000E8008091E80080FFFCCF80910C0136C00B +:1016A0008091ED018132D9F58091F1019091F201A3 +:1016B000892BA9F58091E800877F8093E8000E943C +:1016C0007E0D8091EF0180930C010C944C1680915B +:1016D000ED01813221F58091E800877F8093E80059 +:1016E0000E947E0D8091F00180936B01089580919E +:1016F000ED01813AA1F48091E800877F8093E800B2 +:101700008091E80080FFFCCF80916B018093F10015 +:101710008091E8008E778093E8000C947E0D089508 +:1017200084B7877F84BF88E10FB6F8948093600008 +:10173000109260000FBE90E080E80FB6F89480939E +:101740006100909361000FBE0E9418110E94CF0D9E +:101750000E942C0E8091E20084608093E2007894D5 +:101760000E94A7100E941A1182E091E00E94C4100A +:101770000E9476238091EC01853069F40E94BB1CA5 +:101780008091EA018823B1F30E94E61C882391F33B +:101790000E94270CEFCF0E942011ECCF292F332776 +:1017A00023303105A9F06CF42130310509F442C031 +:1017B0002230310509F043C08DE690E024EF33E09C +:1017C00042C021323105C9F02232310519F137C04A +:1017D00099278130910541F08230910541F0892BA4 +:1017E00071F5E0EFF3E005C0E8EDF3E002C0E0ECF6 +:1017F000F3E0849190E09F0126C0643000F5E62F6D +:10180000F0E0EE0FFF1FEE5DFE4F2081318189E099 +:1018100090E019C0643098F4E62FF0E0DF01AA0FE1 +:10182000BB1FA65EBE4F2D913C91EA5EFE4F8081AC +:1018300090E009C082E190E021E634E004C080E05D +:1018400090E020E030E0FA0131832083089580E1C8 +:1018500089BD82E189BD09B400FEFDCF8091D80029 +:101860008F7D8093D8008091E00082608093E000BB +:101870008091E00081FDFCCF0895CF92DF92EF923E +:10188000FF920F931F93CF93DF937C018B01EA01AB +:101890000E949F0D811131C0209731F0888199817C +:1018A000081B190BE80EF91EC12CD12C01151105CE +:1018B00019F18091E80085FD14C08091E8008E77D1 +:1018C0008093E800209741F0888199818C0D9D1DBF +:1018D0009983888385E011C00E949F0D882331F38E +:1018E0000CC0F70181917F018093F1000150110933 +:1018F000FFEFCF1ADF0ADACF80E0DF91CF911F919F +:101900000F91FF90EF90DF90CF9008952091F30119 +:101910003091F4012617370748F06115710539F445 +:101920002091E8002E772093E80001C0B901FC0166 +:1019300020E061157105B9F18091EC01882309F46B +:1019400040C0853009F43FC08091E80083FD3DC070 +:101950008091E80082FF06C08091E80082FF26C0E7 +:1019600080E008958091E80080FFE3CF2091F300AC +:101970008091F20090E0922B6115710551F0883052 +:10198000910538F421912093F1006150710901967D +:10199000F3CF21E0089709F020E08091E8008E77EE +:1019A0008093E800C6CF2111C7CFD6CF8091EC013C +:1019B000882339F0853039F08091E80083FFCCCF5F +:1019C00004C082E0089583E0089581E008952091A5 +:1019D000F3013091F4012617370748F061157105BE +:1019E00039F42091E8002E772093E80001C0B90176 +:1019F000FC0120E061157105C1F18091EC018823A3 +:101A000009F441C0853009F440C08091E80083FDAD +:101A10003EC08091E80082FF06C08091E80082FF0E +:101A200027C080E008958091E80080FFE3CF2091F7 +:101A3000F3008091F20090E0922B6115710559F04E +:101A40008830910540F424912093F1003196615043 +:101A500071090196F2CF21E0089709F020E080910A +:101A6000E8008E778093E800C5CF2111C6CFD5CF8F +:101A70008091EC01882339F0853039F08091E800BD +:101A800083FFCBCF04C082E0089583E0089581E016 +:101A90000895982F973058F59093E900981739F0EA +:101AA0007091EC002091ED005091F00003C0242FC4 +:101AB000762F50E021FF19C03091EB003E7F30932C +:101AC000EB003091ED003D7F3093ED003091EB0065 +:101AD00031603093EB007093EC002093ED00509355 +:101AE000F0002091EE0027FF07C09F5FD3CF8F70DB +:101AF0008093E90081E0089580E008958091ED01F0 +:101B000087FD05C08091E80080FF0EC012C0809163 +:101B1000E80082FD05C08091EC018111F8CF0895A5 +:101B20008091E8008B7708C08091EC018111EACFA9 +:101B300008958091E8008E778093E8000895809161 +:101B4000E4009091E50045E62091EC0020FF21C0E3 +:101B50002091E80020FD21C02091EC01222389F092 +:101B6000253089F02091EB0025FD0FC02091E40085 +:101B70003091E5002817390739F3415041F0C90188 +:101B8000E3CF82E0089583E0089581E0089584E042 +:101B900008952091E80022FFDFCF80E008950E94A1 +:101BA0003D0E0E94450EE0EEF0E080818160808372 +:101BB000E8EDF0E080818F77808319BCA7EDB0E07D +:101BC0008C918E7F8C9380818F7E80831092EB012D +:101BD00008950F931F93CF93DF930E943D0E0E94B1 +:101BE000450EC8EDD0E088818F7788838881806832 +:101BF000888388818F7D888319BC1092EC011092B4 +:101C0000E8011092EA011092E90100EE10E0F801FB +:101C100080818B7F808388818160888342E060E05F +:101C200080E00E94490DE1EEF0E080818E7F8083AC +:101C3000E2EEF0E080818160808380818860808333 +:101C4000F80180818E7F8083888180618883DF9125 +:101C5000CF911F910F910895E8EDF0E080818F7E84 +:101C60008083E7EDF0E080818160808384E082BF43 +:101C700081E08093EB010C94E90DE8EDF0E08081C8 +:101C80008E7F80831092E20008951092DA00109205 +:101C9000E10008951F920F920FB60F9211242F9317 +:101CA0003F934F935F936F937F938F939F93AF93E4 +:101CB000BF93EF93FF938091E10082FF0BC080916F +:101CC000E20082FF07C08091E1008B7F8093E100FA +:101CD0000E94A6108091DA0080FF1FC08091D8007A +:101CE00080FF1BC08091DA008E7F8093DA008091A4 +:101CF000D90080FF0DC080E189BD82E189BD09B4B2 +:101D000000FEFDCF81E08093EC010E94AE0A05C089 +:101D100019BC1092EC010E94BC0A8091E10080FF86 +:101D200019C08091E20080FF15C08091E2008E7F93 +:101D30008093E2008091E20080618093E2008091D4 +:101D4000D80080628093D80019BC85E08093EC01B4 +:101D50000E94C00A8091E10084FF30C08091E200BF +:101D600084FF2CC080E189BD82E189BD09B400FEF9 +:101D7000FDCF8091D8008F7D8093D8008091E100C5 +:101D80008F7E8093E1008091E2008F7E8093E2005D +:101D90008091E20081608093E2008091E8018823D5 +:101DA00011F084E007C08091E30087FF02C083E068 +:101DB00001C081E08093EC010E94C20A8091E100A1 +:101DC00083FF29C08091E20083FF25C08091E1005C +:101DD000877F8093E10082E08093EC011092E8011C +:101DE0008091E1008E7F8093E1008091E2008E7F00 +:101DF0008093E2008091E20080618093E20042E003 +:101E000060E080E00E94490D8091F000886080933E +:101E1000F0000E94BF0AFF91EF91BF91AF919F9197 +:101E20008F917F916F915F914F913F912F910F9083 +:101E30000FBE0F901F9018951F920F920FB60F9222 +:101E400011242F933F934F935F936F937F938F93BF +:101E50009F93AF93BF93CF93EF93FF93C091E9000C +:101E6000CF708091EC001092E9008091F000877FA4 +:101E70008093F00078940E94580F1092E9008091AE +:101E8000F00088608093F000C093E900FF91EF912B +:101E9000CF91BF91AF919F918F917F916F915F9102 +:101EA0004F913F912F910F900FBE0F901F9018955B +:101EB0001F93CF93DF93CDB7DEB7AA970FB6F894F1 +:101EC000DEBF0FBECDBFEDEEF1E08091F10081935A +:101ED00021E0E53FF207C9F70E94DE0A8091E800A1 +:101EE00083FF1CC12091ED013091EE01832F90E022 +:101EF0008A30910508F012C1FC01EC59FF4F0C9497 +:101F00001025203881F0223809F008C18091F101B4 +:101F10008F708093E9008091EB0085FB882780F922 +:101F20001092E90006C08091E9019091EA019111B7 +:101F300082609091E800977F9093E8008093F10091 +:101F40001092F100C5C0822F8D7F09F0E7C02223D7 +:101F500019F0223061F0E2C08091EF01813009F088 +:101F6000DDC0333009F080E08093EA0128C0809121 +:101F7000EF01811124C02091F1012F7009F4CEC02E +:101F80002093E9008091EB0080FF19C08091EB0065 +:101F9000333011F4806211C080618093EB0081E0E6 +:101FA00090E0022E01C0880F0A94EAF78093EA00BD +:101FB0001092EA008091EB0088608093EB00109211 +:101FC000E9008091E800877F86C02111A7C01091A9 +:101FD000EF011F778091E3008078812B8093E300ED +:101FE0008091E800877F8093E8000E947E0D8091B9 +:101FF000E80080FFFCCF8091E30080688093E300DD +:10200000112311F083E001C082E08093EC0186C0CF +:102010002058223008F082C08091EF019091F001A9 +:102020008C3D23E0920779F583E08A838AE28983F5 +:102030004FB7F894DE01139620E03EE051E2E32F23 +:10204000F0E050935700E49120FF03C0E295EF7059 +:102050003F5FEF708E2F90E0EA3010F0C79601C01E +:10206000C0968D939D932F5F243149F74FBF809188 +:10207000E800877F8093E8006AE270E0CE01019675 +:102080000E94860C14C0AE014F5F5F4F6091F1015A +:102090000E94CE0B009709F441C02091E800277FF1 +:1020A0002093E800BC0189819A810E94E70C80910D +:1020B000E8008B778093E80031C0203879F5809173 +:1020C000E800877F8093E8008091E8018093F10029 +:1020D0008091E8008E778093E8000E947E0D1EC0FC +:1020E00021111CC09091EF019230C0F48091E80062 +:1020F000877F8093E8009093E8010E947E0D809195 +:10210000E801811104C08091E30087FF02C084E0F0 +:1021100001C081E08093EC010E94CA0A8091E8002E +:1021200083FF0AC08091E800877F8093E800809158 +:10213000EB0080628093EB00AA960FB6F894DEBFA6 +:102140000FBECDBFDF91CF911F9108950895CF931A +:102150008091EC018823B1F08091E9008F7090911B +:10216000EC0090FF02C090E801C090E0C92FC82B9E +:102170001092E9008091E80083FD0E94580FCF7013 +:10218000C093E900CF9108959093710180937001FD +:102190000895E0917001F0917101309721F0019064 +:1021A000F081E02D099480E00895E0917001F091B4 +:1021B0007101309721F00280F381E02D0994089598 +:1021C000E0917001F0917101309721F00480F58168 +:1021D000E02D0994089520916E0130916F018217CE +:1021E000930771F090936F0180936E01E0917001FD +:1021F000F0917101309721F00680F781E02D09946C +:10220000089520916C0130916D018217930771F050 +:1022100090936D0180936C01E0917001F0917101D8 +:10222000309721F00084F185E02D099408950895F8 +:102230000C9417110E94011D0E94EA050C94C71D01 +:10224000CF92DF92EF92FF920F931F93CF93DF9382 +:10225000CDB7DEB72B970FB6F894DEBF0FBECDBF5C +:102260000E94020633E7E32E31E0F32E00E010E097 +:10227000C02E802F0E94EF06F701D1907F01D82653 +:10228000B1F40F5F1F4F0E30110591F78FEF898367 +:102290008A831B820E940A1D8160782F9D838C8314 +:1022A00049815A816B818D810E94C31141C09091F7 +:1022B000D50191FF04C08B870E94F5068B8520E035 +:1022C00030E04D2D50E0922FBA01022E02C07595DC +:1022D00067950A94E2F760FF25C02E83CF82EE2433 +:1022E000E394F12C02C0EE0CFF1C9A95E2F790E00B +:1022F0008E219F2121E0892B09F420E028870E946C +:102300000A1D8160782F9A8789874E815F81688551 +:102310008A850E94C311F801ED58FE4F80818E25F9 +:10232000808306C02F5F3F4F2630310561F6A9CF6D +:102330000E94AB20109172010E94C9101817A1F0E1 +:102340000E94C910809372012B960FB6F894DEBFDD +:102350000FBECDBFDF91CF911F910F91FF90EF90F6 +:10236000DF90CF900C94CE092B960FB6F894DEBF79 +:102370000FBECDBFDF91CF911F910F91FF90EF90D6 +:10238000DF90CF900895CF93DF93CDB7DEB72B9733 +:102390000FB6F894DEBF0FBECDBF4F835887698755 +:1023A0007A878B87DE01119686E0FD0111928A956E +:1023B000E9F785E0FE01379601900D928A95E1F7E5 +:1023C00049815A816B817C818D819E810E9418197F +:1023D0002B960FB6F894DEBF0FBECDBFDF91CF9125 +:1023E00008950895CF93C82F882309F4C1C0823877 +:1023F00059F40E94C91081FDBBC089E30E94C21B31 +:102400000E948C1C89E30CC0833879F40E94C910A7 +:1024100080FDAEC083E50E94C21B0E948C1C83E538 +:102420000E94021CCF910C948C1C843859F40E9499 +:10243000C91082FD9DC087E40E94C21B0E948C1CB3 +:1024400087E4EECF8CEF8C0F813A48F48C2F0E94FA +:10245000DE2281118DC08C2F0E94C21BE3CF80E24F +:102460008C0F883048F4C77081E001C0880FCA958E +:10247000EAF70E94431CD6CF8BE58C0F833078F4AB +:10248000C53A29F0C63A31F482E890E005C081E807 +:1024900090E002C083E890E0CF910C94EB1088E5C7 +:1024A0008C0F833108F064C0C83A39F1C93A41F160 +:1024B000CA3A49F1CB3A51F1CC3A59F1CD3A61F1EE +:1024C000C03B69F1CE3A71F1CF3A79F1C13B81F16C +:1024D000C23B89F1C33B91F1C43B99F1C53BA1F1EA +:1024E000C63BA9F1C73BB1F1C83BB9F1C93BC1F14A +:1024F000CA3BC9F58AE292E038C082EE90E035C06E +:1025000089EE90E032C08AEE90E02FC085EB90E03B +:102510002CC086EB90E029C087EB90E026C08CECC5 +:1025200090E023C08DEC90E020C083E891E01DC0D6 +:102530008AE891E01AC082E991E017C084E991E04D +:1025400014C081E292E011C083E292E00EC084E206 +:1025500092E00BC085E292E008C086E292E005C0FE +:1025600087E292E002C080E090E0CF910C940111EC +:10257000CF910895882309F44BC0823859F40E9402 +:10258000C91081FF45C089E30E94C21B0E948C1CB8 +:1025900089E30CC0833871F40E94C91080FF38C0F1 +:1025A00083E50E94C21B0E948C1C83E50E94021CD2 +:1025B0000C948C1C843859F40E94C91082FF28C0E6 +:1025C00087E40E94C21B0E948C1C87E4EFCF9CEF23 +:1025D000980F913A58F390E2980F983050F4877022 +:1025E00091E001C0990F8A95EAF7892F0E94491C52 +:1025F000DFCF9BE5980F933020F480E090E00C94BF +:10260000EB10885A833120F480E090E00C940111A3 +:102610000895882321F00E94431C0C948C1C08957B +:10262000882321F00E94491C0C948C1C0895CF92A1 +:10263000DF92EF92FF920F931F93CF93DF93CDB76B +:10264000DEB728970FB6F894DEBF0FBECDBF8C0162 +:1026500085E0F801DE01119601900D928A95E1F76F +:10266000F801D080E180F280558152955F7023811E +:102670003481232B39F0FFEFEF1206C081E0DF1227 +:1026800003C003C081E001C080E080FDE2C2C80158 +:102690005F830E94F111D982EA8269817A818F2D4C +:1026A0000E94BE1B9E8388870E94721B0E94451A4F +:1026B0004E815F816885FF2029F00E94601C68853B +:1026C0005F814E81E42FE295EF70F0E0E259FF4F19 +:1026D0000C941025842F807F142F1F70882311F0F5 +:1026E0001295107FFF20B1F0112309F467C280E238 +:1026F000860F883028F4812F68870E94431C04C00D +:10270000812F68870E94531C688568870E948C1CF3 +:10271000688554C2862F68870E94BA126885112383 +:1027200009F497C2605E812F683018F40E94491C3A +:1027300002C00E94591C28960FB6F894DEBF0FBE47 +:10274000CDBFDF91CF911F910F91FF90EF90DF9060 +:10275000CF900C948C1C242F207F842F8F702032DC +:1027600011F08295807F662319F0613019F12BC03A +:10277000FF20B1F0552309F493C1513009F090C105 +:1027800028960FB6F894DEBF0FBECDBFDF91CF9174 +:102790001F910F91FF90EF90DF90CF900C94731CDE +:1027A000552319F0513009F454C28E830E94761CCF +:1027B0008E8189C1FF2021F0523008F04AC270C1D9 +:1027C000511147C280C1FF2021F0552309F468C18F +:1027D000F5C1552309F477C105C2242F2695269506 +:1027E000237030E02115310521F021303105C9F089 +:1027F00030C2FF2021F0862F942F937002C080E01A +:1028000090E028960FB6F894DEBF0FBECDBFDF91E3 +:10281000CF911F910F91FF90EF90DF90CF900C948C +:10282000EB10FF2021F0862F942F937002C080E0E0 +:1028300090E028960FB6F894DEBF0FBECDBFDF91B3 +:10284000CF911F910F91FF90EF90DF90CF900C945C +:102850000111862FFF2019F00E94B31F02C00E94B1 +:102860001B2028960FB6F894DEBF0FBECDBFDF91B8 +:10287000CF911F910F91FF90EF90DF90CF900C942C +:10288000A020842F837009F076C0F110E2C1262FBA +:10289000229526952770220F220F862F8F70C82E23 +:1028A000D12CE12CF12C022E04C0CC0CDD1CEE1C32 +:1028B000FF1C0A94D2F764FF10C06FE070E080E064 +:1028C00090E004C0660F771F881F991F2A95D2F7E2 +:1028D000609570958095909503C060E070E0CB01A5 +:1028E000242F269526952370422F50E04230510523 +:1028F000D1F04330510559F16C297D298E299F294A +:102900004130510541F128960FB6F894DEBF0FBE55 +:10291000CDBFDF91CF911F910F91FF90EF90DF908E +:10292000CF900C946A1A6C297D298E299F292896AC +:102930000FB6F894DEBF0FBECDBFDF91CF911F91D0 +:102940000F91FF90EF90DF90CF900C94841A0E942B +:102950006A1AC701B60128960FB6F894DEBF0FBEFB +:10296000CDBFDF91CF911F910F91FF90EF90DF903E +:10297000CF900C94501AFF2019F0842F817001C061 +:102980008695882309F465C1262F22952695277000 +:10299000220F220F862F8F70C82ED12CE12CF12C04 +:1029A000022E04C0CC0CDD1CEE1CFF1C0A94D2F7D6 +:1029B00064FF10C06FE070E080E090E004C0660F3C +:1029C000771F881F991F2A95D2F76095709580957B +:1029D000909503C060E070E0CB01242F26952695EA +:1029E0002370422F50E042305105D1F04330510561 +:1029F00059F16C297D298E299F294130510541F1DA +:102A000028960FB6F894DEBF0FBECDBFDF91CF91F1 +:102A10001F910F91FF90EF90DF90CF900C943E1B91 +:102A20006C297D298E299F2928960FB6F894DEBF40 +:102A30000FBECDBFDF91CF911F910F91FF90EF900F +:102A4000DF90CF900C94581B0E943E1BC701B6012B +:102A500028960FB6F894DEBF0FBECDBFDF91CF91A1 +:102A60001F910F91FF90EF90DF90CF900C94241B5B +:102A7000603FC9F118F4603E50F49BC0623F09F416 +:102A800060C008F44AC0633F09F46FC092C0162FBB +:102A90001F70842F8F71FF2099F00E94BD1A812F23 +:102AA00028960FB6F894DEBF0FBECDBFDF91CF9151 +:102AB0001F910F91FF90EF90DF90CF900C9409132E +:102AC0000E94DE1A812F28960FB6F894DEBF0FBE43 +:102AD000CDBFDF91CF911F910F91FF90EF90DF90CD +:102AE000CF900C941013FF20A1F05111B2C0842F8D +:102AF0008F7128960FB6F894DEBF0FBECDBFDF9161 +:102B0000CF911F910F91FF90EF90DF90CF900C9499 +:102B1000031B523008F09DC0EACFFF20A1F0842FA4 +:102B20008F7128960FB6F894DEBF0FBECDBFDF9130 +:102B3000CF911F910F91FF90EF90DF90CF900C9469 +:102B4000BD1AFF2061F3842F8F7128960FB6F89479 +:102B5000DEBF0FBECDBFDF91CF911F910F91FF90D0 +:102B6000EF90DF90CF900C94DE1AFF2091F0842F2D +:102B70008F7128960FB6F894DEBF0FBECDBFDF91E0 +:102B8000CF911F910F91FF90EF90DF90CF900C9419 +:102B9000A81A28960FB6F894DEBF0FBECDBFDF91FE +:102BA000CF911F910F91FF90EF90DF90CF900C94F9 +:102BB0009E1AFF20A1F0552309F4B1CF862F289645 +:102BC0000FB6F894DEBF0FBECDBFDF91CF911F913E +:102BD0000F91FF90EF90DF90CF900C94F21155235E +:102BE00009F4B1CF862F28960FB6F894DEBF0FBE3A +:102BF000CDBFDF91CF911F910F91FF90EF90DF90AC +:102C0000CF900C94BA124F70C8010E941D032896F1 +:102C10000FB6F894DEBF0FBECDBFDF91CF911F91ED +:102C20000F91FF90EF90DF90CF900C94C5194F70EB +:102C3000C80128960FB6F894DEBF0FBECDBFDF9156 +:102C4000CF911F910F91FF90EF90DF90CF900C9458 +:102C5000F60628960FB6F894DEBF0FBECDBFDF9103 +:102C6000CF911F910F91FF90EF90DF90CF9008953B +:102C70000E94601C0E94701C0E94351C0E948C1CCB +:102C80000E944C210E94A02080E090E00E94EB1066 +:102C900080E090E00C9401110E94501C0C943816B6 +:102CA0000E94B31B292F22952F7030E02C30310564 +:102CB0004CF42A3031056CF42250310922303105B0 +:102CC00090F407C02C30310551F02F30310539F028 +:102CD0000AC0803E10F0803F31F481E0089593FBFC +:102CE000882780F9089580E00895CF93DF9300D07E +:102CF00000D01F92CDB7DEB70F900F900F900F90BE +:102D00000F90DF91CF910895CF93DF9300D000D043 +:102D100000D0CDB7DEB726960FB6F894DEBF0FBE53 +:102D2000CDBFDF91CF9108951F93CF93DF93C091D3 +:102D3000810116E080918201C81799F0D0E01C9FB4 +:102D4000F0011D9FF00D1124ED57FE4F4081518180 +:102D500062817381848195810E9484162196C77057 +:102D6000E9CFDF91CF911F9108954091B301509128 +:102D7000B4016091B5017091B6018091B701909155 +:102D8000B8010C948416CF938091B80182958F700E +:102D900009F05FC08091B501882309F45AC02091E1 +:102DA0008101A09182016091B3017091B401809181 +:102DB000B6019091B70131E06F3F09F030E0B32FD9 +:102DC000C6E02A1709F445C0009721F07F3F21F49F +:102DD0004B2F03C041E001C040E030E040FD35C072 +:102DE000C29FF001C39FF00D1124ED57FE4F4181AA +:102DF00074132BC04081641328C04281411125C047 +:102E0000438154814817590710F441505109481B18 +:102E1000590B483C5105C8F48091B8018F7080610E +:102E20008093B80186E0829FF001839FF00D11240A +:102E3000E857FE4F80818F708061808383EB91E043 +:102E40000E941713CF910C9494162F5F3F4F277059 +:102E5000B8CFCF910895CF92DF92EF92FF920F9368 +:102E60001F93CF93DF93CDB7DEB762970FB6F89479 +:102E7000DEBF0FBECDBF8C0185E0F801DE011D96DF +:102E800001900D928A95E1F7D8014C9111965C91D1 +:102E9000119712966C9112971396ED90FC901497DF +:102EA0007091B301E091B4012091B6013091B70166 +:102EB0002115310531F0EF3F31F481E07F3F19F406 +:102EC00003C081E001C080E0B82FB170CB2E80FD3F +:102ED0006CC1D090B501DD2009F4F5C0F091B801C6 +:102EE000E216F30638F0C701821B930B883C91056C +:102EF00048F09BC0209530952E0D3F1D283C310594 +:102F000008F093C08F2F807F09F052C0E51314C0E2 +:102F1000741312C0D62E61110FC0FF70F061F093D0 +:102F2000B8010E94B51683EB91E00E9417138091BF +:102F3000B801F80185836CC1EF2831F05F3F31F4AF +:102F400081E04F3F19F403C081E001C080E080FDC3 +:102F500003C081E0862701C080E0F82FF170FF2ECA +:102F600080FF1CC0809181012091820136E0821790 +:102F700009F428C190E0389FF001399FF00D112429 +:102F8000ED57FE4F7181571306C07081471303C080 +:102F90007281671303C001968770E9CFD62E66232E +:102FA00009F436C18091B80181608093B80153C0A3 +:102FB000E51308C0741306C0611104C0D80115964A +:102FC000FC93AEC04D875E878D859E856A8B0E947F +:102FD00050166A89882329F1D62E662311F1209193 +:102FE000B801822F82958F7090E002970CF460C038 +:102FF0008091B3019091B40198878F831986FB86E5 +:10300000EA862C87CE01079651C0E51731F14D872E +:103010005E878D859E856A8B0E9450166A89811114 +:103020002EC0C8010E941713A4C08F2F807F69F79C +:103030007E2DF98AE88A89890E94751683EB91E0D2 +:103040000E941713E3EBF1E086E0DF011D928A9501 +:10305000E9F70E94B516D12CDBC07413D8CF6111EB +:10306000D6CFD8011596FC93C8010E941713E3EB45 +:10307000F1E086E0DF011D928A95E9F7C9C0D62EFE +:10308000662379F22091B801822F82958F7090E0AB +:10309000029774F08091B3019091B4019A8389836F +:1030A0001B82FD82EC822E83CE0101960E941713B3 +:1030B00086E0F801A3EBB1E001900D928A95E1F76B +:1030C0000E94C3166FC0E216F30628F0C701821BE8 +:1030D000930B9C0104C0209530952E0D3F1D283C7C +:1030E000310508F052C0D62E662309F49ACFE513B5 +:1030F0002CC074132AC08091B80180FD1DC0982F88 +:1031000092959F70C9F0D80115968C9315979F30B2 +:1031100039F09F5F9295907F8F70892B15968C93D5 +:10312000C8010E94171386E0F801A3EBB1E00190FB +:103130000D928A95E1F736C086E0F801A3EBB1E085 +:1031400001900D928A95E1F763C04D875E878D856A +:103150009E850E945016882379F086E0F801A3EB43 +:10316000B1E001900D928A95E1F70E94C3160E948A +:10317000B516DD24D3944CC08091B8018160809352 +:10318000B801C8010E94171343C07E2DF98AE88A4E +:1031900089890E947516E3EBF1E086E0DF011D925C +:1031A0008A95E9F70E94B51633C0662309F439CF32 +:1031B0004D875E878D859E850E945016882309F471 +:1031C00030CFCBCF4D875E878D859E850E94B31B08 +:1031D000292F22952F7030E0223031052CF49F707A +:1031E00041F0811106C00CC0243031052CF49F70D1 +:1031F00049F4805E883020F0C8010E941713CF2C5C +:10320000DC2C06C0D80115969C91907F91F7F8CFE1 +:103210008D2D62960FB6F894DEBF0FBECDBFDF9145 +:10322000CF911F910F91FF90EF90DF90CF90089575 +:103230001F93CF93DF93CDB7DEB72C970FB6F894DB +:10324000DEBF0FBECDBF4F83588769877A878B87D4 +:103250009C87CE0107960E942B178823C1F02F81EF +:1032600038858A859B85892B31F03F3F11F080E0BE +:1032700003C02F3FE1F781E0811147C04F8158859E +:1032800069857A858B859C850E9484163EC086E080 +:10329000FE013796DE01119601900D928A95E1F7B5 +:1032A000FF81E8854A855B854115510531F0EF3F87 +:1032B00031F481E0FF3F19F403C081E001C080E0F8 +:1032C00080FD23C02091820130E0C9010196877002 +:1032D00099276091810170E086179707F1F1F983D2 +:1032E000EA835D834C8396E0929FD001939FB00D5B +:1032F0001124AD57BE4FFE01319601900D929A9563 +:10330000E1F7809382010E94941616E0809181017A +:1033100090918201891779F1189FC00111248D576E +:103320009E4F0E942B17882331F1E09181011E9F4F +:10333000F0011124ED57FE4F40815181628173816C +:10334000848195810E9484168091810190E001968C +:103350008770992780938101D9CF0E944C161092D3 +:10336000820110928101E3EBF1E086E0DF011D9222 +:103370008A95E9F7CACF2C960FB6F894DEBF0FBE38 +:10338000CDBFDF91CF911F910895EF92FF920F93E0 +:103390001F93CF93DF93FC01009709F46FC0F12CCA +:1033A000EE24E394EF0121968491843740F4843035 +:1033B00008F055C0813081F0823021F15FC085373F +:1033C00009F447C0C0F19CE7980F903708F056C049 +:1033D0008F770E94BA1245C08F010E5F1F4FFE010A +:1033E000849190E2980F983050F48770FE2D01C0C0 +:1033F000FF0F8A95EAF78F2F0E94631C15C00E9469 +:10340000F21114C08F010E5F1F4FFE01849190E2F4 +:10341000980F983068F48770FE2D01C0FF0F8A95D1 +:10342000EAF78F2F0E94691C0E948C1CE80119C0CA +:103430000E94BA12FBCFCF010296FE01C491CC23A9 +:1034400061F0EFE9FFE03197F1F700C00000C150F3 +:10345000F6CFCF010296FE01F490EC0102C00E946B +:10346000F2118F2D882341F0EFE9FFE03197F1F75A +:1034700000C000008150F6CFFE0194CFDF91CF91C4 +:103480001F910F91FF90EF90089508956093BD01F3 +:103490007093BE018093BF019093C0010C943816C5 +:1034A0000F931F930091BD011091BE012091BF01A8 +:1034B0003091C001062B172B282B392B0093BD010F +:1034C0001093BE012093BF013093C0011F910F9153 +:1034D0000C9438160F931F930091BD011091BE01FB +:1034E0002091BF013091C0010623172328233923DF +:1034F0000093BD011093BE012093BF013093C00122 +:103500001F910F910C9438160F931F930091BD01DA +:103510001091BE012091BF013091C00106271727ED +:10352000282739270093BD011093BE012093BF01C6 +:103530003093C0011F910F910C9438161092B9016D +:103540001092BA011092BB011092BC010C94381673 +:1035500041E050E060E070E004C0440F551F661F7A +:10356000771F8A95D2F74093B9015093BA016093BF +:10357000BB017093BC010C94381641E050E060E050 +:1035800070E004C0440F551F661F771F8A95D2F75D +:103590008091B9019091BA01A091BB01B091BC0199 +:1035A000842B952BA62BB72B8093B9019093BA014E +:1035B000A093BB01B093BC010C94381641E050E0DD +:1035C00060E070E004C0440F551F661F771F8A95A6 +:1035D000D2F740955095609570958091B901909182 +:1035E000BA01A091BB01B091BC0184239523A6230D +:1035F000B7238093B9019093BA01A093BB01B09314 +:10360000BC010C94381641E050E060E070E004C06A +:10361000440F551F661F771F8A95D2F78091B90115 +:103620009091BA01A091BB01B091BC01842795276C +:10363000A627B7278093B9019093BA01A093BB0145 +:10364000B093BC010C9438160F931F930091B901ED +:103650001091BA012091BB013091BC01062B172BB0 +:10366000282B392B0093B9011093BA012093BB0189 +:103670003093BC011F910F910C9438160F931F9338 +:103680000091B9011091BA012091BB013091BC01A8 +:1036900006231723282339230093B9011093BA0175 +:1036A0002093BB013093BC011F910F910C943816ED +:1036B0000F931F930091B9011091BA012091BB01A2 +:1036C0003091BC0106271727282739270093B90115 +:1036D0001093BA012093BB013093BC011F910F914D +:1036E0000C9438160895CF92DF92EF92FF920F93C9 +:1036F0001F93CF93DF93EC01C090BD01D090BE012A +:10370000E090BF01F090C0018091B9019091BA01A1 +:10371000A091BB01B091BC01C82AD92AEA2AFB2A90 +:103720000FE110E0B701A601002E04C07695679561 +:10373000579547950A94D2F740FD05C001501109ED +:1037400088F780E007C0BE01802F0E9433090197EF +:10375000A9F3802FDF91CF911F910F91FF90EF90F0 +:10376000DF90CF900895CF93DF93EC010E94731BFD +:10377000BE010E943309DF91CF910895CB010E94D1 +:10378000B31B089590910C019923D9F090910D01EC +:103790009923B9F0982F9695969596959F3088F530 +:1037A000E0910E01F0910F01E90FF11D877021E00A +:1037B00030E001C0220F8A95EAF78181822B818354 +:1037C000089540910E0150910F0120E030E09FEFED +:1037D000FA01E20FF31F6281681799F09F3F19F415 +:1037E000611101C0922F2F5F3F4F2E30310581F7BD +:1037F0009F3F39F0FA01E90FF11D97FDFA95828399 +:103800000895089590910C019923E1F090910D0194 +:103810009923C1F0982F9695969596959F3020F50F +:10382000E0910E01F0910F01E90FF11D877021E089 +:1038300030E001C0220F8A95EAF720958181282384 +:103840002183089540910E0150910F0120E030E056 +:10385000FA01E20FF31F9281981301C012822F5FC9 +:103860003F4F2E303105A1F7089581E090E0E091BF +:103870000E01F0910F01E80FF91F108201968031BF +:103880009105A9F708959091D401982B9093D401B4 +:10389000089580959091D40198239093D401089530 +:1038A0001092D40108959091D301982B9093D30155 +:1038B000089580959091D30198239093D301089512 +:1038C0001092D30108959091D201982B9093D20138 +:1038D000089580959091D20198239093D2010895F4 +:1038E0001092D20108958093C10108951092C101F0 +:1038F000089540910E0150910F0120E030E080E0EA +:10390000FA01E20FF31F918191118F5F2F5F3F4FFB +:103910002F303105A9F70895E0910E01F0910F01C4 +:103920008091D4018083E0910E01F0910F0180819C +:103930009091D301892B8083E0910E01F0910F01CA +:1039400080819091D201892B80839091C10199232C +:1039500061F0E0910E01F0910F018081892B80834D +:103960000E94791C81111092C10180910E019091E9 +:103970000F010C94D5108091EC01843021F110924C +:10398000D60120E488E190E00FB6F894A8958093E2 +:1039900060000FBE2093600080E00E94CE0983B7D4 +:1039A000817F846083BF83B7816083BF789488956B +:1039B00083B78E7F83BF88E10FB6F8948093600051 +:1039C000109260000FBE089508950895CF930E944D +:1039D000E41C0E9402060E94E51CC0E08C2F0E949D +:1039E000EF06811105C0CF5FCE30C1F780E001C086 +:1039F00081E0CF9108950E944C160E94C9100C944A +:103A0000CE0982E084BD93E095BD9AEF97BD809387 +:103A10006E0008952FB7F8948091D7019091D80146 +:103A2000A091D901B091DA012FBF0895CF92DF9212 +:103A3000EF92FF920F931F932FB7F8944091D70105 +:103A40005091D8016091D9017091DA012FBF6A01BC +:103A50007B01EE24FF248C0120E030E0C016D1066B +:103A6000E206F30610F441505109481B590BCA01F4 +:103A70001F910F91FF90EF90DF90CF9008951F92CC +:103A80000F920FB60F9211248F939F93AF93BF9312 +:103A90008091D7019091D801A091D901B091DA011C +:103AA0000196A11DB11D8093D7019093D801A093D9 +:103AB000D901B093DA01BF91AF919F918F910F908F +:103AC0000FBE0F901F9018950E94CF0DF8942FEF06 +:103AD00087EA91E6215080409040E1F700C0000065 +:103AE00087E090EBDC018093F6019093F701A093BF +:103AF000F801B093F9012CE088E190E00FB6F8945A +:103B0000A895809360000FBE20936000FFCFEF92D6 +:103B1000FF920F931F93CF93DF93E82EF12C8F2DFD +:103B20000E94EF06C0E0D0E0082F10E098010C2EB4 +:103B300002C0359527950A94E2F720FD05C021962D +:103B4000C630D10599F709C06C2F7F2D80E00E9407 +:103B5000F706E812F4CF81E005C0F3948EE0F81286 +:103B6000DECF80E0DF91CF911F910F91FF90EF901A +:103B70000895CF93C82F8CE20E94871D882321F0DF +:103B80008C2FCF910C94871D80E0CF910895CF9317 +:103B90000E940C1F811102C00E94F21EC5E6C15096 +:103BA00049F00E9402068FE39CE90197F1F700C0FB +:103BB0000000F5CF89E20E94B91D811111C18AE28E +:103BC0000E94B91D81110E94F21E85E00E94B91D5C +:103BD00081110E94641D0E94171F8093D50187E008 +:103BE0000E94B91D882399F18BE10E94B91D882399 +:103BF00051F09091D50191FB882780F921E082272F +:103C000080FB91F922C08EE00E94B91D882351F0FB +:103C10009091D50192FB882780F921E0822780FBD3 +:103C200092F913C080E10E94B91D9091D5018823BB +:103C300041F093FB882780F921E0822780FB93F9EC +:103C400004C0892F809580FB90F99093D5018091D5 +:103C5000D5010E941B1F0E94291F8093F50180EE51 +:103C60000E94B91D882341F08091F501982F90950D +:103C700090FB80F98093F50189E30E94B91D8823A8 +:103C800059F09091F50191FB882780F921E0822776 +:103C900080FB91F99093F50182EE0E94B91D882373 +:103CA00059F09091F50192FB882780F921E0822755 +:103CB00080FB92F99093F50186EE0E94B91D88234E +:103CC00059F09091F50193FB882780F921E0822734 +:103CD00080FB93F99093F50183EE0E94B91D882330 +:103CE00059F09091F50194FB882780F921E0822713 +:103CF00080FB94F99093F50185E30E94B91D882318 +:103D000059F09091F50195FB882780F921E08227F1 +:103D100080FB95F99093F50181E30E94B91D8823FA +:103D200059F09091F50196FB882780F921E08227D0 +:103D300080FB96F99093F50181E10E94B91D8823DB +:103D400059F09091F50197FB882780F921E08227AF +:103D500080FB97F99093F5018091F5010E942D1F4A +:103D60008091F50187FB882780F980930D0187E218 +:103D70000E94B91DC82F8EE10E94B91D8111C26039 +:103D80008FE10E94B91D8111C46080E20E94B91DBB +:103D90008111C86081E20E94B91D8111C06182E277 +:103DA0000E94B91D8111C06283E20E94B91D811178 +:103DB000C06484E20E94B91D882311F0C06802C06B +:103DC000CC2329F08C2F0E94241F6C2F03C00E944B +:103DD000201F682F70E080E090E0CF910C94461A8D +:103DE000CF9108956DEE7EEF80E090E00E944A252D +:103DF00060E082E090E00E94382560E083E090E09F +:103E00000E94382560E084E090E00E94382560E060 +:103E100085E090E00C94382580E090E00E94322507 +:103E200021E08D3E9E4F09F020E0822F089582E030 +:103E300090E00C942A25682F82E090E00C943825BD +:103E400083E090E00C942A25682F83E090E00C94A6 +:103E5000382584E090E00C942A25682F84E090E0D7 +:103E60000C9438258091DD0180FF0BC06091130117 +:103E700085E0689FB00111247595679575956795E4 +:103E80002AC081FF09C06091130185E0689FB001DD +:103E90001124759567951FC082FF07C060911301BB +:103EA00085E0689FB001112416C04091DE014423D3 +:103EB000C9F060911201461788F72091130185E03F +:103EC000289F90011124429FC001439F900D11240F +:103ED00070E00E94FC246038710540F461157105A2 +:103EE00039F002C065E070E0862F08958FE70895ED +:103EF00081E008958091DD0180FF08C0609111018B +:103F000070E0759567957595679521C081FF06C02E +:103F10006091110170E07595679519C082FF04C02A +:103F20006091110170E010C08091DE018823C1F022 +:103F3000609110018617A0F790911101989FC00120 +:103F4000112470E00E94FC246038710528F461158A +:103F5000710521F0862F08958FE7089581E0089577 +:103F600061E070E0F4CF803F21F40E94321F819520 +:103F700004C0813F29F40E94321F8093E10108951B +:103F8000823F21F40E94321F819504C0833F29F4AF +:103F90000E94321F8093E0010895893F19F40E9426 +:103FA0007A1F05C08A3F31F40E947A1F8195809361 +:103FB000E20108958B3F21F40E947A1F819504C08D +:103FC0008C3F29F40E947A1F8093E3010895843F77 +:103FD00021F48091DF01816017C0853F21F4809139 +:103FE000DF01826011C0863F21F48091DF0184608F +:103FF0000BC0873F21F48091DF01886005C0883FB6 +:1040000031F48091DF0180618093DF0108958D3F5D +:1040100021F48091DD0181600BC08E3F21F48091FD +:10402000DD01826005C08F3F29F48091DD0184604D +:104030008093DD010895803F39F48091E10187FF8D +:104040006CC01092E10169C0813F29F48091E101C7 +:104050001816BCF362C09091E001823F29F497FFEB +:104060005CC01092E00159C0833F19F41916CCF3DB +:1040700054C0893F41F48091E20118160CF04DC004 +:104080001092E2014AC08A3F29F48091E20187FF41 +:1040900044C0F6CF8B3F39F48091E30187FF3DC0E8 +:1040A0001092E3013AC08C3F29F48091E301181685 +:1040B000BCF333C0843F21F48091DF018E7F17C0B1 +:1040C000853F21F48091DF018D7F11C0863F21F46F +:1040D0008091DF018B7F0BC0873F21F48091DF014E +:1040E000877F05C0883F31F48091DF018F7E809308 +:1040F000DF0113C08D3F21F48091DD018E7F0BC065 +:104100008E3F21F48091DD018D7F05C08F3F29F422 +:104110008091DD018B7F8093DD018091E001811131 +:104120000EC08091E10181110AC08091E2018111EC +:1041300006C08091E301811102C01092DE01089552 +:104140008FED91E00E94E0100E940A1D9093DC0127 +:104150008093DB0108951F93CF93DF938091DB0160 +:104160009091DC010E94161D4091DE01442321F054 +:104170002091140130E006C0209115015AE0259FDE +:10418000900111248217930708F482C08091E00106 +:104190001091E101D091E201C091E301811107C0CA +:1041A000111105C0D11103C0CC2309F471C04F3FD8 +:1041B00019F04F5F4093DE01181624F40E94321F5D +:1041C0008093E0018091E00187FF05C00E94321FCB +:1041D00081958093E001111624F40E94321F809390 +:1041E000E1018091E10187FF05C00E94321F8195A6 +:1041F0008093E1016091E001662339F11091E101C2 +:10420000112319F1772767FD7095872F972F0E944B +:104210000D2423E333E343E35FE30E9471240E9410 +:10422000DA236093E001612F772767FD7095872F70 +:10423000972F0E940D2423E333E343E35FE30E94BF +:1042400071240E94DA236093E1011D1624F40E9478 +:104250007A1F8093E2018091E20187FF05C00E94EE +:104260007A1F81958093E2011C1624F40E947A1F24 +:104270008093E3018091E30187FF05C00E947A1FCC +:1042800081958093E301DF91CF911F910C94A02041 +:10429000DF91CF911F910895EFEDF1E085E0DF010F +:1042A0001D928A95E9F71092DE011092DD010895C2 +:1042B000833081F128F4813059F08230D1F00895B3 +:1042C000853009F449C0B8F1863009F456C0089524 +:1042D00020911501862F90E0820F911D8F3F91054F +:1042E00020F4620F6093150108958FEF80931501FC +:1042F000089520911401862F90E0820F911D8F3F29 +:10430000910520F4620F6093140108958FEF80935C +:104310001401089520911301862F90E0820F911DC2 +:104320008F3F910520F4620F6093130108958FEF82 +:1043300080931301089520911201862F90E0820F3F +:10434000911D8F3F910520F4620F60931201089533 +:104350008FEF80931201089520911101862F90E034 +:10436000820F911D8F3F910520F4620F6093110120 +:1043700008958FEF80931101089520911001862FE9 +:1043800090E0820F911D8F3F910520F4620F6093A2 +:10439000100108958FEF809310010895833011F17B +:1043A00028F4813049F0823091F00895853081F110 +:1043B00020F18630C1F1089580911501681720F42D +:1043C000861B809315010895109215010895809120 +:1043D0001401681720F4861B80931401089510922D +:1043E0001401089580911301681720F4861B8093AF +:1043F0001301089510921301089580911201681716 +:1044000020F4861B809312010895109212010895E2 +:1044100080911101681720F4861B80931101089583 +:1044200010921101089580911001681720F4861BE5 +:104430008093100108951092100108958D3109F4B0 +:1044400042C020F58E3009F477C070F4873009F44B +:1044500059C018F48630F1F134C0883009F4A8C08E +:104460008B3009F4A5C02DC0863109F4A1C038F401 +:10447000803109F472C0813109F479C022C08931D8 +:1044800009F496C08B3109F44DC01BC0853309F483 +:1044900087C048F4873209F483C008F473C08932B6 +:1044A00009F47EC00EC0833438F48A3308F068C043 +:1044B000883309F47DC005C0833409F471C08834A1 +:1044C00099F080E008950E9494230E94C9100E94F0 +:1044D000CE096EC08091D501817F8E7F8093D501FA +:1044E00081E08093E50108950E944C162FEF83ED43 +:1044F00090E3215080409040E1F700C000000E940E +:10450000641D56C09091D501892F8095817080FBE4 +:1045100090F919F0966098601DC0997F977F9093ED +:10452000D50146C09091D50191FB882780F921E003 +:10453000822780FB91F909C09091D50192FB8827D1 +:1045400080F921E0822780FB92F99093D50188239E +:1045500079F191609093D50108959091D50193FBE5 +:10456000882780F921E0822780FB93F9EECF0E9413 +:104570004C1680910D0191E0892780930D0118C0A0 +:1045800027EC01C023EE280F61E070E080E090E0AE +:1045900004C0660F771F881F991F2A95D2F704C0A1 +:1045A00061E070E080E090E00E94461A0E944C16A4 +:1045B00081E0089580E0089580E00895CF93C82FAA +:1045C0008091E501813079F018F08230D1F184C01A +:1045D000A0910E01B0910F018C91813169F082326E +:1045E00009F07CC009C0A0910E01B0910F018C911F +:1045F000813111F0823249F48C2F0E94DA2281112C +:104600001DC08C2F0E941E221AC08C2F0E94DC22FB +:10461000811114C0C43179F048F4CB3079F0C03145 +:1046200009F060C082E08093E50108C0C93219F04A +:10463000C83321F057C01092E50154C081E0817069 +:1046400053C0C93289F118F5C43171F1A8F4C730EB +:1046500009F046C08AE08093150194E1909314011B +:1046600093E0909313018093120188E080931101ED +:1046700088E28093100134C0CE51C63088F5EC2F0B +:10468000F0E0E65DFE4F80818093E40129C0CE34E6 +:10469000E9F020F4CB3421F56AE013C0C13579F09C +:1046A000C235F1F461E00DC08091E401882319F076 +:1046B0001092E40115C081E08093E50115C061E02E +:1046C00006C08091E4010E9458210AC06AE08091EE +:1046D000E4010E94CE2104C01092E50180E004C0F4 +:1046E00081E002C080E0ABCFCF910895E1E8F0E037 +:1046F0008081886080838081816080838FB7F89417 +:1047000093E09093890090ED909388008FBF089577 +:10471000EFE6F0E08081826080830895EFE6F0E0CC +:1047200080818D7F80830895EFE6F0E0808192E0C4 +:104730008927808308951F920F920FB60F9211243C +:104740002F933F934F935F936F937F938F939F9399 +:10475000AF93BF93EF93FF938091E6019091E701B0 +:1047600001969093E7018093E601811103C082E0F6 +:104770000E94CE09E091E701E695E695F0E0E25966 +:10478000FA4FE4918091E6018E1303C080E00E940D +:10479000CE09FF91EF91BF91AF919F918F917F9142 +:1047A0006F915F914F913F912F910F900FBE0F909E +:1047B0001F90189504D06894B1118DC0089570D0E1 +:1047C00088F09F5790F0B92F9927B751A0F0D1F0FA +:1047D000660F771F881F991F1AF0BA95C9F712C084 +:1047E000B13081F077D0B1E0089574C0672F782F91 +:1047F0008827B85F39F0B93FCCF3869577956795F0 +:10480000B395D9F73EF490958095709561957F4F5B +:104810008F4F9F4F0895E89409C097FB3EF4909501 +:104820008095709561957F4F8F4F9F4F9923A9F089 +:10483000F92F96E9BB279395F69587957795679518 +:10484000B795F111F8CFFAF4BB0F11F460FF1BC05C +:104850006F5F7F4F8F4F9F4F16C0882311F096E9EF +:1048600011C0772321F09EE8872F762F05C066239D +:1048700071F096E8862F70E060E02AF09A95660F56 +:10488000771F881FDAF7880F9695879597F908950F +:1048900057FD9058440F551F59F05F3F71F04795F1 +:1048A000880F97FB991F61F09F3F79F087950895D6 +:1048B000121613061406551FF2CF4695F1DF08C0F5 +:1048C000161617061806991FF1CF86957105610512 +:1048D00008940895E894BB2766277727CB0197F9BA +:1048E00008950BD078C069D028F06ED018F09523C9 +:1048F00009F05AC05FC01124EECFCADFA0F3959F24 +:10490000D1F3950F50E0551F629FF001729FBB27B6 +:10491000F00DB11D639FAA27F00DB11DAA1F649F62 +:104920006627B00DA11D661F829F2227B00DA11D15 +:10493000621F739FB00DA11D621F839FA00D611D9B +:10494000221F749F3327A00D611D231F849F600DBC +:10495000211D822F762F6A2F11249F5750408AF0F5 +:10496000E1F088234AF0EE0FFF1FBB1F661F771F81 +:10497000881F91505040A9F79E3F510570F014C018 +:10498000AACF5F3FECF3983EDCF386957795679569 +:10499000B795F795E7959F5FC1F7FE2B880F911D9F +:1049A0009695879597F9089597F99F6780E870E045 +:1049B00060E008959FEF80EC089500240A94161695 +:1049C000170618060906089500240A9412161306FD +:1049D000140605060895092E0394000C11F488238B +:1049E00052F0BB0F40F4BF2B11F460FF04C06F5FA7 +:1049F0007F4F8F4F9F4F089597FB072E16F400941B +:104A000007D077FD09D00E94162507FC05D03EF49B +:104A1000909581959F4F0895709561957F4F08956A +:104A2000EE0FFF1F0590F491E02D0994AA1BBB1B0C +:104A300051E107C0AA1FBB1FA617B70710F0A61B9E +:104A4000B70B881F991F5A95A9F780959095BC01BF +:104A5000CD010895F999FECF92BD81BDF89A9927AD +:104A600080B50895A8E1B0E042E050E00C945225F2 +:104A7000262FF999FECF92BD81BDF89A019700B417 +:104A8000021639F01FBA20BD0FB6F894FA9AF99AB7 +:104A90000FBE08950196272F0E9439250C943825C2 +:104AA000DC01CB01FC01F999FECF06C0F2BDE1BDEE +:104AB000F89A319600B40D9241505040B8F70895DD +:044AC000F894FFCF98 +:104AC4002002D0095D0A3A0A060AD3090101C2018B +:104AD40028080A03140A3F4D36392F05E204AC04B2 +:104AE400730406041F043804510401020304050678 +:044AF40007080900A6 :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md index 163b5d902..6465cd79e 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md +++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md @@ -55,7 +55,7 @@ Finally, consider the turquoise text-nav keys. Here in the Symbols layer, these * 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 -* The uncolored keys do nothing in case you bump them by accident +* The dark gray keys do nothing in case you bump them by accident ![Ordinary media layout](ordinary-media.png) @@ -67,16 +67,37 @@ Alas, the yellow keys have at best spotty success with common software. Good luc ## Switching Between Layers ## -In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. (Note: it is exactly the same as pressing the *left* shift key; the *right* shift key is only available on the Media layer because holding both shift keys is the 'magic' command combo for this keyboard so it is inconviently locate to minimize accidents.) Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. +In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. -Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock layers using the Shift key in conjunction with the Shift Lock key. For instance, the widely and rightly loathed Caps Lock is engaged by pressing the Shift Lock button then Capitals Shift. Or, hold down the Shift key and press the Shift Lock key; it works either way. All the Shift keys work this way. +Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. If you press both of a pair of shift keys, the layer will lock on until you press both shift keys again. For instance, the widely and rightly loathed Caps Lock is engaged by pressing both Capitals Shift buttons. All the Shift keys work this way. -Multiple layers can be turned on at once but only one controls the keyboard. The order of the LEDs indicates the priority order: Media, Symbols, Capitals. +Multiple layers can be turned on at once. The Capitals layer will affect characters on other layers to capitalize. Other layers, however, don't 'mix': Symbols blankets the base layout; Media blankets Symbols. -## Special Escape & Backspace Sequences ## +## Special Sequences ## -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, is home to the tilde (er, grave) which is commonly found there. 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! +![Ordinary special layout](ordinary-special.png) -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. +### Escape ### -Finally, because the special Escape sequence is so natural and useful, on the top right corner of the Ergodox EZ you can do the same gesture with the 0 key to produce a Backspace. Users of this keyboard and this layout are well advised to learn to use their thumbs for deleting text, but sometimes you are doing other computery things and just want to flick your digits up to the right and press backspace a bunch times. These special sequences should feel unremarkably mundane but might prove to be remarkably useful. +The One True Location for the Escape key is segregated 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 is home to the tilde (er, grave) which is commonly found there. In the Ordinary layout the Escape key is found on all layers in the prominent location in the corner next to the 5, whnich is easy to remember, and yet it isn't natural for those of us with muscle memory flicking our wrists up and to the left looking for Escape. + +The Ordinary layout offers as a consolation prize a Special sequence for Escape: Special Shift + 1. This is natural so you can tap the top left button, then the button next to it and get Escape. This gesture works in all layers. + +### Backspace ### + +At the top right corner of the Ergodox EZ you can a gesture similar to the special Escape sequence, using the 0 key, to produce a Backspace. Users of this keyboard and this layout are well advised to learn to use their thumbs for deleting text, but sometimes you are doing other computery things and just want to flick your digits up to the right and press backspace a bunch times. + +### RShift ### + +The Ordinary Layout locks layers by pressing both of a pair of shift keys. This interferes with the QMK firmware magic sequence, which is LShift+RShift. To work around this, both of the Capitals Shift keys produce a *Left Shift* keystroke. If for some reason a person needs *Right Shift* they can find it by pressing a Special Shift key, then the Capitals Shift key on the right side of the keyboard. + +**** + +The Ordinary Layout for the Ergodox EZ keyboard, v4 + +Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com + +No rights reserved. This software is in the public domain. Credit me if you are friendly but if you're a jerk don't bother. + +Details: readme.md + https://github.com/nrrkeene/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/ordinary -- cgit v1.2.3-24-g4f1b From 481c74cc569e47d42c7dfa55daa1f33d066eaef4 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Thu, 5 May 2016 23:18:48 -0500 Subject: The Ordinary Layout is the layout you are looking for. Come and see. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 2 +- keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex | 2148 ++++++++++----------- 2 files changed, 1075 insertions(+), 1075 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 6af3720fd..18939b192 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -430,7 +430,7 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { // shift or caps lock turns on red light - if((keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))) || (host_keyboard_leds() & (1<mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1< Date: Fri, 6 May 2016 05:19:17 -0700 Subject: zweihander: add ⌘X, ⌘C, ⌘V to media thumb keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index a9980593f..1cd7e7723 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -109,8 +109,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | * ,------|------|------| |------+------+------. * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | + * | | |------| |------| ⌘C | ⌘V | + * | | | | | ⌘X | | | * `--------------------' `--------------------' */ // MEDIA AND MOUSE @@ -129,9 +129,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LGUI(KC_LBRC), KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_MPLY, KC_TRNS, LSFT(KC_SPC), KC_SPC , KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS + LGUI(KC_X), LGUI(KC_C), LGUI(KC_V) ), }; -- cgit v1.2.3-24-g4f1b From 08f31424634d5b614b69e3bb965ab50bdccd6d01 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Fri, 6 May 2016 05:40:02 -0700 Subject: Add KC_LABK and KC_RABK (< and >) --- quantum/keymap_common.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 0ede0296b..ffd8168f6 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -118,6 +118,12 @@ extern const uint16_t fn_actions[]; #define KC_RCBR LSFT(KC_RBRC) // } #define KC_RIGHT_CURLY_BRACE KC_RCBR +#define KC_LABK LSFT(KC_COMM) // < +#define KC_LEFT_ANGLE_BRACKET KC_LABK + +#define KC_RABK LSFT(KC_DOT) // > +#define KC_RIGHT_ANGLE_BRACKET KC_RABK + #define KC_COLN LSFT(KC_SCLN) // : #define KC_COLON KC_COLN -- cgit v1.2.3-24-g4f1b From c702a522b077e09a3d7d080c0dc94471f110aa53 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Fri, 6 May 2016 05:47:55 -0700 Subject: Rearrange code layer on Zweihander Makes it more like the iOS keyboard (and therefore easier to remember). Also adds angle brackets for HTML and comparisons. --- keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c index 1cd7e7723..e9963886b 100644 --- a/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c +++ b/keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c @@ -55,11 +55,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | / | 7 | 8 | 9 | * | F12 | + * | | [ | ] | { | } | | | | | / | 7 | 8 | 9 | * | F12 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| - | 4 | 5 | 6 | + | | + * | | < | > | ( | ) | |------| |------| - | 4 | 5 | 6 | + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | = | | + * | | | | | | | | | | & | 1 | 2 | 3 | = | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | 0 | . | ← | → | | * `----------------------------------' `----------------------------------' @@ -75,9 +75,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB] = KEYMAP( // left hand KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_TRNS,KC_TRNS, + KC_TRNS,KC_LABK,KC_RABK,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, -- cgit v1.2.3-24-g4f1b From 05db327b704343168f696af1a91915917fa4b5a9 Mon Sep 17 00:00:00 2001 From: Nathan Sharfi Date: Fri, 6 May 2016 06:22:26 -0700 Subject: Add KC_L[LR]ABK to top-level README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index bb1cca1ed..67a768be7 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,8 @@ The following shortcuts automatically add `LSFT()` to keycodes to get commonly u KC_PLUS + KC_LCBR { KC_RCBR } + KC_LABK < + KC_RABK > KC_PIPE | KC_COLN : -- cgit v1.2.3-24-g4f1b From 897396b58fb1bc833269d3c25f85cfcdd0b6057a Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Sun, 8 May 2016 13:39:17 -0400 Subject: Tweaks layers 1 & 2 in my experimental layout --- .../erez_experimental/erez_experimental.hex | 22 ++++++------- .../ergodox_ez/keymaps/erez_experimental/keymap.c | 36 +++++++++++----------- .../ergodox_ez/keymaps/erez_experimental/readme.md | 8 +++++ 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index edbead276..14891aa8e 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -25,21 +25,21 @@ :1001800018000D74100052004B0025000C000E00EA :10019000360051002800260012000F0037002F0003 :1001A0002B81270013003382387130004E002D0060 -:1001B0003100347801302D00000001000100010001 -:1001C0000100010000003A001E002200260201008A -:1001D00001003B001F0023002702010001003C003A -:1001E000200024002F004B0101003D0021002500CC -:1001F00030004E0101003E000100260027000000F3 +:1001B0003100347801302D81000001000100010080 +:1001C0000100010000003A001E0023002602010089 +:1001D00001003B001F0024002702010001003C0039 +:1001E000200025002F004B0101003D0021002600CA +:1001F00030004E0101003E002200270027000000D1 :1002000001000100010000000100000001000100E8 :10021000010000000100000001003F000100240275 -:10022000310200000100400022022D0226020100DE -:10023000010041002E002D002702010001004200B4 -:100240001F021300200001000100430001002E02E4 +:10022000310200000100400001002D022202010005 +:100230000100410001002D002E00010001004200DC +:10024000010013001F0201000100430001002E0203 :10025000010001000100440045000100010001000F :100260000000010001000100010001000000010088 -:100270000100010001000100010001000100F20085 -:100280000100010001000100F000F1000100F40094 -:10029000010001000100F3000100F5000100010070 +:1002700001004B00010001000100010001004A00E3 +:10028000010001000100010001004D00010001001A +:100290000100010001004E00010001000100010009 :1002A0000100010001000000010001000100000048 :1002B0000100000001000100010000000100000039 :1002C0000100010001000100010000000100010027 diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index f257dbee3..42e7cbe0d 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * |LShift/(|Z/Ctrl| X | C | V | B | [ | | ] | N | M | , | . |//Ctrl|RShift/)| * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | - | + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | -/L1 | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | App | LGui | | Alt |Ctrl/Esc| @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(SYMB), KC_Y,KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H,ALT_T(KC_J),KC_K, KC_L, LT(MDIA,KC_SCLN),GUI_T(KC_QUOT), MEH_T(KC_RBRC),KC_N,KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), RSFTC, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_MINS, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, LT(SYMB,KC_MINS), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,LT(SYMB, KC_TAB), KC_ENT @@ -59,11 +59,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | 1 | 2 | 3 | 4 | | | | | | % | = | @ | | F12 | + * | | | | | | | | | | | | | | | F12 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | 5 | 6 | 7 | 8 | 9 |------| |------| & | _ | - | ; | + | | + * | | 1 | 2 | 3 | 4 | 5 |------| |------| & | _ | - | ; | + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | ( | ) | [ | ] | 0 | | | | | | ( | ) | | | | + * | | 6 | 7 | 8 | 9 | 0 | | | | | | % | = | @ | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -79,19 +79,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB] = KEYMAP( // left hand KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_TRNS, KC_TRNS, - KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_9, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, + KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_LPRN,KC_RPRN,KC_LBRC, KC_RBRC, KC_0, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN), KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_TRNS, KC_PERC,KC_EQL, KC_AT, KC_TRNS, KC_F12, - KC_AMPR, KC_UNDS,KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS, - KC_TRNS, KC_PIPE, KC_LPRN,KC_RPRN, KC_3, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS, + KC_TRNS, KC_PIPE, KC_PERC, KC_EQL, KC_AT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -101,13 +101,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | + * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * | | PgUp | Home | End | PgDn | |------| |------| | | | | | Play | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | | Prev | Next | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * | | | | | | |VolUp |VolDn | Mute | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -120,10 +120,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_PGUP, KC_HOME, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/ergodox_ez/keymaps/erez_experimental/readme.md b/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md index 205280e29..a9c572390 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/readme.md @@ -4,6 +4,14 @@ This is my personal layout which I use to test out ideas which may or may not ma Changelog: +## May 8, 2016: + +* Makes bottom-right key send minus/underscore when tapped, L1 temporary toggle when held +* Tweaked the positions of the numbers on the symbol layer. Basically, 12345 are now directly under their number-row counterparts in layer 0. You can imagine pulling the number row down to the home row. And 67890 are directly under 12345 - so it's a matter of just adding 5 and going to the next row (1+5 = 6, 2+5 = 7 and so on). +* Tweaks media/nav layer + * Removes mouse control, as I don't use it + * Makes left home row keys PgUp, Home, End, PgDn + ## Apr 29, 2016: * Tweaks the Hyper and Meh key to send brackets when tapped -- cgit v1.2.3-24-g4f1b From 2ac27dd5745ad0780dc85e57758e05d49a65062e Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Sun, 8 May 2016 13:45:26 -0400 Subject: A little more tweaking --- .../keymaps/erez_experimental/erez_experimental.hex | 12 ++++++------ keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index 14891aa8e..acfd2ee31 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -26,15 +26,15 @@ :10019000360051002800260012000F0037002F0003 :1001A0002B81270013003382387130004E002D0060 :1001B0003100347801302D81000001000100010080 -:1001C0000100010000003A001E0023002602010089 -:1001D00001003B001F0024002702010001003C0039 -:1001E000200025002F004B0101003D0021002600CA -:1001F00030004E0101003E002200270027000000D1 +:1001C0000100010000003A0001001E0023000100B0 +:1001D00001003B0001001F002400010001003C0061 +:1001E000010020002500010001003D000100210068 +:1001F0002600010001003E0001002200270000004F :1002000001000100010000000100000001000100E8 :10021000010000000100000001003F000100240275 -:10022000310200000100400001002D022202010005 +:10022000310200000100400001002D021F02010008 :100230000100410001002D002E00010001004200DC -:10024000010013001F0201000100430001002E0203 +:1002400001001300220201000100430001002E0200 :10025000010001000100440045000100010001000F :100260000000010001000100010001000000010088 :1002700001004B00010001000100010001004A00E3 diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index 42e7cbe0d..6969ccd36 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | 1 | 2 | 3 | 4 | 5 |------| |------| & | _ | - | ; | + | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | 6 | 7 | 8 | 9 | 0 | | | | | | % | = | @ | | | + * | | 6 | 7 | 8 | 9 | 0 | | | | | | @ | = | % | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -79,10 +79,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB] = KEYMAP( // left hand KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, - KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_TRNS, KC_LPRN,KC_RPRN,KC_LBRC, KC_RBRC, KC_0, KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN), + 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_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS, - KC_TRNS, KC_PIPE, KC_PERC, KC_EQL, KC_AT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_PIPE, KC_AT, KC_EQL, KC_PERC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -- cgit v1.2.3-24-g4f1b From 35a72ca5e1abaf2eece7f61c17f94260ea1d16c7 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Sun, 8 May 2016 13:54:22 -0400 Subject: Adds next tab/prev tab back to symb layer and updates legend --- keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex | 4 ++-- keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex index acfd2ee31..bdd707165 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex @@ -28,8 +28,8 @@ :1001B0003100347801302D81000001000100010080 :1001C0000100010000003A0001001E0023000100B0 :1001D00001003B0001001F002400010001003C0061 -:1001E000010020002500010001003D000100210068 -:1001F0002600010001003E0001002200270000004F +:1001E0000100200025004B0101003D00010021001D +:1001F00026004E0101003E00010022002700000001 :1002000001000100010000000100000001000100E8 :10021000010000000100000001003F000100240275 :10022000310200000100400001002D021F02010008 diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c index 6969ccd36..f4e4f92e0 100644 --- a/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c +++ b/keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c @@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | 6 | 7 | 8 | 9 | 0 | | | | | | @ | = | % | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | + * | | | |NxtTab|PrvTab| | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN), KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, -- cgit v1.2.3-24-g4f1b From 684793360cdb08ac1e50a6d27e1796fadd527adb Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 9 May 2016 00:36:23 -0400 Subject: quantum accommodates more than 16 columns --- quantum/matrix.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/quantum/matrix.c b/quantum/matrix.c index 2dab6ae94..7d70f728d 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -42,6 +42,13 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS]; static matrix_row_t matrix_reversed_debouncing[MATRIX_COLS]; #endif + +#if MATRIX_COLS > 16 + #define SHIFTER 1UL +#else + #define SHIFTER 1 +#endif + static matrix_row_t read_cols(void); static void init_cols(void); static void unselect_rows(void); @@ -235,15 +242,15 @@ static matrix_row_t read_cols(void) #endif if ((col & 0xF0) == 0x20) { - result |= (PINB&(1<<(col & 0x0F)) ? 0 : (1< Date: Mon, 9 May 2016 13:17:15 -0400 Subject: Backlight Breathing for Planck and Atomic * Updated personal layouts * tweaked personal * Nightly - Audio Cleanup Refactored the LUTs. Abstracted some of the registers out of audio to use more functional names. Split audio into audio and audio_pwm. WIP * nightly - collapsed code * Added check for note playing to LEDs * Usability tweaks * TWEAE * nightly added extra kcs to keymap common * turned on Plank audio * Added backlight breathing to atomic * reverted accidental merge * adds backlight pulse to planck --- keyboard/atomic/atomic.c | 260 +++++++++++++-- keyboard/atomic/atomic.h | 16 + keyboard/atomic/keymaps/pvc/config.h | 3 +- keyboard/atomic/keymaps/pvc/keymap.c | 357 ++++++++++++--------- keyboard/atomic/keymaps/pvc/makefile.mk | 2 +- keyboard/planck/keymaps/experimental/README.md | 2 + keyboard/planck/keymaps/experimental/keymap.c | 383 +++++++++++++++++++++++ keyboard/planck/keymaps/experimental/makefile.mk | 2 + keyboard/planck/keymaps/pvc/keymap.c | 13 +- keyboard/planck/keymaps/pvc/makefile.mk | 6 +- keyboard/planck/planck.c | 221 ++++++++++++- keyboard/planck/planck.h | 18 ++ quantum/audio/audio.c | 4 + quantum/audio/audio.h | 11 +- quantum/keymap_common.h | 18 ++ quantum/keymap_midi.h | 10 +- quantum/quantum.mk | 6 +- tmk_core/common/backlight.c | 5 + tmk_core/common/backlight.h | 1 + tmk_core/common/command.c | 4 +- tmk_core/common/nodebug.h | 12 +- 21 files changed, 1153 insertions(+), 201 deletions(-) create mode 100644 keyboard/planck/keymaps/experimental/README.md create mode 100644 keyboard/planck/keymaps/experimental/keymap.c create mode 100644 keyboard/planck/keymaps/experimental/makefile.mk diff --git a/keyboard/atomic/atomic.c b/keyboard/atomic/atomic.c index 399649716..b4b261457 100644 --- a/keyboard/atomic/atomic.c +++ b/keyboard/atomic/atomic.c @@ -2,27 +2,27 @@ __attribute__ ((weak)) void matrix_init_user(void) { - // leave this function blank - it can be defined in a keymap file + // leave this function blank - it can be defined in a keymap file }; __attribute__ ((weak)) void matrix_scan_user(void) { - // leave this function blank - it can be defined in a keymap file + // leave this function blank - it can be defined in a keymap file } __attribute__ ((weak)) void process_action_user(keyrecord_t *record) { - // leave this function blank - it can be defined in a keymap file + // leave this function blank - it can be defined in a keymap file } __attribute__ ((weak)) void led_set_user(uint8_t usb_led) { - // leave this function blank - it can be defined in a keymap file + // leave this function blank - it can be defined in a keymap file } void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up + // put your keyboard start-up code here + // runs once when the firmware starts up MCUCR |= (1<= BACKLIGHT_LEVELS ) { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); // Turn on PWM control of PB7 TCCR1A |= _BV(COM1C1); - // Set the brightness + + // Set the brightness to max CHANNEL = 0xFFFF; } - else + else { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); // Turn on PWM control of PB7 TCCR1A |= _BV(COM1C1); + // Set the brightness CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); } + breathing_intensity_default(); +} + + +void breathing_enable(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint (brightest point) + breathing_index = 0x20 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_pulse(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_HALT_ON; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_disable(void) +{ + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + backlight_set(get_backlight_level()); +} + +void breathing_self_disable(void) +{ + if (get_backlight_level() == 0) + { + breathing_halt = BREATHING_HALT_OFF; + } + else + { + breathing_halt = BREATHING_HALT_ON; + } + + //backlight_set(get_backlight_level()); +} + +void breathing_toggle(void) +{ + if (!is_breathing()) + { + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + } + + // Toggle breathing interrupt + TIMSK1 ^= _BV(OCIE1A); + + // Restore backlight level + if (!is_breathing()) + { + backlight_set(get_backlight_level()); + } +} + +bool is_breathing(void) +{ + return (TIMSK1 && _BV(OCIE1A)); +} + +void breathing_intensity_default(void) +{ + //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS); + breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2)); +} + +void breathing_intensity_set(uint8_t value) +{ + breath_intensity = value; +} + +void breathing_speed_default(void) +{ + breath_speed = 4; +} + +void breathing_speed_set(uint8_t value) +{ + bool is_breathing_now = is_breathing(); + uint8_t old_breath_speed = breath_speed; + + if (is_breathing_now) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + breath_speed = value; + + if (is_breathing_now) + { + // Adjust index to account for new speed + breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); + } + +} + +void breathing_speed_inc(uint8_t value) +{ + if ((uint16_t)(breath_speed - value) > 10 ) + { + breathing_speed_set(0); + } + else + { + breathing_speed_set(breath_speed - value); + } +} + +void breathing_speed_dec(uint8_t value) +{ + if ((uint16_t)(breath_speed + value) > 10 ) + { + breathing_speed_set(10); + } + else + { + breathing_speed_set(breath_speed + value); + } +} + +void breathing_defaults(void) +{ + breathing_intensity_default(); + breathing_speed_default(); + breathing_halt = BREATHING_NO_HALT; +} + +/* Breathing Sleep LED brighness(PWM On period) table + * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle + * + * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63 + * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i } + */ +static const uint8_t breathing_table[64] PROGMEM = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, + 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, +255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, + 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +ISR(TIMER1_COMPA_vect) +{ + // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity; + + + uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F; + + if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F))) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity; + } + + #endif \ No newline at end of file diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h index 0c7aeb1cc..845a9043e 100644 --- a/keyboard/atomic/atomic.h +++ b/keyboard/atomic/atomic.h @@ -33,4 +33,20 @@ void process_action_user(keyrecord_t *record); void led_set_user(uint8_t usb_led); void backlight_init_ports(void); +void breathing_enable(void); +void breathing_pulse(void); +void breathing_disable(void); +void breathing_self_disable(void); +void breathing_toggle(void); +bool is_breathing(void); + + +void breathing_defaults(void); +void breathing_intensity_default(void); +void breathing_speed_default(void); +void breathing_speed_set(uint8_t value); +void breathing_speed_inc(uint8_t value); +void breathing_speed_dec(uint8_t value); + + #endif \ No newline at end of file diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h index 034bc5dc5..5e956286b 100644 --- a/keyboard/atomic/keymaps/pvc/config.h +++ b/keyboard/atomic/keymaps/pvc/config.h @@ -22,7 +22,7 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 +#define PRODUCT_ID 0x0419 #define DEVICE_VER 0x0001 #define MANUFACTURER Ortholinear Keyboards #define PRODUCT The Atomic Keyboard @@ -162,5 +162,4 @@ along with this program. If not, see . //#define VIBRATO_ENABLE //#define VIBRATO_STRENGTH_ENABLE - #endif diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 3d604a868..ff7384268 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -8,41 +8,44 @@ #include "song_list.h" #endif -#define LAYER_QWERTY 0 -#define LAYER_COLEMAK 1 -#define LAYER_DVORAK 2 -#define LAYER_RAISE 3 -#define LAYER_LOWER 4 -#define LAYER_FUNCTION 5 -#define LAYER_MOUSE 6 -#define LAYER_MUSIC 7 -#define LAYER_ADJUST 8 - -#define MACRO_QWERTY 0 -#define MACRO_COLEMAK 1 -#define MACRO_DVORAK 2 -#define MACRO_RAISE 3 -#define MACRO_LOWER 4 -#define MACRO_FUNCTION 5 -#define MACRO_MOUSE 6 -#define MACRO_TIMBRE_1 7 -#define MACRO_TIMBRE_2 8 -#define MACRO_TIMBRE_3 9 -#define MACRO_TIMBRE_4 10 -#define MACRO_TEMPO_U 11 -#define MACRO_TEMPO_D 12 -#define MACRO_TONE_DEFAULT 13 -#define MACRO_MUSIC_ON 14 -#define MACRO_MUSIC_OFF 15 -#define MACRO_AUDIO_ON 16 -#define MACRO_AUDIO_OFF 17 -#define MACRO_INC_VOICE 18 -#define MACRO_DEC_VOICE 19 +#define LAYER_QWERTY 0 +#define LAYER_COLEMAK 1 +#define LAYER_DVORAK 2 +#define LAYER_UPPER 3 +#define LAYER_LOWER 4 +#define LAYER_FUNCTION 5 +#define LAYER_MOUSE 6 +#define LAYER_MUSIC 7 +#define LAYER_ADJUST 8 + +#define MACRO_QWERTY 0 +#define MACRO_COLEMAK 1 +#define MACRO_DVORAK 2 +#define MACRO_UPPER 3 +#define MACRO_LOWER 4 +#define MACRO_FUNCTION 5 +#define MACRO_MOUSE 6 +#define MACRO_TIMBRE_1 7 +#define MACRO_TIMBRE_2 8 +#define MACRO_TIMBRE_3 9 +#define MACRO_TIMBRE_4 10 +#define MACRO_TEMPO_U 11 +#define MACRO_TEMPO_D 12 +#define MACRO_TONE_DEFAULT 13 +#define MACRO_MUSIC_TOGGLE 14 +#define MACRO_AUDIO_TOGGLE 16 +#define MACRO_INC_VOICE 18 +#define MACRO_DEC_VOICE 19 +#define MACRO_BACKLIGHT 20 +#define MACRO_BREATH_TOGGLE 21 +#define MACRO_BREATH_SPEED_INC 23 +#define MACRO_BREATH_SPEED_DEC 24 +#define MACRO_BREATH_DEFAULT 25 #define M_QWRTY M(MACRO_QWERTY) #define M_COLMK M(MACRO_COLEMAK) #define M_DVORK M(MACRO_DVORAK) -#define M_RAISE M(MACRO_RAISE) +#define M_UPPER M(MACRO_UPPER) #define M_LOWER M(MACRO_LOWER) #define M_FUNCT M(MACRO_FUNCTION) #define M_MOUSE M(MACRO_MOUSE) @@ -53,12 +56,15 @@ #define TMPO_UP M(MACRO_TEMPO_U) #define TMPO_DN M(MACRO_TEMPO_D) #define TMPO_DF M(MACRO_TONE_DEFAULT) +#define M_BACKL M(MACRO_BACKLIGHT) +#define M_BRTOG M(MACRO_BREATH_TOGGLE) +#define M_BSPDU M(MACRO_BREATH_SPEED_INC) +#define M_BSPDD M(MACRO_BREATH_SPEED_DEC) +#define M_BDFLT M(MACRO_BREATH_DEFAULT) -#define MUS_ON M(MACRO_MUSIC_ON) -#define MUS_OFF M(MACRO_MUSIC_OFF) -#define AUD_OFF M(MACRO_AUDIO_OFF) -#define AUD_ON M(MACRO_AUDIO_ON) +#define MUS_TOG M(MACRO_MUSIC_TOGGLE) +#define AUD_TOG M(MACRO_AUDIO_TOGGLE) #define VC_UP M(MACRO_INC_VOICE) #define VC_DOWN M(MACRO_DEC_VOICE) @@ -74,6 +80,7 @@ #define SC_ACLS LALT(KC_F4) #define SC_CCLS LCTL(KC_F4) +#define OS_SHFT KC_FN0 #define _______ KC_TRNS #define XXXXXXX KC_NO @@ -92,16 +99,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_QWERTY] = { /* QWERTY */ + [LAYER_QWERTY] = { // QWERTY { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, /* COLEMAK @@ -114,17 +121,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_COLEMAK] = { /* COLEMAK */ + [LAYER_COLEMAK] = { // COLEMAK { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, - }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, +}, /* DVORAK * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. @@ -136,35 +143,63 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_DVORAK] = { /* DVORAK */ + [LAYER_DVORAK] = { // DVORAK { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC }, { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL }, { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP }, { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, - [LAYER_RAISE] = { /* RAISED */ - { KC_TILD, KC_PSCR, KC_PAUS, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, - { _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, - { _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, - { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, +/* UPPER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | / | * | - | NUM LK | SCR LK | XXXXXX . PAUSE | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | + | ~ | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | ` | XXXXXX . | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | 0 | | RALT | . | ENTER | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_UPPER] = { // UPPER + { KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS }, + { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME }, + { _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }, }, - [LAYER_LOWER] = { /* LOWERED */ - { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, - { _______, KC_F13, KC_F14, KC_F15, KC_F16, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, KC_F17, KC_F18, KC_F19, KC_F20, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, - { _______, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, - { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______ }, +/* LOWER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | ^ | * | + | - | ; | : | _ | ' | " | ` | | XXXXXX . | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | | & | ! | ~ | / | \ | = | < | > | ? | XXXXXX . | | END | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_LOWER] = { // LOWER + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, + { _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS }, + { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SCLN, KC_COLN, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME }, + { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SLSH, KC_BSLS, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, }, - [LAYER_FUNCTION] = { /* FUNCTION */ + [LAYER_FUNCTION] = { // FUNCTION { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, KC_PAUS }, { KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_PSCR }, @@ -174,7 +209,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef MOUSEKEY_ENABLE - [LAYER_MOUSE] = { /* MOUSE */ + [LAYER_MOUSE] = { // MOUSE { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U }, @@ -184,25 +219,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif - [LAYER_MUSIC] = { /* MUSIC */ + [LAYER_MUSIC] = { // MUSIC { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, - { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, }, - [LAYER_ADJUST] = { /* ADJUST */ - { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF, ________________ }, + [LAYER_ADJUST] = { // ADJUST + { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MUS_TOG, AUD_TOG, ________________ }, { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, - { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, ________________, VC_UP, _______ }, + { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, VC_UP, _______ }, { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, VC_DOWN, _______ }, }, /* - [LAYER_EMPTY] = { + [LAYER_EMPTY] = { // LAYER { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, @@ -241,6 +276,7 @@ void persistant_default_layer_set(uint16_t default_layer) } const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_ONESHOT(MOD_LSFT), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -250,13 +286,41 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { + case MACRO_BREATH_TOGGLE: + if (record->event.pressed) + { + breathing_toggle(); + } + break; + + case MACRO_BREATH_SPEED_INC: + if (record->event.pressed) + { + breathing_speed_inc(1); + } + break; + + case MACRO_BREATH_SPEED_DEC: + if (record->event.pressed) + { + breathing_speed_dec(1); + } + break; + + case MACRO_BREATH_DEFAULT: + if (record->event.pressed) + { + breathing_defaults(); + } + break; + case MACRO_QWERTY: if (record->event.pressed) { persistant_default_layer_set(1UL<event.pressed) { persistant_default_layer_set(1UL<event.pressed) { persistant_default_layer_set(1UL<event.pressed) { - layer_on(LAYER_RAISE); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + layer_on(LAYER_UPPER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } else { - layer_off(LAYER_RAISE); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + layer_off(LAYER_UPPER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } break; @@ -297,22 +363,28 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { layer_on(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } else { layer_off(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); } break; case MACRO_FUNCTION: if (record->event.pressed) { + breathing_speed_set(3); + breathing_enable(); layer_on(LAYER_FUNCTION); } else { + breathing_speed_set(1); + breathing_self_disable(); layer_off(LAYER_FUNCTION); } break; @@ -362,42 +434,34 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - case MACRO_AUDIO_OFF: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - audio_off(); - #endif - } - break; - - case MACRO_AUDIO_ON: + case MACRO_AUDIO_TOGGLE: if (record->event.pressed) { - #ifdef AUDIO_ENABLE - audio_on(); - PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); - #endif + if (is_audio_on()) + { + audio_off(); + } + else + { + audio_on(); + PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); + } } break; - case MACRO_MUSIC_ON: + case MACRO_MUSIC_TOGGLE: if (record->event.pressed) { - #ifdef AUDIO_ENABLE + if (IS_LAYER_ON(LAYER_MUSIC)) + { + layer_off(LAYER_MUSIC); + stop_all_notes(); + } + else + { PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); layer_on(LAYER_MUSIC); - #endif - } - break; - - case MACRO_MUSIC_OFF: - if (record->event.pressed) - { - #ifdef AUDIO_ENABLE - layer_off(LAYER_MUSIC); - stop_all_notes(); - #endif + } } break; @@ -423,6 +487,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #endif /* AUDIO_ENABLE */ +#ifdef BACKLIGHT_ENABLE + case MACRO_BACKLIGHT: + if (record->event.pressed) + { + backlight_step(); + } +#endif + default: break; @@ -467,39 +539,39 @@ void led_set_user(uint8_t usb_led) _delay_ms(10); // gets rid of tick - if (!is_playing_notes()) - { - if ((usb_led & (1<event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + break; + case _COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + break; + case _DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + break; + case _LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + case _RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + case M_BL: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + case 6: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_off(); + #endif + } + break; + case 7: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_on(); + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + } + break; + case 8: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + layer_off(_MUSIC); + stop_all_notes(); + #endif + } + break; + case 9: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(music_scale, false, 0); + layer_on(_MUSIC); + #endif + } + break; + case 10: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + voice_iterate(); + PLAY_NOTE_ARRAY(music_scale, false, 0); + #endif + } + break; + case 11: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + voice_deiterate(); + PLAY_NOTE_ARRAY(music_scale, false, 0); + #endif + } + break; + case 12: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_off(_MUSIC); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + break; + case 13: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + break; + + } + return MACRO_NONE; +}; + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + _delay_ms(20); // stops the tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif +} + +#ifdef AUDIO_ENABLE +void play_goodbye_tone() +{ + PLAY_NOTE_ARRAY(goodbye, false, 0); + _delay_ms(150); +} + +uint8_t starting_note = 0x0C; +int offset = 0; + +void process_action_user(keyrecord_t *record) { + + if (IS_LAYER_ON(_MUSIC)) { + if (record->event.pressed) { + play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + } else { + stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + } + } + +} +#endif diff --git a/keyboard/planck/keymaps/experimental/makefile.mk b/keyboard/planck/keymaps/experimental/makefile.mk new file mode 100644 index 000000000..99fbfbd0b --- /dev/null +++ b/keyboard/planck/keymaps/experimental/makefile.mk @@ -0,0 +1,2 @@ +AUDIO_ENABLE = yes +NKRO_ENABLE = yes \ No newline at end of file diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c index 830b00a4c..177f04484 100644 --- a/keyboard/planck/keymaps/pvc/keymap.c +++ b/keyboard/planck/keymaps/pvc/keymap.c @@ -38,6 +38,7 @@ #define MACRO_AUDIO_OFF 17 #define MACRO_INC_VOICE 18 #define MACRO_DEC_VOICE 19 +#define MACRO_BACKLIGHT 20 #define M_QWRTY M(MACRO_QWERTY) #define M_COLMK M(MACRO_COLEMAK) @@ -53,6 +54,7 @@ #define TMPO_UP M(MACRO_TEMPO_U) #define TMPO_DN M(MACRO_TEMPO_D) #define TMPO_DF M(MACRO_TONE_DEFAULT) +#define M_BACKL M(MACRO_BACKLIGHT) #define MUS_ON M(MACRO_MUSIC_ON) @@ -217,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LAYER_ADJUST] = { /* ADJUST */ { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF }, { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, _______ }, + { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP, VC_DOWN, _______, _______ }, }, @@ -337,6 +339,15 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; + +#ifdef BACKLIGHT_ENABLE + case MACRO_BACKLIGHT: + if (record->event.pressed) + { + backlight_step(); + } +#endif + #ifdef MOUSEKEY_ENABLE case MACRO_MOUSE: diff --git a/keyboard/planck/keymaps/pvc/makefile.mk b/keyboard/planck/keymaps/pvc/makefile.mk index b3f1b9e51..f7798b09d 100644 --- a/keyboard/planck/keymaps/pvc/makefile.mk +++ b/keyboard/planck/keymaps/pvc/makefile.mk @@ -1,12 +1,12 @@ BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. diff --git a/keyboard/planck/planck.c b/keyboard/planck/planck.c index 655850150..446353dbf 100644 --- a/keyboard/planck/planck.c +++ b/keyboard/planck/planck.c @@ -9,6 +9,9 @@ void matrix_scan_user(void) {} __attribute__ ((weak)) void process_action_user(keyrecord_t *record) {} +__attribute__ ((weak)) +void led_set_user(uint8_t usb_led) {} + void matrix_init_kb(void) { #ifdef BACKLIGHT_ENABLE backlight_init_ports(); @@ -33,8 +36,22 @@ void process_action_kb(keyrecord_t *record) { process_action_user(record); } +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} + #ifdef BACKLIGHT_ENABLE #define CHANNEL OCR1C +#define BREATHING_NO_HALT 0 +#define BREATHING_HALT_OFF 1 +#define BREATHING_HALT_ON 2 + +static uint8_t breath_intensity; +static uint8_t breath_speed; +static uint16_t breathing_index; +static uint8_t breathing_halt; void backlight_init_ports() { @@ -60,22 +77,22 @@ void backlight_init_ports() TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; backlight_init(); + breathing_defaults(); } void backlight_set(uint8_t level) { + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + if ( level == 0 ) { // Turn off PWM control on PB7, revert to output low. TCCR1A &= ~(_BV(COM1C1)); CHANNEL = 0x0; - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); } else if ( level == BACKLIGHT_LEVELS ) { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); // Turn on PWM control of PB7 TCCR1A |= _BV(COM1C1); // Set the brightness @@ -83,13 +100,205 @@ void backlight_set(uint8_t level) } else { - // Prevent backlight blink on lowest level - PORTB &= ~(_BV(PORTB7)); // Turn on PWM control of PB7 TCCR1A |= _BV(COM1C1); // Set the brightness CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); } + breathing_intensity_default(); +} + + +void breathing_enable(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint (brightest point) + breathing_index = 0x20 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_pulse(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_HALT_ON; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); } +void breathing_disable(void) +{ + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + backlight_set(get_backlight_level()); +} + +void breathing_self_disable(void) +{ + if (get_backlight_level() == 0) + { + breathing_halt = BREATHING_HALT_OFF; + } + else + { + breathing_halt = BREATHING_HALT_ON; + } + + //backlight_set(get_backlight_level()); +} + +void breathing_toggle(void) +{ + if (!is_breathing()) + { + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + } + + // Toggle breathing interrupt + TIMSK1 ^= _BV(OCIE1A); + + // Restore backlight level + if (!is_breathing()) + { + backlight_set(get_backlight_level()); + } +} + +bool is_breathing(void) +{ + return (TIMSK1 && _BV(OCIE1A)); +} + +void breathing_intensity_default(void) +{ + //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS); + breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2)); +} + +void breathing_intensity_set(uint8_t value) +{ + breath_intensity = value; +} + +void breathing_speed_default(void) +{ + breath_speed = 4; +} + +void breathing_speed_set(uint8_t value) +{ + bool is_breathing_now = is_breathing(); + uint8_t old_breath_speed = breath_speed; + + if (is_breathing_now) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + breath_speed = value; + + if (is_breathing_now) + { + // Adjust index to account for new speed + breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); + } + +} + +void breathing_speed_inc(uint8_t value) +{ + if ((uint16_t)(breath_speed - value) > 10 ) + { + breathing_speed_set(0); + } + else + { + breathing_speed_set(breath_speed - value); + } +} + +void breathing_speed_dec(uint8_t value) +{ + if ((uint16_t)(breath_speed + value) > 10 ) + { + breathing_speed_set(10); + } + else + { + breathing_speed_set(breath_speed + value); + } +} + +void breathing_defaults(void) +{ + breathing_intensity_default(); + breathing_speed_default(); + breathing_halt = BREATHING_NO_HALT; +} + +/* Breathing Sleep LED brighness(PWM On period) table + * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle + * + * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63 + * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i } + */ +static const uint8_t breathing_table[64] PROGMEM = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, + 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, +255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, + 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +ISR(TIMER1_COMPA_vect) +{ + // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity; + + + uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F; + + if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F))) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity; + +} + + + #endif \ No newline at end of file diff --git a/keyboard/planck/planck.h b/keyboard/planck/planck.h index c5b59d999..cfd4956bf 100644 --- a/keyboard/planck/planck.h +++ b/keyboard/planck/planck.h @@ -45,4 +45,22 @@ void matrix_init_user(void); void matrix_scan_user(void); void process_action_user(keyrecord_t *record); +void led_set_user(uint8_t usb_led); +void backlight_init_ports(void); + +void breathing_enable(void); +void breathing_pulse(void); +void breathing_disable(void); +void breathing_self_disable(void); +void breathing_toggle(void); +bool is_breathing(void); + + +void breathing_defaults(void); +void breathing_intensity_default(void); +void breathing_speed_default(void); +void breathing_speed_set(uint8_t value); +void breathing_speed_inc(uint8_t value); +void breathing_speed_dec(uint8_t value); + #endif diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 3a7f0f556..27b64f8c9 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -374,6 +374,10 @@ bool is_playing_notes(void) { return playing_notes; } +bool is_audio_on(void) { + return (audio_config.enable != 0); +} + void audio_toggle(void) { audio_config.enable ^= 1; eeconfig_update_audio(audio_config.raw); diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 3d706587a..4ba879bbb 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -25,6 +25,7 @@ typedef union { }; } audio_config_t; +bool is_audio_on(void); void audio_toggle(void); void audio_on(void); void audio_off(void); @@ -71,11 +72,11 @@ void stop_note(float freq); void stop_all_notes(void); void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest); -#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ - 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ - 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ - 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ - 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } +#define SCALE (int8_t []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ + 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ + 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ + 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ + 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } // These macros are used to allow play_notes to play an array of indeterminate // length. This works around the limitation of C's sizeof operation on pointers. diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 8c27e9035..322fda498 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -87,8 +87,11 @@ extern const uint16_t fn_actions[]; #define KC_EXCLAIM KC_EXLM #define KC_AT LSFT(KC_2) // @ + + #define KC_HASH LSFT(KC_3) // # + #define KC_DLR LSFT(KC_4) // $ #define KC_DOLLAR KC_DLR @@ -110,11 +113,13 @@ extern const uint16_t fn_actions[]; #define KC_RPRN LSFT(KC_0) // ) #define KC_RIGHT_PAREN KC_RPRN + #define KC_UNDS LSFT(KC_MINS) // _ #define KC_UNDERSCORE KC_UNDS #define KC_PLUS LSFT(KC_EQL) // + + #define KC_LCBR LSFT(KC_LBRC) // { #define KC_LEFT_CURLY_BRACE KC_LCBR @@ -132,6 +137,19 @@ extern const uint16_t fn_actions[]; #define KC_PIPE LSFT(KC_BSLS) // | +#define KC_LT LSFT(KC_COMM) // < + + +#define KC_GT LSFT(KC_DOT) // > + + +#define KC_QUES LSFT(KC_SLSH) // ? +#define KC_QUESTION KC_QUES + + +#define KC_DQT LSFT(KC_QUOT) // " +#define KC_DOUBLE_QUOTE KC_DQT + #define KC_DELT KC_DELETE // Del key (four letter code) // Alias for function layers than expand past FN31 diff --git a/quantum/keymap_midi.h b/quantum/keymap_midi.h index 795f26380..3a2bf3aff 100644 --- a/quantum/keymap_midi.h +++ b/quantum/keymap_midi.h @@ -25,11 +25,11 @@ along with this program. If not, see . #define CHNL(note, channel) (note + (channel << 8)) -#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ - 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ - 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ - 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ - 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } +#define SCALE (int8_t []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ + 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ + 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ + 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ + 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } #define N_CN1 (0x600C + (12 * -1) + 0 ) #define N_CN1S (0x600C + (12 * -1) + 1 ) diff --git a/quantum/quantum.mk b/quantum/quantum.mk index ff34c463a..5f4c2f045 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -28,9 +28,9 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) endif ifeq ($(strip $(AUDIO_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/audio/audio.c - SRC += $(QUANTUM_DIR)/audio/voices.c - SRC += $(QUANTUM_DIR)/audio/luts.c + SRC += $(QUANTUM_DIR)/audio/audio.c + SRC += $(QUANTUM_DIR)/audio/voices.c + SRC += $(QUANTUM_DIR)/audio/luts.c endif ifeq ($(strip $(UNICODE_ENABLE)), yes) diff --git a/tmk_core/common/backlight.c b/tmk_core/common/backlight.c index 2f6fc1cd6..c9e8fd3fd 100644 --- a/tmk_core/common/backlight.c +++ b/tmk_core/common/backlight.c @@ -83,3 +83,8 @@ void backlight_level(uint8_t level) eeconfig_update_backlight(backlight_config.raw); backlight_set(backlight_config.level); } + +uint8_t get_backlight_level(void) +{ + return backlight_config.level; +} \ No newline at end of file diff --git a/tmk_core/common/backlight.h b/tmk_core/common/backlight.h index 525ec8bbe..f57309267 100644 --- a/tmk_core/common/backlight.h +++ b/tmk_core/common/backlight.h @@ -36,5 +36,6 @@ void backlight_toggle(void); void backlight_step(void); void backlight_set(uint8_t level); void backlight_level(uint8_t level); +uint8_t get_backlight_level(void); #endif diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index f06abaf7f..9edcc42a0 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -357,9 +357,11 @@ static bool command_common(uint8_t code) clear_keyboard(); // clear to prevent stuck keys print("\n\nJumping to bootloader... "); #ifdef AUDIO_ENABLE + stop_all_notes(); play_goodbye_tone(); + #else + _delay_ms(1000); #endif - _delay_ms(1000); bootloader_jump(); // not return break; diff --git a/tmk_core/common/nodebug.h b/tmk_core/common/nodebug.h index 93309ada4..5e18656e5 100644 --- a/tmk_core/common/nodebug.h +++ b/tmk_core/common/nodebug.h @@ -16,10 +16,14 @@ along with this program. If not, see . */ #ifndef NODEBUG_H -#define NODEBUG_H 1 +#define NODEBUG_H -#define NO_DEBUG -#include "debug.h" -#undef NO_DEBUG +#ifndef NO_DEBUG + #define NO_DEBUG + #include "debug.h" + #undef NO_DEBUG +#else + #include "debug.h" +#endif #endif -- cgit v1.2.3-24-g4f1b From e4e0b4e105e57346e6dfb48457f22df9b389379f Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 10 May 2016 01:23:51 +0200 Subject: Update build guide with instructions to copy the whole keymap folder (#315) --- BUILD_GUIDE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md index f7a57d2fc..fd8b6202f 100644 --- a/BUILD_GUIDE.md +++ b/BUILD_GUIDE.md @@ -47,8 +47,8 @@ If you have any problems building the firmware, you can try using a tool called Note: Some keyboard folders have non-standard organizations, and may not even support specifying alternate keymaps. Until these get reorganized, you will need to edit their default keymaps directly. -1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides. -2. To build a keymap other than the default, type `KEYMAP=` after `make`. So if I've named my keymap jack.c, the full command would be `make KEYMAP=jack`. +1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, duplicate the folder `keymaps/default`, and rename it with your name, for example `jack`. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides. +2. To build a keymap other than the default, type `KEYMAP=` after `make`. So if I've named my keymap `jack`, the full command would be `make KEYMAP=jack`. 3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP= dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the .hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html) ## Helpful Tips -- cgit v1.2.3-24-g4f1b From 5845eb05b53ea685c9622abf011870ab4ce84f39 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Tue, 10 May 2016 20:48:14 -0400 Subject: [Erez & Jack] Documents audio output --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/README.md b/README.md index 071659e05..395b4a552 100644 --- a/README.md +++ b/README.md @@ -377,6 +377,55 @@ You can currently send 4 hex digits with your OS-specific modifier key (RALT for Enable the backlight from the Makefile. +## Driving a speaker - audio support + +Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any keyboard that allows access to the C6 port, you can hook up a simple speaker and have it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes. + +The audio code lives in [quantum/audio/audio.h](/quantum/audio/audio.h) and in the other files in the audio directory. It's enabled by default on the Planck [stock keymap](/keyboard/planck/keymaps/default/keymap.c). Here are the important bits: + +``` +#include "audio.h" +``` + +Then, lower down the file: + +``` +float tone_startup[][2] = { + ED_NOTE(_E7 ), + E__NOTE(_CS7), + E__NOTE(_E6 ), + E__NOTE(_A6 ), + M__NOTE(_CS7, 20) +}; +``` + +This is how you write a song. Each of these lines is a note, so we have a little ditty composed of five notes here. + +Then, we have this chunk: + +``` +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); + +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +float goodbye[][2] = SONG(GOODBYE_SOUND); +``` + +Wherein we bind predefined songs (from [audio/song_list.h](/audio/song_list.h)) into named variables. This is one optimization that helps save on memory: These songs only take up memory when you reference them in your keymap, because they're essentially all preprocessor directives. + +So now you have something called `tone_plover` for example. How do you make it play the Plover tune, then? If you look further down the keymap, you'll see this: + +``` +PLAY_NOTE_ARRAY(tone_plover, false, 0); // Signature is: Song name, repeat, rest style +``` + +This is inside one of the macros. So when that macro executes, your keyboard plays that particular chime. + +"Rest style" in the method signature above (the last parameter) specifies if there's a rest (a moment of silence) between the notes. + ## MIDI functionalty This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. -- cgit v1.2.3-24-g4f1b