summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bösebeck <sb@caluga.de>2016-03-08 23:56:50 +0100
committerStephan Bösebeck <sb@caluga.de>2016-03-08 23:56:50 +0100
commit3119778e0cef697d78b5f425822382a455cf6d36 (patch)
tree3bcb802e2bb133765c04e7bd81da04b172017bf2
parent98fe40caa7b862a26f8900f8b9547f8c9b61726b (diff)
parent7d3ebd7b40b96f576fe4608b33f47329c334925b (diff)
Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware
-rw-r--r--.gitignore4
-rw-r--r--1-setup-path-win.bat9
-rw-r--r--2-setup-environment-win.bat41
-rw-r--r--BUILD_GUIDE.md55
-rw-r--r--HAND_WIRE.md (renamed from HAND-WIRE.md)0
-rw-r--r--README.md5
-rw-r--r--VAGRANT_GUIDE.md (renamed from QUICK_START.md)1
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/keymap.c190
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex1122
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary.pngbin0 -> 93556 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/readme.md5
-rwxr-xr-xkeyboard/planck/CYGWIN_GUIDE.md237
-rw-r--r--keyboard/planck/PCB_GUIDE.md30
-rw-r--r--keyboard/planck/keymaps/lucas.c163
-rwxr-xr-xnew_project.sh3
-rw-r--r--quantum/keymap_extras/keymap_neo2.h19
-rw-r--r--quantum/template/template.h2
17 files changed, 1877 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index ae342167df..8b8c45169d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+keyboard/planck/dfu-programmer.exe
.dep
*.o
*.eep
@@ -18,4 +19,5 @@ build/
# Eclipse Settings
.cproject
.project
-.settings/ \ No newline at end of file
+.settings/
+
diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat
new file mode 100644
index 0000000000..49fb00e149
--- /dev/null
+++ b/1-setup-path-win.bat
@@ -0,0 +1,9 @@
+@echo off
+setx /M path "%PATH%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul 2>&1
+if NOT ["%errorlevel%"]==["0"] (
+ echo FAILED. Rerun with administrator privileges.
+ pause
+) else (
+ echo Success!
+ pause
+)
diff --git a/2-setup-environment-win.bat b/2-setup-environment-win.bat
new file mode 100644
index 0000000000..91b6c91e39
--- /dev/null
+++ b/2-setup-environment-win.bat
@@ -0,0 +1,41 @@
+@echo off
+setx /M test test > nul 2>&1
+if NOT ["%errorlevel%"]==["0"] (
+ echo FAILED. Rerun with administrator privileges.
+ pause
+ exit
+)
+
+echo ------------------------------------------
+echo Installing wget and unzip
+echo ------------------------------------------
+mingw-get install msys-wget-bin msys-unzip-bin
+cd \MinGW\bin
+
+mkdir temp
+cd temp
+echo ------------------------------------------
+echo Installing dfu-programmer.
+echo ------------------------------------------
+wget http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip
+unzip dfu-programmer-win-0.7.2.zip
+copy dfu-programmer.exe ..
+
+echo ------------------------------------------
+echo Downloading driver
+echo ------------------------------------------
+wget http://iweb.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip
+unzip libusb-win32-bin-1.2.6.0.zip
+cp libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll
+
+echo ------------------------------------------
+echo Installing driver. Accept prompt.
+echo ------------------------------------------
+pnputil -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf
+
+cd ..
+rm -rf temp
+
+echo ------------------------------------------
+echo Finished!
+pause \ No newline at end of file
diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md
new file mode 100644
index 0000000000..81c3ec44f2
--- /dev/null
+++ b/BUILD_GUIDE.md
@@ -0,0 +1,55 @@
+# Build Guide
+
+## Build Environment Setup
+
+### Windows
+1. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
+2. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location.
+3. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
+4. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
+5. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete!
+
+### Mac
+If you're using [homebrew,](http://brew.sh/) you can use the following commands:
+
+ brew tap osx-cross/avr
+ brew install avr-libc
+ brew install dfu-programmer
+
+This is the recommended method. If you don't have homebrew, [install it!](http://brew.sh/) It's very much worth it for anyone who works in the command line.
+
+You can also try these instructions:
+
+1. Install Xcode from the App Store.
+2. Install the Command Line Tools from `Xcode->Preferences->Downloads`.
+3. Install [DFU-Programmer][dfu-prog].
+
+### Linux
+Install AVR GCC and dfu-progammer with your favorite package manager.
+
+Debian/Ubuntu example:
+
+ sudo apt-get update
+ sudo apt-get install gcc-avr dfu-programmer
+
+### Vagrant
+If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](VAGRANT_GUIDE.md).
+
+## Verify Your Installation
+1. If you haven't already, obtain this repository ([https://github.com/jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware)). You can either download it as a zip file and extract it, or clone it using the command line tool git or the Github Desktop application.
+2. Open up a terminal or command prompt and navigate to the qmk_firmware folder using the `cd` command. The command prompt will typically open to your home directory. If, for example, you cloned the repository to your Documents folder, then you would type `cd Documents/qmk_firmware`. If you extracted the file from a zip, then it may be named `qmk_firmware-master` instead.
+3. To confirm that you're in the correct location, you can display the contents of your current folder using the `dir` command on Windows, or the `ls` command on Linux or Mac. You should see several files, including `README.md` and a `quantum` folder. From here, you need to navigate to the appropriate folder under `keyboard/`. For example, if you're building for a Planck, run `cd keyboard/planck`.
+4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process.
+
+## Customizing, Building, and Deploying Your Firmware
+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`.
+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
+1. On Linux or OS X, you can run `sleep 5; make KEYMAP=<name> dfu` to delay building/deploying the firmware until for 5 seconds, giving you a chance to put the firmware into bootloader mode. You can change the 5 to any number of seconds.
+
+## Troubleshooting
+1. Try running `make clean` if the make command fails.
+
+ WIP \ No newline at end of file
diff --git a/HAND-WIRE.md b/HAND_WIRE.md
index 3f4d75b272..3f4d75b272 100644
--- a/HAND-WIRE.md
+++ b/HAND_WIRE.md
diff --git a/README.md b/README.md
index 6cb73f1804..6a6bbed40b 100644
--- a/README.md
+++ b/README.md
@@ -12,8 +12,8 @@ The documentation below explains QMK customizations and elaborates on some of th
## Getting started
-* **If you're looking to customize a keyboard that currently runs QMK or TMK** , find your keyboard's directory under `/keyboard/` and read the README file. This will get you all set up.
-* Read the [QUICK_START.md](QUICK_START.md) if you want to hit the ground running with minimal fuss or you aren't a technical person and you just want to build the firmware with the least amount of hassle possible.
+* [BUILD_GUIDE.md](BUILD_GUIDE.md) contains instructions to set up a build environment, build the firmware, and deploy it to a keyboard. Once your build environment has been set up, all `make` commands to actually build the firmware must be run from a folder in `keyboard/`.
+* If you're looking to customize a keyboard that currently runs QMK or TMK, find your keyboard's directory under `keyboard/` and run the make commands from there.
* If you're looking to apply this firmware to an entirely new hardware project (a new kind of keyboard), you can create your own Quantum-based project by using `./new_project.sh <project_name>`, which will create `/keyboard/<project_name>` with all the necessary components for a Quantum project.
You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you.
@@ -309,3 +309,4 @@ what things are (and likely aren't) too risky.
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
firmware repeatedly and continually; that'll burn the EEPROM
eventually.
+ \ No newline at end of file
diff --git a/QUICK_START.md b/VAGRANT_GUIDE.md
index 948308ca11..922848fd75 100644
--- a/QUICK_START.md
+++ b/VAGRANT_GUIDE.md
@@ -23,3 +23,4 @@ See [doc/keymap.md](tmk_core/doc/keymap.md).
The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](keyboard/ergodox_ez/readme.md) gives a great example.
If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version.
+ \ No newline at end of file
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c
new file mode 100644
index 0000000000..d44962b0dc
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c
@@ -0,0 +1,190 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+/*
+ * Ordinary Ergodox EZ keyboard layout, v1
+ * modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
+ * Details: http://nicholas.rinard.us/2016/03/ergodox-ez-layout.html
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Grv | 1 | 2 | 3 | 4 | 5 | ESC | | = | 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | \ | | / | Y | U | I | O | P | ~L2 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | ~L1 | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ~L1 |
+ * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |'/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh |RCtrl |
+ * `----------------------------------' `----------------------------------'
+ * ,---------------. ,---------------.
+ * | Home | End | | Left | Right |
+ * ,------|--------|------| |------+--------+------.
+ * | | | PgUp | | Up | | |
+ * |Backsp| Del |------| |------| Enter | Space|
+ * | | | PgDn | | Down | | |;
+ * `----------------------' `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP( // layer 0 : default
+ // left hand
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSLS,
+ KC_FN1, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT,CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LBRC,
+ KC_LCTL,MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI,
+ KC_HOME, KC_END,
+ KC_PGUP,
+ KC_BSPC, KC_DEL, KC_PGDN,
+ // right hand
+ KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_SLSH, KC_Y, KC_U, KC_I, KC_O, KC_P, LT(MDIA, KC_SLSH),
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_FN1,
+ KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_QUOT),KC_RSFT,
+ KC_RGUI, KC_RALT, ALL_T(KC_NO),MEH_T(KC_NO), KC_RCTL,
+ KC_LEFT, KC_RGHT,
+ KC_UP,
+ KC_DOWN, KC_ENT, KC_SPC
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | CAPS | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | CAPS |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | . | 0 | = | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_CAPS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_CAPS,
+ KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | Sleep| | | | | |MyComp| Mail | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp |ScrlUp| |ScrlUp| |ScrlUp| | | | | Mute | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | |MsDown|ScrlDn| |ScrlDn| |ScrlDn| | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | Lclk | Rclk | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Stop |Refrsh| | Prev | Next |
+ * ,------|------|------| |------+------+------.
+ * |Brwser|Brwser| Home | |VolUp | | |
+ * |Back | Fwd |------| |------| Stop | Play |
+ * | | |Search| |VolDn | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_WH_U, KC_TRNS, KC_WH_U,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_D, KC_TRNS, KC_TRNS, KC_WH_D,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_WH_D,
+ KC_WSTP, KC_WREF,
+ KC_WHOM,
+ KC_WBAK, KC_TRNS, KC_WSCH,
+ // right hand
+ KC_WSCH, KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, KC_MAIL, KC_TRNS,
+ KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_MPRV, KC_MNXT,
+ KC_VOLU,
+ KC_VOLD, KC_MSTP, KC_MPLY
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void * matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void * matrix_scan_user(void) {
+
+ uint8_t layer = biton32(layer_state);
+
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ switch (layer) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
new file mode 100644
index 0000000000..c7782d1c25
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex
@@ -0,0 +1,1122 @@
+:100000000C9465020C94A9020C94A9020C94A90208
+:100010000C94A9020C94A9020C94A9020C94A902B4
+:100020000C94A9020C94A9020C94C50B0C94970C87
+:100030000C94A9020C94A9020C94A9020C94A90294
+:100040000C94A9020C9420210C94A9020C94A902EE
+:100050000C94A9020C94C21A0C94A9020C94A90243
+:100060000C94A9020C94A9020C94A9020C94A90264
+:100070000C94A9020C94A9020C94A9020C94A90254
+:100080000C94A9020C94A9020C94A9020C94A90244
+:100090000C94A9020C94A9020C94A9020C94A90234
+:1000A0000C94A9020C94A9020C94A902FC0C1E0D3C
+:1000B000090E1E0D090E600D830D090ED80DEB0DF6
+:1000C000D810D81006110611481184118413841316
+:1000D0009C118413931293125E138413841372136E
+:1000E0000000F0A135002B00C100E100E00000009D
+:1000F0001E00140004001D7100774E001F001A003E
+:1001000016001B00007F4C002000080007000600BE
+:10011000E2002A002100150009001900E3004B004D
+:10012000220017000A00050000004A0029003100E3
+:1001300000002F0000004D002E00380000003000AD
+:100140000000500023001C000B00110000004F00B5
+:10015000240018000D001000E700520025000C00DC
+:100160000E003600E6002C00260012000F003700BB
+:10017000007F2800270013003300347100775100FE
+:100180002D003882C100E500E400000001000100FC
+:1001900001003900010000003A001E022002220284
+:1001A000010001003B001F022102230201000100A7
+:1001B0003C002F0226022F00010001003D0030020A
+:1001C00027023000010001003E00310235003502F7
+:1001D000000001000100010000000100000001001A
+:1001E0000100010000000100000001003F0052007A
+:1001F00051002402000001004000240021001E00E4
+:10020000010001004100250022001F00370001000D
+:1002100042002600230020002700010043002502A1
+:100220002E0231002E00010044004500010039007B
+:1002300001000000010001000100010001000000B8
+:1002400001000100010001000100B40001000100F3
+:10025000F2000100010001000100F000F100F100D6
+:10026000F400B6000100F900F3000100FA00B50047
+:1002700001000100010001000000B800A600F90023
+:100280000000FA000000B900B400F9000000FA0014
+:100290000000AC0001000100010001000000AB0003
+:1002A00001000100010001000100A900010001009E
+:1002B000010001000100AE00B300010001000100D7
+:1002C0000100AD00B100A800010001000100AA007A
+:1002D00001000100010001000100000016034500BB
+:1002E000720067006F0044006F0078002000450036
+:1002F0005A00000016034500720067006F004400BA
+:100300006F007800200045005A0000000403090433
+:1003100009026D00040100A0FA09040000010301B4
+:100320000100092111010001223F00070581030896
+:10033000000A090401000103010200092111010062
+:1003400001224D000705820308000A09040200018A
+:100350000300000009211101000122360007058376
+:100360000308000A09040300010300000009211129
+:100370000100012239000705840310000112011059
+:100380000100000008EDFE07130100010200010555
+:10039000010906A101050719E029E71500250195C6
+:1003A0000875018102050819012905950575019156
+:1003B000029501750391010507190029771500259C
+:1003C00001957875018102C005010980A1018502AE
+:1003D00016010026B7001A01002AB7007510950112
+:1003E0008100C0050C0901A1018503160100269CAE
+:1003F000021A01002A9C02751095018100C00501B6
+:100400000902A1010901A100050919012905150029
+:10041000250195057501810295017503810105018D
+:10042000093009311581257F950275088106093843
+:100430001581257F950175088106050C0A3802157E
+:1004400081257F950175088106C0C005010906A1B7
+:1004500001050719E029E7150025019508750181B7
+:100460000295017508810105081901290595057591
+:100470000191029501750391010507190029FF15E6
+:100480000025FF950675088100C0000000000000EF
+:100490000000000000010204060A0F17202C3A4A4F
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2
+:1004B000B39D87715D4A3A2C20170F0A060402018A
+:1004C0000000000000000000000011241FBECFEF5C
+:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A
+:1004E0009091EF01A091F001B091F1018730904B14
+:1004F000A740B04BB9F41092EE011092EF011092A8
+:10050000F0011092F10114BE84B7877F84BF88E1A7
+:100510000FB6F89480936000109260000FBEE0E088
+:10052000FFE3099511E0A0E0B1E0E4ECF5E402C0DE
+:1005300005900D92A433B107D9F721E0A4E3B1E00F
+:1005400001C01D92AE3EB207E1F70E940B090C9468
+:10055000E0220C94000061110BC0FC018281882311
+:1005600021F085EE0E946C0F03C085EE0E943410CE
+:1005700080E090E0089508956091B1017091B2011A
+:100580008091B3019091B4010E94EE1956985E9843
+:1005900025982D9826982E9827982F98813019F015
+:1005A000823021F00895259A2D9A0895269A2E9A40
+:1005B00008958CEB92E0892B11F00E94BC0280E040
+:1005C00090E0089556985E9825982D9826982E9834
+:1005D00027982F988FEF90E0909389008093880060
+:1005E00090938B0080938A0090938D0080938C0071
+:1005F000259A2D9A2FEF80E792E02150804090407D
+:10060000E1F700C00000269A2E9A2FEF80E792E0D3
+:10061000215080409040E1F700C00000279A2F9AB7
+:100620002FEF80E792E0215080409040E1F700C03A
+:10063000000025982D982FEF80E792E02150804010
+:100640009040E1F700C0000026982E982FEF80E739
+:1006500092E0215080409040E1F700C000002798D0
+:100660002F9856985E9825982D9826982E9827981A
+:100670002F98089589EA8093800089E08093810013
+:1006800024982C983F988AB18F748AB96E98479AAB
+:100690008BB1806B8BB9769A0E94E2028BEB92E071
+:1006A000892B11F00E94BB0280E090E0089580E267
+:1006B000809300018091340181110EC00E94A60335
+:1006C00081E0809334012FEF83ED90E3215080404F
+:1006D0009040E1F700C0000080E40E94AC038093EA
+:1006E000000181112EC00E94D60380930001811168
+:1006F00028C00E94D60380930001811122C08FE39D
+:100700000E94D6038093000181111BC00E94CE037A
+:1007100080E40E94AC0380930001811112C08CE040
+:100720000E94D6038093000181110BC00E94D60362
+:1007300080930001811105C08FE30E94D60380934E
+:1007400000010E94CE038091000108951092B9002B
+:100750008AE08093B800089594EA9093BC00909149
+:10076000BC0097FFFCCF9091B900987F983021F0A2
+:10077000903111F081E008958093BB0084E880936C
+:10078000BC008091BC0087FFFCCF8091B900887FBE
+:10079000883111F0803471F780E0089584E9809306
+:1007A000BC008091BC0084FDFCCF08958093BB0009
+:1007B00084E88093BC008091BC0087FFFCCF9091BF
+:1007C000B900987F81E0983209F480E0089584E8C8
+:1007D0008093BC008091BC0087FFFCCF8091BB0060
+:1007E000089580910001811115C080E40E94AC033E
+:1007F0008093000181110CC082E10E94D603809396
+:100800000001811105C08FEF0E94D6038093000183
+:100810000E94CE0384B1807F84B985B1807F85B981
+:100820008AB1837F8AB98BB1837F8BB93E98469812
+:1008300008950E945703809300010E94F10380B342
+:100840008C7080BB81B3836F81BBE4E4F1E0A6E3ED
+:10085000B1E011921D9281E0E235F807D1F78AE309
+:1008600093E0892B11F00C943A030895BF92CF9234
+:10087000DF92EF92FF920F931F93CF93DF938091BC
+:100880000001882379F0809135018F5F80933501D5
+:10089000811108C00E94570380930001811102C09A
+:1008A0000E94E20206E311E0C0E0D0E0DD24D39430
+:1008B00082E0C82EEE24E394F12CC73000F580913D
+:1008C0000001811162C080E40E94AC0380930001AA
+:1008D000811112C082E10E94D60380930001811130
+:1008E0000BC0C7010C2E01C0880F0A94EAF780954F
+:1008F0000E94D603809300010E94CE0346C0CA30F6
+:10090000A1F028F4C83059F0C93061F005C0CC30EE
+:1009100089F070F0CD3089F0209A289810C0219A83
+:1009200029980DC0229A2A980AC0239A2B9807C0AA
+:10093000529A01C0539A5B9802C03E9A4698E0EAE8
+:10094000EA95F1F78FB1799960C092E081708D25B9
+:10095000892B7C9B02C090E001C094E0892B7D9B99
+:1009600002C090E001C098E0892B7E9B02C090E01D
+:1009700001C090E1892B9FB19095991F9927991FEC
+:100980009295990F907E892B0FC080910001811163
+:1009900051C080E40E94AC03809300018823B9F128
+:1009A000B12C0E94CE038B2DF8019081981719F07D
+:1009B0008083C09201010E94F10321960F5F1F4FB7
+:1009C000CE30D10509F079CF809101018823B1F0B3
+:1009D000815080930101882339F08FE99FE00197CE
+:1009E000F1F700C000000AC0A4E4B1E0E6E3F1E0E2
+:1009F00081918D9391E0E434F907D1F789ED92E08C
+:100A0000892BD1F00E94D90217C090E09FCF83E1DB
+:100A10000E94D603809300018111C2CF81E40E941D
+:100A2000AC03809300018111BBCF0E94E703B82E75
+:100A3000B094B7CF80E0B8CF81E0DF91CF911F9124
+:100A40000F91FF90EF90DF90CF90BF900895E82F27
+:100A5000F0E0EC5BFE4F8081089508958B3B91059B
+:100A600078F4883A910540F5853A9105D0F48430C0
+:100A7000910508F0B1C08130910509F4ADC06BC09B
+:100A8000803E910508F467C0883E910508F4A4C033
+:100A90009C01205F31092031310508F05CC0906570
+:100AA0000895853A910509F459C0863A910509F4EB
+:100AB00058C083E890E40895883A910509F454C039
+:100AC000893A910509F453C08A3A910509F452C054
+:100AD0008B3A910509F451C08C3A910509F450C044
+:100AE0008D3A910509F44FC0803B910509F44EC041
+:100AF0008E3A910509F44DC08F3A910509F44CC026
+:100B0000813B910509F44BC0823B910509F44AC031
+:100B1000833B910509F449C0843B910509F448C021
+:100B2000853B910509F447C0863B910509F446C011
+:100B3000873B910509F445C0883B910509F444C001
+:100B4000893B910509F443C08A3B910509F042C0F5
+:100B50008AE296E4089580E090E0089581E890E4C8
+:100B6000089582E890E4089582EE94E4089589EE71
+:100B700094E408958AEE94E4089585EB94E408954E
+:100B800086EB94E4089587EB94E408958CEC94E468
+:100B900008958DEC94E4089583E895E408958AE837
+:100BA00095E4089582E995E4089584E995E408952B
+:100BB00081E296E4089583E296E4089584E296E45F
+:100BC000089585E296E4089586E296E4089587E222
+:100BD00096E4089580E094E40895089596E0799F5E
+:100BE000F001112494E5899FE00DF11D1124E60F19
+:100BF000F11DEE0FFF1FEC51FF4F85919491089569
+:100C0000880F991F805A9040FC0185919491089516
+:100C1000880F991F80529F4FFC01859194910895F0
+:100C200026E0729FF001112444E5849FE00DF11D40
+:100C30001124E60FF11DEE0FFF1FEC51FF4F259120
+:100C40003491C9019A9581159F4110F4C901089505
+:100C5000C90190528115904128F4C9019F700E94EA
+:100C600008060895C90190538115904120F4C901E7
+:100C70009927906C0895211580E5380769F40E9442
+:100C8000A5139FEF24E34CE0915020404040E1F752
+:100C900000C000000C94E71A213080E5380731F4D9
+:100CA0008091CC0181608093CC010895C901905559
+:100CB0008115904108F050C0832F99278F70992794
+:100CC00081309105D9F4A9014370552702C0880FDE
+:100CD000991F4A95E2F79C68A90164E0440F551FEB
+:100CE0006A95E1F744275370842B952B73E0220F0C
+:100CF000331F7A95E1F7207633271DC082309105A6
+:100D000029F4922F8827816F906A08958330910586
+:100D1000A9F4A9014370552781E090E002C0880F33
+:100D2000991F4A95E2F79C6843E0220F331F4A95CA
+:100D3000E1F7207E3770822B932B08950497F1F40E
+:100D4000A9014370552781E090E002C0880F991FE8
+:100D50004A95E2F79A68E8CFC9019057811590410A
+:100D600020F4C9019F7090620895C90190588115BF
+:100D7000904120F4C9019F70906A0895203E31058A
+:100D8000E0F4203C310558F52133310509F470C0F9
+:100D900048F42932310509F464C02A32310509F4D6
+:100DA0006EC074C029333105F1F022383105D9F015
+:100DB0002533310509F44EC069C0233E310589F160
+:100DC00038F4203E3105C1F0223E3105E1F05EC02D
+:100DD000263E310569F1273E3105A9F157C0C90109
+:100DE0000E94000608958091DF0180FD02C081FF0E
+:100DF0004DC080EE90E04BC08091DF0180FFF9CFC5
+:100E000089E390E044C08091DF0182FF0EC08091B1
+:100E1000DF0184FF03C080E090E039C083EE90E002
+:100E200036C08091DF0182FFF2CF82EE90E02FC0CA
+:100E30008091DF0183FF0BC08091DF0184FDEBCF48
+:100E400087EE90E024C08091DF0183FFF5CF86EE2E
+:100E500090E01DC08091DF0185FF07C089E290E02E
+:100E600016C08091DF0185FFF9CF85E390E00FC0C8
+:100E70008091DF0186FF07C08AE290E008C0809180
+:100E8000DF0186FFF9CF81E390E001C0C9010E9434
+:100E90002E0508950895809162010895CF93DF9300
+:100EA00000D01F92CDB7DEB72091E501243019F5AF
+:100EB00023E029839B838A832093E9008FEF90911D
+:100EC000E800815095FD06C095ED9A95F1F7000078
+:100ED0008111F5CF8091E80085FF0DC040E050E022
+:100EE00063E070E0CE0101960E94B8098091E800AD
+:100EF0008E778093E8000F900F900F90DF91CF9145
+:100F00000895CF93DF9300D01F92CDB7DEB7209125
+:100F1000E501243021F522E029839B838A8383E045
+:100F20008093E9008FEF9091E800815095FD06C015
+:100F300095ED9A95F1F700008111F5CF8091E800C9
+:100F400085FF0DC040E050E063E070E0CE01019607
+:100F50000E94B8098091E8008E778093E8000F9096
+:100F60000F900F90DF91CF9108952091E5012430EB
+:100F7000F1F422E02093E9002FEF3091E8002150B6
+:100F800035FD06C035ED3A95F1F700002111F5CF9A
+:100F90002091E80025FF0BC040E050E065E070E0E4
+:100FA0000E94B8098091E8008E778093E800089548
+:100FB000CF93DF93EC018091E501843009F046C0C6
+:100FC00090910C019923D9F090910D019923B9F0DA
+:100FD0008093E9008FEF9091E800815095FD06C065
+:100FE00095E19A95F1F700008111F5CF8091E80025
+:100FF00085FF2CC040E050E060E170E017C081E068
+:101000008093E9008FEF9091E800815095FD06C034
+:1010100095ED9A95F1F700008111F5CF8091E800E8
+:1010200085FF14C040E050E068E070E0CE010E940F
+:10103000B8098091E8008E778093E80080E1FE0196
+:10104000A2E5B1E001900D928A95E1F7DF91CF9191
+:1010500008958091E401811109C00E944A0B0E9409
+:10106000A70B8091E20084608093E20008951092C3
+:10107000E401089508950C940D210E947E1A0E94A7
+:1010800013210E94440E0C944A0742E061EC81E077
+:101090000E94C40A42E061EC82E00E94C40A42E07D
+:1010A00061EC83E00E94C40A42E161EC84E00C94AC
+:1010B000C40A8091E701833009F455C030F48130CF
+:1010C00071F0823009F48EC008958A3009F47AC034
+:1010D0008B3009F460C0893009F09CC020C0809139
+:1010E000E601813A09F096C08091E800877F8093FD
+:1010F000E8008091EA019091EB01892B21F060E0FA
+:1011000080E090E003C060E182E591E070E00E9441
+:10111000010A8091E8008B778093E8000895809120
+:10112000E601813209F076C08091EA019091EB01ED
+:10113000009719F0039709F06DC08091E800877F50
+:101140008093E8008091E80082FD05C08091E50170
+:101150008111F8CF5FC08091F1008093620180918E
+:10116000E8008B7753C08091E601813A09F052C0C4
+:101170008091EA019091EB01892B09F04BC080919D
+:10118000E800877F8093E8008091E80080FFFCCF33
+:1011900080910C0136C08091E6018132D9F58091B1
+:1011A000EA019091EB01892BA9F58091E800877FF6
+:1011B0008093E8000E94F90A8091E80180930C0175
+:1011C0000C94A5138091E601813221F58091E8000D
+:1011D000877F8093E8000E94F90A8091E90180935B
+:1011E000630108958091E601813AA1F48091E800BD
+:1011F000877F8093E8008091E80080FFFCCF80919A
+:1012000063018093F1008091E8008E778093E8007D
+:101210000C94F90A089584B7877F84BF88E10FB6DC
+:10122000F89480936000109260000FBE90E080E818
+:101230000FB6F89480936100909361000FBE0E94F6
+:10124000930E0E944A0B0E94A70B8091E2008460DB
+:101250008093E20078940E94220E0E94950E82E014
+:1012600091E00E943F0E0E94FB208091E5018530B5
+:1012700069F40E94411A8091E3018823B1F30E942E
+:10128000691A882391F30E94A209EFCF0E949B0E56
+:10129000ECCF292F332723303105A9F06CF421300E
+:1012A000310509F442C02230310509F043C08DE612
+:1012B00090E020E133E042C021323105C9F0223212
+:1012C000310519F137C099278130910541F08230FD
+:1012D000910541F0892B71F5ECE0F3E005C0E4EFF6
+:1012E000F2E002C0ECEDF2E0849190E09F0126C0B4
+:1012F000643000F5E62FF0E0EE0FFF1FEE5DFE4FCD
+:101300002081318189E090E019C0643098F4E62FA3
+:10131000F0E0DF01AA0FBB1FA65EBE4F2D913C91EE
+:10132000EA5EFE4F808190E009C082E190E02DE707
+:1013300033E004C080E090E020E030E0FA01318347
+:101340002083089580E189BD82E189BD09B400FE52
+:10135000FDCF8091D8008F7D8093D8008091E000F0
+:1013600082608093E0008091E00081FDFCCF0895D1
+:10137000CF92DF92EF92FF920F931F93CF93DF9361
+:101380007C018B01EA010E941A0B811131C0209768
+:1013900031F088819981081B190BE80EF91EC12CC8
+:1013A000D12C0115110519F18091E80085FD14C0BB
+:1013B0008091E8008E778093E800209741F0888143
+:1013C00099818C0D9D1D9983888385E011C00E94B1
+:1013D0001A0B882331F30CC0F70181917F018093B0
+:1013E000F10001501109FFEFCF1ADF0ADACF80E0D8
+:1013F000DF91CF911F910F91FF90EF90DF90CF90F1
+:1014000008952091EC013091ED012617370748F03F
+:101410006115710539F42091E8002E772093E800DA
+:1014200001C0B901FC0120E061157105B9F180919D
+:10143000E501882309F440C0853009F43FC080915C
+:10144000E80083FD3DC08091E80082FF06C08091E6
+:10145000E80082FF26C080E008958091E80080FFC8
+:10146000E3CF2091F3008091F20090E0922B611580
+:10147000710551F08830910538F421912093F100E5
+:10148000615071090196F3CF21E0089709F020E03F
+:101490008091E8008E778093E800C6CF2111C7CFF6
+:1014A000D6CF8091E501882339F0853039F08091DD
+:1014B000E80083FFCCCF04C082E0089583E0089564
+:1014C00081E008952091EC013091ED012617370756
+:1014D00048F06115710539F42091E8002E772093CA
+:1014E000E80001C0B901FC0120E061157105C1F1FE
+:1014F0008091E501882309F441C0853009F440C09A
+:101500008091E80083FD3EC08091E80082FF06C024
+:101510008091E80082FF27C080E008958091E80074
+:1015200080FFE3CF2091F3008091F20090E0922BB6
+:101530006115710559F08830910540F4249120938C
+:10154000F1003196615071090196F2CF21E00897C0
+:1015500009F020E08091E8008E778093E800C5CF05
+:101560002111C6CFD5CF8091E501882339F0853090
+:1015700039F08091E80083FFCBCF04C082E008956A
+:1015800083E0089581E00895982F973058F590935F
+:10159000E900981739F07091EC002091ED0050911E
+:1015A000F00003C0242F762F50E021FF19C03091A6
+:1015B000EB003E7F3093EB003091ED003D7F3093A8
+:1015C000ED003091EB0031603093EB007093EC0054
+:1015D0002093ED005093F0002091EE0027FF07C00C
+:1015E0009F5FD3CF8F708093E90081E0089580E002
+:1015F00008958091E60187FD05C08091E80080FF95
+:101600000EC012C08091E80082FD05C08091E50106
+:101610008111F8CF08958091E8008B7708C0809100
+:10162000E5018111EACF08958091E8008E778093DB
+:10163000E80008958091E4009091E50045E620914E
+:10164000EC0020FF21C02091E80020FD21C0209166
+:10165000E501222389F0253089F02091EB0025FD5A
+:101660000FC02091E4003091E5002817390739F3C5
+:10167000415041F0C901E3CF82E0089583E008952D
+:1016800081E0089584E008952091E80022FFDFCFF3
+:1016900080E008950E94B80B0E94C00BE0EEF0E0DD
+:1016A000808181608083E8EDF0E080818F778083A6
+:1016B00019BCA7EDB0E08C918E7F8C9380818F7EDA
+:1016C00080831092E40108950F931F93CF93DF93CB
+:1016D0000E94B80B0E94C00BC8EDD0E088818F77C4
+:1016E000888388818068888388818F7D888319BCFE
+:1016F0001092E5011092E1011092E3011092E201D3
+:1017000000EE10E0F80180818B7F8083888181600A
+:10171000888342E060E080E00E94C40AE1EEF0E0ED
+:1017200080818E7F8083E2EEF0E080818160808323
+:10173000808188608083F80180818E7F80838881AA
+:1017400080618883DF91CF911F910F910895E8ED1B
+:10175000F0E080818F7E8083E7EDF0E08081816022
+:10176000808384E082BF81E08093E4010C94640B69
+:10177000E8EDF0E080818E7F80831092E200089592
+:101780001092DA001092E10008951F920F920FB6A6
+:101790000F9211242F933F934F935F936F937F93F7
+:1017A0008F939F93AF93BF93EF93FF938091E1004B
+:1017B00082FF0BC08091E20082FF07C08091E100B0
+:1017C0008B7F8093E1000E94210E8091DA0080FFE0
+:1017D0001FC08091D80080FF1BC08091DA008E7FEF
+:1017E0008093DA008091D90080FF0DC080E189BD2F
+:1017F00082E189BD09B400FEFDCF81E08093E5015F
+:101800000E94290805C019BC1092E5010E94370802
+:101810008091E10080FF19C08091E20080FF15C037
+:101820008091E2008E7F8093E2008091E2008061EF
+:101830008093E2008091D80080628093D80019BC28
+:1018400085E08093E5010E943B088091E10084FFE0
+:1018500030C08091E20084FF2CC080E189BD82E12C
+:1018600089BD09B400FEFDCF8091D8008F7D8093A3
+:10187000D8008091E1008F7E8093E1008091E200AA
+:101880008F7E8093E2008091E20081608093E2008D
+:101890008091E101882311F084E007C08091E3008A
+:1018A00087FF02C083E001C081E08093E5010E94D0
+:1018B0003D088091E10083FF29C08091E20083FF11
+:1018C00025C08091E100877F8093E10082E08093D2
+:1018D000E5011092E1018091E1008E7F8093E100AB
+:1018E0008091E2008E7F8093E2008091E20080612F
+:1018F0008093E20042E060E080E00E94C40A8091B0
+:10190000F00088608093F0000E943A08FF91EF9108
+:10191000BF91AF919F918F917F916F915F914F9107
+:101920003F912F910F900FBE0F901F9018951F920F
+:101930000F920FB60F9211242F933F934F935F9303
+:101940006F937F938F939F93AF93BF93CF93EF93B7
+:10195000FF93C091E900CF708091EC001092E900F4
+:101960008091F000877F8093F00078940E94D30CE0
+:101970001092E9008091F00088608093F000C0939D
+:10198000E900FF91EF91CF91BF91AF919F918F911E
+:101990007F916F915F914F913F912F910F900FBE6B
+:1019A0000F901F9018951F93CF93DF93CDB7DEB79D
+:1019B000AA970FB6F894DEBF0FBECDBFE6EEF1E0FA
+:1019C0008091F100819321E0EE3EF207C9F70E9479
+:1019D00059088091E80083FF1CC12091E6013091F5
+:1019E000E701832F90E08A30910508F012C1FC01D5
+:1019F000EA5AFF4F0C949522203881F0223809F0E2
+:101A000008C18091EA018F708093E9008091EB001A
+:101A100085FB882780F91092E90006C08091E201D9
+:101A20009091E301911182609091E800977F9093EB
+:101A3000E8008093F1001092F100C5C0822F8D7FE5
+:101A400009F0E7C0222319F0223061F0E2C0809152
+:101A5000E801813009F0DDC0333009F080E0809387
+:101A6000E30128C08091E801811124C02091EA019E
+:101A70002F7009F4CEC02093E9008091EB0080FF25
+:101A800019C08091EB00333011F4806211C0806185
+:101A90008093EB0081E090E0022E01C0880F0A9451
+:101AA000EAF78093EA001092EA008091EB008860E8
+:101AB0008093EB001092E9008091E800877F86C058
+:101AC0002111A7C01091E8011F778091E300807871
+:101AD000812B8093E3008091E800877F8093E8006A
+:101AE0000E94F90A8091E80080FFFCCF8091E3001A
+:101AF00080688093E300112311F083E001C082E04D
+:101B00008093E50186C02058223008F082C0809181
+:101B1000E8019091E9018C3D23E0920779F583E09B
+:101B20008A838AE289834FB7F894DE01139620E016
+:101B30003EE051E2E32FF0E050935700E49120FFA4
+:101B400003C0E295EF703F5FEF708E2F90E0EA30B8
+:101B500010F0C79601C0C0968D939D932F5F2431DE
+:101B600049F74FBF8091E800877F8093E8006AE2E1
+:101B700070E0CE0101960E94010A14C0AE014F5FD1
+:101B80005F4F6091EA010E944909009709F441C042
+:101B90002091E800277F2093E800BC0189819A8189
+:101BA0000E94620A8091E8008B778093E80031C040
+:101BB000203879F58091E800877F8093E800809154
+:101BC000E1018093F1008091E8008E778093E80036
+:101BD0000E94F90A1EC021111CC09091E8019230A8
+:101BE000C0F48091E800877F8093E8009093E10142
+:101BF0000E94F90A8091E101811104C08091E30003
+:101C000087FF02C084E001C081E08093E5010E946B
+:101C100045088091E80083FF0AC08091E800877F33
+:101C20008093E8008091EB0080628093EB00AA969D
+:101C30000FB6F894DEBF0FBECDBFDF91CF911F91DD
+:101C400008950895CF938091E5018823B1F08091A4
+:101C5000E9008F709091EC0090FF02C090E801C005
+:101C600090E0C92FC82B1092E9008091E80083FD15
+:101C70000E94D30CCF70C093E900CF910895909348
+:101C80006901809368010895E0916801F09169010C
+:101C9000309721F00190F081E02D099480E00895C3
+:101CA000E0916801F0916901309721F00280F381A1
+:101CB000E02D09940895E0916801F0916901309751
+:101CC00021F00480F581E02D0994089520916601AA
+:101CD000309167018217930771F0909367018093A9
+:101CE0006601E0916801F0916901309721F006806A
+:101CF000F781E02D099408952091640130916501E8
+:101D00008217930771F09093650180936401E091CD
+:101D10006801F0916901309721F00084F185E02D90
+:101D20000994089508950C94920E0E94841A0E94BA
+:101D300019040C944A1BCF92DF92EF92FF920F93FB
+:101D40001F93CF93DF93CDB7DEB72B970FB6F894E1
+:101D5000DEBF0FBECDBF0E9436043BE6E32E31E06E
+:101D6000F32E00E010E0C02E802F0E942705F7011F
+:101D7000D1907F01D826B1F40F5F1F4F0E301105AF
+:101D800091F78FEF89838A831B820E948D1A81606D
+:101D9000782F9D838C8349815A816B818D810E942C
+:101DA0003E0F41C09091CC0191FF04C08B870E94EF
+:101DB0002D058B8520E030E04D2D50E0922FBA01AB
+:101DC000022E02C0759567950A94E2F760FF25C060
+:101DD0002E83CF82EE24E394F12C02C0EE0CFF1C84
+:101DE0009A95E2F790E08E219F2121E0892B09F45A
+:101DF00020E028870E948D1A8160782F9A87898732
+:101E00004E815F8168858A850E943E0FF801E55901
+:101E1000FE4F80818E25808306C02F5F3F4F263086
+:101E2000310561F6A9CF0E942E1E10916A010E9411
+:101E3000440E1817A1F00E94440E80936A012B965D
+:101E40000FB6F894DEBF0FBECDBFDF91CF911F91CB
+:101E50000F91FF90EF90DF90CF900C944A072B9654
+:101E60000FB6F894DEBF0FBECDBFDF91CF911F91AB
+:101E70000F91FF90EF90DF90CF900895CF93DF9375
+:101E8000CDB7DEB72B970FB6F894DEBF0FBECDBF30
+:101E90004F83588769877A878B87DE01119686E0A2
+:101EA000FD0111928A95E9F785E0FE0137960190D0
+:101EB0000D928A95E1F749815A816B817C818D81F0
+:101EC0009E810E9471162B960FB6F894DEBF0FBE4E
+:101ED000CDBFDF91CF910895CF93C82F882309F408
+:101EE000C1C0823859F40E94440E81FDBBC089E311
+:101EF0000E940E190E94C81989E30CC0833879F436
+:101F00000E94440E80FDAEC083E50E940E190E941F
+:101F1000C81983E50E944E19CF910C94C8198438D2
+:101F200059F40E94440E82FD9DC087E40E940E1960
+:101F30000E94C81987E4EECF8CEF8C0F813A48F4E9
+:101F40008C2F0E94632081118DC08C2F0E940E194E
+:101F5000E3CF80E28C0F883048F4C77081E001C085
+:101F6000880FCA95EAF70E948F19D6CF8BE58C0FA0
+:101F7000833078F4C53A29F0C63A31F482E890E02B
+:101F800005C081E890E002C083E890E0CF910C9416
+:101F9000660E88E58C0F833108F064C0C83A39F1C9
+:101FA000C93A41F1CA3A49F1CB3A51F1CC3A59F127
+:101FB000CD3A61F1C03B69F1CE3A71F1CF3A79F196
+:101FC000C13B81F1C23B89F1C33B91F1C43B99F123
+:101FD000C53BA1F1C63BA9F1C73BB1F1C83BB9F183
+:101FE000C93BC1F1CA3BC9F58AE292E038C082EE32
+:101FF00090E035C089EE90E032C08AEE90E02FC0CC
+:1020000085EB90E02CC086EB90E029C087EB90E058
+:1020100026C08CEC90E023C08DEC90E020C083E8DB
+:1020200091E01DC08AE891E01AC082E991E017C0F2
+:1020300084E991E014C081E292E011C083E292E071
+:102040000EC084E292E00BC085E292E008C086E216
+:1020500092E005C087E292E002C080E090E0CF917C
+:102060000C947C0ECF910895882309F44BC08238DC
+:1020700059F40E94440E81FF45C089E30E940E1965
+:102080000E94C81989E30CC0833871F40E94440E81
+:1020900080FF38C083E50E940E190E94C81983E5AD
+:1020A0000E944E190C94C819843859F40E94440EA9
+:1020B00082FF28C087E40E940E190E94C81987E495
+:1020C000EFCF9CEF980F913A58F390E2980F983029
+:1020D00050F4877091E001C0990F8A95EAF7892F33
+:1020E0000E949519DFCF9BE5980F933020F480E094
+:1020F00090E00C94660E885A833120F480E090E0E2
+:102100000C947C0E0895882321F00E948F190C9462
+:10211000C8190895882321F00E9495190C94C819B4
+:102120000895CF92DF92EF92FF920F931F93CF9378
+:10213000DF93CDB7DEB728970FB6F894DEBF0FBE9A
+:10214000CDBF8C0185E0F801DE01119601900D9262
+:102150008A95E1F7F80140813181F280258122954D
+:102160002F7083819481892B31F03F3F31F481E0DE
+:102170004F3F19F403C081E001C080E080FDC4C27C
+:1021800049833A8389819A812F830E94CC189E8348
+:1021900088870E94CB180E949E174E81E42FE295FB
+:1021A000EF70F0E0E05AFF4F2F8168850C94952284
+:1021B000842F807F142F1F70882311F01295107FB9
+:1021C000FF2059F0112309F454C2812F68870E941F
+:1021D0009F190E94C81968854CC2862F0E9434102E
+:1021E000112309F491C2812F0E94A51928960FB6D8
+:1021F000F894DEBF0FBECDBFDF91CF911F910F913D
+:10220000FF90EF90DF90CF900C94C819342F307F5F
+:10221000842F8F70303211F08295807F662319F001
+:10222000613019F12BC0FF20B1F0222309F493C1D2
+:10223000213009F090C128960FB6F894DEBF0FBE8A
+:10224000CDBFDF91CF911F910F91FF90EF90DF9065
+:10225000CF900C94AF19222319F0213009F454C205
+:102260008E830E94B2198E8189C1FF2021F0223015
+:1022700008F04AC270C1211147C280C1FF2021F07D
+:10228000222309F468C1F5C1222309F477C105C2EC
+:10229000242F26952695237030E02115310521F055
+:1022A00021303105C9F030C2FF2021F0862F942F54
+:1022B000937002C080E090E028960FB6F894DEBFDD
+:1022C0000FBECDBFDF91CF911F910F91FF90EF9087
+:1022D000DF90CF900C94660EFF2021F0862F942F74
+:1022E000937002C080E090E028960FB6F894DEBFAD
+:1022F0000FBECDBFDF91CF911F910F91FF90EF9057
+:10230000DF90CF900C947C0E862FFF2019F00E9456
+:10231000361D02C00E949E1D28960FB6F894DEBF9F
+:102320000FBECDBFDF91CF911F910F91FF90EF9026
+:10233000DF90CF900C94231E842F837009F076C019
+:10234000F110E2C1262F229526952770220F220F29
+:10235000862F8F70C82ED12CE12CF12C022E04C0B8
+:10236000CC0CDD1CEE1CFF1C0A94D2F764FF10C0DD
+:102370006FE070E080E090E004C0660F771F881F78
+:10238000991F2A95D2F7609570958095909503C016
+:1023900060E070E0CB01242F269526952370422F14
+:1023A00050E042305105D1F04330510559F16C29CC
+:1023B0007D298E299F294130510541F128960FB67C
+:1023C000F894DEBF0FBECDBFDF91CF911F910F916B
+:1023D000FF90EF90DF90CF900C94C3176C297D296C
+:1023E0008E299F2928960FB6F894DEBF0FBECDBF69
+:1023F000DF91CF911F910F91FF90EF90DF90CF90E1
+:102400000C94DD170E94C317C701B60128960FB6BA
+:10241000F894DEBF0FBECDBFDF91CF911F910F911A
+:10242000FF90EF90DF90CF900C94A917FF2019F048
+:10243000842F817001C08695882309F465C1262FF9
+:10244000229526952770220F220F862F8F70C82E77
+:10245000D12CE12CF12C022E04C0CC0CDD1CEE1C86
+:10246000FF1C0A94D2F764FF10C06FE070E080E0B8
+:1024700090E004C0660F771F881F991F2A95D2F736
+:10248000609570958095909503C060E070E0CB01F9
+:10249000242F269526952370422F50E04230510577
+:1024A000D1F04330510559F16C297D298E299F299E
+:1024B0004130510541F128960FB6F894DEBF0FBEAA
+:1024C000CDBFDF91CF911F910F91FF90EF90DF90E3
+:1024D000CF900C9497186C297D298E299F292896D6
+:1024E0000FB6F894DEBF0FBECDBFDF91CF911F9125
+:1024F0000F91FF90EF90DF90CF900C94B1180E9455
+:102500009718C701B60128960FB6F894DEBF0FBE24
+:10251000CDBFDF91CF911F910F91FF90EF90DF9092
+:10252000CF900C947D18603FC9F118F4603E50F4D0
+:102530009BC0623F09F460C008F44AC0633F09F4DD
+:102540006FC092C0162F1F70842F8F71FF2099F0DB
+:102550000E941618812F28960FB6F894DEBF0FBE82
+:10256000CDBFDF91CF911F910F91FF90EF90DF9042
+:10257000CF900C9483100E943718812F28960FB6A5
+:10258000F894DEBF0FBECDBFDF91CF911F910F91A9
+:10259000FF90EF90DF90CF900C948A10FF20A1F075
+:1025A0002111B2C0842F8F7128960FB6F894DEBF28
+:1025B0000FBECDBFDF91CF911F910F91FF90EF9094
+:1025C000DF90CF900C945C18223008F09DC0EACFC9
+:1025D000FF20A1F0842F8F7128960FB6F894DEBFEC
+:1025E0000FBECDBFDF91CF911F910F91FF90EF9064
+:1025F000DF90CF900C941618FF2061F3842F8F7119
+:1026000028960FB6F894DEBF0FBECDBFDF91CF91F5
+:102610001F910F91FF90EF90DF90CF900C9437189F
+:10262000FF2091F0842F8F7128960FB6F894DEBFAB
+:102630000FBECDBFDF91CF911F910F91FF90EF9013
+:10264000DF90CF900C94011828960FB6F894DEBF57
+:102650000FBECDBFDF91CF911F910F91FF90EF90F3
+:10266000DF90CF900C94F717FF20A1F0222309F4FC
+:10267000B1CF862F28960FB6F894DEBF0FBECDBF20
+:10268000DF91CF911F910F91FF90EF90DF90CF904E
+:102690000C946C0F222309F4B1CF862F28960FB625
+:1026A000F894DEBF0FBECDBFDF91CF911F910F9188
+:1026B000FF90EF90DF90CF900C9434104F70C801D2
+:1026C0000E94AB0228960FB6F894DEBF0FBECDBFB6
+:1026D000DF91CF911F910F91FF90EF90DF90CF90FE
+:1026E0000C941E174F70C80128960FB6F894DEBFE1
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053
+:10270000DF90CF900C94ED0528960FB6F894DEBFBD
+:102710000FBECDBFDF91CF911F910F91FF90EF9032
+:10272000DF90CF9008950E94AC190E9481190E94F9
+:10273000C8190E94CF1E0E94231E80E090E00E94D4
+:10274000660E80E090E00C947C0E0E949C190C9424
+:1027500093130E94CC18292F22952F7030E02C3033
+:1027600031054CF42A3031056CF422503109223005
+:10277000310590F407C02C30310551F02F30310570
+:1027800039F00AC0803E10F0803F31F481E00895B6
+:1027900093FB882780F9089580E00895CF93DF9315
+:1027A00000D000D01F92CDB7DEB70F900F900F90E2
+:1027B0000F900F90DF91CF910895CF93DF9300D0CA
+:1027C00000D000D0CDB7DEB726960FB6F894DEBFA6
+:1027D0000FBECDBFDF91CF9108951F93CF93DF93AD
+:1027E000C091790116E080917A01C81799F0D0E084
+:1027F0001C9FF0011D9FF00D1124E558FE4F4081F4
+:10280000518162817381848195810E94DD132196BB
+:10281000C770E9CFDF91CF911F9108954091AB012F
+:102820005091AC016091AD017091AE018091AF010A
+:102830009091B0010C94DD13CF938091B0018295FB
+:102840008F7009F05FC08091AD01882309F45AC0F0
+:1028500020917901A0917A016091AB017091AC0156
+:102860008091AE019091AF0131E06F3F09F030E00F
+:10287000B32FC6E02A1709F445C0009721F07F3F27
+:1028800021F44B2F03C041E001C040E030E040FDA7
+:1028900035C0C29FF001C39FF00D1124E558FE4FD3
+:1028A000418174132BC04081641328C042814111BF
+:1028B00025C0438154814817590710F441505109EC
+:1028C000481B590B483C5105C8F48091B0018F70EA
+:1028D00080618093B00186E0829FF001839FF00DBC
+:1028E0001124E058FE4F80818F70806180838BEAD5
+:1028F00091E00E949110CF910C94ED132F5F3F4F08
+:102900002770B8CFCF910895CF92DF92EF92FF92C8
+:102910000F931F93CF93DF93CDB7DEB762970FB6B8
+:10292000F894DEBF0FBECDBF8C0185E0F801DE015B
+:102930001D9601900D928A95E1F7D8014C91119660
+:102940005C91119712966C9112971396ED90FC90F2
+:1029500014977091AB01E091AC012091AE013091E0
+:10296000AF012115310531F0EF3F31F481E07F3FB8
+:1029700019F403C081E001C080E0B82FB170CB2E04
+:1029800080FD6CC1D090AD01DD2009F4F5C0F0915F
+:10299000B001E216F30638F0C701821B930B883CA6
+:1029A000910548F09BC0209530952E0D3F1D283C89
+:1029B000310508F093C08F2F807F09F052C0E513D6
+:1029C00014C0741312C0D62E61110FC0FF70F061D5
+:1029D000F093B0010E940E148BEA91E00E949110D6
+:1029E0008091B001F80185836CC1EF2831F05F3F21
+:1029F00031F481E04F3F19F403C081E001C080E071
+:102A000080FD03C081E0862701C080E0F82FF170CF
+:102A1000FF2E80FF1CC08091790120917A0136E061
+:102A2000821709F428C190E0389FF001399FF00D1A
+:102A30001124E558FE4F7181571306C0708147136A
+:102A400003C07281671303C001968770E9CFD62E49
+:102A5000662309F436C18091B00181608093B00192
+:102A600053C0E51308C0741306C0611104C0D80137
+:102A70001596FC93AEC04D875E878D859E856A8BCB
+:102A80000E94A9136A89882329F1D62E662311F1A1
+:102A90002091B001822F82958F7090E002970CF404
+:102AA00060C08091AB019091AC0198878F831986AB
+:102AB000FB86EA862C87CE01079651C0E51731F1D7
+:102AC0004D875E878D859E856A8B0E94A9136A89D2
+:102AD00081112EC0C8010E949110A4C08F2F807F49
+:102AE00069F77E2DF98AE88A89890E94CE138BEADC
+:102AF00091E00E949110EBEAF1E086E0DF011D9287
+:102B00008A95E9F70E940E14D12CDBC07413D8CF3C
+:102B10006111D6CFD8011596FC93C8010E9491107F
+:102B2000EBEAF1E086E0DF011D928A95E9F7C9C082
+:102B3000D62E662379F22091B001822F82958F7074
+:102B400090E0029774F08091AB019091AC019A8370
+:102B500089831B82FD82EC822E83CE0101960E9426
+:102B6000911086E0F801ABEAB1E001900D928A95F0
+:102B7000E1F70E941C146FC0E216F30628F0C701AB
+:102B8000821B930B9C0104C0209530952E0D3F1D98
+:102B9000283C310508F052C0D62E662309F49ACF9E
+:102BA000E5132CC074132AC08091B00180FD1DC0B4
+:102BB000982F92959F70C9F0D80115968C93159710
+:102BC0009F3039F09F5F9295907F8F70892B15967B
+:102BD0008C93C8010E94911086E0F801ABEAB1E045
+:102BE00001900D928A95E1F736C086E0F801ABEAD4
+:102BF000B1E001900D928A95E1F763C04D875E8741
+:102C00008D859E850E94A913882379F086E0F801BE
+:102C1000ABEAB1E001900D928A95E1F70E941C1495
+:102C20000E940E14DD24D3944CC08091B0018160C9
+:102C30008093B001C8010E94911043C07E2DF98A93
+:102C4000E88A89890E94CE13EBEAF1E086E0DF0191
+:102C50001D928A95E9F70E940E1433C0662309F489
+:102C600039CF4D875E878D859E850E94A913882365
+:102C700009F430CFCBCF4D875E878D859E850E942E
+:102C8000CC18292F22952F7030E0223031052CF4FA
+:102C90009F7041F0811106C00CC0243031052CF426
+:102CA0009F7049F4805E883020F0C8010E94911026
+:102CB000CF2CDC2C06C0D80115969C91907F91F703
+:102CC000F8CF8D2D62960FB6F894DEBF0FBECDBF44
+:102CD000DF91CF911F910F91FF90EF90DF90CF90F8
+:102CE00008951F93CF93DF93CDB7DEB72C970FB620
+:102CF000F894DEBF0FBECDBF4F83588769877A87B0
+:102D00008B879C87CE0107960E9484148823C1F08C
+:102D10002F8138858A859B85892B31F03F3F11F0C3
+:102D200080E003C02F3FE1F781E0811147C04F8170
+:102D3000588569857A858B859C850E94DD133EC008
+:102D400086E0FE013796DE01119601900D928A957C
+:102D5000E1F7FF81E8854A855B854115510531F032
+:102D6000EF3F31F481E0FF3F19F403C081E001C07F
+:102D700080E080FD23C020917A0130E0C9010196F6
+:102D8000877099276091790170E086179707F1F1B4
+:102D9000F983EA835D834C8396E0929FD001939FF1
+:102DA000B00D1124A558BE4FFE01319601900D9231
+:102DB0009A95E1F780937A010E94ED1316E08091D5
+:102DC000790190917A01891779F1189FC001112436
+:102DD00085589E4F0E948414882331F1E091790137
+:102DE0001E9FF0011124E558FE4F40815181628100
+:102DF0007381848195810E94DD138091790190E037
+:102E000001968770992780937901D9CF0E94A513E5
+:102E100010927A0110927901EBEAF1E086E0DF018D
+:102E20001D928A95E9F7CACF2C960FB6F894DEBFAB
+:102E30000FBECDBFDF91CF911F910895EF92FF920A
+:102E40000F931F93CF93DF93FC01009709F46FC09A
+:102E5000F12CEE24E394EF0121968491843740F421
+:102E6000843008F055C0813081F0823021F15FC09C
+:102E7000853709F447C0C0F19CE7980F903708F0F8
+:102E800056C08F770E94341045C08F010E5F1F4FD0
+:102E9000FE01849190E2980F983050F48770FE2DD7
+:102EA00001C0FF0F8A95EAF78F2F0E949F1915C066
+:102EB0000E946C0F14C08F010E5F1F4FFE018491A2
+:102EC00090E2980F983068F48770FE2D01C0FF0FD4
+:102ED0008A95EAF78F2F0E94A5190E94C819E80168
+:102EE00019C00E943410FBCFCF010296FE01C4919D
+:102EF000CC2361F0EFE9FFE03197F1F700C000006B
+:102F0000C150F6CFCF010296FE01F490EC0102C051
+:102F10000E946C0F8F2D882341F0EFE9FFE031977D
+:102F2000F1F700C000008150F6CFFE0194CFDF9191
+:102F3000CF911F910F91FF90EF90089508956093A6
+:102F4000B5017093B6018093B7019093B8010C94CA
+:102F500093130F931F930091B5011091B601209127
+:102F6000B7013091B801062B172B282B392B009372
+:102F7000B5011093B6012093B7013093B8011F91AA
+:102F80000F910C9493130F931F930091B50110911F
+:102F9000B6012091B7013091B801062317232823E9
+:102FA00039230093B5011093B6012093B7013093F4
+:102FB000B8011F910F910C9493130F931F930091DD
+:102FC000B5011091B6012091B7013091B8010627E3
+:102FD0001727282739270093B5011093B6012093AE
+:102FE000B7013093B8011F910F910C949313109275
+:102FF000B1011092B2011092B3011092B4010C947D
+:10300000931341E050E060E070E004C0440F551FAE
+:10301000661F771F8A95D2F74093B1015093B20192
+:103020006093B3017093B4010C94931341E050E0AA
+:1030300060E070E004C0440F551F661F771F8A953B
+:10304000D2F78091B1019091B201A091B301B091FA
+:10305000B401842B952BA62BB72B8093B1019093B1
+:10306000B201A093B301B093B4010C94931341E067
+:1030700050E060E070E004C0440F551F661F771FEA
+:103080008A95D2F740955095609570958091B101E1
+:103090009091B201A091B301B091B4018423952322
+:1030A000A623B7238093B1019093B201A093B301FB
+:1030B000B093B4010C94931341E050E060E070E0F1
+:1030C00004C0440F551F661F771F8A95D2F7809161
+:1030D000B1019091B201A091B301B091B4018427E4
+:1030E0009527A627B7278093B1019093B201A093AB
+:1030F000B301B093B4010C9493130F931F930091F9
+:10310000B1011091B2012091B3013091B401062BAD
+:10311000172B282B392B0093B1011093B201209368
+:10312000B3013093B4011F910F910C9493130F933B
+:103130001F930091B1011091B2012091B301309120
+:10314000B40106231723282339230093B1011093D8
+:10315000B2012093B3013093B4011F910F910C94ED
+:1031600093130F931F930091B1011091B20120911D
+:10317000B3013091B4010627172728273927009378
+:10318000B1011093B2012093B3013093B4011F91A8
+:103190000F910C9493130895CF92DF92EF92FF92C8
+:1031A0000F931F93CF93DF93EC01C090B501D090A4
+:1031B000B601E090B701F090B8018091B101909113
+:1031C000B201A091B301B091B401C82AD92AEA2A68
+:1031D000FB2A0FE110E0B701A601002E04C076958E
+:1031E0006795579547950A94D2F740FF07C0BE01EF
+:1031F000802F0E9410068130910539F40150110989
+:1032000050F7BE0180E00E941006DF91CF911F9120
+:103210000F91FF90EF90DF90CF90089590910C0167
+:103220009923D9F090910D019923B9F0982F969593
+:10323000969596959F3088F5E0910E01F0910F01DB
+:10324000E90FF11D877021E030E001C0220F8A955F
+:10325000EAF78181822B8183089540910E0150917C
+:103260000F0120E030E09FEFFA01E20FF31F6281CF
+:10327000681799F09F3F19F4611101C0922F2F5FD9
+:103280003F4F2E30310581F79F3F39F0FA01E90FAA
+:10329000F11D97FDFA9582830895089590910C0190
+:1032A0009923E1F090910D019923C1F0982F969503
+:1032B000969596959F3020F5E0910E01F0910F01C3
+:1032C000E90FF11D877021E030E001C0220F8A95DF
+:1032D000EAF72095818128232183089540910E01EA
+:1032E00050910F0120E030E0FA01E20FF31F9281CC
+:1032F000981301C012822F5F3F4F2E303105A1F786
+:10330000089581E090E0E0910E01F0910F01E80F47
+:10331000F91F1082019680319105A9F708959091C7
+:10332000CB01982B9093CB01089580959091CB0180
+:1033300098239093CB0108951092CB01089590911A
+:10334000CA01982B9093CA01089580959091CA0163
+:1033500098239093CA0108951092CA01089580930A
+:10336000B90108951092B901089540910E0150914C
+:103370000F0120E030E080E0FA01E20FF31F9181BD
+:1033800091118F5F2F5F3F4F2F303105A9F70895BF
+:10339000E0910E01F0910F018091CB018083E091CB
+:1033A0000E01F0910F0180819091CA01892B8083D9
+:1033B0009091B901992361F0E0910E01F0910F0114
+:1033C0008081892B80830E94B51981111092B901E7
+:1033D00080910E0190910F010C94500ECF92DF92CC
+:1033E000EF92FF920F931F936C01EE24FF24C11400
+:1033F000D104E104F10421F46B017C0180E001C0FF
+:1034000080E133272F2D1E2D0D2D011511052105CE
+:10341000310519F0885F6801790197018601A4E000
+:103420003695279517950795AA95D1F7011511059A
+:103430002105310519F08C5F68017901970186013A
+:10344000F2E03695279517950795FA95D1F701156E
+:1034500011052105310519F08E5F68017901B70169
+:10346000A6017695679557954795452B462B472B93
+:1034700009F08F5F1F910F91FF90EF90DF90CF9039
+:1034800008958091E501843009F11092CD0120E486
+:1034900088E190E00FB6F894A895809360000FBE85
+:1034A0002093600083B7817F846083BF83B781608E
+:1034B00083BF7894889583B78E7F83BF88E10FB6EA
+:1034C000F89480936000109260000FBE08950895F4
+:1034D0000895CF930E94671A0E9436040E94681ACA
+:1034E000C0E08C2F0E942705811105C0CF5FCE3030
+:1034F000C1F780E001C081E0CF9108950E94A5133B
+:103500000E94440E0C944A0782E084BD93E095BD6E
+:103510009AEF97BD80936E0008952FB7F89480912D
+:10352000CE019091CF01A091D001B091D1012FBFD8
+:103530000895CF92DF92EF92FF920F931F932FB7D0
+:10354000F8944091CE015091CF016091D0017091DB
+:10355000D1012FBF6A017B01EE24FF248C0120E002
+:1035600030E0C016D106E206F30610F441505109CE
+:10357000481B590BCA011F910F91FF90EF90DF90EC
+:10358000CF9008951F920F920FB60F9211248F9330
+:103590009F93AF93BF938091CE019091CF01A09163
+:1035A000D001B091D1010196A11DB11D8093CE0132
+:1035B0009093CF01A093D001B093D101BF91AF916F
+:1035C0009F918F910F900FBE0F901F9018950E94A2
+:1035D0004A0BF8942FEF87EA91E621508040904003
+:1035E000E1F700C0000087E090EBDC018093EE0182
+:1035F0009093EF01A093F001B093F1012CE088E1EA
+:1036000090E00FB6F894A895809360000FBE2093C9
+:103610006000FFCFEF92FF920F931F93CF93DF9342
+:10362000E82EF12C8F2D0E942705C0E0D0E0082F56
+:1036300010E098010C2E02C0359527950A94E2F708
+:1036400020FD05C02196C630D10599F709C06C2F21
+:103650007F2D80E00E94EE05E812F4CF81E005C0E6
+:10366000F3948EE0F812DECF80E0DF91CF911F91CE
+:103670000F91FF90EF900895CF93C82F8CE20E9496
+:103680000A1B882321F08C2FCF910C940A1B80E019
+:10369000CF910895CF930E948F1C811102C00E9488
+:1036A000751CC5E6C15049F00E9436048FE39CE9C1
+:1036B0000197F1F700C00000F5CF89E20E943C1BA2
+:1036C000811111C18AE20E943C1B81110E94751C6C
+:1036D00085E00E943C1B81110E94E71A0E949A1CFF
+:1036E0008093CC0187E00E943C1B882399F18BE1F9
+:1036F0000E943C1B882351F09091CC0191FB8827BC
+:1037000080F921E0822780FB91F922C08EE00E949F
+:103710003C1B882351F09091CC0192FB882780F9C3
+:1037200021E0822780FB92F913C080E10E943C1BBC
+:103730009091CC01882341F093FB882780F921E008
+:10374000822780FB93F904C0892F809580FB90F934
+:103750009093CC018091CC010E949E1C0E94AC1CD5
+:103760008093DF0180EE0E943C1B882341F0809112
+:10377000DF01982F909590FB80F98093DF0189E31A
+:103780000E943C1B882359F09091DF0191FB882710
+:1037900080F921E0822780FB91F99093DF0182EE8E
+:1037A0000E943C1B882359F09091DF0192FB8827EF
+:1037B00080F921E0822780FB92F99093DF0186EE69
+:1037C0000E943C1B882359F09091DF0193FB8827CE
+:1037D00080F921E0822780FB93F99093DF0183EE4B
+:1037E0000E943C1B882359F09091DF0194FB8827AD
+:1037F00080F921E0822780FB94F99093DF0185E333
+:103800000E943C1B882359F09091DF0195FB88278B
+:1038100080F921E0822780FB95F99093DF0181E315
+:103820000E943C1B882359F09091DF0196FB88276A
+:1038300080F921E0822780FB96F99093DF0181E1F6
+:103840000E943C1B882359F09091DF0197FB882749
+:1038500080F921E0822780FB97F99093DF01809126
+:10386000DF010E94B01C8091DF0187FB882780F96F
+:1038700080930D0187E20E943C1BC82F8EE10E94BD
+:103880003C1B8111C2608FE10E943C1B8111C4600E
+:1038900080E20E943C1B8111C86081E20E943C1BB7
+:1038A0008111C06182E20E943C1B8111C06283E2EF
+:1038B0000E943C1B8111C06484E20E943C1B88234F
+:1038C00011F0C06802C0CC2329F08C2F0E94A71CE5
+:1038D0006C2F03C00E94A31C682F70E080E090E072
+:1038E000CF910C949F17CF9108956DEE7EEF80E0FD
+:1038F00090E00E94CB2260E082E090E00E94BD2236
+:1039000060E083E090E00E94BD2260E084E090E00F
+:103910000E94BD2260E085E090E00C94BD2280E032
+:1039200090E00E94B72221E08D3E9E4F09F020E0FA
+:10393000822F089582E090E00C94AF22682F82E0FD
+:1039400090E00C94BD2283E090E00C94AF22682FAD
+:1039500083E090E00C94BD2284E090E00C94AF22D0
+:10396000682F84E090E00C94BD228091D40180FF08
+:103970000BC06091130185E0689FB001112475951B
+:103980006795759567952AC081FF09C060911301FD
+:1039900085E0689FB0011124759567951FC082FF6F
+:1039A00007C06091130185E0689FB001112416C023
+:1039B0004091D5014423C9F060911201461788F760
+:1039C0002091130185E0289F90011124429FC0019E
+:1039D000439F900D112470E00E9481226038710590
+:1039E00040F46115710539F002C065E070E0862F82
+:1039F00008958FE7089581E008958091D40180FFB4
+:103A000008C06091110170E075956795759567958F
+:103A100021C081FF06C06091110170E07595679526
+:103A200019C082FF04C06091110170E010C0809144
+:103A3000D5018823C1F0609110018617A0F79091FD
+:103A40001101989FC001112470E00E94812260380A
+:103A5000710528F46115710521F0862F08958FE70F
+:103A6000089581E0089561E070E0F4CF803F21F493
+:103A70000E94B51C819504C0813F29F40E94B51CA9
+:103A80008093D8010895823F21F40E94B51C81954E
+:103A900004C0833F29F40E94B51C8093D701089588
+:103AA000893F19F40E94FD1C05C08A3F31F40E9431
+:103AB000FD1C81958093D90108958B3F21F40E94CC
+:103AC000FD1C819504C08C3F29F40E94FD1C80934D
+:103AD000DA010895843F21F48091D601816017C0F6
+:103AE000853F21F48091D601826011C0863F21F488
+:103AF0008091D60184600BC0873F21F48091D6016C
+:103B0000886005C0883F31F48091D6018061809340
+:103B1000D60108958D3F21F48091D40181600BC0BE
+:103B20008E3F21F48091D401826005C08F3F29F43B
+:103B30008091D40184608093D4010895803F39F44A
+:103B40008091D80187FF6CC01092D80169C0813F75
+:103B500029F48091D8011816BCF362C09091D70166
+:103B6000823F29F497FF5CC01092D70159C0833F70
+:103B700019F41916CCF354C0893F41F48091D9014E
+:103B800018160CF04DC01092D9014AC08A3F29F492
+:103B90008091D90187FF44C0F6CF8B3F39F48091E3
+:103BA000DA0187FF3DC01092DA013AC08C3F29F458
+:103BB0008091DA011816BCF333C0843F21F4809160
+:103BC000D6018E7F17C0853F21F48091D6018D7F6D
+:103BD00011C0863F21F48091D6018B7F0BC0873FB7
+:103BE00021F48091D601877F05C0883F31F4809110
+:103BF000D6018F7E8093D60113C08D3F21F4809132
+:103C0000D4018E7F0BC08E3F21F48091D4018D7F33
+:103C100005C08F3F29F48091D4018B7F8093D4011C
+:103C20008091D70181110EC08091D80181110AC005
+:103C30008091D901811106C08091DA01811102C001
+:103C40001092D501089586ED91E00E945B0E0E94CE
+:103C50008D1A9093D3018093D20108951F93CF932F
+:103C6000DF938091D2019091D3010E94991A4091E3
+:103C7000D501442321F02091140130E006C02091A9
+:103C800015015AE0259F900111248217930708F42B
+:103C900082C08091D7011091D801D091D901C091F3
+:103CA000DA01811107C0111105C0D11103C0CC2365
+:103CB00009F471C04F3F19F04F5F4093D5011816BA
+:103CC00024F40E94B51C8093D7018091D70187FF0F
+:103CD00005C00E94B51C81958093D701111624F46C
+:103CE0000E94B51C8093D8018091D80187FF05C040
+:103CF0000E94B51C81958093D8016091D7016623FD
+:103D000039F11091D801112319F1772767FD7095CA
+:103D1000872F972F0E94922123E333E343E35FE34E
+:103D20000E94F6210E945F216093D701612F7727BF
+:103D300067FD7095872F972F0E94922123E333E32D
+:103D400043E35FE30E94F6210E945F216093D80164
+:103D50001D1624F40E94FD1C8093D9018091D90185
+:103D600087FF05C00E94FD1C81958093D9011C1618
+:103D700024F40E94FD1C8093DA018091DA0187FF10
+:103D800005C00E94FD1C81958093DA01DF91CF91DF
+:103D90001F910C94231EDF91CF911F910895E6EDA2
+:103DA000F1E085E0DF011D928A95E9F71092D501D7
+:103DB0001092D4010895833081F128F4813059F0B4
+:103DC0008230D1F00895853009F449C0B8F18630C9
+:103DD00009F456C0089520911501862F90E0820FB6
+:103DE000911D8F3F910520F4620F60931501089596
+:103DF0008FEF80931501089520911401862F90E094
+:103E0000820F911D8F3F910520F4620F6093140182
+:103E100008958FEF80931401089520911301862F48
+:103E200090E0820F911D8F3F910520F4620F609307
+:103E3000130108958FEF80931301089520911201CB
+:103E4000862F90E0820F911D8F3F910520F4620F25
+:103E50006093120108958FEF8093120108952091CD
+:103E60001101862F90E0820F911D8F3F910520F464
+:103E7000620F6093110108958FEF809311010895EF
+:103E800020911001862F90E0820F911D8F3F9105A8
+:103E900020F4620F6093100108958FEF809310015A
+:103EA0000895833011F128F4813049F0823091F087
+:103EB0000895853081F120F18630C1F10895809117
+:103EC0001501681720F4861B809315010895109240
+:103ED0001501089580911401681720F4861B8093C2
+:103EE0001401089510921401089580911301681728
+:103EF00020F4861B809313010895109213010895F6
+:103F000080911201681720F4861B80931201089596
+:103F100010921201089580911101681720F4861BF8
+:103F2000809311010895109211010895809110015C
+:103F3000681720F4861B80931001089510921001D9
+:103F400008958D3109F442C020F58E3009F479C00E
+:103F500070F4873009F45EC020F4863009F442C062
+:103F600033C08830D1F18B3009F4A7C02DC0863121
+:103F700009F4A3C038F4803109F46DC0813109F42B
+:103F80007BC022C0893109F498C08B3109F44FC03D
+:103F90001BC0853309F479C048F4873209F475C031
+:103FA00008F478C0893209F470C00EC0833438F444
+:103FB0008A3308F071C0883309F47FC005C08334A8
+:103FC00009F463C08834C1F080E008950E9419218B
+:103FD0000E94440E0E944A0770C00E949A1C0E94D0
+:103FE000AC1C6BC08091CC01817F8E7F8093CC0113
+:103FF00081E08093DC0108950E94A5132FEF83EDEB
+:1040000090E3215080409040E1F700C000000E9402
+:10401000E71A53C09091CC01892F817090FF03C0A3
+:10402000917F9E7F26C091609093CC0146C0909175
+:10403000CC0191FB882780F921E0822780FB91F950
+:1040400013C09091CC0192FB882780F921E0822750
+:1040500080FB92F909C09091CC0193FB882780F9ED
+:1040600021E0822780FB93F99093CC01882329F1EA
+:1040700091609093CC0108950E94A51380910D0149
+:1040800091E0892780930D0118C061E070E080E025
+:1040900090E00FC023EE01C027EC280F61E070E034
+:1040A00080E090E004C0660F771F881F991F2A9553
+:1040B000D2F70E949F170E94A51381E0089580E027
+:1040C000089580E00895CF93C82F8091DC0181305E
+:1040D00079F018F08230D1F184C0A0910E01B09136
+:1040E0000F018C91813169F0823209F07CC009C0E6
+:1040F000A0910E01B0910F018C91813111F08232AB
+:1041000049F48C2F0E945F2081111DC08C2F0E94CA
+:10411000A11F1AC08C2F0E946120811114C0C431CC
+:1041200079F048F4CB3079F0C03109F060C082E01A
+:104130008093DC0108C0C93219F0C83321F057C0A0
+:104140001092DC0154C081E0817053C0C93289F102
+:1041500018F5C43171F1A8F4C73009F046C08AE0FF
+:104160008093150194E19093140193E090931301CF
+:104170008093120188E08093110188E280931001FE
+:1041800034C0CE51C63088F5EC2FF0E0E65DFE4F2E
+:1041900080818093DB0129C0CE34E9F020F4CB3458
+:1041A00021F56AE013C0C13579F0C235F1F461E060
+:1041B0000DC08091DB01882319F01092DB0115C03E
+:1041C00081E08093DC0115C061E006C08091DB01D5
+:1041D0000E94DB1E0AC06AE08091DB010E94511F31
+:1041E00004C01092DC0180E004C081E002C080E0E5
+:1041F000ABCFCF910895E1E8F0E0808188608083C3
+:104200008081816080838FB7F89493E090938900D8
+:1042100090ED909388008FBF0895EFE6F0E08081E5
+:10422000826080830895EFE6F0E080818D7F808357
+:104230000895EFE6F0E0808192E089278083089579
+:104240001F920F920FB60F9211242F933F934F930B
+:104250005F936F937F938F939F93AF93BF93EF93EE
+:10426000FF938091DD019091DE0101969093DE0134
+:104270008093DD01811103C082E00E944A07E09132
+:10428000DE01E695E695F0E0E657FB4FE49180917C
+:10429000DD018E1303C080E00E944A07FF91EF9179
+:1042A000BF91AF919F918F917F916F915F914F914E
+:1042B0003F912F910F900FBE0F901F90189504D033
+:1042C0006894B1118DC0089570D088F09F5790F018
+:1042D000B92F9927B751A0F0D1F0660F771F881F2B
+:1042E000991F1AF0BA95C9F712C0B13081F077D092
+:1042F000B1E0089574C0672F782F8827B85F39F030
+:10430000B93FCCF3869577956795B395D9F73EF489
+:1043100090958095709561957F4F8F4F9F4F089531
+:10432000E89409C097FB3EF490958095709561954F
+:104330007F4F8F4F9F4F9923A9F0F92F96E9BB2705
+:104340009395F695879577956795B795F111F8CF81
+:10435000FAF4BB0F11F460FF1BC06F5F7F4F8F4FEC
+:104360009F4F16C0882311F096E911C0772321F0E2
+:104370009EE8872F762F05C0662371F096E8862F7A
+:1043800070E060E02AF09A95660F771F881FDAF7D1
+:10439000880F9695879597F9089557FD9058440F83
+:1043A000551F59F05F3F71F04795880F97FB991F94
+:1043B00061F09F3F79F08795089512161306140651
+:1043C000551FF2CF4695F1DF08C0161617061806DE
+:1043D000991FF1CF86957105610508940895E894B9
+:1043E000BB2766277727CB0197F908950BD078C0B4
+:1043F00069D028F06ED018F0952309F05AC05FC03C
+:104400001124EECFCADFA0F3959FD1F3950F50E0B2
+:10441000551F629FF001729FBB27F00DB11D639F76
+:10442000AA27F00DB11DAA1F649F6627B00DA11D1C
+:10443000661F829F2227B00DA11D621F739FB00DC2
+:10444000A11D621F839FA00D611D221F749F332732
+:10445000A00D611D231F849F600D211D822F762FCB
+:104460006A2F11249F5750408AF0E1F088234AF0C8
+:10447000EE0FFF1FBB1F661F771F881F9150504014
+:10448000A9F79E3F510570F014C0AACF5F3FECF32F
+:10449000983EDCF3869577956795B795F795E79500
+:1044A0009F5FC1F7FE2B880F911D9695879597F911
+:1044B000089597F99F6780E870E060E008959FEFA6
+:1044C00080EC089500240A941616170618060906AB
+:1044D000089500240A94121613061406050608957A
+:1044E000092E0394000C11F4882352F0BB0F40F402
+:1044F000BF2B11F460FF04C06F5F7F4F8F4F9F4F42
+:10450000089597FB072E16F4009407D077FD09D085
+:104510000E949B2207FC05D03EF4909581959F4F09
+:104520000895709561957F4F0895EE0FFF1F0590D8
+:10453000F491E02D0994AA1BBB1B51E107C0AA1FEF
+:10454000BB1FA617B70710F0A61BB70B881F991F34
+:104550005A95A9F780959095BC01CD010895F999D8
+:10456000FECF92BD81BDF89A992780B50895A8E144
+:10457000B0E042E050E00C94D222262FF999FECF11
+:104580001FBA92BD81BD20BD0FB6F894FA9AF99A70
+:104590000FBE019608950E94BD22272F0C94BE22C3
+:1045A000DC01CB01FC01F999FECF06C0F2BDE1BDF3
+:1045B000F89A319600B40D9241505040B8F70895E2
+:0445C000F894FFCF9D
+:1045C40020024B07D807B50781074E070101BA013E
+:1045D40028080A03140A3F4D36394B04FE03C80366
+:1045E4008F0322033B0354036D03010203040506F6
+:0445F40007080900AB
+:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.png
new file mode 100644
index 0000000000..c83f972cfe
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md
new file mode 100644
index 0000000000..033e8ef4d5
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md
@@ -0,0 +1,5 @@
+# The Ordinary Layout. for users of common keyboards
+
+You can read more about the reasoning behind this layout over at [Nicholas's blog](http://nicholas.rinard.us/2016/03/ergodox-ez-layout.html). The idea is to make a layout that's as familiar as possible for users of "regular" keyboards.
+
+![Ordinary layout](ordinary.png)
diff --git a/keyboard/planck/CYGWIN_GUIDE.md b/keyboard/planck/CYGWIN_GUIDE.md
new file mode 100755
index 0000000000..2fa4452f1c
--- /dev/null
+++ b/keyboard/planck/CYGWIN_GUIDE.md
@@ -0,0 +1,237 @@
+#Planck Advanced (but not too advanced) `cygwin` Users Guide
+If you are a user of the [cygwin environment](https://cygwin.com) in Windows and want the freedom to use the latest tools available, then this is the guide for you. If compiling your own copy of the latest and greatest Gnu C Compiler makes you super happy, then this is the guide for you. If the command line make you smile, then this is the guide for you.
+
+
+This guide was written step by step as I went through the process on a `Windows 10` `x86_64` based system. This should be generally applicable to to any `Windows` environment with `cygwin`.
+
+
+#####Do not skip steps. Do not move past a step until the previous step finishes successfully.
+
+
+
+Based on [avr-libc installation guide](http://www.nongnu.org/avr-libc/user-manual/install_tools.html)
+
+
+##Get the Required Packages
+Download the `cygwin` setup ([x86_64](https://cygwin.com/setup-x86_64.exe)) and install the default system plus the following if they are not already selected:
+- devel/gcc-core
+- devel/gcc-g++
+- devel/flex
+- devel/git
+- libs/libglib2.0_0
+- libs/libgcc1
+- interpreters/m4
+- web/wget
+
+The following sources will be required:
+- [gmp](https://gmplib.org/) (6.1.0)
+- [mpfr](http://www.mpfr.org/) (3.1.3)
+- [mpc](http://www.multiprecision.org/) (1.0.3)
+- [binutils](https://www.sourceware.org/binutils/) (2.26)
+- [gcc](https://gcc.gnu.org/) (5.3.0)
+- [avr-libc](http://www.nongnu.org/avr-libc/) (2.0.0)
+
+The `dfu-programmer` will be required to flash the new firmware
+- [dfu-programmer](https://dfu-programmer.github.io/) (0.7.2)
+
+
+The set of commands below will create a directory (`~/local/avr`) for the sources you compile to be installed on the machine and a directory (`~/src`) for these source files to be stored. The commands then download the sources of the needed packages and unpack them. Note: the expand commands are different depending on if the packages are offered as a `bz2` or `gz` archive
+
+```
+$ mkdir ~/local/avr
+$ mkdir ~/src
+$ cd ~/src
+$ wget https://gmplib.org/download/gmp/gmp-6.1.0.tar.bz2
+$ wget http://www.mpfr.org/mpfr-current/mpfr-3.1.3.tar.bz2
+$ wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
+$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.26.tar.gz
+$ wget http://mirror0.babylon.network/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.gz
+$ wget http://download.savannah.gnu.org/releases/avr-libc/avr-libc-2.0.0.tar.bz2
+$ tar -xjf gmp-6.1.0.tar.bz2
+$ tar -xjf mpfr-3.1.3.tar.bz2
+$ tar -zxf mpc-1.0.3.tar.gz
+$ tar -zxf binutils-2.26.tar.gz
+$ tar -zxf gcc-5.3.0.tar.gz
+$ tar -xjf avr-libc-2.0.0.tar.bz2
+```
+
+##Setup the Build Environment
+These commands will set up the install directory and the `PATH` variable, which will allow you to access your installed packages. Note: if you close the `cygwin` terminal window, you will need to rerun these commands, they are not permanent.
+```
+$ PREFIX=$HOME/local/avr
+$ export PREFIX
+$ PATH=/usr/local/bin:/usr/local/lib:/usr/local/include:/bin:/lib:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS
+$ PATH=$PATH:$PREFIX/bin
+$ export PATH
+```
+
+##The `gcc` Required Math Library Packages
+The following packages are required to be complied and installed in order to compile `gcc`. They are not available through the `cygwin` package system, so we have to make them ourselves. They must be complied in this order because each one depends on the previous.
+
+###Build and Install `gmp`
+```
+$ cd ~/src/gmp-6.1.0
+$ ./configure --enable-static --disable-shared
+$ make
+$ make check
+$ make install
+```
+
+###Build and Install `mpfr`
+```
+$ cd ~/src/mpfr-3.1.3
+$ ./configure --with-gmp-build=../gmp-6.1.0 --enable-static --disable-shared
+$ make
+$ make check
+$ make install
+```
+
+###Build and Install `mpc`
+```
+$ cd ~/src/mpc-1.0.3
+$ ./configure --with-gmp=/usr/local --with-mpfr=/usr/local --enable-static --disable-shared
+$ make
+$ make check
+$ make install
+```
+
+##OPTIONAL Part
+You can build and install a brand new `gcc` or you can use the one supplied by `cygwin`. This will take about 4-5 hours to compile (It is a "native build", so it does the entire build **3 times**. This takes a long while). I would skip it.
+###Build and Install `gcc` on your Machine
+```
+$ cd ~/src/gcc-5.3.0
+$ mkdir obj-local
+$ cd obj-local
+$ ../configure --enable-languages=c,c++ --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-static --disable-shared
+$ make
+$ make install
+```
+
+###Build and Install `binutils` on your Machine
+```
+$ cd ~/src/binutils-2.26
+$ mkdir obj-local
+$ cd obj-local
+$ ../configure
+$ make
+$ make install
+```
+##End OPTIONAL Part
+
+##Buliding `binutils`, `gcc`, and `avr-libc` for the AVR system
+Now we can make the critical stuff for compiling our firmware: `binutils`, `gcc`, and `avr-libc` for the AVR architecture. These allow us to build and manipulate the firmware for the keyboard.
+
+###Build `binutils` for AVR
+```
+$ cd ~/src/binutils-2.26
+$ mkdir obj-avr
+$ cd obj-avr
+$ ../configure --prefix=$PREFIX --target=avr --disable-nls
+$ make
+$ make install
+```
+
+###Build `gcc` for AVR
+```
+$ cd ~/src/gcc-5.3.0
+$ mkdir obj-avr
+$ cd obj-avr
+$ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-static --disable-shared --disable-nls --disable-libssp --with-dwarf2
+$ make
+$ make install
+```
+
+For building the `avr-libc`, we have to specify the host build system. in my case it is `x86_64-unknown-cygwin`. You can look for build system type in the `gcc` configure notes for the proper `--build` specification to pass when you configure `avr-libc`.
+
+###Build `avr-libc` for AVR
+```
+$ cd ~/src/avr-libc-2.0.0
+$ ./configure --prefix=$PREFIX --build=x86_64-unknown-cygwin --host=avr
+$ make
+$ make install
+```
+
+##Install `dfu-programmer`
+To install the `dfu-programmer`, we must get if from [their website](https://dfu-programmer.github.io/) (no fancy command line tricks here, but [this](http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip) might work).
+Copy this file into your `cygwin` home directory. (For me, it is `C:\cygwin64\home\Kevin`), extract the files, move `dfu-programmer.exe` to `~/local/avr/bin`. Most obnoxiously, the `libusb0_x86.dll` and `libusb0.sys` need to be moved from `dfu/dfu-prog-usb-1.2.2/x86/` to a directory in the `Windows` `PATH` and the `cygwin` `PATH`. I achieved this by moving the files with Windows Explorer (you know, click and drag...) to `C:\cygwin64\home\Kevin\local\avr\bin` Then, in a `WINDOWS` command prompt running:
+```
+C:\> set PATH=%PATH%;C:\cygwin64\home\Kevin\local\avr\bin
+```
+Adjust your path (for username) as needed. Also, `libusb0_x86.dll` needs to be renamed to `libusb0.dll`. Why must this be so hard? You can tell that you were successful this way:
+```
+$ which dfu-programmer
+/home/Kevin/local/avr/bin/dfu-programmer
+
+$ dfu-programmer
+dfu-programmer 0.7.2
+https://github.com/dfu-programmer/dfu-programmer
+Type 'dfu-programmer --help' for a list of commands
+ 'dfu-programmer --targets' to list supported target devices
+```
+If you are not getting the above result, you will not be able to flash the firmware!
+- Try making sure your `PATH` variables are set correctly for both `Windows` and `cygwin`.
+- Do not extract it with `cygwin`'s `unzip` as it does not set the executable permissions correctly. If you did it anyway, do `chmod 755 dfu-programmer.exe`
+
+####Install the USB drivers
+These drivers are included in the `dfu-programmer` 0.7.2 (but you can get newer ones [here](http://iweb.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip)) and allow the `dfu-programmer` to program the firmware. From an **administrator-privileged** `Windows` terminal, run the following command (adjust the path as necessary) and accept the prompt that pops up:
+```
+C:\> pnputil -i -a C:\cygwin64\home\Kevin\dfu-prog-usb-1.2.2\atmel_usb_dfu.inf
+```
+This should be the result:
+```
+Microsoft PnP Utility
+
+Processing inf : atmel_usb_dfu.inf
+Successfully installed the driver on a device on the system.
+Driver package added successfully.
+Published name : oem104.inf
+
+
+Total attempted: 1
+Number successfully imported: 1
+```
+
+##Building and Flashing the Planck firmware!
+
+If you did everything else right. This part should be a snap! Grab the latest sources from `github`, make the Plank firmware, then flash it.
+
+###Build Planck and Load the Firmware
+```
+$ cd ~/src
+$ git clone https://github.com/jackhumbert/qmk_firmware.git
+$ cd qmk_firmware/keyboard/planck
+$ make
+```
+Make sure there are no errors. You should end up with this or something similar:
+
+```
+Creating load file for Flash: planck.hex
+avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature planck.elf planck.hex
+
+Creating load file for EEPROM: planck.eep
+avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
+--change-section-lma .eeprom=0 --no-change-warnings -O ihex planck.elf planck.eep || exit 0
+
+Creating Extended Listing: planck.lss
+avr-objdump -h -S -z planck.elf > planck.lss
+
+Creating Symbol Table: planck.sym
+avr-nm -n planck.elf > planck.sym
+
+Size after:
+ text data bss dec hex filename
+ 18602 82 155 18839 4997 planck.elf
+
+-------- end --------
+```
+
+If you do not get the above, you **did not** build the firmware, and you will have nothing to flash. If you have the fresh clone from github, it was probably something gone wrong in this install process, go check and see what didn't work and threw errors or what steps you might have missed.
+
+But if everything went OK, you are ready to flash! Press the reset button on the bottom of the Planck, wait two seconds, then:
+```
+$ make dfu
+```
+.
+.
+.
+profit!!!
diff --git a/keyboard/planck/PCB_GUIDE.md b/keyboard/planck/PCB_GUIDE.md
index 3daf0e0092..b36d8fb64c 100644
--- a/keyboard/planck/PCB_GUIDE.md
+++ b/keyboard/planck/PCB_GUIDE.md
@@ -3,10 +3,12 @@
## Setting up the environment
### Windows
+1. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
+2. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location.
+3. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
+4. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
+5. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete!
-1. Install [WinAVR Tools](http://sourceforge.net/projects/winavr/) for AVR GCC compiler.
-2. Install [DFU-Programmer][dfu-prog] (the -win one).
-3. Start DFU bootloader on the chip first time you will see 'Found New Hardware Wizard' to install driver. If you install device driver properly you can find chip name like 'ATmega32U4' under 'LibUSB-Win32 Devices' tree on 'Device Manager'. If not you will need to update its driver on 'Device Manager' to the `dfu-programmer` driver.
### Mac
@@ -52,6 +54,28 @@ Generally, the instructions to flash the PCB are as follows:
4. Press the reset button on the PCB/press the key with the `RESET` keycode
5. `make <arguments> dfu` - use the necessary `KEYMAP=<keymap>` and/or `COMMON=true` arguments here.
+## Troubleshooting
+If you see something like this
+
+ 0 [main] sh 13384 sync_with_child: child 9716(0x178) died before initialization with status code 0xC0000142
+ 440 [main] sh 13384 sync_with_child: *** child state waiting for longjmp
+ /usr/bin/sh: fork: Resource temporarily unavailable
+
+after running 'make' on Windows than you are encountering a very popular issue with WinAVR on Windows 8.1 and 10.
+You can easily fix this problem by replacing msys-1.0.dll in WinAVR/utils/bin with [this one](http://www.madwizard.org/download/electronics/msys-1.0-vista64.zip).
+Restart your system and everything should work fine!
+
+
+If you see this
+
+ dfu-programmer atmega32u4 erase
+ process_begin: CreateProcess(NULL, dfu-programmer atmega32u4 erase, ...) failed.
+ make (e=2): The system cannot find the file specified.
+ make: *** [dfu] Error 2
+
+when trying to 'make dfu' on Windows you need to copy the dfu-programmer.exe to qmk_firmware/keyboard/planck.
+
+
## Quantum MK Firmware
### Keymap
diff --git a/keyboard/planck/keymaps/lucas.c b/keyboard/planck/keymaps/lucas.c
new file mode 100644
index 0000000000..27672e1bbc
--- /dev/null
+++ b/keyboard/planck/keymaps/lucas.c
@@ -0,0 +1,163 @@
+/*
+This is the keymap of /u/deepshitgoeshere!
+Layer 1 exists so I can have the symbol positions of QWERTY while having my system in german.
+The second layer has all the german umlauts I need and with capital and small letters on the
+same layer there is no need to press shift+lower.
+This keymap is made to work with software implemented QWERTZ.
+The "Gaming" layer is mainly customized for CS:GO.
+If you have any question about this keymap feel free to shoot me a message on reddit!
+*/
+
+#include "keymap_common.h"
+#include "keymap_extras/keymap_german.h"
+#include "backlight.h"
+#include "debug.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = { /* Colemak
+ * ,-----------------------------------------------------------------------.
+ * | Esc | q | w | f | p | g | j | l | u | y | ; | - |
+ * |-----------------------------------------------------------------------|
+ * | BS | a | r | s | t | d | h | n | e | i | o | ' |
+ * |-----------------------------------------------------------------------|
+ * | SFT | z | x | c | v | b | k | m | , | . | / | Ent |
+ * |-----------------------------------------------------------------------|
+ * | CTL | GUI | Tab | ALT |Lower| Space |Raise|Left |Down | Up |Right|
+ * `-----------------------------------------------------------------------'
+ */
+ {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Z, DE_SCLN, DE_MINS},
+ {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, DE_QUOT},
+ {M(0), KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, DE_COMM, DE_DOT, DE_SLSH, KC_ENT},
+ {KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, F(2), F(3), F(3), F(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+[1] = { /* Symbols
+ * ,-----------------------------------------------------------------------.
+ * | | | | | | | | | | | : | |
+ * |-----------------------------------------------------------------------|
+ * | | | | | | | | | | | | " |
+ * |-----------------------------------------------------------------------|
+ * | | | | | | | | | < | > | ? | |
+ * |-----------------------------------------------------------------------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------'
+ */
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DOT, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQOT},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1), DE_MORE, DE_QST, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+[2] = { /* Raise
+ * ,-----------------------------------------------------------------------.
+ * | | Ä | | | | | | | Ü | Ö | |Game |
+ * |-----------------------------------------------------------------------|
+ * | Del | ä | | ß | | | | | ü | ö | |FVol+|
+ * |-----------------------------------------------------------------------|
+ * | | | | | | | | |Stop | Prv | Nxt |FVol-|
+ * |-----------------------------------------------------------------------|
+ * |LCTL |LGUI | Tab |LALT |Lower| Space | |Mute |Vol- |Vol+ | P/P |
+ * `-----------------------------------------------------------------------'
+ */
+ {KC_NO, S(DE_AE), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, S(DE_UE), S(DE_OE), KC_NO, F(4)},
+ {KC_DEL, DE_AE, KC_NO, DE_SS, KC_NO, KC_NO, KC_NO, KC_NO, DE_UE, DE_OE, KC_NO, RALT(KC_F12)},
+ {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPRV, KC_MNXT, RALT(KC_F11)},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[3] = { /* Lower
+ * ,-----------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | + |
+ * |-----------------------------------------------------------------------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = |
+ * |-----------------------------------------------------------------------|
+ * | | | | | | [ | ] | { | } | € | | \ | Ent |
+ * |-----------------------------------------------------------------------|
+ * |LCTL |LGUI | Tab |LALT | | Space |Raise|Home |PgDn |PgUp | End |
+ * `-----------------------------------------------------------------------'
+ */
+ {DE_TILD, DE_EXLM, DE_AT, DE_HASH, DE_DLR, DE_PERC, DE_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, DE_PLUS},
+ {DE_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_EQL},
+ {KC_NO, KC_NO, KC_NO, DE_PIPE, DE_LBRC, DE_RBRC, DE_LCBR, DE_RCBR, DE_EURO, KC_NO, DE_BSLS, KC_ENT},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
+},
+[4] = { /* Function
+ * ,-----------------------------------------------------------------------.
+ * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 |
+ * |-----------------------------------------------------------------------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |-----------------------------------------------------------------------|
+ * | | | | | | KP- | KP+ | | | | |Reset|
+ * |-----------------------------------------------------------------------|
+ * | |Light|BL DN|BL UP| | | | |Mute |Vol- |Vol+ | P/P |
+ * `-----------------------------------------------------------------------'
+ */
+ {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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12},
+ {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_NO, KC_NO, KC_NO, RESET, KC_NO},
+ {KC_NO, BL_TOGG, BL_DEC, BL_INC, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[5] = { /* Gaming
+ * ,-----------------------------------------------------------------------.
+ * | Buy | ESC | q | w | e | r | t | y | u | i | o | p |
+ * |-----------------------------------------------------------------------|
+ * | ENT | BS | a | s | d | f | g | h | j | k | l | ; |
+ * |-----------------------------------------------------------------------|
+ * | CTL | SFT | z | x | c | v | b | n | m | , | Up | / |
+ * |-----------------------------------------------------------------------|
+ * | | | Tab | ALT | | Space |CrJmp| GUI |Left |Down |Right|
+ * `-----------------------------------------------------------------------'
+ */
+ {MO(6), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, F(4)},
+ {KC_ENT, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_SCLN},
+ {KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, DE_DOT, KC_UP, DE_SLSH},
+ {KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT}
+},
+[6] = { /* Gaming
+ /* CS:GO buy binds
+ * ,-----------------------------------------------------------------------.
+ * | | | | | | | | | 7 | 8 | 9 | |
+ * |-----------------------------------------------------------------------|
+ * | BS | | | | | | | | 6 | 5 | 4 | End |
+ * |-----------------------------------------------------------------------|
+ * | CTL | SFT | | | | | | | 1 | 2 | 3 |Pgdn |
+ * |-----------------------------------------------------------------------|
+ * | | | Tab | ALT | | Space |CrJmp| | 0 | KP+ |PEnt |
+ * `-----------------------------------------------------------------------'
+ */
+ {KC_TRNS, KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_P7, KC_P8, KC_P9, KC_NO},
+ {KC_BSPC, KC_NO, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_P4, KC_P5, KC_P6, KC_END},
+ {KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_P1, KC_P2, KC_P3, KC_PGDN},
+ {KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_NO, KC_P0, KC_PDOT, KC_PENT}
+},
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE
+ [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER
+ [3] = ACTION_LAYER_TAP_KEY(4,KC_SPC), // to Function
+ [4] = ACTION_LAYER_TOGGLE(5), // toggle Gaming
+ [5] = ACTION_MODS_TAP_KEY(KC_LSFT, KC_CAPS), //Shift on press, Caps on tap
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch(id) {
+ case 0: // M(0)
+ if (record->event.pressed) {
+ register_code(KC_LSFT);
+ layer_on(1);
+ } else {
+ layer_off(1);
+ unregister_code(KC_LSFT);
+ }
+ break;
+ case 1: // M(1)
+ if (record->event.pressed) {
+ unregister_code(KC_LSFT);
+ register_code(DE_MORE);
+ } else {
+ unregister_code(DE_MORE);
+ }
+ break;
+ }
+ return MACRO_NONE;
+
+}; \ No newline at end of file
diff --git a/new_project.sh b/new_project.sh
index 199ced4113..28de9c2f9f 100755
--- a/new_project.sh
+++ b/new_project.sh
@@ -13,10 +13,9 @@ sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/config.h > keyboard/$KEYBOARD
sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/README.md > keyboard/$KEYBOARD/README.md
sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/Makefile > keyboard/$KEYBOARD/Makefile
sed -e "s;%KEYBOARD%;$KEYBOARD;g" quantum/template/keymaps/default.c > keyboard/$KEYBOARD/keymaps/default.c
-cp quantum/template/bootloader.hex keyboard/$KEYBOARD/bootloader.hex
echo "######################################################"
echo "# keyboard/$KEYBOARD project created. To start"
echo "# working on things, use the following command:"
echo "# cd keyboard/$KEYBOARD"
-echo "######################################################" \ No newline at end of file
+echo "######################################################"
diff --git a/quantum/keymap_extras/keymap_neo2.h b/quantum/keymap_extras/keymap_neo2.h
index 055d7d0d1e..a35ba55a55 100644
--- a/quantum/keymap_extras/keymap_neo2.h
+++ b/quantum/keymap_extras/keymap_neo2.h
@@ -35,6 +35,25 @@
#define NEO_UE DE_Y
#define NEO_SS DE_UE
+#define NEO_DOT DE_DOT
+#define NEO_COMM DE_COMM
+
+#define NEO_1 DE_1
+#define NEO_2 DE_2
+#define NEO_3 DE_3
+#define NEO_4 DE_4
+#define NEO_5 DE_5
+#define NEO_6 DE_6
+#define NEO_7 DE_7
+#define NEO_8 DE_8
+#define NEO_9 DE_9
+#define NEO_0 DE_0
+#define NEO_MINS DE_SS
+
+#define NEO_ACUT DE_PLUS
+#define NEO_GRV DE_ACUT
+#define NEO_CIRC DE_CIRC
+
#define NEO_L1_L KC_CAPS
#define NEO_L1_R DE_HASH
diff --git a/quantum/template/template.h b/quantum/template/template.h
index d4d78e4c91..a15061b267 100644
--- a/quantum/template/template.h
+++ b/quantum/template/template.h
@@ -12,7 +12,7 @@
// The second converts the arguments into a two-dimensional array
#define KEYMAP( \
k00, k01, k02, \
- k10, k11, \
+ k10, k11 \
) \
{ \
{ k00, k01, k02 }, \