fc660c: Add unimap
authortmk <hasu@tmk-kbd.com>
Tue, 4 Apr 2017 00:58:56 +0000 (09:58 +0900)
committertmk <hasu@tmk-kbd.com>
Wed, 5 Apr 2017 04:25:00 +0000 (13:25 +0900)
keyboard/fc660c/Makefile
keyboard/fc660c/README.md
keyboard/fc660c/actionmap.c [deleted file]
keyboard/fc660c/binary/fc660c_unimap.hex [new file with mode: 0644]
keyboard/fc660c/fc660c.c
keyboard/fc660c/fc660c.h
keyboard/fc660c/unimap.c [new file with mode: 0644]

index 7476d0f788d7c084a37d28ae6a18f28dc2de4a96..567a5df953229680ffd097b9e3f9e0720a4759eb 100644 (file)
@@ -73,9 +73,9 @@ EXTRAKEY_ENABLE ?= yes                # Audio control and System control
 CONSOLE_ENABLE ?= yes          # Console for debug
 COMMAND_ENABLE ?= yes          # Commands for debug and configuration
 NKRO_ENABLE ?= yes             # USB Nkey Rollover
-#UNIMAP_ENABLE ?= yes          # Universal keymap
-ACTIONMAP_ENABLE ?= yes                # Use 16bit actionmap instead of 8bit keymap
-#KEYMAP_SECTION_ENABLE ?= yes  # fixed address keymap for keymap editor
+#ACTIONMAP_ENABLE ?= yes               # Use 16bit actionmap instead of 8bit keymap
+UNIMAP_ENABLE ?= yes           # Universal keymap
+KEYMAP_SECTION_ENABLE ?= yes   # fixed address keymap for keymap editor
 
 #OPT_DEFS += -DNO_ACTION_TAPPING
 #OPT_DEFS += -DNO_ACTION_LAYER
@@ -87,6 +87,7 @@ ACTIONMAP_ENABLE ?= yes               # Use 16bit actionmap instead of 8bit keymap
 #
 ifeq (yes,$(strip $(UNIMAP_ENABLE)))
     KEYMAP_FILE = unimap
+    TARGET := $(TARGET)_unimap
 else
     ifeq (yes,$(strip $(ACTIONMAP_ENABLE)))
         KEYMAP_FILE = actionmap
index ac46e64a23ac5849e4e25e60683c0019c6849687..3ceafee58d78fcf6fa1f22df133f2c6560800eb0 100644 (file)
@@ -65,7 +65,7 @@ Row5-7 have no key, you can omit scaning on those lines. Topre original controll
     |   7|    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
 
 Logic analyzer pics:
-- https://i.imgur.com/9SZUzYo.jpg
+- http://i.imgur.com/9XoNTev.png
 - https://i.imgur.com/5FCP1Ay.png
 
 This code emuluates what original cotnroller does for matrix scan.
@@ -129,11 +129,15 @@ Datasheets
 
 3.3V power supply
 -----------------
-LV07A and LVC138A are 5V-tolerant and can be powered with 5V, the keyboard will work only with 5V power supply.
-It may not be completely safe to operate LV138A with 5V Vcc, its datasheet says:
+LV07A and LVC138A are 5V-tolerant and can be powered with 5V, the keyboard will work only with 5V power supply. It may not be completely safe to operate LV138A with 5V Vcc, its datasheet says:
 
 > Exposure to absolute-maximum-rated conditions for extended periods may affect device reliability.
 
+Digipot AD5258
+--------------
+Controller can operate AD5258 via I2C to change actuation point of keys. This may make keyboard unusable accidentally and it will be difficult to recovery in some situation. For safety firmware doesn't support it at this point, though.
+
+Lower value of RDAC register causes shallower actuation point.
 
 Resources
 ---------
