diff options
Diffstat (limited to 'keyboards/atomic')
-rw-r--r-- | keyboards/atomic/Makefile | 73 | ||||
-rw-r--r-- | keyboards/atomic/README.md | 25 | ||||
-rw-r--r-- | keyboards/atomic/atomic.c | 325 | ||||
-rw-r--r-- | keyboards/atomic/atomic.h | 49 | ||||
-rw-r--r-- | keyboards/atomic/config.h | 158 | ||||
-rw-r--r-- | keyboards/atomic/keymaps/abienz.c | 36 | ||||
-rw-r--r-- | keyboards/atomic/keymaps/default/compiled.hex | 1118 | ||||
-rw-r--r-- | keyboards/atomic/keymaps/default/keymap.c | 234 | ||||
-rw-r--r-- | keyboards/atomic/keymaps/michelle.c | 183 | ||||
-rw-r--r-- | keyboards/atomic/keymaps/pvc/Makefile | 15 | ||||
-rw-r--r-- | keyboards/atomic/keymaps/pvc/compiled.hex | 1700 | ||||
-rw-r--r-- | keyboards/atomic/keymaps/pvc/config.h | 166 | ||||
-rw-r--r-- | keyboards/atomic/keymaps/pvc/keymap.c | 578 |
13 files changed, 4660 insertions, 0 deletions
diff --git a/keyboards/atomic/Makefile b/keyboards/atomic/Makefile new file mode 100644 index 000000000..08e9205cb --- /dev/null +++ b/keyboards/atomic/Makefile @@ -0,0 +1,73 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# Build Options +# change to "no" to disable the options, or define them in the Makefile 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 ?= 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 + +ifndef QUANTUM_DIR + include ../../Makefile +endif
\ No newline at end of file diff --git a/keyboards/atomic/README.md b/keyboards/atomic/README.md new file mode 100644 index 000000000..9fe75f572 --- /dev/null +++ b/keyboards/atomic/README.md @@ -0,0 +1,25 @@ +Atomic keyboard firmware +====================== +DIY/Assembled ortholinear 60% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent README.md](/README.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/atomic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default +To build with the default keymap, simply run `make`. + +### Other Keymaps +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +``` +$ make KEYMAP=[default|jack|<name>] +``` +Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/atomic/atomic.c b/keyboards/atomic/atomic.c new file mode 100644 index 000000000..fa218a48f --- /dev/null +++ b/keyboards/atomic/atomic.c @@ -0,0 +1,325 @@ +#include "atomic.h" + +__attribute__ ((weak)) +void matrix_init_user(void) { + // leave this function blank - it can be defined in a keymap file +}; + +__attribute__ ((weak)) +void matrix_scan_user(void) { + // leave this function blank - it can be defined in a keymap file +} + +__attribute__ ((weak)) +bool process_action_user(keyrecord_t *record) { + // leave this function blank - it can be defined in a keymap file + return true; +} + +__attribute__ ((weak)) +void led_set_user(uint8_t usb_led) { + // leave this function blank - it can be defined in a keymap file +} + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + MCUCR |= (1<<JTD); + MCUCR |= (1<<JTD); + +#ifdef BACKLIGHT_ENABLE + backlight_init_ports(); +#endif + + // Turn status LED on + DDRE |= (1<<6); + PORTE |= (1<<6); + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_action_kb(keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_action_user(record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} + +#ifdef BACKLIGHT_ENABLE +#define CHANNEL OCR1C +#define BREATHING_NO_HALT 0 +#define BREATHING_HALT_OFF 1 +#define BREATHING_HALT_ON 2 + +static uint8_t breath_intensity; +static uint8_t breath_speed; +static uint16_t breathing_index; +static uint8_t breathing_halt; + +void backlight_init_ports() +{ + + // Setup PB7 as output and output low. + DDRB |= (1<<7); + PORTB &= ~(1<<7); + + // Use full 16-bit resolution. + ICR1 = 0xFFFF; + + // I could write a wall of text here to explain... but TL;DW + // Go read the ATmega32u4 datasheet. + // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on + + // Pin PB7 = OCR1C (Timer 1, Channel C) + // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 + // (i.e. start high, go low when counter matches.) + // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 + // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 + + TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; + TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; + + backlight_init(); + breathing_defaults(); +} + +void backlight_set(uint8_t level) +{ + // Prevent backlight blink on lowest level + PORTB &= ~(_BV(PORTB7)); + + if ( level == 0 ) + { + // Turn off PWM control on PB7, revert to output low. + TCCR1A &= ~(_BV(COM1C1)); + + // Set the brightness to 0 + CHANNEL = 0x0; + } + else if ( level >= BACKLIGHT_LEVELS ) + { + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + + // Set the brightness to max + CHANNEL = 0xFFFF; + } + else + { + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + + // Set the brightness + CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); + } + breathing_intensity_default(); +} + + +void breathing_enable(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint (brightest point) + breathing_index = 0x20 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_pulse(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_HALT_ON; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_disable(void) +{ + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + backlight_set(get_backlight_level()); +} + +void breathing_self_disable(void) +{ + if (get_backlight_level() == 0) + { + breathing_halt = BREATHING_HALT_OFF; + } + else + { + breathing_halt = BREATHING_HALT_ON; + } + + //backlight_set(get_backlight_level()); +} + +void breathing_toggle(void) +{ + if (!is_breathing()) + { + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + } + + // Toggle breathing interrupt + TIMSK1 ^= _BV(OCIE1A); + + // Restore backlight level + if (!is_breathing()) + { + backlight_set(get_backlight_level()); + } +} + +bool is_breathing(void) +{ + return (TIMSK1 && _BV(OCIE1A)); +} + +void breathing_intensity_default(void) +{ + //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS); + breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2)); +} + +void breathing_intensity_set(uint8_t value) +{ + breath_intensity = value; +} + +void breathing_speed_default(void) +{ + breath_speed = 4; +} + +void breathing_speed_set(uint8_t value) +{ + bool is_breathing_now = is_breathing(); + uint8_t old_breath_speed = breath_speed; + + if (is_breathing_now) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + breath_speed = value; + + if (is_breathing_now) + { + // Adjust index to account for new speed + breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); + } + +} + +void breathing_speed_inc(uint8_t value) +{ + if ((uint16_t)(breath_speed - value) > 10 ) + { + breathing_speed_set(0); + } + else + { + breathing_speed_set(breath_speed - value); + } +} + +void breathing_speed_dec(uint8_t value) +{ + if ((uint16_t)(breath_speed + value) > 10 ) + { + breathing_speed_set(10); + } + else + { + breathing_speed_set(breath_speed + value); + } +} + +void breathing_defaults(void) +{ + breathing_intensity_default(); + breathing_speed_default(); + breathing_halt = BREATHING_NO_HALT; +} + +/* Breathing Sleep LED brighness(PWM On period) table + * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle + * + * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63 + * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i } + */ +static const uint8_t breathing_table[64] PROGMEM = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, + 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, +255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, + 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +ISR(TIMER1_COMPA_vect) +{ + // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity; + + + uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F; + + if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F))) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity; + +} + + + +#endif
\ No newline at end of file diff --git a/keyboards/atomic/atomic.h b/keyboards/atomic/atomic.h new file mode 100644 index 000000000..901761f51 --- /dev/null +++ b/keyboards/atomic/atomic.h @@ -0,0 +1,49 @@ +#ifndef ATOMIC_H +#define ATOMIC_H + +#include "quantum.h" +#include <stddef.h> +#include <avr/io.h> +#include <avr/interrupt.h> + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP_SEMI_STANDARD( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \ + K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \ + { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); +bool process_action_user(keyrecord_t *record); +void led_set_user(uint8_t usb_led); +void backlight_init_ports(void); + +void breathing_enable(void); +void breathing_pulse(void); +void breathing_disable(void); +void breathing_self_disable(void); +void breathing_toggle(void); +bool is_breathing(void); + + +void breathing_defaults(void); +void breathing_intensity_default(void); +void breathing_speed_default(void); +void breathing_speed_set(uint8_t value); +void breathing_speed_inc(uint8_t value); +void breathing_speed_dec(uint8_t value); + + +#endif
\ No newline at end of file diff --git a/keyboards/atomic/config.h b/keyboards/atomic/config.h new file mode 100644 index 000000000..bf9550e94 --- /dev/null +++ b/keyboards/atomic/config.h @@ -0,0 +1,158 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Atomic Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D5, B5, B6, C6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/atomic/keymaps/abienz.c b/keyboards/atomic/keymaps/abienz.c new file mode 100644 index 000000000..589a64dc4 --- /dev/null +++ b/keyboards/atomic/keymaps/abienz.c @@ -0,0 +1,36 @@ +#include "atomic.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { /* Colemak */ + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO }, + { KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT, KC_ENT, KC_NO, KC_PGUP }, + { KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, KC_NO, KC_LALT, FUNC(1), KC_SPC, KC_NO, KC_RALT, FUNC(2), KC_RGUI, KC_NO, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + }, + [1] = { /* function */ + { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_NO }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY }, + { KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, FUNC(1), KC_TRNS, KC_NO, KC_TRNS, FUNC(2), KC_TRNS, KC_NO, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT }, + } +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(1), + [2] = ACTION_LAYER_MOMENTARY(1), + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(TYPE(KC_T), END); + break; + } + return MACRO_NONE; +}; + diff --git a/keyboards/atomic/keymaps/default/compiled.hex b/keyboards/atomic/keymaps/default/compiled.hex new file mode 100644 index 000000000..b9bb143ea --- /dev/null +++ b/keyboards/atomic/keymaps/default/compiled.hex @@ -0,0 +1,1118 @@ +:100000000C942A030C946E030C946E030C946E03F0
+:100010000C946E030C946E030C946E030C946E039C
+:100020000C946E030C946E030C946A0D0C943C0EAD
+:100030000C94531B0C946E030C946E030C946E037F
+:100040000C946E030C94D6030C946E030C946E0304
+:100050000C946E030C94BB1B0C946E030C946E03F7
+:100060000C946E030C946E030C946E030C946E034C
+:100070000C946E030C946E030C946E030C946E033C
+:100080000C946E030C946E030C946E030C946E032C
+:100090000C946E030C946E030C946E030C946E031C
+:1000A0000C946E030C946E030C946E03A90ECB0E8D
+:1000B000B90FCB0EB90F100F330FB90F880F9B0F6D
+:1000C00085128512B412B412F31213136914691451
+:1000D0001E136914CE13CE1335143E146914631421
+:1000E000DB13DB13DB13DB13DB13DB13DB13DB13A0
+:1000F000DB13DB13DB13DB13DB13DB13DB13DB1390
+:10010000EB13F91300140714111400000000000091
+:100110000000000000010204060A0F17202C3A4AD2
+:100120005D71879DB3C7DAE9F5FCFFFCF5E9DAC735
+:10013000B39D87715D4A3A2C20170F0A060402010D
+:100140000000000000000000000035001E001F003D
+:100150002000210022002300240025002600270083
+:100160002D002E002A002A002B0014001A0008007F
+:10017000150017001C0018000C00120013002F00BF
+:10018000300031004C00290004001600070009006F
+:100190000A000B000D000E000F0033003400280091
+:1001A00028004B00E1001D001B000600190005009F
+:1001B00011001000360037003800E500E50052005D
+:1001C0004E000030E000E200E30004512C002C005F
+:1001D0000351E700E600E4000551500051004F00D4
+:1001E00035001E001F0020002100220023002400F3
+:1001F0002500260027002D002E002A002A002B00B3
+:1002000014001A00090013000A000D000F00180066
+:100210001C0033002F00300031004C002900040086
+:1002200015001600170007000B00110008000C0055
+:1002300012003400280028004B00E1001D001B00C4
+:100240000600190005000E001000360037003800C7
+:10025000E500E50052004E000030E000E200E3005F
+:1002600004512C002C000351E700E600E400055186
+:10027000500051004F0035001E001F0020002100DB
+:100280002200230024002500260027002D002E0038
+:100290002A002A002B0034003600370013001C000F
+:1002A00009000A00060015000F002F003000310081
+:1002B0004C00290004001200080018000C00070080
+:1002C0000B001700110016003800280028004B0012
+:1002D000E100330014000D000E001B0005001000AB
+:1002E0001A0019001D00E500E50052004E00003024
+:1002F000E000E200E30004512C002C000351E70071
+:10030000E600E4000551500051004F0001003A00A2
+:100310003B003C003D003E003F00400041004200E9
+:100320004300440045000100010001001E021F02BD
+:100330002002210222022302240225022602270291
+:10034000010001000100490001003A003B003C00AF
+:100350003D003E003F002D022E022F0230023102EE
+:100360000100010001000100400041004200430083
+:1003700044004500010001000100010001000100EE
+:100380000100010001000100010001000100010065
+:100390000100010001000100010001000100010055
+:1003A000010001003A003B003C003D003E003F00E0
+:1003B00040004100420043004400450001000100AC
+:1003C00001001E001F002000210022002300240045
+:1003D000250026002700010001000100490001005E
+:1003E0003A003B003C003D003E003F002D002E0047
+:1003F0002F00300031000100010001000100400029
+:10040000410042004300440045000100010001009A
+:1004100001000100010001000100010001000100D4
+:1004200001000100010001000100010001000100C4
+:10043000010001000100010053003A003B003C00B4
+:100440003D003E003F0040004100420043004400A8
+:100450004500010001004700680069006A006B0068
+:100460006C006D006E006F00700071007200730010
+:10047000480046003900F800F700F600F500FD00DE
+:10048000FF00AB00AA00A900AE00010001000100BE
+:10049000F900010001000052015202520100010066
+:1004A000010001000100010001000100F000FA005C
+:1004B00001000100010001000100F400F40001004E
+:1004C0000100010001000100F200F100F300280327
+:1004D0005400680065002000410074006F006D004A
+:1004E0006900630020004B006500790062006F0026
+:1004F00061007200640000002C034F007200740061
+:1005000068006F006C0069006E0065006100720099
+:1005100020004B006500790062006F0061007200EE
+:10052000640073000000040309040902540003017D
+:1005300000A0FA09040000010301010009211101D2
+:1005400000012240000705810308000A0904010098
+:100550000103010200092111010001224D000705DC
+:10056000820308000A0904020001030000000921B7
+:10057000110100012236000705830308000A120159
+:10058000100100000008EDFE6060010001020001A2
+:1005900005010980A101850216010026B7001A0194
+:1005A000002AB700751095018100C0050C0901A152
+:1005B000018503160100269C021A01002A9C02757F
+:1005C0001095018100C005010902A1010901A100E6
+:1005D00005091901290515002501950575018102F7
+:1005E0009501750381010501093009311581257FC8
+:1005F00095027508810609381581257F95017508D2
+:100600008106050C0A38021581257F950175088140
+:1006100006C0C005010906A101050719E029E71573
+:100620000025019508750181029501750881010574
+:100630000819012905950575019102950175039128
+:10064000010507190029FF150026FF00950675080A
+:100650008100C00011241FBECFEFDAE0DEBFCDBFA6
+:1006600004B603FE24C08091F0019091F101A091A5
+:10067000F201B091F3018730904BA740B04BB9F431
+:100680001092F0011092F1011092F2011092F30118
+:1006900014BE84B7877F84BF88E10FB6F894809337
+:1006A0006000109260000FBEE0E0F8E3099511E0F1
+:1006B000A0E0B1E0EEE7F5E402C005900D92A234AF
+:1006C000B107D9F711E0A2E4B1E001C01D92A03F4B
+:1006D000B107E1F70E94B40A0C94BD220C9400000B
+:1006E0000895089581E0089508950C9471030C9481
+:1006F00072030C9474030E94332123E030E0281B22
+:100700003109220F209346010895282F2F988091B8
+:100710008000211108C0877F8093800010928D0097
+:1007200010928C001BC0886080938000233018F0EA
+:100730008FEF9FEF0FC083E090E0821B9109880F3D
+:10074000991F2FEF3FEFA90102C0569547958A9553
+:10075000E2F7CA0190938D0080938C000C947B0388
+:100760000E947B0384E0809345011092420108952A
+:10077000279A2F988FEF9FEF9093870080938600A2
+:100780008AE08093800089E1809381000E949C2010
+:100790000C94B00385B7806885BF85B7806885BF36
+:1007A0000E94B8036E9A769A0C9470031F920F926F
+:1007B0000FB60F9211242F933F938F939F93EF9334
+:1007C000FF93E0914301F0914401CF010196909392
+:1007D0004401809343010090450102C0F695E795DE
+:1007E0000A94E2F7EF7380914201823019F4E0320B
+:1007F00051F404C0813039F4EF3329F480916F0053
+:100800008D7F80936F00F0E0E65FFE4FE49121E082
+:1008100031E0E29FC001E39F900D1124009046015A
+:1008200002C0969587950A94E2F790938D00809385
+:100830008C00FF91EF919F918F913F912F910F909D
+:100840000FBE0F901F90189561110DC0FC018281A1
+:10085000882331F085EE0E9429110E94F32003C005
+:1008600085EE0E94F11180E090E0089581E0089506
+:100870000C94360408950F931F93CF93DF938C014C
+:10088000FC01C081D181CE010E94CD19BE010E9420
+:100890006C07EC01B8010E943804882309F470C188
+:1008A000F8018281882309F45BC080915201811193
+:1008B0001FC0C431F0E7DF0709F00AC10E943A0403
+:1008C00081E0809352010E94851B90935101809397
+:1008D00050011092490110924B0110924A0110925E
+:1008E0004D0110924C0110924F0110924E0148C1DF
+:1008F00080915001909151010E94911B883C91057B
+:1009000070F480914901E82FF0E0EE0FFF1FE65BE5
+:10091000FE4FD183C0838F5F8093490131C1C431C1
+:1009200020E7D20708F024C1C23080E7D80710F5CD
+:10093000C11590E7D90709F0DAC0F8018281882350
+:1009400009F4BFC00E94D414FFEF24E38CE0F150FF
+:1009500020408040E1F700C000000E94E01B10C171
+:10096000C431F0E7DF0708F0CFC0C23020E7D2077C
+:1009700008F49BC0F8018281882309F4A2C00E9478
+:100980003A1C811102C00E941B1C0E944D1C90E069
+:100990009093E1018093E001C230F0E7DF0721F49A
+:1009A0008091E00181607AC0C33020E7D20721F452
+:1009B0008091E001826072C0C43080E7D80721F4E2
+:1009C0008091E00184606AC0C53090E7D90719F4CE
+:1009D0008091E00127C0C630E0E7DE0721F4809176
+:1009E000E00180615BC0C730F0E7DF0721F4809150
+:1009F000E001806253C0C83020E7D20721F4809123
+:100A0000E00180644BC0C93080E7D80721F48091B1
+:100A1000E001806843C0CA3090E7D90729F480918B
+:100A2000E001846088603AC0CB30E0E7DE0721F463
+:100A30008091E0018E7F32C0CC30F0E7DF0721F4F7
+:100A40008091E0018D7F2AC0CD3020E7D20721F4CC
+:100A50008091E0018B7F22C0CE3080E7D80719F467
+:100A60008091E0011AC08091E001CF3090E7D90772
+:100A700011F48F7E13C0C031E0E7DE0711F48F7DE3
+:100A80000DC0C131F0E7DF0711F48F7B07C0C23121
+:100A9000D04711F48F7702C08B7F877F8093E0016E
+:100AA0008091E0010E94511C6BC0C11580E7D807FE
+:100AB00041F0C130D047F1F081E08093470180934D
+:100AC0004801C801DF91CF911F910F910C947703DA
+:100AD000C43120E7D20708F04BC0C23080E7D80706
+:100AE00008F048CFC11590E7D90709F42BCFC130E2
+:100AF000D04711F7F8018281882319F38091CF0143
+:100B000081608093CF013CC0C333E0E7DE07A1F4EE
+:100B1000F8018281882321F01092470182E017C0FA
+:100B200080914701811106C086E20E94291186E268
+:100B30000E94F11182E019C0C433D04709F0BCCF44
+:100B4000F8018281882331F01092480180E20E94EE
+:100B5000401216C080914801811106C087E20E94B0
+:100B6000291187E20E94F11180E20E94471208C019
+:100B7000C333F0E7DF0761F2C433D04709F39CCFFA
+:100B800080E0DF91CF911F910F9108950C94CA03DB
+:100B90000C9475032FE0729FF00111243BE4839FB6
+:100BA000E00DF11D1124E60FF11DEE0FFF1FE65BB6
+:100BB000FE4F859194910E947E07811540E5940730
+:100BC00008F047C0811520E4920708F013C1883E61
+:100BD000910520F5803E910508F07CC1883A910589
+:100BE00078F4853A910508F0A5C08130910509F4A3
+:100BF00071C108F42EC18430910508F06BC129C180
+:100C00008B3B910508F4A1C0803C910508F421C1FB
+:100C1000FC01EE0FFF1FE653F040E6C0811530E205
+:100C2000930758F4811541E0940708F053C1803FC1
+:100C3000910508F40EC190650895811520E392078F
+:100C400008F0D5C0FC01FF70EE0FFF1FE65BFE4F02
+:100C5000CBC0811535E5930708F043C0811544E505
+:100C6000940708F0DEC0811522E5920708F581158A
+:100C700031E5930708F0C1C0482F437021E030E010
+:100C800002C0220F331F4A95E2F73C68AC0164E0D2
+:100C9000569547956A95E1F74370342B8F7086958A
+:100CA000869540E2849FC0011124822B932B0895E6
+:100CB000282F26952695AC0143705527811593451D
+:100CC00008F0A0C080E2289F9001112481E090E00C
+:100CD00002C0880F991F4A95E2F7822B932B9C68DC
+:100CE00008958F3240E7940790F48F3120E7920700
+:100CF00008F0A2C0811536E5930708F497C09C015F
+:100D000030562115304108F0A4C09F7093C0803345
+:100D100020E7920709F497C008F492C0813340E7B6
+:100D2000940709F493C08233904709F092C080E0A1
+:100D300093ED0895853A910509F48EC0863A9105A0
+:100D400009F08DC082E890E40895883A910509F48D
+:100D500089C0893A910509F488C08A3A910509F455
+:100D600087C08B3A910509F486C08C3A910509F445
+:100D700085C08D3A910509F484C0803B910509F442
+:100D800083C08E3A910509F482C08F3A910509F427
+:100D900081C0813B910509F480C0823B910509F433
+:100DA0007FC0833B910509F47EC0843B910509F423
+:100DB0007DC0853B910509F47CC0863B910509F413
+:100DC0007BC0873B910509F47AC0883B910509F403
+:100DD00079C0893B910509F478C08A3B910509F4F3
+:100DE00077C080E094E408958591949108959927BF
+:100DF000906C08959F70906A0895982F8827816F4E
+:100E0000906A089590E2299F9001112481E090E07A
+:100E100002C0880F991F4A95E2F7822B932B9A689C
+:100E20000895982F8827846F906A08958F71992765
+:100E3000982F8827906208958F519047946D089558
+:100E400080E091ED089580E090ED089580E092EDCE
+:100E5000089580E090E0089581E890E4089583E8A3
+:100E600090E4089582EE94E4089589EE94E4089560
+:100E70008AEE94E4089585EB94E4089586EB94E477
+:100E8000089587EB94E408958CEC94E408958DEC38
+:100E900094E4089583E895E408958AE895E4089534
+:100EA00082E995E4089584E995E4089581E296E461
+:100EB000089583E296E4089584E296E4089585E235
+:100EC00096E4089586E296E4089587E296E408950C
+:100ED0008AE296E4089508959FE0799FF001112435
+:100EE0009BE4899FE00DF11D1124E60FF11DEE0F2B
+:100EF000FF1FE65BFE4F859194910895823891051E
+:100F000049F1B0F48133910509F458C048F48932AD
+:100F1000910509F44EC08A32910509F454C0089530
+:100F20008533910509F440C08933910599F00895FE
+:100F3000833E910529F138F4803E910591F0823E7F
+:100F40009105A1F00895863E9105F9F0873E91053F
+:100F500031F108952091E00120FD3AC021FD38C013
+:100F600008958091E00180FD35C032C08091E0019C
+:100F700082FF32C08091E00184FD30C083EE39C031
+:100F80008091E00182FD28C0F5CF8091E00183FFD0
+:100F900027C08091E00184FD21C087EE2AC08091A6
+:100FA000E00183FD1DC0F5CF8091E00185FD1AC0F1
+:100FB0001BC08091E00185FD17C014C08091E00145
+:100FC00086FD14C015C08091E00186FD11C00EC0E1
+:100FD00080EE0FC089E30DC082EE0BC080E009C037
+:100FE00086EE07C089E205C085E303C08AE201C03E
+:100FF00081E390E008950C947903E82FF0E0ED5D33
+:10100000FE4F8081E82FEF70F0E082958F7021E035
+:1010100030E0A90102C0440F551F8A95E2F740A3B2
+:1010200008950F931F93CF93DF93C4E0D0E001E0C6
+:1010300010E0FE01ED5DFE4F8081E82FEF70F0E0E3
+:1010400021A182958F70A80102C0440F551F8A9577
+:10105000E2F7CA01822B81A38C2F0E94FD07219702
+:1010600040F78EE090E061E070E0FC01EC5EFE4F46
+:101070002081E22FEF70F0E042A122952F70DB017A
+:1010800002C0AA0FBB1F2A95E2F79D01242B22A3C1
+:10109000019758F7DF91CF911F910F9108950F930A
+:1010A0001F93CF93DF9385B7806885BF85B780682E
+:1010B00085BFC4E0D0E001E010E0FE01ED5DFE4F31
+:1010C0008081E82FEF70F0E021A182958F70A80158
+:1010D00002C0440F551F8A95E2F7CA01822B81A3F3
+:1010E0008C2F0E94FD07219740F78EE090E061E091
+:1010F00070E0FC01EC5EFE4F2081E22FEF70F0E02B
+:1011000042A122952F70DB0102C0AA0FBB1F2A95B6
+:10111000E2F79D01242B22A3019758F7DF91CF918D
+:101120001F910F910C94C605EF92FF920F931F939E
+:10113000CF93DF930DE511E0C4E0EE24E394F12CAE
+:10114000D5E08C2F0E94FD078EE090E040E050E05B
+:10115000FC01EC5EFE4F6081E62FEF70F0E020A115
+:1011600030E062956F7002C0359527956A95E2F779
+:1011700020FD09C09701082E02C0220F331F0A94D8
+:10118000E2F7422B532B019718F7F80192918291C5
+:101190008F018417950721F051834083D09300017C
+:1011A0008C2F0E94FD07C15060F68091000187FDE1
+:1011B0001FC08150809300018F3F39F08FE99FE07D
+:1011C0000197F1F700C0000013C080E090E0FC013F
+:1011D000E35AFE4FDC01AD5ABE4F18962D913C915B
+:1011E0001997318720870297863FEFEF9E0779F79F
+:1011F0000E94C80581E0DF91CF911F910F91FF9070
+:10120000EF900895E82FF0E0EE0FFF1FE35AFE4F36
+:1012100080819181089508950F931F93CF9307E6DE
+:1012200011E0C0E0F801929182918F010E94FE1AB4
+:10123000C80FF1E00D351F07A9F78C2FCF911F9133
+:101240000F91089580916F010895CF93DF9300D09F
+:101250001F92CDB7DEB79C018091E601843019F56D
+:1012600093E099833B832A839093E9008FEF9091D9
+:10127000E800815095FD06C095ED9A95F1F70000C4
+:101280008111F5CF8091E80085FF0DC040E050E06E
+:1012900063E070E0CE0101960E945A0B8091E80055
+:1012A0008E778093E8000F900F900F90DF91CF9191
+:1012B0000895CF93DF9300D01F92CDB7DEB7209172
+:1012C000E601243021F522E029839B838A8383E091
+:1012D0008093E9008FEF9091E800815095FD06C062
+:1012E00095ED9A95F1F700008111F5CF8091E80016
+:1012F00085FF0DC040E050E063E070E0CE01019654
+:101300000E945A0B8091E8008E778093E8000F903E
+:101310000F900F90DF91CF9108952091E601243036
+:10132000F1F422E02093E9002FEF3091E800215002
+:1013300035FD06C035ED3A95F1F700002111F5CFE6
+:101340002091E80025FF0BC040E050E065E070E030
+:101350000E945A0B8091E8008E778093E8000895F0
+:10136000CF93DF932091E601243039F521E02093DB
+:10137000E9002FEF3091E800215035FD06C035ED32
+:101380003A95F1F700002111F5CF2091E80025FFF3
+:1013900014C0EC0140E050E068E070E00E945A0B9D
+:1013A0008091E8008E778093E80088E0FE01A7E650
+:1013B000B1E001900D928A95E1F7DF91CF91089508
+:1013C0008091E501811109C00E94EF0C0E944C0D33
+:1013D0008091E20084608093E20008951092E5011C
+:1013E0000895089508950C94481B42E061EC81E053
+:1013F0000E94690C42E061EC82E00E94690C42E0CC
+:1014000061EC83E00C94690C8091E801833009F46D
+:1014100053C030F4813071F0823009F48CC00895EB
+:101420008A3009F478C08B3009F45EC0893009F045
+:101430009AC020C08091E701813A09F094C0809160
+:10144000E800877F8093E8008091EB019091EC01A8
+:10145000892B21F468E087E691E003C060E080E03A
+:1014600090E070E00E94A50B8091E8008B7780935C
+:10147000E80008958091E701813209F074C08091FD
+:10148000EB019091EC01892B09F06DC08091E8008F
+:10149000877F8093E8008091E80082FD05C08091FD
+:1014A000E6018111F8CF5FC08091F10080936F0158
+:1014B0008091E8008B7753C08091E701813A09F071
+:1014C00052C08091EB019091EC01892B09F04BC047
+:1014D0008091E800877F8093E8008091E80080FF9A
+:1014E000FCCF80910B0136C08091E7018132D9F5A4
+:1014F0008091EB019091EC01892BA9F58091E80096
+:10150000877F8093E8000E949E0C8091E901809380
+:101510000B010C94D4148091E701813221F5809164
+:10152000E800877F8093E8000E949E0C8091EA018A
+:101530008093700108958091E701813AA1F4809130
+:10154000E800877F8093E8008091E80080FFFCCF6F
+:10155000809170018093F1008091E8008E778093F4
+:10156000E8000C949E0C089584B7877F84BF88E1BF
+:101570000FB6F89480936000109260000FBE80E870
+:1015800080936100109261000E9441100E94EF0C54
+:101590000E944C0D8091E20084608093E200789478
+:1015A0000E94D20F0E94431081E091E00E94ED0F53
+:1015B0008091E601853069F40E940A1B8091E40164
+:1015C0008823B1F30E94371B882391F30E94440BB8
+:1015D000EFCF0E944B10ECCF292F3327233031055A
+:1015E000C9F064F42130310581F02230310509F071
+:1015F00043C084E590E02AE235E042C02132310563
+:10160000F1F02232310541F137C082E190E02EE75E
+:1016100035E036C099278130910541F0823091053F
+:1016200041F0892B49F5E6E2F5E005C0E8EFF4E08A
+:1016300002C0EEECF4E0849190E09F0121C06330A1
+:10164000D8F4E62FF0E0EE0FFF1FEF5CFE4F208195
+:10165000318189E090E014C0633070F470E0FB01E8
+:10166000EE0FFF1FE55DFE4F20813181FB01E85D3C
+:10167000FE4F808190E004C080E090E020E030E008
+:10168000FA0131832083089580E189BD82E189BD1B
+:1016900009B400FEFDCF8091D8008F7D8093D800E3
+:1016A0008091E00082608093E0008091E00081FD05
+:1016B000FCCF0895CF92DF92EF92FF920F931F938A
+:1016C000CF93DF93EC018B016A010E94BD0C811165
+:1016D00033C0C114D10439F0F60180819181081B17
+:1016E000190BC80FD91FE12CF12C0115110519F1A7
+:1016F0008091E80085FD16C08091E8008E77809388
+:10170000E800C114D10449F0F60180819181E80E0E
+:10171000F91EF182E08285E00FC00E94BD0C882393
+:1017200021F30AC089918093F10001501109FFEF64
+:10173000EF1AFF0ADACF80E0DF91CF911F910F916E
+:10174000FF90EF90DF90CF9008952091ED013091C0
+:10175000EE012617370748F06115710539F420911D
+:10176000E8002E772093E80001C0B90140E0611540
+:101770007105A9F12091E601222309F443C0253027
+:1017800009F442C02091E80023FD40C02091E80008
+:1017900022FD32C02091E80020FFE9CF4091F30004
+:1017A0002091F20030E0342BFC01CF01611571056E
+:1017B00059F02830310540F481918093F100615057
+:1017C00071092F5F3F4FF1CF41E02830310509F01B
+:1017D00040E02091E8002E772093E800C8CF411127
+:1017E000C9CF0AC08091E601882361F0853061F09D
+:1017F0008091E80083FD0AC08091E80082FFF2CF6B
+:1018000080E0089582E0089583E0089581E00895DE
+:101810002091ED013091EE012617370748F0611550
+:10182000710539F42091E8002E772093E80001C07B
+:10183000B901FC0120E06115710591F18091E6018B
+:10184000882309F440C0853009F43FC08091E80046
+:1018500083FD3DC08091E80082FD2FC08091E800AB
+:1018600080FFE9CF2091F3008091F20090E0922B6D
+:101870006115710559F08830910540F42491209349
+:10188000F1003196615071090196F2CF21E008977D
+:1018900009F020E08091E8008E778093E800CBCFBC
+:1018A0002111CCCF0AC08091E601882361F08530F8
+:1018B00061F08091E80083FD0AC08091E80082FF1A
+:1018C000F2CF80E0089582E0089583E0089581E0FA
+:1018D0000895982F973058F59093E900981739F0AC
+:1018E0007091EC002091ED005091F00003C0242F86
+:1018F000762F50E021FF19C03091EB003E7F3093EE
+:10190000EB003091ED003D7F3093ED003091EB0026
+:1019100031603093EB007093EC002093ED00509316
+:10192000F0002091EE0027FF07C09F5FD3CF8F709C
+:101930008093E90081E0089580E008958091E701B7
+:1019400087FF11C08091E80082FD05C08091E6010B
+:101950008111F8CF11C08091E8008B770BC0809186
+:10196000E601882349F08091E80080FFF8CF80915C
+:10197000E8008E778093E80008952091E40030918C
+:10198000E50095E64091EC00842F817040FF22C075
+:101990008091E80080FD1CC08091E601882391F0D1
+:1019A000853091F08091EB0085FD10C04091E400FE
+:1019B0005091E5004217530729F39A01915011F70E
+:1019C00084E0089582E0089583E0089581E0089519
+:1019D00080E008954091E80042FFDECF08950E9424
+:1019E0005D0D0E94650DE0EEF0E0808181608083F6
+:1019F000E8EDF0E080818F77808319BCA7EDB0E03F
+:101A00008C918E7F8C9380818F7E80831092E501F4
+:101A100008950F931F93CF93DF930E945D0D0E9453
+:101A2000650DC8EDD0E088818F77888388818068D4
+:101A3000888388818F7D888319BC1092E60110927B
+:101A4000E2011092E4011092E30100EE10E0F801CF
+:101A500080818B7F808388818160888342E060E021
+:101A600080E00E94690CE1EEF0E080818E7F80834F
+:101A7000E2EEF0E0808181608083808188608083F5
+:101A8000F80180818E7F8083888180618883DF91E7
+:101A9000CF911F910F910895E8EDF0E080818F7E46
+:101AA0008083E7EDF0E080818160808384E082BF05
+:101AB00081E08093E5010C94090DE8EDF0E0808170
+:101AC0008E7F80831092E20008951092DA001092C7
+:101AD000E10008951F920F920FB60F9211242F93D9
+:101AE0003F934F935F936F937F938F939F93AF93A6
+:101AF000BF93EF93FF938091E10082FF0BC0809131
+:101B0000E20082FF07C08091E1008B7F8093E100BB
+:101B10000E94D10F8091DA0080FF1FC08091D80011
+:101B200080FF1BC08091DA008E7F8093DA00809165
+:101B3000D90080FF0DC080E189BD82E189BD09B473
+:101B400000FEFDCF81E08093E6010E94E00905C020
+:101B500019BC1092E6010E94EE098091E10080FF1D
+:101B600019C08091E20080FF15C08091E2008E7F55
+:101B70008093E2008091E20080618093E200809196
+:101B8000D80080628093D80019BC85E08093E6017C
+:101B90000E94F2098091E10084FF30C08091E20050
+:101BA00084FF2CC080E189BD82E189BD09B400FEBB
+:101BB000FDCF8091D8008F7D8093D8008091E10087
+:101BC0008F7E8093E1008091E2008F7E8093E2001F
+:101BD0008091E20081608093E2008091E20188239D
+:101BE00011F084E007C08091E30087FD02C081E02E
+:101BF00001C083E08093E6010E94F3098091E10037
+:101C000083FF29C08091E20083FF25C08091E1001D
+:101C1000877F8093E10082E08093E6011092E201E9
+:101C20008091E1008E7F8093E1008091E2008E7FC1
+:101C30008093E2008091E20080618093E20042E0C4
+:101C400060E080E00E94690C8091F00088608093E1
+:101C5000F0000E94F109FF91EF91BF91AF919F9128
+:101C60008F917F916F915F914F913F912F910F9045
+:101C70000FBE0F901F9018951F920F920FB60F92E4
+:101C800011242F933F934F935F936F937F938F9381
+:101C90009F93AF93BF93CF93DF93EF93FF93C09145
+:101CA000E900CF708091EC00D82FD17080FDD0E892
+:101CB0001092E9008091F000877F8093F000789483
+:101CC0000E94800E1092E9008091F000886080935D
+:101CD000F000CD2BCF70C093E900FF91EF91DF9121
+:101CE000CF91BF91AF919F918F917F916F915F91B4
+:101CF0004F913F912F910F900FBE0F901F9018950D
+:101D00001F93CF93DF93CDB7DEB7AA970FB6F894A2
+:101D1000DEBF0FBECDBFE7EEF1E088E08E0F909101
+:101D2000F10091938E13FBCF0E94040A8091E8008A
+:101D300083FF1FC18091E7019091E801492F50E096
+:101D40004A30510508F015C1FA01EA5AFF4F0C94C8
+:101D50006D22803881F0823809F00BC18091EB014F
+:101D60008F708093E9008091EB0085FB882780F9D4
+:101D70001092E90006C08091E3019091E401911175
+:101D800082609091E800977F9093E8008093F10043
+:101D90001092F100C8C0282F2D7F09F0EAC08823D7
+:101DA00019F0823061F0E5C08091E901813009F0DD
+:101DB000E0C0933009F080E08093E4012BC0809173
+:101DC000E901811127C08091EB018F7009F4D1C026
+:101DD0008093E9002091EB0020FF1CC0933021F498
+:101DE0008091EB00806214C09091EB009061909321
+:101DF000EB0021E030E0A90102C0440F551F8A9595
+:101E0000E2F74093EA001092EA008091EB008860CC
+:101E10008093EB001092E9008091E800877F86C0F4
+:101E20008111A7C01091E9011F778091E3008078AC
+:101E3000812B8093E3008091E800877F8093E80006
+:101E40000E949E0C8091E80080FFFCCF8091E3000F
+:101E500080688093E300111102C082E001C083E03A
+:101E60008093E60186C08058823008F082C080915D
+:101E7000E9019091EA018C3D53E0950779F583E003
+:101E80008A838AE289834FB7F894DE01139620E0B3
+:101E90003EE051E2E32FF0E050935700E49120FF41
+:101EA00003C0E295EF703F5FEF708E2F90E0EA3055
+:101EB00010F0C79601C0C0968D939D932F5F24317B
+:101EC00049F74FBF8091E800877F8093E8006AE27E
+:101ED00070E0CE0101960E94A50B14C0AE014F5FC9
+:101EE0005F4F6091EB010E94EC0ABC01009709F47E
+:101EF00040C09091E800977F9093E80089819A8193
+:101F00000E94080C8091E8008B778093E80031C034
+:101F1000803879F58091E800877F8093E800809190
+:101F2000E2018093F1008091E8008E778093E800D1
+:101F30000E949E0C1EC081111CC09091E90192303C
+:101F4000C0F48091E800877F8093E8009093E201DD
+:101F50000E949E0C8091E201811106C08091E300F5
+:101F600087FD02C081E001C084E08093E6010E9409
+:101F7000F5098091E80083FF0AC08091E800877F1F
+:101F80008093E8008091EB0080628093EB00AA963A
+:101F90000FB6F894DEBF0FBECDBFDF91CF911F917A
+:101FA00008950895CF938091E6018823A1F0C09110
+:101FB000E900CF709091EC00892F817090FD80E84E
+:101FC000C82B1092E9008091E80083FD0E94800EEA
+:101FD000CF70C093E900CF910895909376018093DC
+:101FE00075010895E0917501F0917601309721F027
+:101FF0000190F081E02D099480E00895E091750151
+:10200000F0917601309721F00280F381E02D099460
+:102010000895E0917501F0917601309721F00480E8
+:10202000F581E02D09940895209173013091740198
+:102030008217930771F09093740180937301E0917C
+:102040007501F0917601309721F00680F781E02D3F
+:1020500009940895209171013091720182179307BC
+:1020600071F09093720180937101E0917501F0918C
+:102070007601309721F00084F185E02D09940895D0
+:1020800008950C9440100E947C1B0E944F080E94EF
+:10209000021C0C949C205F926F927F928F929F9271
+:1020A000AF92BF92CF92DF92EF92FF920F931F9366
+:1020B000CF93DF9300D000D01F92CDB7DEB70E9440
+:1020C000940892E8C92E91E0D92E04E010E0AA24E9
+:1020D000A394B12C502E802F0E9402094C01F601CE
+:1020E000729062906F016826792661147104A1F4E0
+:1020F0000150110978F78FEF89838A831B820E9430
+:10210000851B8160782F9D838C8349815A816B81E7
+:102110008D810E94FB1038C08091CF0181FD0E940B
+:102120000B092EE030E07501022E02C0EE0CFF1C00
+:102130000A94E2F7C70186219721892B09F12983A7
+:102140005A828E209F2091E0892809F490E09B8399
+:102150000E94851B8160782F9D838C8349815A81E1
+:102160006B818D810E94FB10000F111FF801E85850
+:10217000FE4F80819181E826F926F182E08204C039
+:102180002150310980F6B4CF0E94D91D10917701FA
+:102190000E94F20F1817D1F00E94F20F809377017E
+:1021A0000F900F900F900F900F90DF91CF911F9194
+:1021B0000F91FF90EF90DF90CF90BF90AF909F90E6
+:1021C0008F907F906F905F900C94FB070F900F9013
+:1021D0000F900F900F90DF91CF911F910F91FF9073
+:1021E000EF90DF90CF90BF90AF909F908F907F90B7
+:1021F0006F905F900895CF93DF93CDB7DEB72B97A5
+:102200000FB6F894DEBF0FBECDBF4F8358876987E6
+:102210007A878B87DE01119686E0FD0111928A95FF
+:10222000E9F785E0FE01379601900D928A95E1F776
+:1022300049815A816B817C818D819E810E947217B8
+:102240002B960FB6F894DEBF0FBECDBFDF91CF91B6
+:102250000895CF93882309F4C2C0C82F823859F457
+:102260000E94F20F81FDBBC089E30E944C1A0E94BC
+:10227000CF1A89E30CC0833879F40E94F20F80FDF5
+:10228000AEC083E50E944C1A0E94CF1A83E50E94DB
+:10229000691ACF910C94CF1A843859F40E94F20F26
+:1022A00082FD9DC087E40E944C1A0E94CF1A87E4E9
+:1022B000EECF8CEF8C0F813A48F48C2F0E940420D3
+:1022C00081118DC08C2F0E944C1AE3CF80E28C0FBD
+:1022D000883048F4C77081E001C0880FCA95EAF7DA
+:1022E0000E94881AD6CF8BE58C0F833078F4C53ADC
+:1022F00029F0C63A31F083E890E005C081E890E02B
+:1023000002C082E890E0CF910C94141088E58C0F05
+:10231000833108F064C0C83A39F1C93A41F1CA3A88
+:1023200049F1CB3A51F1CC3A59F1CD3A61F1C03B88
+:1023300069F1CE3A71F1CF3A79F1C13B81F1C23BFB
+:1023400089F1C33B91F1C43B99F1C53BA1F1C63B77
+:10235000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BD7
+:10236000C9F180E090E038C082EE90E035C089EE9F
+:1023700090E032C08AEE90E02FC085EB90E02CC058
+:1023800086EB90E029C087EB90E026C08CEC90E0D3
+:1023900023C08DEC90E020C083E891E01DC08AE866
+:1023A00091E01AC082E991E017C084E991E014C07D
+:1023B00081E292E011C083E292E00EC084E292E0FA
+:1023C0000BC085E292E008C086E292E005C087E299
+:1023D00092E002C08AE292E0CF910C942A10CF9151
+:1023E0000895882309F44BC0823859F40E94F20FF3
+:1023F00081FF45C089E30E944C1A0E94CF1A89E3ED
+:102400000CC0833871F40E94F20F80FF38C083E55E
+:102410000E944C1A0E94CF1A83E50E94691A0C94FC
+:10242000CF1A843859F40E94F20F82FF28C087E443
+:102430000E944C1A0E94CF1A87E4EFCF9CEF980FAE
+:10244000913A58F390E2980F983050F4877091E0E9
+:1024500001C0990F8A95EAF7892F0E948E1ADFCF63
+:102460009BE5980F933020F480E090E00C941410DA
+:10247000885A833120F480E090E00C942A1008956B
+:10248000882321F00E94881A0C94CF1A089588237B
+:1024900021F00E948E1A0C94CF1A08957F928F9289
+:1024A0009F92AF92BF92CF92DF92EF92FF920F93E3
+:1024B0001F93CF93DF931F92CDB7DEB77C01C62E5B
+:1024C000772EFC01058102950F70128111110E9477
+:1024D000A51A0E94451A882379F0112369F080E239
+:1024E0008C0D883048F082E00E942E1A0E94451A16
+:1024F00091E0D82ED92601C0D12CE72DE295EF70BE
+:10250000F0E0E05AFF4F0C946D22872D807F072D5D
+:102510000F70882311F00295007F112389F00023AA
+:1025200009F499C180E28C0D883020F4802F0E943C
+:10253000881A03C0802F0E94981A0E94CF1A8BC15C
+:102540008C2D0E94F111002309F4C3C180E28C0D8F
+:10255000883020F4802F0E948E1A03C0802F0E94A2
+:102560009E1A0E94CF1AB5C1872D807F972D9F702C
+:10257000803211F4892F03C0892F8295807FCC206F
+:1025800021F0F1E0CF16A1F01DC0112339F0002396
+:1025900019F1013009F50E94B81A9BC1002319F006
+:1025A000013009F496C189830E94BB1A898110C148
+:1025B000112321F0063008F08CC10EC0053008F060
+:1025C00088C106C1112359F0002331F0F70195812C
+:1025D00090FF41C19F7095830E9440127AC10023F1
+:1025E00009F4F6C03EC1872D86958695837090E0EC
+:1025F000009719F0019761F06CC1112321F08C2D27
+:10260000972D937002C080E090E00E94141061C189
+:10261000112321F08C2D972D937002C080E090E063
+:102620000E942A1056C18C2D112319F00E94E11C22
+:1026300002C00E94491D0E94CE1D4BC1872D837090
+:1026400009F052C0111145C18C2D82958695877075
+:10265000880F880F9C2D9F70892E912CA12CB12C56
+:10266000082E04C0880C991CAA1CBB1C0A94D2F723
+:10267000C4FE14C00FE010E020E030E0B901A80172
+:1026800004C0440F551F661F771F8A95D2F7CB01F0
+:10269000BA01609570958095909503C060E070E0F8
+:1026A000CB01272D26952695237030E02230310569
+:1026B00069F02330310589F0682979298A299B2915
+:1026C0002130310571F00E94BA1803C168297929B7
+:1026D0008A299B290E94D618FCC00E94BA18C501FD
+:1026E000B4010E949E18F5C0112319F0872D817046
+:1026F00001C08695882309F4ECC08C2D82958695BF
+:102700008770880F880F9C2D9F70892E912CA12C8B
+:10271000B12C082E04C0880C991CAA1CBB1C0A945E
+:10272000D2F7C4FE14C00FE010E020E030E0B901A1
+:10273000A80104C0440F551F661F771F8A95D2F762
+:10274000CB01BA01609570958095909503C060E0CB
+:1027500070E0CB01272D269526952370422F50E05F
+:102760004230510569F04330510589F068297929D3
+:102770008A299B294130510571F00E949419A9C002
+:10278000682979298A299B290E94B019A2C00E9430
+:102790009419C501B4010E9478199BC08C2D90E05A
+:1027A000FC01E05EF109E531F10508F050C0E059A7
+:1027B000FF4F0C946D220C2D0F70872D8F711123FC
+:1027C00021F00E941119802F07CF0E943219802F0B
+:1027D0000E9447127EC0112341F0053008F079C0F5
+:1027E000872D8F710E94571974C0063008F071C090
+:1027F000F7CF112339F0872D8F710E94111969C00D
+:102800001123C9F3872D8F710E94321962C01123E1
+:1028100029F0872D8F710E94FC185BC00E94F2186E
+:1028200058C0112351F0172D1F71812F0E941119CB
+:1028300063E0812F0E94251A4CC081E00E942E1A6D
+:10284000023008F446C082E00E942E1A42C01123D2
+:1028500031F0002381F28C2D0E9429113AC000230F
+:1028600089F28C2D0E94F11134C0472D4F706C2DD0
+:10287000C7010E9424040E9416182BC0111129C000
+:10288000472D4F7050E042305105B9F04CF44115DE
+:10289000510581F041305105E1F40E94C42019C076
+:1028A0004330510569F04430510599F48C2D0E9454
+:1028B00016210FC00E94AD200CC00E94E02009C06C
+:1028C0000E94F32006C0472D4F706C2DC7010E9457
+:1028D0006B07DD20F9F00E94211A80FD1BC0F70173
+:1028E00012820E941B1A0E941119C7010E9499149A
+:1028F0000E941B1A0F90DF91CF911F910F91FF90B3
+:10290000EF90DF90CF90BF90AF909F908F907F908F
+:102910000C9432190F90DF91CF911F910F91FF907E
+:10292000EF90DF90CF90BF90AF909F908F907F906F
+:1029300008950F931F93CF93DF93EC0188819981C2
+:102940002B813C81232BB9F09F3F11F48F3F99F0ED
+:10295000CE010E943B04882371F0688179818A81CD
+:102960000E94171A8C010E94CC190E949318B8017A
+:10297000CE010E944E12DF91CF911F910F910895C9
+:102980000E94A51A0E94B51A0E947A1A0E94CF1AB4
+:102990000E947F1E0E94CE1D80E090E00E941410D5
+:1029A00080E090E00C942A100E94951A0C94C014B8
+:1029B0000E940C1A292F22952F7030E02C303105FF
+:1029C0004CF42A3031056CF42250310922303105A3
+:1029D000A8F407C02C30310569F02F30310551F0D3
+:1029E0000DC0803F69F018F4803E40F409C0843F78
+:1029F00029F406C093FB882780F9089580E00895A4
+:102A000081E00895CF93DF9300D000D01F92CDB71F
+:102A1000DEB70F900F900F900F900F90DF91CF9136
+:102A20000895CF93DF9300D000D000D0CDB7DEB7AC
+:102A300026960FB6F894DEBF0FBECDBFDF91CF91C3
+:102A400008951F93CF93DF93C091820116E0809188
+:102A50008301C81799F0D0E01C9FF0011D9FF00D75
+:102A60001124EC57FE4F4081518162817381848132
+:102A700095810E9411152196C770E9CFDF91CF9102
+:102A80001F9108954091B4015091B5016091B60134
+:102A90007091B7018091B8019091B9010C94111512
+:102AA0008091B90182958F7009F054C08091B60170
+:102AB000882309F44FC080918201A0918301609125
+:102AC000B4017091B5014091B7015091B801B6E0E1
+:102AD0008A1709F43FC090E041155105C1F17F3FCD
+:102AE00011F46F3FA1F1B89FF001B99FF00D1124CF
+:102AF000EC57FE4F218172132AC02081621327C038
+:102B00002281211124C0238134812417350710F438
+:102B100021503109241B350B283C3105C0F420918C
+:102B2000B9012F7020612093B90126E0289FF001A0
+:102B3000299FF00D1124E757FE4F80818F7080612F
+:102B4000808384EB91E00E9499140C9421150196E6
+:102B50008770BECF0895CF92DF92EF92FF920F93CE
+:102B60001F93CF93DF93CDB7DEB762970FB6F8947C
+:102B7000DEBF0FBECDBF8C0185E0F801DE011D96E2
+:102B800001900D928A95E1F7D8014C9111965C91D4
+:102B9000119712966C9112971396CD90DC90149722
+:102BA0003091B4017091B5018091B7019091B80155
+:102BB000009709F46BC17F3F19F43F3F09F466C1E8
+:102BC000E090B601EE2009F4C0C02091B901C8160A
+:102BD000D90628F0F601E81BF90BCF0104C0809557
+:102BE00090958C0D9D1DFF24F394883C910578F001
+:102BF000F12C207F09F0C6C07C2DD98AC88A89892A
+:102C00000E94021584EB91E00E949914B1C0822FBA
+:102C1000807F09F046C0751314C0341312C06111CF
+:102C200010C02F7020612093B9010E94421584EBDF
+:102C300091E00E9499148091B901D80115968C9366
+:102C40002EC0CD2819F15F3F11F44F3FF9F0F62E59
+:102C500061111CC0809182012091830136E08217AE
+:102C600009F45AC090E0389FF001399FF00D11240B
+:102C7000EC57FE4F7181571306C07081471303C094
+:102C80007281711103C001968770E9CFF62E662319
+:102C900009F418C18091B90181608093B901F12CC8
+:102CA00011C1751308C0341306C0611104C08091AE
+:102CB000B901D801C3C04D875E878D859E856A8B1B
+:102CC0000E94D8146A898823E1F16623D1F120910A
+:102CD000B901822F82958F7090E0029774F08091F5
+:102CE000B4019091B50198878F831986DB86CA86D7
+:102CF0002C87CE0107960E94991486E0F801A4EB78
+:102D0000B1E001900D928A95E1F70E9450150E9462
+:102D10004215FF24F394D6C04D875E878D859E852E
+:102D20000E940C1A292F22952F7030E02230310595
+:102D30000CF0BCC09F7009F0B6C0805E883008F40B
+:102D4000C1C0C8010E949914E4CFC816D90608F47E
+:102D500053C0F601E81BF90BCF01883C910508F43C
+:102D600050C0F12C7C2DD98AC88A89890E9402150D
+:102D7000E4EBF1E086E0DF011D928A95E9F70E941D
+:102D80004215A0C0751314C0341312C0611110C0D5
+:102D90008091B901F8018583C8010E94991486E0E9
+:102DA000E4EBF1E0DF011D928A95E9F7FE2C8AC081
+:102DB0004D875E878D859E856A8B0E94D8146A89AF
+:102DC000882309F4BECF662309F4BBCF2091B90153
+:102DD000822F82958F7090E002970CF48ECF8091B5
+:102DE000B4019091B5019A8389831B82DD82CC82E4
+:102DF0002E83CE0101967FCF809590958C0D9D1DE1
+:102E0000ACCFF62E662309F49CCF75132EC0341375
+:102E10002CC02091B90120FD1FC0822F82958F7098
+:102E2000D9F0D80115962C9315978F3049F08F5F04
+:102E3000982F9295907F822F8F70892B15968C9367
+:102E4000C8010E94991486E0F801A4EBB1E001905A
+:102E50000D928A95E1F793CF86E0F801A4EBB1E0FB
+:102E600001900D928A95E1F72DC04D875E878D8583
+:102E70009E850E94D814811140CF8091B901816054
+:102E80008093B901C8010E9499141CC0662309F4FB
+:102E900058CF4D875E878D859E850E94D8148823E4
+:102EA00009F44FCF2ACF811148CF0CC0243031050F
+:102EB0000CF047CF9F7009F440CFF8019581907FC7
+:102EC00009F03BCF8F2D62960FB6F894DEBF0FBE90
+:102ED000CDBFDF91CF911F910F91FF90EF90DF90C9
+:102EE000CF9008951F93CF93DF93CDB7DEB72C9784
+:102EF0000FB6F894DEBF0FBECDBF4F8358876987EA
+:102F00007A878B879C87CE0107960E94AB15882312
+:102F100069F08F8198852A853B85232BF1F19F3FAE
+:102F200009F063C08F3F09F060C037C086E0FE0142
+:102F30003796DE01119601900D928A95E1F76F8127
+:102F40007885EA85FB85309741F17F3F11F46F3F2B
+:102F500021F12091830130E0C90101968770992702
+:102F60004091820150E08417950709F447C06983B6
+:102F70007A83FD83EC8396E0929FD001939FB00DFE
+:102F80001124AC57BE4FFE01319601900D929A95D7
+:102F9000E1F7809383010E94211516E08091820160
+:102FA000909183018917C1F1189FC00111248C579A
+:102FB0009E4F0E94AB15882379F1E09182011E9FFC
+:102FC000F0011124EC57FE4F4081518162817381E1
+:102FD000848195810E9411158091820190E0019673
+:102FE0008770992780938201D9CF4F815885698551
+:102FF0007A858B859C850E941115CFCF0E94D414B1
+:103000001092830110928201E4EBF1E086E0DF018F
+:103010001D928A95E9F7C1CF2C960FB6F894DEBFC2
+:103020000FBECDBFDF91CF911F910895EF92FF9218
+:103030000F931F93CF93DF938C01009709F46CC01B
+:10304000F12CEE24E394E8012196F8018491843771
+:1030500040F4843008F051C0813081F0823019F1A1
+:103060005BC0853709F444C0A8F19CE7980F9037FE
+:1030700008F052C08F770E94F11141C00E5F1F4FC0
+:10308000FE01C49180E28C0F883048F4C7708E2D09
+:1030900001C0880FCA95EAF70E94A81A14C08C2FA5
+:1030A0000E9429112DC00E5F1F4FFE01C49180E2C6
+:1030B0008C0F883058F4C7708E2D01C0880FCA95C8
+:1030C000EAF70E94AE1A0E94CF1A1AC08C2F0E94F3
+:1030D000F11116C00E5F1F4FFE01C491CC2381F089
+:1030E0008FE99FE00197F1F700C00000C150F6CFD3
+:1030F0000E5F1F4FFE01F49003C00E9429118E0144
+:103100008F2D882309F49FCFEFE9FFE03197F1F786
+:1031100000C000008150F5CFDF91CF911F910F913A
+:10312000FF90EF90089508956093BE017093BF01E2
+:103130008093C0019093C1010C94C0140F931F930E
+:103140000091BE011091BF012091C0013091C101D9
+:10315000DC01CB01802B912BA22BB32B8093BE01E2
+:103160009093BF01A093C001B093C1011F910F9133
+:103170000C94C0140F931F930091BE011091BF01D6
+:103180002091C0013091C101DC01CB01802391234A
+:10319000A223B3238093BE019093BF01A093C001EB
+:1031A000B093C1011F910F910C94C0140F931F9302
+:1031B0000091BE011091BF012091C0013091C10169
+:1031C000DC01CB0180279127A227B3278093BE0182
+:1031D0009093BF01A093C001B093C1011F910F91C3
+:1031E0000C94C0141092BA011092BB011092BC0151
+:1031F0001092BD010C94C01441E050E060E070E01A
+:1032000004C0440F551F661F771F8A95D2F740935D
+:10321000BA015093BB016093BC017093BD010C9443
+:10322000C01441E050E060E070E004C0440F551F5E
+:10323000661F771F8A95D2F78091BA019091BB01E2
+:10324000A091BC01B091BD01482B592B6A2B7B2B5F
+:103250004093BA015093BB016093BC017093BD01D0
+:103260000C94C01441E050E060E070E004C0440FF2
+:10327000551F661F771F8A95D2F740955095609528
+:1032800070958091BA019091BB01A091BC01B09161
+:10329000BD01482359236A237B234093BA015093ED
+:1032A000BB016093BC017093BD010C94C01441E05C
+:1032B00050E060E070E004C0440F551F661F771FA8
+:1032C0008A95D2F78091BA019091BB01A091BC017F
+:1032D000B091BD01482759276A277B274093BA013F
+:1032E0005093BB016093BC017093BD010C94C0145A
+:1032F0000F931F930091BA011091BB012091BC0163
+:103300003091BD01DC01CB01802B912BA22BB32B83
+:103310008093BA019093BB01A093BC01B093BD010F
+:103320001F910F910C94C0140F931F930091BA0139
+:103330001091BB012091BC013091BD01DC01CB019A
+:1033400080239123A223B3238093BA019093BB01DE
+:10335000A093BC01B093BD011F910F910C94C014B8
+:103360000F931F930091BA011091BB012091BC01F2
+:103370003091BD01DC01CB0180279127A227B32723
+:103380008093BA019093BB01A093BC01B093BD019F
+:103390001F910F910C94C0140895CF92DF92EF9279
+:1033A000FF920F931F93CF93DF938C01C090BE01C8
+:1033B000D090BF01E090C001F090C1018091BA01AE
+:1033C0009091BB01A091BC01B091BD01C82AD92A3E
+:1033D000EA2AFB2ACFE1D0E0D701C6010C2E04C0B7
+:1033E000B695A795979587950A94D2F780FF06C062
+:1033F000B8018C2F0E94CA05019721F4219760F72C
+:1034000080E001C08C2FDF91CF911F910F91FF9031
+:10341000EF90DF90CF900895CF93DF93EC010E945F
+:10342000CD19BE010E94CA05DF91CF910895CB014D
+:103430000E940C1A08958091C20185958595859505
+:1034400008958091C2018770089598E0899F900146
+:103450001124262B2093C2010C9411192091C20132
+:10346000809582238093C201982F977069F430E091
+:10347000482F552747FD50952417350729F0859586
+:10348000859585950C94321908959091C201977095
+:1034900081E009F480E0089520910C0130910D0144
+:1034A000F90132969FEF40E05191581789F09F3F04
+:1034B00019F4511101C0942F4F5F4630A9F79F3F77
+:1034C00039F0F901E90FF11D97FDFA95828308950E
+:1034D000089520910C0130910D01F9013296285F79
+:1034E0003F4F9081981301C010823196E217F30785
+:1034F000C1F7089581E090E0E0910C01F0910D0199
+:10350000E80FF91F1082019688309105A9F70895F8
+:103510009091CE01892B8093CE0108958095909152
+:10352000CE0189238093CE0108951092CE01089593
+:103530009091CD01892B8093CD0108958095909134
+:10354000CD0189238093CD0108951092CD01089576
+:103550009091CC01892B8093CC0108958095909116
+:10356000CC0189238093CC0108951092CC01089559
+:103570008093C30108951092C301089580910C01B6
+:1035800090910D01FC0131969C01285F3F4F80E036
+:10359000919191118F5FE217F307D1F70895E091B0
+:1035A0000C01F0910D018091CE018083E0910C011E
+:1035B000F0910D0190818091CD01892B8083E09164
+:1035C0000C01F0910D0190818091CC01892B8083B9
+:1035D0008091C301882361F0E0910C01F0910D010D
+:1035E0009081892B80830E94BE1A81111092C301A1
+:1035F00080910C0190910D010C94FE0F20E000973A
+:1036000039F0AC0141505109842395232F5FF7CF46
+:10361000822F08958091E601843039F11092D00113
+:1036200020E488E190E00FB6F894A89580936000BC
+:103630000FBE2093600080E00E94850380E00E941E
+:10364000FB0783B7817F846083BF83B7816083BFBB
+:103650007894889583B78E7F83BF88E10FB6F894FE
+:1036600080936000109260000FBE0895089580E07E
+:103670000E9485030E9411080E9494080E94361B34
+:103680000E940C0991E0811101C090E0892F0895FA
+:103690000E94D41480E00E9485030E949C200E9416
+:1036A000F20F0C94FB071F920F920FB60F9211248A
+:1036B0008F939F93AF93BF938091D001811113C0DB
+:1036C0008091D1019091D201A091D301B091D40108
+:1036D0004196A11DB11D8093D1019093D201A09379
+:1036E000D301B093D401BF91AF919F918F910F906F
+:1036F0000FBE0F901F90189582E084BD93E095BD9A
+:103700009AEF97BD80936E0008952FB7F89480913B
+:10371000D1019091D201A091D301B091D4012FBFDA
+:103720000895CF92DF92EF92FF920F931F932FB7DE
+:10373000F8944091D1015091D2016091D3017091E0
+:10374000D4012FBF6A017B01EE24FF248C0120E00D
+:1037500030E0C016D106E206F30610F441505109DC
+:103760009A01281B390BC9011F910F91FF90EF900F
+:10377000DF90CF9008951F920F920FB60F921124F1
+:103780008F939F93AF93BF938091D1019091D2017A
+:10379000A091D301B091D4010196A11DB11D8093D8
+:1037A000D1019093D201A093D301B093D401BF91E2
+:1037B000AF919F918F910F900FBE0F901F90189512
+:1037C0000E94EF0CF8942FEF87EA91E62150804099
+:1037D0009040E1F700C0000087E090EBDC018093AF
+:1037E000F0019093F101A093F201B093F3019CE0FA
+:1037F00088E10FB6F894A895809360000FBE90936F
+:103800006000FFCF0E943A1C811102C00E941B1C65
+:103810000E94451C8093CF010E944D1C90E0909324
+:10382000E1018093E0010E94491C682F70E080E074
+:1038300090E00C9494186DEE7EEF80E090E00E9492
+:10384000A72260E082E090E00E94952260E083E0A1
+:1038500090E00E94952260E084E090E00E94952232
+:1038600060E085E090E00E94952260E086E090E0D4
+:103870000C94952280E090E00E948F2221E08D3E02
+:103880009E4F09F020E0822F089582E090E00C9492
+:10389000872283E090E00C94872284E090E00C94EF
+:1038A0008722682F84E090E00C94952286E090E0D7
+:1038B0000C948722682F86E090E00C9495228091EA
+:1038C000D70180FF0BC06091110185E0689FB001B6
+:1038D000112475956795759567952BC081FF09C073
+:1038E0006091110185E0689FB0011124759567957D
+:1038F00020C082FF07C06091110185E0689FB00180
+:10390000112417C09091D8019923D1F06091100132
+:10391000961788F72091110185E0289F90011124C6
+:10392000929FA001939F500D112470E0CA010E9444
+:1039300059226038710540F46115710539F002C0F3
+:1039400065E070E0862F08958FE7089581E008957F
+:103950008091D70180FF08C060910F0170E07595DC
+:1039600067957595679521C081FF06C060910F012D
+:1039700070E07595679519C082FF04C060910F01D2
+:1039800070E010C09091D8019923C1F060910E01B0
+:103990009617A0F780910F01899FC001112470E054
+:1039A0000E9459226038710528F46115710521F0D3
+:1039B000862F08958FE7089581E0089561E070E013
+:1039C000F4CF803F21F40E945F1C819504C0813FA9
+:1039D00029F40E945F1C8093DB010895823F21F44B
+:1039E0000E945F1C819504C0833F29F40E945F1CE4
+:1039F0008093DA010895893F19F40E94A81C05C03C
+:103A00008A3F31F40E94A81C81958093DC010895BF
+:103A10008B3F21F40E94A81C819504C08C3F29F49F
+:103A20000E94A81C8093DD010895843F21F48091B9
+:103A3000D901816017C0853F21F48091D90182604E
+:103A400011C0863F21F48091D90184600BC0873F6B
+:103A500021F48091D901886005C0883F31F48091BC
+:103A6000D90180618093D90108958D3F21F480911F
+:103A7000D70181600BC08E3F21F48091D701826015
+:103A800005C08F3F29F48091D70184608093D701CE
+:103A90000895803F39F48091DB0187FF6CC010925C
+:103AA000DB0169C0813F29F48091DB011816BCF36A
+:103AB00062C09091DA01823F29F497FF5CC01092B6
+:103AC000DA0159C0833F19F41916CCF354C0893F69
+:103AD00041F48091DC0118160CF04DC01092DC010D
+:103AE0004AC08A3F29F48091DC0187FF44C0F6CFA9
+:103AF0008B3F39F48091DD0187FF3DC01092DD01DD
+:103B00003AC08C3F29F48091DD011816BCF333C014
+:103B1000843F21F48091D9018E7F17C0853F21F425
+:103B20008091D9018D7F11C0863F21F48091D90108
+:103B30008B7F0BC0873F21F48091D901877F05C01F
+:103B4000883F31F48091D9018F7E8093D90113C0D1
+:103B50008D3F21F48091D7018E7F0BC08E3F21F4E1
+:103B60008091D7018D7F05C08F3F29F48091D701C7
+:103B70008B7F8093D7018091DA0181110EC08091F3
+:103B8000DB0181110AC08091DC01811106C08091A6
+:103B9000DD01811102C01092D801089589ED91E0F4
+:103BA0000E9409100E94851B9093D6018093D50135
+:103BB00008951F93CF93DF938091D5019091D60103
+:103BC0000E94911BAC019091D801992321F0209182
+:103BD000120130E006C0209113018AE0289F900175
+:103BE00011244217530708F486C08091DA01C0916E
+:103BF000DB01D091DC011091DD01811107C0C11101
+:103C000076C0D11174C0111172C075C09F3F19F0F8
+:103C10009F5F9093D801181624F40E945F1C809334
+:103C2000DA018091DA0187FF05C00E945F1C81954F
+:103C30008093DA011C1624F40E945F1C8093DB0140
+:103C40008091DB0187FF05C00E945F1C81958093F6
+:103C5000DB016091DA01662339F1C091DB01CC23ED
+:103C600019F1772767FD7095872F972F0E946A219A
+:103C700023E333E343E35FE30E94CE210E94372135
+:103C80006093DA016C2F772767FD7095872F972F48
+:103C90000E946A2123E333E343E35FE30E94CE21E2
+:103CA0000E9437216093DB011D1624F40E94A81C9A
+:103CB0008093DC018091DC0187FF05C00E94A81C75
+:103CC00081958093DC01111624F40E94A81C809336
+:103CD000DD018091DD0187FF05C00E94A81C819550
+:103CE0008093DD01DF91CF911F910C94CE1D9F3FFA
+:103CF00009F08ECF96CFDF91CF911F910895E9ED16
+:103D0000F1E085E0DF011D928A95E9F71092D80174
+:103D10001092D7010895833081F128F4813059F051
+:103D20008230D1F00895853009F449C0B8F1863069
+:103D300009F456C0089580911301262F30E0280F12
+:103D4000311D2F3F310524F4680F6093130108954E
+:103D50008FEF80931301089580911201262F30E098
+:103D6000280F311D2F3F310524F4680F6093120195
+:103D700008958FEF80931201089580911101262FED
+:103D800030E0280F311D2F3F310524F4680F609378
+:103D9000110108958FEF8093110108958091100112
+:103DA000262F30E0280F311D2F3F310524F4680FF6
+:103DB0006093100108958FEF809310010895809112
+:103DC0000F01262F30E0280F311D2F3F310524F43D
+:103DD000680F60930F0108958FEF80930F0108958E
+:103DE00080910E01262F30E0280F311D2F3F310525
+:103DF00024F4680F60930E0108958FEF80930E01F5
+:103E00000895833011F128F4813049F0823091F027
+:103E10000895853081F120F18630C1F108958091B7
+:103E20001301681720F4861B8093130108951092E4
+:103E30001301089580911201681720F4861B809366
+:103E400012010895109212010895809111016817CE
+:103E500020F4861B8093110108951092110108959A
+:103E600080911001681720F4861B8093100108953B
+:103E700010921001089580910F01681720F4861B9D
+:103E800080930F01089510920F01089580910E0103
+:103E9000681720F4861B80930E01089510920E017E
+:103EA00008950F931F938B3109F46EC098F58B30F2
+:103EB00009F49BC0B8F4863009F44AC0873009F48D
+:103EC00051C0853009F098C00E94D4140FEF13ED53
+:103ED00020E3015010402040E1F700C000000E94A4
+:103EE000E01B83C0803109F462C068F48E3009F0B1
+:103EF00083C08091CF0182FB222720F991E0922795
+:103F000090FB82F94AC0863109F46FC0893109F407
+:103F10006CC072C0853309F46AC068F4873209F452
+:103F200066C028F48E3108F467C08D514BC08932C9
+:103F300009F45DC061C0833438F48A3308F041C0AD
+:103F4000883309F452C058C0833409F450C054C0B7
+:103F50008091CF01817F8E7F8093CF0181E080931C
+:103F6000DF014BC09091CF01892F8095817080FB3C
+:103F700090F929F0966098609093CF013EC0997FA8
+:103F8000977F9093CF0131C08091CF0181FB222791
+:103F900020F991E0922790FB81F98093CF0199233A
+:103FA00021F18091CF0181608093CF011EC080916B
+:103FB000CF0183FB222720F991E0922790FB83F920
+:103FC000ECCF895341E050E060E070E08A019B0152
+:103FD00004C0000F111F221F331F8A95D2F7C90199
+:103FE000B8010E9494180E94D41481E006C061E0D8
+:103FF00070E080E090E0F5CF80E01F910F91089590
+:1040000080E0089580E00895CF93C82F8091DF016C
+:10401000813069F018F08230C9F184C0E0910C0160
+:10402000F0910D018081823209F07EC007C0E091DD
+:104030000C01F0910D018081823261F48C2F0E947D
+:104040000020811104C08C2F0E94511F1DC081E0EF
+:1040500090E01AC08C2F0E940220811114C0C4313C
+:1040600079F048F4CB3079F0C03109F061C082E0DA
+:104070008093DF0108C0C93219F0C83321F058C05D
+:104080001092DF0155C081E0817054C0C93291F1B6
+:1040900020F5C43179F1B0F4C73009F047C08EE1A2
+:1040A0008093130182E3809312018AE080931101CF
+:1040B00084E18093100188E080930F0188E280936F
+:1040C0000E0134C0CE51C63088F5EC2FF0E0E95C2B
+:1040D000FE4F80818093DE0129C0CE34E9F020F4C8
+:1040E000CB3421F56AE013C0C13579F0C235F1F463
+:1040F00061E00DC08091DE01882319F01092DE018D
+:1041000015C081E08093DF0115C061E006C0809199
+:10411000DE010E948B1E0AC06AE08091DE010E94CF
+:10412000011F04C01092DF0180E004C081E002C0E2
+:1041300080E0AACFCF9108950E943A1C811102C05D
+:104140000E941B1C0E94561C8093EF0180FF02C03E
+:10415000869501C080E00C9485038091EF01982F33
+:104160009695292F30E0233031054CF49F5F990F4D
+:104170008170892B81608093EF010E945A1C80918D
+:10418000EF0186950C9485038091EF01982F969509
+:1041900091F09158990F8170892B8093EF018E7F58
+:1041A00091E009F490E08091EF0190FB80F9809319
+:1041B000EF010E945A1C8091EF0186950C948503B3
+:1041C0008091EF01982F909590FB80F98093EF01FB
+:1041D0000E945A1C8091EF0180FF02C0869501C0A9
+:1041E00080E00C9485039091EF01892F86958F5F75
+:1041F0008F779170843028F4880F892B8093EF019A
+:1042000002C09093EF018091EF018E7F91E009F45D
+:1042100090E08091EF0190FB80F98093EF010E9484
+:104220005A1C8091EF0186950C9485032091EF0133
+:10423000922F96958927982F990F822F8170892B1D
+:104240008093EF018E7F91E009F490E08091EF017F
+:1042500090FB80F98093EF010E945A1C8091EF013E
+:1042600086950C9485038091EF018695089504D07E
+:104270006894B1118DC0089570D088F09F5790F068
+:10428000B92F9927B751A0F0D1F0660F771F881F7B
+:10429000991F1AF0BA95C9F712C0B13081F077D0E2
+:1042A000B1E0089574C0672F782F8827B85F39F080
+:1042B000B93FCCF3869577956795B395D9F73EF4DA
+:1042C00090958095709561957F4F8F4F9F4F089582
+:1042D000E89409C097FB3EF49095809570956195A0
+:1042E0007F4F8F4F9F4F9923A9F0F92F96E9BB2756
+:1042F0009395F695879577956795B795F111F8CFD2
+:10430000FAF4BB0F11F460FF1BC06F5F7F4F8F4F3C
+:104310009F4F16C0882311F096E911C0772321F032
+:104320009EE8872F762F05C0662371F096E8862FCA
+:1043300070E060E02AF09A95660F771F881FDAF721
+:10434000880F9695879597F9089557FD9058440FD3
+:10435000551F59F05F3F71F04795880F97FB991FE4
+:1043600061F09F3F79F087950895121613061406A1
+:10437000551FF2CF4695F1DF08C01616170618062E
+:10438000991FF1CF86957105610508940895E89409
+:10439000BB2766277727CB0197F908950BD078C004
+:1043A00069D028F06ED018F0952309F05AC05FC08C
+:1043B0001124EECFCADFA0F3959FD1F3950F50E003
+:1043C000551F629FF001729FBB27F00DB11D639FC7
+:1043D000AA27F00DB11DAA1F649F6627B00DA11D6D
+:1043E000661F829F2227B00DA11D621F739FB00D13
+:1043F000A11D621F839FA00D611D221F749F332783
+:10440000A00D611D231F849F600D211D822F762F1B
+:104410006A2F11249F5750408AF0E1F088234AF018
+:10442000EE0FFF1FBB1F661F771F881F9150504064
+:10443000A9F79E3F510570F014C0AACF5F3FECF37F
+:10444000983EDCF3869577956795B795F795E79550
+:104450009F5FC1F7FE2B880F911D9695879597F961
+:10446000089597F99F6780E870E060E008959FEFF6
+:1044700080EC089500240A941616170618060906FB
+:10448000089500240A9412161306140605060895CA
+:10449000092E0394000C11F4882352F0BB0F40F452
+:1044A000BF2B11F460FF04C06F5F7F4F8F4F9F4F92
+:1044B000089597FB072E16F4009407D077FD09D0D6
+:1044C0000E94732207FC05D03EF4909581959F4F82
+:1044D0000895709561957F4F0895EE0FFF1F059029
+:1044E000F491E02D0994AA1BBB1B51E107C0AA1F40
+:1044F000BB1FA617B70710F0A61BB70B881F991F85
+:104500005A95A9F780959095BC01CD010895F99928
+:10451000FECF92BD81BDF89A992780B50895A8E194
+:10452000B0E042E050E00C94AF22262FF999FECF84
+:1045300092BD81BDF89A019700B4021639F01FBAF6
+:1045400020BD0FB6F894FA9AF99A0FBE0895019615
+:10455000272F0E9496220C949522DC01CB01FC01AE
+:10456000F999FECF06C0F2BDE1BDF89A319600B4CC
+:0E4570000D9241505040B8F70895F894FFCFD7
+:10457E00FF2209B0098D095909250901C40128082E
+:10458E00140A321E1F0F03764F5F6F7F49694379FE
+:10459E003929190959536366404D361306C60590DD
+:1045AE00053C0555056E05010203040506070809BD
+:0245BE000000FB
+:00000001FF
diff --git a/keyboards/atomic/keymaps/default/keymap.c b/keyboards/atomic/keymaps/default/keymap.c new file mode 100644 index 000000000..0ede363a1 --- /dev/null +++ b/keyboards/atomic/keymaps/default/keymap.c @@ -0,0 +1,234 @@ +#include "atomic.h" + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define ___T___ KC_TRNS +#define XXXXXXX KC_NO + +// Layer shorthand +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 +#define _FN 5 + +/* ROW 1 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + */ + +/* ROW 2 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | KEY . XXXXXX | + * '-----------------' '-----------------' + */ + +/* ROW 3 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | X | + * '-----------------' '-----------------' + * .- 2u ------------. + * | X | + * '-----------------' + */ + +/* ROW 4 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | KEY . XXXXXX | + * '-----------------' '-----------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + */ + +/* ROW 5 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u . + * | X | X | X | X | X | X | X | X | X | + * '-----------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | X | + * '-----------------' + * .--------------------- 6.25u ----------------------------. + * | X | + * '--------------------------------------------------------' + * .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --. + * | X | X | X | X | X | X | + * '----------------------------------------------------------------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_QW] = { /* QWERTY */ + { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* COLEMAK - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_CM] = { /* COLEMAK */ + { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* DVORAK - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | ' | , | . | P | Y | F | G | C | R | L | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | O | E | U | I | D | H | T | N | S | / | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_DV] = { /* DVORAK */ + { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, + { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* LOWERED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_LW] = { /* LOWERED */ + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, KC_INS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, ___T___, ___T___, _______ }, + { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + +/* RAISED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_RS] = { /* RAISED */ + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, KC_INS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___, _______ }, + { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + +/* FUNCTION + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | QWERTY | COLEMK | DVORAK | | | | | | | XXXXXX . | MOUS U | WHEEL- | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_FN] = { /* FUNCTION */ + { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, DF(_QW), DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/atomic/keymaps/michelle.c b/keyboards/atomic/keymaps/michelle.c new file mode 100644 index 000000000..2364c46a1 --- /dev/null +++ b/keyboards/atomic/keymaps/michelle.c @@ -0,0 +1,183 @@ +#include "atomic.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { /* Dvorak */ + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_NO }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ + { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_NO, KC_PGUP }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LCTL, MO(1), KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, MO(2), KC_LEFT, KC_DOWN, KC_RGHT }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ +// │ X │ X │ X │ X │ X │ X │ X │ X │ X │ +// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌───────────────────── 6.25u ────────────────────────────┐ +// │ X │ +// └────────────────────────────────────────────────────────┘ +// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ +// │ X │ X │ X │ X │ X │ X │ +// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ + }, + [1] = { /* Qwerty + F keys */ + { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_NO }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_INS, KC_DEL }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ + { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_PGUP }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ +// │ X │ X │ X │ X │ X │ X │ X │ X │ X │ +// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌───────────────────── 6.25u ────────────────────────────┐ +// │ X │ +// └────────────────────────────────────────────────────────┘ +// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ +// │ X │ X │ X │ X │ X │ X │ +// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ + }, + [2] = { /* Numpad + qwerty shortcut keys */ + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_NO }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_P4, KC_P5, KC_P6, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ + { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_P1, KC_P2, KC_P3, KC_S, KC_MINS, KC_ENT, KC_NO, KC_PGUP }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_X, KC_B, KC_P0, KC_P0, KC_PENT, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ +// │ X │ X │ X │ X │ X │ X │ X │ X │ X │ +// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌───────────────────── 6.25u ────────────────────────────┐ +// │ X │ +// └────────────────────────────────────────────────────────┘ +// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ +// │ X │ X │ X │ X │ X │ X │ +// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ + }, +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return MACRODOWN(TYPE(KC_T), END); + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/atomic/keymaps/pvc/Makefile b/keyboards/atomic/keymaps/pvc/Makefile new file mode 100644 index 000000000..278407e6c --- /dev/null +++ b/keyboards/atomic/keymaps/pvc/Makefile @@ -0,0 +1,15 @@ +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
\ No newline at end of file diff --git a/keyboards/atomic/keymaps/pvc/compiled.hex b/keyboards/atomic/keymaps/pvc/compiled.hex new file mode 100644 index 000000000..c8cc6d8c0 --- /dev/null +++ b/keyboards/atomic/keymaps/pvc/compiled.hex @@ -0,0 +1,1700 @@ +:100000000C9483040C94C7040C94C7040C94C70488
+:100010000C94C7040C94C7040C94C7040C94C70434
+:100020000C94C7040C94C7040C94DB190C94AD1AFF
+:100030000C9414280C94C7040C94C7040C94C704A3
+:100040000C94C7040C94F0050C94C7040C94C704DA
+:100050000C94C7040C947C280C94C7040C94C7041B
+:100060000C94C7040C94C7040C94C7040C94C704E4
+:100070000C94C7040C94C7040C94C7040C94C704D4
+:100080000C94940F0C94C7040C94C7040C94C704EC
+:100090000C94C7040C94C7040C94C7040C94C704B4
+:1000A0000C94C7040C94C7040C94C7047A068D06FC
+:1000B000A206B506BD06D306E906F206FC0607074A
+:1000C00010071907210729073C073C073C073C0795
+:1000D0003C073C07370758063C076006690672066E
+:1000E0001A1B3C1B2A1C3C1B2A1C811BA41B2A1C00
+:1000F000F91B0C1CFB1EFB1E2A1F2A1F691F891FD0
+:10010000DF20DF20941FDF2044204420AB20B420D8
+:10011000DF20D92051205120512051205120512041
+:100120005120512051205120512051205120512047
+:100130005120512061206F2076207D208720B02D16
+:10014000A62DB92D112E182E182E112E182E182E60
+:10015000DE2D182EE82DF22D182E182E182E182E02
+:10016000112E182E182E112E182ECB2D182E182EBB
+:10017000FD2DFD2DFD2DFD2DFD2DFD2DFD2DFD2D2F
+:10018000FD2D132E182E132E182E182E182E182E65
+:10019000182E182E182E182E182E182E182E132E34
+:1001A000182E182E112E902DFB2DFB2DFB2DFB2D27
+:1001B000FB2DFB2DFB2DFB2DFB2D132E0763423654
+:1001C000B79BD8A71A39685618AEBAAB558C1D3CE8
+:1001D000B7CC5763BD6DEDFD753EF6177231BF00AC
+:1001E0000000803F08000000BE922449123EABAAE6
+:1001F000AA2ABECDCCCC4C3E00000080BEABAAAA41
+:10020000AA3E00000000BF000000803F0000000088
+:1002100000084178D3BB4387D1133D190E3CC3BDC1
+:100220004282AD2B3E68EC8276BED98FE1A93E4C6E
+:1002300080EFFFBE01C4FF7F3F0000000000000010
+:10024000000000000000000000010204060A0F1771
+:10025000202C3A4A5D71879DB3C7DAE9F5FCFFFCB3
+:10026000F5E9DAC7B39D87715D4A3A2C20170F0A6A
+:10027000060402010000000000000000000000224F
+:1002800029001E001F00200021002200230024005E
+:100290002500260027002D002E002A002A002B0012
+:1002A00014001A000800150017001C0018000C00AC
+:1002B000120013002F00300031004C003900040000
+:1002C0001600070009000A000B000D000E000F00C9
+:1002D00033003400280028004B00E1001D001B0003
+:1002E0000600190005001100100036003700380024
+:1002F000E500E50052004E00E000E3000530E200BA
+:1003000003302C002C000430C000E6006500E4003F
+:10031000500051004F0029001E001F002000210046
+:100320002200230024002500260027002D002E0097
+:100330002A002A002B0014001A00090013000A00EA
+:100340000D000F0018001C0033002F00300031009A
+:100350004C002A00040015001600170007000B00CF
+:10036000110008000C0012003400280028004B0087
+:10037000E1001D001B000600190005000E00100022
+:10038000360037003800E500E50052004E00E0007E
+:10039000E3000530E20003302C002C000430C000E4
+:1003A000E6006500E400500051004F0029001E00E7
+:1003B0001F00200021002200230024002500260029
+:1003C00027002F0030002A002A002B0034003600BE
+:1003D000370013001C0009000A00060015000F007A
+:1003E00038002E0031004C003900040012000800D3
+:1003F00018000C0007000B001700110016002D005C
+:10040000280028004B00E100330014000D000E000E
+:100410001B00050010001A0019001D00E500E50092
+:1004200052004E00E000E3000530E20003302C00F3
+:100430002C000430C000E6006500E40050005100CC
+:100440004F004600153017301830193000000000FA
+:1004500053005400550000000000470048004800C9
+:1004600001003A003B003C003D00000000005F003E
+:1004700060006100560001000100010049003900E0
+:100480003E003F0040004100000000005C005D00B5
+:100490005E0057000100010001004A000100420017
+:1004A0004300440045000000000059005A005B0072
+:1004B00058000100010001004D0001000100010091
+:1004C00001000100620062000100E60063005800C4
+:1004D000010001000100010001003A003B003C0066
+:1004E0003D003E003F004000410042004300440008
+:1004F000450001000100010021022F022F00260209
+:10050000220220022702300030021F0201000100F7
+:100510000100490001002302250257005600330064
+:1005200033022D02340034023500010001000100C5
+:100530004A000100310224021E0235023800310057
+:100540002E003602370238020100010001004D0082
+:100550000100010001000100010001000100010093
+:100560000100010001000100010001000100530031
+:100570003A003B003C003D003E003F00400041008F
+:1005800042004300440045000100010047006800AC
+:1005900069006A006B006C006D006E006F007000F7
+:1005A0007100720073000100480039000100010071
+:1005B0000100010001000100010001000100010033
+:1005C00001000100010046000100010001000100DE
+:1005D0000100010001000100010001000100010013
+:1005E0000100A900A80001000100010001000100B4
+:1005F000AE00AE0001000100010001000100AC00EE
+:10060000AA00AB000100FD00FE00FF00000000009A
+:1006100000000000000000000000000000000000DA
+:1006200000000000000000000000000000000000CA
+:1006300000000000000000000000000000000000BA
+:100640000000F800F700F600F500000000000000D0
+:10065000000000000000000000000000F9000100A0
+:10066000000000000000000000000000000000008A
+:100670000000000001000100F000FA00010001008C
+:10068000010001000100F400F4000100010001007C
+:1006900001000100F200F100F30001000730083012
+:1006A00009300A300B300C300D3001000100010020
+:1006B00025502250010001000100003001300230BD
+:1006C0000100010001000100010001000100010022
+:1006D0000100010001000100010001000100010012
+:1006E0000100010001000100010001000100010002
+:1006F0000100010001000100010001001430005060
+:100700000100063001000100010001000100265037
+:1007100001000100010001000100010001000100D1
+:10072000010001000100010001000100275001004B
+:1007300028035400680065002000410074006F0029
+:100740006D006900630020004B00650079006200C5
+:100750006F0061007200640000002C034F00720003
+:10076000740068006F006C0069006E006500610035
+:10077000720020004B006500790062006F0061008C
+:1007800072006400730000000403090409026D0094
+:10079000040100A0FA09040000010301010009217D
+:1007A00011010001223F000705810308000A090426
+:1007B00001000103010200092111010001224D0085
+:1007C0000705820308000A09040200010300000073
+:1007D0000921110100012236000705830308000AE0
+:1007E0000904030001030000000921110100012296
+:1007F00039000705840310000112011001000000F8
+:1008000008EDFE190401000102000105010906A11D
+:1008100001050719E029E7150025019508750181F3
+:1008200002050819012905950575019102950175C3
+:1008300003910105071900297715002501957875A1
+:10084000018102C005010980A1018502160100266F
+:10085000B7001A01002AB700751095018100C00584
+:100860000C0901A1018503160100269C021A010052
+:100870002A9C02751095018100C005010902A101A1
+:100880000901A10005091901290515002501950592
+:100890007501810295017503810105010930093156
+:1008A0001581257F95027508810609381581257FF8
+:1008B000950175088106050C0A38021581257F957A
+:1008C0000175088106C0C005010906A101050719C7
+:1008D000E029E7150025019508750181029501754C
+:1008E00008810105081901290595057501910295F1
+:1008F00001750391010507190029FF150025FF95D2
+:100900000675088100C011241FBECFEFDAE0DEBFFC
+:10091000CDBF04B603FE24C080917B0590917C0579
+:10092000A0917D05B0917E058730904BA740B04BDC
+:10093000B9F410927B0510927C0510927D051092FF
+:100940007E0514BE84B7877F84BF88E10FB6F89414
+:1009500080936000109260000FBEE0E0F8E309951C
+:1009600014E0A0E0B1E0EEE0F7E602C005900D92E1
+:10097000A431B107D9F715E0A4E1B4E001C01D929C
+:10098000AB37B107E1F70E9421170C9485330C9423
+:100990000000089581E008950C94C9040C94CA04E1
+:1009A0000C9441070E944F2F811105C0109216042C
+:1009B000109215040DC080E290E00090170402C070
+:1009C000880F991F0A94E2F79093160480931504F8
+:1009D0001092140480916F00826080936F000895DC
+:1009E0000E944F2F811105C0109216041092150419
+:1009F0000DC081E290E00090170402C0880F991F9B
+:100A00000A94E2F7909316048093150482E0809391
+:100A1000140480916F00826080936F0008950E949B
+:100A20004F2F811102C081E001C082E08093140445
+:100A3000089590916F0081E0911101C080E00895C8
+:100A40000E944F2F23E030E0281B3109220F209312
+:100A500018040895282F2F9880918000211108C034
+:100A6000877F8093800010928D0010928C001BC0B5
+:100A7000886080938000233018F08FEF9FEF0FC0C5
+:100A800083E090E0821B9109880F991F2FEF3FEFC1
+:100A9000A90102C0569547958A95E2F7CA0190933D
+:100AA0008D0080938C000C9420050E941905811103
+:100AB00018C00E944F2F811105C010921604109289
+:100AC00015040DC081E290E00090170402C0880F69
+:100AD000991F0A94E2F790931604809315041092DC
+:100AE000140490916F0082E0892780936F000E9428
+:100AF0001905811104C00E944F2F0C942A050895F6
+:100B0000CF93C82F0E94190540911704882329F01C
+:100B100090916F009D7F90936F00C093170488237E
+:100B2000D1F0209115043091160402C03695279516
+:100B30004A95E2F72F733327C90102C0880F991F26
+:100B4000CA95E2F7909316048093150480916F0084
+:100B5000826080936F00CF91089590911704292FA0
+:100B600030E0281B31092B30310510F080E002C045
+:100B7000981B892F0C94800590911704282F30E042
+:100B8000290F311D2B30310514F08AE001C0890F87
+:100B90000C9480050E94200584E080931704109235
+:100BA00014040895279A2F988FEF9FEF9093870052
+:100BB000809386008AE08093800089E180938100A1
+:100BC0000E94B82E0C94CA0585B7806885BF85B78A
+:100BD000806885BF0E94D2056E9A769A0C94B607FB
+:100BE0001F920F920FB60F9211242F933F938F9362
+:100BF0009F93EF93FF93E0911504F0911604CF01BA
+:100C0000019690931604809315040090170402C077
+:100C1000F695E7950A94E2F7EF7380911404823019
+:100C200019F4E03251F404C0813039F4EF3329F47F
+:100C300080916F008D7F80936F00F0E0E25CFD4F4C
+:100C4000E49121E031E0E29FC001E39F900D112487
+:100C50000090180402C0969587950A94E2F7909345
+:100C60008D0080938C00FF91EF919F918F913F9128
+:100C70002F910F900FBE0F901F901895CF93DF9379
+:100C8000EC010E94702ABE0180E090E0DF91CF91DC
+:100C90000C940A250F931F93462F50E04A315105BB
+:100CA00008F0EAC0DC01FA01EA5AFF4F0C9449331C
+:100CB00012968C91882309F4DFC00E945505DCC090
+:100CC00012968C91882309F4D7C081E00E94AD056B
+:100CD000D3C012968C91882309F4CEC081E00E9483
+:100CE000BC05CAC012968C91882309F4C5C00E9425
+:100CF000CA05C2C012968C91882309F4BDC081E058
+:100D000090E00E943E060AE017ED23E23CE340E05B
+:100D100064E070E080E792E012C012968C91882324
+:100D200009F4AAC082E090E00E943E060AE017EDB6
+:100D300023E23CE340E066E070E080E092E00E9465
+:100D400012139AC012968C91882309F495C084E0FE
+:100D500090E00E943E060AE017ED23E23CE340E00B
+:100D600068E070E080E392E0EACF12968C918823ED
+:100D700011F083E007C083E013C012968C918823A2
+:100D800071F084E00E94872582E00E9480050E9425
+:100D9000F00447E063E084E00E94840D6DC084E0CD
+:100DA0000E94A825F6CF12968C91882349F083E003
+:100DB0000E9480050E94D20485E00E9487255CC0C5
+:100DC00081E00E9480050E940F0585E00E94A82511
+:100DD00053C012968C91882309F44EC086E00E947D
+:100DE000CD254AC012968C91882309F445C060E055
+:100DF00070E080E09EE308C012968C918823E1F1B8
+:100E000060E070E080E89EE30E94BC1335C012965B
+:100E10008C91882389F160E070E080E09FE3F4CF5B
+:100E200012968C91882341F160E070E080E49FE3AA
+:100E3000EBCF12968C918823F9F08AE00E94CE13B2
+:100E40001BC012968C918823B9F08AE00E94C813C7
+:100E500013C012968C91882379F060E070E080E0F6
+:100E60009FE30E94BC1384E60E94C51305C012963E
+:100E70008C9181110E940F2F80E090E01F910F91C3
+:100E800008950F931F93CF93C82F8FE39CE9019789
+:100E9000F1F700C000000E94A51381114BC0909192
+:100EA0001904C1FF0BC091FD14C000E010E09801CF
+:100EB00040E062E070E080E591E03AC091FF09C057
+:100EC00000E010E0980140E062E070E080E491E032
+:100ED0002FC0C0FF0BC090FD14C000E010E09801CF
+:100EE00040E062E070E080E391E022C090FF09C042
+:100EF00000E010E0980140E062E070E080E291E004
+:100F000017C0C2FF0BC092FD15C000E010E09801B1
+:100F100040E062E070E080E191E00AC092FF0AC028
+:100F200000E010E0980140E062E070E080E091E0D5
+:100F30000E941213C0931904CF911F910F9108952D
+:100F40000F931F938FE39CE90197F1F700C0000016
+:100F50000AE017ED23E23CE340E06FE070E088ED4B
+:100F600092E00E9412131F910F91089580E00E9459
+:100F7000DF130C94A0070F931F930AE017ED23E2F1
+:100F80003CE340E069E070E080E992E00E941213E7
+:100F90002FEF87EA91E6215080409040E1F700C0B2
+:100FA00000001F910F910C94C70E0F931F930AE03E
+:100FB00017ED23E23CE340E065E070E088ED91E06E
+:100FC0000E9412131F910F9108950F931F930AE02F
+:100FD00017ED23E23CE340E067E070E080EA91E057
+:100FE0000E9412131F910F9108950F931F930AE00F
+:100FF00017ED23E23CE340E068E070E080E691E03A
+:101000000E9412131F910F91089581E008950C948E
+:10101000050808950C94E40580916A04882309F476
+:1010200048C08091260490912704009779F40E948B
+:10103000462890932704809326048091280490E00A
+:10104000009771F48091290490E00AC00E94522810
+:1010500020915003309151032817390740F329C0DC
+:101060000197880F991F880F991FFC01E65DFB4FC0
+:1010700060817181828193810E94FA0EE09128043F
+:1010800084E0E89FF0011124E65DFB4F60817181EF
+:10109000828193814FE050E00E94B2128091280437
+:1010A00090E001966091290470E00E9435338093AE
+:1010B00028040C94CC0410926C040C94C70E81E0AC
+:1010C00080936C040C94E5078F929F92AF92BF922D
+:1010D000EF92FF920F931F93CF93DF93CDB7DEB7BD
+:1010E000A3970FB6F894DEBF0FBECDBF7C01FC0105
+:1010F00000811181C8010E944326B8010E94660A3E
+:101100008C01B7010E940708882309F4CCC1003282
+:10111000F0E51F0741F4F7018281882309F458C0E4
+:101120000E94AC13C0C10132F0E51F0741F4F70182
+:101130008281882309F44CC00E94B513B4C10232E5
+:10114000F0E51F0751F4F7018281882309F440C0BC
+:101150000E94A8138111F0CFE3CF0332F0E51F07FF
+:1011600039F4F7018281882399F10E945F089BC1BD
+:101170000432F0E51F0739F4F7018281882341F139
+:101180000E945B0890C10532F0E51F0749F4F701A2
+:1011900082818823E9F080916C048111F1CFE5CF41
+:1011A0000632F0E51F0739F4F7018281882381F0C8
+:1011B0000E94E2130AC00732F0E51F0749F4F70165
+:1011C0008281882329F00E94ED130E94F5076BC1EC
+:1011D00080916C04811105C0F70182818111CFC01B
+:1011E00018C1003E110579F4F7018281882309F4C2
+:1011F0004DC00E94C70E81E080936B0410926A0478
+:101200001092290450C1023E110559F4F701828160
+:101210008823E1F10E94C70E10926B0410926A04B9
+:1012200042C1033E110591F4F7018281882371F1D7
+:101230000E94C70E10926B0481E080936A041092A2
+:10124000280410922704109226042DC1023511059E
+:1012500059F4F7018281882309F425C18091500354
+:10126000909151030A970DC00135110579F4F701EA
+:101270008281882309F417C1809150039091510312
+:101280000A9690935103809350030DC140915403EB
+:1012900083E2EFE6F3E0DE01119601900D928A956C
+:1012A000E1F7F701808121E030E02C0F3D1F280F8E
+:1012B000311DC9012091520330915303FC01E20F0B
+:1012C000F31F6081772767FD7095640F711D882774
+:1012D00077FD8095982F0E94573020E030E040E461
+:1012E00051E40E94BC2F4B015C01F701218185E094
+:1012F00090E0821B9109BC01882777FD8095982F8B
+:101300000E9457309B01AC01C501B4010E94542FCB
+:101310009B01AC0160E070E080E090E40E94CA3183
+:1013200020E030E04CED50E40E9467314B015C015D
+:10133000F70182818823D1F04FE050E0C501B4016C
+:101340000E94B21280916B048823A1F0809129043D
+:1013500024E0829FF0011124E65DFB4F80829182A0
+:10136000A282B3828F5F8093290404C0C501B401B7
+:101370000E94FA0E0F3F110508F02ECF94C0809105
+:10138000250481111FC0043130E5130709F051C055
+:101390000E94090881E0809325040E9446289093CA
+:1013A00024048093230410921C0410921E041092B3
+:1013B0001D041092200410921F0410922204109217
+:1013C000210471C080912304909124040E9452282A
+:1013D000883C910570F480911C04E82FF0E0EE0F3A
+:1013E000FF1FE35EFB4F118300838F5F80931C041C
+:1013F0005AC0043880E5180721F00538104501F17E
+:101400003AC0F7018281882341F010921A0482E0E9
+:101410001EC0043830E5130759F580911A04811174
+:1014200006C086E20E949F1D86E20E94671E82E03F
+:101430001CC00438F0E51F0741F305381045D9F406
+:10144000F7018281882331F010921B0480E20E9410
+:10145000B61E29C080911B04811106C087E20E943C
+:101460009F1D87E20E94671E80E20E94BD1E1BC076
+:101470000538104529F381E080931A0480931B04FA
+:10148000C701A3960FB6F894DEBF0FBECDBFDF91A4
+:10149000CF911F910F91FF90EF90BF90AF909F90D1
+:1014A0008F900C94CE0480E0A3960FB6F894DEBF24
+:1014B0000FBECDBFDF91CF911F910F91FF90EF90A5
+:1014C000BF90AF909F908F90089508959FE0799F6F
+:1014D000F00111249BE4899FE00DF11D1124E60F1A
+:1014E000F11DEE0FFF1FE058FD4F85919491089577
+:1014F000880F991FFC01E250FF4F85919491089548
+:10150000880F991FFC01E258FD4F85919491089531
+:101510000F931F93CF93DF93EC01811521E3920783
+:10152000A0F5C11580E3D80708F0D7C0C83ED105A3
+:10153000D8F4C03ED10508F007C2C83AD10578F406
+:10154000C53AD10508F06AC0C130D10509F463C0BD
+:1015500008F4F7C1C430D10508F0F6C1F2C1CB3BA5
+:10156000D10508F466C0EDC1C11590E2D90708F0B5
+:10157000AFC0C11521E0D20708F0E6C1C03FD105D8
+:1015800008F4DFC18E0110651FC2C03880E5D8079E
+:1015900000F5C03790E5D90708F0A3C0C11520E5D4
+:1015A000D20709F4ACC050F4CE01905480319F4072
+:1015B00008F0C7C1DF708E01106A06C2C13080E535
+:1015C000D80709F4AEC0C43190E5D90708F4AFC01C
+:1015D000B8C1C33820E5D20709F48EC050F4C13831
+:1015E00090E5D90709F482C008F083C000E011ED4E
+:1015F000EBC1C03181E5D80708F4A3C1C11597E557
+:10160000D90708F436C1CE0190578115904108F0F2
+:1016100098C1DF7093C101E010E0D6C1C53AD10591
+:1016200009F494C1C63AD10509F093C102E810E467
+:10163000CBC1C83AD10509F48FC1C93AD10509F423
+:101640008EC1CA3AD10509F48DC1CB3AD10509F44E
+:101650008CC1CC3AD10509F48BC1CD3AD10509F43E
+:101660008AC1C03BD10509F489C1CE3AD10509F43C
+:1016700088C1CF3AD10509F487C1C13BD10509F42E
+:1016800086C1C23BD10509F485C1C33BD10509F42C
+:1016900084C1C43BD10509F483C1C53BD10509F41C
+:1016A00082C1C63BD10509F481C1C73BD10509F40C
+:1016B00080C1C83BD10509F47FC1C93BD10509F4FC
+:1016C0007EC1CA3BD10509F47DC100E014E47CC1B0
+:1016D000CE019F700E94800A78C1DD278E01106CB8
+:1016E00073C1CF70DD278E01146D6EC100E010ED67
+:1016F0006BC100E012ED68C100E013ED65C10E940E
+:101700004A210E94C70E0E94BB078FEF94E32CE092
+:10171000815090402040E1F700C000000E94A128C5
+:1017200053C180914D05816080934D054DC10E944C
+:10173000582A811102C00E94342A0E94752A90E022
+:1017400090937A0580937905C23080E5D80721F41B
+:1017500080917905816086C0C43090E5D90721F475
+:101760008091790582607EC0C63020E5D20721F4E1
+:1017700080917905846076C0C83080E5D80719F477
+:101780008091790527C0CA3090E5D90721F480916E
+:101790007905806167C0CC3020E5D20721F48091C3
+:1017A000790580625FC0CE3080E5D80721F4809152
+:1017B0007905806457C0C03190E5D90721F4809144
+:1017C000790580684FC0C23120E5D20729F48091A5
+:1017D00079058460886046C0C33080E5D80721F46D
+:1017E000809179058E7F3EC0C53090E5D90721F400
+:1017F000809179058D7F36C0C73020E5D20721F46E
+:10180000809179058B7F2EC0C93080E5D80719F407
+:101810008091790526C0CB3090E5D90721F48091DD
+:1018200079058F7E1FC0CD3020E5D20721F480914D
+:1018300079058F7D17C0CF3080E5D80721F48091DE
+:1018400079058F7B0FC0C13190E5D90721F48091D4
+:1018500079058F7707C0C331D04531F48091790580
+:101860008B7F877F80937905809179050E94792A03
+:10187000ABC08D2F99278F70992781309105D9F4AE
+:101880009E012370332702C0880F991F2A95E2F723
+:101890009C688E0144E0000F111F4A95E1F7002774
+:1018A0001370802B912B53E0CC0FDD1F5A95E1F77D
+:1018B000C076DD272FC08230910531F4DC2FCC2794
+:1018C0008E01016F106A80C08330910569F4CE01EA
+:1018D0008370992701E010E002C0000F111F8A9564
+:1018E000E2F7C8019C680FC084309105B9F4CE01BD
+:1018F0008370992701E010E002C0000F111F8A9544
+:10190000E2F7C8019A6823E0CC0FDD1F2A95E1F7C2
+:10191000C07ED7708C010C2B1D2B56C085309105D5
+:1019200031F4DC2FCC278E01046F106A4DC006976E
+:1019300009F04AC0CF71DD27DC2FCC278E01106261
+:1019400043C000E010E040C08E013EC001E810E45A
+:101950003BC003E810E438C002EE14E435C009EEE1
+:1019600014E432C00AEE14E42FC005EB14E42CC0DA
+:1019700006EB14E429C007EB14E426C00CEC14E4D5
+:1019800023C00DEC14E420C003E815E41DC00AE8F0
+:1019900015E41AC002E915E417C004E915E414C0FF
+:1019A00001E216E411C003E216E40EC004E216E4FC
+:1019B0000BC005E216E408C006E216E405C007E223
+:1019C00016E402C00AE216E4C801DF91CF911F912C
+:1019D0000F9108959FE0799FF00111249BE4899F66
+:1019E000E00DF11D1124E60FF11DEE0FFF1FE05871
+:1019F000FD4F85919491803E9105E0F4803C9105E6
+:101A000058F58133910509F46FC048F48932910586
+:101A100009F463C08A32910509F46DC072C089333C
+:101A20009105E9F082389105D1F08533910509F4EB
+:101A30004DC067C0833E910581F138F4803E910529
+:101A4000B9F0823E9105D9F05CC0863E910561F106
+:101A5000873E9105A1F155C00E94780A0895209112
+:101A6000790520FD02C021FF4CC080EE90E049C006
+:101A70008091790580FFF9CF89E390E042C08091A1
+:101A8000790582FF0EC08091790584FF03C080E054
+:101A900090E037C083EE90E034C08091790582FFFA
+:101AA000F2CF82EE90E02DC08091790583FF0BC0CC
+:101AB0008091790584FDEBCF87EE90E022C0809184
+:101AC000790583FFF5CF86EE90E01BC08091790504
+:101AD00085FF07C089E290E014C08091790585FFF9
+:101AE000F9CF85E390E00DC08091790586FF07C0AE
+:101AF0008AE290E006C08091790586FFF9CF81E304
+:101B000090E00E94880A0895CF92DF92EF92FF92B0
+:101B10000F931F9301E010E020E030E068017901AD
+:101B200004C0CC0CDD1CEE1CFF1C8A95D2F704C04F
+:101B3000000F111F221F331F6A95D2F70C291D2990
+:101B40002E293F29C0903005D0903105E090320514
+:101B5000F0903305C022D122E222F322842FC01656
+:101B6000D106E206F30641F41F910F91FF90EF902A
+:101B7000DF90CF900C9487251F910F91FF90EF90ED
+:101B8000DF90CF900C94A8250C94D004E82FF0E0BF
+:101B9000EF55FC4F8081E82FEF70F0E082958F7059
+:101BA00021E030E0A90102C0440F551F8A95E2F7F9
+:101BB00040A308950F931F93CF93DF9385B7806859
+:101BC00085BF85B7806885BFC4E0D0E001E010E044
+:101BD000FE01EF55FC4F8081E82FEF70F0E021A16E
+:101BE00082958F70A80102C0440F551F8A95E2F7B5
+:101BF000CA01822B81A38C2F0E94C60D219740F72A
+:101C00008EE090E061E070E0FC01EE56FC4F208138
+:101C1000E22FEF70F0E042A122952F70DB0102C0AD
+:101C2000AA0FBB1F2A95E2F79D01242B22A301973F
+:101C300058F7DF91CF911F910F910C940A08EF9202
+:101C4000FF920F931F93CF93DF9307E714E0C4E055
+:101C5000EE24E394F12CD5E08C2F0E94C60D8EE08B
+:101C600090E040E050E0FC01EE56FC4F6081E62F32
+:101C7000EF70F0E020A130E062956F7002C0359502
+:101C800027956A95E2F720FD09C09701082E02C04A
+:101C9000220F331F0A94E2F7422B532B019718F7B8
+:101CA000F801929182918F018417950721F0518359
+:101CB0004083D09355038C2F0E94C60DC15060F60F
+:101CC0008091550387FD1FC08150809355038F3F3E
+:101CD00039F08FE99FE00197F1F700C0000013C0D1
+:101CE00080E090E0FC01E958FB4FDC01A359BB4FB9
+:101CF00018962D913C911997318720870297863F3E
+:101D0000EFEF9E0779F70E940C0881E0DF91CF91F9
+:101D10001F910F91FF90EF900895E82FF0E0EE0FE4
+:101D2000FF1FE958FB4F80819181089508950F931B
+:101D30001F93CF9301E814E0C0E0F80192918291E3
+:101D40008F010E94BE27C80FF4E007371F07A9F7CD
+:101D50008C2FCF911F910F9108950E94582A8111C5
+:101D600002C00E94342A0E94872A809364053E9A0A
+:101D7000809171008D7F8093710082E0809390004C
+:101D80008AE18093910081E080938304089580919B
+:101D90008304811102C00E94AD0E1092D3041092F0
+:101DA000D204809171008D7F8093710080919000AA
+:101DB0008F73809390001092950410929404109267
+:101DC000CC041092CD041092CE041092CF04109245
+:101DD000CB041092CA04EAEAF4E0AAE9B4E0119252
+:101DE0001192119211921D921D9284E0EA3CF80723
+:101DF000B1F70895CF92DF92EF92FF920F931F9366
+:101E0000CF93DF9320919404222309F484C06B01C3
+:101E10007C0180918304811102C00E94AD0E0AEC06
+:101E200014E0C7E0D0E0A7019601F80192918291F9
+:101E3000729162918F010E94B82F811131C0FE0111
+:101E4000EE0FFF1FEE0FFF1FE655FB4F10821182B2
+:101E500012821382DE01AA0FBB1FA656BB4F11963A
+:101E60001C921E92C730D105E9F02196448155811C
+:101E700066817781408351836283738314821582E4
+:101E80001682178212968D919C91139711969C93AE
+:101E90008E9313961C921E92129734961296E2CF4E
+:101EA000219708F68091D2049091D304019797FD71
+:101EB00005C09093D3048093D20404C01092D3043D
+:101EC0001092D2048091D2049091D3042091D00436
+:101ED0003091D1042817390724F01092D1041092C0
+:101EE000D004892BC1F4809171008D7F80937100A3
+:101EF000809190008F73809390001092CC04109288
+:101F0000CD041092CE041092CF041092CB04109204
+:101F1000CA0410929404DF91CF911F910F91FF900A
+:101F2000EF90DF90CF9008951F920F920FB60F920F
+:101F300011244F925F926F927F928F929F92AF92F5
+:101F4000BF92CF92DF92EF92FF922F933F934F93E6
+:101F50005F936F937F938F939F93AF93BF93CF9331
+:101F6000DF93EF93FF9380919404882309F49BC13E
+:101F7000C091D204D091D3041C161D060CF093C15D
+:101F8000409084045090850460908604709087048B
+:101F900020E030E0A901C301B2010E9463311816AC
+:101FA0000CF065C0C130D10509F452C08091D00455
+:101FB0009091D104BE010E9435337C019093D104ED
+:101FC0008093D0048090960490909704A0909804F9
+:101FD000B090990420E030E040E85FE3C501B4012F
+:101FE0000E94542F609396047093970480939804F2
+:101FF00090939904F701EE0FFF1FEE0FFF1FE655B8
+:10200000FB4FA301920160817181828193810E94C3
+:10201000BC2F20E030E040E05EE30E9467319B018E
+:10202000AC01C501B4010E94633118168CF4C701DC
+:102030000196BE010E9435339093D1048093D00461
+:10204000109296041092970410929804109299049A
+:10205000E091D004F091D104EE0FFF1FEE0FFF1FAF
+:10206000E655FB4F6081718182819381D0C0C09021
+:10207000CC04D090CD04E090CE04F090CF0420E0CA
+:1020800030E0A901C701B6010E94B82F219788232B
+:1020900009F4A2C0FE01EE0FFF1FEE0FFF1FE65571
+:1020A000FB4F80809180A280B380A5019401C7017D
+:1020B000B6010E94B82F87FF31C0A501940160E0EE
+:1020C00070E08CED93EC0E94BC2F20E030E040E407
+:1020D00051E40E94BC2F20E030E040E05FE30E942A
+:1020E00067319B01AC0160E070E080E090E40E9409
+:1020F000CA319B01AC01C501B4010E9467319B014B
+:10210000AC01C701B6010E94B82F87FF07C0A70125
+:10211000960160E070E08CED93E439C0A501940174
+:10212000C701B6010E94633118160CF055C0A50115
+:10213000940160E070E08CED93E40E94BC2F20E0FD
+:1021400030E040E451E40E94BC2F20E030E040E069
+:102150005FE30E9467319B01AC0160E070E080E0CA
+:1021600090E40E94CA319B01AC01C501B4010E94F8
+:1021700067319B01AC01C701B6010E94633118169B
+:102180005CF5A701960160E070E08CED93EC0E9495
+:10219000BC2F20E030E040E451E40E94BC2F20E05E
+:1021A00030E040E05FE30E9467319B01AC0160E0FA
+:1021B00070E080E090E40E94CA319B01AC01C7014D
+:1021C000B6010E9467316093CC047093CD04809374
+:1021D000CE049093CF0413C0FE01EE0FFF1FEE0F4D
+:1021E000FF1FE655FB4F80819181A281B3818093CF
+:1021F000CC049093CD04A093CE04B093CF0460910F
+:10220000CC047091CD048091CE049091CF042091A4
+:102210008104309182042F3F4FEF340731F02F5F5C
+:102220003F4F30938204209381040E94F8136B0186
+:102230007C0120E034E244EF51E40E94B82F87FF94
+:1022400008C086EFC82E88E2D82E84EFE82E81E4FD
+:10225000F82E20E030E040E051E4C701B6010E94D2
+:1022600067319B01AC0160E074E284E79BE40E946B
+:10227000BC2F6B017C010E94293070939700609302
+:102280009600209156033091570340915803509186
+:102290005903C701B6010E9467310E94293070932B
+:1022A00099006093980080919504882309F433C1C4
+:1022B000C0909004D0909104E0909204F090930428
+:1022C00020E030E0A901C701B6010E946331181671
+:1022D000D4F580918104909182048F3F2FEF920773
+:1022E00029F001969093820480938104C701B6017E
+:1022F0000E94F81320E030E040E051E40E94673192
+:102300009B01AC0160E074E284E79BE40E94BC2F77
+:102310006B017C010E9429307093970060939600B6
+:10232000209156033091570340915803509159031F
+:10233000C701B6010E9467310E942930709399004D
+:102340006093980008C01092970010929600109227
+:1023500099001092980060918A0470918B046F5FCD
+:102360007F4F70938B0460938A0420919600309184
+:10237000970080E090E0232BF1F0C0919600D0917F
+:1023800097000E9455306B017C01BE0180E090E017
+:102390000E9455309B01AC0160918C0470918D04BA
+:1023A00080918E0490918F040E94BC2F20E03FEF1B
+:1023B0004FE757E410C00E9455306B017C0120E0CC
+:1023C00030EE4FEF54E460918C0470918D04809155
+:1023D0008E0490918F040E9467319B01AC01C7016C
+:1023E000B6010E94633187FD96C0809188048F5F9B
+:1023F0008093880490E020916005309161058217F8
+:102400009307A0F080916B05882319F0109288043F
+:102410000DC0809171008D7F80937100809190003C
+:102420008F7380939000109295047DC080918904F1
+:10243000C0918804811128C0C0906505D0906605C0
+:10244000E0906705F090680520E030E0A901C70141
+:10245000B6010E9463311816BCF481E080938904B0
+:10246000109290041092910410929204109293048E
+:10247000C0928C04D0928D04E0928E04F0928F046E
+:10248000C150C093880443C0109289041092820402
+:1024900010928104E0916205F091630548E0C49FC9
+:1024A000E00DF11D112480819181A281B38180937F
+:1024B000900490939104A0939204B093930420E02D
+:1024C00030E040E85EE364817581868197810E94F7
+:1024D00067316B017C0180915A03682F70E080E0C6
+:1024E00090E00E94553020E030E048EC52E40E9439
+:1024F000BC2F9B01AC01C701B6010E9467316093FC
+:102500008C0470938D0480938E0490938F041092AA
+:102510008B0410928A048091640580FD04C010929F
+:10252000950410929404FF91EF91DF91CF91BF91A8
+:10253000AF919F918F917F916F915F914F913F915B
+:102540002F91FF90EF90DF90CF90BF90AF909F9032
+:102550008F907F906F905F904F900F900FBE0F9075
+:102560001F901895CF92DF92EF92FF92CF93DF9357
+:102570006B017C01EA0180918304811102C00E94F9
+:10258000AD0E8091640580FF46C08091D204909189
+:10259000D30408970CF03FC0809171008D7F809329
+:1025A00071008091950481110E94C70E81E0809393
+:1025B0009404109282041092810420E030E0A9017A
+:1025C000C701B6010E9463311816DCF48091D20471
+:1025D0009091D304FC01EE0FFF1FEE0FFF1FE65595
+:1025E000FB4FC082D182E282F382FC01EE0FFF1F1B
+:1025F000E656FB4FD183C08301969093D30480931A
+:10260000D20480917100826080937100809190006B
+:10261000806880939000DF91CF91FF90EF90DF90E2
+:10262000CF9008958F929F92AF92BF92CF92DF92F8
+:10263000EF92FF920F931F93CF93DF93EC017B01F7
+:10264000D42E4801590180918304811102C00E9457
+:10265000AD0E8091640580FF6BC0809171008D7F0D
+:10266000809371008091940481110E94C70E81E0D3
+:1026700080939504D0936305C0936205F092610541
+:10268000E0926005D0926B05809265059092660598
+:10269000A0926705B0926805109296041092970474
+:1026A000109298041092990410928804888199815C
+:1026B000AA81BB818093900490939104A09392048B
+:1026C000B093930420E030E040E85EE36C817D81CC
+:1026D0008E819F810E9467316B017C0180915A033A
+:1026E000682F70E080E090E00E94553020E030E0FC
+:1026F00048EC52E40E94BC2F9B01AC01C701B6011B
+:102700000E94673160938C0470938D0480938E04D3
+:1027100090938F0410928B0410928A048091710020
+:102720008260809371008091900080688093900017
+:10273000DF91CF911F910F91FF90EF90DF90CF909D
+:10274000BF90AF909F908F900895809195040895C9
+:102750008091640581700895809164058160809303
+:1027600064050E948B2A0C94D507809164058E7FA6
+:10277000809364050C948B2A6093560370935703DF
+:102780008093580390935903089580935A030895B2
+:1027900090915A03890F80935A03089590915A0398
+:1027A000292F30E0281B31092A30310524F48AE032
+:1027B00080935A030895981B90935A030895809329
+:1027C000D40408958091D40490E0019666E070E00E
+:1027D0000E9435338093D40408958091D40490E00E
+:1027E000019766E070E00E9435338093D404089529
+:1027F0008F929F92AF92BF92CF92DF92EF92FF9211
+:102800000F931F93CF93DF936B017C01C0918104E1
+:10281000D0918204BE0180E090E00E9455304B01CF
+:102820005C01A701960160E070E08CE594E40E94F1
+:10283000BC2F9B01AC01C501B4010E9467310E940D
+:1028400029302091D404233009F473C028F42223C2
+:1028500051F02130E9F02CC1243009F4A0C025301A
+:1028600009F4E0C025C180E090E0A0E0BFE38093E0
+:10287000560390935703A0935803B09359031092B3
+:10288000840410928504109286041092870410C16B
+:10289000109284041092850410928604109287048A
+:1028A0006431710540F46A30710560F520E030E074
+:1028B00040E85EE32BC0693C710508F0AAC080E0E7
+:1028C00090E00E94553020E030E040EA51E40E9460
+:1028D000532F20E030E044E353E40E94BC2F9B01DF
+:1028E000AC010E94673120E030E040E05EE30E94EE
+:1028F00067319B01AC0160E070E080E09EE30E94E4
+:10290000532F44C020E030E040E05FE3C701B60150
+:102910000E9467316B017C0180E090E0A0E0BEE3A3
+:102920008093560390935703A0935803B093590391
+:10293000BFC01092840410928504109286041092F5
+:1029400087044AE0469F9001479F300D1124C9013A
+:1029500068EB7BE00E942133BC016C5D754077FF22
+:1029600003C0719561957109882777FD8095982F2F
+:102970000E9457302EE333EC4EE259E30E94673158
+:1029800020E030E040EC5EE30E94542F6093560359
+:1029900070935703809358039093590389C0109202
+:1029A0008404109285041092860410928704CE014C
+:1029B00083709927892BE1F0BE016170772780E051
+:1029C00090E00E94553020E030E040E05EE30E945D
+:1029D000673120E030E040E45FE30E94542F6093D1
+:1029E00056037093570380935803909359030CC078
+:1029F00080E090E0A0E0BFE38093560390935703FC
+:102A0000A0935803B0935903C770DD27CD2B09F06D
+:102A10004FC0109256031092570310925803109211
+:102A2000590346C0109284041092850410928604C3
+:102A30001092870400E010E020E03FE3009356038B
+:102A40001093570320935803309359036739710546
+:102A500078F180E090E00E94553020E030E047E1DE
+:102A600053E40E94532F20E030E04AE754E40E94F0
+:102A7000BC2F20E030E048E452E40E94673120E0BF
+:102A800030E040EA51E40E9499300E942430660F01
+:102A9000771F660F771FFB01EA55FC4F20813181BC
+:102AA00042815381C701B6010E9467316B017C01ED
+:102AB000C701B601DF91CF911F910F91FF90EF9069
+:102AC000DF90CF90BF90AF909F908F9008958091AE
+:102AD000E5040895CF93DF9300D01F92CDB7DEB702
+:102AE0009C0180917005843019F593E099833B83B4
+:102AF0002A839093E9008FEF9091E800815095FD33
+:102B000006C095ED9A95F1F700008111F5CF8091FF
+:102B1000E80085FF0DC040E050E063E070E0CE01CA
+:102B200001960E94CB178091E8008E778093E80091
+:102B30000F900F900F90DF91CF910895CF93DF9377
+:102B400000D01F92CDB7DEB720917005243021F55B
+:102B500022E029839B838A8383E08093E9008FEFBF
+:102B60009091E800815095FD06C095ED9A95F1F79A
+:102B700000008111F5CF8091E80085FF0DC040E095
+:102B800050E063E070E0CE0101960E94CB17809187
+:102B9000E8008E778093E8000F900F900F90DF9100
+:102BA000CF910895209170052430F1F422E0209314
+:102BB000E9002FEF3091E800215035FD06C035EDDA
+:102BC0003A95F1F700002111F5CF2091E80025FF9B
+:102BD0000BC040E050E065E070E00E94CB178091B0
+:102BE000E8008E778093E8000895CF93DF93EC019F
+:102BF00090917005943009F046C080916503882358
+:102C0000D9F0809166038823B9F09093E9008FEFA3
+:102C10009091E800815095FD06C095E19A95F1F7F5
+:102C200000008111F5CF8091E80085FF2CC040E0C5
+:102C300050E060E170E017C081E08093E9008FEF21
+:102C40009091E800815095FD06C095ED9A95F1F7B9
+:102C500000008111F5CF8091E80085FF14C040E0AD
+:102C600050E068E070E0CE010E94CB178091E80050
+:102C70008E778093E80080E1FE01A5EDB4E001903D
+:102C80000D928A95E1F7DF91CF91089580916F05BC
+:102C9000811109C00E9460190E94BD198091E20053
+:102CA00084608093E200089510926F05089508955E
+:102CB00008950C94092842E061EC81E00E94DA1842
+:102CC00042E061EC82E00E94DA1842E061EC83E0CD
+:102CD0000E94DA1842E161EC84E00C94DA188091E9
+:102CE0007205833009F455C030F4813071F08230C0
+:102CF00009F48EC008958A3009F47AC08B3009F443
+:102D000060C0893009F09CC020C080917105813A73
+:102D100009F096C08091E800877F8093E800809159
+:102D2000750590917605892B21F460E185ED94E09D
+:102D300003C060E080E090E070E00E94161880918F
+:102D4000E8008B778093E8000895809171058132C7
+:102D500009F076C08091750590917605009719F07D
+:102D6000039709F06DC08091E800877F8093E800A9
+:102D70008091E80082FD05C0809170058111F8CF37
+:102D80005FC08091F1008093E5048091E8008B772B
+:102D900053C080917105813A09F052C08091750548
+:102DA00090917605892B09F04BC08091E800877FD0
+:102DB0008093E8008091E80080FFFCCF809165035C
+:102DC00036C0809171058132D9F580917505909159
+:102DD0007605892BA9F58091E800877F8093E8002C
+:102DE0000E940F1980917305809365030C944A210A
+:102DF00080917105813221F58091E800877F809371
+:102E0000E8000E940F19809174058093E6040895EC
+:102E100080917105813AA1F48091E800877F8093C9
+:102E2000E8008091E80080FFFCCF8091E604809369
+:102E3000F1008091E8008E778093E8000C940F19E0
+:102E4000089584B7877F84BF88E10FB6F894809394
+:102E50006000109260000FBE90E080E80FB6F8941A
+:102E600080936100909361000FBE0E94B71C0E9486
+:102E700060190E94BD198091E20084608093E20095
+:102E800078940E94431C0E94B91C8BE593E00E9439
+:102E90005E1C80917005853069F40E94CA2780917C
+:102EA0006E058823B1F30E94F827882391F30E94CE
+:102EB000B517EFCF0E94C11CECCF292F3327233049
+:102EC0003105C9F064F42130310581F0223031053B
+:102ED00009F043C08DE690E02CE837E042C0213293
+:102EE0003105F1F02232310541F137C082E190E045
+:102EF00029EF37E036C099278130910541F08230C3
+:102F0000910541F0892B49F5E8E8F7E005C0EAE5CD
+:102F1000F7E002C0E0E3F7E0849190E09F0121C078
+:102F20006430D8F4E62FF0E0EE0FFF1FEE5FFB4FAA
+:102F30002081318189E090E014C0643070F470E049
+:102F4000FB01EE0FFF1FE650FC4F20813181FB019A
+:102F5000EA50FC4F808190E004C080E090E020E0E7
+:102F600030E0FA0131832083089580E189BD82E158
+:102F700089BD09B400FEFDCF8091D8008F7D80937C
+:102F8000D8008091E00082608093E0008091E000B2
+:102F900081FDFCCF0895CF92DF92EF92FF920F93C5
+:102FA0001F93CF93DF93EC018B016A010E942E19CE
+:102FB000811133C0C114D10439F0F60180819181AF
+:102FC000081B190BC80FD91FE12CF12C0115110595
+:102FD00019F18091E80085FD16C08091E8008E7798
+:102FE0008093E800C114D10449F0F60180819181F9
+:102FF000E80EF91EF182E08285E00FC00E942E19D2
+:10300000882321F30AC089918093F10001501109AE
+:10301000FFEFEF1AFF0ADACF80E0DF91CF911F9127
+:103020000F91FF90EF90DF90CF900895209177055A
+:10303000309178052617370748F06115710539F486
+:103040002091E8002E772093E80001C0B90140E00C
+:1030500061157105A9F120917005222309F443C07F
+:10306000253009F442C02091E80023FD40C02091A2
+:10307000E80022FD32C02091E80020FFE9CF409116
+:10308000F3002091F20030E0342BFC01CF016115F8
+:10309000710559F02830310540F481918093F10099
+:1030A000615071092F5F3F4FF1CF41E0283031056A
+:1030B00009F040E02091E8002E772093E800C8CF87
+:1030C0004111C9CF0AC080917005882361F0853015
+:1030D00061F08091E80083FD0AC08091E80082FFE2
+:1030E000F2CF80E0089582E0089583E0089581E0C2
+:1030F000089520917705309178052617370748F015
+:103100006115710539F42091E8002E772093E800CD
+:1031100001C0B901FC0120E06115710591F18091B8
+:103120007005882309F440C0853009F43FC08091C0
+:10313000E80083FD3DC08091E80082FD2FC08091B2
+:10314000E80080FFE9CF2091F3008091F20090E049
+:10315000922B6115710559F08830910540F4249146
+:103160002093F1003196615071090196F2CF21E070
+:10317000089709F020E08091E8008E778093E800BE
+:10318000CBCF2111CCCF0AC080917005882361F08C
+:10319000853061F08091E80083FD0AC08091E800ED
+:1031A00082FFF2CF80E0089582E0089583E00895E1
+:1031B00081E00895982F973058F59093E90098177B
+:1031C00039F07091EC002091ED005091F00003C0B7
+:1031D000242F762F50E021FF19C03091EB003E7F65
+:1031E0003093EB003091ED003D7F3093ED00309156
+:1031F000EB0031603093EB007093EC002093ED0016
+:103200005093F0002091EE0027FF07C09F5FD3CFBF
+:103210008F708093E90081E0089580E008958091A7
+:10322000710587FF11C08091E80082FD05C0809183
+:1032300070058111F8CF11C08091E8008B770BC029
+:1032400080917005882349F08091E80080FFF8CFD5
+:103250008091E8008E778093E80008952091E40043
+:103260003091E50095E64091EC00842F817040FF9D
+:1032700022C08091E80080FD1CC0809170058823E9
+:1032800091F0853091F08091EB0085FD10C0409168
+:10329000E4005091E5004217530729F39A01915039
+:1032A00011F784E0089582E0089583E0089581E0B5
+:1032B000089580E008954091E80042FFDECF089530
+:1032C0000E94CE190E94D619E0EEF0E08081816064
+:1032D0008083E8EDF0E080818F77808319BCA7EDD3
+:1032E000B0E08C918E7F8C9380818F7E8083109252
+:1032F0006F0508950F931F93CF93DF930E94CE190C
+:103300000E94D619C8EDD0E088818F7788838881A4
+:103310008068888388818F7D888319BC10927005AE
+:1033200010926C0510926E0510926D0500EE10E083
+:10333000F80180818B7F808388818160888342E06F
+:1033400060E080E00E94DA18E1EEF0E080818E7F9C
+:103350008083E2EEF0E080818160808380818860FC
+:103360008083F80180818E7F80838881806188835B
+:10337000DF91CF911F910F910895E8EDF0E08081EA
+:103380008F7E8083E7EDF0E080818160808384E040
+:1033900082BF81E080936F050C947A19E8EDF0E02C
+:1033A00080818E7F80831092E20008951092DA006F
+:1033B0001092E10008951F920F920FB60F92112400
+:1033C0002F933F934F935F936F937F938F939F932D
+:1033D000AF93BF93EF93FF938091E10082FF0BC007
+:1033E0008091E20082FF07C08091E1008B7F809393
+:1033F000E1000E94421C8091DA0080FF1FC0809192
+:10340000D80080FF1BC08091DA008E7F8093DA00A5
+:103410008091D90080FF0DC080E189BD82E189BD26
+:1034200009B400FEFDCF81E0809370050E9446162E
+:1034300005C019BC109270050E9454168091E100DD
+:1034400080FF19C08091E20080FF15C08091E200EA
+:103450008E7F8093E2008091E20080618093E200A1
+:103460008091D80080628093D80019BC85E0809359
+:1034700070050E9458168091E10084FF30C0809151
+:10348000E20084FF2CC080E189BD82E189BD09B4DE
+:1034900000FEFDCF8091D8008F7D8093D800809171
+:1034A000E1008F7E8093E1008091E2008F7E809327
+:1034B000E2008091E20081608093E20080916C05DF
+:1034C000882311F084E007C08091E30087FD02C0EB
+:1034D00081E001C083E0809370050E9459168091BD
+:1034E000E10083FF29C08091E20083FF25C0809125
+:1034F000E100877F8093E10082E080937005109265
+:103500006C058091E1008E7F8093E1008091E20064
+:103510008E7F8093E2008091E20080618093E200E0
+:1035200042E060E080E00E94DA188091F00088605C
+:103530008093F0000E945716FF91EF91BF91AF91D9
+:103540009F918F917F916F915F914F913F912F91BB
+:103550000F900FBE0F901F9018951F920F920FB6ED
+:103560000F9211242F933F934F935F936F937F9309
+:103570008F939F93AF93BF93CF93DF93EF93FF937B
+:10358000C091E900CF708091EC00D82FD17080FD00
+:10359000D0E81092E9008091F000877F8093F000DE
+:1035A00078940E94F11A1092E9008091F0008860EE
+:1035B0008093F000CD2BCF70C093E900FF91EF9185
+:1035C000DF91CF91BF91AF919F918F917F916F913B
+:1035D0005F914F913F912F910F900FBE0F901F90D1
+:1035E00018951F93CF93DF93CDB7DEB7AA970FB689
+:1035F000F894DEBF0FBECDBFE1E7F5E088E08E0FA7
+:103600009091F10091938E13FBCF0E946F168091E1
+:10361000E80083FF1FC18091710590917205492FC9
+:1036200050E04A30510508F015C1FA01E059FF4F4A
+:103630000C944933803881F0823809F00BC18091B5
+:1036400075058F708093E9008091EB0085FB8827DA
+:1036500080F91092E90006C080916D0590916E0589
+:10366000911182609091E800977F9093E800809399
+:10367000F1001092F100C8C0282F2D7F09F0EAC098
+:10368000882319F0823061F0E5C0809173058130A4
+:1036900009F0E0C0933009F080E080936E052BC004
+:1036A00080917305811127C0809175058F7009F491
+:1036B000D1C08093E9002091EB0020FF1CC0933023
+:1036C00021F48091EB00806214C09091EB00906136
+:1036D0009093EB0021E030E0A90102C0440F551F98
+:1036E0008A95E2F74093EA001092EA008091EB009D
+:1036F00088608093EB001092E9008091E800877F5A
+:1037000086C08111A7C0109173051F778091E300D7
+:103710008078812B8093E3008091E800877F8093FD
+:10372000E8000E940F198091E80080FFFCCF809193
+:10373000E30080688093E300111102C082E001C0C1
+:1037400083E08093700586C08058823008F082C084
+:1037500080917305909174058C3D53E0950779F540
+:1037600083E08A838AE289834FB7F894DE01139657
+:1037700020E03EE051E2E32FF0E050935700E49167
+:1037800020FF03C0E295EF703F5FEF708E2F90E057
+:10379000EA3010F0C79601C0C0968D939D932F5FBD
+:1037A000243149F74FBF8091E800877F8093E8007C
+:1037B0006AE270E0CE0101960E94161814C0AE01B4
+:1037C0004F5F5F4F609175050E945D17BC010097C8
+:1037D00009F440C09091E800977F9093E8008981B8
+:1037E0009A810E9479188091E8008B778093E80095
+:1037F00031C0803879F58091E800877F8093E800B8
+:1038000080916C058093F1008091E8008E77809321
+:10381000E8000E940F191EC081111CC09091730511
+:103820009230C0F48091E800877F8093E800909305
+:103830006C050E940F1980916C05811106C0809162
+:10384000E30087FD02C081E001C084E08093700541
+:103850000E945B168091E80083FF0AC08091E80017
+:10386000877F8093E8008091EB0080628093EB007B
+:10387000AA960FB6F894DEBF0FBECDBFDF91CF91F1
+:103880001F9108950895CF93809170058823A1F02A
+:10389000C091E900CF709091EC00892F817090FD6C
+:1038A00080E8C82B1092E9008091E80083FD0E9417
+:1038B000F11ACF70C093E900CF9108959093EC0472
+:1038C0008093EB0408958091EB049091EC040895AB
+:1038D000E091EB04F091EC04309721F00190F0813D
+:1038E000E02D099480E00895E091EB04F091EC0460
+:1038F000309721F00280F381E02D09940895E09142
+:10390000EB04F091EC04309721F00480F581E02D78
+:10391000099408952091E9043091EA0482179307ED
+:1039200071F09093EA048093E904E091EB04F09144
+:10393000EC04309721F00680F781E02D099408957A
+:103940002091E7043091E8048217930771F0909377
+:10395000E8048093E704E091EB04F091EC043097E5
+:1039600021F00084F185E02D0994089508950C94C8
+:10397000B61C0E943D280E94DA0D0E9407290C9473
+:10398000B82E5F926F927F928F929F92AF92BF926A
+:10399000CF92DF92EF92FF920F931F93CF93DF931B
+:1039A00000D000D01F92CDB7DEB70E941F0E98EF57
+:1039B000C92E94E0D92E04E010E0AA24A394B12CDF
+:1039C000502E802F0E948D0E4C01F6017290629055
+:1039D0006F016826792661147104A1F40150110960
+:1039E00078F78FEF89838A831B820E944628816043
+:1039F000782F9D838C8349815A816B818D810E94B0
+:103A0000711D38C080914D0581FD0E94960E2EE0FB
+:103A100030E07501022E02C0EE0CFF1C0A94E2F7A2
+:103A2000C70186219721892B09F129835A828E208B
+:103A30009F2091E0892809F490E09B830E9446280A
+:103A40008160782F9D838C8349815A816B818D8120
+:103A50000E94711D000F111FF801E251FB4F808180
+:103A60009181E826F926F182E08204C021503109D3
+:103A700080F6B4CF0E940A2C1091ED040E94681CBD
+:103A80001817D1F00E94681C8093ED040F900F90DE
+:103A90000F900F900F90DF91CF911F910F91FF909A
+:103AA000EF90DF90CF90BF90AF909F908F907F90DE
+:103AB0006F905F900C94C40D0F900F900F900F902B
+:103AC0000F90DF91CF911F910F91FF90EF90DF90BA
+:103AD000CF90BF90AF909F908F907F906F905F90AE
+:103AE0000895CF93DF93CDB7DEB72B970FB6F89439
+:103AF000DEBF0FBECDBF4F83588769877A878B871C
+:103B0000DE01119686E0FD0111928A95E9F785E0C4
+:103B1000FE01379601900D928A95E1F749815A810D
+:103B20006B817C818D819E810E94E8232B960FB64C
+:103B3000F894DEBF0FBECDBFDF91CF910895CF9334
+:103B4000882309F4C2C0C82F823859F40E94681C27
+:103B500081FDBBC089E30E94C2260E948F2789E3B2
+:103B60000CC0833879F40E94681C80FDAEC083E5E8
+:103B70000E94C2260E948F2783E50E940427CF91CE
+:103B80000C948F27843859F40E94681C82FD9DC0D4
+:103B900087E40E94C2260E948F2787E4EECF8CEF35
+:103BA0008C0F813A48F48C2F0E94202E81118DC0F9
+:103BB0008C2F0E94C226E3CF80E28C0F883048F41D
+:103BC000C77081E001C0880FCA95EAF70E944827B4
+:103BD000D6CF8BE58C0F833078F4C53A29F0C63AFE
+:103BE00031F083E890E005C081E890E002C082E80F
+:103BF00090E0CF910C948A1C88E58C0F833108F0FB
+:103C000064C0C83A39F1C93A41F1CA3A49F1CB3AEC
+:103C100051F1CC3A59F1CD3A61F1C03B69F1CE3A5C
+:103C200071F1CF3A79F1C13B81F1C23B89F1C33BDC
+:103C300091F1C43B99F1C53BA1F1C63BA9F1C73B4A
+:103C4000B1F1C83BB9F1C93BC1F1CA3BC9F180E050
+:103C500090E038C082EE90E035C089EE90E032C04E
+:103C60008AEE90E02FC085EB90E02CC086EB90E0D0
+:103C700029C087EB90E026C08CEC90E023C08DEC4F
+:103C800090E020C083E891E01DC08AE891E01AC06E
+:103C900082E991E017C084E991E014C081E292E0EA
+:103CA00011C083E292E00EC084E292E00BC085E294
+:103CB00092E008C086E292E005C087E292E002C08E
+:103CC0008AE292E0CF910C94A01CCF9108958823B2
+:103CD00009F44BC0823859F40E94681C81FF45C02A
+:103CE00089E30E94C2260E948F2789E30CC0833893
+:103CF00071F40E94681C80FF38C083E50E94C226D0
+:103D00000E948F2783E50E9404270C948F27843814
+:103D100059F40E94681C82FF28C087E40E94C226D2
+:103D20000E948F2787E4EFCF9CEF980F913A58F3CA
+:103D300090E2980F983050F4877091E001C0990F8D
+:103D40008A95EAF7892F0E944E27DFCF9BE5980FCF
+:103D5000933020F480E090E00C948A1C885A8331E0
+:103D600020F480E090E00C94A01C0895882321F0BA
+:103D70000E9448270C948F270895882321F00E94E1
+:103D80004E270C948F2708957F928F929F92AF9227
+:103D9000BF92CF92DF92EF92FF920F931F93CF9338
+:103DA000DF931F92CDB7DEB77C01C62E772EFC01C4
+:103DB000058102950F70128111110E9465270E94E2
+:103DC000BB26882379F0112369F080E28C0D8830BE
+:103DD00048F082E00E94A4260E94BB2691E0D82EE3
+:103DE000D92601C0D12CE72DE295EF70F0E0E6581E
+:103DF000FF4F0C944933872D807F072D0F70882348
+:103E000011F00295007F112389F0002309F499C174
+:103E100080E28C0D883020F4802F0E94482703C058
+:103E2000802F0E9458270E948F278BC18C2D0E94C3
+:103E3000671E002309F4C3C180E28C0D883020F492
+:103E4000802F0E944E2703C0802F0E945E270E9471
+:103E50008F27B5C1872D807F972D9F70803211F4F9
+:103E6000892F03C0892F8295807FCC2021F0F1E03B
+:103E7000CF16A1F01DC0112339F0002319F1013034
+:103E800009F50E9478279BC1002319F0013009F43D
+:103E900096C189830E947B27898110C1112321F05B
+:103EA000063008F08CC10EC0053008F088C106C18C
+:103EB000112359F0002331F0F701958190FF41C1A2
+:103EC0009F7095830E94B61E7AC1002309F4F6C044
+:103ED0003EC1872D86958695837090E0009719F0F6
+:103EE000019761F06CC1112321F08C2D972D9370F7
+:103EF00002C080E090E00E948A1C61C1112321F081
+:103F00008C2D972D937002C080E090E00E94A01C41
+:103F100056C18C2D112319F00E94122B02C00E9451
+:103F20007A2B0E94FF2B4BC1872D837009F052C062
+:103F3000111145C18C2D829586958770880F880F49
+:103F40009C2D9F70892E912CA12CB12C082E04C081
+:103F5000880C991CAA1CBB1C0A94D2F7C4FE14C07E
+:103F60000FE010E020E030E0B901A80104C0440FE8
+:103F7000551F661F771F8A95D2F7CB01BA0160954E
+:103F800070958095909503C060E070E0CB01272D7F
+:103F900026952695237030E02230310569F02330D4
+:103FA000310589F0682979298A299B292130310531
+:103FB00071F00E94302503C1682979298A299B293B
+:103FC0000E944C25FCC00E943025C501B4010E940E
+:103FD0001425F5C0112319F0872D817001C0869535
+:103FE000882309F4ECC08C2D829586958770880F04
+:103FF000880F9C2D9F70892E912CA12CB12C082EFE
+:1040000004C0880C991CAA1CBB1C0A94D2F7C4FEDD
+:1040100014C00FE010E020E030E0B901A80104C0B6
+:10402000440F551F661F771F8A95D2F7CB01BA013F
+:10403000609570958095909503C060E070E0CB012D
+:10404000272D269526952370422F50E042305105AA
+:1040500069F04330510589F0682979298A299B291B
+:104060004130510571F00E940A26A9C068297929BA
+:104070008A299B290E942626A2C00E940A26C501E1
+:10408000B4010E94EE259BC08C2D90E0FC01E05E07
+:10409000F109E531F10508F050C0E657FF4F0C94E7
+:1040A00049330C2D0F70872D8F71112321F00E9441
+:1040B0008725802F07CF0E94A825802F0E94BD1E34
+:1040C0007EC0112341F0053008F079C0872D8F7133
+:1040D0000E94CD2574C0063008F071C0F7CF1123BF
+:1040E00039F0872D8F710E94872569C01123C9F38C
+:1040F000872D8F710E94A82562C0112329F0872D7A
+:104100008F710E9472255BC00E94682558C01123E0
+:1041100051F0172D1F71812F0E94872563E0812F99
+:104120000E949B264CC081E00E94A426023008F425
+:1041300046C082E00E94A42642C0112331F0002331
+:1041400081F28C2D0E949F1D3AC0002389F28C2D94
+:104150000E94671E34C0472D4F706C2DC7010E940E
+:104160004A060E948C242BC0111129C0472D4F7084
+:1041700050E042305105B9F04CF44115510581F041
+:1041800041305105E1F40E94E02E19C04330510541
+:1041900069F04430510599F48C2D0E94322F0FC0E4
+:1041A0000E94C92E0CC00E94FC2E09C00E940F2F35
+:1041B00006C0472D4F706C2DC7010E94650ADD2097
+:1041C000F9F00E94972680FD1BC0F70112820E9421
+:1041D00091260E948725C7010E940F210E949126E7
+:1041E0000F90DF91CF911F910F91FF90EF90DF9093
+:1041F000CF90BF90AF909F908F907F900C94A82508
+:104200000F90DF91CF911F910F91FF90EF90DF9072
+:10421000CF90BF90AF909F908F907F9008950F9315
+:104220001F93CF93DF93EC01888199812B813C818F
+:10423000232BB9F09F3F11F48F3F99F0CE010E94DC
+:104240006408882371F0688179818A810E948D26B3
+:104250008C010E9442260E940925B801CE010E94CD
+:10426000C41EDF91CF911F910F9108950E94652781
+:104270000E9475270E943A270E948F270E94B02C27
+:104280000E94FF2B80E090E00E948A1C80E090E07A
+:104290000C94A01C0E9455270C9436210E94822663
+:1042A000292F22952F7030E02C3031054CF42A3024
+:1042B00031056CF42250310922303105A8F407C0D1
+:1042C0002C30310569F02F30310551F00DC0803FA1
+:1042D00069F018F4803E40F409C0843F29F406C018
+:1042E00093FB882780F9089580E0089581E0089580
+:1042F000CF93DF9300D000D01F92CDB7DEB70F90E1
+:104300000F900F900F900F90DF91CF910895CF9362
+:10431000DF9300D000D000D0CDB7DEB726960FB621
+:10432000F894DEBF0FBECDBFDF91CF9108951F93EC
+:10433000CF93DF93C091F80416E08091F904C81779
+:1043400099F0D0E01C9FF0011D9FF00D1124E65064
+:10435000FB4F4081518162817381848195810E94EC
+:1043600087212196C770E9CFDF91CF911F910895E2
+:1043700040912A0550912B0560912C0570912D05D7
+:1043800080912E0590912F050C94872180912F0507
+:1043900082958F7009F054C080912C05882309F410
+:1043A0004FC08091F804A091F90460912A057091A2
+:1043B0002B0540912D0550912E05B6E08A1709F482
+:1043C0003FC090E041155105C1F17F3F11F46F3FAF
+:1043D000A1F1B89FF001B99FF00D1124E650FB4FF9
+:1043E000218172132AC02081621327C022812111EA
+:1043F00024C0238134812417350710F4215031095A
+:10440000241B350B283C3105C0F420912F052F705B
+:10441000206120932F0526E0289FF001299FF00DB1
+:104420001124E150FB4F80818F70806180838AE28C
+:1044300095E00E940F210C94972101968770BECFC2
+:104440000895CF92DF92EF92FF920F931F93CF9335
+:10445000DF93CDB7DEB762970FB6F894DEBF0FBE1D
+:10446000CDBF8C0185E0F801DE011D9601900D9213
+:104470008A95E1F7D8014C9111965C9111971296AB
+:104480006C9112971396CD90DC90149730912A0579
+:1044900070912B0580912D0590912E05009709F4C0
+:1044A0006BC17F3F19F43F3F09F466C1E0902C05D2
+:1044B000EE2009F4C0C020912F05C816D90628F0B7
+:1044C000F601E81BF90BCF0104C0809590958C0D87
+:1044D0009D1DFF24F394883C910578F0F12C207FFA
+:1044E00009F0C6C07C2DD98AC88A89890E947821A2
+:1044F0008AE295E00E940F21B1C0822F807F09F0EF
+:1045000046C0751314C0341312C0611110C02F704F
+:10451000206120932F050E94B8218AE295E00E9435
+:104520000F2180912F05D80115968C932EC0CD2890
+:1045300019F15F3F11F44F3FF9F0F62E61111CC0E5
+:104540008091F8042091F90436E0821709F45AC0EA
+:1045500090E0389FF001399FF00D1124E650FB4F99
+:104560007181571306C07081471303C072817111A6
+:1045700003C001968770E9CFF62E662309F418C1AF
+:1045800080912F05816080932F05F12C11C1751347
+:1045900008C0341306C0611104C080912F05D801F2
+:1045A000C3C04D875E878D859E856A8B0E944E2194
+:1045B0006A898823E1F16623D1F120912F05822FAA
+:1045C00082958F7090E0029774F080912A05909107
+:1045D0002B0598878F831986DB86CA862C87CE01A8
+:1045E00007960E940F2186E0F801AAE2B5E001904B
+:1045F0000D928A95E1F70E94C6210E94B821FF24FE
+:10460000F394D6C04D875E878D859E850E94822655
+:10461000292F22952F7030E0223031050CF0BCC0DC
+:104620009F7009F0B6C0805E883008F4C1C0C80130
+:104630000E940F21E4CFC816D90608F453C0F60132
+:10464000E81BF90BCF01883C910508F450C0F12C10
+:104650007C2DD98AC88A89890E947821EAE2F5E00E
+:1046600086E0DF011D928A95E9F70E94B821A0C07B
+:10467000751314C0341312C0611110C080912F053E
+:10468000F8018583C8010E940F2186E0EAE2F5E087
+:10469000DF011D928A95E9F7FE2C8AC04D875E875F
+:1046A0008D859E856A8B0E944E216A89882309F434
+:1046B000BECF662309F4BBCF20912F05822F8295B0
+:1046C0008F7090E002970CF48ECF80912A05909124
+:1046D0002B059A8389831B82DD82CC822E83CE01B7
+:1046E00001967FCF809590958C0D9D1DACCFF62EB9
+:1046F000662309F49CCF75132EC034132CC020916F
+:104700002F0520FD1FC0822F82958F70D9F0D80110
+:1047100015962C9315978F3049F08F5F982F9295AF
+:10472000907F822F8F70892B15968C93C8010E94E1
+:104730000F2186E0F801AAE2B5E001900D928A957A
+:10474000E1F793CF86E0F801AAE2B5E001900D927F
+:104750008A95E1F72DC04D875E878D859E850E94E5
+:104760004E21811140CF80912F05816080932F05CC
+:10477000C8010E940F211CC0662309F458CF4D8741
+:104780005E878D859E850E944E21882309F44FCF38
+:104790002ACF811148CF0CC0243031050CF047CF0F
+:1047A0009F7009F440CFF8019581907F09F03BCFCD
+:1047B0008F2D62960FB6F894DEBF0FBECDBFDF918E
+:1047C000CF911F910F91FF90EF90DF90CF900895C0
+:1047D0001F93CF93DF93CDB7DEB72C970FB6F89426
+:1047E000DEBF0FBECDBF4F83588769877A878B871F
+:1047F0009C87CE0107960E942122882369F08F8131
+:1048000098852A853B85232BF1F19F3F09F063C0F2
+:104810008F3F09F060C037C086E0FE013796DE01A9
+:10482000119601900D928A95E1F76F817885EA855E
+:10483000FB85309741F17F3F11F46F3F21F12091CB
+:10484000F90430E0C9010196877099274091F80476
+:1048500050E08417950709F447C069837A83FD8384
+:10486000EC8396E0929FD001939FB00D1124A65047
+:10487000BB4FFE01319601900D929A95E1F780931E
+:10488000F9040E94972116E08091F8049091F904B0
+:104890008917C1F1189FC001112486509B4F0E94B7
+:1048A0002122882379F1E091F8041E9FF001112460
+:1048B000E650FB4F408151816281738184819581F3
+:1048C0000E9487218091F80490E0019687709927D3
+:1048D0008093F804D9CF4F81588569857A858B8577
+:1048E0009C850E948721CFCF0E944A211092F90413
+:1048F0001092F804EAE2F5E086E0DF011D928A9565
+:10490000E9F7C1CF2C960FB6F894DEBF0FBECDBF2E
+:10491000DF91CF911F910895EF92FF920F931F9314
+:10492000CF93DF938C01009709F46CC0F12CEE2437
+:10493000E394E8012196F8018491843740F48430AF
+:1049400008F051C0813081F0823019F15BC08537A9
+:1049500009F444C0A8F19CE7980F903708F052C0C2
+:104960008F770E94671E41C00E5F1F4FFE01C491EA
+:1049700080E28C0F883048F4C7708E2D01C0880FFC
+:10498000CA95EAF70E94682714C08C2F0E949F1DC9
+:104990002DC00E5F1F4FFE01C49180E28C0F883046
+:1049A00058F4C7708E2D01C0880FCA95EAF70E948F
+:1049B0006E270E948F271AC08C2F0E94671E16C078
+:1049C0000E5F1F4FFE01C491CC2381F08FE99FE061
+:1049D0000197F1F700C00000C150F6CF0E5F1F4FE6
+:1049E000FE01F49003C00E949F1D8E018F2D88232D
+:1049F00009F49FCFEFE9FFE03197F1F700C0000025
+:104A00008150F5CFDF91CF911F910F91FF90EF90E3
+:104A100008950895609334057093350580933605A5
+:104A2000909337050C9436210F931F930091340512
+:104A3000109135052091360530913705DC01CB0109
+:104A4000802B912BA22BB32B8093340590933505AB
+:104A5000A0933605B09337051F910F910C94362122
+:104A60000F931F9300913405109135052091360561
+:104A700030913705DC01CB0180239123A223B3239E
+:104A80008093340590933505A0933605B093370590
+:104A90001F910F910C9436210F931F9300913405B1
+:104AA000109135052091360530913705DC01CB0199
+:104AB00080279127A227B32780933405909335054B
+:104AC000A0933605B09337051F910F910C943621B2
+:104AD0001092300510923105109232051092330574
+:104AE0000C94362141E050E060E070E004C0440FD7
+:104AF000551F661F771F8A95D2F740933005509354
+:104B0000310560933205709333050C94362141E0F2
+:104B100050E060E070E004C0440F551F661F771F2F
+:104B20008A95D2F78091300590913105A091320598
+:104B3000B0913305482B592B6A2B7B2B40933005C2
+:104B40005093310560933205709333050C943621F0
+:104B500041E050E060E070E004C0440F551F661F64
+:104B6000771F8A95D2F74095509560957095809102
+:104B7000300590913105A0913205B091330548235D
+:104B800059236A237B23409330055093310560936A
+:104B90003205709333050C94362141E050E060E01B
+:104BA00070E004C0440F551F661F771F8A95D2F727
+:104BB0008091300590913105A0913205B091330577
+:104BC000482759276A277B274093300550933105A2
+:104BD00060933205709333050C9436210F931F9325
+:104BE0000091300510913105209132053091330547
+:104BF000DC01CB01802B912BA22BB32B80933005B2
+:104C000090933105A0933205B09333051F910F9116
+:104C10000C9436210F931F930091300510913105AC
+:104C20002091320530913305DC01CB0180239123A3
+:104C3000A223B3238093300590933105A0933205CE
+:104C4000B09333051F910F910C9436210F931F934E
+:104C500000913005109131052091320530913305D6
+:104C6000DC01CB0180279127A227B3278093300551
+:104C700090933105A0933205B09333051F910F91A6
+:104C80000C9436210895CF92DF92EF92FF920F930A
+:104C90001F93CF93DF938C01C0903405D0903505DE
+:104CA000E0903605F0903705809130059091310500
+:104CB000A0913205B0913305C82AD92AEA2AFB2AE5
+:104CC000CFE1D0E0D701C6010C2E04C0B695A79560
+:104CD000979587950A94D2F780FF06C0B8018C2F6C
+:104CE0000E94EA0C019721F4219760F780E001C04F
+:104CF0008C2FDF91CF911F910F91FF90EF90DF905C
+:104D0000CF900895CF93DF93EC010E944326BE011C
+:104D10000E94EA0CDF91CF910895CB010E94822678
+:104D2000089580913805859585958595089580919C
+:104D300038058770089598E0899F90011124262BEB
+:104D4000209338050C94872520913805809582237F
+:104D500080933805982F977069F430E0482F5527D5
+:104D600047FD50952417350729F08595859585953C
+:104D70000C94A825089590913805977081E009F466
+:104D800080E0089590916503992321F09091660346
+:104D9000911109C02091670330916803F90132969F
+:104DA0009FEF40E01FC0982F9695969596959F305F
+:104DB00050F5E0916703F0916803E90FF11D8770EA
+:104DC00021E030E0A90102C0440F551F8A95E2F7A7
+:104DD000CA019181892B818308959F3F39F04F5FEC
+:104DE0004E3041F051915813F8CF0DC05111F7CF0B
+:104DF000942FF5CF9F3F39F0F901E90FF11D97FD91
+:104E0000FA9582830895089590916503992321F07E
+:104E100090916603911109C0209167033091680356
+:104E2000F9013296205F3F4F1FC0982F96959695B7
+:104E300096959F30F0F4E0916703F0916803E90FD5
+:104E4000F11D877021E030E0A90102C0440F551F19
+:104E50008A95E2F7CA01809591818923818308951B
+:104E60003196E217F30729F090819813F9CF108259
+:104E7000F7CF089581E090E0E0916703F091680337
+:104E8000E80FF91F1082019680319105A9F7089566
+:104E900090914C05892B80934C05089580959091B5
+:104EA0004C05892380934C05089510924C05089574
+:104EB00090914B05892B80934B0508958095909197
+:104EC0004B05892380934B05089510924B05089557
+:104ED00090914A05892B80934A0508958095909179
+:104EE0004A05892380934A05089510924A0508953A
+:104EF00080933905089510923905089580916703CC
+:104F000090916803FC0131969C01205F3F4F80E047
+:104F1000919191118F5FE217F307D1F70895E09116
+:104F20006703F091680380914C058083E0916703EB
+:104F3000F0916803908180914B05892B8083E091EB
+:104F40006703F0916803908180914A05892B8083E3
+:104F500080913905882361F0E0916703F09168033F
+:104F60009081892B80830E947E27811110923905C0
+:104F700080916703909168030C94741C20E0009763
+:104F800039F0AC0141505109842395232F5FF7CFAD
+:104F9000822F089580917005843039F110924E056A
+:104FA00020E488E190E00FB6F894A8958093600023
+:104FB0000FBE2093600080E00E942A0580E00E94DE
+:104FC000C40D83B7817F846083BF83B7816083BF53
+:104FD0007894889583B78E7F83BF88E10FB6F89465
+:104FE00080936000109260000FBE089508950895A8
+:104FF00080E00E942A050E94F6270E941F0E0E9450
+:10500000F7270E94970E91E0811101C090E0892F4F
+:1050100008950E944A2180E00E942A050E94B82E2D
+:105020000E94681C0C94C40D1F920F920FB60F9231
+:1050300011248F939F93AF93BF9380914E0581115D
+:1050400013C080914F0590915005A0915105B091EA
+:1050500052054196A11DB11D80934F0590935005B7
+:10506000A0935105B0935205BF91AF919F918F913D
+:105070000F900FBE0F901F90189582E084BD93E0B3
+:1050800095BD9AEF97BD80936E0008952FB7F89461
+:1050900080914F0590915005A0915105B091520516
+:1050A0002FBF0895CF92DF92EF92FF920F931F933D
+:1050B0002FB7F89440914F055091500560915105DC
+:1050C000709152052FBF6A017B01EE24FF248C01F1
+:1050D00020E030E0C016D106E206F30610F441509D
+:1050E00051099A01281B390BC9011F910F91FF909B
+:1050F000EF90DF90CF9008951F920F920FB60F920E
+:1051000011248F939F93AF93BF9380914F059091FC
+:105110005005A0915105B09152050196A11DB11DF8
+:1051200080934F0590935005A0935105B09352057D
+:10513000BF91AF919F918F910F900FBE0F901F90D5
+:1051400018950E946019F8942FEF87EA91E6215094
+:1051500080409040E1F700C0000087E090EBDC0168
+:1051600080937B0590937C05A0937D05B0937E058D
+:105170009CE088E10FB6F894A895809360000FBE7C
+:1051800090936000FFCFCF92DF92EF92FF920F9348
+:105190001F93CF93DF93D82FC4E0EE24E394F12C38
+:1051A0008C2F0E948D0E6C010EE010E09701002EF6
+:1051B00002C0220F331F0A94E2F72C213D21232B3A
+:1051C00049F0602F7C2F80E00E94660AD81302C04D
+:1051D00081E006C00150110948F7C15008F780E08E
+:1051E000DF91CF911F910F91FF90EF90DF90CF90C3
+:1051F0000895CF93C82F8CE20E94C328882321F002
+:105200008C2FCF910C94C32880E0CF910895CF9339
+:105210000E94582A811102C00E94342AC5E6C1505A
+:1052200049F00E941F0E8FE39CE90197F1F700C03F
+:105230000000F5CF89E20E94F928811113C18AE2AA
+:105240000E94F92881110E94342A85E00E94F928E1
+:1052500081110E94A1280E94632A80934D0587E056
+:105260000E94F9288823A9F18BE10E94F92888235C
+:1052700051F080914D0581FB222720F991E0922782
+:1052800090FB81F90EC08EE00E94F928882361F01E
+:1052900080914D0582FB222720F991E0922790FB17
+:1052A00082F980934D0515C080E10E94F928909104
+:1052B0004D05882341F093FB222720F981E08227C6
+:1052C00080FB93F904C0892F809580FB90F990931F
+:1052D0004D0580914D050E94672A0E94752A809392
+:1052E000790580EE0E94F928882341F080917905A4
+:1052F000982F909590FB80F98093790589E30E941F
+:10530000F928882359F08091790581FB222720F91B
+:1053100091E0922790FB81F98093790582EE0E94BB
+:10532000F928882359F08091790582FB222720F9FA
+:1053300091E0922790FB82F98093790586EE0E9496
+:10534000F928882359F08091790583FB222720F9D9
+:1053500091E0922790FB83F98093790583EE0E9478
+:10536000F928882359F08091790584FB222720F9B8
+:1053700091E0922790FB84F98093790585E30E9460
+:10538000F928882359F08091790585FB222720F997
+:1053900091E0922790FB85F98093790581E30E9443
+:1053A000F928882359F08091790586FB222720F976
+:1053B00091E0922790FB86F98093790581E10E9424
+:1053C000F928882359F08091790587FB222720F955
+:1053D00091E0922790FB87F9809379058091790578
+:1053E0000E94792A8091790587FB882780F980932C
+:1053F000660387E20E94F928C82F8EE10E94F928EF
+:105400008111C2608FE10E94F9288111C46080E29D
+:105410000E94F9288111C86081E20E94F928811157
+:10542000C06182E20E94F9288111C06283E20E9479
+:10543000F9288111C06484E20E94F928882311F0C0
+:10544000C06802C0CC2329F08C2F0E94702A6C2FD8
+:1054500003C00E946C2A682F70E080E090E0CF913A
+:105460000C940A25CF9108956DEE7EEF80E090E0D8
+:105470000E946F3360E082E090E00E945D3360E064
+:1054800083E090E00E945D3360E084E090E00E9461
+:105490005D3360E085E090E00E945D3360E086E08F
+:1054A00090E00E945D336FEF87E090E00C945D33F5
+:1054B00080E090E00E94573321E08D3E9E4F09F03E
+:1054C00020E0822F089582E090E00C944F33682F03
+:1054D00082E090E00C945D3383E090E00C944F33D5
+:1054E000682F83E090E00C945D3384E090E00C94AE
+:1054F0004F33682F84E090E00C945D3386E090E0B9
+:105500000C944F33682F86E090E00C945D3387E075
+:1055100090E00C944F33682F87E090E00C945D335B
+:105520008091550580FF0BC060916C0385E0689FFA
+:10553000B001112475956795759567952BC081FF0E
+:1055400009C060916C0385E0689FB00111247595D6
+:10555000679520C082FF07C060916C0385E0689F5B
+:10556000B001112417C0909156059923D1F0609194
+:105570006B03961788F720916C0385E0289F9001B4
+:105580001124929FA001939F500D112470E0CA0135
+:105590000E9435336038710540F46115710539F0AA
+:1055A00002C065E070E0862F08958FE7089581E0DE
+:1055B00008958091550580FF08C060916A0370E0EE
+:1055C000759567957595679521C081FF06C06091B7
+:1055D0006A0370E07595679519C082FF04C06091F9
+:1055E0006A0370E010C0909156059923C1F0609154
+:1055F00069039617A0F780916A03899FC00111245F
+:1056000070E00E9435336038710528F4611571052A
+:1056100021F0862F08958FE7089581E0089561E0D5
+:1056200070E0F4CF803F21F40E94902A819504C05D
+:10563000813F29F40E94902A809359050895823F62
+:1056400021F40E94902A819504C0833F29F40E948E
+:10565000902A809358050895893F19F40E94D92A09
+:1056600005C08A3F31F40E94D92A819580935A055A
+:1056700008958B3F21F40E94D92A819504C08C3F64
+:1056800029F40E94D92A80935B050895843F21F470
+:1056900080915705816017C0853F21F4809157059F
+:1056A000826011C0863F21F48091570584600BC051
+:1056B000873F21F480915705886005C0883F31F409
+:1056C0008091570580618093570508958D3F21F49F
+:1056D0008091550581600BC08E3F21F48091550566
+:1056E000826005C08F3F29F48091550584608093C6
+:1056F00055050895803F39F48091590587FF6CC0A6
+:105700001092590569C0813F29F4809159051816F6
+:10571000BCF362C090915805823F29F497FF5CC0AA
+:105720001092580559C0833F19F41916CCF354C090
+:10573000893F41F480915A0518160CF04DC0109223
+:105740005A054AC08A3F29F480915A0587FF44C010
+:10575000F6CF8B3F39F480915B0587FF3DC01092F7
+:105760005B053AC08C3F29F480915B051816BCF3A9
+:1057700033C0843F21F4809157058E7F17C0853F49
+:1057800021F4809157058D7F11C0863F21F48091CF
+:1057900057058B7F0BC0873F21F480915705877F8A
+:1057A00005C0883F31F4809157058F7E809357055F
+:1057B00013C08D3F21F4809155058E7F0BC08E3F25
+:1057C00021F4809155058D7F05C08F3F29F480918C
+:1057D00055058B7F809355058091580581110EC02A
+:1057E0008091590581110AC080915A05811106C026
+:1057F00080915B05811102C010925605089587E5DE
+:1058000095E00E947F1C0E94462890935405809347
+:10581000530508951F93CF93DF9380915305909183
+:1058200054050E945228AC0190915605992321F00D
+:1058300020916D0330E006C020916E038AE0289F1E
+:10584000900111244217530708F486C0809158052F
+:10585000C0915905D0915A0510915B05811107C07F
+:10586000C11176C0D11174C0111172C075C09F3FB3
+:1058700019F09F5F90935605181624F40E94902A01
+:10588000809358058091580587FF05C00E94902A93
+:105890008195809358051C1624F40E94902A8093C9
+:1058A00059058091590587FF05C00E94902A81956E
+:1058B0008093590560915805662339F1C0915905C7
+:1058C000CC2319F1772767FD7095872F972F0E94BA
+:1058D000573023E333E343E35FE30E9467310E94E1
+:1058E0002430609358056C2F772767FD7095872FBC
+:1058F000972F0E94573023E333E343E35FE30E9493
+:1059000067310E942430609359051D1624F40E94CB
+:10591000D92A80935A0580915A0587FF05C00E94B5
+:10592000D92A819580935A05111624F40E94D92A08
+:1059300080935B0580915B0587FF05C00E94D92A93
+:10594000819580935B05DF91CF911F910C94FF2B84
+:105950009F3F09F08ECF96CFDF91CF911F91089591
+:10596000E7E5F5E085E0DF011D928A95E9F7109201
+:105970005605109255050895833081F128F4813041
+:1059800059F08230D1F00895853009F449C0B8F15A
+:10599000863009F456C0089580916E03262F30E0BA
+:1059A000280F311D2F3F310524F4680F60936E03DB
+:1059B00008958FEF80936E03089580916D03262FD5
+:1059C00030E0280F311D2F3F310524F4680F60931C
+:1059D0006D0308958FEF80936D03089580916C039C
+:1059E000262F30E0280F311D2F3F310524F4680F9A
+:1059F00060936C0308958FEF80936C0308958091FA
+:105A00006B03262F30E0280F311D2F3F310524F482
+:105A1000680F60936B0308958FEF80936B03089575
+:105A200080916A03262F30E0280F311D2F3F31056A
+:105A300024F4680F60936A0308958FEF80936A03DC
+:105A4000089580916903262F30E0280F311D2F3FE4
+:105A5000310524F4680F6093690308958FEF8093F4
+:105A600069030895833011F128F4813049F08230C0
+:105A700091F00895853081F120F18630C1F10895CB
+:105A800080916E03681720F4861B80936E0308953F
+:105A900010926E03089580916D03681720F4861BA1
+:105AA00080936D03089510926D03089580916C03A7
+:105AB000681720F4861B80936C03089510926C0382
+:105AC000089580916B03681720F4861B80936B0305
+:105AD000089510926B03089580916A03681720F46B
+:105AE000861B80936A03089510926A03089580913B
+:105AF0006903681720F4861B809369030895109248
+:105B0000690308950F931F93482F50E0FA013597CA
+:105B1000EF33F10508F08CC0E156FF4F0C94493388
+:105B20000E94631C892B59F00E94631C90935D05B1
+:105B300080935C050E944A2180E090E004C080913F
+:105B40005C0590915D050E945E1C6BC080914D05C7
+:105B5000817F8E7F80934D0581E080935F0569C0D2
+:105B60000E944A210E94C70E0E94BB070E94A128E2
+:105B700058C090914D05892F8095817080FB90F9D8
+:105B800029F09660986090934D0553C0997F977F58
+:105B900090934D0546C080914D0581FB222720F949
+:105BA00091E0922790FB81F980934D059923C9F1EB
+:105BB00080914D05816080934D0533C080914D05E6
+:105BC00082FB222720F991E0922790FB82F9ECCF0B
+:105BD00080914D0583FB222720F991E0922790FBCD
+:105BE00083F9E2CF0E944A219091660381E08927E0
+:105BF0008093660316C0895301C08D5141E050E087
+:105C000060E070E08A019B0104C0000F111F221F99
+:105C1000331F8A95D2F7C901B8010E940A250E9454
+:105C20004A2181E006C061E070E080E090E0F5CFBD
+:105C300080E01F910F91089580E0089580E008951D
+:105C4000CF93C82F80915F05813069F018F08230C2
+:105C5000C9F184C0E0916703F091680380818232CA
+:105C600009F07EC007C0E0916703F091680380816E
+:105C7000823261F48C2F0E941C2E811104C08C2F63
+:105C80000E94822D1DC081E090E01AC08C2F0E94DE
+:105C90001E2E811114C0C43179F048F4CB3079F054
+:105CA000C03109F061C082E080935F0508C0C9324D
+:105CB00019F0C83321F058C010925F0555C081E03B
+:105CC000817054C0C93291F120F5C43179F1B0F43A
+:105CD000C73009F047C08EE180936E0382E3809362
+:105CE0006D038AE080936C0384E180936B0388E00A
+:105CF00080936A0388E28093690334C0CE51C63032
+:105D000088F5EC2FF0E0E65FFB4F808180935E0525
+:105D100029C0CE34E9F020F4CB3421F56AE013C079
+:105D2000C13579F0C235F1F461E00DC080915E05B6
+:105D3000882319F010925E0515C081E080935F05FD
+:105D400015C061E006C080915E050E94BC2C0AC0AF
+:105D50006AE080915E050E94322D04C010925F05BA
+:105D600080E004C081E002C080E0AACFCF91089516
+:105D70000E94582A811102C00E94342A0E947E2A61
+:105D800080937A0580FF02C0869501C080E00C9464
+:105D90002A0580917A05982F9695292F30E0233097
+:105DA00031054CF49F5F990F8170892B816080933E
+:105DB0007A050E94822A80917A0586950C942A059C
+:105DC00080917A05982F969591F09158990F81704E
+:105DD000892B80937A058E7F91E009F490E0809181
+:105DE0007A0590FB80F980937A050E94822A80913F
+:105DF0007A0586950C942A0580917A05982F9095BE
+:105E000090FB80F980937A050E94822A80917A051E
+:105E100080FF02C0869501C080E00C942A05909115
+:105E20007A05892F86958F5F8F779170843028F45B
+:105E3000880F892B80937A0502C090937A05809110
+:105E40007A058E7F91E009F490E080917A0590FBCD
+:105E500080F980937A050E94822A80917A0586953E
+:105E60000C942A0520917A05922F96958927982FD0
+:105E7000990F822F8170892B80937A058E7F91E014
+:105E800009F490E080917A0590FB80F980937A057F
+:105E90000E94822A80917A0586950C942A05809129
+:105EA0007A05869508955058BB27AA270ED0D1C1F0
+:105EB000C2D130F0C7D120F031F49F3F11F41EF46D
+:105EC000B7C10EF4E095E7FB9FC1E92FD3D180F372
+:105ED000BA17620773078407950718F071F49EF5E7
+:105EE000EBC10EF4E0950B2EBA2FA02D0B01B901DA
+:105EF00090010C01CA01A0011124FF27591B99F040
+:105F0000593F50F4503E68F11A16F040A22F232F4B
+:105F1000342F4427585FF3CF469537952795A7959B
+:105F2000F0405395C9F77EF41F16BA0B620B730B42
+:105F3000840BBAF09150A1F0FF0FBB1F661F771FB3
+:105F4000881FC2F70EC0BA0F621F731F841F48F468
+:105F5000879577956795B795F7959E3F08F0B3CFEE
+:105F60009395880F08F09927EE0F979587950895D8
+:105F700027D108F481E008950CD06BC163D140F0C3
+:105F80005AD130F021F45F3F19F03EC1511195C153
+:105F90004FC170D198F39923C9F35523B1F3951BE1
+:105FA000550BBB27AA2762177307840738F09F5F3A
+:105FB0005F4F220F331F441FAA1FA9F333D00E2EA9
+:105FC0003AF0E0E830D091505040E695001CCAF716
+:105FD00029D0FE2F27D0660F771F881FBB1F2617DB
+:105FE00037074807AB07B0E809F0BB0B802DBF01AE
+:105FF000FF2793585F4F2AF09E3F510568F004C178
+:106000005CC15F3FECF3983EDCF38695779567952E
+:10601000B795F7959F5FC9F7880F911D969587955E
+:1060200097F90895E1E0660F771F881FBB1F62177D
+:1060300073078407BA0720F0621B730B840BBA0B3B
+:10604000EE1F88F7E095089504D06894B11135C12A
+:10605000089518D188F09F5790F0B92F9927B7511C
+:10606000A0F0D1F0660F771F881F991F1AF0BA951C
+:10607000C9F712C0B13081F01FD1B1E008951CC141
+:10608000672F782F8827B85F39F0B93FCCF3869512
+:1060900077956795B395D9F73EF49095809570956F
+:1060A00061957F4F8F4F9F4F0895E89409C097FBEC
+:1060B0003EF490958095709561957F4F8F4F9F4FDF
+:1060C0009923A9F0F92F96E9BB279395F695879523
+:1060D00077956795B795F111F8CFFAF4BB0F11F4E6
+:1060E00060FF1BC06F5F7F4F8F4F9F4F16C088238D
+:1060F00011F096E911C0772321F09EE8872F762FC3
+:1061000005C0662371F096E8862F70E060E02AF003
+:106110009A95660F771F881FDAF7880F96958795EF
+:1061200097F9089588D018F011F08CD038F480C019
+:10613000C4C0E92F9FD0B0F35523C9F3E7FB621722
+:10614000730784079507A8F199F3E92FFF278823A0
+:106150002AF03197660F771F881FDAF7952F55279A
+:10616000442332F091505040220F331F441FD2F786
+:10617000BB27E91BF50B621B730B840BB109C1F242
+:1061800022F4620F731F841FB11D31972AF0660F2E
+:10619000771F881FBB1FEFCF915050405AF041F03E
+:1061A000882332F0660F771F881F91505040C1F747
+:1061B000939530C08695779567959F5FD9F7F8CF0F
+:1061C000990F0008550FAA0BE0E8FEEF1616170608
+:1061D000E807F907C0F012161306E407F50798F070
+:1061E000621B730B840B950B39F40A2661F0232B89
+:1061F000242B252B21F408950A2609F4A140A69505
+:106200008FEF811D811D089597F99F6780E870E0E9
+:1062100060E008959F3F31F0915020F48795779585
+:106220006795B795880F911D9695879597F908956D
+:106230009FEF80EC089500240A941616170618069E
+:106240000906089500240A9412161306140605067A
+:106250000895092E0394000C11F4882352F0BB0F0B
+:1062600040F4BF2B11F460FF04C06F5F7F4F8F4F6E
+:106270009F4F089557FD9058440F551F59F05F3FA9
+:1062800071F04795880F97FB991F61F09F3F79F058
+:1062900087950895121613061406551FF2CF4695DA
+:1062A000F1DF08C0161617061806991FF1CF86955C
+:1062B0007105610508940895E894BB276627772740
+:1062C000CB0197F908957CDF08F48FEF08950BD088
+:1062D000C0CFB1DF28F0B6DF18F0952309F094CFD6
+:1062E000A7CF1124EACFC6DFA0F3959FD1F3950F76
+:1062F00050E0551F629FF001729FBB27F00DB11D4A
+:10630000639FAA27F00DB11DAA1F649F6627B00DD9
+:10631000A11D661F829F2227B00DA11D621F739FC2
+:10632000B00DA11D621F839FA00D611D221F749FD0
+:106330003327A00D611D231F849F600D211D822F17
+:10634000762F6A2F11249F5750408AF0E1F088235E
+:106350004AF0EE0FFF1FBB1F661F771F881F91506B
+:106360005040A9F79E3F510570F04ECFA6CF5F3F3A
+:10637000ECF3983EDCF3869577956795B795F7959E
+:10638000E7959F5FC1F7FE2B880F911D9695879526
+:1063900097F90895FA01EE0FFF1F30962105310598
+:1063A00099F16115710561F48038BFE39B0749F1EC
+:1063B00068949038810561F08038BFEF9B0741F009
+:1063C000992342F5FF3FE1053105210511F1E894DC
+:1063D0000894E795D901AA2329F4AB2FBE2FF85FC3
+:1063E000D0F310C0FF5F70F4A695E0F7F73950F0D6
+:1063F00019F0FF3A38F49F779F930CD00F9007FC69
+:10640000905808953EF014CF60E070E080E89FE37C
+:1064100008954FE79F775F934F933F932F939ED0BD
+:106420002F913F914F915F9152DF05C019F40EF00B
+:10643000EBCE42CFFDCE26DFC8F39638C0F707F883
+:106440000F92E8942BE33AEA48EB5FE74EDF0F92B6
+:106450000F920F924DB75EB70F92C0D0ECEBF1E008
+:1064600016D04F915F91EF91FF91E595EE1FFF1FC1
+:1064700049F0FE57E0684427EE0F441FFA95E1F714
+:106480004195550B32D00F9007FE26C00895DF933B
+:10649000CF931F930F93FF92EF92DF927B018C01BA
+:1064A000689405C0DA2EEF011EDFFE01E894A59185
+:1064B0002591359145915591AEF3EF0106DDFE0131
+:1064C0009701A801DA9479F7DF90EF90FF900F9190
+:1064D0001F91CF91DF9108959B01AC0160E070E0C6
+:1064E00080E89FE349CD90CE95CECCDEE8F39923AA
+:1064F000D9F3940F511DBBF39150504094F059F0D3
+:10650000882332F0660F771F881F91505040C1F7E3
+:106510009E3F510544F7880F911D9695879597F9F1
+:1065200008955F3FACF0983E9CF0BB278695779529
+:106530006795B79508F4B1609395C1F7BB0F58F70D
+:1065400011F460FFE8CF6F5F7F4F8F4F9F4FE3CF16
+:10655000B4CE0EF05FCE6CCE689456CE93DEC8F308
+:106560009923D1F3C6F3DF93CF931F930F93FF9239
+:10657000C92FDD2788232AF02197660F771F881FF0
+:10658000DAF720E030E040E85FEB9FE3883920F065
+:10659000803E30F021968F7787DCE4EEF1E003C097
+:1065A00083DCE1E1F2E073DF8B01BE01EC01FB2E45
+:1065B0006F5771097595771F880B990B78DD28E166
+:1065C00032E741E35FE38FDEAF2D9801AE01FF902C
+:1065D0000F911F91CF91DF9178DC3BCEFA01DC0166
+:1065E000AA0FBB1F9B01AC01BF5728F422273327FA
+:1065F000442750781FC0B75188F4AB2F002446952C
+:1066000037952795011CA395D2F3002069F0220F3E
+:10661000331F441FB395DAF30DD045CC61307105BB
+:10662000A0E88A07B94630F49B01AC0166277727BA
+:1066300088279078309621F02083318342835383DA
+:106640000895AA1BBB1B51E107C0AA1FBB1FA617B9
+:10665000B70710F0A61BB70B881F991F5A95A9F70B
+:1066600080959095BC01CD01089597FB072E16F4F7
+:10667000009407D077FD09D00E94213307FC05D094
+:106680003EF4909581959F4F0895709561957F4F49
+:106690000895EE0FFF1F0590F491E02D0994F999EC
+:1066A000FECF92BD81BDF89A992780B50895A8E1E3
+:1066B000B0E042E050E00C947733262FF999FECFFA
+:1066C00092BD81BDF89A019700B4021639F01FBA45
+:1066D00020BD0FB6F894FA9AF99A0FBE0895019664
+:1066E000272F0E945E330C945D33DC01CB01FC014B
+:1066F000F999FECF06C0F2BDE1BDF89A319600B41B
+:0E6700000D9241505040B8F70895F894FFCF25
+:10670E00A4D0A443000000417BD49243000000417A
+:10671E007BD4924300000041A4D0A443000000416A
+:10672E00A4D02444000000411FD5124400000041B3
+:10673E001FD5124400000041A4D0244400000041A3
+:10674E00A4F076430000004100005C4300000041CD
+:10675E0000005C4300000041A4F0764300000041BD
+:10676E0000005C440000004148F176440000004106
+:10677E005C978A44000000411FD5924400000041FE
+:10678E0052D0A444000000415CFFB8440000004118
+:10679E000AA7CF44000000410000DC440000004185
+:1067AE00A4D082430000C0417BD49243000000413C
+:1067BE00A4D0A4430000C041A4D0824300000041F5
+:1067CE00A4D0A44300008041A4D0824300008041A5
+:1067DE00A4D0A443000080411FD512440000804184
+:1067EE00A4D024440000804100D002440000804127
+:1067FE00A4D08243000080410000C44300008041C9
+:10680E000AA7CF44000000410000DC440000004114
+:10681E00000000000000804052D02445000040419E
+:10682E0000000000000080400AA74F4500004041D4
+:10683E000AA7CF44000000410000DC4400000041E4
+:10684E00000000000000804052D0244500000041AE
+:10685E0000000000000080405CFF38450000004151
+:10686E00000000000000804052D02445000000418E
+:10687E000AA7CF44000000410000DC4400000041A4
+:10688E00000000000000804052D0244500008041EE
+:10689E00A4F0F6430000C0417BD4924300000041B7
+:1068AE0048F176440000804100005C440000004244
+:1068BE005CFF434400008041A4F0F6430000C04159
+:1068CE001FD51244000000415CFF4344000080418C
+:1068DE005CFF384400000042A4D0A4430000804175
+:1068EE00A4D0A44300008041719DAE4300008041BE
+:1068FE000000C443000080410000C44300008041FA
+:10690E00719DAE4300008041A4D0A443000080419D
+:10691E007BD4924300008041A4D08243000080418A
+:10692E00A4D08243000080417BD49243000080417A
+:10693E00A4D0A44300008041A4D0A4430000C041D1
+:10694E007BD49243000000417BD49243000000426E
+:10695E00640007000CFF0000003F646715F515D2B8
+:10696E00159E156A1501013A052808140A321E00F3
+:10697E0002040507090B0C0E1011131517181A1C1B
+:10698E001D1F2123242628292B2D2F303234353755
+:10699E00393B1F0F03764F5F6F7F49694379392962
+:1069AE001909595363333149803F5D8B803FF8BFDE
+:1069BE00803FCAE1803F73ED803FCAE1803FF8BF60
+:1069CE00803F5D8B803F3149803F0000803FF16DFD
+:1069DE007F3F75EA7E3F4C827E3F833F7E3F842819
+:1069EE007E3F833F7E3F4C827E3F75EA7E3FF16D58
+:1069FE007F3F0000803F3F4D3639C7087A08440874
+:106A0E000B089E07B707D007E90701020304050626
+:046A1E00070809005C
+:00000001FF
diff --git a/keyboards/atomic/keymaps/pvc/config.h b/keyboards/atomic/keymaps/pvc/config.h new file mode 100644 index 000000000..1473aac34 --- /dev/null +++ b/keyboards/atomic/keymaps/pvc/config.h @@ -0,0 +1,166 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0419 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Atomic Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D5, B5, B6, B3 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +// Enable Keyboard Locking via magic key +#define KEYBOARD_LOCK_ENABLE + + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + + +//#define VIBRATO_ENABLE +//#define VIBRATO_STRENGTH_ENABLE + +#endif diff --git a/keyboards/atomic/keymaps/pvc/keymap.c b/keyboards/atomic/keymaps/pvc/keymap.c new file mode 100644 index 000000000..f16ec8a6e --- /dev/null +++ b/keyboards/atomic/keymaps/pvc/keymap.c @@ -0,0 +1,578 @@ +#include "atomic.h" +#include "action_layer.h" +#include "eeconfig.h" +#include "led.h" + +#ifdef AUDIO_ENABLE + #include "audio.h" + #include "song_list.h" +#endif + +#define LAYER_QWERTY 0 +#define LAYER_COLEMAK 1 +#define LAYER_DVORAK 2 +#define LAYER_UPPER 3 +#define LAYER_LOWER 4 +#define LAYER_FUNCTION 5 +#define LAYER_MOUSE 6 +#define LAYER_ADJUST 7 + +#define MACRO_QWERTY 0 +#define MACRO_COLEMAK 1 +#define MACRO_DVORAK 2 +#define MACRO_UPPER 3 +#define MACRO_LOWER 4 +#define MACRO_FUNCTION 5 +#define MACRO_MOUSE 6 +#define MACRO_TIMBRE_1 7 +#define MACRO_TIMBRE_2 8 +#define MACRO_TIMBRE_3 9 +#define MACRO_TIMBRE_4 10 +#define MACRO_TEMPO_U 11 +#define MACRO_TEMPO_D 12 +#define MACRO_TONE_DEFAULT 13 +#define MACRO_MUSIC_TOGGLE 14 +#define MACRO_AUDIO_TOGGLE 16 +#define MACRO_INC_VOICE 18 +#define MACRO_DEC_VOICE 19 +#define MACRO_BACKLIGHT 20 +#define MACRO_BREATH_TOGGLE 21 +#define MACRO_BREATH_SPEED_INC 23 +#define MACRO_BREATH_SPEED_DEC 24 +#define MACRO_BREATH_DEFAULT 25 + +#define M_QWRTY M(MACRO_QWERTY) +#define M_COLMK M(MACRO_COLEMAK) +#define M_DVORK M(MACRO_DVORAK) +#define M_UPPER M(MACRO_UPPER) +#define M_LOWER M(MACRO_LOWER) +#define M_FUNCT M(MACRO_FUNCTION) +#define M_MOUSE M(MACRO_MOUSE) +#define TIMBR_1 M(MACRO_TIMBRE_1) +#define TIMBR_2 M(MACRO_TIMBRE_2) +#define TIMBR_3 M(MACRO_TIMBRE_3) +#define TIMBR_4 M(MACRO_TIMBRE_4) +#define TMPO_UP M(MACRO_TEMPO_U) +#define TMPO_DN M(MACRO_TEMPO_D) +#define TMPO_DF M(MACRO_TONE_DEFAULT) +#define M_BACKL M(MACRO_BACKLIGHT) +#define M_BRTOG M(MACRO_BREATH_TOGGLE) +#define M_BSPDU M(MACRO_BREATH_SPEED_INC) +#define M_BSPDD M(MACRO_BREATH_SPEED_DEC) +#define M_BDFLT M(MACRO_BREATH_DEFAULT) + + +#define VC_UP M(MACRO_INC_VOICE) +#define VC_DOWN M(MACRO_DEC_VOICE) + + +#define SC_UNDO LCTL(KC_Z) +#define SC_REDO LCTL(KC_Y) +#define SC_CUT LCTL(KC_X) +#define SC_COPY LCTL(KC_C) +#define SC_PSTE LCTL(KC_V) +#define SC_SELA LCTL(KC_A) +#define SC_SAVE LCTL(KC_S) +#define SC_OPEN LCTL(KC_O) +#define SC_ACLS LALT(KC_F4) +#define SC_CCLS LCTL(KC_F4) + +#define OS_SHFT KC_FN0 + +#define _______ KC_TRNS +#define XXXXXXX KC_NO +#define ________________ _______, _______ +#define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_QWERTY] = { // QWERTY + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + }, + + /* COLEMAK + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_COLEMAK] = { // COLEMAK + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, +}, + +/* DVORAK + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAPS | A | O | E | U | I | D | H | T | N | S | - | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_DVORAK] = { // DVORAK + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC }, + { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL }, + { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* UPPER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | / | * | | NUM LK | SCR LK | XXXXXX . PAUSE | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | - | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | | XXXXXX . | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | 0 | | RALT | . | ENTER | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_UPPER] = { // UPPER + { KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS }, + { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME }, + { _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }, + }, + +/* LOWER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | ^ | * | + | - | ; | : | _ | ' | " | ` | | XXXXXX . | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | | & | ! | ~ | / | \ | = | < | > | ? | XXXXXX . | | END | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_LOWER] = { // LOWER + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, + { _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS }, + { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SCLN, KC_COLN, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME }, + { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SLSH, KC_BSLS, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + + [LAYER_FUNCTION] = { // FUNCTION + { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, + { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, KC_PAUS }, + { KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_PSCR }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_VOLU, KC_MUTE }, + { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT }, + }, + +#ifdef MOUSEKEY_ENABLE + + [LAYER_MOUSE] = { // MOUSE + { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U }, + { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, + +#endif + + [LAYER_ADJUST] = { // ADJUST + { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MU_TOG, AU_TOG, ________________ }, + { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, + { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, MUV_IN, _______ }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, MUV_DE, _______ }, + }, + + +/* + [LAYER_EMPTY] = { // LAYER + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, _______ }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, +*/ + +}; + +#ifdef AUDIO_ENABLE + +float tone_my_startup[][2] = SONG(ODE_TO_JOY); +float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY); + +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); + +float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE); +float tone_music_on[][2] = SONG(DOE_A_DEER); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND); +float tone_caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND); +float tone_numlk_on[][2] = SONG(NUM_LOCK_ON_SOUND); +float tone_numlk_off[][2] = SONG(NUM_LOCK_OFF_SOUND); +float tone_scroll_on[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND); + +#endif /* AUDIO_ENABLE */ + +void persistant_default_layer_set(uint16_t default_layer) +{ + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_ONESHOT(MOD_LSFT), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + + // MACRODOWN only works in this function + switch(id) + { + + case MACRO_BREATH_TOGGLE: + if (record->event.pressed) + { + breathing_toggle(); + } + break; + + case MACRO_BREATH_SPEED_INC: + if (record->event.pressed) + { + breathing_speed_inc(1); + } + break; + + case MACRO_BREATH_SPEED_DEC: + if (record->event.pressed) + { + breathing_speed_dec(1); + } + break; + + case MACRO_BREATH_DEFAULT: + if (record->event.pressed) + { + breathing_defaults(); + } + break; + + case MACRO_QWERTY: + if (record->event.pressed) + { + persistant_default_layer_set(1UL<<LAYER_QWERTY); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO); + #endif /* AUDIO_ENABLE */ + } + break; + + case MACRO_COLEMAK: + if (record->event.pressed) + { + persistant_default_layer_set(1UL<<LAYER_COLEMAK); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO); + #endif /* AUDIO_ENABLE */ + } + break; + + case MACRO_DVORAK: + if (record->event.pressed) + { + persistant_default_layer_set(1UL<<LAYER_DVORAK); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO); + #endif /* AUDIO_ENABLE */ + } + break; + + case MACRO_UPPER: + if (record->event.pressed) + { + layer_on(LAYER_UPPER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + else + { + layer_off(LAYER_UPPER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + break; + + case MACRO_LOWER: + if (record->event.pressed) + { + layer_on(LAYER_LOWER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + else + { + layer_off(LAYER_LOWER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + break; + + case MACRO_FUNCTION: + if (record->event.pressed) + { + breathing_speed_set(3); + breathing_enable(); + layer_on(LAYER_FUNCTION); + } + else + { + breathing_speed_set(1); + breathing_self_disable(); + layer_off(LAYER_FUNCTION); + } + break; + +#ifdef MOUSEKEY_ENABLE + + case MACRO_MOUSE: + if (record->event.pressed) + { + layer_invert(LAYER_MOUSE); + } + break; + +#endif /* MOUSEKEY_ENABLE */ + +#ifdef AUDIO_ENABLE + + case MACRO_TIMBRE_1: + if (record->event.pressed) set_timbre(TIMBRE_12); + break; + + case MACRO_TIMBRE_2: + if (record->event.pressed) set_timbre(TIMBRE_25); + break; + + case MACRO_TIMBRE_3: + if (record->event.pressed) set_timbre(TIMBRE_50); + break; + + case MACRO_TIMBRE_4: + if (record->event.pressed) set_timbre(TIMBRE_75); + break; + + case MACRO_TEMPO_U: + if (record->event.pressed) increase_tempo(10); + break; + + case MACRO_TEMPO_D: + if (record->event.pressed) decrease_tempo(10); + break; + + case MACRO_TONE_DEFAULT: + if (record->event.pressed) + { + set_timbre(TIMBRE_DEFAULT); + set_tempo(TEMPO_DEFAULT); + } + break; + +/* + case MACRO_AUDIO_TOGGLE: + if (record->event.pressed) + { + if (is_audio_on()) + { + audio_off(); + } + else + { + audio_on(); + PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); + } + } + break; + + case MACRO_MUSIC_TOGGLE: + if (record->event.pressed) + { + if (IS_LAYER_ON(LAYER_MUSIC)) + { + layer_off(LAYER_MUSIC); + stop_all_notes(); + } + else + { + PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); + layer_on(LAYER_MUSIC); + } + } + break; + case MACRO_INC_VOICE: + if (record->event.pressed) + { + #ifdef AUDIO_ENABLE + voice_iterate(); + PLAY_NOTE_ARRAY(music_scale, false, STACCATO); + #endif + } + break; + + case MACRO_DEC_VOICE: + if (record->event.pressed) + { + #ifdef AUDIO_ENABLE + voice_deiterate(); + PLAY_NOTE_ARRAY(music_scale, false, STACCATO); + #endif + } + break; +*/ + +#endif /* AUDIO_ENABLE */ + +#ifdef BACKLIGHT_ENABLE + case MACRO_BACKLIGHT: + if (record->event.pressed) + { + backlight_step(); + } +#endif + + default: + break; + + } + return MACRO_NONE; +}; + + +#ifdef AUDIO_ENABLE + +void matrix_init_user(void) +{ + set_voice(default_voice); + startup_user(); + println("Matrix Init"); +} + +void led_set_user(uint8_t usb_led) +{ + static uint8_t old_usb_led = 0; + + _delay_ms(10); // gets rid of tick + + if (!is_playing_notes()) + { + if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) + { + // If CAPS LK LED is turning on... + PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO); + } + else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) + { + // If CAPS LK LED is turning off... + PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO); + } + else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK))) + { + // If NUM LK LED is turning on... + PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO); + } + else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK))) + { + // If NUM LED is turning off... + PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO); + } + else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK))) + { + // If SCROLL LK LED is turning on... + PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO); + } + else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK))) + { + // If SCROLL LED is turning off... + PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO); + } + } + + old_usb_led = usb_led; +} + + +void startup_user() +{ + _delay_ms(10); // gets rid of tick + PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); + _delay_ms(2000); + stop_all_notes(); +} + +void audio_on_user(void) +{ + PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); +} + +void music_on_user(void) +{ + PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, STACCATO); +} + +#endif /* AUDIO_ENABLE */
\ No newline at end of file |