]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware
authorStephan Bösebeck <sb@caluga.de>
Wed, 11 May 2016 20:05:19 +0000 (22:05 +0200)
committerStephan Bösebeck <sb@caluga.de>
Wed, 11 May 2016 20:05:19 +0000 (22:05 +0200)
51 files changed:
BUILD_GUIDE.md
README.md
keyboard/atomic/atomic.c
keyboard/atomic/atomic.h
keyboard/atomic/keymaps/pvc/config.h
keyboard/atomic/keymaps/pvc/keymap.c
keyboard/atomic/keymaps/pvc/makefile.mk
keyboard/atreus/config.h
keyboard/ergodox_ez/Makefile
keyboard/ergodox_ez/keymaps/erez_experimental/config_user.h [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex
keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c
keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/erez_experimental/readme.md
keyboard/ergodox_ez/keymaps/ordinary/keymap.c
keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png
keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.txt
keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png
keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt
keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.txt [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png
keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt
keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
keyboard/ergodox_ez/keymaps/ordinary/readme.md
keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c
keyboard/planck/keymaps/experimental/README.md [new file with mode: 0644]
keyboard/planck/keymaps/experimental/keymap.c [new file with mode: 0644]
keyboard/planck/keymaps/experimental/makefile.mk [new file with mode: 0644]
keyboard/planck/keymaps/pvc/keymap.c
keyboard/planck/keymaps/pvc/makefile.mk
keyboard/planck/planck.c
keyboard/planck/planck.h
quantum/audio/audio.c
quantum/audio/audio.h
quantum/keymap_common.c
quantum/keymap_common.h
quantum/keymap_midi.h
quantum/matrix.c
quantum/quantum.mk
quantum/tools/README.md
tmk_core/common/action.c
tmk_core/common/action_code.h
tmk_core/common/action_util.c
tmk_core/common/action_util.h
tmk_core/common/backlight.c
tmk_core/common/backlight.h
tmk_core/common/command.c
tmk_core/common/nodebug.h
tmk_core/doc/keymap.md
tmk_core/rules.mk

index f7a57d2fc9b028e2de43d19b0f8858d6ea0182d9..fd8b6202ff4acb45e24e33bf1278df40aa5ceb00 100644 (file)
@@ -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=<name>` 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=<name>` 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=<name> dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the <keyboardname>.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
index bb1cca1edf409aae540c2e506395f4dae77d0ddd..395b4a552352ff8025885f68a6d83ce8bd894fd2 100644 (file)
--- 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
@@ -80,17 +87,24 @@ 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  :
 
+`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.
 
@@ -363,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.
index 3996497161cc2400c5ed5f5cce938a45cf47fb64..b4b26145729c042e439125b5f6ab143c7650e832 100644 (file)
@@ -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<<JTD);
     MCUCR |= (1<<JTD);
@@ -35,31 +35,39 @@ void matrix_init_kb(void) {
     DDRE |= (1<<6);
     PORTE |= (1<<6);
 
-       matrix_init_user();
+    matrix_init_user();
 }
 
 void matrix_scan_kb(void) {
-       // put your looping keyboard code here
-       // runs every cycle (a lot)
+    // put your looping keyboard code here
+    // runs every cycle (a lot)
 
-       matrix_scan_user();
+    matrix_scan_user();
 }
 
 void process_action_kb(keyrecord_t *record) {
-       // put your per-action keyboard code here
-       // runs for every action, just before processing by the firmware
+    // put your per-action keyboard code here
+    // runs for every action, just before processing by the firmware
 
-       process_action_user(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
+    // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
 
-       led_set_user(usb_led);
+    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()
 {
@@ -67,54 +75,250 @@ void backlight_init_ports()
     // Setup PB7 as output and output low.
     DDRB |= (1<<7);
     PORTB &= ~(1<<7);
-    
-    // Use full 16-bit resolution. 
+
+    // Use full 16-bit resolution.
     ICR1 = 0xFFFF;
 
     // I could write a wall of text here to explain... but TL;DW
     // Go read the ATmega32u4 datasheet.
     // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on
-    
+
     // Pin PB7 = OCR1C (Timer 1, Channel C)
     // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0
     // (i.e. start high, go low when counter matches.)
     // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0
     // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1
-    
+
     TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010;
     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));
+
+        // Set the brightness to 0
         CHANNEL = 0x0;
-        // Prevent backlight blink on lowest level
-        PORTB &= ~(_BV(PORTB7));
     }
-    else if ( level == BACKLIGHT_LEVELS )
+    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
+
+        // 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
index 0c7aeb1cc8be6e1a0e58bef0d887cebae749975a..845a9043e206703bd7c649861d0deb7abdd45e49 100644 (file)
@@ -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
index 034bc5dc5cc27112680bc1294cdfa37584d0184b..5e956286b542bce4f5db14ba3580e50fbc176088 100644 (file)
@@ -22,7 +22,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* 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 <http://www.gnu.org/licenses/>.
 //#define VIBRATO_ENABLE
 //#define VIBRATO_STRENGTH_ENABLE
 
-
 #endif
index 3d604a868ebbd9d2be4875eabfe807e379345449..ff7384268e24f80768b9814baf8fe7f68fd1d8a1 100644 (file)
@@ -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)
 #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<<LAYER_QWERTY);
-                               #ifdef AUDIO_ENABLE
-                       PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
-                               #endif /* AUDIO_ENABLE */
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
+                #endif /* AUDIO_ENABLE */
             }
             break;
 
@@ -264,9 +328,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             if (record->event.pressed)
             {
                 persistant_default_layer_set(1UL<<LAYER_COLEMAK);
-                               #ifdef AUDIO_ENABLE
-                       PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
-                               #endif /* AUDIO_ENABLE */
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
+                #endif /* AUDIO_ENABLE */
             }
             break;
 
@@ -274,22 +338,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             if (record->event.pressed)
             {
                 persistant_default_layer_set(1UL<<LAYER_DVORAK);
-                               #ifdef AUDIO_ENABLE
-                   PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
-                               #endif /* AUDIO_ENABLE */
+                #ifdef AUDIO_ENABLE
+                    PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
+                #endif /* AUDIO_ENABLE */
             }
             break;
 
-        case MACRO_RAISE:
+        case MACRO_UPPER:
             if (record->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<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK)))
-           {
-                   // If CAPS LK LED is turning on...
-                   PLAY_NOTE_ARRAY(tone_caps_on,  false, LEGATO);
-           }
-           else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK)))
-           {
-                   // If CAPS LK LED is turning off...
-                   PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO);
-           }
-           else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK)))
-           {
-                   // If NUM LK LED is turning on...
-                   PLAY_NOTE_ARRAY(tone_numlk_on,  false, LEGATO);
-           }
-           else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK)))
-           {
-                   // If NUM LED is turning off...
-                   PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO);
-           }
-           else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
-           {
-                   // If SCROLL LK LED is turning on...
-                   PLAY_NOTE_ARRAY(tone_scroll_on,  false, LEGATO);
-           }
-           else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
-           {
-                   // If SCROLL LED is turning off...
-                   PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO);
-           }
-       }
+    if (!is_playing_notes())
+    {
+        if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK)))
+        {
+                // If CAPS LK LED is turning on...
+                PLAY_NOTE_ARRAY(tone_caps_on,  false, LEGATO);
+        }
+        else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK)))
+        {
+                // If CAPS LK LED is turning off...
+                PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO);
+        }
+        else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK)))
+        {
+                // If NUM LK LED is turning on...
+                PLAY_NOTE_ARRAY(tone_numlk_on,  false, LEGATO);
+        }
+        else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK)))
+        {
+                // If NUM LED is turning off...
+                PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO);
+        }
+        else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
+        {
+                // If SCROLL LK LED is turning on...
+                PLAY_NOTE_ARRAY(tone_scroll_on,  false, LEGATO);
+        }
+        else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
+        {
+                // If SCROLL LED is turning off...
+                PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO);
+        }
+    }
 
     old_usb_led = usb_led;
 }
@@ -514,7 +586,8 @@ void play_startup_tone()
 void play_goodbye_tone()
 {
     PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO);
-    _delay_ms(1000);
+    _delay_ms(2000);
+    stop_all_notes();
 }
 
 #endif /* AUDIO_ENABLE */
\ No newline at end of file
index eefa42855fd7d504495b1b9dc1200b353c848b8b..f7798b09d5cb24b321974f5626d57431ae430f4c 100644 (file)
@@ -4,7 +4,7 @@ EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
 CONSOLE_ENABLE   = no  # Console for debug(+400)
 COMMAND_ENABLE   = yes # Commands for debug and configuration
 NKRO_ENABLE      = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no  # Enable keyboard backlight functionality
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
 MIDI_ENABLE      = no  # MIDI controls
 AUDIO_ENABLE     = yes # Audio output on port C6
 UNICODE_ENABLE   = no  # Unicode
index ca0cd7e47a084acc7fe0e1de44cd6021cd3d85f8..55d3b62b9293b68a270d4fd7ff754806e67ce527 100644 (file)
@@ -36,7 +36,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // 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}
index 5dfcca2c80321d43643dfea092b15a353e0fceed..3a07ec254f4db0f4b52a4a66f150299c2d7ba47a 100644 (file)
@@ -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
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 (file)
index 0000000..d19c278
--- /dev/null
@@ -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
index ab32e94dd223fd44318cadc3e6840e9d48b885c0..bdd707165f34c86bc8276950137ecce5cd0951d2 100644 (file)
-:100000000C9465020C94A9020C94A9020C94A90208\r
-:100010000C94A9020C94A9020C94A9020C94A902B4\r
-:100020000C94A9020C94A9020C94A00C0C94720DCF\r
-:100030000C94A9020C94A9020C94A9020C94A90294\r
-:100040000C94A9020C9446220C94A9020C94A902C7\r
-:100050000C94A9020C94EA1B0C94A9020C94A9021A\r
-:100060000C94A9020C94A9020C94A9020C94A90264\r
-:100070000C94A9020C94A9020C94A9020C94A90254\r
-:100080000C94A9020C94A9020C94A9020C94A90244\r
-:100090000C94A9020C94A9020C94A9020C94A90234\r
-:1000A0000C94A9020C94A9020C94A902D70DF90D85\r
-:1000B000E40EF90DE40E3B0E5E0EE40EB30EC60E1A\r
-:1000C000C011C0110112011243127F127F147F145C\r
-:1000D00097127F148E138E1359147F147F146D148E\r
-:1000E0000000F0A12E004C002A00003035810000F5\r
-:1000F0001E00140004001D7134004D001F001A0082\r
-:1001000016001B00E104C1002000080007000600E3\r
-:1001100050002C0021001500090019004F004A0072\r
-:10012000220017000A000500000065745000015409\r
-:1001300000002F7F0000E3004F00015400003077E3\r
-:100140000000E20023001C000B00110000002971D8\r
-:10015000240018000D74100052004B0025000C0004\r
-:100160000E00360051002800260012000F00370054\r
-:100170002F002B81270013003382387130004E008E\r
-:100180002D003100347801302D0000000100010005\r
-:1001900001000100010000003A001E0022002602BA\r
-:1001A000010001003B001F002300270201000100A5\r
-:1001B0003C00200024002F004B0101003D002100E5\r
-:1001C000250030004E0101003E00010026002700FE\r
-:1001D000000001000100010000000100000001001A\r
-:1001E0000100010000000100000001003F000100CB\r
-:1001F0002402310200000100400022022D022602EA\r
-:100200000100010041002E002D0027020100010025\r
-:1002100042001F0213002000010001004300010002\r
-:100220002E02010001000100440045000100010010\r
-:1002300001000000010001000100010001000000B8\r
-:1002400001000100010001000100010001000100A6\r
-:10025000F2000100010001000100F000F1000100C6\r
-:10026000F400010001000100F3000100F5000100AD\r
-:100270000100010001000100000001000100010077\r
-:100280000000010000000100010001000000010069\r
-:100290000000010001000100010001000000010058\r
-:1002A0000100010001000100A9000100010001009E\r
-:1002B0000100AC00AA00B600010001000100AB0083\r
-:1002C000A80001000100010001000100010001007F\r
-:1002D00001000100AE00010001000000160345000E\r
-:1002E000720067006F0044006F0078002000450036\r
-:1002F0005A00000016034500720067006F004400BA\r
-:100300006F007800200045005A0000000403090433\r
-:1003100009026D00040100A0FA09040000010301B4\r
-:100320000100092111010001223F00070581030896\r
-:10033000000A090401000103010200092111010062\r
-:1003400001224D000705820308000A09040200018A\r
-:100350000300000009211101000122360007058376\r
-:100360000308000A09040300010300000009211129\r
-:100370000100012239000705840310000112011059\r
-:100380000100000008EDFE07130100010200010555\r
-:10039000010906A101050719E029E71500250195C6\r
-:1003A0000875018102050819012905950575019156\r
-:1003B000029501750391010507190029771500259C\r
-:1003C00001957875018102C005010980A1018502AE\r
-:1003D00016010026B7001A01002AB7007510950112\r
-:1003E0008100C0050C0901A1018503160100269CAE\r
-:1003F000021A01002A9C02751095018100C00501B6\r
-:100400000902A1010901A100050919012905150029\r
-:10041000250195057501810295017503810105018D\r
-:10042000093009311581257F950275088106093843\r
-:100430001581257F950175088106050C0A3802157E\r
-:1004400081257F950175088106C0C005010906A1B7\r
-:1004500001050719E029E7150025019508750181B7\r
-:100460000295017508810105081901290595057591\r
-:100470000191029501750391010507190029FF15E6\r
-:100480000025FF950675088100C0000000000000EF\r
-:100490000000000000010204060A0F17202C3A4A4F\r
-:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
-:1004B000B39D87715D4A3A2C20170F0A060402018A\r
-:1004C0000000000000000000000011241FBECFEF5C\r
-:1004D000DAE0DEBFCDBF04B603FE24C08091F00198\r
-:1004E0009091F101A091F201B091F3018730904B0E\r
-:1004F000A740B04BB9F41092F0011092F1011092A4\r
-:10050000F2011092F30114BE84B7877F84BF88E1A3\r
-:100510000FB6F89480936000109260000FBEE0E088\r
-:10052000FFE3099511E0A0E0B1E0EAE1F8E402C0E0\r
-:1005300005900D92A433B107D9F711E0A4E3B1E01F\r
-:1005400001C01D92A03FB107E1F70E94E6090C949B\r
-:100550000B240C940000662319F06130F1F03DC0CB\r
-:10056000FC018281882341F00E94B51B90933501E4\r
-:100570008093340181EE1CC080913401909135014B\r
-:100580000E94C11B8634910534F486E20E94481013\r
-:1005900086E20E94101181EE1EC0FC018281882338\r
-:1005A00051F00E94B51B909335018093340185EE84\r
-:1005B0000E94481012C080913401909135010E9430\r
-:1005C000C11B8634910534F487E20E94481087E20B\r
-:1005D0000E94101185EE0E94101180E090E00895B5\r
-:1005E00008956091B3017091B4018091B50190912B\r
-:1005F000B6010E94131B56985E9825982D98269850\r
-:100600002E9827982F98813019F0823021F0089584\r
-:10061000259A2D9A0895269A2E9A08950C94F102FF\r
-:1006200056985E9825982D9826982E9827982F985A\r
-:100630008FEF90E0909389008093880090938B00D7\r
-:1006400080938A0090938D0080938C00259A2D9A38\r
-:100650002FEF80E792E0215080409040E1F700C00A\r
-:100660000000269A2E9A2FEF80E792E021508040DA\r
-:100670009040E1F700C00000279A2F9A2FEF80E703\r
-:1006800092E0215080409040E1F700C000002598A2\r
-:100690002D982FEF80E792E0215080409040E1F7C5\r
-:1006A00000C0000026982E982FEF80E792E021509E\r
-:1006B00080409040E1F700C0000027982F9856989E\r
-:1006C0005E9825982D9826982E9827982F9808950B\r
-:1006D00089EA8093800089E08093810024982C9897\r
-:1006E0003F988AB18F748AB96E98479A8BB1806BA4\r
-:1006F0008BB9769A0E9410030C94F00280E28093EA\r
-:1007000000018091360181110EC00E94CD0381E06D\r
-:10071000809336012FEF83ED90E32150804090408D\r
-:10072000E1F700C0000080E40E94D3038093000141\r
-:1007300081112EC00E94FD0380930001811128C009\r
-:100740000E94FD0380930001811122C08FE30E946B\r
-:10075000FD038093000181111BC00E94F50380E41A\r
-:100760000E94D30380930001811112C08CE00E948B\r
-:10077000FD038093000181110BC00E94FD03809353\r
-:100780000001811105C08FE30E94FD0380930001E9\r
-:100790000E94F5038091000108951092B9008AE04B\r
-:1007A0008093B800089594EA9093BC009091BC00A7\r
-:1007B00097FFFCCF9091B900987F983021F090314D\r
-:1007C00011F081E008958093BB0084E88093BC0021\r
-:1007D0008091BC0087FFFCCF8091B900887F883171\r
-:1007E00011F0803471F780E0089584E98093BC00B3\r
-:1007F0008091BC0084FDFCCF08958093BB0084E809\r
-:100800008093BC008091BC0087FFFCCF9091B90021\r
-:10081000987F81E0983209F480E0089584E880931D\r
-:10082000BC008091BC0087FFFCCF8091BB00089585\r
-:1008300080910001811115C080E40E94D303809350\r
-:10084000000181110CC082E10E94FD038093000130\r
-:10085000811105C08FEF0E94FD03809300010E946B\r
-:10086000F50384B1807F84B985B1807F85B98AB171\r
-:10087000837F8AB98BB1837F8BB93E984698089560\r
-:100880000E947E03809300010E94180480B38C7044\r
-:1008900080BB81B3836F81BBE6E4F1E0A8E3B1E004\r
-:1008A00011921D9281E0E435F807D1F70C946803AA\r
-:1008B000BF92CF92DF92EF92FF920F931F93CF934D\r
-:1008C000DF9380910001882379F0809137018F5F59\r
-:1008D00080933701811108C00E947E03809300013C\r
-:1008E000811102C00E94100308E311E0C0E0D0E0D3\r
-:1008F000DD24D39482E0C82EEE24E394F12CC7309B\r
-:1009000000F580910001811162C080E40E94D30350\r
-:1009100080930001811112C082E10E94FD03809347\r
-:10092000000181110BC0C7010C2E01C0880F0A9471\r
-:10093000EAF780950E94FD03809300010E94F50371\r
-:1009400046C0CA30A1F028F4C83059F0C93061F06F\r
-:1009500005C0CC3089F070F0CD3089F0209A28980D\r
-:1009600010C0219A29980DC0229A2A980AC0239A69\r
-:100970002B9807C0529A01C0539A5B9802C03E9AC6\r
-:100980004698E0EAEA95F1F78FB179995AC092E07A\r
-:1009900081708D25892B7C9B02C090E001C094E082\r
-:1009A000892B7D9B02C090E001C098E0892B7E9B43\r
-:1009B00002C090E001C090E1892B9FB19095991FF2\r
-:1009C0009927991F9295990F907E892B0FC080913E\r
-:1009D000000181114BC080E40E94D3038093000189\r
-:1009E000882389F1B12C0E94F5038B2DF8019081A9\r
-:1009F000981719F08083C09201010E941804219673\r
-:100A00000F5F1F4FCE30D10509F079CF80910101E2\r
-:100A1000882371F1815080930101882339F08FE997\r
-:100A20009FE00197F1F700C0000022C0A6E4B1E00A\r
-:100A3000E8E3F1E081918D9391E0E634F907D1F795\r
-:100A400017C090E0A5CF83E10E94FD0380930001D1\r
-:100A50008111C8CF81E40E94D303809300018111EA\r
-:100A6000C1CF0E940E04B82EB094BDCF80E0BECF9F\r
-:100A70000E940E0381E0DF91CF911F910F91FF90B3\r
-:100A8000EF90DF90CF90BF900895E82FF0E0EA5B01\r
-:100A9000FE4F808108950895089596E0799FF001B2\r
-:100AA000112494E5899FE00DF11D1124E60FF11D3D\r
-:100AB000EE0FFF1FEC51FF4F859194910895880F21\r
-:100AC000991F805A9040FC01859194910895880F58\r
-:100AD000991F80529F4FFC018591949108950F9327\r
-:100AE0001F93CF93DF93EC01811520E3920730F53C\r
-:100AF000811530E2930708F0B1C08B3B910588F473\r
-:100B0000883A910508F058C0853A910508F049C027\r
-:100B10008430910508F043C08130910509F4B2C1D9\r
-:100B2000AEC18F3F910509F0D0F5803F910508F0E7\r
-:100B300092C0805E9109089790F1A1C1C11581E52D\r
-:100B4000D807A8F4C23090E5D90708F09FC0C115B6\r
-:100B500020E5D20709F486C008F092C0C11580E4F0\r
-:100B6000D80708F08CC18E011127106CCCC1C115BB\r
-:100B700090E8D90758F4C11520E7D20708F07BC1E7\r
-:100B8000C11530E6D30708F423C179C1C11580E946\r
-:100B9000D80708F074C18E011F70106AB4C18E01AD\r
-:100BA000B2C1853A910509F470C1863A910509F4FC\r
-:100BB0006FC103E810E4A7C1883A910509F46BC13D\r
-:100BC000893A910509F46AC18A3A910509F469C123\r
-:100BD0008B3A910509F468C18C3A910509F467C113\r
-:100BE0008D3A910509F466C1803B910509F465C110\r
-:100BF0008E3A910509F464C18F3A910509F463C1F5\r
-:100C0000813B910509F462C1823B910509F461C100\r
-:100C1000833B910509F460C1843B910509F45FC1F0\r
-:100C2000853B910509F45EC1863B910509F45DC1E0\r
-:100C3000873B910509F45CC1883B910509F45BC1D0\r
-:100C4000893B910509F45AC18A3B910509F059C1C4\r
-:100C50000AE216E458C18C01106555C19F700E94CC\r
-:100C6000670552C10E94A2149FEF24E33CE091501B\r
-:100C700020403040E1F700C000000E940F1C43C13B\r
-:100C80008091CF0181608093CF013DC10E94B71D4B\r
-:100C9000811102C00E949D1D0E94D41D90E090937E\r
-:100CA000F0018093EF01C23080E5D80721F48091F4\r
-:100CB000EF01816086C0C43090E5D90721F48091AE\r
-:100CC000EF0182607EC0C63020E5D20721F480911A\r
-:100CD000EF01846076C0C83030E5D30719F4809105\r
-:100CE000EF0127C0CA3080E5D80721F48091EF01D9\r
-:100CF000806167C0CC3090E5D90721F48091EF0185\r
-:100D000080625FC0CE3020E5D20721F48091EF01F0\r
-:100D1000806457C0C03130E5D30721F48091EF01E2\r
-:100D200080684FC0C23180E5D80729F48091EF0177\r
-:100D30008460886046C0C33090E5D90721F4809173\r
-:100D4000EF018E7F3EC0C53020E5D20721F48091AF\r
-:100D5000EF018D7F36C0C73030E5D30721F4809195\r
-:100D6000EF018B7F2EC0C93080E5D80719F4809140\r
-:100D7000EF0126C0CB3090E5D90721F48091EF0137\r
-:100D80008F7E1FC0CD3020E5D20721F48091EF0186\r
-:100D90008F7D17C0CF3030E5D30721F48091EF016C\r
-:100DA0008F7B0FC0C13180E5D80721F48091EF011E\r
-:100DB0008F7707C0C331D04531F48091EF018B7F2D\r
-:100DC000877F8093EF018091EF010E94D81D9BC027\r
-:100DD0008D2F99278F70992781309105E9F48E0125\r
-:100DE000037011279C0102C0220F331F0A95E2F7FE\r
-:100DF00089011C68CE0164E0880F991F6A95E1F7AC\r
-:100E000088279370082B192B73E0CC0FDD1F7A9580\r
-:100E1000E1F7C076DD272CC08230910529F41C2F24\r
-:100E20000027016F106A6FC08330910561F4CE0115\r
-:100E30008370992701E010E002C0000F111F8A950E\r
-:100E4000E2F71C680EC0049709F05DC0CE01837004\r
-:100E5000992701E010E002C0000F111F8A95E2F708\r
-:100E60001A6843E0CC0FDD1F4A95E1F7C07ED770CA\r
-:100E70000C2B1D2B48C08E011F70106244C000E077\r
+:100000000C945C020C94A0020C94A0020C94A0022C\r
+:100010000C94A0020C94A0020C94A0020C94A002D8\r
+:100020000C94A0020C94A0020C94970C0C94690DF3\r
+:100030000C94D61B0C94A0020C94A0020C94A00269\r
+:100040000C94A0020C94A0020C94A0020C94A002A8\r
+:100050000C94A0020C943D1C0C94A0020C94A002E1\r
+:100060000C94A0020C94A0020C94A0020C94A00288\r
+:100070000C94A0020C94A0020C94A0020C94A00278\r
+:100080000C94A0020C94A0020C94A0020C94A00268\r
+:100090000C94A0020C94A0020C94A0020C94A00258\r
+:1000A0000C94A0020C94A0020C94A002CE0DF00DB2\r
+:1000B000DB0EF00DDB0E320E550EDB0EAA0EBD0E62\r
+:1000C000CC11CC11FB11FB1146126812CF13CF13C8\r
+:1000D0007312CF131C131C13C013CF13CF13C913E8\r
+:1000E0002913291329132913291329132913291330\r
+:1000F0002913291329132913291329132913291320\r
+:100100003A1348134F13561360130000F0A100C8B0\r
+:1001100001C82E004C002A000030358100001E006E\r
+:10012000140004001D7134004D001F001A00160059\r
+:100130001B00E104C1002000080007000600500079\r
+:100140002C0021001500090019004F004A00220070\r
+:1001500017000A00050000006574500001540000FB\r
+:100160002F7F0000E3004F000154000030770000B3\r
+:10017000E20023001C000B00110000002971240084\r
+:1001800018000D74100052004B0025000C000E00EA\r
+:10019000360051002800260012000F0037002F0003\r
+:1001A0002B81270013003382387130004E002D0060\r
+:1001B0003100347801302D81000001000100010080\r
+:1001C0000100010000003A0001001E0023000100B0\r
+:1001D00001003B0001001F002400010001003C0061\r
+:1001E0000100200025004B0101003D00010021001D\r
+:1001F00026004E0101003E00010022002700000001\r
+:1002000001000100010000000100000001000100E8\r
+:10021000010000000100000001003F000100240275\r
+:10022000310200000100400001002D021F02010008\r
+:100230000100410001002D002E00010001004200DC\r
+:1002400001001300220201000100430001002E0200\r
+:10025000010001000100440045000100010001000F\r
+:100260000000010001000100010001000000010088\r
+:1002700001004B00010001000100010001004A00E3\r
+:10028000010001000100010001004D00010001001A\r
+:100290000100010001004E00010001000100010009\r
+:1002A0000100010001000000010001000100000048\r
+:1002B0000100000001000100010000000100000039\r
+:1002C0000100010001000100010000000100010027\r
+:1002D000010001000100A90001000100010001006E\r
+:1002E000AC00AA00B600010001000100AB00A800AC\r
+:1002F00001000100010001000100010001000100F6\r
+:100300000100AE000100010000001603450072006C\r
+:1003100067006F0044006F007800200045005A001D\r
+:10032000000016034500720067006F0044006F0074\r
+:100330007800200045005A00000004030904090267\r
+:100340006D00040100A0FA0904000001030101008E\r
+:10035000092111010001223F000705810308000A5D\r
+:100360000904010001030102000921110100012219\r
+:100370004D000705820308000A090402000103007A\r
+:10038000000009211101000122360007058303083E\r
+:10039000000A090403000103000000092111010003\r
+:1003A0000122390007058403100001120110010029\r
+:1003B000000008EDFE07130100010200010501091C\r
+:1003C00006A101050719E029E71500250195087523\r
+:1003D000018102050819012905950575019102950C\r
+:1003E000017503910105071900297715002501956D\r
+:1003F0007875018102C005010980A10185021601FD\r
+:100400000026B7001A01002AB70075109501810077\r
+:10041000C0050C0901A1018503160100269C021AE2\r
+:1004200001002A9C02751095018100C00501090296\r
+:10043000A1010901A10005091901290515002501DE\r
+:10044000950575018102950175038101050109304A\r
+:1004500009311581257F95027508810609381581B6\r
+:10046000257F950175088106050C0A38021581253E\r
+:100470007F950175088106C0C005010906A1010527\r
+:100480000719E029E71500250195087501810295F6\r
+:100490000175088101050819012905950575019166\r
+:1004A000029501750391010507190029FF15002523\r
+:1004B000FF950675088100C011241FBECFEFDAE05A\r
+:1004C000DEBFCDBF04B603FE24C08091F20190913F\r
+:1004D000F301A091F401B091F5018730904BA74052\r
+:1004E000B04BB9F41092F2011092F3011092F401A2\r
+:1004F0001092F50114BE84B7877F84BF88E10FB6E0\r
+:10050000F89480936000109260000FBEE0E0FFE37B\r
+:10051000099511E0A0E0B1E0EAEEF7E402C0059031\r
+:100520000D92A433B107D9F711E0A4E3B1E001C003\r
+:100530001D92A23FB107E1F70E94DF090C94F3235B\r
+:100540000C940000CF93DF93EC01662319F0613027\r
+:1005500079F031C08A818823C9F082E00E94561167\r
+:100560008D81982F907F71F080FD0CC086E21BC0BA\r
+:100570008A818823D9F082E00E9456118D81982FBC\r
+:10058000907F71F48D818F708D8315C08D81807FF8\r
+:1005900019F086E20E94071182E00E945D110BC0F3\r
+:1005A00080FDF0CF87E20E943F1005C08D81807FE3\r
+:1005B00099F387E2EFCF80E090E0DF91CF9108954B\r
+:1005C00008956091B1017091B2018091B301909151\r
+:1005D000B4010E943D1B56985E9825982D98269848\r
+:1005E0002E9827982F98813019F0823021F00895A5\r
+:1005F000259A2D9A0895269A2E9A08950C94E10230\r
+:1006000056985E9825982D9826982E9827982F987A\r
+:100610008FEF90E0909389008093880090938B00F7\r
+:1006200080938A0090938D0080938C00259A2D9A58\r
+:100630002FEF80E792E0215080409040E1F700C02A\r
+:100640000000269A2E9A2FEF80E792E021508040FA\r
+:100650009040E1F700C00000279A2F9A2FEF80E723\r
+:1006600092E0215080409040E1F700C000002598C2\r
+:100670002D982FEF80E792E0215080409040E1F7E5\r
+:1006800000C0000026982E982FEF80E792E02150BE\r
+:1006900080409040E1F700C0000027982F985698BE\r
+:1006A0005E9825982D9826982E9827982F9808952B\r
+:1006B00089EA8093800089E08093810024982C98B7\r
+:1006C0003F988AB18F748AB96E98479A8BB1806BC4\r
+:1006D0008BB9769A0E9400030C94E00280E280932A\r
+:1006E00000018091340181110EC00E94BD0381E0A0\r
+:1006F000809334012FEF83ED90E3215080409040B0\r
+:10070000E1F700C0000080E40E94C3038093000171\r
+:1007100081112EC00E94ED0380930001811128C039\r
+:100720000E94ED0380930001811122C08FE30E949B\r
+:10073000ED038093000181111BC00E94E50380E45A\r
+:100740000E94C30380930001811112C08CE00E94BB\r
+:10075000ED038093000181110BC00E94ED03809393\r
+:100760000001811105C08FE30E94ED038093000119\r
+:100770000E94E5038091000108951092B9008AE07B\r
+:100780008093B800089594EA9093BC009091BC00C7\r
+:1007900097FFFCCF9091B900987F983021F090316D\r
+:1007A00011F081E008958093BB0084E88093BC0041\r
+:1007B0008091BC0087FFFCCF8091B900887F883191\r
+:1007C00011F0803471F780E0089584E98093BC00D3\r
+:1007D0008091BC0084FDFCCF08958093BB0084E829\r
+:1007E0008093BC008091BC0087FFFCCF9091B90042\r
+:1007F000987F81E0983209F480E0089584E880933E\r
+:10080000BC008091BC0087FFFCCF8091BB000895A5\r
+:1008100080910001811115C080E40E94C303809380\r
+:10082000000181110CC082E10E94ED038093000160\r
+:10083000811105C08FEF0E94ED03809300010E949B\r
+:10084000E50384B1807F84B985B1807F85B98AB1A1\r
+:10085000837F8AB98BB1837F8BB93E984698089580\r
+:100860000E946E03809300010E94080480B38C7084\r
+:1008700080BB81B3836F81BBE4E4F1E0A6E3B1E028\r
+:1008800011921D9281E0E235F807D1F70C945803DC\r
+:10089000BF92CF92DF92EF92FF920F931F93CF936D\r
+:1008A000DF9380910001882379F0809135018F5F7B\r
+:1008B00080933501811108C00E946E03809300016E\r
+:1008C000811102C00E94000306E311E0C0E0D0E005\r
+:1008D000DD24D39482E0C82EEE24E394F12CC730BB\r
+:1008E00000F580910001811162C080E40E94C30381\r
+:1008F00080930001811112C082E10E94ED03809378\r
+:10090000000181110BC0C7010C2E01C0880F0A9491\r
+:10091000EAF780950E94ED03809300010E94E503B1\r
+:1009200046C0CA30A1F028F4C83059F0C93061F08F\r
+:1009300005C0CC3089F070F0CD3089F0209A28982D\r
+:1009400010C0219A29980DC0229A2A980AC0239A89\r
+:100950002B9807C0529A01C0539A5B9802C03E9AE6\r
+:100960004698E0EAEA95F1F78FB179995AC092E09A\r
+:1009700081708D25892B7C9B02C090E001C094E0A2\r
+:10098000892B7D9B02C090E001C098E0892B7E9B63\r
+:1009900002C090E001C090E1892B9FB19095991F12\r
+:1009A0009927991F9295990F907E892B0FC080915E\r
+:1009B000000181114BC080E40E94C30380930001B9\r
+:1009C000882389F1B12C0E94E5038B2DF8019081D9\r
+:1009D000981719F08083C09201010E9408042196A3\r
+:1009E0000F5F1F4FCE30D10509F079CF8091010103\r
+:1009F000882371F1815080930101882339F08FE9B8\r
+:100A00009FE00197F1F700C0000022C0A4E4B1E02C\r
+:100A1000E6E3F1E081918D9391E0E434F907D1F7B9\r
+:100A200017C090E0A5CF83E10E94ED038093000101\r
+:100A30008111C8CF81E40E94C3038093000181111A\r
+:100A4000C1CF0E94FE03B82EB094BDCF80E0BECFD0\r
+:100A50000E94FE0281E0DF91CF911F910F91FF90E4\r
+:100A6000EF90DF90CF90BF900895E82FF0E0EC5B1F\r
+:100A7000FE4F808108950895089596E0799FF001D2\r
+:100A8000112494E5899FE00DF11D1124E60FF11D5D\r
+:100A9000EE0FFF1FEE5EFE4F859194910895880F33\r
+:100AA000991F86579040FC01859194910895880F75\r
+:100AB000991F865F9E4FFC018591949108950F9335\r
+:100AC0001F93CF93DF93EC01811520E3920730F55C\r
+:100AD000811530E2930708F0B1C08B3B910588F493\r
+:100AE000883A910508F058C0853A910508F049C048\r
+:100AF0008430910508F043C08130910509F4C2C1EA\r
+:100B0000BEC18F3F910509F0D0F5803F910508F0F7\r
+:100B100092C0805E9109089790F1B1C1C11581E53D\r
+:100B2000D807A8F4C23090E5D90708F09FC0C115D6\r
+:100B300020E5D20709F486C008F092C0C11580E410\r
+:100B4000D80708F09CC18E011127106CDCC1C115BB\r
+:100B500090E8D90758F4C11520E7D20708F08BC1F7\r
+:100B6000C11530E6D30708F423C189C1C11580E956\r
+:100B7000D80708F084C18E011F70106AC4C18E01AD\r
+:100B8000C2C1853A910509F480C1863A910509F4FC\r
+:100B90007FC103E810E4B7C1883A910509F47BC12D\r
+:100BA000893A910509F47AC18A3A910509F479C123\r
+:100BB0008B3A910509F478C18C3A910509F477C113\r
+:100BC0008D3A910509F476C1803B910509F475C110\r
+:100BD0008E3A910509F474C18F3A910509F473C1F5\r
+:100BE000813B910509F472C1823B910509F471C101\r
+:100BF000833B910509F470C1843B910509F46FC1F1\r
+:100C0000853B910509F46EC1863B910509F46DC1E0\r
+:100C1000873B910509F46CC1883B910509F46BC1D0\r
+:100C2000893B910509F46AC18A3B910509F069C1C4\r
+:100C30000AE216E468C18C01106565C19F700E94CC\r
+:100C4000570562C10E9419149FEF24E33CE09150C4\r
+:100C500020403040E1F700C000000E94621C53C1F8\r
+:100C60008091D30181608093D3014DC10E940A1EFF\r
+:100C7000811102C00E94F01D0E94271E90E09093F7\r
+:100C8000F2018093F101C23080E5D80721F4809110\r
+:100C9000F101816086C0C43090E5D90721F48091CC\r
+:100CA000F10182607EC0C63020E5D20721F4809138\r
+:100CB000F101846076C0C83030E5D30719F4809123\r
+:100CC000F10127C0CA3080E5D80721F48091F101F5\r
+:100CD000806167C0CC3090E5D90721F48091F101A3\r
+:100CE00080625FC0CE3020E5D20721F48091F1010F\r
+:100CF000806457C0C03130E5D30721F48091F10101\r
+:100D000080684FC0C23180E5D80729F48091F10195\r
+:100D10008460886046C0C33090E5D90721F4809193\r
+:100D2000F1018E7F3EC0C53020E5D20721F48091CD\r
+:100D3000F1018D7F36C0C73030E5D30721F48091B3\r
+:100D4000F1018B7F2EC0C93080E5D80719F480915E\r
+:100D5000F10126C0CB3090E5D90721F48091F10153\r
+:100D60008F7E1FC0CD3020E5D20721F48091F101A4\r
+:100D70008F7D17C0CF3030E5D30721F48091F1018A\r
+:100D80008F7B0FC0C13180E5D80721F48091F1013C\r
+:100D90008F7707C0C331D04531F48091F1018B7F4B\r
+:100DA000877F8093F1018091F1010E942B1EABC0DF\r
+:100DB0008D2F99278F70992781309105E9F48E0145\r
+:100DC000037011279C0102C0220F331F0A95E2F71E\r
+:100DD00089011C68CE01E4E0880F991FEA95E1F7CC\r
+:100DE00088279370082B192BF3E0CC0FDD1FFA95A1\r
+:100DF000E1F7C076DD272CC08230910529F41C2F45\r
+:100E00000027016F106A7FC08330910561F4CE0125\r
+:100E10008370992701E010E002C0000F111F8A952E\r
+:100E2000E2F71C680EC084309105A9F4CE018370EE\r
+:100E3000992701E010E002C0000F111F8A95E2F728\r
+:100E40001A6863E0CC0FDD1F6A95E1F7C07ED770AA\r
+:100E50000C2B1D2B58C08530910529F41C2F002721\r
+:100E6000046F106A50C0069709F04DC0CF71DD279E\r
+:100E70001C2F002702C08E011F70106244C000E0CA\r
 :100E800010E041C001E010E03EC001E810E43BC0CA\r
 :100E900002E810E438C002EE14E435C009EE14E4B0\r
 :100EA00032C00AEE14E42FC005EB14E42CC006EBAC\r
 :100EF00005E216E408C006E216E405C007E216E4BF\r
 :100F000002C000E014E4C801DF91CF911F910F915E\r
 :100F1000089596E0799FF001112494E5899FE00DF2\r
-:100F2000F11D1124E60FF11DEE0FFF1FEC51FF4FD5\r
+:100F2000F11D1124E60FF11DEE0FFF1FEE5EFE4FC7\r
 :100F300085919491803E9105E0F4803C910558F5AF\r
 :100F40008133910509F46FC048F48932910509F4A1\r
 :100F500063C08A32910509F46DC072C0893391056E\r
 :100F6000E9F082389105D1F08533910509F44DC03F\r
 :100F700067C0833E910581F138F4803E9105B9F058\r
 :100F8000823E9105D9F05CC0863E910561F1873EB5\r
-:100F90009105A1F155C00E945F0508952091EF01D0\r
+:100F90009105A1F155C00E944F0508952091F101DE\r
 :100FA00020FD02C021FF4CC080EE90E049C080913E\r
-:100FB000EF0180FFF9CF89E390E042C08091EF011B\r
-:100FC00082FF0EC08091EF0184FF03C080E090E0BB\r
-:100FD00037C083EE90E034C08091EF0182FFF2CF02\r
-:100FE00082EE90E02DC08091EF0183FF0BC08091D5\r
-:100FF000EF0184FDEBCF87EE90E022C08091EF01FE\r
-:1010000083FFF5CF86EE90E01BC08091EF0185FF56\r
-:1010100007C089E290E014C08091EF0185FFF9CF0D\r
-:1010200085E390E00DC08091EF0186FF07C08AE262\r
-:1010300090E006C08091EF0186FFF9CF81E390E058\r
-:101040000E946F05089508950C942308809164010F\r
+:100FB000F10180FFF9CF89E390E042C08091F10117\r
+:100FC00082FF0EC08091F10184FF03C080E090E0B9\r
+:100FD00037C083EE90E034C08091F10182FFF2CF00\r
+:100FE00082EE90E02DC08091F10183FF0BC08091D3\r
+:100FF000F10184FDEBCF87EE90E022C08091F101FA\r
+:1010000083FFF5CF86EE90E01BC08091F10185FF54\r
+:1010100007C089E290E014C08091F10185FFF9CF0B\r
+:1010200085E390E00DC08091F10186FF07C08AE260\r
+:1010300090E006C08091F10186FFF9CF81E390E056\r
+:101040000E945F05089508950C9423088091620121\r
 :101050000895CF93DF9300D01F92CDB7DEB72091D4\r
-:10106000E601243019F523E029839B838A832093AA\r
+:10106000E801243019F523E029839B838A832093A8\r
 :10107000E9008FEF9091E800815095FD06C095ED55\r
 :101080009A95F1F700008111F5CF8091E80085FF76\r
 :101090000DC040E050E063E070E0CE0101960E9498\r
-:1010A000930A8091E8008E778093E8000F900F906C\r
+:1010A0008A0A8091E8008E778093E8000F900F9075\r
 :1010B0000F90DF91CF910895CF93DF9300D01F92CF\r
-:1010C000CDB7DEB72091E601243021F522E0298357\r
+:1010C000CDB7DEB72091E801243021F522E0298355\r
 :1010D0009B838A8383E08093E9008FEF9091E800FF\r
 :1010E000815095FD06C095ED9A95F1F700008111AC\r
 :1010F000F5CF8091E80085FF0DC040E050E063E04F\r
-:1011000070E0CE0101960E94930A8091E8008E77EC\r
+:1011000070E0CE0101960E948A0A8091E8008E77F5\r
 :101110008093E8000F900F900F90DF91CF9108958A\r
-:101120002091E6012430F1F422E02093E9002FEF32\r
+:101120002091E8012430F1F422E02093E9002FEF30\r
 :101130003091E800215035FD06C035ED3A95F1F7C4\r
 :1011400000002111F5CF2091E80025FF0BC040E001\r
-:1011500050E065E070E00E94930A8091E8008E778D\r
-:101160008093E8000895CF93DF93EC018091E6012E\r
+:1011500050E065E070E00E948A0A8091E8008E7796\r
+:101160008093E8000895CF93DF93EC018091E8012C\r
 :10117000843009F046C090910C019923D9F09091E8\r
 :101180000D019923B9F08093E9008FEF9091E80069\r
 :10119000815095FD06C095E19A95F1F70000811107\r
 :1011B00070E017C081E08093E9008FEF9091E80024\r
 :1011C000815095FD06C095ED9A95F1F700008111CB\r
 :1011D000F5CF8091E80085FF14C040E050E068E062\r
-:1011E00070E0CE010E94930A8091E8008E77809390\r
-:1011F000E80080E1FE01A4E5B1E001900D928A953E\r
-:10120000E1F7DF91CF9108958091E501811109C047\r
-:101210000E94250C0E94820C8091E20084608093E1\r
-:10122000E20008951092E501089508950C94332288\r
-:101230000E94A61B0E9439220E941F0F0C942408B2\r
-:1012400042E061EC81E00E949F0B42E061EC82E0B1\r
-:101250000E949F0B42E061EC83E00E949F0B42E101\r
-:1012600061EC84E00C949F0B8091E801833009F4D9\r
-:1012700055C030F4813071F0823009F48EC0089589\r
-:101280008A3009F47AC08B3009F460C0893009F0E3\r
-:101290009CC020C08091E701813A09F096C08091FE\r
-:1012A000E800877F8093E8008091EB019091EC014A\r
-:1012B000892B21F060E080E090E003C060E184E5EC\r
-:1012C00091E070E00E94DC0A8091E8008B778093C7\r
-:1012D000E80008958091E701813209F076C080919D\r
-:1012E000EB019091EC01009719F0039709F06DC0A4\r
-:1012F0008091E800877F8093E8008091E80082FD7C\r
-:1013000005C08091E6018111F8CF5FC08091F100A6\r
-:10131000809364018091E8008B7753C08091E7014E\r
-:10132000813A09F052C08091EB019091EC01892B38\r
-:1013300009F04BC08091E800877F8093E80080919E\r
-:10134000E80080FFFCCF80910C0136C08091E7015E\r
-:101350008132D9F58091EB019091EC01892BA9F5AF\r
-:101360008091E800877F8093E8000E94D40B8091F1\r
-:10137000E90180930C010C94A2148091E701813261\r
-:1013800021F58091E800877F8093E8000E94D40BCC\r
-:101390008091EA018093650108958091E701813A87\r
-:1013A000A1F48091E800877F8093E8008091E800B5\r
-:1013B00080FFFCCF809165018093F1008091E8006F\r
-:1013C0008E778093E8000C94D40B089584B7877FC0\r
-:1013D00084BF88E10FB6F89480936000109260009B\r
-:1013E0000FBE90E080E80FB6F89480936100909370\r
-:1013F00061000FBE0E946E0F0E94250C0E94820C9D\r
-:101400008091E20084608093E20078940E94FD0E57\r
-:101410000E94700F82E091E00E941A0F0E94212228\r
-:101420008091E601853069F40E94661B8091E40199\r
-:101430008823B1F30E94911B882391F30E947D0AB7\r
-:10144000EFCF0E94760FECCF292F332723303105C1\r
-:10145000A9F06CF42130310509F442C02230310585\r
-:1014600009F043C08DE690E020E133E042C0213234\r
-:101470003105C9F02232310519F137C09927813081\r
-:10148000910541F08230910541F0892B71F5ECE036\r
-:10149000F3E005C0E4EFF2E002C0ECEDF2E084918D\r
-:1014A00090E09F0126C0643000F5E62FF0E0EE0FDB\r
-:1014B000FF1FEE5DFE4F2081318189E090E019C071\r
-:1014C000643098F4E62FF0E0DF01AA0FBB1FA65EA0\r
-:1014D000BE4F2D913C91EA5EFE4F808190E009C0A5\r
-:1014E00082E190E02DE733E004C080E090E020E06E\r
-:1014F00030E0FA0131832083089580E189BD82E1E3\r
-:1015000089BD09B400FEFDCF8091D8008F7D809306\r
-:10151000D8008091E00082608093E0008091E0003C\r
-:1015200081FDFCCF0895CF92DF92EF92FF920F934F\r
-:101530001F93CF93DF937C018B01EA010E94F50B8F\r
-:10154000811131C0209731F088819981081B190BD6\r
-:10155000E80EF91EC12CD12C0115110519F180914D\r
-:10156000E80085FD14C08091E8008E778093E80044\r
-:10157000209741F0888199818C0D9D1D99838883E6\r
-:1015800085E011C00E94F50B882331F30CC0F701F0\r
-:1015900081917F018093F10001501109FFEFCF1A73\r
-:1015A000DF0ADACF80E0DF91CF911F910F91FF909A\r
-:1015B000EF90DF90CF9008952091ED013091EE01F2\r
-:1015C0002617370748F06115710539F42091E800B6\r
-:1015D0002E772093E80001C0B901FC0120E06115DD\r
-:1015E0007105B9F18091E601882309F440C0853086\r
-:1015F00009F43FC08091E80083FD3DC08091E80080\r
-:1016000082FF06C08091E80082FF26C080E0089536\r
-:101610008091E80080FFE3CF2091F3008091F200F9\r
-:1016200090E0922B6115710551F08830910538F4E6\r
-:1016300021912093F100615071090196F3CF21E0CF\r
-:10164000089709F020E08091E8008E778093E80009\r
-:10165000C6CF2111C7CFD6CF8091E601882339F0BC\r
-:10166000853039F08091E80083FFCCCF04C082E060\r
-:10167000089583E0089581E008952091ED0130916F\r
-:10168000EE012617370748F06115710539F42091EE\r
-:10169000E8002E772093E80001C0B901FC0120E0AA\r
-:1016A00061157105C1F18091E601882309F441C0FB\r
-:1016B000853009F440C08091E80083FD3EC08091F0\r
-:1016C000E80082FF06C08091E80082FF27C080E02A\r
-:1016D00008958091E80080FFE3CF2091F30080918E\r
-:1016E000F20090E0922B6115710559F08830910558\r
-:1016F00040F424912093F1003196615071090196D4\r
-:10170000F2CF21E0089709F020E08091E8008E7781\r
-:101710008093E800C5CF2111C6CFD5CF8091E601D7\r
-:10172000882339F0853039F08091E80083FFCBCFF2\r
-:1017300004C082E0089583E0089581E00895982F21\r
-:10174000973058F59093E900981739F07091EC00B4\r
-:101750002091ED005091F00003C0242F762F50E02F\r
-:1017600021FF19C03091EB003E7F3093EB003091A8\r
-:10177000ED003D7F3093ED003091EB003160309310\r
-:10178000EB007093EC002093ED005093F00020915B\r
-:10179000EE0027FF07C09F5FD3CF8F708093E900D3\r
-:1017A00081E0089580E008958091E70187FD05C0FC\r
-:1017B0008091E80080FF0EC012C08091E80082FD99\r
-:1017C00005C08091E6018111F8CF08958091E8006D\r
-:1017D0008B7708C08091E6018111EACF089580914E\r
-:1017E000E8008E778093E80008958091E40090915E\r
-:1017F000E50045E62091EC0020FF21C02091E800A3\r
-:1018000020FD21C02091E601222389F0253089F0B6\r
-:101810002091EB0025FD0FC02091E4003091E50000\r
-:101820002817390739F3415041F0C901E3CF82E06D\r
-:10183000089583E0089581E0089584E0089520915B\r
-:10184000E80022FFDFCF80E008950E94930C0E9401\r
-:101850009B0CE0EEF0E0808181608083E8EDF0E0B9\r
-:1018600080818F77808319BCA7EDB0E08C918E7F4B\r
-:101870008C9380818F7E80831092E50108950F9371\r
-:101880001F93CF93DF930E94930C0E949B0CC8ED93\r
-:10189000D0E088818F778883888180688883888179\r
-:1018A0008F7D888319BC1092E6011092E20110929C\r
-:1018B000E4011092E30100EE10E0F80180818B7FDB\r
-:1018C000808388818160888342E060E080E00E94BC\r
-:1018D0009F0BE1EEF0E080818E7F8083E2EEF0E00E\r
-:1018E000808181608083808188608083F80180812D\r
-:1018F0008E7F8083888180618883DF91CF911F9163\r
-:101900000F910895E8EDF0E080818F7E8083E7ED10\r
-:10191000F0E080818160808384E082BF81E08093F9\r
-:10192000E5010C943F0CE8EDF0E080818E7F808330\r
-:101930001092E20008951092DA001092E1000895EA\r
-:101940001F920F920FB60F9211242F933F934F9334\r
-:101950005F936F937F938F939F93AF93BF93EF9317\r
-:10196000FF938091E10082FF0BC08091E20082FF33\r
-:1019700007C08091E1008B7F8093E1000E94FC0E04\r
-:101980008091DA0080FF1FC08091D80080FF1BC0CB\r
-:101990008091DA008E7F8093DA008091D90080FFF9\r
-:1019A0000DC080E189BD82E189BD09B400FEFDCF93\r
-:1019B00081E08093E6010E94040905C019BC1092E1\r
-:1019C000E6010E9412098091E10080FF19C0809118\r
-:1019D000E20080FF15C08091E2008E7F8093E200DC\r
-:1019E0008091E20080618093E2008091D800806263\r
-:1019F0008093D80019BC85E08093E6010E94160907\r
-:101A00008091E10084FF30C08091E20084FF2CC00F\r
-:101A100080E189BD82E189BD09B400FEFDCF8091DE\r
-:101A2000D8008F7D8093D8008091E1008F7E8093D5\r
-:101A3000E1008091E2008F7E8093E2008091E200DD\r
-:101A400081608093E2008091E201882311F084E0BC\r
-:101A500007C08091E30087FF02C083E001C081E0FE\r
-:101A60008093E6010E9418098091E10083FF29C05C\r
-:101A70008091E20083FF25C08091E100877F809301\r
-:101A8000E10082E08093E6011092E2018091E100A2\r
-:101A90008E7F8093E1008091E2008E7F8093E20050\r
-:101AA0008091E20080618093E20042E060E080E0AB\r
-:101AB0000E949F0B8091F00088608093F0000E944C\r
-:101AC0001509FF91EF91BF91AF919F918F917F91F8\r
-:101AD0006F915F914F913F912F910F900FBE0F909B\r
-:101AE0001F9018951F920F920FB60F9211242F93EB\r
-:101AF0003F934F935F936F937F938F939F93AF9396\r
-:101B0000BF93CF93EF93FF93C091E900CF70809183\r
-:101B1000EC001092E9008091F000877F8093F00044\r
-:101B200078940E94AE0D1092E9008091F0008860D8\r
-:101B30008093F000C093E900FF91EF91CF91BF91A6\r
-:101B4000AF919F918F917F916F915F914F913F9155\r
-:101B50002F910F900FBE0F901F9018951F93CF934A\r
-:101B6000DF93CDB7DEB7AA970FB6F894DEBF0FBEEE\r
-:101B7000CDBFE7EEF1E08091F100819321E0EF3EEF\r
-:101B8000F207C9F70E9434098091E80083FF1CC165\r
-:101B90002091E7013091E801832F90E08A30910590\r
-:101BA00008F012C1FC01EA5AFF4F0C94BB23203805\r
-:101BB00081F0223809F008C18091EB018F70809389\r
-:101BC000E9008091EB0085FB882780F91092E900FD\r
-:101BD00006C08091E3019091E4019111826090919F\r
-:101BE000E800977F9093E8008093F1001092F10055\r
-:101BF000C5C0822F8D7F09F0E7C0222319F0223063\r
-:101C000061F0E2C08091E901813009F0DDC033303C\r
-:101C100009F080E08093E40128C08091E9018111FE\r
-:101C200024C02091EB012F7009F4CEC02093E9006D\r
-:101C30008091EB0080FF19C08091EB00333011F4EC\r
-:101C4000806211C080618093EB0081E090E0022E01\r
-:101C500001C0880F0A94EAF78093EA001092EA0024\r
-:101C60008091EB0088608093EB001092E9008091F6\r
-:101C7000E800877F86C02111A7C01091E9011F7776\r
-:101C80008091E3008078812B8093E3008091E800CD\r
-:101C9000877F8093E8000E94D40B8091E80080FF4A\r
-:101CA000FCCF8091E30080688093E300112311F062\r
-:101CB00083E001C082E08093E60186C02058223094\r
-:101CC00008F082C08091E9019091EA018C3D23E007\r
-:101CD000920779F583E08A838AE289834FB7F89483\r
-:101CE000DE01139620E03EE051E2E32FF0E0509356\r
-:101CF0005700E49120FF03C0E295EF703F5FEF7063\r
-:101D00008E2F90E0EA3010F0C79601C0C0968D93F8\r
-:101D10009D932F5F243149F74FBF8091E800877F63\r
-:101D20008093E8006AE270E0CE0101960E94DC0A2E\r
-:101D300014C0AE014F5F5F4F6091EB010E94240A17\r
-:101D4000009709F441C02091E800277F2093E80024\r
-:101D5000BC0189819A810E943D0B8091E8008B77BC\r
-:101D60008093E80031C0203879F58091E800877FC2\r
-:101D70008093E8008091E2018093F1008091E80077\r
-:101D80008E778093E8000E94D40B1EC021111CC0E6\r
-:101D90009091E9019230C0F48091E800877F8093B0\r
-:101DA000E8009093E2010E94D40B8091E20181113E\r
-:101DB00004C08091E30087FF02C084E001C081E09D\r
-:101DC0008093E6010E9420098091E80083FF0AC009\r
-:101DD0008091E800877F8093E8008091EB0080622B\r
-:101DE0008093EB00AA960FB6F894DEBF0FBECDBF6E\r
-:101DF000DF91CF911F9108950895CF938091E601CF\r
-:101E00008823B1F08091E9008F709091EC0090FFF1\r
-:101E100002C090E801C090E0C92FC82B1092E900E1\r
-:101E20008091E80083FD0E94AE0DCF70C093E90061\r
-:101E3000CF91089590936B0180936A010895E0918A\r
-:101E40006A01F0916B01309721F00190F081E02D53\r
-:101E5000099480E00895E0916A01F0916B01309758\r
-:101E600021F00280F381E02D09940895E0916A0148\r
-:101E7000F0916B01309721F00480F581E02D0994F9\r
-:101E8000089520916801309169018217930771F0DC\r
-:101E90009093690180936801E0916A01F0916B0170\r
-:101EA000309721F00680F781E02D09940895209164\r
-:101EB0006601309167018217930771F09093670173\r
-:101EC00080936601E0916A01F0916B01309721F0F7\r
-:101ED0000084F185E02D0994089508950C946D0F08\r
-:101EE0000E94AC1B0E9440040C94721CCF92DF92A3\r
-:101EF000EF92FF920F931F93CF93DF93CDB7DEB78F\r
-:101F00002B970FB6F894DEBF0FBECDBF0E945804CA\r
-:101F10003DE6E32E31E0F32E00E010E0C02E802FEE\r
-:101F20000E944505F701D1907F01D826B1F40F5FDB\r
-:101F30001F4F0E30110591F78FEF89838A831B8223\r
-:101F40000E94B51B8160782F9D838C8349815A81C3\r
-:101F50006B818D810E94191041C09091CF0191FF3A\r
-:101F600004C08B870E944B058B8520E030E04D2D0F\r
-:101F700050E0922FBA01022E02C0759567950A941F\r
-:101F8000E2F760FF25C02E83CF82EE24E394F12C8C\r
-:101F900002C0EE0CFF1C9A95E2F790E08E219F2183\r
-:101FA00021E0892B09F420E028870E94B51B81607D\r
-:101FB000782F9A8789874E815F8168858A850E94FC\r
-:101FC0001910F801E359FE4F80818E25808306C0E9\r
-:101FD0002F5F3F4F2630310561F6A9CF0E94561F73\r
-:101FE00010916C010E941F0F1817A1F00E941F0F83\r
-:101FF00080936C012B960FB6F894DEBF0FBECDBF59\r
-:10200000DF91CF911F910F91FF90EF90DF90CF90D4\r
-:102010000C9424082B960FB6F894DEBF0FBECDBFEC\r
-:10202000DF91CF911F910F91FF90EF90DF90CF90B4\r
-:102030000895CF93DF93CDB7DEB72B970FB6F89403\r
-:10204000DEBF0FBECDBF4F83588769877A878B87E6\r
-:10205000DE01119686E0FD0111928A95E9F785E08F\r
-:10206000FE01379601900D928A95E1F749815A81D8\r
-:102070006B817C818D819E810E946E172B960FB69D\r
-:10208000F894DEBF0FBECDBFDF91CF9108950895C4\r
-:10209000CF93C82F882309F4C1C0823859F40E9415\r
-:1020A0001F0F81FDBBC089E30E941A1A0E94E41A27\r
-:1020B00089E30CC0833879F40E941F0F80FDAEC005\r
-:1020C00083E50E941A1A0E94E41A83E50E945A1AB4\r
-:1020D000CF910C94E41A843859F40E941F0F82FDAA\r
-:1020E0009DC087E40E941A1A0E94E41A87E4EECF8A\r
-:1020F0008CEF8C0F813A48F48C2F0E94892181113A\r
-:102100008DC08C2F0E941A1AE3CF80E28C0F88308A\r
-:1021100048F4C77081E001C0880FCA95EAF70E94B1\r
-:102120009B1AD6CF8BE58C0F833078F4C53A29F013\r
-:10213000C63A31F482E890E005C081E890E002C040\r
-:1021400083E890E0CF910C94410F88E58C0F8331A8\r
-:1021500008F064C0C83A39F1C93A41F1CA3A49F1C4\r
-:10216000CB3A51F1CC3A59F1CD3A61F1C03B69F12A\r
-:10217000CE3A71F1CF3A79F1C13B81F1C23B89F19D\r
-:10218000C33B91F1C43B99F1C53BA1F1C63BA9F119\r
-:10219000C73BB1F1C83BB9F1C93BC1F1CA3BC9F575\r
-:1021A0008AE292E038C082EE90E035C089EE90E09D\r
-:1021B00032C08AEE90E02FC085EB90E02CC086EB19\r
-:1021C00090E029C087EB90E026C08CEC90E023C023\r
-:1021D0008DEC90E020C083E891E01DC08AE891E09A\r
-:1021E0001AC082E991E017C084E991E014C081E24D\r
-:1021F00092E011C083E292E00EC084E292E00BC054\r
-:1022000085E292E008C086E292E005C087E292E0B3\r
-:1022100002C080E090E0CF910C94570FCF910895C9\r
-:10222000882309F44BC0823859F40E941F0F81FFA4\r
-:1022300045C089E30E941A1A0E94E41A89E30CC07F\r
-:10224000833871F40E941F0F80FF38C083E50E941D\r
-:102250001A1A0E94E41A83E50E945A1A0C94E41A8E\r
-:10226000843859F40E941F0F82FF28C087E40E941F\r
-:102270001A1A0E94E41A87E4EFCF9CEF980F913A64\r
-:1022800058F390E2980F983050F4877091E001C0B5\r
-:10229000990F8A95EAF7892F0E94A11ADFCF9BE553\r
-:1022A000980F933020F480E090E00C94410F885A0E\r
-:1022B000833120F480E090E00C94570F0895882338\r
-:1022C00021F00E949B1A0C94E41A0895882321F0AF\r
-:1022D0000E94A11A0C94E41A0895CF92DF92EF9213\r
-:1022E000FF920F931F93CF93DF93CDB7DEB728975D\r
-:1022F0000FB6F894DEBF0FBECDBF8C0185E0F801AC\r
-:10230000DE01119601900D928A95E1F7F801D080D7\r
-:10231000E180F280558152955F7023813481232BB7\r
-:1023200039F0FFEFEF1206C081E0DF1203C003C0F7\r
-:1023300081E001C080E080FDE2C2C8015F830E94AD\r
-:102340004710D982EA8269817A818F2D0E94161AFC\r
-:102350009E8388870E94CA190E949D184E815F81C2\r
-:102360006885FF2029F00E94B81A68855F814E8138\r
-:10237000E42FE295EF70F0E0E05AFF4F0C94BB239E\r
-:10238000842F807F142F1F70882311F01295107FE7\r
-:10239000FF20B1F0112309F467C280E2860F883074\r
-:1023A00028F4812F68870E949B1A04C0812F6887B8\r
-:1023B0000E94AB1A688568870E94E41A688554C237\r
-:1023C000862F68870E9410116885112309F497C22F\r
-:1023D000605E812F683018F40E94A11A02C00E942A\r
-:1023E000B11A28960FB6F894DEBF0FBECDBFDF91AD\r
-:1023F000CF911F910F91FF90EF90DF90CF900C94B1\r
-:10240000E41A242F207F842F8F70203211F08295C0\r
-:10241000807F662319F0613019F12BC0FF20B1F0E5\r
-:10242000552309F493C1513009F090C128960FB695\r
-:10243000F894DEBF0FBECDBFDF91CF911F910F91FA\r
-:10244000FF90EF90DF90CF900C94CB1A552319F0AA\r
-:10245000513009F454C28E830E94CE1A8E8189C1F4\r
-:10246000FF2021F0523008F04AC270C1511147C21A\r
-:1024700080C1FF2021F0552309F468C1F5C155231F\r
-:1024800009F477C105C2242F26952695237030E0E4\r
-:102490002115310521F021303105C9F030C2FF206E\r
-:1024A00021F0862F942F937002C080E090E0289650\r
-:1024B0000FB6F894DEBF0FBECDBFDF91CF911F9155\r
-:1024C0000F91FF90EF90DF90CF900C94410FFF2081\r
-:1024D00021F0862F942F937002C080E090E0289620\r
-:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125\r
-:1024F0000F91FF90EF90DF90CF900C94570F862FA5\r
-:10250000FF2019F00E945E1E02C00E94C61E28967F\r
-:102510000FB6F894DEBF0FBECDBFDF91CF911F91F4\r
-:102520000F91FF90EF90DF90CF900C944B1F842F72\r
-:10253000837009F076C0F110E2C1262F229526950E\r
-:102540002770220F220F862F8F70C82ED12CE12CDE\r
-:10255000F12C022E04C0CC0CDD1CEE1CFF1C0A94D6\r
-:10256000D2F764FF10C06FE070E080E090E004C03C\r
-:10257000660F771F881F991F2A95D2F7609570956F\r
-:102580008095909503C060E070E0CB01242F2695E4\r
-:1025900026952370422F50E042305105D1F0433050\r
-:1025A000510559F16C297D298E299F29413051050A\r
-:1025B00041F128960FB6F894DEBF0FBECDBFDF9174\r
-:1025C000CF911F910F91FF90EF90DF90CF900C94DF\r
-:1025D000C2186C297D298E299F2928960FB6F89458\r
-:1025E000DEBF0FBECDBFDF91CF911F910F91FF9046\r
-:1025F000EF90DF90CF900C94DC180E94C218C701B6\r
-:10260000B60128960FB6F894DEBF0FBECDBFDF919E\r
-:10261000CF911F910F91FF90EF90DF90CF900C948E\r
-:10262000A818FF2019F0842F817001C08695882397\r
-:1026300009F465C1262F229526952770220F220FB7\r
-:10264000862F8F70C82ED12CE12CF12C022E04C0C5\r
-:10265000CC0CDD1CEE1CFF1C0A94D2F764FF10C0EA\r
-:102660006FE070E080E090E004C0660F771F881F85\r
-:10267000991F2A95D2F7609570958095909503C023\r
-:1026800060E070E0CB01242F269526952370422F21\r
-:1026900050E042305105D1F04330510559F16C29D9\r
-:1026A0007D298E299F294130510541F128960FB689\r
-:1026B000F894DEBF0FBECDBFDF91CF911F910F9178\r
-:1026C000FF90EF90DF90CF900C9496196C297D29A4\r
-:1026D0008E299F2928960FB6F894DEBF0FBECDBF76\r
-:1026E000DF91CF911F910F91FF90EF90DF90CF90EE\r
-:1026F0000C94B0190E949619C701B60128960FB61E\r
-:10270000F894DEBF0FBECDBFDF91CF911F910F9127\r
-:10271000FF90EF90DF90CF900C947C19603FC9F14F\r
-:1027200018F4603E50F49BC0623F09F460C008F4A6\r
-:102730004AC0633F09F46FC092C0162F1F70842FE8\r
-:102740008F71FF2099F00E941519812F28960FB6DE\r
-:10275000F894DEBF0FBECDBFDF91CF911F910F91D7\r
-:10276000FF90EF90DF90CF900C945F110E9436198C\r
-:10277000812F28960FB6F894DEBF0FBECDBFDF9134\r
-:10278000CF911F910F91FF90EF90DF90CF900C941D\r
-:102790006611FF20A1F05111B2C0842F8F712896CD\r
-:1027A0000FB6F894DEBF0FBECDBFDF91CF911F9162\r
-:1027B0000F91FF90EF90DF90CF900C945B19523007\r
-:1027C00008F09DC0EACFFF20A1F0842F8F712896DA\r
-:1027D0000FB6F894DEBF0FBECDBFDF91CF911F9132\r
-:1027E0000F91FF90EF90DF90CF900C941519FF2080\r
-:1027F00061F3842F8F7128960FB6F894DEBF0FBE59\r
-:10280000CDBFDF91CF911F910F91FF90EF90DF909F\r
-:10281000CF900C943619FF2091F0842F8F71289659\r
-:102820000FB6F894DEBF0FBECDBFDF91CF911F91E1\r
-:102830000F91FF90EF90DF90CF900C9400192896A5\r
-:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1\r
-:102850000F91FF90EF90DF90CF900C94F618FF202F\r
-:10286000A1F0552309F4B1CF862F28960FB6F8941E\r
-:10287000DEBF0FBECDBFDF91CF911F910F91FF90B3\r
-:10288000EF90DF90CF900C944810552309F4B1CF0E\r
-:10289000862F28960FB6F894DEBF0FBECDBFDF910E\r
-:1028A000CF911F910F91FF90EF90DF90CF900C94FC\r
-:1028B00010114F70C8010E94AB0228960FB6F89411\r
-:1028C000DEBF0FBECDBFDF91CF911F910F91FF9063\r
-:1028D000EF90DF90CF900C941B184F70C801289692\r
-:1028E0000FB6F894DEBF0FBECDBFDF91CF911F9121\r
-:1028F0000F91FF90EF90DF90CF900C944C052896AD\r
-:102900000FB6F894DEBF0FBECDBFDF91CF911F9100\r
-:102910000F91FF90EF90DF90CF9008950E94B81A2A\r
-:102920000E94C81A0E948D1A0E94E41A0E94F71F82\r
-:102930000E944B1F80E090E00E94410F80E090E0F9\r
-:102940000C94570F0E94A81A0C948E140E940B1A14\r
-:10295000292F22952F7030E02C3031054CF42A308D\r
-:1029600031056CF4225031092230310590F407C052\r
-:102970002C30310551F02F30310539F00AC0803E3E\r
-:1029800010F0803F31F481E0089593FB882780F9AF\r
-:10299000089580E00895CF93DF9300D000D01F9278\r
-:1029A000CDB7DEB70F900F900F900F900F90DF9183\r
-:1029B000CF910895CF93DF9300D000D000D0CDB752\r
-:1029C000DEB726960FB6F894DEBF0FBECDBFDF91FF\r
-:1029D000CF9108951F93CF93DF93C0917B0116E0B1\r
-:1029E00080917C01C81799F0D0E01C9FF0011D9FD9\r
-:1029F000F00D1124E358FE4F4081518162817381B3\r
-:102A0000848195810E94DA142196C770E9CFDF9105\r
-:102A1000CF911F9108954091AD015091AE01609109\r
-:102A2000AF017091B0018091B1019091B2010C940D\r
-:102A3000DA14CF938091B20182958F7009F05FC054\r
-:102A40008091AF01882309F45AC020917B01A091A5\r
-:102A50007C016091AD017091AE018091B0019091C7\r
-:102A6000B10131E06F3F09F030E0B32FC6E02A1723\r
-:102A700009F445C0009721F07F3F21F44B2F03C09C\r
-:102A800041E001C040E030E040FD35C0C29FF001B0\r
-:102A9000C39FF00D1124E358FE4F418174132BC0E6\r
-:102AA0004081641328C04281411125C04381548173\r
-:102AB0004817590710F441505109481B590B483C1D\r
-:102AC0005105C8F48091B2018F7080618093B2018A\r
-:102AD00086E0829FF001839FF00D1124EE57FE4F98\r
-:102AE00080818F70806180838DEA91E00E946D11FA\r
-:102AF000CF910C94EA142F5F3F4F2770B8CFCF913E\r
-:102B00000895CF92DF92EF92FF920F931F93CF938E\r
-:102B1000DF93CDB7DEB762970FB6F894DEBF0FBE76\r
-:102B2000CDBF8C0185E0F801DE011D9601900D926C\r
-:102B30008A95E1F7D8014C9111965C911197129604\r
-:102B40006C9112971396ED90FC9014977091AD01D3\r
-:102B5000E091AE012091B0013091B1012115310514\r
-:102B600031F0EF3F31F481E07F3F19F403C081E0A1\r
-:102B700001C080E0B82FB170CB2E80FD6CC1D09029\r
-:102B8000AF01DD2009F4F5C0F091B201E216F306C1\r
-:102B900038F0C701821B930B883C910548F09BC01D\r
-:102BA000209530952E0D3F1D283C310508F093C02F\r
-:102BB0008F2F807F09F052C0E51314C0741312C028\r
-:102BC000D62E61110FC0FF70F061F093B2010E9428\r
-:102BD0000B158DEA91E00E946D118091B201F80110\r
-:102BE00085836CC1EF2831F05F3F31F481E04F3FC6\r
-:102BF00019F403C081E001C080E080FD03C081E0E2\r
-:102C0000862701C080E0F82FF170FF2E80FF1CC0E6\r
-:102C100080917B0120917C0136E0821709F428C164\r
-:102C200090E0389FF001399FF00D1124E358FE4FDA\r
-:102C30007181571306C07081471303C072816713F7\r
-:102C400003C001968770E9CFD62E662309F436C1FA\r
-:102C50008091B20181608093B20153C0E51308C036\r
-:102C6000741306C0611104C0D8011596FC93AEC060\r
-:102C70004D875E878D859E856A8B0E94A6146A8922\r
-:102C8000882329F1D62E662311F12091B201822FDB\r
-:102C900082958F7090E002970CF460C08091AD0136\r
-:102CA0009091AE0198878F831986FB86EA862C87E0\r
-:102CB000CE01079651C0E51731F14D875E878D85AE\r
-:102CC0009E856A8B0E94A6146A8981112EC0C80154\r
-:102CD0000E946D11A4C08F2F807F69F77E2DF98A25\r
-:102CE000E88A89890E94CB148DEA91E00E946D11D7\r
-:102CF000EDEAF1E086E0DF011D928A95E9F70E9496\r
-:102D00000B15D12CDBC07413D8CF6111D6CFD801ED\r
-:102D10001596FC93C8010E946D11EDEAF1E086E082\r
-:102D2000DF011D928A95E9F7C9C0D62E662379F294\r
-:102D30002091B201822F82958F7090E0029774F0FB\r
-:102D40008091AD019091AE019A8389831B82FD82AF\r
-:102D5000EC822E83CE0101960E946D1186E0F8016F\r
-:102D6000ADEAB1E001900D928A95E1F70E94191544\r
-:102D70006FC0E216F30628F0C701821B930B9C017B\r
-:102D800004C0209530952E0D3F1D283C310508F0DC\r
-:102D900052C0D62E662309F49ACFE5132CC07413C3\r
-:102DA0002AC08091B20180FD1DC0982F92959F701E\r
-:102DB000C9F0D80115968C9315979F3039F09F5F15\r
-:102DC0009295907F8F70892B15968C93C8010E94E5\r
-:102DD0006D1186E0F801ADEAB1E001900D928A959F\r
-:102DE000E1F736C086E0F801ADEAB1E001900D925E\r
-:102DF0008A95E1F763C04D875E878D859E850E9429\r
-:102E0000A614882379F086E0F801ADEAB1E00190DC\r
-:102E10000D928A95E1F70E9419150E940B15DD2489\r
-:102E2000D3944CC08091B20181608093B201C801FB\r
-:102E30000E946D1143C07E2DF98AE88A89890E941B\r
-:102E4000CB14EDEAF1E086E0DF011D928A95E9F707\r
-:102E50000E940B1533C0662309F439CF4D875E8776\r
-:102E60008D859E850E94A614882309F430CFCBCF90\r
-:102E70004D875E878D859E850E940B1A292F22958E\r
-:102E80002F7030E0223031052CF49F7041F0811119\r
-:102E900006C00CC0243031052CF49F7049F4805ECC\r
-:102EA000883020F0C8010E946D11CF2CDC2C06C0A8\r
-:102EB000D80115969C91907F91F7F8CF8D2D629651\r
-:102EC0000FB6F894DEBF0FBECDBFDF91CF911F913B\r
-:102ED0000F91FF90EF90DF90CF9008951F93CF93C5\r
-:102EE000DF93CDB7DEB72C970FB6F894DEBF0FBED9\r
-:102EF000CDBF4F83588769877A878B879C87CE01A0\r
-:102F000007960E9481158823C1F02F8138858A8514\r
-:102F10009B85892B31F03F3F11F080E003C02F3FAC\r
-:102F2000E1F781E0811147C04F81588569857A8535\r
-:102F30008B859C850E94DA143EC086E0FE013796A0\r
-:102F4000DE01119601900D928A95E1F7FF81E885E7\r
-:102F50004A855B854115510531F0EF3F31F481E041\r
-:102F6000FF3F19F403C081E001C080E080FD23C071\r
-:102F700020917C0130E0C90101968770992760910A\r
-:102F80007B0170E086179707F1F1F983EA835D838F\r
-:102F90004C8396E0929FD001939FB00D1124A358CB\r
-:102FA000BE4FFE01319601900D929A95E1F7809304\r
-:102FB0007C010E94EA1416E080917B0190917C01D3\r
-:102FC000891779F1189FC001112483589E4F0E94E0\r
-:102FD0008115882331F1E0917B011E9FF0011124BE\r
-:102FE000E358FE4F408151816281738184819581D4\r
-:102FF0000E94DA1480917B0190E0019687709927F6\r
-:1030000080937B01D9CF0E94A21410927C01109270\r
-:103010007B01EDEAF1E086E0DF011D928A95E9F798\r
-:10302000CACF2C960FB6F894DEBF0FBECDBFDF918E\r
-:10303000CF911F910895EF92FF920F931F93CF931B\r
-:10304000DF939C01009709F471C0F12CEE24E39406\r
-:10305000E9012196F9018491843740F4843008F025\r
-:1030600056C0813081F0823021F160C0853709F48B\r
-:1030700049C0C0F19CE7980F903708F057C08F7790\r
-:103080000E94101146C089010E5F1F4FFE018491FE\r
-:1030900090E2980F983050F48770FE2D01C0FF0F1A\r
-:1030A0008A95EAF78F2F0E94BB1A15C00E9448101C\r
-:1030B00014C089010E5F1F4FFE01849190E2980FAA\r
-:1030C000983068F48770FE2D01C0FF0F8A95EAF7EB\r
-:1030D0008F2F0E94C11A0E94E41AE8011AC00E94B0\r
-:1030E0001011FBCF2E5F3F4FFE01C491CC2341F066\r
-:1030F0008FE99FE00197F1F700C00000C150F6CFC3\r
-:10310000E90107C0FE01F490E901229602C00E9485\r
-:1031100048108F2D882341F0EFE9FFE03197F1F758\r
-:1031200000C000008150F6CF9E0192CFDF91CF9179\r
-:103130001F910F91FF90EF90089508956093B7014C\r
-:103140007093B8018093B9019093BA010C948E14D6\r
-:103150000F931F930091B7011091B8012091B9010D\r
-:103160003091BA01062B172B282B392B0093B7016E\r
-:103170001093B8012093B9013093BA011F910F91B8\r
-:103180000C948E140F931F930091B7011091B80106\r
-:103190002091B9013091BA0106231723282339233E\r
-:1031A0000093B7011093B8012093B9013093BA018D\r
-:1031B0001F910F910C948E140F931F930091B701E0\r
-:1031C0001091B8012091B9013091BA010627172753\r
-:1031D000282739270093B7011093B8012093B9012C\r
-:1031E0003093BA011F910F910C948E141092B30179\r
-:1031F0001092B4011092B5011092B6010C948E1485\r
-:1032000041E050E060E070E004C0440F551F661FCD\r
-:10321000771F8A95D2F74093B3015093B40160931E\r
-:10322000B5017093B6010C948E1441E050E060E05B\r
-:1032300070E004C0440F551F661F771F8A95D2F7B0\r
-:103240008091B3019091B401A091B501B091B60104\r
-:10325000842B952BA62BB72B8093B3019093B401AD\r
-:10326000A093B501B093B6010C948E1441E050E0E8\r
-:1032700060E070E004C0440F551F661F771F8A95F9\r
-:10328000D2F740955095609570958091B3019091DB\r
-:10329000B401A091B501B091B60184239523A62372\r
-:1032A000B7238093B3019093B401A093B501B09379\r
-:1032B000B6010C948E1441E050E060E070E004C070\r
-:1032C000440F551F661F771F8A95D2F78091B3016F\r
-:1032D0009091B401A091B501B091B60184279527D2\r
-:1032E000A627B7278093B3019093B401A093B501AB\r
-:1032F000B093B6010C948E140F931F930091B301F9\r
-:103300001091B4012091B5013091B601062B172B15\r
-:10331000282B392B0093B3011093B4012093B501EE\r
-:103320003093B6011F910F910C948E140F931F933D\r
-:103330000091B3011091B4012091B5013091B60113\r
-:1033400006231723282339230093B3011093B401D4\r
-:103350002093B5013093B6011F910F910C948E14F8\r
-:103360000F931F930091B3011091B4012091B50107\r
-:103370003091B60106271727282739270093B30174\r
-:103380001093B4012093B5013093B6011F910F91B2\r
-:103390000C948E140895CF92DF92EF92FF920F93C8\r
-:1033A0001F93CF93DF93EC01C090B701D090B80189\r
-:1033B000E090B901F090BA018091B3019091B4010D\r
-:1033C000A091B501B091B601C82AD92AEA2AFB2AF0\r
-:1033D0000FE110E0B701A601002E04C076956795B5\r
-:1033E000579547950A94D2F740FD05C00150110941\r
-:1033F00088F780E007C0BE01802F0E9489070197EF\r
-:10340000A9F3802FDF91CF911F910F91FF90EF9043\r
-:10341000DF90CF900895CF93DF93EC010E94CB19FA\r
-:10342000BE010E948907DF91CF910895CB010E94D0\r
-:103430000B1A089590910C019923D9F090910D01E8\r
-:103440009923B9F0982F9695969596959F3088F583\r
-:10345000E0910E01F0910F01E90FF11D877021E05D\r
-:1034600030E001C0220F8A95EAF78181822B8183A7\r
-:10347000089540910E0150910F0120E030E09FEF40\r
-:10348000FA01E20FF31F6281681799F09F3F19F468\r
-:10349000611101C0922F2F5F3F4F2E30310581F710\r
-:1034A0009F3F39F0FA01E90FF11D97FDFA958283EC\r
-:1034B0000895089590910C019923E1F090910D01E8\r
-:1034C0009923C1F0982F9695969596959F3020F563\r
-:1034D000E0910E01F0910F01E90FF11D877021E0DD\r
-:1034E00030E001C0220F8A95EAF7209581812823D8\r
-:1034F0002183089540910E0150910F0120E030E0AA\r
-:10350000FA01E20FF31F9281981301C012822F5F1C\r
-:103510003F4F2E303105A1F7089581E090E0E09112\r
-:103520000E01F0910F01E80FF91F10820196803112\r
-:103530009105A9F708959091CE01982B9093CE0113\r
-:10354000089580959091CE0198239093CE0108958F\r
-:103550001092CE0108959091CD01982B9093CD01BA\r
-:10356000089580959091CD0198239093CD01089571\r
-:103570001092CD0108959091CC01982B9093CC019D\r
-:10358000089580959091CC0198239093CC01089553\r
-:103590001092CC0108958093BB0108951092BB0155\r
-:1035A000089540910E0150910F0120E030E080E03D\r
-:1035B000FA01E20FF31F918191118F5F2F5F3F4F4F\r
-:1035C0002F303105A9F70895E0910E01F0910F0118\r
-:1035D0008091CE018083E0910E01F0910F018081F6\r
-:1035E0009091CD01892B8083E0910E01F0910F0124\r
-:1035F00080819091CC01892B80839091BB0199238C\r
-:1036000061F0E0910E01F0910F018081892B8083A0\r
-:103610000E94D11A81111092BB0180910E019091EC\r
-:103620000F010C942B0FCF92DF92EF92FF920F932A\r
-:103630001F936C01EE24FF24C114D104E104F104B2\r
-:1036400021F46B017C0180E001C080E133272F2D44\r
-:103650001E2D0D2D011511052105310519F0885F6D\r
-:103660006801790197018601A4E0369527951795A1\r
-:103670000795AA95D1F7011511052105310519F016\r
-:103680008C5F6801790197018601F2E036952795F4\r
-:1036900017950795FA95D1F7011511052105310503\r
-:1036A00019F08E5F68017901B701A60176956795DB\r
-:1036B00057954795452B462B472B09F08F5F1F9158\r
-:1036C0000F91FF90EF90DF90CF9008958091E601E9\r
-:1036D000843021F11092D00120E488E190E00FB60F\r
-:1036E000F894A895809360000FBE2093600080E05E\r
-:1036F0000E94240883B7817F846083BF83B7816081\r
-:1037000083BF7894889583B78E7F83BF88E10FB697\r
-:10371000F89480936000109260000FBE08950895A1\r
-:103720000895CF930E948F1B0E9458040E94901B03\r
-:10373000C0E08C2F0E944505811105C0CF5FCE30BF\r
-:10374000C1F780E001C081E0CF9108950E94A214EA\r
-:103750000E941F0F0C94240882E084BD93E095BD65\r
-:103760009AEF97BD80936E0008952FB7F8948091DB\r
-:10377000D1019091D201A091D301B091D4012FBF7A\r
-:103780000895CF92DF92EF92FF920F931F932FB77E\r
-:10379000F8944091D1015091D2016091D301709180\r
-:1037A000D4012FBF6A017B01EE24FF248C0120E0AD\r
-:1037B00030E0C016D106E206F30610F4415051097C\r
-:1037C000481B590BCA011F910F91FF90EF90DF909A\r
-:1037D000CF9008951F920F920FB60F9211248F93DE\r
-:1037E0009F93AF93BF938091D1019091D201A0910B\r
-:1037F000D301B091D4010196A11DB11D8093D101D7\r
-:103800009093D201A093D301B093D401BF91AF9113\r
-:103810009F918F910F900FBE0F901F9018950E944F\r
-:10382000250CF8942FEF87EA91E6215080409040D4\r
-:10383000E1F700C0000087E090EBDC018093F0012D\r
-:103840009093F101A093F201B093F3012CE088E191\r
-:1038500090E00FB6F894A895809360000FBE209377\r
-:103860006000FFCFEF92FF920F931F93CF93DF93F0\r
-:10387000E82EF12C8F2D0E944505C0E0D0E0082FE6\r
-:1038800010E098010C2E02C0359527950A94E2F7B6\r
-:1038900020FD05C02196C630D10599F709C06C2FCF\r
-:1038A0007F2D80E00E944D05E812F4CF81E005C035\r
-:1038B000F3948EE0F812DECF80E0DF91CF911F917C\r
-:1038C0000F91FF90EF900895CF93C82F8CE20E9444\r
-:1038D000321C882321F08C2FCF910C94321C80E075\r
-:1038E000CF910895CF930E94B71D811102C00E940D\r
-:1038F0009D1DC5E6C15049F00E9458048FE39CE924\r
-:103900000197F1F700C00000F5CF89E20E94641C26\r
-:10391000811111C18AE20E94641C81110E949D1DC7\r
-:1039200085E00E94641C81110E940F1C0E94C21D30\r
-:103930008093CF0187E00E94641C882399F18BE17A\r
-:103940000E94641C882351F09091CF0191FB88273D\r
-:1039500080F921E0822780FB91F922C08EE00E944D\r
-:10396000641C882351F09091CF0192FB882780F945\r
-:1039700021E0822780FB92F913C080E10E94641C41\r
-:103980009091CF01882341F093FB882780F921E0B3\r
-:10399000822780FB93F904C0892F809580FB90F9E2\r
-:1039A0009093CF018091CF010E94C61D0E94D41D2B\r
-:1039B0008093EF0180EE0E94641C882341F0809187\r
-:1039C000EF01982F909590FB80F98093EF0189E3A8\r
-:1039D0000E94641C882359F09091EF0191FB882785\r
-:1039E00080F921E0822780FB91F99093EF0182EE2C\r
-:1039F0000E94641C882359F09091EF0192FB882764\r
-:103A000080F921E0822780FB92F99093EF0186EE06\r
-:103A10000E94641C882359F09091EF0193FB882742\r
-:103A200080F921E0822780FB93F99093EF0183EEE8\r
-:103A30000E94641C882359F09091EF0194FB882721\r
-:103A400080F921E0822780FB94F99093EF0185E3D0\r
-:103A50000E94641C882359F09091EF0195FB882700\r
-:103A600080F921E0822780FB95F99093EF0181E3B3\r
-:103A70000E94641C882359F09091EF0196FB8827DF\r
-:103A800080F921E0822780FB96F99093EF0181E194\r
-:103A90000E94641C882359F09091EF0197FB8827BE\r
-:103AA00080F921E0822780FB97F99093EF018091C4\r
-:103AB000EF010E94D81D8091EF0187FB882780F9D4\r
-:103AC00080930D0187E20E94641CC82F8EE10E9442\r
-:103AD000641C8111C2608FE10E94641C8111C4606A\r
-:103AE00080E20E94641C8111C86081E20E94641C13\r
-:103AF0008111C06182E20E94641C8111C06283E274\r
-:103B00000E94641C8111C06484E20E94641C8823AA\r
-:103B100011F0C06802C0CC2329F08C2F0E94CF1D69\r
-:103B20006C2F03C00E94CB1D682F70E080E090E0F6\r
-:103B3000CF910C949E18CF9108956DEE7EEF80E0AA\r
-:103B400090E00E94F52360E082E090E00E94E32391\r
-:103B500060E083E090E00E94E32360E084E090E096\r
-:103B60000E94E32360E085E090E00C94E32380E092\r
-:103B700090E00E94DD2321E08D3E9E4F09F020E081\r
-:103B8000822F089582E090E00C94D523682F82E084\r
-:103B900090E00C94E32383E090E00C94D523682F0D\r
-:103BA00083E090E00C94E32384E090E00C94D52330\r
-:103BB000682F84E090E00C94E3238091D70180FF8C\r
-:103BC0000BC06091130185E0689FB00111247595C9\r
-:103BD0006795759567952AC081FF09C060911301AB\r
-:103BE00085E0689FB0011124759567951FC082FF1D\r
-:103BF00007C06091130185E0689FB001112416C0D1\r
-:103C00004091D8014423C9F060911201461788F70A\r
-:103C10002091130185E0289F90011124429FC0014B\r
-:103C2000439F900D112470E00E94A7236038710516\r
-:103C300040F46115710539F002C065E070E0862F2F\r
-:103C400008958FE7089581E008958091D70180FF5E\r
-:103C500008C06091110170E075956795759567953D\r
-:103C600021C081FF06C06091110170E075956795D4\r
-:103C700019C082FF04C06091110170E010C08091F2\r
-:103C8000D8018823C1F0609110018617A0F79091A8\r
-:103C90001101989FC001112470E00E94A723603891\r
-:103CA000710528F46115710521F0862F08958FE7BD\r
-:103CB000089581E0089561E070E0F4CF803F21F441\r
-:103CC0000E94DD1D819504C0813F29F40E94DD1D05\r
-:103CD0008093DB010895823F21F40E94DD1D8195D0\r
-:103CE00004C0833F29F40E94DD1D8093DA0108950A\r
-:103CF000893F19F40E94251E05C08A3F31F40E94B5\r
-:103D0000251E81958093DC0108958B3F21F40E944C\r
-:103D1000251E819504C08C3F29F40E94251E8093A6\r
-:103D2000DD010895843F21F48091D901816017C09D\r
-:103D3000853F21F48091D901826011C0863F21F432\r
-:103D40008091D90184600BC0873F21F48091D90113\r
-:103D5000886005C0883F31F48091D90180618093EB\r
-:103D6000D90108958D3F21F48091D70181600BC066\r
-:103D70008E3F21F48091D701826005C08F3F29F4E6\r
-:103D80008091D70184608093D7010895803F39F4F2\r
-:103D90008091DB0187FF6CC01092DB0169C0813F1D\r
-:103DA00029F48091DB011816BCF362C09091DA010E\r
-:103DB000823F29F497FF5CC01092DA0159C0833F1B\r
-:103DC00019F41916CCF354C0893F41F48091DC01F9\r
-:103DD00018160CF04DC01092DC014AC08A3F29F43D\r
-:103DE0008091DC0187FF44C0F6CF8B3F39F480918E\r
-:103DF000DD0187FF3DC01092DD013AC08C3F29F400\r
-:103E00008091DD011816BCF333C0843F21F480910A\r
-:103E1000D9018E7F17C0853F21F48091D9018D7F14\r
-:103E200011C0863F21F48091D9018B7F0BC0873F61\r
-:103E300021F48091D901877F05C0883F31F48091BA\r
-:103E4000D9018F7E8093D90113C08D3F21F48091D9\r
-:103E5000D7018E7F0BC08E3F21F48091D7018D7FDB\r
-:103E600005C08F3F29F48091D7018B7F8093D701C4\r
-:103E70008091DA0181110EC08091DB0181110AC0AD\r
-:103E80008091DC01811106C08091DD01811102C0A9\r
-:103E90001092D801089589ED91E00E94360F0E949A\r
-:103EA000B51B9093D6018093D50108951F93CF93AE\r
-:103EB000DF938091D5019091D6010E94C11B409162\r
-:103EC000D801442321F02091140130E006C0209154\r
-:103ED00015015AE0259F900111248217930708F4D9\r
-:103EE00082C08091DA011091DB01D091DC01C09198\r
-:103EF000DD01811107C0111105C0D11103C0CC2310\r
-:103F000009F471C04F3F19F04F5F4093D801181664\r
-:103F100024F40E94DD1D8093DA018091DA0187FF8D\r
-:103F200005C00E94DD1D81958093DA01111624F4ED\r
-:103F30000E94DD1D8093DB018091DB0187FF05C0BE\r
-:103F40000E94DD1D81958093DB016091DA0166237B\r
-:103F500039F11091DB01112319F1772767FD709575\r
-:103F6000872F972F0E94B82223E333E343E35FE3D5\r
-:103F70000E941C230E9485226093DA01612F77271B\r
-:103F800067FD7095872F972F0E94B82223E333E3B4\r
-:103F900043E35FE30E941C230E9485226093DB01C0\r
-:103FA0001D1624F40E94251E8093DC018091DC0103\r
-:103FB00087FF05C00E94251E81958093DC011C1699\r
-:103FC00024F40E94251E8093DD018091DD0187FF8E\r
-:103FD00005C00E94251E81958093DD01DF91CF9160\r
-:103FE0001F910C944B1FDF91CF911F910895E9ED24\r
-:103FF000F1E085E0DF011D928A95E9F71092D80182\r
-:104000001092D7010895833081F128F4813059F05E\r
-:104010008230D1F00895853009F449C0B8F1863076\r
-:1040200009F456C0089520911501862F90E0820F63\r
-:10403000911D8F3F910520F4620F60931501089543\r
-:104040008FEF80931501089520911401862F90E041\r
-:10405000820F911D8F3F910520F4620F6093140130\r
-:1040600008958FEF80931401089520911301862FF6\r
-:1040700090E0820F911D8F3F910520F4620F6093B5\r
-:10408000130108958FEF8093130108952091120179\r
-:10409000862F90E0820F911D8F3F910520F4620FD3\r
-:1040A0006093120108958FEF80931201089520917B\r
-:1040B0001101862F90E0820F911D8F3F910520F412\r
-:1040C000620F6093110108958FEF8093110108959D\r
-:1040D00020911001862F90E0820F911D8F3F910556\r
-:1040E00020F4620F6093100108958FEF8093100108\r
-:1040F0000895833011F128F4813049F0823091F035\r
-:104100000895853081F120F18630C1F108958091C4\r
-:104110001501681720F4861B8093150108951092ED\r
-:104120001501089580911401681720F4861B80936F\r
-:1041300014010895109214010895809113016817D5\r
-:1041400020F4861B809313010895109213010895A3\r
-:1041500080911201681720F4861B80931201089544\r
-:1041600010921201089580911101681720F4861BA6\r
-:10417000809311010895109211010895809110010A\r
-:10418000681720F4861B8093100108951092100187\r
-:1041900008958D3109F442C020F58E3009F477C0BE\r
-:1041A00070F4873009F459C018F48630F1F134C046\r
-:1041B000883009F4A8C08B3009F4A5C02DC0863121\r
-:1041C00009F4A1C038F4803109F472C0813109F4D6\r
-:1041D00079C022C0893109F496C08B3109F44DC0F1\r
-:1041E0001BC0853309F487C048F4873209F483C0C3\r
-:1041F00008F473C0893209F47EC00EC0833438F4E9\r
-:104200008A3308F068C0883309F47DC005C0833460\r
-:1042100009F471C0883499F080E008950E943F222B\r
-:104220000E941F0F0E9424086EC08091CF01817FE1\r
-:104230008E7F8093CF0181E08093DF0108950E94FB\r
-:10424000A2142FEF83ED90E3215080409040E1F7DE\r
-:1042500000C000000E940F1C56C09091CF01892F12\r
-:104260008095817080FB90F919F0966098601DC070\r
-:10427000997F977F9093CF0146C09091CF0191FB9A\r
-:10428000882780F921E0822780FB91F909C090916D\r
-:10429000CF0192FB882780F921E0822780FB92F9E9\r
-:1042A0009093CF01882379F191609093CF01089585\r
-:1042B0009091CF0193FB882780F921E0822780FB32\r
-:1042C00093F9EECF0E94A21480910D0191E089270D\r
-:1042D00080930D0118C027EC01C023EE280F61E088\r
-:1042E00070E080E090E004C0660F771F881F991F80\r
-:1042F0002A95D2F704C061E070E080E090E00E946F\r
-:104300009E180E94A21481E0089580E0089580E044\r
-:104310000895CF93C82F8091DF01813079F018F094\r
-:104320008230D1F184C0A0910E01B0910F018C9127\r
-:10433000813169F0823209F07CC009C0A0910E0180\r
-:10434000B0910F018C91813111F0823249F48C2FA0\r
-:104350000E94852181111DC08C2F0E94C9201AC086\r
-:104360008C2F0E948721811114C0C43179F048F448\r
-:10437000CB3079F0C03109F060C082E08093DF017A\r
-:1043800008C0C93219F0C83321F057C01092DF01BC\r
-:1043900054C081E0817053C0C93289F118F5C4312D\r
-:1043A00071F1A8F4C73009F046C08AE08093150186\r
-:1043B00094E19093140193E0909313018093120180\r
-:1043C00088E08093110188E28093100134C0CE51BF\r
-:1043D000C63088F5EC2FF0E0E65DFE4F80818093DB\r
-:1043E000DE0129C0CE34E9F020F4CB3421F56AE0B7\r
-:1043F00013C0C13579F0C235F1F461E00DC0809190\r
-:10440000DE01882319F01092DE0115C081E080934F\r
-:10441000DF0115C061E006C08091DE010E9403202B\r
-:104420000AC06AE08091DE010E94792004C01092E7\r
-:10443000DF0180E004C081E002C080E0ABCFCF911B\r
-:104440000895E1E8F0E08081886080838081816068\r
-:1044500080838FB7F89493E09093890090ED9093C8\r
-:1044600088008FBF0895EFE6F0E08081826080834E\r
-:104470000895EFE6F0E080818D7F80830895EFE678\r
-:10448000F0E0808192E08927808308951F920F9247\r
-:104490000FB60F9211242F933F934F935F936F9317\r
-:1044A0007F938F939F93AF93BF93EF93FF938091ED\r
-:1044B000E0019091E10101969093E1018093E00188\r
-:1044C000811103C082E00E942408E091E101E69599\r
-:1044D000E695F0E0E657FB4FE4918091E0018E1302\r
-:1044E00003C080E00E942408FF91EF91BF91AF913B\r
-:1044F0009F918F917F916F915F914F913F912F91FC\r
-:104500000F900FBE0F901F90189504D06894B111B2\r
-:104510008DC0089570D088F09F5790F0B92F9927DB\r
-:10452000B751A0F0D1F0660F771F881F991F1AF0BE\r
-:10453000BA95C9F712C0B13081F077D0B1E00895D3\r
-:1045400074C0672F782F8827B85F39F0B93FCCF354\r
-:10455000869577956795B395D9F73EF490958095B4\r
-:10456000709561957F4F8F4F9F4F0895E89409C0D4\r
-:1045700097FB3EF490958095709561957F4F8F4F96\r
-:104580009F4F9923A9F0F92F96E9BB279395F695AC\r
-:10459000879577956795B795F111F8CFFAF4BB0F2A\r
-:1045A00011F460FF1BC06F5F7F4F8F4F9F4F16C08E\r
-:1045B000882311F096E911C0772321F09EE8872F18\r
-:1045C000762F05C0662371F096E8862F70E060E0D4\r
-:1045D0002AF09A95660F771F881FDAF7880F96954D\r
-:1045E000879597F9089557FD9058440F551F59F036\r
-:1045F0005F3F71F04795880F97FB991F61F09F3FD0\r
-:1046000079F087950895121613061406551FF2CFF8\r
-:104610004695F1DF08C0161617061806991FF1CF48\r
-:1046200086957105610508940895E894BB2766276F\r
-:104630007727CB0197F908950BD078C069D028F07F\r
-:104640006ED018F0952309F05AC05FC01124EECF48\r
-:10465000CADFA0F3959FD1F3950F50E0551F629FDD\r
-:10466000F001729FBB27F00DB11D639FAA27F00DCB\r
-:10467000B11DAA1F649F6627B00DA11D661F829FF2\r
-:104680002227B00DA11D621F739FB00DA11D621FD7\r
-:10469000839FA00D611D221F749F3327A00D611DF4\r
-:1046A000231F849F600D211D822F762F6A2F1124D6\r
-:1046B0009F5750408AF0E1F088234AF0EE0FFF1F29\r
-:1046C000BB1F661F771F881F91505040A9F79E3F60\r
-:1046D000510570F014C0AACF5F3FECF3983EDCF3B5\r
-:1046E000869577956795B795F795E7959F5FC1F79D\r
-:1046F000FE2B880F911D9695879597F9089597F948\r
-:104700009F6780E870E060E008959FEF80EC089577\r
-:1047100000240A94161617061806090608950024A0\r
-:104720000A9412161306140605060895092E03941A\r
-:10473000000C11F4882352F0BB0F40F4BF2B11F48E\r
-:1047400060FF04C06F5F7F4F8F4F9F4F089597FBAF\r
-:10475000072E16F4009407D077FD09D00E94C123DC\r
-:1047600007FC05D03EF4909581959F4F0895709574\r
-:1047700061957F4F0895EE0FFF1F0590F491E02D96\r
-:104780000994AA1BBB1B51E107C0AA1FBB1FA61798\r
-:10479000B70710F0A61BB70B881F991F5A95A9F7EA\r
-:1047A00080959095BC01CD010895F999FECF92BDF9\r
-:1047B00081BDF89A992780B50895A8E1B0E042E05C\r
-:1047C00050E00C94FD23262FF999FECF92BD81BDB8\r
-:1047D000F89A019700B4021639F01FBA20BD0FB63F\r
-:1047E000F894FA9AF99A0FBE08950196272F0E941D\r
-:1047F000E4230C94E323DC01CB01FC01F999FECF07\r
-:1048000006C0F2BDE1BDF89A319600B40D92415058\r
-:0A4810005040B8F70895F894FFCF68\r
-:10481A0020022608B30890085C0829080101BC0197\r
-:10482A0028080A03140A3F4D36394B04FE03C8030D\r
-:10483A008F0322033B0354036D030102030405069D\r
-:04484A000708090052\r
+:1011E00070E0CE010E948A0A8091E8008E77809399\r
+:1011F000E80080E1FE01A2E5B1E001900D928A9540\r
+:10120000E1F7DF91CF9108958091E701811109C045\r
+:101210000E941C0C0E94790C8091E20084608093F3\r
+:10122000E20008951092E7010895089508950C943E\r
+:10123000D01B42E061EC81E00E94960B42E061EC41\r
+:1012400082E00E94960B42E061EC83E00E94960BE4\r
+:1012500042E161EC84E00C94960B8091EA018330CA\r
+:1012600009F455C030F4813071F0823009F48EC039\r
+:1012700008958A3009F47AC08B3009F460C089304F\r
+:1012800009F09CC020C08091E901813A09F096C024\r
+:101290008091E800877F8093E8008091ED01909134\r
+:1012A000EE01892B21F060E080E090E003C060E176\r
+:1012B00082E591E070E00E94D30A8091E8008B778C\r
+:1012C0008093E80008958091E901813209F076C0A9\r
+:1012D0008091ED019091EE01009719F0039709F0CC\r
+:1012E0006DC08091E800877F8093E8008091E800DE\r
+:1012F00082FD05C08091E8018111F8CF5FC0809127\r
+:10130000F100809362018091E8008B7753C0809157\r
+:10131000E901813A09F052C08091ED019091EE010E\r
+:10132000892B09F04BC08091E800877F8093E8000B\r
+:101330008091E80080FFFCCF80910C0136C0809145\r
+:10134000E9018132D9F58091ED019091EE01892B6F\r
+:10135000A9F58091E800877F8093E8000E94CB0B7D\r
+:101360008091EB0180930C010C9419148091E90198\r
+:10137000813221F58091E800877F8093E8000E9408\r
+:10138000CB0B8091EC018093630108958091E9017A\r
+:10139000813AA1F48091E800877F8093E8008091F2\r
+:1013A000E80080FFFCCF809163018093F100809181\r
+:1013B000E8008E778093E8000C94CB0B089584B7F7\r
+:1013C000877F84BF88E10FB6F89480936000109205\r
+:1013D00060000FBE90E080E80FB6F8948093610043\r
+:1013E000909361000FBE0E94650F0E941C0C0E942A\r
+:1013F000790C8091E20084608093E20078940E94EE\r
+:10140000F40E0E94670F82E091E00E94110F80911C\r
+:10141000E801853069F40E94901B8091E6018823E1\r
+:10142000B1F30E94BB1B882391F30E94740AEFCF93\r
+:101430000E946D0FECCF292F332723303105A9F0FF\r
+:101440006CF42130310509F442C02230310509F035\r
+:1014500043C08DE690E02EE333E042C021323105F7\r
+:10146000C9F02232310519F137C099278130910531\r
+:1014700041F08230910541F0892B71F5EAE3F3E008\r
+:1014800005C0E2E2F3E002C0EAE0F3E0849190E01C\r
+:101490009F0126C0643000F5E62FF0E0EE0FFF1F3D\r
+:1014A000EE5DFE4F2081318189E090E019C064300B\r
+:1014B00098F4E62FF0E0DF01AA0FBB1FA65EBE4F37\r
+:1014C0002D913C91EA5EFE4F808190E009C082E15F\r
+:1014D00090E02BEA33E004C080E090E020E030E0D0\r
+:1014E000FA0131832083089580E189BD82E189BDBD\r
+:1014F00009B400FEFDCF8091D8008F7D8093D80085\r
+:101500008091E00082608093E0008091E00081FDA6\r
+:10151000FCCF0895CF92DF92EF92FF920F931F932B\r
+:10152000CF93DF937C018B01EA010E94EC0B8111C8\r
+:1015300031C0209731F088819981081B190BE80E82\r
+:10154000F91EC12CD12C0115110519F18091E8006B\r
+:1015500085FD14C08091E8008E778093E800209785\r
+:1015600041F0888199818C0D9D1D9983888385E048\r
+:1015700011C00E94EC0B882331F30CC0F70181915C\r
+:101580007F018093F10001501109FFEFCF1ADF0AAC\r
+:10159000DACF80E0DF91CF911F910F91FF90EF9014\r
+:1015A000DF90CF9008952091EF013091F001261740\r
+:1015B000370748F06115710539F42091E8002E775E\r
+:1015C0002093E80001C0B901FC0120E0611571051C\r
+:1015D000B9F18091E801882309F440C0853009F40D\r
+:1015E0003FC08091E80083FD3DC08091E80082FF0C\r
+:1015F00006C08091E80082FF26C080E008958091B7\r
+:10160000E80080FFE3CF2091F3008091F20090E0AA\r
+:10161000922B6115710551F08830910538F42191B4\r
+:101620002093F100615071090196F3CF21E00897F2\r
+:1016300009F020E08091E8008E778093E800C6CF23\r
+:101640002111C7CFD6CF8091E801882339F08530AA\r
+:1016500039F08091E80083FFCCCF04C082E0089588\r
+:1016600083E0089581E008952091EF013091F00129\r
+:101670002617370748F06115710539F42091E80005\r
+:101680002E772093E80001C0B901FC0120E061152C\r
+:101690007105C1F18091E801882309F441C08530CA\r
+:1016A00009F440C08091E80083FD3EC08091E800CD\r
+:1016B00082FF06C08091E80082FF27C080E0089585\r
+:1016C0008091E80080FFE3CF2091F3008091F20049\r
+:1016D00090E0922B6115710559F08830910540F426\r
+:1016E00024912093F1003196615071090196F2CF57\r
+:1016F00021E0089709F020E08091E8008E77809340\r
+:10170000E800C5CF2111C6CFD5CF8091E80188234D\r
+:1017100039F0853039F08091E80083FFCBCF04C0E9\r
+:1017200082E0089583E0089581E00895982F97302E\r
+:1017300058F59093E900981739F07091EC002091DA\r
+:10174000ED005091F00003C0242F762F50E021FFD0\r
+:1017500019C03091EB003E7F3093EB003091ED00EB\r
+:101760003D7F3093ED003091EB0031603093EB0022\r
+:101770007093EC002093ED005093F0002091EE0068\r
+:1017800027FF07C09F5FD3CF8F708093E90081E070\r
+:10179000089580E008958091E90187FD05C080915A\r
+:1017A000E80080FF0EC012C08091E80082FD05C0F5\r
+:1017B0008091E8018111F8CF08958091E8008B773E\r
+:1017C00008C08091E8018111EACF08958091E80076\r
+:1017D0008E778093E80008958091E4009091E50071\r
+:1017E00045E62091EC0020FF21C02091E80020FD7B\r
+:1017F00021C02091E801222389F0253089F0209131\r
+:10180000EB0025FD0FC02091E4003091E500281782\r
+:10181000390739F3415041F0C901E3CF82E008951F\r
+:1018200083E0089581E0089584E008952091E80020\r
+:1018300022FFDFCF80E008950E948A0C0E94920C64\r
+:10184000E0EEF0E0808181608083E8EDF0E080816F\r
+:101850008F77808319BCA7EDB0E08C918E7F8C933D\r
+:1018600080818F7E80831092E70108950F931F93EC\r
+:10187000CF93DF930E948A0C0E94920CC8EDD0E0B7\r
+:1018800088818F77888388818068888388818F7D2D\r
+:10189000888319BC1092E8011092E4011092E601CD\r
+:1018A0001092E50100EE10E0F80180818B7F8083CB\r
+:1018B00088818160888342E060E080E00E94960B2E\r
+:1018C000E1EEF0E080818E7F8083E2EEF0E08081C7\r
+:1018D00081608083808188608083F80180818E7F31\r
+:1018E0008083888180618883DF91CF911F910F91E0\r
+:1018F0000895E8EDF0E080818F7E8083E7EDF0E0F1\r
+:1019000080818160808384E082BF81E08093E701F1\r
+:101910000C94360CE8EDF0E080818E7F808310928D\r
+:10192000E20008951092DA001092E10008951F92EB\r
+:101930000F920FB60F9211242F933F934F935F9303\r
+:101940006F937F938F939F93AF93BF93EF93FF9387\r
+:101950008091E10082FF0BC08091E20082FF07C00E\r
+:101960008091E1008B7F8093E1000E94F30E8091D3\r
+:10197000DA0080FF1FC08091D80080FF1BC08091DB\r
+:10198000DA008E7F8093DA008091D90080FF0DC04D\r
+:1019900080E189BD82E189BD09B400FEFDCF81E00F\r
+:1019A0008093E8010E94040905C019BC1092E80167\r
+:1019B0000E9412098091E10080FF19C08091E2002D\r
+:1019C00080FF15C08091E2008E7F8093E2008091BD\r
+:1019D000E20080618093E2008091D8008062809371\r
+:1019E000D80019BC85E08093E8010E941609809117\r
+:1019F000E10084FF30C08091E20084FF2CC080E1D0\r
+:101A000089BD82E189BD09B400FEFDCF8091D80077\r
+:101A10008F7D8093D8008091E1008F7E8093E100DC\r
+:101A20008091E2008F7E8093E2008091E2008160ED\r
+:101A30008093E2008091E401882311F084E007C0E4\r
+:101A40008091E30087FF02C083E001C081E08093C2\r
+:101A5000E8010E9417098091E10083FF29C080916D\r
+:101A6000E20083FF25C08091E100877F8093E10041\r
+:101A700082E08093E8011092E4018091E1008E7F82\r
+:101A80008093E1008091E2008E7F8093E20080915C\r
+:101A9000E20080618093E20042E060E080E00E942A\r
+:101AA000960B8091F00088608093F0000E941509E9\r
+:101AB000FF91EF91BF91AF919F918F917F916F9126\r
+:101AC0005F914F913F912F910F900FBE0F901F90FC\r
+:101AD00018951F920F920FB60F9211242F933F93D8\r
+:101AE0004F935F936F937F938F939F93AF93BF9326\r
+:101AF000CF93EF93FF93C091E900CF708091EC00FA\r
+:101B00001092E9008091F000877F8093F000789434\r
+:101B10000E94A50D1092E9008091F00088608093EA\r
+:101B2000F000C093E900FF91EF91CF91BF91AF9189\r
+:101B30009F918F917F916F915F914F913F912F91E5\r
+:101B40000F900FBE0F901F9018951F93CF93DF93A8\r
+:101B5000CDB7DEB7AA970FB6F894DEBF0FBECDBFE4\r
+:101B6000E9EEF1E08091F100819321E0E13FF2079D\r
+:101B7000C9F70E942D098091E80083FF1CC12091C4\r
+:101B8000E9013091EA01832F90E08A30910508F055\r
+:101B900012C1FC01EA5AFF4F0C94A323203881F0B4\r
+:101BA000223809F008C18091ED018F708093E9001F\r
+:101BB0008091EB0085FB882780F91092E90006C030\r
+:101BC0008091E5019091E601911182609091E80089\r
+:101BD000977F9093E8008093F1001092F100C5C0C8\r
+:101BE000822F8D7F09F0E7C0222319F0223061F0A7\r
+:101BF000E2C08091EB01813009F0DDC0333009F0A3\r
+:101C000080E08093E60128C08091EB01811124C01F\r
+:101C10002091ED012F7009F4CEC02093E90080914E\r
+:101C2000EB0080FF19C08091EB00333011F480622B\r
+:101C300011C080618093EB0081E090E0022E01C032\r
+:101C4000880F0A94EAF78093EA001092EA008091E4\r
+:101C5000EB0088608093EB001092E9008091E8002F\r
+:101C6000877F86C02111A7C01091EB011F7780915B\r
+:101C7000E3008078812B8093E3008091E800877FE8\r
+:101C80008093E8000E94CB0B8091E80080FFFCCF9E\r
+:101C90008091E30080688093E300112311F083E0DA\r
+:101CA00001C082E08093E80186C02058223008F00D\r
+:101CB00082C08091EB019091EC018C3D23E0920772\r
+:101CC00079F583E08A838AE289834FB7F894DE014D\r
+:101CD000139620E03EE051E2E32FF0E050935700EE\r
+:101CE000E49120FF03C0E295EF703F5FEF708E2F0D\r
+:101CF00090E0EA3010F0C79601C0C0968D939D9396\r
+:101D00002F5F243149F74FBF8091E800877F809390\r
+:101D1000E8006AE270E0CE0101960E94D30A14C086\r
+:101D2000AE014F5F5F4F6091ED010E941B0A00976B\r
+:101D300009F441C02091E800277F2093E800BC010E\r
+:101D400089819A810E94340B8091E8008B7780937F\r
+:101D5000E80031C0203879F58091E800877F8093D2\r
+:101D6000E8008091E4018093F1008091E8008E7793\r
+:101D70008093E8000E94CB0B1EC021111CC09091E3\r
+:101D8000EB019230C0F48091E800877F8093E800F7\r
+:101D90009093E4010E94CB0B8091E401811104C077\r
+:101DA0008091E30087FF02C084E001C081E080935E\r
+:101DB000E8010E9419098091E80083FF0AC0809120\r
+:101DC000E800877F8093E8008091EB008062809339\r
+:101DD000EB00AA960FB6F894DEBF0FBECDBFDF9121\r
+:101DE000CF911F9108950895CF938091E8018823A2\r
+:101DF000B1F08091E9008F709091EC0090FF02C0EB\r
+:101E000090E801C090E0C92FC82B1092E9008091A2\r
+:101E1000E80083FD0E94A50DCF70C093E900CF912B\r
+:101E2000089590936901809368010895E091680195\r
+:101E3000F0916901309721F00190F081E02D099433\r
+:101E400080E00895E0916801F0916901309721F0F8\r
+:101E50000280F381E02D09940895E0916801F091EA\r
+:101E60006901309721F00480F581E02D09940895EF\r
+:101E700020916601309167018217930771F090936A\r
+:101E8000670180936601E0916801F09169013097E4\r
+:101E900021F00680F781E02D0994089520916401D6\r
+:101EA000309165018217930771F0909365018093DB\r
+:101EB0006401E0916801F0916901309721F000849C\r
+:101EC000F185E02D0994089508950C94640F0E9403\r
+:101ED000FF1B0E9430040C94C51CCF92DF92EF923E\r
+:101EE000FF920F931F93CF93DF93CDB7DEB72B975E\r
+:101EF0000FB6F894DEBF0FBECDBF0E9448043BE68C\r
+:101F0000E32E31E0F32E00E010E0C02E802F0E947F\r
+:101F10003505F701D1907F01D826B1F40F5F1F4F2F\r
+:101F20000E30110591F78FEF89838A831B820E94FF\r
+:101F3000081C8160782F9D838C8349815A816B8135\r
+:101F40008D810E94101041C09091D30191FF04C077\r
+:101F50008B870E943B058B8520E030E04D2D50E0C3\r
+:101F6000922FBA01022E02C0759567950A94E2F786\r
+:101F700060FF25C02E83CF82EE24E394F12C02C0B3\r
+:101F8000EE0CFF1C9A95E2F790E08E219F2121E054\r
+:101F9000892B09F420E028870E94081C8160782F93\r
+:101FA0009A8789874E815F8168858A850E94101093\r
+:101FB000F801E559FE4F80818E25808306C02F5F92\r
+:101FC0003F4F2630310561F6A9CF0E94A91F10911D\r
+:101FD0006A010E94160F1817A1F00E94160F809335\r
+:101FE0006A012B960FB6F894DEBF0FBECDBFDF910E\r
+:101FF000CF911F910F91FF90EF90DF90CF900C94B5\r
+:1020000024082B960FB6F894DEBF0FBECDBFDF912C\r
+:10201000CF911F910F91FF90EF90DF90CF90089597\r
+:10202000CF93DF93CDB7DEB72B970FB6F894DEBF13\r
+:102030000FBECDBF4F83588769877A878B87DE01B4\r
+:10204000119686E0FD0111928A95E9F785E0FE017F\r
+:10205000379601900D928A95E1F749815A816B81FB\r
+:102060007C818D819E810E94E9162B960FB6F89493\r
+:10207000DEBF0FBECDBFDF91CF9108950895CF93FE\r
+:10208000C82F882309F4C1C0823859F40E94160F62\r
+:1020900081FDBBC089E30E94301A0E94071B89E3BF\r
+:1020A0000CC0833879F40E94160F80FDAEC083E522\r
+:1020B0000E94301A0E94071B83E50E94701ACF917C\r
+:1020C0000C94071B843859F40E94160F82FD9DC0A2\r
+:1020D00087E40E94301A0E94071B87E4EECF8CEF42\r
+:1020E0008C0F813A48F48C2F0E94D52181118DC02C\r
+:1020F0008C2F0E94301AE3CF80E28C0F883048F496\r
+:10210000C77081E001C0880FCA95EAF70E94B41A2F\r
+:10211000D6CF8BE58C0F833078F4C53A29F0C63AD8\r
+:1021200031F482E890E005C081E890E002C083E8E5\r
+:1021300090E0CF910C94380F88E58C0F833108F034\r
+:1021400064C0C83A39F1C93A41F1CA3A49F1CB3AC7\r
+:1021500051F1CC3A59F1CD3A61F1C03B69F1CE3A37\r
+:1021600071F1CF3A79F1C13B81F1C23B89F1C33BB7\r
+:1021700091F1C43B99F1C53BA1F1C63BA9F1C73B25\r
+:10218000B1F1C83BB9F1C93BC1F1CA3BC9F58AE21B\r
+:1021900092E038C082EE90E035C089EE90E032C027\r
+:1021A0008AEE90E02FC085EB90E02CC086EB90E0AB\r
+:1021B00029C087EB90E026C08CEC90E023C08DEC2A\r
+:1021C00090E020C083E891E01DC08AE891E01AC049\r
+:1021D00082E991E017C084E991E014C081E292E0C5\r
+:1021E00011C083E292E00EC084E292E00BC085E26F\r
+:1021F00092E008C086E292E005C087E292E002C069\r
+:1022000080E090E0CF910C944E0FCF9108958823F9\r
+:1022100009F44BC0823859F40E94160F81FF45C063\r
+:1022200089E30E94301A0E94071B89E30CC083389F\r
+:1022300071F40E94160F80FF38C083E50E94301AA7\r
+:102240000E94071B83E50E94701A0C94071B8438B8\r
+:1022500059F40E94160F82FF28C087E40E94301AAA\r
+:102260000E94071B87E4EFCF9CEF980F913A58F339\r
+:1022700090E2980F983050F4877091E001C0990F68\r
+:102280008A95EAF7892F0E94BA1ADFCF9BE5980F4B\r
+:10229000933020F480E090E00C94380F885A83311A\r
+:1022A00020F480E090E00C944E0F0895882321F0F4\r
+:1022B0000E94B41A0C94071B0895882321F00E94F1\r
+:1022C000BA1A0C94071B08958F929F92AF92BF92F7\r
+:1022D000CF92DF92EF92FF920F931F93CF93DF93F2\r
+:1022E00000D000D01F92CDB7DEB77C0185E0F701AA\r
+:1022F000DE01119601900D928A95E1F7F701D080E9\r
+:1023000011810281B580B2942FE0B2222381348101\r
+:10231000232B39F01F3F39F481E0FFEFDF1203C0B8\r
+:1023200003C081E001C080E080FD5DC20E94CB1946\r
+:10233000882319F082E00E940E1AC7010E943E1005\r
+:10234000D9821A8369817A81802F0E949119182F6E\r
+:10235000C92E0E9445190E94181801110E94D11A15\r
+:102360000E94291A882379F0002369F080E2810F06\r
+:10237000883048F082E00E940E1A0E94291ADD245B\r
+:10238000D394D82601C0D12CEC2DE295EF70F0E06B\r
+:10239000E05AFF4F0C94A3238C2D807F9C2D9F70BF\r
+:1023A000B92E882319F0B29490EFB922002389F056\r
+:1023B000BB2009F4DAC180E2810F883020F48B2D34\r
+:1023C0000E94B41A03C08B2D0E94C41A0E94071BDE\r
+:1023D000CCC1812F0E940711BB2009F4E0C1105E1F\r
+:1023E0008B2D183018F40E94BA1A02C00E94CA1A23\r
+:1023F0000E94071BD4C18C2D807F9C2D9F70A92E1D\r
+:10240000803219F0A29480EFA822112319F0113024\r
+:1024100049F132C0002391F0BB2091F181E0B81264\r
+:1024200004C08A2D0E94E41ABAC192E0B91228C0F1\r
+:102430000E94ED1A8A2D0E94981922C0BB2079F0C3\r
+:10244000E1E0BE1208C00E94B11A8A2109F4A7C1B6\r
+:102450000E949B1904C0F2E0BF1609F4A0C10E94BB\r
+:10246000ED1A12C0002329F081E08B1508F497C102\r
+:1024700007C0B11094C108C0002321F0B11075C18C\r
+:102480008A2DEFC0B11078C18A2DF1C02C2D269570\r
+:102490002695237030E02115310521F021303105DA\r
+:1024A00061F07DC1002321F0812F9C2D937002C02B\r
+:1024B00080E090E00E94380F72C1002321F0812F4C\r
+:1024C0009C2D937002C080E090E00E944E0F67C187\r
+:1024D000812F002319F00E94B11E02C00E94191F13\r
+:1024E0000E949E1F5CC18C2D837009F04FC00111AA\r
+:1024F00056C1212F229526952770220F220F812F5A\r
+:102500008F70882E912CA12CB12C022E04C0880C27\r
+:10251000991CAA1CBB1C0A94D2F714FF10C06FE0D0\r
+:1025200070E080E090E004C0660F771F881F991F5D\r
+:102530002A95D2F7609570958095909503C060E0DC\r
+:1025400070E0CB012C2D269526952370422F50E06C\r
+:102550004230510569F04330510589F068297929E5\r
+:102560008A299B294130510571F00E943D1817C1FD\r
+:10257000682979298A299B290E94571810C10E942D\r
+:102580003D18C501B4010E94231809C1002319F0A8\r
+:102590008C2D817001C08695882309F400C1212FFC\r
+:1025A000229526952770220F220F812F8F70882E5B\r
+:1025B000912CA12CB12C022E04C0880C991CAA1CB1\r
+:1025C000BB1C0A94D2F714FF10C06FE070E080E0EB\r
+:1025D00090E004C0660F771F881F991F2A95D2F7D5\r
+:1025E000609570958095909503C060E070E0CB0198\r
+:1025F0002C2D269526952370422F50E04230510510\r
+:1026000069F04330510589F0682979298A299B2985\r
+:102610004130510571F00E941119C1C06829792912\r
+:102620008A299B290E942B19BAC00E941119C50141\r
+:10263000B4010E94F718B3C0412F50E0FA01E05EE8\r
+:10264000F109E531F10508F08BC0E059FF4F0C941A\r
+:10265000A3231F708C2D8F71002331F00E949018DE\r
+:10266000812F0E9456119BC00E94B118812F0E9499\r
+:102670005D1195C0002339F0B11091C08C2D8F7180\r
+:102680000E94D6188CC091E09B1508F488C0F6CF44\r
+:10269000002339F08C2D8F710E94901880C0002388\r
+:1026A000C9F38C2D8F710E94B11879C0002329F0D5\r
+:1026B0008C2D8F710E947B1872C00E9471186FC0A0\r
+:1026C0000023C9F00E9495190E94BA1A0E94C719E6\r
+:1026D000843029F40E94071A8C2D8F7171C0E1E0BB\r
+:1026E000EB1508F480C01C2D1F71812F0E949018DB\r
+:1026F00063E0812F0EC00E9495190E94B41AF1E088\r
+:10270000FB15D0F40E94071A0E949B1964E08C2DDF\r
+:102710008F710F900F900F900F900F90DF91CF91CE\r
+:102720001F910F91FF90EF90DF90CF90BF90AF90EF\r
+:102730009F908F900C94F71981E00F900F900F905D\r
+:102740000F900F90DF91CF911F910F91FF90EF901D\r
+:10275000DF90CF90BF90AF909F908F900C940E1A07\r
+:10276000002339F0BB2009F495CF812F0E943F1040\r
+:1027700016C0BB2009F495CF812F0E9407110FC00E\r
+:102780004C2D4F70612FC7010E94A2020E94961724\r
+:1027900006C04C2D4F70612FC7010E943C05DD2003\r
+:1027A00011F10E94C71980FD1EC0F70112820E941C\r
+:1027B000C1190E949018C7010E9464110E94C1199A\r
+:1027C0000F900F900F900F900F90DF91CF911F916E\r
+:1027D0000F91FF90EF90DF90CF90BF90AF909F90C0\r
+:1027E0008F900C94B1180F900F900F900F900F9046\r
+:1027F000DF91CF911F910F91FF90EF90DF90CF90DD\r
+:10280000BF90AF909F908F9008950E94D11A0E9420\r
+:10281000E11A0E94A31A0E94071B0E944A200E94EC\r
+:102820009E1F80E090E00E94380F80E090E00C94C2\r
+:102830004E0F0E94C11A0C9405140E948619292F6C\r
+:1028400022952F7030E02C3031054CF42A303105C0\r
+:102850006CF42250310922303105B0F407C02C301D\r
+:10286000310571F02F30310559F00EC0803F31F045\r
+:1028700018F4803E48F402C0843F31F481E00895AA\r
+:1028800093FB882780F9089580E00895CF93DF9324\r
+:1028900000D000D01F92CDB7DEB70F900F900F90F1\r
+:1028A0000F900F90DF91CF910895CF93DF9300D0D9\r
+:1028B00000D000D0CDB7DEB726960FB6F894DEBFB5\r
+:1028C0000FBECDBFDF91CF9108951F93CF93DF93BC\r
+:1028D000C091790116E080917A01C81799F0D0E093\r
+:1028E0001C9FF0011D9FF00D1124E558FE4F408103\r
+:1028F000518162817381848195810E945514219652\r
+:10290000C770E9CFDF91CF911F9108954091AB013E\r
+:102910005091AC016091AD017091AE018091AF0119\r
+:102920009091B0010C945514CF938091B001829591\r
+:102930008F7009F05FC08091AD01882309F45AC0FF\r
+:1029400020917901A0917A016091AB017091AC0165\r
+:102950008091AE019091AF0131E06F3F09F030E01E\r
+:10296000B32FC6E02A1709F445C0009721F07F3F36\r
+:1029700021F44B2F03C041E001C040E030E040FDB6\r
+:1029800035C0C29FF001C39FF00D1124E558FE4FE2\r
+:10299000418174132BC04081641328C042814111CE\r
+:1029A00025C0438154814817590710F441505109FB\r
+:1029B000481B590B483C5105C8F48091B0018F70F9\r
+:1029C00080618093B00186E0829FF001839FF00DCB\r
+:1029D0001124E058FE4F80818F70806180838BEAE4\r
+:1029E00091E00E946411CF910C9465142F5F3F4FCA\r
+:1029F0002770B8CFCF910895CF92DF92EF92FF92D8\r
+:102A00000F931F93CF93DF93CDB7DEB762970FB6C7\r
+:102A1000F894DEBF0FBECDBF8C0185E0F801DE016A\r
+:102A20001D9601900D928A95E1F7D8014C9111966F\r
+:102A30005C91119712966C9112971396ED90FC9001\r
+:102A400014977091AB01E091AC012091AE013091EF\r
+:102A5000AF012115310531F0EF3F31F481E07F3FC7\r
+:102A600019F403C081E001C080E0B82FB170CB2E13\r
+:102A700080FD6CC1D090AD01DD2009F4F5C0F0916E\r
+:102A8000B001E216F30638F0C701821B930B883CB5\r
+:102A9000910548F09BC0209530952E0D3F1D283C98\r
+:102AA000310508F093C08F2F807F09F052C0E513E5\r
+:102AB00014C0741312C0D62E61110FC0FF70F061E4\r
+:102AC000F093B0010E9486148BEA91E00E94641199\r
+:102AD0008091B001F80185836CC1EF2831F05F3F30\r
+:102AE00031F481E04F3F19F403C081E001C080E080\r
+:102AF00080FD03C081E0862701C080E0F82FF170DF\r
+:102B0000FF2E80FF1CC08091790120917A0136E070\r
+:102B1000821709F428C190E0389FF001399FF00D29\r
+:102B20001124E558FE4F7181571306C07081471379\r
+:102B300003C07281671303C001968770E9CFD62E58\r
+:102B4000662309F436C18091B00181608093B001A1\r
+:102B500053C0E51308C0741306C0611104C0D80146\r
+:102B60001596FC93AEC04D875E878D859E856A8BDA\r
+:102B70000E941D146A89882329F1D62E662311F13B\r
+:102B80002091B001822F82958F7090E002970CF413\r
+:102B900060C08091AB019091AC0198878F831986BA\r
+:102BA000FB86EA862C87CE01079651C0E51731F1E6\r
+:102BB0004D875E878D859E856A8B0E941D146A896C\r
+:102BC00081112EC0C8010E946411A4C08F2F807F84\r
+:102BD00069F77E2DF98AE88A89890E9446148BEA72\r
+:102BE00091E00E946411EBEAF1E086E0DF011D92C2\r
+:102BF0008A95E9F70E948614D12CDBC07413D8CFD4\r
+:102C00006111D6CFD8011596FC93C8010E946411BA\r
+:102C1000EBEAF1E086E0DF011D928A95E9F7C9C091\r
+:102C2000D62E662379F22091B001822F82958F7083\r
+:102C300090E0029774F08091AB019091AC019A837F\r
+:102C400089831B82FD82EC822E83CE0101960E9435\r
+:102C5000641186E0F801ABEAB1E001900D928A952B\r
+:102C6000E1F70E9494146FC0E216F30628F0C70142\r
+:102C7000821B930B9C0104C0209530952E0D3F1DA7\r
+:102C8000283C310508F052C0D62E662309F49ACFAD\r
+:102C9000E5132CC074132AC08091B00180FD1DC0C3\r
+:102CA000982F92959F70C9F0D80115968C9315971F\r
+:102CB0009F3039F09F5F9295907F8F70892B15968A\r
+:102CC0008C93C8010E94641186E0F801ABEAB1E080\r
+:102CD00001900D928A95E1F736C086E0F801ABEAE3\r
+:102CE000B1E001900D928A95E1F763C04D875E8750\r
+:102CF0008D859E850E941D14882379F086E0F80159\r
+:102D0000ABEAB1E001900D928A95E1F70E9494142C\r
+:102D10000E948614DD24D3944CC08091B001816060\r
+:102D20008093B001C8010E94641143C07E2DF98ACE\r
+:102D3000E88A89890E944614EBEAF1E086E0DF0127\r
+:102D40001D928A95E9F70E94861433C0662309F420\r
+:102D500039CF4D875E878D859E850E941D148823FF\r
+:102D600009F430CFCBCF4D875E878D859E850E943D\r
+:102D70008619292F22952F7030E0223031052CF44E\r
+:102D80009F7041F0811106C00CC0243031052CF435\r
+:102D90009F7049F4805E883020F0C8010E94641161\r
+:102DA000CF2CDC2C06C0D80115969C91907F91F712\r
+:102DB000F8CF8D2D62960FB6F894DEBF0FBECDBF53\r
+:102DC000DF91CF911F910F91FF90EF90DF90CF9007\r
+:102DD00008951F93CF93DF93CDB7DEB72C970FB62F\r
+:102DE000F894DEBF0FBECDBF4F83588769877A87BF\r
+:102DF0008B879C87CE0107960E94FC148823C1F024\r
+:102E00002F8138858A859B85892B31F03F3F11F0D2\r
+:102E100080E003C02F3FE1F781E0811147C04F817F\r
+:102E2000588569857A858B859C850E9455143EC09E\r
+:102E300086E0FE013796DE01119601900D928A958B\r
+:102E4000E1F7FF81E8854A855B854115510531F041\r
+:102E5000EF3F31F481E0FF3F19F403C081E001C08E\r
+:102E600080E080FD23C020917A0130E0C901019605\r
+:102E7000877099276091790170E086179707F1F1C3\r
+:102E8000F983EA835D834C8396E0929FD001939F00\r
+:102E9000B00D1124A558BE4FFE01319601900D9240\r
+:102EA0009A95E1F780937A010E94651416E080916B\r
+:102EB000790190917A01891779F1189FC001112445\r
+:102EC00085589E4F0E94FC14882331F1E0917901CE\r
+:102ED0001E9FF0011124E558FE4F4081518162810F\r
+:102EE0007381848195810E9455148091790190E0CD\r
+:102EF00001968770992780937901D9CF0E94191480\r
+:102F000010927A0110927901EBEAF1E086E0DF019C\r
+:102F10001D928A95E9F7CACF2C960FB6F894DEBFBA\r
+:102F20000FBECDBFDF91CF911F910895EF92FF9219\r
+:102F30000F931F93CF93DF939C01009709F471C007\r
+:102F4000F12CEE24E394E9012196F9018491843770\r
+:102F500040F4843008F056C0813081F0823021F195\r
+:102F600060C0853709F449C0C0F19CE7980F9037DD\r
+:102F700008F057C08F770E94071146C089010E5F85\r
+:102F80001F4FFE01849190E2980F983050F48770A3\r
+:102F9000FE2D01C0FF0F8A95EAF78F2F0E94D41AE9\r
+:102FA00015C00E943F1014C089010E5F1F4FFE0123\r
+:102FB000849190E2980F983068F48770FE2D01C0DC\r
+:102FC000FF0F8A95EAF78F2F0E94DA1A0E94071BDB\r
+:102FD000E8011AC00E940711FBCF2E5F3F4FFE0190\r
+:102FE000C491CC2341F08FE99FE00197F1F700C035\r
+:102FF0000000C150F6CFE90107C0FE01F490E901DD\r
+:10300000229602C00E943F108F2D882341F0EFE9E5\r
+:10301000FFE03197F1F700C000008150F6CF9E012C\r
+:1030200092CFDF91CF911F910F91FF90EF90089574\r
+:1030300008956093B5017093B6018093B7019093A2\r
+:10304000B8010C9405140F931F930091B5011091D2\r
+:10305000B6012091B7013091B801062B172B282B10\r
+:10306000392B0093B5011093B6012093B70130932B\r
+:10307000B8011F910F910C9405140F931F930091A9\r
+:10308000B5011091B6012091B7013091B801062326\r
+:103090001723282339230093B5011093B6012093F9\r
+:1030A000B7013093B8011F910F910C9405140F9341\r
+:1030B0001F930091B5011091B6012091B701309195\r
+:1030C000B80106271727282739270093B501109341\r
+:1030D000B6012093B7013093B8011F910F910C9462\r
+:1030E00005141092B1011092B2011092B301109226\r
+:1030F000B4010C94051441E050E060E070E004C0BD\r
+:10310000440F551F661F771F8A95D2F74093B10170\r
+:103110005093B2016093B3017093B4010C94051401\r
+:1031200041E050E060E070E004C0440F551F661FAE\r
+:10313000771F8A95D2F78091B1019091B201A09149\r
+:10314000B301B091B401842B952BA62BB72B8093A0\r
+:10315000B1019093B201A093B301B093B4010C9468\r
+:10316000051441E050E060E070E004C0440F551FDA\r
+:10317000661F771F8A95D2F7409550956095709598\r
+:103180008091B1019091B201A091B301B091B401CD\r
+:1031900084239523A623B7238093B1019093B20192\r
+:1031A000A093B301B093B4010C94051441E050E036\r
+:1031B00060E070E004C0440F551F661F771F8A95BA\r
+:1031C000D2F78091B1019091B201A091B301B09179\r
+:1031D000B40184279527A627B7278093B101909340\r
+:1031E000B201A093B301B093B4010C9405140F93F2\r
+:1031F0001F930091B1011091B2012091B301309160\r
+:10320000B401062B172B282B392B0093B1011093F7\r
+:10321000B2012093B3013093B4011F910F910C942C\r
+:1032200005140F931F930091B1011091B2012091E9\r
+:10323000B3013091B40106231723282339230093C7\r
+:10324000B1011093B2012093B3013093B4011F91E7\r
+:103250000F910C9405140F931F930091B1011091DD\r
+:10326000B2012091B3013091B40106271727282716\r
+:1032700039270093B1011093B2012093B301309329\r
+:10328000B4011F910F910C9405140895CF92DF9211\r
+:10329000EF92FF920F931F93CF93DF93EC01C090B7\r
+:1032A000B501D090B601E090B701F090B8018091DF\r
+:1032B000B1019091B201A091B301B091B401C82ABB\r
+:1032C000D92AEA2AFB2A0FE110E0B701A601002E55\r
+:1032D00004C076956795579547950A94D2F740FDB7\r
+:1032E00005C00150110988F780E007C0BE01802F9A\r
+:1032F0000E9489070197A9F3802FDF91CF911F9139\r
+:103300000F91FF90EF90DF90CF900895CF93DF93D0\r
+:10331000EC010E944619BE010E948907DF91CF91FE\r
+:103320000895CB010E94861908958091BE010895E9\r
+:103330008093BE0108951092BE0108950E94081C5A\r
+:103340002091BC013091BD018217930750F00E947B\r
+:10335000081C2091BC013091BD01821B930B9C0184\r
+:103360000AC00E94081C2091BC013091BD0120952B\r
+:103370003095280F391F81E0283B3B4008F480E05E\r
+:1033800008958091BB0185958595859508958091D7\r
+:10339000BB01877008950E94081C2091B9013091EB\r
+:1033A000BA018217930768F00E94081C2091B901A6\r
+:1033B0003091BA01821B930B883B9B4078F480E0EC\r
+:1033C00014C00E94081C2091B9013091BA012095C7\r
+:1033D0003095280F391F283B3B4088F38091BB0173\r
+:1033E00082FB882780F991E089278170089598E011\r
+:1033F000899F90011124622B6093BB010E94901859\r
+:103400000E94081C9093BA018093B901089510920C\r
+:10341000BB011092BA011092B90108954091BB010D\r
+:10342000809584238093BB01982F977089F450E096\r
+:10343000282F332727FD30954217530749F08595EC\r
+:10344000859585950E94B1181092BA011092B90124\r
+:1034500008959091BB01977081E009F480E0089590\r
+:1034600090910C019923D9F090910D019923B9F015\r
+:10347000982F9695969596959F3088F5E0910E0138\r
+:10348000F0910F01E90FF11D877021E030E001C0DC\r
+:10349000220F8A95EAF78181822B818308954091DA\r
+:1034A0000E0150910F0120E030E09FEFFA01E20F92\r
+:1034B000F31F6281681799F09F3F19F4611101C0F1\r
+:1034C000922F2F5F3F4F2E30310581F79F3F39F00C\r
+:1034D000FA01E90FF11D97FDFA9582830895089589\r
+:1034E00090910C019923E1F090910D019923C1F085\r
+:1034F000982F9695969596959F3020F5E0910E0120\r
+:10350000F0910F01E90FF11D877021E030E001C05B\r
+:10351000220F8A95EAF72095818128232183089537\r
+:1035200040910E0150910F0120E030E0FA01E20FCE\r
+:10353000F31F9281981301C012822F5F3F4F2E30EC\r
+:103540003105A1F7089581E090E0E0910E01F0913E\r
+:103550000F01E80FF91F1082019680319105A9F73C\r
+:1035600008958091D20108959091D201982B909363\r
+:10357000D201089580959091D20198239093D20121\r
+:1035800008951092D20108959091D101982B9093B3\r
+:10359000D101089580959091D10198239093D10104\r
+:1035A00008951092D10108959091D001982B909395\r
+:1035B000D001089580959091D00198239093D001E7\r
+:1035C00008951092D00108958093BF010E94081CB5\r
+:1035D0009093BD018093BC0108951092BF01109299\r
+:1035E000BD011092BC01089540910E0150910F0150\r
+:1035F00020E030E080E0FA01E20FF31F91819111A9\r
+:103600008F5F2F5F3F4F2F303105A9F70895E0916D\r
+:103610000E01F0910F018091D2018083E0910E01A3\r
+:10362000F0910F0180819091D101892B8083E091ED\r
+:103630000E01F0910F0180819091D001892B808340\r
+:103640008091BF01882399F00E949E1981110E94E8\r
+:10365000ED1AE0910E01F0910F0180819091BF0170\r
+:10366000892B80830E94F41A81110E94ED1A8091A7\r
+:103670000E0190910F010C94220FCF92DF92EF92E6\r
+:10368000FF920F931F936C01EE24FF24C114D10409\r
+:10369000E104F10421F46B017C0180E001C080E1D0\r
+:1036A00033272F2D1E2D0D2D011511052105310557\r
+:1036B00019F0885F6801790197018601A4E03695C9\r
+:1036C000279517950795AA95D1F70115110521059D\r
+:1036D000310519F08C5F6801790197018601F2E0EC\r
+:1036E0003695279517950795FA95D1F70115110588\r
+:1036F0002105310519F08E5F68017901B701A60136\r
+:103700007695679557954795452B462B472B09F09E\r
+:103710008F5F1F910F91FF90EF90DF90CF900895F2\r
+:103720008091E801843021F11092D40120E488E1F5\r
+:1037300090E00FB6F894A895809360000FBE209398\r
+:10374000600080E00E94240883B7817F846083BF8B\r
+:1037500083B7816083BF7894889583B78E7F83BF5A\r
+:1037600088E10FB6F89480936000109260000FBE5D\r
+:10377000089508950895CF930E94B91B0E944804AC\r
+:103780000E94BA1BC0E08C2F0E943505811105C034\r
+:10379000CF5FCE30C1F780E001C081E0CF910895C6\r
+:1037A0000E9419140E94160F0C9424081F920F9265\r
+:1037B0000FB60F9211248F939F93AF93BF93809175\r
+:1037C000D401811113C08091D5019091D601A091AF\r
+:1037D000D701B091D8014196A11DB11D8093D501AB\r
+:1037E0009093D601A093D701B093D801BF91AF9128\r
+:1037F0009F918F910F900FBE0F901F90189582E0B0\r
+:1038000084BD93E095BD9AEF97BD80936E000895B7\r
+:103810002FB7F8948091D5019091D601A091D7014E\r
+:10382000B091D8012FBF0895CF92DF92EF92FF920F\r
+:103830000F931F932FB7F8944091D5015091D60163\r
+:103840006091D7017091D8012FBF6A017B01EE24EE\r
+:10385000FF248C0120E030E0C016D106E206F3061A\r
+:1038600010F441505109481B590BCA011F910F9187\r
+:10387000FF90EF90DF90CF9008951F920F920FB6B8\r
+:103880000F9211248F939F93AF93BF938091D50193\r
+:103890009091D601A091D701B091D8010196A11DB8\r
+:1038A000B11D8093D5019093D601A093D701B09319\r
+:1038B000D801BF91AF919F918F910F900FBE0F9044\r
+:1038C0001F9018950E941C0CF8942FEF87EA91E640\r
+:1038D000215080409040E1F700C0000087E090EB6D\r
+:1038E000DC018093F2019093F301A093F401B09373\r
+:1038F000F5012CE088E190E00FB6F894A89580934C\r
+:1039000060000FBE20936000FFCFEF92FF920F93F5\r
+:103910001F93CF93DF93E82EF12C8F2D0E94350556\r
+:10392000C0E0D0E0082F10E098010C2E02C03595C1\r
+:1039300027950A94E2F720FD05C02196C630D105EF\r
+:1039400099F709C06C2F7F2D80E00E943D05E81299\r
+:10395000F4CF81E005C0F3948EE0F812DECF80E072\r
+:10396000DF91CF911F910F91FF90EF900895CF932A\r
+:10397000C82F8CE20E94851C882321F08C2FCF91C8\r
+:103980000C94851C80E0CF910895CF930E940A1E6D\r
+:10399000811102C00E94F01DC5E6C15049F00E948D\r
+:1039A00048048FE39CE90197F1F700C00000F5CFD0\r
+:1039B00089E20E94B71C811111C18AE20E94B71CE2\r
+:1039C00081110E94F01D85E00E94B71C81110E94A8\r
+:1039D000621C0E94151E8093D30187E00E94B71CD1\r
+:1039E000882399F18BE10E94B71C882351F09091B4\r
+:1039F000D30191FB882780F921E0822780FB91F990\r
+:103A000022C08EE00E94B71C882351F09091D30110\r
+:103A100092FB882780F921E0822780FB92F913C06E\r
+:103A200080E10E94B71C9091D301882341F093FB61\r
+:103A3000882780F921E0822780FB93F904C0892F31\r
+:103A4000809580FB90F99093D3018091D3010E94DF\r
+:103A5000191E0E94271E8093F10180EE0E94B71C60\r
+:103A6000882341F08091F101982F909590FB80F987\r
+:103A70008093F10189E30E94B71C882359F090914B\r
+:103A8000F10191FB882780F921E0822780FB91F9E1\r
+:103A90009093F10182EE0E94B71C882359F0909117\r
+:103AA000F10192FB882780F921E0822780FB92F9BF\r
+:103AB0009093F10186EE0E94B71C882359F09091F3\r
+:103AC000F10193FB882780F921E0822780FB93F99D\r
+:103AD0009093F10183EE0E94B71C882359F09091D6\r
+:103AE000F10194FB882780F921E0822780FB94F97B\r
+:103AF0009093F10185E30E94B71C882359F09091BF\r
+:103B0000F10195FB882780F921E0822780FB95F958\r
+:103B10009093F10181E30E94B71C882359F09091A2\r
+:103B2000F10196FB882780F921E0822780FB96F936\r
+:103B30009093F10181E10E94B71C882359F0909184\r
+:103B4000F10197FB882780F921E0822780FB97F914\r
+:103B50009093F1018091F1010E942B1E8091F1015F\r
+:103B600087FB882780F980930D0187E20E94B71CAC\r
+:103B7000C82F8EE10E94B71C8111C2608FE10E94A4\r
+:103B8000B71C8111C46080E20E94B71C8111C8601B\r
+:103B900081E20E94B71C8111C06182E20E94B71CC1\r
+:103BA0008111C06283E20E94B71C8111C06484E26B\r
+:103BB0000E94B71C882311F0C06802C0CC2329F0F2\r
+:103BC0008C2F0E94221E6C2F03C00E941E1E682F85\r
+:103BD00070E080E090E0CF910C941918CF91089597\r
+:103BE0006DEE7EEF80E090E00E94DD2360E082E0F9\r
+:103BF00090E00E94CB2360E083E090E00E94CB2322\r
+:103C000060E084E090E00E94CB2360E085E090E0FB\r
+:103C10000C94CB2380E090E00E94C52321E08D3EF0\r
+:103C20009E4F09F020E0822F089582E090E00C94EE\r
+:103C3000BD23682F82E090E00C94CB2383E090E0DA\r
+:103C40000C94BD23682F83E090E00C94CB2384E098\r
+:103C500090E00C94BD23682F84E090E00C94CB237B\r
+:103C60008091DB0180FF0BC06091130185E0689FAC\r
+:103C7000B001112475956795759567952AC081FFE8\r
+:103C800009C06091130185E0689FB001112475950A\r
+:103C900067951FC082FF07C06091130185E0689F90\r
+:103CA000B001112416C04091DC014423C9F0609199\r
+:103CB0001201461788F72091130185E0289F900193\r
+:103CC0001124429FC001439F900D112470E00E9477\r
+:103CD0008F236038710540F46115710539F002C019\r
+:103CE00065E070E0862F08958FE7089581E00895DC\r
+:103CF0008091DB0180FF08C06091110170E0759533\r
+:103D000067957595679521C081FF06C06091110187\r
+:103D100070E07595679519C082FF04C0609111012C\r
+:103D200070E010C08091DC018823C1F06091100127\r
+:103D30008617A0F790911101989FC001112470E09F\r
+:103D40000E948F236038710528F46115710521F0F8\r
+:103D5000862F08958FE7089581E0089561E070E06F\r
+:103D6000F4CF803F21F40E94301E819504C0813F32\r
+:103D700029F40E94301E8093DF010895823F21F4D0\r
+:103D80000E94301E819504C0833F29F40E94301E9A\r
+:103D90008093DE010895893F19F40E94781E05C0C2\r
+:103DA0008A3F31F40E94781E81958093E001089546\r
+:103DB0008B3F21F40E94781E819504C08C3F29F42A\r
+:103DC0000E94781E8093E1010895843F21F4809140\r
+:103DD000DD01816017C0853F21F48091DD018260A3\r
+:103DE00011C0863F21F48091DD0184600BC0873FC4\r
+:103DF00021F48091DD01886005C0883F31F4809115\r
+:103E0000DD0180618093DD0108958D3F21F4809173\r
+:103E1000DB0181600BC08E3F21F48091DB01826069\r
+:103E200005C08F3F29F48091DB0184608093DB0122\r
+:103E30000895803F39F48091DF0187FF6CC01092B4\r
+:103E4000DF0169C0813F29F48091DF011816BCF3BE\r
+:103E500062C09091DE01823F29F497FF5CC010920E\r
+:103E6000DE0159C0833F19F41916CCF354C0893FC1\r
+:103E700041F48091E00118160CF04DC01092E00161\r
+:103E80004AC08A3F29F48091E00187FF44C0F6CF01\r
+:103E90008B3F39F48091E10187FF3DC01092E10131\r
+:103EA0003AC08C3F29F48091E1011816BCF333C06D\r
+:103EB000843F21F48091DD018E7F17C0853F21F47E\r
+:103EC0008091DD018D7F11C0863F21F48091DD015D\r
+:103ED0008B7F0BC0873F21F48091DD01877F05C078\r
+:103EE000883F31F48091DD018F7E8093DD0113C026\r
+:103EF0008D3F21F48091DB018E7F0BC08E3F21F43A\r
+:103F00008091DB018D7F05C08F3F29F48091DB011B\r
+:103F10008B7F8093DB018091DE0181110EC0809147\r
+:103F2000DF0181110AC08091E001811106C08091FA\r
+:103F3000E101811102C01092DC0108958DED91E044\r
+:103F40000E942D0F0E94081C9093DA018093D901E2\r
+:103F500008951F93CF93DF938091D9019091DA0157\r
+:103F60000E94141C4091DC01442321F02091140193\r
+:103F700030E006C0209115015AE0259F90011124E0\r
+:103F80008217930708F482C08091DE011091DF014F\r
+:103F9000D091E001C091E101811107C0111105C06C\r
+:103FA000D11103C0CC2309F471C04F3F19F04F5F0A\r
+:103FB0004093DC01181624F40E94301E8093DE0129\r
+:103FC0008091DE0187FF05C00E94301E819580939D\r
+:103FD000DE01111624F40E94301E8093DF018091CF\r
+:103FE000DF0187FF05C00E94301E81958093DF01AD\r
+:103FF0006091DE01662339F11091DF01112319F17F\r
+:10400000772767FD7095872F972F0E94A02223E3C3\r
+:1040100033E343E35FE30E9404230E946D22609335\r
+:10402000DE01612F772767FD7095872F972F0E94FC\r
+:10403000A02223E333E343E35FE30E9404230E94CF\r
+:104040006D226093DF011D1624F40E94781E809378\r
+:10405000E0018091E00187FF05C00E94781E8195F4\r
+:104060008093E0011C1624F40E94781E8093E101E5\r
+:104070008091E10187FF05C00E94781E81958093A1\r
+:10408000E101DF91CF911F910C949E1FDF91CF91A1\r
+:104090001F910895EDEDF1E085E0DF011D928A9515\r
+:1040A000E9F71092DC011092DB010895833081F171\r
+:1040B00028F4813059F08230D1F00895853009F428\r
+:1040C00049C0B8F1863009F456C008952091150111\r
+:1040D000862F90E0820F911D8F3F910520F4620F93\r
+:1040E0006093150108958FEF809315010895209135\r
+:1040F0001401862F90E0820F911D8F3F910520F4CF\r
+:10410000620F6093140108958FEF80931401089556\r
+:1041100020911301862F90E0820F911D8F3F910512\r
+:1041200020F4620F6093130108958FEF80931301C1\r
+:10413000089520911201862F90E0820F911D8F3FEC\r
+:10414000910520F4620F6093120108958FEF809320\r
+:104150001201089520911101862F90E0820F911D88\r
+:104160008F3F910520F4620F6093110108958FEF46\r
+:1041700080931101089520911001862F90E0820F05\r
+:10418000911D8F3F910520F4620F609310010895F7\r
+:104190008FEF809310010895833011F128F481305E\r
+:1041A00049F0823091F00895853081F120F1863018\r
+:1041B000C1F1089580911501681720F4861B809342\r
+:1041C0001501089510921501089580911401681742\r
+:1041D00020F4861B80931401089510921401089511\r
+:1041E00080911301681720F4861B809313010895B2\r
+:1041F00010921301089580911201681720F4861B14\r
+:104200008093120108951092120108958091110176\r
+:10421000681720F4861B80931101089510921101F4\r
+:10422000089580911001681720F4861B8093100177\r
+:1042300008951092100108958B3109F46AC008F5B1\r
+:104240008E3009F470C070F4873009F452C018F44D\r
+:104250008630B9F134C0883009F4A1C08B3009F43C\r
+:104260009EC02DC0813109F479C020F4803109F459\r
+:1042700064C025C0863109F492C0893109F48FC029\r
+:104280001EC0853309F483C060F4873209F47FC00F\r
+:1042900020F48E3108F06DC012C0893209F477C065\r
+:1042A0000EC0833438F48A3308F061C0883309F4CF\r
+:1042B00076C005C0833409F46AC0883461F080E0B8\r
+:1042C00008958091D301817F8E7F8093D30181E017\r
+:1042D0008093E30108950E9419142FEF83ED90E37A\r
+:1042E000215080409040E1F700C000000E94621C15\r
+:1042F00056C09091D301892F8095817080FB90F9F1\r
+:1043000019F09660986027C0997F977F9093D301AA\r
+:1043100046C09091D30191FB882780F921E0822744\r
+:1043200080FB91F913C09091D30192FB882780F90B\r
+:1043300021E0822780FB92F909C09091D30193FB81\r
+:10434000882780F921E0822780FB93F99093D3019D\r
+:10435000882329F191609093D30108950E94191444\r
+:1043600080910D0191E0892780930D0118C027EC01\r
+:1043700001C023EE280F61E070E080E090E004C00F\r
+:10438000660F771F881F991F2A95D2F704C061E036\r
+:1043900070E080E090E00E9419180E94191481E0FA\r
+:1043A000089580E0089580E00895CF93C82F80910C\r
+:1043B000E301813079F018F08230D1F184C0A0910E\r
+:1043C0000E01B0910F018C91813169F0823209F0B8\r
+:1043D0007CC009C0A0910E01B0910F018C91813178\r
+:1043E00011F0823249F48C2F0E94D12181111DC01D\r
+:1043F0008C2F0E941C211AC08C2F0E94D321811166\r
+:1044000014C0C43179F048F4CB3079F0C03109F0F0\r
+:1044100060C082E08093E30108C0C93219F0C8335C\r
+:1044200021F057C01092E30154C081E0817053C065\r
+:10443000C93289F118F5C43171F1A8F4C73009F017\r
+:1044400046C08AE08093150194E19093140193E0B3\r
+:10445000909313018093120188E08093110188E208\r
+:104460008093100134C0CE51C63088F5EC2FF0E0B7\r
+:10447000E65DFE4F80818093E20129C0CE34E9F0F1\r
+:1044800020F4CB3421F56AE013C0C13579F0C23590\r
+:10449000F1F461E00DC08091E201882319F01092DF\r
+:1044A000E20115C081E08093E30115C061E006C020\r
+:1044B0008091E2010E9456200AC06AE08091E201E8\r
+:1044C0000E94CC2004C01092E30180E004C081E08F\r
+:1044D00002C080E0ABCFCF91089504D06894B111B1\r
+:1044E0008DC0089570D088F09F5790F0B92F99270C\r
+:1044F000B751A0F0D1F0660F771F881F991F1AF0EF\r
+:10450000BA95C9F712C0B13081F077D0B1E0089503\r
+:1045100074C0672F782F8827B85F39F0B93FCCF384\r
+:10452000869577956795B395D9F73EF490958095E4\r
+:10453000709561957F4F8F4F9F4F0895E89409C004\r
+:1045400097FB3EF490958095709561957F4F8F4FC6\r
+:104550009F4F9923A9F0F92F96E9BB279395F695DC\r
+:10456000879577956795B795F111F8CFFAF4BB0F5A\r
+:1045700011F460FF1BC06F5F7F4F8F4F9F4F16C0BE\r
+:10458000882311F096E911C0772321F09EE8872F48\r
+:10459000762F05C0662371F096E8862F70E060E004\r
+:1045A0002AF09A95660F771F881FDAF7880F96957D\r
+:1045B000879597F9089557FD9058440F551F59F066\r
+:1045C0005F3F71F04795880F97FB991F61F09F3F00\r
+:1045D00079F087950895121613061406551FF2CF29\r
+:1045E0004695F1DF08C0161617061806991FF1CF79\r
+:1045F00086957105610508940895E894BB276627A0\r
+:104600007727CB0197F908950BD078C069D028F0AF\r
+:104610006ED018F0952309F05AC05FC01124EECF78\r
+:10462000CADFA0F3959FD1F3950F50E0551F629F0D\r
+:10463000F001729FBB27F00DB11D639FAA27F00DFB\r
+:10464000B11DAA1F649F6627B00DA11D661F829F22\r
+:104650002227B00DA11D621F739FB00DA11D621F07\r
+:10466000839FA00D611D221F749F3327A00D611D24\r
+:10467000231F849F600D211D822F762F6A2F112406\r
+:104680009F5750408AF0E1F088234AF0EE0FFF1F59\r
+:10469000BB1F661F771F881F91505040A9F79E3F90\r
+:1046A000510570F014C0AACF5F3FECF3983EDCF3E5\r
+:1046B000869577956795B795F795E7959F5FC1F7CD\r
+:1046C000FE2B880F911D9695879597F9089597F978\r
+:1046D0009F6780E870E060E008959FEF80EC0895A8\r
+:1046E00000240A94161617061806090608950024D1\r
+:1046F0000A9412161306140605060895092E03944B\r
+:10470000000C11F4882352F0BB0F40F4BF2B11F4BE\r
+:1047100060FF04C06F5F7F4F8F4F9F4F089597FBDF\r
+:10472000072E16F4009407D077FD09D00E94A92324\r
+:1047300007FC05D03EF4909581959F4F08957095A4\r
+:1047400061957F4F0895EE0FFF1F0590F491E02DC6\r
+:104750000994AA1BBB1B51E107C0AA1FBB1FA617C8\r
+:10476000B70710F0A61BB70B881F991F5A95A9F71A\r
+:1047700080959095BC01CD010895F999FECF92BD29\r
+:1047800081BDF89A992780B50895A8E1B0E042E08C\r
+:1047900050E00C94E523262FF999FECF92BD81BD00\r
+:1047A000F89A019700B4021639F01FBA20BD0FB66F\r
+:1047B000F894FA9AF99A0FBE08950196272F0E944D\r
+:1047C000CC230C94CB23DC01CB01FC01F999FECF67\r
+:1047D00006C0F2BDE1BDF89A319600B40D92415089\r
+:0A47E0005040B8F70895F894FFCF99\r
+:1047EA0020022608B30890085C0829080101C001C4\r
+:1047FA0028080A03140A3F4D363979042C04F603B3\r
+:10480A00BD035003690382039B03010203040506E7\r
+:04481A000708090082\r
 :00000001FF\r
index bf5a974bfe484a0222e2d4a6d67b81c69f21a51e..f4e4f92e0133e0ea8db0c63b9392c7fbe46a11e4 100644 (file)
@@ -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,13 +59,13 @@ 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  |      |           |      |   |  |   @  |   =  |   %  |      |        |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   |      |      |      |NxtTab|PrvTab|                                       |      |      |      |      |      |
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,-------------.
  *                                        |      |      |       |      |      |
@@ -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_LPRN,KC_RPRN,KC_LBRC,       KC_RBRC,      KC_0,    KC_TRNS,
+       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,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_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,
        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,
@@ -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;
 };
 
diff --git a/keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk b/keyboard/ergodox_ez/keymaps/erez_experimental/makefile.mk
new file mode 100644 (file)
index 0000000..4c3a314
--- /dev/null
@@ -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
+
index 205280e290488a5adf4fb0747f83c0ed955d31d0..a9c572390aebc0260d8fa4e3b5b4c3c9fb8578d7 100644 (file)
@@ -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
index 871bda672ce8104e23298357629b058eac16ec60..18939b1923ac886741a33fa0351d4e33c1a9503b 100644 (file)
@@ -4,27 +4,32 @@
 #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 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 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   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.14
+ * 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
@@ -34,40 +39,40 @@ 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  |   ,  |   .  |  /   |    RShift |
- * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
- *     | LCtrl | Meh  |Hyper | LAlt | LGui |                                       | RGui | RAlt | Hyper|  Meh | RCtrl |
- *     `-----------------------------------'                                       `-----------------------------------'
- *                                         ,-------------.           ,-------------.
- *                                         | Home | End  |           | Left | Right|
- *                                  ,------|------|------|           |------+------+------.
- *                                  |      |      | PgUp |           |  Up  |      |      |
- *                                  |Backsp| Del  |------|           |------| Enter| Space|
- *                                  |      |      | PgDn |           | Down |      |      |
- *                                  `--------------------'           `--------------------'
+ * ,------------------------------------------------------.           ,------------------------------------------------------.
+ * | 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
-,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
                                  ,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  ,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
@@ -158,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                                                      ,KC_VOLD  ,KC_MSTP ,KC_MPLY
 ),
 
-/******* Lock Layer ********************************************************************************************************
+/******* Special Layer *****************************************************************************************************
  *
  * ,-----------------------------------------------------.           ,-----------------------------------------------------.
  * |           |  Esc |      |      |      |      |      |           |      |      |      |      |      | Bspc |           |
@@ -167,7 +172,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
  * |           |      |      |      |      |      |------|           |------|      |      |      |      |      |           |
  * |-----------+------+------+------+------+------|      |           |      |------+------+------+------+------+-----------|
- * | Caps LOCK |      |      |      |      |      |      |           |      |      |      |      |      |      | Caps LOCK |
+ * |           |      |      |      |      |      |      |           |      |      |      |      |      |      | RShift    |
  * `-----------+------+------+------+------+-------------'           `-------------+------+------+------+------+-----------'
  *      |      |      |      |      |      |                                       |      |      |      |      |      |
  *      `----------------------------------'                                       `----------------------------------'
@@ -179,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
@@ -194,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
@@ -204,91 +209,118 @@ 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 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 caps_shift = 0;
+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
+        // 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(caps_shift == 2)  {
+                register_code(KC_CAPS);
+                unregister_code(KC_CAPS);
+            } else if(caps_shift == 1) {
+                register_code(KC_LSFT);
+            }
+        } else {
+            if(--caps_shift < 0) caps_shift = 0;
+            if(caps_shift == 0) unregister_code(KC_LSFT);
+        }
+        break;
 
         case LSymb:
         if (record->event.pressed) {
-            symb_shift++;
-            if(shift_lock) symb_lock = !symb_lock;
-            layer_on(SYMB);
+            if(++symb_shift > 2) symb_shift = 2;
+            if(symb_shift == 2)  {
+                symb_lock = !symb_lock;
+            } else if(symb_shift == 1) {
+                layer_on(SYMB);
+            }
         } else {
-            symb_shift--;
-            if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
+            if(--symb_shift < 0) symb_shift = 0;
+            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 {
-                mdia_shift++;
-                if(shift_lock) mdia_lock = !mdia_lock;
-                layer_on(MDIA);
+                if(++mdia_shift > 2) mdia_shift = 2;
+                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 {
-                mdia_shift--;
+                if(--mdia_shift < 0) mdia_shift = 0;
                 if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
             }
         }
         break;
 
-        case LLock:
+        case LSpec:
         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)))) {
-                register_code(KC_CAPS);
-                unregister_code(KC_CAPS);
-            }
-            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);
             }
-            shift_lock--;
-            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 {
-                symb_shift++;
-                if(shift_lock) symb_lock = !symb_lock;
-                layer_on(SYMB);
+                if(++symb_shift > 2) symb_shift = 2;
+                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 {
-                symb_shift--;
+                if(--symb_shift < 0) symb_shift = 0;
                 if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
             }
         }
@@ -296,40 +328,39 @@ 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 {
-                mdia_shift++;
-                if(shift_lock) mdia_lock = !mdia_lock;
-                layer_on(MDIA);
+                if(++mdia_shift > 2) mdia_shift = 2;
+                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 {
-                mdia_shift--;
+                if(--mdia_shift < 0) mdia_shift = 0;
                 if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
             }
         }
         break;
 
-        case RLock:
+        case RSpec:
         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)))) {
-                    register_code(KC_CAPS);
-                    unregister_code(KC_CAPS);
-            } 
-            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_EQL);
+            } else {
+                layer_on(SPEC);
+            }
+        } else {
+            if(record->tap.count && !record->tap.interrupted) {
                 unregister_code(KC_EQL);
+            } else {
+                layer_off(SPEC);
             }
-            shift_lock--;
-            if(!shift_lock) layer_off(LOCK);
         }
         break;
 
@@ -399,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<<USB_LED_CAPS_LOCK))) {
+    if(caps_shift || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
         ergodox_right_led_1_on();
     } else {
         ergodox_right_led_1_off();
index 69af8df4e1db1a1b6ebc95ca8c15367500c60557..9c561a10aa2b67b19f682c6c9cdfc9eb0be566f6 100644 (file)
Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-base.png differ
index 04792f2dfc535607e039db85dc24c933de995ff4..25731ea2e6b449b6bddb0025ba5854700735c927 100644 (file)
@@ -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"],
@@ -14,7 +14,7 @@
 [{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.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"},"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"],
index f3fed3cdbea2637352b74858cd461010a2170091..99e5ed80b14d45f145f8e7e6cca897c65241140c 100644 (file)
Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png differ
index f1ecd5fdce25854ddd953a87e8c262667d2cc693..4eccc9f350eeeafa89edef214429a64daf10683a 100644 (file)
@@ -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,9 +13,9 @@
 [{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,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,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"],
 [{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-special.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-special.png
new file mode 100644 (file)
index 0000000..6eecf44
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 (file)
index 0000000..a08827c
--- /dev/null
@@ -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},""]
+
index 8a0cfd63f82e28a53bb2b9f0e774d7f528fe9194..e4de64a96f1a4445bedfd0dd9a0330fc08580cd6 100644 (file)
Binary files a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png and b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png differ
index 93f632e955872a6e06b54809eca6f70982c96423..e199f5c59f4486d0d7e148d5fa9444bd73cb3c79 100644 (file)
@@ -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},">","|"],
@@ -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"],
@@ -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"]
 
index 6a42b7098a44bdf8add5ea5f35faf24d5daa0dce..1e740e4f39f3d23d4fb783c54992dbf77b23cb42 100644 (file)
-:100000000C94C7020C940B030C940B030C940B037D\r
-:100010000C940B030C940B030C940B030C940B0328\r
-:100020000C940B030C940B030C942A0E0C94FC0EF2\r
-:100030000C940B030C940B030C940B030C940B0308\r
-:100040000C940B030C947B230C940B030C940B0368\r
-:100050000C940B030C941F1D0C940B030C940B03BA\r
-:100060000C940B030C940B030C940B030C940B03D8\r
-:100070000C940B030C940B030C940B030C940B03C8\r
-:100080000C940B030C940B030C940B030C940B03B8\r
-:100090000C940B030C940B030C940B030C940B03A8\r
-:1000A0000C940B030C940B030C940B031C034E03D6\r
-:1000B0009A0335035E032D044A044D0450045E0484\r
-:1000C000610F830F6E10830F6E10C50FE80F6E1057\r
-:1000D0003D1050104A134A138B138B13CD13091480\r
-:1000E000091609162114091618151815E31509160D\r
-:1000F0000916F71500C801C802C803C804C805C816\r
-:10010000022001200030E100E00000001E00140089\r
-:1001100004001D0000074E001F001A0016001B00FF\r
-:10012000000F4C002000080007000600E2002A0033\r
-:100130002100150009001900E3004B002200170000\r
-:100140000A00050000004A0029002F0000002B02D1\r
-:1001500000004D002D00300000002B00000050007A\r
-:1001600023001C000B00110000004F0024001800A9\r
-:100170000D001000E700520025000C000E003600B4\r
-:10018000E6002C00260012000F003700000F2800A8\r
-:100190002700130033003800000751000520042019\r
-:1001A0000320E500E400000001000100010001005F\r
-:1001B000E00000003A001E02200222020007510067\r
-:1001C0003B001F0221022302000F28003C002F02E7\r
-:1001D00026022F00E2002C003D00300227023000F2\r
-:1001E000E30052003E0024023500350200005000BA\r
-:1001F0002900360200002B0000004F002D003702BE\r
-:1002000000002B0200004A003F003102380031009C\r
-:1002100000004D004000240021001E0027784B0004\r
-:100220004100250022001F0037744C0042002600C8\r
-:10023000230020002E7F2A004300380025022D00D5\r
-:100240002E774E000100010001000100287100001E\r
-:100250000100010001000100E00000004400660010\r
-:10026000A60000000007B50045000630F200083087\r
-:10027000F60000006800F000F100F100F400B600A4\r
-:1002800069000730F3000930F500B4006A00A900E6\r
-:10029000AA00A8000000B8002900F9000000FA0038\r
-:1002A0000000B9000000F9000000FA000000AC00F6\r
-:1002B0006B004600530000000000AB006C004A00D9\r
-:1002C00050004D004978A9006D00520051005100C6\r
-:1002D0004C74AE006E004B004F004E00000FAD009E\r
-:1002E0006F00B100B30000000007AA000100010088\r
-:1002F00001000100E40000000100010001003900DC\r
-:1003000001000000290001000100010001000100BE\r
-:1003100001000100010001000100010001000100D5\r
-:1003200001000100010001000100010001000100C5\r
-:1003300001000100010001000100010000000100B6\r
-:1003400001000100000001000000010001000100A7\r
-:100350000000010000000100010001000100010097\r
-:100360000000010001000100010001000100010086\r
-:100370000100010001000100010001000100010075\r
-:1003800001000100010001002A000100010001003C\r
-:10039000010001000100010001003900010000001E\r
-:1003A00016034500720067006F0044006F0078007C\r
-:1003B000200045005A000000160345007200670047\r
-:1003C0006F0044006F007800200045005A000000D4\r
-:1003D0000403090409026D00040100A0FA090400E5\r
-:1003E000000103010100092111010001223F000762\r
-:1003F00005810308000A0904010001030102000944\r
-:100400002111010001224D000705820308000A099D\r
-:10041000040200010300000009211101000122363D\r
-:10042000000705830308000A090403000103000014\r
-:100430000009211101000122390007058403100081\r
-:10044000011201100100000008EDFE071301000178\r
-:1004500002000105010906A101050719E029E715B8\r
-:1004600000250195087501810205081901290595E6\r
-:100470000575019102950175039101050719002980\r
-:100480007715002501957875018102C00501098065\r
-:10049000A101850216010026B7001A01002AB70043\r
-:1004A000751095018100C0050C0901A10185031695\r
-:1004B0000100269C021A01002A9C027510950181F8\r
-:1004C00000C005010902A1010901A10005091901E6\r
-:1004D0002905150025019505750181029501750312\r
-:1004E00081010501093009311581257F95027508C3\r
-:1004F000810609381581257F950175088106050C4F\r
-:100500000A38021581257F950175088106C0C0054E\r
-:10051000010906A101050719E029E7150025019544\r
-:1005200008750181029501750881010508190129E5\r
-:10053000059505750191029501750391010507194E\r
-:100540000029FF150025FF950675088100C00000F1\r
-:10055000000000000000000000010204060A0F175E\r
-:10056000202C3A4A5D71879DB3C7DAE9F5FCFFFCA0\r
-:10057000F5E9DAC7B39D87715D4A3A2C20170F0A57\r
-:100580000604020100000000000000000000112429\r
-:100590001FBECFEFDAE0DEBFCDBF04B603FE24C03E\r
-:1005A0008091F6019091F701A091F801B091F901C5\r
-:1005B0008730904BA740B04BB9F41092F6011092DF\r
-:1005C000F7011092F8011092F90114BE84B7877FE9\r
-:1005D00084BF88E10FB6F8948093600010926000A9\r
-:1005E0000FBEE0E0FFE3099511E0A0E0B1E0E4E830\r
-:1005F000FAE402C005900D92A433B107D9F721E0C7\r
-:10060000A4E3B1E001C01D92A63FB207E1F70E944A\r
-:10061000700B0C9440250C940000DC01462F50E038\r
-:100620004A30510508F05DC14A5A5F4F12962C912D\r
-:100630001297FA010C94F02480913A0190913B01B9\r
-:100640002223F1F0019690933B0180933A0180912F\r
-:10065000360190913701892B31F08091350191E07D\r
-:1006600089278093350181E09AC015968C91807F0F\r
-:100670002111BFC009F0D5C080913A0190913B0192\r
-:10068000019790933B0180933A01892B09F029C18E\r
-:1006900080913501811125C181E0A8C015968C910A\r
-:1006A000807F222349F12091360130913701882340\r
-:1006B00081F02115310569F48BE2C1C015968C914A\r
-:1006C000807F222319F12091360130913701811169\r
-:1006D000B1C0809138019091390101969093390110\r
-:1006E00080933801232B31F08091340191E08927E8\r
-:1006F0008093340182E053C0882351F08091360109\r
-:1007000090913701892B21F48BE2A4C081119AC00A\r
-:10071000809138019091390101979093390180932C\r
-:100720003801892B09F0DDC0809134018111D9C0D5\r
-:1007300082E05CC015963C912223A1F180913601A4\r
-:100740009091370101969093370180933601809103\r
-:100750003A0190913B01892B31F08091350191E074\r
-:100760008927809335018091380190913901892B37\r
-:1007700031F08091340191E0892780933401307FFA\r
-:1007800069F4E0910E01F0910F018081827231F0E5\r
-:1007900089E30E94D21189E30E949A1283E00E94A9\r
-:1007A0009D1A9FC0832F807FA1F030FD12C08091E1\r
-:1007B0003A0190913B01892B61F48091380190912D\r
-:1007C0003901892B31F485E30E94D21185E30E941F\r
-:1007D0009A128091360190913701019790933701D9\r
-:1007E00080933601892B09F07CC083E00E94BE1AF9\r
-:1007F00078C02091360130913701882329F02115E6\r
-:10080000310511F484E31BC080913A0190913B01C2\r
-:10081000019690933B0180933A01232B09F01DCF61\r
-:1008200022CF8091360190913701892B09F024CF96\r
-:1008300084E310C02115310509F04BCF81E30E94FC\r
-:10084000D2114FC08091360190913701892B09F068\r
-:100850005FCF81E30E949A1244C015963C9121110A\r
-:100860006DCF832F807F09F4B4CF30FDB2CF80915C\r
-:100870003A0190913B01892B09F0ABCF809138016F\r
-:1008800090913901892B09F0A4CF8EE20E94D211F8\r
-:100890008EE29DCF80EF90E005C080EF90E010C029\r
-:1008A00081EF90E0222329F00E94931F82EF90E0D5\r
-:1008B0000DC00E94FB1F82EF90E00FC081EF90E01F\r
-:1008C000222339F00E94931F83EF90E00E94931F30\r
-:1008D00006C00E94FB1F83EF90E00E94FB1F0E9456\r
-:1008E000802080E090E008950895E0910E01F0915D\r
-:1008F0000F018081827219F0259A2D9A06C00E94FC\r
-:10090000A91081FDF9CF25982D988091B90181FF1B\r
-:1009100003C0269A2E9A02C026982E988091B9017B\r
-:1009200082FF03C0279A2F9A089527982F98089539\r
-:100930000C94750456985E9825982D9826982E98B4\r
-:1009400027982F988FEF90E09093890080938800EC\r
-:1009500090938B0080938A0090938D0080938C00FD\r
-:10096000259A2D9A2FEF80E792E021508040904009\r
-:10097000E1F700C00000269A2E9A2FEF80E792E060\r
-:10098000215080409040E1F700C00000279A2F9A44\r
-:100990002FEF80E792E0215080409040E1F700C0C7\r
-:1009A000000025982D982FEF80E792E0215080409D\r
-:1009B0009040E1F700C0000026982E982FEF80E7C6\r
-:1009C00092E0215080409040E1F700C0000027985D\r
-:1009D0002F9856985E9825982D9826982E982798A7\r
-:1009E0002F98089589EA8093800089E080938100A0\r
-:1009F00024982C983F988AB18F748AB96E98479A38\r
-:100A00008BB1806B8BB9769A0E949A040C94740413\r
-:100A100080E28093000180913C0181110EC00E9410\r
-:100A2000570581E080933C012FEF83ED90E3215047\r
-:100A300080409040E1F700C0000080E40E945D0526\r
-:100A40008093000181112EC00E94870580930001D0\r
-:100A5000811128C00E94870580930001811122C066\r
-:100A60008FE30E9487058093000181111BC00E94C3\r
-:100A70007F0580E40E945D0580930001811112C012\r
-:100A80008CE00E9487058093000181110BC00E94B9\r
-:100A9000870580930001811105C08FE30E948705BF\r
-:100AA000809300010E947F058091000108951092BB\r
-:100AB000B9008AE08093B800089594EA9093BC004E\r
-:100AC0009091BC0097FFFCCF9091B900987F98302F\r
-:100AD00021F0903111F081E008958093BB0084E80B\r
-:100AE0008093BC008091BC0087FFFCCF8091B9004F\r
-:100AF000887F883111F0803471F780E0089584E9AF\r
-:100B00008093BC008091BC0084FDFCCF089580934D\r
-:100B1000BB0084E88093BC008091BC0087FFFCCFC1\r
-:100B20009091B900987F81E0983209F480E00895AF\r
-:100B300084E88093BC008091BC0087FFFCCF80914B\r
-:100B4000BB00089580910001811115C080E40E94CE\r
-:100B50005D058093000181110CC082E10E94870530\r
-:100B600080930001811105C08FEF0E94870580935B\r
-:100B700000010E947F0584B1807F84B985B1807FA8\r
-:100B800085B98AB1837F8AB98BB1837F8BB93E984F\r
-:100B9000469808950E940805809300010E94A205CE\r
-:100BA00080B38C7080BB81B3836F81BBECE4F1E0D8\r
-:100BB000AEE3B1E011921D9281E0EA35F807D1F77A\r
-:100BC0000C94F204BF92CF92DF92EF92FF920F93B8\r
-:100BD0001F93CF93DF9380910001882379F0809158\r
-:100BE0003D018F5F80933D01811108C00E9408057F\r
-:100BF00080930001811102C00E949A040EE311E06B\r
-:100C0000C0E0D0E0DD24D39482E0C82EEE24E3944B\r
-:100C1000F12CC73000F580910001811162C080E4A1\r
-:100C20000E945D0580930001811112C082E10E9443\r
-:100C300087058093000181110BC0C7010C2E01C0F4\r
-:100C4000880F0A94EAF780950E9487058093000137\r
-:100C50000E947F0546C0CA30A1F028F4C83059F080\r
-:100C6000C93061F005C0CC3089F070F0CD3089F02A\r
-:100C7000209A289810C0219A29980DC0229A2A9863\r
-:100C80000AC0239A2B9807C0529A01C0539A5B98C6\r
-:100C900002C03E9A4698E0EAEA95F1F78FB1799959\r
-:100CA0005AC092E081708D25892B7C9B02C090E018\r
-:100CB00001C094E0892B7D9B02C090E001C098E0C8\r
-:100CC000892B7E9B02C090E001C090E1892B9FB1EF\r
-:100CD0009095991F9927991F9295990F907E892B2E\r
-:100CE0000FC08091000181114BC080E40E945D051E\r
-:100CF00080930001882389F1B12C0E947F058B2D00\r
-:100D0000F8019081981719F08083C09201010E9428\r
-:100D1000A20521960F5F1F4FCE30D10509F079CF84\r
-:100D200080910101882371F1815080930101882312\r
-:100D300039F08FE99FE00197F1F700C0000022C071\r
-:100D4000ACE4B1E0EEE3F1E081918D9391E0EC341D\r
-:100D5000F907D1F717C090E0A5CF83E10E9487057E\r
-:100D6000809300018111C8CF81E40E945D058093CA\r
-:100D700000018111C1CF0E949805B82EB094BDCF5B\r
-:100D800080E0BECF0E94980481E0DF91CF911F9157\r
-:100D90000F91FF90EF90DF90CF90BF900895E82FD4\r
-:100DA000F0E0E45BFE4F808108950895089596E099\r
-:100DB000799FF001112494E5899FE00DF11D112424\r
-:100DC000E60FF11DEE0FFF1FE050FF4F859194914C\r
-:100DD0000895880F991F8C589040FC01859194913B\r
-:100DE0000895880F991F8C509F4FFC018591949115\r
-:100DF00008950F931F93CF93DF93EC01811520E3A8\r
-:100E0000920730F5811530E2930708F0B1C08B3BB3\r
-:100E1000910588F4883A910508F058C0853A910503\r
-:100E200008F049C08430910508F043C08130910535\r
-:100E300009F4B2C1AEC18F3F910509F0D0F5803FF2\r
-:100E4000910508F092C0805E9109089790F1A1C1C8\r
-:100E5000C11581E5D807A8F4C23090E5D90708F09C\r
-:100E60009FC0C11520E5D20709F486C008F092C0E2\r
-:100E7000C11580E4D80708F08CC18E011127106CD1\r
-:100E8000CCC1C11590E8D90758F4C11520E7D207A5\r
-:100E900008F07BC1C11530E6D30708F423C179C13E\r
-:100EA000C11580E9D80708F074C18E011F70106A5F\r
-:100EB000B4C18E01B2C1853A910509F470C1863A78\r
-:100EC000910509F46FC103E810E4A7C1883A9105C0\r
-:100ED00009F46BC1893A910509F46AC18A3A91050E\r
-:100EE00009F469C18B3A910509F468C18C3A9105FE\r
-:100EF00009F467C18D3A910509F466C1803B9105FB\r
-:100F000009F465C18E3A910509F464C18F3A9105DF\r
-:100F100009F463C1813B910509F462C1823B9105EB\r
-:100F200009F461C1833B910509F460C1843B9105DB\r
-:100F300009F45FC1853B910509F45EC1863B9105CB\r
-:100F400009F45DC1873B910509F45CC1883B9105BB\r
-:100F500009F45BC1893B910509F45AC18A3B9105AB\r
-:100F600009F059C10AE216E458C18C01106555C157\r
-:100F70009F700E94F10652C10E942C169FEF24E33D\r
-:100F80003CE0915020403040E1F700C000000E945A\r
-:100F9000441D43C18091D50181608093D5013DC13D\r
-:100FA0000E94EC1E811102C00E94D21E0E94091FE5\r
-:100FB00090E09093F6018093F501C23080E5D80768\r
-:100FC00021F48091F501816086C0C43090E5D90795\r
-:100FD00021F48091F50182607EC0C63020E5D20701\r
-:100FE00021F48091F501846076C0C83030E5D307E4\r
-:100FF00019F48091F50127C0CA3080E5D80721F4A3\r
-:101000008091F501806167C0CC3090E5D90721F46B\r
-:101010008091F50180625FC0CE3020E5D20721F4D7\r
-:101020008091F501806457C0C03130E5D30721F4C9\r
-:101030008091F50180684FC0C23180E5D80729F45E\r
-:101040008091F5018460886046C0C33090E5D9077F\r
-:1010500021F48091F5018E7F3EC0C53020E5D20796\r
-:1010600021F48091F5018D7F36C0C73030E5D3077C\r
-:1010700021F48091F5018B7F2EC0C93080E5D8071F\r
-:1010800019F48091F50126C0CB3090E5D90721F401\r
-:101090008091F5018F7E1FC0CD3020E5D20721F46D\r
-:1010A0008091F5018F7D17C0CF3030E5D30721F453\r
-:1010B0008091F5018F7B0FC0C13180E5D80721F405\r
-:1010C0008091F5018F7707C0C331D04531F480910D\r
-:1010D000F5018B7F877F8093F5018091F5010E9458\r
-:1010E0000D1F9BC08D2F99278F70992781309105F7\r
-:1010F000E9F48E01037011279C0102C0220F331FF7\r
-:101100000A95E2F789011C68CE0164E0880F991FF7\r
-:101110006A95E1F788279370082B192B73E0CC0FA1\r
-:10112000DD1F7A95E1F7C076DD272CC0823091056E\r
-:1011300029F41C2F0027016F106A6FC083309105BE\r
-:1011400061F4CE018370992701E010E002C0000F26\r
-:10115000111F8A95E2F71C680EC0049709F05DC064\r
-:10116000CE018370992701E010E002C0000F111F2B\r
-:101170008A95E2F71A6843E0CC0FDD1F4A95E1F744\r
-:10118000C07ED7700C2B1D2B48C08E011F701062C3\r
-:1011900044C000E010E041C001E010E03EC001E8C2\r
-:1011A00010E43BC002E810E438C002EE14E435C09D\r
-:1011B00009EE14E432C00AEE14E42FC005EB14E487\r
-:1011C0002CC006EB14E429C007EB14E426C00CEC99\r
-:1011D00014E423C00DEC14E420C003E815E41DC0A2\r
-:1011E0000AE815E41AC002E915E417C004E915E499\r
-:1011F00014C001E216E411C003E216E40EC004E2DA\r
-:1012000016E40BC005E216E408C006E216E405C0C9\r
-:1012100007E216E402C000E014E4C801DF91CF91B8\r
-:101220001F910F91089596E0799FF001112494E5A4\r
-:10123000899FE00DF11D1124E60FF11DEE0FFF1F38\r
-:10124000E050FF4F85919491803E9105E0F4803C01\r
-:10125000910558F58133910509F46FC048F489323E\r
-:10126000910509F463C08A32910509F46DC072C01A\r
-:1012700089339105E9F082389105D1F085339105E4\r
-:1012800009F44DC067C0833E910581F138F4803E7A\r
-:101290009105B9F0823E9105D9F05CC0863E91057A\r
-:1012A00061F1873E9105A1F155C00E94E9060895BC\r
-:1012B0002091F50120FD02C021FF4CC080EE90E09E\r
-:1012C00049C08091F50180FFF9CF89E390E042C0E9\r
-:1012D0008091F50182FF0EC08091F50184FF03C06B\r
-:1012E00080E090E037C083EE90E034C08091F5015B\r
-:1012F00082FFF2CF82EE90E02DC08091F50183FF56\r
-:101300000BC08091F50184FDEBCF87EE90E022C009\r
-:101310008091F50183FFF5CF86EE90E01BC08091B0\r
-:10132000F50185FF07C089E290E014C08091F501C6\r
-:1013300085FFF9CF85E390E00DC08091F50186FF30\r
-:1013400007C08AE290E006C08091F50186FFF9CFE0\r
-:1013500081E390E00E94F906089508950C94AD0988\r
-:1013600080916A010895CF93DF9300D01F92CDB78B\r
-:10137000DEB72091EC01243019F523E029839B830B\r
-:101380008A832093E9008FEF9091E800815095FDCA\r
-:1013900006C095ED9A95F1F700008111F5CF809187\r
-:1013A000E80085FF0DC040E050E063E070E0CE0152\r
-:1013B00001960E941D0C8091E8008E778093E800D2\r
-:1013C0000F900F900F90DF91CF910895CF93DF93FF\r
-:1013D00000D01F92CDB7DEB72091EC01243021F56B\r
-:1013E00022E029839B838A8383E08093E9008FEF47\r
-:1013F0009091E800815095FD06C095ED9A95F1F722\r
-:1014000000008111F5CF8091E80085FF0DC040E01C\r
-:1014100050E063E070E0CE0101960E941D0C8091C7\r
-:10142000E8008E778093E8000F900F900F90DF9187\r
-:10143000CF9108952091EC012430F1F422E0209323\r
-:10144000E9002FEF3091E800215035FD06C035ED61\r
-:101450003A95F1F700002111F5CF2091E80025FF22\r
-:101460000BC040E050E065E070E00E941D0C8091F0\r
-:10147000E8008E778093E8000895CF93DF93EC0126\r
-:101480008091EC01843009F046C090910C019923C1\r
-:10149000D9F090910D019923B9F08093E9008FEF75\r
-:1014A0009091E800815095FD06C095E19A95F1F77D\r
-:1014B00000008111F5CF8091E80085FF2CC040E04D\r
-:1014C00050E060E170E017C081E08093E9008FEFA9\r
-:1014D0009091E800815095FD06C095ED9A95F1F741\r
-:1014E00000008111F5CF8091E80085FF14C040E035\r
-:1014F00050E068E070E0CE010E941D0C8091E80091\r
-:101500008E778093E80080E1FE01AAE5B1E00190CA\r
-:101510000D928A95E1F7DF91CF9108958091EB01CB\r
-:10152000811109C00E94AF0D0E940C0E8091E20053\r
-:1015300084608093E20008951092EB01089508956D\r
-:101540000C9468230E94DB1C0E946E230E94A91049\r
-:101550000C94AE0942E061EC81E00E94290D42E06A\r
-:1015600061EC82E00E94290D42E061EC83E00E9480\r
-:10157000290D42E161EC84E00C94290D8091EE018B\r
-:10158000833009F455C030F4813071F0823009F4B1\r
-:101590008EC008958A3009F47AC08B3009F460C097\r
-:1015A000893009F09CC020C08091ED01813A09F09A\r
-:1015B00096C08091E800877F8093E8008091F101D8\r
-:1015C0009091F201892B21F060E080E090E003C06F\r
-:1015D00060E18AE591E070E00E94660C8091E8008D\r
-:1015E0008B778093E80008958091ED01813209F0B6\r
-:1015F00076C08091F1019091F201009719F0039764\r
-:1016000009F06DC08091E800877F8093E8008091A9\r
-:10161000E80082FD05C08091EC018111F8CF5FC028\r
-:101620008091F10080936A018091E8008B7753C02C\r
-:101630008091ED01813A09F052C08091F1019091C1\r
-:10164000F201892B09F04BC08091E800877F8093DD\r
-:10165000E8008091E80080FFFCCF80910C0136C04B\r
-:101660008091ED018132D9F58091F1019091F201E3\r
-:10167000892BA9F58091E800877F8093E8000E947C\r
-:101680005E0D8091EF0180930C010C942C168091DB\r
-:10169000ED01813221F58091E800877F8093E80099\r
-:1016A0000E945E0D8091F00180936B0108958091FE\r
-:1016B000ED01813AA1F48091E800877F8093E800F2\r
-:1016C0008091E80080FFFCCF80916B018093F10056\r
-:1016D0008091E8008E778093E8000C945E0D089569\r
-:1016E00084B7877F84BF88E10FB6F8948093600049\r
-:1016F000109260000FBE90E080E80FB6F8948093DF\r
-:101700006100909361000FBE0E94F8100E94AF0D1F\r
-:101710000E940C0E8091E20084608093E200789435\r
-:101720000E9487100E94FA1082E091E00E94A410AB\r
-:101730000E9456238091EC01853069F40E949B1C25\r
-:101740008091EA018823B1F30E94C61C882391F39B\r
-:101750000E94070CEFCF0E940011ECCF292F3327F6\r
-:1017600023303105A9F06CF42130310509F442C071\r
-:101770002230310509F043C08DE690E024ED33E0DE\r
-:1017800042C021323105C9F02232310519F137C08A\r
-:1017900099278130910541F08230910541F0892BE4\r
-:1017A00071F5E0EDF3E005C0E8EBF3E002C0E0EA3C\r
-:1017B000F3E0849190E09F0126C0643000F5E62FAD\r
-:1017C000F0E0EE0FFF1FEE5DFE4F2081318189E0DA\r
-:1017D00090E019C0643098F4E62FF0E0DF01AA0F22\r
-:1017E000BB1FA65EBE4F2D913C91EA5EFE4F8081ED\r
-:1017F00090E009C082E190E021E434E004C080E0A0\r
-:1018000090E020E030E0FA0131832083089580E108\r
-:1018100089BD82E189BD09B400FEFDCF8091D80069\r
-:101820008F7D8093D8008091E00082608093E000FB\r
-:101830008091E00081FDFCCF0895CF92DF92EF927E\r
-:10184000FF920F931F93CF93DF937C018B01EA01EB\r
-:101850000E947F0D811131C0209731F088819981DC\r
-:10186000081B190BE80EF91EC12CD12C011511050E\r
-:1018700019F18091E80085FD14C08091E8008E7711\r
-:101880008093E800209741F0888199818C0D9D1DFF\r
-:101890009983888385E011C00E947F0D882331F3EE\r
-:1018A0000CC0F70181917F018093F1000150110973\r
-:1018B000FFEFCF1ADF0ADACF80E0DF91CF911F91DF\r
-:1018C0000F91FF90EF90DF90CF9008952091F3015A\r
-:1018D0003091F4012617370748F06115710539F486\r
-:1018E0002091E8002E772093E80001C0B901FC01A7\r
-:1018F00020E061157105B9F18091EC01882309F4AC\r
-:1019000040C0853009F43FC08091E80083FD3DC0B0\r
-:101910008091E80082FF06C08091E80082FF26C027\r
-:1019200080E008958091E80080FFE3CF2091F300EC\r
-:101930008091F20090E0922B6115710551F0883092\r
-:10194000910538F421912093F100615071090196BD\r
-:10195000F3CF21E0089709F020E08091E8008E772E\r
-:101960008093E800C6CF2111C7CFD6CF8091EC017C\r
-:10197000882339F0853039F08091E80083FFCCCF9F\r
-:1019800004C082E0089583E0089581E008952091E5\r
-:10199000F3013091F4012617370748F061157105FE\r
-:1019A00039F42091E8002E772093E80001C0B901B6\r
-:1019B000FC0120E061157105C1F18091EC018823E3\r
-:1019C00009F441C0853009F440C08091E80083FDEE\r
-:1019D0003EC08091E80082FF06C08091E80082FF4F\r
-:1019E00027C080E008958091E80080FFE3CF209138\r
-:1019F000F3008091F20090E0922B6115710559F08F\r
-:101A00008830910540F424912093F1003196615083\r
-:101A100071090196F2CF21E0089709F020E080914A\r
-:101A2000E8008E778093E800C5CF2111C6CFD5CFCF\r
-:101A30008091EC01882339F0853039F08091E800FD\r
-:101A400083FFCBCF04C082E0089583E0089581E056\r
-:101A50000895982F973058F59093E900981739F02A\r
-:101A60007091EC002091ED005091F00003C0242F04\r
-:101A7000762F50E021FF19C03091EB003E7F30936C\r
-:101A8000EB003091ED003D7F3093ED003091EB00A5\r
-:101A900031603093EB007093EC002093ED00509395\r
-:101AA000F0002091EE0027FF07C09F5FD3CF8F701B\r
-:101AB0008093E90081E0089580E008958091ED0130\r
-:101AC00087FD05C08091E80080FF0EC012C08091A4\r
-:101AD000E80082FD05C08091EC018111F8CF0895E6\r
-:101AE0008091E8008B7708C08091EC018111EACFEA\r
-:101AF00008958091E8008E778093E80008958091A2\r
-:101B0000E4009091E50045E62091EC0020FF21C023\r
-:101B10002091E80020FD21C02091EC01222389F0D2\r
-:101B2000253089F02091EB0025FD0FC02091E400C5\r
-:101B30003091E5002817390739F3415041F0C901C8\r
-:101B4000E3CF82E0089583E0089581E0089584E082\r
-:101B500008952091E80022FFDFCF80E008950E94E1\r
-:101B60001D0E0E94250EE0EEF0E0808181608083F2\r
-:101B7000E8EDF0E080818F77808319BCA7EDB0E0BD\r
-:101B80008C918E7F8C9380818F7E80831092EB016D\r
-:101B900008950F931F93CF93DF930E941D0E0E9411\r
-:101BA000250EC8EDD0E088818F7788838881806892\r
-:101BB000888388818F7D888319BC1092EC011092F4\r
-:101BC000E8011092EA011092E90100EE10E0F8013C\r
-:101BD00080818B7F808388818160888342E060E0A0\r
-:101BE00080E00E94290DE1EEF0E080818E7F80830D\r
-:101BF000E2EEF0E080818160808380818860808374\r
-:101C0000F80180818E7F8083888180618883DF9165\r
-:101C1000CF911F910F910895E8EDF0E080818F7EC4\r
-:101C20008083E7EDF0E080818160808384E082BF83\r
-:101C300081E08093EB010C94C90DE8EDF0E0808128\r
-:101C40008E7F80831092E20008951092DA00109245\r
-:101C5000E10008951F920F920FB60F9211242F9357\r
-:101C60003F934F935F936F937F938F939F93AF9324\r
-:101C7000BF93EF93FF938091E10082FF0BC08091AF\r
-:101C8000E20082FF07C08091E1008B7F8093E1003A\r
-:101C90000E9486108091DA0080FF1FC08091D800DA\r
-:101CA00080FF1BC08091DA008E7F8093DA008091E4\r
-:101CB000D90080FF0DC080E189BD82E189BD09B4F2\r
-:101CC00000FEFDCF81E08093EC010E948E0A05C0EA\r
-:101CD00019BC1092EC010E949C0A8091E10080FFE7\r
-:101CE00019C08091E20080FF15C08091E2008E7FD4\r
-:101CF0008093E2008091E20080618093E200809115\r
-:101D0000D80080628093D80019BC85E08093EC01F4\r
-:101D10000E94A00A8091E10084FF30C08091E2001F\r
-:101D200084FF2CC080E189BD82E189BD09B400FE39\r
-:101D3000FDCF8091D8008F7D8093D8008091E10005\r
-:101D40008F7E8093E1008091E2008F7E8093E2009D\r
-:101D50008091E20081608093E2008091E801882315\r
-:101D600011F084E007C08091E30087FF02C083E0A8\r
-:101D700001C081E08093EC010E94A20A8091E10001\r
-:101D800083FF29C08091E20083FF25C08091E1009C\r
-:101D9000877F8093E10082E08093EC011092E8015C\r
-:101DA0008091E1008E7F8093E1008091E2008E7F40\r
-:101DB0008093E2008091E20080618093E20042E043\r
-:101DC00060E080E00E94290D8091F000886080939F\r
-:101DD000F0000E949F0AFF91EF91BF91AF919F91F8\r
-:101DE0008F917F916F915F914F913F912F910F90C4\r
-:101DF0000FBE0F901F9018951F920F920FB60F9263\r
-:101E000011242F933F934F935F936F937F938F93FF\r
-:101E10009F93AF93BF93CF93EF93FF93C091E9004C\r
-:101E2000CF708091EC001092E9008091F000877FE4\r
-:101E30008093F00078940E94380F1092E90080910E\r
-:101E4000F00088608093F000C093E900FF91EF916B\r
-:101E5000CF91BF91AF919F918F917F916F915F9142\r
-:101E60004F913F912F910F900FBE0F901F9018959B\r
-:101E70001F93CF93DF93CDB7DEB7AA970FB6F89431\r
-:101E8000DEBF0FBECDBFEDEEF1E08091F10081939A\r
-:101E900021E0E53FF207C9F70E94BE0A8091E80001\r
-:101EA00083FF1CC12091ED013091EE01832F90E062\r
-:101EB0008A30910508F012C1FC01E05AFF4F0C94E2\r
-:101EC000F024203881F0223809F008C18091F10116\r
-:101ED0008F708093E9008091EB0085FB882780F963\r
-:101EE0001092E90006C08091E9019091EA019111F8\r
-:101EF00082609091E800977F9093E8008093F100D2\r
-:101F00001092F100C5C0822F8D7F09F0E7C0222317\r
-:101F100019F0223061F0E2C08091EF01813009F0C8\r
-:101F2000DDC0333009F080E08093EA0128C0809161\r
-:101F3000EF01811124C02091F1012F7009F4CEC06E\r
-:101F40002093E9008091EB0080FF19C08091EB00A5\r
-:101F5000333011F4806211C080618093EB0081E026\r
-:101F600090E0022E01C0880F0A94EAF78093EA00FD\r
-:101F70001092EA008091EB0088608093EB00109251\r
-:101F8000E9008091E800877F86C02111A7C01091E9\r
-:101F9000EF011F778091E3008078812B8093E3002D\r
-:101FA0008091E800877F8093E8000E945E0D809119\r
-:101FB000E80080FFFCCF8091E30080688093E3001D\r
-:101FC000112311F083E001C082E08093EC0186C010\r
-:101FD0002058223008F082C08091EF019091F001EA\r
-:101FE0008C3D23E0920779F583E08A838AE2898336\r
-:101FF0004FB7F894DE01139620E03EE051E2E32F64\r
-:10200000F0E050935700E49120FF03C0E295EF7099\r
-:102010003F5FEF708E2F90E0EA3010F0C79601C05E\r
-:10202000C0968D939D932F5F243149F74FBF8091C8\r
-:10203000E800877F8093E8006AE270E0CE010196B5\r
-:102040000E94660C14C0AE014F5F5F4F6091F101BA\r
-:102050000E94AE0B009709F441C02091E800277F51\r
-:102060002093E800BC0189819A810E94C70C80916D\r
-:10207000E8008B778093E80031C0203879F58091B3\r
-:10208000E800877F8093E8008091E8018093F10069\r
-:102090008091E8008E778093E8000E945E0D1EC05C\r
-:1020A00021111CC09091EF019230C0F48091E800A2\r
-:1020B000877F8093E8009093E8010E945E0D8091F5\r
-:1020C000E801811104C08091E30087FF02C084E031\r
-:1020D00001C081E08093EC010E94AA0A8091E8008F\r
-:1020E00083FF0AC08091E800877F8093E800809199\r
-:1020F000EB0080628093EB00AA960FB6F894DEBFE7\r
-:102100000FBECDBFDF91CF911F9108950895CF935A\r
-:102110008091EC018823B1F08091E9008F7090915B\r
-:10212000EC0090FF02C090E801C090E0C92FC82BDE\r
-:102130001092E9008091E80083FD0E94380FCF7073\r
-:10214000C093E900CF91089590937101809370013D\r
-:102150000895E0917001F0917101309721F00190A4\r
-:10216000F081E02D099480E00895E0917001F091F4\r
-:102170007101309721F00280F381E02D09940895D8\r
-:10218000E0917001F0917101309721F00480F581A8\r
-:10219000E02D0994089520916E0130916F0182170E\r
-:1021A000930771F090936F0180936E01E09170013D\r
-:1021B000F0917101309721F00680F781E02D0994AC\r
-:1021C000089520916C0130916D018217930771F091\r
-:1021D00090936D0180936C01E0917001F091710119\r
-:1021E000309721F00084F185E02D09940895089539\r
-:1021F0000C94F7100E94E11C0E94CA050C94A71DC4\r
-:10220000CF92DF92EF92FF920F931F93CF93DF93C2\r
-:10221000CDB7DEB72B970FB6F894DEBF0FBECDBF9C\r
-:102220000E94E20533E7E32E31E0F32E00E010E0F8\r
-:10223000C02E802F0E94CF06F701D1907F01D826B3\r
-:10224000B1F40F5F1F4F0E30110591F78FEF8983A7\r
-:102250008A831B820E94EA1C8160782F9D838C8375\r
-:1022600049815A816B818D810E94A31141C0909157\r
-:10227000D50191FF04C08B870E94D5068B8520E095\r
-:1022800030E04D2D50E0922FBA01022E02C075951C\r
-:1022900067950A94E2F760FF25C02E83CF82EE2473\r
-:1022A000E394F12C02C0EE0CFF1C9A95E2F790E04B\r
-:1022B0008E219F2121E0892B09F420E028870E94AC\r
-:1022C000EA1C8160782F9A8789874E815F816885B3\r
-:1022D0008A850E94A311F801ED58FE4F80818E255A\r
-:1022E000808306C02F5F3F4F2630310561F6A9CFAE\r
-:1022F0000E948B20109172010E94A9101817A1F062\r
-:102300000E94A910809372012B960FB6F894DEBF3D\r
-:102310000FBECDBFDF91CF911F910F91FF90EF9036\r
-:10232000DF90CF900C94AE092B960FB6F894DEBFD9\r
-:102330000FBECDBFDF91CF911F910F91FF90EF9016\r
-:10234000DF90CF900895CF93DF93CDB7DEB72B9773\r
-:102350000FB6F894DEBF0FBECDBF4F835887698795\r
-:102360007A878B87DE01119686E0FD0111928A95AE\r
-:10237000E9F785E0FE01379601900D928A95E1F725\r
-:1023800049815A816B817C818D819E810E94F818E0\r
-:102390002B960FB6F894DEBF0FBECDBFDF91CF9165\r
-:1023A00008950895CF93C82F882309F4C1C08238B7\r
-:1023B00059F40E94A91081FDBBC089E30E94A21BB1\r
-:1023C0000E946C1C89E30CC0833879F40E94A91028\r
-:1023D00080FDAEC083E50E94A21B0E946C1C83E5B9\r
-:1023E0000E94E21BCF910C946C1C843859F40E941B\r
-:1023F000A91082FD9DC087E40E94A21B0E946C1C54\r
-:1024000087E4EECF8CEF8C0F813A48F48C2F0E943A\r
-:10241000BE2281118DC08C2F0E94A21BE3CF80E2CF\r
-:102420008C0F883048F4C77081E001C0880FCA95CE\r
-:10243000EAF70E94231CD6CF8BE58C0F833078F40B\r
-:10244000C53A29F0C63A31F482E890E005C081E847\r
-:1024500090E002C083E890E0CF910C94CB1088E527\r
-:102460008C0F833108F064C0C83A39F1C93A41F1A0\r
-:10247000CA3A49F1CB3A51F1CC3A59F1CD3A61F12E\r
-:10248000C03B69F1CE3A71F1CF3A79F1C13B81F1AC\r
-:10249000C23B89F1C33B91F1C43B99F1C53BA1F12A\r
-:1024A000C63BA9F1C73BB1F1C83BB9F1C93BC1F18A\r
-:1024B000CA3BC9F58AE292E038C082EE90E035C0AE\r
-:1024C00089EE90E032C08AEE90E02FC085EB90E07C\r
-:1024D0002CC086EB90E029C087EB90E026C08CEC06\r
-:1024E00090E023C08DEC90E020C083E891E01DC017\r
-:1024F0008AE891E01AC082E991E017C084E991E08E\r
-:1025000014C081E292E011C083E292E00EC084E246\r
-:1025100092E00BC085E292E008C086E292E005C03E\r
-:1025200087E292E002C080E090E0CF910C94E1104D\r
-:10253000CF910895882309F44BC0823859F40E9442\r
-:10254000A91081FF45C089E30E94A21B0E946C1C58\r
-:1025500089E30CC0833871F40E94A91080FF38C051\r
-:1025600083E50E94A21B0E946C1C83E50E94E21B73\r
-:102570000C946C1C843859F40E94A91082FF28C066\r
-:1025800087E40E94A21B0E946C1C87E4EFCF9CEFA3\r
-:10259000980F913A58F390E2980F983050F4877062\r
-:1025A00091E001C0990F8A95EAF7892F0E94291CB2\r
-:1025B000DFCF9BE5980F933020F480E090E00C94FF\r
-:1025C000CB10885A833120F480E090E00C94E11025\r
-:1025D0000895882321F00E94231C0C946C1C0895FC\r
-:1025E000882321F00E94291C0C946C1C0895CF9222\r
-:1025F000DF92EF92FF920F931F93CF93DF93CDB7AC\r
-:10260000DEB728970FB6F894DEBF0FBECDBF8C01A2\r
-:1026100085E0F801DE01119601900D928A95E1F7AF\r
-:10262000F801D080E180F280558152955F7023815E\r
-:102630003481232B39F0FFEFEF1206C081E0DF1267\r
-:1026400003C003C081E001C080E080FDE2C2C80198\r
-:102650005F830E94D111D982EA8269817A818F2DAC\r
-:102660000E949E1B9E8388870E94521B0E94251AEF\r
-:102670004E815F816885FF2029F00E94401C68859B\r
-:102680005F814E81E42FE295EF70F0E0E659FF4F55\r
-:102690000C94F024842F807F142F1F70882311F056\r
-:1026A0001295107FFF20B1F0112309F467C280E278\r
-:1026B000860F883028F4812F68870E94231C04C06D\r
-:1026C000812F68870E94331C688568870E946C1C74\r
-:1026D000688554C2862F68870E949A1268851123E4\r
-:1026E00009F497C2605E812F683018F40E94291C9B\r
-:1026F00002C00E94391C28960FB6F894DEBF0FBEA8\r
-:10270000CDBFDF91CF911F910F91FF90EF90DF90A0\r
-:10271000CF900C946C1C242F207F842F8F7020323C\r
-:1027200011F08295807F662319F0613019F12BC07A\r
-:10273000FF20B1F0552309F493C1513009F090C145\r
-:1027400028960FB6F894DEBF0FBECDBFDF91CF91B4\r
-:102750001F910F91FF90EF90DF90CF900C94531C3E\r
-:10276000552319F0513009F454C28E830E94561C2F\r
-:102770008E8189C1FF2021F0523008F04AC270C119\r
-:10278000511147C280C1FF2021F0552309F468C1CF\r
-:10279000F5C1552309F477C105C2242F2695269546\r
-:1027A000237030E02115310521F021303105C9F0C9\r
-:1027B00030C2FF2021F0862F942F937002C080E05A\r
-:1027C00090E028960FB6F894DEBF0FBECDBFDF9124\r
-:1027D000CF911F910F91FF90EF90DF90CF900C94CD\r
-:1027E000CB10FF2021F0862F942F937002C080E041\r
-:1027F00090E028960FB6F894DEBF0FBECDBFDF91F4\r
-:10280000CF911F910F91FF90EF90DF90CF900C949C\r
-:10281000E110862FFF2019F00E94931F02C00E9432\r
-:10282000FB1F28960FB6F894DEBF0FBECDBFDF9119\r
-:10283000CF911F910F91FF90EF90DF90CF900C946C\r
-:102840008020842F837009F076C0F110E2C1262F1A\r
-:10285000229526952770220F220F862F8F70C82E63\r
-:10286000D12CE12CF12C022E04C0CC0CDD1CEE1C72\r
-:10287000FF1C0A94D2F764FF10C06FE070E080E0A4\r
-:1028800090E004C0660F771F881F991F2A95D2F722\r
-:10289000609570958095909503C060E070E0CB01E5\r
-:1028A000242F269526952370422F50E04230510563\r
-:1028B000D1F04330510559F16C297D298E299F298A\r
-:1028C0004130510541F128960FB6F894DEBF0FBE96\r
-:1028D000CDBFDF91CF911F910F91FF90EF90DF90CF\r
-:1028E000CF900C944A1A6C297D298E299F2928960D\r
-:1028F0000FB6F894DEBF0FBECDBFDF91CF911F9111\r
-:102900000F91FF90EF90DF90CF900C94641A0E948B\r
-:102910004A1AC701B60128960FB6F894DEBF0FBE5B\r
-:10292000CDBFDF91CF911F910F91FF90EF90DF907E\r
-:10293000CF900C94301AFF2019F0842F817001C0C1\r
-:102940008695882309F465C1262F22952695277040\r
-:10295000220F220F862F8F70C82ED12CE12CF12C44\r
-:10296000022E04C0CC0CDD1CEE1CFF1C0A94D2F716\r
-:1029700064FF10C06FE070E080E090E004C0660F7C\r
-:10298000771F881F991F2A95D2F7609570958095BB\r
-:10299000909503C060E070E0CB01242F269526952A\r
-:1029A0002370422F50E042305105D1F043305105A1\r
-:1029B00059F16C297D298E299F294130510541F11A\r
-:1029C00028960FB6F894DEBF0FBECDBFDF91CF9132\r
-:1029D0001F910F91FF90EF90DF90CF900C941E1BF2\r
-:1029E0006C297D298E299F2928960FB6F894DEBF81\r
-:1029F0000FBECDBFDF91CF911F910F91FF90EF9050\r
-:102A0000DF90CF900C94381B0E941E1BC701B601AB\r
-:102A100028960FB6F894DEBF0FBECDBFDF91CF91E1\r
-:102A20001F910F91FF90EF90DF90CF900C94041BBB\r
-:102A3000603FC9F118F4603E50F49BC0623F09F456\r
-:102A400060C008F44AC0633F09F46FC092C0162FFB\r
-:102A50001F70842F8F71FF2099F00E949D1A812F83\r
-:102A600028960FB6F894DEBF0FBECDBFDF91CF9191\r
-:102A70001F910F91FF90EF90DF90CF900C94E9128F\r
-:102A80000E94BE1A812F28960FB6F894DEBF0FBEA3\r
-:102A9000CDBFDF91CF911F910F91FF90EF90DF900D\r
-:102AA000CF900C94F012FF20A1F05111B2C0842FEE\r
-:102AB0008F7128960FB6F894DEBF0FBECDBFDF91A1\r
-:102AC000CF911F910F91FF90EF90DF90CF900C94DA\r
-:102AD000E31A523008F09DC0EACFFF20A1F0842F06\r
-:102AE0008F7128960FB6F894DEBF0FBECDBFDF9171\r
-:102AF000CF911F910F91FF90EF90DF90CF900C94AA\r
-:102B00009D1AFF2061F3842F8F7128960FB6F894D9\r
-:102B1000DEBF0FBECDBFDF91CF911F910F91FF9010\r
-:102B2000EF90DF90CF900C94BE1AFF2091F0842F8D\r
-:102B30008F7128960FB6F894DEBF0FBECDBFDF9120\r
-:102B4000CF911F910F91FF90EF90DF90CF900C9459\r
-:102B5000881A28960FB6F894DEBF0FBECDBFDF915E\r
-:102B6000CF911F910F91FF90EF90DF90CF900C9439\r
-:102B70007E1AFF20A1F0552309F4B1CF862F2896A5\r
+:100000000C94D7020C941B030C941B030C941B033D\r
+:100010000C941B030C941B030C941B030C941B03E8\r
+:100020000C941B030C941B030C94500E0C94220F85\r
+:100030000C941B030C941B030C941B030C941B03C8\r
+:100040000C941B030C94A1230C941B030C941B0312\r
+:100050000C941B030C94451D0C941B030C941B0364\r
+:100060000C941B030C941B030C941B030C941B0398\r
+:100070000C941B030C941B030C941B030C941B0388\r
+:100080000C941B030C941B030C941B030C941B0378\r
+:100090000C941B030C941B030C941B030C941B0368\r
+:1000A0000C941B030C941B030C941B032B035F0386\r
+:1000B0008403C2032B036803A603D00391049104B5\r
+:1000C00054045E0468047A04870FA90F9410A90FE2\r
+:1000D0009410EB0F0E1094106310761070137013C1\r
+:1000E000B113B113F3132F142F162F1647142F1615\r
+:1000F0003E153E1509162F162F161D16000000007E\r
+:1001000000000000000000000000000000000000EF\r
+:100110000AC80BC80CC80DC80EC80FC810C811C833\r
+:100120000D200C200B300A30E00000001E001400EF\r
+:1001300004001D0000074E001F001A0016001B00DF\r
+:10014000000F4C002000080007000600E2002A0013\r
+:100150002100150009001900E3004B0022001700E0\r
+:100160000A00050000004A0029002F0000002B02B1\r
+:1001700000004D002D00300000002B00000050005A\r
+:1001800023001C000B00110000004F002400180089\r
+:100190000D001000E700520025000C000E00360094\r
+:1001A000E6002C00260012000F003700000F280088\r
+:1001B00027001300330038000007510011201020E1\r
+:1001C0000F200E30E40000000100010001000100DA\r
+:1001D000E00000003A001E02200222020007510047\r
+:1001E0003B001F0221022302000F28003C002F02C7\r
+:1001F00026022F00E2002C003D00300227023000D2\r
+:10020000E30052003E002402350035020000500099\r
+:100210002900360200002B0000004F002D0037029D\r
+:1002200000002B0200004A003F003102380031007C\r
+:1002300000004D004000240021001E0027784B00E4\r
+:100240004100250022001F0037744C0042002600A8\r
+:10025000230020002E7F2A004300380025022D00B5\r
+:100260002E774E00010001000100010028710000FE\r
+:100270000100010001000100E000000044006600F0\r
+:10028000A60000000007B50045001430F20016304B\r
+:10029000F60000006800F000F100F100F400B60084\r
+:1002A00069001530F3001730F500B4006A00A900AA\r
+:1002B000AA00A8000000B8002900F9000000FA0018\r
+:1002C0000000B9000000F9000000FA000000AC00D6\r
+:1002D0006B004600530000000000AB006C004A00B9\r
+:1002E00050004D004978A9006D00520051005100A6\r
+:1002F0004C74AE006E004B004F004E00000FAD007E\r
+:100300006F00B100B30000000007AA000100010067\r
+:1003100001000100E40000000100010001000100F3\r
+:10032000010000002900010001000100010001009E\r
+:1003300001000100010001000100010001000100B5\r
+:1003400001000100010001000100010001000100A5\r
+:100350000100010001000100010001000000010096\r
+:100360000100010000000100000001000100010087\r
+:100370000000010000000100010001000100010077\r
+:100380000000010001000100010001000100010066\r
+:100390000100010001000100010001000100010055\r
+:1003A00001000100010001002A000100010001001C\r
+:1003B00001000100010001000100E5000100000052\r
+:1003C00016034500720067006F0044006F0078005C\r
+:1003D000200045005A000000160345007200670027\r
+:1003E0006F0044006F007800200045005A000000B4\r
+:1003F0000403090409026D00040100A0FA090400C5\r
+:10040000000103010100092111010001223F000741\r
+:1004100005810308000A0904010001030102000923\r
+:100420002111010001224D000705820308000A097D\r
+:10043000040200010300000009211101000122361D\r
+:10044000000705830308000A0904030001030000F4\r
+:100450000009211101000122390007058403100061\r
+:10046000011201100100000008EDFE071301000158\r
+:1004700002000105010906A101050719E029E71598\r
+:1004800000250195087501810205081901290595C6\r
+:100490000575019102950175039101050719002960\r
+:1004A0007715002501957875018102C00501098045\r
+:1004B000A101850216010026B7001A01002AB70023\r
+:1004C000751095018100C0050C0901A10185031675\r
+:1004D0000100269C021A01002A9C027510950181D8\r
+:1004E00000C005010902A1010901A10005091901C6\r
+:1004F00029051500250195057501810295017503F2\r
+:1005000081010501093009311581257F95027508A2\r
+:10051000810609381581257F950175088106050C2E\r
+:100520000A38021581257F950175088106C0C0052E\r
+:10053000010906A101050719E029E7150025019524\r
+:1005400008750181029501750881010508190129C5\r
+:10055000059505750191029501750391010507192E\r
+:100560000029FF150025FF950675088100C00000D1\r
+:10057000000000000000000000010204060A0F173E\r
+:10058000202C3A4A5D71879DB3C7DAE9F5FCFFFC80\r
+:10059000F5E9DAC7B39D87715D4A3A2C20170F0A37\r
+:1005A0000604020100000000000000000000112409\r
+:1005B0001FBECFEFDAE0DEBFCDBF04B603FE24C01E\r
+:1005C0008091F6019091F701A091F801B091F901A5\r
+:1005D0008730904BA740B04BB9F41092F6011092BF\r
+:1005E000F7011092F8011092F90114BE84B7877FC9\r
+:1005F00084BF88E10FB6F894809360001092600089\r
+:100600000FBEE0E0FFE3099511E0A0E0B1E0E0ED0E\r
+:10061000FAE402C005900D92A433B107D9F721E0A6\r
+:10062000A4E3B1E001C01D92A63FB207E1F70E942A\r
+:10063000960B0C9466250C940000DC01462F50E0CC\r
+:100640004A5051094E30510508F06BC14A5A5F4F6C\r
+:10065000FA010C94162512962C91129780913A016A\r
+:1006600090913B012223F9F015962C91207FD9F42B\r
+:1006700001968330910510F082E090E090933B0169\r
+:1006800080933A0180913A0190913B01823091052B\r
+:1006900029F489E30E94F81189E30EC0019709F05B\r
+:1006A00040C181EEFAC0019790933B0180933A01DB\r
+:1006B000892B09F036C181EE0E94C01232C1129618\r
+:1006C0002C918091380190913901222379F090C0CA\r
+:1006D00012963C91129715962C9180913801909129\r
+:1006E0003901207F31117AC009F09FC001979093A2\r
+:1006F000390180933801892B09F013C180913501AC\r
+:1007000081110FC181E067C012963C911297159636\r
+:100710002C918091360190913701207F332361F035\r
+:10072000222309F491C0009709F08EC02091340172\r
+:1007300021118AC08BE2B1C02223B1F00097A1F44D\r
+:1007400020913401211110C08BE2B6CF12963C915A\r
+:10075000129715962C918091360190913701207F48\r
+:10076000311168C009F08DC00197909337018093D3\r
+:100770003601892B09F0D5C0809134018111D1C097\r
+:1007800082E029C012969C91129715968C9199231C\r
+:10079000B1F0982F907F79F080FD0DC085E37DC08A\r
+:1007A00012969C91129715968C91992379F0982F17\r
+:1007B000907F09F06FC083E00E94C31AB2C0982FE7\r
+:1007C000907F41F080FD06C085E376CF982F907F23\r
+:1007D00009F066C083E00E94E41AA3C0222341F01E\r
+:1007E000009731F420913501211102C084E355C0F6\r
+:1007F00001968330910510F082E090E090933901EA\r
+:1008000080933801809138019091390182309105AF\r
+:1008100029F0019709F085C081E0CECF80913501A4\r
+:1008200091E08927809335017CC0009709F05ECF65\r
+:1008300084E342CF222341F0009731F42091340128\r
+:10084000211102C081E329C001968330910510F087\r
+:1008500082E090E0909337018093360180913601D9\r
+:10086000909137018230910529F0019709F059C024\r
+:1008700082E0A2CF8091340191E0892780933401F6\r
+:1008800050C0009709F070CF2091340121116CCF36\r
+:1008900081E312CF80FD8FCF8EE20E94F81141C01C\r
+:1008A00080FD98CF8EE208CF12968C91882319F0A4\r
+:1008B00080EF90E013C080EF90E017C012968C910B\r
+:1008C000882319F080EF90E01BC080EF90E021C0FA\r
+:1008D00012968C91882339F081EF90E00E94B91F25\r
+:1008E00082EF90E011C081EF90E00E94212082EF22\r
+:1008F00090E013C012968C91882349F081EF90E02C\r
+:100900000E94B91F83EF90E00E94B91F08C081EFD9\r
+:1009100090E00E94212083EF90E00E9421200E941D\r
+:10092000A62080E090E00895089580913A0190918A\r
+:100930003B01892B19F0259A2D9A0DC0E0910E01EB\r
+:10094000F0910F01808185FDF6CF0E94CF1081FDCF\r
+:10095000F2CF25982D988091B90181FF03C0269A86\r
+:100960002E9A02C026982E988091B90182FF03C06A\r
+:10097000279A2F9A089527982F9808950C949504F4\r
+:1009800056985E9825982D9826982E9827982F98F7\r
+:100990008FEF90E0909389008093880090938B0074\r
+:1009A00080938A0090938D0080938C00259A2D9AD5\r
+:1009B0002FEF80E792E0215080409040E1F700C0A7\r
+:1009C0000000269A2E9A2FEF80E792E02150804077\r
+:1009D0009040E1F700C00000279A2F9A2FEF80E7A0\r
+:1009E00092E0215080409040E1F700C0000025983F\r
+:1009F0002D982FEF80E792E0215080409040E1F762\r
+:100A000000C0000026982E982FEF80E792E021503A\r
+:100A100080409040E1F700C0000027982F9856983A\r
+:100A20005E9825982D9826982E9827982F980895A7\r
+:100A300089EA8093800089E08093810024982C9833\r
+:100A40003F988AB18F748AB96E98479A8BB1806B40\r
+:100A50008BB9769A0E94C0040C94940480E280932F\r
+:100A6000000180913C0181110EC00E947D0581E052\r
+:100A700080933C012FEF83ED90E321508040904024\r
+:100A8000E1F700C0000080E40E948305809300012C\r
+:100A900081112EC00E94AD0580930001811128C0F4\r
+:100AA0000E94AD0580930001811122C08FE30E9456\r
+:100AB000AD058093000181111BC00E94A50580E453\r
+:100AC0000E94830580930001811112C08CE00E9476\r
+:100AD000AD058093000181110BC00E94AD0580938C\r
+:100AE0000001811105C08FE30E94AD0580930001D4\r
+:100AF0000E94A5058091000108951092B9008AE036\r
+:100B00008093B800089594EA9093BC009091BC0043\r
+:100B100097FFFCCF9091B900987F983021F09031E9\r
+:100B200011F081E008958093BB0084E88093BC00BD\r
+:100B30008091BC0087FFFCCF8091B900887F88310D\r
+:100B400011F0803471F780E0089584E98093BC004F\r
+:100B50008091BC0084FDFCCF08958093BB0084E8A5\r
+:100B60008093BC008091BC0087FFFCCF9091B900BE\r
+:100B7000987F81E0983209F480E0089584E88093BA\r
+:100B8000BC008091BC0087FFFCCF8091BB00089522\r
+:100B900080910001811115C080E40E94830580933B\r
+:100BA000000181110CC082E10E94AD05809300011B\r
+:100BB000811105C08FEF0E94AD05809300010E9456\r
+:100BC000A50584B1807F84B985B1807F85B98AB15C\r
+:100BD000837F8AB98BB1837F8BB93E9846980895FD\r
+:100BE0000E942E05809300010E94C80580B38C707E\r
+:100BF00080BB81B3836F81BBECE4F1E0AEE3B1E095\r
+:100C000011921D9281E0EA35F807D1F70C9418058E\r
+:100C1000BF92CF92DF92EF92FF920F931F93CF93E9\r
+:100C2000DF9380910001882379F080913D018F5FEF\r
+:100C300080933D01811108C00E942E058093000120\r
+:100C4000811102C00E94C0040EE311E0C0E0D0E0B8\r
+:100C5000DD24D39482E0C82EEE24E394F12CC73037\r
+:100C600000F580910001811162C080E40E9483053B\r
+:100C700080930001811112C082E10E94AD05809332\r
+:100C8000000181110BC0C7010C2E01C0880F0A940E\r
+:100C9000EAF780950E94AD05809300010E94A505AA\r
+:100CA00046C0CA30A1F028F4C83059F0C93061F00C\r
+:100CB00005C0CC3089F070F0CD3089F0209A2898AA\r
+:100CC00010C0219A29980DC0229A2A980AC0239A06\r
+:100CD0002B9807C0529A01C0539A5B9802C03E9A63\r
+:100CE0004698E0EAEA95F1F78FB179995AC092E017\r
+:100CF00081708D25892B7C9B02C090E001C094E01F\r
+:100D0000892B7D9B02C090E001C098E0892B7E9BDF\r
+:100D100002C090E001C090E1892B9FB19095991F8E\r
+:100D20009927991F9295990F907E892B0FC08091DA\r
+:100D3000000181114BC080E40E9483058093000173\r
+:100D4000882389F1B12C0E94A5058B2DF801908193\r
+:100D5000981719F08083C09201010E94C80521965E\r
+:100D60000F5F1F4FCE30D10509F079CF809101017F\r
+:100D7000882371F1815080930101882339F08FE934\r
+:100D80009FE00197F1F700C0000022C0ACE4B1E0A1\r
+:100D9000EEE3F1E081918D9391E0EC34F907D1F726\r
+:100DA00017C090E0A5CF83E10E94AD0580930001BC\r
+:100DB0008111C8CF81E40E948305809300018111D5\r
+:100DC000C1CF0E94BE05B82EB094BDCF80E0BECF8B\r
+:100DD0000E94BE0481E0DF91CF911F910F91FF909F\r
+:100DE000EF90DF90CF90BF900895E82FF0E0E45BA4\r
+:100DF000FE4F808108950895089596E0799FF0014F\r
+:100E0000112494E5899FE00DF11D1124E60FF11DD9\r
+:100E1000EE0FFF1FE05EFE4F859194910895880FBD\r
+:100E2000991F84589040FC01859194910895880FF2\r
+:100E3000991F84509F4FFC018591949108950F93C1\r
+:100E40001F93CF93DF93EC01811520E3920730F5D8\r
+:100E5000811530E2930708F0B1C08B3B910588F40F\r
+:100E6000883A910508F058C0853A910508F049C0C4\r
+:100E70008430910508F043C08130910509F4B2C176\r
+:100E8000AEC18F3F910509F0D0F5803F910508F084\r
+:100E900092C0805E9109089790F1A1C1C11581E5CA\r
+:100EA000D807A8F4C23090E5D90708F09FC0C11553\r
+:100EB00020E5D20709F486C008F092C0C11580E48D\r
+:100EC000D80708F08CC18E011127106CCCC1C11558\r
+:100ED00090E8D90758F4C11520E7D20708F07BC184\r
+:100EE000C11530E6D30708F423C179C1C11580E9E3\r
+:100EF000D80708F074C18E011F70106AB4C18E014A\r
+:100F0000B2C1853A910509F470C1863A910509F498\r
+:100F10006FC103E810E4A7C1883A910509F46BC1D9\r
+:100F2000893A910509F46AC18A3A910509F469C1BF\r
+:100F30008B3A910509F468C18C3A910509F467C1AF\r
+:100F40008D3A910509F466C1803B910509F465C1AC\r
+:100F50008E3A910509F464C18F3A910509F463C191\r
+:100F6000813B910509F462C1823B910509F461C19D\r
+:100F7000833B910509F460C1843B910509F45FC18D\r
+:100F8000853B910509F45EC1863B910509F45DC17D\r
+:100F9000873B910509F45CC1883B910509F45BC16D\r
+:100FA000893B910509F45AC18A3B910509F059C161\r
+:100FB0000AE216E458C18C01106555C19F700E9469\r
+:100FC000170752C10E9452169FEF24E33CE0915054\r
+:100FD00020403040E1F700C000000E946A1D43C17C\r
+:100FE0008091D50181608093D5013DC10E94121F7F\r
+:100FF000811102C00E94F81E0E942F1F90E0909362\r
+:10100000F6018093F501C23080E5D80721F4809184\r
+:10101000F501816086C0C43090E5D90721F4809144\r
+:10102000F50182607EC0C63020E5D20721F48091B0\r
+:10103000F501846076C0C83030E5D30719F480919B\r
+:10104000F50127C0CA3080E5D80721F48091F50169\r
+:10105000806167C0CC3090E5D90721F48091F5011B\r
+:1010600080625FC0CE3020E5D20721F48091F50187\r
+:10107000806457C0C03130E5D30721F48091F50179\r
+:1010800080684FC0C23180E5D80729F48091F5010E\r
+:101090008460886046C0C33090E5D90721F4809110\r
+:1010A000F5018E7F3EC0C53020E5D20721F4809146\r
+:1010B000F5018D7F36C0C73030E5D30721F480912C\r
+:1010C000F5018B7F2EC0C93080E5D80719F48091D7\r
+:1010D000F50126C0CB3090E5D90721F48091F501C8\r
+:1010E0008F7E1FC0CD3020E5D20721F48091F5011D\r
+:1010F0008F7D17C0CF3030E5D30721F48091F50103\r
+:101100008F7B0FC0C13180E5D80721F48091F501B4\r
+:101110008F7707C0C331D04531F48091F5018B7FC3\r
+:10112000877F8093F5018091F5010E94331F9BC05A\r
+:101130008D2F99278F70992781309105E9F48E01C1\r
+:10114000037011279C0102C0220F331F0A95E2F79A\r
+:1011500089011C68CE0164E0880F991F6A95E1F748\r
+:1011600088279370082B192B73E0CC0FDD1F7A951D\r
+:10117000E1F7C076DD272CC08230910529F41C2FC1\r
+:101180000027016F106A6FC08330910561F4CE01B2\r
+:101190008370992701E010E002C0000F111F8A95AB\r
+:1011A000E2F71C680EC0049709F05DC0CE018370A1\r
+:1011B000992701E010E002C0000F111F8A95E2F7A5\r
+:1011C0001A6843E0CC0FDD1F4A95E1F7C07ED77067\r
+:1011D0000C2B1D2B48C08E011F70106244C000E014\r
+:1011E00010E041C001E010E03EC001E810E43BC067\r
+:1011F00002E810E438C002EE14E435C009EE14E44D\r
+:1012000032C00AEE14E42FC005EB14E42CC006EB48\r
+:1012100014E429C007EB14E426C00CEC14E423C04A\r
+:101220000DEC14E420C003E815E41DC00AE815E441\r
+:101230001AC002E915E417C004E915E414C001E27C\r
+:1012400016E411C003E216E40EC004E216E40BC07B\r
+:1012500005E216E408C006E216E405C007E216E45B\r
+:1012600002C000E014E4C801DF91CF911F910F91FB\r
+:10127000089596E0799FF001112494E5899FE00D8F\r
+:10128000F11D1124E60FF11DEE0FFF1FE05EFE4F72\r
+:1012900085919491803E9105E0F4803C910558F54C\r
+:1012A0008133910509F46FC048F48932910509F43E\r
+:1012B00063C08A32910509F46DC072C0893391050B\r
+:1012C000E9F082389105D1F08533910509F44DC0DC\r
+:1012D00067C0833E910581F138F4803E9105B9F0F5\r
+:1012E000823E9105D9F05CC0863E910561F1873E52\r
+:1012F0009105A1F155C00E940F0708952091F501B5\r
+:1013000020FD02C021FF4CC080EE90E049C08091DA\r
+:10131000F50180FFF9CF89E390E042C08091F501AB\r
+:1013200082FF0EC08091F50184FF03C080E090E051\r
+:1013300037C083EE90E034C08091F50182FFF2CF98\r
+:1013400082EE90E02DC08091F50183FF0BC080916B\r
+:10135000F50184FDEBCF87EE90E022C08091F5018E\r
+:1013600083FFF5CF86EE90E01BC08091F50185FFED\r
+:1013700007C089E290E014C08091F50185FFF9CFA4\r
+:1013800085E390E00DC08091F50186FF07C08AE2F9\r
+:1013900090E006C08091F50186FFF9CF81E390E0EF\r
+:1013A0000E941F07089508950C94D30980916A0143\r
+:1013B0000895CF93DF9300D01F92CDB7DEB7209171\r
+:1013C000EC01243019F523E029839B838A83209341\r
+:1013D000E9008FEF9091E800815095FD06C095EDF2\r
+:1013E0009A95F1F700008111F5CF8091E80085FF13\r
+:1013F0000DC040E050E063E070E0CE0101960E9435\r
+:10140000430C8091E8008E778093E8000F900F9056\r
+:101410000F90DF91CF910895CF93DF9300D01F926B\r
+:10142000CDB7DEB72091EC01243021F522E02983ED\r
+:101430009B838A8383E08093E9008FEF9091E8009B\r
+:10144000815095FD06C095ED9A95F1F70000811148\r
+:10145000F5CF8091E80085FF0DC040E050E063E0EB\r
+:1014600070E0CE0101960E94430C8091E8008E77D7\r
+:101470008093E8000F900F900F90DF91CF91089527\r
+:101480002091EC012430F1F422E02093E9002FEFC9\r
+:101490003091E800215035FD06C035ED3A95F1F761\r
+:1014A00000002111F5CF2091E80025FF0BC040E09E\r
+:1014B00050E065E070E00E94430C8091E8008E7778\r
+:1014C0008093E8000895CF93DF93EC018091EC01C5\r
+:1014D000843009F046C090910C019923D9F0909185\r
+:1014E0000D019923B9F08093E9008FEF9091E80006\r
+:1014F000815095FD06C095E19A95F1F700008111A4\r
+:10150000F5CF8091E80085FF2CC040E050E060E11D\r
+:1015100070E017C081E08093E9008FEF9091E800C0\r
+:10152000815095FD06C095ED9A95F1F70000811167\r
+:10153000F5CF8091E80085FF14C040E050E068E0FE\r
+:1015400070E0CE010E94430C8091E8008E7780937A\r
+:10155000E80080E1FE01AAE5B1E001900D928A95D4\r
+:10156000E1F7DF91CF9108958091EB01811109C0DE\r
+:101570000E94D50D0E94320E8091E200846080931B\r
+:10158000E20008951092EB01089508950C948E23C3\r
+:101590000E94011D0E9494230E94CF100C94D40934\r
+:1015A00042E061EC81E00E944F0D42E061EC82E09C\r
+:1015B0000E944F0D42E061EC83E00E944F0D42E13A\r
+:1015C00061EC84E00C944F0D8091EE01833009F4BE\r
+:1015D00055C030F4813071F0823009F48EC0089526\r
+:1015E0008A3009F47AC08B3009F460C0893009F080\r
+:1015F0009CC020C08091ED01813A09F096C0809195\r
+:10160000E800877F8093E8008091F1019091F201DA\r
+:10161000892B21F060E080E090E003C060E18AE582\r
+:1016200091E070E00E948C0C8091E8008B778093B1\r
+:10163000E80008958091ED01813209F076C0809133\r
+:10164000F1019091F201009719F0039709F06DC034\r
+:101650008091E800877F8093E8008091E80082FD18\r
+:1016600005C08091EC018111F8CF5FC08091F1003D\r
+:1016700080936A018091E8008B7753C08091ED01DF\r
+:10168000813A09F052C08091F1019091F201892BC9\r
+:1016900009F04BC08091E800877F8093E80080913B\r
+:1016A000E80080FFFCCF80910C0136C08091ED01F5\r
+:1016B0008132D9F58091F1019091F201892BA9F540\r
+:1016C0008091E800877F8093E8000E94840D8091DC\r
+:1016D000EF0180930C010C9452168091ED01813240\r
+:1016E00021F58091E800877F8093E8000E94840DB7\r
+:1016F0008091F00180936B0108958091ED01813A12\r
+:10170000A1F48091E800877F8093E8008091E80051\r
+:1017100080FFFCCF80916B018093F1008091E80005\r
+:101720008E778093E8000C94840D089584B7877FAA\r
+:1017300084BF88E10FB6F894809360001092600037\r
+:101740000FBE90E080E80FB6F8948093610090930C\r
+:1017500061000FBE0E941E110E94D50D0E94320E24\r
+:101760008091E20084608093E20078940E94AD1042\r
+:101770000E94201182E091E00E94CA100E947C2306\r
+:101780008091EC01853069F40E94C11C8091EA01CE\r
+:101790008823B1F30E94EC1C882391F30E942D0C46\r
+:1017A000EFCF0E942611ECCF292F332723303105AC\r
+:1017B000A9F06CF42130310509F442C02230310522\r
+:1017C00009F043C08DE690E024EF33E042C02132BF\r
+:1017D0003105C9F02232310519F137C0992781301E\r
+:1017E000910541F08230910541F0892B71F5E0EFD0\r
+:1017F000F3E005C0E8EDF3E002C0E0ECF3E0849133\r
+:1018000090E09F0126C0643000F5E62FF0E0EE0F77\r
+:10181000FF1FEE5DFE4F2081318189E090E019C00D\r
+:10182000643098F4E62FF0E0DF01AA0FBB1FA65E3C\r
+:10183000BE4F2D913C91EA5EFE4F808190E009C041\r
+:1018400082E190E021E634E004C080E090E020E016\r
+:1018500030E0FA0131832083089580E189BD82E17F\r
+:1018600089BD09B400FEFDCF8091D8008F7D8093A3\r
+:10187000D8008091E00082608093E0008091E000D9\r
+:1018800081FDFCCF0895CF92DF92EF92FF920F93EC\r
+:101890001F93CF93DF937C018B01EA010E94A50D7A\r
+:1018A000811131C0209731F088819981081B190B73\r
+:1018B000E80EF91EC12CD12C0115110519F18091EA\r
+:1018C000E80085FD14C08091E8008E778093E800E1\r
+:1018D000209741F0888199818C0D9D1D9983888383\r
+:1018E00085E011C00E94A50D882331F30CC0F701DB\r
+:1018F00081917F018093F10001501109FFEFCF1A10\r
+:10190000DF0ADACF80E0DF91CF911F910F91FF9036\r
+:10191000EF90DF90CF9008952091F3013091F40182\r
+:101920002617370748F06115710539F42091E80052\r
+:101930002E772093E80001C0B901FC0120E0611579\r
+:101940007105B9F18091EC01882309F440C085301C\r
+:1019500009F43FC08091E80083FD3DC08091E8001C\r
+:1019600082FF06C08091E80082FF26C080E00895D3\r
+:101970008091E80080FFE3CF2091F3008091F20096\r
+:1019800090E0922B6115710551F08830910538F483\r
+:1019900021912093F100615071090196F3CF21E06C\r
+:1019A000089709F020E08091E8008E778093E800A6\r
+:1019B000C6CF2111C7CFD6CF8091EC01882339F053\r
+:1019C000853039F08091E80083FFCCCF04C082E0FD\r
+:1019D000089583E0089581E008952091F301309106\r
+:1019E000F4012617370748F06115710539F4209185\r
+:1019F000E8002E772093E80001C0B901FC0120E047\r
+:101A000061157105C1F18091EC01882309F441C091\r
+:101A1000853009F440C08091E80083FD3EC080918C\r
+:101A2000E80082FF06C08091E80082FF27C080E0C6\r
+:101A300008958091E80080FFE3CF2091F30080912A\r
+:101A4000F20090E0922B6115710559F088309105F4\r
+:101A500040F424912093F100319661507109019670\r
+:101A6000F2CF21E0089709F020E08091E8008E771E\r
+:101A70008093E800C5CF2111C6CFD5CF8091EC016E\r
+:101A8000882339F0853039F08091E80083FFCBCF8F\r
+:101A900004C082E0089583E0089581E00895982FBE\r
+:101AA000973058F59093E900981739F07091EC0051\r
+:101AB0002091ED005091F00003C0242F762F50E0CC\r
+:101AC00021FF19C03091EB003E7F3093EB00309145\r
+:101AD000ED003D7F3093ED003091EB0031603093AD\r
+:101AE000EB007093EC002093ED005093F0002091F8\r
+:101AF000EE0027FF07C09F5FD3CF8F708093E90070\r
+:101B000081E0089580E008958091ED0187FD05C092\r
+:101B10008091E80080FF0EC012C08091E80082FD35\r
+:101B200005C08091EC018111F8CF08958091E80003\r
+:101B30008B7708C08091EC018111EACF08958091E4\r
+:101B4000E8008E778093E80008958091E4009091FA\r
+:101B5000E50045E62091EC0020FF21C02091E8003F\r
+:101B600020FD21C02091EC01222389F0253089F04D\r
+:101B70002091EB0025FD0FC02091E4003091E5009D\r
+:101B80002817390739F3415041F0C901E3CF82E00A\r
+:101B9000089583E0089581E0089584E008952091F8\r
+:101BA000E80022FFDFCF80E008950E94430E0E94EC\r
+:101BB0004B0EE0EEF0E0808181608083E8EDF0E0A4\r
+:101BC00080818F77808319BCA7EDB0E08C918E7FE8\r
+:101BD0008C9380818F7E80831092EB0108950F9308\r
+:101BE0001F93CF93DF930E94430E0E944B0EC8EDCC\r
+:101BF000D0E088818F778883888180688883888116\r
+:101C00008F7D888319BC1092EC011092E80110922C\r
+:101C1000EA011092E90100EE10E0F80180818B7F6B\r
+:101C2000808388818160888342E060E080E00E9458\r
+:101C30004F0DE1EEF0E080818E7F8083E2EEF0E0F8\r
+:101C4000808181608083808188608083F8018081C9\r
+:101C50008E7F8083888180618883DF91CF911F91FF\r
+:101C60000F910895E8EDF0E080818F7E8083E7EDAD\r
+:101C7000F0E080818160808384E082BF81E0809396\r
+:101C8000EB010C94EF0DE8EDF0E080818E7F808316\r
+:101C90001092E20008951092DA001092E100089587\r
+:101CA0001F920F920FB60F9211242F933F934F93D1\r
+:101CB0005F936F937F938F939F93AF93BF93EF93B4\r
+:101CC000FF938091E10082FF0BC08091E20082FFD0\r
+:101CD00007C08091E1008B7F8093E1000E94AC10EF\r
+:101CE0008091DA0080FF1FC08091D80080FF1BC068\r
+:101CF0008091DA008E7F8093DA008091D90080FF96\r
+:101D00000DC080E189BD82E189BD09B400FEFDCF2F\r
+:101D100081E08093EC010E94B40A05C019BC1092C6\r
+:101D2000EC010E94C20A8091E10080FF19C08091FD\r
+:101D3000E20080FF15C08091E2008E7F8093E20078\r
+:101D40008091E20080618093E2008091D8008062FF\r
+:101D50008093D80019BC85E08093EC010E94C60AEC\r
+:101D60008091E10084FF30C08091E20084FF2CC0AC\r
+:101D700080E189BD82E189BD09B400FEFDCF80917B\r
+:101D8000D8008F7D8093D8008091E1008F7E809372\r
+:101D9000E1008091E2008F7E8093E2008091E2007A\r
+:101DA00081608093E2008091E801882311F084E053\r
+:101DB00007C08091E30087FF02C083E001C081E09B\r
+:101DC0008093EC010E94C80A8091E10083FF29C042\r
+:101DD0008091E20083FF25C08091E100877F80939E\r
+:101DE000E10082E08093EC011092E8018091E10033\r
+:101DF0008E7F8093E1008091E2008E7F8093E200ED\r
+:101E00008091E20080618093E20042E060E080E047\r
+:101E10000E944F0D8091F00088608093F0000E9436\r
+:101E2000C50AFF91EF91BF91AF919F918F917F91E3\r
+:101E30006F915F914F913F912F910F900FBE0F9037\r
+:101E40001F9018951F920F920FB60F9211242F9387\r
+:101E50003F934F935F936F937F938F939F93AF9332\r
+:101E6000BF93CF93EF93FF93C091E900CF70809120\r
+:101E7000EC001092E9008091F000877F8093F000E1\r
+:101E800078940E945E0F1092E9008091F0008860C3\r
+:101E90008093F000C093E900FF91EF91CF91BF9143\r
+:101EA000AF919F918F917F916F915F914F913F91F2\r
+:101EB0002F910F900FBE0F901F9018951F93CF93E7\r
+:101EC000DF93CDB7DEB7AA970FB6F894DEBF0FBE8B\r
+:101ED000CDBFEDEEF1E08091F100819321E0E53F8F\r
+:101EE000F207C9F70E94E40A8091E80083FF1CC151\r
+:101EF0002091ED013091EE01832F90E08A30910521\r
+:101F000008F012C1FC01EC59FF4F0C941625203843\r
+:101F100081F0223809F008C18091F1018F7080931F\r
+:101F2000E9008091EB0085FB882780F91092E90099\r
+:101F300006C08091E9019091EA019111826090912F\r
+:101F4000E800977F9093E8008093F1001092F100F1\r
+:101F5000C5C0822F8D7F09F0E7C0222319F02230FF\r
+:101F600061F0E2C08091EF01813009F0DDC03330D3\r
+:101F700009F080E08093EA0128C08091EF0181118F\r
+:101F800024C02091F1012F7009F4CEC02093E90004\r
+:101F90008091EB0080FF19C08091EB00333011F489\r
+:101FA000806211C080618093EB0081E090E0022E9E\r
+:101FB00001C0880F0A94EAF78093EA001092EA00C1\r
+:101FC0008091EB0088608093EB001092E900809193\r
+:101FD000E800877F86C02111A7C01091EF011F770D\r
+:101FE0008091E3008078812B8093E3008091E8006A\r
+:101FF000877F8093E8000E94840D8091E80080FF35\r
+:10200000FCCF8091E30080688093E300112311F0FE\r
+:1020100083E001C082E08093EC0186C0205822302A\r
+:1020200008F082C08091EF019091F0018C3D23E097\r
+:10203000920779F583E08A838AE289834FB7F8941F\r
+:10204000DE01139620E03EE051E2E32FF0E05093F2\r
+:102050005700E49120FF03C0E295EF703F5FEF70FF\r
+:102060008E2F90E0EA3010F0C79601C0C0968D9395\r
+:102070009D932F5F243149F74FBF8091E800877F00\r
+:102080008093E8006AE270E0CE0101960E948C0C19\r
+:1020900014C0AE014F5F5F4F6091F1010E94D40BFD\r
+:1020A000009709F441C02091E800277F2093E800C1\r
+:1020B000BC0189819A810E94ED0C8091E8008B77A8\r
+:1020C0008093E80031C0203879F58091E800877F5F\r
+:1020D0008093E8008091E8018093F1008091E8000E\r
+:1020E0008E778093E8000E94840D1EC021111CC0D1\r
+:1020F0009091EF019230C0F48091E800877F809347\r
+:10210000E8009093E8010E94840D8091E80181111C\r
+:1021100004C08091E30087FF02C084E001C081E039\r
+:102120008093EC010E94D00A8091E80083FF0AC0EE\r
+:102130008091E800877F8093E8008091EB008062C7\r
+:102140008093EB00AA960FB6F894DEBF0FBECDBF0A\r
+:10215000DF91CF911F9108950895CF938091EC0165\r
+:102160008823B1F08091E9008F709091EC0090FF8E\r
+:1021700002C090E801C090E0C92FC82B1092E9007E\r
+:102180008091E80083FD0E945E0FCF70C093E9004C\r
+:10219000CF91089590937101809370010895E0911B\r
+:1021A0007001F0917101309721F00190F081E02DE4\r
+:1021B000099480E00895E0917001F09171013097E9\r
+:1021C00021F00280F381E02D09940895E0917001DF\r
+:1021D000F0917101309721F00480F581E02D099490\r
+:1021E000089520916E0130916F018217930771F06D\r
+:1021F00090936F0180936E01E0917001F0917101F5\r
+:10220000309721F00680F781E02D09940895209100\r
+:102210006C0130916D018217930771F090936D01FD\r
+:1022200080936C01E0917001F0917101309721F081\r
+:102230000084F185E02D0994089508950C941D11F2\r
+:102240000E94071D0E94F0050C94CD1DCF92DF92D5\r
+:10225000EF92FF920F931F93CF93DF93CDB7DEB72B\r
+:102260002B970FB6F894DEBF0FBECDBF0E940806B5\r
+:1022700033E7E32E31E0F32E00E010E0C02E802F94\r
+:102280000E94F506F701D1907F01D826B1F40F5FC7\r
+:102290001F4F0E30110591F78FEF89838A831B82C0\r
+:1022A0000E94101D8160782F9D838C8349815A8103\r
+:1022B0006B818D810E94C91141C09091D50191FF20\r
+:1022C00004C08B870E94FB068B8520E030E04D2DFB\r
+:1022D00050E0922FBA01022E02C0759567950A94BC\r
+:1022E000E2F760FF25C02E83CF82EE24E394F12C29\r
+:1022F00002C0EE0CFF1C9A95E2F790E08E219F2120\r
+:1023000021E0892B09F420E028870E94101D8160BC\r
+:10231000782F9A8789874E815F8168858A850E9498\r
+:10232000C911F801ED58FE4F80818E25808306C0CB\r
+:102330002F5F3F4F2630310561F6A9CF0E94B120B3\r
+:10234000109172010E94CF101817A1F00E94CF10B7\r
+:10235000809372012B960FB6F894DEBF0FBECDBFEF\r
+:10236000DF91CF911F910F91FF90EF90DF90CF9071\r
+:102370000C94D4092B960FB6F894DEBF0FBECDBFD8\r
+:10238000DF91CF911F910F91FF90EF90DF90CF9051\r
+:102390000895CF93DF93CDB7DEB72B970FB6F894A0\r
+:1023A000DEBF0FBECDBF4F83588769877A878B8783\r
+:1023B000DE01119686E0FD0111928A95E9F785E02C\r
+:1023C000FE01379601900D928A95E1F749815A8175\r
+:1023D0006B817C818D819E810E941E192B960FB688\r
+:1023E000F894DEBF0FBECDBFDF91CF910895089561\r
+:1023F000CF93C82F882309F4C1C0823859F40E94B2\r
+:10240000CF1081FDBBC089E30E94C81B0E94921CB3\r
+:1024100089E30CC0833879F40E94CF1080FDAEC0F0\r
+:1024200083E50E94C81B0E94921C83E50E94081C41\r
+:10243000CF910C94921C843859F40E94CF1082FDE5\r
+:102440009DC087E40E94C81B0E94921C87E4EECFC7\r
+:102450008CEF8C0F813A48F48C2F0E94E42281117A\r
+:102460008DC08C2F0E94C81BE3CF80E28C0F883078\r
+:1024700048F4C77081E001C0880FCA95EAF70E944E\r
+:10248000491CD6CF8BE58C0F833078F4C53A29F000\r
+:10249000C63A31F482E890E005C081E890E002C0DD\r
+:1024A00083E890E0CF910C94F11088E58C0F833194\r
+:1024B00008F064C0C83A39F1C93A41F1CA3A49F161\r
+:1024C000CB3A51F1CC3A59F1CD3A61F1C03B69F1C7\r
+:1024D000CE3A71F1CF3A79F1C13B81F1C23B89F13A\r
+:1024E000C33B91F1C43B99F1C53BA1F1C63BA9F1B6\r
+:1024F000C73BB1F1C83BB9F1C93BC1F1CA3BC9F512\r
+:102500008AE292E038C082EE90E035C089EE90E039\r
+:1025100032C08AEE90E02FC085EB90E02CC086EBB5\r
+:1025200090E029C087EB90E026C08CEC90E023C0BF\r
+:102530008DEC90E020C083E891E01DC08AE891E036\r
+:102540001AC082E991E017C084E991E014C081E2E9\r
+:1025500092E011C083E292E00EC084E292E00BC0F0\r
+:1025600085E292E008C086E292E005C087E292E050\r
+:1025700002C080E090E0CF910C940711CF910895B4\r
+:10258000882309F44BC0823859F40E94CF1081FF90\r
+:1025900045C089E30E94C81B0E94921C89E30CC0BD\r
+:1025A000833871F40E94CF1080FF38C083E50E9409\r
+:1025B000C81B0E94921C83E50E94081C0C94921C6C\r
+:1025C000843859F40E94CF1082FF28C087E40E940B\r
+:1025D000C81B0E94921C87E4EFCF9CEF980F913AA2\r
+:1025E00058F390E2980F983050F4877091E001C052\r
+:1025F000990F8A95EAF7892F0E944F1CDFCF9BE540\r
+:10260000980F933020F480E090E00C94F110885AF9\r
+:10261000833120F480E090E00C9407110895882322\r
+:1026200021F00E94491C0C94921C0895882321F0EB\r
+:102630000E944F1C0C94921C0895CF92DF92EF924F\r
+:10264000FF920F931F93CF93DF93CDB7DEB72897F9\r
+:102650000FB6F894DEBF0FBECDBF8C0185E0F80148\r
+:10266000DE01119601900D928A95E1F7F801D08074\r
+:10267000E180F280558152955F7023813481232B54\r
+:1026800039F0FFEFEF1206C081E0DF1203C003C094\r
+:1026900081E001C080E080FDE2C2C8015F830E944A\r
+:1026A000F711D982EA8269817A818F2D0E94C41B39\r
+:1026B0009E8388870E94781B0E944B1A4E815F81FF\r
+:1026C0006885FF2029F00E94661C68855F814E8125\r
+:1026D000E42FE295EF70F0E0E259FF4F0C941625DD\r
+:1026E000842F807F142F1F70882311F01295107F84\r
+:1026F000FF20B1F0112309F467C280E2860F883011\r
+:1027000028F4812F68870E94491C04C0812F6887A4\r
+:102710000E94591C688568870E94921C688554C273\r
+:10272000862F68870E94C0126885112309F497C21A\r
+:10273000605E812F683018F40E944F1C02C00E9416\r
+:102740005F1C28960FB6F894DEBF0FBECDBFDF9199\r
+:10275000CF911F910F91FF90EF90DF90CF900C944D\r
+:10276000921C242F207F842F8F70203211F08295AD\r
+:10277000807F662319F0613019F12BC0FF20B1F082\r
+:10278000552309F493C1513009F090C128960FB632\r
+:10279000F894DEBF0FBECDBFDF91CF911F910F9197\r
+:1027A000FF90EF90DF90CF900C94791C552319F097\r
+:1027B000513009F454C28E830E947C1C8E8189C1E1\r
+:1027C000FF2021F0523008F04AC270C1511147C2B7\r
+:1027D00080C1FF2021F0552309F468C1F5C15523BC\r
+:1027E00009F477C105C2242F26952695237030E081\r
+:1027F0002115310521F021303105C9F030C2FF200B\r
+:1028000021F0862F942F937002C080E090E02896EC\r
+:102810000FB6F894DEBF0FBECDBFDF91CF911F91F1\r
+:102820000F91FF90EF90DF90CF900C94F110FF206C\r
+:1028300021F0862F942F937002C080E090E02896BC\r
+:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1\r
+:102850000F91FF90EF90DF90CF900C940711862F8F\r
+:10286000FF2019F00E94B91F02C00E942120289663\r
+:102870000FB6F894DEBF0FBECDBFDF91CF911F9191\r
+:102880000F91FF90EF90DF90CF900C94A620842FB3\r
+:10289000837009F076C0F110E2C1262F22952695AB\r
+:1028A0002770220F220F862F8F70C82ED12CE12C7B\r
+:1028B000F12C022E04C0CC0CDD1CEE1CFF1C0A9473\r
+:1028C000D2F764FF10C06FE070E080E090E004C0D9\r
+:1028D000660F771F881F991F2A95D2F7609570950C\r
+:1028E0008095909503C060E070E0CB01242F269581\r
+:1028F00026952370422F50E042305105D1F04330ED\r
+:10290000510559F16C297D298E299F2941305105A6\r
+:1029100041F128960FB6F894DEBF0FBECDBFDF9110\r
+:10292000CF911F910F91FF90EF90DF90CF900C947B\r
+:10293000701A6C297D298E299F2928960FB6F89444\r
+:10294000DEBF0FBECDBFDF91CF911F910F91FF90E2\r
+:10295000EF90DF90CF900C948A1A0E94701AC701F2\r
+:10296000B60128960FB6F894DEBF0FBECDBFDF913B\r
+:10297000CF911F910F91FF90EF90DF90CF900C942B\r
+:10298000561AFF2019F0842F817001C08695882384\r
+:1029900009F465C1262F229526952770220F220F54\r
+:1029A000862F8F70C82ED12CE12CF12C022E04C062\r
+:1029B000CC0CDD1CEE1CFF1C0A94D2F764FF10C087\r
+:1029C0006FE070E080E090E004C0660F771F881F22\r
+:1029D000991F2A95D2F7609570958095909503C0C0\r
+:1029E00060E070E0CB01242F269526952370422FBE\r
+:1029F00050E042305105D1F04330510559F16C2976\r
+:102A00007D298E299F294130510541F128960FB625\r
+:102A1000F894DEBF0FBECDBFDF91CF911F910F9114\r
+:102A2000FF90EF90DF90CF900C94441B6C297D2990\r
+:102A30008E299F2928960FB6F894DEBF0FBECDBF12\r
+:102A4000DF91CF911F910F91FF90EF90DF90CF908A\r
+:102A50000C945E1B0E94441BC701B60128960FB65A\r
+:102A6000F894DEBF0FBECDBFDF91CF911F910F91C4\r
+:102A7000FF90EF90DF90CF900C942A1B603FC9F13C\r
+:102A800018F4603E50F49BC0623F09F460C008F443\r
+:102A90004AC0633F09F46FC092C0162F1F70842F85\r
+:102AA0008F71FF2099F00E94C31A812F28960FB6CC\r
+:102AB000F894DEBF0FBECDBFDF91CF911F910F9174\r
+:102AC000FF90EF90DF90CF900C940F130E94E41AC8\r
+:102AD000812F28960FB6F894DEBF0FBECDBFDF91D1\r
+:102AE000CF911F910F91FF90EF90DF90CF900C94BA\r
+:102AF0001613FF20A1F05111B2C0842F8F712896B8\r
+:102B00000FB6F894DEBF0FBECDBFDF91CF911F91FE\r
+:102B10000F91FF90EF90DF90CF900C94091B5230F3\r
+:102B200008F09DC0EACFFF20A1F0842F8F71289676\r
+:102B30000FB6F894DEBF0FBECDBFDF91CF911F91CE\r
+:102B40000F91FF90EF90DF90CF900C94C31AFF206D\r
+:102B500061F3842F8F7128960FB6F894DEBF0FBEF5\r
+:102B6000CDBFDF91CF911F910F91FF90EF90DF903C\r
+:102B7000CF900C94E41AFF2091F0842F8F71289647\r
 :102B80000FB6F894DEBF0FBECDBFDF91CF911F917E\r
-:102B90000F91FF90EF90DF90CF900C94D2115523BE\r
-:102BA00009F4B1CF862F28960FB6F894DEBF0FBE7A\r
-:102BB000CDBFDF91CF911F910F91FF90EF90DF90EC\r
-:102BC000CF900C949A124F70C8010E940D03289662\r
-:102BD0000FB6F894DEBF0FBECDBFDF91CF911F912E\r
-:102BE0000F91FF90EF90DF90CF900C94A5194F704C\r
-:102BF000C80128960FB6F894DEBF0FBECDBFDF9197\r
+:102B90000F91FF90EF90DF90CF900C94AE1A289693\r
+:102BA0000FB6F894DEBF0FBECDBFDF91CF911F915E\r
+:102BB0000F91FF90EF90DF90CF900C94A41AFF201C\r
+:102BC000A1F0552309F4B1CF862F28960FB6F894BB\r
+:102BD000DEBF0FBECDBFDF91CF911F910F91FF9050\r
+:102BE000EF90DF90CF900C94F811552309F4B1CFFA\r
+:102BF000862F28960FB6F894DEBF0FBECDBFDF91AB\r
 :102C0000CF911F910F91FF90EF90DF90CF900C9498\r
-:102C1000D60628960FB6F894DEBF0FBECDBFDF9163\r
-:102C2000CF911F910F91FF90EF90DF90CF9008957B\r
-:102C30000E94401C0E94501C0E94151C0E946C1C8B\r
-:102C40000E942C210E94802080E090E00E94CB1006\r
-:102C500080E090E00C94E1100E94301C0C94181657\r
-:102C60000E94931B292F22952F7030E02C303105C4\r
-:102C70004CF42A3031056CF42250310922303105F0\r
-:102C800090F407C02C30310551F02F30310539F068\r
-:102C90000AC0803E10F0803F31F481E0089593FB3C\r
-:102CA000882780F9089580E00895CF93DF9300D0BE\r
-:102CB00000D01F92CDB7DEB70F900F900F900F90FE\r
-:102CC0000F90DF91CF910895CF93DF9300D000D084\r
-:102CD00000D0CDB7DEB726960FB6F894DEBF0FBE94\r
-:102CE000CDBFDF91CF9108951F93CF93DF93C09114\r
-:102CF000810116E080918201C81799F0D0E01C9FF5\r
-:102D0000F0011D9FF00D1124ED57FE4F40815181C0\r
-:102D100062817381848195810E9464162196C770B7\r
-:102D2000E9CFDF91CF911F9108954091B301509168\r
-:102D3000B4016091B5017091B6018091B701909195\r
-:102D4000B8010C946416CF938091B80182958F706E\r
-:102D500009F05FC08091B501882309F45AC0209121\r
-:102D60008101A09182016091B3017091B4018091C1\r
-:102D7000B6019091B70131E06F3F09F030E0B32F19\r
-:102D8000C6E02A1709F445C0009721F07F3F21F4DF\r
-:102D90004B2F03C041E001C040E030E040FD35C0B2\r
-:102DA000C29FF001C39FF00D1124ED57FE4F4181EA\r
-:102DB00074132BC04081641328C04281411125C087\r
-:102DC000438154814817590710F441505109481B59\r
-:102DD000590B483C5105C8F48091B8018F7080614F\r
-:102DE0008093B80186E0829FF001839FF00D11244B\r
-:102DF000E857FE4F80818F708061808383EB91E084\r
-:102E00000E94F712CF910C9474162F5F3F4F2770DA\r
-:102E1000B8CFCF910895CF92DF92EF92FF920F93A8\r
-:102E20001F93CF93DF93CDB7DEB762970FB6F894B9\r
-:102E3000DEBF0FBECDBF8C0185E0F801DE011D961F\r
-:102E400001900D928A95E1F7D8014C9111965C9111\r
-:102E5000119712966C9112971396ED90FC9014971F\r
-:102E60007091B301E091B4012091B6013091B701A6\r
-:102E70002115310531F0EF3F31F481E07F3F19F446\r
-:102E800003C081E001C080E0B82FB170CB2E80FD7F\r
-:102E90006CC1D090B501DD2009F4F5C0F091B80106\r
-:102EA000E216F30638F0C701821B930B883C9105AC\r
-:102EB00048F09BC0209530952E0D3F1D283C3105D4\r
-:102EC00008F093C08F2F807F09F052C0E51314C023\r
-:102ED000741312C0D62E61110FC0FF70F061F09311\r
-:102EE000B8010E94951683EB91E00E94F712809141\r
-:102EF000B801F80185836CC1EF2831F05F3F31F4F0\r
-:102F000081E04F3F19F403C081E001C080E080FD03\r
-:102F100003C081E0862701C080E0F82FF170FF2E0A\r
-:102F200080FF1CC0809181012091820136E08217D0\r
-:102F300009F428C190E0389FF001399FF00D112469\r
-:102F4000ED57FE4F7181571306C07081471303C0C0\r
-:102F50007281671303C001968770E9CFD62E66236E\r
-:102F600009F436C18091B80181608093B80153C0E3\r
-:102F7000E51308C0741306C0611104C0D80115968A\r
-:102F8000FC93AEC04D875E878D859E856A8B0E94BF\r
-:102F900030166A89882329F1D62E662311F12091F3\r
-:102FA000B801822F82958F7090E002970CF460C078\r
-:102FB0008091B3019091B40198878F831986FB8625\r
-:102FC000EA862C87CE01079651C0E51731F14D876F\r
-:102FD0005E878D859E856A8B0E9430166A89811175\r
-:102FE0002EC0C8010E94F712A4C08F2F807F69F7FE\r
-:102FF0007E2DF98AE88A89890E94551683EB91E033\r
-:103000000E94F712E3EBF1E086E0DF011D928A9562\r
-:10301000E9F70E949516D12CDBC07413D8CF61114B\r
-:10302000D6CFD8011596FC93C8010E94F712E3EBA6\r
-:10303000F1E086E0DF011D928A95E9F7C9C0D62E3E\r
-:10304000662379F22091B801822F82958F7090E0EB\r
-:10305000029774F08091B3019091B4019A838983AF\r
-:103060001B82FD82EC822E83CE0101960E94F71214\r
-:1030700086E0F801A3EBB1E001900D928A95E1F7AB\r
-:103080000E94A3166FC0E216F30628F0C701821B48\r
-:10309000930B9C0104C0209530952E0D3F1D283CBC\r
-:1030A000310508F052C0D62E662309F49ACFE513F5\r
-:1030B0002CC074132AC08091B80180FD1DC0982FC8\r
-:1030C00092959F70C9F0D80115968C9315979F30F3\r
-:1030D00039F09F5F9295907F8F70892B15968C9316\r
-:1030E000C8010E94F71286E0F801A3EBB1E001905D\r
-:1030F0000D928A95E1F736C086E0F801A3EBB1E0C6\r
-:1031000001900D928A95E1F763C04D875E878D85AA\r
-:103110009E850E943016882379F086E0F801A3EBA3\r
-:10312000B1E001900D928A95E1F70E94A3160E94EA\r
-:103130009516DD24D3944CC08091B80181608093B2\r
-:10314000B801C8010E94F71243C07E2DF98AE88AAF\r
-:1031500089890E945516E3EBF1E086E0DF011D92BC\r
-:103160008A95E9F70E94951633C0662309F439CF92\r
-:103170004D875E878D859E850E943016882309F4D1\r
-:1031800030CFCBCF4D875E878D859E850E94931B68\r
-:10319000292F22952F7030E0223031052CF49F70BA\r
-:1031A00041F0811106C00CC0243031052CF49F7011\r
-:1031B00049F4805E883020F0C8010E94F712CF2CBD\r
-:1031C000DC2C06C0D80115969C91907F91F7F8CF22\r
-:1031D0008D2D62960FB6F894DEBF0FBECDBFDF9186\r
-:1031E000CF911F910F91FF90EF90DF90CF900895B6\r
-:1031F0001F93CF93DF93CDB7DEB72C970FB6F8941C\r
-:10320000DEBF0FBECDBF4F83588769877A878B8714\r
-:103210009C87CE0107960E940B178823C1F02F814F\r
-:1032200038858A859B85892B31F03F3F11F080E0FE\r
-:1032300003C02F3FE1F781E0811147C04F815885DE\r
-:1032400069857A858B859C850E9464163EC086E0E0\r
-:10325000FE013796DE01119601900D928A95E1F7F5\r
-:10326000FF81E8854A855B854115510531F0EF3FC7\r
-:1032700031F481E0FF3F19F403C081E001C080E038\r
-:1032800080FD23C02091820130E0C9010196877042\r
-:1032900099276091810170E086179707F1F1F98312\r
-:1032A000EA835D834C8396E0929FD001939FB00D9B\r
-:1032B0001124AD57BE4FFE01319601900D929A95A3\r
-:1032C000E1F7809382010E94741616E080918101DB\r
-:1032D00090918201891779F1189FC00111248D57AF\r
-:1032E0009E4F0E940B17882331F1E09181011E9FB0\r
-:1032F000F0011124ED57FE4F4081518162817381AD\r
-:10330000848195810E9464168091810190E00196EC\r
-:103310008770992780938101D9CF0E942C16109233\r
-:10332000820110928101E3EBF1E086E0DF011D9262\r
-:103330008A95E9F7CACF2C960FB6F894DEBF0FBE78\r
-:10334000CDBFDF91CF911F910895EF92FF920F9320\r
-:103350001F93CF93DF93FC01009709F46FC0F12C0A\r
-:10336000EE24E394EF0121968491843740F4843075\r
-:1033700008F055C0813081F0823021F15FC085377F\r
-:1033800009F447C0C0F19CE7980F903708F056C089\r
-:103390008F770E949A1245C08F010E5F1F4FFE016A\r
-:1033A000849190E2980F983050F48770FE2D01C000\r
-:1033B000FF0F8A95EAF78F2F0E94431C15C00E94C9\r
-:1033C000D21114C08F010E5F1F4FFE01849190E255\r
-:1033D000980F983068F48770FE2D01C0FF0F8A9512\r
-:1033E000EAF78F2F0E94491C0E946C1CE80119C04B\r
-:1033F0000E949A12FBCFCF010296FE01C491CC230A\r
-:1034000061F0EFE9FFE03197F1F700C00000C15033\r
-:10341000F6CFCF010296FE01F490EC0102C00E94AB\r
-:10342000D2118F2D882341F0EFE9FFE03197F1F7BA\r
-:1034300000C000008150F6CFFE0194CFDF91CF9104\r
-:103440001F910F91FF90EF90089508956093BD0133\r
-:103450007093BE018093BF019093C0010C94181625\r
-:103460000F931F930091BD011091BE012091BF01E8\r
-:103470003091C001062B172B282B392B0093BD014F\r
-:103480001093BE012093BF013093C0011F910F9193\r
-:103490000C9418160F931F930091BD011091BE015B\r
-:1034A0002091BF013091C00106231723282339231F\r
-:1034B0000093BD011093BE012093BF013093C00162\r
-:1034C0001F910F910C9418160F931F930091BD013B\r
-:1034D0001091BE012091BF013091C001062717272E\r
-:1034E000282739270093BD011093BE012093BF0107\r
-:1034F0003093C0011F910F910C9418161092B901CE\r
-:103500001092BA011092BB011092BC010C941816D3\r
-:1035100041E050E060E070E004C0440F551F661FBA\r
-:10352000771F8A95D2F74093B9015093BA016093FF\r
-:10353000BB017093BC010C94181641E050E060E0B0\r
-:1035400070E004C0440F551F661F771F8A95D2F79D\r
-:103550008091B9019091BA01A091BB01B091BC01D9\r
-:10356000842B952BA62BB72B8093B9019093BA018E\r
-:10357000A093BB01B093BC010C94181641E050E03D\r
-:1035800060E070E004C0440F551F661F771F8A95E6\r
-:10359000D2F740955095609570958091B9019091C2\r
-:1035A000BA01A091BB01B091BC0184239523A6234D\r
-:1035B000B7238093B9019093BA01A093BB01B09354\r
-:1035C000BC010C94181641E050E060E070E004C0CB\r
-:1035D000440F551F661F771F8A95D2F78091B90156\r
-:1035E0009091BA01A091BB01B091BC0184279527AD\r
-:1035F000A627B7278093B9019093BA01A093BB0186\r
-:10360000B093BC010C9418160F931F930091B9014D\r
-:103610001091BA012091BB013091BC01062B172BF0\r
-:10362000282B392B0093B9011093BA012093BB01C9\r
-:103630003093BC011F910F910C9418160F931F9398\r
-:103640000091B9011091BA012091BB013091BC01E8\r
-:1036500006231723282339230093B9011093BA01B5\r
-:103660002093BB013093BC011F910F910C9418164D\r
-:103670000F931F930091B9011091BA012091BB01E2\r
-:103680003091BC0106271727282739270093B90155\r
-:103690001093BA012093BB013093BC011F910F918D\r
-:1036A0000C9418160895CF92DF92EF92FF920F9329\r
-:1036B0001F93CF93DF93EC01C090BD01D090BE016A\r
-:1036C000E090BF01F090C0018091B9019091BA01E2\r
-:1036D000A091BB01B091BC01C82AD92AEA2AFB2AD1\r
-:1036E0000FE110E0B701A601002E04C076956795A2\r
-:1036F000579547950A94D2F740FD05C0015011092E\r
-:1037000088F780E007C0BE01802F0E94130901974F\r
-:10371000A9F3802FDF91CF911F910F91FF90EF9030\r
-:10372000DF90CF900895CF93DF93EC010E94531B5D\r
-:10373000BE010E941309DF91CF910895CB010E9431\r
-:10374000931B089590910C019923D9F090910D014C\r
-:103750009923B9F0982F9695969596959F3088F570\r
-:10376000E0910E01F0910F01E90FF11D877021E04A\r
-:1037700030E001C0220F8A95EAF78181822B818394\r
-:10378000089540910E0150910F0120E030E09FEF2D\r
-:10379000FA01E20FF31F6281681799F09F3F19F455\r
-:1037A000611101C0922F2F5F3F4F2E30310581F7FD\r
-:1037B0009F3F39F0FA01E90FF11D97FDFA958283D9\r
-:1037C0000895089590910C019923E1F090910D01D5\r
-:1037D0009923C1F0982F9695969596959F3020F550\r
-:1037E000E0910E01F0910F01E90FF11D877021E0CA\r
-:1037F00030E001C0220F8A95EAF7209581812823C5\r
-:103800002183089540910E0150910F0120E030E096\r
-:10381000FA01E20FF31F9281981301C012822F5F09\r
-:103820003F4F2E303105A1F7089581E090E0E091FF\r
-:103830000E01F0910F01E80FF91F108201968031FF\r
-:103840009105A9F708959091D401982B9093D401F4\r
-:10385000089580959091D40198239093D401089570\r
-:103860001092D40108959091D301982B9093D30195\r
-:10387000089580959091D30198239093D301089552\r
-:103880001092D30108959091D201982B9093D20178\r
-:10389000089580959091D20198239093D201089534\r
-:1038A0001092D20108958093C10108951092C10130\r
-:1038B000089540910E0150910F0120E030E080E02A\r
-:1038C000FA01E20FF31F918191118F5F2F5F3F4F3C\r
-:1038D0002F303105A9F70895E0910E01F0910F0105\r
-:1038E0008091D4018083E0910E01F0910F018081DD\r
-:1038F0009091D301892B8083E0910E01F0910F010B\r
-:1039000080819091D201892B80839091C10199236C\r
-:1039100061F0E0910E01F0910F018081892B80838D\r
-:103920000E94591C81111092C10180910E01909149\r
-:103930000F010C94B5108091EC01843021F11092AC\r
-:10394000D60120E488E190E00FB6F894A895809322\r
-:1039500060000FBE2093600080E00E94AE0983B734\r
-:10396000817F846083BF83B7816083BF78948895AB\r
-:1039700083B78E7F83BF88E10FB6F8948093600091\r
-:10398000109260000FBE089508950895CF930E948D\r
-:10399000C41C0E94E2050E94C51CC0E08C2F0E943E\r
-:1039A000CF06811105C0CF5FCE30C1F780E001C0E6\r
-:1039B00081E0CF9108950E942C160E94A9100C94CA\r
-:1039C000AE0982E084BD93E095BD9AEF97BD8093E8\r
-:1039D0006E0008952FB7F8948091D7019091D80187\r
-:1039E000A091D901B091DA012FBF0895CF92DF9253\r
-:1039F000EF92FF920F931F932FB7F8944091D70146\r
-:103A00005091D8016091D9017091DA012FBF6A01FC\r
-:103A10007B01EE24FF248C0120E030E0C016D106AB\r
-:103A2000E206F30610F441505109481B590BCA0134\r
-:103A30001F910F91FF90EF90DF90CF9008951F920C\r
-:103A40000F920FB60F9211248F939F93AF93BF9352\r
-:103A50008091D7019091D801A091D901B091DA015C\r
-:103A60000196A11DB11D8093D7019093D801A09319\r
-:103A7000D901B093DA01BF91AF919F918F910F90CF\r
-:103A80000FBE0F901F9018950E94AF0DF8942FEF66\r
-:103A900087EA91E6215080409040E1F700C00000A5\r
-:103AA00087E090EBDC018093F6019093F701A093FF\r
-:103AB000F801B093F9012CE088E190E00FB6F8949A\r
-:103AC000A895809360000FBE20936000FFCFEF9217\r
-:103AD000FF920F931F93CF93DF93E82EF12C8F2D3E\r
-:103AE0000E94CF06C0E0D0E0082F10E098010C2E15\r
-:103AF00002C0359527950A94E2F720FD05C021966E\r
-:103B0000C630D10599F709C06C2F7F2D80E00E9447\r
-:103B1000D706E812F4CF81E005C0F3948EE0F812E6\r
-:103B2000DECF80E0DF91CF911F910F91FF90EF905A\r
-:103B30000895CF93C82F8CE20E94671D882321F03F\r
-:103B40008C2FCF910C94671D80E0CF910895CF9377\r
-:103B50000E94EC1E811102C00E94D21EC5E6C15017\r
-:103B600049F00E94E2058FE39CE90197F1F700C05C\r
-:103B70000000F5CF89E20E94991D811111C18AE2EE\r
-:103B80000E94991D81110E94D21E85E00E94991DFC\r
-:103B900081110E94441D0E94F71E8093D50187E089\r
-:103BA0000E94991D882399F18BE10E94991D882319\r
-:103BB00051F09091D50191FB882780F921E082276F\r
-:103BC00080FB91F922C08EE00E94991D882351F05C\r
-:103BD0009091D50192FB882780F921E0822780FB14\r
-:103BE00092F913C080E10E94991D9091D50188231C\r
-:103BF00041F093FB882780F921E0822780FB93F92D\r
-:103C000004C0892F809580FB90F99093D501809115\r
-:103C1000D5010E94FB1E0E94091F8093F50180EED2\r
-:103C20000E94991D882341F08091F501982F90956D\r
-:103C300090FB80F98093F50189E30E94991D882308\r
-:103C400059F09091F50191FB882780F921E08227B6\r
-:103C500080FB91F99093F50182EE0E94991D8823D3\r
-:103C600059F09091F50192FB882780F921E0822795\r
-:103C700080FB92F99093F50186EE0E94991D8823AE\r
-:103C800059F09091F50193FB882780F921E0822774\r
-:103C900080FB93F99093F50183EE0E94991D882390\r
-:103CA00059F09091F50194FB882780F921E0822753\r
-:103CB00080FB94F99093F50185E30E94991D882378\r
-:103CC00059F09091F50195FB882780F921E0822732\r
-:103CD00080FB95F99093F50181E30E94991D88235B\r
-:103CE00059F09091F50196FB882780F921E0822711\r
-:103CF00080FB96F99093F50181E10E94991D88233C\r
-:103D000059F09091F50197FB882780F921E08227EF\r
-:103D100080FB97F99093F5018091F5010E940D1FAA\r
-:103D20008091F50187FB882780F980930D0187E258\r
-:103D30000E94991DC82F8EE10E94991D8111C260B9\r
-:103D40008FE10E94991D8111C46080E20E94991D3B\r
-:103D50008111C86081E20E94991D8111C06182E2D7\r
-:103D60000E94991D8111C06283E20E94991D8111F8\r
-:103D7000C06484E20E94991D882311F0C06802C0CB\r
-:103D8000CC2329F08C2F0E94041F6C2F03C00E94AB\r
-:103D9000001F682F70E080E090E0CF910C94261A0D\r
-:103DA000CF9108956DEE7EEF80E090E00E942A258D\r
-:103DB00060E082E090E00E94182560E083E090E0FF\r
-:103DC0000E94182560E084E090E00E94182560E0E1\r
-:103DD00085E090E00C94182580E090E00E94122588\r
-:103DE00021E08D3E9E4F09F020E0822F089582E071\r
-:103DF00090E00C940A25682F82E090E00C9418253E\r
-:103E000083E090E00C940A25682F83E090E00C9406\r
-:103E1000182584E090E00C940A25682F84E090E057\r
-:103E20000C9418258091DD0180FF0BC06091130177\r
-:103E300085E0689FB0011124759567957595679524\r
-:103E40002AC081FF09C06091130185E0689FB0011D\r
-:103E50001124759567951FC082FF07C060911301FB\r
-:103E600085E0689FB001112416C04091DE01442313\r
-:103E7000C9F060911201461788F72091130185E07F\r
-:103E8000289F90011124429FC001439F900D11244F\r
-:103E900070E00E94DC246038710540F46115710502\r
-:103EA00039F002C065E070E0862F08958FE708952D\r
-:103EB00081E008958091DD0180FF08C060911101CB\r
-:103EC00070E0759567957595679521C081FF06C06F\r
-:103ED0006091110170E07595679519C082FF04C06B\r
-:103EE0006091110170E010C08091DE018823C1F063\r
-:103EF000609110018617A0F790911101989FC00161\r
-:103F0000112470E00E94DC246038710528F46115EA\r
-:103F1000710521F0862F08958FE7089581E00895B7\r
-:103F200061E070E0F4CF803F21F40E94121F819580\r
-:103F300004C0813F29F40E94121F8093E10108957B\r
-:103F4000823F21F40E94121F819504C0833F29F40F\r
-:103F50000E94121F8093E0010895893F19F40E9486\r
-:103F60005A1F05C08A3F31F40E945A1F81958093E1\r
-:103F7000E20108958B3F21F40E945A1F819504C0ED\r
-:103F80008C3F29F40E945A1F8093E3010895843FD7\r
-:103F900021F48091DF01816017C0853F21F4809179\r
-:103FA000DF01826011C0863F21F48091DF018460CF\r
-:103FB0000BC0873F21F48091DF01886005C0883FF6\r
-:103FC00031F48091DF0180618093DF0108958D3F9E\r
-:103FD00021F48091DD0181600BC08E3F21F480913E\r
-:103FE000DD01826005C08F3F29F48091DD0184608E\r
-:103FF0008093DD010895803F39F48091E10187FFCE\r
-:104000006CC01092E10169C0813F29F48091E10107\r
-:104010001816BCF362C09091E001823F29F497FF2B\r
-:104020005CC01092E00159C0833F19F41916CCF31B\r
-:1040300054C0893F41F48091E20118160CF04DC044\r
-:104040001092E2014AC08A3F29F48091E20187FF81\r
-:1040500044C0F6CF8B3F39F48091E30187FF3DC028\r
-:104060001092E3013AC08C3F29F48091E3011816C5\r
-:10407000BCF333C0843F21F48091DF018E7F17C0F1\r
-:10408000853F21F48091DF018D7F11C0863F21F4AF\r
-:104090008091DF018B7F0BC0873F21F48091DF018E\r
-:1040A000877F05C0883F31F48091DF018F7E809348\r
-:1040B000DF0113C08D3F21F48091DD018E7F0BC0A5\r
-:1040C0008E3F21F48091DD018D7F05C08F3F29F463\r
-:1040D0008091DD018B7F8093DD018091E001811172\r
-:1040E0000EC08091E10181110AC08091E20181112D\r
-:1040F00006C08091E301811102C01092DE01089593\r
-:104100008FED91E00E94C0100E94EA1C9093DC01A8\r
-:104110008093DB0108951F93CF93DF938091DB01A0\r
-:104120009091DC010E94F61C4091DE01442321F0B5\r
-:104130002091140130E006C0209115015AE0259F1E\r
-:10414000900111248217930708F482C08091E00146\r
-:104150001091E101D091E201C091E301811107C00A\r
-:10416000111105C0D11103C0CC2309F471C04F3F18\r
-:1041700019F04F5F4093DE01181624F40E94121FBD\r
-:104180008093E0018091E00187FF05C00E94121F2B\r
-:1041900081958093E001111624F40E94121F8093F0\r
-:1041A000E1018091E10187FF05C00E94121F819506\r
-:1041B0008093E1016091E001662339F11091E10102\r
-:1041C000112319F1772767FD7095872F972F0E948C\r
-:1041D000ED2323E333E343E35FE30E9451240E9492\r
-:1041E000BA236093E001612F772767FD7095872FD1\r
-:1041F000972F0E94ED2323E333E343E35FE30E9421\r
-:1042000051240E94BA236093E1011D1624F40E94F8\r
-:104210005A1F8093E2018091E20187FF05C00E944E\r
-:104220005A1F81958093E2011C1624F40E945A1FA4\r
-:104230008093E3018091E30187FF05C00E945A1F2C\r
-:1042400081958093E301DF91CF911F910C948020A1\r
-:10425000DF91CF911F910895EFEDF1E085E0DF014F\r
-:104260001D928A95E9F71092DE011092DD01089502\r
-:10427000833081F128F4813059F08230D1F00895F3\r
-:10428000853009F449C0B8F1863009F456C0089564\r
-:1042900020911501862F90E0820F911D8F3F91058F\r
-:1042A00020F4620F6093150108958FEF809315013C\r
-:1042B000089520911401862F90E0820F911D8F3F69\r
-:1042C000910520F4620F6093140108958FEF80939D\r
-:1042D0001401089520911301862F90E0820F911D03\r
-:1042E0008F3F910520F4620F6093130108958FEFC3\r
-:1042F00080931301089520911201862F90E0820F80\r
-:10430000911D8F3F910520F4620F60931201089573\r
-:104310008FEF80931201089520911101862F90E074\r
-:10432000820F911D8F3F910520F4620F6093110160\r
-:1043300008958FEF80931101089520911001862F29\r
-:1043400090E0820F911D8F3F910520F4620F6093E2\r
-:10435000100108958FEF809310010895833011F1BB\r
-:1043600028F4813049F0823091F00895853081F150\r
-:1043700020F18630C1F1089580911501681720F46D\r
-:10438000861B809315010895109215010895809160\r
-:104390001401681720F4861B80931401089510926D\r
-:1043A0001401089580911301681720F4861B8093EF\r
-:1043B0001301089510921301089580911201681756\r
-:1043C00020F4861B80931201089510921201089523\r
-:1043D00080911101681720F4861B809311010895C4\r
-:1043E00010921101089580911001681720F4861B26\r
-:1043F0008093100108951092100108958D3109F4F1\r
-:1044000042C020F58E3009F477C070F4873009F48B\r
-:1044100059C018F48630F1F134C0883009F4A8C0CE\r
-:104420008B3009F4A5C02DC0863109F4A1C038F441\r
-:10443000803109F472C0813109F479C022C0893118\r
-:1044400009F496C08B3109F44DC01BC0853309F4C3\r
-:1044500087C048F4873209F483C008F473C08932F6\r
-:1044600009F47EC00EC0833438F48A3308F068C083\r
-:10447000883309F47DC005C0833409F471C08834E1\r
-:1044800099F080E008950E9474230E94A9100E9470\r
-:10449000AE096EC08091D501817F8E7F8093D5015A\r
-:1044A00081E08093E50108950E942C162FEF83EDA3\r
-:1044B00090E3215080409040E1F700C000000E944E\r
-:1044C000441D56C09091D501892F8095817080FB45\r
-:1044D00090F919F0966098601DC0997F977F90932E\r
-:1044E000D50146C09091D50191FB882780F921E044\r
-:1044F000822780FB91F909C09091D50192FB882712\r
-:1045000080F921E0822780FB92F99093D5018823DE\r
-:1045100079F191609093D50108959091D50193FB25\r
-:10452000882780F921E0822780FB93F9EECF0E9453\r
-:104530002C1680910D0191E0892780930D0118C000\r
-:1045400027EC01C023EE280F61E070E080E090E0EE\r
-:1045500004C0660F771F881F991F2A95D2F704C0E1\r
-:1045600061E070E080E090E00E94261A0E942C1624\r
-:1045700081E0089580E0089580E00895CF93C82FEA\r
-:104580008091E501813079F018F08230D1F184C05A\r
-:10459000A0910E01B0910F018C91813169F08232AE\r
-:1045A00009F07CC009C0A0910E01B0910F018C915F\r
-:1045B000813111F0823249F48C2F0E94BA2281118C\r
-:1045C0001DC08C2F0E94FE211AC08C2F0E94BC227D\r
-:1045D000811114C0C43179F048F4CB3079F0C03186\r
-:1045E00009F060C082E08093E50108C0C93219F08B\r
-:1045F000C83321F057C01092E50154C081E08170AA\r
-:1046000053C0C93289F118F5C43171F1A8F4C7302B\r
-:1046100009F046C08AE08093150194E1909314015B\r
-:1046200093E0909313018093120188E0809311012D\r
-:1046300088E28093100134C0CE51C63088F5EC2F4B\r
-:10464000F0E0E65DFE4F80818093E40129C0CE3426\r
-:10465000E9F020F4CB3421F56AE013C0C13579F0DC\r
-:10466000C235F1F461E00DC08091E401882319F0B6\r
-:104670001092E40115C081E08093E50115C061E06E\r
-:1046800006C08091E4010E9438210AC06AE080914E\r
-:10469000E4010E94AE2104C01092E50180E004C054\r
-:1046A00081E002C080E0ABCFCF910895E1E8F0E077\r
-:1046B0008081886080838081816080838FB7F89457\r
-:1046C00093E09093890090ED909388008FBF0895B8\r
-:1046D000EFE6F0E08081826080830895EFE6F0E00D\r
-:1046E00080818D7F80830895EFE6F0E0808192E005\r
-:1046F0008927808308951F920F920FB60F9211247D\r
-:104700002F933F934F935F936F937F938F939F93D9\r
-:10471000AF93BF93EF93FF938091E6019091E701F0\r
-:1047200001969093E7018093E601811103C082E036\r
-:104730000E94AE09E091E701E695E695F0E0E25BC4\r
-:10474000FA4FE4918091E6018E1303C080E00E944D\r
-:10475000AE09FF91EF91BF91AF919F918F917F91A2\r
-:104760006F915F914F913F912F910F900FBE0F90DE\r
-:104770001F90189504D06894B1118DC0089570D021\r
-:1047800088F09F5790F0B92F9927B751A0F0D1F03A\r
-:10479000660F771F881F991F1AF0BA95C9F712C0C4\r
-:1047A000B13081F077D0B1E0089574C0672F782FD1\r
-:1047B0008827B85F39F0B93FCCF386957795679530\r
-:1047C000B395D9F73EF490958095709561957F4F9C\r
-:1047D0008F4F9F4F0895E89409C097FB3EF4909542\r
-:1047E0008095709561957F4F8F4F9F4F9923A9F0CA\r
-:1047F000F92F96E9BB279395F69587957795679559\r
-:10480000B795F111F8CFFAF4BB0F11F460FF1BC09C\r
-:104810006F5F7F4F8F4F9F4F16C0882311F096E92F\r
-:1048200011C0772321F09EE8872F762F05C06623DD\r
-:1048300071F096E8862F70E060E02AF09A95660F96\r
-:10484000771F881FDAF7880F9695879597F908954F\r
-:1048500057FD9058440F551F59F05F3F71F0479531\r
-:10486000880F97FB991F61F09F3F79F08795089516\r
-:10487000121613061406551FF2CF4695F1DF08C035\r
-:10488000161617061806991FF1CF86957105610552\r
-:1048900008940895E894BB2766277727CB0197F9FA\r
-:1048A00008950BD078C069D028F06ED018F0952309\r
-:1048B00009F05AC05FC01124EECFCADFA0F3959F64\r
-:1048C000D1F3950F50E0551F629FF001729FBB27F7\r
-:1048D000F00DB11D639FAA27F00DB11DAA1F649FA3\r
-:1048E0006627B00DA11D661F829F2227B00DA11D56\r
-:1048F000621F739FB00DA11D621F839FA00D611DDC\r
-:10490000221F749F3327A00D611D231F849F600DFC\r
-:10491000211D822F762F6A2F11249F5750408AF035\r
-:10492000E1F088234AF0EE0FFF1FBB1F661F771FC1\r
-:10493000881F91505040A9F79E3F510570F014C058\r
-:10494000AACF5F3FECF3983EDCF3869577956795A9\r
-:10495000B795F795E7959F5FC1F7FE2B880F911DDF\r
-:104960009695879597F9089597F99F6780E870E085\r
-:1049700060E008959FEF80EC089500240A941616D5\r
-:10498000170618060906089500240A94121613063D\r
-:10499000140605060895092E0394000C11F48823CB\r
-:1049A00052F0BB0F40F4BF2B11F460FF04C06F5FE7\r
-:1049B0007F4F8F4F9F4F089597FB072E16F400945B\r
-:1049C00007D077FD09D00E94F62407FC05D03EF4FD\r
-:1049D000909581959F4F0895709561957F4F0895AB\r
-:1049E000EE0FFF1F0590F491E02D0994AA1BBB1B4D\r
-:1049F00051E107C0AA1FBB1FA617B70710F0A61BDF\r
-:104A0000B70B881F991F5A95A9F780959095BC01FF\r
-:104A1000CD010895F999FECF92BD81BDF89A9927ED\r
-:104A200080B50895A8E1B0E042E050E00C94322552\r
-:104A3000262FF999FECF92BD81BDF89A019700B457\r
-:104A4000021639F01FBA20BD0FB6F894FA9AF99AF7\r
-:104A50000FBE08950196272F0E9419250C94182542\r
-:104A6000DC01CB01FC01F999FECF06C0F2BDE1BD2E\r
-:104A7000F89A319600B40D9241505040B8F708951D\r
-:044A8000F894FFCFD8\r
-:104A84002002B0093D0A1A0AE609B3090101C2016C\r
-:104A940028080A03140A3F4D36390F05C2048C0452\r
-:104AA4005304E603FF03180431040102030405065A\r
-:044AB40007080900E6\r
+:102C1000C0124F70C8010E941D0328960FB6F89489\r
+:102C2000DEBF0FBECDBFDF91CF911F910F91FF90FF\r
+:102C3000EF90DF90CF900C94CB194F70C80128967D\r
+:102C40000FB6F894DEBF0FBECDBFDF91CF911F91BD\r
+:102C50000F91FF90EF90DF90CF900C94FC06289698\r
+:102C60000FB6F894DEBF0FBECDBFDF91CF911F919D\r
+:102C70000F91FF90EF90DF90CF9008950E94661C17\r
+:102C80000E94761C0E943B1C0E94921C0E945221B2\r
+:102C90000E94A62080E090E00E94F11080E090E089\r
+:102CA0000C9407110E94561C0C943E160E94B91BEE\r
+:102CB000292F22952F7030E02C3031054CF42A302A\r
+:102CC00031056CF4225031092230310590F407C0EF\r
+:102CD0002C30310551F02F30310539F00AC0803EDB\r
+:102CE00010F0803F31F481E0089593FB882780F94C\r
+:102CF000089580E00895CF93DF9300D000D01F9215\r
+:102D0000CDB7DEB70F900F900F900F900F90DF911F\r
+:102D1000CF910895CF93DF9300D000D000D0CDB7EE\r
+:102D2000DEB726960FB6F894DEBF0FBECDBFDF919B\r
+:102D3000CF9108951F93CF93DF93C091810116E047\r
+:102D400080918201C81799F0D0E01C9FF0011D9F6F\r
+:102D5000F00D1124ED57FE4F408151816281738146\r
+:102D6000848195810E948A162196C770E9CFDF91F0\r
+:102D7000CF911F9108954091B3015091B40160919A\r
+:102D8000B5017091B6018091B7019091B8010C9492\r
+:102D90008A16CF938091B80182958F7009F05FC039\r
+:102DA0008091B501882309F45AC020918101A09136\r
+:102DB00082016091B3017091B4018091B60190914C\r
+:102DC000B70131E06F3F09F030E0B32FC6E02A17BA\r
+:102DD00009F445C0009721F07F3F21F44B2F03C039\r
+:102DE00041E001C040E030E040FD35C0C29FF0014D\r
+:102DF000C39FF00D1124ED57FE4F418174132BC07A\r
+:102E00004081641328C04281411125C0438154810F\r
+:102E10004817590710F441505109481B590B483CB9\r
+:102E20005105C8F48091B8018F7080618093B8011A\r
+:102E300086E0829FF001839FF00D1124E857FE4F3A\r
+:102E400080818F708061808383EB91E00E941D13ED\r
+:102E5000CF910C949A162F5F3F4F2770B8CFCF9128\r
+:102E60000895CF92DF92EF92FF920F931F93CF932B\r
+:102E7000DF93CDB7DEB762970FB6F894DEBF0FBE13\r
+:102E8000CDBF8C0185E0F801DE011D9601900D9209\r
+:102E90008A95E1F7D8014C9111965C9111971296A1\r
+:102EA0006C9112971396ED90FC9014977091B3016A\r
+:102EB000E091B4012091B6013091B701211531059F\r
+:102EC00031F0EF3F31F481E07F3F19F403C081E03E\r
+:102ED00001C080E0B82FB170CB2E80FD6CC1D090C6\r
+:102EE000B501DD2009F4F5C0F091B801E216F30652\r
+:102EF00038F0C701821B930B883C910548F09BC0BA\r
+:102F0000209530952E0D3F1D283C310508F093C0CB\r
+:102F10008F2F807F09F052C0E51314C0741312C0C4\r
+:102F2000D62E61110FC0FF70F061F093B8010E94BE\r
+:102F3000BB1683EB91E00E941D138091B801F8014C\r
+:102F400085836CC1EF2831F05F3F31F481E04F3F62\r
+:102F500019F403C081E001C080E080FD03C081E07E\r
+:102F6000862701C080E0F82FF170FF2E80FF1CC083\r
+:102F7000809181012091820136E0821709F428C1F5\r
+:102F800090E0389FF001399FF00D1124ED57FE4F6E\r
+:102F90007181571306C07081471303C07281671394\r
+:102FA00003C001968770E9CFD62E662309F436C197\r
+:102FB0008091B80181608093B80153C0E51308C0C7\r
+:102FC000741306C0611104C0D8011596FC93AEC0FD\r
+:102FD0004D875E878D859E856A8B0E9456166A890D\r
+:102FE000882329F1D62E662311F12091B801822F72\r
+:102FF00082958F7090E002970CF460C08091B301CD\r
+:103000009091B40198878F831986FB86EA862C8776\r
+:10301000CE01079651C0E51731F14D875E878D854A\r
+:103020009E856A8B0E9456166A8981112EC0C8013E\r
+:103030000E941D13A4C08F2F807F69F77E2DF98A0F\r
+:10304000E88A89890E947B1683EB91E00E941D1318\r
+:10305000E3EBF1E086E0DF011D928A95E9F70E943B\r
+:10306000BB16D12CDBC07413D8CF6111D6CFD801D9\r
+:103070001596FC93C8010E941D13E3EBF1E086E076\r
+:10308000DF011D928A95E9F7C9C0D62E662379F231\r
+:103090002091B801822F82958F7090E0029774F092\r
+:1030A0008091B3019091B4019A8389831B82FD8240\r
+:1030B000EC822E83CE0101960E941D1386E0F8015A\r
+:1030C000A3EBB1E001900D928A95E1F70E94C91639\r
+:1030D0006FC0E216F30628F0C701821B930B9C0118\r
+:1030E00004C0209530952E0D3F1D283C310508F079\r
+:1030F00052C0D62E662309F49ACFE5132CC0741360\r
+:103100002AC08091B80180FD1DC0982F92959F70B4\r
+:10311000C9F0D80115968C9315979F3039F09F5FB1\r
+:103120009295907F8F70892B15968C93C8010E9481\r
+:103130001D1386E0F801A3EBB1E001900D928A9592\r
+:10314000E1F736C086E0F801A3EBB1E001900D9203\r
+:103150008A95E1F763C04D875E878D859E850E94C5\r
+:103160005616882379F086E0F801A3EBB1E00190D0\r
+:103170000D928A95E1F70E94C9160E94BB16DD24C4\r
+:10318000D3944CC08091B80181608093B801C8018C\r
+:103190000E941D1343C07E2DF98AE88A89890E9406\r
+:1031A0007B16E3EBF1E086E0DF011D928A95E9F7FB\r
+:1031B0000E94BB1633C0662309F439CF4D875E8762\r
+:1031C0008D859E850E945616882309F430CFCBCF7B\r
+:1031D0004D875E878D859E850E94B91B292F22957C\r
+:1031E0002F7030E0223031052CF49F7041F08111B6\r
+:1031F00006C00CC0243031052CF49F7049F4805E69\r
+:10320000883020F0C8010E941D13CF2CDC2C06C092\r
+:10321000D80115969C91907F91F7F8CF8D2D6296ED\r
+:103220000FB6F894DEBF0FBECDBFDF91CF911F91D7\r
+:103230000F91FF90EF90DF90CF9008951F93CF9361\r
+:10324000DF93CDB7DEB72C970FB6F894DEBF0FBE75\r
+:10325000CDBF4F83588769877A878B879C87CE013C\r
+:1032600007960E9431178823C1F02F8138858A85FF\r
+:103270009B85892B31F03F3F11F080E003C02F3F49\r
+:10328000E1F781E0811147C04F81588569857A85D2\r
+:103290008B859C850E948A163EC086E0FE0137968B\r
+:1032A000DE01119601900D928A95E1F7FF81E88584\r
+:1032B0004A855B854115510531F0EF3F31F481E0DE\r
+:1032C000FF3F19F403C081E001C080E080FD23C00E\r
+:1032D0002091820130E0C9010196877099276091A1\r
+:1032E000810170E086179707F1F1F983EA835D8326\r
+:1032F0004C8396E0929FD001939FB00D1124AD575F\r
+:10330000BE4FFE01319601900D929A95E1F78093A0\r
+:1033100082010E949A1616E08091810190918201AB\r
+:10332000891779F1189FC00111248D579E4F0E9473\r
+:103330003117882331F1E09181011E9FF0011124A2\r
+:10334000ED57FE4F40815181628173818481958167\r
+:103350000E948A168091810190E0019687709927DA\r
+:1033600080938101D9CF0E9452161092820110924F\r
+:103370008101E3EBF1E086E0DF011D928A95E9F738\r
+:10338000CACF2C960FB6F894DEBF0FBECDBFDF912B\r
+:10339000CF911F910895EF92FF920F931F93CF93B8\r
+:1033A000DF93FC01009709F46FC0F12CEE24E39445\r
+:1033B000EF0121968491843740F4843008F055C0A1\r
+:1033C000813081F0823021F15FC0853709F447C038\r
+:1033D000C0F19CE7980F903708F056C08F770E9495\r
+:1033E000C01245C08F010E5F1F4FFE01849190E215\r
+:1033F000980F983050F48770FE2D01C0FF0F8A950A\r
+:10340000EAF78F2F0E94691C15C00E94F81114C0A2\r
+:103410008F010E5F1F4FFE01849190E2980F98304C\r
+:1034200068F48770FE2D01C0FF0F8A95EAF78F2F91\r
+:103430000E946F1C0E94921CE80119C00E94C012D9\r
+:10344000FBCFCF010296FE01C491CC2361F0EFE9DE\r
+:10345000FFE03197F1F700C00000C150F6CFCF0177\r
+:103460000296FE01F490EC0102C00E94F8118F2D2B\r
+:10347000882341F0EFE9FFE03197F1F700C0000049\r
+:103480008150F6CFFE0194CFDF91CF911F910F9124\r
+:10349000FF90EF90089508956093BD017093BE0171\r
+:1034A0008093BF019093C0010C943E160F931F931D\r
+:1034B0000091BD011091BE012091BF013091C0016A\r
+:1034C000062B172B282B392B0093BD011093BE011F\r
+:1034D0002093BF013093C0011F910F910C943E16B1\r
+:1034E0000F931F930091BD011091BE012091BF0168\r
+:1034F0003091C00106231723282339230093BD01EF\r
+:103500001093BE012093BF013093C0011F910F9112\r
+:103510000C943E160F931F930091BD011091BE01B4\r
+:103520002091BF013091C00106271727282739278E\r
+:103530000093BD011093BE012093BF013093C001E1\r
+:103540001F910F910C943E161092B9011092BA017E\r
+:103550001092BB011092BC010C943E1641E050E069\r
+:1035600060E070E004C0440F551F661F771F8A9506\r
+:10357000D2F74093B9015093BA016093BB017093A5\r
+:10358000BC010C943E1641E050E060E070E004C0E5\r
+:10359000440F551F661F771F8A95D2F78091B90196\r
+:1035A0009091BA01A091BB01B091BC01842B952BE5\r
+:1035B000A62BB72B8093B9019093BA01A093BB01BE\r
+:1035C000B093BC010C943E1641E050E060E070E026\r
+:1035D00004C0440F551F661F771F8A95D2F7409588\r
+:1035E0005095609570958091B9019091BA01A09124\r
+:1035F000BB01B091BC0184239523A623B7238093FC\r
+:10360000B9019093BA01A093BB01B093BC010C9493\r
+:103610003E1641E050E060E070E004C0440F551FEA\r
+:10362000661F771F8A95D2F78091B9019091BA01F0\r
+:10363000A091BB01B091BC0184279527A627B7278D\r
+:103640008093B9019093BA01A093BB01B093BC01E0\r
+:103650000C943E160F931F930091B9011091BA017B\r
+:103660002091BB013091BC01062B172B282B392B45\r
+:103670000093B9011093BA012093BB013093BC01B0\r
+:103680001F910F910C943E160F931F930091B90157\r
+:103690001091BA012091BB013091BC010623172380\r
+:1036A000282339230093B9011093BA012093BB0159\r
+:1036B0003093BC011F910F910C943E160F931F93F2\r
+:1036C0000091B9011091BA012091BB013091BC0168\r
+:1036D00006271727282739270093B9011093BA0125\r
+:1036E0002093BB013093BC011F910F910C943E16A7\r
+:1036F0000895CF92DF92EF92FF920F931F93CF9393\r
+:10370000DF93EC01C090BD01D090BE01E090BF01FD\r
+:10371000F090C0018091B9019091BA01A091BB01D4\r
+:10372000B091BC01C82AD92AEA2AFB2A0FE110E08D\r
+:10373000B701A601002E04C0769567955795479569\r
+:103740000A94D2F740FD05C00150110988F780E0C6\r
+:1037500007C0BE01802F0E9439090197A9F3802F6D\r
+:10376000DF91CF911F910F91FF90EF90DF90CF905D\r
+:103770000895CF93DF93EC010E94791BBE010E9454\r
+:103780003909DF91CF910895CB010E94B91B0895AB\r
+:1037900090910C019923D9F090910D019923B9F0E2\r
+:1037A000982F9695969596959F3088F5E0910E0105\r
+:1037B000F0910F01E90FF11D877021E030E001C0A9\r
+:1037C000220F8A95EAF78181822B818308954091A7\r
+:1037D0000E0150910F0120E030E09FEFFA01E20F5F\r
+:1037E000F31F6281681799F09F3F19F4611101C0BE\r
+:1037F000922F2F5F3F4F2E30310581F79F3F39F0D9\r
+:10380000FA01E90FF11D97FDFA9582830895089555\r
+:1038100090910C019923E1F090910D019923C1F051\r
+:10382000982F9695969596959F3020F5E0910E01EC\r
+:10383000F0910F01E90FF11D877021E030E001C028\r
+:10384000220F8A95EAF72095818128232183089504\r
+:1038500040910E0150910F0120E030E0FA01E20F9B\r
+:10386000F31F9281981301C012822F5F3F4F2E30B9\r
+:103870003105A1F7089581E090E0E0910E01F0910B\r
+:103880000F01E80FF91F1082019680319105A9F709\r
+:1038900008959091D401982B9093D4010895809528\r
+:1038A0009091D40198239093D40108951092D4015B\r
+:1038B00008959091D301982B9093D301089580950A\r
+:1038C0009091D30198239093D30108951092D3013E\r
+:1038D00008959091D201982B9093D20108958095EC\r
+:1038E0009091D20198239093D20108951092D20121\r
+:1038F00008958093C10108951092C10108954091E7\r
+:103900000E0150910F0120E030E080E0FA01E20F5B\r
+:10391000F31F918191118F5F2F5F3F4F2F30310542\r
+:10392000A9F70895E0910E01F0910F018091D40163\r
+:103930008083E0910E01F0910F0180819091D3017D\r
+:10394000892B8083E0910E01F0910F01808190918D\r
+:10395000D201892B80839091C101992361F0E0917C\r
+:103960000E01F0910F018081892B80830E947F1CC2\r
+:1039700081111092C10180910E0190910F010C9460\r
+:10398000DB108091EC01843021F11092D60120E40B\r
+:1039900088E190E00FB6F894A895809360000FBE80\r
+:1039A0002093600080E00E94D40983B7817F846007\r
+:1039B00083BF83B7816083BF7894889583B78E7FF8\r
+:1039C00083BF88E10FB6F894809360001092600086\r
+:1039D0000FBE089508950895CF930E94EA1C0E9497\r
+:1039E00008060E94EB1CC0E08C2F0E94F506811196\r
+:1039F00005C0CF5FCE30C1F780E001C081E0CF913C\r
+:103A000008950E9452160E94CF100C94D40982E0AF\r
+:103A100084BD93E095BD9AEF97BD80936E000895A5\r
+:103A20002FB7F8948091D7019091D801A091D90136\r
+:103A3000B091DA012FBF0895CF92DF92EF92FF92FB\r
+:103A40000F931F932FB7F8944091D7015091D8014D\r
+:103A50006091D9017091DA012FBF6A017B01EE24D8\r
+:103A6000FF248C0120E030E0C016D106E206F30608\r
+:103A700010F441505109481B590BCA011F910F9175\r
+:103A8000FF90EF90DF90CF9008951F920F920FB6A6\r
+:103A90000F9211248F939F93AF93BF938091D7017F\r
+:103AA0009091D801A091D901B091DA010196A11DA0\r
+:103AB000B11D8093D7019093D801A093D901B09301\r
+:103AC000DA01BF91AF919F918F910F900FBE0F9030\r
+:103AD0001F9018950E94D50DF8942FEF87EA91E674\r
+:103AE000215080409040E1F700C0000087E090EB5B\r
+:103AF000DC018093F6019093F701A093F801B09355\r
+:103B0000F9012CE088E190E00FB6F894A895809335\r
+:103B100060000FBE20936000FFCFEF92FF920F93E3\r
+:103B20001F93CF93DF93E82EF12C8F2D0E94F50683\r
+:103B3000C0E0D0E0082F10E098010C2E02C03595AF\r
+:103B400027950A94E2F720FD05C02196C630D105DD\r
+:103B500099F709C06C2F7F2D80E00E94FD06E812C6\r
+:103B6000F4CF81E005C0F3948EE0F812DECF80E060\r
+:103B7000DF91CF911F910F91FF90EF900895CF9318\r
+:103B8000C82F8CE20E948D1D882321F08C2FCF91AD\r
+:103B90000C948D1D80E0CF910895CF930E94121F49\r
+:103BA000811102C00E94F81EC5E6C15049F00E9472\r
+:103BB00008068FE39CE90197F1F700C00000F5CFFC\r
+:103BC00089E20E94BF1D811111C18AE20E94BF1DBE\r
+:103BD00081110E94F81E85E00E94BF1D81110E9484\r
+:103BE0006A1D0E941D1F8093D50187E00E94BF1DA2\r
+:103BF000882399F18BE10E94BF1D882351F0909199\r
+:103C0000D50191FB882780F921E0822780FB91F97B\r
+:103C100022C08EE00E94BF1D882351F09091D501F3\r
+:103C200092FB882780F921E0822780FB92F913C05C\r
+:103C300080E10E94BF1D9091D501882341F093FB44\r
+:103C4000882780F921E0822780FB93F904C0892F1F\r
+:103C5000809580FB90F99093D5018091D5010E94C9\r
+:103C6000211F0E942F1F8093F50180EE0E94BF1D2F\r
+:103C7000882341F08091F501982F909590FB80F971\r
+:103C80008093F50189E30E94BF1D882359F090912C\r
+:103C9000F50191FB882780F921E0822780FB91F9CB\r
+:103CA0009093F50182EE0E94BF1D882359F09091F8\r
+:103CB000F50192FB882780F921E0822780FB92F9A9\r
+:103CC0009093F50186EE0E94BF1D882359F09091D4\r
+:103CD000F50193FB882780F921E0822780FB93F987\r
+:103CE0009093F50183EE0E94BF1D882359F09091B7\r
+:103CF000F50194FB882780F921E0822780FB94F965\r
+:103D00009093F50185E30E94BF1D882359F090919F\r
+:103D1000F50195FB882780F921E0822780FB95F942\r
+:103D20009093F50181E30E94BF1D882359F0909183\r
+:103D3000F50196FB882780F921E0822780FB96F920\r
+:103D40009093F50181E10E94BF1D882359F0909165\r
+:103D5000F50197FB882780F921E0822780FB97F9FE\r
+:103D60009093F5018091F5010E94331F8091F50138\r
+:103D700087FB882780F980930D0187E20E94BF1D91\r
+:103D8000C82F8EE10E94BF1D8111C2608FE10E9489\r
+:103D9000BF1D8111C46080E20E94BF1D8111C860F7\r
+:103DA00081E20E94BF1D8111C06182E20E94BF1D9D\r
+:103DB0008111C06283E20E94BF1D8111C06484E250\r
+:103DC0000E94BF1D882311F0C06802C0CC2329F0D7\r
+:103DD0008C2F0E942A1F6C2F03C00E94261F682F61\r
+:103DE00070E080E090E0CF910C944C1ACF91089550\r
+:103DF0006DEE7EEF80E090E00E94502560E082E072\r
+:103E000090E00E943E2560E083E090E00E943E2525\r
+:103E100060E084E090E00E943E2560E085E090E074\r
+:103E20000C943E2580E090E00E94382521E08D3EF4\r
+:103E30009E4F09F020E0822F089582E090E00C94DC\r
+:103E40003025682F82E090E00C943E2583E090E0DE\r
+:103E50000C943025682F83E090E00C943E2584E09C\r
+:103E600090E00C943025682F84E090E00C943E257F\r
+:103E70008091DD0180FF0BC06091130185E0689F98\r
+:103E8000B001112475956795759567952AC081FFD6\r
+:103E900009C06091130185E0689FB00111247595F8\r
+:103EA00067951FC082FF07C06091130185E0689F7E\r
+:103EB000B001112416C04091DE014423C9F0609185\r
+:103EC0001201461788F72091130185E0289F900181\r
+:103ED0001124429FC001439F900D112470E00E9465\r
+:103EE00002256038710540F46115710539F002C092\r
+:103EF00065E070E0862F08958FE7089581E00895CA\r
+:103F00008091DD0180FF08C06091110170E075951E\r
+:103F100067957595679521C081FF06C06091110175\r
+:103F200070E07595679519C082FF04C0609111011A\r
+:103F300070E010C08091DE018823C1F06091100113\r
+:103F40008617A0F790911101989FC001112470E08D\r
+:103F50000E9402256038710528F46115710521F071\r
+:103F6000862F08958FE7089581E0089561E070E05D\r
+:103F7000F4CF803F21F40E94381F819504C0813F17\r
+:103F800029F40E94381F8093E1010895823F21F4B3\r
+:103F90000E94381F819504C0833F29F40E94381F76\r
+:103FA0008093E0010895893F19F40E94801F05C0A5\r
+:103FB0008A3F31F40E94801F81958093E201089529\r
+:103FC0008B3F21F40E94801F819504C08C3F29F40F\r
+:103FD0000E94801F8093E3010895843F21F4809123\r
+:103FE000DF01816017C0853F21F48091DF0182608D\r
+:103FF00011C0863F21F48091DF0184600BC0873FB0\r
+:1040000021F48091DF01886005C0883F31F4809100\r
+:10401000DF0180618093DF0108958D3F21F480915D\r
+:10402000DD0181600BC08E3F21F48091DD01826053\r
+:1040300005C08F3F29F48091DD0184608093DD010C\r
+:104040000895803F39F48091E10187FF6CC01092A0\r
+:10405000E10169C0813F29F48091E1011816BCF3A8\r
+:1040600062C09091E001823F29F497FF5CC01092FA\r
+:10407000E00159C0833F19F41916CCF354C0893FAD\r
+:1040800041F48091E20118160CF04DC01092E2014B\r
+:104090004AC08A3F29F48091E20187FF44C0F6CFED\r
+:1040A0008B3F39F48091E30187FF3DC01092E3011B\r
+:1040B0003AC08C3F29F48091E3011816BCF333C059\r
+:1040C000843F21F48091DF018E7F17C0853F21F46A\r
+:1040D0008091DF018D7F11C0863F21F48091DF0147\r
+:1040E0008B7F0BC0873F21F48091DF01877F05C064\r
+:1040F000883F31F48091DF018F7E8093DF0113C010\r
+:104100008D3F21F48091DD018E7F0BC08E3F21F425\r
+:104110008091DD018D7F05C08F3F29F48091DD0105\r
+:104120008B7F8093DD018091E00181110EC0809131\r
+:10413000E10181110AC08091E201811106C08091E4\r
+:10414000E301811102C01092DE0108958FED91E02C\r
+:104150000E94E6100E94101D9093DC018093DB0109\r
+:1041600008951F93CF93DF938091DB019091DC0141\r
+:104170000E941C1D4091DE01442321F02091140176\r
+:1041800030E006C0209115015AE0259F90011124CE\r
+:104190008217930708F482C08091E0011091E10139\r
+:1041A000D091E201C091E301811107C0111105C056\r
+:1041B000D11103C0CC2309F471C04F3F19F04F5FF8\r
+:1041C0004093DE01181624F40E94381F8093E0010A\r
+:1041D0008091E00187FF05C00E94381F8195809380\r
+:1041E000E001111624F40E94381F8093E1018091B0\r
+:1041F000E10187FF05C00E94381F81958093E1018E\r
+:104200006091E001662339F11091E101112319F168\r
+:10421000772767FD7095872F972F0E94132423E33C\r
+:1042200033E343E35FE30E9477240E94E02360933B\r
+:10423000E001612F772767FD7095872F972F0E94E8\r
+:10424000132423E333E343E35FE30E9477240E94D4\r
+:10425000E0236093E1011D1624F40E94801F8093E7\r
+:10426000E2018091E20187FF05C00E94801F8195D5\r
+:104270008093E2011C1624F40E94801F8093E301C6\r
+:104280008091E30187FF05C00E94801F8195809384\r
+:10429000E301DF91CF911F910C94A620DF91CF9184\r
+:1042A0001F910895EFEDF1E085E0DF011D928A9501\r
+:1042B000E9F71092DE011092DD010895833081F15B\r
+:1042C00028F4813059F08230D1F00895853009F416\r
+:1042D00049C0B8F1863009F456C0089520911501FF\r
+:1042E000862F90E0820F911D8F3F910520F4620F81\r
+:1042F0006093150108958FEF809315010895209123\r
+:104300001401862F90E0820F911D8F3F910520F4BC\r
+:10431000620F6093140108958FEF80931401089544\r
+:1043200020911301862F90E0820F911D8F3F910500\r
+:1043300020F4620F6093130108958FEF80931301AF\r
+:10434000089520911201862F90E0820F911D8F3FDA\r
+:10435000910520F4620F6093120108958FEF80930E\r
+:104360001201089520911101862F90E0820F911D76\r
+:104370008F3F910520F4620F6093110108958FEF34\r
+:1043800080931101089520911001862F90E0820FF3\r
+:10439000911D8F3F910520F4620F609310010895E5\r
+:1043A0008FEF809310010895833011F128F481304C\r
+:1043B00049F0823091F00895853081F120F1863006\r
+:1043C000C1F1089580911501681720F4861B809330\r
+:1043D0001501089510921501089580911401681730\r
+:1043E00020F4861B809314010895109214010895FF\r
+:1043F00080911301681720F4861B809313010895A0\r
+:1044000010921301089580911201681720F4861B01\r
+:104410008093120108951092120108958091110164\r
+:10442000681720F4861B80931101089510921101E2\r
+:10443000089580911001681720F4861B8093100165\r
+:1044400008951092100108958D3109F442C020F5AD\r
+:104450008E3009F477C070F4873009F459C018F42D\r
+:104460008630F1F134C0883009F4A8C08B3009F4EB\r
+:10447000A5C02DC0863109F4A1C038F4803109F4FB\r
+:1044800072C0813109F479C022C0893109F496C023\r
+:104490008B3109F44DC01BC0853309F487C048F443\r
+:1044A000873209F483C008F473C0893209F47EC0EE\r
+:1044B0000EC0833438F48A3308F068C0883309F4B6\r
+:1044C0007DC005C0833409F471C0883499F080E060\r
+:1044D00008950E949A230E94CF100E94D4096EC0B2\r
+:1044E0008091D501817F8E7F8093D50181E080937B\r
+:1044F000E50108950E9452162FEF83ED90E32150BD\r
+:1045000080409040E1F700C000000E946A1D56C044\r
+:104510009091D501892F8095817080FB90F919F0D9\r
+:10452000966098601DC0997F977F9093D50146C093\r
+:104530009091D50191FB882780F921E0822780FBAB\r
+:1045400091F909C09091D50192FB882780F921E06B\r
+:10455000822780FB92F99093D501882379F19160AD\r
+:104560009093D50108959091D50193FB882780F908\r
+:1045700021E0822780FB93F9EECF0E9452168091B2\r
+:104580000D0191E0892780930D0118C027EC01C02F\r
+:1045900023EE280F61E070E080E090E004C0660F39\r
+:1045A000771F881F991F2A95D2F704C061E070E039\r
+:1045B00080E090E00E944C1A0E94521681E008951B\r
+:1045C00080E0089580E00895CF93C82F8091E501A1\r
+:1045D000813079F018F08230D1F184C0A0910E01C1\r
+:1045E000B0910F018C91813169F0823209F07CC069\r
+:1045F00009C0A0910E01B0910F018C91813111F091\r
+:10460000823249F48C2F0E94E02281111DC08C2F30\r
+:104610000E9424221AC08C2F0E94E222811114C011\r
+:10462000C43179F048F4CB3079F0C03109F060C082\r
+:1046300082E08093E50108C0C93219F0C83321F047\r
+:1046400057C01092E50154C081E0817053C0C93257\r
+:1046500089F118F5C43171F1A8F4C73009F046C0EA\r
+:104660008AE08093150194E19093140193E0909374\r
+:1046700013018093120188E08093110188E28093F6\r
+:10468000100134C0CE51C63088F5EC2FF0E0E65D65\r
+:10469000FE4F80818093E40129C0CE34E9F020F4FC\r
+:1046A000CB3421F56AE013C0C13579F0C235F1F49D\r
+:1046B00061E00DC08091E401882319F01092E401BB\r
+:1046C00015C081E08093E50115C061E006C08091CE\r
+:1046D000E4010E945E210AC06AE08091E4010E9428\r
+:1046E000D42104C01092E50180E004C081E002C042\r
+:1046F00080E0ABCFCF910895E1E8F0E08081886061\r
+:1047000080838081816080838FB7F89493E0909359\r
+:10471000890090ED909388008FBF0895EFE6F0E058\r
+:104720008081826080830895EFE6F0E080818D7F54\r
+:1047300080830895EFE6F0E0808192E0892780830E\r
+:1047400008951F920F920FB60F9211242F933F934B\r
+:104750004F935F936F937F938F939F93AF93BF9389\r
+:10476000EF93FF938091E6019091E701019690937A\r
+:10477000E7018093E601811103C082E00E94D40921\r
+:10478000E091E701E695E695F0E0E259FA4FE49111\r
+:104790008091E6018E1303C080E00E94D409FF914E\r
+:1047A000EF91BF91AF919F918F917F916F915F91A9\r
+:1047B0004F913F912F910F900FBE0F901F90189522\r
+:1047C00004D06894B1118DC0089570D088F09F57BF\r
+:1047D00090F0B92F9927B751A0F0D1F0660F771F4D\r
+:1047E000881F991F1AF0BA95C9F712C0B13081F02D\r
+:1047F00077D0B1E0089574C0672F782F8827B85F0D\r
+:1048000039F0B93FCCF3869577956795B395D9F78D\r
+:104810003EF490958095709561957F4F8F4F9F4F97\r
+:104820000895E89409C097FB3EF4909580957095A3\r
+:1048300061957F4F8F4F9F4F9923A9F0F92F96E9EC\r
+:10484000BB279395F695879577956795B795F11161\r
+:10485000F8CFFAF4BB0F11F460FF1BC06F5F7F4FFE\r
+:104860008F4F9F4F16C0882311F096E911C0772310\r
+:1048700021F09EE8872F762F05C0662371F096E819\r
+:10488000862F70E060E02AF09A95660F771F881FE8\r
+:10489000DAF7880F9695879597F9089557FD905800\r
+:1048A000440F551F59F05F3F71F04795880F97FBF4\r
+:1048B000991F61F09F3F79F08795089512161306AE\r
+:1048C0001406551FF2CF4695F1DF08C016161706DD\r
+:1048D0001806991FF1CF8695710561050894089512\r
+:1048E000E894BB2766277727CB0197F908950BD06B\r
+:1048F00078C069D028F06ED018F0952309F05AC01E\r
+:104900005FC01124EECFCADFA0F3959FD1F3950FBE\r
+:1049100050E0551F629FF001729FBB27F00DB11D43\r
+:10492000639FAA27F00DB11DAA1F649F6627B00DD3\r
+:10493000A11D661F829F2227B00DA11D621F739FBC\r
+:10494000B00DA11D621F839FA00D611D221F749FCA\r
+:104950003327A00D611D231F849F600D211D822F11\r
+:10496000762F6A2F11249F5750408AF0E1F0882358\r
+:104970004AF0EE0FFF1FBB1F661F771F881F915065\r
+:104980005040A9F79E3F510570F014C0AACF5F3F79\r
+:10499000ECF3983EDCF3869577956795B795F79598\r
+:1049A000E7959F5FC1F7FE2B880F911D9695879520\r
+:1049B00097F9089597F99F6780E870E060E008959F\r
+:1049C0009FEF80EC089500240A9416161706180627\r
+:1049D0000906089500240A94121613061406050603\r
+:1049E0000895092E0394000C11F4882352F0BB0F94\r
+:1049F00040F4BF2B11F460FF04C06F5F7F4F8F4FF7\r
+:104A00009F4F089597FB072E16F4009407D077FD6B\r
+:104A100009D00E941C2507FC05D03EF49095819595\r
+:104A20009F4F0895709561957F4F0895EE0FFF1F7A\r
+:104A30000590F491E02D0994AA1BBB1B51E107C01E\r
+:104A4000AA1FBB1FA617B70710F0A61BB70B881F1E\r
+:104A5000991F5A95A9F780959095BC01CD010895AD\r
+:104A6000F999FECF92BD81BDF89A992780B5089536\r
+:104A7000A8E1B0E042E050E00C945825262FF999C7\r
+:104A8000FECF92BD81BDF89A019700B4021639F0AD\r
+:104A90001FBA20BD0FB6F894FA9AF99A0FBE08957E\r
+:104AA0000196272F0E943F250C943E25DC01CB0167\r
+:104AB000FC01F999FECF06C0F2BDE1BDF89A31962E\r
+:104AC00000B40D9241505040B8F70895F894FFCFCC\r
+:104AD0002002D609630A400A0C0AD9090101C20161\r
+:104AE00028080A03140A3F4D36392F05E204AC04A6\r
+:104AF000730406041F04380451040102030405066C\r
+:044B00000708090099\r
 :00000001FF\r
index f264dd48fbfb245457336597ae33ce9aede64a36..6465cd79e068b09800f2453b4b76281fedc94e21 100644 (file)
@@ -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 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. 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
index a9980593fbbb67264aeaa4352ae7c1fee3dd6b14..e9963886be3100800a77d150cdfaf3db0153ad74 100644 (file)
@@ -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,
@@ -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)
 ),
 };
 
diff --git a/keyboard/planck/keymaps/experimental/README.md b/keyboard/planck/keymaps/experimental/README.md
new file mode 100644 (file)
index 0000000..de9680b
--- /dev/null
@@ -0,0 +1,2 @@
+# The Default Planck Layout
+
diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c
new file mode 100644 (file)
index 0000000..fc3ac4a
--- /dev/null
@@ -0,0 +1,383 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "planck.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+  #include "audio.h"
+#endif
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _MUSIC 5
+#define _PLOVER 6
+#define _ADJUST 16
+
+// Macro name shortcuts
+#define QWERTY M(_QWERTY)
+#define COLEMAK M(_COLEMAK)
+#define DVORAK M(_DVORAK)
+#define LOWER M(_LOWER)
+#define RAISE M(_RAISE)
+#define M_BL 5
+#define AUD_OFF M(6)
+#define AUD_ON M(7)
+#define MUS_OFF M(8)
+#define MUS_ON M(9)
+#define VC_IN M(10)
+#define VC_DE M(11)
+#define PLOVER M(12)
+#define EXT_PLV M(13)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = {
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = {
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Music (reserved for process_action_user)
+ *
+ */
+[_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, LOWER,   XXXXXXX, XXXXXXX, RAISE,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |   S  |   T  |   P  |   H  |   *  |   *  |   F  |   P  |   L  |   T  |   D  |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |   S  |   K  |   W  |   R  |   *  |   *  |   R  |   B  |   G  |   S  |   Z  |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit |      |      |   A  |   O  |             |   E  |   U  |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+[_PLOVER] = {
+  {KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1   },
+  {XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC},
+  {XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {EXT_PLV, XXXXXXX, XXXXXXX, KC_C,    KC_V,    XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover|      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |Voice-|Voice+|Mus on|Musoff|      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
+  {_______, _______, _______, AUD_ON,  AUD_OFF, AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
+  {_______, VC_DE,   VC_IN,   MUS_ON,  MUS_OFF, _______, _______, _______, _______, _______, _______, _______},
+  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+}
+
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_startup[][2] = {
+  {440.0*pow(2.0,(31)/12.0), 12},
+  {440.0*pow(2.0,(28)/12.0), 8},
+  {440.0*pow(2.0,(19)/12.0), 8},
+  {440.0*pow(2.0,(24)/12.0), 8},
+  {440.0*pow(2.0,(28)/12.0), 20}
+};
+
+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);
+#endif
+
+
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+      switch(id) {
+        case _QWERTY:
+          if (record->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 (file)
index 0000000..99fbfbd
--- /dev/null
@@ -0,0 +1,2 @@
+AUDIO_ENABLE = yes
+NKRO_ENABLE = yes
\ No newline at end of file
index 830b00a4c464215f2044f2d79229d651217e297a..177f04484dce1910b16683735813f5c4244f7891 100644 (file)
@@ -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:
index b3f1b9e51c89d6c7a9d81636a7b59351f3ea1b7b..f7798b09d5cb24b321974f5626d57431ae430f4c 100644 (file)
@@ -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.
index 65585015044ed5d7f268cb0c3242029ba9b1b935..446353dbf5f111fd9e7c8bf15f18ce573da0a7d5 100644 (file)
@@ -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
index c5b59d9998a4cb50f0a5084125224d16a1b0ec24..cfd4956bf16927b9aefc01fcbb236f968ffab0b0 100644 (file)
@@ -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
index 3a7f0f556701c3f1b25dcf6a15a2b802c90091d0..27b64f8c96224da8b35e6b4a5ecb45f9d9ed618c 100644 (file)
@@ -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);
index 3d706587abc7a146628d05b309e1aec51007cd28..4ba879bbb1d25b8b0e2d09723005e3821b4e5d04 100644 (file)
@@ -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.
index 5e78d1157d865ca0ee93894e23246659735bd2d0..8f00f9cc32226ec1cff4acf986d64a168ae8ab2c 100644 (file)
@@ -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
index 0ede0296b98fbe013f71f37595d249815409bb0c..322fda498ae40ed5b06e1a7ee65298b1ba07fbbf 100644 (file)
@@ -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
@@ -84,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
 
@@ -107,22 +113,43 @@ 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
 
 #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
 
 #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
@@ -205,6 +232,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)
index 795f26380ed8fb5eb53ac5b2999e358769cb1f09..3a2bf3afff6aa4dba10e95570e21d5102f61eee8 100644 (file)
@@ -25,11 +25,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #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 )
index 2dab6ae941e0cf8320bb74b122b6c9151f2bdfcf..7d70f728d459d4255a8fa7232e410ae0a7e73e8f 100644 (file)
@@ -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<<x)); 
+            result |= (PINB&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x)); 
         } else if ((col & 0xF0) == 0x30) { 
-            result |= (PINC&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
+            result |= (PINC&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x)); 
         } else if ((col & 0xF0) == 0x40) { 
-            result |= (PIND&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
+            result |= (PIND&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x)); 
         } else if ((col & 0xF0) == 0x50) { 
-            result |= (PINE&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
+            result |= (PINE&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x)); 
         } else if ((col & 0xF0) == 0x60) { 
-            result |= (PINF&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
+            result |= (PINF&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x)); 
         } 
     }
     return result;
index 4a076eca4de60ea2bf5b63d550cc75663456bb3d..5f4c2f045077665c9a4e96677361acf98a1939d5 100644 (file)
@@ -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)
index 0702144238f243a81fedaee810d1be75bc18da43..5f355256def834c3b0e5105354ee73b782802da0 100644 (file)
@@ -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.
index f9e6c17dc3bd9c37044f322424107ca15ec65563..081e90b2dbd63d1ad40c24627a663b67e5c1206a 100644 (file)
@@ -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;
index 2b0b0b077ef16292006588f5f0e3e7cecbf55615..ca729aaece26a8e3b7ea0ffd72f40989867c0782 100644 (file)
@@ -76,7 +76,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * 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))
index a2d6577b24dae29d44de82032bdfeadc97bba00a..61ff202befa510b9d08f3604f7fad50c607c11b7 100644 (file)
@@ -18,6 +18,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #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
  */
index 1a95cec10ec1ced084be192e7dd172602564e99e..dd0c4c2bfe71c56669c53a27161c41b9c2942502 100644 (file)
@@ -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);
index 2f6fc1cd6c40a5e41b35e6f8dba8754746900925..c9e8fd3fd2ddbe3fce3afd0096f13f3cfab1f2c2 100644 (file)
@@ -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
index 525ec8bbef067e8377d4874a66d0de04cc3221c0..f5730926745c579426abd896010b2745193aff59 100644 (file)
@@ -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
index f06abaf7f02b9af7374cba20127d5ca0efd493b7..9edcc42a05b48fc56ad3115acd517d394f60d31f 100644 (file)
@@ -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;
 
index 93309ada4761f356ee82b7bba2b3871ad7a236dc..5e18656e5bf180747a7137c2778a8603c87fe0ca 100644 (file)
@@ -16,10 +16,14 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #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
index d4a129b208150062ff8a7bf7705396ce1d1f32a5..4d42fbe5cb95ac2f69d1a024e28d9d780ed51e8d 100644 (file)
@@ -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.
index 860fc1a9310da970ebecba597c150802f522f37e..69c7985b4854008faee6e10676601c042e2752fc 100644 (file)
@@ -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 ----------------