Makefile redo & other features (#395)

* .build containment implemented

* no destructive variable setting - builds in either folder

* make from 3 places

* cleans before each build
* make from root with keyboard=keyboard, keymap=keymap
* make from keyboard/keyboard with keymap=keymap
* make from keymaps/keymap
* only implemented on planck

* adds color diag to avr-gcc

* makefiles for all plancks, clean-up

* quick build-all makefile for plancks

* reformatting of make output (colors)

* color toggle, tmk path corrections

* correct if statement for color

* move config.h to main makefile, updates preonic, atomic

* format update, all keyboards targets

* makefile optional for build all target, alps and arrow_pad updated

* alps updated

* make planck default, trying out travis recipe for all-keyboards

* all-keymaps target, different travis recipe

* updates alps64

* updates keyboards to new format

* updates clue* projects

* all projects updated, specialise EZ .hex, let .hex through

* updates travis

* automatically find root, keyboard, keymap

* silent echo, cleaned-up mass make output

* updates all keyboards' .hex files except EZ

* Rename Bantam44.c to bantam44.c

* Rename Bantam44.h to bantam44.h

* nananana

* adds six key keyboard

* does same to ez as rest

* updates send_string example

* brings ergodox_ez up to date

* updates template/new project script

* adds sixkeyboard

* adds readme for sixkeyboard

* adds sixkeyboard to travis

* filenames, gitignore mess

* define clock prescaler stuff manually

* make quick, size test example

* documentation and dfu-no-build
example_keyboards
Jack Humbert 9 years ago committed by GitHub
parent a5d638ad30
commit d9e4dad0a8

6
.gitignore vendored

@ -3,7 +3,10 @@ keyboard/planck/dfu-programmer.exe
*.o
*.eep
*.elf
*.hex
/*.hex
/keyboard/**/*.hex
/keyboard/**/keymaps/**/*.hex
!/keyboard/**/keymaps/**/compiled.hex
*.log
*.lss
*.lst
@ -13,6 +16,7 @@ keyboard/planck/dfu-programmer.exe
tags
*~
build/
.build/
*.bak
.vagrant/
.idea/

@ -18,16 +18,16 @@ env:
- KEYBOARD=cluepad
- KEYBOARD=ergodox_ez
- KEYBOARD=gh60
- KEYBOARD=gh60_rev_c
- KEYBOARD=hhkb
- KEYBOARD=jd45
- KEYBOARD=kc60_v2
- KEYBOARD=kc60
- KEYBOARD=planck
- KEYBOARD=preonic
- KEYBOARD=retro_refit
- KEYBOARD=sixkeyboard
script:
- cd keyboard/$KEYBOARD && make
- cd keyboard/$KEYBOARD && make all-keymaps
addons:
apt:

@ -0,0 +1,112 @@
ifndef VERBOSE
.SILENT:
endif
starting_makefile := $(abspath $(firstword $(MAKEFILE_LIST)))
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
tmk_root := $(patsubst %/,%,$(dir $(mkfile_path)))
ifneq (,$(findstring /keyboard/,$(starting_makefile)))
possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(tmk_root)/keyboard/%,%,$(starting_makefile))))
ifneq (,$(findstring /keymaps/,$(possible_keyboard)))
KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard)))
KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard)))
else
KEYBOARD_DIR:=$(possible_keyboard)
KEYMAP_DIR:=default
endif
endif
# $(info $(KEYBOARD_DIR))
# $(info $(KEYMAP_DIR))
# Directory common source filess exist
TOP_DIR = $(tmk_root)
TMK_DIR = tmk_core
TMK_PATH = $(TOP_DIR)/$(TMK_DIR)
QUANTUM_DIR = quantum
QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR)
ifdef keyboard
KEYBOARD ?= $(keyboard)
endif
ifdef KEYBOARD_DIR
KEYBOARD ?= $(KEYBOARD_DIR)
endif
ifndef KEYBOARD
KEYBOARD=planck
endif
KEYBOARD_PATH = $(TOP_DIR)/keyboard/$(KEYBOARD)
ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","")
KEYBOARD_FILE = keyboard/$(KEYBOARD)/$(KEYBOARD).c
ifndef ARCH
include $(KEYBOARD_PATH)/Makefile
endif
else
$(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist)
endif
ifdef keymap
KEYMAP ?= $(keymap)
endif
ifdef KEYMAP_DIR
KEYMAP ?= $(KEYMAP_DIR)
endif
ifndef KEYMAP
KEYMAP = default
endif
KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","")
KEYMAP_FILE = keyboard/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c
-include $(KEYMAP_PATH)/Makefile
else
$(error "$(KEYMAP_PATH)/keymap.c" does not exist)
endif
TARGET = $(KEYBOARD)_$(KEYMAP)
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H = $(KEYMAP_PATH)/config.h
else
CONFIG_H = $(KEYBOARD_PATH)/config.h
endif
# # project specific files
SRC += $(KEYBOARD_FILE) \
$(KEYMAP_FILE) \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/led.c
ifndef CUSTOM_MATRIX
SRC += $(QUANTUM_DIR)/matrix.c
endif
ifeq ($(strip $(AUDIO_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/audio/audio.c
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/light_ws2812.c
SRC += $(QUANTUM_DIR)/rgblight.c
OPT_DEFS += -DRGBLIGHT_ENABLE
endif
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(KEYMAP_PATH)
VPATH += $(KEYBOARD_PATH)
VPATH += $(TOP_DIR)
VPATH += $(TMK_PATH)
VPATH += $(QUANTUM_PATH)
VPATH += $(QUANTUM_PATH)/keymap_extras
VPATH += $(QUANTUM_PATH)/audio
include $(TMK_PATH)/protocol/lufa.mk
include $(TMK_PATH)/common.mk
include $(TMK_PATH)/rules.mk

@ -39,22 +39,68 @@ If you have any problems building the firmware, you can try using a tool called
## 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.
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.
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. More information about the `make` command can be found below.
## Customizing, Building, and Deploying Your Firmware
Note: Some keyboard folders have non-standard organizations, and may not even support specifying alternate keymaps. Until these get reorganized, you will need to edit their default keymaps directly.
### The Make command
The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). You can run `make` from the root (`/`), your keyboard folder (`/keyboard/<keyboard>/`), or your keymap folder (`/keyboard/<keyboard>/keymaps/<keymap>/`) if you have a `Makefile` there (see the example [here](/doc/keymap_makefile_example.mk)).
By default, this will generate a <keyboard>_<keymap>.hex file in whichever folder you run make from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. You .hex file will also be copied into your keymap folder as `compiled.hex`, which isn't ignore by git - this is included in case first-time users are having trouble compiling, and just want to flash a layout via `make dfu-no-build`.
* The "root" (`/`) folder is the qmk_firmware folder, in which are `doc`, `keyboard`, `quantum`, etc.
* The "keyboard" folder is any keyboard project's folder, like `/keyboard/<keyboard>`
* The "keymap" folder is any keymap's folder, like `/keyboard/<keyboard>/keymaps/<keymap>/`
Below is a list of the useful `make` commands in QMK:
* `make` - cleans automatically and builds your keyboard and keymap depending on which folder you're in. This defaults to the "default" layout (unless in a keymap folder), and Planck keyboard in the root folder
* `make keyboard=<keyboard>` - specifies the keyboard (only to be used in root)
* `make keymap=<keymap>` - specifies the keymap (only to be used in root and keyboard folder - not needed when in keymap folder)
* `make quick` - skips the clean step (only use when modifying .c code in the same project - at least one `make` is required)
* `make dfu` - (requires dfu-programmer) builds and flashes the keymap to your keyboard once placed in reset/dfu mode (button or press KC_RESET).
* `keyboard=` and `keymap=` are compatible with this
* `make dfu-no-build` - (requires dfu-programmer) same as `make dfu`, but doesn't build and uses the included `compiled.hex` to flash the keyboard
* `make all-keyboards` - builds all keymaps for all keyboards and outputs status of each (use in root)
* `make all-keyboards-default` - builds all default keymaps for all keyboards and outputs status of each (use in root)
* `make all-keymaps [keyboard=<keyboard>]` - builds all of the keymaps for whatever keyboard folder you're in, or specified by `<keyboard>`
Other, less useful functionality:
* `make COLOR=false` - turns off color output
* `make SILENT=true` - turns off output besides errors/warnings
* `make VERBOSE=true` - outputs all of the avr-gcc stuff (not interesting)
### The Makefile
There are 3 different `make` and `Makefile` locations:
* root (`/`)
* keyboard (`/keyboard/<keyboard>/`)
* keymap (`/keyboard/<keyboard>/keymaps/<keymap>/`)
The root contains all of the automatic keymap/keyboard stuff, is static, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. It is required if you want to run `make` in the keymap folder.
### The `config.h` file
There are 2 `config.h` locations:
* keyboard (`/keyboard/<keyboard>/`)
* keymap (`/keyboard/<keyboard>/keymaps/<keymap>/`)
The keyboard `config.h` is included only if the keymap one doesn't exist. It's possible to included both by using this code at the top of your keymap's `config.h`:
#include "../../config.h"
You can then overwrite any settings, rather than having to copy and paste the whole thing. You may need to `undefine` things to prevent warnings.
1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, duplicate the folder `keymaps/default`, and rename it with your name, for example `jack`. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides.
2. To build a keymap other than the default, type `KEYMAP=<name>` after `make`. So if I've named my keymap `jack`, the full command would be `make KEYMAP=jack`.
3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP=<name> dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the <keyboardname>.hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html)
## Helpful Tips
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.
1. On Linux or OS X, you can run `sleep 5; make keymap=<keymap> 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

@ -0,0 +1,21 @@
# Build Options
# change to "no" to disable the options, or define them in the makefile.mk in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -39,27 +39,9 @@
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = alps64
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# project specific files
SRC = alps64.c \
led.c
ifdef KEYMAP
SRC := keymaps/$(KEYMAP).c $(SRC)
else
SRC := keymaps/default.c $(SRC)
endif
CONFIG_H = config.h
SRC = led.c
# MCU name
MCU = atmega32u2
@ -113,21 +95,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= yes # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
ifndef QUANTUM_DIR
include ../../Makefile
endif

@ -37,19 +37,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 } \
}
/* AEK US */
#define KEYMAP_AEK( \
K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
K31, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
K30, K40, K50, K60, K00, K10, K20 \
) KEYMAP( \
K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, NUHS,K27, \
K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
K31, NUBS,K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, ESC, \
K30, K40, K50, K60, APP, K00, K10, K20 \
)
#endif

File diff suppressed because it is too large Load Diff

@ -1,151 +0,0 @@
#include "alps64.h"
/*
* Hasu
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default Layer
* ,-----------------------------------------------------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ |
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc |
* |-----------------------------------------------------------|
* |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|FN1 |
* |-----------------------------------------------------------|
* |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |
* |-----------------------------------------------------------|
* |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
* `-----------------------------------------------------------'
*/
[0] = KEYMAP_AEK( \
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN1, \
LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT, \
LCTL,LGUI,LALT, FN4, RALT,FN5, FN0),
/* HHKB mode[HHKB Fn]
* ,-----------------------------------------------------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| ` |
* |-----------------------------------------------------------|
* |Caps | | | | | | | |Psc|Slk|Pus|Up | |Del |
* |-----------------------------------------------------------|
* |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
* |-----------------------------------------------------------|
* |Shift | | | | | | +| -|End|PgD|Dow|Shift |
* |-----------------------------------------------------------|
* |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
* `-----------------------------------------------------------'
*/
[1] = KEYMAP_AEK( \
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, NO, DEL, \
LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \
LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT, \
LCTL,LGUI,LALT, TRNS, RALT,RGUI,TRNS),
/* Vi mode[Slash]
* ,-----------------------------------------------------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del |
* |-----------------------------------------------------------|
* |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs|
* |-----------------------------------------------------------|
* |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return |
* |-----------------------------------------------------------|
* |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift |
* |-----------------------------------------------------------|
* |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
* `-----------------------------------------------------------'
*/
[2] = KEYMAP_AEK( \
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, DEL, \
LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \
LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT, \
LCTL,LGUI,LALT, SPC, RALT,RGUI,RCTL),
/* Mouse mode(IJKL)[Semicolon]
* ,-----------------------------------------------------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
* |-----------------------------------------------------------|
* |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
* |-----------------------------------------------------------|
* |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return |
* |-----------------------------------------------------------|
* |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
* |-----------------------------------------------------------|
* |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
* `-----------------------------------------------------------'
* Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
*/
[3] = KEYMAP_AEK( \
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,TRNS,NO, ENT, \
LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \
LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS),
/* Layer 4: Mouse mode(IJKL)[Space]
* ,-----------------------------------------------------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
* |-----------------------------------------------------------|
* |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
* |-----------------------------------------------------------|
* |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return |
* |-----------------------------------------------------------|
* |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
* |-----------------------------------------------------------|
* |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl |
* `-----------------------------------------------------------'
* Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
*/
[4] = KEYMAP_AEK( \
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \
FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \
LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \
LCTL,LGUI,LALT, TRNS, TRNS,TRNS,TRNS),
};
/* id for user defined function/macro */
enum function_id {
NONE,
};
enum macro_id {
ALT_TAB,
};
/*
* Fn action definition
*/
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(1), // HHKB layer
[1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER), // HHKB layer
[2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash*
[3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon*
[4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space
[5] = ACTION_LAYER_MOMENTARY(3), // Mousekey layer(IJKL)
[6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter
[7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift
[8] = ACTION_MACRO(ALT_TAB), // Application switching
[9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
[10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
};
/*
* Macro definition
*/
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch (id) {
case ALT_TAB:
return (record->event.pressed ?
MACRO( D(LALT), D(TAB), END ) :
MACRO( U(TAB), END ));
}
return MACRO_NONE;
}

@ -38,28 +38,6 @@
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = arrow_pad
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = arrow_pad.c
ifdef KEYMAP
SRC := keymaps/$(KEYMAP).c $(SRC)
else
SRC := keymaps/default.c $(SRC)
endif
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@ -113,46 +91,22 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= yes # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
ifdef KEYMAP
ifeq ("$(wildcard keymaps/$(KEYMAP).c)","")
ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
include keymaps/$(KEYMAP)/makefile.mk
endif
endif
else
ifneq ("$(wildcard keymaps/default/makefile.mk)","")
include keymaps/default/makefile.mk
endif
endif
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
NKRO_ENABLE ?= yes # USB Nkey Rollover
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
MIDI_ENABLE ?= no # MIDI controls
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE ?= no # Audio output on port C6
ifndef QUANTUM_DIR
include ../../Makefile
endif

File diff suppressed because it is too large Load Diff

@ -0,0 +1,893 @@
:100000000C944A010C948E010C948E010C948E0178
:100010000C948E010C948E010C948E010C948E0124
:100020000C948E010C948E010C94B10A0C94830BE9
:100030000C9424180C948E010C948E010C948E0157
:100040000C948E010C948E010C948E010C948E01F4
:100050000C948E010C948C180C948E010C948E01CF
:100060000C948E010C948E010C948E010C948E01D4
:100070000C948E010C948E010C948E010C948E01C4
:100080000C948E010C948E010C948E010C948E01B4
:100090000C948E010C948E010C948E010C948E01A4
:1000A0000C948E010C948E010C948E01F00B120CAA
:1000B000000D120C000D570C7A0C000DCF0CE20C49
:1000C000730F730FA20FA20F06110611061106116E
:1000D000E10F061191109110F71006110611001191
:1000E0009E109E109E109E109E109E109E109E10A0
:1000F0009E109E109E109E109E109E109E109E1090
:10010000AE10BC10C310CA10D410F1A2028A00D2E3
:1001100000D000D100C801C802C829002B0031005E
:10012000C0005F0060006100570059005A005B008A
:1001300053005400550056005C005D005E005800FE
:1001400000006200630029002B002C0001004A001F
:1001500052004B00C7004D0051004E00C100190174
:100160001C011D015000C5004F00C60000002A0000
:100170004C00C200C300C4000100010001000100E6
:100180000100010001000100C100010001000100A7
:1001900001000100010001000000005001001A03ED
:1001A0004100720072006F00770020005000610073
:1001B000640020003200310000000E034E006F008A
:1001C00062006F0064007900000004030904090262
:1001D0003B00020100A0FA09040000010301010034
:1001E000092111010001223F000705810308000ACF
:1001F000090401000103000000092111010001228E
:1002000039000705820310000112011001000000EF
:1002100008EDFE974001000102000105010906A159
:1002200001050719E029E7150025019508750181E9
:1002300002050819012905950575019102950175B9
:100240000391010507190029771500250195787597
:10025000018102C005010906A101050719E029E78E
:100260001500250195087501810295017508810128
:100270000508190129059505750191029501750378
:1002800091010507190029FF150025FF950675083E
:100290008100C00011241FBECFEFDAE0DEBFCDBF6A
:1002A00004B603FE24C08091C3019091C401A091C3
:1002B000C501B091C6018730904BA740B04BB9F44F
:1002C0001092C3011092C4011092C5011092C60190
:1002D00014BE84B7877F84BF88E10FB6F8948093FB
:1002E0006000109260000FBEE0E0FFE3099511E0AE
:1002F000A0E0B1E0E4E9F7E302C005900D92AA3175
:10030000B107D9F711E0AAE1B1E001C01D92A33C09
:10031000B107E1F70E94F8070C94C81B0C94000089
:100320000895089581E008950C9490010C94910132
:100330000C9492010C9400020895CF93DF93EC018A
:100340006130F1F018F06230E9F155C08A818823FC
:1003500009F451C080EE0E94670E8D81807F80314C
:1003600029F486E00E94670E86E006C0803231F4F0
:100370008BE10E94670E8BE10E94060F80EE1FC08A
:100380008A818823C1F08D8182958F7090E00397D8
:100390001CF482E00E942E0F8D81807F803219F440
:1003A00081E00E942E0F8D81807F803321F588E5CA
:1003B0000E94670E20C083E00E94350F88E50E94EE
:1003C000060F19C08A81882399F08D8182958F70DC
:1003D00090E002971CF481E00E942E0F8D8182959F
:1003E0008F7090E002973CF084E00E942E0F03C0D3
:1003F00085E00E94350F80E090E0DF91CF91089575
:1004000081FF03C0569A5E9A02C056985E9880FF9C
:1004100005C03F9A88B18F6788B908953F9847987B
:10042000089581E008950C94110208950F931F938D
:10043000CF93DF938C01FC01C081D181CE010E945A
:100440005E16BE010E94C202EC01B8010E941302B6
:10045000882309F48DC0F8018281882309F44AC0F9
:100460008091250181111FC0C431F0E5DF0709F03B
:1004700051C00E94150281E0809325010E94561808
:10048000909324018093230110921C0110921E016D
:1004900010921D011092200110921F011092220152
:1004A0001092210165C080912301909124010E9446
:1004B0006218883C910570F480911C01E82FF0E0EF
:1004C000EE0FFF1FE35EFE4FD183C0838F5F8093EB
:1004D0001C014EC0C43880E5D80721F0C538D0458E
:1004E00001F13AC0F8018281882341F010921A018B
:1004F00082E01EC0C438E0E5DE0759F580911A019C
:10050000811106C086E20E94670E86E20E94060FF5
:1005100082E01CC0C438F0E5DF0741F3C538D045A0
:10052000D9F4F8018281882331F010921B0180E216
:100530000E942E0F1DC080911B01811106C087E211
:100540000E94670E87E20E94060F80E20E94350F2C
:100550000FC0C538D04529F381E080931A018093FC
:100560001B01C801DF91CF911F910F910C9498014D
:1005700080E0DF91CF911F910F9108950C94940129
:100580000C9496019BE0799FF001112496E1899FDC
:10059000E00DF11D1124E60FF11DEE0FFF1FE65EC9
:1005A000FE4F859194910895880F991FFC01E6579D
:1005B000F040859194910895880F991FFC01E65FA2
:1005C000FE4F8591949108950F931F93CF93DF93DE
:1005D000EC01811520E3920750F5C11580E2D807A0
:1005E00008F0C3C0CB3BD10590F4C83AD10508F060
:1005F0006AC0C53AD10508F05BC0C430D10508F027
:10060000D0C1219709F0CAC101E010E00AC2CF3F72
:10061000D10511F008F0C5C1C03FD10508F0A2C056
:10062000CE01805E9109089708F4BBC1B7C1C13003
:1006300090E5D90709F4A2C020F5C0318FE4D807AE
:1006400070F4C11590E4D90708F094C0C11521E3F6
:10065000D20708F0A3C1DD278E01106CE2C1C115DD
:10066000D04509F09BC10E9465118FEF94E32CE007
:10067000815090402040E1F700C000000E94B11876
:10068000D0C1C11597E5D90758F4C03121E5D2078B
:1006900008F01CC1C43180E5D80708F475C07EC1DC
:1006A000CE0190578115904108F078C1DF7073C179
:1006B000C53AD10509F477C1C63AD10509F076C12A
:1006C00002E810E4AEC1C83AD10509F472C1C93AD2
:1006D000D10509F471C1CA3AD10509F470C1CB3A08
:1006E000D10509F46FC1CC3AD10509F46EC1CD3AF8
:1006F000D10509F46DC1C03BD10509F46CC1CE3AF6
:10070000D10509F46BC1CF3AD10509F46AC1C13BE7
:10071000D10509F469C1C23BD10509F468C1C33BE5
:10072000D10509F467C1C43BD10509F466C1C53BD5
:10073000D10509F465C1C63BD10509F464C1C73BC5
:10074000D10509F463C1C83BD10509F462C1C93BB5
:10075000D10509F461C1CA3BD10509F460C100E0CB
:1007600014E45FC18E0110655CC1CE019F700E94D0
:10077000DC0258C1DF708E01106A53C18091AE0156
:1007800081608093AE014DC10E94611A811102C047
:100790000E94471A0E947E1A90E09093C3018093B2
:1007A000C201C23080E5D80721F48091C201816086
:1007B00086C0C43090E5D90721F48091C2018260DF
:1007C0007EC0C63020E5D20721F48091C20184604A
:1007D00076C0C83080E5D80719F48091C20127C0DF
:1007E000CA3090E5D90721F48091C201806167C0C9
:1007F000CC3020E5D20721F48091C20180625FC035
:10080000CE3080E5D80721F48091C201806457C0C2
:10081000C03190E5D90721F48091C20180684FC0B2
:10082000C23120E5D20729F48091C201846088603A
:1008300046C0C33080E5D80721F48091C2018E7F85
:100840003EC0C53090E5D90721F48091C2018D7F6B
:1008500036C0C73020E5D20721F48091C2018B7FDA
:100860002EC0C93080E5D80719F48091C20126C096
:10087000CB3090E5D90721F48091C2018F7E1FC053
:10088000CD3020E5D20721F48091C2018F7D17C0C1
:10089000CF3080E5D80721F48091C2018F7B0FC053
:1008A000C13190E5D90721F48091C2018F7707C04B
:1008B000C331D04531F48091C2018B7F877F809313
:1008C000C2018091C2010E94821AABC08D2F99276C
:1008D0008F70992781309105D9F49E0123703327B9
:1008E00002C0880F991F2A95E2F79C688E0144E0A8
:1008F000000F111F4A95E1F700271370802B912BF1
:1009000053E0CC0FDD1F5A95E1F7C076DD272FC0ED
:100910008230910531F4DC2FCC278E01016F106AF3
:1009200080C08330910569F4CE018370992701E07E
:1009300010E002C0000F111F8A95E2F7C8019C6801
:100940000FC084309105B9F4CE018370992701E07E
:1009500010E002C0000F111F8A95E2F7C8019A68E3
:1009600023E0CC0FDD1F2A95E1F7C07ED7708C0104
:100970000C2B1D2B56C08530910531F4DC2FCC2774
:100980008E01046F106A4DC0069709F04AC0CF71FE
:10099000DD27DC2FCC278E01106243C000E010E081
:1009A00040C08E013EC001E810E43BC003E810E403
:1009B00038C002EE14E435C009EE14E432C00AEE89
:1009C00014E42FC005EB14E42CC006EB14E429C09A
:1009D00007EB14E426C00CEC14E423C00DEC14E483
:1009E00020C003E815E41DC00AE815E41AC002E9B6
:1009F00015E417C004E915E414C001E216E411C0BF
:100A000003E216E40EC004E216E40BC005E216E4AD
:100A100008C006E216E405C007E216E402C00AE2D6
:100A200016E4C801DF91CF911F910F9108959BE0CB
:100A3000799FF001112496E1899FE00DF11D1124A9
:100A4000E60FF11DEE0FFF1FE65EFE4F85919491BC
:100A5000803E9105E0F4803C910558F58133910585
:100A600009F46FC048F48932910509F463C08A32F1
:100A7000910509F46DC072C089339105E9F082389F
:100A80009105D1F08533910509F44DC067C0833ECF
:100A9000910581F138F4803E9105B9F0823E9105CF
:100AA000D9F05CC0863E910561F1873E9105A1F1C8
:100AB00055C00E94D40208952091C20120FD02C0B9
:100AC00021FF4CC080EE90E049C08091C20180FFC0
:100AD000F9CF89E390E042C08091C20182FF0EC04D
:100AE0008091C20184FF03C080E090E037C083EEB4
:100AF00090E034C08091C20182FFF2CF82EE90E09C
:100B00002DC08091C20183FF0BC08091C20184FD82
:100B1000EBCF87EE90E022C08091C20183FFF5CF3A
:100B200086EE90E01BC08091C20185FF07C089E27C
:100B300090E014C08091C20185FFF9CF85E390E079
:100B40000DC08091C20186FF07C08AE290E006C016
:100B50008091C20186FFF9CF81E390E00E94E40218
:100B600008950C949A01E82FF0E0E15FFE4F808138
:100B7000E82FEF70F0E082958F7021E030E0A9015E
:100B800002C0440F551F8A95E2F740A308950F93C2
:100B90001F93CF93DF9385B7806885BF85B7806843
:100BA00085BFCAE0D0E001E010E0FE01E15FFE4F4A
:100BB0008081E82FEF70F0E021A182958F70A8016D
:100BC00002C0440F551F8A95E2F7CA01822B81A308
:100BD0008C2F0E94B305219740F75D9A5B9ADF91B5
:100BE000CF911F910F910C94BE020F931F93CF933F
:100BF000DF9301E311E0CAE0D5E08C2F0E94B3053A
:100C00004D9902C082E001C080E04B9B8160F801F9
:100C100092918F01981719F08083D09300018C2F47
:100C20000E94B305C15048F78091000187FD1CC0A8
:100C30008150809300018F3F39F08FE99FE0019749
:100C4000F1F700C0000010C080E090E0FC01EF5C14
:100C5000FE4FDC01AA5DBE4F1A962C9122870197A8
:100C6000853FEFEF9E0791F70E94C00281E0DF9180
:100C7000CF911F910F91089591E001C0990F8A952E
:100C8000EAF72AE030E040E050E061E070E0F9018E
:100C9000EF5CFE4F8081892349F0FB01022E02C0E8
:100CA000EE0FFF1F0A94E2F74E2B5F2B2150310904
:100CB00070F7CA0108950895CF9381E00E943C0621
:100CC0000E94D917C82F80E00E943C060E94D917C5
:100CD0008C0FCF91089580914C0108950895CF9382
:100CE000DF9300D01F92CDB7DEB72091B901243039
:100CF00021F523E029839B838A8381E08093E900A7
:100D00008FEF9091E800815095FD06C095ED9A9582
:100D1000F1F700008111F5CF8091E80085FF0DC04B
:100D200040E050E063E070E0CE0101960E94A1082F
:100D30008091E8008E778093E8000F900F900F90DD
:100D4000DF91CF910895CF93DF9300D01F92CDB75D
:100D5000DEB72091B901243021F522E029839B835D
:100D60008A8381E08093E9008FEF9091E8008150C1
:100D700095FD06C095ED9A95F1F700008111F5CF2C
:100D80008091E80085FF0DC040E050E063E070E036
:100D9000CE0101960E94A1088091E8008E77809391
:100DA000E8000F900F900F90DF91CF910895CF93AF
:100DB000DF932091B901243009F048C0EC01809103
:100DC0000B018823E1F080910C018823C1F082E0BF
:100DD0008093E9008FEF9091E800815095FD06C067
:100DE00095E19A95F1F700008111F5CF8091E80027
:100DF00085FF2CC040E050E060E170E017C081E06A
:100E00008093E9008FEF9091E800815095FD06C036
:100E100095ED9A95F1F700008111F5CF8091E800EA
:100E200085FF14C040E050E068E070E0CE010E9411
:100E3000A1088091E8008E778093E80080E1FE01B0
:100E4000ACE3B1E001900D928A95E1F7DF91CF918B
:100E500008958091B801811109C00E94360A0E944C
:100E6000930A8091E20084608093E20008951092DA
:100E7000B8010895089508950C941E1842E061EC9D
:100E800081E00E94B00942E161EC82E00C94B0097B
:100E90008091BB01833009F453C030F4813071F08C
:100EA000823009F48CC008958A3009F478C08B3000
:100EB00009F45EC0893009F09AC020C08091BA015F
:100EC000813A09F094C08091E800877F8093E80020
:100ED0008091BE019091BF01892B21F460E18CE3E8
:100EE00091E003C060E080E090E070E00E94EC08D8
:100EF0008091E8008B778093E80008958091BA0193
:100F0000813209F074C08091BE019091BF010297B7
:100F100008F06DC08091E800877F8093E8008091A1
:100F2000E80082FD05C08091B9018111F8CF5FC052
:100F30008091F10080934C018091E8008B7753C041
:100F40008091BA01813A09F052C08091BE0190911E
:100F5000BF01892B09F04BC08091E800877F809307
:100F6000E8008091E80080FFFCCF80910B0136C043
:100F70008091BA018132D9F58091BE019091BF0173
:100F8000892BA9F58091E800877F8093E8000E9473
:100F9000E5098091BC0180930B010C94651180914F
:100FA000BA01813221F58091E800877F8093E800C3
:100FB0000E94E5098091BD0180934D0108958091C3
:100FC000BA01813AA1F48091E800877F8093E8001C
:100FD0008091E80080FFFCCF80914D018093F1006B
:100FE0008091E8008E778093E8000C94E5090895DD
:100FF00084B7877F84BF88E10FB6F8948093600040
:10100000109260000FBE90E080E80FB6F8948093D5
:101010006100909361000FBE0E947D0D0E94360A10
:101020000E94930A8091E20084608093E2007894A9
:101030000E94190D0E947F0D81E091E00E94340D05
:101040008091B901853069F40E94E5178091B7015C
:101050008823B1F30E941018882391F30E948B0813
:10106000EFCF0E94890DECCF292F33272330310594
:10107000C9F064F42130310581F02230310509F0E6
:1010800042C08BE390E02EEC31E041C021323105CB
:10109000F1F02232310549F136C082E190E029E0D9
:1010A00032E035C099278130910541F082309105B9
:1010B00041F0892B41F5EAECF1E005C0EAEBF1E003
:1010C00002C0EEE9F1E0849190E09F0120C0662328
:1010D00039F06130C1F489E090E029EF31E017C0C8
:1010E00089E090E020EE31E012C0662339F06130F3
:1010F00051F489E390E02BE132E009C08FE390E006
:1011000024E532E004C080E090E020E030E0FA0125
:1011100031832083089580E189BD82E189BD09B4CE
:1011200000FEFDCF8091D8008F7D8093D800809104
:10113000E00082608093E0008091E00081FDFCCFC0
:101140000895CF92DF92EF92FF920F931F93CF9368
:10115000DF93EC018B016A010E94040A811133C004
:10116000C114D10439F0F60180819181081B190B5B
:10117000C80FD91FE12CF12C0115110519F180912F
:10118000E80085FD16C08091E8008E778093E80026
:10119000C114D10449F0F60180819181E80EF91E55
:1011A000F182E08285E00FC00E94040A882321F3C7
:1011B0000AC089918093F10001501109FFEFEF1AE5
:1011C000FF0ADACF80E0DF91CF911F910F91FF905E
:1011D000EF90DF90CF9008952091C0013091C10130
:1011E0002617370748F06115710539F42091E8009A
:1011F0002E772093E80001C0B90140E06115710528
:10120000A9F12091B901222309F443C0253009F442
:1012100042C02091E80023FD40C02091E80022FD5B
:1012200032C02091E80020FFE9CF4091F3002091E7
:10123000F20030E0342BFC01CF016115710559F04B
:101240002830310540F481918093F100615071099B
:101250002F5F3F4FF1CF41E02830310509F040E0EA
:101260002091E8002E772093E800C8CF4111C9CF24
:101270000AC08091B901882361F0853061F08091C6
:10128000E80083FD0AC08091E80082FFF2CF80E091
:10129000089582E0089583E0089581E00895209103
:1012A000C0013091C1012617370748F0611571055B
:1012B00039F42091E8002E772093E80001C0B901AD
:1012C000FC0120E06115710591F18091B90188233D
:1012D00009F440C0853009F43FC08091E80083FDE7
:1012E0003DC08091E80082FD2FC08091E80080FF22
:1012F000E9CF2091F3008091F20090E0922B6115EC
:10130000710559F08830910540F424912093F10043
:101310003196615071090196F2CF21E0089709F0EA
:1013200020E08091E8008E778093E800CBCF2111F8
:10133000CCCF0AC08091B901882361F0853061F07B
:101340008091E80083FD0AC08091E80082FFF2CF1F
:1013500080E0089582E0089583E0089581E0089593
:10136000982F973058F59093E900981739F07091BD
:10137000EC002091ED005091F00003C0242F762F57
:1013800050E021FF19C03091EB003E7F3093EB001D
:101390003091ED003D7F3093ED003091EB003160F6
:1013A0003093EB007093EC002093ED005093F0002D
:1013B0002091EE0027FF07C09F5FD3CF8F708093EF
:1013C000E90081E0089580E008958091BA0187FFE7
:1013D00011C08091E80082FD05C08091B9018111A2
:1013E000F8CF11C08091E8008B770BC08091B901D4
:1013F000882349F08091E80080FFF8CF8091E800D1
:101400008E778093E80008952091E4003091E50004
:1014100095E64091EC00842F817040FF22C08091BE
:10142000E80080FD1CC08091B901882391F08530CF
:1014300091F08091EB0085FD10C04091E400509147
:10144000E5004217530729F39A01915011F784E000
:10145000089582E0089583E0089581E0089580E092
:1014600008954091E80042FFDECF08950E94A40A4B
:101470000E94AC0AE0EEF0E0808181608083E8EDBC
:10148000F0E080818F77808319BCA7EDB0E08C916C
:101490008E7F8C9380818F7E80831092B801089517
:1014A0000F931F93CF93DF930E94A40A0E94AC0A6C
:1014B000C8EDD0E088818F778883888180688883B1
:1014C00088818F7D888319BC1092B9011092B50173
:1014D0001092B7011092B60100EE10E0F801808181
:1014E0008B7F808388818160888342E060E080E038
:1014F0000E94B009E1EEF0E080818E7F8083E2EE11
:10150000F0E0808181608083808188608083F80141
:1015100080818E7F8083888180618883DF91CF91F5
:101520001F910F910895E8EDF0E080818F7E808318
:10153000E7EDF0E080818160808384E082BF81E01C
:101540008093B8010C94500AE8EDF0E080818E7F22
:1015500080831092E20008951092DA001092E10068
:1015600008951F920F920FB60F9211242F933F935D
:101570004F935F936F937F938F939F93AF93BF939B
:10158000EF93FF938091E10082FF0BC08091E20016
:1015900082FF07C08091E1008B7F8093E1000E9471
:1015A000180D8091DA0080FF1FC08091D80080FF65
:1015B0001BC08091DA008E7F8093DA008091D90081
:1015C00080FF0DC080E189BD82E189BD09B400FEC4
:1015D000FDCF81E08093B9010E94290705C019BCA5
:1015E0001092B9010E9437078091E10080FF19C075
:1015F0008091E20080FF15C08091E2008E7F809391
:10160000E2008091E20080618093E2008091D80046
:1016100080628093D80019BC85E08093B9010E9454
:101620003B078091E10084FF30C08091E20084FF9D
:101630002CC080E189BD82E189BD09B400FEFDCFE7
:101640008091D8008F7D8093D8008091E1008F7EBB
:101650008093E1008091E2008F7E8093E200809190
:10166000E20081608093E2008091B501882311F04F
:1016700084E007C08091E30087FD02C081E001C0E3
:1016800083E08093B9010E943C078091E10083FFD1
:1016900029C08091E20083FF25C08091E100877F0F
:1016A0008093E10082E08093B9011092B5018091AE
:1016B000E1008E7F8093E1008091E2008E7F809335
:1016C000E2008091E20080618093E20042E060E00D
:1016D00080E00E94B0098091F00088608093F00063
:1016E0000E943A07FF91EF91BF91AF919F918F9127
:1016F0007F916F915F914F913F912F910F900FBE0E
:101700000F901F9018951F920F920FB60F921124F1
:101710002F933F934F935F936F937F938F939F93F9
:10172000AF93BF93CF93DF93EF93FF93C091E90003
:10173000CF708091EC00D82FD17080FDD0E810924E
:10174000E9008091F000877F8093F00078940E94F8
:10175000C70B1092E9008091F00088608093F00040
:10176000CD2BCF70C093E900FF91EF91DF91CF9126
:10177000BF91AF919F918F917F916F915F914F91A9
:101780003F912F910F900FBE0F901F9018951F93B0
:10179000CF93DF93CDB7DEB7AA970FB6F894DEBF2D
:1017A0000FBECDBFEAEBF1E088E08E0F9091F10023
:1017B00091938E13FBCF0E9448078091E80083FF2E
:1017C0001FC18091BA019091BB01492F50E04A306E
:1017D000510508F015C1FA01EA5AFF4F0C948C1B11
:1017E000803881F0823809F00BC18091BE018F7082
:1017F0008093E9008091EB0085FB882780F91092A7
:10180000E90006C08091B6019091B7019111826004
:101810009091E800977F9093E8008093F1001092F8
:10182000F100C8C0282F2D7F09F0EAC0882319F0E5
:10183000823061F0E5C08091BC01813009F0E0C0E8
:10184000933009F080E08093B7012BC08091BC01F8
:10185000811127C08091BE018F7009F4D1C080939F
:10186000E9002091EB0020FF1CC0933021F480910F
:10187000EB00806214C09091EB0090619093EB00BC
:1018800021E030E0A90102C0440F551F8A95E2F71C
:101890004093EA001092EA008091EB008860809308
:1018A000EB001092E9008091E800877F86C08111EB
:1018B000A7C01091BC011F778091E3008078812B35
:1018C0008093E3008091E800877F8093E8000E9486
:1018D000E5098091E80080FFFCCF8091E3008068FB
:1018E0008093E300111102C082E001C083E0809385
:1018F000B90186C08058823008F082C08091BC0156
:101900009091BD018C3D53E0950779F583E08A8382
:101910008AE289834FB7F894DE01139620E03EE017
:1019200051E2E32FF0E050935700E49120FF03C011
:10193000E295EF703F5FEF708E2F90E0EA3010F08D
:10194000C79601C0C0968D939D932F5F243149F7B0
:101950004FBF8091E800877F8093E8006AE270E0E3
:10196000CE0101960E94EC0814C0AE014F5F5F4F9C
:101970006091BE010E943408BC01009709F440C088
:101980009091E800977F9093E80089819A810E9466
:101990004F098091E8008B778093E80031C0803850
:1019A00079F58091E800877F8093E8008091B50108
:1019B0008093F1008091E8008E778093E8000E9488
:1019C000E5091EC081111CC09091BC019230C0F489
:1019D0008091E800877F8093E8009093B5010E9492
:1019E000E5098091B501811106C08091E30087FD72
:1019F00002C081E001C084E08093B9010E943E07EB
:101A00008091E80083FF0AC08091E800877F80937F
:101A1000E8008091EB0080628093EB00AA960FB6FD
:101A2000F894DEBF0FBECDBFDF91CF911F91089517
:101A30000895CF938091B9018823A1F0C091E90066
:101A4000CF709091EC00892F817090FD80E8C82BB9
:101A50001092E9008091E80083FD0E94C70BCF70CF
:101A6000C093E900CF910895909353018093520160
:101A70000895E0915201F0915301309721F00190C7
:101A8000F081E02D099480E00895E0915201F091F9
:101A90005301309721F00280F381E02D09940895DD
:101AA00020915001309151018217930771F090936A
:101AB000510180935001E0915201F0915301309710
:101AC00021F00680F781E02D0994089520914E01C0
:101AD00030914F018217930771F090934F018093DB
:101AE0004E01E0915201F0915301309721F00084B2
:101AF000F185E02D0994089508950C947C0D0E94C1
:101B00004D180E94C7050E941A1981E080930C01AC
:101B100008955F926F927F928F929F92AF92BF9241
:101B2000CF92DF92EF92FF920F931F93CF93DF93A9
:101B300000D000D01F92CDB7DEB70E94F50599E521
:101B4000C92E91E0D92E01E010E0AA24A394B12C73
:101B5000502E802F0E943C064C01F601729062903C
:101B60006F01682679266114710431F4012B09F4A0
:101B70003BC000E010E0ECCF8091AE0181FD0E94FF
:101B80005B062AE030E07501022E02C0EE0CFF1C5D
:101B90000A94E2F7C70186219721892B09F129834D
:101BA0005A828E209F2091E0892809F490E09B833F
:101BB0000E9456188160782F9D838C8349815A81B9
:101BC0006B818D810E94390E000F111FF801EB5AB5
:101BD000FE4F80819181E826F926F182E08214C0CF
:101BE0002150310980F6C2CF8FEF89838A831B820F
:101BF0000E9456188160782F9D838C8349815A8179
:101C00006B818D810E94390E109154010E94390D13
:101C10001817D1F00E94390D809354010F900F9046
:101C20000F900F900F90DF91CF911F910F91FF9028
:101C3000EF90DF90CF90BF90AF909F908F907F906C
:101C40006F905F900C94B1050F900F900F900F90D4
:101C50000F90DF91CF911F910F91FF90EF90DF9048
:101C6000CF90BF90AF909F908F907F906F905F903C
:101C70000895CF93DF93CDB7DEB72B970FB6F894C7
:101C8000DEBF0FBECDBF4F83588769877A878B87AA
:101C9000DE01119686E0FD0111928A95E9F785E053
:101CA000FE01379601900D928A95E1F749815A819C
:101CB0006B817C818D819E810E9403142B960FB6CF
:101CC000F894DEBF0FBECDBFDF91CF910895CF93C3
:101CD000882309F499C0C82F8CEF8C0F813A48F4FF
:101CE0008C2F0E944A1B81118FC08C2F0E94DD1601
:101CF0000CC080E28C0F883058F4C77081E001C0BE
:101D0000880FCA95EAF70E946317CF910C94AA171F
:101D10008BE58C0F833078F4C53A29F0C63A31F060
:101D200083E890E005C081E890E002C082E890E09E
:101D3000CF910C94500D88E58C0F833108F064C06E
:101D4000C83A39F1C93A41F1CA3A49F1CB3A51F1AD
:101D5000CC3A59F1CD3A61F1C03B69F1CE3A71F11B
:101D6000CF3A79F1C13B81F1C23B89F1C33B91F19B
:101D7000C43B99F1C53BA1F1C63BA9F1C73BB1F109
:101D8000C83BB9F1C93BC1F1CA3BC9F180E090E061
:101D900038C082EE90E035C089EE90E032C08AEE25
:101DA00090E02FC085EB90E02CC086EB90E029C03E
:101DB00087EB90E026C08CEC90E023C08DEC90E0A7
:101DC00020C083E891E01DC08AE891E01AC082E952
:101DD00091E017C084E991E014C081E292E011C063
:101DE00083E292E00EC084E292E00BC085E292E0D2
:101DF00008C086E292E005C087E292E002C08AE273
:101E000092E0CF910C94660DCF910895882329F12B
:101E10009CEF980F913A18F40E941F170DC090E2A2
:101E2000980F983058F4877091E001C0990F8A9507
:101E3000EAF7892F0E9469170C94AA179BE5980F5F
:101E4000933020F480E090E00C94500D885A833158
:101E500020F480E090E00C94660D0895882321F032
:101E60000E9463170C94AA170895882321F00E94FA
:101E700069170C94AA1708957F928F929F92AF9240
:101E8000BF92CF92DF92EF92FF920F931F93CF9367
:101E9000DF931F92CDB7DEB77C01C62E772EFC01F3
:101EA000158112951F70028101110E9480170E94F6
:101EB000D616882379F0002369F080E28C0D8830F3
:101EC00048F082E00E94BF160E94D61691E0D82EFC
:101ED000D92601C0D12CE72DE295EF70F0E0E05A51
:101EE000FF4F0C948C1B872D807F172D1F7088232C
:101EF00011F01295107F002389F0112309F46DC1B0
:101F000080E28C0D883020F4812F0E94631703C07B
:101F1000812F0E9473170E94AA175FC18C2D0E9407
:101F2000060F112309F472C180E28C0D883020F471
:101F3000812F0E94691703C0812F0E9479170E9488
:101F4000AA1764C1872D807F972D9F70803211F46E
:101F5000892F03C0892F8295807FCC2021F0F1E06A
:101F6000CF16A1F01DC0002339F0112319F1113053
:101F700009F50E9493174AC1112319F0113009F491
:101F800045C189830E9496178981E5C0002321F00D
:101F9000163008F03BC10EC0153008F037C1DBC069
:101FA000002359F0112331F0F701958190FF15C1FD
:101FB0009F7095830E942E0F29C1112309F4CBC075
:101FC00012C1872D837009F052C001111FC18C2DE1
:101FD000829586958770880F880F9C2D9F70892E1B
:101FE000912CA12CB12C082E04C0880C991CAA1C81
:101FF000BB1C0A94D2F7C4FE14C00FE010E020E02E
:1020000030E0B901A80104C0440F551F661F771FB7
:102010008A95D2F7CB01BA0160957095809590951D
:1020200003C060E070E0CB01272D26952695237034
:1020300030E02230310569F02330310589F068291C
:1020400079298A299B292130310571F00E944B158D
:10205000DDC0682979298A299B290E946715D6C085
:102060000E944B15C501B4010E942F15CFC000235B
:1020700019F0872D817001C08695882309F4C6C0A8
:102080008C2D829586958770880F880F9C2D9F7068
:10209000892E912CA12CB12C082E04C0880C991CDF
:1020A000AA1CBB1C0A94D2F7C4FE14C00FE010E0B7
:1020B00020E030E0B901A80104C0440F551F661F9D
:1020C000771F8A95D2F7CB01BA01609570958095FC
:1020D000909503C060E070E0CB01272D26952695F2
:1020E0002370422F50E04230510569F043305105D2
:1020F00089F0682979298A299B294130510571F095
:102100000E94251683C0682979298A299B290E9463
:1021100041167CC00E942516C501B4010E94091613
:1021200075C08C2D90E0FC01E05EF109E531F10510
:1021300008F04FC0E059FF4F0C948C1B1C2D1F70F2
:10214000872D8F71002321F00E94A215812F32CF9D
:102150000E94C315812F0E94350F58C0002341F003
:10216000153008F053C0872D8F710E94E8154EC0BE
:10217000163008F04BC0F7CF002339F0872D8F7150
:102180000E94A21543C00023C9F3872D8F710E94BE
:10219000C3153CC0002329F0872D8F710E948D1537
:1021A00035C00E94831532C0002351F0172D1F71D6
:1021B000812F0E94A21563E0812F0E94B61626C0CF
:1021C00081E00E94BF16123008F182E00E94BF1623
:1021D0001DC0002331F0112389F28C2D0E94670E5F
:1021E00015C0112391F28C2D0E94060F0FC0472DB0
:1021F0004F706C2DC7010E949D010E94A71406C05C
:10220000472D4F706C2DC7010E949C01DD20F9F015
:102210000E94B21680FD1BC0F70112820E94AC160C
:102220000E94A215C7010E9436110E94AC160F90A1
:10223000DF91CF911F910F91FF90EF90DF90CF90A2
:10224000BF90AF909F908F907F900C94C3150F908C
:10225000DF91CF911F910F91FF90EF90DF90CF9082
:10226000BF90AF909F908F907F9008950F931F9392
:10227000CF93DF93EC01888199812B813C81232BC3
:10228000B9F09F3F11F48F3F99F0CE010E941602E2
:10229000882371F0688179818A810E94A8168C0157
:1022A0000E945D160E942415B801CE010E943C0FC9
:1022B000DF91CF911F910F9108950E9480170E9486
:1022C00090170E9455170C94AA170E9470170C942F
:1022D0005D110E949D16292F22952F7030E02C3021
:1022E00031054CF42A3031056CF42250310922308A
:1022F0003105A8F407C02C30310569F02F303105C5
:1023000051F00DC0803F69F018F4803E40F409C0E0
:10231000843F29F406C093FB882780F9089580E064
:10232000089581E00895CF93DF9300D000D01F92ED
:10233000CDB7DEB70F900F900F900F900F90DF91F9
:10234000CF910895CF93DF9300D000D000D0CDB7C8
:10235000DEB726960FB6F894DEBF0FBECDBFDF9175
:10236000CF9108951F93CF93DF93C091590116E049
:1023700080915A01C81799F0D0E01C9FF0011D9F71
:10238000F00D1124E55AFE4F408151816281738125
:10239000848195810E94A2112196C770E9CFDF91B7
:1023A000CF911F91089540918B0150918C016091C4
:1023B0008D0170918E0180918F01909190010C940C
:1023C000A2118091900182958F7009F054C0809184
:1023D0008D01882309F44FC080915901A0915A01C1
:1023E00060918B0170918C0140918E0150918F0111
:1023F000B6E08A1709F43FC090E041155105C1F1DC
:102400007F3F11F46F3FA1F1B89FF001B99FF00D2C
:102410001124E55AFE4F218172132AC020816213D4
:1024200027C02281211124C023813481241735073C
:1024300010F421503109241B350B283C3105C0F420
:10244000209190012F7020612093900126E0289F19
:10245000F001299FF00D1124E05AFE4F80818F700A
:10246000806180838BE891E00E9436110C94B21158
:1024700001968770BECF0895CF92DF92EF92FF92C0
:102480000F931F93CF93DF93CDB7DEB762970FB64D
:10249000F894DEBF0FBECDBF8C0185E0F801DE01F0
:1024A0001D9601900D928A95E1F7D8014C911196F5
:1024B0005C91119712966C9112971396CD90DC90C7
:1024C000149730918B0170918C0180918E019091C5
:1024D0008F01009709F46BC17F3F19F43F3F09F466
:1024E00066C1E0908D01EE2009F4C0C020919001FA
:1024F000C816D90628F0F601E81BF90BCF0104C075
:10250000809590958C0D9D1DFF24F394883C91053A
:1025100078F0F12C207F09F0C6C07C2DD98AC88ABA
:1025200089890E9493118BE891E00E943611B1C015
:10253000822F807F09F046C0751314C0341312C077
:10254000611110C02F702061209390010E94D3115F
:102550008BE891E00E94361180919001D801159688
:102560008C932EC0CD2819F15F3F11F44F3FF9F045
:10257000F62E61111CC08091590120915A0136E05C
:10258000821709F45AC090E0389FF001399FF00D8E
:102590001124E55AFE4F7181571306C0708147130D
:1025A00003C07281711103C001968770E9CFF62EC6
:1025B000662309F418C18091900181608093900195
:1025C000F12C11C1751308C0341306C0611104C089
:1025D00080919001D801C3C04D875E878D859E850F
:1025E0006A8B0E9469116A898823E1F16623D1F11F
:1025F00020919001822F82958F7090E0029774F065
:1026000080918B0190918C0198878F831986DB864E
:10261000CA862C87CE0107960E94361186E0F80103
:10262000ABE8B1E001900D928A95E1F70E94E111CB
:102630000E94D311FF24F394D6C04D875E878D8509
:102640009E850E949D16292F22952F7030E0223002
:1026500031050CF0BCC09F7009F0B6C0805E8830B8
:1026600008F4C1C0C8010E943611E4CFC816D906CB
:1026700008F453C0F601E81BF90BCF01883C910523
:1026800008F450C0F12C7C2DD98AC88A89890E940F
:102690009311EBE8F1E086E0DF011D928A95E9F7FE
:1026A0000E94D311A0C0751314C0341312C061115D
:1026B00010C080919001F8018583C8010E943611F5
:1026C00086E0EBE8F1E0DF011D928A95E9F7FE2C48
:1026D0008AC04D875E878D859E856A8B0E946911B1
:1026E0006A89882309F4BECF662309F4BBCF209101
:1026F0009001822F82958F7090E002970CF48ECF1C
:1027000080918B0190918C019A8389831B82DD8259
:10271000CC822E83CE0101967FCF809590958C0D33
:102720009D1DACCFF62E662309F49CCF75132EC0E9
:1027300034132CC02091900120FD1FC0822F829560
:102740008F70D9F0D80115962C9315978F3049F0DA
:102750008F5F982F9295907F822F8F70892B15967F
:102760008C93C8010E94361186E0F801ABE8B1E015
:1027700001900D928A95E1F793CF86E0F801ABE8DE
:10278000B1E001900D928A95E1F72DC04D875E87EB
:102790008D859E850E946911811140CF80919001A5
:1027A000816080939001C8010E9436111CC066238D
:1027B00009F458CF4D875E878D859E850E946911EB
:1027C000882309F44FCF2ACF811148CF0CC0243081
:1027D00031050CF047CF9F7009F440CFF801958187
:1027E000907F09F03BCF8F2D62960FB6F894DEBF35
:1027F0000FBECDBFDF91CF911F910F91FF90EF9052
:10280000DF90CF9008951F93CF93DF93CDB7DEB7BE
:102810002C970FB6F894DEBF0FBECDBF4F835887FD
:1028200069877A878B879C87CE0107960E943C1226
:10283000882369F08F8198852A853B85232BF1F1C8
:102840009F3F09F063C08F3F09F060C037C086E04A
:10285000FE013796DE01119601900D928A95E1F7FF
:102860006F817885EA85FB85309741F17F3F11F4D0
:102870006F3F21F120915A0130E0C9010196877024
:1028800099274091590150E08417950709F447C0F2
:1028900069837A83FD83EC8396E0929FD001939FB6
:1028A000B00D1124A55ABE4FFE01319601900D9234
:1028B0009A95E1F780935A010E94B21116E0809137
:1028C000590190915A018917C1F1189FC001112433
:1028D000855A9E4F0E943C12882379F1E09159015C
:1028E0001E9FF0011124E55AFE4F40815181628103
:1028F0007381848195810E94A2118091590190E099
:1029000001968770992780935901D9CF4F815885B7
:1029100069857A858B859C850E94A211CFCF0E9404
:10292000651110925A0110925901EBE8F1E086E02E
:10293000DF011D928A95E9F7C1CF2C960FB6F89466
:10294000DEBF0FBECDBFDF91CF911F910895EF92F3
:10295000FF920F931F93CF93DF938C01009709F49D
:102960006CC0F12CEE24E394E8012196F8018491E7
:10297000843740F4843008F051C0813081F08230D7
:1029800019F15BC0853709F444C0A8F19CE7980FA2
:10299000903708F052C08F770E94060F41C00E5F3B
:1029A0001F4FFE01C49180E28C0F883048F4C7703D
:1029B0008E2D01C0880FCA95EAF70E94831714C0B4
:1029C0008C2F0E94670E2DC00E5F1F4FFE01C49119
:1029D00080E28C0F883058F4C7708E2D01C0880FAC
:1029E000CA95EAF70E9489170E94AA171AC08C2F6D
:1029F0000E94060F16C00E5F1F4FFE01C491CC232C
:102A000081F08FE99FE00197F1F700C00000C1500D
:102A1000F6CF0E5F1F4FFE01F49003C00E94670EB9
:102A20008E018F2D882309F49FCFEFE9FFE03197C6
:102A3000F1F700C000008150F5CFDF91CF911F91D9
:102A40000F91FF90EF900895089560939501709312
:102A5000960180939701909398010C945D110F93C8
:102A60001F9300919501109196012091970130914B
:102A70009801DC01CB01802B912BA22BB32B8093EF
:102A8000950190939601A0939701B09398011F919F
:102A90000F910C945D110F931F930091950110916C
:102AA00096012091970130919801DC01CB018023A0
:102AB0009123A223B3238093950190939601A09331
:102AC0009701B09398011F910F910C945D110F9392
:102AD0001F930091950110919601209197013091DB
:102AE0009801DC01CB0180279127A227B32780938F
:102AF000950190939601A0939701B09398011F912F
:102B00000F910C945D11109291011092920110920C
:102B10009301109294010C945D1141E050E060E04B
:102B200070E004C0440F551F661F771F8A95D2F7C7
:102B3000409391015093920160939301709394019B
:102B40000C945D1141E050E060E070E004C0440F7F
:102B5000551F661F771F8A95D2F78091910190913A
:102B60009201A0919301B0919401482B592B6A2BAB
:102B70007B2B40939101509392016093930170934A
:102B800094010C945D1141E050E060E070E004C0FD
:102B9000440F551F661F771F8A95D2F740955095B1
:102BA000609570958091910190919201A09193010F
:102BB000B0919401482359236A237B2340939101C8
:102BC0005093920160939301709394010C945D1162
:102BD00041E050E060E070E004C0440F551F661F04
:102BE000771F8A95D2F78091910190919201A091DF
:102BF0009301B0919401482759276A277B27409376
:102C000091015093920160939301709394010C94FD
:102C10005D110F931F9300919101109192012091EA
:102C2000930130919401DC01CB01802B912BA22BDD
:102C3000B32B8093910190939201A0939301B09351
:102C400094011F910F910C945D110F931F930091AC
:102C50009101109192012091930130919401DC0136
:102C6000CB0180239123A223B323809391019093DE
:102C70009201A0939301B09394011F910F910C9432
:102C80005D110F931F93009191011091920120917A
:102C9000930130919401DC01CB0180279127A22779
:102CA000B3278093910190939201A0939301B093E5
:102CB00094011F910F910C945D110895CF92DF92B2
:102CC000EF92FF920F931F93CF93DF938C01C090ED
:102CD0009501D0909601E0909701F0909801809135
:102CE000910190919201A0919301B0919401C82A11
:102CF000D92AEA2AFB2ACFE1D0E0D701C6010C2E5F
:102D000004C0B695A795979587950A94D2F780FF4A
:102D100006C0B8018C2F0E941705019721F4219756
:102D200060F780E001C08C2FDF91CF911F910F9150
:102D3000FF90EF90DF90CF900895CF93DF93EC0159
:102D40000E945E16BE010E941705DF91CF91089583
:102D5000CB010E949D1608958091990185958595D6
:102D600085950895809199018770089598E0899FCD
:102D700090011124262B209399010C94A2152091E7
:102D800099018095822380939901982F977069F417
:102D900030E0482F552747FD50952417350729F077
:102DA0008595859585950C94C31508959091990105
:102DB000977081E009F480E0089590910B019923C8
:102DC00021F090910C01911109C020910D013091D9
:102DD0000E01F90132969FEF40E01FC0982F9695A3
:102DE000969596959F3050F5E0910D01F0910E016A
:102DF000E90FF11D877021E030E0A90102C0440F06
:102E0000551F8A95E2F7CA019181892B8183089524
:102E10009F3F39F04F5F4E3041F051915813F8CF3A
:102E20000DC05111F7CF942FF5CF9F3F39F0F90125
:102E3000E90FF11D97FDFA95828308950895909109
:102E40000B01992321F090910C01911109C020915F
:102E50000D0130910E01F9013296205F3F4F1FC0E6
:102E6000982F9695969596959F30F0F4E0910D01E8
:102E7000F0910E01E90FF11D877021E030E0A9010A
:102E800002C0440F551F8A95E2F7CA0180959181CF
:102E90008923818308953196E217F30729F0908101
:102EA0009813F9CF1082F7CF089581E090E0E09178
:102EB0000D01F0910E01E80FF91F1082019680318B
:102EC0009105A9F708959091AD01892B8093AD01EB
:102ED000089580959091AD0189238093AD01089567
:102EE0001092AD0108959091AC01892B8093AC01B3
:102EF000089580959091AC0189238093AC01089549
:102F00001092AC0108959091AB01892B8093AB0195
:102F1000089580959091AB0189238093AB0108952A
:102F20001092AB01089580939A01089510929A012E
:102F3000089580910D0190910E01FC0131969C0144
:102F4000205F3F4F80E0919191118F5FE217F3076F
:102F5000D1F70895E0910D01F0910E018091AD013E
:102F60008083E0910D01F0910E0190818091AC0180
:102F7000892B8083E0910D01F0910E019081809169
:102F8000AB01892B808380919A01882361F0E091C5
:102F90000D01F0910E019081892B80830E94991779
:102FA000811110929A0180910D0190910E010C9463
:102FB000450D20E0009739F0AC01415051098423C0
:102FC00095232F5FF7CF822F08958091B901843028
:102FD00021F11092AF0120E488E190E00FB6F8945F
:102FE000A895809360000FBE2093600080E00E944F
:102FF000B10583B7817F846083BF83B7816083BF5E
:103000007894889583B78E7F83BF88E10FB6F89454
:1030100080936000109260000FBE08950895089597
:103020000E940E180E94F5050E940F180E945C066F
:1030300091E0811101C090E0892F08950E946511EF
:103040000E94390D0C94B1051F920F920FB60F928A
:1030500011248F939F93AF93BF938091AF01811100
:1030600013C08091B0019091B101A091B201B091D3
:10307000B3014196A11DB11D8093B0019093B101A0
:10308000A093B201B093B301BF91AF919F918F9183
:103090000F900FBE0F901F90189582E084BD93E0B3
:1030A00095BD9AEF97BD80936E0008952FB7F89461
:1030B0008091B0019091B101A091B201B091B301A2
:1030C0002FBF0895CF92DF92EF92FF920F931F933D
:1030D0002FB7F8944091B0015091B1016091B201C5
:1030E0007091B3012FBF6A017B01EE24FF248C0194
:1030F00020E030E0C016D106E206F30610F441509D
:1031000051099A01281B390BC9011F910F91FF909A
:10311000EF90DF90CF9008951F920F920FB60F920D
:1031200011248F939F93AF93BF938091B00190919F
:10313000B101A091B201B091B3010196A11DB11DE1
:103140008093B0019093B101A093B201B093B30109
:10315000BF91AF919F918F910F900FBE0F901F90D5
:1031600018950E94360AF8942FEF87EA91E62150CD
:1031700080409040E1F700C0000087E090EBDC0168
:103180008093C3019093C401A093C501B093C6017D
:103190009CE088E10FB6F894A895809360000FBE7C
:1031A00090936000FFCFBF92CF92DF92EF92FF9299
:1031B0000F931F93CF93DF93B82E11E0EE24E39487
:1031C000F12C012F812F0E943C066C01CAE0D0E057
:1031D00097010C2E02C0220F331F0A94E2F72C2114
:1031E0003D21232B49F06C2F712F80E00E94C202F9
:1031F000B81202C081E006C0219750F710E001111B
:10320000E0CF80E0DF91CF911F910F91FF90EF9081
:10321000DF90CF90BF900895CF93C82F8CE20E948B
:10322000D318882321F08C2FCF910C94D31880E0F1
:10323000CF910895CF930E94611A811102C00E941C
:10324000471AC5E6C15049F00E94F5058FE39CE995
:103250000197F1F700C00000F5CF89E20E940C1938
:10326000811113C18AE20E940C1981110E94471A30
:1032700085E00E940C1981110E94B1180E946C1AFD
:103280008093AE0187E00E940C198823A9F18BE19D
:103290000E940C19882351F08091AE0181FB2227F6
:1032A00020F991E0922790FB81F90EC08EE00E94F8
:1032B0000C19882361F08091AE0182FB222720F94E
:1032C00091E0922790FB82F98093AE0115C080E1D6
:1032D0000E940C199091AE01882341F093FB2227A4
:1032E00020F981E0822780FB93F904C0892F809523
:1032F00080FB90F99093AE018091AE010E94701A0C
:103300000E947E1A8093C20180EE0E940C198823CD
:1033100041F08091C201982F909590FB80F98093A5
:10332000C20189E30E940C19882359F08091C201DF
:1033300081FB222720F991E0922790FB81F980936D
:10334000C20182EE0E940C19882359F08091C201BB
:1033500082FB222720F991E0922790FB82F980934B
:10336000C20186EE0E940C19882359F08091C20197
:1033700083FB222720F991E0922790FB83F9809329
:10338000C20183EE0E940C19882359F08091C2017A
:1033900084FB222720F991E0922790FB84F9809307
:1033A000C20185E30E940C19882359F08091C20163
:1033B00085FB222720F991E0922790FB85F98093E5
:1033C000C20181E30E940C19882359F08091C20147
:1033D00086FB222720F991E0922790FB86F98093C3
:1033E000C20181E10E940C19882359F08091C20129
:1033F00087FB222720F991E0922790FB87F98093A1
:10340000C2018091C2010E94821A8091C20187FB91
:10341000882780F980930C0187E20E940C19C82F3D
:103420008EE10E940C198111C2608FE10E940C197B
:103430008111C46080E20E940C198111C86081E290
:103440000E940C198111C06182E20E940C19811145
:10345000C06283E20E940C198111C06484E20E9460
:103460000C19882311F0C06802C0CC2329F08C2FDE
:103470000E94791A6C2F03C00E94751A682F70E0A1
:1034800080E090E0CF910C942515CF9108956DEEDA
:103490007EEF80E090E00E94B21B60E082E090E06E
:1034A0000E94A01B60E083E090E00E94A01B60E00F
:1034B00084E090E00E94A01B60E085E090E00C9426
:1034C000A01B80E090E00E949A1B21E08D3E9E4F61
:1034D00009F020E0822F089582E090E00C94921B86
:1034E000682F82E090E00C94A01B83E090E00C94A5
:1034F000921B682F83E090E00C94A01B84E090E086
:103500000C94921B682F84E090E00C94A01B0F9306
:103510001F938B3109F475C0A0F58E3009F484C077
:10352000C0F4873009F45BC068F4863009F0AAC0A3
:103530008091AE01817F8E7F8093AE0181E0809388
:10354000B401A1C0883009F496C08B3009F493C04F
:1035500099C0813109F472C068F4803109F092C0D9
:103560008091AE0183FB222720F991E0922790FB06
:1035700083F950C0863109F47EC0893109F47BC0DB
:1035800081C0853309F479C068F4873209F475C0C5
:1035900028F48E3108F476C08D515AC0893209F46E
:1035A0006CC070C0833438F48A3308F050C088335C
:1035B00009F461C067C0833409F45FC0883409F03E
:1035C00061C00E9465110FEF13ED20E30150104020
:1035D0002040E1F700C000000E94B1184CC090915B
:1035E000AE01892F8095817080FB90F929F096605B
:1035F00098609093AE0147C0997F977F9093AE01FA
:103600003AC08091AE0181FB222720F991E09227F8
:1036100090FB81F98093AE01992369F18091AE010D
:1036200081608093AE0127C08091AE0182FB22278A
:1036300020F991E0922790FB82F9ECCF0E9465116E
:1036400090910C0181E0892780930C0114C089536B
:1036500041E050E060E070E08A019B0104C0000F8F
:10366000111F221F331F8A95D2F7C901B8010E948A
:1036700025150E94651181E006C061E070E080E0E0
:1036800090E0F5CF80E01F910F91089580E00895BC
:1036900080E00895CF93C82F8091B401882319F05A
:1036A000813049F031C0E0910D01F0910E0180812F
:1036B000823261F507C0E0910D01F0910E01808129
:1036C000823261F48C2F0E94461B811104C08C2F22
:1036D0000E94871A17C081E090E014C08C2F0E94CE
:1036E000481B81110EC0C43149F018F4CB3049F0A9
:1036F0000FC0C93219F0C83321F00AC01092B401CA
:1037000007C081E0817006C01092B40180E002C061
:1037100080E0F8CFCF910895EE0FFF1F0590F49150
:10372000E02D0994F999FECF92BD81BDF89A9927B1
:1037300080B50895A8E1B0E042E050E00C94BA1BD7
:10374000262FF999FECF92BD81BDF89A019700B45A
:10375000021639F01FBA20BD0FB6F894FA9AF99AFA
:103760000FBE08950196272F0E94A11B0C94A01B49
:10377000DC01CB01FC01F999FECF06C0F2BDE1BD31
:10378000F89A319600B40D9241505040B8F7089520
:04379000F894FFCFDB
:10379400FF6B06D7066E06A3066F0601019B010F99
:0A37A4001F4F5F6F7F6353437949A5
:00000001FF

@ -0,0 +1,935 @@
:100000000C9450010C9494010C9494010C94940160
:100010000C9494010C9494010C9494010C9494010C
:100020000C9494010C9494010C94580B0C942A0C8D
:100030000C94DC180C9494010C9494010C9494018D
:100040000C9494010C9494010C9494010C949401DC
:100050000C9494010C9444190C9494010C94940104
:100060000C9494010C9494010C9494010C949401BC
:100070000C9494010C9494010C9494010C949401AC
:100080000C9494010C9494010C9494010C9494019C
:100090000C9494010C9494010C9494010C9494018C
:1000A0000C9494010C9494010C949401970CB90C49
:1000B000A70DB90CA70DFE0C210DA70D760D890D0E
:1000C000FA0FFA0F29102910B311B311B311B3119C
:1000D0006810B311181118117F118811B311AD11E7
:1000E0002511251125112511251125112511251160
:1000F0002511251125112511251125112511251150
:10010000351143114A1151115B11F1A2028A00D23B
:1001100000D000D100C801C802C829002B0031005E
:10012000C00053005400550056005F00600061009D
:1001300067005C005D005E00570059005A005B00DC
:100140000000620000006300580029002B002C0012
:100150000100C10019011C011D014A0052004B00A1
:10016000E2005000C5004F00E0004D0051004E007D
:1001700000002A0000004C00C600C200C300C400FA
:100180000100C100010001000100010001000100A7
:100190000100010001000100010001000100010057
:1001A000000000500000010001001A03410072002D
:1001B00072006F0077002000500061006400200092
:1001C0003200340000000E034E006F0062006F002A
:1001D0006400790000000403090409023B000201E5
:1001E00000A0FA0904000001030101000921110126
:1001F0000001223F000705810308000A09040100ED
:100200000103000000092111010001223900070546
:1002100082031000011201100100000008EDFE969B
:100220004001000102000105010906A101050719AD
:10023000E029E715002501950875018102050819D7
:100240000129059505750191029501750391010537
:10025000071900297715002501957875018102C0DD
:1002600005010906A101050719E029E71500250187
:10027000950875018102950175088101050819012C
:1002800029059505750191029501750391010507F1
:10029000190029FF150025FF950675088100C0008B
:1002A00011241FBECFEFDAE0DEBFCDBF04B603FEE0
:1002B00024C08091B8019091B901A091BA01B09188
:1002C000BB018730904BA740B04BB9F41092B801F6
:1002D0001092B9011092BA011092BB0114BE84B7FA
:1002E000877F84BF88E10FB6F894809360001092F6
:1002F00060000FBEE0E0FFE3099511E0A0E0B1E08F
:10030000E8E3FAE302C005900D92AA31B107D9F7EC
:1003100011E0AAE1B1E001C01D92A83BB107E1F7ED
:100320000E949F080C941A1D0C94000008950895D3
:1003300081E008950C9497010C9498010C94450267
:10034000279A2F988FEF9FEF9093870080938600D6
:100350008AE08093800089E1809381000C94471C9F
:100360000E94A0010C949601282F81110BC080914E
:100370008000877F8093800010928D0010928C0007
:100380002F9808952F988091800088608093800036
:10039000233019F48FEF9FEF0FC083E090E0821BB2
:1003A0009109880F991F2FEF3FEFA90102C05695C1
:1003B00047958A95E2F7CA0190938D0080938C004F
:1003C00008950895CF93DF93EC016130F1F018F0B8
:1003D0006230E9F155C08A81882309F451C080EE6A
:1003E0000E94EE0E8D81807F803129F486E00E948C
:1003F000EE0E86E006C0803231F48BE10E94EE0EF4
:100400008BE10E948D0F80EE1FC08A818823C1F08E
:100410008D8182958F7090E003971CF482E00E949A
:10042000B50F8D81807F803219F481E00E94B50F75
:100430008D81807F803321F588E50E94EE0E20C0FB
:1004400083E00E94BC0F88E50E948D0F19C08A814D
:10045000882399F08D8182958F7090E002971CF42B
:1004600081E00E94B50F8D8182958F7090E0029798
:100470003CF084E00E94B50F03C085E00E94BC0FF1
:1004800080E090E0DF91CF91089581FF03C0569AFC
:100490005E9A02C056985E9880FF05C03F9A88B168
:1004A0008F6788B908953F984798089581E0089527
:1004B0000C94560208950F931F93CF93DF938C01F2
:1004C000FC01C081D181CE010E940B17BE010E94A8
:1004D0000703EC01B8010E945802882309F48DC07B
:1004E000F8018281882309F44AC080912501811195
:1004F0001FC0C431F0E5DF0709F051C00E945A0265
:1005000081E0809325010E940E199093240180932D
:10051000230110921C0110921E0110921D011092D5
:10052000200110921F01109222011092210165C03A
:1005300080912301909124010E941A19883C910511
:1005400070F480911C01E82FF0E0EE0FFF1FE35ED6
:10055000FE4FD183C0838F5F80931C014EC0C4388F
:1005600080E5D80721F0C538D04501F13AC0F8013F
:100570008281882341F010921A0182E01EC0C438A3
:10058000E0E5DE0759F580911A01811106C086E287
:100590000E94EE0E86E20E948D0F82E01CC0C438DD
:1005A000F0E5DF0741F3C538D045D9F4F801828181
:1005B000882331F010921B0180E20E94B50F1DC00C
:1005C00080911B01811106C087E20E94EE0E87E236
:1005D0000E948D0F80E20E94BC0F0FC0C538D0452D
:1005E00029F381E080931A0180931B01C801DF91F8
:1005F000CF911F910F910C949C0180E0DF91CF91DE
:100600001F910F9108950C94B0010C949A01E72F5B
:10061000F0E096E0899FE00DF11D1124EE0FFF1F21
:10062000EE0FFF1FE60FF11DEE0FFF1FE65EFE4F00
:10063000859194910895880F991FFC01E657F04029
:10064000859194910895880F991FFC01E65FFE4FF4
:100650008591949108950F931F93CF93DF93EC01AD
:10066000811521E39207A0F5C11580E3D80708F0B2
:10067000D7C0C83ED105D8F4C03ED10508F003C2AA
:10068000C83AD10578F4C53AD10508F06AC0C1303E
:10069000D10509F463C008F4F3C1C430D10508F0F2
:1006A000F2C1EEC1CB3BD10508F466C0E9C1C1156A
:1006B00090E2D90708F0AFC0C11521E0D20708F0D9
:1006C000E2C1C03FD10508F4DBC18E0110651BC239
:1006D000C03880E5D80700F5C03790E5D90708F0A5
:1006E000A3C0C11520E5D20709F4ACC050F4CE0177
:1006F000905480319F4008F0C3C1DF708E01106AB2
:1007000002C2C13080E5D80709F4AAC0C43190E51F
:10071000D90708F4ABC0B4C1C33820E5D20709F447
:100720008EC050F4C13890E5D90709F482C008F0B2
:1007300083C000E011EDE7C1C03181E5D80708F4BE
:100740009FC1C11597E5D90708F432C1CE01905772
:100750008115904108F094C1DF708FC101E010E075
:10076000D2C1C53AD10509F490C1C63AD10509F004
:100770008FC102E810E4C7C1C83AD10509F48BC1A2
:10078000C93AD10509F48AC1CA3AD10509F489C127
:10079000CB3AD10509F488C1CC3AD10509F487C117
:1007A000CD3AD10509F486C1C03BD10509F485C114
:1007B000CE3AD10509F484C1CF3AD10509F483C1F9
:1007C000C13BD10509F482C1C23BD10509F481C105
:1007D000C33BD10509F480C1C43BD10509F47FC1F5
:1007E000C53BD10509F47EC1C63BD10509F47DC1E5
:1007F000C73BD10509F47CC1C83BD10509F47BC1D5
:10080000C93BD10509F47AC1CA3BD10509F479C1C4
:1008100000E014E478C1CE019F700E94230374C1EC
:10082000DD278E01106C6FC1CF70DD278E01146D36
:100830006AC100E010ED67C100E012ED64C100E0A4
:1008400013ED61C10E9412128FEF94E32CE08150EE
:1008500090402040E1F700C000000E94691953C198
:100860008091A20181608093A2014DC10E94131B5F
:10087000811102C00E94F41A0E94301B90E09093F4
:10088000B7018093B601C23080E5D80721F480918A
:10089000B601816086C0C43090E5D90721F480910B
:1008A000B60182607EC0C63020E5D20721F4809177
:1008B000B601846076C0C83080E5D80719F480910D
:1008C000B60127C0CA3090E5D90721F48091B6015E
:1008D000806167C0CC3020E5D20721F48091B60159
:1008E00080625FC0CE3080E5D80721F48091B601E8
:1008F000806457C0C03190E5D90721F48091B601DA
:1009000080684FC0C23120E5D20729F48091B6013A
:100910008460886046C0C33080E5D80721F48091A8
:10092000B6018E7F3EC0C53090E5D90721F4809195
:10093000B6018D7F36C0C73020E5D20721F4809103
:10094000B6018B7F2EC0C93080E5D80719F480919D
:10095000B60126C0CB3090E5D90721F48091B601CD
:100960008F7E1FC0CD3020E5D20721F48091B601E3
:100970008F7D17C0CF3080E5D80721F48091B60174
:100980008F7B0FC0C13190E5D90721F48091B6016A
:100990008F7707C0C331D04531F48091B6018B7F8A
:1009A000877F8093B6018091B6010E94341BABC053
:1009B0008D2F99278F70992781309105D9F49E0149
:1009C0002370332702C0880F991F2A95E2F79C688D
:1009D0008E0144E0000F111F4A95E1F700271370C4
:1009E000802B912B53E0CC0FDD1F5A95E1F7C07699
:1009F000DD272FC08230910531F4DC2FCC278E010A
:100A0000016F106A80C08330910569F4CE01837054
:100A1000992701E010E002C0000F111F8A95E2F74C
:100A2000C8019C680FC084309105B9F4CE01837071
:100A3000992701E010E002C0000F111F8A95E2F72C
:100A4000C8019A6823E0CC0FDD1F2A95E1F7C07E2C
:100A5000D7708C010C2B1D2B56C08530910531F4BD
:100A6000DC2FCC278E01046F106A4DC0069709F069
:100A70004AC0CF71DD27DC2FCC278E01106243C026
:100A800000E010E040C08E013EC001E810E43BC031
:100A900003E810E438C002EE14E435C009EE14E4B3
:100AA00032C00AEE14E42FC005EB14E42CC006EBB0
:100AB00014E429C007EB14E426C00CEC14E423C0B2
:100AC0000DEC14E420C003E815E41DC00AE815E4A9
:100AD0001AC002E915E417C004E915E414C001E2E4
:100AE00016E411C003E216E40EC004E216E40BC0E3
:100AF00005E216E408C006E216E405C007E216E4C3
:100B000002C00AE216E4C801DF91CF911F910F9154
:100B10000895E72FF0E096E0899FE00DF11D112484
:100B2000EE0FFF1FEE0FFF1FE60FF11DEE0FFF1F71
:100B3000E65EFE4F85919491803E9105E0F4803C05
:100B4000910558F58133910509F46FC048F4893255
:100B5000910509F463C08A32910509F46DC072C031
:100B600089339105E9F082389105D1F085339105FB
:100B700009F44DC067C0833E910581F138F4803E91
:100B80009105B9F0823E9105D9F05CC0863E910591
:100B900061F1873E9105A1F155C00E941B030895A4
:100BA0002091B60120FD02C021FF4CC080EE90E0F4
:100BB00049C08091B60180FFF9CF89E390E042C03F
:100BC0008091B60182FF0EC08091B60184FF03C000
:100BD00080E090E037C083EE90E034C08091B601B1
:100BE00082FFF2CF82EE90E02DC08091B60183FFAC
:100BF0000BC08091B60184FDEBCF87EE90E022C060
:100C00008091B60183FFF5CF86EE90E01BC0809106
:100C1000B60185FF07C089E290E014C08091B6015B
:100C200085FFF9CF85E390E00DC08091B60186FF86
:100C300007C08AE290E006C08091B60186FFF9CF36
:100C400081E390E00E942B0308950C949E01E82F0D
:100C5000F0E0E15FFE4F8081E82FEF70F0E08295D9
:100C60008F7021E030E0A90102C0440F551F8A9522
:100C7000E2F740A308950F931F93CF93DF9385B7B7
:100C8000806885BF85B7806885BFC3E0D0E001E09C
:100C900010E0FE01E15FFE4F8081E82FEF70F0E091
:100CA00021A182958F70A80102C0440F551F8A951B
:100CB000E2F7CA01822B81A38C2F0E94270621977D
:100CC00040F785E090E061E070E0FC01ED5EFE4FF2
:100CD0002081E22FEF70F0E042A122952F70DB011E
:100CE00002C0AA0FBB1F2A95E2F79D01242B22A365
:100CF000019758F7DF91CF911F910F910C94030347
:100D0000EF92FF920F931F93CF93DF930AE211E0CC
:100D1000C3E0EE24E394F12CD5E08C2F0E9427064B
:100D200085E090E040E0FC01ED5EFE4F5081E52F54
:100D3000EF70F0E020A130E052955F7002C0359571
:100D400027955A95E2F720FD07C09701082E01C0AC
:100D5000220F0A94EAF7422B019728F7F8018291B3
:100D60008F01841719F04083D09300018C2F0E94CB
:100D70002706C15090F68091000187FD1CC081506C
:100D8000809300018F3F39F08FE99FE00197F1F7E1
:100D900000C0000010C08091290180932D01809136
:100DA000280180932C018091270180932B01809151
:100DB000260180932A010E94050381E0DF91CF91F3
:100DC0001F910F91FF90EF90089591E001C0990F4E
:100DD0008A95EAF723E030E080E061E070E0F90115
:100DE000E65DFE4F4081492339F0AB01022E01C080
:100DF000440F0A94EAF7842B2150310980F70895B3
:100E00000895CF93DF93C5E0D0E08C2F0E94E506D4
:100E100090E00E948618D80FC150B8F78D2FDF914F
:100E2000CF91089580913E0108950895CF93DF9367
:100E300000D01F92CDB7DEB72091AD01243021F54F
:100E400023E029839B838A8381E08093E9008FEFED
:100E50009091E800815095FD06C095ED9A95F1F7C7
:100E600000008111F5CF8091E80085FF0DC040E0C2
:100E700050E063E070E0CE0101960E944809809145
:100E8000E8008E778093E8000F900F900F90DF912D
:100E9000CF910895CF93DF9300D01F92CDB7DEB7E7
:100EA0002091AD01243021F522E029839B838A83A0
:100EB00081E08093E9008FEF9091E800815095FDEB
:100EC00006C095ED9A95F1F700008111F5CF80915C
:100ED000E80085FF0DC040E050E063E070E0CE0127
:100EE00001960E9448098091E8008E778093E8007F
:100EF0000F900F900F90DF91CF910895CF93DF93D4
:100F00002091AD01243009F048C0EC0180910B0123
:100F10008823E1F080910C018823C1F082E0809366
:100F2000E9008FEF9091E800815095FD06C095E1B2
:100F30009A95F1F700008111F5CF8091E80085FFC7
:100F40002CC040E050E060E170E017C081E0809389
:100F5000E9008FEF9091E800815095FD06C095ED76
:100F60009A95F1F700008111F5CF8091E80085FF97
:100F700014C040E050E068E070E0CE010E944809F3
:100F80008091E8008E778093E80080E1FE01AEE278
:100F9000B1E001900D928A95E1F7DF91CF9108952C
:100FA0008091AC01811109C00E94DD0A0E943A0BB8
:100FB0008091E20084608093E20008951092AC0179
:100FC0000895089508950C94D11842E061EC81E0F1
:100FD0000E94570A42E161EC82E00C94570A80912A
:100FE000AF01833009F453C030F4813071F08230A6
:100FF00009F48CC008958A3009F478C08B3009F464
:101000005EC0893009F09AC020C08091AE01813A5B
:1010100009F094C08091E800877F8093E800809178
:10102000B2019091B301892B21F460E18EE291E04D
:1010300003C060E080E090E070E00E94930980913E
:10104000E8008B778093E80008958091AE018132AB
:1010500009F074C08091B2019091B301029708F039
:101060006DC08091E800877F8093E8008091E80060
:1010700082FD05C08091AD018111F8CF5FC08091E4
:10108000F10080933E018091E8008B7753C08091FE
:10109000AE01813A09F052C08091B2019091B30142
:1010A000892B09F04BC08091E800877F8093E8008E
:1010B0008091E80080FFFCCF80910B0136C08091C9
:1010C000AE018132D9F58091B2019091B301892BA3
:1010D000A9F58091E800877F8093E8000E948C0A40
:1010E0008091B00180930B010C9412128091AE019B
:1010F000813221F58091E800877F8093E8000E948B
:101100008C0A8091B10180933F0108958091AE01D6
:10111000813AA1F48091E800877F8093E800809174
:10112000E80080FFFCCF80913F018093F100809127
:10113000E8008E778093E8000C948C0A089584B7B9
:10114000877F84BF88E10FB6F89480936000109287
:1011500060000FBE90E080E80FB6F89480936100C5
:10116000909361000FBE0E94240E0E94DD0A0E942F
:101170003A0B8091E20084608093E20078940E94B0
:10118000C00D0E94260E81E091E00E94DB0D80914F
:10119000AD01853069F40E9492188091AB018823DB
:1011A000B1F30E94C018882391F30E943209EFCF57
:1011B0000E94320EECCF292F332723303105C9F09E
:1011C00064F42130310581F02230310509F042C04C
:1011D0008BE390E02AED31E041C021323105F1F09E
:1011E0002232310549F136C082E190E025E132E05A
:1011F00035C099278130910541F08230910541F049
:10120000892B41F5E6EDF1E005C0E6ECF1E002C026
:10121000EAEAF1E0849190E09F0120C0662339F072
:101220006130C1F489E090E025E032E017C089E048
:1012300090E02CEE31E012C0662339F0613051F4B9
:1012400089E390E027E232E009C08FE390E020E6F6
:1012500032E004C080E090E020E030E0FA01318329
:101260002083089580E189BD82E189BD09B400FE33
:10127000FDCF8091D8008F7D8093D8008091E000D1
:1012800082608093E0008091E00081FDFCCF0895B2
:10129000CF92DF92EF92FF920F931F93CF93DF9342
:1012A000EC018B016A010E94AB0A811133C0C114A9
:1012B000D10439F0F60180819181081B190BC80F08
:1012C000D91FE12CF12C0115110519F18091E800CD
:1012D00085FD16C08091E8008E778093E800C114E8
:1012E000D10449F0F60180819181E80EF91EF18266
:1012F000E08285E00FC00E94AB0A882321F30AC078
:1013000089918093F10001501109FFEFEF1AFF0A54
:10131000DACF80E0DF91CF911F910F91FF90EF9096
:10132000DF90CF9008952091B4013091B501261738
:10133000370748F06115710539F42091E8002E77E0
:101340002093E80001C0B90140E061157105A9F1E1
:101350002091AD01222309F443C0253009F442C095
:101360002091E80023FD40C02091E80022FD32C01A
:101370002091E80020FFE9CF4091F3002091F20096
:1013800030E0342BFC01CF016115710559F0283094
:10139000310540F481918093F100615071092F5F14
:1013A0003F4FF1CF41E02830310509F040E0209176
:1013B000E8002E772093E800C8CF4111C9CF0AC0BA
:1013C0008091AD01882361F0853061F08091E80063
:1013D00083FD0AC08091E80082FFF2CF80E008958B
:1013E00082E0089583E0089581E008952091B4019A
:1013F0003091B5012617370748F06115710539F4AA
:101400002091E8002E772093E80001C0B901FC018B
:1014100020E06115710591F18091AD01882309F4F7
:1014200040C0853009F43FC08091E80083FD3DC095
:101430008091E80082FD2FC08091E80080FFE9CF15
:101440002091F3008091F20090E0922B61157105DC
:1014500059F08830910540F424912093F1003196A1
:10146000615071090196F2CF21E0089709F020E060
:101470008091E8008E778093E800CBCF2111CCCF0C
:101480000AC08091AD01882361F0853061F08091C0
:10149000E80083FD0AC08091E80082FFF2CF80E07F
:1014A000089582E0089583E0089581E00895982FDB
:1014B000973058F59093E900981739F07091EC0047
:1014C0002091ED005091F00003C0242F762F50E0C2
:1014D00021FF19C03091EB003E7F3093EB0030913B
:1014E000ED003D7F3093ED003091EB0031603093A3
:1014F000EB007093EC002093ED005093F0002091EE
:10150000EE0027FF07C09F5FD3CF8F708093E90065
:1015100081E0089580E008958091AE0187FF11C0B9
:101520008091E80082FD05C08091AD018111F8CF66
:1015300011C08091E8008B770BC08091AD018823AA
:1015400049F08091E80080FFF8CF8091E8008E7725
:101550008093E80008952091E4003091E50095E63D
:101560004091EC00842F817040FF22C08091E80000
:1015700080FD1CC08091AD01882391F0853091F0F1
:101580008091EB0085FD10C04091E4005091E50092
:101590004217530729F39A01915011F784E00895F7
:1015A00082E0089583E0089581E0089580E0089541
:1015B0004091E80042FFDECF08950E944B0B0E944D
:1015C000530BE0EEF0E0808181608083E8EDF0E095
:1015D00080818F77808319BCA7EDB0E08C918E7FDE
:1015E0008C9380818F7E80831092AC0108950F933D
:1015F0001F93CF93DF930E944B0B0E94530BC8EDB8
:10160000D0E088818F77888388818068888388810B
:101610008F7D888319BC1092AD011092A9011092A0
:10162000AB011092AA0100EE10E0F80180818B7FDF
:10163000808388818160888342E060E080E00E944E
:10164000570AE1EEF0E080818E7F8083E2EEF0E0E9
:10165000808181608083808188608083F8018081BF
:101660008E7F8083888180618883DF91CF911F91F5
:101670000F910895E8EDF0E080818F7E8083E7EDA3
:10168000F0E080818160808384E082BF81E080938C
:10169000AC010C94F70AE8EDF0E080818E7F808346
:1016A0001092E20008951092DA001092E10008957D
:1016B0001F920F920FB60F9211242F933F934F93C7
:1016C0005F936F937F938F939F93AF93BF93EF93AA
:1016D000FF938091E10082FF0BC08091E20082FFC6
:1016E00007C08091E1008B7F8093E1000E94BF0DD5
:1016F0008091DA0080FF1FC08091D80080FF1BC05E
:101700008091DA008E7F8093DA008091D90080FF8B
:101710000DC080E189BD82E189BD09B400FEFDCF25
:1017200081E08093AD010E94D00705C019BC1092E2
:10173000AD010E94DE078091E10080FF19C0809119
:10174000E20080FF15C08091E2008E7F8093E2006E
:101750008091E20080618093E2008091D8008062F5
:101760008093D80019BC85E08093AD010E94E20708
:101770008091E10084FF30C08091E20084FF2CC0A2
:1017800080E189BD82E189BD09B400FEFDCF809171
:10179000D8008F7D8093D8008091E1008F7E809368
:1017A000E1008091E2008F7E8093E2008091E20070
:1017B00081608093E2008091A901882311F084E088
:1017C00007C08091E30087FD02C081E001C083E093
:1017D0008093AD010E94E3078091E10083FF29C05F
:1017E0008091E20083FF25C08091E100877F809394
:1017F000E10082E08093AD011092A9018091E100A7
:101800008E7F8093E1008091E2008E7F8093E200E2
:101810008091E20080618093E20042E060E080E03D
:101820000E94570A8091F00088608093F0000E9427
:10183000E107FF91EF91BF91AF919F918F917F91C0
:101840006F915F914F913F912F910F900FBE0F902D
:101850001F9018951F920F920FB60F9211242F937D
:101860003F934F935F936F937F938F939F93AF9328
:10187000BF93CF93DF93EF93FF93C091E900CF70B5
:101880008091EC00D82FD17080FDD0E81092E90053
:101890008091F000877F8093F00078940E946E0C16
:1018A0001092E9008091F00088608093F000CD2BC9
:1018B000CF70C093E900FF91EF91DF91CF91BF917D
:1018C000AF919F918F917F916F915F914F913F91D8
:1018D0002F910F900FBE0F901F9018951F93CF93CD
:1018E000DF93CDB7DEB7AA970FB6F894DEBF0FBE71
:1018F000CDBFEEEAF1E088E08E0F9091F100919378
:101900008E13FBCF0E94EF078091E80083FF1FC179
:101910008091AE019091AF01492F50E04A305105BE
:1019200008F015C1FA01EA5AFF4F0C94DE1C80380A
:1019300081F0823809F00BC18091B2018F708093E1
:10194000E9008091EB0085FB882780F91092E9007F
:1019500006C08091AA019091AB0191118260909193
:10196000E800977F9093E8008093F1001092F100D7
:10197000C8C0282F2D7F09F0EAC0882319F08230D3
:1019800061F0E5C08091B001813009F0E0C0933092
:1019900009F080E08093AB012BC08091B0018111F0
:1019A00027C08091B2018F7009F4D1C08093E90003
:1019B0002091EB0020FF1CC0933021F48091EB00BC
:1019C000806214C09091EB0090619093EB0021E055
:1019D00030E0A90102C0440F551F8A95E2F74093F9
:1019E000EA001092EA008091EB0088608093EB009F
:1019F0001092E9008091E800877F86C08111A7C01E
:101A00001091B0011F778091E3008078812B809343
:101A1000E3008091E800877F8093E8000E948C0AB1
:101A20008091E80080FFFCCF8091E3008068809384
:101A3000E300111102C082E001C083E08093AD0198
:101A400086C08058823008F082C08091B0019091A9
:101A5000B1018C3D53E0950779F583E08A838AE2F2
:101A600089834FB7F894DE01139620E03EE051E2FF
:101A7000E32FF0E050935700E49120FF03C0E2957C
:101A8000EF703F5FEF708E2F90E0EA3010F0C79656
:101A900001C0C0968D939D932F5F243149F74FBFAE
:101AA0008091E800877F8093E8006AE270E0CE01D1
:101AB00001960E94930914C0AE014F5F5F4F609181
:101AC000B2010E94DB08BC01009709F440C090916C
:101AD000E800977F9093E80089819A810E94F60937
:101AE0008091E8008B778093E80031C0803879F5E9
:101AF0008091E800877F8093E8008091A90180931E
:101B0000F1008091E8008E778093E8000E948C0AB3
:101B10001EC081111CC09091B0019230C0F4809120
:101B2000E800877F8093E8009093A9010E948C0AC7
:101B30008091A901811106C08091E30087FD02C058
:101B400081E001C084E08093AD010E94E5078091AF
:101B5000E80083FF0AC08091E800877F8093E80057
:101B60008091EB0080628093EB00AA960FB6F89408
:101B7000DEBF0FBECDBFDF91CF911F9108950895B5
:101B8000CF938091AD018823A1F0C091E900CF707F
:101B90009091EC00892F817090FD80E8C82B109205
:101BA000E9008091E80083FD0E946E0CCF70C09325
:101BB000E900CF91089590934501809344010895E1
:101BC000E0914401F0914501309721F00190F081BE
:101BD000E02D099480E00895E0914401F0914501E1
:101BE000309721F00280F381E02D0994089520912F
:101BF0004201309143018217930771F090934301A2
:101C000080934201E0914401F0914501309721F029
:101C10000680F781E02D09940895209140013091CC
:101C200041018217930771F0909341018093400125
:101C3000E0914401F0914501309721F00084F18555
:101C4000E02D0994089508950C94230E0E9405191F
:101C50000E943B060E94C7190E94471C81E08093A6
:101C60000C010895CF92DF92EF92FF920F931F9392
:101C7000CF93DF9300D000D000D0CDB7DEB70E9465
:101C8000800685E0E82EF12C0E2D8E2D0E94E506B3
:101C90009701295B3E4F6901F90110811827A9F4CA
:101CA000F1E0EF1AF10880F78FEF89838A831B82B6
:101CB0000E940E198160782F9D838C8349815A81FF
:101CC0006B818D810E94C00E32C09091A20191FF64
:101CD00004C08E830E9400078E8113FD09C012FD8F
:101CE0000AC011FD0BC010FFDBCF90E011E008C06F
:101CF00093E018E005C092E014E002C091E012E029
:101D000099830A83812391E009F490E09B830E94E8
:101D10000E198160782F9D838C8349815A816B8154
:101D20008D810E94C00EF6018081182710831091CA
:101D300046010E94E00D1817A1F00E94E00D80936B
:101D4000460126960FB6F894DEBF0FBECDBFDF91D9
:101D5000CF911F910F91FF90EF90DF90CF900C9457
:101D6000250626960FB6F894DEBF0FBECDBFDF91D5
:101D7000CF911F910F91FF90EF90DF90CF9008953A
:101D8000CF93DF93CDB7DEB72B970FB6F894DEBFB6
:101D90000FBECDBF4F83588769877A878B87DE0157
:101DA000119686E0FD0111928A95E9F785E0FE0122
:101DB000379601900D928A95E1F749815A816B819E
:101DC0007C818D819E810E94B0142B960FB6F89471
:101DD000DEBF0FBECDBFDF91CF910895CF93882393
:101DE00009F499C0C82F8CEF8C0F813A48F48C2FDE
:101DF0000E94051C81118FC08C2F0E948A170CC075
:101E000080E28C0F883058F4C77081E001C0880FE1
:101E1000CA95EAF70E941018CF910C9457188BE5D9
:101E20008C0F833078F4C53A29F0C63A31F083E854
:101E300090E005C081E890E002C082E890E0CF9198
:101E40000C94F70D88E58C0F833108F064C0C83A14
:101E500039F1C93A41F1CA3A49F1CB3A51F1CC3A98
:101E600059F1CD3A61F1C03B69F1CE3A71F1CF3A07
:101E700079F1C13B81F1C23B89F1C33B91F1C43B94
:101E800099F1C53BA1F1C63BA9F1C73BB1F1C83BF4
:101E9000B9F1C93BC1F1CA3BC9F180E090E038C05B
:101EA00082EE90E035C089EE90E032C08AEE90E09C
:101EB0002FC085EB90E02CC086EB90E029C087EB2B
:101EC00090E026C08CEC90E023C08DEC90E020C028
:101ED00083E891E01DC08AE891E01AC082E991E0B0
:101EE00017C084E991E014C081E292E011C083E25E
:101EF00092E00EC084E292E00BC085E292E008C05E
:101F000086E292E005C087E292E002C08AE292E0B7
:101F1000CF910C940D0ECF910895882329F19CEF59
:101F2000980F913A18F40E94CC170DC090E2980FC8
:101F3000983058F4877091E001C0990F8A95EAF7BC
:101F4000892F0E9416180C9457189BE5980F933010
:101F500020F480E090E00C94F70D885A833120F44F
:101F600080E090E00C940D0E0895882321F00E94EB
:101F700010180C9457180895882321F00E94161801
:101F80000C94571808957F928F929F92AF92BF92B0
:101F9000CF92DF92EF92FF920F931F93CF93DF9335
:101FA0001F92CDB7DEB77C01C62E772EFC010581CE
:101FB00002950F70128111110E942D180E94831733
:101FC000882379F0112369F080E28C0D883048F085
:101FD00082E00E946C170E94831791E0D82ED926C8
:101FE00001C0D12CE72DE295EF70F0E0E05AFF4FF1
:101FF0000C94DE1C872D807F072D0F70882311F035
:102000000295007F112389F0002309F46EC180E25C
:102010008C0D883020F4802F0E94101803C0802F70
:102020000E9420180E94571860C18C2D0E948D0FAD
:10203000002309F498C180E28C0D883020F4802FB1
:102040000E94161803C0802F0E9426180E9457185D
:102050008AC1872D807F972D9F70803211F4892F40
:1020600003C0892F8295807FCC2021F0F1E0CF162C
:10207000A1F01DC0112339F0002319F1013009F539
:102080000E94401870C1002319F0013009F46BC19F
:1020900089830E9443188981E5C0112321F006300D
:1020A00008F061C10EC0053008F05DC1DBC011232E
:1020B00059F0002331F0F701958190FF16C19F7010
:1020C00095830E94B50F4FC1002309F4CBC013C103
:1020D000872D837009F052C0111145C18C2D829556
:1020E00086958770880F880F9C2D9F70892E912C64
:1020F000A12CB12C082E04C0880C991CAA1CBB1C56
:102100000A94D2F7C4FE14C00FE010E020E030E0E3
:10211000B901A80104C0440F551F661F771F8A9597
:10212000D2F7CB01BA01609570958095909503C068
:1021300060E070E0CB01272D26952695237030E0D6
:102140002230310569F02330310589F06829792979
:102150008A299B292130310571F00E94F81503C1AD
:10216000682979298A299B290E941416FCC00E949B
:10217000F815C501B4010E94DC15F5C0112319F052
:10218000872D817001C08695882309F4ECC08C2DC1
:10219000829586958770880F880F9C2D9F70892E59
:1021A000912CA12CB12C082E04C0880C991CAA1CBF
:1021B000BB1C0A94D2F7C4FE14C00FE010E020E06C
:1021C00030E0B901A80104C0440F551F661F771FF6
:1021D0008A95D2F7CB01BA0160957095809590955C
:1021E00003C060E070E0CB01272D26952695237073
:1021F000422F50E04230510569F04330510589F0DB
:10220000682979298A299B294130510571F00E945A
:10221000D216A9C0682979298A299B290E94EE161D
:10222000A2C00E94D216C501B4010E94B6169BC07E
:102230008C2D90E0FC01E05EF109E531F10508F03C
:1022400050C0E059FF4F0C94DE1C0C2D0F70872DF1
:102250008F71112321F00E944F16802F32CF0E94E0
:102260007016802F0E94BC0F7EC0112341F00530F4
:1022700008F079C0872D8F710E94951674C00630C2
:1022800008F071C0F7CF112339F0872D8F710E94AC
:102290004F1669C01123C9F3872D8F710E947016E4
:1022A00062C0112329F0872D8F710E943A165BC0FE
:1022B0000E94301658C0112351F0172D1F71812F25
:1022C0000E944F1663E0812F0E9463174CC081E08B
:1022D0000E946C17023008F446C082E00E946C171E
:1022E00042C0112331F0002381F28C2D0E94EE0EAA
:1022F0003AC0002389F28C2D0E948D0F34C0472DE7
:102300004F706C2DC7010E94E2010E9454152BC032
:10231000111129C0472D4F7050E042305105B9F0DE
:102320004CF44115510581F041305105E1F40E9412
:102330006F1C19C04330510569F04430510599F4C0
:102340008C2D0E94C11C0FC00E94581C0CC00E9402
:102350008B1C09C00E949E1C06C0472D4F706C2D1F
:10236000C7010E94E101DD20F9F00E945F1780FDA6
:102370001BC0F70112820E9459170E944F16C70115
:102380000E94E3110E9459170F90DF91CF911F9186
:102390000F91FF90EF90DF90CF90BF90AF909F9004
:1023A0008F907F900C9470160F90DF91CF911F91BA
:1023B0000F91FF90EF90DF90CF90BF90AF909F90E4
:1023C0008F907F9008950F931F93CF93DF93EC012D
:1023D000888199812B813C81232BB9F09F3F11F497
:1023E0008F3F99F0CE010E945B02882371F06881D3
:1023F00079818A810E9455178C010E940A170E94D8
:10240000D115B801CE010E94C30FDF91CF911F916A
:102410000F9108950E942D180E943D180E940218E5
:102420000C9457180E941D180C940A120E944A1707
:10243000292F22952F7030E02C3031054CF42A30B2
:1024400031056CF42250310922303105A8F407C05F
:102450002C30310569F02F30310551F00DC0803F2F
:1024600069F018F4803E40F409C0843F29F406C0A6
:1024700093FB882780F9089580E0089581E008950E
:10248000CF93DF9300D000D01F92CDB7DEB70F906F
:102490000F900F900F900F90DF91CF910895CF93F1
:1024A000DF9300D000D000D0CDB7DEB726960FB6B0
:1024B000F894DEBF0FBECDBFDF91CF9108951F937B
:1024C000CF93DF93C0914D0116E080914E01C81764
:1024D00099F0D0E01C9FF0011D9FF00D1124E15BED
:1024E000FE4F4081518162817381848195810E9478
:1024F0004F122196C770E9CFDF91CF911F910895B8
:1025000040917F0150918001609181017091820121
:1025100080918301909184010C944F1280918401E9
:1025200082958F7009F054C080918101882309F44D
:102530004FC080914D01A0914E0160917F0170913B
:1025400080014091820150918301B6E08A1709F41D
:102550003FC090E041155105C1F17F3F11F46F3F3D
:10256000A1F1B89FF001B99FF00D1124E15BFE4F7E
:10257000218172132AC02081621327C02281211178
:1025800024C0238134812417350710F421503109E8
:10259000241B350B283C3105C0F4209184012F7099
:1025A00020612093840126E0289FF001299FF00DEF
:1025B0001124EC5AFE4F80818F70806180838FE7F9
:1025C00091E00E94E3110C945F1201968770BECFD8
:1025D0000895CF92DF92EF92FF920F931F93CF93C4
:1025E000DF93CDB7DEB762970FB6F894DEBF0FBEAC
:1025F000CDBF8C0185E0F801DE011D9601900D92A2
:102600008A95E1F7D8014C9111965C911197129639
:102610006C9112971396CD90DC90149730917F01B6
:10262000709180018091820190918301009709F45B
:102630006BC17F3F19F43F3F09F466C1E09081010F
:10264000EE2009F4C0C020918401C816D90628F0F4
:10265000F601E81BF90BCF0104C0809590958C0D15
:102660009D1DFF24F394883C910578F0F12C207F88
:1026700009F0C6C07C2DD98AC88A89890E94401277
:102680008FE791E00E94E311B1C0822F807F09F0B3
:1026900046C0751314C0341312C0611110C02F70DE
:1026A0002061209384010E9480128FE791E00E94B4
:1026B000E31180918401D80115968C932EC0CD280A
:1026C00019F15F3F11F44F3FF9F0F62E61111CC074
:1026D00080914D0120914E0136E0821709F45AC0D5
:1026E00090E0389FF001399FF00D1124E15BFE4F1F
:1026F0007181571306C07081471303C07281711135
:1027000003C001968770E9CFF62E662309F418C13D
:1027100080918401816080938401F12C11C1751333
:1027200008C0341306C0611104C080918401D8012F
:10273000C3C04D875E878D859E856A8B0E94161269
:102740006A898823E1F16623D1F120918401822FE7
:1027500082958F7090E0029774F080917F01909144
:10276000800198878F831986DB86CA862C87CE01E5
:1027700007960E94E31186E0F801AFE7B1E001900F
:102780000D928A95E1F70E948E120E948012FF241A
:10279000F394D6C04D875E878D859E850E944A172B
:1027A000292F22952F7030E0223031050CF0BCC06B
:1027B0009F7009F0B6C0805E883008F4C1C0C801BF
:1027C0000E94E311E4CFC816D90608F453C0F601FD
:1027D000E81BF90BCF01883C910508F450C0F12C9F
:1027E0007C2DD98AC88A89890E944012EFE7F1E0DE
:1027F00086E0DF011D928A95E9F70E948012A0C051
:10280000751314C0341312C0611110C0809184017B
:10281000F8018583C8010E94E31186E0EFE7F1E04B
:10282000DF011D928A95E9F7FE2C8AC04D875E87ED
:102830008D859E856A8B0E9416126A89882309F409
:10284000BECF662309F4BBCF20918401822F8295ED
:102850008F7090E002970CF48ECF80917F01909161
:1028600080019A8389831B82DD82CC822E83CE01F4
:1028700001967FCF809590958C0D9D1DACCFF62E47
:10288000662309F49CCF75132EC034132CC02091FD
:10289000840120FD1FC0822F82958F70D9F0D8014E
:1028A00015962C9315978F3049F08F5F982F92953E
:1028B000907F822F8F70892B15968C93C8010E9470
:1028C000E31186E0F801AFE7B1E001900D928A953F
:1028D000E1F793CF86E0F801AFE7B1E001900D9208
:1028E0008A95E1F72DC04D875E878D859E850E9474
:1028F0001612811140CF8091840181608093840100
:10290000C8010E94E3111CC0662309F458CF4D870B
:102910005E878D859E850E941612882309F44FCF0D
:102920002ACF811148CF0CC0243031050CF047CF9D
:102930009F7009F440CFF8019581907F09F03BCF5B
:102940008F2D62960FB6F894DEBF0FBECDBFDF911C
:10295000CF911F910F91FF90EF90DF90CF9008954E
:102960001F93CF93DF93CDB7DEB72C970FB6F894B4
:10297000DEBF0FBECDBF4F83588769877A878B87AD
:102980009C87CE0107960E94E912882369F08F8107
:1029900098852A853B85232BF1F19F3F09F063C081
:1029A0008F3F09F060C037C086E0FE013796DE0138
:1029B000119601900D928A95E1F76F817885EA85ED
:1029C000FB85309741F17F3F11F46F3F21F120915A
:1029D0004E0130E0C90101968770992740914D0161
:1029E00050E08417950709F447C069837A83FD8313
:1029F000EC8396E0929FD001939FB00D1124A15BD0
:102A0000BE4FFE01319601900D929A95E1F78093A9
:102A10004E010E945F1216E080914D0190914E018F
:102A20008917C1F1189FC0011124815B9E4F0E943C
:102A3000E912882379F1E0914D011E9FF0011124E4
:102A4000E15BFE4F40815181628173818481958178
:102A50000E944F1280914D0190E001968770992756
:102A600080934D01D9CF4F81588569857A858B85B3
:102A70009C850E944F12CFCF0E94121210924E01DD
:102A800010924D01EFE7F1E086E0DF011D928A959B
:102A9000E9F7C1CF2C960FB6F894DEBF0FBECDBFBD
:102AA000DF91CF911F910895EF92FF920F931F93A3
:102AB000CF93DF938C01009709F46CC0F12CEE24C6
:102AC000E394E8012196F8018491843740F484303E
:102AD00008F051C0813081F0823019F15BC0853738
:102AE00009F444C0A8F19CE7980F903708F052C051
:102AF0008F770E948D0F41C00E5F1F4FFE01C49162
:102B000080E28C0F883048F4C7708E2D01C0880F8A
:102B1000CA95EAF70E94301814C08C2F0E94EE0E5E
:102B20002DC00E5F1F4FFE01C49180E28C0F8830D4
:102B300058F4C7708E2D01C0880FCA95EAF70E941D
:102B400036180E9457181AC08C2F0E948D0F16C07D
:102B50000E5F1F4FFE01C491CC2381F08FE99FE0EF
:102B60000197F1F700C00000C150F6CF0E5F1F4F74
:102B7000FE01F49003C00E94EE0E8E018F2D88237B
:102B800009F49FCFEFE9FFE03197F1F700C00000B3
:102B90008150F5CFDF91CF911F910F91FF90EF9072
:102BA000089508956093890170938A0180938B0141
:102BB00090938C010C940A120F931F93009189013A
:102BC00010918A0120918B0130918C01DC01CB01A5
:102BD000802B912BA22BB32B8093890190938A0198
:102BE000A0938B01B0938C011F910F910C940A124A
:102BF0000F931F930091890110918A0120918B01FD
:102C000030918C01DC01CB0180239123A223B323DB
:102C10008093890190938A01A0938B01B0938C01DA
:102C20001F910F910C940A120F931F930091890129
:102C300010918A0120918B0130918C01DC01CB0134
:102C400080279127A227B3278093890190938A0137
:102C5000A0938B01B0938C011F910F910C940A12D9
:102C600010928501109286011092870110928801BE
:102C70000C940A1241E050E060E070E004C0440FA0
:102C8000551F661F771F8A95D2F740938501509391
:102C9000860160938701709388010C940A1241E0C9
:102CA00050E060E070E004C0440F551F661F771FBE
:102CB0008A95D2F78091850190918601A091870134
:102CC000B0918801482B592B6A2B7B2B40938501AF
:102CD0005093860160938701709388010C940A12C7
:102CE00041E050E060E070E004C0440F551F661FF3
:102CF000771F8A95D2F74095509560957095809191
:102D0000850190918601A0918701B09188014823A7
:102D100059236A237B234093850150938601609356
:102D20008701709388010C940A1241E050E060E042
:102D300070E004C0440F551F661F771F8A95D2F7B5
:102D40008091850190918601A0918701B0918801C1
:102D5000482759276A277B2740938501509386018E
:102D600060938701709388010C940A120F931F934C
:102D70000091850110918601209187013091880191
:102D8000DC01CB01802B912BA22BB32B80938501EF
:102D900090938601A0938701B09388011F910F91B2
:102DA0000C940A120F931F930091850110918601D4
:102DB0002091870130918801DC01CB018023912390
:102DC000A223B3238093850190938601A09387016A
:102DD000B09388011F910F910C940A120F931F93C7
:102DE0000091850110918601209187013091880121
:102DF000DC01CB0180279127A227B327809385018F
:102E000090938601A0938701B09388011F910F9141
:102E10000C940A120895CF92DF92EF92FF920F93D3
:102E20001F93CF93DF938C01C0908901D0908A01CA
:102E3000E0908B01F0908C0180918501909186014A
:102E4000A0918701B0918801C82AD92AEA2AFB2AD1
:102E5000CFE1D0E0D701C6010C2E04C0B695A795EE
:102E6000979587950A94D2F780FF06C0B8018C2FFA
:102E70000E948905019721F4219760F780E001C045
:102E80008C2FDF91CF911F910F91FF90EF90DF90EA
:102E9000CF900895CF93DF93EC010E940B17BE01F2
:102EA0000E948905DF91CF910895CB010E944A17B6
:102EB000089580918D0185958595859508958091DA
:102EC0008D018770089598E0899F90011124262B29
:102ED00020938D010C944F1620918D0180958223B3
:102EE00080938D01982F977069F430E0482F552713
:102EF00047FD50952417350729F0859585958595CB
:102F00000C947016089590918D01977081E009F4EA
:102F100080E0089590910B01992321F090910C018C
:102F2000911109C020910D0130910E01F9013296E5
:102F30009FEF40E01FC0982F9695969596959F30ED
:102F400050F5E0910D01F0910E01E90FF11D877030
:102F500021E030E0A90102C0440F551F8A95E2F735
:102F6000CA019181892B818308959F3F39F04F5F7A
:102F70004E3041F051915813F8CF0DC05111F7CF99
:102F8000942FF5CF9F3F39F0F901E90FF11D97FD1F
:102F9000FA9582830895089590910B01992321F069
:102FA00090910C01911109C020910D0130910E01F9
:102FB000F9013296205F3F4F1FC0982F9695969546
:102FC00096959F30F0F4E0910D01F0910E01E90F1C
:102FD000F11D877021E030E0A90102C0440F551FA8
:102FE0008A95E2F7CA0180959181892381830895AA
:102FF0003196E217F30729F090819813F9CF1082E8
:10300000F7CF089581E090E0E0910D01F0910E017D
:10301000E80FF91F1082019680319105A9F70895F4
:103020009091A101892B8093A101089580959091A1
:10303000A10189238093A10108951092A10108950F
:103040009091A001892B8093A00108958095909183
:10305000A00189238093A00108951092A0010895F2
:1030600090919F01892B80939F0108958095909165
:103070009F01892380939F01089510929F010895D5
:1030800080938E01089510928E01089580910D0114
:1030900090910E01FC0131969C01205F3F4F80E032
:1030A000919191118F5FE217F307D1F70895E091A5
:1030B0000D01F0910E018091A1018083E0910D013D
:1030C000F0910E0190818091A001892B8083E09185
:1030D0000D01F0910E01908180919F01892B8083D9
:1030E00080918E01882361F0E0910D01F0910E0135
:1030F0009081892B80830E944618811110928E0145
:1031000080910D0190910E010C94EC0D20E0009740
:1031100039F0AC0141505109842395232F5FF7CF3B
:10312000822F08958091AD01843039F11092A3016E
:1031300020E488E190E00FB6F894A89580936000B1
:103140000FBE2093600080E00E94B40180E00E94E6
:10315000250683B7817F846083BF83B7816083BF87
:103160007894889583B78E7F83BF88E10FB6F894F3
:1031700080936000109260000FBE08950895089536
:1031800080E00E94B4010E94BE180E9480060E9446
:10319000BF180E94010791E0811101C090E0892FC2
:1031A00008950E94121280E00E94B4010E94471C00
:1031B0000E94E00D0C9425061F920F920FB60F92FD
:1031C00011248F939F93AF93BF938091A30181119B
:1031D00013C08091A4019091A501A091A601B09186
:1031E000A7014196A11DB11D8093A4019093A50153
:1031F000A093A601B093A701BF91AF919F918F912A
:103200000F900FBE0F901F90189582E084BD93E041
:1032100095BD9AEF97BD80936E0008952FB7F894EF
:103220008091A4019091A501A091A601B091A70160
:103230002FBF0895CF92DF92EF92FF920F931F93CB
:103240002FB7F8944091A4015091A5016091A60177
:103250007091A7012FBF6A017B01EE24FF248C012E
:1032600020E030E0C016D106E206F30610F441502B
:1032700051099A01281B390BC9011F910F91FF9029
:10328000EF90DF90CF9008951F920F920FB60F929C
:1032900011248F939F93AF93BF938091A40190913A
:1032A000A501A091A601B091A7010196A11DB11D94
:1032B0008093A4019093A501A093A601B093A701C8
:1032C000BF91AF919F918F910F900FBE0F901F9064
:1032D00018950E94DD0AF8942FEF87EA91E62150B5
:1032E00080409040E1F700C0000087E090EBDC01F7
:1032F0008093B8019093B901A093BA01B093BB0138
:103300009CE088E10FB6F894A895809360000FBE0A
:1033100090936000FFCFEF92FF920F931F93CF9394
:10332000DF93D82FC5E08C2F0E94E50603E010E064
:10333000E82EF12CC701002E02C0959587950A94BE
:10334000E2F780FF09C0602F7C2F80E00E94070316
:10335000D81302C081E006C00150110958F7C150CE
:1033600010F780E0DF91CF911F910F91FF90EF90C8
:103370000895CF93C82F8CE20E948B19882321F0E7
:103380008C2FCF910C948B1980E0CF910895CF931F
:103390000E94131B811102C00E94F41AC5E6C1509D
:1033A00049F00E9480068FE39CE90197F1F700C085
:1033B0000000F5CF89E20E94B919811113C18AE298
:1033C0000E94B91981110E94F41A85E00E94B9196E
:1033D00081110E9469190E941E1B8093A20187E03F
:1033E0000E94B9198823A9F18BE10E94B919882399
:1033F00051F08091A20181FB222720F991E09227D0
:1034000090FB81F90EC08EE00E94B919882361F00B
:103410008091A20182FB222720F991E0922790FB64
:1034200082F98093A20115C080E10E94B9199091A0
:10343000A201882341F093FB222720F981E0822713
:1034400080FB93F904C0892F809580FB90F99093BD
:10345000A2018091A2010E94221B0E94301B809336
:10346000B60180EE0E94B919882341F08091B6011F
:10347000982F909590FB80F98093B60189E30E9484
:10348000B919882359F08091B60181FB222720F9D0
:1034900091E0922790FB81F98093B60182EE0E9421
:1034A000B919882359F08091B60182FB222720F9AF
:1034B00091E0922790FB82F98093B60186EE0E94FC
:1034C000B919882359F08091B60183FB222720F98E
:1034D00091E0922790FB83F98093B60183EE0E94DE
:1034E000B919882359F08091B60184FB222720F96D
:1034F00091E0922790FB84F98093B60185E30E94C6
:10350000B919882359F08091B60185FB222720F94B
:1035100091E0922790FB85F98093B60181E30E94A8
:10352000B919882359F08091B60186FB222720F92A
:1035300091E0922790FB86F98093B60181E10E9489
:10354000B919882359F08091B60187FB222720F909
:1035500091E0922790FB87F98093B6018091B601A4
:103560000E94341B8091B60187FB882780F98093E5
:103570000C0187E20E94B919C82F8EE10E94B91987
:103580008111C2608FE10E94B9198111C46080E28B
:103590000E94B9198111C86081E20E94B919811194
:1035A000C06182E20E94B9198111C06283E20E9467
:1035B000B9198111C06484E20E94B919882311F0FD
:1035C000C06802C0CC2329F08C2F0E942B1B6C2FCB
:1035D00003C00E94271B682F70E080E090E0CF912D
:1035E0000C94D215CF9108956DEE7EEF80E090E0BF
:1035F0000E94041D60E082E090E00E94F21C60E006
:1036000083E090E00E94F21C60E084E090E00E9481
:10361000F21C60E085E090E00E94F21C60E086E031
:1036200090E00C94F21C80E090E00E94EC1C21E001
:103630008D3E9E4F09F020E0822F089582E090E0B9
:103640000C94E41C682F82E090E00C94F21C83E060
:1036500090E00C94E41C682F83E090E00C94F21C42
:1036600084E090E00C94E41C682F84E090E00C94DB
:10367000F21C86E090E00C94E41C682F86E090E059
:103680000C94F21C0F931F938B3109F475C0A0F5B5
:103690008E3009F484C0C0F4873009F45BC068F44C
:1036A000863009F0AAC08091A201817F8E7F80932D
:1036B000A20181E08093A801A1C0883009F496C0DE
:1036C0008B3009F493C099C0813109F472C068F459
:1036D000803109F092C08091A20183FB222720F95A
:1036E00091E0922790FB83F950C0863109F47EC0A7
:1036F000893109F47BC081C0853309F479C068F44D
:10370000873209F475C028F48E3108F476C08D51E3
:103710005AC0893209F46CC070C0833438F48A33DB
:1037200008F050C0883309F461C067C0833409F4DD
:103730005FC0883409F061C00E9412120FEF13EDD0
:1037400020E3015010402040E1F700C000000E943B
:1037500069194CC09091A201892F8095817080FBDE
:1037600090F929F0966098609093A20147C0997FE4
:10377000977F9093A2013AC08091A20181FB2227FA
:1037800020F991E0922790FB81F98093A20199237F
:1037900069F18091A20181608093A20127C080918C
:1037A000A20182FB222720F991E0922790FB82F967
:1037B000ECCF0E94121290910C0181E08927809336
:1037C0000C0114C0895341E050E060E070E08A01D0
:1037D0009B0104C0000F111F221F331F8A95D2F7CF
:1037E000C901B8010E94D2150E94121281E006C0E0
:1037F00061E070E080E090E0F5CF80E01F910F91F4
:10380000089580E0089580E00895CF93C82F8091B7
:10381000A801882319F0813049F031C0E0910D01F1
:10382000F0910E018081823261F507C0E0910D01B7
:10383000F0910E018081823261F48C2F0E94011C74
:10384000811104C08C2F0E94421B17C081E090E0C0
:1038500014C08C2F0E94031C81110EC0C43149F08A
:1038600018F4CB3049F00FC0C93219F0C83321F039
:103870000AC01092A80107C081E0817006C01092B2
:10388000A80180E002C080E0F8CFCF9108950E94A7
:10389000131B811102C00E94F41A0E94391B8093ED
:1038A000B70180FF02C0869501C080E00C94B4018E
:1038B0008091B701982F9695292F30E0233031055C
:1038C0004CF49F5F990F8170892B81608093B701C1
:1038D0000E943D1B8091B70186950C94B4018091A4
:1038E000B701982F969591F09158990F8170892B77
:1038F0008093B7018E7F91E009F490E08091B70149
:1039000090FB80F98093B7010E943D1B8091B70125
:1039100086950C94B4018091B701982F909590FBF7
:1039200080F98093B7010E943D1B8091B70180FF11
:1039300002C0869501C080E00C94B4019091B7015B
:10394000892F86958F5F8F779170843028F4880F48
:10395000892B8093B70102C09093B7018091B70182
:103960008E7F91E009F490E08091B70190FB80F99F
:103970008093B7010E943D1B8091B70186950C94FE
:10398000B4012091B701922F96958927982F990F0E
:10399000822F8170892B8093B7018E7F91E009F48B
:1039A00090E08091B70190FB80F98093B7010E946D
:1039B0003D1B8091B70186950C94B401EE0FFF1F5B
:1039C0000590F491E02D0994F999FECF92BD81BD47
:1039D000F89A992780B50895A8E1B0E042E050E058
:1039E0000C940C1D262FF999FECF92BD81BDF89A3B
:1039F000019700B4021639F01FBA20BD0FB6F89433
:103A0000FA9AF99A0FBE08950196272F0E94F31C87
:103A10000C94F21CDC01CB01FC01F999FECF06C02D
:103A2000F2BDE1BDF89A319600B40D92415050407C
:083A3000B8F70895F894FFCFE8
:103A3800FF12077E0715074A07160701018F0103C2
:0A3A48001323330F1F4F5F6F7F0041
:00000001FF

@ -38,55 +38,6 @@
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = atomic
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = atomic.c
ifdef keymap
KEYMAP = $(keymap)
endif
ifdef KEYMAP
ifneq ("$(wildcard keymaps/$(KEYMAP).c)","")
KEYMAP_FILE = keymaps/$(KEYMAP).c
else
ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","")
KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c
ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
include keymaps/$(KEYMAP)/makefile.mk
endif
else
$(error Keymap file does not exist)
endif
endif
else
ifneq ("$(wildcard keymaps/default.c)","")
KEYMAP_FILE = keymaps/default.c
else
KEYMAP_FILE = keymaps/default/keymap.c
endif
ifneq ("$(wildcard keymaps/default/makefile.mk)","")
include keymaps/default/makefile.mk
endif
endif
SRC := $(KEYMAP_FILE) $(SRC)
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@ -139,44 +90,22 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# change to "no" to disable the options, or define them in the makefile.mk in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= no # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
MIDI_ENABLE ?= no # MIDI controls
AUDIO_ENABLE ?= no # Audio output on port C6
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifdef KEYMAP
ifeq ("$(wildcard keymaps/$(KEYMAP).c)","")
ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
include keymaps/$(KEYMAP)/makefile.mk
endif
endif
else
ifneq ("$(wildcard keymaps/default/makefile.mk)","")
include keymaps/default/makefile.mk
endif
endif
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
include $(TOP_DIR)/quantum/quantum.mk
ifndef QUANTUM_DIR
include ../../Makefile
endif

File diff suppressed because it is too large Load Diff

@ -12,6 +12,4 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CONFIG_H = keymaps/$(KEYMAP)/config.h
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

File diff suppressed because it is too large Load Diff

@ -1,17 +0,0 @@
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CONFIG_H = keymaps/$(KEYMAP)/config.h

@ -38,26 +38,6 @@
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = atreus
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = atreus.c
ifdef KEYMAP
SRC := keymaps/$(KEYMAP).c $(SRC)
else
SRC := keymaps/default.c $(SRC)
endif
ifdef TEENSY2
OPT_DEFS += -DATREUS_TEENSY2
ATRUES_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex
@ -67,8 +47,6 @@ else
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
endif
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@ -123,30 +101,25 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# comment out to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= yes # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# MIDI_ENABLE = YES # MIDI controls
UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
# MIDI_ENABLE ?= YES # MIDI controls
UNICODE_ENABLE ?= YES # Unicode
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
ifndef QUANTUM_DIR
include ../../Makefile
endif
USB ?= /dev/cu.usbmodem1411
upload: build
$(ATRUES_UPLOAD_COMMAND)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -38,28 +38,6 @@
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = Bantam44
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = Bantam44.c
ifdef KEYMAP
SRC := keymaps/$(KEYMAP).c $(SRC)
else
SRC := keymaps/default.c $(SRC)
endif
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@ -113,27 +91,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= yes # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# MIDI_ENABLE = YES # MIDI controls
# UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
# NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
# MIDI_ENABLE ?= YES # MIDI controls
# UNICODE_ENABLE ?= YES # Unicode
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
ifndef QUANTUM_DIR
include ../../Makefile
endif

@ -1,4 +1,4 @@
#include "Bantam44.h"
#include "bantam44.h"
__attribute__ ((weak))
void matrix_init_user(void) {
@ -22,4 +22,4 @@ void matrix_scan_kb(void) {
// runs every cycle (a lot)
matrix_scan_user();
}
}

File diff suppressed because it is too large Load Diff

@ -1,4 +1,4 @@
#include "Bantam44.h"
#include "bantam44.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = { /* Base */

@ -38,28 +38,8 @@
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = clueboard1
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = clueboard1.c \
led.c
ifdef KEYMAP
SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
else
SRC := keymaps/keymap_default.c $(SRC)
endif
CONFIG_H = config.h
SRC = led.c
# MCU name
MCU = atmega32u4
@ -113,25 +93,18 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= yes # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE ?= no
RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality
MIDI_ENABLE ?= no # MIDI controls
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
ifndef QUANTUM_DIR
include ../../Makefile
endif

File diff suppressed because it is too large Load Diff

@ -38,27 +38,7 @@
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = clueboard2
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = clueboard2.c led.c
ifdef KEYMAP
SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
else
SRC := keymaps/keymap_default.c $(SRC)
endif
CONFIG_H = config.h
SRC = led.c
# MCU name
#MCU = at90usb1287
@ -113,29 +93,23 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality (+4870)
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= yes # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality (+4870)
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150)
MIDI_ENABLE ?= no # MIDI controls
AUDIO_ENABLE ?= no
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
#ifdef BACKLIGHT_ENABLE
SRC := backlight.c $(SRC)
#endif
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
ifndef QUANTUM_DIR
include ../../Makefile
endif

File diff suppressed because it is too large Load Diff

@ -0,0 +1,49 @@
#----------------------------------------------------------------------------
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF.
#
# make extcoff = Convert ELF to AVR Extended COFF.
#
# make program = Download the hex file to the device.
# Please customize your programmer settings(PROGRAM_CMD)
#
# make teensy = Download the hex file to the device, using teensy_loader_cli.
# (must have teensy_loader_cli installed).
#
# make dfu = Download the hex file to the device, using dfu-programmer (must
# have dfu-programmer installed).
#
# make flip = Download the hex file to the device, using Atmel FLIP (must
# have Atmel FLIP installed).
#
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
# (must have dfu-programmer installed).
#
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
# (must have Atmel FLIP installed).
#
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
#
# make filename.i = Create a preprocessed source file for use in submitting
# bug reports to the GCC project.
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Build Options
# change to "no" to disable the options, or define them in the makefile.mk in
# the appropriate keymap folder that will get included automatically
#
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -38,27 +38,8 @@
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = cluepad
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = cluepad.c backlight.c
ifdef KEYMAP
SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
else
SRC := keymaps/keymap_default.c $(SRC)
endif
CONFIG_H = config.h
SRC = backlight.c
# MCU name
#MCU = at90usb1287
@ -113,24 +94,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
# MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
# EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
# CONSOLE_ENABLE = yes # Console for debug(+400)
# COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable numpad's backlight functionality
RGBLIGHT_ENABLE = yes
# MIDI_ENABLE = YES # MIDI controls
# UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
# MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
# EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE ?= yes # Enable numpad's backlight functionality
RGBLIGHT_ENABLE ?= yes
# MIDI_ENABLE ?= YES # MIDI controls
# UNICODE_ENABLE ?= YES # Unicode
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
ifndef QUANTUM_DIR
include ../../Makefile
endif

File diff suppressed because it is too large Load Diff

@ -14,30 +14,10 @@
#
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = ergodox_ez
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = ergodox_ez.c \
twimaster.c \
SRC = twimaster.c \
matrix.c
ifdef KEYMAP
SRC := keymaps/$(KEYMAP)/keymap.c $(SRC)
else
SRC := keymaps/default/keymap.c $(SRC)
endif
CONFIG_H = config.h
# MCU name
MCU = atmega32u4
@ -90,41 +70,17 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
# CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# MIDI_ENABLE = yes # MIDI controls
# UNICODE_ENABLE = yes # Unicode
# If you want to have your own config_user.h, you can just put it in
# your keymap directory. Anything you set there will take precedence
# over the global config.h.
ifneq ("$(wildcard keymaps/$(KEYMAP)/config_user.h)","")
CONFIG_USER_H = keymaps/$(KEYMAP)/config_user.h
endif
ifdef KEYMAP
ifeq ("$(wildcard keymaps/$(KEYMAP).c)","")
ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
include keymaps/$(KEYMAP)/makefile.mk
endif
endif
endif
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration
CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# MIDI_ENABLE ?= yes # MIDI controls
# UNICODE_ENABLE ?= yes # Unicode
ifndef QUANTUM_DIR
include ../../Makefile
endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,7 +1,7 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H 1
#include "config.h"
#include "../../config.h"
#undef MOUSEKEY_TIME_TO_MAX
#undef MOUSEKEY_MAX_SPEED

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,7 +1,7 @@
#include "ergodox_ez.h"
#include "debug.h"
#include "action_layer.h"
#include "keymap_extras/keymap_neo2.h"
#include "keymap_neo2.h"
// Layer names
#define BASE 0 // default layer

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save