diff --git a/keyboard/fc660c/actionmap.c b/keyboard/fc660c/actionmap.c
deleted file mode 100644 (file)
index a8320aa..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "action.h"
-#include "actionmap.h"
-#include "hook.h"
-
-
-#define AMAP( \
-    K13, K10, K11, K12, K14, K16, K17, K15, K1B, K18, K19, K1A, K1C, K1E,      K1F, \
-    K03, K00, K01, K02, K04, K06, K07, K05, K0B, K08, K09, K0A, K0C, K0E,      K0F, \
-    K43, K40, K41, K42, K44, K46, K47, K45, K4B, K48, K49, K4A,      K4E,           \
-    K33, K31, K32, K34, K36, K37, K35, K3B, K38, K39, K3A,           K3C, K3D,      \
-    K23, K21, K22,                K27,      K28, K2A, K2C,           K2E, K2D, K2F  \
-) { \
-    { AC_##K00, AC_##K01, AC_##K02, AC_##K03, AC_##K04, AC_##K05, AC_##K06, AC_##K07,   \
-      AC_##K08, AC_##K09, AC_##K0A, AC_##K0B, AC_##K0C, AC_NO,    AC_##K0E, AC_##K0F }, \
-    { AC_##K10, AC_##K11, AC_##K12, AC_##K13, AC_##K14, AC_##K15, AC_##K16, AC_##K17,   \
-      AC_##K18, AC_##K19, AC_##K1A, AC_##K1B, AC_##K1C, AC_NO,    AC_##K1E, AC_##K1F }, \
-    { AC_NO,    AC_##K21, AC_##K22, AC_##K23, AC_NO,    AC_NO,    AC_NO,    AC_##K27,   \
-      AC_##K28, AC_NO,    AC_##K2A, AC_NO,    AC_##K2C, AC_##K2D, AC_##K2E, AC_##K2F }, \
-    { AC_NO,    AC_##K31, AC_##K32, AC_##K33, AC_##K34, AC_##K35, AC_##K36, AC_##K37,   \
-      AC_##K38, AC_##K39, AC_##K3A, AC_##K3B, AC_##K3C, AC_##K3D, AC_NO,    AC_NO    }, \
-    { AC_##K40, AC_##K41, AC_##K42, AC_##K43, AC_##K44, AC_##K45, AC_##K46, AC_##K47,   \
-      AC_##K48, AC_##K49, AC_##K4A, AC_##K4B, AC_NO,    AC_NO,    AC_##K4E, AC_NO    }, \
-    { AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,      \
-      AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO    }, \
-    { AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,      \
-      AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO    }, \
-    { AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,      \
-      AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO    }  \
-}
-
-
-#define AC_L3       ACTION_LAYER_MOMENTARY(3)
-#define AC_L4       ACTION_LAYER_MOMENTARY(4)
-#define AC_LS_2     ACTION_LAYER_MODS(2, MOD_LSFT)
-#define AC_RS_2     ACTION_LAYER_MODS(2, MOD_RSFT)
-#define AC_TGL1     ACTION_LAYER_TOGGLE(1)
-
-// emulates FC660C default keymap
-const action_t actionmaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-    [0] = AMAP( \
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS,  \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,     DEL,  \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,            \
-        LS_2,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RS_2,UP,        \
-        LCTL,LGUI,LALT,          SPC,           RALT,RCTL,L3,            LEFT,DOWN,RGHT  \
-    ),
-    [1] = AMAP( \
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS,  \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,     DEL,  \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,            \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT,UP,        \
-        LCTL,LGUI,LALT,          SPC,           RALT,RCTL,L4,            LEFT,DOWN,RGHT  \
-    ),
-    [2] = AMAP( \
-        GRV, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS,           \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS,TRNS,      \
-        TRNS,TRNS,TRNS,          TRNS,          TRNS,TRNS,TRNS,          TRNS,TRNS,TRNS  \
-    ),
-    [3] = AMAP( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,     TRNS, \
-        CAPS,TGL1,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,TRNS,TRNS,     TRNS,           \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,TRNS,          TRNS,PGUP,      \
-        TRNS,TRNS,TRNS,          TRNS,          TRNS,APP, L3,            HOME,PGDN,END   \
-    ),
-    [4] = AMAP( \
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,     TRNS, \
-        CAPS,TGL1,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,TRNS,TRNS,     TRNS,           \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,TRNS,          TRNS,PGUP,      \
-        TRNS,TRNS,TRNS,          TRNS,          TRNS,APP, L4,            HOME,PGDN,END   \
-    ),
-};
-
-
-void hook_layer_change(uint32_t layer_state)
-{
-    // lights LED on Insert when layer 1 is enabled
-    if (layer_state & (1L<<1)) {
-        PORTB &= ~(1<<5);
-    } else {
-        PORTB |=  (1<<5);
-    }
-} 
diff --git a/keyboard/fc660c/binary/fc660c_unimap.hex b/keyboard/fc660c/binary/fc660c_unimap.hex
new file mode 100644 (file)
index 0000000..969f6f0
--- /dev/null
@@ -0,0 +1,1272 @@
+:100000000C9443050C948A050C948A050C948A057B\r
+:100010000C948A050C948A050C948A050C948A0524\r
+:100020000C948A050C948A050C94A90C0C947B0DF5\r
+:100030000C94161C0C948A050C948A050C948A0561\r
+:100040000C948A050C948A050C948A050C948A05F4\r
+:100050000C948A050C948A1C0C948A050C948A05CD\r
+:100060000C948A050C948A050C948A050C948A05D4\r
+:100070000C948A050C948A050C948A050C948A05C4\r
+:100080000C948A050C948A050C948A050C948A05B4\r
+:100090000C948A050C948A050C948A050C948A05A4\r
+:1000A0000C948A050C948A050C948A05E80D0A0EB6\r
+:1000B000F80E0A0EF80E4F0E720EF80EC70EDA0E7C\r
+:1000C00005120512331233129012CE12E714E71400\r
+:1000D000E712E714E813E813BB14E714E714D2148B\r
+:1000E000141A082B1518171C12132F0C3080314CC2\r
+:1000F0001E1F20352124222326272D252E802A4924\r
+:10010000807B7A788080802C7E807C807F51504FED\r
+:10011000801D1B7906111905363738107D528080F5\r
+:1001200004160739090D0A0B0F33340E808028801E\r
+:1001300080808080808080808080808080808080BF\r
+:1001400080808080808080808080808080808080AF\r
+:10015000808080808080808080808080808080809F\r
+:100160004B6579626F6172642073746172742E0AD8\r
+:100170000055534220636F6E666967757265642E21\r
+:100180000A000D0A696E69740A005B445D005B43F6\r
+:100190005D002C034600430036003600300043006B\r
+:1001A000200041006C007400200043006F006E00CE\r
+:1001B000740072006F006C006C006500720000003B\r
+:1001C0000A0354004D004B002E00000004030904F4\r
+:1001D00009028D00050100A032090400000103019D\r
+:1001E00001000921110100012240000705810308D7\r
+:1001F000000A0904010001030102000921110100A4\r
+:1002000001224D000705820308000A0904020001CB\r
+:1002100003000000092111010001223600070583B7\r
+:100220000308000A09040300020300000009211169\r
+:1002300001000122220007058403200001070504B4\r
+:10024000032000010904040001030000000921113A\r
+:100250000100012239000705850320000112011069\r
+:100260000100000008EDFE0C66000101020001051E\r
+:10027000010906A101050719E029E71500250195E7\r
+:100280000875018102050819012905950575019177\r
+:10029000029501750391010507190029F71500253D\r
+:1002A0000195F875018102C00631FF0974A10109A9\r
+:1002B00075150026FF009520750881020976150046\r
+:1002C00026FF00952075089102C005010980A10153\r
+:1002D000850216810026B7001A81002AB700751022\r
+:1002E00095018100C0050C0901A1018503160100DB\r
+:1002F000269C021A01002A9C02751095018100C0FB\r
+:1003000005010902A1010901A10005091901290539\r
+:10031000150025019505750181029501750381017F\r
+:100320000501093009311581257F9502750881067F\r
+:1003300009381581257F950175088106050C0A3855\r
+:10034000021581257F950175088106C0C005010948\r
+:1003500006A101050719E029E71500250195087593\r
+:10036000018102950175088101050819012905958A\r
+:100370000575019102950175039101050719002981\r
+:10038000FF150026FF00950675088100C0636F6E9B\r
+:1003900073756D65723A20253034580A007379738D\r
+:1003A00074656D3A20253034580A000A0025303231\r
+:1003B0005820006B6579626F6172643A20004C4589\r
+:1003C000443A20253032580A00253032583A202548\r
+:1003D0003031366225730A00722F63203031323398\r
+:1003E0003435363738394142434445460A0064655E\r
+:1003F0006C5F6B65795F6269743A2063616E277424\r
+:100400002064656C3A20253032580A006164645FCC\r
+:100410006B65795F6269743A2063616E277420614D\r
+:1004200064643A20253032580A004F6E6573686F55\r
+:10043000743A2074696D656F75740A00290A002585\r
+:1004400075002F002575005D28002564002000251B\r
+:100450006400200025640020002564007C00253015\r
+:100460003258006D6F7573656B6579205B62746ED1\r
+:100470007C782079207620685D287265702F616312\r
+:100480006C293A205B006D6B5F776865656C5F7403\r
+:10049000696D655F746F5F6D6178203D2025640A2A\r
+:1004A000006D6B5F776865656C5F6D61785F737019\r
+:1004B000656564203D2025640A006D6B5F74696D7D\r
+:1004C000655F746F5F6D6178203D2025640A006D63\r
+:1004D0006B5F6D61785F7370656564203D20256496\r
+:1004E0000A006D6B5F696E74657276616C203D20E9\r
+:1004F00025640A006D6B5F64656C6179203D202581\r
+:10050000640A006D6B5F776865656C5F74696D6523\r
+:100510005F746F5F6D6178203D2025640A006D6B0C\r
+:100520005F776865656C5F6D61785F737065656442\r
+:10053000203D2025640A006D6B5F74696D655F74F2\r
+:100540006F5F6D6178203D2025640A006D6B5F6DE3\r
+:1005500061785F7370656564203D2025640A006DD5\r
+:100560006B5F696E74657276616C203D2025640A4C\r
+:10057000006D6B5F64656C6179203D2025640A0025\r
+:100580000A00257500363A20776865656C5F7469E6\r
+:100590006D655F746F5F6D61783A20000A002575A4\r
+:1005A00000353A20776865656C5F6D61785F7370C0\r
+:1005B0006565643A20000A00257500343A207469A4\r
+:1005C0006D655F746F5F6D61783A20000A00257574\r
+:1005D00000333A206D61785F73706565643A20007E\r
+:1005E0000A00257500323A20696E74657276616C76\r
+:1005F000286D73293A20000A00257500313A2064DD\r
+:10060000656C6179282A31306D73293A20000A0916\r
+:100610002D2056616C756573202D0A004D3E004DEE\r
+:1006200025643E20003F0073657420646566617533\r
+:100630006C740A00433E200077686572652064652B\r
+:100640006C74613A20637572736F723D25642C205F\r
+:10065000776865656C3D25640A5365652068747428\r
+:10066000703A2F2F656E2E77696B697065646961CA\r
+:100670002E6F72672F77696B692F4D6F7573655F8A\r
+:100680006B6579730A000A092D204D6F7573656BD0\r
+:100690006579202D0A4553432F713A0971756974A4\r
+:1006A0000A313A0964656C6179282A31306D732901\r
+:1006B0000A323A09696E74657276616C286D732925\r
+:1006C0000A333A096D61785F73706565640A343A7C\r
+:1006D0000974696D655F746F5F6D61780A353A09F9\r
+:1006E000776865656C5F6D61785F73706565640AD6\r
+:1006F000363A09776865656C5F74696D655F746F1C\r
+:100700005F6D61780A0A703A097072696E742076BA\r
+:10071000616C7565730A643A097365742064656673\r
+:1007200061756C74730A75703A092B310A646F77BE\r
+:100730006E3A092D310A706775703A092B31300A0B\r
+:100740007067646F776E3A092D31300A0A737065ED\r
+:100750006564203D2064656C7461202A206D617899\r
+:100760005F7370656564202A202872657065617406\r
+:10077000202F2074696D655F746F5F6D6178290A41\r
+:10078000003F004D3E2000433E20004C25640A00FF\r
+:100790000A092D20436F6E736F6C65202D0A455337\r
+:1007A000432F713A09717569740A6D3A096D6F7555\r
+:1007B00073656B65790A000A092D204D61676963CD\r
+:1007C000202D0A643A0964656275670A783A0964FB\r
+:1007D00065627567206D61747269780A6B3A0964A5\r
+:1007E00065627567206B6579626F6172640A6D3A44\r
+:1007F000096465627567206D6F7573650A763A09DD\r
+:1008000076657273696F6E0A733A097374617475F1\r
+:10081000730A633A09636F6E736F6C65206D6F6462\r
+:10082000650A302D343A096C61796572302D3428AF\r
+:100830004631302D4634290A506175733A09626F8A\r
+:100840006F746C6F616465720A6E3A094E4B524F59\r
+:100850000A003F004E4B524F3A206F66660A004E28\r
+:100860004B524F3A206F6E0A0074696D65725F7269\r
+:10087000656164333228293A202530346C580A00E7\r
+:100880006B6579626F6172645F6E6B726F3A20257F\r
+:10089000580A006B6579626F6172645F69646C65A8\r
+:1008A0003A2025580A006B6579626F6172645F7047\r
+:1008B000726F746F636F6C3A2025580A00686F730B\r
+:1008C000745F6B6579626F6172645F6C65647328D5\r
+:1008D000293A2025580A000A092D2053746174759D\r
+:1008E00073202D0A004743433A20342E392E3220FC\r
+:1008F0004156522D4C4942433A20312E382E307306\r
+:10090000766E204156525F415243483A20617672DA\r
+:10091000350A004F5054494F4E533A204C554641EA\r
+:10092000204D4F5553454B45592045585452414B46\r
+:10093000455920434F4E534F4C4520434F4D4D4159\r
+:100940004E44204E4B524F204B45594D41505F5322\r
+:10095000454354494F4E20343039360A00425549F8\r
+:100960004C443A20383962663362622D646972748D\r
+:1009700079202831383A35363A33312041707220A7\r
+:1009800020342032303137290A005649443A203089\r
+:10099000784645454428544D4B2E29205049443A29\r
+:1009A00020307836363043284643363630432041AF\r
+:1009B0006C7420436F6E74726F6C6C657229205674\r
+:1009C00045523A203078303130300A0044455343A4\r
+:1009D0003A20544D4B2E206B6579626F6172642012\r
+:1009E0006669726D7761726520666F722046433664\r
+:1009F0003630430A000A092D2056657273696F6EFE\r
+:100A0000202D0A000A6D6F7573653A206F66660ABD\r
+:100A1000000A6D6F7573653A206F6E0A000A6B6588\r
+:100A200079626F6172643A206F66660A000A6B65CC\r
+:100A300079626F6172643A206F6E0A000A6D6174A8\r
+:100A40007269783A206F66660A000A6D617472698D\r
+:100A5000783A206F6E0A000A64656275673A206F03\r
+:100A60006E0A000A64656275673A206F66660A005E\r
+:100A70000A0A626F6F746C6F616465722E2E2E208D\r
+:100A800000433E20000011241FBECFEFDAE0DEBF9E\r
+:100A9000CDBF04B603FE27C08091220290912302AD\r
+:100AA000A0912402B09125028730904BA740B04B13\r
+:100AB000D1F410922202109223021092240210927A\r
+:100AC000250214BE84B7877F84BF0FB6F894A8951B\r
+:100AD00080916000886180936000109260000FBE7A\r
+:100AE000E0E0F8E3099511E0A0E0B1E0EAE2FAE421\r
+:100AF00002C005900D92A833B107D9F722E0A8E310\r
+:100B0000B1E001C01D92A232B207E1F70E94D709FD\r
+:100B10000C9413250C940000FF93EF93E09138019F\r
+:100B2000F0913901309709F00995EF91FF910895FF\r
+:100B3000FC018591803011F0EFDFFBCF0895FF2796\r
+:100B4000E0E230E247FF0CC0419597FF09C0EDE2BB\r
+:100B50006095709580959095611D711D811D911D09\r
+:100B600027FF02C0219530E350E2AA27660F771FC6\r
+:100B7000881F991FAA1FA41710F0A41B63955A95EC\r
+:100B8000A9F7AA3008F0A95FA05DAF93F3956115AE\r
+:100B900071058105910541F7ED3211F4EF93F3955D\r
+:100BA000F21718F43F93F395FBCF8F91B5DFFA95C9\r
+:100BB000E1F70895E991F9918591803021F085322E\r
+:100BC00019F0AADFF9CF089520E0E8945591553245\r
+:100BD000C1F3503311F4689455915A3348F450538B\r
+:100BE00090F3220F022E220F220F200D250FF4CF9B\r
+:100BF0000EF4219589919991533619F3533729F1C0\r
+:100C0000533559F1BC0188279927E8945C3621F4C3\r
+:100C10008991999168945591543639F446EF7EF054\r
+:100C200077FF0DC08FEF9FEF0AC055374AE039F0CC\r
+:100C3000583540E121F0523642E009F00895FF9323\r
+:100C4000EF937DDFEF91FF91B7CFFF93EF93FC011F\r
+:100C500081918030B9F360DFFBCFFF93EF9368DFC2\r
+:100C6000F1CFDF93CF93CDB7DEB72596A3DFCF913A\r
+:100C7000DF91089561FF02C02D9808952D9A08957F\r
+:100C800084B18F6184B93E98469A3F9A8AB1806F49\r
+:100C90008AB95F9A479884B1806684B985B18066C5\r
+:100CA00085B9EAE4F1E01192119281E0EA35F807A2\r
+:100CB000D1F7EAE3F1E01192119281E0EA34F8070A\r
+:100CC000D1F78AE491E090935D0180935C018AE31F\r
+:100CD00091E090935B0180935A010895AF92BF9287\r
+:100CE000DF92EF92FF920F931F93CF93DF93809148\r
+:100CF0005A0190915B0120915C0130915D0130932C\r
+:100D00005B0120935A0190935D0180935C0100E0A8\r
+:100D100010E0C1E0D0E085B1982F907E03FF02C0C3\r
+:100D200020E101C028E0802F8770892B822B85B9B4\r
+:100D3000BE01002E02C0660F771F0A94E2F75B0126\r
+:100D4000A094B09440E050E08BB18F7080689A011D\r
+:100D500094E0220F331F9A95E1F7822B8BB92AE09A\r
+:100D60002A95F1F700C0CA01880F991FA0915A0176\r
+:100D7000B0915B01A80FB91F2D913C912623372319\r
+:100D8000232B09F0479AE5E3EA95F1F70000D6B482\r
+:100D90005F98FAE0FA95F1F700C0A0915C01B0917C\r
+:100DA0005D017D01E80EF91EF701369B05C020812B\r
+:100DB00031812A213B2104C020813181262B372B10\r
+:100DC0003183208326B5ED2CF12C2D1518F026B596\r
+:100DD00030E004C026B530E021503F4F2E193F09C6\r
+:100DE0002630310568F020915A0130915B01280FBF\r
+:100DF000391FF90120813181A80FB91F2D933C9330\r
+:100E0000FAE1FA95F1F700C047985F9A8BE291E01A\r
+:100E10000197F1F700C000004F5F5F4F4830510568\r
+:100E200009F092CFA0915C01B0915D01E0915A016F\r
+:100E3000F0915B0150962D913C9151978089918959\r
+:100E40002817390751F00E94541C60935E0170937B\r
+:100E50005F0180936001909361010F5F1F4F00312C\r
+:100E6000110509F058CF81E0DF91CF911F910F91CB\r
+:100E7000FF90EF90DF90BF90AF90089520915C01BC\r
+:100E800090915D01E22FF92FE80FF11DE80FF11DA0\r
+:100E900080819181089581FF02C02E9808952E9A35\r
+:100EA00008958091860108959FB7F8941092650186\r
+:100EB0009FBF90911902943009F057C09091E900BA\r
+:100EC0009F703091EC00232F217030FD20E8922B91\r
+:100ED00024E02093E9002091EB0020FF43C0209103\r
+:100EE000EE0027FF3FC020916201222321F02091D4\r
+:100EF000E80025FF37C01092620126E03091E8003B\r
+:100F000035FD15C030911902343061F53091EB0098\r
+:100F100035FD28C0215021F481E08093620122C078\r
+:100F2000EFE9FFE03197F1F700C00000E7CF8093D1\r
+:100F3000F1008091E80085FD0AC08091E80080FF03\r
+:100F4000FCCF8091E8008E778093E80006C08FB7D1\r
+:100F5000F89421E0209365018FBF9F709093E90082\r
+:100F600080E008959F709093E9008FEF0895CF93EC\r
+:100F7000DF9300D01F92CDB7DEB79C01809119029C\r
+:100F8000843019F593E099833B832A839093E90099\r
+:100F90008FEF9091E800815095FD06C095ED9A95F0\r
+:100FA000F1F700008111F5CF8091E80085FF0DC0B9\r
+:100FB00040E050E063E070E0CE0101960E94990AA3\r
+:100FC0008091E8008E778093E8000F900F900F904B\r
+:100FD000DF91CF910895CF93DF9300D01F92CDB7CB\r
+:100FE000DEB720911902243021F522E029839B836A\r
+:100FF0008A8383E08093E9008FEF9091E80081502D\r
+:1010000095FD06C095ED9A95F1F700008111F5CF99\r
+:101010008091E80085FF0DC040E050E063E070E0A3\r
+:10102000CE0101960E94990A8091E8008E77809304\r
+:10103000E8000F900F900F90DF91CF9108952091CD\r
+:1010400019022430F1F422E02093E9002FEF3091CF\r
+:10105000E800215035FD06C035ED3A95F1F7000066\r
+:101060002111F5CF2091E80025FF0BC040E050E0B2\r
+:1010700065E070E00E94990A8091E8008E77809385\r
+:10108000E8000895CF93DF9320911902243009F0EE\r
+:1010900048C0EC0180910A018823E1F080910B01A6\r
+:1010A0008823C1F085E08093E9008FEF9091E800FC\r
+:1010B000815095FD06C095E19A95F1F700008111E8\r
+:1010C000F5CF8091E80085FF2CC040E050E060E261\r
+:1010D00070E017C081E08093E9008FEF9091E80005\r
+:1010E000815095FD06C095ED9A95F1F700008111AC\r
+:1010F000F5CF8091E80085FF14C040E050E068E043\r
+:1011000070E0CE010E94990A8091E8008E7780936A\r
+:10111000E80080E2FE01A6E6B1E001900D928A951A\r
+:10112000E1F7DF91CF9108958EE891E00E94980554\r
+:1011300080911802811109C00E942E0C0E948B0C14\r
+:101140008091E20084608093E20008958AE891E053\r
+:101150000E94980510921802089508952091630145\r
+:101160002F5F822F62E30E94D924992319F02093E4\r
+:10117000630108951092630180916501882371F1E4\r
+:1011800080911902843041F58091E9008F7020919F\r
+:10119000EC00922F917020FD90E8892B94E09093C1\r
+:1011A000E9009091EB0090FF14C09091EE0097FF42\r
+:1011B00010C09091E80095FF03C01092F100F9CFA4\r
+:1011C0009091E80090FF05C09091E8009E77909381\r
+:1011D000E8008F708093E90010926501089542E065\r
+:1011E00061EC81E00E94A80B42E061EC82E00E9489\r
+:1011F000A80B42E061EC83E00E94A80B42E261ECA4\r
+:1012000084E00E94A80B42E261EC85E00C94A80BFC\r
+:1012100080911B02833009F455C030F4813071F0A5\r
+:10122000823009F48EC008958A3009F47AC08B3078\r
+:1012300009F460C0893009F09CC020C080911A0276\r
+:10124000813A09F096C08091E800877F8093E8009A\r
+:1012500080911E0290911F02892B21F460E286E6A4\r
+:1012600091E003C060E080E090E070E00E94E40A5A\r
+:101270008091E8008B778093E800089580911A02AE\r
+:10128000813209F076C080911E0290911F02009772\r
+:1012900019F0049709F06DC08091E800877F809372\r
+:1012A000E8008091E80082FD05C08091190281115B\r
+:1012B000F8CF5FC08091F100809386018091E800B3\r
+:1012C0008B7753C080911A02813A09F052C0809105\r
+:1012D0001E0290911F02892B09F04BC08091E800FB\r
+:1012E000877F8093E8008091E80080FFFCCF8091A9\r
+:1012F0000A0136C080911A028132D9F580911E020E\r
+:1013000090911F02892BA9F58091E800877F809337\r
+:10131000E8000E94DD0B80911C0280930A010C946E\r
+:10132000091580911A02813221F58091E800877FAA\r
+:101330008093E8000E94DD0B80911D02809387015D\r
+:10134000089580911A02813AA1F48091E800877F84\r
+:101350008093E8008091E80080FFFCCF80918701B6\r
+:101360008093F1008091E8008E778093E8000C94E0\r
+:10137000DD0B08950895089580918601809364019E\r
+:101380001092860180E00E944B070E94AA100C94E4\r
+:1013900009150C94BC090E94D41B80911702882364\r
+:1013A00029F00E94FD1B81110C94830A089584B7D3\r
+:1013B000877F84BF0FB6F894A895809160008861FC\r
+:1013C00080936000109260000FBE90E080E80FB63E\r
+:1013D000F89480936100909361000FBE84E597E0DC\r
+:1013E0000E948C1B82E891E00E9498050E94BA0935\r
+:1013F0000E94D10F0E942E0C0E948B0C8091E20063\r
+:1014000084608093E2007894809119028430E1F73F\r
+:1014100081E791E00E9498050E94D30F80E091E05F\r
+:101420000E94100F80E691E00E9498050E94BB097F\r
+:1014300080911902853019F40E94CB09F9CF0E94DE\r
+:10144000D70FF6CF0E94121C809164018093860111\r
+:1014500008950C94220A292F332723303105C9F02F\r
+:1014600064F42130310581F02230310509F043C0A8\r
+:101470008DE890E020ED31E042C021323105F1F0FD\r
+:101480002232310541F137C082E190E02DE532E0B2\r
+:1014900036C099278130910541F08230910541F0A5\r
+:1014A000892B49F5ECECF1E005C0E0ECF1E002C07D\r
+:1014B000E2E9F1E0849190E09F0121C06530D8F429\r
+:1014C000E62FF0E0EE0FFF1FED5DFE4F2081318132\r
+:1014D00089E090E014C0653070F470E0FB01EE0F1D\r
+:1014E000FF1FE75EFE4F20813181FB01EC5EFE4F66\r
+:1014F000808190E004C080E090E020E030E0FA01DC\r
+:1015000031832083089580E189BD82E189BD09B4DA\r
+:1015100000FEFDCF8091D8008F7D8093D800809110\r
+:10152000E00082608093E0008091E00081FDFCCFCC\r
+:101530000895CF92DF92EF92FF920F931F93CF9374\r
+:10154000DF93EC018B016A010E94FC0B811133C017\r
+:10155000C114D10439F0F60180819181081B190B67\r
+:10156000C80FD91FE12CF12C0115110519F180913B\r
+:10157000E80085FD16C08091E8008E778093E80032\r
+:10158000C114D10449F0F60180819181E80EF91E61\r
+:10159000F182E08285E00FC00E94FC0B882321F3DA\r
+:1015A0000AC089918093F10001501109FFEFEF1AF1\r
+:1015B000FF0ADACF80E0DF91CF911F910F91FF906A\r
+:1015C000EF90DF90CF90089520912002309121027A\r
+:1015D0002617370748F06115710539F42091E800A6\r
+:1015E0002E772093E80001C0B90140E06115710534\r
+:1015F000A9F120911902222309F443C0253009F4EE\r
+:1016000042C02091E80023FD40C02091E80022FD67\r
+:1016100032C02091E80020FFE9CF4091F3002091F3\r
+:10162000F20030E0342BFC01CF016115710559F057\r
+:101630002830310540F481918093F10061507109A7\r
+:101640002F5F3F4FF1CF41E02830310509F040E0F6\r
+:101650002091E8002E772093E800C8CF4111C9CF30\r
+:101660000AC080911902882361F0853061F0809171\r
+:10167000E80083FD0AC08091E80082FFF2CF80E09D\r
+:10168000089582E0089583E0089581E0089520910F\r
+:101690002002309121022617370748F061157105A5\r
+:1016A00039F42091E8002E772093E80001C0B901B9\r
+:1016B000FC0120E06115710591F1809119028823E8\r
+:1016C00009F440C0853009F43FC08091E80083FDF3\r
+:1016D0003DC08091E80082FD2FC08091E80080FF2E\r
+:1016E000E9CF2091F3008091F20090E0922B6115F8\r
+:1016F000710559F08830910540F424912093F10050\r
+:101700003196615071090196F2CF21E0089709F0F6\r
+:1017100020E08091E8008E778093E800CBCF211104\r
+:10172000CCCF0AC080911902882361F0853061F026\r
+:101730008091E80083FD0AC08091E80082FFF2CF2B\r
+:1017400080E0089582E0089583E0089581E008959F\r
+:10175000982F973058F59093E900981739F07091C9\r
+:10176000EC002091ED005091F00003C0242F762F63\r
+:1017700050E021FF19C03091EB003E7F3093EB0029\r
+:101780003091ED003D7F3093ED003091EB00316002\r
+:101790003093EB007093EC002093ED005093F00039\r
+:1017A0002091EE0027FF07C09F5FD3CF8F708093FB\r
+:1017B000E90081E0089580E0089580911A0287FF92\r
+:1017C00011C08091E80082FD05C08091190281114D\r
+:1017D000F8CF11C08091E8008B770BC0809119027F\r
+:1017E000882349F08091E80080FFF8CF8091E800DD\r
+:1017F0008E778093E80008952091E4003091E50011\r
+:1018000095E64091EC00842F817040FF22C08091CA\r
+:10181000E80080FD1CC080911902882391F085307A\r
+:1018200091F08091EB0085FD10C04091E400509153\r
+:10183000E5004217530729F39A01915011F784E00C\r
+:10184000089582E0089583E0089581E0089580E09E\r
+:1018500008954091E80042FFDECF08950E949C0C5D\r
+:101860000E94A40CE0EEF0E0808181608083E8EDCE\r
+:10187000F0E080818F77808319BCA7EDB0E08C9178\r
+:101880008E7F8C9380818F7E8083109218020895C2\r
+:101890000F931F93CF93DF930E949C0C0E94A40C84\r
+:1018A000C8EDD0E088818F778883888180688883BD\r
+:1018B00088818F7D888319BC1092190210921502BD\r
+:1018C000109217021092160200EE10E0F8018081CB\r
+:1018D0008B7F808388818160888342E060E080E044\r
+:1018E0000E94A80BE1EEF0E080818E7F8083E2EE23\r
+:1018F000F0E0808181608083808188608083F8014E\r
+:1019000080818E7F8083888180618883DF91CF9101\r
+:101910001F910F910895E8EDF0E080818F7E808324\r
+:10192000E7EDF0E080818160808384E082BF81E028\r
+:10193000809318020C94480CE8EDF0E080818E7FD3\r
+:1019400080831092E20008951092DA001092E10074\r
+:1019500008951F920F920FB60F9211242F933F9369\r
+:101960004F935F936F937F938F939F93AF93BF93A7\r
+:10197000EF93FF938091E10082FF0BC08091E20022\r
+:1019800082FF07C08091E1008B7F8093E1000E947D\r
+:10199000AE088091DA0080FF1FC08091D80080FFE0\r
+:1019A0001BC08091DA008E7F8093DA008091D9008D\r
+:1019B00080FF0DC080E189BD82E189BD09B400FED0\r
+:1019C000FDCF81E0809319020E94940805C019BCE4\r
+:1019D000109219020E94A6088091E10080FF19C0B0\r
+:1019E0008091E20080FF15C08091E2008E7F80939D\r
+:1019F000E2008091E20080618093E2008091D80053\r
+:101A000080628093D80019BC85E0809319020E94FF\r
+:101A1000C9098091E10084FF30C08091E20084FF19\r
+:101A20002CC080E189BD82E189BD09B400FEFDCFF3\r
+:101A30008091D8008F7D8093D8008091E1008F7EC7\r
+:101A40008093E1008091E2008F7E8093E20080919C\r
+:101A5000E20081608093E20080911502882311F0FA\r
+:101A600084E007C08091E30087FD02C081E001C0EF\r
+:101A700083E0809319020E94290A8091E10083FF8C\r
+:101A800029C08091E20083FF25C08091E100877F1B\r
+:101A90008093E10082E080931902109215028091F8\r
+:101AA000E1008E7F8093E1008091E2008E7F809341\r
+:101AB000E2008091E20080618093E20042E060E019\r
+:101AC00080E00E94A80B8091F00088608093F00075\r
+:101AD0000E94AD08FF91EF91BF91AF919F918F91BF\r
+:101AE0007F916F915F914F913F912F910F900FBE1A\r
+:101AF0000F901F9018951F920F920FB60F921124FE\r
+:101B00002F933F934F935F936F937F938F939F9305\r
+:101B1000AF93BF93CF93DF93EF93FF93C091E9000F\r
+:101B2000CF708091EC00D82FD17080FDD0E810925A\r
+:101B3000E9008091F000877F8093F00078940E9404\r
+:101B4000BF0D1092E9008091F00088608093F00052\r
+:101B5000CD2BCF70C093E900FF91EF91DF91CF9132\r
+:101B6000BF91AF919F918F917F916F915F914F91B5\r
+:101B70003F912F910F900FBE0F901F9018951F93BC\r
+:101B8000CF93DF93CDB7DEB7AA970FB6F894DEBF39\r
+:101B90000FBECDBFEAE1F2E088E08E0F9091F10038\r
+:101BA00091938E13FBCF0E9408098091E80083FF78\r
+:101BB0001FC180911A0290911B02492F50E04A30B8\r
+:101BC000510508F015C1FA01EA5AFF4F0C94F924A7\r
+:101BD000803881F0823809F00BC180911E028F702D\r
+:101BE0008093E9008091EB0085FB882780F91092B3\r
+:101BF000E90006C08091160290911702911182604F\r
+:101C00009091E800977F9093E8008093F100109204\r
+:101C1000F100C8C0282F2D7F09F0EAC0882319F0F1\r
+:101C2000823061F0E5C080911C02813009F0E0C093\r
+:101C3000933009F080E0809317022BC080911C0242\r
+:101C4000811127C080911E028F7009F4D1C080934A\r
+:101C5000E9002091EB0020FF1CC0933021F480911B\r
+:101C6000EB00806214C09091EB0090619093EB00C8\r
+:101C700021E030E0A90102C0440F551F8A95E2F728\r
+:101C80004093EA001092EA008091EB008860809314\r
+:101C9000EB001092E9008091E800877F86C08111F7\r
+:101CA000A7C010911C021F778091E3008078812BE0\r
+:101CB0008093E3008091E800877F8093E8000E9492\r
+:101CC000DD0B8091E80080FFFCCF8091E30080680D\r
+:101CD0008093E300111102C082E001C083E0809391\r
+:101CE000190286C08058823008F082C080911C02A0\r
+:101CF00090911D028C3D53E0950779F583E08A832E\r
+:101D00008AE289834FB7F894DE01139620E03EE023\r
+:101D100051E2E32FF0E050935700E49120FF03C01D\r
+:101D2000E295EF703F5FEF708E2F90E0EA3010F099\r
+:101D3000C79601C0C0968D939D932F5F243149F7BC\r
+:101D40004FBF8091E800877F8093E8006AE270E0EF\r
+:101D5000CE0101960E94E40A14C0AE014F5F5F4FAE\r
+:101D600060911E020E942B0ABC01892B09F440C01D\r
+:101D70009091E800977F9093E80089819A810E9472\r
+:101D8000470B8091E8008B778093E80031C0803862\r
+:101D900079F58091E800877F8093E80080911502B3\r
+:101DA0008093F1008091E8008E778093E8000E9494\r
+:101DB000DD0B1EC081111CC090911C029230C0F43A\r
+:101DC0008091E800877F8093E800909315020E943D\r
+:101DD000DD0B80911502811106C08091E30087FD23\r
+:101DE00002C081E001C084E0809319020E94EF08E4\r
+:101DF0008091E80083FF0AC08091E800877F80938C\r
+:101E0000E8008091EB0080628093EB00AA960FB609\r
+:101E1000F894DEBF0FBECDBFDF91CF911F91089523\r
+:101E200090938D0180938C010895E0918C01F09145\r
+:101E30008D01309721F00190F081E02D099480E030\r
+:101E40000895EF92FF920F931F93CF93DF93E0914A\r
+:101E50008C01F0918D013097B1F18C010280F381FA\r
+:101E6000E02D09958091040282FF2DC080FF04C0FF\r
+:101E700083EB93E00E949805E80110E28DEAE82EDA\r
+:101E800083E0F82E8091040280FF0BC088811F92AE\r
+:101E90008F93FF92EF920E9431060F900F900F9058\r
+:101EA0000F90115021961111EDCF8091040280FF07\r
+:101EB0000AC08BEA93E0DF91CF911F910F91FF90C1\r
+:101EC000EF900C949805DF91CF911F910F91FF90A7\r
+:101ED000EF900895E0918C01F0918D01309721F001\r
+:101EE0000480F581E02D09940895CF93DF93EC01F0\r
+:101EF00080918A0190918B01C817D90709F1D0937D\r
+:101F00008B01C0938A01E0918C01F0918D01309793\r
+:101F1000B9F00680F781E02DCE0109958091040289\r
+:101F200082FF0EC080FF0CC0DF93CF938DE993E05A\r
+:101F30009F938F930E9431060F900F900F900F90F8\r
+:101F4000DF91CF910895CF93DF93EC0180918801C9\r
+:101F500090918901C817D90709F1D0938901C093DD\r
+:101F60008801E0918C01F0918D013097B9F00084E7\r
+:101F7000F185E02DCE0109958091040282FF0EC00B\r
+:101F800080FF0CC0DF93CF938DE893E09F938F93F6\r
+:101F90000E9431060F900F900F900F90DF91CF911C\r
+:101FA00008950C94AB100E943F1C0C9440064F9275\r
+:101FB0005F927F928F929F92AF92BF92CF92DF9269\r
+:101FC000EF92FF920F931F93CF93DF9300D000D037\r
+:101FD0001F92CDB7DEB70E946E069FE8C92E91E032\r
+:101FE000D92E00E010E0AA24A394B12C702E802FEB\r
+:101FF0000E943E074C01F601419051906F01482626\r
+:10200000592641145104B1F40F5F1F4F08301105D8\r
+:1020100069F78FEF89838A831B820E94481C816045\r
+:10202000782F9D838C8349815A816B818D810E9499\r
+:10203000E21041C08091040281FD0E94AC1020E0BA\r
+:1020400030E07501022E02C0EE0CFF1C0A94E2F78C\r
+:10205000C70184219521892B41F129837A828E2021\r
+:102060009F2091E0892809F490E09B830E94481CFE\r
+:102070008160782F9D838C8349815A816B818D810A\r
+:102080000E94E21049815A816B817C818D810E947E\r
+:10209000C21B000F111FF801E157FE4F8081918193\r
+:1020A000E826F926F182E08206C02F5F3F4F2031FB\r
+:1020B000310539F6A9CF0E94C11B0E94091F10915A\r
+:1020C0008E010E94150F181771F10E94150F809351\r
+:1020D0008E019091040292FF0EC090FF0CC01F92DF\r
+:1020E0008F938EEB93E09F938F930E9431060F9016\r
+:1020F0000F900F900F9080918E010F900F900F9086\r
+:102100000F900F90DF91CF911F910F91FF90EF9063\r
+:10211000DF90CF90BF90AF909F908F907F905F9017\r
+:102120004F900C94D21B0F900F900F900F900F9028\r
+:10213000DF91CF911F910F91FF90EF90DF90CF90A3\r
+:10214000BF90AF909F908F907F905F904F90089539\r
+:102150000C944B0708950895EF92FF920F931F93ED\r
+:10216000CF93DF9388ED93E00E949805C0E0D0E024\r
+:102170008DE2E82E81E0F82E09EC13E08C2F0E940E\r
+:102180003E070E94A71BFF92EF929F938F93DF93CE\r
+:10219000CF931F930F930E94310621968DB79EB760\r
+:1021A00008960FB6F8949EBF0FBE8DBFC830D105FC\r
+:1021B00029F7DF91CF911F910F91FF90EF90089534\r
+:1021C00008950895CF93DF93CDB7DEB72B970FB661\r
+:1021D000F894DEBF0FBECDBF942F4F83252F5887B5\r
+:1021E00069877A878B874A855B85452B21F02F3F4E\r
+:1021F00009F59F3FF9F4DE01119686E0FD01119289\r
+:102200008A95E9F785E0FE01379601900D928A954F\r
+:10221000E1F749815A816B817C818D819E810E9489\r
+:10222000BD172B960FB6F894DEBF0FBECDBFDF9162\r
+:10223000CF9108954F81588569857A858B850E9455\r
+:10224000C21BD9CFCF93882309F465C0C82F8CEF68\r
+:102250008C0F813A20F080E58C0F8E3248F48C2F61\r
+:102260000E945322811157C08C2F0E94481A0CC023\r
+:1022700080E28C0F883058F4C77081E001C0880F6D\r
+:10228000CA95EAF70E94F31ACF910C94371B8BE59D\r
+:102290008C0F833078F4C53A29F0C63A31F083E8E0\r
+:1022A00090E005C081E890E002C082E890E0CF9124\r
+:1022B0000C94750F88E58C0F853168F5C83A89F064\r
+:1022C000C93A91F0CA3A99F0CB3AA1F0CC3AA9F0C8\r
+:1022D000CD3AB1F0CE3AB9F0CF3AC1F080E090E01B\r
+:1022E00017C082EE90E014C089EE90E011C08AEE33\r
+:1022F00090E00EC085EB90E00BC086EB90E008C04C\r
+:1023000083EB90E005C084EB90E002C087EB90E0A7\r
+:10231000CF910C94A30FCF910895882349F19CEF9E\r
+:10232000980F913A20F090E5980F9E3218F40E9491\r
+:102330009B1A0DC090E2980F983058F4877091E086\r
+:1023400001C0990F8A95EAF7892F0E94F91A0C9417\r
+:10235000371B9BE5980F933020F480E090E00C94BD\r
+:10236000750F885A853120F480E090E00C94A30F1B\r
+:102370000895882321F00E94F31A0C94371B0895C6\r
+:10238000882321F00E94F91A0C94371B0895BF92FC\r
+:10239000CF92DF92EF92FF920F931F93CF93DF9331\r
+:1023A00000D000D000D0CDB7DEB725E0FC01DE01C3\r
+:1023B000119601900D922A95E1F7FC01408131813F\r
+:1023C000F280258122952F7063817481672B09F437\r
+:1023D000FEC23F3F19F44F3F09F4F9C26C01498333\r
+:1023E0003A8389819A812E830E94071A182FB92E69\r
+:1023F0000E94061A0E941619EB2DE295EF70F0E08C\r
+:10240000E05AFF4F2E810C94F9248B2D807F9B2D59\r
+:102410009F70092F882311F00295007FFF2049F05B\r
+:10242000002309F481C2802F0E94061B0E94371BE3\r
+:102430007BC2812F0E948D11002309F4C8C2802F16\r
+:102440000E940C1B26960FB6F894DEBF0FBECDBFC0\r
+:10245000DF91CF911F910F91FF90EF90DF90CF9080\r
+:10246000BF900C94371B8B2D807F9B2D9F70092F65\r
+:10247000803211F00295007F112319F0113009F11B\r
+:102480002AC0FF20B1F0802F222351F1213041F5E5\r
+:1024900026960FB6F894DEBF0FBECDBFDF91CF9169\r
+:1024A0001F910F91FF90EF90DF90CF90BF900C9411\r
+:1024B000161B222319F0213009F489C20E941F1B28\r
+:1024C0002DC0FF20F1F0263008F081C20E94F01AE2\r
+:1024D000802329F023C0FF20F9F0211116C0802F9E\r
+:1024E00026960FB6F894DEBF0FBECDBFDF91CF9119\r
+:1024F0001F910F91FF90EF90DF90CF90BF900C94C1\r
+:10250000B911253008F063C209C0F601858180FF4A\r
+:102510000BC28F708583E3CF21111BC2802F82C134\r
+:102520002B2D26952695237030E02115310521F0BD\r
+:1025300021303105D1F04BC2FF2021F0812F9B2D9E\r
+:10254000937002C080E090E026960FB6F894DEBF4C\r
+:102550000FBECDBFDF91CF911F910F91FF90EF90F4\r
+:10256000DF90CF90BF900C94750FFF2021F0812F4A\r
+:102570009B2D937002C080E090E026960FB6F894F1\r
+:10258000DEBF0FBECDBFDF91CF911F910F91FF90A6\r
+:10259000EF90DF90CF90BF900C94A30F812FFF207E\r
+:1025A00019F00E948F1D02C00E94F71D26960FB6DB\r
+:1025B000F894DEBF0FBECDBFDF91CF911F910F9179\r
+:1025C000FF90EF90DF90CF90BF900C947C1E8B2DEE\r
+:1025D000837009F07BC0F110FAC1812F8295869536\r
+:1025E0008770880F880F912F9F70C92ED12CE12CF6\r
+:1025F000F12C082E04C0CC0CDD1CEE1CFF1C0A9430\r
+:10260000D2F714FF12C04FE050E060E070E004C069\r
+:10261000440F551F661F771F8A95D2F7CB01BA0169\r
+:10262000609570958095909503C060E070E0CB0157\r
+:102630002B2D269526952370422F50E042305105D0\r
+:10264000D9F04330510569F16C297D298E299F29E4\r
+:102650004130510551F126960FB6F894DEBF0FBEFA\r
+:10266000CDBFDF91CF911F910F91FF90EF90DF9041\r
+:10267000CF90BF900C942B196C297D298E299F290E\r
+:1026800026960FB6F894DEBF0FBECDBFDF91CF9177\r
+:102690001F910F91FF90EF90DF90CF90BF900C941F\r
+:1026A0003D190E942B19C701B60126960FB6F89462\r
+:1026B000DEBF0FBECDBFDF91CF911F910F91FF9075\r
+:1026C000EF90DF90CF90BF900C941919FF2019F074\r
+:1026D0008B2D817001C08695882309F478C1812FE4\r
+:1026E000829586958770880F880F912F9F70C92ECD\r
+:1026F000D12CE12CF12C082E04C0CC0CDD1CEE1CDE\r
+:10270000FF1C0A94D2F714FF12C04FE050E060E0C3\r
+:1027100070E004C0440F551F661F771F8A95D2F7DB\r
+:10272000CB01BA01609570958095909503C060E0EB\r
+:1027300070E0CB012B2D269526952370422F50E07B\r
+:1027400042305105D9F04330510569F16C297D299A\r
+:102750008E299F294130510551F126960FB6F894E4\r
+:10276000DEBF0FBECDBFDF91CF911F910F91FF90C4\r
+:10277000EF90DF90CF90BF900C94E2196C297D29E7\r
+:102780008E299F2926960FB6F894DEBF0FBECDBFC7\r
+:10279000DF91CF911F910F91FF90EF90DF90CF903D\r
+:1027A000BF900C94F4190E94E219C701B601269655\r
+:1027B0000FB6F894DEBF0FBECDBFDF91CF911F9152\r
+:1027C0000F91FF90EF90DF90CF90BF900C94D019B5\r
+:1027D000103FC9F128F480E4810F803250F09FC08F\r
+:1027E000123F09F461C008F44AC0133F09F471C0F4\r
+:1027F00096C0012F00718B2D8F71FF2051F00E9428\r
+:102800006919812F002319F08295807F69CE8F701E\r
+:1028100067CE0E948A19812F002319F08295807F4C\r
+:1028200001C08F7026960FB6F894DEBF0FBECDBFE5\r
+:10283000DF91CF911F910F91FF90EF90DF90CF909C\r
+:10284000BF900C94C011FF20B1F0253008F0BFC03C\r
+:102850008B2D8F7126960FB6F894DEBF0FBECDBFBD\r
+:10286000DF91CF911F910F91FF90EF90DF90CF906C\r
+:10287000BF900C94AF19263008F0A9C0E9CFFF2013\r
+:10288000A9F08B2D8F7126960FB6F894DEBF0FBE80\r
+:10289000CDBFDF91CF911F910F91FF90EF90DF900F\r
+:1028A000CF90BF900C946919FF2059F38B2D8F7135\r
+:1028B00026960FB6F894DEBF0FBECDBFDF91CF9145\r
+:1028C0001F910F91FF90EF90DF90CF90BF900C94ED\r
+:1028D0008A19FF2099F08B2D8F7126960FB6F894E8\r
+:1028E000DEBF0FBECDBFDF91CF911F910F91FF9043\r
+:1028F000EF90DF90CF90BF900C94541926960FB6AE\r
+:10290000F894DEBF0FBECDBFDF91CF911F910F9125\r
+:10291000FF90EF90DF90CF90BF900C944F19FF2065\r
+:10292000A9F0222309F4ADCF812F26960FB6F89493\r
+:10293000DEBF0FBECDBFDF91CF911F910F91FF90F2\r
+:10294000EF90DF90CF90BF900C942211222309F4D6\r
+:10295000ADCF812F26960FB6F894DEBF0FBECDBF48\r
+:10296000DF91CF911F910F91FF90EF90DF90CF906B\r
+:10297000BF900C948D114B2D4F70612FC6010E949A\r
+:10298000091D26960FB6F894DEBF0FBECDBFDF91AE\r
+:10299000CF911F910F91FF90EF90DF90CF90BF905C\r
+:1029A0000C9461184B2D4F70612FC60126960FB6FF\r
+:1029B000F894DEBF0FBECDBFDF91CF911F910F9175\r
+:1029C000FF90EF90DF90CF90BF900C940C1D269657\r
+:1029D0000FB6F894DEBF0FBECDBFDF91CF911F9130\r
+:1029E0000F91FF90EF90DF90CF90BF9008950E94DD\r
+:1029F000131B0E94E21A0E94371B0E94AE1F0E9406\r
+:102A00007C1E80E090E00E94750F80E090E00C94C6\r
+:102A1000A30F0E94031B0C94F7140E94071A292F7E\r
+:102A200022952F7030E02C3031054CF42A303105DE\r
+:102A3000C4F4225031092230310540F023C02C303B\r
+:102A40003105D1F02F303105B9F01CC0853A28F49A\r
+:102A50008430B0F4823028F413C090E2980F98309C\r
+:102A600078F0883E30F4803E58F48450813A50F437\r
+:102A700007C0803F39F404C093FB882780F908958C\r
+:102A800081E0089580E00895CF93DF9300D000D0D7\r
+:102A90001F92CDB7DEB70F900F900F900F900F9051\r
+:102AA000DF91CF910895CF93DF9300D000D000D075\r
+:102AB000CDB7DEB726960FB6F894DEBF0FBECDBFFA\r
+:102AC000DF91CF9108951F93CF93DF93C0919F0122\r
+:102AD00016E08091A001C81799F0D0E01C9FF0018A\r
+:102AE0001D9FF00D1124EF55FE4F408151816281F1\r
+:102AF0007381848195810E9453152196C770E9CF17\r
+:102B0000DF91CF911F9108954091D1015091D20151\r
+:102B10006091D3017091D4018091D5019091D6013B\r
+:102B20000C9453158091D60182958F7009F054C092\r
+:102B30008091D301882309F44FC080919F01A09117\r
+:102B4000A0016091D1017091D2014091D4015091C6\r
+:102B5000D501B6E08A1709F43FC090E04115510550\r
+:102B6000C1F17F3F11F46F3FA1F1B89FF001B99F10\r
+:102B7000F00D1124EF55FE4F218172132AC02081E0\r
+:102B8000621327C02281211124C02381348124179C\r
+:102B9000350710F421503109241B350B2C323140FC\r
+:102BA000C0F42091D6012F7020612093D60126E039\r
+:102BB000289FF001299FF00D1124EA55FE4F8081D6\r
+:102BC0008F708061808381ED91E00E94C7110C9429\r
+:102BD000631501968770BECF0895CF92DF92EF9272\r
+:102BE000FF920F931F93CF93DF93CDB7DEB762971A\r
+:102BF0000FB6F894DEBF0FBECDBF8C0185E0F801A3\r
+:102C0000DE011D9601900D928A95E1F7D8014C9155\r
+:102C100011965C91119712966C9112971396CD9024\r
+:102C2000DC9014973091D1017091D2018091D40140\r
+:102C30009091D501009709F473C17F3F19F43F3F8C\r
+:102C400009F46EC1E090D301EE2009F4C5C02091D3\r
+:102C5000D601C816D90650F0F601E81BF90BCF01D2\r
+:102C6000FF24F3948C329140C8F009C08095909570\r
+:102C70008C0D9D1DFF24F3948C32914078F0F12C43\r
+:102C8000207F09F0C6C07C2DD98AC88A89890E9414\r
+:102C9000441581ED91E00E94C711B1C0822F807F61\r
+:102CA00009F045C0751313C0341311C061110FC072\r
+:102CB0002F7020612093D6010E94841581ED91E050\r
+:102CC0000E94C7118091D601F80185832EC0CD28BE\r
+:102CD00019F15F3F11F44F3FF9F0F62E61111CC05E\r
+:102CE00080919F012091A00136E0821709F45BC01A\r
+:102CF00090E0389FF001399FF00D1124EF55FE4F01\r
+:102D00007181571306C07081471303C0728171111E\r
+:102D100003C001968770E9CFF62E662309F41DC122\r
+:102D20008091D60181608093D601F12C16C1751374\r
+:102D300009C0341307C0611105C08091D601F801A4\r
+:102D40008583C8C04D875E878D859E856A8B0E946E\r
+:102D50000D156A898823E1F16623D1F12091D6010E\r
+:102D6000822F82958F7090E0029774F08091D1014C\r
+:102D70009091D20198878F831986DB86CA862C872B\r
+:102D8000CE0107960E94C71186E0F801A1EDB1E0DF\r
+:102D900001900D928A95E1F70E9492150E94841588\r
+:102DA000FF24F394DAC04D875E878D859E850E944F\r
+:102DB000071A292F22952F7030E0223031050CF0B0\r
+:102DC000BFC09F7009F0B9C0805E883008F4C5C0EC\r
+:102DD000C8010E94C711E4CFC816D90608F453C031\r
+:102DE000F601E81BF90BCF018C32914008F453C077\r
+:102DF000F12C7C2DD98AC88A89890E944415E1ED7D\r
+:102E0000F1E086E0DF011D928A95E9F70E948415C2\r
+:102E1000A4C0751314C0341312C0611110C0809186\r
+:102E2000D601F8018583C8010E94C71186E0E1ED53\r
+:102E3000F1E0DF011D928A95E9F7FE2C8EC04D87E7\r
+:102E40005E878D859E856A8B0E940D156A89882311\r
+:102E500009F4BECF662309F4BBCF2091D601822F9F\r
+:102E600082958F7090E002970CF48ECF8091D10103\r
+:102E70009091D2019A8389831B82DD82CC822E833A\r
+:102E8000CE0101967FCF809590958C0D9D1D8C3243\r
+:102E9000914008F0ADCFF62E662309F499CF751353\r
+:102EA0002EC034132CC02091D60120FD1FC0822FCC\r
+:102EB00082958F70D9F0D80115962C9315978F3085\r
+:102EC00049F08F5F982F9295907F822F8F70892B7A\r
+:102ED00015968C93C8010E94C71186E0F801A1EDF8\r
+:102EE000B1E001900D928A95E1F790CF86E0F8016C\r
+:102EF000A1EDB1E001900D928A95E1F72EC04D87CA\r
+:102F00005E878D859E850E940D1581113DCF809134\r
+:102F1000D60181608093D601C8010E94C7111DC0EF\r
+:102F2000662309F455CF4D875E878D859E850E9467\r
+:102F30000D15882309F44CCF27CF811145CF0DC043\r
+:102F4000243031050CF044CF9F7009F43DCFD801F7\r
+:102F500015969C91907F09F037CF8F2D62960FB612\r
+:102F6000F894DEBF0FBECDBFDF91CF911F910F91BF\r
+:102F7000FF90EF90DF90CF9008951F93CF93DF9352\r
+:102F8000CDB7DEB72C970FB6F894DEBF0FBECDBF1E\r
+:102F90004F83588769877A878B879C87CE010796EE\r
+:102FA0000E94ED15882369F08F8198852A853B85DD\r
+:102FB000232BF1F19F3F09F063C08F3F09F060C000\r
+:102FC00037C086E0FE013796DE01119601900D9222\r
+:102FD0008A95E1F76F817885EA85FB85309741F125\r
+:102FE0007F3F11F46F3F21F12091A00130E0C90132\r
+:102FF00001968770992740919F0150E084179507AB\r
+:1030000009F447C069837A83FD83EC8396E0929F3D\r
+:10301000D001939FB00D1124AF55BE4FFE013196E4\r
+:1030200001900D929A95E1F78093A0010E9463159B\r
+:1030300016E080919F019091A0018917C1F1189F1E\r
+:10304000C00111248F559E4F0E94ED15882379F100\r
+:10305000E0919F011E9FF0011124EF55FE4F40812A\r
+:10306000518162817381848195810E945315809181\r
+:103070009F0190E001968770992780939F01D9CF97\r
+:103080004F81588569857A858B859C850E9453156B\r
+:10309000CFCF0E9409151092A00110929F01E1ED7F\r
+:1030A000F1E086E0DF011D928A95E9F7C1CF2C9609\r
+:1030B0000FB6F894DEBF0FBECDBFDF91CF911F9149\r
+:1030C0000895DF92EF92FF920F931F93CF93DF93B8\r
+:1030D000FC01892B09F48AC0E12CF12CDD24D39466\r
+:1030E000EF0121968491853709F461C058F4843743\r
+:1030F00008F04EC0843008F06AC08130D1F08230D0\r
+:1031000071F174C0883709F45DC050F4863709F452\r
+:1031100055C0873709F06AC08E2D0E94001B54C02D\r
+:103120009CE7980F903708F061C08F770E948D114F\r
+:1031300050C08F010E5F1F4FFE01849190E2980FE7\r
+:10314000983050F48770FD2D01C0FF0F8A95EAF783\r
+:103150008F2F0E94061B14C00E94221113C08F01E2\r
+:103160000E5F1F4FFE01C49180E28C0F883060F427\r
+:10317000C7708D2D01C0880FCA95EAF70E940C1BFD\r
+:103180000E94371BE80125C08C2F0E948D11FACFB9\r
+:103190009F012E5F3F4FFE01C491CC2369F08FE960\r
+:1031A0009FE00197F1F700C00000C150F6CF9F01EA\r
+:1031B0002E5F3F4FFE01F490E9010BC00E94F01A10\r
+:1031C000E82E07C00E94031B0E94371B02C00E940A\r
+:1031D00022118F2D882341F0EFE9FFE03197F1F7BD\r
+:1031E00000C000008150F6CFFE017ACFDF91CF9171\r
+:1031F0001F910F91FF90EF90DF9008956093DB0196\r
+:103200007093DC018093DD019093DE010E94D11B5D\r
+:103210000C94F7146093D7017093D8018093D9016F\r
+:103220009093DA010E943A060C94F71408950C94D6\r
+:10323000FE180F931F930091DB011091DC01209188\r
+:10324000DD013091DE01602B712B822B932B1F91BE\r
+:103250000F910C94FE180F931F930091DB011091B6\r
+:10326000DC012091DD013091DE0160237123822396\r
+:1032700093231F910F910C94FE180F931F930091AD\r
+:10328000DB011091DC012091DD013091DE0160272E\r
+:103290007127822793271F910F910C94FE1860E0ED\r
+:1032A00070E0CB010C940A190F931F9341E050E09A\r
+:1032B00060E070E08A019B0104C0000F111F221F13\r
+:1032C000331F8A95D2F7C901B8011F910F910C9451\r
+:1032D0000A190F931F9341E050E060E070E004C0D2\r
+:1032E000440F551F661F771F8A95D2F78091D7012B\r
+:1032F0009091D801A091D901B091DA018A019B0186\r
+:10330000082B192B2A2B3B2BC901B8011F910F91B8\r
+:103310000C940A190F931F9341E050E060E070E0B5\r
+:1033200004C0440F551F661F771F8A95D2F740953A\r
+:103330005095609570958091D7019091D801A0919A\r
+:10334000D901B091DA018A019B01082319232A23AC\r
+:103350003B23C901B8011F910F910C940A190F93D7\r
+:103360001F9341E050E060E070E004C0440F551F3F\r
+:10337000661F771F8A95D2F78091D7019091D80167\r
+:10338000A091D901B091DA018A019B010827192780\r
+:103390002A273B27C901B8011F910F910C940A19E4\r
+:1033A0000F931F930091D7011091D8012091D9015B\r
+:1033B0003091DA01602B712B822B932B1F910F918F\r
+:1033C0000C940A190F931F930091D7011091D80103\r
+:1033D0002091D9013091DA01602371238223932354\r
+:1033E0001F910F910C940A190F931F930091D7010D\r
+:1033F0001091D8012091D9013091DA01602771270D\r
+:10340000822793271F910F910C940A190895CF9248\r
+:10341000DF92EF92FF920F931F93CF93DF938C0174\r
+:10342000C090DB01D090DC01E090DD01F090DE0186\r
+:103430004091D7015091D8016091D9017091DA0182\r
+:10344000C42AD52AE62AF72ACFE1D0E0D701C6015F\r
+:103450000C2E04C0B695A795979587950A94D2F738\r
+:1034600080FF07C0B8018C2F0E94DF1C81309105BE\r
+:1034700031F4219758F7B80180E00E94DF1CDF91FA\r
+:10348000CF911F910F91FF90EF90DF90CF90089513\r
+:1034900090910A01992321F090910B01911109C09B\r
+:1034A00020910C0130910D01F90132969FEF40E01F\r
+:1034B00030C0982F9695969596959F31A0F4E091FF\r
+:1034C0000C01F0910D01E90FF11D877021E030E052\r
+:1034D000A90102C0440F551F8A95E2F7CA019181E4\r
+:1034E000892B818308959091040290FF23C01F923D\r
+:1034F0008F938CE094E09F938F930E9431060F90FE\r
+:103500000F900F900F9008959F3F39F04F5F4E310D\r
+:1035100041F051915813F8CF0DC05111F7CF942FAE\r
+:10352000F5CF9F3F39F0F901E90FF11D97FDFA95AD\r
+:1035300082830895089590910A01992321F0909132\r
+:103540000B01911109C020910C0130910D01F9017D\r
+:103550003296205E3F4F30C0982F9695969596955F\r
+:103560009F31A8F4E0910C01F0910D01E90FF11DDC\r
+:10357000877021E030E0A90102C0440F551F8A95F1\r
+:10358000E2F7CA0180959181892381830895909102\r
+:10359000040290FF16C01F928F938EEE93E09F93CC\r
+:1035A0008F930E9431060F900F900F900F90089507\r
+:1035B0003196E217F30729F090819813F9CF108222\r
+:1035C000F7CF089581E090E0E0910C01F0910D01BA\r
+:1035D000E80FF91F1082019680329105A9F708952E\r
+:1035E00080910302089590910302892B8093030236\r
+:1035F0000895809590910302892380930302089592\r
+:10360000809303020895109203020895909102029C\r
+:10361000892B80930202089580959091020289235C\r
+:103620008093020208951092020208958093E101AE\r
+:103630000E94481C9093E0018093DF01089510924E\r
+:10364000E1011092E0011092DF01089580910C01D8\r
+:1036500090910D01FC0131969C01205E3F4F80E06E\r
+:10366000919191118F5FE217F307D1F70895E091DF\r
+:103670000C01F0910D01809103028083E0910C0117\r
+:10368000F0910D01908180910202892B80838091BD\r
+:10369000E1018823D9F10E94481C2091DF0130917B\r
+:1036A000E0018217930748F00E94481C2091DF0137\r
+:1036B0003091E001821B930B0AC00E94481C2091AC\r
+:1036C000DF013091E00120953095820F931F8C32FD\r
+:1036D000914070F08091040280FF08C08AE294E07B\r
+:1036E0009F938F930E9431060F900F900E941F1B93\r
+:1036F000E0910C01F0910D0190818091E101892B05\r
+:1037000080830E94261B81110E941F1B80910C0147\r
+:1037100090910D010C94210F909339018093380101\r
+:1037200008958295982F9C7C392F36953695282FB1\r
+:10373000237344E0249FC0011124932F982B292F39\r
+:103740002A7A2695892F8575880F822B08951F93D5\r
+:10375000CF93DF931F92CDB7DEB799830E94911B61\r
+:10376000182F9981892F0E94911B212F30E0322F31\r
+:103770002227A901482BCA010F90DF91CF911F91F9\r
+:1037800008950895CF93DF9300D000D01F92CDB756\r
+:10379000DEB70F900F900F900F900F90DF91CF91A9\r
+:1037A000089508950C94A81080911902843021F195\r
+:1037B0001092050220E488E190E00FB6F894A895F5\r
+:1037C000809360000FBE2093600083B7817F846088\r
+:1037D00083BF83B7816083BF7894889583B78E7FDA\r
+:1037E00083BF0FB6F894A89580916000886180939C\r
+:1037F0006000109260000FBE0895CF930E94E01009\r
+:103800000E946E060E94E110C0E08C2F0E943E07CD\r
+:10381000892B29F4CF5FC830C1F780E001C081E077\r
+:10382000CF9108950E94AA100C9409151F920F922F\r
+:103830000FB60F9211248F939F93AF93BF938091F4\r
+:103840000502811113C08091060290910702A09198\r
+:103850000802B09109024196A11DB11D8093060294\r
+:1038600090930702A0930802B0930902BF91AF9111\r
+:103870009F918F910F900FBE0F901F90189582E02F\r
+:1038800084BD93E095BD9AEF97BD80936E00089537\r
+:103890002FB7F8948091060290910702A091080238\r
+:1038A000B09109022FBF08952FB7F89460910602D6\r
+:1038B0007091070280910802909109022FBF08952C\r
+:1038C000CF92DF92EF92FF920F931F932FB7F8944E\r
+:1038D000409106025091070260910802709109021E\r
+:1038E0002FBF6A017B01EE24FF248C0120E030E031\r
+:1038F000C016D106E206F30610F4415051099A01B0\r
+:10390000281B390BC9011F910F91FF90EF90DF9099\r
+:10391000CF9008951F920F920FB60F9211248F939C\r
+:103920009F93AF93BF938091060290910702A0915D\r
+:103930000802B09109020196A11DB11D80930602F3\r
+:1039400090930702A0930802B0930902BF91AF9130\r
+:103950009F918F910F900FBE0F901F9018950E940E\r
+:103960002E0CF8942FEF87EA91E62150804090408A\r
+:10397000E1F700C0000087E090EBDC0180932202B9\r
+:1039800090932302A0932402B09325029CE088E147\r
+:103990000FB6F894A895809360000FBE90936000D6\r
+:1039A000FFCF20E1929FF0011124E80FF11DE052BA\r
+:1039B000FF4F9491892F8F7092959F700895CF93A8\r
+:1039C000C82FCB010E94D11C282F30E080E1989FA6\r
+:1039D000A0011124422B532B4038510519F480E0EB\r
+:1039E00090E015C09770E92FF0E088E0C89FE00DE7\r
+:1039F000F11D112484E0EE0FFF1F8A95E1F7E20F1D\r
+:103A0000F31FEE0FFF1FE050F84985919491CF917D\r
+:103A1000089580E090E00895089580910C0280FF61\r
+:103A20000BC06091110185E0689FB001112475956C\r
+:103A30006795759567952BC081FF09C0609111014D\r
+:103A400085E0689FB00111247595679520C082FFBD\r
+:103A500007C06091110185E0689FB001112417C073\r
+:103A600090910D029923D1F060911001961788F77B\r
+:103A70002091110185E0289F90011124929FA001BF\r
+:103A8000939F500D112470E0CA010E94E524603814\r
+:103A9000710540F46115710539F002C065E070E010\r
+:103AA000862F08958FE7089581E0089580910C0294\r
+:103AB00080FF08C060910F0170E07595679575955E\r
+:103AC000679521C081FF06C060910F0170E0759578\r
+:103AD000679519C082FF04C060910F0170E010C0AB\r
+:103AE00090910D029923C1F060910E019617A0F7F5\r
+:103AF00080910F01899FC001112470E00E94E5248C\r
+:103B00006038710528F46115710521F0862F08953C\r
+:103B10008FE7089581E0089561E070E0F4CF803F81\r
+:103B200021F40E940D1D819504C0813F29F40E945B\r
+:103B30000D1D809310020895823F21F40E940D1DF7\r
+:103B4000819504C0833F29F40E940D1D80930F02CC\r
+:103B50000895893F19F40E94561D05C08A3F31F42B\r
+:103B60000E94561D81958093110208958B3F21F488\r
+:103B70000E94561D819504C08C3F29F40E94561D59\r
+:103B8000809312020895843F21F480910E02816097\r
+:103B900017C0853F21F480910E02826011C0863FDC\r
+:103BA00021F480910E0284600BC0873F21F4809144\r
+:103BB0000E02886005C0883F31F480910E0280615A\r
+:103BC00080930E0208958D3F21F480910C02816054\r
+:103BD0000BC08E3F21F480910C02826005C08F3FA4\r
+:103BE00029F480910C02846080930C020895803F38\r
+:103BF00039F48091100287FF6CC01092100269C0E6\r
+:103C0000813F29F4809110021816BCF362C0909194\r
+:103C10000F02823F29F497FF5CC010920F0259C037\r
+:103C2000833F19F41916CCF354C0893F41F48091B5\r
+:103C3000110218160CF04DC0109211024AC08A3FB2\r
+:103C400029F48091110287FF44C0F6CF8B3F39F4ED\r
+:103C50008091120287FF3DC0109212023AC08C3F41\r
+:103C600029F4809112021816BCF333C0843F21F46A\r
+:103C700080910E028E7F17C0853F21F480910E0245\r
+:103C80008D7F11C0863F21F480910E028B7F0BC087\r
+:103C9000873F21F480910E02877F05C0883F31F471\r
+:103CA00080910E028F7E80930E0213C08D3F21F40F\r
+:103CB00080910C028E7F0BC08E3F21F480910C020C\r
+:103CC0008D7F05C08F3F29F480910C028B7F8093FC\r
+:103CD0000C0280910F0281110EC08091100281119F\r
+:103CE0000AC080911102811106C0809112028111D7\r
+:103CF00002C010920D0208958091040283FF7EC0DD\r
+:103D000083E694E00E94980580910E021F928F93A3\r
+:103D10008EE594E09F938F930E9431068CE594E0AA\r
+:103D20000E94980580910F02282F082E000C330B5B\r
+:103D30003F938F9389E594E09F938F930E94310680\r
+:103D400087E594E00E94980580911002282F082EA4\r
+:103D5000000C330B3F938F9384E594E09F938F93F4\r
+:103D60000E94310682E594E00E949805809111023C\r
+:103D7000282F082E000C330B3F938F938FE494E091\r
+:103D80009F938F930E9431068DE494E00E949805E2\r
+:103D900080911202282F082E000C330B3F938F9333\r
+:103DA0008AE494E09F938F930E94310687E494E025\r
+:103DB0000E94980580910D021F928F9384E494E0F5\r
+:103DC0009F938F930E94310682E494E00E949805AD\r
+:103DD00080910C021F928F938FE394E09F938F93B7\r
+:103DE0000E9431068CE394E00E9498058DB79EB73F\r
+:103DF0004C960FB6F8949EBF0FBE8DBF8EE092E03A\r
+:103E00000E946A0F0E94481C90930B0280930A0242\r
+:103E100008951F93CF93DF9380910A0290910B0234\r
+:103E20000E94601CAC0190910D02992321F0209119\r
+:103E3000120130E006C0209113018AE0289F900112\r
+:103E400011244217530708F485C080910F02C091D6\r
+:103E50001002D091110210911202811107C0C111FC\r
+:103E600075C0D11173C0111171C074C09F3F19F09A\r
+:103E70009F5F90930D02181624F40E940D1D8093ED\r
+:103E80000F0280910F0287FF05C00E940D1D8195D2\r
+:103E900080930F021C1624F40E940D1D80931002C3\r
+:103EA0008091100287FF05C00E940D1D81958093AF\r
+:103EB000100260910F02662331F1C0911002CC23F1\r
+:103EC00011F1062E000C770B880B990B0E94E02352\r
+:103ED00023E333E343E35FE30E9444240E94A823E7\r
+:103EE00060930F026C2FCC0F770B880B990B0E94FD\r
+:103EF000E02323E333E343E35FE30E9444240E948F\r
+:103F0000A823609310021D1624F40E94561D80936E\r
+:103F100011028091110287FF05C00E94561D8195F4\r
+:103F200080931102111624F40E94561D80931202F0\r
+:103F30008091120287FF05C00E94561D81958093D3\r
+:103F40001202DF91CF911F910C947C1E9F3F09F0CC\r
+:103F50008FCF97CFDF91CF911F910895EEE0F2E0E0\r
+:103F600085E0DF011D928A95E9F710920D0210920B\r
+:103F70000C02089586E896E00E9498051F9281E061\r
+:103F80008F931F9285E08F9388E396E09F938F93A2\r
+:103F90000E9431060F900F900F900F900F900F908E\r
+:103FA00008958330E9F128F4813061F0823009F11D\r
+:103FB0000895853009F462C008F449C0863009F4D8\r
+:103FC00074C0089580911301262F30E0280F311D11\r
+:103FD0002F3F310524F4680F6093130103C08FEF66\r
+:103FE00080931301809113011F928F9381E795E0D5\r
+:103FF00072C080911201262F30E0280F311D2F3F13\r
+:10400000310524F4680F6093120103C08FEF809391\r
+:104010001201809112011F928F938FE595E05BC092\r
+:1040200080911101262F30E0280F311D2F3F3105DF\r
+:1040300024F4680F6093110103C08FEF8093110186\r
+:10404000809111011F928F938CE495E044C0809180\r
+:104050001001262F30E0280F311D2F3F310524F4A9\r
+:10406000680F6093100103C08FEF8093100180915F\r
+:1040700010011F928F9387E395E02DC080910F016F\r
+:10408000262F30E0280F311D2F3F310524F4680F13\r
+:1040900060930F0103C08FEF80930F0180910F0198\r
+:1040A0001F928F938EE195E016C080910E01262F0E\r
+:1040B00030E0280F311D2F3F310524F4680F609345\r
+:1040C0000E0103C08FEF80930E0180910E011F92AD\r
+:1040D0008F9383E095E09F938F930E9431060F901A\r
+:1040E0000F900F900F900895833081F128F4813064\r
+:1040F00059F08230D1F00895853009F449C0B8F103\r
+:10410000863009F456C0089580911301681720F491\r
+:10411000861B8093130102C010921301809113013A\r
+:104120001F928F9384EF94E054C08091120168171E\r
+:1041300020F4861B8093120102C01092120180911C\r
+:1041400012011F928F9382EE94E043C0809111017F\r
+:10415000681720F4861B8093110102C01092110190\r
+:10416000809111011F928F938FEC94E032C0809167\r
+:104170001001681720F4861B8093100102C0109272\r
+:104180001001809110011F928F938AEB94E021C05F\r
+:1041900080910F01681720F4861B80930F0102C0E5\r
+:1041A00010920F0180910F011F928F9381EA94E08A\r
+:1041B00010C080910E01681720F4861B80930E01B9\r
+:1041C00002C010920E0180910E011F928F9386E81B\r
+:1041D00094E09F938F930E9431060F900F900F9061\r
+:1041E0000F900895CF93C82F1F928F938BE897E07D\r
+:1041F0009F938F930E94310681E090E0A0E0B0E0B1\r
+:10420000BC01CD0104C0660F771F881F991FCA9596\r
+:10421000D2F70E9417190F900F900F900F90CF9127\r
+:104220000C940915CF938732A8F58E3108F02BC175\r
+:10423000803109F49FC0F8F4873009F464C0A8F411\r
+:10424000863009F024C180910402817F8E7F8093A3\r
+:10425000040280E997E00E94980581E89AE00E94B4\r
+:10426000980581E0809314024CC08B30F1F18E30C0\r
+:1042700009F46CC00CC1863109F4B0C020F481315E\r
+:1042800009F4EDC004C1893109F491C08B3109F4FE\r
+:1042900049C0FDC0883349F150F4893209F4F1C0B6\r
+:1042A000853309F4EEC0873209F0F1C0EAC08334E7\r
+:1042B00009F4E7C028F48A3308F4E9C08953E4C05C\r
+:1042C000883409F0E4C00E94091580E79AE00E9452\r
+:1042D00098052FEF83ED90E3215080409040E1F767\r
+:1042E00000C000000E94AF1C0CC087EB97E05CC0D0\r
+:1042F00087E59AE00E94980580910402816080938E\r
+:104300000402C1E0C9C080910402C82FC17080FFBF\r
+:10431000EFCF83E69AE00E94980580910402817FA6\r
+:104320008E7F3DC09091040291FBCC27C0F981E0C3\r
+:10433000C827892FC0FB81F980930402CC2319F090\r
+:104340008AE49AE027C08CE39AE02EC090910402A0\r
+:1043500092FBCC27C0F981E0C827892FC0FB82F9E6\r
+:1043600080930402CC2319F08DE29AE013C08DE112\r
+:104370009AE01AC09091040293FBCC27C0F981E027\r
+:10438000C827892FC0FB83F980930402CC2351F006\r
+:1043900081E19AE00E9498058091040281608093F7\r
+:1043A00004027AC084E09AE00E949805AACF85EFC3\r
+:1043B00099E00E9498058CEC99E00E9498058AE8A3\r
+:1043C00099E00E9498058DE599E00E94980583E1A7\r
+:1043D00099E00E94980585EE98E0E6CF87ED98E099\r
+:1043E0000E9498050E94150F1F928F938DEB98E005\r
+:1043F0009F938F930E94310680910A011F928F93A1\r
+:1044000086EA98E09F938F930E94310680918701FE\r
+:104410001F928F9383E998E09F938F930E943106B8\r
+:1044200080910B011F928F9380E898E09F938F9368\r
+:104430000E9431060E94541C9F938F937F936F9329\r
+:1044400089E698E09F938F930E9431068DB79EB7BF\r
+:1044500046960FB6F8949EBF0FBE8DBF52CF0E94F6\r
+:104460000915C0910B0181E0C827C0930B01CC2333\r
+:1044700029F08FE598E00E9498050EC084E598E049\r
+:1044800093CF80E001C08D510E94F2203ACF82E5A7\r
+:1044900098E00E949805C0E08C2FCF91089580E0AD\r
+:1044A000089580E00895CF93C82F80911402813041\r
+:1044B00071F020F0823009F44BC042C1E0910C0150\r
+:1044C000F0910D018081823209F03CC107C0E0917A\r
+:1044D0000C01F0910D018081823261F48C2F0E94D9\r
+:1044E0004F22811104C08C2F0E9412212FC081E025\r
+:1044F00090E02CC08C2F0E945122811126C0C43123\r
+:10450000E1F070F4CB3081F0C031D1F40E94BA1FD9\r
+:1045100083E897E00E94980582E08093140215C01A\r
+:10452000C93259F0C83361F480E997E00E949805D8\r
+:1045300087E897E00E94980508C01092140204C111\r
+:1045400081E897E00E949805FFC081E08170FEC07D\r
+:10455000C43228F5CE3108F0C1C0CB30A1F1D0F47F\r
+:10456000C73009F0D3C08EE18093130182E38093BA\r
+:1045700012018AE08093110184E18093100188E0A8\r
+:1045800080930F0188E280930E0187E296E00E94FB\r
+:104590009805BFC0C33149F1C431C1F0B7C0CB34B5\r
+:1045A00009F4A9C028F4C93289F0C83361F0AEC05B\r
+:1045B000C13509F49EC0C23509F499C0CE3409F062\r
+:1045C000A5C06AE09EC00E94BA1FA3C080911302DA\r
+:1045D000882319F0109213029CC084E396E00E9495\r
+:1045E000980581E080931402B1C08EE096E00E94AD\r
+:1045F00098058CEF95E00E949805809113011F9219\r
+:104600008F9389EF95E09F938F930E94310687EFF8\r
+:1046100095E00E94980585EE95E00E9498058091AE\r
+:1046200012011F928F9382EE95E09F938F930E94C9\r
+:10463000310680EE95E00E94980581ED95E00E949C\r
+:104640009805809111011F928F938EEC95E09F93B6\r
+:104650008F930E9431068CEC95E00E9498058BEBBD\r
+:1046600095E00E949805809110011F928F9388EB2E\r
+:1046700095E09F938F930E94310686EB95E00E9410\r
+:10468000980581EA95E00E94980580910F011F929C\r
+:104690008F938EE995E09F938F930E9431068CE96A\r
+:1046A00095E00E94980585E895E00E949805809124\r
+:1046B0000E011F928F9382E895E09F938F930E9443\r
+:1046C000310680E895E00E9498058DB79EB7489620\r
+:1046D0000FB6F8949EBF0FBE8DBF1BC0CE51EC2FFE\r
+:1046E000F0E0E25DFE4F80818093130212C061E032\r
+:1046F00003C061E006C06AE0809113020E94D11FEE\r
+:1047000008C0809113020E94742003C085E296E0E5\r
+:1047100013C080911302882369F01F928F938FE159\r
+:1047200096E09F938F930E9431060F900F900F9009\r
+:104730000F9004C08CE196E00E94980581E006C0CD\r
+:104740001092140280E002C080E000CFCF91089563\r
+:104750000E94AF236894B1110C943E2408950E94E6\r
+:10476000232488F09F5798F0B92F9927B751B0F0BC\r
+:10477000E1F0660F771F881F991F1AF0BA95C9F7E5\r
+:1047800014C0B13091F00E943D24B1E008950C9422\r
+:104790003D24672F782F8827B85F39F0B93FCCF3D5\r
+:1047A000869577956795B395D9F73EF49095809562\r
+:1047B000709561957F4F8F4F9F4F0895E89409C082\r
+:1047C00097FB3EF490958095709561957F4F8F4F44\r
+:1047D0009F4F9923A9F0F92F96E9BB279395F6955A\r
+:1047E000879577956795B795F111F8CFFAF4BB0FD8\r
+:1047F00011F460FF1BC06F5F7F4F8F4F9F4F16C03C\r
+:10480000882311F096E911C0772321F09EE8872FC5\r
+:10481000762F05C0662371F096E8862F70E060E081\r
+:104820002AF09A95660F771F881FDAF7880F9695FA\r
+:10483000879597F9089557FD9058440F551F59F0E3\r
+:104840005F3F71F04795880F97FB991F61F09F3F7D\r
+:1048500079F087950895121613061406551FF2CFA6\r
+:104860004695F1DF08C0161617061806991FF1CFF6\r
+:1048700086957105610508940895E894BB2766271D\r
+:104880007727CB0197F908950E9457240C94C824E8\r
+:104890000E94BA2438F00E94C12420F0952311F020\r
+:1048A0000C94B1240C94B72411240C943E240E943F\r
+:1048B0001B2470F3959FC1F3950F50E0551F629F25\r
+:1048C000F001729FBB27F00DB11D639FAA27F00D69\r
+:1048D000B11DAA1F649F6627B00DA11D661F829F90\r
+:1048E0002227B00DA11D621F739FB00DA11D621F75\r
+:1048F000839FA00D611D221F749F3327A00D611D92\r
+:10490000231F849F600D211D822F762F6A2F112473\r
+:104910009F5750409AF0F1F088234AF0EE0FFF1FA6\r
+:10492000BB1F661F771F881F91505040A9F79E3FFD\r
+:10493000510580F00C94B1240C943E245F3FE4F3C5\r
+:10494000983ED4F3869577956795B795F795E79553\r
+:104950009F5FC1F7FE2B880F911D9695879597F95C\r
+:10496000089597F99F6780E870E060E008959FEFF1\r
+:1049700080EC089500240A941616170618060906F6\r
+:10498000089500240A9412161306140605060895C5\r
+:10499000092E0394000C11F4882352F0BB0F40F44D\r
+:1049A000BF2B11F460FF04C06F5F7F4F8F4F9F4F8D\r
+:1049B0000895991B79E004C0991F961708F0961B7B\r
+:1049C000881F7A95C9F78095089597FB072E16F4EE\r
+:1049D000009407D077FD09D00E94FF2407FC05D082\r
+:1049E0003EF4909581959F4F0895709561957F4F06\r
+:1049F0000895EE0FFF1F0590F491E02D0994AA1B76\r
+:104A0000BB1B51E107C0AA1FBB1FA617B70710F0B9\r
+:104A1000A61BB70B881F991F5A95A9F780959095EB\r
+:0A4A2000BC01CD010895F894FFCF0A\r
+:104A2A00510742081F08EB07B7070101E2012808EE\r
+:104A3A00140A321E404D3622394D030003CA02A819\r
+:104A4A00026F02E201FB0114022D024D0200010273\r
+:084A5A0003040506070809002A\r
+:106800000000000000000000040005000600070072\r
+:10681000080009000A000B000C000D000E000F001C\r
+:1068200010001100120013001400150016001700CC\r
+:10683000180019001A001B001C001D001E001F007C\r
+:10684000200021002200230024002500260027002C\r
+:10685000280000002A002B002C002D002E002F0005\r
+:1068600030003100000033003400290036003700CA\r
+:106870003800E00000000000000000000000000000\r
+:106880000000000000000000000000000000000008\r
+:1068900000004900000000004C00000000004F0014\r
+:1068A00050005100520000000000000000000000F5\r
+:1068B00000000000000000000000000000000000D8\r
+:1068C00000000000000000000000000000000000C8\r
+:1068D00000000000000000000000000000000000B8\r
+:1068E00000000000000000000000000000000000A8\r
+:1068F000E000C2A2E200E300E400D2A2E600F1A3BD\r
+:106900000000000000000000040005000600070071\r
+:10691000080009000A000B000C000D000E000F001B\r
+:1069200010001100120013001400150016001700CB\r
+:10693000180019001A001B001C001D001E001F007B\r
+:10694000200021002200230024002500260027002B\r
+:10695000280000002A002B002C002D002E002F0004\r
+:1069600030003100000033003400350036003700BD\r
+:106970003800E000000000000000000000000000FF\r
+:106980000000000000000000000000000000000007\r
+:1069900000004900000000004C00000000004F0013\r
+:1069A00050005100520000000000000000000000F4\r
+:1069B00000000000000000000000000000000000D7\r
+:1069C00000000000000000000000000000000000C7\r
+:1069D00000000000000000000000000000000000B7\r
+:1069E00000000000000000000000000000000000A7\r
+:1069F000E000E100E200E300E400E500E600F1A4CD\r
+:106A00000000000000000000010001000100010082\r
+:106A1000010001000100010001000100010001006E\r
+:106A2000010001000100010001000100010001005E\r
+:106A3000010001000100010001000100010001004E\r
+:106A4000010001000100010001000100010001003E\r
+:106A5000010000000100010001000100010001002F\r
+:106A600001000100000001000100350001000100EB\r
+:106A70000100010000000000000000000000000014\r
+:106A80000000000000000000000000000000000006\r
+:106A900000000100000000000100000000000100F3\r
+:106AA00001000100010000000000000000000000E3\r
+:106AB00000000000000000000000000000000000D6\r
+:106AC00000000000000000000000000000000000C6\r
+:106AD00000000000000000000000000000000000B6\r
+:106AE00000000000000000000000000000000000A6\r
+:106AF000010001000100010001000100010001008E\r
+:106B00000000000000000000EA4401000100E2442F\r
+:106B10000100010001000100460001004A004B0095\r
+:106B20000100010047004800028A0100E944010019\r
+:106B30000100010001000100010001003A003B00DA\r
+:106B40003C003D003E003F00400041004200430049\r
+:106B5000010000000100390001004400450001006F\r
+:106B60000100010000000100010035004D004E0051\r
+:106B70000100010000000000000000000000000013\r
+:106B80000000000000000000000000000000000005\r
+:106B900000000100000000000100000000004D00A6\r
+:106BA0004A004E004B000000000000000000000002\r
+:106BB00000000000000000000000000000000000D5\r
+:106BC00000000000000000000000000000000000C5\r
+:106BD00000000000000000000000000000000000B5\r
+:106BE00000000000000000000000000000000000A5\r
+:106BF0000100010001000100650001000100F1A396\r
+:106C00000000000000000000EA4401000100E2442E\r
+:106C10000100010001000100460001004A004B0094\r
+:106C20000100010047004800028A0100E944010018\r
+:106C30000100010001000100010001003A003B00D9\r
+:106C40003C003D003E003F00400041004200430048\r
+:106C5000010000000100390001004400450001006E\r
+:106C60000100010000000100010029004D004E005C\r
+:106C70000100010000000000000000000000000012\r
+:106C80000000000000000000000000000000000004\r
+:106C900000000100000000000100000000004D00A5\r
+:106CA0004A004E004B000000000000000000000001\r
+:106CB00000000000000000000000000000000000D4\r
+:106CC00000000000000000000000000000000000C4\r
+:106CD00000000000000000000000000000000000B4\r
+:106CE00000000000000000000000000000000000A4\r
+:106CF0000100010001000100650001000100F1A494\r
+:00000001FF\r
index 226494445ea87227df200434479b97a5bbd3313a..35dc6abebb1cba5fb311609bfa4d543e161a01e8 100644 (file)
@@ -26,9 +26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "util.h"
 #include "timer.h"
 #include "matrix.h"
-#include <avr/wdt.h>
-#include "suspend.h"
-#include "lufa.h"
 #include "led.h"
 #include "fc660c.h"
 
@@ -137,3 +134,28 @@ void led_set(uint8_t usb_led)
         PORTB |=  (1<<6);
     }
 }
+
+
+#ifdef UNIMAP_ENABLE
+#include <avr/pgmspace.h>
+#include "unimap.h"
+
+const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = {
+    { UNIMAP_Q,     UNIMAP_W,     UNIMAP_E,     UNIMAP_TAB,   UNIMAP_R,     UNIMAP_U,     UNIMAP_T,     UNIMAP_Y,
+      UNIMAP_O,     UNIMAP_P,     UNIMAP_LBRC,  UNIMAP_I,     UNIMAP_RBRC,  UNIMAP_NO,    UNIMAP_BSLS,  UNIMAP_DEL   },
+    { UNIMAP_1,     UNIMAP_2,     UNIMAP_3,     UNIMAP_GRV,   UNIMAP_4,     UNIMAP_7,     UNIMAP_5,     UNIMAP_6,
+      UNIMAP_9,     UNIMAP_0,     UNIMAP_MINS,  UNIMAP_8,     UNIMAP_EQL,   UNIMAP_NO,    UNIMAP_BSPC,  UNIMAP_INS   },
+    { UNIMAP_NO,    UNIMAP_LGUI,  UNIMAP_LALT,  UNIMAP_LCTL,  UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_SPC,
+      UNIMAP_RALT,  UNIMAP_NO,    UNIMAP_RCTL,  UNIMAP_NO,    UNIMAP_RGUI,  UNIMAP_DOWN,  UNIMAP_LEFT,  UNIMAP_RGHT  },
+    { UNIMAP_NO,    UNIMAP_Z,     UNIMAP_X,     UNIMAP_LSFT,  UNIMAP_C,     UNIMAP_N,     UNIMAP_V,     UNIMAP_B,
+      UNIMAP_COMM,  UNIMAP_DOT,   UNIMAP_SLSH,  UNIMAP_M,     UNIMAP_RSFT,  UNIMAP_UP,    UNIMAP_NO,    UNIMAP_NO    },
+    { UNIMAP_A,     UNIMAP_S,     UNIMAP_D,     UNIMAP_CAPS,  UNIMAP_F,     UNIMAP_J,     UNIMAP_G,     UNIMAP_H,
+      UNIMAP_L,     UNIMAP_SCLN,  UNIMAP_QUOT,  UNIMAP_K,     UNIMAP_NO,    UNIMAP_NO,    UNIMAP_ENT,   UNIMAP_NO    },
+    { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,
+      UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    },
+    { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,
+      UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    },
+    { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,
+      UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }
+};
+#endif
index fca0fded26a9c760ae29f437d043ff2adaedfabf..08d57ab9afe9f3fc175f264442b464f3f5444a55 100644 (file)
@@ -6,6 +6,8 @@
 #include <avr/io.h>
 #include <avr/interrupt.h>
 #include <util/delay.h>
+#include "timer.h"
+#include "unimap.h"
 
 
 // Timer resolution check
 #endif
 
 
-/*
- * HHKB Matrix I/O
- *
- * row:     HC4051[A,B,C]  selects scan row0-7
- * row-ext: [En0,En1] row extention for JP
- * col:     LS145[A,B,C,D] selects scan col0-7 and enable(D)
- * key:     on: 0/off: 1
- * prev:    hysteresis control: assert(1) when previous key state is on
- */
-
-
 /*
  * Pin configuration for ATMega32U4
  *
@@ -67,4 +58,50 @@ static inline void SET_COL(uint8_t COL)
     PORTB = (PORTB & 0xE0) | ((COL & 0x08) ? 1<<4 : 1<<3) | (COL & 0x07);
 }
 
+
+#ifdef UNIMAP_ENABLE
+/* unimap */
+#define KMAP( \
+    K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K2A,    K49, \
+    K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,K31,    K4C, \
+    K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,    K28,         \
+    K79,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38,        K7D,K52,     \
+    K78,K7B,K7A,            K2C,            K7E,K7C,K7F,K50,K51,K4F  \
+) UNIMAP( \
+            NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO,                                     \
+    NO,     NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO,       NO, NO, NO,       NO, NO, NO, \
+    K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,NO, K2A,  K49,NO, NO,   NO, NO, NO, NO, \
+    K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,    K31,  K4C,NO, NO,   NO, NO, NO, NO, \
+    K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,    NO, K28,                NO, NO, NO, NO, \
+    K79,NO, K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38,    NO, K7D,      K52,      NO, NO, NO, NO, \
+    K78,K7B,K7A,NO,         K2C,        NO, NO, K7E,K7F,NO, K7C,  K50,K51,K4F,  NO,     NO, NO  \
+)
+#else
+/* actionmap */
+#define KMAP( \
+    K13, K10, K11, K12, K14, K16, K17, K15, K1B, K18, K19, K1A, K1C, K1E,      K1F, \
+    K03, K00, K01, K02, K04, K06, K07, K05, K0B, K08, K09, K0A, K0C, K0E,      K0F, \
+    K43, K40, K41, K42, K44, K46, K47, K45, K4B, K48, K49, K4A,      K4E,           \
+    K33, K31, K32, K34, K36, K37, K35, K3B, K38, K39, K3A,           K3C, K3D,      \
+    K23, K21, K22,                K27,                K28, K2A, K2C, K2E, K2D, K2F  \
+) { \
+    { AC_##K00, AC_##K01, AC_##K02, AC_##K03, AC_##K04, AC_##K05, AC_##K06, AC_##K07,   \
+      AC_##K08, AC_##K09, AC_##K0A, AC_##K0B, AC_##K0C, AC_NO,    AC_##K0E, AC_##K0F }, \
+    { AC_##K10, AC_##K11, AC_##K12, AC_##K13, AC_##K14, AC_##K15, AC_##K16, AC_##K17,   \
+      AC_##K18, AC_##K19, AC_##K1A, AC_##K1B, AC_##K1C, AC_NO,    AC_##K1E, AC_##K1F }, \
+    { AC_NO,    AC_##K21, AC_##K22, AC_##K23, AC_NO,    AC_NO,    AC_NO,    AC_##K27,   \
+      AC_##K28, AC_NO,    AC_##K2A, AC_NO,    AC_##K2C, AC_##K2D, AC_##K2E, AC_##K2F }, \
+    { AC_NO,    AC_##K31, AC_##K32, AC_##K33, AC_##K34, AC_##K35, AC_##K36, AC_##K37,   \
+      AC_##K38, AC_##K39, AC_##K3A, AC_##K3B, AC_##K3C, AC_##K3D, AC_NO,    AC_NO    }, \
+    { AC_##K40, AC_##K41, AC_##K42, AC_##K43, AC_##K44, AC_##K45, AC_##K46, AC_##K47,   \
+      AC_##K48, AC_##K49, AC_##K4A, AC_##K4B, AC_NO,    AC_NO,    AC_##K4E, AC_NO    }, \
+    { AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,      \
+      AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO    }, \
+    { AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,      \
+      AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO    }, \
+    { AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,      \
+      AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO,    AC_NO    }  \
+}
+#endif
+
 #endif
diff --git a/keyboard/fc660c/unimap.c b/keyboard/fc660c/unimap.c
new file mode 100644 (file)
index 0000000..4917b0e
--- /dev/null
@@ -0,0 +1,66 @@
+#include "action.h"
+#include "actionmap.h"
+#include "hook.h"
+#include "fc660c.h"
+
+
+#define AC_L3       ACTION_LAYER_MOMENTARY(3)
+#define AC_L4       ACTION_LAYER_MOMENTARY(4)
+#define AC_LS_2     ACTION_LAYER_MODS(2, MOD_LSFT)
+#define AC_RS_2     ACTION_LAYER_MODS(2, MOD_RSFT)
+#define AC_TGL1     ACTION_LAYER_TOGGLE(1)
+
+// emulates FC660C default keymap
+#ifdef KEYMAP_SECTION_ENABLE
+const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = {
+#endif
+    [0] = KMAP( \
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS,  \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,     DEL,  \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,            \
+        LS_2,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RS_2,UP,        \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RCTL,L3,  LEFT,DOWN,RGHT  \
+    ),
+    [1] = KMAP( \
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS,  \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,     DEL,  \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,            \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT,UP,        \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RCTL,L4,  LEFT,DOWN,RGHT  \
+    ),
+    [2] = KMAP( \
+        GRV, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS,           \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS,TRNS,      \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS,TRNS,TRNS  \
+    ),
+    [3] = KMAP( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,     TRNS, \
+        CAPS,TGL1,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,TRNS,TRNS,     TRNS,           \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,TRNS,          TRNS,PGUP,      \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,APP, L3,  HOME,PGDN,END   \
+    ),
+    [4] = KMAP( \
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,     TRNS, \
+        CAPS,TGL1,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,TRNS,TRNS,     TRNS,           \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,TRNS,          TRNS,PGUP,      \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,APP, L4,  HOME,PGDN,END   \
+    ),
+};
+
+
+void hook_layer_change(uint32_t layer_state)
+{
+    // lights LED on Insert when layer 1 is enabled
+    if (layer_state & (1L<<1)) {
+        PORTB &= ~(1<<5);
+    } else {
+        PORTB |=  (1<<5);
+    }
+} 
+
Imprint / Impressum